★ APPLICATIONS ★ DIVERS ★ RSX-Befehle ★ |
RSX Grafik (Markus Adamski/Schneider Aktiv) | Applications Divers |
1) |GPEN,färbe Dieser Befehl benötigt einen Parameter. Dieser legt die Farbe des Grafik-Pens fest und kann zwischen 0 und 15 liegen. 2) |GPAPER,färbe Wie Nr. 1, jedoch wird mit diesem Befehl die Farbe des Grafik-Papers festgelegt. 3) |GRAPEN, wert Dieser Befehl ändert die Bit-Maske des Grafik-Pens. So können Linien zweifarbig gestrichelt dargestellt werden. Setzen Sie verschiedene Werte ein und probieren Sie einfach mit diesem Befehl zu arbeiten. 4) |GRAPAPER.wert Wie Nr. 3, jedoch wird die Bit-Maske des Grafik-Papers geändert. 6) |MPAPER,wert Wie Nr. 5, es wird bei diesem Befehl jedoch die Farbe des Hintergrundes geändert. Achten Sie beim Benutzen der Befehle 3-6 darauf, daß nach den Befehlen keine PEN-oder PAPER-Kommandos stehen. Diese würden nämlich die Wirkung des Befehls aufhe-beii. 7) |MASK.OFF Dieser Befehl stellt wieder den Normalzustand her. Bei meiner M-Code-Routine handelt es sich um eine RSX-Befehlserweiterung für den CPC 464, die das Schneider-Basic erweitert. 1. |BOX,x1,v1,x2,v2,f Dieser Befehl zeichnet ein ausgefülltes Rechteck. Es müssen 5 Parameter übergeben werden: a) x1.y1 Diese beiden Parameter müssen eine absolute x/y-Koordinate auf dem Bildschirm enthalten. b)x2,y2 Diese beiden Parameter enthalten die absolute Ausdehnung in x/y-Richtung. Hierbei müssen 2 Besonderheiten beachtet werden: y2 muß glatt durch 2 teilbar sein und y2 muß mindestens um 2 niedriger als yl sein. Werden diese beiden Regeln nicht beachtet, stürzt der Rechner unweigerlich ab. Diese Bedingungen gelten ausschließlich für den BOX-Befehl. c) f In f muß die Farbe des Rechteckes stehen. 2. |LINE , x1 , v1 , x2 ,v2,f Dieser Befehl zeichnet eine Linie von einem Punkt zu einem anderen. Es müssen ebenfalls 5 Parameter übergeben werden: a) x1,y1 Siehe |BOX-Befehl b) x2,y2 Diese Parameter müssen die absolute x/y-Koordinate des Linienendes enthalten. c) f Siehe |BOX-Befehl 3. !REC.x1.v1.x2.v2.f Dieser Befehl zeichnet ein Rechteck. Auch hier müssen 5 Parameter übergeben werden. a) x1,y1 Siehe !BOX-Befehl b) x2,y2 Diese Parameter müssen die relative x/y-Ausdehnung des Rechtecks enthalten c) f Siehe |BOX-Befehl 4. |SPEED,geschwindiekeit Dieser Befehl benötigt lediglich 1 Parameter, wobei dieser zwischen 3 und 4 liegt. Wird die '3' übergeben, so wird die Aufzeichnungsgeschwindigkeit des Kassettenrecorders auf 27UU Baud erhöht. Wird die '4' übergeben, so wird die Aufzeichnungsgeschwindigkeit auf 3600 Baud erhöht. Bei dieser Baud-Rate sollten nur gute FE-Kassetten verwendet werden. Jeder andere Parameter wird nicht angenommen und hat auch keine Auswirkung auf die Routine. 5. |SCROLL,richtung Auch dieser Befehl benötigt nur 1 Parameter, der zwischen 0 und 1 liegt. Wird die '0' übergeben, so wird der Bildschirm um eine Zeile nach unten gescrollt, wird die 'l* übergeben, wird der Bildschirm um eine Zeile nach oben gescrollt. Andere Parameter werden nicht angenommen. Wichtige Hinweise: Noch ein Hinweis, der für alle Befehle gilt: Wenn zu viele oder zu wenige Parameter übergeben werden, wird die Routine nicht ausgeführt. Die Routine kann nicht (!) im Speicher verschoben werden. Die Adressen sind aber so gewählt, daß genügend Platz für andere Programme im Speicher übrigbleibt. |CLEAR Dieser Befehl leert den Tastaturbuffer. Dies ist besonders nützlich, wenn beispielsweise in einem Spiel der Joystick abgefragt wird und darauf ein INPUT-Befehl folgt. Beim INPUT-Befehl werden lästigerweise die Steuerzeichen mit ausgegeben. Wird vor dem INPUT-Befehl allerdings der CLEAR-Befehl gesetzt, wird der Tastaturbuffer gelöscht. Die BREAK-Taste wird nicht gesperrt. |WSCROLL,l,r,o,u,richtung Mit Hilfe dieses Befehls ist es möglich, beliebige Fenster vertikal zu verschieben, ohne diese Fenster mit dem WINDOW-Kommando definiert zu haben. Dieser Befehl benötigt 5 Parameter: a) l,r: Diese Parameter bezeichnen die linke bzw. rechte Spalte des zu scrollenden Fensters. Achten Sie darauf, daß die Werte innerhalb des Bildschirms liegen. Die Spaltenzahl ist je nach Modus verschieden! Noch ein Hinweis: Die obere linke Ecke hat den physikalischen Wert 0,0! b) o,u: Diese Parameter bezeichnen die oberste bzw. unterste Zeile des zu scrollenden Fensters. Achten Sie darauf, daß die Werte nicht außerhalb des Bildschirms liegen, da der Rechner sonst abstürzt. c) richtung: Dieser Parameter bezeichnet die Scrollrich-tung. Wird die 0 übergeben, scrollt das Fenster nach unten, wird die 1 übergeben, scrollt das Fenster nach oben. |GETCHAR,x,y Mit diesem Befehl können die ASCII-Werte eines Zeichens an einer beliebigen Position innerhalb des Bildschirms geholt werden. Zuerst muß die Spalten-, dann die Zeilen-Posi-tion übergeben werden. Der ASCII-Wert des Zeichens kann mit PEEK(&A06E) ausgelesen werden. Sicher standen Sie auch schon vor dem Problem, für den Aufruf einer Routine, die einige Parameter benötigt, eine MC-Routine schreiben zu müssen. Mit folgendem Befehl bleibt Ihnen diese Mühe erspart. Der Befehl sieht aus wie folgt: |FIRM,adresse,HL,DE,BC,A Was die einzelnen Parameter bedeuten ist klar: Der erste Parameter bezeichnet die Einsprungadresse, die folgenden die wichtigsten Z80-Register. Eine Liste der gesamten Einsprungadressen enthält das Data Becker Buch "CPC 464 Intern". Zur Anwendung: Es müssen immer 5 Parameter übergeben werden, sonst wird der Befehl nicht ausgeführt. Sie müssen auch immer in dieser Reihenfolge an den Befehl angehängt werden. Wollen Sie beispielsweise den Bildschirminhalt auf Kassette in einem Block abspeichern, so muß |FIRM,&BC9E,&C000,&4000,0,&16 eingegeben werden. Der Bildschirminhalt wird jetzt sofort und ohne Kopfsatz abgespeichert. Zum Laden muß dann |FIRM,&BCA1, &C000,&4000,0,&16 eingegeben werden. Achtung: Diese Art des Abspeicherns ist nicht in Verbindung mit einer Diskettenstation möglich. Mit diesen CALLs können auch beliebige andere Binärprogramme auf. Kassette abgelegt werden. Mit dieser Routine ist es möglich, Multicolor-Sprites auf den Bildschirm zu bringen. Um ein Sprite zu erstellen, ist es sinnvoll, dieses erst in seiner endgültigen Form auf ein Blatt Papier zu zeichnen, ähnlich dem Definieren eines Zeichens beim SYMBOL-Kommando. Das Sprite jedoch kann groß sein. Am sinnvollsten ist es, ein Blatt mit Rechenkästchen (Millimeterpapier) zu wählen und das Sprite gleich bunt zu zeichnen. Das erleichtert das Umwandeln in DATA-Zeilen. Ein Rechteck auf dem Blatt entspricht einem Punkt auf dem Bildschirm. Das Sprite muß nun zeilenweise in DATA-Zeilen übergeben werden. In den DATA-Zeilen müssen die Farben der einzelnen Punkte stehen. Am Ende jeder Zeile muß eine ' 16' stehen. Durch die '16' wird angezeigt, daß eine neue Zeile beginnt. Am Ende aller Zeilen, d.h. wenn das Sprite fertig ist, muß zweimal eine '16' stehen. Wie das Sprite aufgebaut wird, zeigt folgende Grafik: Ursprung -----------> x |
1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
Dementsprechend müssen im 'MODE 2' vier Sprites übereinander gelegt werden. Damit wären alle Erklärungen, die zu der Routine nötig sind, gegeben.
|
|