/ / / 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