111 lines
1.1 KiB
ArmAsm
111 lines
1.1 KiB
ArmAsm
/
|
|
/
|
|
|
|
/ f44 -- formats
|
|
|
|
.globl formts
|
|
.globl strout
|
|
|
|
.globl setln
|
|
.globl getln
|
|
.globl code
|
|
.globl error
|
|
.globl perror
|
|
.globl putc
|
|
.globl xbuf
|
|
|
|
formts:
|
|
jsr r5,setln
|
|
mov $2,r3
|
|
clr xbuf+518. / pick up zero efn formats
|
|
1:
|
|
jsr r5,getln
|
|
br 1f
|
|
cmp r0,$'s
|
|
beq 2f
|
|
cmp r0,$'f
|
|
bne 1b
|
|
mov efno,r0
|
|
jsr r5,code
|
|
<.%d: <\0>; .even
|
|
r0
|
|
mov $line+6,r1
|
|
jsr r5,strout
|
|
mov efno,r0
|
|
neg r0
|
|
br 3f
|
|
2:
|
|
mov efno,r0
|
|
3:
|
|
clr r2
|
|
2:
|
|
cmp r2,r3
|
|
bhis 2f
|
|
cmp r0,xbuf+518.(r2)
|
|
beq 3f
|
|
neg r0
|
|
cmp r0,xbuf+518.(r2)
|
|
beq 3f
|
|
add $2,r2
|
|
neg r0
|
|
br 2b
|
|
3:
|
|
jsr r5,error; 51.
|
|
jsr r5,perror
|
|
2:
|
|
mov r0,xbuf+518.(r3)
|
|
add $2,r3
|
|
br 1b
|
|
1:
|
|
jsr r5,code
|
|
< .even\n>; .even
|
|
jsr r5,setln
|
|
1:
|
|
jsr r5,getln
|
|
br 1f
|
|
cmp r0,$'r
|
|
beq 2f
|
|
cmp r0,$'i
|
|
bne 1b
|
|
mov efno,r0
|
|
neg r0
|
|
br 3f
|
|
2:
|
|
mov efno,r0
|
|
3:
|
|
mov $2,r2 / not zero
|
|
2:
|
|
cmp r2,r3
|
|
bhis 2f
|
|
cmp r0,xbuf+518.(r2)
|
|
beq 1b
|
|
add $2,r2
|
|
br 2b
|
|
2:
|
|
jsr r5,error; 52.
|
|
jsr r5,perror
|
|
br 1b
|
|
1:
|
|
rts r5
|
|
|
|
strout:
|
|
movb (r1)+,r0
|
|
beq 3f
|
|
cmp r0,$'>
|
|
beq 4f
|
|
cmp r0,$'\\
|
|
bne 5f
|
|
4:
|
|
mov r0,-(sp)
|
|
mov $'\\,r0
|
|
jsr r5,putc; obuf
|
|
mov (sp)+,r0
|
|
5:
|
|
jsr r5,putc; obuf
|
|
br strout
|
|
3:
|
|
jsr r5,code
|
|
<\\0\>\n\0>; .even
|
|
rts r5
|
|
|