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

📄 alloc2.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
//	routine to read from disc to a buffer/	wcing the buffer if necessary/	mov	disc addr,r0/	mov	buffer addr,r2/	jsr	pc,getb/	on return r0 = addr of byte in buffer/getb:	mov	r3,-(sp)	mov	r1,-(sp)	mov	r0,-(sp)	mov	r2,r3	asr	r3	mov	r3,r1	ashc	$9.,r1	bic	$777,r1	add	$b1,r1	tst	w1(r2)	/ w	ble	1f	jsr	pc,clean1:	mov	(sp),r0	bic	$777,r0		/get lowest multiple of 512.	mov	r0,0f	mov	r0,b1s(r2)	/set start	mov	afi,r0	sys	seek;0:..;0	mov	r1,0f	sys	read;0:..;512.	mov	b1s(r2),b1e(r2)	add	$512.,b1e(r2)	/ set end	clr	w1(r2)	/clear w	mov	(sp)+,r0	sub	b1s(r2),r0	add	r1,r0	/ set r0=byte addr in buffer	mov	(sp)+,r1	mov	(sp)+,r3	rts	pc///	routine to wc a buffer/	mov	buffer addr,r2/	mov	buffer addr+6,r1	beginning of buffer/	jsr	pc,clean/clean:	mov	r0,-(sp)	mov	b1s(r2),0f	mov	afout,r0	sys	seek;0:..;0	mov	r1,0f	sys	write;0:..;512.	clr	w1(r2)	/clear w	mov	(sp)+,r0	rts	pc//	routine to get buffer addr of byte whose disc/	addr is in r0 - also returns addr of write/	flag for buffer in r2/	mov	disc addr,r0/	jsr	pc,bufchar/	mov	(r0),r0	for read/	inc	(r2)	for write must inc w/	c-bit set if char not in either buffer/bufchar:	mov	r1,-(sp)	mov	r3,-(sp)	clr	r31:	mov	r3,r2	asl	r2	cmp	r0,b1s(r2)	blo	2f	cmp	r0,b1e(r2)	bhis	2f	sub	b1s(r2),r0	mov	r3,r1	ashc	$9.,r1	bic	$777,r1	add	r1,r0	add	$b1,r0	mov	(sp)+,r3	mov	(sp)+,r1	clc	rts	pc2:	inc	r3	cmp	r3,nbuf	blt	1b	mov	(sp)+,r3	mov	(sp)+,r1	sec	rts	pc//	routine to get a buffer/	mov	disc addr,r0/	jsr	pc,getbuf/	mov	(r0),r0	(for read)/	inc	(r2)	must inc w for w/getbuf:	mov	r4,-(sp)	mov	r3,-(sp)	mov	$2,r3	clr	r2	mov	$1,r41:	cmp	r4,nbuf	bge	1f	cmp	u1(r3),u1(r2)	bhis	2f	mov	r3,r22:	inc	r4	add	$2.,r3	br	1b1:	mov	r2,r3	jsr	pc,getb	add	$stats+6.,r3	inc	(r3)	mov	(sp)+,r3	mov	(sp)+,r4	rts	pc//	routine to look at next character from string/	pointed to by r1;  character returned in r0/	c-bit set if character not available (end of file)/	r1 is preserved//	mov	...,r1/	jsr	pc,lookchar/	movb	r0,.../lookchar:	mov	r2,-(sp)	jsr	pc,plausible	cmp	w(r1),r(r1)	/W,R	blos	noch	mov	r(r1),r0	jsr	pc,bufchar	bec	2f	jsr	pc,getbuf/2:	inc	flag	bne	2f	jsr	pc,fixct	br	1f2:	mov	flag,u1(r2)1:	mov	(sp)+,r2	movb	(r0),r0	tst	r0	/clears c-bit	rts	pc/noch:	mov	(sp)+,r2	clr	r0	sec	rts	pc///	routine to put a character into the string/	pointed to by r1;  character in r0/	r0 is preserved; r1 points to the string/	after return and must be saved.//	movb	ch,r0/	mov	...,r1/	jsr	pc,putchar/	mov	r1,.../putchar:	mov	r2,-(sp)	mov	r1,-(sp)	mov	r0,nchar	jsr	pc,plausible1:	cmp	w(r1),l(r1)	/W,L	blt	3f	mov	w(r1),r0	inc	r0	sub	a(r1),r0	/W-A+1	jsr	pc,allocate	mov	(sp),r0	jsr	pc,copy	jsr	pc,swap	jsr	pc,release	mov	(sp),r1/3:	mov	w(r1),r0	jsr	pc,bufchar	bec	2f	jsr	pc,getbuf2:	movb	nchar,(r0)	mov	$1,w1(r2)	mov	nchar,r0	/to preserve r0 for user	inc	w(r1)	inc	flag	bne	2f	jsr	pc,fixct	br	1f2:	mov	flag,u1(r2)1:	mov	(sp)+,r1	mov	(sp)+,r2	rts	pc//fixct:	mov	r1,-(sp)	mov	r3,-(sp)	mov	nbuf,r1	mov	nbuf,flag2:	mov	r1,u1(r2)	dec	r1	bge	1f	mov	(sp)+,r3	mov	(sp)+,r1	rts	pc1:	clr	r2	mov	$2,r31:	cmp	r3,nbuf2	bge	2b	cmp	u1(r3),u1(r2)	blo	2f	mov	r3,r22:	add	$2,r3	br	1b

⌨️ 快捷键说明

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