[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
I've must say that im not exactly the perfect programmer, but I think I've an
answer to some of your questions.
1. Well to post a whole program who does that is quite complicated. But
if you use the Pelpanning register it's possible to create really fast
scrollers even on slow 286 and XT's. Here comes a simple proc just to
get the Idea:
}
const Crtadress:word=$3d4;
Inputstatus:word=$3DA;
Procedure Pan(X,Y: Word);assembler; { This pans the screen } asm
mov bx,320
mov ax,y
mul bx
add ax,x
push ax
pop bx
mov dx,INPUTSTATUS
@WaitDE:
in al,dx
test al,01h
jnz @WaitDE {display enable is active?}
mov dx,Crtadress
mov al,$0C
mov ah,bh
out dx,ax
mov al,$0D
mov ah,bl
out dx,ax
MOV dx,inputstatus
@wait:
in al,dx
test al,8 {?End Vertical Retrace?}
jz @wait
End;
{
If you use this, you should realize that if you increase x by one the screen
moves four pixels. This procedure move the whole screen, so if you want a logo
or something at the screen too you have to use this little procedure, it resets
the scanlines at the screen soo it is only the top of the screen that moves.
}
procedure vgasplit(whatline:word);
begin
asm
{VGASplit Proc Near}
Mov BX,whatline
Mov DX,3DAh-6 {; Port = 3D4H}
Mov AX,BX
Mov BH,AH
Mov BL,BH
And BX,0201H
Mov CL,4
Shl BX,CL
Shl BH,1
Mov AH,AL
Mov AL,18H
Out DX,AX
Mov AL,7
Out DX,AL
Inc DX
In AL,DX
Dec DX
Mov AH,AL
And AH,11101111B
Or AH,BL
Mov AL,7
Out DX,AX
Mov AL,9
Out DX,AL
Inc DX
In AL,DX
Dec DX
Mov AH,AL
And AH,10111111B
Or AH,BH
Mov AL,9
Out DX,AX
End;
end;
{
2. There are several unit's out there that comes with source so i suggest
that you have another look at one of them, There is a really nice one
called ANIVGA.
3. Well its almost the same as the first question. Just dont set the vgasplit
rutine. And increase the y parameter instead of x.
All of the rutines have been written for mode X, but it's also possible to use
them with standard Vgamode $13.
Thats it. I really hope it helped you or/and somebody else a little bit,if you
or anyone else have any questions. Please feel free to write me a Letter.
}
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]