/ / / fx9 -- code / jsr r5,code; ; .even / arg1 / arg2 / ... / / args specified by % in string. / %s: string / %d: decimal number / %o: octal number / %c: character / / args are addresses / or registers r0-r4 .globl code .globl putc .globl getname code: mov r4,-(sp) mov r3,-(sp) mov r2,-(sp) mov r1,-(sp) mov r0,-(sp) mov r5,r4 1: tstb (r5)+ bne 1b inc r5 bic $1,r5 1: movb (r4)+,r0 beq 1f cmp r0,$'% beq 2f jsr r5,putc; obuf br 1b 2: movb (r4)+,r0 beq 1f cmp r0,$'s beq cstr cmp r0,$'c beq cchr cmp r0,$'d beq cdec cmp r0,$'o beq coct cmp r0,$'n beq cnam jsr r5,putc; obuf br 1b cnam: jsr pc,cget mov r1,r3 jsr r5,getname mov $symbuf,r1 br 2f cstr: jsr pc,cget 2: movb (r1)+,r0 beq 1b cmp r0,$'\n beq 2b jsr r5,putc; obuf br 2b cchr: jsr pc,cget mov r1,r0 jsr r5,putc; obuf mov r1,r0 clrb r0 swab r0 beq 1b jsr r5,putc; obuf br 1b coct: jsr pc,cget mov $8.,r2 br 2f cdec: jsr pc,cget mov $10.,r2 2: jsr pc,2f br 1b 2: clr r0 dvd r2,r0 mov r1,-(sp) mov r0,r1 beq 2f jsr pc,2b 2: mov (sp)+,r0 add $'0,r0 jsr r5,putc; obuf rts pc 1: mov (sp)+,r0 mov (sp)+,r1 mov (sp)+,r2 mov (sp)+,r3 mov (sp)+,r4 rts r5 cget: mov (r5)+,r1 cmp r1,$4 blos 1f rts pc 1: asl r1 add $2,r1 add sp,r1 mov (r1),r1 rts pc