1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-01-11 23:53:34 +00:00
2008-04-26 00:04:36 +00:00

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