[Back to SCROLL SWAG index] [Back to Main SWAG index] [Original]
Program VGASLIDE; {requirements TP6 or higher + register-compatible VGA}
uses CRT,grstuff;
var
t,slide:word;
ch:char;
Procedure VgaBase(Xscroll,Yscroll:integer);
var dum:byte;
Begin
Dec(SLIDE,(Xscroll+320*Yscroll)); { slide scrolling state }
Port[$03d4]:=13; { LO register of VGAMEM offset }
Port[$03d5]:=(SLIDE shr 2) and $FF; { use 8 bits: [9..2] }
Port[$03d4]:=12; { HI register of VGAMEM offset }
Port[$03d5]:= SLIDE shr 10; { use 6 bits [16..10] }
Dum:=Port[$03DA]; { reset to input by dummy read }
Port[$03C0]:=$20 or $13; { smooth pan = register $13 }
Port[$03C0]:=(SLIDE and 3) Shl 1; { use bits [1..0], make it 0-2-4-6
}
End;
BEGIN {main}
setvidmode($13);
SLIDE:=0;
{ draw a quick test pattern directly to video memory }
For T:= 0 to 63999 do MEM[$A000:T]:=(T mod (317 + T div 10000)) and
255;
repeat
Vgabase(-1,-1); { scroll smoothly in UPPER LEFT direction }
Delay(14);
until Keypressed;
ch:=Readkey;
repeat
Vgabase( 1, 1); { scroll smoothly in LOWER RIGHT direction }
Delay(14);
until Keypressed;
ch:=Readkey;
setvidmode($3);
END.
[Back to SCROLL SWAG index] [Back to Main SWAG index] [Original]