
************************************
*  ZAHLENAUSGABE IN ASSEMBLER      *
*  LISTING 2 - SUBSTARKTIONSMETHODE*
*  ATMAS-II PETER FINZEL 1985      *
************************************

VDLSTL   EQU $230 DISPLAY-LIST ZEIGER
BZAHL    EQU $D4  HILFSREGISTER IN ZEROPAGE
         ORG $A800 IM RESERVIERTEN BEREICH

**************************************
* TESTPROGRAMM: ZAEHLER AM BILDSCHIRM
**************************************

TEST     CLD      WIR RECHNEN BINAER
         LDA #0   ZAEHLUNG BEGINNT
         STA ZAHL BEI NULL
         STA ZAHL+1
         JSR SETDL         DISPLAY-LIST

ZAEHLER  LDA ZAHL ZAEHLERINHALT
         LDX ZAHL+1        AN WANDELPROGRAMM
         JSR BINDEZ        UMWANDELN
         LDY #13  ZENTRIEREN
         JSR PRINT         AUSGEBEN
         INC ZAHL          UND WEITERZAEHLEN
         BNE ZAEHLER
         INC ZAHL+1        AUCH DAS MSB
         JMP ZAEHLER

ZAHL     DFW 0    ZAEHLER-REGISTER

**************************************
* WANDLUNGSROUTINE BINAER IN DEZIMAL
* <A>: LSB, <X>:MSB
**************************************

BINDEZ   STA BZAHL         PARAMETER SPEICHERN
         STX BZAHL+1
         LDX #4
VORBES   LDA #$10 AUSGABEBUFFER
         STA ZIFFER,X      MIT B.-CODE FUER
         DEX      NULL VORBESETZEN
         BPL VORBES
         LDX #0   STELLENZAEHLER

STELLE   LDA BZAHL+1       ZEHNER-POTENZ
         CMP DECHI,X       GROESSER ALS
         BNE TSTHI         RESTLICHE ZAHL?
         LDA BZAHL
         CMP DECLO,X
TSTHI    BCC KLEINER       POTENZ ZU GROSS

*
* ZEHNER-POTENZ ABZIEHEN, ZIFFER ERHOEHEN
*
         SEC
         LDA BZAHL         DIE AKTUELLE
         SBC DECLO,X       ZEHNERPOTENZ
         STA BZAHL         ABZIEHEN
         LDA BZAHL+1
         SBC DECHI,X
         STA BZAHL+1
         INC ZIFFER,X      ZIFFER ERHOEHEN
         JMP STELLE        GLEICHE STELLE NOCHMAL

*
* KLEINERE ZEHNERPOTENZ ANWAEHLEN
*

KLEINER  INX      SCHON VIER STELLEN
         CPX #4   BEARBEITET?
         BNE STELLE        NEIN ->

*
* NUR NOCH EINERSTELLE DA
*
         CLC      EINERSTELLE
         LDA BZAHL         IN AUSGABEBUFFER
         ADC ZIFFER+4      ADDIEREN
         STA ZIFFER+4
         RTS

*
* TABELLEN DER ZEHNERPOTENZEN
* GETRENNTE TABELLEN F. LSB UND MSB
*

DECLO    DFB 10000,1000,100,10
DECHI    DFB 10000/256,1000/256,0,0

*
* AUSGABEBUFFER
*
ZIFFER   ASC %00000%
**************************************
* GEWANDELTE ZAHL AUS ZIFFER IN DEN
* BILDSCHIRM KOPIEREN
* <Y>:LETZTE SPALTE
**************************************

PRINT    LDX #4            5 ZAHLEN
NZIF     LDA ZIFFER,X      AUS BUFFER
         STA BLDRAM,Y      IN BILDSCHIRM
         DEY
         DEX
         BPL NZIF          NAECHSTE -->
         RTS

**************************************
* SPEZIAL-DISPLAYLIST AUS EINER ZEILE
**************************************

SETDL    LDA #DLIST        ZEIGER AUF
         STA VDLSTL        NEUE DISPLAY-
         LDA #DLIST/256    LIST EINTRAGEN
         STA VDLSTL+1
         RTS
*
* DISPLAY-LIST
*

DLIST    DFB $70,$70,$70,$70
         DFB $70,$70,$70,$70
         DFB $47           GRAPHICS 2
         DFW BLDRAM
         DFB $41           SPRUNG AUF
         DFW DLIST         ANFANG DER D.-LIST
*
* VIDEO-RAM (20 BYTES LANG)
* ASC ERZEUGT HIER BILDSCHIRMCODE!
*

BLDRAM   ASC %  SCORE:            %

