CHROUT
Name: | CHROUT | ||||||
Beschreibung: | Zeichen auf Standardgerät ausgeben | ||||||
Einsprungpunkt: | $FFD2 / 65490 | ||||||
Vektor: | $0326 / 806 | ||||||
Startadresse: | $F1CA / 61898 | ||||||
Übergebene Argumente: | |||||||
Akkumulator: | auszugebendes Zeichen | ||||||
Rückgabe-Werte: | |||||||
X-Register: | bleibt unverändert | ||||||
Y-Register: | bleibt unverändert | ||||||
Carry-Flag: | 0 = kein Fehler, 1 = (Übertragungs-)Fehler |
CHROUT - manchmal auch als BSOUT bezeichnet - ist eine KERNAL-Routine zur Ausgabe von Zeichen (sichtbare Zeichen, aber auch Steuerzeichen). Sie verarbeitet immer nur ein Byte. Das Zeichen wird als Argument für die Routine im Akkumulator übergeben. Die Ausgabe erfolgt auf das gerade ausgewählte - in der Zeropage-Adresse 154 ($9A) gespeicherte - Hauptausgabegerät. Ist das nicht der Bildschirm als Standardausgabe, so müssen vor CHROUT die Kernal-Routinen SETLFS ($FFBA), SETNAM ($FFBD) und OPEN ($FFC0) ausgeführt sowie der Ausgabekanal mit CHKOUT ($FFC9) geöffnet werden.
Der Vektor $0326 zum Aufruf von CHROUT kann auf eine eigene Routine gelenkt werden. Siehe dazu das Beispiel eines Druckertreibers im Artikel Centronics-Schnittstelle.
Nach dem Aufruf ist der Akkumulator verändert. Das auszugebene Byte muss also ggf. gesichert und nach der Ausgabe noch einmal eingelesen werden, wenn mit ihm weitere Aktionen durchgeführt werden sollen.
Assembler-Beispiel
; Clear Screen ; Bildschirm löschen ; ; Programm starten mit SYS 49152 ; 49152 dezimal = C000 hexadezimal ; bzw. SYS $C000 (unter diversen Erweiterungen, wie z.B. SpeedDOS) *=$C000 LDA #147 ; 147 in Dezimal das Steuerzeichen für Bildschirm löschen (CLR) JSR $FFD2 ; Aufruf der Routine CHROUT RTS ; Programmende (Übergabe der Kontrolle an das aufrufende Programm)
Im Direktmodus aufgerufen bleibt der Bildschirm allerdings nicht leer, da nach dem Beenden des Programms der Prompt (READY.) ausgegeben wird.
Interne Links[Bearbeiten | Quelltext bearbeiten]
Beispiele:
- Disketten-Inhaltverzeichnis verlustfrei ausgeben
- Löscht den Bildschirm und gibt einen Text auf einer definierten Position aus
- Eingabe-Routine
Weblinks[Bearbeiten | Quelltext bearbeiten]
Wikipedia: Beispiel (→Example) im Artikel Kernal |
- Writing a sector to a disk Beispiel bei Codebase64
- FFD2 Beschreibung mit Beispiel
- KERNAL $F1CA Assemblercode (Vektor Einsprungspunkt bei AAY64)