XP VOLKCS,001\r
;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP\r
\r
+\r
;SCHEDULING ALGORITHM IS:\r
;CALLED EVERY 60TH OF A SECOND WHEN CURRENT JOB IS USER MODE\r
;CALLED WHEN CURRENT JOB IS IN EXEC MODE AND:\r
QUEUES\r
LOC=ZZ\r
>\r
+\r
IFE FTCHECK+FTMONP,<\r
;APPROPRIATE ENTRY IS NON-ZERO WHEN SCHEDULER SHOULD LOOK\r
;AT THAT QUEUE TO FIND A JOB TO RUN\r
;WSAVAL CONTAINS THE NO. OF JOBS WITH IO WAIT SATISFIED(0=NONE)\r
;SIMILARLY FOR TSAVAL\r
\r
+\r
DEFINE X(A,B)\r
< INTERNAL A'AVAL,A'Q\r
A'Q=.-AVALTB\r
APRIN1: 0 ;USER ENABLED CPU FLAGS\r
CLKS17: 0 ;PLACE TO SAVE AC17 ON CLOCK INTERRUPT\r
DAMESS: ASCIZ /-JAN-/\r
-\r
CLOCK: POINT 36,CIPWTM,35 ;BYTE POINTER TO CLOCK REQ QUEUE\r
>\r
\f INTERN APRINT\r
MOVEI PDP,NULPDL ;NULL JOB PD LIST\r
HRLI PDP,MJOBP1 ;USED TO CALL SCHEDULER AND COMMAND DECODE\r
; OTHERWISE GET PD OUF\r
+\r
JRST RSCHED ;GO RESCHEDULE\r
\r
+\r
;HERE AT UUO LEVEL WHEN CURRENT JOB RETURNS TO USER MODE\r
;FROM A UUO CALL AND EITHER:\r
; 1. CURRENT JOB TYPED CONTROL C WHILE IN EXEC MODE\r
ADDI TAC,1 ;MAKE IT NO. OF 1K BLOCKS\r
ADDM TAC,JBTKCT(ITEM) ;ADD IN ACCUMULATED CORE RUNNING TIME PRODUCT\r
; (KILO-CORE TICKS)\r
-\r
IFN FT2REL,<\r
EXTERN CHGHGH\r
PUSHJ PDP,CHGHGH ;CHARGE USER FOR HIGH SEGMENT IF HE HAS ONE\r
MOVE TAC, @CLOCK\r
SOS CLOCK\r
MOVEM TAC, (STOR)\r
- CONI PI,PION\r
+ CONO PI,PION\r
LDB TAC, [POINT 6, TAC1, 23] ;GET 6 BIT DATA ITEM\r
MOVSS TAC1 ;SETUP DISPATCH ADDRESS\r
PUSH PDP, STOR ;SAVE ONLY VALUABLE AC\r
EXTERN JOB,JBTADR,JOBADR,USRREL,JBTDAT,JOBDAT,JOBREL,KT10A\r
\r
SETREL: MOVE ITEM,JOB ;CURRENT JOB NUMBER\r
-\r
SETRL1: MOVE PROG,JBTADR(ITEM) ;XWD PROTECTION,RELOCATION FOR LOW SEG\r
MOVEM PROG,JOBADR ;SAVE TO MAKE UUO HANDLER FASTER\r
HLRZM PROG,USRREL ;SAVE PROTECTION FOR ADDRESS CHECKING\r
MOVE TAC,JOBENB(JA) ;USER APR CONSO FLAGS (THE ONES HE WANTS TO HANDLE\r
; FALL INTO SETAPR ROUTINE\r
\r
+\r
;ROUTINE TO ENABLE/DISABLE APR FOR TRAPPING TO USER AND EXEC\r
;CALL: MOVE TAC, APR, CONSO FLAGS FOR USER TRAPPING\r
; PUSHJ PDP,SETAPR\r
\f\r
;ROUTINE TO STOP USER AND FLAG AS ERROR STOP\r
\r
+\r
INTERNAL ESTOP,ESTOP1\r
EXTERNAL JBTSTS,STUSER,STREQ,STAVAL\r
EXTERNAL SCHEDF,JOB,CPOPJ\r
>\r
POPJ PDP,\r
\r
-;ROUTINE TO PUT JONB IN NO CORE QUEUE\r
+;ROUTINE TO PUT JOB IN NO CORE QUEUE\r
+\r
\r
INTERNAL FTSWAP\r
IFN FTSWAP,<INTERNAL NOCORQ\r
JRST SETRUN ;SET TTY TO START JOB WHEN COMMAND RESPONSE\r
; IS FINISHED AND KEEP TTY IN MONITOR MODE\r
\r
+\r
;ROUTINE TO SETUP ACS FOR MONITOR JOB STARTING AT UUO LEVEL\r
;SETS UP ITEM, WITH JOB NO.; PROG WITH RELOCATION, AND PDP\r
;WITH PUSH DOWN LIST ADR. IN JOB DATA AREA\r
;JOB NO. IN AC TAC\r
\r
INTERNAL WAKE\r
-\r
EXTERNAL PJBSTS,RNQ,SLPQ\r
\r
WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE\r
SOSL DCREQ ;NO, REDUCE DATA CONTROL REQUEST\r
SETOM DCAVAL ;SET AVAIL., SOME OTHER JOB WAITING FOR IT\r
JRST GETWT ;TRY AGAIN\r
-\f;ROUTINE TO WAIT FOR A SHARABLE DEVICE\r
+\f\r
+;ROUTINE TO WAIT FOR A SHARABLE DEVICE\r
;CALLED AT UUO LEVEL ONLY BY DEVICE SERVICE ROUTINES\r
;CALL: AOSLE XXREQ ;ADD 1 TO SHARABLE DEVICE REQUEST COUNT\r
; ;IS DEVICE AVAILABLE?\r
; RETURN IMMEDIATELY IF DEVICE IS INACTIVE\r
; RETURN WHEN DEVICE FINISHES NEXT BUFFER IF IT IS ACTIVE\r
\r
+\r
INTERNAL WSYNC\r
EXTERNAL IOWQ,TIOWQ,PION,PIOFF\r
\r
TITLE COMCON - COMMAND DECODER AND SAVEGET ROUTINES - V433\r
SUBTTL /RCC 03 JUN 69\r
XP VCOMCN,433\r
-\r
;THIS MACRO PUTS VERSION NO. IN STORAGE MAP AND GLOB\r
\r
ENTRY COMCON ;ALWAYS LOAD COMCON IF LIBRARY SEARCH\r
EXTERNAL RELEA6,RESET,SETRUN,STOP1\r
EXTERNAL STOTAC,UPTIME,USRXIT,USTART,UUOERR\r
\r
+\r
T=BUFPNT ;TEMPORARY AC'S\r
T1=BUFWRD\r
T2=UUO\r
NUMLOP: MOVE T,JBTSTS(ITEM) ;SCAN FOR FREE JOB NO.\r
TLNN T,JNA+CMWB ;THIS NUMBER ASSIGNED?\r
JRST NEWJOB ;NO, SO USE THIS NUMBER\r
-\r
CAIGE ITEM,JOBMAX ;YES, IS THE MAX. JOB NO.?\r
AOJA ITEM,NUMLOP ;NO, KEEP LOOKING\r
JSP TAC,COMER ;YES, NONE LEFT, PRINT "JOB CAPACITY EXCEEDED"\r
EXTERN JBTKCT\r
SETZM JBTKCT(ITEM) ;CLEAR CORE-RUNNING TIME CORE\r
>\r
+\r
CAMLE ITEM,HIGHJB ;HIGHEST JOB NUMBER ASSIGNED?\r
MOVEM ITEM,HIGHJB ;YES,SAVE IT FOR SCHEDULER SCAN OF JOBS\r
\fCHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS?\r
; MUST BE USED IN CONJUNCTION WITH COMMANDS WHICH\r
; NEED CORE AND NEED IT IN CORE\r
\r
+\r
;BITS CHECKED AFTER RETURN FROM COMMAND SETUP ROUTINE\r
\r
CMWRQ=2000 ;REQUEUE JOB AFTER COMMAND WAIT\r
>\r
\r
COMTAB: NAMES\r
- XWD NOCORE+NOJOBN+NOLOGIN+NOINCK,NOCOM\r
DISPL=.-COMTAB ;LENGTH OF TABLE\r
\f;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS\r
\r
Z B (D)\r
>\r
DISP: NAMES\r
+\r
+ XWD NOCORE+NOJOBN+NOLOGIN+NOINCK,NOCOM\r
+\r
\f\r
;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE\r
;WITH FOLLOWING AC'S SET:\r
MOVEI TAC,0 ;RETURN BOTH PHYSICAL AND LOGICAL CORE\r
SOS (PDP) ;NEGATE SKIP RETURN WHICH CORE1 WILL DO\r
JRST CORE1 ;GO DO IT AND RETURN TO CALLER\r
-\f; "PJOB" PRINT JOB NUMBER OF JOB TTY IS ATTACHED TO\r
+\f\r
+; "PJOB" PRINT JOB NUMBER OF JOB TTY IS ATTACHED TO\r
\r
INTERNAL PJOB,DECLF\r
\r
DECLF: PUSHJ PDP,RADX10 ;PRINT TAC AS DEC. THEN CRLF\r
JRST CRLF\r
\r
+\r
; "KJOB" KILL ATTACHED JOB\r
\r
EXTERNAL JBTSTS,TTYKILM,CPOPJ\r
START: ;SAME AS CSTART, DIFF BY COMTAB BITS\r
; WHICH PUT TTY IN MONITOR OR USER MODE\r
\r
+\r
; "CSTART L" OR "CSTART" - START AT LOC. L(TTY IN COMMAND MODE)\r
\r
+\r
STARTC: PUSHJ PDP,OCTIN ;CONVERT POSSIBLE OCTAL NO ARG.\r
IFE FT2REL,<\r
SKIPA TAC1,JOBSA(JDAT) ;NO START ADR. SPECIFIED RETURN\r
JRST DLYCM ;AND DELAY COMMAND TILL CORE IS IN MEMORY\r
; DLYCM WILL SWAP IT IN.\r
>\r
-\fCOR2: IFN FTTTYSERM,<\r
+\fCOR2: IFN FTTTYSER,<\r
MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB ADR\r
>\r
PUSHJ PDP,INLMES ;PRINT ? FOR PATCH\r
EXTERN VIRTAL\r
PUSHJ PDP,INLMES\r
ASCIZ /K CORE\r
-VIR. CORE LEFT =/\r
+VIR. CORE LEFT=/\r
MOVE TAC,VIRTAL ;PRINT AMOUNT OF FREE SWAP SAPCE LEFT\r
JRST RADX10 ;IN DECIMAL\r
>\r
;WORKS LIKE SAVE, EXCEPT THAT HIGH SEG IS SAVED AS SHARABLE(EXT=SHR)\r
;INSTEAD OF NON-SHARABLE(EXT=HGH)\r
\r
+\r
; "SAVE FILE-NAME[PROJ.,PROG.] CORE" - SAVES JOB AREA ON RETRIEVABLE DEVICE\r
;ONLY A SAVE OR A GET IN PROGRESS FOR EACH JOB\r
;NO ATTEMPT IS MADE TO SAVE DEVICE ASSGINMENTS, AC'S OR PC\r
SETZM JBTPRG(ITEM) ;CLEAR JOB'S PROGRAM NAME FOR ROOM\r
JRST SGSET\r
\r
+\r
; "GET DEVICE:FILE-NAME[PROJ.,PROG.] CORE" - SETS UP JOB AREA FROM RETREIVABLE\r
\r
;DEVICE AND ASSIGNS CORE.\r
MOVE TAC,[SIXBIT /SYSTAT/] ;CUSP NAME\r
JRST ARCOM ;RUN IT\r
\r
+\r
EXTERNAL JBTSTS,TTYATT\r
\r
ALOGIN:\r
PUSH PDP,DEVDAT ;SAVE TTY\r
>\r
IFE FTTTYSER,<\r
-\r
PUSH PDP, TAC ;SAVE INPUT BYTE POINT\r
>\r
MOVE TAC,TAC1\r
SKIPE TAC,TAC1 ;IS THERE A LOGICAL NAME SPECIFIED?\r
PUSHJ PDP, DEVLG ;YES, SEE IF IT IS ALREADY IN USE\r
; BY THIS USER\r
- JRST ASSG1 ;NO \r
+ JRST ASSF1 ;NO \r
MOVEI TAC,LOGERR ;YES, PRINT ERROR\r
MOVE DEVDAT,-3(PDP) ;RESTORE TTY DDB\r
PUSHJ PDP,ERRMES\r
ASCIZ / ASSIGNED\r
/\r
\r
-LOGERR: ASCIZ /LOGICAL NAME ALREADY IN USE. /\r
+LOGERR: ASCIZ /LOGICAL NAME ALREADY IN USE, /\r
\f\r
;"DEASSIGN DEV" - DEASSIGNS DEVICE FROM CONSOLE\r
\r
\r
;"REASSIGN DEV:JOB" - REASSIGN DEVICE "DEV" TO JOB "JOB"\r
\r
+\r
REASS:\r
- PUSHJ PDP,CTEXT ;GET DEVICE NAME\r
+ PUSHJ PDP,CTEXT1 ;GET DEVICE NAME\r
JUMPE TAC,NOTENF ;NULL NAME?\r
MOVE UUO,TAC1 ;SAVE IT IN UUO\r
PUSHJ PDP,DECIN1 ;GET NEW JOB NUMBER\r
CAME TAC,ITEM ;ASSIGNED TO THIS JOB\r
JRST REASE3 ;NO\r
MOVE TAC,DEVMOD(DEVDAT)\r
-\r
TLNE TAC,DVTTY ;IS IT A TTY?\r
JRST REASE6 ;YES. CAN'T BE REASSIGNED\r
TRNN TAC,ASSPRG ;IS DEVICE INITED?\r
IFN FTLOGIN, <\r
JRST DEVATT ;WANTS TO ATTACH A DEVICE\r
>\r
-\r
IFE FTLOGIN, <\r
JRST ATT1\r
>\r
ATT1: JSP TAC,ERRMES\r
ASCIZ /ILLEGAL JOB NUMBER\r
/\r
+\r
ATT2: MOVE TAC1,DEVNAM(DEVDAT) ;[PRINT PHYSICAL NAME\r
MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB\r
PUSHJ PDP,PRNAME\r
JSP TAC,ERRMES\r
ASCIZ / ALREADY ATTACHED\r
/\r
+\r
ATT3: JSP TAC,ERRMES\r
ASCIZ /CAN'T ATT TO JOB\r
/\r
+\r
ATT4: JSP TAC,ERRMES\r
ASCIZ /NOT A JOB\r
/\r
+\r
+\r
ATT5: JSP TAC,ERRMES\r
ASCIZ /CAN'T ATT DEV\r
/\r
+\r
ATT6: POP PDP,DEVDAT\r
JSP TAC,ERRMES\r
ASCIZ /WASN'T DET\r
JRST PRTIME ;PRINT AND RETURN\r
\r
RUN2: PUSHJ PDP,INLMES ;PRINT\r
-\r
ASCIZ /SHFL / ;"SHUFFLING "\r
MOVE TAC,SHFWRD ;NO. WORDS SHUFFLED\r
IDIVI TAC,WDPJIF ;NO.WORDS/JIFFY USING BLT\r
MOVE TAC,JOBPC(JDAT)\r
TLNE TAC,USRMOD ;USER MODE?\r
ADDI TAC1,20 ;YES USER ACS ARE AT 20 INSTEAD OF 0\r
+ POPJ PDP,\r
\r
DCOMA:\r
IFN FT2REL,<\r
;"BLANK" OR NO ALPHA NUMERIC BEFORE BREAK CHAR COMMAND\r
;DISPATCHED TO LIKE ANY OTHER COMMAND(0 IN COMMAND TABLE)\r
\r
+\r
CBLANK:\r
IFE FTTTYSER,<\r
LDB TEM,TAC ;GET BREAK CHARACTER\r
JRST CPOPJ ;YES. DELAY\r
STOPC: HLRZ DEVDAT,DEVSER(DEVDAT)\r
MOVSI TAC,446353\r
-\r
CAMN TAC,DEVNAM(DEVDAT)\r
JRST STOPD\r
JRST CPOPJ1 ;OK TO STOP\r
CAIN TEM,":" ;DEVICE NAME?\r
PUSHJ PDP,GETCHR ;YES. SKIP COLON\r
CAIE TEM,3 ;CONTROL C?\r
-\r
JRST TPOPJ ;NO. RETURN ONE LEVEL UP\r
CTXCNC: MOVSI TAC1,(SIXBIT /HAL/) ;MAKE PHONY HALT COMMAND\r
- MOVSI TEM,12 ;WITH LF FOR TERMINATION\r
+ MOVEI TEM,12 ;WITH LF FOR TERMINATION\r
JRST TPOPJ ;AND RETURN UP A LEVEL\r
>\r
\f;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS\r
JRST SKIPSA\r
CAIN TEM,15 ;CR?\r
SKIPS2: POP PDP,T ;YES. POP SUB. LEVEL UP ONE\r
+ POPJ PDP,\r
>\r
IFN FTTTYSER,< EXTERNAL GETCHR,SPCHEK,BREAKB,TAKR\r
\r
COMERA: IFE FTTTYSER,< IBP TAC>\r
IFN FTTTYSER,< PUSHJ PDP,GETCHR> ;MOVE UP, A CH\r
\r
+\r
;ROUTINE TO REPLACE LAST CHARACTER IN INPUT STRING BY "?"\r
;AND SET AS OUTPUT\r
;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
\r
PRQM: MOVEI TEM,"?"\r
IFN FTTTYSER,<\r
-\r
EXTERN OUTCHS\r
JRST OUTCHS\r
>\r
ANDCAB TAC1,DEVMOD(DEVDAT) ;SET DEVICE CHARACTERISTICS FOR TEST\r
; AND ASGHGH\r
SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME\r
-\r
TRNE TAC1,ASSCON ;IS DEVICE ASSIGNED BY CONSOLE?\r
AOS -1(PDP) ;YES, DO OK RETURN\r
IFN FT2REL,<\r
INTERNAL DEASAL,DEASTY\r
EXTERNAL DEVLST\r
\r
+\r
DEASTY:\r
DEASAL: PUSH PDP,DEVDAT ;SAVE TTY DDB ADDRESS\r
HLRZ DEVDAT,DEVLST ;SEARCH ALL DDB'S\r
;(AC2) = 0 IF NO [ ]'S TYPED\r
;THE TERMINAL ] IS OPTIONAL\r
\r
+\r
IFE FTTTYSER,<\r
PJPGNO: SKIPA TAC1,TAC ;SAVE INPUT BYTE POINTER IN CASE NO\r
; [ ]'S WERE TYPED IN.\r
LDB TEM,TAC ;GET CHAR WHICH STOPED PREVIOUS FIELD SCAN\r
; (OR NEXT CHAR ON 2ND TIME THRU LOOP)\r
>\r
-\r
IFN FTTTYSER,<\r
PP0: PUSHJ PDP,SKIPS1\r
PJPGNO:\r
PUSH PDP,IOS ;SAVE DISPATCH ADDRESS(ANYACT USES IOS)\r
IFN FT2REL,<\r
EXTERN KILHGH\r
-\r
PUSHJ PDP,KILHGH ;KILL HIGH SEG\r
>\r
MOVEI TAC,JOBDA ;LENGTH OF JOBDATA AREA\r
;THESE LOCATIONS ARE DEFINED TO BE IN THE USERS UUO ACS\r
\r
;FOR LOOKUP,ENTER UUOS:\r
- XP SGANAM,0 ;FILE NAME\r
- XP SGAEXT,SGANAM+1 ;FILE EXTENSION\r
- XP SGADAT,SGANAM+2 ;FILE CREATION DATE+TIME\r
- XP SGALEN,SGANAM+3 ;LN=-LENGTH,RH=FIRST LOC-1 DUMPED\r
+ XP SGANAM,0\r
+ ;FILE NAME\r
+ XP SGAEXT,SGANAM+1\r
+ ;FILE EXTENSION\r
+ XP SGADAT,SGANAM+2\r
+ ;FILE CREATION DATE+TIME\r
+ XP SGALEN,SGANAM+3\r
+ ;LN=-LENGTH,RH=FIRST LOC-1 DUMPED\r
+\r
; OR PROJECT-PROGRAMMER NUMBER(DISK)\r
- XP SGAEND,SGALEN+1 ;LAST WORD OF DUMP COMMAND LIST=0(SAVE AND GET)\r
- XP SGAREN,SGAEND ; ALSO FIRST WORD FOR RENAME USED AS DELETE\r
- XP SGAPPN,SGAREN+3 ;FOURTH WORD-PLACE TO SAVE PROJECT-PROGRAMEMR\r
+ XP SGAEND,SGALEN+1\r
+ ;LAST WORD OF DUMP COMMAND LIST=0(SAVE AND GET)\r
+ XP SGAREN,SGAEND\r
+ ; ALSO FIRST WORD FOR RENAME USED AS DELETE\r
+ XP SGAPPN,SGAREN+3\r
+ ;FOURTH WORD-PLACE TO SAVE PROJECT-PROGRAMEMR\r
+\r
; NUMBER USER TYPED\r
\r
;FOR OPEN UUOS:\r
- XP SGAMOD,10 ;IOS MODE WORD FOR OPEN UUO\r
- XP SGADEV,SGAMOD+1 ;DEVICE NAME\r
- XP SGAHED,SGAMOD+2 ;INPUT-OUTPUT BUFFER HEADER ADDRESSES=0\r
+ XP SGAMOD,10\r
+ ;IOS MODE WORD FOR OPEN UUO\r
+ XP SGADEV,SGAMOD+1\r
+ ;DEVICE NAME\r
+ XP SGAHED,SGAMOD+2\r
+ ;INPUT-OUTPUT BUFFER HEADER ADDRESSES=0\r
\r
;MISC. DATA LOCATIONS:\r
\r
- XP SGADMP,13 ;DUMP COMMAND IOWD\r
- XP SGACOR,14 ;AC FOR CORE UUO'S(HIGHEST USER LOC DESIRED)\r
- XP SGANEW,15 ;NEW CORE ASSIGNMENT AS SPECIFIED BY THIRD ARG\r
- XP SGAHGH,16 ;LH=EXT TO USE FOR SAVING HIGH SEG\r
+ XP SGADMP,13\r
+ ;DUMP COMMAND IOWD\r
+ XP SGACOR,14\r
+ ;AC FOR CORE UUO'S(HIGHEST USER LOC DESIRED)\r
+ XP SGANEW,15\r
+ ;NEW CORE ASSIGNMENT AS SPECIFIED BY THIRD ARG\r
+ XP SGAHGH,16\r
+ ;LH=EXT TO USE FOR SAVING HIGH SEG\r
+\r
; RH=EXT TO DELETE(IE SHRHGH OR HGHSHR)\r
- XP SGALOW,17 ;LH=EXT WHICH USER TYPED FOR SAVE OR GET COMMAND\r
+ XP SGALOW,17\r
+ ;LH=EXT WHICH USER TYPED FOR SAVE OR GET COMMAND\r
+\r
; OR .SAV IF HE DIDN'T TYPE AN ARG WITH LEADING PERIOD\r
+\r
; RH=0\r
\f;ROUTINE TO SCAN COMMAND STRING ARGUMENTS FOR SAVE,GET,RUN AND R\r
;COMAMNDS AND STORE THEM IN JOB DATA AREA WHICH MUST BE IN CORE\r
EXCH TAC,(PDP) ;AND PUT ON PD LIST\r
PUSH PDP,TAC ;MOVE RETURN PC UP ONE IN PD LIST\r
LDB TAC,PUUOAC ;USER AC FIELD IN RUN OF GETSEG UUO\r
-\r
HRRM TAC,-1(PDP) ;SAVE IN CASE OF ERROR RETURN\r
PUSHJ PDP,GETWDU ;GET FIRST ARG FROM USER AREA\r
MOVEM TAC,SGADEV(PROG) ;STORE DEVICE NAME\r
INTERNAL SAVJOB,SAVERR\r
EXTERNAL JOB41,JOBS41,JOBDDT,JOBSDD,JOBSV\r
\r
+\r
SAVJOB: JSP TAC1,SG1 ;SET UP ACS PROG,PDP,JDAT,ITEM.\r
; RESET DEVICES\r
HLRE TAC1,SGADMP(PROG) ;-NO. OF WORDS TO WRITE\r
UGETF 0,SGAHED ;GET FIRST FREE BLOCK(MEANINGFUL ONLY IF DTA)\r
; CAUSE ENTER TO ASSIGN FIRST LOBCK OF FILE\r
; AS LOWEST FREE BLOCK SO TENDMP CAN READ\r
+ ; SAVED FILES, SGAHED IS NO LONGER NEEDED(OPEN UUO)\r
ENTER 0,SGANAM ;ENTER FILE NAME IN DIRECTORY\r
JRST SAVERR ;DIRECTORY FULL OR PROTECTION FAILURE\r
MOVE TAC,JOB41(JDAT) ;SAVE USER UUO HANDLING JSR\r
CMPLP1: MOVEM TAC,DAT ;SAVE 1ST LOC FOR IOWD\r
CAMLE TAC1,ITEM ;SEARCH FOR 1ST NON-0 WORD\r
AOJA TAC,CMPTHR ;THROUGH\r
-\r
SKIPN @TAC1 ;THIS A DATA WORD?\r
AOJA TAC1,.-3 ;NO, KEEP LOOKING\r
MOVNI AC1,1 ;YES, AC1 WILL BE AN IOWD\r
SAVFIN: PUSHJ PDP,SGREL ;RELEASE DEVICE AND FIND TTY\r
JSP TAC,PHOLD ;PRINT MESSAGE AND STOP JOB\r
ASCIZ /JOB SAVED/\r
+\r
SAVERR: MOVEI TAC,PRTERR ;ERROR CORE IN CASE RUN UUO(PROTECTION ERROR)\r
; CHANGE TO DISK ERROR CODE IF DEV IS DSK\r
PUSHJ PDP,SGRELL ;CHANGE TO DISK ENTER ERROR CODE IF DSK\r
; PUSHJ PDP,GETJB\r
; RETURN ONLY IF EVERYTHING OK\r
\r
+\r
EXTERNAL JOBCOR,JOB,CPOPJ,JOBS41,JOB41\r
\r
GETJB:\r
; USER TO USE TO RESET CORE TO INITIAL SETTING WHEN\r
; PROGRAM IS RESTARTED\r
; FALL INTO SGREL\r
-\f;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R)\r
+\f\r
+;ROUTINE TO RELEASE DEVICE AND FIND TTY\r
+INTERN SGREL\r
+\r
+SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY?\r
+ JRST SGREL2 ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH\r
+ PUSH PDP,T4 ;NO,\r
+ MOVE TAC1,DEVMOD(DEVDAT)\r
+ TLNE TAC1,DVMTA ;MAGTAPE?\r
+ TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE?\r
+ JRST SGREL1 ;NO\r
+ CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT\r
+ STATO 0,IOTEND+IODEND ;AT END OF APTE?\r
+ MTAPE 0,16 ;NO SKIP TO EOF\r
+SGREL1: RELEASE 0, ;NO RELEASE DEVICE\r
+ POP PDP,T4\r
+SGREL2:\r
+ JRST TTYFNU ;FIND TTY FOR CURRENT USER\r
+\r
+;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R)\r
;AND CHECK FOR ERRORS. USED ONLY TO READ LOW FILE.\r
;CALL: PUSHJ P,SGDO\r
; INPUT 0,SGALEN OR OUTPUT 0,SGALEN\r
; OF FIND TTY AND PRINT ?CRLF\r
JSP TAC,PHOLD ;START TTY AND STOP JOB\r
ASCIZ /TRANSMISSION ERROR/\r
-;ROUTINE TO RELEASE DEVICE AND FIND TTY\r
-INTERN SGREL\r
-\r
-SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY?\r
- JRST SGREL2 ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH\r
- PUSH PDP,T4 ;NO,\r
- MOVE TAC1,DEVMOD(DEVDAT)\r
- TLNE TAC1,DVMTA ;MAGTAPE?\r
- TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE?\r
- JRST SGREL1 ;NO\r
- CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT\r
- STATO 0,IOTEND+IODEND ;AT END OF APTE?\r
- MTAPE 0,16 ;NO SKIP TO EOF\r
-SGREL1: RELEASE 0, ;NO RELEASE DEVICE\r
- POP PDP,T4\r
-SGREL2:\r
- JRST TTYFNU ;FIND TTY FOR CURRENT USER\r
\f;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY)\r
;CALL: MOVE DEVDAT,DEVICE ADR.\r
; MOVE PROG,JOBADR.\r
PUSHJ PDP,SGRELL ;RETURN DISK LOOKUP OR ENTER ERROR CODE IF DSK \r
; RELEASE DEVICE AND ERROR RETURN TO USER IF HE WANTED\r
; OR FIND TTY AND PRINT ?CRLF\r
+\r
MOVE TAC1,SGANAM(PROG) ;PRINT FILE NAME\r
PUSHJ PDP,PRNAME\r
PUSHJ PDP,PRPER ;PRINT PERIOD\r
>\r
SGRELE: MOVE TAC1,JOBPD1(JDAT) ;GET FIRST PC ON PD LIST\r
TLNN TAC1,USRMOD ;IS IT IN USER MODE(IE USER UUO)?\r
-\r
JRST SGRLE1 ;NO. MUST BE MONITOR COMMAND OR CALLED OVERLAYED\r
; RELEASE DEVICE, FIND TTY, AND RETURN TO CALLED\r
PUSH PDP,TAC ;SAVE ERROR CORE\r
SKIPE USRJDA+0 ;DO NOT RELEASE CHANNEL 0 IF NOT INITED YET\r
; UUO HANDLER DOES NOT ALLOW THIS FROM EXEC MODE\r
RELEAS 0, ;RELEASE DEVICE(IF INITED)\r
+ PUSH PDP,JOBPD1(JDAT) ;PUT RETURN ON END OF PDLIST\r
JRST USRXIT ;AND RETURN TO USER TO HANDLE ERROR\r
\r
+\r
SGRLE1: PUSHJ PDP,SGREL ;RELEASE DEVICE AND FIND TTY\r
JSP TAC,CONMES ;PRINT ?CRLF AND RETURN TO CALLER\r
; WHO WILL PRINT REST OF ERROR MESSAGE AND STOP JOB\r
-TITLE COMMON - MONITOR COMMON DATA AREA AND CONFIGURATION DEFINITION - V437\r
+\fTITLE COMMON - MONITOR COMMON DATA AREA AND CONFIGURATION DEFINITION - V437\r
SUBTTL PART 3 COMMON.MAC - T. HASTINGS/RCC TS 03 JUN 69\r
XP VCOMMN,437\r
;PUT VERSION NUMBER IN GLOB AND LOADER STORAGE MAP\r
;HAVING PREVIOUSLY DEFINED THEM ON THE CONFIG.MAC FILE USING \r
;MONGEN PROGRAM\r
\r
-\r
IFNDEF LISTSN, <LISTSN==1> ;FORCE S.MAC TO BE LISTED WITH COMMON FILE ONLY\r
;UNLESS 'LISTSN' DEFINED TO BE 0 WITH MONGEN\r
IFNDEF APRSN,<APRSN==0> ;SERIAL NUMBER OF APR\r
\r
;STANDARD MAG TAPE DENSITY(556 BPI),PARITY(ODD-BINARY)\r
INTERN STDENS ;STANDARD MAG TAPE DENSITY(556 BPI),PARITY(ODD-BINARY)\r
+\r
IFNDEF STDENS, <STDENS==2> ;STAND. == BINARY AT 556 BPI\r
;STDENS==D+P WHERE D AND P ARE:\r
;D==1(200 BPI);D== (556 BPI);D==3(800 BPI)\r
IFNDEF MINCOR,<MINCOR==^D54*JOBN> ;DISK DDB AND ACCESS ENTRY\r
; ALLOCATION REQUIRMENTS IN FREE CORE\r
;USED TO EXPAND SIZE OF MONITOR AT ONCE ONLY TIME\r
+\r
;32 WORDS/DDB AND 4 WORDS/ACCESS ENTRY = 36 WORDS\r
;ASSUME 1.5 OPEN FILE/JOB\r
\r
+\r
INTERN LOGSIZ\r
IFNDEF LOGSIZ, <LOGSIZ==2> ;MINSIZ OF VIRTUAL CORE LEFT\r
;AND STILL ALLOW LOGIN. MUST BE\r
FULCNT: 0 ;PRINT DISK IS FULL EVERY 30 SECONDS\r
MAXSIZ: 0 ;SIZE OF LARGEST JOB WHICH MIGHT BE SWAPPED OUT\r
MAXJBN: 0 ;NUMBER OF THAT JOB\r
-SUMCOR: 0 ;TEMPORARY STORAGE CELL USED BY SWAPPER FOR SUM OF\r
- ; CORE NEEDED FOR SWAP IN\r
+SUMCOR: 0 ;TEMP USED BY SWAPPER FOR SUM OF CORE NEEDED FOR SWAP IN\r
IFN FT2REL,<\r
INTERN SWPIN,SWPOUT\r
SWPIN: 0 ;JOB NUMBER BEING SWAPPED IN IF IT HAS A HIGH SEG\r
; USED TO REMEMBER THE JOB NUMBER DURING HIGH SEG\r
+\r
SWPOUT: 0 ;JOB NUMBER BEING SWAPPED OUT IF IT HAS A HIGH SEG\r
; USED TO REMEMBER THE JOB NUMBER DURING HIGH SEG\r
+\r
>\r
INTERN FTTRACK\r
IFN FTTRACK, < \r
INTERN LASIN,LASOUT\r
-\r
LASIN: 0 ;LAST JOB OR HIGH SEG SWAPPED IN\r
LASOUT: 0 ;LAST JOB OR HIGH SEG SWAPPED OUT\r
; ABOVE TWO FOR DEBUGGING ONLY\r
;SAME AS JBTADR (JDAT==PROG)\r
INTERN JBTSGN\r
JBTSGN: IFG SEGN, <\r
- BLOCK JOBN ;RH=SEGMENT NUMBER OF HIGH SEGMENT THIS JOB\r
+ BLOCK JOBN ;SEGMENT NUMBER OF HIGH SEGMENT THIS JOB\r
; IS USING IN CORE OR ON DISK\r
; 0 MEANS JOB DOES NOT HAVE HIGH SEG\r
- ;LH=USER DEPENDENT HIGH SEG STATUS BITS (SEE S.MAC)\r
+ ;LH=USER DEPENDENT HIGH SEG STATUS BITS\r
+ ; (SEE S.MAC)\r
XP ITMSGN,ITEM+JOBMXL ;LH SYMBOL FOR GETTAB UUO\r
>\r
IFE SEGN, <\r
- 0 ;SINGLE-ENTRY NULL JBTSGN TABLE....\r
- XP ITMSGN,JOBMXL ;LH SYMBOL FOR GETTAB UUO SO THAT JBTSGN IS\r
- ; UNDEFINED, I.E., MAKE INDEXING BY ITEM BE 0, BUT\r
- ; ALLOW REFERENCES UP TO JOBMXL.\r
+ 0\r
+ XP ITMSGN,JOBMXL ;LH SYMBOL FOR GETTAB UUO\r
+ ;SO THAT JBTSGN IS UNDEFINED\r
+ ;I.E., MAKE INDEXING BY ITEM BE 0\r
+ ; BUT ALLOW REFERENCES UP TO JOBMXL\r
>\r
IFG DSKN, < ;DISK SYSTEM ?\r
INTERN PRJPRG,JBTDIR\r
RTIME: BLOCK JOBN ;TOTAL RUN TIME SINCE LAST IJOB OR RUNTIME\r
TTIME: BLOCK JOBN ;TOTAL RUN TIME SINCE LAST IJOB\r
>\r
-\r
- IFG SYS50N,< ;SWAPPING SYSTEM ?\r
+\f IFG SYS50N,< ;SWAPPING SYSTEM ?\r
INTERNAL JBTSWP,JBTCHK\r
JBTSWP: BLOCK JOBN+SEGN ;LH:==PROTECT TIME WHILE JOB IS IN CORE.\r
; DISK ADDRESS WHILE SWAPPED OUT\r
>\r
IFG DSKN, <\r
INTERN MQUEUE,MQTOP\r
-\r
MQUEUE: BLOCK JOBN ;DISK MONITOR I/O QUEUE\r
MQTOP=. ;LAST LOC+1 OF MONITOR QUEUE\r
>\r
\r
LALL ;LIST QUEUE DEFINITIONS FOR ALL TO SEE\r
\r
- DEFINE X <MXQUE==MXQUE+1;>\r
+ DEFINE X <MXQUE==MXQUE+2;>\r
QUEUES\r
DEFINE X (A)\r
\r
XALL ;BACK TO NORMAL MACRO EXPANSION\r
\r
INTERN JBTQ,JBTQM1,JBTQP1,JBTQMN\r
-\r
BLOCK MXQUE ;NUMBER OF QUEUES FOR SWAPPING SCHEDULER\r
JBTQ: BLOCK JOBN ;ONE ENTRY PER JOB,\r
- ; LH=PREVIOUS JOB, RH=NEXT JOB IN QUEUE\r
+ ; LH=PREVIOUS JOB, RH=NEXT JOB IN QUEUE\r
; NEGATIVE MEANS THIS IS FIRST (LH) OR LAST (RH)\r
; JOB IN QUEUE\r
JBTQM1==JBTQ-1 ;JBTQ-1\r
;N = JUST 1 RELOC. REG.]\r
;Y\r
\r
-XP KT10AN,0\r
+XP KT10AN,1\r
\r
\r
;HOW MANY MORE SEGMENTS THAN JOBS?[0 UNLESS YOU\r
\r
ENTRY CORE1 ;ALWAYS LOAD CORE1(FOR LIB SEARCH)\r
\r
-;CORE ALLOCATION IS DONE ON A 1K BLOCK BASIS\r
\r
+;CORE ALLOCATION IS DONE ON A 1K BLOCK BASIS\r
;USING A USE BIT TABLE(CORTAB) WHICH HAS A 1\r
;FOR EVERY BLOCK WHICH IS NOT AVAILABLE BECAUSE:\r
; 1.IN USE BY MONITOR\r
\r
INTERN ANYACT,ANYDEV\r
EXTERN JOBMAX\r
+\r
ANYACT:\r
IFN FTSWAP,<\r
INTERN ANYDEV\r
; UNTIL A MORE FAVORABLE ITME\r
;CALL: MOVE ITEM,HIGH RO LOW SEG NUMBER\r
; PUSHJ PDP,TRYSWP\r
-; RETURN1 - JOB MUST REMAIN RUNABLE(NSHF,NSWP SET OR SAVE,GET IN PROGRESS); RETURN2 - OK TO SWAP HIGH OR LOW SEG\r
+; RETURN1 - JOB MUST REMAIN RUNABLE(NSHF,NSWP SET OR SAVE,GET IN PROGRESS)\r
+; RETURN2 - OK TO SWAP HIGH OR LOW SEG\r
\r
IFN FTSWAP,<\r
INTERN TRYSWP\r
\r
\r
;CORE0 IS CALLED BY THE CORE MONITOR COMMAND AND THE CORE SHUFFLER\r
-\r
;AND RUN COMMAND\r
;BOTH LOGICAL AND PHYSICAL CORE ASSIGNMENT ARE AFFECTED\r
\r
PUSHJ PDP,CURHGH ;CHECK TO SEE IF THIS CORE ASSIGNMENT IS FOR\r
; HIGH SEG WHICH CURRENT USER MAY ALSO BE USING\r
; IF YES, RESET HARDWARE AND SOFTWARE RELOC INFO.\r
+ ; RETURN WITH ITEM PRESERVED,PROG SET TO RELOC\r
; OF SEG WHICH HAS JUST HAD CORE REASSIGNED\r
\r
>\r
; AND RETURN\r
\f;ROUTINE TO SET AND CLEAR CORE USE TABLE\r
;CALL: MOVEI T,1 ;TO SET TABLE\r
- MOVEI T,0 ;TO CLEAR TABLE\r
+; MOVEI T,0 ;TO CLEAR TABLE\r
; MOVE BLK,HIGHEST REL. LOC. IN USER AREA\r
; MOVE LOC,ADDRESS OF FIRST BLOCK TO SET CLEAR\r
\r
ASH TAC,-12 ;FORM BYTE POINTER TO BIT-1\r
IDIVI TAC,^D36 ;TAC=WORD,TAC1=BIT\r
ADD TAC,CORE2P ;FORM BYTE POINTER\r
-\r
MOVNS TAC1\r
ADDI TAC1,^D36\r
DPB TAC1,[POINT 6,TAC,5]\r
-\fTITLE DCSINT - INT. SERV. FOR DATA COMMUNICATION SYSTEM 630 - V402\r
+TITLE DCSINT - INT. SERV. FOR DATA COMMUNICATION SYSTEM 630 - V402\r
SUBTTL M. FREDRIKSEN/TH/CHW TS 7 MAY 69\r
XP VDCSIT,402\r
;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP\r
\r
;BYTE POINTERS\r
\r
-\r
EXTERNAL PLASTC\r
\r
\f;DEVICE DEPENDENT PORTION OF INITIALIZATION CODE\r
>\r
SUBTTL R. GRUEN/RCC TS 03 JUN 69 V004\r
XP VDISSR,004\r
-\r
;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP\r
; THESE ROUTINES HANDLE INTERRUPTS FROM THE DISPLAY DATA\r
; CHANNEL. THEY SEARCH THE COMMAND POINTER LIST SUPPLIED\r
;IF THE T30 SWITCH = 1 THIS IS THE ROUTINE FOR A DEC\r
;TYPE 30 DISPLAY WITH A TYPE 348 INTERFACE.\r
;OTHERWISE IT IS THE ROUTINE FOR A DEC TYPE 340.\r
+\r
+\r
\f\r
INTERNAL FTCHECK,FTMONP\r
IFN FTCHECK+FTMONP,<\r
CAMLE A,DISHI\r
JRST EXIT2\r
>\r
-\f\r
- JRST DISINI ;INITIALIZATION\r
+\f JRST DISINI ;INITIALIZATION\r
POPJ PDP, ;PRINT ERROR AND STOP JOB\r
DISDSP: JRST DISSTP ;RELEASE\r
JRST DISSTP ;CLOSE\r
POPJ PDP, ;CLOSE INPUT\r
POPJ PDP, ;DIRECTORY CLEAR\r
POPJ PDP, ;MTAPE\r
-\f\r
-;DISINI IS CALLED FOR RELEASE, CLOSE, AND SUNDRY ILLEGAL CONDITIONS\r
+\f;DISINI IS CALLED FOR RELEASE, CLOSE, AND SUNDRY ILLEGAL CONDITIONS\r
; WHICH WANT TO TURN THE DISPLAY OFF. IT FIRST CONVINCES\r
; THE INTERRUPT LEVEL ROUTINES TO GO BACK TO SLEEP AND THEN\r
; TELLS THE MONITOR THAT THE DEVICE IS INACTIVE, LASTLY,\r
MOVEI TAC,PENCHN ;SET UP CONO WORD WITH PROPER\r
ASH TAC,3 ; CHANNEL ASSIGNMENTS\r
ADDI TAC,DISCHN\r
-\r
TRO TAC,4000 ;SET DISPLAY READY BIT IN CONO WORD\r
MOVEM TAC,DISCON>\r
JRST DISIN1\r
EXCH TAC,PENLOC ;SAVE ADR IN PENLOC AND RESTORE TAC\r
JEN @PENCHL ;DISMIS THE INTERRUPT\r
>\r
-\f\r
-;DISNXT IS CALLED WITH A JSR DISNXT, IT SETS UP THE NEXT\r
+\f;DISNXT IS CALLED WITH A JSR DISNXT, IT SETS UP THE NEXT\r
; POINTER FOR THE DISPLAY'S BLKO BY INTERPRETING A\r
; COMMAND LIST SUPPLIED BY THE USER, THIS COMMAND LIST\r
; IS DESCRIBED AT THE BEGINNING OF THE PROGRAM. IF THE\r
DPB TAC,INTPNT\r
JRST DISNX1 ;GET NEXT POINTER\r
INTPNT: POINT 3,DISCON,29>\r
-\f\r
-;DISFIN RECEIVES CONTROL WHEN THE DISPLAY'S BLKO POINTER REACHES\r
+\f;DISFIN RECEIVES CONTROL WHEN THE DISPLAY'S BLKO POINTER REACHES\r
; ZERO. IT SAVES THE TWO AC'S WHICH DISNXT USES AND\r
; DOES A JRST TO DISNXT. ON A NORMAL RETURN IT RESTORES THE\r
; AC'S AND DISMISSES THE INTERPUT. ON A "NO MORE DATA"\r
; AND SIMILAR GOOD THINGS SINCE IT ALSO STORES THE PC FROM\r
; THE JSR IN THE GENERAL PC LOCATION FOR THIS CHANNEL\r
; IF THE DISPLAY IS OFF. IT DOES NOT RESTART IT.\r
-\r
; IT CHECKS TO SEE IF THE CLOCK HAS RUN OUT BEFORE THE PICTURE;\r
; IF SO, IT CALLS DISBEG TO RESTART THE DISPLAY WITH A NEW\r
; COMMAND LIST. IT TURNS OFF THE IO ACTIVE BIT WHICH WAS\r
DVT6: MOVEM IOS,DISIOS\r
PUSHJ PDP,DISBEG ;START NEW COMMAND LIST\r
JRST DISRET\r
-\f\r
-;DISREG IS CALLED WITH A PUSHJ PDP,DISBEG, IT DISABLES THE\r
+\f;DISREG IS CALLED WITH A PUSHJ PDP,DISBEG, IT DISABLES THE\r
; DISPLAY ITSELF (BY USING DISOFF) AND ALSO DISABLES THE\r
; CLOK RESTART AND RESETS THE POINTER TO THE USER'S\r
; COMMAND LIST TO THAT SPECIFIED ON THE LAST OUTPUT\r
\r
CLOKRT: XWD CLOK,2 ;CONTROL FOR CLOCK QUEUE: 2 JIFFIES\r
;TWO JIFFIES\r
-\f\r
-;CLOK IS CALLED AT THE CLOCK LEVEL IN RESPONSE TO A REQUEST\r
+\f;CLOK IS CALLED AT THE CLOCK LEVEL IN RESPONSE TO A REQUEST\r
; IN THE CLOCK QUEUE. A BIT IS SET TO INDICATE THAT THE\r
; CLOCL PERIOD HAS ELAPSED. IF THE DISPLAY IS STILL IN\r
; PROGRESS, CLOK RETURNS AT THIS POINT. OTHERWISE, CLOK\r
LDB ITEM,PJOBN\r
TDNE TAC,JBTSTS(ITEM) ;IS SHUFFLE LOCKED OUT?\r
JRST DISBEG ;YES, RESTART DISPLAY AND RETURN\r
-\r
IORM TAC,JBTSTS(ITEM) ;NO. LOCK IT OUT.\r
MOVE TAC,JBTADR(ITEM) ;RESET DISHI AND DISREL AFTER SHUFFLING\r
HLRZM TAC,DISHI\r
DISIN: MOVNI TAC,1\r
EXCH TAC,PENLOC ;GET LATEST COORDINATES,\r
JRST STOTAC ;STORE AND RETURN\r
-\f\r
-;DISOUT DOES THE WORK OF THE OUTPUT UUO. IT SETS A BIT TO\r
+\f;DISOUT DOES THE WORK OF THE OUTPUT UUO. IT SETS A BIT TO\r
; INDICATE THAT THE DEVICE IS ACTIVE AND INHIBITS\r
; INTERUPTS WHICH MAY STILL BE IN PROGRESS. SINCE THE\r
; MONITOR CALLS WSYNCE BEFORE COMING HERE. THE USER IS\r
BLKLIT: BLKO DIS,DISBKO\r
JSRLIT: JSR DISCHL\r
END\r
- \r
- \r
;USED ONLY TO ASSEMBLE DISSER TO MAKE TYPE 30 SERVICE INSTEAD OF TYPE 340\r
\r
T30=1 ;FLAG THAT TYPE 30 IS WANTED\r
+\f\r
\r
;BYTE POINTERS\r
\r
+\r
EXTERNAL PLASTC\r
\r
\r
+\r
+\r
DLS=240 ;DC10 DEVICE NUMBER\r
;BITS IN CHREC TO COMMUNCATE WITH DLS\r
\r
JRST RECINT ;YES, RECEIVER INT. HANDLER\r
DATAO DLS,[EXP TDSABL] ;CLEAR HARDWARE FLAG\r
JRST XMTINT ;GO PROCESS CHAR IN SCNSRF OR SCNSRH\r
-\f\r
-;COMMON PARTS OF CTY AND SCANNER INTERRUPT SERVICE ROUTINES.\r
+\f;COMMON PARTS OF CTY AND SCANNER INTERRUPT SERVICE ROUTINES.\r
\r
EXTERNAL INJEST,DDBSRC\r
INTERNAL TCOMM\r
SCNIN2: DATAO DLS,[EXP TDSABL] ;SET TRANSMIT DISABLE BIT AND OUTPUT IT\r
;(JUST INCASE, ELSE IT WILL INTERRUPT IMMEDIATLY AGAIN)\r
POPJ PDP, ;DISMISS INTERRUPT\r
-\f\r
-\r
-;COMMON TO RECEIVE AND TRANSMIT.\r
+\f;COMMON TO RECEIVE AND TRANSMIT.\r
\r
INUSE: HRRZS DDB ;LINE DISABLED IF RH TTYTAB=-1\r
CAIN DDB,-1\r
POPJ PDP,\r
\r
LIT\r
-\r
DLSEND: END\r
;THEN THE JOB IS STOPPED AND CONSOLE IS RETURNED TO\r
;MONITOR COMMAND MODE\r
\r
-\r
;APR DETECTED ERRORS\r
;PUSHDOWN OVERFLOW,ILLEGAL MEMORY, NONEXISTENT MEMORY\r
;FOR WHICH THE USER IS NOT ENABLED.\r
APRILR: JSP TAC,ERRPTU\r
ASCIZ /ILL MEM REF/\r
JRST APRSCD ;PRINT LOC, THEN STOP JOB\r
-\r
-\fAPRNXM: TRNN TAC,NXM ;NON-EX MEM?\r
+\f\r
+APRNXM: TRNN TAC,NXM ;NON-EX MEM?\r
JRST APRPDL ;NO\r
JSP TAC,ERRPTU ;YES\r
ASCIZ /NON EX MEM/\r
; 1)"AT USER LOC XXX" OR\r
; 2)"AT EXEC LOC XXX; EXEC CALLED FROM \r
; EXEC/USER LOC YYY\r
-\f;ADDRESS CHECK ERROR AT ANY LEVEL\r
+\f\r
+;ADDRESS CHECK ERROR AT ANY LEVEL\r
;DEVDAT MUST BE SET UP TO POINT TO OFFENDING DEVICE\r
\r
INTERNAL ADRERR\r
PUSHJ PDP,ERNAM ;PRINT "DEVICE XXX"\r
JSP TAC,UUOMES ;PRINT MESSAGE,UUOPC,STOP JOB\r
ASCIZ / CANNOT DO INPUT/\r
-\f;OUTPUT UUO FOR INPUT DEVICE\r
+\f\r
+;OUTPUT UUO FOR INPUT DEVICE\r
;CALLED AT UUO LEVEL ONLY\r
\r
INTERNAL ILLOUT\r
\r
DEVEXC: PUSHJ PDP,ERNAM ;PRINT "DEVICE XXX"\r
JRST EXCALP ;PRINT "EXEC CALLED FROM EXEC/USER LOC YYY"\r
-\f;ROUTINE TO HALT A JOB WHEN A DEVICE IS NOT READY FOR I/O\r
+\r
+\f\r
+;ROUTINE TO HALT A JOB WHEN A DEVICE IS NOT READY FOR I/O\r
;CALLED FROM XXSER AT UUO LEVEL\r
;CALL MOVE DEVDAT,ADDR. OF DEV. DDB\r
; PUSHJ PDP,HNGSTP\r
PUSHJ PDP,PRQM ;PRINT QUESTION MARK FOR BATCH\r
PUSHJ PDP,ERNAM ;PRINT "DEVICE XXX"\r
PUSHJ PDP,INLMES ;AND MSG.\r
-ASCIZ /OK?\r
+ASCIZ / OK?\r
^C\r
+\r
./\r
PUSHJ PDP,TTYSTC ;START UP TTY IN COMMAND MODE\r
POP PDP,DEVDAT ;BRING BACK DEV DDB & IOS WORD\r
PUSHJ PDP,STOP1 ;STOP JOB &\r
POP PDP,ITEM\r
JRST WSCHED ;RESCHEDULE\r
-\f;COMMON ERROR MESSAGE SETUP ROUTINES\r
+\f\r
+;COMMON ERROR MESSAGE SETUP ROUTINES\r
;CALL: JSP TAC,ERRPTU, ERRDEV, OR ERRPNT\r
; ASCIZ /MESSAGE/\r
; RETURNS HERE WITH DEVDAT SAVED 0(PDP)\r
PCSTOP: PUSHJ PDP,HOLD ;STOP JOB, START TTY AND SET JOB ERROR BIT\r
POP PDP,DEVDAT ;RETURN ONLY IF AT INTERRUPT LEVEL\r
JRST TPOPJ ;REMOVE ERROR CALL AND RETURN\r
-\f;ROUTINE TO PRINT PC AS:\r
+\f\r
+;ROUTINE TO PRINT PC AS:\r
;1) "EXEC LOC XXX" OR "USER LOC XXX"\r
;CALL: MOVE TAC1,PC TO PRINT(LH=PC FLAGS)\r
; PUSHJ PDP,PCP\r
HRRZ TAC,TAC1 ;PRINT RIGHT HALF IN OCTAL\r
; FALL INTO OCTPNT\r
\r
+\r
INTERN OCTPNT\r
\r
;ROUTINE TO PRINT 6 DIGIT OCTAL NUMBER\r
IDPB TAC,DAT ;ADD CHAR TO HALGF DUPLEX OUTPUT STREAM\r
POPJ PDP,\r
>\r
-\f;ROUTINE TO PRINT "DEVICE XXX"\r
+\f\r
+;ROUTINE TO PRINT "DEVICE XXX"\r
;CALL MOVE DAT,ASCII OUTPUT BYTE POINTER\r
; PUSH PDP,DEVDAT\r
; PUSHJ PDP,ERNAM\r
SKIPE TAC1,-1(PDP) ;IS DEVDAT = 0?\r
MOVE TAC1,DEVNAM(TAC1) ;NO, GET DEVICE NAME\r
\r
+\r
;ROUTINE TO PRINT SIXBIT NAME\r
;CALL MOVE DAT,ASCII OUTPUT BYTE POINTER\r
; MOVE TAC1,NAME\r
SUBTTL RPG/CMF/JF/PMH/DMN 7-SEPT-71\r
;COPYRIGHT 1968,1969,1970,1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.\r
\r
- VMACRO==46 ;VERSION NUMBER\r
+ VMACRO==36 ;VERSION NUMBER\r
VUPDATE==0 ;DEC UPDATE LEVEL\r
- VEDIT==52 ;EDIT NUMBER\r
+ VEDIT==0 ;EDIT NUMBER\r
VCUSTOM==0 ;NON-DEC UPDATE LEVEL\r
\r
\r
\fSUBTTL OTHER PARAMETERS\r
\r
.PDP== ^D50 ;BASIC PUSH-DOWN POINTER\r
-IFNDEF LPTWID,<LPTWID==^D132> ;DEFAULT WIDTH OF PRINTER\r
+IFNDEF LPTWID,<LPTWID==^D120> ;DEFAULT WIDTH OF PRINTER\r
.LPTWD==8*<LPTWID/8> ;USEFUL WIDTH IN MAIN LISTING\r
.CPL== .LPTWD-^D32 ;WIDTH AVAIABLE FOR TEXT WHEN\r
;BINARY IS IN HALFWORD FORMAT\r
MOVEM RC,VECREL\r
PUSHJ PP,VARA ;FILL OUT SELF-DEFINED VARIABLES\r
PUSHJ PP,STOUTS ;DUMP THE LINE\r
- PUSH PP,IO ;SAVE FLAGS\r
- TLO IO,IOPROG ;XLIST LITS\r
+; PUSH PP,IO ;SAVE FLAGS\r
+; TLO IO,IOPROG ;XLIST LITS\r
PUSHJ PP,LIT1\r
- POP PP,IO ;GET FLAG BACK\r
+; POP PP,IO ;GET FLAG BACK\r
JUMP2 ENDP2\r
\r
PUSHJ PP,UOUT\r
\r
END BEG\r
\f\r
-\0\0\0\0
\ No newline at end of file
+\0\0\0\0\r
; C(RH)=REL. ADR. OF 3 WORD INPUT BUFFER HEADER\r
XP DEVIAD,7 ;C(LH)=PROG IN INDEX FIELD\r
;BITS 1 AND 2 USED TO KEEP COUNT OF NO. OF USER CHANNELS\r
- \r
; INITED ON THIS DEVICE(DECTAPE ONLY)\r
; IADPTR-COMMON BYTE POINTER TO 2 BIT COUNT\r
XP DEVADR,DEVIAD\r
;REST OF BITS IN LH ARE DEVICE DEPENDENT EXCEPT BIT 14(XP 10) WHICK IS KEPT AS A SPARE\r
\r
\r
+\r
;COMMAND DECODER USE OF AC IOS:\r
\r
;RH=DISPATCH ADDRESS - SAVJOB,GETJOB,RUNJOB\r
; BITS 1-17=BUFFER SIZE\r
; BITS 18-35=NEXT BUFFER ADDRESS\r
\f;JOB STATUS WORD(JBTSTS TABLE), ONE WORD FOR EACH JOB(SOME BITS ALSO APPEAR IN HIGH SEG STATUS WORD)\r
-\r
-\r
XP RUN,400000 ;USER WANTS JOB TO RUN(MUST BE SIGN BIT)\r
XP SNA,400000 ;HIGH SEG NUMBER ASSIGNED (ANALOGOUS TO JNA EXCEPT\r
; MUST BE SIGN BIT)\r
; IF JOB ONLY HAS LOW SEG\r
XP SWP,2000 ;0 IF JOB IN CORE, 1 IF SWAPPED OUT OR ON WAY\r
; IN OR OUT\r
-\r
; SAME FOR LOW AND HIGH SEGMENTS\r
XP NSHF,1000 ;JOB IS NOT SHUFFLABLE\r
; OR HIGH SEGMENT HAS ACTIVE SAVE IO\r
;A ROUTINE SETS UP AN ABSOLUTE USER ADDRESS IN AN AC\r
;OTHER THAN PDP,PROG, OR JDAT. THE MAIN EXAMPLE IS A BLT\r
;FROM EXEC TO USER OR USER TO EXEC.\r
-\r
DEFINE NOSHUFF\r
<>\r
\r
;MACRO TO ALLOW SHUFFLING ONCE MORE\r
-\r
DEFINE SHUFFLE\r
<>\r
\r
>\r
\r
\r
-\r
;MACRO TO START A DEVICE FROM UUO LEVEL\r
;TAC:=XWD DEVINT FLAGS,CONO ARGUMENTS\r
\r
HLRM TAC,A'CON\r
CONO PI,PION\r
>\r
-\f;LIST OF INDEPENDENT MONITOR COMMAND FEATURES\r
+\f\r
+;LIST OF INDEPENDENT MONITOR COMMAND FEATURES\r
;THESE FEATURES CAN BE ELIMINATED FROM A SYSTEM BY\r
;SETTING THE APPROPRIATE FTXXXX SYMBOL BELOW TO 0\r
;AND REASSEMBLING THOSE ROUTINES IN WHICH CODE FOR THE\r
\r
; APPEARS IN FIRST,ONCE,APRSR,SCHED\r
\r
+\r
FTKCT=-1 ;ACCUMULATE CORE*RUNNING TIME FOR CHARGING FOR EACH USER\r
\r
FTPRV=-1 ;PRIVILEGE BITS FOR EACH USER\r
\r
FTGETTABL=-1 ;GETTAB UUO - RETURN CONTENTS OF MONITOR JOBTABLES\r
\r
+\r
+\r
FTRA10=0 ;NO RA-10 DISK CONTROLLER (BRYANT DISK)\r
;TEMPORARILY USED IN DSKSER\r
\f;DEFINE THE QUEUES, QUANTUM RUNNING TIME IN JIFFIES, AND PRIORITY\r
>\r
\r
\r
+\r
;JOB STATUS CODES WHICH HAVE NO CORRESPONDING QUEUES\r
;JOBS ARE UNRUNABLE WHEN IN THESE STATES\r
\r
>\r
XP STTYBF,20 ;SIZE OF TTY BUFFER\r
XP STTYB1,STTYBF+1 ;LENGTH+1\r
-\r
ASUPPRESS ;ELIMINATE ALL SYMBOLS NOT REFERENCED LATER\r
; FROM THE SYMBOL TABLE LISTING\r
LIST\r