CONO PI,REQCLK ;REQUEST INTERRUPT ON CLK CHANNEL\r
CONSZ APR,@APRIN1 ;IS USER ENABLE FOR ANY FLAGS(INCLUDING CLOCK)\r
; RH ALSO MODIFIED EACH TIME A USER RUNS\r
- JRST APRER ;YES, GO PROCESS TRAP\r
+ JRST APRER1 ;YES, GO PROCESS TRAP\r
CONO APR,1000+APRCHN ;NO, CLEAR ONLY THE CLOCK FLAG\r
JEN @APRCHL ;DISMISS INTERRUPT\r
\r
EXCH JDAT,JOBDAT ;RESTORE JDAT,JOBDAT\r
CONO APR,440+APRCHN ;DISBALE FOV, AROVF IN CASE ON\r
;SO USER MUST REENABLE WITH SETAPR UUO\r
-\r
APRER3: TLZ TAC,440000 ;CLEAR FOV (PC CHANGE ON PDP-6) AND AR OVF FLAGS\r
; SO INTERRUPT MAY BE DISMISSED\r
EXCH TAC,APRCHL ;RESTORE TAC & APRCHL\r
;THEN CALLS SCHEDULER\r
;IF THE CURRENT JOB IS IN EXEC MODE THE ABOVE 4 TASKS ARE\r
;DELAYED UNTIL THE CURRENT JOB ENTERS A STOPPABLE STATE: I.E., UNTIL\r
-\r
; 1. JOB STARTS TO WAIT FOR A BUSY SHARABLE DEVICE\r
; 2. JOB STARTS TO WAIT FOR A IO TO COMPLETE\r
; 3. CONTROL ABOUT TO RETURN TO USER MODE\r
MOVEI AC3,JOBDAC(JDAT) ;SAVE ACS 0-16 IN DUMP ACS\r
BLT AC3,JOBD16(JDAT) ;IN CURRENT JOB DATA AREA\r
MOVEI PDP,NULPDL ;NULL JOB PD LIST\r
- HRLI PDP,MJOBP1 ; OTHERWISE GET PD OUF\r
-\r
+ HRLI PDP,MJOBP1 ;USED TO CALL SCHEDULER AND COMMAND DECODE\r
+ ; OTHERWISE GET PD OUF\r
JRST RSCHED ;GO RESCHEDULE\r
\r
;HERE AT UUO LEVEL WHEN CURRENT JOB RETURNS TO USER MODE\r
JEN @CLKCHL\r
\r
SAVPC: MOVEM 17,USRPC ;SAVE PC IN PROTECTED PART OF SYSTEM DATA\r
-\r
; STORAGE FOR CURRENT JOB\r
CLKERR: SKIPN 17,JOBDAT ;CURRENT JOB DATA AREA, IS THERE ONE?\r
MOVEI 17,NULDAT ;NO, MUST BE NULL JOB OR CORE 0\r
; SINCE IT DOES IO INTO AND OUT OF\r
; CHANNEL LOCATIONS (JOBJDA+1..,JOBJDA+17),\r
ADD JA,T1 ;RELOCATE TO USER AREA\r
- BLT T,JOBJDA(JA) ; STOP WITH USER CHANNEL 0-1+C(USRHCU)\r
+ BLT T,JOBJDA(JA) ;MOVE TO USER JOB DATA AREA\r
+ ; STOP WITH USER CHANNEL 0-1+C(USRHCU)\r
\f;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE\r
\r
INTERNAL NULJOB,NULADR\r
MOVEI T,USRPRT ;NO, DEST,#PROTECTED AREA IN MONITOR\r
HRLI T,JOBPRT(JA) ;SOURCE#FIRST PROTECT LOC. IN JB DATA AREA\r
SKIPL T1,JOBHCU(JA) ;MOVE NO. OF USER IO CHAN. IN USE\r
- \r
CAILE T1,17 ;MUST BE 17 OR LESS(IO MIGHT CLOBBER\r
; IF ADRRESS CHECKING MISSES\r
MOVEI T1,0 ;MOVEJUST CHAN 0 IF NEG. OR GREATER THAN 17\r
ANDCAM TAC,JBTSTS(ITEM)\r
IFN FTLOGIN,<\r
EXTERN PRJPRG\r
+\r
SETZM PRJPRG(ITEM) ;CLEAR PROJECT-PROGRAMMER NUMBER WHEN JOB LOGS OUT\r
>\r
; IF THIS IS THE LARGEST JOB IN USE,FIND NEXT\r
IFN FTSWAP,<\r
JRST REQUE ;SET REQUE JOB FLAG\r
>\r
+\r
SKIPL TAC,JBTSTS(ITEM) ;RUN FLAG OFF?\r
TLNN TAC,JERR ;YES, ERROR FLAG ON?\r
JRST STOP2 ;NO\r
;OR IS IN CORE AND HAS ACTIVE DEVICES.\r
;CALLED FROM COMMAND DECODER\r
;CALL: MOVE ITEM,JOB NO.\r
- PUSHJ PDP,DLYCOM\r
+; PUSHJ PDP,DLYCOM\r
\r
INTERNAL DLYCOM\r
\r
USTART: MOVE TAC,JOBPC(JDAT) ;GET OLD PC\r
TLNE TAC,USRMOD ;IS IT IN USER MODE TOO?\r
JRST USTRT1 ;YES, DUMP ACS AND PC FLAGS ARE ALREADY HIS\r
-\r
MOVEI TAC,JOBDAC(JDAT) ;NO. MOVE USERS(UUO) ACS TO DUMP ACS\r
HRL TAC,JDAT ;SOURCE=REL, 0,DEST,=JOBDAC IN JOB DATA AREA\r
BLT TAC,JOBD17(JDAT) ;MOVE ALL ACS\r
MSTART: MOVEM TAC1,JOBPC(JDAT) ;STORE NEW PC\r
MOVSI TAC,JERR+WTMASK\r
ANDCAM TAC,JBTSTS(ITEM) ;CLEAR ERROR AND WAIT STATUS BITS\r
- ;SET TTY STATE TO INITAL COND.\r
+ JRST TTYSET ;SET TTY STATE TO INITAL COND.\r
; TTYUSR OR TTYURC SHOULD BE CALLED\r
; TO INDICATE WHETHER TTY TO USER OR EXEC MODE\r
; AND THAT JOB IS TO RUN(RUN BIT =1) WHEN\r
; MONITOR COMMAND RESPONSE FINISHES.\r
; SEE SETRUN BELOW\r
\f\r
+\r
;ROUTINE TO SET JOB STATUS RUN BIT(RUN)\r
;CALLED BY SCANNER SERVICE WHEN TTY MONITOR COMMAND\r
;RESPONSE FINISHES, THIS ACTION IS ENABLED BY CALLING\r
EXTERNAL JOB,REQTAB\r
\r
MTWAIT:DTWAIT:DCWAIT:STWAIT:DAWAIT:MQWAIT:AUWAIT:\r
-\r
DVWAIT: MOVE AC1,(PDP) ;GET ADR. OF CALLER\r
MOVE AC1,-2(AC1) ;GEET AOSLE XXREQ INSTRUCTION\r
JRST .+2\r
\r
PJBS2: POINT JWSIZ,JBTSTS(TAC),JWPOS ;BYTE POINTER TO JOB STATUS\r
; WORD QUEUE CODE\r
+\r
STTIOD: MOVEI TAC1,TSQ ;SET TTY IO WAIT SATISFIED QUEUE CODE\r
AOS TSAVAL\r
JRST SETIO1\r
AOS WSAVAL ;INCR, NO, OF JOBS WITH IO WAIT\r
; SATISFIED, NON-ZERO WSAVAL WILL\r
; CAUSE SCHED, TO SCAN FOR IO\r
+ ; SATISFIED JOB.\r
SETIO1: LDB TAC,PJOBN\r
DPB TAC1,PJBS2 ;IN JOB STATUS WORD\r
\r
POPJ PDP, ;RETURN\r
PUSHJ PDP,WSYNC ;WAIT\r
JRST WAIT1\r
-\f;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE\r
+\f\r
+;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE\r
;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETE\r
;CALLED ONLY FROM UUO LEVEL\r
;CALL: MOVE DEVDAT,ADR. OF DEVICE DATA BLOCK\r
TLNE AC3,DVTTY ;IS THIS DEVICE A TTY?\r
MOVEI AC1,TIOWQ ;YES, SET TTY WAIT STATE CODE\r
MOVE AC3,JOB ;CURRENT JOB NO.\r
-\r
MOVEI AC2,IOACT ;DEVICE ACTIVE BIT\r
CONO PI, PIOFF ;TURN PI OFF\r
TDNN AC2,DEVIOS(DEVDAT) ;IS THE DEVICE ACTIVE?\r
ANDCAB IOS, DEVIOS(DEVDAT) ;CLEAR DEVIVCE IO-WAIT BIT\r
POPJ PDP,\r
\r
+\r
CLKEND: END\r