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: BasicBASIC handelt es sich bei |Einleitung: CP/MCPM um den Aufruf eines Vordergrund-Programmes, das die Kontrolle über den Computer übernimmt:
|Einleitung: BASIC Anhang: BasicBASIC 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:
|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 INTERRUPTB 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 INTERRUPTB'
|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 INTERRUPTB.: 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 INTERRUPTB.: 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 INTERRUPTB.: 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 INTERRUPTB.: 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: KERNELKL FIND Befehls-Elemente: CommandsCOMMAND zum Einsatz kommt. Die Parameter: Parameter-ÜbergabeParameter-Übergabe ist jedoch voll auf 'Einleitung: BASIC Anhang: BasicBasic' zugeschnitten. Die Übergabe eines Datentypen: StringsStrings ist unter Einleitung: BASIC Anhang: BasicBasic 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: BasicBasic 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 Vssvs. 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: KERNELKL 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: BasicBasic').
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 INSTRUCTIONE","R","Operationen: BD5B / 349A / 349A: FLO SUBA"+#80 ; RSX-Name.
PUFFER: DEFS 3 ; Platz für einen 'String-Descriptor'.
|