Wohl jeder Programmierer hatte schon einmal den Wunsch, eine Firmware-Routine anzuspringen, ohne gleich ein perfektes MC-Programm zur Hand haben zu müssen. "Unijump” bietet nun die Möglichkeit, sämtliche Routinen vom RAM und allen beliebigen ROMs von Basic aus ohne Maschinenprogramm aufzurufen, und zwar mit Parameterüber- und -rückgabe. Eintipphilfe Tippen Sie das abgedruckte Listing ein, und starten Sie es mit RUN. Zunächst erfolgt die Aufforderung, die Startadresse einzugeben, ab der das Maschinenprogramm für ”Unijump” abgelegt werden soll. Das Programm ist 202 Bytes lang. Anschließend überprüft der Rechner die Datenzeilen. Ist ein Fehler aufgetreten, erscheint eine entsprechende Meldung, und das Programm wird unterbrochen. In diesem Fall führen Sie bitte die erforderlichen Korrekturen durch. Danach starten Sie das Programm erneut. Läuft es fehlerfrei durch, legen Sie die Diskette oder Cassette ein, auf die es kommen soll. Dann drücken Sie ENTER. Das Maschinenprogramm zu ”Unijump” wird nun automatisch unter dem Namen UNIJUMP.MC abgelegt. Falls Sie das Programm später auch an einer anderen Startadresse benutzen wollen, speichern Sie zusätzlich Listing 1, also den MC-Generator ab. Nur mit diesem ist eine Verschiebung des Programms möglich. Laden und Benutzung Das Programm wird folgendermaßen geladen und installiert: MEMORY < Startadresse-1 > LOAD "UNIJUMP. MC”,< Startadresse > CALL < Startadresse >Nach dem Aufruf mit CALL sind folgende drei RSX-Befehle installiert: |CALL,Adr,A,BC,DE,HL, x%(0) |ROM,Adr,A,BC,DE,HL, x%(0) |RST,Romnr., Adr, A,BC,DE,HL, x%(0)Diesen Kommandos wird als letzter Parameter stets ein Array übergeben. Sie liefern nämlich mehrere Parameter zurück, die dann in den einzelnen Feldern des Arrays abgelegt werden. Deshalb sollten Sie vor der ersten Benutzung der Befehle das Array x oder ein anderes dimensionieren. Dies geschieht z.B. durch DIM x%(10). Kommen wir nun zu den einzelnen Anweisungen. |CALL ruft eine Routine im RAM an der Adresse Adr auf. |ROM funktioniert wie |CALL. Der einzige Unterschied liegt darin, daß vor dem Aufruf der Routine das obere ROM freigeschaltet wird. Somit lassen sich im RAM Routinen unterhalb von #C000 und im ROM solche oberhalb von #C000 aktivieren. |RST ist ein vollständiger RST-3-Befehl. Mit ihm können Routinen in beliebigen ROMs aufgerufen werden. Die restlichen Parameter werden an die Z80-Register übergeben. Nach Ausführung der gewünschten Routine befinden sich im Array x% folgende Werte: x%(0) - A (Akkumulator) x%(1) - BC x%(2) - DE x%(3) - HL x%(4) - Zero-Flag x%(5) - Carry-Flag Beispiele Hier nun einige Beispiele zur Verwendung von "Unijump”. READ SECTOR: lRST,7,&C666,0,< Sektor >, < Track >, < Bufferadr. >, x%(0) liest den angegebenen Sektor vom aufgeführten Track ab Bufferadr. in den Speicher. GET MATRIX: |CALL,&BBA5,< ASCII-Code des Zeichens >,0,0,0, x%(0) ermittelt die Adresse einer Zeichenmatrix: x% (3) - Adresse des Zeichens x%(5)-Flag, ob Zeichen im ROM (0) oder im RAM (1) SET M TAB: |CALL,&BBAB,0,0,< erstes Zeichen> , x%(0) ermöglicht auch nach einem MEMORY ein SYMBOL AFTER. Marc Simon , Computer Partner ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 558 millisecondes et consultée 856 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. |
|
|