-TITLE CLOCK1 - CLOCK, CONTEXT SWITCHING, AND JOB STARTING AND STOP ROUTINES - V412\r
-SUBTTL APRINT TH/TH/CHW TS 20 MAY 69\r
+TITLE CLOCK1 - CLOCK, CONTEXT SWITCHING, AND JOB STARTUP AND STOP ROUTINES - V412\r
+SUBTTL APRINT TH/TH/CHW TS 20 MAY 69\r
XP VCLOCK1,412\r
; PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP\r
\r
EXTERNAL APRILM,COMMAN,CONMES,DEVCHK,DEVSRC,ERROR,INLMES\r
EXTERNAL RELEA9,CRSHWD,CRASHX\r
\r
-INTERNAL FTTTYSER ;THIS ROUTINE MAY BE ASSEMBLED TO WORD EITHER\r
+INTERNAL FTTTYSER ;THIS ROUTINE MAY BE ASSEMBLED TO WORK WITH EITHER\r
; THE OLD SCNSER OR THE NEW TTYSER.\r
\r
\r
IFE FTCHECK+FTMONP,<\r
INTERN CLOCK,DAMESS\r
EXTERN CIPWTM\r
-APRCON: 231000 ;MONITOR ENABLED CPU FLAGS\r
-APRIN1: 0 ;USER ENABLED CPU FLAGS\r
-CLKS17: 0 ;PLACE TO SAVE AC17 ON CLOCK INTERRUPT\r
-DAMESS: ASCIZ /-JAN-/\r
+APRCON: 231000 ;MONITOR ENABLED CPU FLAGS\r
+APRIN1: 0 ;USER ENABLED CPU FLAGS\r
+CLKS17: 0 ;PLACE TO SAVE AC17 ON CLOCK INTERRUPT\r
+DAMESS: ASCIZ /-JAN-/\r
CLOCK: POINT 36,CIPWTM,35 ;BYTE POINTER TO CLOCK REQ QUEUE\r
>\r
\f INTERN APRINT\r
APRINT: JRST APRPAR ;ALWAYS CHECK APR AND PI DEVICES\r
JRST . ;CHECK OTHER DEVICES\r
\r
-APRPCL: CONO PI,240000 ;TURN OFF MEM PAR, ERR, AND\r
+APRPCL: CONO PI,240000 ;TURN OFF MEM PAR. ERR, AND\r
; ENABLE FOR MEM PAR AND TRY AGAIN\r
; (DO NOT TURN OFF POWR FAIL AS THAT PERMANENTLY\r
; DISABLES POWR FAIL INTERRUPT)\r
-APRPAR: CONSZ PI,600000 ;MEM PARITY ERROR OR POWER FAILURE?\r
+APRPAR: CONSZ PI,600000 ;MEM PARITY ERROR OR POWER FAILURE?\r
HALT APRPCL ;YES, HALT MACHINE, CLEAR FLAGS AND TRY AGAIN\r
; ON CONTINUE\r
CONSO APR,@APRCON ;INTERRUPT FOR APR?\r
; RH MODIFIED EACH TIME USER RUNS IN CASE HE IS\r
; ENABLED FOR PC CHANGE OR AR OVF\r
JRST APRINT+1 ;NO,CHECK OTHER DEVICES ON THIS PI CHANNEL\r
- SKIPE CRSHWD ;IS LOC, 30 CLOBBERED?\r
- JRST CRASHX ;YES ~ GO SAVE AC'S & STATE OF ALL DEVS,\r
+ SKIPE CRSHWD ;IS LOC. 30 CLOBBERED?\r
+ JRST CRASHX ;YES - GO SAVE AC'S & STATE OF ALL DEVS.\r
CONSO APR,001000 ;YES, IS IT CLOCK?\r
JRST APRER ;NO, GO CHECK ERROR FLAGS\r
AOS TIME ;YES, INCREMENT TIME OF DAY\r
EXCH TAC,APRCHL ;SAVE TAC, GET PC\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
+ JRST APRER2 ;NO, GO CHECK IN CASE ALSO A SERIOUS ERROR\r
\f;OTHER APR INTERRUPTS BESIDES CLOCK\r
\r
APRER: EXCH TAC,APRCHL ;SAVE TAC, GET PC\r
HRRM TAC,APRCON ;PD OVF,ILM,NXM, AND CLOCK\r
HRR TAC,JOBAPR(JDAT) ;GET USER LOC TO TRAP TO\r
EXCH JDAT,JOBDAT ;RESTORE JDAT,JOBDAT\r
- CONO APR,440+APRCHN ;DISBALE FOV, AROVF IN CASE ON\r
+ CONO APR,440+APRCHN ;DISABLE FOV, AROVF IN CASE ON\r
;SO USER MUST REENABLE WITH SETAPR UUO\r
APRER3: TLZ TAC,440000 ;CLEAR FOV (PC CHANGE ON PDP-6) AND AR OVF FLAGS\r
; SO INTERRUPT MAY BE DISMISSED\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
-\fAPRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE?\r
- JRST APRER3 ;NO. IGNORE EXEC OVERFLOW (MUST BE FOV OR AROVF\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
; (ALSO USED AS ERROR FLAG)\r
SETOM CLKFLG ;SET FLAG FOR CLK INTERRUPT\r
SETOM SCHEDF ;FLAG THAT RESCHEDULING IS NEEDED\r
- ; (EVEN THROUGH PC MAY BE IN EXEC MODE)\r
+ ; (EVEN THOUGH PC MAY BE IN EXEC MODE)\r
CONO PI,REQCLK ;REQUEST INTERRUPT IN CLK CHANNEL\r
CONSZ APR,ILM ;WAS ERROR ILLEGAL MEMORY(FROM USER)?\r
HRRI TAC,0 ;YES,CLEAR RH OF PC,SO A SECOND ILM INTERRUPT\r
- ; WILL NOT OCCUR IF THIS IS A WILD(AND A PDP-10)\r
+ ; WILL NOT OCCUR IF THIS IS A WILD PC(AND A PDP-10)\r
IFN FTHALT,<\r
CONSZ PI,003400 ;ARE ANY PI'S IN PROGRESS OF LOWER PRIORITY THAN APR?\r
; (PDP-10 BITS ONLY)\r
;THIS ROUTINE RUNS ON THE LOWEST PRIORITY PI CHANNEL AND AT UUO LEVEL\r
;TO CAUSE AN INTERRUPT ON CLK CHANNEL:\r
; SETOM CLKFLG ;FLAG THAT INTERRUPT HAS BEEN REQUESTED\r
-; CONO PI,CLKREQ ;REQUEST PI INTERRUPT ON LOWEST PI CHANNEL\r
+; CONO PI,CLKREQ ;REQUEST PI INTERUPT ON LOWEST PI CHANNEL\r
;THE FOLLOWING OTHER FLAGS MUST ALSO BE SET\r
;APRERR-APR DETECTED ERROR IN CURRENT JOB\r
-;SCHEDF-RESCHEDULING MUST TAKE PLACE(EVEN THROUGH PC IN EXEC MODE)\r
+;SCHEDF-RESCHEDULING MUST TAKE PLACE(EVEN THOUGH PC IN EXEC MODE)\r
;TIMEF-APR CLOCK HAS TICKED ON HIGH PRIORITY CHANNEL\r
;SEE APRSER AND RUNCSS TO SEE HOW THIS ROUTINE IS CALLED\r
\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
; 1. JOB STARTS TO WAIT FOR A BUSY SHARABLE DEVICE\r
-; 2. JOB STARTS TO WAIT FOR A IO TO COMPLETE\r
+; 2. JOB STARTS TO WAIT FOR IO TO COMPLETE\r
; 3. CONTROL ABOUT TO RETURN TO USER MODE\r
-;THEN CLK SERVICE IS ENTERED AT THE UU0 LEVEL\r
+;THEN CLK SERVICE IS ENTERED AT THE UUO LEVEL\r
\r
STOR=DAT\r
T=TAC\r
; CONO PI,PIOFF\r
; IDPB AC,CLOCK ;STORE CLOCK REQUEST IN QUEUE\r
; CONO PI,PION ;TURN PI BACK ON\r
-;C(AC)=XWD ADDRESS,NO. OF CLOCK TICKS*DATA*10000\r
+;C(AC)=XWD ADDRESS,NO. OF CLOCK TICKS+DATA*10000\r
;WHERE DATA IS 6 BITS OF INFO NEEDED WHEN TIME RUNS OUT\r
;CLK SERVICE WILL PUSHJ PDP,ADR\r
;WHEN TIME RUNS OUT WITH DATA RIGHT JUSTIFIED IN AC TAC\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 ;USED TO CALL SCHEDULER AND COMMAND DECODE\r
+ HRLI PDP,MJOBP1 ;USED TO CALL SCHEDULER AND COMMAND DECODER\r
; OTHERWISE GET PD OUF\r
\r
JRST RSCHED ;GO RESCHEDULE\r
MOVEI 16,JOBDAC(17) ;SOURCE=0,DESTINATION=DUMP AC 0\r
BLT 16,JOBD15(17) ;SAVE ACS 0-15 JUST BELOW AC 16\r
MOVE TAC,CLKS17 ;NOW SAVE 17 IN JOB DATA AREA\r
- MOVEM TAC,JOBD17(17) ;ALONE WITH OTHER ACS\r
+ MOVEM TAC,JOBD17(17) ;ALONG WITH OTHER ACS\r
MOVEI PDP,NULPDL ;SET UP PUSH DOWN LIST IN NULL JOB DATA\r
; AREA IN LOWER CORE\r
HRLI PDP,MJOBP1 ;-LENGTH+1(LEAVE ROOM FOR UUO PC)\r
SKIPE TAC,APRERR ;IT THIS AN ERROR INTERRUPT?\r
- PUSHJ PDP,APRILM ;YES, GO PROCESS ERROR, APRILM WILL CLEAR APRERR\r
+ PUSHJ PDP,APRILM ;YES, GO PROCESS ERROR,APRILM WILL CLEAR APRERR\r
; FLAG IMMEDIATELY\r
\fEXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD\r
EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JOB,PMONTB\r
JRST INCTIM ;NO-PROCEED NORMALLY\r
AOS LSTWRD ;YES-INCREMENT LOST TIME COUNT\r
SETZM POTLST ;AND CLEAR LOST TICK INDICATION\r
-INCTIM: AOS RTIME(ITEM) ;INCR, CURRENT JOB INCREMENTAL RUN TIME\r
- AOS TTIME(ITEM) ;INCR, CURRENT JOB TOTAL RUN TIME\r
+INCTIM: AOS RTIME(ITEM) ;INCR. CURRENT JOB INCREMENTAL RUN TIME\r
+ AOS TTIME(ITEM) ;INCR. CURRENT JOB TOTAL RUN TIME\r
>\r
IFN FTKCT,<\r
EXTERN USRREL,JBTKCT\r
MOVE TAC1,TIME\r
CAMGE TAC1,MIDNIT ;GONE PAST MIDNITE?\r
JRST CIP2 ;NO\r
-CIP3: SETZB IOS,TIME ;YES, RESET TIME OF DAY\r
+CIP3: SETZB IOS,TIME ;YES. RESET TIME OF DAY\r
AOS TAC,THSDAT ;UPDATE DAY\r
IDIVI TAC,^D31\r
DIVI IOS,^D12 ;NO.\r
POP PDP, STOR\r
SOJA STOR, CIP4 ;GO BACK FOR MORE REQUESTS\r
\r
-CIP5: SOSG HNGTIM ;DECREMENT HUNG ID DEVICE\r
- PUSHJ PDP,DEVCHK ;GO CHECK FOR HUNG ID DEVICES\r
+CIP5: SOSG HNGTIM ;DECREMENT HUNG IO DEVICE\r
+ PUSHJ PDP,DEVCHK ;GO CHECK FOR HUNG IO DEVICES\r
SKIPE COMCNT ;ANY COMMANDS TO PROCESS?\r
PUSHJ PDP,COMMAND ;YES, CALL COMMAND DECODER\r
CIP6: PUSHJ PDP,NXTJOB ;CALL SCHEDULER\r
SETZM CLKFLG ;CLEAR CLK INTERRUPT FLAG\r
; SET ON ALL FORCED CLK INTERRUPTS\r
- SETZM TIMEF ;CLEAR TIME0 (1 JIFFY) INTERRUPT FLAG,\r
+ SETZM TIMEF ;CLEAR TIMED (1 JIFFY) INTERRUPT FLAG.\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;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
SKIPN JA,JOBDAT ;NULL JOB OR CORE 0 ON OLD JOB?\r
- JRST CIP7 ;YES, DO NOT SAVE SOFTWARE STATE\r
- MOVEI T,JOBPRT(JA) ;DEST,#FIRST LOC PROTECTED FROM USER\r
- HRLI T,USRPRT ;SOUR,#SYSTEM DATA STORAGE FOR CURRETN JOB\r
+ JRST CIP7 ;YES, DO NO SAVE SOFTWARE STATE\r
+ MOVEI T,JOBPRT(JA) ;DEST.=FIRST LOC PROTECTED FROM USER\r
+ HRLI T,USRPRT ;SOUR.=SYSTEM DATA STORAGE FOR CURRETN JOB\r
SKIPL T1,USRHCU ;MOVE NO. OF OLD USER IO CHAN. IN USE\r
CAILE T1,17 ;MUST BE 17 OR LESS(IO MIGHT\r
; CLOBBER IF ADDRESS CHECKING MISSES)\r
MOVEI T1,0 ;MOVE ONLY CHN 0 IF NEG, OR GR 17\r
; SAVGET SETS LH NEGATIVE DURING IO AS A FLAG\r
; SINCE IT DOES IO INTO AND OUT OF\r
- ; CHANNEL LOCATIONS (JOBJDA+1..,JOBJDA+17),\r
+ ; CHANNEL LOCATIONS (JOBJDA+1...JOBJDA+17).\r
ADD JA,T1 ;RELOCATE TO USER AREA\r
BLT T,JOBJDA(JA) ;MOVE TO USER JOB DATA AREA\r
; STOP WITH USER CHANNEL 0-1+C(USRHCU)\r
SKIPN JA ;DOES JOB HAVE CORE ASSIGNED?\r
HALT . ;NO -ELSE CLOBBER MONITOR\r
>\r
- MOVEI T,USRPRT ;NO, DEST,#PROTECTED AREA IN MONITOR\r
- HRLI T,JOBPRT(JA) ;SOURCE#FIRST PROTECT LOC. IN JB DATA AREA\r
+ MOVEI T,USRPRT ;NO, DEST.=PROTECTED AREA IN MONITOR\r
+ HRLI T,JOBPRT(JA) ;SOURCE=FIRST PROTECTED LOC. IN JB DATA AREA\r
SKIPL T1,JOBHCU(JA) ;MOVE NO. OF USER IO CHAN. IN USE\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
- ; SAVEGET SETS NUG,DURING IO\r
+ ; SAVEGET SETS NEG.DURING IO\r
BLT T,USRJDA(T1) ;AND MOVE INTO MONITOR\r
\r
;RESTORE HARDWARE STATE OF CURRENT JOB\r
; (ON CLK PI OR HIGHER)\r
JRST CLKERR ;YES, GO PROCESS ERROR\r
SKIPN JOB ;IS THIS JOB THE NULL JOB?\r
- SKIPN NULERR ;YES, HAS AN ERROR OCCURED WHILE NULL JOB\r
+ SKIPN NULERR ;YES, HAS AN ERROR OCCURRED WHILE NULL JOB\r
; WAS RUNNING? IF YES, RESTORE ACS\r
; ILL UUO LOSED ACS\r
JEN @USRPC ;DISMISS CHANNEL(IF INTERRUPT IN PROGRESS)\r
\r
;THE NULL JOB\r
-;RUNS IN USER MODE WITH PC=1 AND COUNTS AND AC 0\r
+;RUNS IN USER MODE WITH PC=1 AND COUNTS IN AC 0\r
\r
EXTERNAL APRNUL,TIME,THSDAT,MIDNIT,NULERR\r
\r
NULJB:\r
-IFN FTCHECK,<EXTERNAL MONPRTR,MONSUM,CHECK\r
+IFN FTCHECK,<EXTERNAL MONPTR,MONSUM,CHECK\r
MOVE TAC,MONPTR\r
PUSHJ PDP,CHECK\r
CAME TAC1,MONSUM\r
; WHILE CLK IN PROGRESS\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
+ JRST 11,1 ;DISMISS IF INTERUPT IN PROGRESS\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
; CALL RESET UUO\r
; CALL SETUWP UUO\r
\r
-;CALL: STORE RELOCATION AND PROTECTION FOR LOW SEQ IN JOBADR(JOB NUMBER)\r
+;CALL: STORE RELOCATION AND PROTECTION FOR LOW SEG IN JOBADR(JOB NUMBER)\r
; STORE LENGTH-1 AND ABS ORIGIN FOR HIGH SEG IN JBTADR(HIGH SEG NO)\r
; (MOVE ITEM,JOB NUMBER - IF CALLING SETRL1)\r
; PUSHJ PDP,SETREL OR SETRL1\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
- ; (HIGHEST LEGAL REL ADDRES FOR CURRENT USER IN LOW SET)\r
+ ; (HIGHEST LEGAL REL ADDRES FOR CURRENT USER IN LOW SEG)\r
IFN JDAT-PROG,<\r
MOVE JA,JBTDAT(ITEM) ;LOC OF JOB DATA AREA\r
MOVEM JA,JOBDAT ;SAVE IT TOO FOR UUO HANDLER\r
SKIPN PROG,JOBADR ;RESTORE PROG TO XWD PROT,RELOC FOR JUST LOW SEG\r
; (IS THERE ONE)?\r
TDZA TAC,TAC ;NO, MUST BE NULL JOB OR CORE0 OR KJOB\r
- ; SET FOR NO SPECIAL INTERRUTPS TO USER\r
+ ; SET FOR NO SPECIAL INTERRUPTS TO USER\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
-; RETUNRN WITH APR RESET AND INTERRUPT LOCATION CONS'S SET\r
+;CALL: MOVEI TAC, APR CONSO FLAGS FOR USER TRAPPING\r
+; PUSHJ POP,SETAPR\r
+; RETURN WITH APR RESET AND INTERRUPT LOCATION CONSO'S SET\r
\r
INTERN SETAPR\r
EXTERN APRFOV\r
\r
-SETAPR: ANDI TAC,231010+APRFOV ;MASK OUT ALL BUT PD OVF, ILL MEM, NXM,\r
+SETAPR: ANDI TAC,231010+APRFOV ;MASK OUT ALL BUT PD OVF, ILL MEM, NXM,\r
; CLOCK, FOV(ONLY PDP-10), AND AROVF CONSO FLAGS\r
; FOV=PC CHANGE ON PDP-6 WHICH IS NEVER ALLOWED\r
; UNDER TIME SHARING BECAUSE IT TRAPS MONITOR TOO\r
HRLS TAC ;PRESERVE USER BITS IN LH\r
TRO TAC,231000 ;MAKE SURE MONITOR ALWAYS LOOKING FOR\r
- ; PD OVF, IL;M, NXM, CLOCK FLAGS\r
- MOVE TAC1,TAC ;DUPLICATE BITS IN TAC1 FOR CONO TO APR\r
+ ; PD OVF, ILM, NXM, CLOCK FLAGS\r
+ MOVE TAC1,TAC ;DUPLICATE BITS IN TAC1 FOR CONO TO APR.\r
XORI TAC1,110 ;COMPLEMENT FOV(PDP-10 ONLY) AND AROV FLAGS\r
ADDI TAC1, 330 ;SET DISABLE OR ENABLE FOR EACH\r
ANDI TAC1,660 ;MASK OUT ALL BUT DISABLE/ENABLE\r
; FOV(PDP-10 ONLY) AND AR OVF SEPARATELY\r
CONO PI,PION ;ENABLE PI'S AGAIN\r
POPJ PDP,\r
-\fSUBTTL RUNCSS - RUN CONTROL(STATRING AND STOPPING OF JOBS)\r
+\fSUBTTL RUNCSS - RUN CONTROL(STARTING 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
;COMMON ERROR STOPPING ROUTINES\r
;CALLED AT ANY LEVEL(UUO,CLK, OR INTERRUPT)\r
;CALL: MOVE ITEM,JOB CAUSING ERROR OR BEING STOPPED\r
-; MOVE DEVDAT,ADDRESS OF THAT JOB TTYP DEVICE DATA BLOCK\r
-; MOVE DAT,BYTE POINTER TO LAST CHAR, ALEADY MOVED\r
-; :TO TTY OUTPUT BUFFER\r
+; MOVE DEVDAT,ADRRESS OF THAT JOB TTY DEVICE DATA BLOCK\r
+; MOVE DAT,BYTE POINTER TO LAST CHAR. ALREADY MOVED\r
+; ;TO TTY OUTPUT BUFFER\r
; PUSHJ PDP,KSTOP,PHOLD,HOLD,OR ESTOP\r
; NEVER RETURN IF CALLED AT UUO LEVEL\r
\r
-;ROUTINE TO STOP JONB AFTER KJOB COMMAND\r
+;ROUTINE TO STOP JOB AFTER KJOB COMMAND\r
;CALLED AT UUO LEVEL IF JOB HAD CORE,CLK LEVEL IF NOT\r
\r
INTERNAL KSTOP\r
; IF THIS IS THE LARGEST JOB IN USE,FIND NEXT\r
; HIGHEST AND SET HIGHJB\r
CAMGE ITEM,HIGHJB ;IS THIS THE BIGGEST JOB NUMBER ASSIGNED?\r
- JRST ESTOP ;NO, LEAVE HOLD\r
- MOVSI TAC1,JNA ;YES,JOB NUMBER ASSGINED BIT\r
+ JRST ESTOP ;NO, LEAVE HOLE\r
+ MOVSI TAC1,JNA ;YES,JOB NUMBER ASSIGNED 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
MOVEM TAC,HIGHJB ;YES,STORE NEW HIGHEST JOB NUMBER ASSIGNED\r
JRST ESTOP ;GO SET ERROR BIT\r
\f;ROUTINE TO STOP JOB, SET ERROR BIT AND PRINT MESSAGE\r
-;THEM ADD ^TC<CRLF><CRLF><PERIOD>\r
+;THEN ADD ^C<CRLF><CRLF><PERIOD>\r
;CALL: MOVEI TAC,ADR. OF MESSAGE\r
; PUSHJ PDP,PHOLD\r
\r
\r
PHOLD: PUSHJ PDP,CONMES ;MOVE MESSAGE TO TTY OUTPUT BUFFER\r
; FALL INTO HOLD\r
-;ROUTINE TO STOP JOB, SET ERROR BIT.\r
+;ROUTINE TO STOP JOB, SET ERROR BIT,\r
;AND ADD "^C<CRLF><CRLF><PERIOD>\r
\r
INTERNAL HOLD,HOLD1\r
./\r
\r
HOLD1: PUSHJ PDP,TTYSTC ;MAKE SURE TTY STAYS IN MONITOR MODE\r
- ; AND START TTYP TYPING OUTMESSAGE\r
+ ; AND START TTY TYPING OUT MESSAGE\r
; FALL INTO ESTOP\r
\f\r
;ROUTINE TO STOP USER AND FLAG AS ERROR STOP\r
\r
ESTOP: JUMPE ITEM,CPOPJ ;IS THIS ERROR IN JOB 0?\r
MOVSI TAC,JACCT ;NO, CLEAR ACCOUNTING BIT(IN CASE LOGGING\r
- ANDCAM TAC,JBTSTS(ITEM) ;IN OR OUT0 SO USER CAN USE CONTROL C\r
+ ANDCAM TAC,JBTSTS(ITEM) ;IN OR OUT) SO USER CAN USE CONTROL C\r
; TO RECOVER\r
-ESTOP1: MOVSI TAC,JERR ;SSET ERROR BIT IN JOB STATUS WORD\r
+ESTOP1: MOVSI TAC,JERR ;SET ERROR BIT IN JOB STATUS WORD\r
IORM TAC,JBTSTS(ITEM) ;SO JOB CAN NOT CONTINUE(CONT COM.)\r
CAME ITEM,STUSER ;SYSTEM TAPE USER?\r
JRST STOP1 ;NO\r
PUSHJ PDP,DEVSRC ;SYSTEM ERROR IF NOT FOUND\r
JSP DAT,ERROR\r
PUSHJ PDP,RELEA9 ;YES, RELEASE SYSTEM TAPE WITHOUT WAITING\r
-\f;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED\r
+\f;ROUTINE TO STOP ANY JOB FROM BEING SCHEDULED\r
;CALL:\r
; MOVE ITEM, JOB NUMBER\r
; PUSHJ PDP, STOP1\r
; EXIT ;RETURN HERE IMMEDIATELY, IF CALLED FROM HIGHER\r
;PRIORITY PI CHANNEL THAN CLK(LOWEST), OTHERWISE WHEN JOB IS RUNABLE\r
;CALLED FROM COMMAND DECODER WHEN <CONTROL>C TYPED IN BY USER\r
-;OR ON ANY ERROR MESSAGE(SFE PREVIOUS PAGE)\r
+;OR ON ANY ERROR MESSAGE(SEE PREVIOUS PAGE)\r
\r
INTERNAL STOP1\r
EXTERNAL JBTSTS,PJBSTS,REQTAB,JOB,STUSER,MAXQ,AVALTB\r
\r
-STOP1: MOVSI TAC,RUN \r
- CONO PI,PIOFF ;DONE AT INTERRUPT LEVEL HIGHER THEN DT LEVEL\r
- CAME ITEM,STUSER ;IS THIS JOB CURRENTLY USING THE SYTEM TAPE?\r
+STOP1: MOVSI TAC, RUN\r
+ CONO PI, PIOFF ;DONE AT INTERUPT LEVEL HIGHER THAN DT LEVEL\r
+ CAME ITEM,STUSER ;IS THIS JOB CURRENTLY USING THE SYSTEM TAPE?\r
TDNN TAC,JBTSTS(ITEM) ;NO, IS RUN BIT OFF IN JOB STATUS WORD\r
JRST STOP1A ;YES\r
ANDCAM TAC,JBTSTS(ITEM) ;NO, SO CLEAR IT\r
- CONO PI,PION\r
+ CONO PI, PION\r
LDB TAC,PJBSTS ;GET JOB WAIT QUEUE CODE(IF ANY)\r
CAIG TAC,MAXQ ;DOES STATE HAVE Q ?\r
SOSL REQTAB(TAC) ;YES. REDUCE IT.\r
JRST STOP1A ;NO\r
SOSGE AVALTB(TAC) ;YES REDUCE COUNT\r
SETZM AVALTB(TAC) ;CLEAR AVAL FLAG IF NO ONE WAITING\r
-STOP1A: CONO PI,PION ;MAKE SURE PI ON\r
- CAME ITEM, JOB ;NO. IS THIS JONB CURRENT USER\r
+STOP1A: CONO PI, PION ;MAKE SURE PI ON\r
+ CAME ITEM, JOB ;NO, IS THIS JOB CURRENT USER\r
\r
INTERNAL FTSWAP\r
\r
>\r
\r
SKIPL TAC,JBTSTS(ITEM) ;RUN FLAG OFF?\r
- TLNN TAC,JERR ;YES, ERROR FLAG ON?\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
;SETS UP ITEM, WITH JOB NO.; PROG WITH RELOCATION, AND PDP\r
;WITH PUSH DOWN LIST ADR. IN JOB DATA AREA\r
;USED BY KJOB,CORE 0,SAVE,GET,RUN,R,REASSIGN AND FINISH COMMANDS\r
-;CALL: MOVEI TAC1,MONITOR JOB START ADDRESS\r
+;CALL: MOVEI TAC1,MONITOR JOB STOP ADDRESS\r
; JSP TAC,MONSTR\r
; RETURN WITH ACS PDP,PROG,JDAT, AND ITEM SETUP\r
\r
MONSTR: MOVE ITEM,JOB ;CURRENT JOB NUMBER\r
MOVE JDAT,JBTDAT(ITEM) ;ADR. OF JOB DATA AREA\r
IFN JDAT-PROG,<\r
- MOVE PROG,JBTADDR(ITEM) ;JOB RELOCATION\r
+ MOVE PROG,JBTADR(ITEM) ;JOB RELOCATION\r
>\r
MOVSI PDP,MJOBPD ;MINUS LENGTH OF SYSTEM PD LIST\r
HRRI PDP,JOBPDL(JDAT) ;FIRST LOC.-1 OF PD LIST\r
- PUSH PDP,TAC1 ;SAVE STOP ADDRESS\r
+ PUSH PDP,TAC1 ;SAVE STOP ADRRESS\r
JRST (TAC) ;RETURN AND DO MONITOR JOB\r
- ; WITH TT DDB,OUTPUT BYTE POINTER, AND JOB NO.\r
+ ; WITH TTY DDB,OUTPUT BYTE POINTER, AND JOB NO.\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
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
- 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
+ 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
MOVE TAC,JOBPD1(JDAT) ;UUO PC HAS LAST PC\r
HRRI TAC,-1(TAC) ;SUBTRACT 1 FROM RIGHT HALF AND\r
- ; PRESERVE LH PC FLAGS\r
+ ; PRESERVE LH PC FLAGS.\r
; (RH=0 ON HALT 0 OR FIRST START)\r
USTRT1: MOVEM TAC,JOBOPC(JDAT) ;STORE OLD PC FOR USER TO LOOK AT\r
HLL TAC1,TAC ;PRESERVE USER APR FLAGS\r
TLO TAC1,USRMOD ;MAKE SURE NEW PC IN USER MODE\r
TLZ TAC1,37 ;MAKE SURE NO INDIRECT BITS OR INDEX FIELD\r
- \r
+\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
- JRST TTYSET ;SET TTY STATE TO INITAL COND.\r
+ JRST TTYSET ;SET TTY STATE TO INITIAL 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
\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
-;TTYUSR. OR TTYURC IN SCNSER\r
-;CALL: MOVE ITEM,JOB NUMBER\r
+;RESPONSE FINISHES. THIS ACTION IS ENABLED BY CALLING\r
+;TTYUSR, OR TTYURC IN SCNSER\r
+;CALL: MOVE ITEM,JOB NUMBER\r
; PUSHJ PDP,SETRUN\r
\r
INTERNAL SETRUN\r
JRST SETR1 ;OTHERS WAITING?\r
AOSG AVALTB(TAC) ;MAKE AVAILABLE\r
SETOM AVALTB(TAC) ;FLAG AS JUST AVAILABLE, BECAUSE\r
- ; NO JONB WAS USING DEVICE. SCHEDULER\r
+ ; NO JOB WAS USING DEVICE. SCHEDULER\r
; WILL SCAN THIS QUEUE\r
SETR1: MOVSI TAC,RUN ;SET RUN BIT IN JOB STATUS WORD\r
IORM TAC,JBTSTS(ITEM) \r
\r
REQUE: MOVSI TAC,JRQ ;MARK JOB TO BE REQUEUED WITH JRQ BIT\r
TDNN TAC,JBTSTS(ITEM) ;INCREMENT COUNT ONLY ONCE FOR EACH JOB\r
- AOS QJOB ;INCREMENT COUNT OF NO. OF JOBS WAITING TO BE REUEUED\r
-\r
+ AOS QJOB ;INCREMENT COUNT OF NO. OF JOBS WAITING TO BE REQUEUED\r
IORM TAC,JBTSTS(ITEM) ;SET REQUE BIT FOR SCHEDULER\r
POPJ PDP,\r
\r
ANDCAM TAC,JBTSTS(ITEM) ;SO IT CAN PUT ANOTHER ONE IN\r
LDB TAC,PJBSTS ;GET QUEUE CODE\r
CAIE TAC,SLPQ ;IS JOB STILL SLEEPING?\r
- POPJ PDP, ;NO, RETURN TO CLOCK ROUTINE\r
+ POPJ PDP, ;NO. RETURN TO CLOCK ROUTINE\r
DPB TAC1,PJBSTS ;YES, STORE RUN QUEUE CODE\r
- ; (CONTROL C, START CAN GET JOB OUT SLEEP)\r
+ ; (CONTROL C, START CAN GET JOB OUT OF SLEEP)\r
JRST SETR2\r
>\r
\f;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE\r
SOSL REQTAB(AC1) ;REDUCE REQ. COUNT FOR OTHER\r
; SHARABLE DEVICE.\r
SETOM AVALTB(AC1) ;SET AVAILABLE IF OTHER JOBS WAITING\r
- JFCL DCREQ ;ARGUMENT FOR DCQAIT\r
+ JFCL DCREQ ;ARGUMENT FOR DCWAIT\r
PUSHJ PDP,DCWAIT ;WAIT FOR DATA CONTROL FREE\r
MOVE AC1,@(PDP) ;INCREMENT REQ. COUNT\r
AOSN @AC1 ;NOW IS SHARABLE DEVICE FREE?\r
\r
MTWAIT:DTWAIT:DCWAIT:STWAIT:DAWAIT:MQWAIT:AUWAIT:\r
DVWAIT: MOVE AC1,(PDP) ;GET ADR. OF CALLER\r
- MOVE AC1,-2(AC1) ;GEET AOSLE XXREQ INSTRUCTION\r
+ MOVE AC1,-2(AC1) ;GET AOSLE XXREQ INSTRUCTION\r
JRST .+2\r
DVWAT1: MOVE AC1,@-1(PDP) ;GET ADR. OF CALLER OF THIS ROUTINE\r
SUBI AC1,REQTAB ;COMPUTE WAIT-STATE QUEUE CODE\r
; WORD WAIT QUEUE CODE\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
+;EACH SERVICE ROUTINE AT INTERRUPT LEVEL\r
+;CHECK EACH TIME IT FINISHED A TASK(BUFFERFUL)\r
;TO SEE IF THE JOB USING THE DEVICE HAS\r
;PREVIOUSLY CAUGHT UP WITH DEVICE AND HAS BEEN STOPPED\r
-;CALL: MOVE DEVDAT,ADR, OF DEVICE DATA BLOCK\r
+;CALL: MOVE DEVDAT,ADR. OF DEVICE DATA BLOCK\r
; MOVE IOS,DEVIOS(DEVDAT) ;GET DEVICE IO STATUS WORD FROM DDB\r
-; TLZE IOS,IOW ;IS JOB AN IO WAIT FOR THIS DEVICE?\r
+; TLZE IOS,IOW ;IS JOB IN AN IO WAIT FOR THIS DEVICE?\r
; PUSHJ PDP,SETIOD ;YES, GO FLAG JOB TO START UP AGAIN\r
; RETURN\r
-;SETS THE JOB QUEUE WAIT CODE TO WSQ IN JOB STATUS WORD,\r
+;SETS THE JOB QUEUE WAIT CODE TO WSQ IN JOB STATUS WORD.\r
;THE SCHEDULER THEN SEES THAT THIS JOB HAS ITS\r
;IO WAIT SATISFIED AND IS WAITING TO BE RUN AGAIN\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
+STTIOD: MOVEI TAC1,TSQ ;SET TTY IO WAIT SATISFIED QUEUE CODE\r
AOS TSAVAL\r
- JRST SETIO1\r
+ JRST SETID1\r
SETIOD: MOVEI TAC1,WSQ ;REQUE TO WAIT SATISFIED Q\r
- AOS WSAVAL ;INCR, NO, OF JOBS WITH IO WAIT\r
- ; SATISFIED, NON-ZERO WSAVAL WILL\r
- ; CAUSE SCHED, TO SCAN FOR IO\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
+SETID1: LDB TAC,PJOBN\r
DPB TAC1,PJBS2 ;IN JOB STATUS WORD\r
\r
INTERNAL FTSWAP\r
IORM TAC1,JBTSTS(TAC) ;SET REQUEUEING BIT FOR SCHEDULER\r
>\r
NULTST: SKIPE JOB ;IS NULL JOB RUNNING?\r
- POPJ PDP, ;NO LET OTHER JOB RUN TILL SCHEDULER IS TRAPPED TO\r
-\f;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE\r
+ POPJ PDP, ;NO LET OTHER JOB RUN TILL SCHEDULER IS TRAPPPED TO\r
+\f;ROUTINE TO CAUSE CLK ROUTINE TO RESCHEDULE\r
;CALLED AT ANY LEVEL\r
;CALL: PUSHJ PDP,STOP2\r
; RETURN IMMEDIATELY EXCEPT IF AT UUO LEVEL\r
\r
STOP2: CONO PI,PIOFF ;PREVENT CLOCK INTERRUPT DURING STOP2 CODE\r
SETOM CLKFLG ;SET FLAG TO INDICATE CLK INTERRUPT\r
- ; EVEN THOUGH CLK INTERRUTP IS NOT A ATIME INTERRUPT\r
- CONO PI,PICLK ;TURN PI BACK ON AND REQUESST INTERRUPT TO\r
+ ; EVEN THOUGH CLK INTERRUPT IS NOT A TIME INTERRUPT\r
+ CONO PI,PICLK ;TURN PI BACK ON AND REQUEST INTERRUPT TO\r
; CLK PI CHANNEL(LOWEST PRIORITY CHANNEL)\r
POPJ PDP, ;INTERRUPT IMMEDIATELY IF AT UUO LEVEL\r
-\f;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 INACTIVE\r
,CALLING SEQUENCE\r
, PUSHJ PDP, WAIT1\r
-, EXIT ALWAYS RETURN HERE\r
+, EXIT ALWAYS RETURNS HERE\r
\r
-,IF DEVICE IS INACTIVBE (IOACT=0), RETURNS TO EXIT, OTHERWISE, SETS\r
-,IOW:=1 AND ENTERS WAIT UNLESS IOCT BECOMES ZERO BEFORE THE\r
-,JUMP IS MADE, IN WHICH CASE IT SETS IOW:=0 AND RETURNS TO EXIT,\r
-,ON LEAVING THE WIAT STATE, RETURNS TO EXIT.\r
+,IF THE DEVICE IS INACTIVE (IOACT=0), RETURNS TO EXIT. OTHERWISE. SETS\r
+,IOW:=1 AND ENTERS WAIT UNLESS IOACT BECOMES ZERO BEFORE THE\r
+,JUMP IS MADE, IN WHICH CASE IT SETS IOW:=0 AND RETURNS TO EXIT.\r
+,ON LEAVING THE WAIT STATE, RETURNS TO EXIT.\r
,THIS ROUTINE PREVENTS THE STATE IOACT=0 AND IOW=1 FROM OCCURING\r
,CALLING SEQUENCE\r
, PUSHJ PDP, WSYNC\r
, EXIT ALWAYS RETURNS HERE\r
-,SETS IOW:=1 AND ENTERS WAIT ROUTINE. RETURNS TO EXIT WHEN IOACT=0\r
+,SETS IOW:=1 AND ENTERS WAIT ROUTINE. RETURNS TO EXIT WHEN IOACT=0.\r
\r
INTERNAL WAIT1\r
\r
JRST WAIT1\r
\f\r
;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE\r
-;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETE\r
+;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETED\r
;CALLED ONLY FROM UUO LEVEL\r
;CALL: MOVE DEVDAT,ADR. OF DEVICE DATA BLOCK\r
; PUSHJ PDP,WSYNC\r
; WITH ACS 0-14 OCTAL RESTORED\r
; RETURN WHEN IO-WAIT FINISHED\r
WSYNC1: CONO PI, PION\r
- ANDCAB IOS, DEVIOS(DEVDAT) ;CLEAR DEVIVCE IO-WAIT BIT\r
+ ANDCAB IOS, DEVIOS(DEVDAT) ;CLEAR DEVICE IO-WAIT BIT\r
POPJ PDP,\r
\r
\r