V6/usr/source/s7/nroff3.s

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

/
/

/ nroff3

skipcont:
/	mov	r2,-(sp)
0:
	jsr	pc,getchar
/	mov	r0,r2
/	jsr	pc,alph2
/	beq	0b
1:
	cmp	$' ,r0
	bne	1f
	jsr	pc,getchar
	br	1b
1:
/	mov	(sp)+,r2
	mov	r0,ch
	tst	nlflg
	rts	pc

rbreak:
	jsr	pc,rbreak1
	clr	totout
	rts	pc
rbreak1:
	clr	trap
	tst	nb
	beq	1f
	rts	pc
1:
	cmp	nl,$-1
	bne	1f
	jsr	pc,newln1
	rts	pc
1:
	tst	nc
	bne	1f
	tst	pendw
	bne	4f
	tst	wch
	beq	4f
	jsr	pc,setnel
	jsr	pc,movword
	nop
1:
	clrb	*linep
	clr	nls
	inc	totout
	tst	lastl
	bmi	1f
	mov	ne,lastl
	br	0f
1:
	mov	ll,lastl
0:
	tst	op
	bne	0f
	mov	po,r0
	jsr	pc,space
0:
	jsr	pc,donum
	mov	un,r0
	jsr	pc,space
	jsr	pc,jfo
	mov	$line,r2
1:
	movb	(r2)+,r0
	cmp	$' ,r0
	bne	2f
	jsr	pc,fill
	tst	nc
	bne	1b
	br	3f
2:
	jsr	pc,putchar
	dec	nc
	bgt	1b
3:
	clr	nwd
	clr	ne
	mov	in,un
	jsr	pc,setnel
	jsr	pc,newline
	cmp	nl,hnl
	ble	0f
	mov	nl,hnl
0:
	tst	trap
	bne	3f
	mov	ls,r2
	dec	r2
	clr	r0
	jsr	pc,findt
	cmp	r1,r2
	bgt	1f
	mov	r1,r0
	jsr	r5,nlines; newline
	br	3f
1:
	mov	r2,r0
	jsr	r5,nlines;newline
3:
/	clr	pendb
	clr	spread
	rts	pc
4:
	jsr	pc,setnel
	rts	pc

jfo:
	tst	jfomod
	beq	1f
	mov	fac,r0
	add	fmq,r0
	beq	1f
	clr	fac
	clr	fmq
	mov	nel,r0
	cmp	jfomod,$1
	bne	2f
	asr	r0
2:
	jsr	pc,space
1:
	rts	pc

donum:
	tst	numbmod
	beq	2f
	dec	nn
	blt	1f
0:
	mov	$3,r0
	add	nms,r0
	add	ni,r0
	jsr	pc,space
	rts	pc
1:
	mov	lnumber,r1
	sxt	r0
	mov	ndf,-(sp)
	dvd	(sp)+,r0
	tst	r1
	beq	1f
	inc	lnumber
	br	0b
1:
	clr	r0
	cmp	lnumber,$100.
	bge	1f
	inc	r0
	cmp	lnumber,$10.
	bge	1f
	inc	r0
1:
	add	ni,r0
	jsr	pc,space
	mov	lnumber,r0
	jsr	r5,decimal; putchar
	mov	nms,r0
	jsr	pc,space
	inc	lnumber
2:
	rts	pc

newline:
	mov	$'\n,r0
	jsr	pc,putchar
	tst	op
	beq	1f
	inc	dnl
	rts	pc
1:
	tst	x.5
	beq	1f
	mov	$032,r0
	jsr	pc,putchar
1:
	inc	nl
	cmp	nl,pl
	blo	3f
newln1:
	clr	nl
	clr	hnl
	clr	ejf
	mov	$ilist,ejl
	tst	donef
	beq	2f
	tst	nc
	bne	1f
	tst	wch
	bne	1f
	jmp	done1
1:
	tst	ndone
	jne	done1
	inc	ndone
	clr	donef
	cmp	frame,$stk
	bne	2f
	inc	nflush
2:
	inc	pn
	tst	npn
	beq	1f
	mov	npn,pn
	clr	npn
1:
	cmp	pn,pto
	ble	2f
	jsr	pc,flush
	jmp	place
2:
	tst	stop
	beq	2f
	cmp	pn,pfrom
	blo	2f
	jsr	pc,flush
/	mov	sp,r1
/	sys	signal; 2; 1f
	mov	ttyid,r0
	sys	read; char; 1
1:
/	mov	r1,sp
/	sys	signal; 2; place
2:
/	cmp	numbmod,$1
/	bne	3f
/	mov	$1,lnumber
3:
	clr	trap
	jsr	pc,findnl
	tst	r1
	beq	4f
	mov	[mlist-nlist](r1),r0
	mov	frame,-(sp)
	jsr	pc,cont1
	cmp	(sp)+,frame
	beq	4f
	inc	trap
/	inc	nlflg
	rts	pc
4:
	tst	ejf
	beq	5f
	cmp	ilistp,ejl
	beq	newline
5:
	rts	pc

findnl:
	mov	$nlist,r1
1:
	mov	(r1),r0
	tst	r0
	bpl	2f
	add	pl,r0
	inc	r0
2:
	cmp	nl,r0
	beq	4f
3:
	tst	(r1)+
	cmp	r1,$nliste
	bne	1b
	clr	r1
	rts	pc
4:
	tst	[mlist-nlist](r1)
	beq	3b
	rts	pc

number:
	jsr	pc,skipcont
number1:
	clr	-(sp)
	mov	r1,-(sp)
	mov	r3,-(sp)
	clr	r3
	clr	-(sp)
1:
	jsr	pc,getchar
	cmp	r0,$'+
	beq	2f
	cmp	r0,$'-
	beq	2f
	mov	r0,ch
1:
	jsr	pc,atoi
	beq	3f
	mov	r0,r3
	inc	6(sp)
	br	3f
2:
	mov	r0,(sp)
	br	1b
3:
	tst	6(sp)
	bne	1f
	mov	$1,r3
1:
	mov	(r5)+,r0
	beq	1f
	mov	(r0),r0
1:
	mov	(sp)+,r1
	cmp	r1,$'-
	bne	1f
	sub	r3,r0
	br	2f
1:
	cmp	r1,$'+
	bne	1f
	add	r3,r0
	br	2f
1:
	mov	r3,r0
2:
	mov	(sp)+,r3
	mov	(sp)+,r1
	tst	(sp)+
	rts	r5

eject:
/	tst	ejf
/	bne	2f
	inc	ejf
	mov	r0,ejl
	tst	trap
	bne	2f
	jsr	pc,newline
2:
	rts	pc

storeline:
	cmp	linep,$line+linsiz
	bhis	1f
	movb	r0,*linep
	inc	linep
	jsr	pc,width
	add	r1,ne
	sub	r1,nel
	inc	nc
	rts	pc
1:
	tst	over
	bne	2f
	jsr	r5,stringfl; linemes
2:
	inc	over
	rts	pc
linemes: <Line overflow\n\0>
	.even

getword:
	clr	-(sp)
	clr	-(sp)
	mov	pendw,r2
	bne	5f
	mov	$word,r2
	clr	over
	clr	wne
	clr	wch
	clr	nhyph
	clr	hypedf
	mov	$word,wordp
1:
	jsr	pc,gettchar
	bmi	4f
	cmpb	r0,$'\n
	bne	0f
	clr	wne
	clr	wch
	br	3f
0:
	cmpb	r0,ohc
	bne	2f
	inc	hypedf
	br	1b
2:
	cmpb	$' ,r0
	bne	2f
	jsr	pc,storeword
	br	1b
2:
4:
	mov	r0,-(sp)
	mov	$' ,r0
/	bis	chbits,r0
	jsr	pc,storeword
	tst	spaceflg
	beq	2f
	jsr	pc,storeword
	clr	spaceflg
2:
	mov	(sp)+,r0
2:
	tst	r0
	bmi	0f
	cmpb	r0,$005
	beq	6f
0:
	inc	2(sp)
	jsr	pc,storeword
	bisb	(sp),-1(r2)	/add in hyphen
	clr	(sp)
5:
	jsr	pc,gettchar
	bmi	1f
	cmpb	r0,ohc
	bne	1f
	inc	hypedf
	jsr	pc,gettchar
	mov	$200,(sp)
1:
	tst	r0
	bmi	2b
	cmpb	$' ,r0
	beq	1f
	cmpb	$'\n,r0
	bne	2b
	cmpb	-1(r2),$'.
	beq	0f
	cmpb	-1(r2),$'!
	beq	0f
	cmpb	-1(r2),$'?
	bne	1f
0:
	inc	spaceflg
1:
	add	$2,4(sp)
	clrb	(r2)+
3:
	clr	pendw
	cmp	(sp)+,(sp)+
	mov	$word,wordp
	jsr	pc,setnel
/	jsr	pc,wordout
	rts	pc
6:
	tst	(sp)+
	tst	(sp)+
	beq	7f
	mov	r2,pendw
0:
	clr	nflush
	jsr	pc,flushi
	rts	pc
7:
	clr	wch
	br	0b

setnel:
	tst	nc
	bne	2f
	mov	$line,linep
	mov	ll,nel
	tst	un1
	blt	1f
	mov	un1,un
	mov	$-1,un1
1:
	sub	un,nel
	clr	ne
	clr	fac
	clr	fmq
2:
	rts	pc

storeword:
	cmp	r2,$eword
	bhis	1f
	jsr	pc,width
	add	r1,wne
	inc	wch
	movb	r0,(r2)+
	rts	pc
1:
	tst	over
	bne	2f
	jsr	r5,stringfl; wordmes
2:
	inc	over
	rts	pc
wordmes: <Word overflow\n\0>
	.even

need:
need2:
	mov	r0,-(sp)
	clr	r0
	jsr	pc,findt
	cmp	(sp)+,r1
	ble	1f
/	mov	ilistp,r0
/	jsr	pc,eject
	mov	r1,r0
	clr	nls
	jsr	r5,nlines;newline
1:
	rts	pc

min:
	tst	r0
	bge	1f
	clr	r0
1:
	rts	pc

getname:
	mov	r1,-(sp)
	mov	r2,-(sp)
	mov	(r5),r1
	mov	$namesiz,r2
1:
	jsr	pc,getchar
	tst	nlflg
	bne	2f
	cmp	r0,$040
	beq	2f
	cmp	r0,$0176
	blos	4f
2:
	mov	r0,ch
3:
	clrb	(r1)+
	mov	(sp)+,r2
	mov	(sp)+,r1
	tstb	*(r5)+
	rts	r5
4:
	movb	r0,(r1)+
	dec	r2
	beq	3b
	br	1b

copyb:
	inc	copyf
	jsr	pc,flushi
	clr	nlflg
	clr	-(sp)
	mov	$1,-(sp)
1:
	jsr	pc,getchar
	bmi	9f
	cmpb	r0,$'\n
	bne	2f
	mov	$1,(sp)
	clr	nlflg
	br	4f
2:
	cmpb	r0,$'.
	bne	9f
	cmp	(sp),$1
	bgt	3f
	blt	9f
	inc	(sp)
	br	4f
3:
	tst	skp
	bne	0f
	jsr	pc,wbfl
	mov	2(sp),r1
	clr	r0
	jsr	pc,wbt
0:
	inc	(sp)
	br	5f
9:
	clr	(sp)
4:
	mov	r1,2(sp)
	tst	skp
	bne	5f
	jsr	pc,wbf
5:
	cmp	(sp),$3
	bne	1b
	cmp	(sp)+,(sp)+
6:
	clr	copyf
	rts	pc

allocmes: <Out of temp file space.\n\0>
	.even

alloc:
	mov	r1,-(sp)
	clr	nextb
	mov	$blist,r1
1:
	tst	(r1)+
	beq	3f
	cmp	r1,$eblist
	blo	1b
2:
	mov	(sp)+,r1
	tst	nextb
	rts	pc
3:
	mov	$-1,-(r1)
	jsr	pc,offset
	cmp	r1,first
	blo	2b
	mov	r1,nextb
	br	2b

free:
	mov	r1,-(sp)
	mov	r0,r1
	beq	2f
1:
	jsr	pc,blistptr
	tst	(r1)
	beq	2f
	cmp	(r1),$-1
	bne	3f
	clr	(r1)
2:
	mov	(sp)+,r1
	rts	pc
3:
	mov	(r1),-(sp)
	clr	(r1)
	mov	(sp)+,r1
	br	1b

offset:
	sub	$blist,r1
	ash	$7,r1
	add	first,r1
	rts	pc

blistptr:
	mov	r0,-(sp)
	clr	r0
	sub	first,r1
	ashc	$-7,r0
	bic	$1,r1
	add	$blist,r1
	mov	(sp)+,r0
	rts	pc

wbt:
	jsr	pc,wbf
	jsr	pc,wbfl
	rts	pc
wbf:
	tst	woff
	bne	0f
	mov	r1,woff
	mov	$wbuf,wbufp
0:
	mov	r0,*wbufp
	add	$2,wbufp
	add	$2,r1
	bit	$377,r1
	bne	2f
	sub	$2,r1
	jsr	pc,blistptr
	cmp	(r1),$-1
	bne	1f
	jsr	pc,wbfl
	jsr	pc,alloc
	bne	0f
	jsr	r5,stringfl;allocmes
	jmp	done
0:
	mov	nextb,(r1)
1:
	mov	(r1),r1
2:
	cmp	wbufp,$wbufe
	bhis	wbfl
	rts	pc
wbfl:
	tst	woff
	beq	0f
	mov	wbufp,9f
	sub	$wbuf,9f
	beq	0f
	mov	ibf,r0
	sys	0;7f
.data
7:	sys	seek; woff:..;0
.text
	mov	ibf,r0
	sys	0;7f
.data
7:	sys	write; wbuf; 9:..
.text
	clr	woff
	mov	$-1,roff
0:
	rts	pc
rbf:
	mov	ip,r1
	jsr	pc,rbf0
	bne	0f
	tst	app
	bne	1f
	jsr	pc,popi
	rts	pc
0:
	jsr	pc,incoff
1:
	mov	r1,ip
	rts	pc

rbf0:
	mov	r1,-(sp)
	bic	$377,r1
	cmp	r1,roff
	beq	1f
	mov	r1,roff
	mov	ibf1,r0
	sys	0;7f
.data
7:	sys	seek; roff:-1 ;0
.text
	mov	ibf1,r0
	sys	read;rbuf;256.
	tst	r0
	bne	1f
	tst	(sp)+
	sez
	rts	pc
1:
	mov	(sp),r0
	bic	$!377,r0
	mov	(sp)+,r1
	mov	rbuf(r0),r0
	rts	pc

incoff:
	add	$2,r1
	bit	$377,r1
	bne	1f
	sub	$2,r1
	jsr	pc,blistptr
	mov	(r1),r1
	beq	5f
	cmp	$-1,r1
	beq	5f
1:
	rts	pc
5:
	jsr	r5,stringfl; badmes
	jmp	place
badmes: <Bad storage allocation\n\0>
	.even

alph:
	movb	(r0),r2
alph2:
	cmp	r2,$'A
	blo	1f
	cmp	r2,$'Z
	blos	2f
	cmp	r2,$'a
	blo	1f
	cmp	r2,$'z
	bhi	1f
2:
	sez
	rts	pc
1:
	clz
	rts	pc
rdsufb:
	mov	r1,-(sp)
	bic	$177,r1
	cmp	r1,sufoff
	beq	2f
	mov	r1,sufoff
	mov	suff,r0
	sys	0;7f
.data
7:	sys	seek; sufoff: -1; 0
.text
	mov	suff,r0
	sys	read; sufbuf; 128.
2:
	mov	(sp),r0
	bic	$!177,r0
	movb	sufbuf(r0),r0
	mov	(sp)+,r1
	rts	pc


atoi:
	jsr	pc,atoi1
	bne	1f
	rts	pc
1:
	mov	r1,-(sp)
	mov	r0,-(sp)
1:
	jsr	pc,getchar
	cmp	r0,$'+
	beq	4f
	cmp	r0,$'-
	beq	5f
2:
	cmp	r0,$'*
	bne	2f
	jsr	pc,atoi1
	beq	3f
	mov	r0,r1
	mpy	(sp),r1
	mov	r1,(sp)
	br	1b
2:
	cmp	r0,$'\/
	bne	2f
	jsr	pc,atoi1
	beq	3f
	mov	r0,-(sp)
	mov	2(sp),r1
	sxt	r0
	dvd	(sp),r0
	mov	r0,2(sp)
	tst	(sp)+
	br	1b
2:
	mov	r0,ch
3:
	mov	(sp)+,r0
	mov	(sp)+,r1
	tst	pc
	rts	pc
4:
	jsr	pc,atoi1
	beq	3b
	add	r0,(sp)
	br	1b
5:
	jsr	pc,atoi1
	beq	3b
	sub	r0,(sp)
	br	1b

atoi1:
	clr	-(sp)
	mov	r3,-(sp)
	clr	-(sp)
	clr	r3
	jsr	pc,getchar
	cmp	r0,$'-
	bne	2f
	inc	(sp)
1:
	jsr	pc,getchar
2:
	sub	$'0,r0
	cmp	r0,$9
	bhi	1f
	inc	4(sp)
	mpy	$10.,r3
	add	r0,r3
	br	1b
1:
	add	$'0,r0
	mov	r0,ch
	bne	0f
	mov	$' ,ch
0:
	tst	(sp)+
	beq	1f
	neg	r3
1:
	mov	r3,r0
	mov	(sp)+,r3
	tst	(sp)+
	rts	pc

findt:
	mov	r0,-(sp)
	mov	$-1,-(sp)
	mov	$nlist,r1
1:
	tst	[mlist-nlist](r1)
	bne	3f
2:
	tst	(r1)+
	cmp	r1,$nliste
	ble	1b
	br	8f
3:
	mov	(r1),r0
	tst	2(sp)
	bmi	6f	/- traps
	beq	4f	/all traps
	tst	(r1)	/+ traps
	bmi	2b
4:
	tst	(r1)
	bpl	5f
	mov	pl,r0
	inc	r0
	add	(r1),r0
5:
	sub	nl,r0
	ble	2b
	cmp	r0,(sp)
	bhis	2b
	mov	r0,(sp)
	br	2b
6:
	tst	(r1)
	bpl	2b
	br	4b
8:
	mov	(sp),r1
	bpl	9f
	mov	pl,r1
	sub	nl,r1
9:
	cmp	(sp)+,(sp)+
	rts	pc

findr:
	mov	$rlist,r1
1:
	tst	(r1)
	beq	2f
	cmp	(r1)+,r0
	beq	3f
	cmp	r1,$rliste
	blos	1b
	tst	numerr
	bne	0f
	jsr	r5,stringfl; 9f
0:
	inc	numerr
/	clr	r1
/	rts	pc
	cmp	numerr,$1
	jeq	edone
	jmp	done2
2:
	mov	r0,(r1)
	br	4f
3:
	tst	-(r1)
4:
	add	$[vlist-rlist],r1
	rts	pc
9: <No more number registers.\n\0>
	.even

setn0:
	clr	-(sp)
	clr	-(sp)
	mov	$1,nform
	jbr	setn1
setn:
	mov	r1,-(sp)
	clr	-(sp)
	clr	temp
	jsr	pc,get1
	cmpb	r0,$'+
	bne	1f
	inc	(sp)
0:
	jsr	pc,get1
1:
	cmpb	r0,$'\\
	bne	1f
3:
	jsr	pc,get1
	jsr	r5,switch;esctab
	cmpb	r0,dolc
	bne	1f
	jsr	pc,seta
	br	0b
1:
	tst	temp
	bne	2f
	bic	$!177,r0
	cmpb	r0,$'(
	bne	1f
	inc	temp
	jsr	pc,get1
2:
	bic	$!177,r0
	cmpb	r0,$'\\
	beq	3b
	mov	r0,-(sp)
	jsr	pc,get1
	bic	$!177,r0
	swab	r0
	bis	(sp)+,r0
1:
	cmpb	2(sp),$372
	beq	5f /exit if called by \k
	clr	nform
	cmp	r0,$".v
	bne	0f
	mov	ls,r0
	br	setn1
0:
	cmp	r0,$".p
	bne	0f
	mov	pl,r0
	br	setn1
0:
	cmp	r0,$".t
	bne	0f
	clr	r0
	jsr	pc,findt
	mov	r1,r0
	br	setn1
0:
	cmp	r0,$".o
	bne	0f
	mov	po,r0
	br	setn1
0:
	cmp	r0,$".l
	bne	0f
	mov	ll,r0
	br	setn1
0:
	cmp	r0,$".i
	bne	0f
	mov	in,r0
	br	setn1
0:
	cmp	r0,$".$
	bne	0f
	mov	*frame,r0
	br	setn1
0:
	cmp	r0,$".x
	bne	0f
	mov	evp,r0
	br	setn1
0:
	cmp	r0,$".c
	bne	0f
	mov	iline,r0
	br	setn1
0:
	cmp	r0,$".h
	bne	0f
	mov	hnl,r0
	br	setn1
0:
	cmp	r0,$".n
	bne	0f
	mov	lastl,r0
	br	setn1
0:
	jsr	pc,findr
	tst	r1
	beq	5f
	tst	(sp)
	beq	1f
	add	[inclist-vlist](r1),(r1)
1:
	mov	(r1),r0
	mov	[flist-vlist](r1),nform
setn1:
	mov	r4,-(sp)
	mov	$cbuf,r4
	tst	r0
	bge	1f
	movb	$'-,(r4)+
	neg	r0
1:
	jsr	r5,fnumb0;wrc
	clrb	(r4)
	mov	(sp)+,r4
	mov	$cbuf,cp
5:
	tst	(sp)+
	mov	(sp)+,r1
	rts	pc

wrc:
	cmp	r4,$stk
	bhis	1f
	movb	r0,(r4)+
1:
	rts	pc

seta:
	jsr	pc,get1
	cmp	r0,$'\\
	bne	1f
	jsr	pc,get1
	jsr	r5,switch;esctab
	cmp	r0,numc
	bne	1f
	clr	r1
	jsr	pc,setn
	br	seta
1:
	sub	$060,r0
	ble	2f
	cmp	r0,$9.
	bgt	2f
	cmp	r0,*frame
	bgt	2f
	asl	r0
	add	frame,r0
	add	$stksiz-2,r0
	mov	(r0),ap
2:
	rts	pc

	stksiz = 16.
pushi:
	clr	r0
	mov	enda,-(sp)
	sub	$stksiz,(sp)
	cmp	nxf,(sp)+
	blo	0f
	jsr	pc,setbrk
	beq	2f
	br	pushi
0:
	mov	nxf,r0
	tst	(r0)+  /nargs
	mov	frame,(r0)+
	mov	ip,(r0)+
	mov	nspace,(r0)+
	clr	nspace
	mov	rchar,(r0)+
	clr	rchar
	mov	pendt,(r0)+
	mov	ap,(r0)+
	mov	ch,(r0)+
	clr	ch
	clr	ap
	clr	pendt
	mov	nxf,frame
	tst	*nxf
	bne	1f
	add	$stksiz,nxf
	br	2f
1:
	mov	r1,nxf
2:
	tst	r0
	rts	pc

popi:
	cmp	frame,$stk
	beq	1f
	mov	frame,r0
	mov	r0,nxf
	clr	(r0)+
	mov	(r0)+,frame
	mov	(r0)+,ip
	mov	(r0)+,nspace
	mov	(r0)+,rchar
	mov	(r0)+,pendt
	mov	(r0)+,ap
	mov	(r0)+,r0
/	cmp	frame,litlev
/	bhis	1f
/	clr	lit
1:
	rts	pc

setbrk:
	tst	noset
	bne	2f
	mov	enda,-(sp)
	add	$516.,(sp)
	bic	$777,(sp)
	mov	(sp)+,0f
	sys	0;7f
.data
7:	sys	break; 0:..
.text
	bes	1f
	mov	0b,enda
	sub	$2,enda
	clz
	rts	pc
1:
	inc	noset
2:
	sez
	rts	pc

collect:
	inc	copyf
	jsr	pc,skipcont
	clr	*nxf
	mov	nxf,r2
	add	$stksiz,r2
	mov	r2,r1
	add	$18.,r1
	mov	r1,-(sp)
	mov	nxf,-(sp)
	cmp	r1,enda
	blo	1f
	jsr	pc,setbrk
	beq	7f
1:
	clr	quote
	cmp	r2,2(sp)
	beq	9f
	jsr	pc,skipcont
	tst	nlflg
	bne	9f
	mov	r1,(r2)+
	jsr	pc,getchar
	cmp	r0,$'"
	bne	3f
	inc	quote
2:
	jsr	pc,getchar
3:
	tst	nlflg
	bne	8f
	tst	quote
	bne	4f
	cmp	r0,$' /
	beq	8f
	br	5f
4:
	cmp	r0,$'"
	bne	5f
	jsr	pc,getchar
	cmpb	r0,$'"
	bne	8f
5:
	movb	r0,(r1)+
	mov	enda,-(sp)
	sub	$4,(sp)
	cmp	r1,(sp)+
	blo	2b
	jsr	pc,setbrk
	beq	6f
	br	2b
8:
	mov	r0,ch
6:
	clrb	(r1)+
	tst	nlflg
	bne	9f
	tst	noset
	beq	1b
9:
	mov	(sp),nxf
	sub	nxf,r2
	sub	$stksiz,r2
	asr	r2
	mov	r2,*nxf
	bit	$1,r1
	beq	7f
	inc	r1
7:
	clr	copyf
	cmp	(sp)+,(sp)+
	rts	pc