⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nroff3.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
/// nroff3skipcont:/	mov	r2,-(sp)0:	jsr	pc,getchar/	mov	r0,r2/	jsr	pc,alph2/	beq	0b1:	cmp	$' ,r0	bne	1f	jsr	pc,getchar	br	1b1:/	mov	(sp)+,r2	mov	r0,ch	tst	nlflg	rts	pcrbreak:	jsr	pc,rbreak1	clr	totout	rts	pcrbreak1:	clr	trap	tst	nb	beq	1f	rts	pc1:	cmp	nl,$-1	bne	1f	jsr	pc,newln1	rts	pc1:	tst	nc	bne	1f	tst	pendw	bne	4f	tst	wch	beq	4f	jsr	pc,setnel	jsr	pc,movword	nop1:	clrb	*linep	clr	nls	inc	totout	tst	lastl	bmi	1f	mov	ne,lastl	br	0f1:	mov	ll,lastl0:	tst	op	bne	0f	mov	po,r0	jsr	pc,space0:	jsr	pc,donum	mov	un,r0	jsr	pc,space	jsr	pc,jfo	mov	$line,r21:	movb	(r2)+,r0	cmp	$' ,r0	bne	2f	jsr	pc,fill	tst	nc	bne	1b	br	3f2:	jsr	pc,putchar	dec	nc	bgt	1b3:	clr	nwd	clr	ne	mov	in,un	jsr	pc,setnel	jsr	pc,newline	cmp	nl,hnl	ble	0f	mov	nl,hnl0:	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	3f1:	mov	r2,r0	jsr	r5,nlines;newline3:/	clr	pendb	clr	spread	rts	pc4:	jsr	pc,setnel	rts	pcjfo:	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	r02:	jsr	pc,space1:	rts	pcdonum:	tst	numbmod	beq	2f	dec	nn	blt	1f0:	mov	$3,r0	add	nms,r0	add	ni,r0	jsr	pc,space	rts	pc1:	mov	lnumber,r1	sxt	r0	mov	ndf,-(sp)	dvd	(sp)+,r0	tst	r1	beq	1f	inc	lnumber	br	0b1:	clr	r0	cmp	lnumber,$100.	bge	1f	inc	r0	cmp	lnumber,$10.	bge	1f	inc	r01:	add	ni,r0	jsr	pc,space	mov	lnumber,r0	jsr	r5,decimal; putchar	mov	nms,r0	jsr	pc,space	inc	lnumber2:	rts	pcnewline:	mov	$'\n,r0	jsr	pc,putchar	tst	op	beq	1f	inc	dnl	rts	pc1:	tst	x.5	beq	1f	mov	$032,r0	jsr	pc,putchar1:	inc	nl	cmp	nl,pl	blo	3fnewln1:	clr	nl	clr	hnl	clr	ejf	mov	$ilist,ejl	tst	donef	beq	2f	tst	nc	bne	1f	tst	wch	bne	1f	jmp	done11:	tst	ndone	jne	done1	inc	ndone	clr	donef	cmp	frame,$stk	bne	2f	inc	nflush2:	inc	pn	tst	npn	beq	1f	mov	npn,pn	clr	npn1:	cmp	pn,pto	ble	2f	jsr	pc,flush	jmp	place2:	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; 11:/	mov	r1,sp/	sys	signal; 2; place2:/	cmp	numbmod,$1/	bne	3f/	mov	$1,lnumber3:	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	pc4:	tst	ejf	beq	5f	cmp	ilistp,ejl	beq	newline5:	rts	pcfindnl:	mov	$nlist,r11:	mov	(r1),r0	tst	r0	bpl	2f	add	pl,r0	inc	r02:	cmp	nl,r0	beq	4f3:	tst	(r1)+	cmp	r1,$nliste	bne	1b	clr	r1	rts	pc4:	tst	[mlist-nlist](r1)	beq	3b	rts	pcnumber:	jsr	pc,skipcontnumber1:	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,ch1:	jsr	pc,atoi	beq	3f	mov	r0,r3	inc	6(sp)	br	3f2:	mov	r0,(sp)	br	1b3:	tst	6(sp)	bne	1f	mov	$1,r31:	mov	(r5)+,r0	beq	1f	mov	(r0),r01:	mov	(sp)+,r1	cmp	r1,$'-	bne	1f	sub	r3,r0	br	2f1:	cmp	r1,$'+	bne	1f	add	r3,r0	br	2f1:	mov	r3,r02:	mov	(sp)+,r3	mov	(sp)+,r1	tst	(sp)+	rts	r5eject:/	tst	ejf/	bne	2f	inc	ejf	mov	r0,ejl	tst	trap	bne	2f	jsr	pc,newline2:	rts	pcstoreline:	cmp	linep,$line+linsiz	bhis	1f	movb	r0,*linep	inc	linep	jsr	pc,width	add	r1,ne	sub	r1,nel	inc	nc	rts	pc1:	tst	over	bne	2f	jsr	r5,stringfl; linemes2:	inc	over	rts	pclinemes: <Line overflow\n\0>	.evengetword:	clr	-(sp)	clr	-(sp)	mov	pendw,r2	bne	5f	mov	$word,r2	clr	over	clr	wne	clr	wch	clr	nhyph	clr	hypedf	mov	$word,wordp1:	jsr	pc,gettchar	bmi	4f	cmpb	r0,$'\n	bne	0f	clr	wne	clr	wch	br	3f0:	cmpb	r0,ohc	bne	2f	inc	hypedf	br	1b2:	cmpb	$' ,r0	bne	2f	jsr	pc,storeword	br	1b2:4:	mov	r0,-(sp)	mov	$' ,r0/	bis	chbits,r0	jsr	pc,storeword	tst	spaceflg	beq	2f	jsr	pc,storeword	clr	spaceflg2:	mov	(sp)+,r02:	tst	r0	bmi	0f	cmpb	r0,$005	beq	6f0:	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	1f0:	inc	spaceflg1:	add	$2,4(sp)	clrb	(r2)+3:	clr	pendw	cmp	(sp)+,(sp)+	mov	$word,wordp	jsr	pc,setnel/	jsr	pc,wordout	rts	pc6:	tst	(sp)+	tst	(sp)+	beq	7f	mov	r2,pendw0:	clr	nflush	jsr	pc,flushi	rts	pc7:	clr	wch	br	0bsetnel:	tst	nc	bne	2f	mov	$line,linep	mov	ll,nel	tst	un1	blt	1f	mov	un1,un	mov	$-1,un11:	sub	un,nel	clr	ne	clr	fac	clr	fmq2:	rts	pcstoreword:	cmp	r2,$eword	bhis	1f	jsr	pc,width	add	r1,wne	inc	wch	movb	r0,(r2)+	rts	pc1:	tst	over	bne	2f	jsr	r5,stringfl; wordmes2:	inc	over	rts	pcwordmes: <Word overflow\n\0>	.evenneed: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;newline1:	rts	pcmin:	tst	r0	bge	1f	clr	r01:	rts	pcgetname:	mov	r1,-(sp)	mov	r2,-(sp)	mov	(r5),r1	mov	$namesiz,r21:	jsr	pc,getchar	tst	nlflg	bne	2f	cmp	r0,$040	beq	2f	cmp	r0,$0176	blos	4f2:	mov	r0,ch3:	clrb	(r1)+	mov	(sp)+,r2	mov	(sp)+,r1	tstb	*(r5)+	rts	r54:	movb	r0,(r1)+	dec	r2	beq	3b	br	1bcopyb:	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	4f2:	cmpb	r0,$'.	bne	9f	cmp	(sp),$1	bgt	3f	blt	9f	inc	(sp)	br	4f3:	tst	skp	bne	0f	jsr	pc,wbfl	mov	2(sp),r1	clr	r0	jsr	pc,wbt0:	inc	(sp)	br	5f9:	clr	(sp)4:	mov	r1,2(sp)	tst	skp	bne	5f	jsr	pc,wbf5:	cmp	(sp),$3	bne	1b	cmp	(sp)+,(sp)+6:	clr	copyf	rts	pcallocmes: <Out of temp file space.\n\0>	.evenalloc:	mov	r1,-(sp)	clr	nextb	mov	$blist,r11:	tst	(r1)+	beq	3f	cmp	r1,$eblist	blo	1b2:	mov	(sp)+,r1	tst	nextb	rts	pc3:	mov	$-1,-(r1)	jsr	pc,offset	cmp	r1,first	blo	2b	mov	r1,nextb	br	2bfree:	mov	r1,-(sp)	mov	r0,r1	beq	2f1:	jsr	pc,blistptr	tst	(r1)	beq	2f	cmp	(r1),$-1	bne	3f	clr	(r1)2:	mov	(sp)+,r1	rts	pc3:	mov	(r1),-(sp)	clr	(r1)	mov	(sp)+,r1	br	1boffset:	sub	$blist,r1	ash	$7,r1	add	first,r1	rts	pcblistptr:	mov	r0,-(sp)	clr	r0	sub	first,r1	ashc	$-7,r0	bic	$1,r1	add	$blist,r1	mov	(sp)+,r0	rts	pcwbt:	jsr	pc,wbf	jsr	pc,wbfl	rts	pcwbf:	tst	woff	bne	0f	mov	r1,woff	mov	$wbuf,wbufp0:	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	done0:	mov	nextb,(r1)1:	mov	(r1),r12:	cmp	wbufp,$wbufe	bhis	wbfl	rts	pcwbfl:	tst	woff	beq	0f	mov	wbufp,9f	sub	$wbuf,9f	beq	0f	mov	ibf,r0	sys	0;7f.data7:	sys	seek; woff:..;0.text	mov	ibf,r0	sys	0;7f.data7:	sys	write; wbuf; 9:...text	clr	woff	mov	$-1,roff0:	rts	pcrbf:	mov	ip,r1	jsr	pc,rbf0	bne	0f	tst	app	bne	1f	jsr	pc,popi	rts	pc0:	jsr	pc,incoff1:	mov	r1,ip	rts	pcrbf0:	mov	r1,-(sp)	bic	$377,r1	cmp	r1,roff	beq	1f	mov	r1,roff	mov	ibf1,r0	sys	0;7f.data7:	sys	seek; roff:-1 ;0.text	mov	ibf1,r0	sys	read;rbuf;256.	tst	r0	bne	1f	tst	(sp)+	sez	rts	pc1:	mov	(sp),r0	bic	$!377,r0	mov	(sp)+,r1	mov	rbuf(r0),r0	rts	pcincoff:	add	$2,r1	bit	$377,r1	bne	1f	sub	$2,r1	jsr	pc,blistptr	mov	(r1),r1	beq	5f	cmp	$-1,r1	beq	5f1:	rts	pc5:	jsr	r5,stringfl; badmes	jmp	placebadmes: <Bad storage allocation\n\0>	.evenalph:	movb	(r0),r2alph2:	cmp	r2,$'A	blo	1f	cmp	r2,$'Z	blos	2f	cmp	r2,$'a	blo	1f	cmp	r2,$'z	bhi	1f2:	sez	rts	pc1:	clz	rts	pcrdsufb:	mov	r1,-(sp)	bic	$177,r1	cmp	r1,sufoff	beq	2f	mov	r1,sufoff	mov	suff,r0	sys	0;7f.data7:	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	pcatoi:	jsr	pc,atoi1	bne	1f	rts	pc1:	mov	r1,-(sp)	mov	r0,-(sp)1:	jsr	pc,getchar	cmp	r0,$'+	beq	4f	cmp	r0,$'-	beq	5f2:	cmp	r0,$'*	bne	2f	jsr	pc,atoi1	beq	3f	mov	r0,r1	mpy	(sp),r1	mov	r1,(sp)	br	1b2:	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	1b2:	mov	r0,ch3:	mov	(sp)+,r0	mov	(sp)+,r1	tst	pc	rts	pc4:	jsr	pc,atoi1	beq	3b	add	r0,(sp)	br	1b5:	jsr	pc,atoi1	beq	3b	sub	r0,(sp)	br	1batoi1:	clr	-(sp)	mov	r3,-(sp)	clr	-(sp)	clr	r3	jsr	pc,getchar	cmp	r0,$'-	bne	2f	inc	(sp)1:	jsr	pc,getchar2:	sub	$'0,r0	cmp	r0,$9	bhi	1f	inc	4(sp)	mpy	$10.,r3	add	r0,r3	br	1b1:	add	$'0,r0	mov	r0,ch	bne	0f	mov	$' ,ch0:	tst	(sp)+	beq	1f	neg	r31:	mov	r3,r0	mov	(sp)+,r3	tst	(sp)+	rts	pcfindt:	mov	r0,-(sp)	mov	$-1,-(sp)	mov	$nlist,r11:	tst	[mlist-nlist](r1)	bne	3f2:	tst	(r1)+	cmp	r1,$nliste	ble	1b	br	8f3:	mov	(r1),r0	tst	2(sp)	bmi	6f	/- traps	beq	4f	/all traps	tst	(r1)	/+ traps	bmi	2b4:	tst	(r1)	bpl	5f	mov	pl,r0	inc	r0	add	(r1),r05:	sub	nl,r0	ble	2b	cmp	r0,(sp)	bhis	2b	mov	r0,(sp)	br	2b6:	tst	(r1)	bpl	2b	br	4b8:	mov	(sp),r1	bpl	9f	mov	pl,r1	sub	nl,r19:	cmp	(sp)+,(sp)+	rts	pcfindr:	mov	$rlist,r11:	tst	(r1)	beq	2f	cmp	(r1)+,r0	beq	3f	cmp	r1,$rliste	blos	1b	tst	numerr	bne	0f	jsr	r5,stringfl; 9f0:	inc	numerr/	clr	r1/	rts	pc	cmp	numerr,$1	jeq	edone	jmp	done22:	mov	r0,(r1)	br	4f3:	tst	-(r1)4:	add	$[vlist-rlist],r1	rts	pc9: <No more number registers.\n\0>	.evensetn0:	clr	-(sp)	clr	-(sp)	mov	$1,nform	jbr	setn1setn:	mov	r1,-(sp)	clr	-(sp)	clr	temp	jsr	pc,get1	cmpb	r0,$'+	bne	1f	inc	(sp)0:	jsr	pc,get11:	cmpb	r0,$'\\	bne	1f3:	jsr	pc,get1	jsr	r5,switch;esctab	cmpb	r0,dolc	bne	1f	jsr	pc,seta	br	0b1:	tst	temp	bne	2f	bic	$!177,r0	cmpb	r0,$'(	bne	1f	inc	temp	jsr	pc,get12:	bic	$!177,r0	cmpb	r0,$'\\	beq	3b	mov	r0,-(sp)	jsr	pc,get1	bic	$!177,r0	swab	r0	bis	(sp)+,r01:	cmpb	2(sp),$372	beq	5f /exit if called by \k	clr	nform	cmp	r0,$".v	bne	0f	mov	ls,r0	br	setn10:	cmp	r0,$".p	bne	0f	mov	pl,r0	br	setn10:	cmp	r0,$".t	bne	0f	clr	r0	jsr	pc,findt	mov	r1,r0	br	setn10:	cmp	r0,$".o	bne	0f	mov	po,r0	br	setn10:	cmp	r0,$".l	bne	0f	mov	ll,r0	br	setn10:	cmp	r0,$".i	bne	0f	mov	in,r0	br	setn10:	cmp	r0,$".$	bne	0f	mov	*frame,r0	br	setn10:	cmp	r0,$".x	bne	0f	mov	evp,r0	br	setn10:	cmp	r0,$".c	bne	0f	mov	iline,r0	br	setn10:	cmp	r0,$".h	bne	0f	mov	hnl,r0	br	setn10:	cmp	r0,$".n	bne	0f	mov	lastl,r0	br	setn10:	jsr	pc,findr	tst	r1	beq	5f	tst	(sp)	beq	1f	add	[inclist-vlist](r1),(r1)1:	mov	(r1),r0	mov	[flist-vlist](r1),nformsetn1:	mov	r4,-(sp)	mov	$cbuf,r4	tst	r0	bge	1f	movb	$'-,(r4)+	neg	r01:	jsr	r5,fnumb0;wrc	clrb	(r4)	mov	(sp)+,r4	mov	$cbuf,cp5:	tst	(sp)+	mov	(sp)+,r1	rts	pcwrc:	cmp	r4,$stk	bhis	1f	movb	r0,(r4)+1:	rts	pcseta:	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	seta1:	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),ap2:	rts	pc	stksiz = 16.pushi:	clr	r0	mov	enda,-(sp)	sub	$stksiz,(sp)	cmp	nxf,(sp)+	blo	0f	jsr	pc,setbrk	beq	2f	br	pushi0:	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	2f1:	mov	r1,nxf2:	tst	r0	rts	pcpopi:	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	lit1:	rts	pcsetbrk:	tst	noset	bne	2f	mov	enda,-(sp)	add	$516.,(sp)	bic	$777,(sp)	mov	(sp)+,0f	sys	0;7f.data7:	sys	break; 0:...text	bes	1f	mov	0b,enda	sub	$2,enda	clz	rts	pc1:	inc	noset2:	sez	rts	pccollect:	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	7f1:	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	quote2:	jsr	pc,getchar3:	tst	nlflg	bne	8f	tst	quote	bne	4f	cmp	r0,$' /	beq	8f	br	5f4:	cmp	r0,$'"	bne	5f	jsr	pc,getchar	cmpb	r0,$'"	bne	8f5:	movb	r0,(r1)+	mov	enda,-(sp)	sub	$4,(sp)	cmp	r1,(sp)+	blo	2b	jsr	pc,setbrk	beq	6f	br	2b8:	mov	r0,ch6:	clrb	(r1)+	tst	nlflg	bne	9f	tst	noset	beq	1b9:	mov	(sp),nxf	sub	nxf,r2	sub	$stksiz,r2	asr	r2	mov	r2,*nxf	bit	$1,r1	beq	7f	inc	r17:	clr	copyf	cmp	(sp)+,(sp)+	rts	pc

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -