Wer schreibt mir eine kurze Maschinenroutine?
von atarixle » Sa 6. Mär 2004, 14:03Hallo, Freunde des gepflegten ATARI-Talks!
Kann mir jemand helfen? Ich brauche eine Routine, um Bildschirmausschnitte zu scrollen. Sie soll unter BASIC/Turbo-BASIC aufzurufen sein.
Ich möchte damit Fensterinhalte in Gr.8 oder Gr.0 scrollen, also nicht die komplette Zeile...
hier ein Beispiel:
A=USR(routine,screen,x,y_start,y_ziel,x_len,y_len)
dabei ist routtine die Start-Adresse der Routine (logisch, gell?)
screen ist nichts weiter als DPEEK(88), also die Startadresse des Bildschirmspeichers ... den Screenstart soll die Routine nicht automatisch ermitteln, falls ich mal im Hintergrund scrollen möchte (heute sagt man Framebuffer dazu)
x ist die X-Position des zu scrollenden Inhalts
y_start,y_ziel sind die Y-Position des Inhaltes (start und ziel)
x_len sagt an, wie viele Zeichen pro Zeile gescrollt werden solllen
y_len sagt, wie viele Zeilen gescrollt werden sollen
Der Bildschirm rund um den gescrollten Inhalt brauht (soll) nicht gelöscht werden, da er sowieso mit neuen Inhalten gefüllt wird (weiterer Fensterinhalt).
In Turbu-BASIC wäre das ungefähr so:
FOR P=0 TO y_len-1
MOVE screen+x+y_start*40,screen+x+y_ziel,x_len
NEXT P
Dabei sollte die Routine selbständlig zwischen korrektem Vorwärts- und Rückwärtsscrollen unterscheiden.
Danke im Voraus an alle ML-Freaks, die mir damit einen großen gefallen tun würden
Mirko Sobe
www.atarixle.de
Kann mir jemand helfen? Ich brauche eine Routine, um Bildschirmausschnitte zu scrollen. Sie soll unter BASIC/Turbo-BASIC aufzurufen sein.
Ich möchte damit Fensterinhalte in Gr.8 oder Gr.0 scrollen, also nicht die komplette Zeile...
hier ein Beispiel:
A=USR(routine,screen,x,y_start,y_ziel,x_len,y_len)
dabei ist routtine die Start-Adresse der Routine (logisch, gell?)
screen ist nichts weiter als DPEEK(88), also die Startadresse des Bildschirmspeichers ... den Screenstart soll die Routine nicht automatisch ermitteln, falls ich mal im Hintergrund scrollen möchte (heute sagt man Framebuffer dazu)
x ist die X-Position des zu scrollenden Inhalts
y_start,y_ziel sind die Y-Position des Inhaltes (start und ziel)
x_len sagt an, wie viele Zeichen pro Zeile gescrollt werden solllen
y_len sagt, wie viele Zeilen gescrollt werden sollen
Der Bildschirm rund um den gescrollten Inhalt brauht (soll) nicht gelöscht werden, da er sowieso mit neuen Inhalten gefüllt wird (weiterer Fensterinhalt).
In Turbu-BASIC wäre das ungefähr so:
FOR P=0 TO y_len-1
MOVE screen+x+y_start*40,screen+x+y_ziel,x_len
NEXT P
Dabei sollte die Routine selbständlig zwischen korrektem Vorwärts- und Rückwärtsscrollen unterscheiden.
Danke im Voraus an alle ML-Freaks, die mir damit einen großen gefallen tun würden
Mirko Sobe
www.atarixle.de