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

📄 nroff2.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
/// nroff2casead:	inc	ad	jsr	pc,skipcont	tst	nlflg	bne	1f	jsr	pc,getchar	cmp	r0,$'r	/right adj, left ragged	bne	0f	mov	$2,jfomod	br	1f0:	cmp	r0,$'l	/left adj, right ragged	bne	0f	clr	jfomod	clr	ad	br	1f0:	cmp	r0,$'c	/centered adj	bne	0f	mov	$1,jfomod	br	1f0:	clr	jfomod	/left and right adj	inc	ad1:	rts	pccasebr:	jsr	pc,rbreak	rts	pccasecc:	clr	-(sp)	br	0fcasec2:	mov	pc,-(sp)0:	jsr	pc,skipcont	jsr	pc,getchar	cmp	r0,$'\n	beq	2f	tst	(sp)	bne	1f	mov	r0,cc	br	2f1:	mov	r0,c22:	mov	r0,ch	tst	(sp)+	rts	pccasece:	jsr	r5,number; 0	jsr	pc,min	mov	r0,-(sp)	jsr	pc,rbreak	mov	(sp)+,ce	rts	pccasefi:	jsr	pc,rbreak	inc	fi	rts	pccasein:	jsr	pc,skipcont	tst	nlflg	beq	1f	mov	in1,r0	br	2f1:	jsr	r5,number1; in	jsr	pc,min2:	mov	r0,-(sp)	jsr	pc,rbreak	mov	in,in1	mov	(sp)+,in	tst	nc	bne	1f	mov	in,un	jsr	pc,setnel1:	rts	pccaseli:	jsr	r5,number; 0	jsr	pc,min	mov	r0,lit	mov	frame,litlev	cmp	nl,$-1	bne	0f	jsr	pc,newln10:	rts	pccasell:	jsr	pc,skipcont	tst	nlflg	beq	1f	mov	ll1,r0	br	2f1:	jsr	r5,number1; ll	jsr	pc,min2:	mov	ll,ll1	mov	r0,ll2:	jsr	pc,setnel	rts	pccasels:	jsr	pc,skipcont	tst	nlflg	beq	1f	mov	ls1,r0	br	2f1:	jsr	r5,number1; ls	dec	r0	jsr	pc,min	inc	r02:	mov	r0,-(sp)/	jsr	pc,rbreak	mov	ls,ls1	mov	(sp)+,ls	rts	pccasens:	inc	nls	rts	pccasers:	clr	nls	rts	pccasena:	clr	ad	rts	pccasene:	jsr	r5,number; 0	jsr	pc,min	jsr	pc,need2	rts	pccasenf:	jsr	pc,rbreak	clr	fi	rts	pccasepn:	jsr	pc,skipcont	bne	1f	jsr	r5,number1; pn	jsr	pc,min	mov	r0,npn1:	rts	pccasebp:	mov	ilistp,-(sp)	clr	-(sp)	jsr	pc,skipcont	bne	1f	jsr	r5,number1; pn	jsr	pc,min	mov	r0,(sp)1:	jsr	pc,rbreak	mov	(sp)+,r0	beq	0f	mov	r0,npn0:	bne	2f	tst	nls	bne	3f2:	mov	(sp),r0	jsr	pc,eject3:	tst	(sp)+	rts	pccasepl:	jsr	pc,skipcont	tst	nlflg	bne	1f	jsr	r5,number1; pl	mov	r0,pl	rts	pc1:	mov	$66.,pl	rts	pccasesp:	mov	pc,-(sp)	br	0fcasesp1:	clr	-(sp)0:	mov	r0,-(sp)	tst	nb	bne	0f	jsr	pc,rbreak0:	tst	nls	bne	2f	clr	r0	jsr	pc,findt	tst	nb	bne	1f	tst	trap	bne	2f1:	tst	2(sp)	beq	1f	jsr	r5,number;0	mov	r0,(sp)1:	cmp	r1,(sp)	bge	1f	mov	r1,(sp)1:	mov	(sp),r0	ble	3f	jsr	r5,nlines; newline2:	cmp	(sp)+,(sp)+	rts	pc3:	add	nl,r0	cmp	(sp)+,(sp)+	br	casert1casert:	mov	markline,r2	jsr	pc,skipcont	bne	0f	jsr	r5,number1;nlcasert1:	mov	r0,r20:	tst	r2	blt	2f	cmp	r2,nl	bge	2f	mov	nl,r1	mov	r2,nl	sub	r2,r1	mov	r1,r21:	mov	$036,r0	jsr	pc,putchar	dec	r2	bgt	1b	mov	$015,r0	jsr	pc,putchar2:	rts	pccasesv:	clr	r0	jsr	pc,findt	jsr	r5,number; 0	cmp	r1,r0	bge	1f	mov	r0,sv	rts	pc1:	jsr	r5,nlines; newline	rts	pccaseos:	tst	sv	beq	2f	clr	r0	jsr	pc,findt	cmp	r1,sv	bge	1f	rts	pc1:	mov	sv,r0	clr	sv	jsr	r5,nlines; newline2:	rts	pccasetr:	jsr	pc,skipcont1:	jsr	pc,getchar	cmp	r0,$'\n	beq	1f	mov	r0,r1	jsr	pc,getchar	cmp	r0,$'\n	bne	2f	mov	$' ,r02:	movb	r0,trtab(r1)	br	1b1:	rts	pccaseta:	clr	-(sp)	mov	$tabtab,r11:	jsr	pc,getchar	tst	nlflg	bne	1f	cmpb	r0,$'+	bne	0f	inc	(sp)	br	2f0:	cmpb	r0,$'-	beq	2f	cmpb	r0,$'0	blo	1b	cmpb	r0,$'9	bhi	1b2:	mov	r0,ch	jsr	pc,atoi	beq	1f	jsr	pc,min	dec	r0	ble	1f	cmp	r1,$tabtab	beq	0f	tst	(sp)	bne	3f	cmp	r0,-2(r1)	bgt	0f3:	add	-2(r1),r00:	clr	(sp)	mov	r0,(r1)+	cmp	r1,$etabtab	blo	1b	tst	-(r1)1:	tst	(sp)+	clr	(r1)	rts	pccaseti:	jsr	r5,number; in	jsr	pc,min	mov	r0,-(sp)	jsr	pc,rbreak	mov	(sp)+,un1	jsr	pc,setnel	rts	pccaseul:	jsr	r5,number; 0	jsr	pc,min	mov	r0,ul	rts	pccasetl:	jsr	pc,header	rts	pccaselt:	jsr	pc,skipcont	tst	nlflg	beq	1f	mov	llh1,r0	br	2f1:	jsr	r5,number1; llh	jsr	pc,min2:	mov	llh,llh1	mov	r0,llh	rts	pccasehc:	jsr	pc,skipcont	jsr	pc,getchar	cmp	r0,$'\n	bne	1f	movb	$200,r01:	mov	r0,ohc	rts	pccasetc:	jsr	pc,skipcont	jsr	pc,getchar	cmp	r0,$'\n	bne	1f	mov	$014,r01:	mov	r0,tabc	rts	pccaselc:	jsr	pc,skipcont	jsr	pc,getchar	cmp	r0,$'\n	bne	1f	mov	$'.,r01:	mov	r0,dotc	rts	pccasenc:	jsr	pc,skipcont	jsr	pc,getchar	cmp	r0,$'\n	bne	1f	mov	$034,r01:	mov	r0,numc	rts	pccasehy:	mov	$1,hyf	jsr	pc,skipcont	bne	1f	jsr	pc,atoi	beq	1f	jsr	pc,min	mov	r0,hyf1:	rts	pccasenh:	clr	hyf	rts	pccasenp:	jsr	pc,skipcont	tst	nlflg	beq	2f	clr	ni	mov	$1,nms	mov	$1,ndf	rts	pccasenm:	clr	numbmod	clr	nn	jsr	pc,skipcont	tst	nlflg	beq	1f	rts	pc1:	inc	numbmod	jsr	r5,number1; lnumber	jsr	pc,min	mov	r0,lnumber	jsr	pc,skipcont2:	jsr	r5,3f; ndf	tst	ndf	bne	1f	inc	ndf1:	jsr	pc,skipcont	jsr	r5,3f; nms	jsr	pc,skipcont	jsr	r5,3f; ni	rts	pc3:	tst	nlflg	bne	4f	jsr	pc,atoi	beq	4f	jsr	pc,min	mov	r0,*(r5)4:	tst	(r5)+	rts	r5casenn:	jsr	r5,number; 0	jsr	pc,min	mov	r0,nn	rts	pccasear:	clr	ro	rts	pccaseroc:	mov	$2,ro	rts	pccasero:	mov	$1,ro	rts	pccasenx:	jsr	pc,skipcont	jsr	r5,getname; nextf	inc	nx	jsr	pc,nextfile	inc	nlflg	clr	ip	clr	ap	clr	nspace	clr	pendt	mov	$ilist,ilistp	rts	pccasepo:	jsr	pc,skipcont	tst	nlflg	beq	1f	mov	po1,r0	br	2f1:	jsr	r5,number1; po	jsr	pc,min2:	mov	r0,-(sp)/	jsr	pc,rbreak	mov	po,po1	mov	(sp)+,po	rts	pccaseig:	inc	skp	jsr	pc,copyb	rts	pccasern:/	inc	lgf	jsr	pc,skipcont	jsr	r5,getname;bname	beq	2f	jsr	pc,findmn	beq	2f	mov	oldptr,-(sp)/	inc	lgf	jsr	pc,skipcont	jsr	r5,getname;bname	beq	1f	jsr	pc,findmn	jsr	pc,clrold	mov	(sp),r1	tst	-(r1)	mov	(r1),(sp)	bic	$77777,(sp)	mov	bname,(r1)	bis	(sp),(r1)1:	tst	(sp)+2:	rts	pccaserm:/	inc	lgf	jsr	pc,skipcont	jsr	r5,getname;bname	beq	1f	jsr	pc,findmn	jsr	pc,clrold1:	rts	pccaseas:	inc	appcaseds:	inc	ds	br	casedecaseam:	inc	appcasede:	tst	op	beq	1f	jsr	pc,wbfl1:/	inc	lgf	jsr	pc,skipcont	jsr	r5,getname; bname	bne	1f	clr	r1	br	6f1:	clr	skp	jsr	pc,finds	beq	7f	tst	ds	beq	0f	tst	skp	bne	5f	jsr	pc,copys	br	5f0:	jsr	pc,copyb5:	jsr	pc,wbfl	jsr	pc,clrold	tst	newptr	beq	0f	bis	$100000,bname	mov	bname,*newptr0:	mov	r1,-(sp)	mov	apptr,r1	beq	0f	mov	$004,r0	jsr	pc,wbt0:	mov	(sp)+,r16:	clr	app	clr	ds	rts	pc7:	tst	macerr	bne	0f	jsr	r5,stringfl; 8f0:	inc	macerr	cmp	macerr,$1	jeq	edone	jmp	done2/	br	6b8: <Too many string/macro names.\n\0>	.evenfindmn:	mov	$contab,r11:	mov	(r1)+,r0	bic	$100000,r0	cmp	bname,r0	beq	2f	cmp	(r1)+,$-1	bne	1b	clr	r12:	mov	r1,oldptr	rts	pcfinds:	jsr	pc,findmn	clr	newptr	clr	apptr	clr	aplnk	tst	app	beq	0f	tst	oldptr	bne	5f0:	mov	$contab,r11:	tst	(r1)+	beq	2f	cmp	(r1)+,$-1	bne	1b1:	inc	skp	clr	r1	rts	pc2:	jsr	pc,alloc	beq	1b	tst	oldptr	bne	3f4:	tst	-(r1)	bis	$100000,bname	mov	bname,(r1)+	mov	nextb,(r1)	br	6f3:	tst	diflg	bne	4b	mov	nextb,(r1)	tst	-(r1)	mov	r1,newptr	br	6f5:	tst	-(r1)	bmi	1f	clr	app	br	0b1:	tst	(r1)+	clr	oldptr	mov	ip,-(sp)	mov	(r1),ip1:	jsr	pc,rbf	tst	r0	bne	1b	mov	ip,r1	mov	r1,apptr	tst	diflg	bne	0f	jsr	pc,incoff0:	mov	r1,nextb	mov	(sp)+,ip6:	clr	app	mov	nextb,r1	rts	pcclrold:	mov	oldptr,r0	beq	1f	mov	(r0),-(sp)	clr	(r0)	tst	-(r0)	bmi	0f	clr	(sp)0:	clr	(r0)	mov	(sp)+,r0	beq	1f	jsr	pc,free1:	rts	pccaseda:	inc	appcasedi:/	inc	lgf	clr	ditf	jsr	pc,skipcont	jsr	r5,getname; bname	beq	1f	tst	op	bne	3f	inc	diflg	jsr	pc,finds	beq	3f	mov	r1,op	jsr	pc,clrold/	mov	blss,sblss/	mov	alss,salss/	clr	blss/	clr	alss	clr	dnl	br	3f1:	tst	op	beq	3f	clr	r0	jsr	pc,pchar1	jsr	pc,wbfl/	mov	sblss,blss/	mov	salss,alss	clr	op3:	clr	app	clr	diflg	rts	pccaseev:	jsr	pc,skipcont	tst	nlflg	beq	2f	cmp	evp,$elist	ble	5f1:	sub	$2,evp	mov	*evp,-(sp)	br	3f2:	jsr	pc,atoi	beq	6f	cmp	r0,nev	bgt	6f	tst	r0	blt	6f	cmp	evp,$eliste	bgt	6f	mov	r0,-(sp)	mov	ev,*evp	add	$2,evp3:	cmp	(sp),ev	beq	4f	mov	$1024.,r3	mpy	ev,r3	mov	r3,8f	mov	$1024.,r3	mpy	(sp),r3	mov	r3,9f	mov	ibf,r0	sys	0;7f.data7:	sys	seek; 8:.. ; 0.text	mov	ibf,r0	sys	write; block; 1024.	mov	ibf1,r0	sys	0;7f.data7:	sys	seek; 9:.. ; 0.text	mov	blocksize,0f	mov	ibf1,r0	sys	0;7f.data7:	sys	read; block; 0:...text4:	mov	(sp)+,ev5:	rts	pc6:	jsr	r5,string;9f	rts	pc9: <Cannot do "ev".\n\0>.evencaseif:	clr	-(sp)	jsr	pc,skipcont	jsr	pc,getchar	cmp	r0,$'!	bne	1f	inc	(sp)	br	2f1:	mov	r0,ch2:	jsr	pc,atoi	beq	1f	tst	r0	bgt	5f /true	br	6f /false1:	jsr	pc,getchar	cmp	r0,$'e	bne	1f	bit	$1,pn	bne	6f	br	5f1:	cmp	r0,$'o	bne	1f	bit	$1,pn	beq	6f	br	5f1:	cmpb	r0,$'n	beq	5f1:	tst	(sp)+	rts	pc5:	tst	(sp)	bne	1b2:	clr	column	jsr	pc,getchar	bmi	0f	cmpb	r0,$' /	beq	2b0:	mov	r0,ch	inc	nflush	br	1b6:	tst	(sp)	beq	1b	br	2bcasewh:	clr	-(sp)	jsr	pc,skipcont	jsr	pc,getchar	cmp	r0,$'x	bne	1f	mov	$-1,r0	jsr	pc,findt	add	nl,r1	sub	dnl,r1	mov	r1,r0	br	2f1:	mov	r0,ch	jsr	pc,atoi	beq	4f2:	mov	r0,(sp)	jsr	pc,skipcont	jsr	r5,getname; bname	tstb	bname	bne	1f	clr	bname1:	mov	(sp),r0	jsr	pc,findn	tst	r1	beq	1f	mov	bname,[mlist-nlist](r1)	br	4f1:	mov	$mlist,r12:	tst	(r1)+	beq	3f	cmp	r1,$mliste	bgt	4f	br	2b3:	mov	bname,-2(r1)	mov	(sp),[nlist-mlist-2](r1)4:	tst	(sp)+	rts	pcfindn:	mov	$nlist,r11:	cmp	(r1),r0	beq	3f2:	tst	(r1)+	cmp	r1,$nliste	bne	1b	clr	r1	rts	pc3:	tst	[mlist-nlist](r1)	beq	2b	rts	pcfindm:	mov	$mlist,r11:	cmp	(r1),bname	beq	3f2:	tst	(r1)+	cmp	r1,$mliste	bne	1b	clr	r1	rts	pc3:	sub	$[mlist-nlist],r1	rts	pccasech:	clr	-(sp)	jsr	pc,skipcont	jsr	pc,atoi	beq	2f	jsr	pc,findn	br	3f2:	jsr	r5,getname; bname	tstb	bname	beq	1f	jsr	pc,findm3:	tst	r1	beq	1f	mov	r1,(sp)	jsr	pc,skipcont	jsr	pc,atoi	beq	2f	mov	r0,*(sp)1:	tst	(sp)+	rts	pc2:	jsr	pc,getchar	tst	nlflg	bne	1b	mov	*(sp),r0	beq	1b	bgt	0f	add	pl,r0	inc	r00:	sub	nl,r0	ble	1b	dec	r0	ble	1b	cmp	dnl,r0	bge	0f	mov	dnl,r00:	sub	r0,*(sp)	br	1bcasemk:	jsr	pc,skipcont	beq	1f	mov	nl,markline	rts	pc1:	jsr	r5,getname; bname	mov	bname,r0	beq	2f	jsr	pc,findr	beq	2f	mov	nl,(r1)2:	rts	pccasetm:	inc	copyf	jsr	pc,skipcont	mov	$bname,r11:	jsr	pc,getchar	bmi	1b	movb	r0,(r1)+	tst	nlflg	bne	2f	cmp	r1,$ename	blo	1b	movb	$'\n,-1(r1)2:	clrb	(r1)	jsr	r5,stringfl; bname	clr	copyf	rts	pccaserd:	jsr	pc,skipcont	jsr	r5,getname; bname	tst	iflg	bne	1f	tst	quiet	bne	2f	tstb	bname	beq	5f	jsr	r5,string; bname	jsr	r5,string; 3f1:	jsr	pc,collect	inc	tty	jsr	pc,pushi	beq	6f	mov	$-1,ip	rts	pc2:	bic	$10,ttym	mov	ttyid,r0	sys	stty; ttys	jsr	pc,flush5:	jsr	r5,string;4f	br	1b6:	jmp	rdtty23:	<: \0>4:	<\0> /bell	.evencaseaf:	jsr	pc,skipcont	bne	3f	jsr	r5,getname;bname	mov	bname,r0	beq	3f	jsr	pc,findr	jsr	pc,skipcont	jsr	pc,getchar	mov	$4f,r21:	cmpb	r0,(r2)+	beq	2f	inc	r2	tstb	(r2)	bne	1b2:	movb	(r2),[flist-vlist](r1)3:	rts	pc4:.byte '1,1.byte 'i,2.byte 'I,3.byte 'a,4.byte 'A,5.byte 0,0casenr:	jsr	pc,skipcont	bne	5f	jsr	r5,getname; bname	mov	bname,r0	jsr	pc,findr	mov	r1,0f	beq	5f	jsr	pc,skipcont	bne	5f	jmp	7f.data7:	jsr	r5,number1; 0:..	jmp	8f.text8:	bne	1f	clr	r01:	mov	r0,*0b	jsr	pc,skipcont	bne	5f	jsr	pc,atoi	beq	5f	mov	r0,[inclist-vlist](r1)5:	rts	pccasefl:	jsr	pc,rbreak	jsr	pc,flush	rts	pccasexh:/	tst	x.5/	bne	1f	inc	x.5	rts	pc/1:/	clr	x.5/	rts	pccaseso:	jsr	pc,skipcont	tst	nlflg	bne	1f	jsr	r5,getname; nextf	tstb	nextf	beq	1f	sys	open; nextf; 0	bes	1f	mov	ifp,r1	cmp	r1,$ifle	bhi	1f	mov	r0,-(sp)	jsr	pc,flushi	mov	ifile,(r1)	mov	(sp)+,ifile	mov	ioff,[offl-ifl](r1)	add	$2,ifp	clr	ioff	inc	nx	inc	nflush	tst	(r1)	bne	1f	jsr	pc,savebuf1:	rts	pccaseeo:	clr	r0	br	1fcaseec:	jsr	pc,skipcont	jsr	pc,getchar	cmpb	r0,$'\n	bne	1f	movb	$'\\,r01:	movb	r0,eschar	movb	r0,eschar+1	rts	pccasest:	4caseem:	clr	em	jsr	pc,skipcont	bne	1f	jsr	r5,getname;bname	beq	1f	mov	bname,em1:	rts	pccasefc:	mov	$4,fc	mov	$' ,padc	jsr	pc,skipcont	bne	1f	jsr	pc,getchar	bmi	1f	movb	r0,fc	jsr	pc,skipcont	bne	1f	mov	ch,r0	bmi	1f	cmpb	r0,fc	beq	1f	movb	r0,padc1:	rts	pccasepi:	tst	toolate	bne	1f	jsr	pc,skipcont	jsr	r5,getname;bname	beq	1f	sys	42. /pipe	jes	place	mov	r0,pipin	mov	r1,outid	sys	fork	br	2f	jes	place	mov	$1,r0	sys	close	mov	pipin,r0	sys	close1:	inc	toolate	rts	pc2:	clr	r0	sys	close	mov	pipin,r0	sys	41. /dup	mov	outid,r0	sys	close	sys	exec;bname;args	jsr	r5,string;9f	sys	exitargs: bname;09: <exec failed\n\0>.even

⌨️ 快捷键说明

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