Die einfachste Art der Ausgabe auf den Bildschirm des Computers ist das direkte Beschreiben des Bildwiederholspeichers. Hierbei muessen dann allerdings Zeichen aus dem ASCII-Code in den Bildschirmcode umgewandelt werden. Die zweite Moeglichkeit ist, mit Hilfe einer in den ROM's vorhandenen Routine Zeichen im ASCII-Code auszugeben. Dieses Kapitel beschreibt nur die Ausgabe im ASCII-Code an der augenblicklichen Cursor-Position. Die verwendeten ROM-Routinen und Speicherplatze sind: Name 2001 3001 8001 Beschreibung --------------------------------------------------------------- BSOUT $FFD2 $FFD2 $FFD2 Zeichen zum Schirm CLRSCR $E236 $E229 $E015 Schirminhalt loeschen CRLF ---- $FDD0 $D534 Ausgabe von RETURN ($0D) FPOUT $DCA9 $DCE3 $CF8D Ausgabe real-Zahl INTOUT $DC9F $DCD9 $CF83 Ausgabe integer-Zahl SCROLD ---- ---- $E021 Schirminhalt nach unten rollen SCROLU $E559 $E53F $E024 Schirminhalt nach oben rollen SETCUR $E5DB $E25D ---- Cursor positionieren SPAC2 ---- $FDCA $D52E Ausgabe: 2 Leerzeichen SPACE ---- $FDCD $D531 Ausgabe: 1 Leerzeichen STROUT $CA2E $CA23 $BB24 Stringausgabe STROUTZ $CA27 $CA1C $BB1D Stringausgabe WROA ---- $E76A $D717 Ausgabe Hex-Adresse WROB ---- $E775 $D722 Ausgabe Hex-Byte WRTWO ---- $E784 $D731 zwei Zeichen zum Schirm CURCOL $E2 $C6 $C6 Curscrspaite(0-39/0-39/0-79) CUROW $F5 $D8 $D8 Cursorzeile (0-24) FAC1 $B0-B6 $5E-64 $5E-64 Floating Akkumulator #1 STRADR $71-72 $1F-20 $1F-20 Stringadresse (low, high)
Diese Routine gibt ein einzelnes ASCII-Zeichen zum Schirm aus: LDA CHR JSR BSOUT Ausgabe von zwei Zeichen ist mit folgender Routine moeglich: LDX CHR1 LDA CHR2 JSR WRTWO Ausgabe von RETURN: JSR CRLF Ausgabe von 1 Leerzeichen: JSR SPACE Ausgabe von 2 Leerzeichen: JSR SPAC2
Fuer die Stringausgabe gibt es zwei Moeglichkeiten: a) Die Anfangsadresse des Strings wird in STRADR erwartet, die Laenge des Strings im X-Register: JSR STROUT Beispiel: Ausgabe des Textes "PET" RETURN LDX #4 ;STRINGLAENGE LDA #L,MSG ;LOW BYTE STA STRADR LDA #H,MSG ;HIGH BYTE STA STRADR+1 JSR STROUT ;STRINGAUSGABE MSG .BY 'PET' $0D b) Die Anfangsadresse des Strings wird im A-Register (low Byte) und Y-Register (high Byte) uebergeben. Der String endet mit einem 00-Byte: JSR STROUTZ Beispiel : Ausgabe des Textes ,cbm' RETURN LDA #L,MSG ;LOW BYTE LDY #H,MSG ;HIGH BYTE JSR STROUTZ ;STRINGAUSGABE MSG .BY 'cbm' $0D 0 Hinweis: In den ROM's der 8001-Serie wurde diese Routine abgeaendert. Das den String abschliessende Null-Byte wird mit der Stringlaenge ueberschrieben, das nachfolgende Byte wird auf $FF gesetzt. Diese Aenderung kann bei Programmen,die im RAM liegen, zu unerwuenschten Ergebnissen, bzw. zum Aufhaengen des Rechners fuehren! Abhilfe: Verwendung der Routine STROUT (s.Kap. 3.2.a) oder Abschluss des Strings mit zwei Null-Bytes. Soll der String mehrfach ausgegeben werden, so ist vor jedem Aufruf von STROUTZ das erste Null-Byte (unmittelbar am Stningende) wieder auf Null zu setzen.
Diese Routine gibt die im AĆRegister stehende Zahl als zweistellige Hexadezimalzahl zum Schirm aus (nur 3001/8001): JSR WROB
Die folgende Routine gibt die Adresse aus $FB-FC als vierstellige Hexadezimalzahl zum Schirm aus (nur 3001/8001): JSR WROA
Eine vorzeichenlose ganze Zahl (Adresse,Bereich 0-65535) wird auf dem Schirm ausgegeben. Die Zahl wird im X-Register (low Byte) und A-Register (high Byte)uebergeben: JSR INTOUT
Der Floating-point Akkumulator FAC1 wird mit der folgenden Routine auf den Schirm ausgegeben: JSR FPOUT
Verschieben des Schirminhaltes um eine logische Zeile (40 oder 80 Zeichen bei 2001/3001) nach oben: JSR SCROLU In den Computern der 8001-Serie kann der Bildschirminhalt zusaetzlich um jeweils eine Zeile nach unten geschoben werden: JSR SCROLD
Das LOeschen des Bildschirmes ist auf zwei Arten moeglich : a) Ausgabe des Zeichencodes der "CLR"-Taste : LDA #$93 JSR BSOUT b) direkter Ansprung der Loeschroutine JSR CLRSCR
Der Cursor kann durch das Setzen von Zeilenregister (CUROW), Spaltenregister (CURCOL) und Cursor-Adresse neu gesetzt werden. Die Berechnung der Cursor-Adresse kann durch eine ROM-Routine erfolgen. LDA #zeile ; gewuenschte Zeilennummer STA CUROW ; in Zeilenregister setzen LDA #spalte ; gewuenschte Spaltennummer STA CURCOL ; in Spaltenregister setzen JSR SETCUR ; Cursoradresse berechnen
Letzte Änderung: 2019-01-04 10:05:39