;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
\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
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
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
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
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
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
; 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
+\f;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE\r
\r
INTERNAL NULJOB,NULADR\r
EXTERNAL JOB,JBTDAT,JOBDAT,USRPRT,JOBPRT\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
; 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
; 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
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
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
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
IFN FTSWAP,<\r
TLNN TAC,CMWB\r
PUSHJ PDP,REQUE\r
-\r
>\r
POPJ PDP,\r
\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
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
\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
SOSL DCREQ ;NO, REDUCE DATA CONTROL REQUEST\r
SETOM DCAVAL ;SET AVAIL., SOME OTHER JOB WAITING FOR IT\r
JRST GETWT ;TRY AGAIN\r
-\f\r
-;ROUTINE TO WAIT FOR A SHARABLE DEVICE\r
+\f;ROUTINE TO WAIT FOR A SHARABLE DEVICE\r
;CALLED AT UUO LEVEL ONLY BY DEVICE SERVICE ROUTINES\r
;CALL: AOSLE XXREQ ;ADD 1 TO SHARABLE DEVICE REQUEST COUNT\r
; ;IS DEVICE AVAILABLE?\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
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
POPJ PDP, ;RETURN\r
PUSHJ PDP,WSYNC ;WAIT\r
JRST WAIT1\r
-\f\r
-;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE\r
+\f;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE\r
;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETE\r
;CALLED ONLY FROM UUO LEVEL\r
;CALL: MOVE DEVDAT,ADR. OF DEVICE DATA BLOCK\r