MiniUnix/usr/source/salloc/altch.s

Find at most related files.
including files from this version of Unix.

.globl	alterchar
.globl	plausible
.globl	stats
.globl	allocate, release
.globl	copy
.globl	bufchar, getbuf
.globl	swap
.globl	w, r, a, l
.globl	w1, flag, u1, fixct
/
/	routine to rewrite the character pointer to by
/	read pointer.  The read pointer is advanced.
/	the string is extended if necessary.
/	there is no error return.
/
/	movb	ch,r0
/	mov	...,r1
/	jsr	pc,alterchar
/	mov	r1,...
/
alterchar:
	mov	r2,-(sp)
	mov	r1,-(sp)
	mov	r0,nchar
	jsr	pc,plausible
	inc	stats+8.
1:	cmp	r(r1),l(r1)	/W,L
	blt	3f
	mov	l(r1),r0
	inc	r0
	sub	a(r1),r0	/W-A+1
	jsr	pc,allocate
	mov	(sp),r0
	jsr	pc,copy
	jsr	pc,swap
	jsr	pc,release
	mov	(sp),r1
/
3:	mov	r(r1),r0
	jsr	pc,bufchar
	bec	2f
	jsr	pc,getbuf

2:	movb	nchar,(r0)
	mov	nchar,r0	/to preserve r0 for user
	inc	r(r1)
	mov	$1,w1(r2)
	cmp	r(r1),w(r1)
	ble	3f
	mov	r(r1),w(r1)
3:
	inc	flag
	bne	1f
	jsr	pc,fixct
	br	2f
1:
	mov	flag,u1(r2)
2:
	mov	(sp)+,r1
	mov	(sp)+,r2
	rts	pc
/
nchar:	.=.+2