;FOR SCHEDULING JOBS AND ERROR HANDLING THAT THE USER\r
;IS NOT ENABLED TO HANDLE HIMSELF\r
\r
+\r
EXTERNAL TIME,TIMEF,CLKFLG,REQCLK,APRCHL,APRPC,UPTIME\r
EXTERNAL JOBDAT,JOBTPC,JOBCNI,JOBAPR,APRERR,SCHEDF\r
\r
INTERNAL FTTTYSER ;THIS ROUTINE MAY BE ASSEMBLED TO WORD EITHER\r
; THE OLD SCNSER OR THE NEW TTYSER.\r
\r
+\r
INTERNAL FTCHECK,FTMONP\r
\r
IFN FTCHECK+FTMONP,<\r
APRIN1: 0 ;USER ENABLED CPU FLAGS\r
CLKS17: 0 ;PLACE TO SAVE AC17 ON CLOCK INTERRUPT\r
DAMESS: ASCIZ /-JAN-/\r
-\r
CLOCK: POINT 36,CIPWTM,35 ;BYTE POINTER TO CLOCK REQ QUEUE\r
>\r
-\f\r
- INTERN APRINT\r
+\f INTERN APRINT\r
\r
APRINT: JRST APRPAR ;ALWAYS CHECK APR AND PI DEVICES\r
JRST . ;CHECK OTHER DEVICES\r
CONO PI,REQCLK ;REQUEST INTERRUPT ON CLK CHANNEL\r
CONSZ APR,@APRIN1 ;IS USER ENABLE FOR ANY FLAGS(INCLUDING CLOCK)\r
; RH ALSO MODIFIED EACH TIME A USER RUNS\r
- JRST APRER ;YES, GO PROCESS TRAP\r
+ JRST APRER1 ;YES, GO PROCESS TRAP\r
CONO APR,1000+APRCHN ;NO, CLEAR ONLY THE CLOCK FLAG\r
JEN @APRCHL ;DISMISS INTERRUPT\r
\r
TLNE TAC,USRMOD ;IS PC FROM USER MODE?\r
JRST APRER4 ;YES, GO TRAP TO HIM\r
JRST APRER2 ;NO. GO CHECK IN CASE ALSO A SERIOUS ERROR\r
-\f\r
-;OTHER APR INTERRUPTS BESIDES CLOCK\r
+\f;OTHER APR INTERRUPTS BESIDES CLOCK\r
\r
APRER: EXCH TAC,APRCHL ;SAVE TAC, GET PC\r
TLNE TAC,USRMOD ;IS PC IN USER MODE?\r
EXCH JDAT,JOBDAT ;RESTORE JDAT,JOBDAT\r
CONO APR,440+APRCHN ;DISBALE FOV, AROVF IN CASE ON\r
;SO USER MUST REENABLE WITH SETAPR UUO\r
-\r
APRER3: TLZ TAC,440000 ;CLEAR FOV (PC CHANGE ON PDP-6) AND AR OVF FLAGS\r
; SO INTERRUPT MAY BE DISMISSED\r
EXCH TAC,APRCHL ;RESTORE TAC & APRCHL\r
CONO APR,430110+APRCHN ;CLEAR ALL ERROR FLAGS WHICH CAN CAUSE INTERRUPTS\r
; EXCEPT CLOCK FLAG(ELSE LOSE TIME OF DAY)\r
JEN @APRCHL ;DISMISS INTERRUPT\r
-\f\r
-APRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE?\r
+\fAPRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE?\r
JRST APRER3 ;NO. IGNORE EXEC OVERFLOW (MUST BE FOV OR AROVF\r
MOVEM TAC,APRPC ;STORE ERROR PC FOR CLK CHANNEL\r
CONI APR,APRERR ;STORE ERROR FLAGS\r
>\r
JRST APRER3 ;NO,MUST BE UUO LEVEL(OR USER MODE AND\r
; MEMORY DROPPED OUT)\r
-\f\r
-SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK)\r
+\fSUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK)\r
\r
;THIS ROUTINE RUNS ON THE LOWEST PRIORITY PI CHANNEL AND AT UUO LEVEL\r
;TO CAUSE AN INTERRUPT ON CLK CHANNEL:\r
;THEN CALLS SCHEDULER\r
;IF THE CURRENT JOB IS IN EXEC MODE THE ABOVE 4 TASKS ARE\r
;DELAYED UNTIL THE CURRENT JOB ENTERS A STOPPABLE STATE: I.E., UNTIL\r
-\r
; 1. JOB STARTS TO WAIT FOR A BUSY SHARABLE DEVICE\r
; 2. JOB STARTS TO WAIT FOR A IO TO COMPLETE\r
; 3. CONTROL ABOUT TO RETURN TO USER MODE\r
MOVEI AC3,JOBDAC(JDAT) ;SAVE ACS 0-16 IN DUMP ACS\r
BLT AC3,JOBD16(JDAT) ;IN CURRENT JOB DATA AREA\r
MOVEI PDP,NULPDL ;NULL JOB PD LIST\r
- HRLI PDP,MJOBP1 ; OTHERWISE GET PD OUF\r
+ HRLI PDP,MJOBP1 ;USED TO CALL SCHEDULER AND COMMAND DECODE\r
+ ; OTHERWISE GET PD OUF\r
\r
JRST RSCHED ;GO RESCHEDULE\r
\r
+\r
;HERE AT UUO LEVEL WHEN CURRENT JOB RETURNS TO USER MODE\r
;FROM A UUO CALL AND EITHER:\r
; 1. CURRENT JOB TYPED CONTROL C WHILE IN EXEC MODE\r
JEN @CLKCHL\r
\r
SAVPC: MOVEM 17,USRPC ;SAVE PC IN PROTECTED PART OF SYSTEM DATA\r
-\r
; STORAGE FOR CURRENT JOB\r
CLKERR: SKIPN 17,JOBDAT ;CURRENT JOB DATA AREA, IS THERE ONE?\r
MOVEI 17,NULDAT ;NO, MUST BE NULL JOB OR CORE 0\r
SKIPE TAC,APRERR ;IT THIS AN ERROR INTERRUPT?\r
PUSHJ PDP,APRILM ;YES, GO PROCESS ERROR, APRILM WILL CLEAR APRERR\r
; FLAG IMMEDIATELY\r
-\f\r
-EXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD\r
-EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JDB,PMONTB\r
+\fEXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD\r
+EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JOB,PMONTB\r
\r
RSCHED: SKIPN TIMEF ;HAS CLOCK GONE OFF SINCE LAST CALL?\r
JRST CIP6 ;NO, JUST RESCHEDULE\r
ADDI TAC,1 ;MAKE IT NO. OF 1K BLOCKS\r
ADDM TAC,JBTKCT(ITEM) ;ADD IN ACCUMULATED CORE RUNNING TIME PRODUCT\r
; (KILO-CORE TICKS)\r
-\r
IFN FT2REL,<\r
EXTERN CHGHGH\r
PUSHJ PDP,CHGHGH ;CHARGE USER FOR HIGH SEGMENT IF HE HAS ONE\r
LDB TAC,PMONTB\r
CAMGE TAC,TAC1 ;END OF MONTH?\r
JRST CIP3 ;YES.\r
-\f\r
-;PROCESS TIMING REQUESTS STORED IN QUEUE\r
+\f;PROCESS TIMING REQUESTS STORED IN QUEUE\r
\r
CIP2: HRRZ STOR,CLOCK ;GET END OF LIST\r
CIP4: CAIN STOR,CIPWTM1 ;END YET?\r
MOVE TAC, @CLOCK\r
SOS CLOCK\r
MOVEM TAC, (STOR)\r
- CONI PI,PION\r
+ CONO PI,PION\r
LDB TAC, [POINT 6, TAC1, 23] ;GET 6 BIT DATA ITEM\r
MOVSS TAC1 ;SETUP DISPATCH ADDRESS\r
PUSH PDP, STOR ;SAVE ONLY VALUABLE AC\r
SETZM SCHEDF ;CLEAR FORCED SCHEDULING FLAG\r
CAMN ITEM,JOB ;IS NEXT JOB SAME AS LAST ONE?\r
JRST CIP8 ;YES, JUST RESTORE ACS AND DISMISS\r
-\f\r
-;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED)\r
+\f;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED)\r
\r
EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA\r
\r
; SINCE IT DOES IO INTO AND OUT OF\r
; CHANNEL LOCATIONS (JOBJDA+1..,JOBJDA+17),\r
ADD JA,T1 ;RELOCATE TO USER AREA\r
- BLT T,JOBJDA(JA) ; STOP WITH USER CHANNEL 0-1+C(USRHCU)\r
-\f\r
-;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE\r
+ BLT T,JOBJDA(JA) ;MOVE TO USER JOB DATA AREA\r
+ ; STOP WITH USER CHANNEL 0-1+C(USRHCU)\r
+\f;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE\r
\r
INTERNAL NULJOB,NULADR\r
EXTERNAL JOB,JBTDAT,JOBDAT,USRPRT,JOBPRT\r
MOVEI T,USRPRT ;NO, DEST,#PROTECTED AREA IN MONITOR\r
HRLI T,JOBPRT(JA) ;SOURCE#FIRST PROTECT LOC. IN JB DATA AREA\r
SKIPL T1,JOBHCU(JA) ;MOVE NO. OF USER IO CHAN. IN USE\r
- \r
CAILE T1,17 ;MUST BE 17 OR LESS(IO MIGHT CLOBBER\r
; IF ADRRESS CHECKING MISSES\r
MOVEI T1,0 ;MOVEJUST CHAN 0 IF NEG. OR GREATER THAN 17\r
HALT .+1\r
>\r
SETZB 0,NULERR ;CLEAR AC 0 USED FOR USUAL MONITORING\r
-\f\r
; CLEAR FLAG SAYING ERROR IN NULL JOB\r
; OF NULL TIME INTERVAL\r
; LOC JOBDAT (LOCATION OF NULL JOB DATA AREA) TO 0\r
; CATCH THEM NEXT CLK INTERRUPT\r
MOVE 1,[AOJA 0,1] ;INSTR. TO AC1\r
JRST 11,1 ;DISMISS IF INTERUPT IN PROGRESS.\r
-\f\r
-;ROUTINE TO SET HARDWARE AND SOFTWARE RELOCATION INFORMATION FOR CURRENT USER\r
+\f;ROUTINE TO SET HARDWARE AND SOFTWARE RELOCATION INFORMATION FOR CURRENT USER\r
;CALLED FROM:\r
; CLOCK ROUTINE WHEN NEW USER IS DIRRERENT FROM OLD USER\r
; CORE ROUTINE WHEN CORE REASSIGNED FOR CURRENT USER\r
EXTERN JOB,JBTADR,JOBADR,USRREL,JBTDAT,JOBDAT,JOBREL,KT10A\r
\r
SETREL: MOVE ITEM,JOB ;CURRENT JOB NUMBER\r
-\r
SETRL1: MOVE PROG,JBTADR(ITEM) ;XWD PROTECTION,RELOCATION FOR LOW SEG\r
MOVEM PROG,JOBADR ;SAVE TO MAKE UUO HANDLER FASTER\r
HLRZM PROG,USRREL ;SAVE PROTECTION FOR ADDRESS CHECKING\r
; OPTION DOES NOT COME WITH PANEL LIGHTS\r
; SO NOT STORE 0 FOR NULL JOB SO CAN SEE\r
; LAST JOB TO RUN IN LOC 33\r
-\f\r
-SETHRD: DATAO APR,PROG ;SET APR HARDWARE FOR RELOCATION AND PROTECTION\r
+\fSETHRD: DATAO APR,PROG ;SET APR HARDWARE FOR RELOCATION AND PROTECTION\r
; FOR LOW(AND HIGH SEGS)\r
SKIPN PROG,JOBADR ;RESTORE PROG TO XWD PROT,RELOC FOR JUST LOW SEG\r
; (IS THERE ONE)?\r
MOVE TAC,JOBENB(JA) ;USER APR CONSO FLAGS (THE ONES HE WANTS TO HANDLE\r
; FALL INTO SETAPR ROUTINE\r
\r
+\r
;ROUTINE TO ENABLE/DISABLE APR FOR TRAPPING TO USER AND EXEC\r
;CALL: MOVE TAC, APR, CONSO FLAGS FOR USER TRAPPING\r
; PUSHJ PDP,SETAPR\r
; FOV(PDP-10 ONLY) AND AR OVF SEPARATELY\r
CONO PI,PION ;ENABLE PI'S AGAIN\r
POPJ PDP,\r
-\f\r
-SUBTTL RUNCSS - RUN CONTROL(STATRING AND STOPPING OF JOBS)\r
+\fSUBTTL RUNCSS - RUN CONTROL(STATRING AND STOPPING OF JOBS)\r
\r
;RUN CONTROL IS A COLLECTION OF ROUTINES WHICH\r
;SET AND CLEAR BITS IN THE JOB STATUS WORDS OF\r
ANDCAM TAC,JBTSTS(ITEM)\r
IFN FTLOGIN,<\r
EXTERN PRJPRG\r
+\r
SETZM PRJPRG(ITEM) ;CLEAR PROJECT-PROGRAMMER NUMBER WHEN JOB LOGS OUT\r
>\r
; IF THIS IS THE LARGEST JOB IN USE,FIND NEXT\r
MOVSI TAC1,JNA ;YES,JOB NUMBER ASSGINED BIT\r
HRRZ TAC,ITEM ;SCAN DOWNWARD\r
TDNN TAC1,JBTSTS(TAC) ;IS JNA BIT SET FOR THIS JOB?\r
- SOJG TAC,-1 ;NO,KEEP LOOKING,FINISHED(TRUE IF THIS THE ONLY JOB\r
+ SOJG TAC,.-1 ;NO,KEEP LOOKING,FINISHED(TRUE IF THIS THE ONLY JOB\r
MOVEM TAC,HIGHJB ;YES,STORE NEW HIGHEST JOB NUMBER ASSIGNED\r
JRST ESTOP ;GO SET ERROR BIT\r
-\f\r
-;ROUTINE TO STOP JOB, SET ERROR BIT AND PRINT MESSAGE\r
+\f;ROUTINE TO STOP JOB, SET ERROR BIT AND PRINT MESSAGE\r
;THEM ADD ^TC<CRLF><CRLF><PERIOD>\r
;CALL: MOVEI TAC,ADR. OF MESSAGE\r
; PUSHJ PDP,PHOLD\r
\f\r
;ROUTINE TO STOP USER AND FLAG AS ERROR STOP\r
\r
+\r
INTERNAL ESTOP,ESTOP1\r
EXTERNAL JBTSTS,STUSER,STREQ,STAVAL\r
EXTERNAL SCHEDF,JOB,CPOPJ\r
MOVSI TAC,637163 ;FIND SYS DDB\r
PUSHJ PDP,DEVSRC ;SYSTEM ERROR IF NOT FOUND\r
JSP DAT,ERROR\r
-\r
PUSHJ PDP,RELEA9 ;YES, RELEASE SYSTEM TAPE WITHOUT WAITING\r
-\f\r
-;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED\r
+\f;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED\r
;CALL:\r
; MOVE ITEM, JOB NUMBER\r
; PUSHJ PDP, STOP1\r
IFN FTSWAP,<\r
JRST REQUE ;SET REQUE JOB FLAG\r
>\r
+\r
SKIPL TAC,JBTSTS(ITEM) ;RUN FLAG OFF?\r
TLNN TAC,JERR ;YES, ERROR FLAG ON?\r
JRST STOP2 ;NO\r
SETOM SCHEDF ;YES, FORCE RESCHEDULING EVEN IF JOB IN EXEC MODE\r
JRST STOP2 ;YES, MAKE CLK RESCHEDULE ANOTHER JOB\r
-\f\r
-;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED\r
+\f;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED\r
;WHICH NEEDS CORE AND THE CORE IMAGE IS ON THE DISK.\r
;OR IS IN CORE AND HAS ACTIVE DEVICES.\r
;CALLED FROM COMMAND DECODER\r
;CALL: MOVE ITEM,JOB NO.\r
- PUSHJ PDP,DLYCOM\r
+; PUSHJ PDP,DLYCOM\r
\r
INTERNAL DLYCOM\r
\r
IFN FTSWAP,<\r
TLNN TAC,CMWB\r
PUSHJ PDP,REQUE\r
-\r
>\r
POPJ PDP,\r
\r
-;ROUTINE TO PUT JONB IN NO CORE QUEUE\r
+;ROUTINE TO PUT JOB IN NO CORE QUEUE\r
+\r
\r
INTERNAL FTSWAP\r
IFN FTSWAP,<INTERNAL NOCORQ\r
EXTERNAL NULQ\r
\r
-NOCORQ: MOVEI TAC,NUL1 ;NO JOB NO. OR NO CORE QUEUE\r
+NOCORQ: MOVEI TAC,NULQ ;NO JOB NO. OR NO CORE QUEUE\r
DPB TAC,PJBSTS\r
JRST REQUE\r
>\r
-\f\r
-;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL\r
+\f;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL\r
;CALLED BY COMMANDS WHICH MAY OR MAY NOT NEED TO\r
;RUN MONITOR JOB DEPENDING ON WHETHER JOB HAS CORE(KJOB,IJOB)\r
;TTY WILL REMAIN IN MONITOR MODE\r
JRST SETRUN ;SET TTY TO START JOB WHEN COMMAND RESPONSE\r
; IS FINISHED AND KEEP TTY IN MONITOR MODE\r
\r
+\r
;ROUTINE TO SETUP ACS FOR MONITOR JOB STARTING AT UUO LEVEL\r
;SETS UP ITEM, WITH JOB NO.; PROG WITH RELOCATION, AND PDP\r
;WITH PUSH DOWN LIST ADR. IN JOB DATA AREA\r
PUSH PDP,TAC1 ;SAVE STOP ADDRESS\r
JRST (TAC) ;RETURN AND DO MONITOR JOB\r
; WITH TT DDB,OUTPUT BYTE POINTER, AND JOB NO.\r
-\f\r
-;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN\r
+\f;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN\r
;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS\r
;CALLED ONLY WHEN JOB IN CORE AND AFTER JOB HAS BEEN\r
;SAFELY STOPPED IN ONE OF 3 STATES:\r
USTART: MOVE TAC,JOBPC(JDAT) ;GET OLD PC\r
TLNE TAC,USRMOD ;IS IT IN USER MODE TOO?\r
JRST USTRT1 ;YES, DUMP ACS AND PC FLAGS ARE ALREADY HIS\r
-\r
MOVEI TAC,JOBDAC(JDAT) ;NO. MOVE USERS(UUO) ACS TO DUMP ACS\r
HRL TAC,JDAT ;SOURCE=REL, 0,DEST,=JOBDAC IN JOB DATA AREA\r
BLT TAC,JOBD17(JDAT) ;MOVE ALL ACS\r
MSTART: MOVEM TAC1,JOBPC(JDAT) ;STORE NEW PC\r
MOVSI TAC,JERR+WTMASK\r
ANDCAM TAC,JBTSTS(ITEM) ;CLEAR ERROR AND WAIT STATUS BITS\r
- ;SET TTY STATE TO INITAL COND.\r
+ JRST TTYSET ;SET TTY STATE TO INITAL COND.\r
; TTYUSR OR TTYURC SHOULD BE CALLED\r
; TO INDICATE WHETHER TTY TO USER OR EXEC MODE\r
; AND THAT JOB IS TO RUN(RUN BIT =1) WHEN\r
; MONITOR COMMAND RESPONSE FINISHES.\r
; SEE SETRUN BELOW\r
\f\r
+\r
;ROUTINE TO SET JOB STATUS RUN BIT(RUN)\r
;CALLED BY SCANNER SERVICE WHEN TTY MONITOR COMMAND\r
;RESPONSE FINISHES, THIS ACTION IS ENABLED BY CALLING\r
;JOB NO. IN AC TAC\r
\r
INTERNAL WAKE\r
-\r
-EXTERNAL PJSTS,RNQ,SLPQ\r
+EXTERNAL PJBSTS,RNQ,SLPQ\r
\r
WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE\r
MOVE ITEM,TAC ;JOB NO.\r
; (CONTROL C, START CAN GET JOB OUT SLEEP)\r
JRST SETR2\r
>\r
-\f\r
-;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE\r
+\f;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE\r
;JOB NEVER GETS ONE DEVICE AND WAITS FOR SECOND, SINCE TYPING\r
;CONTROL C WOULD NEVER FINISH WITH FIRST DEVICE\r
;CALL PUSHJ PDP,GETDCXX\r
EXTERNAL JOB,REQTAB\r
\r
MTWAIT:DTWAIT:DCWAIT:STWAIT:DAWAIT:MQWAIT:AUWAIT:\r
-\r
DVWAIT: MOVE AC1,(PDP) ;GET ADR. OF CALLER\r
MOVE AC1,-2(AC1) ;GEET AOSLE XXREQ INSTRUCTION\r
JRST .+2\r
\r
PJBS1: POINT JWSIZ,JBTSTS(AC3),JWPOS ;BYTE POINTER TO JOB STATUS\r
; WORD WAIT QUEUE CODE\r
-\f\r
-;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED\r
+\f;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED\r
;BECAUSE IT HAD TO WAIT FOR IO TO COMPLETE FOR SOME DEVICE\r
;EACH SERVICE ROUTINE WILL AT INTERRUPT LEVEL\r
;CHECK EACH TIME IT FINISHED A TASK(RUNFFERFUL)\r
\r
PJBS2: POINT JWSIZ,JBTSTS(TAC),JWPOS ;BYTE POINTER TO JOB STATUS\r
; WORD QUEUE CODE\r
+\r
STTIOD: MOVEI TAC1,TSQ ;SET TTY IO WAIT SATISFIED QUEUE CODE\r
AOS TSAVAL\r
JRST SETIO1\r
AOS WSAVAL ;INCR, NO, OF JOBS WITH IO WAIT\r
; SATISFIED, NON-ZERO WSAVAL WILL\r
; CAUSE SCHED, TO SCAN FOR IO\r
+ ; SATISFIED JOB.\r
SETIO1: LDB TAC,PJOBN\r
DPB TAC1,PJBS2 ;IN JOB STATUS WORD\r
\r
INTERNAL FTSWAP\r
IFN FTSWAP,<\r
EXTERN QJOB,JBTSTS\r
- MOVSI QJOB,JBTSTS\r
MOVSI TAC1,JRQ ;SET JOB TO BE REQUEUED AT NEXT CLOCK TICK\r
TDNN TAC1,JBTSTS(TAC) ;IS REQUE BIT ALREADY ON?\r
AOS QJOB ;NO, INCREMENT COUNT ONCE FOR EACH JOB\r
>\r
NULTST: SKIPE JOB ;IS NULL JOB RUNNING?\r
POPJ PDP, ;NO LET OTHER JOB RUN TILL SCHEDULER IS TRAPPED TO\r
-\f\r
-;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE\r
+\f;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE\r
;CALLED AT ANY LEVEL\r
;CALL: PUSHJ PDP,STOP2\r
; RETURN IMMEDIATELY EXCEPT IF AT UUO LEVEL\r
CONO PI,PICLK ;TURN PI BACK ON AND REQUESST INTERRUPT TO\r
; CLK PI CHANNEL(LOWEST PRIORITY CHANNEL)\r
POPJ PDP, ;INTERRUPT IMMEDIATELY IF AT UUO LEVEL\r
-\f\r
-;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE\r
+\f;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE\r
,CALLING SEQUENCE\r
, PUSHJ PDP, WAIT1\r
, EXIT ALWAYS RETURN HERE\r
; RETURN IMMEDIATELY IF DEVICE IS INACTIVE\r
; RETURN WHEN DEVICE FINISHES NEXT BUFFER IF IT IS ACTIVE\r
\r
+\r
INTERNAL WSYNC\r
EXTERNAL IOWQ,TIOWQ,PION,PIOFF\r
\r
TLNE AC3,DVTTY ;IS THIS DEVICE A TTY?\r
MOVEI AC1,TIOWQ ;YES, SET TTY WAIT STATE CODE\r
MOVE AC3,JOB ;CURRENT JOB NO.\r
-\r
MOVEI AC2,IOACT ;DEVICE ACTIVE BIT\r
CONO PI, PIOFF ;TURN PI OFF\r
TDNN AC2,DEVIOS(DEVDAT) ;IS THE DEVICE ACTIVE?\r
ANDCAB IOS, DEVIOS(DEVDAT) ;CLEAR DEVIVCE IO-WAIT BIT\r
POPJ PDP,\r
\r
+\r
CLKEND: END\r