[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
program et4000_supervga;
{ Direct screen writing in SuperVGA mode on a TsengLabs ET4000 }
{ By Bas van Gaalen, Holland, PD }
uses crt;
const vidseg:word=$a000;
var page:byte;
procedure setvideo(md:word); assembler;
{ 02dh - 630x350x256
02eh - 640x480x256
02fh - 640x400x256
030h - 800x600x256
038h - 1024x768x256
}
asm mov ax,md; int 10h; end;
procedure setpal(col,r,g,b : byte); assembler;
asm
mov dx,03c8h
mov al,col
out dx,al
inc dx
mov al,r
out dx,al
mov al,g
out dx,al
mov al,b
out dx,al
end;
procedure putpixel(x,y:word; c:byte); assembler;
asm
mov es,vidseg
mov ax,640
mul y
add ax,x
adc dx,0
mov di,ax
cmp dl,page
je @skip
mov page,dl
mov al,dl
mov dx,03cdh
out dx,al
@skip:
mov al,c
mov es:[di],al
end;
var x,y,i:word;
begin
setvideo($2e);
for i:=1 to 255 do setpal(i,255-i div 4,255-i div 4,30);
for x:=0 to 639 do for y:=0 to 479 do putpixel(x,y,(x*y+x*y) shr 2);
repeat until keypressed;
textmode(lastmode);
end.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]