Cleaned up more typos and fixed paging issues.
[retro-software/dec/tops10/v4.5.git] / src / comcon.mac
index d51df4f..7038b08 100644 (file)
@@ -1,7 +1,6 @@
 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
@@ -49,6 +48,7 @@ EXTERNAL MONSTR,MSTART,OCTPNT,PHOLD,PRNAME,RADX10,RELEA5
 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
@@ -96,7 +96,6 @@ CHKNO:        JUMPN ITEM,CHKRUN       ;JOB NUMBER ALREADY ASSIGNED?
 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
@@ -119,6 +118,7 @@ IFN FTKCT,<
        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
@@ -290,6 +290,7 @@ PLSXPN=4    ;CORE MUST BE EXPANED IF STILL COMPRESSED BY SAVE NOT GOING
                ; 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
@@ -386,7 +387,6 @@ DEFINE C(A,B,D) <
 >\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
@@ -394,6 +394,9 @@ DEFINE C(A,B,D) <
 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
@@ -439,7 +442,8 @@ IFN FT2REL,<
        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
@@ -447,6 +451,7 @@ PJOB:       MOVE TAC,ITEM           ;JOB NO.
 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
@@ -502,8 +507,10 @@ EXTERNAL JOBSA
 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
@@ -619,7 +626,7 @@ COR1:       JUMPN PROG,COR0         ;GO RELEASE ALL DEVICES IF HE HAS CORE IN MEMORY YET
        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
@@ -654,7 +661,7 @@ IFN FTSWAP,<
        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
@@ -662,6 +669,7 @@ VIR. CORE LEFT =/
 ;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
@@ -674,6 +682,7 @@ SSAVE:      HRRI IOS,SAVJOB         ;SETUP TO RUN SAVEJOB (IOS CLEARED BEFORE
        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
@@ -719,6 +728,7 @@ SYSTAT:     IFN FTLOGIN,<
        MOVE    TAC,[SIXBIT /SYSTAT/]   ;CUSP NAME\r
        JRST    ARCOM   ;RUN IT\r
 \r
+\r
 EXTERNAL JBTSTS,TTYATT\r
 \r
 ALOGIN:\r
@@ -821,7 +831,6 @@ IFN FTTTYSER,<
        PUSH    PDP,DEVDAT      ;SAVE TTY\r
 >\r
 IFE FTTTYSER,<\r
-\r
        PUSH PDP, TAC           ;SAVE INPUT BYTE POINT\r
 >\r
        MOVE    TAC,TAC1\r
@@ -903,7 +912,7 @@ IFN FTTTYSER,<
        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
@@ -925,7 +934,7 @@ IFN FT2REL,<
        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
@@ -982,8 +991,9 @@ REASSI:     LDB UUO,PUUOAC
 \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
@@ -1011,7 +1021,6 @@ REASS1:   EXCH ITEM,(PDP)         ;NEW JOB NO. IN ITEM
        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
@@ -1091,7 +1100,6 @@ ATTACH:   IFE FTTTYSER,<
 IFN    FTLOGIN, <\r
        JRST DEVATT             ;WANTS TO ATTACH A DEVICE\r
 >\r
-\r
 IFE    FTLOGIN, <\r
        JRST    ATT1\r
 >\r
@@ -1153,21 +1161,27 @@ DEVATT: IFE FTTTYSER,<
 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
@@ -1285,7 +1299,6 @@ RUNTIM:   PUSHJ PDP,DECIN         ;GETJOB NO. ARG.
        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
@@ -1450,6 +1463,7 @@ DCOM1:    PUSHJ PDP,DEAT          ;CHECK FOR AC REFERENCE
        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
@@ -1485,6 +1499,7 @@ SKED1:    HRRZ    TAC,STATES      ;SCHEDULE WITH NO ARGUMENTS.
 ;"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
@@ -1637,7 +1652,6 @@ STOPD:    LDB TAC,PJOBN
        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
@@ -1699,10 +1713,9 @@ IFN FTTTYSER,<
        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
@@ -1728,6 +1741,7 @@ SKIPSA:
        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
@@ -1760,6 +1774,7 @@ COMERP:   POP     PDP,T           ;REMOVE SUB. RETURN BEFORE CALLING COMERA
 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
@@ -1855,7 +1870,6 @@ INTERNAL PRQM
 \r
 PRQM:  MOVEI TEM,"?"\r
 IFN FTTTYSER,<\r
-\r
 EXTERN OUTCHS\r
        JRST    OUTCHS\r
 >\r
@@ -1904,7 +1918,6 @@ DEASG:    LDB T, PJOBN            ;WAS DEVICE ASSIGNED TO THIS JOB?
        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
@@ -1925,6 +1938,7 @@ IFN FT2REL,<
 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
@@ -1992,6 +2006,7 @@ IFN FTLOGIN,<
 ;(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
@@ -1999,7 +2014,6 @@ PP0:      IBP     TAC             ;GET NEXT CHARACTER (2ND TIME THRU LOOP)
        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
@@ -2136,7 +2150,6 @@ IFN FTTTYSER,<
        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
@@ -2183,30 +2196,50 @@ IFE FT2REL,<
 ;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
@@ -2276,7 +2309,6 @@ GETARG:   HRR UUO,TAC             ;MOVE ADR. OF ARG LIST TO UUO
        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
@@ -2310,6 +2342,7 @@ IFN FT2REL,<
 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
@@ -2331,6 +2364,7 @@ SAVJB1:   OPEN 0,SGAMOD           ;RE INIT DEVICE, SO UGETF WILL SET FIRST FREE
        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
@@ -2353,7 +2387,6 @@ SAVJB1:   OPEN 0,SGAMOD           ;RE INIT DEVICE, SO UGETF WILL SET FIRST FREE
 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
@@ -2383,6 +2416,7 @@ CMPTHR:   HRLI    TEM,254000      ;SET A JRST C(JOBSA)
 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
@@ -2575,6 +2609,7 @@ SGERR1:   MOVEI TAC,NSDERR        ;ERROR CODE IN CASE RUN UUO(NO SUCH DEVICE)
 ;      PUSHJ PDP,GETJB\r
 ;      RETURN ONLY IF EVERYTHING OK\r
 \r
+\r
 EXTERNAL JOBCOR,JOB,CPOPJ,JOBS41,JOB41\r
 \r
 GETJB:\r
@@ -2622,7 +2657,26 @@ LOWFIN:  HRRZ TAC,JOBCOR(JDAT)   ;CORE ARG FROM PREVIOUS SAVE(THIS MONITOR
                                ; 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
@@ -2662,23 +2716,6 @@ SGIOCK: MOVE T4,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE
                                ; 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
@@ -2884,6 +2921,7 @@ NOFILE:   MOVEI TAC,FNFERR        ;ERROR CODE IN CASE THIS IS RUN UUO(FILE NOT FOUND
        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
@@ -2910,7 +2948,6 @@ IFN FTDISK,<
 >\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
@@ -2925,8 +2962,10 @@ SGRELE:  MOVE TAC1,JOBPD1(JDAT)  ;GET FIRST PC ON PD LIST
        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