Das Schneider CPC Systembuch

Die Abteilungen des Betriebssystems

Amsdos

Die RSX-Kommandos

Ein Diskettenlaufwerk bietet natürlich weit mehr Der Sound Manager: FähigkeitenFähigkeiten als ein Einleitung: MassenspeicherKassettenrekorder. So ist es unter Die Abteilungen des Betriebssystems: AmsdosAmsdos problemlos möglich, eine Ein- und eine Ausgabe-Datei eröffnet zu Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Halthalten und der Zugriff auf einzelne Dateien ist 'rasend schnell'.

Mehr Der Sound Manager: FähigkeitenFähigkeiten bedingen natürlich auch mehr Aufwand. Auch für den Anwender. Die zusätzlich benötigten Kommandos sind bei Die Abteilungen des Betriebssystems: AmsdosAmsdos alle mittels RSX-Komandos eingebunden. Ohne Die Abteilungen des Betriebssystems: AmsdosAmsdos kennt ein nicht weiter ausgebauter CPC 464 zunächst einmal nur einen einzigen Eintrag: den für den Basic-Interpreter.

Mit Die Abteilungen des Betriebssystems: AmsdosAmsdos kommen noch eine Reihe weiterer dazu. Wie |Einleitung: BASIC
Anhang: Basic
BASIC
handelt es sich bei |Einleitung: CP/MCPM um den Aufruf eines Vordergrund-Programmes, das die Kontrolle über den Computer übernimmt:

RSX-Aufruf von Vordergrund-Programmen:
|Einleitung: BASIC
Anhang: Basic
BASIC
Aufruf des Basic-Interpreters (Kaltstart). |Einleitung: CP/MCPM Aufruf von Einleitung: CP/MCP/M (Kaltstart). Es muss eine CP/M-Diskette eingelegt sein.

Alle weiteren externen Kommandos stellen Hintergrund-Routinen bereit, die der Auswahl des Ein/Ausgabe-Gerätes und der Datenpflege dienen:

Dokumentierte Befehle von AMSDOS:
|Operationen: BD5B / 349A / 349A:  FLO SUBA          Umschalten auf Laufwerk 'Operationen: BD5B / 349A / 349A:  FLO SUBA'
|LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
Umschalten auf Laufwerk 'LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
' |TAPE Umschalten auf Kassetten-Betrieb |DISC Umschalten auf Disketten-Betrieb |TAPE.IN Umschalten der Eingabe auf Band-Betrieb |TAPE.OUT Umschalten der Ausgabe auf Band-Betrieb |DISC.IN Umschalten der Eingabe auf Disk-Betrieb |DISC.OUT Umschalten der Ausgabe auf Disk-Betrieb |USER,nr Eingabe einer Benutzer-Nummer (0...15) für den Zugriff auf Disketten. Diese beeinflusst CAT,|DIR,|ERA,|REN und alle Schreib- und Lese-Operationen. |DIR [,@Operationen: BD5B / 349A / 349A: FLO SUBa$] Ausgabe eines Inhaltsverzeichnisses. Optional kann mit Operationen: BD5B / 349A / 349A: FLO SUBa$ ein Teil des Disketten-Inhaltes ausgewählt werden: z.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
.: Operationen: BD5B / 349A / 349A: FLO SUBa$="*.BAS":|DIR,@Operationen: BD5B / 349A / 349A: FLO SUBa$ |DRIVE,@d$ Das in d$ angegebene Laufwerk wird angewählt: z.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
.: d$="Operationen: BD5B / 349A / 349A: FLO SUBA":|DRIVE,@d$ |ERA,@s$ Löschen der in s$ angegebenen Files auf Diskette: z.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
.: s$="*.BAK":|ERA,@s$ |REN,@n$,@Operationen: BD5B / 349A / 349A: FLO SUBa$ Umbenennen eines Files. Der alte Name wird im 2. Basic und Maschinencode: ParameterParameter, der neue Name im ersten übergeben: z.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
.: Operationen: BD5B / 349A / 349A: FLO SUBa$="Testprog.vs1":n$="Testprog.vs2":|REN,@n$,@Operationen: BD5B / 349A / 349A: FLO SUBa$

Diese Kommandos können auch von einem Mcode-Programm aus aufgerufen werden, wofür der Vektor MAIN FIRMWARE JUMPBLOCK: KERNEL
Die Firmware des Schneider CPC: KERNEL
KL
FIND Befehls-Elemente: CommandsCOMMAND zum Einsatz kommt. Die Parameter: Parameter-ÜbergabeParameter-Übergabe ist jedoch voll auf 'Einleitung: BASIC
Anhang: Basic
Basic
' zugeschnitten. Die Übergabe eines Datentypen: StringsStrings ist unter Einleitung: BASIC
Anhang: Basic
Basic
nur mit der Adresse einer String-Variablen möglich. Garbage Collection: ... beim CPC 464Beim CPC 464 muss man dafür die Die Fließkomma-Routinen: FunktionenFunktion '@' benutzen (--> @Operationen: BD5B / 349A / 349A: FLO SUBa$), Garbage Collection: ... beim CPC 664 und 6128beim CPC 664 und 6128 zwar auch, aber Einleitung: BASIC
Anhang: Basic
Basic
ist hier etwas intelligenter gemacht Datenbreite: Wordsworden, und übergibt auch bei |ERA,Operationen: BD5B / 349A / 349A: FLO SUBa$ die Adresse von Operationen: BD5B / 349A / 349A: FLO SUBa$.

Das folgende Beispiel zeigt, wie man diese Amsdos-Kommandos von einem Assembler-Programm aus aufrufen kann:

; Aufruf |ERA,@Operationen: BD5B / 349A / 349A:  FLO SUBa$ von Mcode aus      Erklärung zu den Anschlüssen: Vcc und Vss
Erklärung zu den Anschluss-Bezeichnungen: Vcc und Vss
vs
. 26.5.86 (c) G.Woigk ; ----------------------------- ----------- ----------- ; ; Modul-Beschreibung: ; ; Aufgabe: Löschen einer Datei ; ; Eingabe: HL zeigt auf den Dateinamen ; Operationen: BD5B / 349A / 349A: FLO SUBA = Länge des Namens ; ; Ausgaben: keine. ; KLFIND: EQU #BCD4 ; MAIN FIRMWARE JUMPBLOCK: KERNEL
Die Firmware des Schneider CPC: KERNEL
KL
FIND Befehls-Elemente: CommandsCOMMAND FPCHL: EQU #001B ; LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHLLOW KL FAR PCHL ; ERASE: LD (PUFFER+1),HL ; einen String-Descriptor basteln. LD HL,PUFFER ; Zuerst Adresse LD (HL),Operationen: BD5B / 349A / 349A: FLO SUBA ; und dann Länge eintragen. PUSH HL ; Adresse des Descriptors auf den Stack LD IX,0 ; und die Adresse des 'letzten Arguments' ADD IX,SP ; nach IX laden (Methode 'Einleitung: BASIC
Anhang: Basic
Basic
'). LD HL,ERA ; Zeiger auf Name "ERA" einstellen und das Maschinencode über HIMEM: CALLCALL KLFIND ; Kommando suchen -> HL=Adresse, C=Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM. LD Operationen: BD5B / 349A / 349A: FLO SUBA,1 ; Operationen: BD5B / 349A / 349A: FLO SUBA = Anzahl Basic und Maschinencode: ParameterParameter für 'Basic-Standard' Maschinencode über HIMEM: CALLCALL C,FPCHL ; Routine ab HL in Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM C aufrufen falls ; Kommando gefunden (CY=1) POP HL ; und den Stack wieder korrigieren. RET ; Fertig. ; ERA: DEFB "LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
","R","Operationen: BD5B / 349A / 349A: FLO SUBA"+#80 ; RSX-Name. PUFFER: DEFS 3 ; Platz für einen 'String-Descriptor'.

Valid HTML   Valid CSS