Mehr Computerpower unter Basic, einfachere Programmierung in Maschinensprache und nicht zuletzt Kompatibilität zwischen den drei verschiedenen Modellen bringt die leistungsfähige Firmware der CPC-Serie. Vorausgesetzt, man weiß sie zu nutzen. Wer sich ausschließlich mit der Basic-Programmierung auf seinem CPC beschäftigt. hat normalerweise kaum einen Anlaß, sich mit dem Betriebssystem seines Computers auseinanderzusetzen. Und doch gibt es genügend Gründe, darüber mehr zu erfahren. Der Umgang mit darin enthaltenen Routinen ist jedenfalls lohnend, wie wir weiter unten noch sehen werden. Noch viel interessanter ist die Thematik der sogenannten «Firmware«-Routinen natürlich für Maschinensprach-Programmie-rer. Für diesen Anwenderkreis steht geradezu eine Unmenge an hilfreichen Aufrufen bereit, die den Programmieraufwand auf ein Minimum reduzieren, Beiden Benutzergruppen gemein ist der Vorteil, daß die Nutzung der Firmware-Vektoren Kompatibilitätsprobleme zwischen den drei unterschiedlichen Computer-Model len zu vermeiden hilft. Diese Vektoren stehen im RAM und sind bei allen drei CPC-Modellen an den gleichen Adressen zu finden. Aber diese Sprungleisten führen dann erst die eigentlichen Aufrufe ins ROM, ohne daß der Benutzer die dort verschiedenen Adressen kennen und berücksichtigen muß. ln diesem ersten Teil und in der nächsten Ausgabe wollen wir uns auf Routinen beschränken, die unter Basic sinnvoll einzusetzen sind. Wie Ihnen sicher bekannt ist, gibt es im Locomotive-Basic 1.1 der Modelle CPC 664 und 6128 neue Befehle ge* genüber der Version 1.0 im CPC 464, Einige dieser Kommandos sind jedoch — zumindest latent — auch im 464 vorhanden. Oft sind sie durch einen einfachen CALL-Befehl zu ersetzen. Andere,, wiederum erfordern Parameter-Übergaben, die ohne eine geeignete Maschinencode-Routine vom Basic aus nicht zu übergeben sind. Deshalb finden Sie im Listing einen Basic-Lader, der einen neuen RSX-Befehl erzeugt. Mit dessen Hilfe können Sie dann alle Aufrufe bequem nachvollziehen. Da sowohl diese Befehlserweiterung als auch die beschriebenen Firmware-Routinen auf allen CPCs arbeiten, sollte man seine Programme bevorzugt damit schreiben, um die Austauschbarkeit sicherzustellen. Bevor wir uns an das »Eingemachte« heranwagen, geben Sie bitte zuerst den Basic-Lader aus Listing 1 ein. Vor dem ersten Start speichern Sie ihn sicherheitshalber. Er erzeugt den RSX-Befehl CALL. Fügen Sie ihn entweder als Unterroutine in eigene Programme ein und lassen Sie es dort einmal aufrufen, um den Befehl zu installieren, oder Sie starten das Programm einzeln und speichern den Maschinenkode mit SAVE "NAME ", B, &A610, &5Aals Binärdatei. Um ihn später zu laden, benutzen Sie dann die Befehlsfolge MEMORY &A60F LOAD "NAME" CALL &A610CALL beginnt — wie alle RSX-Befehle — mit dem senkrechten Strich, der durch gleichzeitigen Druck der Tasten < SHIFT > und < @ > entsteht. Als Parameter erlaubt er Werte für die Prozessor-Register A. BC, DE und HL. Der generelle Aufruf lautet deshalb |CALL,adresse,&,bejde,hlNatürlich dürfen Sie als Farame-ter beliebige Variablennamen ersetzen. Diese müssen jedoch vor dem ersten Befehlsaufruf definiert sein, also in unserem Beispiel; 10 8=0:bc=0:de=0:hl=0 20 . . 1030 1040 |CALL,adresse,a,bc,de,hlAus Gründen der Übersicht verwenden wir in den Beispielen unten zur Übergabe Variablennamen, die den Verwendungszweck charakterisieren. Die verbleibenden Register-Bezeichnungen sind für den jeweiligen Aufruf nicht von Bedeutung, Listing 2 zeigt als Beispiel, wie sie den CALL-Befehl in eigene Programme einbinden. Erfolgen durch die Firmware-Routinen Rückgaben, sind diese Werte wie in den Zeilen 1010 bis 1040 zu übernehmen. Dazu muß die Datei »CALL.B1N« fertig zum Nachladen vorliegen, Wer lieber in Assembler programmiert, findet die Parameter-Ubergaben gesammelt in der Tabelle. Sie zeigt außerdem neben einer Kurzbeschreibung der Funktion, auch die durch die jeweilige Routine beeinflußten Flags. Im Verlauf dieses Kurses lernen Sie Schritt für Schritt alle wichtigen RAM-Vektoren kennen. Durch deren Nutzung vermeiden Sie direkte Aufrufe von ROM-Routinen, was Ihre Programme transportabel macht. Wir beginnen unseren Exkurs mit den Routinen, die Basic-Befehle simulieren und gehen dabei in alphabetischer Reihenfolge dieser Kommandos vor. COPYCHR$ BB60 hex (TXT-RD-CHAR) Dieser Befehl dient zur Abfrage des Bildschirminhalts auf einzelne Zeichen, gibt also beispielsweise aus, ob auf der Position 10,5 ein »A« oder ein anderer Buchstabe steht. Zur Nutzung der Firmware-Routine unter Basic müssen Sie vor dem Aufruf den Text-Cursor auf der Stelle zur Abfrage positionieren (beispielsweise «LOCATE 1,1«). Darauf folgt der Befehl |CALL,&BB60,zeichen,bc,de,hlDie Variable < Zeichen > (Register A) enthält dann das gelesene Zeichen als ASCIIWert. Zwei Voraussetzungen müssen jedoch erfüllt sein, damit das Betriebssystem das Zeichen erkennt: Es muß ein Zeichen des Standard- oder eines selbstdefinierten Zeichensatzes sein, Und auf der Character-Position darf kein anderes Zeichen (beispielsweise im Transparentmodus) oder kein Punkt durch Grafikbefehle gesetzt sein, da das Betriebssystem bitweise vergleicht und dabei höchstens noch eine inverse Darstellung toleriert. CURSOR BB7B hex (TXT-CUR-ENABLE), BB7E hex (TXT-CUR-DISABLE). BB81 hex (TXT-CUR-ON) und BB84 hex (TXT-CUR-OFF) Damit läßt sich die Ausgabe des Cursors unterdrücken beziehungsweise wiederherstellen. Die ersten beiden Aufrufe betreffen den »Benutzer «-Cursor, das zweite Befehlspaar den »System«-Cursor. So erscheint beispielsweise beim Befehl »INKEY$« automatisch ein Cursor auf dem Bildschirm, wenn Sie vorher mit CALL &BB81 den Systemcursor aktiviert haben. Alle vier Aufrufe benötigen keinerlei Übergaben. FRAME BD19 hex (MC-WAIT-FLYBACK) Bei Programmen, die bewegte Grafik auf dem Monitor darstellen (wandernde Zeichen etc.), ist es sinnvoll, die Zeichenausgabe mit dem Strahlrucklauf des Bildschirms zu synchronisieren, um eine flackerfreie »Bewegung* zu erreichen, Dazu fügen Sie vor jedem PRINT-Befehl einen CALL &BD19 ein. Probieren Sie einmal das folgende kleine Beispielprogramm, nacheinander mit und ohne den CALL: 10 MODE 2 20 FOR I=2 TO 79 30 LOCATE I-1,10: PRINT " " 40 CALL &BD19 50 LOCATE I,10: PRINT "A" 60 NEXT IGRAPHICS PAPER BBE4 hex (GRA-SET-PAPER) Legt die Hintergrundfarbe für Grafikbefehle fest, Beim CPC 464 lassen sich sonst die gewünschten Farben nur beim jeweiligen Grafik-Befehl als Parameter mit angeben, Der Aufruf lautet I CALL, &BBE4, färbe,bc,de,hl Die Farbe übergeben Sie mit dem ersten Parameter. GRAPHICS PEN BBDE hex (GRA-SET-PEN) Arbeitet wie GRAPHICS PAPER, beeinflußt jedoch die Vordergrund-(Stift-) Farbe, ON BREAK CONT BB48 hex (KM-DISARM-BREAK) Wenn Sie mit CALL &BB48die ESC-Taste im Programm sperren, ist ein Abbruch nicht mehr möglich. Auch hier ist keine Parameter-Übergabe nötig. Die Aufhebung existiert nicht als Basic-Befehl, ist aber über die Firmware zu realisieren: CALL &BB45Über diese »neuen« Befehle für den CPC 464 hinaus gibt es eine Flut nützlicher Routinen, die allen CPC-Besitzern neue Perspektiven zur Programmierung unter Basic eröffnen, Die neuen Fähigkeiten betreffen ganz unterschiedliche Anwendungsbereiche. Sie werden sie in der nächsten Ausgabe kennen und schätzen lernen. Verluderte Register Bezeichnung Parameter zur Übergabe Alle erklärten Routinen auf einen Blick | Bezeichnung | Adresse (hex) | Parameter zur Übergabe | Veränderte Register | Parameter zur Übernahme | KM ARM BREAKS Gibt Unterbrechungen durch ESC-Taste frei | BB45 | DE - Adresse der Unterbrechungsroutine C = Adresse des ROM, der die Routine enthält | AF, BC , DE, HL | – | KM DISARM BREAK Verhindert Unterbrechungen durch ESC-Taste | BB48 | – | AF,HL | – | TXT RD CHAR Liest Zeichen vom Bildschirm | BB60 | – | – | A=Zeichen, A=0 und Carry=0 bedeutet kein Zeichen | TXT CUR ENABLE Schaltet Cursor ein (Benutzer) | BB7B | – | AF | – | TXT CUR DISABLE Schaltet Cursor aus (Benutzer) | BB7E | – | AF | – | TXT CUR ON Schaltet Cursor ein (System) | BB81 | – | – | – | TXT CUR OFF Schaltet Cursor aus (System) | BB84 | – | – | – | GRA SET PEN Setzt Grafikfarbe | BBDE | A=Farbe | AF | – | GRA SET PAPER Setzt Hintergrund-färbe | BBE4 | A=Farbe | AF | – | MCWAIT FLYBACK Wartet auf Strahlrücklauf der Bildschirmröhre | BD19 | – | – | – |
(ja), HC ★ AMSTRAD CPC ★ DOWNLOAD ★ |
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 653 millisecondes et consultée 372 foisL'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. |
|
|
|