[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]
{here are some assembler routines for the 320x200x256 mode.}
uses
crt;
PROCEDURE InitVGA; ASSEMBLER;
asm
mov ax, 13h
int 10h
end;
PROCEDURE InitTEXT; ASSEMBLER;
asm
mov ax, 03h
int 10h
end;
PROCEDURE PlotPixel1(X, Y: Word; Color: Byte); ASSEMBLER;
asm
push es
push di
mov ax, Y
mov bx, ax
shl ax, 8
shl bx, 6
add ax, bx
add ax, X
mov di, ax
mov ax, $A000
mov es, ax
mov al, Color
mov es:[di], al
pop di
pop es
end;
PROCEDURE PlotPixel2(X, Y : word; Color : byte);
begin
if (X<320) then if (Y<200) then mem[$A000: Y*320+X] := color;
end;
PROCEDURE SetColor (ColorNo, Red, Green, Blue : byte);
begin
PORT[$3C8] := ColorNo;
PORT[$3C9] := Red;
PORT[$3C9] := Green;
PORT[$3C9] := Blue;
end;
var
LoopX : word;
LoopY, R, G, B, i : byte;
Ky : char;
Begin
Randomize;
InitVGA;
for LoopY := 0 to 199 do
begin
for LoopX := 0 to 319 do
PlotPixel1(LoopX, LoopY, random(255)+1);
end;
B := 0;
repeat
G := random(63);
for R := 0 to 63 do
begin
Setcolor(random(255)+1, R, G, B);
inc(G, 1);
if G=64 then G := 0;
end;
for G := 63 downto 0 do
R := random(63);
begin
Setcolor(random(255)+1, R, G, B);
dec(R, 1);
if R=0 then R := 63;
end;
inc(B, random(10)-5);
if B>63 then B := random(63);
until keypressed;
Ky := readkey;
InitTEXT;
end.
[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]