/ u6 -- unix

readi:
	clr	u.nread / accumulates number of bytes transmitted
	tst	u.count / is number of bytes to be read greater than 0
	bgt	1f / yes, branch
	rts	r0 / no, nothing to read; return to caller
1:
	mov	r1,-(sp) / save i-number on stack
	cmp	r1,$40. / want to read a special file (i-nodes 1,...,40 are
		    / for special files)
	ble	1f / yes, branch
	jmp	dskr / no, jmp to dskr; read file with i-node number (r1)
		     / starting at byte ((u.fofp)), read in u.count bytes
1:
	asl	r1 / multiply inode number by 2
	jmp	*1f-2(r1)
1:
	rtty / tty; r1=2
	rppt / ppt; r1=4
	rmem / mem; r1=6
	rrf0 / rf0
	rrk0 / rk0
	rtap / tap0
	rtap / tap1
	rtap / tap2
	rtap / tap3
	rtap / tap4
	rtap / tap5
	rtap / tap6
	rtap / tap7
	rcvt / tty0
	rcvt / tty1
	rcvt / tty2
	rcvt / tty3
	rcvt / tty4
	rcvt / tty5
	rcvt / tty6
	rcvt / tty7
	rcrd/ crd

rtty: / read from console tty
	mov	tty+[8*ntty]-8+6,r5 / r5 is the address of the 4th word of
				    / of the control and status block
	tst	2(r5) / for the console tty; this word points to the console
		      / tty buffer
	bne	1f / 2nd word of console tty buffer contains number
	           / of chars. Is this number non-zero?
	jsr	r0,canon; ttych / if 0, call 'canon' to get a line
			    / (120 chars.)
1:
	tst	2(r5) / is the number of characters zero
	beq	ret1 / yes, return to caller via 'ret1'
	movb	*4(r5),r1 / no, put character in r1
	inc	4(r5) / 3rd word of console tty buffer points to byte which
		      / contains the next char.
