mirror of
https://github.com/DoctorWkt/unix-jun72.git
synced 2026-01-11 23:53:34 +00:00
57 lines
1.7 KiB
Plaintext
57 lines
1.7 KiB
Plaintext
asl r0 / 0%8
|
|
jsr r0,starxmt
|
|
jmp retisp
|
|
|
|
xmtto:
|
|
mov r0,-(sp)
|
|
mov 2(sp),r0 / 0%2+6
|
|
sub $6,r0
|
|
asl r0
|
|
asl r0 / 0%8
|
|
jsr r0,starxmt
|
|
mov (sp)+,r0
|
|
rts r0
|
|
|
|
starxmt:
|
|
mov (sp),r1 / 0%8 r1 contains 8xtty number
|
|
movb tty+3(r1),r1 / place contents of 4th byte of "tty"
|
|
/ buf in r1 (cc,cf,cl offset)
|
|
cmpb cc+1(r1),$10. / is char count for tty output greater
|
|
/ than or equal to 10
|
|
bhi 1f / yes
|
|
mov r1,0f / no, make offset an arg of "wakeup"
|
|
inc 0f / increment arg of wakeup
|
|
jsr r0,wakeup; runq+2; 0:.. / wakeup process identified
|
|
/ by wlist
|
|
1: / entry specified by argument in 0:
|
|
mov (sp),r1 / 0%8 / r1 contains tty number
|
|
asr r1
|
|
asr r1
|
|
asr r1 / 0%1 r1 contains tty number
|
|
tstb toutt+3(r1) / is tout entry for tty output = 0
|
|
bne 1f / no, return to calling routine
|
|
mov (sp),r2 / yes, place (8xtty number) into r2
|
|
tstb tcsr(r2) / does tty's tcsr register = 0 (is ready
|
|
/ bit = 0)
|
|
bge 1f / yes, return to calling routine
|
|
movb tty+2(r2),r1 / no, place third byte of "tty" buf
|
|
/ into r1 (char left over after lf)
|
|
clrb tty+2(r2) / clear third byte
|
|
tst r1 / is third byte = 0
|
|
bne 3f / no, r1 contains a non nul character
|
|
movb tty+3(r2),0f / yes, make byte 4 arg of "getc"
|
|
inc 0f / increment arg to make it tty output list of
|
|
/ clist
|
|
jsr r0,getc; 0:.. / obtain next character in clist for tty
|
|
/ out and place in r1
|
|
br 1f / if no entry in clist to be output, return to
|
|
/ calling routine
|
|
3:
|
|
bic $!177,r1 / zero out bits 7-15 of r1
|
|
movb partab(r1),r3 / move "partab" entry (identified by
|
|
/ r1) into r3
|
|
bge 3f / if entry is greater than or equal to 0 (digit
|
|
/ 2, far left digit = 0) branch
|
|
bisb 200,r1 / if entry is less than 0 add 128 to ASCII
|
|
/ code for char to be output
|