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

📄 tp3.s

📁 UNIX版本6的源代码
💻 S
字号:
/ tap3 -- dec-tape lod/dmpgettape:	mov	$dir,r1	clr	-(sp)1:	tst	(r1)	beq	2f	jsr	r5,decode; name	cmp	rnarg,$2	ble	4f	mov	$name,r2	mov	*parg,r33:	tstb	(r3)	beq	3f	cmpb	(r2)+,(r3)+	beq	3b	br	2f3:	tstb	(r2)	beq	4f	cmpb	(r2),$'/	bne	2f4:	mov	r1,-(sp)	jsr	pc,*(r5)	mov	(sp)+,r1	inc	(sp)2:	add	$dirsiz,r1	cmp	r1,edir	blo	1b	tst	(sp)+	bne	2f	cmp	rnarg,$2	ble	2f	mov	*parg,r1	jsr	pc,pstr	jsr	r5,mesg		< not found\n\0>; .even2:	dec	narg	add	$2,parg	cmp	narg,$2	bgt	gettape	tst	(r5)+	rts	r5delete:	jsr	r5,verify; 'd		rts pc	jsr	pc,clrent	rts	pcnumb:	mov	r1,-(sp)	mov	r0,-(sp)	clr	r0	br	1fnumbx:	mov	r1,-(sp)	mov	r0,-(sp)	movb	size0(r1),r01:	mov	$catlb,r21:	mov	$"  ,(r2)+	cmp	r2,$catlb+12.	blo	1b	cmp	(r5),$2	bne	1f	mov	$"00,-2(r2)1:	mov	(sp)+,r1	jsr	pc,numb2	mov	(r5)+,r0	sub	r0,r2	mov	r2,0f	mov	r0,0f+2	mov	$1,r0	sys	0; 9f.data9:	sys	write; 0:..; ...text	mov	(sp)+,r1	rts	r5numb1:	clr	r0numb2:	div	$10.,r0	mov	r1,-(sp)	mov	r0,r1	beq	1f	jsr	pc,numb11:	mov	(sp)+,r0	add	$'0,r0	movb	r0,(r2)+	rts	pcupdate:	jsr	pc,bitmap	mov	$dir,r11:	tst	(r1)	beq	2f	bit	$100000,mode(r1)	beq	2f	tstb	size0(r1)	bne	9f	tst	size1(r1)	beq	2f9:	mov	ndentd8,-(sp)	inc	(sp)	movb	size0(r1),r2	mov	size1(r1),r3	add	$511.,r3	adc	r2	ashc	$-9,r2	mov	r3,size3:	mov	(sp),r2	mov	size,r34:	jsr	pc,bitcalc	inc	r2	bitb	(sp)+,map(r0)	bne	4f	sob	r3,4b	mov	(sp)+,tapea(r1)	jsr	pc,setmap	br	2f4:	inc	(sp)	br	3b2:	add	$dirsiz,r1	cmp	r1,edir	blo	1b	jsr	pc,wrdirupdate1:	mov	$dir,r1	clr	-(sp)	mov	$-1,-(sp)1:	tst	(r1)	beq	2f	bit	$100000,mode(r1)	beq	2f	cmp	tapea(r1),(sp)	bhis	2f	mov	tapea(r1),(sp)	mov	r1,2(sp)2:	add	$dirsiz,r1	cmp	r1,edir	blo	1b	tst	(sp)+	mov	(sp)+,r1	bne	1f	rts	pc1:	bic	$100000,mode(r1)	movb	size0(r1),mss	mov	size1(r1),r2	bne	4f	tst	mss	beq	update14:	jsr	r5,decode; name	mov	tapea(r1),r0	jsr	pc,wseek	clr	r3	sys	open; name; 0	bes	phserr	mov	r0,r33:	tst	mss	bne	4f	cmp	r2,$512.	blo	3f4:	mov	r3,r0	sys	read; tapeb; 512.	bes	phserr	cmp	r0,$512.	bne	phserr	jsr	pc,twrite	sub	$512.,r2	sbc	mss	br	3b3:	mov	r2,0f	beq	3f	mov	r3,r0	sys	0; 9f.data9:	sys	read; tapeb; 0:...text	bes	phserr	cmp	r0,0b	bne	phserr	jsr	pc,twrite3:	mov	r3,r0	sys	read; tapeb; 512.	bes	phserr	tst	r0	bne	phserr	mov	r3,r0	sys	close2:	jmp	update1phserr:	mov	r1,-(sp)	mov	$name,r1	jsr	pc,pstr	jsr	r5,mesg		< -- Phase error\n\0>; .even	mov	(sp)+,r1	clr	time0(r1) / time	beq	2b	sys	close	br	2bbitmap:	mov	$map,r01:	clr	(r0)+	cmp	r0,$emap	blo	1b	mov	$dir,r11:	tst	(r1)	beq	2f	bit	$100000,mode(r1)	bne	2f	tst	size1(r1)	bne	3f	tstb	size0(r1)	beq	2f3:	jsr	pc,setmap2:	add	$dirsiz,r1	cmp	r1,edir	blo	1b	rts	pcsetmap:	movb	size0(r1),r2	mov	size1(r1),r3	add	$511.,r3	adc	r2	ashc	$-9.,r2	mov	tapea(r1),r21:	jsr	pc,bitcalc	bitb	(sp),map(r0)	bne	maperr	bisb	(sp)+,map(r0)	inc	r2	sob	r3,1b	rts	pcbitcalc:	mov	(sp),-(sp)	cmp	r2,tapsiz	bhis	maperr	mov	r2,r0	bic	$!7,r0	mov	r0,-(sp)	mov	$1,r0	als	(sp)+,r0	mov	r0,2(sp)	mov	r2,r0	ash	$-3,r0	bic	$160000,r0	rts	pcmaperr:	jsr	r5,mesg		<Tape overflow\n\0>; .even	jmp	doneusage:	jsr	pc,bitmap	mov	$dir,r21:	tst	(r2)	beq	2f	inc	nentr2:	add	$dirsiz,r2	cmp	r2,edir	blo	1b	mov	ndentd8,r2	inc	r2	mov	tapsiz,r3	dec	r3	sub	ndentd8,r31:	jsr	pc,bitcalc	bitb	(sp)+,map(r0)	beq	2f	inc	nused	mov	r2,lused	br	3f2:	inc	nfree	tstb	flm	bne	1f3:	inc	r2	sob	r3,1b1:	mov	nentr,r0	jsr	r5,numb; 4	jsr	r5,mesg		< entries\n\0>; .even	mov	nused,r0	jsr	r5,numb; 4	jsr	r5,mesg		< used\n\0>; .even	tstb	flm	bne	1f	mov	nfree,r0	jsr	r5,numb; 4	jsr	r5,mesg		< free\n\0>; .even1:	mov	lused,r0	jsr	r5,numb; 4	jsr	r5,mesg		< last\n\0>; .even	rts	pctaboc:	tstb	flv	beq	4f	mov	mode(r1),r0	mov	r0,-(sp)	ash	$-6,r0	bit	$40,r0	jsr	pc,pmod	mov	(sp),r0	ash	$-3,r0	bit	$200,r0	jsr	pc,pmod	mov	(sp)+,r0	bit	$1000,r0	jsr	pc,pmod	clr	r0	bisb	uid(r1),r0	jsr	r5,numb; 4	clr	r0	bisb	gid(r1),r0	jsr	r5,numb; 4	mov	tapea(r1),r0	jsr	r5,numb; 5	mov	size1(r1),r0	jsr	r5,numbx; 9.	mov	r1,-(sp)	add	$time0,(sp)	jsr	pc,_localtime	mov	r0,(sp)	mov	10.(r0),r0	jsr	r5,numb; 3	mov	$'/,r0	jsr	pc,putc	mov	(sp),r0	mov	8.(r0),r0	inc	r0	jsr	r5,numb; 2	mov	$'/,r0	jsr	pc,putc	mov	(sp),r0	mov	6(r0),r0	jsr	r5,numb; 2	mov	(sp),r0	mov	4(r0),r0	jsr	r5,numb; 3	mov	$':,r0	jsr	pc,putc	mov	(sp)+,r0	mov	2(r0),r0	jsr	r5,numb; 2	mov	$' ,r0	jsr	pc,putc4:	mov	$name,r1	jsr	pc,pstr	jsr	r5,mesg		<\n\0>	rts	pcpmod:	beq	1f	mov	$'s,-(sp)	br	2f1:	bit	$1,r0	beq	1f	mov	$'x,-(sp)	br	2f1:	mov	$'-,-(sp)2:	bit	$2,r0	beq	1f	mov	$'w,-(sp)	br	2f1:	mov	$'-,-(sp)2:	bit	$4,r0	beq	1f	mov	$'r,r0	br	2f1:	mov	$'-,r02:	jsr	pc,putc	mov	(sp)+,r0	jsr	pc,putc	mov	(sp)+,r0	jsr	pc,putc	rts	pcxtract:	movb	size0(r1),mss	bne	2f	tst	size1(r1)	beq	1f2:	jsr	r5,verify; 'x		rts pc	mov	size1(r1),r3	mov	tapea(r1),r0	jsr	pc,rseek	sys	unlink; name	mov	mode(r1),0f	sys	0; 9f.data9:	sys	creat; name; 0:...text	bes	crterr	mov	r0,r22:	tst	mss	bne	3f	cmp	r3,$512.	blo	2f3:	jsr	pc,tread	mov	r2,r0	sys	write; tapeb; 512.	bes	crterr1	cmp	r0,$512.	bne	crterr1	sub	r0,r3	sbc	mss	br	2b2:	mov	r3,0f	beq	2f	jsr	pc,tread	mov	r2,r0	sys	0; 9f.data9:	sys	write; tapeb; 0:...text	bes	crterr1	cmp	r0,0b	bne	crterr12:	mov	r2,r0	sys	close	movb	gid(r1),0f+1	movb	uid(r1),0f	sys	0; 9f.data9:	sys	chown; name; 0:...text	mov	time0(r1),r0	mov	r1,-(sp)	mov	time1(r1),r1/	sys	0; 9f.data9:	sys	smdate; name.text	mov	(sp)+,r11:	rts	pccrterr1:	clr	r0	mov	r1,-(sp)	clr	r1/	sys	smdate; name	mov	(sp)+,r1	mov	r2,r0	sys	closecrterr:	mov	$name,r1	jsr	pc,pstr	jsr	r5,mesg		< -- create error\n\0>; .even	rts	pc

⌨️ 快捷键说明

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