
;*************************************************

ZAHLS   = $10
TABLM   = ZAHLS                 ;1
TABLM1  = TABLM+1 ; .byte   0,0,0,0 ;4
TABLM5  = TABLM+5 ; .byte   0,0,0,0,0,0,0 ;7
ZAHLM   = TABLM+6
TABLE   = TABLM+26

VORME   = TABLE+3       ;Z1E+1
KOMN    = VORME+1
MANN    = VORME+2
EXPN    = VORME+3

ZL      = EXPN+1
ZM      = EXPN+2
ZH      = EXPN+3
EXPO    = EXPN+4

HZH     = EXPO+1
HZM     = EXPO+2
HZL     = EXPO+3

ZEIGER1 = HZL+1
ZEIGER1b = HZL+2
ZEILE   = HZL+3

ZAHLH   = HZL+4
OPER    = HZL+5

ZEIGER2 = OPER+1        ;2 BYTE

ZAHL1   = ZEIGER2+1
Z1L     = ZAHL1 
Z1M     = ZAHL1+1
Z1H     = ZAHL1+2
Z1E     = ZAHL1+3

ZAHL2   = Z1E+1
Z2L     = ZAHL2
Z2M     = Z2L+1
Z2H     = Z2M+1
Z2E     = Z2H+1

ZAHL3   = Z2E+1
Z3L     = ZAHL3
Z3M     = ZAHL3+1
Z3H     = ZAHL3+2
Z3E     = ZAHL3+3

Z1      = ZAHL3+4
Z2      = Z1+1
Z3      = Z2+1
Z4      = Z3+1

ANZAHL  = Z4+1

ZAHLA   = ANZAHL+1
ZAHLB   = ANZAHL+5

MZ1     = ANZAHL+9
MZ2     = MZ1+1
MZ3     = MZ1+2
MZ4     = MZ1+3
MZ5     = MZ1+4
MZ6     = MZ1+5
MZ7     = MZ1+6
;***********************************************
        * =     $C000   
;***********************************************
START:
        JSR     _CLRSRN_
        CLC
        LDX     #10
        LDY     #2
        JSR     _SETCUR_
        LDA     #TKOPF.L
        LDY     #TKOPF.H
        JSR     _TXTOUT_
ZZAHL1: 
        LDA     #TEIN1.L        
        LDY     #TEIN1.H
        STA     ZEIGER1
        STY     ZEIGER1b
        LDA     #4
        STA     ZEILE
        JSR     EINGABE
        JSR     ASCBIN
        BCC     ZAHL2A
        JSR     FEHLER
        JMP     ZZAHL1
ZAHL2A: 
        LDA     ZL
        LDX     ZM
        LDY     ZH
        STA     Z1L
        STX     Z1M
        STY     Z1H
        LDA     EXPO
        STA     Z1E
ZZAHL2: 
        LDA     #TEIN2.L        
        LDY     #TEIN2.H
        STA     ZEIGER1
        STY     ZEIGER1+1
        LDA     #6
        STA     ZEILE
        JSR     EINGABE
        JSR     ASCBIN
        BCC     OPERIN
        JSR     FEHLER
        JMP     ZZAHL2
OPERIN: 
        LDA     ZL
        LDX     ZM
        LDY     ZH
        STA     ZAHL2
        STX     ZAHL2+1
        STY     ZAHL2+2
        LDA     EXPO
        STA     ZAHL2+3
        LDA     #8
        STA     ZEILE
OPIN:   
;        JSR     LOESCH
        LDX     #0
        LDY     #8
        JSR     _SETCUR_
        LDA     #TEIN3.L
        LDY     #TEIN3.H
        JSR     _TXTOUT_
        
OP1:    JSR     _GETKEY_
        STA     OPER
        JSR     _PUTCHR_
        
        CMP     #'+'
        BNE     OP2
        JSR     ADD
        JMP     OP5
OP2:    
        CMP     #'-'
        BNE     OP3
        JSR     SUB
        JMP     OP5
OP3:    
        CMP     #'*'
        BNE     OP4
        JSR     MUL
        JMP     OP5
OP4:    
        CMP     #'/'
        BNE     OPIN
        JSR     DIV
OP5:    
        JSR     OUTPUT
        CLC
        LDX     #2
        LDY     #20
        JSR     _SETCUR_
        LDA     #TEIN4.L
        LDY     #TEIN4.H
        JSR     _TXTOUT_
        JSR     _GETKEY_
        CMP     #'J'
        BNE     ZZ1     
        JMP     START
ZZ1:    
        CMP     #'j'
        BNE     ZZ2     
        JMP     START
ZZ2:    
        JSR     _CLRSRN_
        BRK
;*****************************************
; ZAHL EINGEBEN
;*****************************************
EINGABE: 
        LDX    #37      ;ZIFFERN
        LDA     #0      ;L™SCHEN
IN1:    
        STA     TABLM-1,X
        DEX
        BNE     IN1
        
        JSR     LOESCH
        
        LDA     ZEIGER1
        LDY     ZEIGER1b
        JSR     _TXTOUT_
        
        LDX     #0      ;ANZAHL
IN2:    
        JSR     _GETKEY_
        CMP     #' '
        BEQ     EINGABE
        CMP     #'-'
        BEQ     NEGM
        CMP     #'+'
        BEQ     POSM
        CMP     #'0'
        BMI     IN2
        CMP     #':'
        BPL     IN2
        JMP     IN4     

NEGM:   LDY     #%10
        STY     VORME
POSM:   JSR     _PUTCHR_

IN3:    JSR     _GETKEY_
        
        CMP     #' '
        BEQ     EINGABE
        CMP     #'0'
        BMI     IN3
        CMP     #':'
        BPL     IN3

IN4:    STA     TABLM,X
        INX
        JSR     _PUTCHR_
        CPX     #12
        BNE     IN5     
        JMP     ENDM

IN5:    JSR     _GETKEY_
        CMP     #' '    
        BNE     IN26
        JMP     EINGABE
IN26:   CMP     #13
        BNE     IN20    
        JMP     ENDM
IN20:   CMP     #'E'
        BEQ     IN8
        CMP     #'e'
        BEQ     IN8
        CMP     #'.'
        BEQ     KOMMA
        CMP     #'0'
        BMI     IN5
        CMP     #':'
        BPL     IN5
        JMP     IN4     

KOMMA:  STX     KOMN
        JSR     _PUTCHR_

IN6:    JSR     _GETKEY_
        CMP     #' '
        BNE     IN24    
        JMP     EINGABE
IN24:   CMP     #'0'
        BMI     IN6
        CMP     #':'
        BPL     IN6

IN7:    STA     TABLM,X
        INX
        JSR     _PUTCHR_
        CPX     #12
        BNE     IN9     
        JMP     ENDM

IN9:    JSR     _GETKEY_
        CMP     #'E'
        BEQ     IN8
        CMP     #'e'
        BEQ     IN8
        CMP     #' '
        BNE     IN23    
        JMP     EINGABE
IN23:   CMP     #13
        BEQ     ENDM
        CMP     #'0'
        BMI     IN9
        CMP     #':'
        BPL     IN9
        JMP     IN7     

IN8:    LDY     KOMN
        BNE     IN15
        STX     KOMN
IN15:   STX     MANN
        LDX     #0
        JSR     _PUTCHR_

IN10:   JSR     _GETKEY_
        CMP     #'-'
        BEQ     NEGE
        CMP     #'+'
        BEQ     POSE
        CMP     #' '
        BNE     IN25
        JMP     EINGABE

IN25:   CMP     #'0'
        BMI     IN10
        CMP     #':'
        BPL     IN10
        JMP     IN12    
NEGE:   
        INC     VORME
POSE:   
        JSR     _PUTCHR_
IN11:   
        JSR     _GETKEY_
        CMP     #' '
        BNE     IN22    
        JMP     EINGABE
IN22:   
        CMP     #'0'
        BMI     IN10
        CMP     #':'
        BPL     IN10
IN12:   
        STA     TABLE,X
        JSR     _PUTCHR_
        INX
        CPX     #3
        BEQ     ENDE
IN13:   
        JSR     _GETKEY_
        CMP     #' '
        BNE     IN21    
        JMP     EINGABE
IN21:   
        CMP     #13
        BEQ     ENDE
        CMP     #'0'
        BMI     IN13
        CMP     #':'
        BPL     IN13
        JMP     IN12    
ENDM:   
        LDY     KOMN
        BNE     IN14
        STX     KOMN
IN14:   
        STX     MANN
        RTS
ENDE:   
        STX     EXPN
        RTS
;************************************
; ASCII NACH GLEITKOMMA
;************************************
ZXZ:    
        JMP     MANTIS
ASCBIN: 
        CLD
        LDA     #7
        STA     ANZAHL
        LDX     EXPN
        BEQ     ZXZ
        CPX     #3
        BEQ     GO
        CPX     #2
        BNE     GO3

        LDA     TABLE+1
        STA     TABLE+2
        LDA     TABLE
        STA     TABLE+1
        LDA     #0
        STA     TABLE
        JMP     GO
GO3:    
        LDA     TABLE
        STA     TABLE+2
        LDA     #0
        STA     TABLE
GO:     
        LDA     TABLE+2
        AND     #$F
        BEQ     ZEHNER
        STA     EXPO
ZEHNER: 
        LDA     TABLE+1
        AND     #$F
        BEQ     HUNDRT
        LSR     
        TAY
        BCC     ZWANZG
        CLC
        LDA     EXPO
        ADC     #10
        STA     EXPO
ZWANZG: 
        CPY     #0
        BEQ     HUNDRT
        CLC
        LDA     EXPO
ASC2:   
        ADC     #20
        DEY
        BNE     ASC2
        STA     EXPO
HUNDRT: 
        LDA     TABLE
        AND     #$F
        BEQ     VORE
        LSR     
        BEQ     ASC22   
        JMP     OVER
        
ASC22:  BCC     VORE
        CLC
        LDA     EXPO
        ADC     #100
        STA     EXPO

VORE:   LDA     VORME
        AND     #1
        BEQ     PLUSE
        LDA     EXPO
        EOR     #$FF
        SEC
        ADC     #0
        BMI     ASC21   
        JMP     OVER
        
ASC21:  STA     EXPO
        JMP     MANTIS  

PLUSE:  LDA     EXPO
        BPL     MANTIS  
        JMP     OVER

MANTIS: LDA     EXPO
        CLC
        ADC     KOMN
        BVC     ASC20   
        JMP     OVER
        
ASC20:  STA     EXPO
        LDX     MANN

ASC3:   LDA     TABLM-1,X
        AND     #$F
        STA     TABLM-1,X
        DEX
        BNE     ASC3
        LDY     MANN
        LDX     #0

ASC4:   LDA     TABLM,X
        BNE     ASC5
        INX
        DEY
        BNE     ASC4
        JMP     PLUSM

ASC5:   CPX     #0
        BEQ     BCDBIN
        TXA
        EOR     #$FF
        SEC
        ADC     #0
        CLC
        ADC     EXPO
        BVC     ASC6
        SEC
        LDA     #127
        SBC     EXPO
        BEQ     BCDBIN
        TXA
        LDA     #127

ASC6:   STA     EXPO    ;VERSCHIEBEN
        LDY     #0

ASC7:   LDA     TABLM,X
        STA     TABLM,Y
        INX
        INY
        CPY     ANZAHL
        BNE     ASC7
BCDBIN:
        JSR     BCDDO
        LDA     ZH
        BMI     OVERMAN
        JMP     VORM    

OVERMAN: 
        CLC
        LDA     EXPO
        ADC     #1
        BVS     OVER
        STA     EXPO
        LDY     #7      ;1      VERSCHIEBEN
        LDX     #6
ASC12:  
        LDA     TABLM,X
        STA     TABLM,Y
        DEX
        DEY
        BNE     ASC12
        STY     TABLM
        JMP     BCDBIN  
VORM:   
        LDA     VORME
        AND     #2
        BEQ     PLUSM
        JSR     NEG
        BPL     OVERMAN
PLUSM:  
        CLC
        RTS
OVER:   
        SEC
        RTS
;*********************************
NEG:        
        LDA     ZL
        EOR     #$FF
        STA     ZL
        LDA     ZM
        EOR     #$FF
        STA     ZM
        LDA     ZH
        EOR     #$FF
        STA     ZH
        LDA     #0
        SEC
        ADC     ZL
        STA     ZL
        LDA     ZM
        ADC     #0
        STA     ZM
        LDA     ZH
        ADC     #0
        STA     ZH
        RTS
;***********************************
BCDDO:
        CLD
        LDA     #0
        STA     ZL
        STA     ZM
        STA     ZH
        LDX     #0
        LDY     #6
ASC8:   
        LDA     TABLM,Y
        BEQ     ASC11
        PHA
        LDA     WERTE,X
        STA     HZH     ;HIGH
        LDA     WERTE+1,X
        STA     HZM     ;MIDDLE
        LDA     WERTE+2,X
        STA     HZL     ;LOW
        PLA
        LSR     
        BCC     ASC9
        JSR     ADD3
ASC9:   
        CMP     #0
        BEQ     ASC11
        ASL     HZL
        ROL     HZM
        ROL     HZH
ASC10:  
        JSR     ADD3
        SEC
        SBC     #1
        BNE     ASC10
ASC11:  
        INX
        INX
        INX
        DEY
        BPL     ASC8
        RTS
;*****************************************
; ZEILE LOESCHEN UND CURSOR SETZEN
;*****************************************
LOESCH: 
        ldy     ZEILE
        ldx     #0
        JSR     _SETCUR_
        
        LDA		#LLLL.l
        LDY		#LLLL.h
        JSR		_TXTOUT_
        
        LDY     ZEILE
        LDX     #0
        JSR     _SETCUR_
        RTS
;****************************************
; ERGEBNIS AUSGEBEN
;****************************************
OUTPUT: 
        LDX     #0
        LDY     #12
        JSR     _SETCUR_
        LDA     #'>'
        JSR     _PUTCHR_
        LDX     #0
        JSR     ZAHLOUT
        LDA     OPER
        STA     TMAL+1

        LDA     #TMAL.L
        LDY     #TMAL.H
        JSR     _TXTOUT_

        LDX     #4
        JSR     ZAHLOUT
        LDA     #'='
        STA     TMAL+1

        LDA     #TMAL.L
        LDY     #TMAL.H
        JSR     _TXTOUT_

        LDA     #' '
        STA     TMAL+1
        LDA     #TMAL.L
        LDY     #TMAL.H
        JSR     _TXTOUT_
        CLC
        LDX     #5
        LDY     #15
        JSR     _SETCUR_
        LDA     #TOUT.L
        LDY     #TOUT.H
        JSR     _TXTOUT_

        LDA     ZEIGER1
        BMI     ZZZ6
        LDX     #8
        JSR     ZAHLOUT
        RTS
ZZZ6:   
        LDA     #TERR.L
        LDY     #TERR.H
        JSR     _TXTOUT_
        RTS
;****************************************
; ZAHL AUSGEBEN
;****************************************
ZAHLOUT: 
        LDA     ZAHL1,X
        STA     HZL
        INX
        LDA     ZAHL1,X
        STA     HZM
        INX
        LDA     ZAHL1,X
        STA     HZH
        INX
        LDA     ZAHL1,X
        LDX     HZH
        BNE     P11
        LDX     HZM
        BNE     P11
        LDX     HZL
        BNE     P11
        LDA     #1
P11:
        PHA
        JSR     ASCMAN
        LDA     VORME
        BPL     ZZZ3
        LDA     #'-'
        JSR     _PUTCHR_
ZZZ3:   
        LDA     #'0'
        JSR     _PUTCHR_
        LDA     #'.'
        STA     TABLM
        LDA     #'E'
        STA     TABLM+8
        LDA     #0
        STA     TABLM+9
        LDA     TABLM+1
        CMP     #'0'
        BNE     ZZ6
        LDA     #'.'
        STA     TABLM+1
        PLA     
        SEC
        SBC     #1
        PHA     
        LDA     #TABLM1.L
        LDY     #TABLM1.H
        JMP     ZZ7
ZZ6:
        LDA     #TABLM.L
        LDY     #TABLM.H
ZZ7:
        JSR     _TXTOUT_
        PLA
        STA     HZL
        BPL     ZZZ4
        LDA     #$FF
        STA     HZM
        STA     HZH
        LDA     #'-'
        JSR     _PUTCHR_
        JMP     ZZZ5
        
ZZZ4:   LDA     #0
        STA     HZM
        STA     HZH
        
ZZZ5:   JSR     ASCMAN
        LDA     #0
        STA     TABLM+8
        
        
        LDA     #TABLM5.L
        LDY     #TABLM5.H
        JSR     _TXTOUT_
        RTS
;*********************************
AD10:
        JMP     ADOK
ADD:
        CLD
        LDX     #7
AD2:
        LDA     ZAHL1,X
        STA     ZAHLA,X
        DEX
        BPL     AD2
        LDA     ZAHL1+3
        SEC
        SBC     ZAHL2+3
        BEQ     AD10
        BVS     AD1
        BPL     ADDD
        EOR     #$FF
        SEC
        ADC     #0
AD4:
        TAY
        LDX     #3
AD3:
        LDA     ZAHLA,X
        PHA
        LDA     ZAHLB,X
        STA     ZAHLA,X
        PLA
        STA     ZAHLB,X
        DEX
        BPL     AD3
        TYA
        JMP     ADDD
AD1:
        LDA     ZAHL2+3
        SEC
        SBC     ZAHL1+3
        BMI     AD4
        EOR     #$FF
        SEC
        ADC     #0
ADDD:
        CMP     #0
        BPL     AD77
        JMP     AD66
AD77:
        CMP     #7
        BMI     AD5
AD66:
        LDX     #3
AD6:
        LDA     ZAHLA,X
        STA     ZAHL3,X
        DEX
        BPL     AD6
        LDA     #0
        STA     ZEIGER1
        RTS
AD5:
        PHA
        LDA     ZAHLB
        STA     HZL
        LDA     ZAHLB+1
        STA     HZM
        LDA     ZAHLB+2
        STA     HZH
        JSR     ASCMAN
        PLA
        TAX
        PHA
        DEX
        BNE     AADD
        PLA
        JMP     AD8
AADD:
        TXA
        EOR     #$FF
        SEC
        ADC     #0
        CLC
        ADC     #6
        TAX
        LDY     #6
AD7:
        LDA     TABLM,X
        STA     TABLM,Y
        DEY
        DEX
        BNE     AD7
        PLA
        LDA     #'0'
AD9:
        STA     TABLM,Y
        DEY
        BNE     AD9
AD8:
        LDX     #6
AD11:
        LDA     TABLM,X
        AND     #$0F
        STA     TABLM,X
        DEX
        CPX     #$FF
        BNE     AD11
        JSR     BCDDO
        LDA     VORME
        BPL     AD12
        JSR     NEG
AD12:
        LDA     ZL
        STA     ZAHLB
        LDA     ZM
        STA     ZAHLB+1
        LDA     ZH
        STA     ZAHLB+2
ADOK:
        LDA     ZAHLA+3
        STA     ZAHL3+3
        LDA     #0
        STA     ZEIGER1
        CLD
        CLC
        LDA     ZAHLA
        ADC     ZAHLB
        STA     ZAHL3
        LDA     ZAHLA+1
        ADC     ZAHLB+1
        STA     ZAHL3+1
        LDA     ZAHLA+2
        ADC     ZAHLB+2
        STA     ZAHL3+2
        BVS     AD20
        RTS
AD20:
        LDA     ZAHL1+2
        BPL     AD23
        LDA     ZAHL3
        STA     ZL
        LDA     ZAHL3+1
        STA     ZM
        LDA     ZAHL3+2
        STA     ZH
        JSR     NEG
        LDA     ZL
        STA     ZAHL3
        LDA     ZM
        STA     ZAHL3+1
        LDA     ZH
        STA     ZAHL3+2
AD23:
        LDA     ZAHL3
        STA     HZL
        LDA     ZAHL3+1
        STA     HZM
        LDA     ZAHL3+2
        STA     HZH
        JSR     ASCMAN2
        LDX     #6
AD22:
        LDA     TABLM,X
        AND     #$0F
        STA     TABLM,X
        DEX     
        CPX     #$FF
        BNE     AD22
        JSR     BCDDO

        LDA     ZL
        STA     ZAHL3
        LDA     ZM
        STA     ZAHL3+1
        LDA     ZH
        STA     ZAHL3+2

        LDA     ZAHL1+2
        BPL     AD24
        
        LDA     ZAHL3
        STA     ZL
        LDA     ZAHL3+1
        STA     ZM
        LDA     ZAHL3+2
        STA     ZH
        JSR     NEG
        LDA     ZL
        STA     ZAHL3
        LDA     ZM
        STA     ZAHL3+1
        LDA     ZH
        STA     ZAHL3+2
AD24:
        CLC
        LDA     ZAHL3+3
        ADC     #1
        STA     ZAHL3+3
        BVS     ADEND
        LDA     #$FF
        STA     ZEIGER1
ADEND:
        RTS
;*********************************
;       3-BYTEADDITION
;*********************************
ADD3:   PHA
        CLC
        LDA     HZL
        ADC     ZL
        STA     ZL
        LDA     HZM
        ADC     ZM
        STA     ZM
        LDA     HZH
        ADC     ZH
        STA     ZH
        PLA
        RTS
;****************************************
;       BIN IN ASCII
;       IN HZL USW. STEHT ZAHL
;       IN TABLM STEHT ZIFFERNFOLGE
;       IN VORME VORZEICHEN - BIT 7
;****************************************
ASCMAN2:
        CLD
        LDA     #0
        STA     Z1
        STA     Z2
        STA     Z3
        STA     Z4
        STA     VORME
        JMP     BIN1

ASCMAN: 
        CLD
        LDA     #0
        STA     Z1
        STA     Z2
        STA     Z3
        STA     Z4

        STA     VORME
        LDA     HZH
        BPL     BIN1    ;POSITIV

        STA     VORME
        
        SEC
        LDA     HZL
        EOR     #$FF
        ADC     #0
        STA     HZL
        LDA     HZM
        EOR     #$FF
        ADC     #0
        STA     HZM
        LDA     HZH
        EOR     #$FF
        ADC     #0
        STA     HZH
BIN1:   
        SED
        LDX     #0
BIN2:   
        LDA     HZH,X
        LDY     #8
BIN3:   
        ROL     

        PHA             ; *2+(?=C)
        LDA     Z4
        ADC     Z4
        STA     Z4
        LDA     Z3
        ADC     Z3
        STA     Z3
        LDA     Z2
        ADC     Z2
        STA     Z2
        LDA     Z1
        ADC     Z1
        STA     Z1
        PLA

        DEY
        BNE     BIN3
        INX
        CPX     #3
        BNE     BIN2
        LDX     #3
        LDY     #7
BIN4:   
        LDA     Z1,X
        AND     #$0F
        ORA     #$30
        STA     TABLM,Y
        LDA     Z1,X
        AND     #$F0
        LSR     
        LSR     
        LSR     
        LSR     
        ORA     #$30
        DEY
        STA     TABLM,Y
        DEY
        DEX
        BPL     BIN4
        CLD
        RTS
;****************************************
SUB:    CLD
        SEC
        LDA     Z2L
        STA     TABLM+10
        EOR     #$FF
        ADC     #0
        STA     Z2L
        LDA     Z2M
        STA     TABLM+11
        EOR     #$FF
        ADC     #0
        STA     Z2M
        LDA     Z2H
        STA     TABLM+12
        EOR     #$FF
        ADC     #0
        STA     Z2H
        JSR     ADD
        LDA     TABLM+10
        STA     Z2L
        LDA     TABLM+11
        STA     Z2M
        LDA     TABLM+12
        STA     Z2H
        RTS
;****************************************
DIV:    
        CLD
        LDA     #0
        STA     ZEIGER1
        STA     ZEIGER1+1
        LDA     ZAHL2
        BNE     P2
        LDA     ZAHL2+1
        BNE     P2
        LDA     ZAHL2+2
        BNE     P2
        LDA     #$FF
        STA     ZEIGER1
        RTS
P2:
        LDA     ZAHL1
        BNE     P1
        LDA     ZAHL1+1
        BNE     P1
        LDA     ZAHL1+2
        BNE     P1
        LDA     #0
        STA     ZAHL3
        STA     ZAHL3+1
        STA     ZAHL3+2
        STA     ZAHL3+3
        RTS
P1:
        LDA     ZAHL1+3
        SEC
        SBC     ZAHL2+3
        BVC     DV6
FE:
        LDA     #$FF
        STA     ZEIGER1
        RTS
DV6:
        CLC
        ADC     #2
        BVS     FE
        STA     ZAHL3+3
        LDA     #0
        TAX     
DVV:
        STA     ZAHLS,X
        INX
        CPX     #12
        BNE     DVV
        STA     ZAHLB
        STA     ZAHLB+1
        STA     ZAHLB+2
        LDA     ZAHL1+2
        BPL     DV1
        LDA     #1
        STA     ZEIGER1+1

        LDA     ZAHL1
        STA     ZL
        LDA     ZAHL1+1
        STA     ZM
        LDA     ZAHL1+2
        STA     ZH
        JSR     NEG
        LDA     ZL
        STA     ZAHLM+3
        LDA     ZM
        STA     ZAHLM+4
        LDA     ZH
        STA     ZAHLM+5
        JMP     DV2
DV1:
        LDA     ZAHL1
        STA     ZAHLM+3
        LDA     ZAHL1+1
        STA     ZAHLM+4
        LDA     ZAHL1+2
        STA     ZAHLM+5
DV2:
        LDA     ZAHL2+2
        BPL     DV3
        LDA     ZEIGER1+1
        CLC
        ADC     #1
        STA     ZEIGER1+1
        
        LDA     ZAHL2
        STA     ZL
        LDA     ZAHL2+1
        STA     ZM
        LDA     ZAHL2+2
        STA     ZH
        JSR     NEG
        LDA     ZL
        STA     ZAHLS+3
        LDA     ZM
        STA     ZAHLS+4
        LDA     ZH
        STA     ZAHLS+5
        JMP     DV4
DV3:
        LDA     ZAHL2
        STA     ZAHLS+3
        LDA     ZAHL2+1
        STA     ZAHLS+4
        LDA     ZAHL2+2
        STA     ZAHLS+5
DV4:
        LDX     #0
DV7:
        INX
        ASL     ZAHLS+3
        ROL     ZAHLS+4
        ROL     ZAHLS+5
        BPL     DV7
        STX     ZAHLA
        LDX     #0
DV8:
        INX
        ASL     ZAHLM+3
        ROL     ZAHLM+4
        ROL     ZAHLM+5
        BPL     DV8
        TXA
        SEC
        SBC     ZAHLA
        STA     ZAHLA
        LDX     #24
DV12:
        SEC
        LDA     ZAHLM
        SBC     ZAHLS
        STA     ZAHLM
        LDA     ZAHLM+1
        SBC     ZAHLS+1
        STA     ZAHLM+1
        LDA     ZAHLM+2
        SBC     ZAHLS+2
        STA     ZAHLM+2
        LDA     ZAHLM+3
        SBC     ZAHLS+3
        STA     ZAHLM+3
        LDA     ZAHLM+4
        SBC     ZAHLS+4
        STA     ZAHLM+4
        LDA     ZAHLM+5
        SBC     ZAHLS+5
        STA     ZAHLM+5
        BPL     DV10
        JSR     ADD6
        CLC
        JMP     DV11
DV10:
        SEC
DV11:
        ROL     ZAHLB
        ROL     ZAHLB+1
        ROL     ZAHLB+2
        LSR     ZAHLS+5
        ROR     ZAHLS+4
        ROR     ZAHLS+3
        ROR     ZAHLS+2
        ROR     ZAHLS+1
        ROR     ZAHLS
        DEX
        BEQ     DV13
        JMP     DV12
DV13:
        STX     ZAHLM+3
        STX     ZAHLM+4
        STX     ZAHLM+5
        LDA     ZAHLB
        STA     ZAHLM
        LDA     ZAHLB+1
        STA     ZAHLM+1
        LDA     ZAHLB+2
        STA     ZAHLM+2
        LDX     ZAHLA
        DEX
        BEQ     DV60
        BPL     DV61
DV14:
        ASL     ZAHLM
        ROL     ZAHLM+1
        ROL     ZAHLM+2
        ROL     ZAHLM+3
        INX
        BNE     DV14
        JMP     DV60
DV61:
        LSR     ZAHLM+2
        ROR     ZAHLM+1
        ROR     ZAHLM
        DEX
        BNE     DV61
DV60:
        LDX     #5
DV62:
        JSR     MAL10
        DEX     
        BNE     DV62
        LDA     ZAHLM+3
        STA     ZAHL3
        LDA     ZAHLM+4
        STA     ZAHL3+1
        LDA     ZAHLM+5
        STA     ZAHL3+2
        LDX     #2
DVV6:
        JSR     MAL10
        LDA     ZEIGER2
        BNE     VORZ
        LDA     ZAHL3+3
        SEC
        SBC     #1
        BVS     VORZ
        STA     ZAHL3+3
        LDA     ZAHLM+3
        STA     ZAHL3
        LDA     ZAHLM+4
        STA     ZAHL3+1
        LDA     ZAHLM+5
        STA     ZAHL3+2
        DEX
        BNE     DVV6
VORZ:
        LSR     ZEIGER1+1
        BCC     ENDD
        LDA     ZAHL3
        STA     ZL
        LDA     ZAHL3+1
        STA     ZM
        LDA     ZAHL3+2
        STA     ZH
        JSR     NEG
        LDA     ZL
        STA     ZAHL3
        LDA     ZM
        STA     ZAHL3+1
        LDA     ZH
        STA     ZAHL3+2
ENDD:
        RTS
;****************************************
MAL10:
        LDA     #0
        STA     ZEIGER2
DV22:
        LDA     ZAHLM
        ASL
        STA     ZAHLM
        STA     ZAHLS
        LDA     ZAHLM+1
        ROL
        STA     ZAHLM+1
        STA     ZAHLS+1
        LDA     ZAHLM+2
        ROL
        STA     ZAHLM+2
        STA     ZAHLS+2
        LDA     ZAHLM+3
        ROL
        STA     ZAHLM+3
        STA     ZAHLS+3
        LDA     ZAHLM+4
        ROL
        STA     ZAHLM+4
        STA     ZAHLS+4
        LDA     ZAHLM+5
        ROL
        STA     ZAHLM+5
        STA     ZAHLS+5
        BPL     DVV1
        LDA     ZEIGER2
        CLC
        ADC     #1
        STA     ZEIGER2
DVV1:
        LDY     #2
DV20:
        ASL     ZAHLM
        ROL     ZAHLM+1
        ROL     ZAHLM+2
        ROL     ZAHLM+3
        ROL     ZAHLM+4
        ROL     ZAHLM+5
        BPL     DVV2
        LDA     ZEIGER2
        CLC
        ADC     #1
        STA     ZEIGER2
DVV2:
        DEY
        BNE     DV20
        JSR     ADD6
        BPL     DVV3
        LDA     ZEIGER2
        CLC
        ADC     #1
        STA     ZEIGER2
DVV3:
        RTS
;****************************************
ADD6:
        CLC
        LDA     ZAHLM
        ADC     ZAHLS
        STA     ZAHLM
        LDA     ZAHLM+1
        ADC     ZAHLS+1
        STA     ZAHLM+1
        LDA     ZAHLM+2
        ADC     ZAHLS+2
        STA     ZAHLM+2
        LDA     ZAHLM+3
        ADC     ZAHLS+3
        STA     ZAHLM+3
        LDA     ZAHLM+4
        ADC     ZAHLS+4
        STA     ZAHLM+4
        LDA     ZAHLM+5
        ADC     ZAHLS+5
        STA     ZAHLM+5
        RTS
;****************************************
MUL:    
        CLD
        LDA     #0
        STA     ZEIGER1
        STA     ZEIGER1+1
        LDA     ZAHL1+3
        CLC
        ADC     ZAHL2+3
        BVC     ML3
        LDA     #$FF
        STA     ZEIGER1
        RTS
ML3:
        STA     ZAHL3+3
        LDA     ZAHL1+2
        BPL     ML10
        LDA     #1
        STA     ZEIGER1+1
        LDA     ZAHL1
        STA     ZL
        LDA     ZAHL1+1
        STA     ZM
        LDA     ZAHL1+2
        STA     ZH
        JSR     NEG
        LDA     ZL
        STA     ZAHLS+2
        LDA     ZM
        STA     ZAHLS+1
        LDA     ZH
        STA     ZAHLS
        JMP     ML12
ML10:
        LDA     ZAHL1
        STA     ZAHLS+2
        LDA     ZAHL1+1
        STA     ZAHLS+1
        LDA     ZAHL1+2
        STA     ZAHLS
ML12:
        LDA     ZAHL2+2
        BPL     ML11
        LDA     ZEIGER1+1
        CLC
        ADC     #1
        STA     ZEIGER1+1
        LDA     ZAHL2
        STA     ZL
        LDA     ZAHL2+1
        STA     ZM
        LDA     ZAHL2+2
        STA     ZH
        JSR     NEG
        LDA     ZH
        STA     ZAHLA
        LDA     ZM
        STA     ZAHLA+1
        LDA     ZL
        STA     ZAHLA+2
        JMP     ML14
ML11:
        LDA     ZAHL2
        STA     ZAHLA+2
        LDA     ZAHL2+1
        STA     ZAHLA+1
        LDA     ZAHL2+2
        STA     ZAHLA
ML14:
        JSR     MULS
        LDA     #0
        STA     MZ1
        STA     MZ2
        STA     MZ3
        STA     MZ4
        STA     MZ5
        STA     MZ6
        STA     MZ7
MIN1:
        SED
        LDX     #0
MIN2:        
        LDA     ZAHLM,X
        LDY     #8
MIN3:
        ROL     
        PHA
        LDA     MZ7
        ADC     MZ7
        STA     MZ7
        LDA     MZ6
        ADC     MZ6
        STA     MZ6
        LDA     MZ5
        ADC     MZ5
        STA     MZ5
        LDA     MZ4
        ADC     MZ4
        STA     MZ4
        LDA     MZ3
        ADC     MZ3
        STA     MZ3
        LDA     MZ2
        ADC     MZ2
        STA     MZ2
        LDA     MZ1
        ADC     MZ1
        STA     MZ1
        PLA
        DEY
        BNE     MIN3
        INX
        CPX     #6
        BNE     MIN2
        LDX     #6
        LDY     #13
MIN4:
        LDA     MZ1,X
        AND     #$0F
        ORA     #$30
        STA     TABLM,Y
        LDA     MZ1,X
        AND     #$F0
        LSR     
        LSR
        LSR
        LSR
        ORA     #$30
        DEY
        STA     TABLM,Y
        DEY
        DEX
        CPX     #$FF
        BPL     MIN4
        CLD
        LDA     #14
        STA     ANZAHL
        STA     KOMN
        STA     MANN
        LDA     ZAHL3+3
        SEC     
        SBC     #14
        BVC     MLOK
        LDA     #$FF
        STA     ZEIGER1
        RTS
MLOK:
        STA     EXPO
        LDA     ZEIGER1+1
        ASL
        STA     VORME
        JSR     MANTIS
        BCC     ML44
        LDA     #$FF
        STA     ZEIGER1
        RTS
ML44:
        LDA     ZL
        STA     ZAHL3
        LDA     ZM      
        STA     ZAHL3+1
        LDA     ZH
        STA     ZAHL3+2
        LDA     EXPO
        STA     ZAHL3+3
        RTS
;****************************************
MULS:
        CLD
        LDA     #0
        LDX     #9
MS1:
        STA     ZAHLS+2,X
        DEX
        BNE     MS1
        LDX     #0
MS0:
        LDA     ZAHLA,X
        LDY     #8
MS2:
        LSR     ZAHLS
        ROR     ZAHLS+1
        ROR     ZAHLS+2
        ROR     ZAHLS+3
        ROR     ZAHLS+4
        ROR     ZAHLS+5
        ASL     
        PHA
        BCC     MS5
        CLC
        LDA     ZAHLM+5
        ADC     ZAHLS+5
        STA     ZAHLM+5
        LDA     ZAHLM+4
        ADC     ZAHLS+4
        STA     ZAHLM+4
        LDA     ZAHLM+3
        ADC     ZAHLS+3
        STA     ZAHLM+3
        LDA     ZAHLM+2
        ADC     ZAHLS+2
        STA     ZAHLM+2
        LDA     ZAHLM+1
        ADC     ZAHLS+1
        STA     ZAHLM+1
        LDA     ZAHLM
        ADC     ZAHLS
        STA     ZAHLM
MS5:
        PLA
        DEY
        BNE     MS2
        INX
        CPX     #$03
        BNE     MS0
        RTS
;****************************************
FEHLER: JSR     LOESCH
        LDA     #TERR.L
        LDY     #TERR.H
        JSR     _TXTOUT_
        JSR     _GETKEY_
        RTS
;****************************************
;       ZEICHEN HOLEN
;****************************************
TXTOUT:
        sta     txt1 +1
        sty     txt1 +2
        ldy     #0
txt1:     
        lda     $FFFF,y
        jsr     _PUTCHR_
        beq     txt2
        iny
        jmp     txt1
txt2:
        rts
;****************************************
;       DATEN
;****************************************
WERTE:  .byte   $00,$00,$01     ;1
        .byte   $00,$00,$0A     ;10
        .byte   $00,$00,$64     ;100
        .byte   $00,$03,$E8     ;1000
        .byte   $00,$27,$10     ;10000
        .byte   $01,$86,$A0     ;100000
        .byte   $0F,$42,$40     ;1000000

XXX:    .byte   0
YYY:    .byte   0

TKOPF:  .asc    'GLEITKOMMABERECHNUNG'
        .byte   0
TEIN1:  .asc    'A :'
        .byte   0
TEIN2:  .asc    'B :'
        .byte   0
TEIN3:  .asc    '(+,-,*,/):'
        .byte   0
TEIN4:  .asc    'WEITERE BERECHNUNG (J):'
        .byte   0
TOUT:   .asc    'ERGEBNIS : '
        .byte   0
TERR:   .asc    'OVERFLOW'
        .byte   0
TMAL:   .asc    '   '
        .byte   0
LLLL:	.asc	'                                                          '
		.byte	0

