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

📄 fed3.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
rti = 2.globl rm.globl ck.globl loop.globl oct.globl argc.globl arg.globl tfiget.globl asmem.globl qflag.globl vflag.globl getspq.globl q.globl ask.globl getword.globl r.globl w.globl	output.globl buffer.globl bufend.globl fv.globl	getsp.globl release.globl nothere.globl getn.globl getchar.globl rewind.globl iflag.globl inter/	output buffer/	r2 = last char in buffer + 1/	r2 returned at beginning of buffer/output:	sub	$buffer,r2	blos	1f	mov	r2,0f	mov	$1,r0	sys	write; buffer; 0:..	mov	$buffer,r21:	rts	pc///	routine to find the string pointed to by r0/	in either memory or curly/	r1 = where to look//	returns error set if string not there/	returns r1 = header of string if theregetsp:	mov	r0,-(sp)	mov	asmem,r1	jsr	pc,rewind	/memory3:	jsr	pc,getword	bes	1f	mov	r0,r1	jsr	pc,rewind	mov	(sp),r22:	jsr	pc,getchar	bes	2f	tstb	(r2)	beq	4f	cmpb	r0,(r2)+	beq	2b4:	mov	asmem,r1	add	$2,r(r1)	br	3b2:	tstb	(r2)	bne	4b	mov	r1,r2	mov	asmem,r1	jsr	pc,getword	tst	(sp)+	rts	pc1:	mov	(sp)+,r0	sec	rts	pc//	finds header of string with name same as that pointed to by r0/	taking into account ? and * getspq:	mov	r0,-(sp)	mov	asmem,r1	tst	qflag	bgt	1f	jsr	pc,rewind1:	jsr	pc,getword	bes	1f	mov	r0,r1	jsr	pc,rewind	mov	(sp),r22:	cmpb	(r2),$'*	bne	3f	clr	strflg	mov	$2,qflag	inc	r2	tstb	(r2)	beq	6f	mov	r2,ch3:	jsr	pc,getchar	bes	2f	tstb	(r2)	bne	3f	cmp	$2,qflag	bne	4f	mov	ch,r23:	cmpb	(r2),$'?	bne	3f	inc	r2	tst	qflag	bne	2b	mov	$1,qflag	br	2b3:	cmpb	r0,(r2)+	bne	5f	inc	strflg	br	2b5:	cmp	$2,qflag	bne	4f	tst	strflg	bne	4f	dec	r2	br	2b4:	mov	asmem,r1	add	$2,r(r1)	br	1b2:	tstb	(r2)	bne	4b6:	mov	r1,r2	mov	asmem,r1	jsr	pc,getword	tst	(sp)+	rts	pc1:	mov	$-1.,qflag	mov	(sp)+,r0	sec	rts	pc//	tfiget/	jsr	r5,tfiget/tfiget:	clr	r0	sys	read; ch; 1	bes	1f	tst	iflag	beq 9f; jmp loop; 9:	tst	r0	beq	1f	movb	ch,r0	rts	pc1:	jmp	q//	routine to print file name and error message/	r2 = next free byte in buffer/nothere:	mov	$buffer,r21:	tstb	(r1)	beq	1f	movb	(r1)+,(r2)+	br	1b1:	sub	$buffer,r2	mov	r2,0f	mov	$1,r0	sys	write; buffer; 0:..	mov	$1,r0	sys	write; err4; 16.	rts	pc///	routine to put characters from string in buffer/	r1 = header of string/	on return r2 = next free byte in buffer/getn:	mov	$buffer,r2	jsr	pc,rewind1:	jsr	pc,getchar	bes	1f	movb	r0,(r2)+	cmp	r2,$bufend	bhis	1f	br	1b1:	rts	pc/ask:	mov	r2,-(sp)	mov	r0,r1	jsr	pc,getn	movb	$' ,(r2)+	jsr	pc,output	jsr	pc,tfiget	cmpb	$'\n,r0	bne	1f2:	mov	asmem,r1	add	$2,r(r1)	mov	(sp)+,r2	sec	rts	pc1:	cmpb	r0,$'y	beq	4f	cmpb	r0,$'q	beq	3f1:	tst	iflag	bne	2b	jsr	pc,tfiget	cmpb	$'\n,r0	bne	1b	br	2b4:	tst	iflag	bne	2b	jsr	pc,tfiget	cmpb	$'\n,r0	bne	1b	mov	asmem,r1	mov	(sp)+,r2	clc	rts	pc3:	tst	iflag	bne	2b	jsr	pc,tfiget	cmpb	$'\n,r0	bne	1b	mov	(sp)+,r2	jmp	loopinter:	inc	iflag	rti/	to remove an entry from asmem - r points to name ptr/rm:	mov	r3,-(sp)	mov	asmem,r1	mov	r(r1),r3	sub	$4,r(r1)	mov	r(r1),r2	mov	r2,-(sp)1:	mov	r3,r(r1)	jsr	pc,getword	bes	1f	mov	r(r1),r3	mov	r2,r(r1)	jsr	pc,alterword	mov	r(r1),r2	br	1b1:	mov	r2,w(r1)	mov	(sp)+,r(r1)	mov	(sp)+,r3	rts	pc//	check that header pointed to by r2 released/ck:	mov	r2,-(sp)	mov	l(r2),r0	sub	a(r2),r0	sub	$hblk,r2	jsr	pc,log2	asl	r0	mov	r0,ch	mov	frlist(r0),r01:	beq	1f	cmp	r2,r0	beq	2f	add	$hblk,r0	mov	(r0),r0	br	1b2:	mov	ch,r0	inc	freeb(r0)	mov	(sp)+,r2	rts	pc1:	mov	(sp)+,r2	sec	rts	pcoct:	mov	r1,-(sp)	mov	r0,r1	clr	r0	div	$8.,r0	mov	r1,-(sp)	add	$'0,(sp)	tst	r0	beq	1f	jsr	r5,oct1:	movb	(sp)+,ch	mov	$1,r0	sys	write; ch; 1	mov	(sp)+,r1	rts	r5decml:	mov	r1,-(sp)	mov	r0,r1	clr	r0	div	$10.,r0	mov	r1,-(sp)	add	$'0,(sp)	tst	r0	beq	1f	jsr	r5,decml1:	movb	(sp)+,ch	mov	$1,r0	sys	write; ch; 1	mov	(sp)+,r1	rts	r5//iflag:	0qflag:	0vflag:	0	.dataerr4:	< not in memory.\n>err1:	<Cannot open file >end1:	.even	.bssfreeh:	.=.+2freeb:	.=.+32.freen:ch:	.=.+2strflg:	.=.+2buffer:	.=.+512.bufend:	.=.+2argc = buffer + 20.arg = buffer + 256.fv:	.=.+2	.text

⌨️ 快捷键说明

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