Files
2026-05-07 10:02:50 +12:00

144 lines
1.6 KiB
ArmAsm

qint lda facexp
beq clrfac
sec
sbc #addpr8+$98
bit facsgn
bpl qishft
tax
lda #$ff
sta bits
jsr negfch
txa
qishft ldx #fac
cmp #$f9
bpl qint1
jsr shiftr
sty bits
qintrt rts
qint1 tay
lda facsgn
and #$80
lsr facho
ora facho
sta facho
jsr rolshf
sty bits
rts
int lda facexp
cmp #addpr8+$98
bcs intrts
jsr qint
sty facov
lda facsgn
sty facsgn
eor #$80
rol a
lda #$98+8
sta facexp
lda faclo
sta integr
jmp fadflt
clrfac sta facho
sta facmoh
sta facmo
sta faclo
tay
intrts rts
fin ldy #$00
ldx #$09+addprc
finzlp sty deccnt,x
dex
bpl finzlp
bcc findgq
cmp #'-'
bne qplus
stx sgnflg
beq finc
qplus cmp #'+'
bne fin1
finc jsr chrget
findgq bcc findig
fin1 cmp #'.'
beq findp
cmp #'E'
bne fine
jsr chrget
bcc fnedg1
cmp #minutk
beq finec1
cmp #'-'
beq finec1
cmp #plustk
beq finec
cmp #'+'
beq finec
bne finec2
finec1 ror expsgn
finec jsr chrget
fnedg1 bcc finedg
finec2 bit expsgn
bpl fine
lda #0
sec
sbc tenexp
jmp fine1
findp ror dptflg
bit dptflg
bvc finc
fine lda tenexp
fine1 sec
sbc deccnt
sta tenexp
beq finqng
bpl finmul
findiv jsr div10
inc tenexp
bne findiv
beq finqng
finmul jsr mul10
dec tenexp
bne finmul
finqng lda sgnflg
bmi negxqs
rts
negxqs jmp negop
findig pha
bit dptflg
bpl findg1
inc deccnt
findg1 jsr mul10
pla
sec
sbc #'0'
jsr finlog
jmp finc
finlog pha
jsr movaf
pla
jsr float
lda argsgn
eor facsgn
sta arisgn
ldx facexp
jmp faddt
finedg lda tenexp
cmp #$0a
bcc mlex10
lda #$64
bit expsgn
bmi mlexmi
jmp overr
mlex10 asl a
asl a
clc
adc tenexp
asl a
clc
ldy #0
adc (txtptr),y
sec
sbc #'0'
mlexmi sta tenexp
jmp finec