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
; WHICH IS ON DISK OR ON ITS WAY IN OR OUT.\r
; JOB WILL BE SWAPPED IN (SEE DLYCOM)\r
; AND IS NOT SITTING QUIETLY IN CORE(IE NO SWAPPING TRANSFER)\r
-PLSXPN=4 ;CORE MUST BE EXPANED IF STILL COMPRESSED BY SAVE NOT GOING\r
+PLSXPN==4 ;CORE MUST BE EXPANED IF STILL COMPRESSED BY SAVE NOT GOING\r
; TO COMPLETION(CONTROL C OR DEVICE OK?)\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
>\r
PUSHJ PDP,RADX10 ;PRINT NO. OF 1K BLOCKS AVAILABLE\r
IFE FTSWAP,<\r
- JSP TAC,CONMAS\r
+ JSP TAC,CONMES\r
ASCIZ /K CORE\r
/\r
>\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
IFN FTLOGIN,< EXTERNAL HELPPP\r
HELP1:\r
MOVE TAC,HELPPP\r
- TLN T,JLOG\r
+ TLNN T,JLOG\r
JRST ALOGIN\r
POPJ PDP,\r
>\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
- JUMPE TAC,NOTENF ;NULL NAME?\r
+ PUSHJ PDP,CTEXT1 ;GET DEVICE NAME\r
+ JUMPE TAC1,NOTENF ;NULL NAME?\r
MOVE UUO,TAC1 ;SAVE IT IN UUO\r
PUSHJ PDP,DECIN1 ;GET NEW JOB NUMBER\r
JRST NOTENF ;NONE SPECIFIED, DOESN'T RETURN IF ERROR\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
AOS JOBEXM(JDAT) ;NO, IT WAS AN E. INCREMENT IN CASE HE TYPES NO ARG\r
HRROS JOBEXM(JDAT) ;YES, FLAG THAT E HAPPENED LAST(LH=-1)\r
PUSHJ PDP,OCTIN ;GET OCTAL LOCATION\r
- SKIPA TAC,JOBEXM(JDAT) ;NONE SPECIFIED, USE LAST LOC OF D OR NEXT OF E\r
+ SKIPA TAC1,JOBEXM(JDAT) ;NONE SPECIFIED, USE LAST LOC OF D OR NEXT OF E\r
JRST COMERA ;ILLEGAL CHARACTER\r
PUSHJ PDP,DEAT ;CHECK FOR AC REFERENCE AND STORE JOBEXM\r
HRRZ UUO,TAC1 ;IGNORE LH\r
HRRZ TAC,(PDP) ;PRINT RIGHT HALF\r
PUSHJ PDP,OCTPNT\r
PUSHJ PDP,INLMES ;PRINT FINAL TAB\r
- ASCIZ / /\r
+ ASCIZ / /\r
JRST TPOPJ ;POP PDP,TAC,POPJ PDP,\r
\f\r
;"DEPOSIT LH RH LOC" - DEPOSITS XWD LH,RH IN LOCATION LOC\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
ASCIZ /. BLKS/\r
>\r
\r
- HRLZ T,DEVLST ;GET DDB POINTER\r
+ HLRZ T,DEVLST ;GET DDB POINTER\r
MOVEI AC2,0 ;SET DEVICE NAME 0 FOR FIRST COMPARE\r
LOP01: MOVE T1,DEVMOD(T) ;DEVICE CHARACTERISTICS\r
TRNN T1,ASSCON!ASSPRG ;DEVICE ASSIGNED BY CONSOLE OR PROGRAM?\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
IDPB TEM,DAT\r
POPJ PDP,\r
>\r
-PRSPC: MOVEI TAC,[ASCIZ / /]\r
+PRSPC: MOVEI TAC,[ASCIZ / /]\r
JRST CONMES\r
\f\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
PUSHJ PDP,DECIN1 ;AMOUNT OF CORE (OPTIONAL THIRD ARG.)\r
JRST SGSET1 ;DOES NOT RETURN IF ERROR. RETURN HERE IF NO ARG.\r
JRST COMERA ;ILLEGAL CHARACTER\r
- LSH TAC,12 ;CONVERT TO HIGHEST REL. LOC.\r
- SUBI TAC,1\r
+ LSH TAC1,12 ;CONVERT TO HIGHEST REL. LOC.\r
+ SUBI TAC1,1\r
SGSET1: MOVEM TAC1,SGANEW(PROG) ;STORE FOR RUN AND SAVE\r
HRRZ TAC1,IOS ;SCHEDULE MONITOR JOB \r
; GUARRANTEE LH OF PC WORD IS 0, SINCE IT WILL\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
MOVE TAC1,DEVMOD(DEVDAT) ;RETURN DEVICE CHARACTERISTICS(IF DISK SYS)\r
TLNE TAC1,DVDSK ;IS THIS DEVICE A DISK?\r
\r
- MOVS TAC1,SGAPPN(PROG) ;YES. MAKE SURE FORTH WORD IS PROJ,PROG NO.\r
+ MOVS TAC,SGAPPN(PROG) ;YES. MAKE SURE FORTH WORD IS PROJ,PROG NO.\r
>\r
MOVSM TAC,SGALEN(PROG) ;NO. MAKE SURE FORTH WORD IS IOWD FOR DECTAPE\r
; SINCE DECTAPE USES RH TO COMPUTE LENGTH IN K\r
; PUSHJ PDP,GETJB\r
; RETURN ONLY IF EVERYTHING OK\r
\r
+\r
EXTERNAL JOBCOR,JOB,CPOPJ,JOBS41,JOB41\r
\r
GETJB:\r
MOVEM TAC,JOB41(JDAT) ;SAVED BY SAVE\r
LOWFIN: HRRZ TAC,JOBCOR(JDAT) ;CORE ARG FROM PREVIOUS SAVE(THIS MONITOR\r
; ALWAYS STORES SOMETHING)\r
- SKIP TAC ;IS THIS AN OLD FORMAT FILE WITH NO CORE ARG TO SAVE?\r
+ SKIPN TAC ;IS THIS AN OLD FORMAT FILE WITH NO CORE ARG TO SAVE?\r
MOVE TAC,USRREL ;YES, USE ASSIGNMENT MADE WEN LOW FILE READ IN\r
PUSHJ PDP,CKSARG ;RETURN ONLY IF USER'S SUPLLIED ARG IS 0 OR NOT\r
; SMALLER THAN SAVE CORE ARG. RETURN LARGER\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
+EXTERN TTYFUW\r
+\r
+SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY?\r
+ JRST TTYFUW ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH\r
+ PUSH PDP,IOS ;NO,\r
+ MOVE TAC,DEVMOD(DEVDAT)\r
+ TLNE TAC,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,6 ;NO SKIP TO EOF\r
+SGREL1: RELEAS ;NO RELEASE DEVICE\r
+ POP PDP,IOS\r
+SGREL2:\r
+ JRST TTYFUW ;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
;SGDOA CALLED FROM SAVE, IT HAS ALREADY SET LH OF USRHCU=-2\r
;TO INDICATE CORE IS COMPRESSED\r
\r
- EXTERN USRHCU,USRJDA,JOBSA,JOBDDT,JOBSDD,JOBSD1,JOBSAV,JOBCOR\r
- EXTERN JOBSV,JOBSV3,JOBSVD,JOBSDP\r
+ EXTERN USRHCU,USRJDA,JOBSA,JOBDDT,JOBSDD,JOBSD1,JOBSAV,JOBCOR\r
+ EXTERN JOBSV,JOBSV3,JOBSVD,JOBSDP\r
\r
-SGDO: HRROS USRHCU ;SET LH OF USRCHU-1 AS A FLAG TO INDICATE SAVE GET\r
+SGDO: HRROS USRHCU ;SET LH OF USRCHU-1 AS A FLAG TO INDICATE SAVE GET\r
; LOW FILE IO IN PROGRESS, SO MONITOR WILL\r
; NOT STORE HIGH SEG PROTECTION IN JOBHRL WHICH\r
; HAS IOWD FOR ZERO COMPRESSION\r
-SGDOA: XCT @(PDP) ;EXECUTE INPUT OR OUTPUT UUO\r
- MOVE ITEM,JOB ;READ INTO PROTECTED PART OF JOB DATA AREA\r
- PUSHJ PDP,EXPAND ;EXPAND CORE IMAGE\r
- JRST ADRERR ;ADDRESS CHECK, PRINT MESSAGE AND STOP JOB\r
- MOVE TAC1,JOBDDT(PROG) ;COPY DDT STARTING ADR\r
- MOVEM TAC1,USRDDT ;INTO MONITOR PROTECTED AREA(IN CASE THIS IS GET)\r
- SETZM USRHCU ;FLAG THAT SAVE-GET IO FINISHED AND CORE EXPANDED\r
+SGDOA: XCT @(PDP) ;EXECUTE INPUT OR OUTPUT UUO\r
+ MOVE ITEM,JOB ;READ INTO PROTECTED PART OF JOB DATA AREA\r
+ PUSHJ PDP,EXPAND ;EXPAND CORE IMAGE\r
+ JRST ADRERR ;ADDRESS CHECK, PRINT MESSAGE AND STOP JOB\r
+ MOVE TAC,JOBDDT(PROG) ;COPY DDT STARTING ADR\r
+ MOVEM TAC,USRDDT ;INTO MONITOR PROTECTED AREA(IN CASE THIS IS GET)\r
+ SETZM USRHCU ;FLAG THAT SAVE-GET IO FINISHED AND CORE EXPANDED\r
AOS (PDP) ;SKIP OVER UUO IN CALLING SEQUENCE\r
\r
;ROUTINE TO CHECK FOR IO ERRORS(CALLED FROM SEGCON)\r
\r
INTERN SGIOCK\r
\r
-SGIOCK: MOVE T4,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE\r
- TRNN T4,IOBKTL!IODTER!IODERR!IOIMPM ;ANY ERRORS ON SAVE-GET DEVICE?\r
+SGIOCK: MOVE IOS,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE\r
+ TRNN IOS,IOBKTL!IODTER!IODERR!IOIMPM ;ANY ERRORS ON SAVE-GET DEVICE?\r
POPJ PDP, ;NO, GIVE OK RETURN\r
MOVEI TAC,TRNERR ;YES, ERROR CODE IN CASE THIS IS RUN UUO\r
; (TRANSMISSION ERROR)\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
HLLM TAC,JOBSV(PROG)\r
\f;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE\r
EXPND1: MOVE TAC,[XWD PROG,JOBSV] ;IT WAS READ INTO JOBSV\r
- MOVE TAC,@TAC ;FIRST IOWD\r
+ MOVE TAC1,@TAC ;FIRST IOWD\r
EXPLP1: HRRZ AC1,TAC1 ;ADDRESS OF IOWD\r
CAIGE AC1,JOBSAV ;LEGAL?\r
AOJA AC1,TOOLOW ;NO. DELETE DATA WHICH IS TO LOW\r
HRRZ AC1,@TAC ;GET ADDRESS\r
CAIGE AC1,JOBSD1 ;LEGAL?\r
AOJA AC1,TOOLOW ;NO, AT LEAST PART OF THE DATA IS LOW\r
-IOWBLT: MOVSI TAC,@TAC ;YES, KEEP THE ENTIRE IOWD DATA\r
+IOWBLT: MOVSI TAC1,@TAC ;YES, KEEP THE ENTIRE IOWD DATA\r
HRRI TAC1,JOBSV(PROG) ;TAC1 IS A BLT POINTER\r
SUBI TAC,JOBSV ;RH OF TAC IS AMOUNT BEING DELETED\r
SUBI AC3,(TAC) ;AC3 POINTS TO TOP OF DATA READ IN-(N)\r
BLT TAC1,@AC3 ;MOVE ONLY GOOD DATA DOWN\r
JRST EXPND1 ;GO EXPAND THE GOOD DATA\r
-\fSGDO1: MOVEI TAC,JOBDDT(PROG) ;MOVE EVERYTHING DOWN )MUST BE NON-COMPRESSED DSK FILE\r
+\fSGDO1: MOVEI TAC,JOBDDT(PROG) ;MOVE EVERYTHING DOWN )MUST BE NON-COMPRESSED DSK FILE \r
HRLI TAC,JOBSVD(TAC) ;OR CONVERT SAVE FILE\r
SKIPGE JOBSV(JDAT) ;IS THIS CONVERT FILE(FIRST WORD IS IOWD)?\r
HRLI TAC,JOBSDP(TAC) ;YES, ALSO SKIP OVER IOWD\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