CBMPET: Ausgabe zum Bildschirm

Aus CBMPET.DE

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

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
Persönliche Werkzeuge