X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..d693caac75dd25e668e43e85c29205bfc8dea06e:/src/schedb.mac diff --git a/src/schedb.mac b/src/schedb.mac index b33d156..16c0de7 100644 --- a/src/schedb.mac +++ b/src/schedb.mac @@ -75,7 +75,7 @@ NXTJB1: SKIPN J,JOB ;CURRENT JOB NO., IS IT NULL JOB? HLRZ SW,JBTSTS(J) ;GET JOB STATUS BITS AND CODES TRZ SW,RUNMSK+CMWB ;MASK OUT DO NOT CARE BITS CAIE SW,RUNABLE ;IS CURRENT JOB RUNABLE? - JRST CKJR3 ;NO. REQUEU CURRENT JOB + JRST CKJB3 ;NO. REQUEU CURRENT JOB SKIPN TIMEF ;NO. IS THIS A TIME INTERRUPT? JRST CKJB1 ;NO. @@ -85,10 +85,10 @@ NXTJB1: SKIPN J,JOB ;CURRENT JOB NO., IS IT NULL JOB? MOVEI DAT,QTIME ;YES---REQUEUE AND RESET QUANT. TIME MOVE TAC,JOBQUE PUSHJ PDP,QXFER - CKJB1: SKIPG QJ,QJDB ;SET QJ NON ZERO IF ANY REQUEUING TO DO + CKJB1: SKIPG QJ,QJOB ;SET QJ NON ZERO IF ANY REQUEUING TO DO JRST CKJB5 ;NO REQUEUEING NECESSARY MOVEI J,JOBMAX ;START WITH HIGHEST JOB NUMBER ASSIGNED -CKJB2: MOVSI SW,JBQ ;JOB NEEDS REQUEUEING BIT +CKJB2: MOVSI SW,JRQ ;JOB NEEDS REQUEUEING BIT TDNN SW,JBTSTS(J) ;THIS JOB? SOJG J,.-1 ;NO, KEEP LOOKING JUMPLE J,CKJB5 ;YES,LOOKED AT ALL JOBS? @@ -100,12 +100,12 @@ CKJB3: MOVE SW,JBTSTS(J) ;JOB STATUS WORD TLNN SW,CMWB ;IS JOB IN COMMAND WAIT? JRST CKJB9 ;NO. TLNE SW,SWP+JXPN ;YES, IS JOB ON DISK, OR TRYING TO EXPAND? - JRST CK,JB4A ;YES. PUT JOB IN COMMAND WAIT Q + JRST CKJB4A ;YES. PUT JOB IN COMMAND WAIT Q CKJB9: JUMPGE SW,CKJB4 ;NO,WAIT STATUS CODE DETERMINES NEW Q LDB SW,PJBSTS ;YES, GET QUEUE CODE. CAIN SW,WSQ ;*** EXPERIMENTAL *** JRST CKJB10 ;*** EXPERIMENTAL *** - CAIN SW,TIOWD ;CURRENT JOB GOING INTO TTY IO WAIT? + CAIN SW,TIOWQ ;CURRENT JOB GOING INTO TTY IO WAIT? HRROS JBTSWP(J) ;YES, SET IN CORE PROTECT TIME TO -1, ; SO HE CAN BE SWAPPED IMMEDIATELY IF SOMEONE ; ELSE WANTS TO BE SWAPPED IN @@ -211,11 +211,11 @@ INTERNAL QXFER,QSCAN,FTSWAP,FTDISK ;PUT ALL JOBS IN NULL QUEUE(JOB NO. NOT ASSIGNED) ;CALLED ON RESTART AT LOC 143 -INTERNAL QINT +INTERNAL QINI EXTERNAL CPOPJ,JOBMAX,MXQUE,JBTQ EXTERNAL JBTQP1 ;EQUALS JBTQ+1 -EXTERNAL JBTCM1 ;EQUALS JBTQ-1 -EXTERNAL JBTOMN ;EQUALS JBTQ-NULQ +EXTERNAL JBTQM1 ;EQUALS JBTQ-1 +EXTERNAL JBTQMN ;EQUALS JBTQ-NULQ QINI: MOVNI TAC,MXQUE ;MAKE ALL QUEUE HEADERS POINT TO THEMSELVES HRL TAC,TAC ;BACKWARD POINTERS TOO @@ -326,7 +326,7 @@ TT=DAT ;POINTER TO TRANSFER TABLE J=ITEM ;JOB NO. Q=PROG ;DEST-Q AND QUANT. TIME ON RETURN T1=TAC1 ;TEMP -T2=TAC ;TEMP AND SOURCE-Q ON CALL TO B,EQLINE +T2=TAC ;TEMP AND SOURCE-Q ON CALL TO B,EQLINK EXTERNAL ERROR @@ -380,7 +380,7 @@ QX3: POPJ PDP, BQFIX=QFIX EQFIX=QFIX+1B0 BQLINK=QLINK -EQLINK=QLINE+1B0 +EQLINK=QLINK+1B0 BQJSIZ=QJSIZ EQJSIZ=QJSIZ+1B0 ,SCANS THE QS RETURNING THE NUMBERS OF THE JOBS IN THE QS. @@ -461,7 +461,7 @@ IFE FTCHECK+FTMONP,< DEFINE X(A,B) @@ -483,6 +483,15 @@ A'Q=LOC LOC=LOC+1 > CODES + +XP MXCODE,LOC-1 ;MAX, JOB STATE DONE +PQ1=LOC +LOC=LOC+1 +PQ2=LOC +LOC=LOC+1 +PQ3=LOC +LOC=LOC+1 +CMQ=LOC ;COMMAND DELAY QUEUE ;CORRESPONDENCE TABLE BETWEEN JOB STATUS CODES AND QUEUE TRANSFER TABLES ;USED BY SCHEDULER ;RUNCSS SETS JOB STATUS WORD TO NEW STATE CODE. @@ -496,6 +505,7 @@ DEFINE X(A,B) INTERNAL QBITS QBITS: QUEUES + CODES IFN FTCHECK+FTMONP,< DEFINE X(A,B),< EXTERNAL A'RFQ @@ -583,7 +593,7 @@ QRNW: PTTAB EQJSIZ,QSTAB,QQSTAB ;JUST RUNABLE JOBS QWSW: TTAB BQFIX,PQ1,QQTTY ;IO WAIT SAT.(EXCEPT TTY) ;ENTER FRONT OF PROCESSOR QS AND GET QUANT, TIME ;ACCORDING TO JOB SIZE -QTSW: TTAB BQFIX,PQ,QQTTY ;TTY IO WAIT SATISFIED(ENTER FRONT OF PQ1) +QTSW: TTAB BQFIX,PQ1,QQTTY ;TTY IO WAIT SATISFIED(ENTER FRONT OF PQ11) QIOWW: TTAB EQFIX,IOWQ,-1 ;IOW(EXDEPT TTY) HELD IN IOWQ QTIOWW: TTAB EQFIX,TIOWQ,-1 ;TTY IOW HELD IN TIOWQ @@ -600,14 +610,14 @@ QSLPW: TTAB EQFIX,SLPQ,-1 ;SLEEP UUO QQSD=-1 -QMSQ: TTAB BQFIX,PQ1,QQSD ;START MON. Q(DISK) AT PQ1 +QMQS: TTAB BQFIX,PQ1,QQSD ;START MON. Q(DISK) AT PQ1 QDAS: TTAB BQFIX,PQ1,QQSD ;DEV. ALLOC.(DISK)... QDCS: TTAB BQFIX,PQ1,QQSD ;DATA CONTROL... QSTS: TTAB BQFIX,PQ1,QQSD ;SYST TAPE QDTS: TTAB BQFIX,PQ1,QQSD ;DEC TAPE QMTS: TTAB BQFIX,PQ1,QQSD ;MAG TAPE QAUS: TTAB BQFIX,PQ1,QQSD ;ALTER UFD -QTIME PTTAB EQLINK,QTTAB,QQSTAB ;MOVE JOB TO LOWER Q +QTIME: PTTAB EQLINK,QTTAB,QQSTAB ;MOVE JOB TO LOWER Q ;WHEN QUANT. TIME EXCEEDED AND RESET QUANT. TIME ,ENTER PROCESSOR QS ACCORDING TO JOB SIZE QSTAB: XWD 4,-PQ1 ;PQ1 IF SIZE .LE. 4K @@ -620,6 +630,12 @@ QQTAB: XWD -PQ1,-PQ2 XWD -PQ3,-PQ2 ;BACK TO PQ2 TO COMPETE WITH IOWS JOBS Z +,PUT JOB DOWN A Q IF EXCEEDS QUANT. TIME +QTTAB: XWD -PQ1,-PQ2 + XWD -PQ2,-PQ3 + XWD -PQ3,-PQ2 ;BACK TO PQ2 TO COMPETE WITH IOWS JOBS + Z + ,QUANTUM TABLES QQSD=6 ;TENTH SEC. INITIAL QUANT. FOR SHAR. DEV. WAITERS @@ -637,7 +653,7 @@ QQSTAB: EXP ^D30 ;PQ1: ONE HALF SECOND IFN FTSWAP,< INTERNAL ISCAN,QSCAN ISCAN: ;SCAN FOR INPUT - XWD -CWM,QFOR ;MONITOR COMMAND WHICH NEEDS CORE IMAGE IN CORE + XWD -CMQ,QFOR ;MONITOR COMMAND WHICH NEEDS CORE IMAGE IN CORE XWD -MQQ,QFOR1 ;LOOK FOR 1ST JOBS IN SHAR. DEV QUEUES XWD -DAQ,QFOR1 XWD -AUQ,QFOR1 @@ -652,7 +668,7 @@ SSCAN: XWD -PQ1,QFOR ;SCAN PROCESSOR AS SCHEDULER DOES Z Z ;FINAL ZERO TO FLAG END -QSCAN: ;SCAN FOR OUTPUT +OSCAN: ;SCAN FOR OUTPUT XWD -STOPQ,QFOR ;UNRUNABLE JOBS FIRST XWD -SLPQ,QFOR XWD -DTQ,QBAK1 ;ANY SHAR. DEV.WAITERS MORE THAN 1 DEEP @@ -729,7 +745,7 @@ T2=TAC J=ITEM ,ALL DEVICE DEPENDENT CODE MARKED WITH A "*" - SWAP: SKIPE SHWAT ;IS CORE SHUFFLER WAITING FOR IO TO STOP + SWAP: SKIPE SHFWAT ;IS CORE SHUFFLER WAITING FOR IO TO STOP ; FOR SOME JOB? PUSHJ PDP,CHKSHF ;YES, CALL CORE SHUFFLER TO SEE IF ; IO STOPPED YET @@ -886,7 +902,7 @@ SCNOUT: SKIPG XJOB ;ANY JOBS WAITING TO EXPAND? ; FOR ONE TO SWAP OUT MOVE J,HIGHJB ;YES, START WITH HIGHEST JOB NUMBER ASSIGNED MOVSI T,JXPN ;SETUP JOB EXPANDED BIT - TDDN T,JBTSTS(J) ;IS THIS JOB EXPANDING? + TDNN T,JBTSTS(J) ;IS THIS JOB EXPANDING? SOJG J,.-1 ;NO, KEEP LOOKING IFN FTRCHK,< JUMPG J,SCNOK ;CLEAR XJOB SO MESSAGE WILL PRINT @@ -917,7 +933,7 @@ SCNJOB: MOVE T,CORTAL ;INITIALIZE FREE CORE COUNTER ; (DISPLAY, REAL TIME)? JRST (TAC1) ;YES,CONTINUE SCAN TO FIND ANOTHER HLRZ T,JBTADR(J) ;PICK UP SIZE OF JOB - JUMPE T,(TAC1) ` ;CONTINUE SCAN IF NOT IN CORE (HIGH SEG ALREADY SWAPPED + JUMPE T,(TAC1) ;CONTINUE SCAN IF NOT IN CORE (HIGH SEG ALREADY SWAPPED) ; OUT FOR THIS USER IF NO LOW SEG) ASH T,-12 ;CONVERT TO 1K BLOCKS ADDI T,1 @@ -981,12 +997,12 @@ IFN JDAT-PROG,< INTERNAL FTTRACK -SWAPD: +SWAPO: IFN FTTRACK, SETZM FORCE ;CLEAR FORCE FLAG - HLRZ T,JBTADTR(J) ;COMPUTE CORE IMAGE + HLRZ T,JBTADR(J) ;COMPUTE CORE IMAGE JUMPE T,SWP1 ;DONT OUTPUT IF 0 CORE(IMGOUT ALREADY SET TO 0 ; WHEN CORE WAS RETURNED @@ -1016,7 +1032,7 @@ NOFIT: SETZM FIT ;FORGET ABOUT FITTING IN A JOB ON DISK ;COME HERE WHEN THE AMOUNT OF SPACE NEEDED ON THE DISK ;IS NOT AVAILABLE IN ONE CONTIGUOUS BLOCK - EXTERN GETFOR + EXTERN GETFCR FULL: HRLM DAT,AC3 ;SAVE DAT (LARGEST AVAILABLE HOLE) PUSHJ PDP,FULCOR ;GET 4 FREE CORE LOCS @@ -1059,8 +1075,8 @@ FULSET: PUSHJ PDP,BMPAC3 ;STEP TO NEXT (LAST) TABLE LOCATION JRST OUTP2 ;GO START OUTPUT ;HERE TO GET 4 LOCS OF FREE CORE -FULCOR: PUSH PDP,ITEM ;GETFOR USES ITEM - PUSHJ PDP,GETFOR ;GET 4 CELLS +FULCOR: PUSH PDP,ITEM ;GETFCR USES ITEM + PUSHJ PDP,GETFCR ;GET 4 CELLS JRST IPOPJ ;RETORE ITEM AND RETURN ;STEP AC3 TO NEXT LOC OF TABLE BEING BUILT @@ -1148,7 +1164,7 @@ CHGSWP: LDB TAC1,IMGIN ;SIZE WHEN SEG NEXT SWAPPED IN INTERN ZERSWP -ZERSWPL TDZA TAC,TAC ;REQUEST O SPACE ON DISK AND ALWAYS SKIP +ZERSWP: TDZA TAC,TAC ;REQUEST O SPACE ON DISK AND ALWAYS SKIP CHG1: ADDM TAC1,VIRTAL ;INCREASE SIZE OF VIRTUAL CORE AVAILABLE IN SYSTEM ; AND THEN RETURN ALL OF DISK SPACE(CHGSWP) MOVSI TAC1,SWP!SHF ;CLEAR SWAPPED OUT BIT IN JOB OR SEG @@ -1266,7 +1282,7 @@ SQGO: MOVEI TAC1,ERATRY SQGO1: SETZM SQLEN ;ZERO AMOUNT TRANSFERRED SO FAR MOVE TAC1,SQREQ ;*PUT IOWD INTO TAC1 MOVSI TAC,200000 ;*SET "SWAPPER I/O GOING" FLAG ON - ORB TAC,SETA ;* + ORB TAC,SERA ;* TRZN TAC,FRGSEG ;*FRAGMENTED? JRST SQGO2 ;*NO, READ IN ENTIRE (OR PART) OF SEG @@ -1328,7 +1344,7 @@ DINT8A: HRRZM IOS,SERA SETZM SQREQ JRST DINT4B -SWPER1; MOVSI TAC,100 +SWPER1: MOVSI TAC,100 ADDM TAC,CKSMCT TRO IOS,IODTER SWPERR: MOVM TAC, FINISH ;*RESET SERA IN CASE OF FRAGMENTED JOB @@ -1406,7 +1422,7 @@ SWPINI: MOVE TAC,XSAT2 MOVEM TAC,XSAT5 MOVE TAC,XSAT8 MOVEM TAC,XSAT6 - POPJ PDPD, + POPJ PDP, IFN FTCHECK+FTMONP,< EXTERNAL SQREQ,SERA,SERACT,XSAT1,XSAT2,XSAT3,XSAT4,XSAT5,XSAT6,XSAT7 @@ -1426,7 +1442,7 @@ ESQREQ: Z ;COPY OF SQREQ, IN CASE OF SERA: Z ;SIGN IS 1 IF A READ ; C(RH)=BLOCK NUMBER BEFORE READING. ; ERROR BITS AFTER READING. -SELACT: 0 ;COUNT FOR ERRORS +SERACT: 0 ;COUNT FOR ERRORS SQLEN: 0 ;AMOUNT TRANSFERRED SO FAR - FRAG SEG XSAT1: EXP XSAT3-1 ;POINTER USED BY GETBIT,CLRBIT @@ -1448,11 +1464,11 @@ XSAT5: BLOCK W2+1 XSAT6: BLOCK 1 REPEAT 1,< IFE E1, - IFN E1,> IFE E2, IFN E2, >> @@ -1528,7 +1544,7 @@ GXSAT: PUSH PDP,ITEM ;THIS ROUTINE SAVES AND RESTORES ACCUMULATOR "ITEM". FXSAT: TRZN TAC,FRGSEG ;FRAGMENTED? JRST FXSAT1 ;NO. DO IN REGULAR WAY -FRAGRK: HRRZ AC3,TAC ;YES. LOC OF TABLE IN AC3 +FRAGBK: HRRZ AC3,TAC ;YES. LOC OF TABLE IN AC3 FRGBK1: HRRZ TAC,(AC3) ;LOC OF NEXT DISK ADDRESS HLRE DAT,(AC3) ;NUMBER OF K JUMPLE DAT,FRGBK2 ;GIVE UP FREE CORE IF NOT REAL ADDRESS @@ -1590,7 +1606,7 @@ EXTERNAL LBHIGH,BLKSPK,MAX2SWP,SWPENT,SWPTAB,MAXSWP IFE FTCHECK+FTMONP,< ;DATA ASSOCIATED WITH THE SWPSER LOGIC FOR THE NEW PDP-10 DISK --- - INTERN MXK2SWP,CONVMD,BLKSPK,SWAPTAB,MAXSWP + INTERN MXK2SWP,CONVMD,BLKSPK,SWPTAB,MAXSWP EXTERN K4SWAP ;THE ABOVE ARE REFERENCED OR INITIALIZED BY THE "ONCE" ROUTINE. @@ -1610,7 +1626,7 @@ MXK2SWP=^D1000 ;MASIMUM NUMBER OF 1K DISK BLOCKS WHICH MIGHT BE ALLOCATED ; FOR SWAPPING (UPPER BOUND ON THE VALUE OF K4SWAP WHICH ; MAY BE REQUESTED AT DISK REFRESH TIME). (ONE MILLION WORDS ; FOR SWAPPING SEEMS LIKE A NON-RESTRICTIVE ARBITRARY LIMIT.) -SWPSIZ=MXK2SWP/.^D36+1 ;SIZE OF SWPTAB ALLOCATION TABLE. +SWPSIZ=MXK2SWP/^D36+1 ;SIZE OF SWPTAB ALLOCATION TABLE. SWPENT: XWD -SWPSIZ,SWPTAB ;THREE WORD POINTER TABLE XWD 400000,0 ; REQUIRED BY THE "GETBIT" AND @@ -1626,8 +1642,9 @@ ESQREQ: Z ;COPY OF SQREQ, IN CASE OF SWAP ERROR IN FRAGMENTED JOB SERA: Z ;SIGN IS 1 IF A READ ; C(RH)=BLOCK NUMBER BEFORE READING. ; ERROR BITS AFTER READING. -SELACT: 0 ;COUNT FOR ERRORS +SERACT: 0 ;COUNT FOR ERRORS SQLEN: 0 ;AMOUNT TRANSFERRED SO FAR FOR FRAGMENTED JOB > > ;END OF SWPSER LOGIC FOR THE NEW PDP-10 DISK. SCHEND: END +