Ausgabe zum Bildschirm
Suche
Index
FAQ
Kontakt
Zurück

3. Ausgabe zum Bildschirm
        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)

3.1 Zeichenausgabe
        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

3.2 Stringausgabe
       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.

3.3 Ausgabe Hex-Byte
        Diese Routine gibt die im AƄRegister stehende Zahl als zweistellige Hexadezimalzahl
        zum Schirm aus (nur 3001/8001):

        JSR WROB

3.4 Ausgabe Hex-Adresse
        Die folgende Routine gibt die Adresse aus $FB-FC als vierstellige Hexadezimalzahl
        zum Schirm aus (nur 3001/8001):

        JSR WROA
3.5 Ausgabe ganze Zahl
        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

3.6 Ausgabe reelle Zahl
        Der Floating-point Akkumulator FAC1 wird mit der folgenden Routine auf den Schirm ausgegeben:

        JSR FPOUT

3.7 Scroll Screen
       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

3.8 Clear Screen
        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

3.9 Cursor positionieren
        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
  Rubrik:  CBM PET
Rubriken-Übersicht
 215 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!