[Back to SCROLL SWAG index] [Back to Main SWAG index] [Original]
unit scroll;
INTERFACE
procedure scroff(const soffset:word);
procedure vfine(const y:byte);
procedure vait;
procedure smooth;
procedure scrpage(const p1,p2:byte);
IMPLEMENTATION
procedure scroff(const soffset:word); assembler;
asm
mov dx,03dah
@W1:
in al,dx
test al,8
jnz @W1
mov dx,03d4h
mov bx,soffset
mov ah,bh
mov al,00ch
out dx,ax
mov ah,bl
inc al
out dx,ax
mov dx,03dah
@W2:
in al,dx
test al,8
jnz @W2
end;
procedure vfine(const y:byte); assembler;
asm
mov dx,03dah
@W2:
in al,dx
test al,8
jz @W2
mov dx,03d4h
mov ah,Y
mov al,8
out dx,ax
end;
procedure vait; assembler;
asm
mov cx,1
mov ax,250
@@l1:
@@l2:
dec ax
jnz @@l2
dec cx
jnz @@l1
end;
procedure smooth;
var a,i:word;
begin
for i:=0 to 25 do
begin
scroff(i*80);
for a:=0 to 15 do
begin
vfine(a);
vait;
end;
end;
for i:=25 downto 0 do
begin
scroff(i*80);
for a:=15 downto 0 do
begin
vfine(a);
vait;
end;
end;
end;
procedure scrpage(const p1,p2:byte);
var a,i:word;
begin
if(p1<p2)then
begin
for i:=(p1*25)to(p2*24)do
begin
scroff(i*80);
for a:=0 to 15 do
begin
vfine(a);
vait;
end;
end;
end else
begin
for i:=(p1*24)downto (p2*24)do
begin
scroff(i*80);
for a:=15 downto 0 do
begin
vfine(a);
vait;
end;
end;
end;
end;
end.
[Back to SCROLL SWAG index] [Back to Main SWAG index] [Original]