mirror of
https://github.com/DoctorWkt/unix-jun72.git
synced 2026-01-11 23:53:34 +00:00
58 lines
2.5 KiB
Plaintext
58 lines
2.5 KiB
Plaintext
mov r5,-(sp) / save r5
|
|
jsr r0,sleep; 0 / put process to sleep in input wait channel
|
|
mov (sp)+,r5 / restore r5
|
|
br ttych / try again
|
|
|
|
pptic: / paper tape input control
|
|
mov $240,*$ps / set processor priority to five
|
|
cmpb cc+2,$30. / is character count for paper tape input in
|
|
/ clist greater than or equal to 30
|
|
bhis 1f / yes, branch
|
|
bit *$prs,$104200 / is there either an error, an unread char
|
|
/ in buffer, or reader busy
|
|
bne 1f / yes, don't enable reader
|
|
inc *$prs / set reader enable bit
|
|
1:
|
|
jsr r0,getc; 2 / get next character in clist for ppt input and
|
|
br 1f / place in r1; if no char in clist for ppt input
|
|
/ branch
|
|
tst (r0)+ / pop stack so that return will be four locations past
|
|
/ subroutine call
|
|
2:
|
|
clr *$ps / set process priority equal to zero
|
|
rts r0 / return
|
|
1:
|
|
cmpb pptiflg,$6 / does pptiflg indicate file "not closed"
|
|
beq 2b / yes, return to calling routine at instruction
|
|
/ immediately following jsr
|
|
jsr r0,sleep; 2 / no, all characters to be read in not yet in
|
|
/ clist, put process to sleep
|
|
br pptic
|
|
|
|
pptoc: / paper tape output control
|
|
mov $240,*$ps / set processor priority to five
|
|
cmpb cc+3,$50. / is character count for paper tape output in
|
|
/ clist greater than or equal to 50
|
|
bhis 1f / yes
|
|
jsr r0,putc; 3 / find place in freelist to assign ppt output
|
|
/ and place
|
|
br 1f / character in list; if none available branch to put
|
|
/ process to sleep
|
|
jsr r0,starppt / try to output character
|
|
clr *$ps / clear processor priority
|
|
rts r0 / return
|
|
1:
|
|
mov r1,-(sp) / place character on stack
|
|
jsr r0,sleep; 3 / put process to sleep
|
|
mov (sp)+,r1 / place character in r1
|
|
br pptoc / try again to place character in clist and output
|
|
|
|
/lptoc: / line printer output control
|
|
/ mov $240,*$ps / set processor priority to five
|
|
/ cmpb cc+5,$200. / is character count for printer greater than or
|
|
/ equal to 200
|
|
/ bhis 1f / yes
|
|
/ jsr r0,putc; 5 / find place in freelist to assign to printer
|
|
/ and place
|
|
|