249 lines
2.2 KiB
ArmAsm
249 lines
2.2 KiB
ArmAsm
/
|
|
/
|
|
|
|
/ io6 -- input conversions
|
|
|
|
/.globl aicv
|
|
/.globl gicv
|
|
/
|
|
/.globl ilval
|
|
/.globl width
|
|
/.globl ilen
|
|
/.globl fgetc
|
|
/.globl itype
|
|
/.globl nlflg
|
|
/.globl gcflg
|
|
|
|
aicv:
|
|
mov ilval,r1
|
|
movb width,r2
|
|
movb ilen,r0
|
|
mov r0,-(sp)
|
|
1:
|
|
cmp r2,(sp)
|
|
ble 1f
|
|
jsr r5,fgetc
|
|
dec r2
|
|
br 1b
|
|
1:
|
|
tst r2
|
|
ble 1f
|
|
jsr r5,fgetc
|
|
movb r0,(r1)+
|
|
dec r2
|
|
dec (sp)
|
|
br 1b
|
|
1:
|
|
tst (sp)
|
|
ble 1f
|
|
movb $' ,(r1)+
|
|
dec (sp)
|
|
br 1b
|
|
1:
|
|
tst (sp)+
|
|
rts r5
|
|
|
|
licv:
|
|
mov width,twidth
|
|
setd
|
|
seti
|
|
clrf fr0
|
|
1:
|
|
jsr r5,fgetcn
|
|
cmp r0,$'t
|
|
beq 2f
|
|
cmp r0,$'T
|
|
beq 2f
|
|
cmp r0,$'1
|
|
beq 2f
|
|
cmp r0,$',
|
|
beq 1f
|
|
br 1b
|
|
2:
|
|
movif $1,fr0
|
|
br 1b
|
|
1:
|
|
br storin
|
|
|
|
iicv:
|
|
clr ndig
|
|
|
|
ficv:
|
|
eicv:
|
|
dicv:
|
|
mov width,twidth
|
|
br 1f
|
|
|
|
gicv:
|
|
mov $16383.,twidth
|
|
clr ndig
|
|
mov pc,gcflg
|
|
br 2f
|
|
1:
|
|
clr gcflg
|
|
2:
|
|
jsr r5,gatof
|
|
storin:
|
|
cmpb itype,$'r
|
|
beq 1f
|
|
cmpb ilen,$1
|
|
beq 3f
|
|
cmpb ilen,$4
|
|
bne 2f
|
|
setl
|
|
2:
|
|
movfi fr0,*ilval
|
|
rts r5
|
|
3:
|
|
movfi fr0,r0
|
|
movb r0,*ilval
|
|
rts r5
|
|
1:
|
|
cmpb ilen,$8.
|
|
beq 2f
|
|
setf
|
|
2:
|
|
movf fr0,*ilval
|
|
rts r5
|
|
|
|
gatof:
|
|
setd
|
|
seti
|
|
movif $10.,fr3
|
|
clr r2
|
|
clrf fr0
|
|
clr -(sp)
|
|
1:
|
|
jsr r5,fgetcn
|
|
cmp $' ,r0
|
|
bne 1f
|
|
tst nlflg
|
|
beq 1b
|
|
tst (sp)+
|
|
rts r5
|
|
1:
|
|
cmp r0,$'+
|
|
beq 1f
|
|
cmp r0,$'-
|
|
bne 2f
|
|
inc (sp)
|
|
1:
|
|
jsr r5,fgetcn
|
|
2:
|
|
cmp $' ,r0
|
|
bne 3f
|
|
tst gcflg
|
|
bne 3f
|
|
mov $'0,r0
|
|
3:
|
|
sub $'0,r0
|
|
cmp r0,$9.
|
|
bhi 2f
|
|
mulf fr3,fr0
|
|
movif r0,fr1
|
|
addf fr1,fr0
|
|
dec r1
|
|
br 1b
|
|
2:
|
|
add $'0,r0
|
|
cmp r0,$'.
|
|
bne 1f
|
|
inc r2
|
|
clr r1
|
|
br 1b
|
|
1:
|
|
mov r3,-(sp)
|
|
clr r3
|
|
cmp r0,$'d
|
|
beq 3f
|
|
cmp r0,$'+
|
|
beq 3f
|
|
cmp r0,$'-
|
|
beq 3f
|
|
cmp r0,$'e
|
|
bne 2f
|
|
3:
|
|
jsr r5,atoi
|
|
2:
|
|
tst r2
|
|
bne 1f
|
|
mov ndig,r1
|
|
neg r1
|
|
1:
|
|
movf fr3,fr2
|
|
add r3,r1
|
|
mov (sp)+,r3
|
|
tst r1
|
|
beq 1f
|
|
bpl 3f
|
|
neg r1
|
|
mov pc,-(sp)
|
|
br 2f
|
|
3:
|
|
clr -(sp)
|
|
2:
|
|
dec r1
|
|
ble 2f
|
|
mulf fr3,fr2
|
|
br 2b
|
|
2:
|
|
tst (sp)+
|
|
bne 2f
|
|
mulf fr2,fr0
|
|
br 1f
|
|
2:
|
|
divf fr2,fr0
|
|
1:
|
|
tst (sp)+
|
|
beq 1f
|
|
negf r0
|
|
1:
|
|
cmp r0,$',
|
|
beq 1f
|
|
cmp $' ,r0
|
|
beq 1f
|
|
jsr r5,rerr; 110.
|
|
1:
|
|
rts r5
|
|
|
|
atoi:
|
|
clr -(sp)
|
|
cmp r0,$'+
|
|
beq 1f
|
|
cmp r0,$'-
|
|
beq 3f
|
|
jsr r5,fgetcn
|
|
cmp r0,$'+
|
|
beq 1f
|
|
cmp r0,$'-
|
|
bne 2f
|
|
3:
|
|
inc (sp)
|
|
1:
|
|
jsr r5,fgetcn
|
|
2:
|
|
sub $'0,r0
|
|
cmp r0,$'9.
|
|
bhi 2f
|
|
mpy $10.,r3
|
|
add r0,r3
|
|
br 1b
|
|
2:
|
|
add $'0,r0
|
|
tst (sp)+
|
|
beq 1f
|
|
neg r3
|
|
1:
|
|
rts r5
|
|
|
|
fgetcn:
|
|
tst twidth
|
|
bgt 1f
|
|
mov $',,r0
|
|
rts r5
|
|
1:
|
|
jsr r5,fgetc
|
|
dec twidth
|
|
rts r5
|
|
|