**************************************
*      AUSGABE VON STRINGS V1.1      *
*                                    *
* ASSEMBLER: ATMAS-II   P. FINZEL 87 *
**************************************
*
ZEIGER   EQU $80           ;ZEROPAGE-REGISTER
OFFSET   EQU $82           ;ZAEHLER
*
RTCLOK   EQU $12           ;UHR
COLCRS   EQU $55           ;CURSORSPALTE
ROWCRS   EQU $54           ;CURSORZEILE
CRSINH   EQU $2F0          ;1=CURSOR UNSICHTBAR
EOL      EQU $96           ;END-OF-LINE ZEICHEN

*
* ADRESSEN DER HANDLERTABELLE IM ROM 
*
EDITDV   EQU $E400         ;EDITOR-HANDLER
*
* START AN ADRESSE $A800 IM MONITOR
*
         ORG $A800
*
*
BEISPIEL JSR PRINT
         DFB 5,10
         ASC "DAS IST EIN BEISPIEL"
         DFB EOL
         JSR WARTEN
*
* JETZT REVERS AUSDRUCKEN
*
         JSR PRINT
         DFB 5,10
         ASC /DAS IST EIN BEISPIEL/
         DFB EOL
         JSR WARTEN
         JMP BEISPIEL
*
* EIN WEILCHEN WARTEN
*
WARTEN   LDX #15
WART1    LDA RTCLOK+2      HAT UHR SCHON
WART2    CMP RTCLOK+2      WEITERGEZAEHLT?
         BEQ WART2         NEIN ->
         DEX
         BNE WART1
         RTS

*************************************
*      DAS PRINT-UNTERPROGRAMM      *
*************************************
PRINT    PLA               AUFRUFADRESSE
         STA ZEIGER        HOLEN
         PLA               IN ZEIGER MERKEN
         STA ZEIGER+1
         LDY #1            CURSOR ABSCHALTEN
         STA CRSINH
         LDA (ZEIGER),Y
         STA COLCRS        ANFANGSSPALTE
         INY
         LDA (ZEIGER),Y
         STA ROWCRS        ANFANGSZEILE
         STY OFFSET        ZAEHLER MERKEN

PRINT1   INC OFFSET        ZAEHLER ERHOEHEN
         LDY OFFSET
         LDA (ZEIGER),Y    ZEICHEN HOLEN
         CMP #EOL          SCHON LETZTES?
         BEQ PRTEND        JA - >
         JSR SCROUT        SONST AUSGEBEN
         JMP PRINT1        UND WEITER ==>

PRTEND   CLC               NEUE RUECKSPRUNG-
         LDA ZEIGER        ADRESSE BERECHNEN
         ADC OFFSET        (ALTE ADRESSE
         STA ZEIGER        PLUS ZAEHLER)
         LDA ZEIGER+1      MSB
         ADC #0
         PHA               RUECKSPRUNGADRESSE
         LDA ZEIGER        ZURUECK AUF STACK
         PHA
         RTS

**************************************
*        EIN ZEICHEN AUSGEBEN        *
**************************************
SCROUT   TAX               ZEICHEN RETTEN
         LDA EDITDV+7
         PHA               ANFANGSADRESSE-1
         LDA EDITDV+6      DER SCROUT-ROUTINE
         PHA               IM OS-ROM
         TXA               ZEICHEN ZURUECK
         RTS               INDIREKTER SPRUNG

