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

📄 io3.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
/// io3 --  Fortran I/O.globl	getbuf.globl	chkunit.globl	creatf.globl	openfsetio:	mov	r1,unit	jsr	r5,chkunit	movb	utable(r1),r0	beq	1f	bpl	2f	mov	r1,r0	asl	r0	mov	btable(r0),r0	mov	r0,r2	br	4f2:	cmp	(r5),r0	beq	3f	jsr	r5,rerr; 101.		/ inconsistent use of unit	sys	exit1:	mov	r1,-(sp)	clr	r0	dvd	$10.,r0	swab	r1	bis	r1,r0	add	$"00,r0	mov	r0,filnam+4	mov	(sp)+,r1	jsr	r5,getbuf	mov	$filnam,r04:	movb	(r5),utable(r1)	bit	$1,(r5)	bne	2f	jsr	r5,creatf	br	3f2:	jsr	r5,openf3:	tst	(r5)+	asl	r1	mov	btable(r1),buffer	rts	r5getbuf:	mov	$utable,r0	mov	$btable,r21:	tstb	(r0)+	beq	2f	tst	(r2)+	br	3f2:	tst	(r2)+	beq	3f	mov	-(r2),r0	clr	(r2)	mov	r0,r2	br	2f3:	cmp	r0,$utable+20.	blo	1b	mov	bufp,r2	add	$134.,bufp	mov	bufp,0f	sys	break; 0:..2:	mov	r1,r0	asl	r0	mov	r2,btable(r0)	mov	r2,buffer	rts	r5chkunit:	cmp	r1,$20.	blo	1f	jsr	r5,rerr; 100.		/ illegal unit number	sys	exit1:	rts	r5creatf:	cmp	unit,$6	bne	2f	mov	$1,r0	br	1f2:	mov	r0,0f	sys	creat; 0:..; 666	bec	1f	jsr	r5,rerr; 102.		/ create error	sys	exit1:	mov	r2,-(sp)	mov	r0,(r2)+	clr	(r2)+	clr	(r2)+	mov	r2,-(r2)	mov	(sp)+,r2	rts	r5openf:	cmp	unit,$5	bne	2f	clr	r0	br	1f2:	mov	r0,0f	sys	open; 0:..; 0	bec	1f	jsr	r5,rerr; 103.		/ open error	sys	exit1:	mov	r2,-(sp)	mov	r0,(r2)+	clr	(r2)+	clr	(r2)+	mov	(sp)+,r2	rts	r5fputc:	mov	r1,-(sp)	mov	buffer,r1	dec	2(r1)	bge	1f	mov	r0,-(sp)	jsr	pc,flush1	dec	2(r1)	mov	(sp)+,r01:	movb	r0,*4(r1)	inc	4(r1)	mov	(sp)+,r1	rts	r5fflush:	mov	r1,-(sp)	mov	buffer,r1	jsr	pc,flush1	mov	(sp)+,r1	rts	r5flush1:	mov	r1,r0	add	$6,r0	mov	r0,-(sp)	mov	r0,0f	neg	r0	add	4(r1),r0	bhis	1f	mov	r0,0f+2	mov	(r1),r0	sys	write; 0:..; ..1:	mov	(sp)+,4(r1)	mov	$128.,2(r1)	rts	pcfgetc:	tst	nlflg	bne	4f	mov	r1,-(sp)	mov	buffer,r1	dec	2(r1)	bge	1f	mov	r1,r0	add	$6,r0	mov	r0,0f	mov	r0,4(r1)	mov	(r1),r0	sys	read; 0:..; 128.	bes	2f	tst	r0	bne	3f2:	jsr	r5,rerr; 104.		/ EOF on input	sys	exit3:	dec	r0	mov	r0,2(r1)1:	clr	r0	bisb	*4(r1),r0	inc	4(r1)	mov	(sp)+,r1	tst	binflg	bne	1f	cmp	r0,$'\n	bne	1f4:	mov	pc,nlflg	mov	$' ,r01:	rts	r5gnum:	mov	r1,-(sp)	clr	r11:	jsr	r5,fmtchr	cmp	r0,$'  /	beq	1b	sub	$'0,r0	cmp	r0,$9.	bhi	1f	mpy	$10.,r1	add	r0,r1	br	1b1:	mov	r1,r0	mov	(sp)+,r1	dec	formp	rts	r5switch:	mov	(r5)+,r11:	tst	(r1)	beq	1f	cmp	r0,(r1)+	bne	1b	tst	(sp)+	jmp	*(r1)1:	rts	r5fmtchr:	movb	*formp,r0	inc	formp	rts	r5getitm:	tst	itmflg	bne	1f	mov	r5,-(sp)	jmp	*(r4)+1:	clr	itmflg	tst	(r5)+	rts	r5/ just a fake, there's no carriage controlfputcc:	cmp	$' ,r0	bne	1f	inc	nspace	rts	r51:	mov	r0,-(sp)1:	dec	nspace	blt	1f	mov	$' ,r0	jsr	r5,fputc	br	1b1:	clr	nspace	mov	(sp)+,r0	beq	1f	jsr	r5,fputc1:	rts	r5eorec:	mov	unit,r0	bitb	$1,utable(r0)	bne	1f	clr	nspace	mov	$'\n,r0	jsr	r5,fputceorec1:	clr	r0	jsr	r5,fputcc/	cmp	unit,$6			/ tty output/	bne	2f	jsr	r5,fflush2:	rts	r51:	tst	nlflg	bne	1f	jsr	r5,fgetc	br	1b1:	clr	nlflg	rts	r5spaces:	add	r1,nspace	rts	r5

⌨️ 快捷键说明

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