X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..d693caac75dd25e668e43e85c29205bfc8dea06e:/src/clock1.mac diff --git a/src/clock1.mac b/src/clock1.mac index eff0f89..7c7bcdf 100644 --- a/src/clock1.mac +++ b/src/clock1.mac @@ -11,6 +11,7 @@ CLOCK1: ;FOR SCHEDULING JOBS AND ERROR HANDLING THAT THE USER ;IS NOT ENABLED TO HANDLE HIMSELF + EXTERNAL TIME,TIMEF,CLKFLG,REQCLK,APRCHL,APRPC,UPTIME EXTERNAL JOBDAT,JOBTPC,JOBCNI,JOBAPR,APRERR,SCHEDF @@ -20,6 +21,7 @@ EXTERNAL RELEA9,CRSHWD,CRASHX INTERNAL FTTTYSER ;THIS ROUTINE MAY BE ASSEMBLED TO WORD EITHER ; THE OLD SCNSER OR THE NEW TTYSER. + INTERNAL FTCHECK,FTMONP IFN FTCHECK+FTMONP,< @@ -36,8 +38,7 @@ DAMESS: ASCIZ /-JAN-/ CLOCK: POINT 36,CIPWTM,35 ;BYTE POINTER TO CLOCK REQ QUEUE > - - INTERN APRINT + INTERN APRINT APRINT: JRST APRPAR ;ALWAYS CHECK APR AND PI DEVICES JRST . ;CHECK OTHER DEVICES @@ -76,8 +77,7 @@ APRER1: CONO APR,1000+APRCHN ;NOW CLEAR CLOCK FLAG TLNE TAC,USRMOD ;IS PC FROM USER MODE? JRST APRER4 ;YES, GO TRAP TO HIM JRST APRER2 ;NO. GO CHECK IN CASE ALSO A SERIOUS ERROR - -;OTHER APR INTERRUPTS BESIDES CLOCK + ;OTHER APR INTERRUPTS BESIDES CLOCK APRER: EXCH TAC,APRCHL ;SAVE TAC, GET PC TLNE TAC,USRMOD ;IS PC IN USER MODE? @@ -103,8 +103,7 @@ APRER3: TLZ TAC,440000 ;CLEAR FOV (PC CHANGE ON PDP-6) AND AR OVF FLAGS CONO APR,430110+APRCHN ;CLEAR ALL ERROR FLAGS WHICH CAN CAUSE INTERRUPTS ; EXCEPT CLOCK FLAG(ELSE LOSE TIME OF DAY) JEN @APRCHL ;DISMISS INTERRUPT - -APRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE? + APRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE? JRST APRER3 ;NO. IGNORE EXEC OVERFLOW (MUST BE FOV OR AROVF MOVEM TAC,APRPC ;STORE ERROR PC FOR CLK CHANNEL CONI APR,APRERR ;STORE ERROR FLAGS @@ -123,8 +122,7 @@ IFN FTHALT,< > JRST APRER3 ;NO,MUST BE UUO LEVEL(OR USER MODE AND ; MEMORY DROPPED OUT) - -SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK) + SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK) ;THIS ROUTINE RUNS ON THE LOWEST PRIORITY PI CHANNEL AND AT UUO LEVEL ;TO CAUSE AN INTERRUPT ON CLK CHANNEL: @@ -241,9 +239,8 @@ CLKERR: SKIPN 17,JOBDAT ;CURRENT JOB DATA AREA, IS THERE ONE? SKIPE TAC,APRERR ;IT THIS AN ERROR INTERRUPT? PUSHJ PDP,APRILM ;YES, GO PROCESS ERROR, APRILM WILL CLEAR APRERR ; FLAG IMMEDIATELY - -EXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD -EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JDB,PMONTB + EXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD +EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JOB,PMONTB RSCHED: SKIPN TIMEF ;HAS CLOCK GONE OFF SINCE LAST CALL? JRST CIP6 ;NO, JUST RESCHEDULE @@ -286,8 +283,7 @@ CIP3: SETZB IOS,TIME ;YES, RESET TIME OF DAY LDB TAC,PMONTB CAMGE TAC,TAC1 ;END OF MONTH? JRST CIP3 ;YES. - -;PROCESS TIMING REQUESTS STORED IN QUEUE + ;PROCESS TIMING REQUESTS STORED IN QUEUE CIP2: HRRZ STOR,CLOCK ;GET END OF LIST CIP4: CAIN STOR,CIPWTM1 ;END YET? @@ -318,8 +314,7 @@ CIP6: PUSHJ PDP,NXTJOB ;CALL SCHEDULER SETZM SCHEDF ;CLEAR FORCED SCHEDULING FLAG CAMN ITEM,JOB ;IS NEXT JOB SAME AS LAST ONE? JRST CIP8 ;YES, JUST RESTORE ACS AND DISMISS - -;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED) + ;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED) EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA @@ -336,8 +331,7 @@ EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA ; CHANNEL LOCATIONS (JOBJDA+1..,JOBJDA+17), ADD JA,T1 ;RELOCATE TO USER AREA BLT T,JOBJDA(JA) ; STOP WITH USER CHANNEL 0-1+C(USRHCU) - -;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE + ;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE INTERNAL NULJOB,NULADR EXTERNAL JOB,JBTDAT,JOBDAT,USRPRT,JOBPRT @@ -391,7 +385,6 @@ IFN FTCHECK, SETZB 0,NULERR ;CLEAR AC 0 USED FOR USUAL MONITORING - ; CLEAR FLAG SAYING ERROR IN NULL JOB ; OF NULL TIME INTERVAL ; LOC JOBDAT (LOCATION OF NULL JOB DATA AREA) TO 0 @@ -402,8 +395,7 @@ IFN FTCHECK, ;CALL: MOVEI TAC,ADR. OF MESSAGE ; PUSHJ PDP,PHOLD @@ -574,10 +563,8 @@ ESTOP1: MOVSI TAC,JERR ;SSET ERROR BIT IN JOB STATUS WORD MOVSI TAC,637163 ;FIND SYS DDB PUSHJ PDP,DEVSRC ;SYSTEM ERROR IF NOT FOUND JSP DAT,ERROR - PUSHJ PDP,RELEA9 ;YES, RELEASE SYSTEM TAPE WITHOUT WAITING - -;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED + ;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED ;CALL: ; MOVE ITEM, JOB NUMBER ; PUSHJ PDP, STOP1 @@ -618,8 +605,7 @@ IFN FTSWAP,< JRST STOP2 ;NO SETOM SCHEDF ;YES, FORCE RESCHEDULING EVEN IF JOB IN EXEC MODE JRST STOP2 ;YES, MAKE CLK RESCHEDULE ANOTHER JOB - -;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED + ;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED ;WHICH NEEDS CORE AND THE CORE IMAGE IS ON THE DISK. ;OR IS IN CORE AND HAS ACTIVE DEVICES. ;CALLED FROM COMMAND DECODER @@ -638,7 +624,6 @@ INTERNAL FTSWAP IFN FTSWAP,< TLNN TAC,CMWB PUSHJ PDP,REQUE - > POPJ PDP, @@ -648,12 +633,11 @@ INTERNAL FTSWAP IFN FTSWAP, - -;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL + ;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL ;CALLED BY COMMANDS WHICH MAY OR MAY NOT NEED TO ;RUN MONITOR JOB DEPENDING ON WHETHER JOB HAS CORE(KJOB,IJOB) ;TTY WILL REMAIN IN MONITOR MODE @@ -690,8 +674,7 @@ IFN JDAT-PROG,< PUSH PDP,TAC1 ;SAVE STOP ADDRESS JRST (TAC) ;RETURN AND DO MONITOR JOB ; WITH TT DDB,OUTPUT BYTE POINTER, AND JOB NO. - -;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN + ;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN ;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS ;CALLED ONLY WHEN JOB IN CORE AND AFTER JOB HAS BEEN ;SAFELY STOPPED IN ONE OF 3 STATES: @@ -794,7 +777,7 @@ SETSLP: MOVSI TAC,CLKR ;FLAG THAT A CLOCK REQUEST HAS BEEN PUT IN INTERNAL WAKE -EXTERNAL PJSTS,RNQ,SLPQ +EXTERNAL PJBSTS,RNQ,SLPQ WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE MOVE ITEM,TAC ;JOB NO. @@ -807,8 +790,7 @@ WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE ; (CONTROL C, START CAN GET JOB OUT SLEEP) JRST SETR2 > - -;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE + ;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE ;JOB NEVER GETS ONE DEVICE AND WAITS FOR SECOND, SINCE TYPING ;CONTROL C WOULD NEVER FINISH WITH FIRST DEVICE ;CALL PUSHJ PDP,GETDCXX @@ -836,8 +818,7 @@ GETWT: PUSHJ PDP,DVWAT1 ;NOT AVAIL., GO WAIT FOR IT SOSL DCREQ ;NO, REDUCE DATA CONTROL REQUEST SETOM DCAVAL ;SET AVAIL., SOME OTHER JOB WAITING FOR IT JRST GETWT ;TRY AGAIN - -;ROUTINE TO WAIT FOR A SHARABLE DEVICE + ;ROUTINE TO WAIT FOR A SHARABLE DEVICE ;CALLED AT UUO LEVEL ONLY BY DEVICE SERVICE ROUTINES ;CALL: AOSLE XXREQ ;ADD 1 TO SHARABLE DEVICE REQUEST COUNT ; ;IS DEVICE AVAILABLE? @@ -869,8 +850,7 @@ SETSTT: MOVE AC3,JOB ;CURRENT JOB NO. PJBS1: POINT JWSIZ,JBTSTS(AC3),JWPOS ;BYTE POINTER TO JOB STATUS ; WORD WAIT QUEUE CODE - -;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED + ;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED ;BECAUSE IT HAD TO WAIT FOR IO TO COMPLETE FOR SOME DEVICE ;EACH SERVICE ROUTINE WILL AT INTERRUPT LEVEL ;CHECK EACH TIME IT FINISHED A TASK(RUNFFERFUL) @@ -903,7 +883,6 @@ SETIO1: LDB TAC,PJOBN INTERNAL FTSWAP IFN FTSWAP,< EXTERN QJOB,JBTSTS - MOVSI QJOB,JBTSTS MOVSI TAC1,JRQ ;SET JOB TO BE REQUEUED AT NEXT CLOCK TICK TDNN TAC1,JBTSTS(TAC) ;IS REQUE BIT ALREADY ON? AOS QJOB ;NO, INCREMENT COUNT ONCE FOR EACH JOB @@ -911,8 +890,7 @@ IFN FTSWAP,< > NULTST: SKIPE JOB ;IS NULL JOB RUNNING? POPJ PDP, ;NO LET OTHER JOB RUN TILL SCHEDULER IS TRAPPED TO - -;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE + ;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE ;CALLED AT ANY LEVEL ;CALL: PUSHJ PDP,STOP2 ; RETURN IMMEDIATELY EXCEPT IF AT UUO LEVEL @@ -927,8 +905,7 @@ STOP2: CONO PI,PIOFF ;PREVENT CLOCK INTERRUPT DURING STOP2 CODE CONO PI,PICLK ;TURN PI BACK ON AND REQUESST INTERRUPT TO ; CLK PI CHANNEL(LOWEST PRIORITY CHANNEL) POPJ PDP, ;INTERRUPT IMMEDIATELY IF AT UUO LEVEL - -;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE + ;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE ,CALLING SEQUENCE , PUSHJ PDP, WAIT1 , EXIT ALWAYS RETURN HERE @@ -950,8 +927,7 @@ WAIT1: MOVE IOS,DEVIOS(DEVDAT) POPJ PDP, ;RETURN PUSHJ PDP,WSYNC ;WAIT JRST WAIT1 - -;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE + ;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE ;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETE ;CALLED ONLY FROM UUO LEVEL ;CALL: MOVE DEVDAT,ADR. OF DEVICE DATA BLOCK