Hi all! I'm using borland pascal (1992) and I wonder how to blast an 2d array out to screen without using the standard two for-loops:
for i:=1 to... do
begin
for j:=1 to... do
write....
writeln
I wonder if there is something like the fillchar function, that if u use it you can "erase" the contents of an array in a simple function, without the for-loops, to write all the contents of an 2d array at once..
Comments
: use it you can "erase" the contents of an array in a simple
: function, without the for-loops, to write all the contents of an 2d
: array at once..
[code][color=Blue]uses crt;
procedure fillbyte(var x;count:word;b:byte);assembler; { similar to FillChar, but faster, it takes bytes }
asm
les di,[x]
mov cx,count
mov al,b
mov ah,al
cld
shr cx,1
rep stosw
adc cx,cx
rep stosb
end;
procedure fillword(var x;count,w:word);assembler; { same as above, 16 bit }
asm
les di,[x]
mov cx,count
mov ax,w
cld
rep stosw
end;
var a:array[0..3999] of byte absolute $b800:0;
i:word;
begin
repeat
for i:=0 to 3999 do a[i]:=random(256);
delay(100);
until keypressed;
readkey;
i:=0;
repeat
fillbyte(ptr($b800,0)^,4000,i);
inc(i);
delay(100);
until keypressed;
readkey;
i:=0;
repeat
fillword(ptr($b800,0)^,2000,i shl 8+(255-i));
inc(i);
delay(100);
until keypressed;
readkey;
clrscr;
end.[/color][/code]