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

📄 tp2.s

📁 UNIX版本6的源代码
💻 S
字号:
/ tap2 -- dec-tape lod/dmppstr:	movb	(r1)+,r0	beq	1f	jsr	pc,putc	br	pstr1:	rts	pcmesg:	movb	(r5)+,r0	beq	1f	jsr	pc,putc	br	mesg1:	inc	r5	bic	$1,r5	rts	r5putc:	movb	r0,ch	mov	$1,r0	sys	write; ch; 1	rts	pcgetc:	clr	r0	sys	read; ch; 1	movb	ch,r0	rts	pcclrdir:	mov	$dir,r1	mov	ndirent,r21:	jsr	pc,clrent	sob	r2,1b	rts	pcclrent:	mov	r1,-(sp)	add	$dirsiz,(sp)1:	clr	(r1)+	cmp	r1,(sp)	blo	1b	tst	(sp)+	rts	pcrddir:	clr	sum	jsr	pc,clrdir	clr	r0	jsr	pc,rseek	jsr	pc,tread	mov	tapeb+510.,r0	beq	1f	tstb	flm	beq	1f	mov	r0,ndirent1:	mov	$dir,r1	mov	ndirent,r21:	bit	$7,r2	bne	2f	jsr	pc,tread	mov	$tapeb,r32:	mov	r1,-(sp)	mov	r3,-(sp)	mov	$32.,r0	clr	-(sp)2:	add	(r3)+,(sp)	sob	r0,2b	bis	(sp),sum	tst	(sp)+	bne	2f	mov	(sp),r3	tst	(r3)	beq	2f	mov	r3,0f	jsr	pc,9f.data9:	jsr	r5,encode; 0:..	rts	pc.text	add	$32.,r3	mov	r1,-(sp)	add	$dirsiz,(sp)	tst	(r1)+		/ namep9:	mov	(r3)+,(r1)+	cmp	r1,(sp)	blo	9b	tst	(sp)+2:	mov	(sp)+,r3	add	$64.,r3	mov	(sp)+,r1	bic	$100000,mode(r1)	add	$dirsiz,r1	sob	r2,1b	tst	sum	beq	1f	jsr	r5,mesg		<Directory checksum\n\0>; .even	tstb	fli	bne	1f	jmp	done1:	jsr	pc,bitmap	rts	pcwrdir:	clr	r0	jsr	pc,wseek	tstb	flm	bne	1f	sys	open; tboot; 0	bes	3f	br	2f1:	sys	open; mboot; 0	bes	3f2:	mov	r0,r1	sys	read; tapeb; 512.	mov	r1,r0	sys	close	mov	ndirent,tapeb+510.3:	jsr	pc,twrite	mov	$dir,r1	mov	ndirent,r21:	bit	$7,r2	bne	2f	mov	$256.,r0	mov	$tapeb,r33:	clr	(r3)+	sob	r0,3b	mov	$tapeb,r32:	mov	r3,-(sp)	tst	(r1)	beq	2f	mov	r3,0f	jsr	pc,9f.data9:	jsr	r5,decode; 0:..	rts	pc.text2:	add	$32.,r3	mov	r1,-(sp)	add	$dirsiz,(sp)	tst	(r1)+9:	mov	(r1)+,(r3)+	cmp	r1,(sp)	blo	9b	tst	(sp)+	mov	(sp)+,r3	clr	-(sp)	mov	$31.,r02:	sub	(r3)+,(sp)	sob	r0,2b	mov	(sp)+,(r3)+	dec	r2	bit	$7,r2	bne	1b	jsr	pc,twrite	tst	r2	bne	1b	rts	pctread:	mov	fio,r0	sys	read; tapeb; 512.	bes	trderr	cmp	r0,$512.	bne	trderr1:	inc	rseeka	rts	pctrderr:	jsr	r5,mesg		<Tape read error\n\0>; .even	tstb	fli	beq	1f	mov	$tapeb,r02:	clr	(r0)+	cmp	r0,$tapeb+512.	blo	2b	br	1b1:	jmp	donetwrite:	mov	fio,r0	sys	write; tapeb; 512.	bes	twrerr	cmp	r0,$512.	bne	twrerr	inc	wseeka	rts	pctwrerr:	jsr	r5,mesg		<Tape write error\n\0>; .even	jmp	donerseek:	mov	r0,rseeka	mov	r0,0f	mov	fio,r0	sys	0; 9f.data9:	sys	seek; 0:..; 3.text	bes	seekerr	rts	pcwseek:	mov	r0,-(sp)	sub	wseeka,r0	bge	1f	neg	r01:	cmp	r0,$25.			/ longest write seek	ble	1f	mov	(sp),0f	beq	2f	dec	0f2:	mov	fio,r0	sys	0; 9f.data9:	sys	seek; 0:..; 3.text	mov	fio,r0	sys	read; wseeka; 11:	mov	(sp),wseeka	mov	(sp)+,0f	mov	fio,r0	sys	0; 9f.data9:	sys	seek; 0:..; 3.text	bes	seekerr	rts	pcseekerr:	jsr	r5,mesg<Tape seek error\n\0>; .even	jmp	doneverify:	movb	(r5)+,0f	inc	r5	tstb	flw	bne	1f	tstb	flv	beq	2f1:	jsr	pc,9f.data9:	jsr	r5,mesg		0:<x \0>; .even	rts	pc.text	mov	r1,-(sp)	mov	$name,r1	jsr	pc,pstr	mov	(sp)+,r1	tstb	flw	beq	1f	jsr	r5,mesg		< \0>	jsr	pc,getc	cmp	r0,$'x	bne	3f	jsr	pc,getc	jmp	done3:	cmp	r0,$'\n	beq	3f	cmp	r0,$'y	bne	4f	jsr	pc,getc	cmp	r0,$'\n	beq	2f4:	jsr	pc,getc	cmp	r0,$'\n	bne	4b	br	1b1:	jsr	r5,mesg		<\n\0>2:	tst	(r5)+3:	rts	r5getfiles:	cmp	narg,$2	bne	1f	mov	$".\0,name	jsr	pc,callout1:	cmp	narg,$2	ble	1f	dec	narg	mov	*parg,r1	add	$2,parg	mov	$name,r22:	movb	(r1)+,(r2)+	bne	2b	jsr	pc,callout	br	1b1:	rts	pcexpand:	sys	open; name; 0	bes	fserr	mov	r0,-(sp)1:	mov	(sp),r0	sys	read; catlb; 16.	bes	fserr	tst	r0	beq	1f	tst	catlb	beq	1b	mov	$name,r0	mov	$catlb+2,r1	cmpb	(r1),$'.	beq	1b2:	tstb	(r0)+	bne	2b	dec	r0	mov	r0,-(sp)	cmpb	-1(r0),$'/	beq	2f	movb	$'/,(r0)+2:	movb	(r1)+,(r0)+	bne	2b	jsr	pc,callout	clrb	*(sp)+	br	1b1:	mov	(sp)+,r0	sys	close	rts	pcfserr:	mov	$name,r1	jsr	pc,pstr	jsr	r5,mesg		< -- Cannot open file\n\0>; .even	jmp	donecallout:	sys	stat; name; statb	bes	fserr	mov	statb+4,r0	bic	$!60000,r0	beq	1f	cmp	r0,$40000	beq	expand	rts	pc1:	mov	$dir,r1	clr	-(sp)1:	tst	(r1)	bne	3f	tst	(sp)	bne	2f	mov	r1,(sp)2:	add	$dirsiz,r1	cmp	r1,edir	blo	1b	mov	(sp)+,r1	bne	4f	jsr	r5,mesg		<Directory overflow\n\0>; .even	jmp	done4:	jsr	r5,verify; 'a		rts pc	jsr	r5,encode; name	br	2f3:	jsr	r5,decode; name1	mov	$name,r2	mov	$name1,r33:	cmpb	(r2)+,(r3)	bne	2b	tstb	(r3)+	bne	3b	tst	(sp)+	tstb	flu	beq	3f	cmp	time0(r1),statb+32.	blo	3f	bhi	1f	cmp	time1(r1),statb+34.	bhis	1f3:	jsr	r5,verify; 'r		rts pc2:	mov	statb+4,mode(r1)	bis	$100000,mode(r1)	movb	statb+7,uid(r1)	movb	statb+8,gid(r1)	tstb	flf	beq	2f	clrb	statb+9.	clr	statb+10.2:	movb	statb+9.,size0(r1)	mov	statb+10.,size1(r1)	mov	statb+32.,time0(r1)	mov	statb+34.,time1(r1)1:	rts	pc

⌨️ 快捷键说明

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