V5/usr/source/s4/getc.s

Compare this file to the similar file:
Show the results in this format:

/ getw/getc -- get words/characters from input file
/ fopen -- open a file for use by get(c|w)

indir = 0

.globl	_getc, _getw, _fopen
.globl	cerror
.comm	_errno,2

_fopen:
	mov	r5,-(sp)
	mov	sp,r5
	mov	4(r5),0f
	sys	0; 9f
	.data
9:	sys	open; 0:..; 0
	.text
	bes	badret
	mov	6(r5),r1
	mov	r0,(r1)+
	clr	(r1)+
	clr	r0
	mov	(sp)+,r5
	rts	pc

_getw:
	clr	_errno
	mov	r5,-(sp)
	mov	sp,r5
	mov	4(r5),r1
	sub	$2,2(r1)
	bge	1f
	cmp	2(r1),$-1
	blt	2f
	movb	*4(r1),-(sp)
	jsr	pc,fill
	mov	4(r1),r0
	br	3f
2:
	jsr	pc,fill
	dec	2(r1)
1:
	mov	4(r1),r0
	movb	(r0)+,-(sp)
3:
	movb	(r0)+,1(sp)
	mov	r0,4(r1)
	mov	(sp)+,r0
	mov	(sp)+,r5
	rts	pc

_getc:
	mov	r5,-(sp)
	mov	sp,r5
	mov	4(r5),r1
	dec	2(r1)
	bge	1f
	jsr	pc,fill
1:
	clr	r0
	bisb	*4(r1),r0
	inc	4(r1)
	mov	(sp)+,r5
	rts	pc

fill:
	mov	r1,r0
	add	$6,r0
	mov	r0,0f
	mov	r0,4(r1)
	mov	(r1),r0
	sys	0; 9f
.data
9:	sys	read; 0:..; 512.
.text
	bes	badret
	dec	r0
	bmi	badret
	mov	r0,2(r1)
	rts	pc

badret:
	jmp	cerror