1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-01-13 15:27:49 +00:00
2008-05-02 17:50:21 +00:00

57 lines
1.4 KiB
Plaintext

/ 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.