• Plynylý scrolling v textovém režimu •
V nultém čísle Výhně jsem uveřejnil článek týkající se
scrollingu v grafických režimech VGA karty. Jestli jste to zkoušeli
v textovém režimu, asi vám výsledný efekt nepřipadal moc plynulý.
Scrolling v texťáku je o trochu složitější. Musíme ho rozdělit na dvě
části. První rutina bude zvyšovat/snižovat vertikální posun znaku
a druhá nastavovat počáteční adresu zobrazování videopaměti. V praxi
to bude vypadat asi takto:
Procedure SetTextLine(L:Word); Assembler;
asm
mov dx,3d4h { CRTC adress register }
mov bx,L
mov al,ch
mov ah,bh { počáteční adresa - vyšší byte }
out dx,ax
inc al
mov ah,bl { počáteční adresa - nižšší byte }
out dx,ax
end;
Procedure SetLineAddr(Addr:Byte); Assembler;
asm
mov dx,3dah { čekání na paprsek }
@@1: in al,dx
test al,8
jz @@1
mov dx,3dah
@@2: in al,dx
test al,8
jnz @@2
mov dx,3d4h { CRTC adress register }
mov ah,Addr
mov al,8 { vertikální posun }
out dx,ax
end;
{ hlavní program }
begin
for y1:=0 to 24 do
begin
SetLine(y1);
for y2:=0 to 15 do SetLineAddr(y2);
end
end.
Tento prográmek plynule odscrolluje na 25. řádku v textovém
režimu. Stejným způsobem lze dosáhnout i scrollingu směrem dolů tím
že změníme hlavní program takto:
begin
for y1:=24 downto 0 do
begin
SetLine(y1);
for y2:=15 downto 0 do SetLineAddr(y2);
end
end.
Zjistíte, že se tímto způsobem dá odscrolovat až na 200. řádku.
Potom se většinou karta vrátí na začátek videopaměti ([B800:0])
a celkově se posune o osm bajtů. To znamená, že nelze donekonečna
scrollovat aniž by se nemusela překreslovala videopamět. Je to
podobné jako v grafických režimech, kde například v módu 320x200
zbývá do 64KB ještě 1535 bajtů, to znamená, že se po návratu na
začátek videopaměti ([A000:0]) posune nultá pozice o 255 bajtů
doprava. Ale existují některé karty (například některé Tridenty),
které jaksi nemíní skákat na začátek videopaměti a pokud je k tomu
donutíte, tak vesele scrollují dál, někam na podezřelé adresy. Abych
se vyhnul případným nekompatibilitám grafických karet, zavedl jsem
tedy maximální délku jedné stránky na oněch 200 řádek. Proto jsou
některé články rozděleny na více částí. Pokud bude mít někdo problémy
nebo dotazy ohledně scrollingu nebo nestandardních grafických
a textových módů, můžete se obrátit na mě. Udělám, co bude v mých
silách.
ReDox
výheň