Add original unix v6
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ fx9 -- code
|
||||
|
||||
/ jsr r5,code; <string\0>; .even
|
||||
/ arg1
|
||||
/ arg2
|
||||
/ ...
|
||||
/
|
||||
/ args specified by %<c> 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
|
||||
|
||||
Reference in New Issue
Block a user