X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..d693caac75dd25e668e43e85c29205bfc8dea06e:/src/core1.mac diff --git a/src/core1.mac b/src/core1.mac index 1b96cdb..c369d22 100644 --- a/src/core1.mac +++ b/src/core1.mac @@ -92,7 +92,8 @@ IFN FTSWAP,< LSH TAC,-12 > JRST STOTAC ;STORE IN USER AC AND RETURN TO USER - ;ROUTINE TO CHECK JOBS TO SEE IF ANY JOB CAN BE SHUFFLED + +;ROUTINE TO CHECK JOBS TO SEE IF ANY JOB CAN BE SHUFFLED ;IT IS CALLED EVERY 60TH OF A SECOND BY CLOCK ROUTINE ;PROVIDING CURRENT JOB IS IN USER MODE OR JUST ENTERING ;IO WAIT OR SHARABLE DEVICE WIAT OR RETURNING ON UUO CALLS @@ -115,7 +116,7 @@ IFN FTSWAP,< ;THE NSHF BIT IN JOBSTS WHOULD BE SET FOR JOBS USING DISPLAYS ;SINCE DISSER CONTINUALLY REFERENCES USER AREA EVEN THOUGH ;IOAC1 IS OFF. - + ;THIS VERSION OF THE CORE SHUFFLER WORKS AS FOLLOWS: ;EVERY CLOCK TICK FOR WHICH ALL JOBS ARE SHUFFABLE(NOT COUNTING ACTIVE ;IO DEVICES). THE JOB IMMEDIATELY ABOVE THE LOWEST HOLE @@ -172,8 +173,7 @@ IFN FTSWAP,< MOVSI TAC,SHF ;SET SHF WAIT BIT IN JOB STATUS WORD IORM TAC,JBTSTS(ITEM) ;SO JOB WILL NOT BE RUN POPJ PDP, ;AND IO WILL STOP SOON - -;ROUTINE TO TEST FOR ANY ACTIVE DEVICES + ;ROUTINE TO TEST FOR ANY ACTIVE DEVICES ;CALL: MOVE ITEM,JOB NUMBER OR HIGH SEG NUMBER ; MOVE JDAT,ADDRESS OF JOB DATA AREA @@ -219,8 +219,7 @@ ANY2: SOJGE T1,ANY ;NO, KEEP LOOKING TDNN AC3,DEVMOD(DEVDAT) ;NOT FINISHED, IS DEVICE TTY? POPJ PDP, ;NO, ERROR RETURN, CANNOT ASSIGN CORE JRST ANY2 ;YES, KEEP LOOKING FOR AN ACTIVE DEVICE - -;ROUTINE TO TEST TO SEE IF JOB OR HIGH SEG CAN BE SWAPPED + ;ROUTINE TO TEST TO SEE IF JOB OR HIGH SEG CAN BE SWAPPED ; OR WHETHER IT SHOULD BE ALLOWED TO CONITNUE RUNNING ; UNTIL A MORE FAVORABLE ITME ;CALL: MOVE ITEM,HIGH RO LOW SEG NUMBER @@ -243,8 +242,7 @@ IFE FT2REL,< JRST CPOPJ1 ;NO, GIVE OK RETURN > > - -;ROUTINE TO FLUSH PHYSICAL CORE ASSIGNED IN MEMORY + ;ROUTINE TO FLUSH PHYSICAL CORE ASSIGNED IN MEMORY ;NOTE: THIS ROUTINE DIFERS SIGNIFICANTLY FROM CORE0 AND CORE1 IN THAT ;IT IS ONLY A PHYSICAL REMOVAL OF CORE(VIRTAL IS NOT AFFECTED) ;SEE COMMENTS FOR CORE1 @@ -261,6 +259,7 @@ SCORE1: SOS(PDP) ;CORE1 WILL ALWAYS SKIP RETURN ; AND FLUSH PHYSICAL CORE(LOGICAL CORE UNEFFECTED) + ;CORE0 IS CALLED BY THE CORE MONITOR COMMAND AND THE CORE SHUFFLER ;AND RUN COMMAND @@ -305,8 +304,7 @@ EXTERNAL JOBPR1,CPOPJ1,JOBPRT,USRPC,CORMAX ;THE CORE ROUTINES DO NOT ALTER THE HIGH SEG IN CORE COUT. IT IS UP TO THE CALLER ;(IN SEGCOR) TO CALL THE CORE ROUTINES ONLY IF IN CORE COUNT IS 0 ;AND END OF SWAPIN OF LOW SEG AND HIGH SEG IS ALREADY IN CORE FOR OTHER USER - -CORE0: + CORE0: IFE FTSWAP,< JUMPE PROG,CORGET ;IS JOB WITHOUT CORE IN MEMORY? > @@ -351,7 +349,7 @@ IFN FTTRPSET,< PUSHJ PDP,ANYACT ;NO,ANY ACTIVE DEVICE? POPJ PDP, ;YES, CANNOT ASSIGN CORE ; NO, FALL INTO CORE1 -;ROUTINE TO TRY TO ASSIGN CORE IN CORE + ;ROUTINE TO TRY TO ASSIGN CORE IN CORE ;LOW OR HIGH SEG MUST NOT BE SWAPPED OUT(CALLER'S RESPONSIBILITY) ;AND MUST NOT HAVE ANY ACTIVE DEVICES(IT MAY HAVE 0 CORE IN CORE THOUGH) ;IN OTHER WORDS HIGH OR LOW SEG MAY OR MAY NOT HAVE VIRTUAL CORE @@ -399,7 +397,7 @@ CORE1A: NOSCHEDULE ;PREVENT JOB SCHEDULING HLRZ BLK,PROG ;HIGHEST LEGAL REL. ADR. MOVEI T,0 ;CLEAR FOR CORSTG CALL PUSHJ PDP,CORSTG ;RETURN OLD CORE TO FREE STORAGE -;CORGET IS CALLED BY SWAPPER WHEN JOB IS ON DISC AND IS + ;CORGET IS CALLED BY SWAPPER WHEN JOB IS ON DISC AND IS ;WANTED IN CORE. CORGET: SETZB LOC,PROG ;SET NEW ASSIGNMENT TO 0 AND DIST. MOVED @@ -434,7 +432,7 @@ IFE FTSWAP,< ;OLD, CLEAR OUT INCREASED SO SECURITY WILL ; BE MAINTAINED. TAC1 IS SIZE-1 OF OLD ; ASSIGNMENT. -1 OF NO OLD ASSIGNMENT -;HERE WHEN FREE CORE TABLE DOES NOT HAVE ENOUGH ROOM FOR REQUEST + ;HERE WHEN FREE CORE TABLE DOES NOT HAVE ENOUGH ROOM FOR REQUEST BAKOLD: IFN FTSWAP,< @@ -455,8 +453,7 @@ IFE FTSWAP,< > BKOLD1: HLRZ TAC,JBTADR(ITEM) ;GIVE BACK OLD CORE. JRST CORGET - -;MOVE OLD CORE TO NEW AREA + ;MOVE OLD CORE TO NEW AREA MOVCOR: CAIN LOC,(BLK) ;IS NEW CORE IN SAME PLACE AS OLD? JRST CLRCOR ;YES, DO NOT MOVE IT,CLEAR IF INCREASE @@ -464,8 +461,8 @@ MOVCOR: CAIN LOC,(BLK) ;IS NEW CORE IN SAME PLACE AS OLD? CAILE TAC1,(TAC) ;IS OLD CORE LESS THEN NEW? HRRZ TAC1,TAC ;NO, MOVE THE SHORTENED NEW CORE IFN FTTIME,< - EXTERNAL SHRWRD - ADDM TAC1,SHRWRD ;INCREMENT TOTAL NO. WORDS SHUFFLED + EXTERNAL SHFWRD + ADDM TAC1,SHFWRD ;INCREMENT TOTAL NO. WORDS SHUFFLED > ADD TAC1,LOC ;ADD IN NEW RELOC. MOVE AC1,LOC ;DEST.=NEW RELOC. @@ -488,6 +485,7 @@ IFN FTTIME,< SETZM -1(TAC1) ;CLEAR FIRST WORD HRLI TAC1,-1(TAC1) ;SET LH TO FIRST ADR. TO CLEAR BLT TAC1,(TAC) ;CLEAR THE INCREASE PORTION + ;IF THE SHUFFLED JOB IS IN EXEC MODE, ITS DUMP ACS ;(PDP,PROG,JDAT SAVED IN JOB DATA AREA) MUST BE ;ALTERED BY DISTANCE CODE WAS MOVED @@ -576,8 +574,7 @@ IFN FTSWAP,< SUBI LOC,2000(BLK) ;YES, SET LOC TO FIRST BLOCK IN HOLD SOJA BLK,CPOPJ1 ;SET BLK TO HIGHEST REL. LOC. ; AND RETURN - -;ROUTINE TO SET AND CLEAR CORE USE TABLE + ;ROUTINE TO SET AND CLEAR CORE USE TABLE ;CALL: MOVEI T,1 ;TO SET TABLE MOVEI T,0 ;TO CLEAR TABLE ; MOVE BLK,HIGHEST REL. LOC. IN USER AREA