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

📄 roff1.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
/// roff1 -- text formatter	.globl ttyn	nop = 000240	signal = 48.ibuf: /init code in ibuf+obuf	cmp	sp,$end	bhi	1f	jsr	r5,string; emes1	sys	exit1:	clr	r0	jsr	pc,mesg	sys	signal; 1; place	sys	signal; 2; place	jsr	pc,makebf	sys	open; suffil; 0	bes	1f	mov	r0,suff	sys	seek; 20; 0	bes	1f	mov	suff,r0	sys	read; suftab; 2*26.1:	clr	r0	mov	(sp)+,argc	dec	argc	bne	1f	jmp	place1:	tst	(sp)+	mov	(sp),r4	cmpb	(r4)+,$'+	bne	2f	jsr	r5,pnum; pfrom	br	3f2:	cmpb	-1(r4),$'-	bne	2f	cmpb	(r4),$'s	bne	0f	inc	stop	br	3f0:	cmpb	(r4),$'h	bne	0f	clr	slow	br	3f0:	jsr	r5,pnum; pto3:	dec	argc	bgt	1b2:	mov	$nop,get1a	mov	$ibuf,ibufp	mov	$ibuf,eibuf	mov	sp,argp	jsr	pc,topbot	clr	r01:	movb	r0,trtab(r0)	inc	r0	cmp	r0,$128.	bne	1b	jsr	pc,rbreak	jsr	pc,istop	jmp	loopmakebf:	sys	stat; bfn; stbuf	bec	2f	sys	creat; bfn; 400	bec	1f2:	incb	bfn+8	cmpb	bfn+8,$'z	blos	makebf	jmp	place1:	mov	r0,ibf	sys	write; sufbuf;128.	sys	open; bfn;0	mov	r0,ibf1	rts	pcstring:	mov	(r5)+,r1	mov	r1,r2	mov	r1,0f1:	tstb	(r1)+	bne	1b	sub	r2,r1	mov	r1,1f	mov	$1,r0	sys	write; 0:..; 1:..	rts	r5emes1: <Too many files.\n\0>xxx:.evenobuf=ibuf+512..=ibuf+1024.loop:	clr	nlflg	jsr	pc,getchar	cmpb	r0,cc	beq	2f	movb	r0,ch	jsr	pc,text	br	loop2:	jsr	pc,control	jsr	pc,flushi	br	loopmesg:	tst	r0	bne	setsame	jsr	pc,ttyn	movb	r0,ttyx+8.	sys	stat; ttyx; stbuf	mov	stbuf+4,0f	mov	0f,1f	bic	$22,0f	sys	chmod; ttyx; 0:..	rts	pcsetsame:	sys	chmod; ttyx; 1:..	rts	pcpnum:	mov	r4,ibufp	mov	$37777,eibuf	jsr	r5,number1; 0	mov	r0,*(r5)+	clr	ch	rts	r5flushi:	clr	ch	tst	nlflg	bne	1f	jsr	pc,getchar	br	flushi1:	rts	pcgettchar:	tst	ul	ble	getchar	tst	ulstate	beq	3f	tst	bsc	bgt	1f	tst	ulc	bgt	2f	clr	ulstate	br	3f1:	dec	bsc	mov	$010,r0	rts	pc2:	dec	ulc	mov	$'_,r0	rts	pc3:	jsr	pc,getchar	cmp	r0,$'0	blt	1f	cmp	r0,$'9	ble	2f	cmp	r0,$'A	blt	1f	cmp	r0,$'Z	ble	2f	cmp	r0,$'a	blt	1f	cmp	r0,$'z	ble	2f1:	tst	ulc	bgt	3f	rts	pc3:	mov	$1,ulstate	mov	r0,ch	br	gettchar2:	inc	bsc	inc	ulc	rts	pcgetchar:	mov	ch,r0	beq	1f	clr	ch	rts	pc1:	tst	nlflg	beq	1f	mov	$'\n,r0	rts	pc1:	jsr	pc,get1	cmp	r0,$'\\	bne	2f	jsr	pc,get1	jsr	r5,switch; esctab	br	3f2:	cmp	r0,$033  /prefix	bne	3f	jsr	pc,get1	jsr	r5,switch; pfxtab3:	cmp	r0,$'\n	bne	3f	inc	nlflg	clr	column3:	mov	r1,-(sp)	jsr	pc,width	add	r1,column	mov	(sp)+,r1	rts	pcesctab:   .byte 'd, 032  /hlf (down)   .byte 'u, 035  /hlr (up)   .byte 'r, 036  /flr (reverse)   .byte 'x, 016  /SO (extra chars)   .byte 'y, 017  /SI (normal characters)   .byte 'l, 0177 /delete   .byte 't, 011  /hor tab   .byte 'a, 0100 /at sign   .byte 'n, 043  /number sign   .byte '\\, 134 /backslash   .byte 0, 0pfxtab:   .byte '7, 036  /flr   .byte '8, 035  /hlr   .byte '9, 032  /hlf   .byte '4, 030  /brs   .byte '3, 031  /rrs   .byte '1, 026  /set hor tabs   .byte '2, 027  /clr hor tabs   .byte 0,0pfxtab1:switch:	mov	r1,-(sp)	mov	(r5)+,r11:	cmpb	(r1)+,r0	beq	1f	tstb	(r1)+	bne	1b	cmp	r1,$pfxtab	ble	0f	cmp	r1,$pfxtab1	bgt	0f	mov	$037,r00:	mov	(sp)+,r1	rts	r51:	movb	(r1)+,r0	mov	(sp)+,r1	rts	r5get1:	tst	nspace	ble	1f	dec	nspace	mov	tabc,r0	rts	pc1:	mov	r1,-(sp)4:	tst	ip	beq	5f	jsr	pc,rbf	br	6f5:	tst	nx	bne	0f	mov	ibufp,r1	cmp	r1,eibuf	bne	3f0:	mov	ifile,r0	bne	2f1:	jsr	pc,nextfile2:	clr	nx	sys	read; ibuf; 512.	bes	done	tst	r0	beq	1b	mov	$ibuf,r1	add	r1,r0	mov	r0,eibuf3:	movb	(r1)+,r0	mov	r1,ibufp1:	cmp	r0,$011	/tab	bne	6f	mov	(sp)+,r1	mov	$tabtab,r0	inc	nspace1:	tstb	(r0)	beq	get1	cmpb	column,(r0)+	bge	1b	movb	-(r0),nspace	sub	column,nspace	br	get16:get1a:	br	7f	tst	r0	beq	4b7:	mov	(sp)+,r1	rts	pcnextfile:	mov	ifile,r0	beq	1f	sys	close1:	tst	nx	beq	2f	mov	$nextf,0f	br	3f2:	dec	argc	blt	done	mov	*argp,0f	add	$2,argp3:	sys	open; 0:..; 0	bes	done	mov	r0,ifile	rts	pcdone:	jsr	pc,rbreak	jsr	pc,eject	jsr	pc,flushplace:	sys	signal; 2; 1	mov	$1,r0	jsr	pc,mesg	sys	unlink; bfn	sys	exit	rts	pcputchar:	cmp	pn,pfrom	blt	2f	clr	pfrom	bic	$!177,r0	beq	2f	movb	trtab(r0),r0	cmp	r0,$' 	bne	1f	inc	nsp2:	rts	pc1:	cmp	r0,$'\n	bne	1f	clr	nsp	clr	ocol	br	2f1:	tst	nsp	beq	2f	tst	slow	bne	4f	jsr	pc,dsp	cmp	nsp,r1	blt	4f	mov	$011,3f+2	cmp	r1,$1	bgt	8f	mov	$040,3f+2	dec	nsp	br	9f8:	sub	r1,nsp9:	mov	r0,-(sp)3:	mov	$011,r0	jsr	pc,pchar1	mov	(sp)+,r0	br	1b4:	mov	r0,-(sp)	mov	$' ,r0	jsr	pc,pchar1	mov	(sp)+,r0	dec	nsp	bne	4b2:	cmp	r0,$026	blt	2f	cmp	r0,$037	beq	3f	bgt	2f	mov	r0,-(sp)	jsr	r5, switch; unpfx	cmp	(sp)+,r0	beq	2f	mov	r0,-(sp)	mov	$033,r0  /prefix	jsr	pc,pchar1	dec	ocol	mov	(sp)+,r02:pchar1:	cmp	r0,$011	bne	1f	jsr	pc,dsp	br	2f1:	jsr	pc,width2:	add	r1,ocol	movb	r0,*obufp	inc	obufp	cmp	obufp,$obuf+128.	beq	flush3:	rts	pcdsp:	clr	r11:	add	$8.,r1	cmp	ocol,r1	bgt	1b	sub	ocol,r1	bne	2f	mov	$8.,r12:	rts	pcunpfx:   .byte 032, '9   .byte 035, '8   .byte 036, '7   .byte 031, '3   .byte 030, '4   .byte 026, '1   .byte 027, '2   .byte 0,0flush:	mov	obufp,r0	sub	$obuf,r0	mov	r0,0f	mov	$1,r0	sys	write; obuf; 0:0	mov	$obuf,obufp	rts	pccontrol:	jsr	pc,getchar	mov	r0,-(sp)	jsr	pc,getchar	swab	r0	bis	(sp),r0	mov	$contab,r11:	mov	(r1)+,(sp)	bic	$100000,(sp)	cmp	r0,(sp)	bne	4f	mov	(r1),(sp)	tst	-(r1)	bpl	3f	jsr	pc,flushi	cmp	ilistp,$iliste	bgt	5f	mov	ip,*ilistp	add	$2,ilistp	mov	(sp),ip	br	5f3:	jmp	*(sp)+4:	cmp	(r1)+,$-1	bne	1b5:	tst	(sp)+	rts	pccontab:   <ad>; casead   <bp>; casebp   <br>; casebr   <cc>; casecc   <ce>; casece   <ds>; caseds   <fi>; casefi   <in>; casein   <ix>; caseix   <li>; caseli   <ll>; casell   <ls>; casels   <na>; casena   <ne>; casene   <nf>; casenf   <pa>; casepa   <bl>; casebl   <pl>; casepl   <sk>; casesk   <sp>; casesp   <ss>; casess   <ta>; caseta   <ti>; caseti   <tr>; casetr   <ul>; caseul   <un>; caseun   <he>; casehe   <hx>; casehx   <fo>; casefo   <eh>; caseeh   <oh>; caseoh   <ef>; caseef   <of>; caseof   <m1>; casem1   <m2>; casem2   <m3>; casem3   <m4>; casem4   <hc>; casehc   <hy>; casehy   <n1>; casen1   <n2>; casen2   <nn>; casenn   <ni>; caseni   <jo>; casejo   <ar>; casear   <ro>; casero   <nx>; casenx   <po>; casepo   <de>; casede   <ig>; caseig   <tc>; casetc   <mk>; casemkbnames: .=.+100.    -1; -1

⌨️ 快捷键说明

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