/ / / io4 -- numeric output conversion qicv: hicv: jsr r5,rerr; 999. sys exit xicv: jsr r5,fgetc rts r5 gocv: mov pc,gflg jsr r5,getarg mov ndig,_ndigit jsr pc,ecvt tst r2 bmi eocv cmp r2,ndig bgt eocv sub r2,ndig sub $4,width jsr r5,focv add $4,width add $4,nspace rts r5 eocv: mov $'e,-(sp) br 1f docv: mov $'d,-(sp) 1: tst gflg bne 1f jsr r5,getarg 1: mov ndig,r1 add $6,r1 add nflg,r1 sub width,r1 bge 2f sub r1,nspace 2: tst nflg beq 2f mov $'-,r0 jsr r5,fputcc 2: mov ndig,r1 mov scale,r0 bgt 2f add r0,r1 br 3f 2: inc r1 3: mov r1,_ndigit jsr pc,ecvt mov r0,r1 mov r2,-(sp) mov scale,r2 sub r2,(sp) tst r2 bgt 2f mov $'0,r0 jsr r5,fputcc br 3f 2: movb (r1)+,r0 dec _ndigit jsr r5,fputcc sob r2,2b 3: mov $'.,r0 jsr r5,fputcc neg r2 ble 2f 3: mov $'0,r0 jsr r5,fputcc sob r2,3b 2: mov _ndigit,r2 ble 2f 3: movb (r1)+,r0 jsr r5,fputcc sob r2,3b 2: mov 2(sp),r0 jsr r5,fputcc mov (sp)+,r1 bge 2f mov $'-,r0 jsr r5,fputcc neg r1 br 3f 2: mov $'+,r0 jsr r5,fputcc 3: clr r0 div $10.,r0 add $'0,r0 jsr r5,fputcc mov r1,r0 add $'0,r0 jsr r5,fputcc tst (sp)+ rts r5 iocv: clr -(sp) clr ndig br 1f focv: mov $1,-(sp) 1: clr -(sp) tst gflg bne 1f jsr r5,getarg tst 2(sp) beq 1f mov scale,(sp) 1: mov ndig,_ndigit add (sp)+,_ndigit jsr pc,fcvt mov r0,r1 tst (sp) beq 1f tst gflg bne 1f add scale,r2 1: mov ndig,r0 add (sp),r0 add nflg,r0 tst r2 ble 1f add r2,r0 br 2f 1: inc r0 2: sub width,r0 bge 1f sub r0,nspace 1: tst nflg beq 1f mov $'-,r0 jsr r5,fputcc 1: tst r2 bgt 1f mov $'0,r0 jsr r5,fputcc br 2f 1: movb (r1)+,r0 jsr r5,fputcc sob r2,1b 2: tst (sp)+ beq 1f mov $'.,r0 jsr r5,fputcc 1: mov ndig,-(sp) ble 1f tst r2 bge 1f neg r2 2: mov $'0,r0 jsr r5,fputcc dec ndig ble 1f sob r2,2b 1: mov ndig,r2 ble 2f 1: movb (r1)+,r0 jsr r5,fputcc sob r2,1b 2: mov (sp)+,ndig rts r5 getarg: clr nflg setd cmpb itype,$'r beq 1f seti cmpb ilen,$4 bne 2f setl 2: cmpb ilen,$1 beq 3f movif *ilval,r0 br 2f 3: movb *ilval,r0 movif r0,fr0 br 2f 1: cmpb ilen,$4 bne 1f movof *ilval,r0 br 2f 1: movf *ilval,r0 2: cfcc bge 1f absf r0 mov $1,nflg 1: rts r5