RSX-Befehlserweiterung für Disketten- und Speicherzugriffe Dieses Programm erweitert die Disketten- und Speichermanipulationsbefehle unter Basic. Folgende RSX-Befehle werden installiert: - |OPEN, |CLOSE, |RECORD, |GET, |PUT, |SEC.WR, |SEC.RD, |FORMAT
- |SYSTEM, |ROM, |LDIR, |LDDR, |CHIR, |RESULT, |AKKU, |FLAG, |DOKE und |CALLSTR, |WRITE
Mit den Befehlen der ersten Gruppe ist man in der Lage, eine Relative Dateiverwaltung zu betreiben und Sektoren einzeln anzusprechen. Der zweite Teil ermöglicht es, Systemroutinen in den ROMs aufzurufen, die Register zu laden und abzurufen sowie Speicherverschiebungen vorzunehmen. Form und Funktion der Befehle | |FORMAT bzw. |FORMAT, flag | Formatiert die Diskette im DATA-Only-Format bzw., wenn flag'1, im Vendor-Format (CP/M ohne Systemspuren). | |SEC.RD, drive, track, sector, buffe | Holt einen Sektor vom Diskettenlaufwerk A/B (0/1) von Track 0...39 undder Sektornummer &C1 ...&C9 (&41 ...&49 im CP/M-Format) in einen 512-Byte-Buffer. | |SEC.WR, drive, track, sector, buffer | Entsprechend zu ISEC.RD, nur daß aus dem 512-Byte-Buffer auf die Diskette geschrieben wird. | |OPEN, < Länge der Records > | Übergibt der Routine die Record-Länge (Länge' 2,4, 8,16...512). | |CLOSE | Schreibt den aktuellen Record auf die Diskette und beendet den Zugriff. | |RECORD, | Liest den Record mit dieser Nummer (falls nötig) ein, macht ihn für Zugriffe bereit und speichert zuvor den alten auf der Diskette ab. | |GET, @ , @ < Str-Var >,... | Holt die String-Variable(n) aus dem aktuellen Record. | |PUT, @ , @ < Str-Var >,... | Legt die String-Variable(n) im aktuellen Record ab. | |SYSTEM, Adresse, FA, BC, DE, HL, IX, IY | Ruft eine Routine im RAM/ROM auf und lädt die Register mit den angegebenen Parametern (FA: Flags'High-Byte, Akku'Low-Byte). |
Beispiel: |SYSTEM, &BB06 | Holt ein Zeichen von der Tastatur. | |SYSTEM, &BB5A, ASC (”A”) | Schreibt A auf den Bildschirm. | |SYSTEM, &BBF6,0,0,320,200 | Zeichnet eine Linie zum Punkt 320/200. | |ROM, ROM-Nr | Wählt für |SYSTEM, |LDIR, |LDDR das RAM bzw. ROM aus: | | 0000-3FFF | C000-FFFF | |ROM, 0... ROM, 251 | RAM | Zusatz-ROM 0...251 | |ROM, 7 | RAM | CP/M, AMSDOS | |ROM, 252 | Betriebssystem | Basic | |ROM, 253 | RAM | Basic | |ROM, 254 | Betriebssystem | RAM | |ROM, 255 | RAM | RAM | |LDIR, Quelladr., Zieladr., Anzahl | Verschiebt einen Speicherbereich aufwärts zählend von der Quelladresse zur Zieladresse. |
Beispiel: |ROM, 7: |LDIR, &C000, &C000, &4000 | Schreibt den Inhalt des AMSDOS-ROM in den Bildschirmspeicher. | |ROM, 255: |LDIR, &C050, &C000, &3F50 | Scrollt den Bildschirm eine Zeile höher. | |LDDR, Quelladr., Zieladr., Anzahl | Entsprechend |LDIR, nur wird hier abwärts zählend verschoben. | |CHIR, Adr.1, Adr.2, Anzahl | Die beiden Speicherbereiche ab Adresse 1 und Adresse 2 werden vertauscht. |
Beispiel: |CHIR, &4000, &C000, &3FFF | Tauscht den Bildschirmspeicher mit dem Speicherbereich 4000H-7FFFH. | |CHIR, @a$, @b$, 3 | Tauscht die beiden String-Variablen. | |CHIR, @a%, @b%, 2 | Tauscht die beiden Integer-Variablen. | |CHIR, @al, @b!, 5 | Tauscht die beiden Real-Variablen. | |RESULT, @BC%, @DE%, @HL%,@IX%, @IY% | Füttert die Integer-Variablen BC bis IY nach Aufruf eines ISYSTEM-Befehls mit den Werten der entsprechenden Register. |
Beispiel: |SYSTEM, &BB69 | Holt die Größe des aktuellen Textfensters. | |RESULT,@UR%,@UR%, @OL% | Füttert UR% mit dem Wert von DE, also rechts'High, unten'Low, und OL% mit dem Wert von HL, also links'High, oben'Low. | |AKKU, @A% | Füttert A% mit dem Wert des Akkus nach dem letzten |SYSTEM-Befehl. |
Beispiel: |SYSTEM, &BB06: lAKKU, @CHAR | Wartet auf ein Zeichen von der Tastatur und speichert es in CHAR% ab. | |FLAG, @F% | Füttert F% mit dem Wert des Flag-Registers nach dem letzten |SYSTEM-Befehl. Die Bits stehen für folgende Flags:Bit | Bedeutung | 0/1 | C | Übertrag, 1'C,0'NC | ½ | N | Additions-/Subtraktions-Fla | 2/4 | P/V | Parität/Überlauf, 1'PO, 0'PE | 3/8 | | Keine Bedeutung | 4/16 | H | Halbübertrags-Flag | 5/32 | | Keine Bedeutung | 6/64 | Z | Null-Flag, 1'Z,0'NZ | 7/128 | S | Vorzeichen-Flag, 1'M,0'P |
|
Beispiel: |SYSTEM, &BD2E: |FLAG, @busy% : busy%'(busy% AND 1)'1 | Stellt fest, ob der Drucker empfangsbereit ist (busy%'0), sonst busy%'&FFFF | |CALLSTR, @program$ oder |CALLSTR,< Program in ASCII-Zeichen > | Ruft eine Routine auf, die in einem String gespeichert ist (sie muß verschiebbar sein: relative Sprünge). | |WRITE, Quelladr., Anzahl | Schreibt den Inhalt des Speicherbereichs als ASCII- oder Sonderzeichen auf den Bildschirm. |
Beispiel: |ROM, 252: |WRITE, &738, &3E | Gibt die Firmen, die den CPC vertreiben, auf dem Bildschirm aus. |
Dieter Deifel , CPC Magazin ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 548 millisecondes et consultée 928 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. |
|
|