Das Schneider CPC Systembuch

Das Betriebssystem des Schneider CPC

Basic und Maschinencode

Hilfreiche Fehlermeldungen

Nach einiger Zeit kann es schon vorkommen, dass man nicht mehr weiß, welche Basic und Maschinencode: ParameterParameter in welcher Reihenfolge an eine Mcode-Routine übergeben werden müssen. Hier macht sich eine Einrichtung gut, wie sie unter UNIX üblich ist: Wird dort eine Routine mit falschen Parametern aufgerufen, so stürzt das Programm nicht ab und tut auch nicht einfach gar nichts.

Nein, man bekommt sofort erklärt, was man falsch gemacht hat. Auf die Maschinencode über HIMEM: RSXRSX- und CALL-Aufrufe übertragen, wäre also ein netter, kleiner Satz wünschenswert, der den genauen Syntax des Aufrufes beschreibt. Etwa so:

  'USE: |FILL ,Die verwendeten Abkürzungen bedeuten: x:x ,y [,Die Grafik: Farben
Die Bildausgabe: Tinten und Farben
farbe
]'

Und schon wüsste man wieder bescheid. Das ist dabei ganz einfach zu erreichen, und es gibt eigentlich keinen Grund (außer einem geringen Mehr-Verbrauch an Speicherplatz), wieso man darauf verzichten sollte. Ich wünschte mir eine solche Einrichtung für Die Abteilungen des Betriebssystems: AmsdosAmsdos, weil ich zum Beispiel beim |REN-Befehl immer die Reihenfolge der beiden Namensstrings verwechsle.

Das folgende Programm zeigt, wie man so etwas realisieren kann.

; Assembler-Routine mit Fehler-Meldungen (Syntax-Hinweisen)
; 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
.: |FILL-Routine mit 2 Parametern: ; FILLXY: LD HL,TEXT6 ; HL mit Zeiger auf Fehlermeldung laden CP 2 JP NZ,Der Linien-Algorithmus: Fehler 3FEHLER ; falls keine 2 Basic und Maschinencode: ParameterParameter ... ... ; ; Routine druckt Meldung ab (HL) aus: ; Der Linien-Algorithmus: Fehler 3FEHLER: LD Operationen: BD5B / 349A / 349A: FLO SUBA,(HL) AND Operationen: BD5B / 349A / 349A: FLO SUBA ; Text-Ende ? RET Z Maschinencode über HIMEM: CALLCALL #BB5A ; TEXT VDU: BB5A: TXT OUTPUTTXT OUTPUT: Drucke Zeichen oder befolge Controlcode INC HL JR Der Linien-Algorithmus: Fehler 3FEHLER ; TEXT6: DEFB 13 ; Erklärung zu den verwendeten Bezeichnungen: CursorCursor zum Beginn der Zeile DEFB 18 ; Zeile löschen DEFB 10 ; Erklärung zu den verwendeten Bezeichnungen: CursorCursor in die nächste Zeile DEFM "USE: |FILL ,x-Koordinate ,y-Koordinate" DEFB 18 ; Rest der Zeile löschen DEFB 13 ; zurück zum Zeilenanfang DEFB 10 ; und eine Zeile tiefer DEFB 18 ; Zeile löschen DEFB 10 ; und noch eine Zeile tiefer DEFB 0 ; Ende des Textes

---->

|FILL [ENTER]
USE: |FILL ,x-Koordinate ,y-Koordinate
Erklärung zu den Bezeichnungen: READY
Erklärungen zu den Anschlussbezeichnungen: READY
Ready

Beim Aufruf der Routine FILLXY (via |FILL) wird zunächst ein Zeiger auf den Fehlertext geladen, für den Fall eines Falles. Danach wird die Anzahl der Basic und Maschinencode: ParameterParameter überprüft. Falls in diesem Beispiel nicht genau zwei Basic und Maschinencode: ParameterParameter übergeben wurden, wird zur Ausdruck-Routine 'Der Linien-Algorithmus: Fehler 3FEHLER' verzweigt, die den durch HL angezeigten Text ausgibt und danach zurückkehrt. In diesem Beispiel wurde die Fehlermeldung mit reichlich Controlcodes versehen, damit der Text auch gut sichtbar wird.

Valid HTML   Valid CSS