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

57 lines
1.4 KiB
Plaintext

/ area
1:
tst (sp)+ / increment sp
1:
tst 2(r5) / is char count for tty buffer = 0
beq 1f / yes
movb *4(r5),r1 / no, move character pointer to r1
inc 4(r5) / increment character pointer
dec 2(r5) / decrement character count
jsr r0,passc / place character, whose address is in
/ r1, in
br 1b / user buffer area. Then get next character.
1:
jmp ret
rcvch:
mov 4(sp),r2 / 0%8 r2 contains 8xtty number
mov $4,r1
bit r1,rcsr(r2) / is carrier detection bit on
bne 1f / yes
bic $1,rcsr(r2) / no, clear data terminal ready bit
rts r0
1:
movb tty+3(r2),0f / make cc offset arg for "getc"
mov $240,*$ps / set processor priority = 5
jsr r0,getc; 0:.. / get next character off clist
br 2f / clist empty
clr *$ps / set processor priority = 0
rts r0
2:
mov 0b,0f / make "getc" arg an arg for "sleep"
mov r5,-(sp) / save tty buffer address on stack
jsr r0,sleep; 0:..
mov (sp)+,r5
br rcvch
ocvt:
sub $28.,r1 / 0%2 calculate tty table offset
mov r1 ,r2
asl r1 / 0%4
asl r1 / 0%8
mov r1,-(sp)
add $6,r2 / calculate clist id clist offset
movb r2,tty+3(r1) / put clist id in tty table
1:
mov (sp),r1
bit $4,rcsr(r1) / carrier detect bit set
bne 1f / if so, branch
mov $511,rcsr(r1) / set ready, speed, interrupt enable,
/ supervisor transmit
movb tty+3(r1),0f / put clist id in sleep argument
jsr r0,sleep; 0:..
br 1b
1:
mov tty+6(r1),r5 / put tty buffer address in r5
tstb (r5) / first byte of tty buffer = 0