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

📄 roff3.s

📁 UNIX v6源代码 这几乎是最经典的unix版本 unix操作系统设计和莱昂氏unix源代码分析都是用的该版
💻 S
字号:
///roff3 -- runoffskipcont:	jsr	pc,getchar	mov	r0,r2	jsr	pc,alph2	beq	skipcont1:	cmp	$' ,r0	bne	1f	jsr	pc,getchar	br	1b1:	mov	r0,ch	rts	pcrbreak:	tst	nc	ble	4f	clrb	*linep	inc	totout	mov	ls,r0	dec	r0	jsr	r5,nlines; nline	tst	pl	beq	4f	cmp	nl,bl	bne	1f3:	jsr	pc,eject1:	tst	nl	bne	3f	mov	ma1,r0	jsr	r5,nlines; newline	bit	$1,pn	bne	1f	jsr	r5,headout; ehead	br	2f1:	jsr	r5,headout; ohead2:	mov	ma2,r0	jsr	r5,nlines; newline	dec	skip	bge	3b3:	mov	po,r0	jsr	pc,space	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:	jsr	pc,newline	clr	nwd	clr	ne	mov	in,un4:	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	1f	mov	$5,r0	add	ni,r0	jsr	pc,space	rts	pc1:	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	$2,r0	jsr	pc,space	inc	lnumber2:	rts	pcnewline:	mov	$'\n,r0	jsr	pc,putchar	inc	nl	rts	pcnline:	mov	nl,r0	beq	1f	cmp	r0,bl	beq	1f	jsr	pc,newline1:	rts	pcnumber:	jsr	pc,skipcontnumber1:	mov	r1,-(sp)	mov	r3,-(sp)	clr	r3	clr	-(sp)	clr	-(sp)1:	jsr	pc,getchar	cmp	r0,$'+	beq	2f	cmp	r0,$'-	beq	2f	sub	$'0,r0	cmp	r0,$9.	bhi	3f	inc	(sp)	mpy	$10.,r3	add	r0,r3	br	1b2:	mov	r0,2(sp)	br	1b3:	add	$'0,r0	mov	r0,ch	mov	(sp)+,r0	bne	1f	mov	$1,r3	mov	r3,r01:	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	rts	r5eject:	tst	pl	beq	1f	tst	nl	beq	1f	mov	pl,r0	sub	nl,r0	sub	ma4,r0	sub	hx,r0	jsr	r5,nlines; newline	bit	$1,pn	bne	2f	jsr	r5,headout; efoot	br	3f2:	jsr	r5,headout; ofoot3:	cmp	numbmod,$1	bne	3f	mov	$1,lnumber3:	mov	ma4,r0	jsr	r5,nlines; newline	clr	nl	inc	pn1:	cmp	pn,pto	ble	1f	jsr	pc,flush	jmp	place1:istop:	tst	stop	beq	2f	cmp	pn,pfrom	blo	2f	jsr	pc,flush/	mov	sp,r1/	sys	signal; 2; 1f	clr	r0	sys	read; garb; 11:/	mov	r1,sp/	sys	signal; 2; place2:	rts	pcstoreline:	cmp	linep,$line+linsiz	bhis	1f	movb	r0,*linep	inc	linep	jsr	pc,width	add	r1,ne	sub	r1,nel	inc	nc1:	rts	pcgetword:	mov	$word,r2	clr	wne	clr	wch	clr	nhyph	clr	hypedf	mov	$word,wordp	clr	-(sp)1:	jsr	pc,gettchar	cmp	r0,$'\n	beq	3f	cmp	r0,ohc	bne	2f	inc	hypedf	br	1b2:	cmp	$' ,r0	bne	2f	jsr	pc,storeword	br	1b2:	mov	r0,-(sp)	mov	$' ,r0	jsr	pc,storeword	tst	spaceflg	beq	2f	jsr	pc,storeword	clr	spaceflg2:	mov	(sp)+,r02:	jsr	pc,storeword	bisb	(sp),-1(r2)	/add in hyphen	clr	(sp)	jsr	pc,gettchar	cmp	r0,ohc	bne	1f	inc	hypedf	jsr	pc,gettchar	mov	$200,(sp)1:	cmp	$' ,r0	beq	1f	cmp	$'\n,r0	bne	2b	cmpb	-1(r2),$'.	bne	1f	inc	spaceflg1:	add	$2,2(sp)1:	clrb	(r2)+3:	tst	(sp)+	mov	$word,wordp	tst	nc	bne	1f	jsr	pc,setnel1:	rts	pcsetnel:	mov	$line,linep	mov	ll,nel	sub	un,nel	clr	ne	clr	fac	clr	fmq	rts	pcstoreword:	jsr	pc,width	add	r1,wne	inc	wch	movb	r0,(r2)+	rts	pcneed:	mov	r0,r3	mpy	ls,r3	mov	r3,r0need2:	add	nl,r0	cmp	r0,bl	ble	1f	jsr	pc,eject1:	rts	pcmin:	tst	r0	bge	1f	clr	r01:	rts	pcgetname:	mov	r1,-(sp)	mov	r2,-(sp)	mov	(r5)+,r1	mov	$18.,r21:	jsr	pc,getchar	cmp	r0,$041	blt	2f	cmp	r0,$0176	ble	4f2:	mov	r0,ch3:	clrb	(r1)+	mov	(sp)+,r2	mov	(sp)+,r1	rts	r54:	movb	r0,(r1)+	dec	r2	beq	3b	br	1bcopyb:	mov	(r1),r1	jsr	pc,flushi	clr	nlflg	mov	$1,-(sp)1:	jsr	pc,getchar	cmp	r0,$'\n	bne	2f	mov	$1,(sp)	clr	nlflg	br	4f2:	cmp	r0,$'.	bne	9f	cmp	(sp),$1	bgt	3f	blt	9f	inc	(sp)	br	4f3:	dec	r1	clr	r0	inc	(sp)	br	4f9:	clr	(sp)4:	tst	skp	bne	5f	jsr	pc,wbf5:	cmp	(sp),$3	bne	1b	tst	(sp)+	tst	skp	bne	6f	mov	r1,nextb6:	rts	pcpopi:	cmp	ilistp,$ilist	beq	1f	sub	$2,ilistp	mov	*ilistp,ip1:	rts	pcwbf:	mov	r0,char	mov	r1,offb	mov	ibf,r0	sys	seek; offb:..;0	mov	ibf,r0	sys	write; char;1	inc	r1	cmp	ibf1,ofile	bne	1f	mov	$-1,ofile1:	rts	pcrbf:	mov	ip,r1	mov	ibf1,nfile	jsr	pc,rdsufb	tstb	r0	bne	2f	jsr	pc,popi	rts	pc2:	inc	ip	rts	pcalph:	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	$77,r1	cmp	r1,sufoff	bne	1f	cmp	nfile,ofile	beq	2f1:	mov	r1,sufoff	mov	nfile,ofile	mov	nfile,r0	sys	seek; sufoff: -1; 0	mov	nfile,r0	sys	read; sufbuf; 512.2:	mov	(sp),r0	bic	$!77,r0	movb	sufbuf(r0),r0	mov	(sp)+,r1	rts	pc

⌨️ 快捷键说明

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