X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/d693caac75dd25e668e43e85c29205bfc8dea06e..0000ed8f3efcdbf411f6c91517909089e5d7ef5d:/src/clock1.mac diff --git a/src/clock1.mac b/src/clock1.mac index 7c7bcdf..d337313 100644 --- a/src/clock1.mac +++ b/src/clock1.mac @@ -35,7 +35,6 @@ APRCON: 231000 ;MONITOR ENABLED CPU FLAGS APRIN1: 0 ;USER ENABLED CPU FLAGS CLKS17: 0 ;PLACE TO SAVE AC17 ON CLOCK INTERRUPT DAMESS: ASCIZ /-JAN-/ - CLOCK: POINT 36,CIPWTM,35 ;BYTE POINTER TO CLOCK REQ QUEUE > INTERN APRINT @@ -66,7 +65,7 @@ APRPAR: CONSZ PI,600000 ;MEM PARITY ERROR OR POWER FAILURE? CONO PI,REQCLK ;REQUEST INTERRUPT ON CLK CHANNEL CONSZ APR,@APRIN1 ;IS USER ENABLE FOR ANY FLAGS(INCLUDING CLOCK) ; RH ALSO MODIFIED EACH TIME A USER RUNS - JRST APRER ;YES, GO PROCESS TRAP + JRST APRER1 ;YES, GO PROCESS TRAP CONO APR,1000+APRCHN ;NO, CLEAR ONLY THE CLOCK FLAG JEN @APRCHL ;DISMISS INTERRUPT @@ -96,7 +95,6 @@ APRER4: EXCH JDAT,JOBDAT ;YES, SAVE JDAT, GET CURRENT JOB DATA AREA ADR. EXCH JDAT,JOBDAT ;RESTORE JDAT,JOBDAT CONO APR,440+APRCHN ;DISBALE FOV, AROVF IN CASE ON ;SO USER MUST REENABLE WITH SETAPR UUO - APRER3: TLZ TAC,440000 ;CLEAR FOV (PC CHANGE ON PDP-6) AND AR OVF FLAGS ; SO INTERRUPT MAY BE DISMISSED EXCH TAC,APRCHL ;RESTORE TAC & APRCHL @@ -141,7 +139,6 @@ IFN FTHALT,< ;THEN CALLS SCHEDULER ;IF THE CURRENT JOB IS IN EXEC MODE THE ABOVE 4 TASKS ARE ;DELAYED UNTIL THE CURRENT JOB ENTERS A STOPPABLE STATE: I.E., UNTIL - ; 1. JOB STARTS TO WAIT FOR A BUSY SHARABLE DEVICE ; 2. JOB STARTS TO WAIT FOR A IO TO COMPLETE ; 3. CONTROL ABOUT TO RETURN TO USER MODE @@ -184,10 +181,12 @@ WSCHED: POP PDP,USRPC ;SAVE PC IN PROTECTED PART OF SYSTEM DATA MOVEI AC3,JOBDAC(JDAT) ;SAVE ACS 0-16 IN DUMP ACS BLT AC3,JOBD16(JDAT) ;IN CURRENT JOB DATA AREA MOVEI PDP,NULPDL ;NULL JOB PD LIST - HRLI PDP,MJOBP1 ; OTHERWISE GET PD OUF + HRLI PDP,MJOBP1 ;USED TO CALL SCHEDULER AND COMMAND DECODE + ; OTHERWISE GET PD OUF JRST RSCHED ;GO RESCHEDULE + ;HERE AT UUO LEVEL WHEN CURRENT JOB RETURNS TO USER MODE ;FROM A UUO CALL AND EITHER: ; 1. CURRENT JOB TYPED CONTROL C WHILE IN EXEC MODE @@ -223,7 +222,6 @@ CLKINT: SKIPN CLKFLG ;CLK INTERRUPT REQUEST? JEN @CLKCHL SAVPC: MOVEM 17,USRPC ;SAVE PC IN PROTECTED PART OF SYSTEM DATA - ; STORAGE FOR CURRENT JOB CLKERR: SKIPN 17,JOBDAT ;CURRENT JOB DATA AREA, IS THERE ONE? MOVEI 17,NULDAT ;NO, MUST BE NULL JOB OR CORE 0 @@ -265,7 +263,6 @@ IFN FTKCT,< ADDI TAC,1 ;MAKE IT NO. OF 1K BLOCKS ADDM TAC,JBTKCT(ITEM) ;ADD IN ACCUMULATED CORE RUNNING TIME PRODUCT ; (KILO-CORE TICKS) - IFN FT2REL,< EXTERN CHGHGH PUSHJ PDP,CHGHGH ;CHARGE USER FOR HIGH SEGMENT IF HE HAS ONE @@ -295,7 +292,7 @@ CIP4: CAIN STOR,CIPWTM1 ;END YET? MOVE TAC, @CLOCK SOS CLOCK MOVEM TAC, (STOR) - CONI PI,PION + CONO PI,PION LDB TAC, [POINT 6, TAC1, 23] ;GET 6 BIT DATA ITEM MOVSS TAC1 ;SETUP DISPATCH ADDRESS PUSH PDP, STOR ;SAVE ONLY VALUABLE AC @@ -330,7 +327,8 @@ EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA ; SINCE IT DOES IO INTO AND OUT OF ; 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) + BLT T,JOBJDA(JA) ;MOVE TO USER JOB DATA AREA + ; STOP WITH USER CHANNEL 0-1+C(USRHCU) ;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE INTERNAL NULJOB,NULADR @@ -350,7 +348,6 @@ IFN FTHALT,< MOVEI T,USRPRT ;NO, DEST,#PROTECTED AREA IN MONITOR HRLI T,JOBPRT(JA) ;SOURCE#FIRST PROTECT LOC. IN JB DATA AREA SKIPL T1,JOBHCU(JA) ;MOVE NO. OF USER IO CHAN. IN USE - CAILE T1,17 ;MUST BE 17 OR LESS(IO MIGHT CLOBBER ; IF ADRRESS CHECKING MISSES MOVEI T1,0 ;MOVEJUST CHAN 0 IF NEG. OR GREATER THAN 17 @@ -414,7 +411,6 @@ IFN FTCHECK, ; IF THIS IS THE LARGEST JOB IN USE,FIND NEXT @@ -548,6 +546,7 @@ HOLD1: PUSHJ PDP,TTYSTC ;MAKE SURE TTY STAYS IN MONITOR MODE ;ROUTINE TO STOP USER AND FLAG AS ERROR STOP + INTERNAL ESTOP,ESTOP1 EXTERNAL JBTSTS,STUSER,STREQ,STAVAL EXTERNAL SCHEDF,JOB,CPOPJ @@ -600,6 +599,7 @@ IFE FTSWAP,< IFN FTSWAP,< JRST REQUE ;SET REQUE JOB FLAG > + SKIPL TAC,JBTSTS(ITEM) ;RUN FLAG OFF? TLNN TAC,JERR ;YES, ERROR FLAG ON? JRST STOP2 ;NO @@ -610,7 +610,7 @@ IFN FTSWAP,< ;OR IS IN CORE AND HAS ACTIVE DEVICES. ;CALLED FROM COMMAND DECODER ;CALL: MOVE ITEM,JOB NO. - PUSHJ PDP,DLYCOM +; PUSHJ PDP,DLYCOM INTERNAL DLYCOM @@ -627,7 +627,8 @@ IFN FTSWAP,< > POPJ PDP, -;ROUTINE TO PUT JONB IN NO CORE QUEUE +;ROUTINE TO PUT JOB IN NO CORE QUEUE + INTERNAL FTSWAP IFN FTSWAP,