MiniUnix/usr/source/fort/f4/f44.s
/
/
/ 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