Text butterweich scrollen(Panning)
Verfasst: Di 15. Jun 2010, 10:07
Ich habe einen Textbetrachter geschrieben der eine Text-Datei(kleiner als 64 kib) in den Speicher läd und danach am Text-Bildschirm(mit 80 Spalten x 50 Zeilen, 8x8 Zeichesatzt-Charackter) ausgibt.
Mit den Cursortasten(hoch + runter) kann man bis zum Ende, bzw. wieder nach oben zum Anfang scrollen. Das Scrollen soll dabei butterweich sein, so das man auch beim Scrollen den Text noch lesen kann.
Wenn man die Cursor-down-Taste drückt wird der Text nach oben geschoben, das passiert butterweich. Nur wenn ich die Cursor-up-Taste drücke und der Text dabei nach unten geschoben wird ruckelt es leider.
Wie kann man es besser hinbekommen?
Die verwendete Portadresse für das Panning:
http://www.osdever.net/FreeVGA/vga/crtcreg.htm#08
Hier der betreffende Codeschnipsel für das Hochscrollen:
Hier der betreffende Codeschnipsel für das Runterscrollen:
(--hier ruckelt es--)
Den Textbetrachter + gesamten Quellcode kann man hier herunterladen(Zip-Archiv = 10072 Bytes):
http://www.alice-dsl.net/freecracmaps/Tool/TEXT-OUT.ZIP
Als Beispiel kann man mit diesem Textbetrachter seine Quelldatei(oder eine beliebige andere Textdatei die kleiner al 64 KiB ist) zur Anzeige bringen. Die betreffende Textdatei wird als Parameter angehängt:
TEXT-OUT.EXE TEXT-OUT.ASM
Dirk
Mit den Cursortasten(hoch + runter) kann man bis zum Ende, bzw. wieder nach oben zum Anfang scrollen. Das Scrollen soll dabei butterweich sein, so das man auch beim Scrollen den Text noch lesen kann.
Wenn man die Cursor-down-Taste drückt wird der Text nach oben geschoben, das passiert butterweich. Nur wenn ich die Cursor-up-Taste drücke und der Text dabei nach unten geschoben wird ruckelt es leider.
Wie kann man es besser hinbekommen?
Die verwendete Portadresse für das Panning:
http://www.osdever.net/FreeVGA/vga/crtcreg.htm#08
Hier der betreffende Codeschnipsel für das Hochscrollen:
Code: Alles auswählen
SCRDO: xor di, di ; Bildschirm nach oben scrollen
lds si, DWORD PTR[DSEG]
xor ah, ah ; ah mal 2 bei 16 Pixel Zeichenhöhe
mov cx, 7A8h
;-----------------------------------
PANNING: mov al, 8 ; Pixel-Panning (Verschiebung)
mov dx, Crtc
out dx, ax ; Smooth-Scrolling
;----------------------------
add ah, 2
call STRAHL
cmp ah, 8
jnz PANNING
;----------------------------
mov ax, 8 ; Pixel-Panning normal
mov dx, Crtc
out dx, ax
;----------------------------
rep movsd ; Richtung: je nach Direction-Flag
;------------------------------------
mov di, 1EA0h
jmp short ZCLS ; unterste Zeile löschen
(--hier ruckelt es--)
Code: Alles auswählen
SCRUP: mov di, 1F3Ch ; Bildschirm nach unten scrollen
lds si, DWORD PTR[USEG]
mov cx, 7A8h
std
mov ah, 6 ; ah mal 2 bei 16 Pixel Zeichenhöhe
mov dx, Rast_Port
call RASTER1
mov al, 8 ; Pixel-Panning (Verschiebung)
mov dx, Crtc
out dx, ax ; Smooth-Scrolling
rep movsd ; Richtung: je nach Direction-Flag
sub ah, 2
;------------------------------------
PANNINU: mov al, 8 ; Pixel-Panning (Verschiebung)
mov dx, Crtc
out dx, ax ; Smooth-Scrolling
;----------------------------
call STRAHL
sub ah, 2
jns PANNINU
http://www.alice-dsl.net/freecracmaps/Tool/TEXT-OUT.ZIP
Als Beispiel kann man mit diesem Textbetrachter seine Quelldatei(oder eine beliebige andere Textdatei die kleiner al 64 KiB ist) zur Anzeige bringen. Die betreffende Textdatei wird als Parameter angehängt:
TEXT-OUT.EXE TEXT-OUT.ASM
Dirk