V6/usr/source/s5/putc.s
/ putw/putc -- write words/characters on output file
.globl _putc, _putw, _fflush, _fcreat
.globl cerror
.comm _errno,2
_fcreat:
mov r5,-(sp)
mov sp,r5
mov 4(r5),0f
mov 6(r5),r1
mov pc,(r1) / a putatively illegal file desc.
sys 0; 9f
.data
9: sys creat; 0:..; 666
.text
bes badret
mov r0,(r1)+
clr (r1)+
clr (r1)+
br goodret
_putw:
mov r5,-(sp)
mov sp,r5
mov 6(r5),r1
dec 2(r1)
bge 1f
jsr pc,fl
dec 2(r1)
1:
movb 4(r5),*4(r1)
inc 4(r1)
dec 2(r1)
bge 1f
jsr pc,fl
dec 2(r1)
1:
movb 5(r5),*4(r1)
inc 4(r1)
mov 4(r5),r0
br goodret
_putc:
mov r5,-(sp)
mov sp,r5
mov 6(r5),r1
dec 2(r1)
bge 1f
jsr pc,fl
dec 2(r1)
1:
mov 4(r5),r0
movb r0,*4(r1)
inc 4(r1)
br goodret
_fflush:
mov r5,-(sp)
mov sp,r5
mov 4(r5),r1
jsr pc,fl
br goodret
fl:
mov r1,r0
add $6,r0
mov r0,-(sp)
mov r0,0f
mov 4(r1),0f+2
beq 1f
sub r0,0f+2
mov (r1),r0
sys 0; 9f
.data
9: sys write; 0:..; ..
.text
1:
mov (sp)+,4(r1)
mov $512.,2(r1)
rts pc
badret:
jmp cerror
goodret:
clr _errno
mov (sp)+,r5
rts pc