APPLICATIONSDIVERS ★ Profi-RSX Teil 3 ★

Profi-RSX 3 (CPC Amstrad International)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 ★ 

Dies ist jetzt schon die dritte Folge dieser Befehlserweiterung und gleichzeitig auch eine der leistungsfähigsten. Hier dürften Sie wahrscheinlich eine »Weltpremiere« für die CPC's erleben, denn meines Wissens nach ist es das erste Mal, daß ein System veröffentlicht wird, bei dem Sie 26 verschiedene Farben bei 80 Zeichen pro Zeile (bzw. 640200 Pixels) benutzen können, wovon immerhin 16 (!) im beschreibbaren Ausschnitt des Bildschirmes zuverwenden sind. Diese Farbfähigkeit entspricht dem spezial hochauflösenden Modus des neuen SCHNEIDER PC 1512 (!).

Allerdings gilt dies nur mit einer Einschränkung, die ich auch nicht verschweigen will. Beim PC 1512 können Sie jeden der 128.000 Punkte in einer der 16 Farben darstellen, während Sie beim CPC (auch 128.000 Pixels!) an sogenannte Farb-Balken, wie später noch genau erklärt wird, gebunden sind. Gleichzeitig absolut neu ist die Möglichkeit, 8 (!) Mal den Mode wechseln zu können und die Graphik in verschiedenen Auflösungen gleichzeitig darstellen zu können. Bisher war letzteres, wenn überhaupt, nur bei Text-Ausgaben gegeben.

Das einzige Negative dürfte sein, daß dises Programm erst zu diesem relativ späten Zeitpunkt veröffentlicht wird, da es bei mir privat bereits seit fast 2 Jahren läuft. Nun, besser spät als nie. Damit jetzt auch Sie diese Erweiterung einsetzen können, beenden wir hier schnellstens diese Einleitung und gehen zur Erklärung der Befehle über. Mit Hilfe dieser Erweiterung, in Anlehnung an das Firmwarehandbuch zum CPC könnte man es als SCREEN PACK von Profi RSX bezeichnen, können Sie den Bildschirm in bis zu 8 Abschnitte einteilen. Diese Abschnitte kann man auch als Balken ansehen, wir werden sie hier jedoch unter der Bezeichnung BEREICHe führen. Falls Sie sich mit weniger Farben zufrieden geben wollen, oder die Bereiche für Ihren Anwendungsfall größer sein sollen, sind auch 4 Bereiche möglich. Die Anordnung der Bereiche entnehmen Sie bitte den Abbildungen 1 und 2.

Für jeden von diesen Bereichen können Sie den Auflösungsmodus (0,1,2) sowie die Farben für alle 16 Stifte seperat setzen. Selbstverständlich ist auch das bekannte Blinken einzelner Sifte möglich und in der Geschwindigkeit frei wählbar.

Diese Eigenschaften werden in 8 Farbtabellen festgehalten, wobei standardmäßig Farbtabelle 0 für den BEREICH 0 zuständig ist. Dies ist aber nicht zwingend, jedem BEREICH kann irgendeine Farbtabelle zugeordnet sein. Es kann auch eine Farbtabelle für mehrere (oder alle) Bereiche gültig sein.

normale Rahmenfarbe
Rahmen 0Bildschirm-Bereich 0 (6 Zeilen)Rahmen 0
Rahmen 1Bildschirm-Bereich 1 (6 Zeilen)Rahmen 1
Rahmen 2Bildschirm-Bereich 2 (6 Zeilen)Rahmen 2
Rahmen 3Bildschirm-Bereich 3 (7 Zeilen)Rahmen 3
Rahmen 4
Abb. 1

normale Rahmenfarbe
Rahmen 0Bildschirm-Bereich 0 (3 Zeilen)Rahmen 0
Rahmen 1Bildschirm-Bereich 1 (3 Zeilen)Rahmen 1
Rahmen 2Bildschirm-Bereich 2 (3 Zeilen)Rahmen 2
Rahmen 3Bildschirm-Bereich 3 (3 Zeilen)Rahmen 3
Bereich 4Bildschirm-Bereich 4 (3 Zeilen)Bereich 4
Bereich 5Bildschirm-Bereich 5 (3 Zeilen)Bereich 5
Bereich 6Bildschirm-Bereich 6 (3 Zeilen)Bereich 6
Bereich 7Bildschirm-Bereich 7 (4 Zeilen)Bereich 7
Rahmen 8
Abb. 2

Fassen wir kurz zusammen:

Es gibt entweder 4 oder 8 BEREICHe, die die Nummern 0 bis 7 haben. Dabei geht die Zählung, wie aus den Abbildungen ersichtlich, von oben nach unten. Die Bereiche 0—3 sind immer vorhanden, während die anderen 4 BEREICHe nur bei der zweiten Version benutzbar sind. Alle Bereiche umfassen entweder 3 oder 6 Bildschirmzeilen, nur der letzte Bereich hat eine Zeile mehr, um auf eine Gesamtzeilenzahl von 25 zu kommen. Der Rahmen oberhalb des beschreibbaren Bereiches entspricht dem »normalen« Rahmen, während der unterhalb liegende die höchste Nummer hat und gesondert definiert werden kann. Es gibt 8 Farbtabellen (0—7), wobei jede Tabelle folgende Features beinhaltet:

a) einen Bildschirmmodus (0, 1,2)

b) die Farben für die 16 Stifte (1. und 2. Farbe)

c) die zugehörige Rahmenfarbe

Dabei kann jede Tabelle einen oder mehreren Bereichen zugeordnet werden, für welche ihre Eigenschaften gelten.

Das Zuweisen einer Farbtabelle zu einem Bereich ist mit Hilfe des Befehls

|BEREICH, Nummer des Bereiches, Nummer der Farbtabelle

möglich.

Mit den Befehlen INK, BORDER, MODE können Sie die Farben/Modi für die einzelnen Tabellen neu festlegen. Falls Sie eine bestimmte Eigenschaft für alle Farbtabellen gleichzeitig definieren wollen, so gibt es die Befehle RI, RM, RB, RIN. RI steht für Reset Inks und bewirkt, daß alle Farben auf die normalen Werte gesetzt werden. RM bewirkt das gleiche für die Modi, während der Befehl RB die beiden vorgenannten Befehle zusammenfaßt. Falls Sie vergessen haben, welche Farbtabelle Sie welchem Bereich zugeordnet haben, so weist der Befehl RIN den Bereichen ihre Standardtabellen zu.

Das Aktivieren des Systems geschieht mit BON, während DEL dieses System wieder ausschaltet. Die Bildschirmverwaltung ist also nicht ständig eingeschaltet. Mit den Befehlen BMI und BM2 können Sie die Version auswählen (4 oder 8 Bereiche).

Jetzt haben Sie im Schnelldurchgang alle Befehle kennengelernt, bis auf den Befehl

|GMODE, Mode.

Dies hat seine Ursache darin, daß wir diesen näher betrachten wollen. Denn hiermit ist es (wahrscheinlich) erstmals möglich, alle Graphik-Auflösungen gleichzeitig anzuwenden. Daß dies nicht möglich sein soll, wie man schon lesen oder hören konnte, stimmt nicht. Die Frage, wie dies realisiert werden kann, ist jedoch berechtigt. Um eine optimale Nutzung zu erreichen, wäre es ideal, wenn alle Operationen, die der Locomo-tive BASIC-Befehl MODE anstellt, auch beim Befehl GMODE durchgeführt würden. Denn dann wird neben dem kompletten Graphik-Bereich auch der Text-Bereich im Gesamten optimal an den Mode angepaßt. Das bedeutet, daß auch alle Fenster zurückgesetzt werden. Wenn wir die Aufgabe, die der Befehl GMODE hat, analysieren, so entsprechen diese folgerichtig vollständig dem MODE-Befehl, mit Ausnahme des Löschens des Bildschirmes. Dieses deshalb, weil sonst keine zwei Darstellungen in unterschiedlichen Modien möglich wären. Für unsere MC-Routine bedeutet das, daß wir praktisch die normalen MODE-Routinen übernehmen können, wenn wir irgendwie das Löschen des Bildschirmes verhindern können. Und hier gibt es tatsächlich eine (noch nicht einmal versteckte) Möglichkeit innerhalb des Betriebssystemes. Unter den »INDI-RECTIONs«, das sind Routinen, die immer an Schlüsselpositionen durch das Betriebssystem verwendet werden, gibt es die Routine

SCR MODE CLEAR (&BDEB).

Der Zweck von Indirections ist es, die Arbeitsweise des Betriebssystemes beeinflussen zu können. Die aufgeführte Indirection hat als Aufgabe das Löschen des Bildschirmes. Da wir dies verhindern müssen, sperren wir diese Routine einfach. Dadurch wird der Bildschirm beim Aufruf der MODE-Routine der Firmware nicht mehr gelöscht. Unsere GMODE-Routine muß also folgend ablaufen:

  1. Sperren von SCR MODE CLEAR
  2. Den neuen Mode setzen
  3. Wiederzulassen des Aufrufes der Indirection

Und das führt die Routine auch aus, wie Sie aus Listing 1 entnehmen können. Das Sperren wird durch Einsetzen des Z80-Befehls RET in die Sprungtabelle erreicht und durch das Rüddaden des alten Inhaltes wieder anuliert. An der Kürze der Routine können Sie auch erkennen, daß dieses eine der simpelsten Routine innerhalb von Profi RSX ist. Trotzdem ist dieses noch kaum — wenn überhaupt — bekannt. Zum Abschluß möchte ich noch auf eine Routine hin-weisen, die Ihnen auf den ersten Blick nicht auffallen wird.

Wie Sie sich denken können, kostet das ständige Setzen der unterschiedlichen Farben Zeit, und das nicht zu knapp. Das Einfachste wäre es gewesen, die Routine, die das Setzen der Farben zur Aufgabe hat, so zu konzipieren, daß diese »stur«, Bereich für Bereich, die Farben ausgibt, unabhängig von den Farben. Dabei wird es aller Wahrscheinlichkeit nach nicht Vorkommen, daß in allen Bereichen unterschiedliche Farben zur Anwendung kommen. Wenn nun in zwei aufeinanderfolgenden Bereichen die gleichen Farben und Modien definiert sind, wäre es doch »Blödsinn«, diese auch doppelt auszugeben. Deshalb wird bei jeder Abänderung der monentanen Konfiguration intern überprüft, ob eine Ausgabe eingespart werden kann, damit möglichst wenig Rechenkapazität für Ihre Programme verloren geht. Da aber nun den Bereichen unterschiedliche Tabellen zugeordnet werden können, oder sogar mehrere Bereiche von einer Tabelle versorgt werden, gestaltet sich dieses sehr komplex, da zudem einzelne Bereiche aufgrund der internen Steuerung voneinander abhängen usw. Leider ist die Routine dadurch ziemlich lang geworden. Sie haben dafür aber die Gewißheit, daß für die Bildschirm-Darstellung nur soviel Rechenleistung abgezweigt wird, wie unbedingt erforderlich ist. Wie Sie hier sehen, habe ich mich bemüht, auch diesen Bereich optimal zu gestalten, auch wenn er »nur« in einer Zeitschrift veröffentlicht und nicht professionell vermarktet wird. Auch die saubere Bildschirmdarstellung dürfte zu Ihrer Zufriedenheit ausgeführt worden sein. Anmerken möchte ich noch, daß ich selber noch eine andere Routine besitze, die insgesamt erheblich schneller arbeitet. Doch hat diese den Nachteil, daß sie nicht in der Lage ist, sich selbstständig mit dem Bildschirmaufbau zu synchronisieren. Da ich Ihnen dies nicht zumuten will, habe ich diese Version nicht gewählt. Den oben genannten Effekt (unterschiedliche Geschwindigkeit je nach Farbenhäufikeit) können Sie selbstverständlich per Benchmark-Test überprüfen. Am krassesten wird der Unterschied zwischen einem »einheitlichen Bildschirm« und 8 unterschiedlichen Bereichen ausfallen, aber auch das Übereinstimmen zweier aufeinander folgender Bereiche bringt einen Gewinn. Bitte überprüfen Sie das selber. Für die Freunde der Assembler-Sprache folgt hier:

Die Assembler-Ecke

Bis jetzt haben Sie viele neue RSX-Befehle kennengelemt. Die Anwendung unter Locomotive BASIC dürfte dabei keine Probleme gemacht haben. Hier übernimmt der Interpreter für Sie die notwendige Übergabe der Parameter. In Assembler ist das leider nicht so komfortabel. Hier müssen Sie die Aufgaben des Interpreters mit übernehmen. Um nun zu sehen, was auf Sie zukommt, wenn Sie Profi RSX in Ihre MC-Programme einbinden wollen, ist es nützlich, wenn wir das Innenleben Ihres CPC in Bezug auf unser Problem näher betrachten. Ich könnte es Ihnen natürlich auch komprimiert in 5 Zeilen ohne jeglichen Kommentar darlegen, doch das würden die meisten unter Ihnen wahrscheinlich als zu kurz empfinden. Und schließlich wollen Sie doch auch noch was lernen, oder irre ich mich hier? Mich würde es übrigens sehr interessieren, ob der in dieser Serie veröffentlichte Stoff zu schwer/ leicht, zu kurz oder zu langatmig etc. ist. Schreiben Sie uns doch einmal kurz Ihre Meinung hierzu. Wie werden die zusätzlichen Routinen der RSXen nun vom Betriebssystem verwaltet? Die Verwaltung aller Erweiterungen, sei es eine RSX oder ein zusätzliches ROM, obliegt natürlich dem Betriebssytem. Innerhalb dessen ist der sogenannte Betriebssystem-Kern für uns interessant, da dieser die Verwaltung zur Aufgabe hat. Außerdem stellt er uns einige nützliche Routinen bereit. Übrigens: Nach den Deklarationen der Firmen Amstrad/Locomotive sowie Schneider, wird der Betriebs-sytem-Kern unter der englischen Bezeichnung KERNEL (KL) geführt. Es befindet sich wie alle Firmware-Routinen im unteren ROM und zwar im Bereich von 0 bis &057F (CPC 464), &057A (CPC 664), &0591 (CPC 6128). Dabei sind für uns folgende Routinen interessant:

KL CHOKE OFF (RAM-Einsprung ab: &BCC8)
KL ROM WALK (RAM-Einsprung ab: &BCCB)
KL INIT BACK (RAM-Einsprung ab: &BCCE)
KL LOG EXT (RAM-Einsprung ab: &BCD1)
KL FIND COMMAND (RAM-Einsprung ab: &BCD4)

Wenn Sie »genug« von den RSX-Befehlen haben (kann ja Vorkommen), so bietet sich die Routine KL CHOKE OFF an, um diesen den »Dolchstoß« zu versetzen.

Nach dem Aufruf haben Sie diese »erledigt«, d.h. das Betriebssystem hat sie aus seinem »Gedächtnis« (in Form von Speicherstellen) gestrichen. Dabei sind die Routinen jedoch keinesfalls gelöscht, sie existieren unverändert weiter. Sie sind eben nur aus dem Verzeichnis des Systems entfernt worden.

Aber Achtung!

Auch die Diskettenkomandos sind »futsch«. Das bedeutet, daß Sie weder das Inhaltsverzeichnis auflisten können (DIR), noch Dateien umbenennen (REN) oder löschen (ERA) können.Diese Routine können Sie sowohl von MC-Pro-grammen als auch aus BASIC heraus aufrufen, da sie keine Einsprung-Bedingungen hat.

KL ROM WALK ist für uns weniger interessant, gleiches gilt auch für KL INIT BACK. Beide Routinen beschäftigen sich mit der Initalisierung von Hinter-grund-ROMs und sind von BASIC aus nicht ohne weiteres aufrufbar. Da bleiben dann schließlich noch zwei Routinen, die aber für uns existenzielle Bedeutung haben. Ohne Sie gäbe es keine RSX-Kommandos, Vorder- oder Hinter -grund-ROMs, geschweige denn diese Serie.Diese Routinen brauchen wir sowohl für die Anmeldung als auch für den Aufruf der Routinen, Bevor wir die Frage klären, wie wir RSX-Routinen benutzen können, hier erst einmal der Weg um RSXen zu initalisieren. Dazu brauchen wir zuerst einmal eine möglichst sinnvolle und zweckmäßige Routine, sowie deren Adresse. Dabei muß dies keine von Ihren eigenen Routinen sein, Sie können auch vorhandene aus anderen Programmen oder aus den ROMs benutzen. Bei den ROM-Routinen muß nur gesichert sein, daß der jeweilige RAM/ROM-Zu-stand hergestellt wird. Zusätzlich benötigen Sie einen einprägsamen Namen, der auch einen Bezug zur Wirkung der Routine haben sollte. Nachdem diese Voraussetzungen erfüllt sind, laden Sie zweckmäßigerweise Ihren Assembler, um das notwenige Initalisierungsprogramm schreiben zu können. Wie Sie das machen und vor allen wie Sie es richtig machen, zeigt Ihnen Listing 2. Hier sehen Sie die originale Initalisierungsroutine der Graphik-Befehle aus unserer Folge 1 aufgelistet.

Übrigens sind alle Assembler-Programme mit dem von Schneider vertriebenen DEVPAC-Assembler erstellt worden. Falls einige Assembler-Anweisungen oder die Art der (Hex-) Zahl-Darstellung bei Ihrem Assembler hiervon abweichen, z.B. DB statt DEFB, müssen Sie dies bei der Eingabe beachten. Nach dem Copyright-Vermerk (Wie Sie hier sehen, ist die Erweiterung, in »Computerzeitmaßstäben« betrachtet, eigentlich schon »uralt«. Es sind mittlerweile schon über 2 Jahre vergangen, seit diese Erweiterung in Angriff genommen wurde. Auch die (fast) entgültige Fertigstellung liegt schon weit über ein Jahr zurück ) folgt zunächst die Festlegung des Speicher-Bereiches, indem Sie die Erweiterung ablegen wollen.

Aber Achtung: Sowohl die RSX-Kommandotabelle sowie der notwendige Speicherbereich des Kernes müssen in den zentralen 32K des RAMs liegen (von &4000 bis &BFFF), damit sie sich nicht mit den ROMs über schneiden. Danach müssen Sie nun bei KL LOG EXT die Erweiterung anmelden, damit diese sie zu den übrigen hinzufügen kann. Dabei erwartet KL LOG EXT im Dopelregister BC die Adresse der RSX-Kommandotabelle und im HL-Register die Adresse eines 4-Byte langen Bereiches im RAM, welcher zur internen Verwaltung gebraucht wird.

Für Spezialisten: Hiermit wird die Verkettung von mehreren RSXen möglich, indem der Kern hier die Adresse der nächsten Erweiterung ab speichert. Die einzelnen Erweiterungen werden also »verkettet«. In der anzugebenen Tabelle müssen Sie zuerst die Adresse der Befehlsnamen vermerken (Länge des Eintrages: 2 Bytes).

Danach folgen anschließend sofort die Sprünge auf die einzelnen Routinen, wobei Sie nicht unbedingt einen JP xyz-Befehl verwenden müssen, ein RST-Befehl ist genauso möglich und erlaubt. Wichtig ist nur, daß die Länge eines Eintrages 3 Bytes beträgt. Die Befehlsnamen müssen Sie in einer gesonderten Tabelle aufführen, und zwar in der gleichen Reihenfolge wie die Sprung-Befehle! Der Name kann jedoch nicht beliebig lang sein, da nur 16 Zeichen signifikant sind. Dabei muß im letzten Zeichen jedes Namens das 7. Bit gesetzt sein, was zur Folge hat, daß Sie nur die Zeichen von 0 bis 127 verwenden dürfen.

Bitte beachten Sie: Locomotive BASIC kann nur Befehle mit Großbuchstaben auf rufen! Außerdem ist es nicht in der Lage, Leerzeichen, etc. zu verarbeiten.

TIP: Soll Ihre Erweiterung vor BASIC-Zugriffen sicher sein, so geben Sie dieser einen Namen, der von BASIC nicht verarbeitet werden kann. Diesen Trick haben übrigens die Programmierer von Locomotive Software, welche für das Disketten-Interface verantwortlich zeichnen, auch angewandt. Die Spezialisten unter unseren Lesern werden wissen, worum's hier geht. Die Befehle zur direkten Beeinflussung von Laufwerks-Eigenschaften haben die »Namen« &01 bis &09.Wenn Sie aufgepaßt haben, dann wissen Sie die richtigen Namen, die hierfür in die Tabelle mit den Befehlsnamen eingetragen werden müßten. Für alle anderen an dieser Stelle die Auflösung: Es sind statt &01 und &02 die Zeichen &81 und &82. Warum, fragen Sie? Da das Ende eines Namens durch das gesetzte 7te Bit gekennzeichnet wird und es sich bei diesem Fall um einen Ein-Zei-chen-Namen handelt, ist das erste Zeichen gleichzeitig das letzte und muß folgerichtig auch dementsprechend behandelt werden. Das Ende einer Tabelle (nur der NAMEN-Tabelle) wird durch eine 0 definiert. Die Sprung-Tabelle benötigt keinen Ende-Eintrag. Die Befehle sind nun eingebunden und können deswegen jetzt auch genutzt werden.

Wie aber geht dies nun in Assembler? Für diesen Zweck benötigen wir jetzt die letzte der aufgelisteten Routinen, die uns freundlicherweise die meiste Arbeit abnimmt. Listing 3 zeigt Ihnen auch gleich, wie es gemacht werden sollte.

Um ein Kommando aufrufen zu können, brauchen Sie im HL-Doppelregister die Adresse des Befehlsnamen, welcher »irgendwo«, auch unterhalb eines ROMs, stehen darf Selbstverständlich muß Bit 7 des letzten Zeichens wieder gesetzt sein. KL FIND COMMAND sucht nach dessen Aufruf im RAM sowie allen vorhandenen ROMs nach dem Kommando. Falls es dieses findet, setzt es als »Erfolgsmeldung« das CARRY auf wahr (1). Zusätzlich gibt die Routine in HL die Adresse der gesuchten Routine sowie in C die zugehörige ROM-Adresse zurück. Handelt es sich um eine RAM-Routine, können Sie die ROM-Adresse vernachlässigen. Dann können Sie die Routine direkt mit einem JP (HL)-Befehl ansprin-gen, sofern Sie bereits alle Register versorgt haben. Andernfalls sollten Sie die Adressen Zwischenspeichern. ROM Routinen können Sie direkt mit

CALL &001B (KL FAR PCHL)

ansprmgen.

Wenn der Befehl nicht gefunden wird, weü er nicht existiert oder Sie vorher bereits mit KL CHOKE OFF »aufgeräumt« haben, ist das CARRY auf 0.

Die meisten RSX-Befehle haben Einsprungsbedingungen. Für alle Profi RSX-Befehle gelten die Standard-Formulierungen, die wie folgt festgelegt sind:

  • im A-Register: Anzahl der Parameter
  • im IX-Register: Adresse des letzten Parameters

Dabei müssen Sie in IX die »untere« Adresse der Parameter angeben, was gleichzeitig die Adresse des letzten Parameters ist. Alle Parameter sind 2 Bytes lang. Den 3 letzten Parameter können Sie z.B. mit folgender Befehlsfolge in ein Doppelregister (hier: HL) laden, bzw. umgekehrt abspeichern:

LD L,(IX+4)
LD H,(IX+5)

Die Art des Parameters muß der in der entsprechenden Befehlsliste aufgeführten Version entsprechen. Sie dürfen sich hier keinen Fehler erlauben, da die Parameter-Art (Integer-Zahl, vozeichenbehaftete Integer-Zahl, String-Adresse) nicht von der aufzurufenden Routine kontrolliert werden kann. Schlimmstenfalls kann es bei falschen Parametern zu einem System-Absturz kommen.

Bei der Rückkehr aus den RSX-Routinen sind die Inhalte der Register AF, BC, DE, HL, IX, IY möglicherweise zerstört, der alternative Registersatz ist jedoch unverändert.

Bei allen Profi RSX-Befehlen können Sie den JP (HL)-Sprung verwenden. Bei ROM-Routinen kann es sein, daß diese auch eine Übergabe von Parametern im HL- oder C-Register verlangen. In diesem Fall können Sie einen RST 3 (&18) -Befehl benutzen.

Damit dürfte jetzt zumindest das Wichtigste erklärt worden sein. Wenn Sie diese Erklärungen sorgfälltig verfolgt haben, steht einer sinnvollen Nutzung der Profi RSX-Befehle auch unter Maschinensprache nichts mehr im Wege.

Tippen Sie jetzt den BASIC-Loader ab und starten Sie diesen, nachdem Sie den BASIC-Speicher durch

MEMORY 36751

herabgesetzt haben. Anschließend sichern Sie den M-Code dann sofort aut Kassette/Diskette. Das Sicherndes BA-SIC-Loaders dürfen Sie auf keinem Fall vergessen, damit eventuell nicht bemerkte Tipp-Fehler korrigiert werden können. Den M-Code sollten Sie auf jeden Fall unter dem folgenden Namen speichern:

SAVE“S-464“,b,&8F90,&96AB-&8F90.

Besitzer eines 664 bzw. 6128 ändern die Zeichefolge >464< wieder in >664< bzw. > 6128 < .

Danach setzen Sie den Rechner komplett zurück (durch CTRL-SHIFT-ESC). Falls Sie dann mit Profi RSX arbeiten möchten, so befolgen Sie beim Laden bitte folgende Reihenfolge:

MEMORY 36751
LOAD “G1-464.BIN“
LOAD “G2-464.BIN“
LOAD “S-464.BIN“
CALL &9FA0
CALL &96B0
CALL &8F90

Wenn Sie sich an diese Vorgaben halten, müßte wieder alles klappen.

Und zum Abschluß folgt noch eine Premiere für unsere Serie.

Wir veröffentlichen in diesem Monat das erste BASIC-Programm, welches unter Profi-RSX läuft und dessen Befehle benutzt.

Es handelt sich zwar nur um ein Demo-Programm, aber immerhin! Das Programm 1 demonstriert Ihnen die Anwendung der Befehle dieser Folge sowie zusätzlich einige Befehle aus unserer 1. Ausgabe.

Also nichts wie ran, Profi RSX laden (siehe oben), Demo-Programm abtippen und starten.

APPLICATIONSDIVERS ★ Befehlsliste Teil 3 : Bildschirm-Steuerung ★

Diese Erweiterung erlaubt das Einteilen des Bildschirmes in bis zu 8 Bereiche, für die jeweils der Mode sowie die Farben frei definierbar sind. Dadurch ist es möglich, bis zu 8 mal den Modus zu wechseln und 26 Farben (davon 16 im beschreibbaren Bildschirmteil) im MODE 2 (also bei 80 Zeichen/Zeile (!)) darzustellen! Die folgende Tabelle zeigt die theoretisch mögliche Farbenanzahl, wenn sich der ganze Bildschirm in einem Mode befindet. Da der Schneider CPC jedoch maximal nur 27 Farben darstellen kann, müssen teilweise einzelne Farben mehrfach verwendet werden. (siehe Tabelle 1)

SchriftfeldRandInsgesamt
MODE 0126 (!)10136
MODE 1321042
MODE 2161026
Tabelle 1

Die normale Farbensteuerung wird durch Profi-RSX abgeschaltet und durch eine neue ersetzt. Diese steuert nun die Farben (inkl. Blinken der Farben) in den einzelnen Bereichen.

Der Bildschirm kann in 2 Versionen behandelt werden. Grundsätzlich wird er in Bereiche, die mehrere Zeilen umfassen, aufgeteilt. Es sind 8 oder 4 Bereiche möglich. Die Aufteilung erfolgt wie nachfolgend dargestellt.

42. BM2 (keine Parameter)

  • Dieser Befehl bewirkt das Umschalten auf die Version mit 8 Bereichen: (siehe Tabelle 2)

normale Rahmenfarbe
Rahmen 0Bildschirm-Bereich 0 (3 Zeilen)Rahmen 0
Rahmen 1Bildschirm-Bereich 1 (3 Zeilen)Rahmen 1
Rahmen 2Bildschirm-Bereich 1 (3 Zeilen)Rahmen 2
Rahmen 3Bildschirm-Bereich 3 (3 Zeilen)Rahmen 3
Rahmen 4Bildschirm-Bereich 4 (3 Zeilen)Rahmen 4
Rahmen 5Bildschirm-Bereich 5 (3 Zeilen)Rahmen 5
Rahmen 6Bildschirm-Bereich 6 (3 Zeilen)Rahmen 6
Rahmen 7Bildschirm-Bereich 7 (4 Zeilen)Rahmen 7
Rahmen 8
Tabelle 2

43. BMI (keine Parameter)

  • Hiermit können Sie die 4-Bereiche-Version einschalten (sofern sie nicht bereits aktiviert ist), (siehe Tabelle 3)

Für jeden Bildschirm-Bereich sowie für den zugehörigen Rahmen kann nun mit Hilfe der nachstehend aufgeführten Befehle der Modus sowie die Farben festgelegt werden.

normale Rahmenfarbe
Rahmen 0Bildschirm-Bereich 0 (6 Zeilen)Rahmen 0
Rahmen 1Bildschirm-Bereich 1 (6 Zeilen)Rahmen 1
Rahmen 2Bildschirm-Bereich 2 (6 Zeilen)Rahmen 2
Rahmen 3Bildschirm-Bereich 3 (7 Zeilen)Rahmen 3
Tabelle 3

44. MODE, Farbtabellen-Nr., Mode

  • Setzt den Mode für die angegebene Farbtabelle.

45. BORDER, Farbtabellen-Nr., 1. Farbe (, 2. Farbe)

  • Hiermit können Sie die Farbe für den Rand des Bereiches setzen.

FARBTABELLE:

Es gibt 8 Farbtabellen, wobei standardmäßig Farbtabelle Nr.O dem Bereich 0 zugeordnet ist, Farbtabelle 1 dem Bereich 1 usw.

Die Nummer der Farbtabelle entspricht also in der Regel der Nummer des Bildschirm-Bereiches.

Es ist aber auch möglich, eine Farbtabelle einem anderen Bereich zu zuordnen, bzw. eine Farbtabelle für mehrere Bereiche zusammen zu definieren.Eine Farbtabelle enthält 16 mal die Nummern der Farben für die 16 möglichen Stifte (1. und 2. Farbe) sowie der Farben für den Rand.

46. INK, Farbtabellen-Nr., Stift-Nr., 1. Farbe (, 2. Farbe)

  • Setzt den angegebenen Stift (Nummer kann von 0 bis 15 gehen) auf die gewünschte Farbe. Entsprechend ändert sich die Farbe auf dem Monitor in den Bereichen, für die die Tabelle gilt.

Die 2. Farbe muß nicht mit angegeben werden. Fehlt diese Farbe, so wird die 2. Farbe auf die Werte der 1. Farbe gesetzt, die entsprechenden Punkte auf dem Bildschirm blinken dann nicht.

47. BEREICH, Bereich-Nr., Farbtabellen-Nr,

  • Der Befehl weist dem Bereich eine andere (oder die Standard-) Farbtabelle zu,
  • Die Bereich-Nr. geht je nach eingeschalteter Version von 0-3 oder 0—7. Dabei geht die Zählung von oben nach unten.

48. RI (keine Parameter)

  • Setzt alle Sifte der Farbtabellen auf die Standardfarben (die Farben, die ohne die Erweiterung gelten würden) zurück.

49. RM (keine Parameter)

  • Setzen aller Farbtabellen auf den Standardmodus.

50. RB (keine Parameter)

  • Verbindet RI und RM miteinander.

51. SYNC (keine Parameter)

  • Zur Feinsynchronisation der Anzeige,
  • Falls ein Bereich nicht mit der oberen Kante eine Schriftzeile abschließt, dann muß die Steuerung mit dem Elektronenstrahl des Bildschirmes synchronisiert werden. Dazu muß dieser Befehl maximal ca. 7 mal hintereinander aufgerufen werden.
  • Der Befehl wird meistens nach Kassetten- oder Diskettenzugriff notwendig, da diese die Synchronisatiom zerstören können.

52. 1BON (keine Parameter)

  • Schaltet die Steuerung ein (die derzeit gültige Version).

53. RIN (keine Parameter)

  • Weist allen Bereichen ihre Standard-Farbtabellen zu.

54. DEL (keine Parameter)

  • Schaltet die Steuerung wieder aus.

55. GMODE, Mode

  • Schaltet die Text- und Graphik-Darstellung auf einen anderen Mode um, ohne den Bildschirm zu löschen. Ansonsten entspricht dieser Befehl dem normalen BASIC-Befehl »MODE X«.
  • Er ist notwendig, um z.B. Graphiken in der dem Bereich entsprechenden Auflösung zu zeichnen.

(K. Kremer/ME) , CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEARE: 1986 , 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1987
★ AUTHOR: Klaus Kremer
 

Page précédente : Profi-RSX 2
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Profi-RSX  3-Bildschirm-Steuerung    (CPC  Amstrad  International)    GERMANDATE: 2022-08-05
DL: 107
TYPE: ZIP
SiZE: 9Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RITA : Resident Inline Turbo-Assembler (Happy Computer)
» Applications » RSX Variables List
» Applications » RSX Tortuga (Amstrad Personal)
» Applications » RSX-Symbol-Designer (CPC Amstrad International)
» Applications » Komfortable INPUT-Routine
» Applications » RSX Help (CPC Amstrad International)
Je participe au site:
» 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 270 millisecondes et consultée 446 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.