X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/d693caac75dd25e668e43e85c29205bfc8dea06e..bb920f47d2b4fd2ac0c46c72df890dfe6931e943:/src/clock1.mac diff --git a/src/clock1.mac b/src/clock1.mac index 7c7bcdf..997a4a6 100644 --- a/src/clock1.mac +++ b/src/clock1.mac @@ -66,7 +66,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 +96,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 +140,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,8 +182,8 @@ 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 @@ -223,7 +221,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 @@ -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 @@ -509,6 +506,7 @@ KSTOP: MOVSI TAC,JNA+JLOG+JACCT ;CLEAR JOB NUMBER ASSIGNED AND LOGGED IN BITS ANDCAM TAC,JBTSTS(ITEM) IFN FTLOGIN,< EXTERN PRJPRG + SETZM PRJPRG(ITEM) ;CLEAR PROJECT-PROGRAMMER NUMBER WHEN JOB LOGS OUT > ; IF THIS IS THE LARGEST JOB IN USE,FIND NEXT @@ -600,6 +598,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 +609,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 @@ -693,7 +692,6 @@ EXTERNAL JOBPC,JOBDAC,JOBD17,TTYSET,JOBOPC,JOBPD1 USTART: MOVE TAC,JOBPC(JDAT) ;GET OLD PC TLNE TAC,USRMOD ;IS IT IN USER MODE TOO? JRST USTRT1 ;YES, DUMP ACS AND PC FLAGS ARE ALREADY HIS - MOVEI TAC,JOBDAC(JDAT) ;NO. MOVE USERS(UUO) ACS TO DUMP ACS HRL TAC,JDAT ;SOURCE=REL, 0,DEST,=JOBDAC IN JOB DATA AREA BLT TAC,JOBD17(JDAT) ;MOVE ALL ACS @@ -709,13 +707,14 @@ USTRT1: MOVEM TAC,JOBOPC(JDAT) ;STORE OLD PC FOR USER TO LOOK AT MSTART: MOVEM TAC1,JOBPC(JDAT) ;STORE NEW PC MOVSI TAC,JERR+WTMASK ANDCAM TAC,JBTSTS(ITEM) ;CLEAR ERROR AND WAIT STATUS BITS - ;SET TTY STATE TO INITAL COND. + JRST TTYSET ;SET TTY STATE TO INITAL COND. ; TTYUSR OR TTYURC SHOULD BE CALLED ; TO INDICATE WHETHER TTY TO USER OR EXEC MODE ; AND THAT JOB IS TO RUN(RUN BIT =1) WHEN ; MONITOR COMMAND RESPONSE FINISHES. ; SEE SETRUN BELOW + ;ROUTINE TO SET JOB STATUS RUN BIT(RUN) ;CALLED BY SCANNER SERVICE WHEN TTY MONITOR COMMAND ;RESPONSE FINISHES, THIS ACTION IS ENABLED BY CALLING @@ -836,7 +835,6 @@ INTERNAL MTWAIT,STWAIT,DTWAIT,DCWAIT,DAWAIT,MQWAIT,AUWAIT EXTERNAL JOB,REQTAB MTWAIT:DTWAIT:DCWAIT:STWAIT:DAWAIT:MQWAIT:AUWAIT: - DVWAIT: MOVE AC1,(PDP) ;GET ADR. OF CALLER MOVE AC1,-2(AC1) ;GEET AOSLE XXREQ INSTRUCTION JRST .+2 @@ -870,6 +868,7 @@ EXTERNAL WSQ,WSAVAL,TSQ,TSAVAL,JOB,PJOBN PJBS2: POINT JWSIZ,JBTSTS(TAC),JWPOS ;BYTE POINTER TO JOB STATUS ; WORD QUEUE CODE + STTIOD: MOVEI TAC1,TSQ ;SET TTY IO WAIT SATISFIED QUEUE CODE AOS TSAVAL JRST SETIO1 @@ -877,6 +876,7 @@ SETIOD: MOVEI TAC1,WSQ ;REQUE TO WAIT SATISFIED Q AOS WSAVAL ;INCR, NO, OF JOBS WITH IO WAIT ; SATISFIED, NON-ZERO WSAVAL WILL ; CAUSE SCHED, TO SCAN FOR IO + ; SATISFIED JOB. SETIO1: LDB TAC,PJOBN DPB TAC1,PJBS2 ;IN JOB STATUS WORD @@ -927,7 +927,8 @@ 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 @@ -944,7 +945,6 @@ WSYNC: MOVSI IOS,IOW ;SETUP DEVICE IO WAIT BIT TLNE AC3,DVTTY ;IS THIS DEVICE A TTY? MOVEI AC1,TIOWQ ;YES, SET TTY WAIT STATE CODE MOVE AC3,JOB ;CURRENT JOB NO. - MOVEI AC2,IOACT ;DEVICE ACTIVE BIT CONO PI, PIOFF ;TURN PI OFF TDNN AC2,DEVIOS(DEVDAT) ;IS THE DEVICE ACTIVE? @@ -962,4 +962,5 @@ WSYNC1: CONO PI, PION ANDCAB IOS, DEVIOS(DEVDAT) ;CLEAR DEVIVCE IO-WAIT BIT POPJ PDP, + CLKEND: END