APPLICATIONSDIVERS ★ RSX-Befehle ★

RSX Grafik (Markus Adamski/Schneider Aktiv)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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.
Wie Nr. 2, jedoch wird die Bit-Maske des Text-Stiftes geändert. So können Zeichen zweifarbig gestrichelt dargestellt werden.

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.
Meine folgenden drei Befehlserweiterungen können ebenfalls allein oder in Verbindung mit meinen anderen Erweiterungen im Speicher stehen. Sollen mehrere Erweiterungen im Speicher stehen, so müssen bei diesen die MEMORY-Befehle entfernt werden.

|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
|
|
|
|
|
y \./

Doch nun zur Routine selbst. Sie kann an jeder beliebigen Stelle im Speicher stehen, da sie nur relative Sprünge enthält. Vorher sollte der Teil des Speichers, in dem die Routine steht, mittels 'MEMORY' geschützt werden. Die Routine ist 58 Bytes lang und benötigt keinen weiteren Speicherplatz. Ein Basic-Lader kann aussehen wie folgt:

10 MEMORY 40999
20 FOR 1=41000 to 41057
30 READ A$: POKE I, VAL("&"+A$)
40 next
50 DATA.....

Im folgenden steht die Variable adr immer für die Anfangsadresse der Routine. An eben diese müssen einige Informationen übergeben werden.

  1. An der Adresse adr+1 muß das Lowbyte der Adresse, an der die DATAs für das Sprite stehen, gepoked werden. An der Adresse adr +2 muß das Highbyte der Adresse stehen.
  2. In die Adresse adr+4 muß das Lowbyte der Y-Koordinate, an der das Sprite stehen soll, gepoked werden, in die Adresse adr+5 muß das Highbyte gepoked werden.
  3. In die Adresse adr+7 muß das Lowbyte der X-Koordinaten gepoked werden, an die Adresse adr+8 das Highbyte.

Aufruf der Routine mit 'CALL ADR'.

Diese Routine ist nur im 'MODE O' voll funktionsfähig, da in diesem Modus je 4 pixel zu einem Punkt zusammengezogen werden. In der Routine wird die X-Koordinate um 4 erhöht, daraus folgt, daß ein Punkt auf besagtem Blatt Papier einem Punkt auf dem Bildschirm entspricht.

Im 'MODE 1' müßten dann 2 Sprites übereinander gelegt werden. Etwa nach folgendem Schema:

1 = erstes Sprite
2 = zweites Sprite

12121212
12121212
12121212
12121212
12121212
12121212

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.

Markus Adamski , SA

★ PUBLISHER: Schneider Aktiv
★ YEARE: 1985 , 1986
★ CONFIG: 64K + AMSDOS
★ LiCENCE: LISTING
★ COLLECTION: SCHNEIDER AKTIV 1986
★ LANGUAGE:
★ AUTHOR: Markus Adamski
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Aucun fichier de disponible:
» Vous avez des fichiers que nous ne possédons pas concernent cette page ?
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RSX Typo
» Applications » RSX Grafičke rutine (Racunari Magazine)
» Applications » RSX Scroll
» Applications » Blinkender Cursor und Tastenklick (CPC Magazin)
» Applications » RSX - Basicode-2
» Applications » Profi-RSX 8 (CPC Amstrad International)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 264 millisecondes et consultée 729 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.