{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.