CHROUT

Aus C64-Wiki
Zur Navigation springenZur Suche springen
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:

Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: Beispiel (→Example) im Artikel Kernal Sprache:english