★ APPLICATIONS ★ DIVERS ★ MAGIC SCROLL (CPC MAGAZIN) ★ |
Magie in alle Richtungen | Update zu Magic Scroll (Computer Partner) |
Mit "Magie Scroll” können Sie in alle Richtungen scrollen. Zwar liegen schon viele Scroll-Programme vor, aber "Magic Scroll” ist keines der üblichen, sondern kann mehr. So ist z.B. ein Verschieben in alle vier Richtungen in einem beliebigen Bildschirmausschnitt möglich; wahlweise lassen sich gleichzeitig vorher im RAM abgelegte Bilder einfü-gen. Das vertikale Scrolling (hoch/runter) erfolgt pixelweise, das horizontale (rechts/links) byteweise. Die RSX-Erweiterung stellt sieben neue Befehle zur Verfügung, die mit CALL &A000 initialisiert werden. Es handelt sich um folgende: |VSCROLL,Flag,links.rechts.oben.unten Links und rechts geben den linken und rechten Rand des zu scrollenden Bildschirmausschnitts in Bytes (= Spalten in MODE 2) an. Das Window muß mindestens zwei Bytes breit sein. Oben und unten stehen für die Ober- und Untergrenze des Fensters, gemessen in normalen Bildschirmzeilen. Flag legt die Scroll-Richtung fest. Ist Flag = 0, wird nach unten, bei Flag > 0 nach oben verschoben. |HSCROLL.FIaq.links.rechts.oben.unten Die Window-Grenzen werden wie bei |VSCROLLfestgelegt. Bei Flag = 0 erfolgt eine Verschiebung nach links, bei Flag >0 nach rechts. |MEMORY,adr, Breite, Höhe Dieser Befehl dient zur Bestimmung eines Speicherbereichs ab Adresse adr, in welchem ein Bildschirmausschnitt mit |STORE abgelegt wird. Dessen Breite und Höhe (Breite in Bytes) sind für die spätere Ausgabe des Bildes nötig. Selbstverständlich können mehrere Windows ins RAM kommen, sofern der Speicher ausreicht. |STORE,links,rechts,oben,unten Mit dieser Anweisung wird ein Bildschirmausschnitt (Window-Grenzen wie bei den Scroll-Befehlen) in dem mit |MEMORY festgesetzten Bereich abgelegt. |VCALL,Flaq,links,rechts,oben,unten Mit diesem Kommando wird jeweils eine Pixel-Zeile eines gespeicherten Fensters wieder auf den Bildschirm geholt, was natürlich nur in Verbindung mit Scrolling sinnvoll ist. Bei .jedem Aufruf erfolgt die Ausgabe der jeweils nächsten Pixel-Zeile. Die Window-Grenzen müssen natürlich mit denen des Scroll-Befehls übereinstimmen. Das Flag hat hier eine besondere Bedeutung. Bei Flag = 0 (Scrolling nach unten) wird mit der Bildunterkante, bei Flag >0 (Scrolling nach oben) mit der Bildoberkante begonnen. Das jetzige Ausgabefenster muß zwar die gleiche Breite wie das ursprünglich gespeicherte haben, die Höhe kann jedoch variiert werden, wodurch sich interessante Effekte erzielen lassen. Falls man mit |MEMORY und |STORE mehrere Windows hintereinander abgelegt hat oder nach einer Ausgabe wieder von vorne beginnen will, muß man den gewünschten Speicherbereich und die ursprünglicher Maße des gespeicherten Fensters mit |MEMORY neu mit-teilen. |HCALL,flag,links,rechts,oben,unten Dies ist die analoge Anweisung zu |VCALL für horizontales Scrolling. Das meiste, was für |CALL gilt, läßt sich auch hier anwenden. Die Ausnahmen sind folgende: Bei Flag = 0 (Scrolling nach links) wird mit der linken, bei Flag >0 (Scrolling nach rechts) mit der rechten Bildkante begonnen. Das jetzige Ausgabe-Window muß die gleiche Höhe wie das ursprüngliche aufweisen, die Breite läßt sich variieren. Ausgegeben wird jeweils ein Abschnitt mit einer Breite von 1 Byte. |CALL,links,rechts,oben,unten Dies ist das Gegenteil zum Befehl |STORE. Ein mit |MEMORY charakterisierter Speicherbereich wird innerhalb der angegebenen Window-Grenzen auf den Bildschirm geholt, wobei Ursprungs- und Ausgabefenster wieder die gleichen Maße haben müssen. Für Maschinenprogrammierer seien nachfolgend noch die Einsprungadressen genannt: Start : &A000 Die Variablen stehen ab &A3B2 im Speicher. Hartmut Grawe , CPC Magazin |
|
|