ASCII-Werte aus dem Input-Puffer in HEX-Werte umwandeln
und in der Parameter-Tabelle ablegen ($cca1)

Einsprung von $8AC1:

8AD0: A9 00     LDA #$00         Zwischenspeicher loeschen fuer 3 Ziffern
8AD2: 85 40     STA $40          (ASCII-Zahl)
8AD4: 85 41     STA $41          ($42 wird spaeter sowieso ueberschrieben)
8AD6: 85 43     STA $43          Hi-Byte des Ergebnisses =0
8AD8: A2 FF     LDX #$FF         Zaehler fuer Wertigkeit der Ziffer

Einsprung von $8AF6:

8ADA: B9 00 02  LDA $0200,Y      Zeichen aus Kommandozeile holen
8ADD: C9 40     CMP #$40         ist Zeichen eine Ziffer ?
8ADF: B0 17     BCS $8AF8        [' :;<=>? ' werden als Ziffern
8AE1: C9 30     CMP #$30          10-15 gerechnet; '2<' entspricht
8AE3: 90 13     BCC $8AF8         dem Block 32 (2*10+12)]
8AE5: 29 0F     AND #$0F         ja,
8AE7: 48        PHA              Wert der Ziffer merken
8AE8: A5 41     LDA $41          Alte Zahl * 10
8AEA: 85 42     STA $42
8AEC: A5 40     LDA $40
8AEE: 85 41     STA $41
8AF0: 68        PLA              + Ziffer
8AF1: 85 40     STA $40
8AF3: C8        INY              Zeiger auf naechstes Zeichen
8AF4: C4 29     CPY $29          setzen; Zeilenende ?
8AF6: 90 E2     BCC $8ADA        nein, ==>

Einsprung von $8ADF, $8AE3:

8AF8: 8C 30 02  STY $0230        Zeiger in Kommandozeile merken

ungepackte BCD-Zahl (1 Ziffer / Byte) in Binaerzahl wandeln

8AFB: 18        CLC
8AFC: A9 00     LDA #$00         Ergebnis (Lo) =0

Einsprung von $8B06:

8AFE: E8        INX              naechste Ziffer nehmen
8AFF: E0 03     CPX #$03         alle 3 Stellen fertig ?
8B01: B0 0F     BCS $8B12        ja, ==>
8B03: B4 40     LDY $40,X        Ziffer holen; y-mal den Wert der Ziffer

Einsprung von $8B0B, $8B10:

8B05: 88        DEY              zum Ergebnis addieren
8B06: 30 F6     BMI $8AFE        < 0, (naechste Ziffer holen) ==>
8B08: 7D 20 8B  ADC $8B20,X      Wertigkeit der Ziffer addieren
8B0B: 90 F8     BCC $8B05        kein Uebertrag, ==>
8B0D: 18        CLC              Uebertrag addieren
8B0E: E6 43     INC $43
8B10: D0 F3     BNE $8B05        immer ==>

Einsprung von $8B01:

8B12: 48        PHA              Ergebnis in den Parameterspeicher
8B13: AE 2E 02  LDX $022E        uebernehmen
8B16: A5 43     LDA $43
8B18: 9D 97 02  STA $0297,X      Hi-Byte
8B1B: 68        PLA
8B1C: 9D 9C 02  STA $029C,X      Lo-Byte
8B1F: 60        RTS

8B20: 01 0A 64                 1,10,100 Wertigkeit der Ziffern

    Previous Page / Next Page