X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/bb920f47d2b4fd2ac0c46c72df890dfe6931e943..0000ed8f3efcdbf411f6c91517909089e5d7ef5d:/src/comcon.mac diff --git a/src/comcon.mac b/src/comcon.mac index d51df4f..7038b08 100644 --- a/src/comcon.mac +++ b/src/comcon.mac @@ -1,7 +1,6 @@ TITLE COMCON - COMMAND DECODER AND SAVEGET ROUTINES - V433 SUBTTL /RCC 03 JUN 69 XP VCOMCN,433 - ;THIS MACRO PUTS VERSION NO. IN STORAGE MAP AND GLOB ENTRY COMCON ;ALWAYS LOAD COMCON IF LIBRARY SEARCH @@ -49,6 +48,7 @@ EXTERNAL MONSTR,MSTART,OCTPNT,PHOLD,PRNAME,RADX10,RELEA5 EXTERNAL RELEA6,RESET,SETRUN,STOP1 EXTERNAL STOTAC,UPTIME,USRXIT,USTART,UUOERR + T=BUFPNT ;TEMPORARY AC'S T1=BUFWRD T2=UUO @@ -96,7 +96,6 @@ CHKNO: JUMPN ITEM,CHKRUN ;JOB NUMBER ALREADY ASSIGNED? NUMLOP: MOVE T,JBTSTS(ITEM) ;SCAN FOR FREE JOB NO. TLNN T,JNA+CMWB ;THIS NUMBER ASSIGNED? JRST NEWJOB ;NO, SO USE THIS NUMBER - CAIGE ITEM,JOBMAX ;YES, IS THE MAX. JOB NO.? AOJA ITEM,NUMLOP ;NO, KEEP LOOKING JSP TAC,COMER ;YES, NONE LEFT, PRINT "JOB CAPACITY EXCEEDED" @@ -119,6 +118,7 @@ IFN FTKCT,< EXTERN JBTKCT SETZM JBTKCT(ITEM) ;CLEAR CORE-RUNNING TIME CORE > + CAMLE ITEM,HIGHJB ;HIGHEST JOB NUMBER ASSIGNED? MOVEM ITEM,HIGHJB ;YES,SAVE IT FOR SCHEDULER SCAN OF JOBS CHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS? @@ -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 ; NEED CORE AND NEED IT IN CORE + ;BITS CHECKED AFTER RETURN FROM COMMAND SETUP ROUTINE CMWRQ=2000 ;REQUEUE JOB AFTER COMMAND WAIT @@ -386,7 +387,6 @@ DEFINE C(A,B,D) < > COMTAB: NAMES - XWD NOCORE+NOJOBN+NOLOGIN+NOINCK,NOCOM DISPL=.-COMTAB ;LENGTH OF TABLE ;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS @@ -394,6 +394,9 @@ DEFINE C(A,B,D) < Z B (D) > DISP: NAMES + + XWD NOCORE+NOJOBN+NOLOGIN+NOINCK,NOCOM + ;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE ;WITH FOLLOWING AC'S SET: @@ -439,7 +442,8 @@ IFN FT2REL,< MOVEI TAC,0 ;RETURN BOTH PHYSICAL AND LOGICAL CORE SOS (PDP) ;NEGATE SKIP RETURN WHICH CORE1 WILL DO JRST CORE1 ;GO DO IT AND RETURN TO CALLER - ; "PJOB" PRINT JOB NUMBER OF JOB TTY IS ATTACHED TO + +; "PJOB" PRINT JOB NUMBER OF JOB TTY IS ATTACHED TO INTERNAL PJOB,DECLF @@ -447,6 +451,7 @@ PJOB: MOVE TAC,ITEM ;JOB NO. DECLF: PUSHJ PDP,RADX10 ;PRINT TAC AS DEC. THEN CRLF JRST CRLF + ; "KJOB" KILL ATTACHED JOB EXTERNAL JBTSTS,TTYKILM,CPOPJ @@ -502,8 +507,10 @@ EXTERNAL JOBSA START: ;SAME AS CSTART, DIFF BY COMTAB BITS ; WHICH PUT TTY IN MONITOR OR USER MODE + ; "CSTART L" OR "CSTART" - START AT LOC. L(TTY IN COMMAND MODE) + STARTC: PUSHJ PDP,OCTIN ;CONVERT POSSIBLE OCTAL NO ARG. IFE FT2REL,< SKIPA TAC1,JOBSA(JDAT) ;NO START ADR. SPECIFIED RETURN @@ -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 ; DLYCM WILL SWAP IT IN. > - COR2: IFN FTTTYSERM,< + COR2: IFN FTTTYSER,< MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB ADR > PUSHJ PDP,INLMES ;PRINT ? FOR PATCH @@ -654,7 +661,7 @@ IFN FTSWAP,< EXTERN VIRTAL PUSHJ PDP,INLMES ASCIZ /K CORE -VIR. CORE LEFT =/ +VIR. CORE LEFT=/ MOVE TAC,VIRTAL ;PRINT AMOUNT OF FREE SWAP SAPCE LEFT JRST RADX10 ;IN DECIMAL > @@ -662,6 +669,7 @@ VIR. CORE LEFT =/ ;WORKS LIKE SAVE, EXCEPT THAT HIGH SEG IS SAVED AS SHARABLE(EXT=SHR) ;INSTEAD OF NON-SHARABLE(EXT=HGH) + ; "SAVE FILE-NAME[PROJ.,PROG.] CORE" - SAVES JOB AREA ON RETRIEVABLE DEVICE ;ONLY A SAVE OR A GET IN PROGRESS FOR EACH JOB ;NO ATTEMPT IS MADE TO SAVE DEVICE ASSGINMENTS, AC'S OR PC @@ -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 JRST SGSET + ; "GET DEVICE:FILE-NAME[PROJ.,PROG.] CORE" - SETS UP JOB AREA FROM RETREIVABLE ;DEVICE AND ASSIGNS CORE. @@ -719,6 +728,7 @@ SYSTAT: IFN FTLOGIN,< MOVE TAC,[SIXBIT /SYSTAT/] ;CUSP NAME JRST ARCOM ;RUN IT + EXTERNAL JBTSTS,TTYATT ALOGIN: @@ -821,7 +831,6 @@ IFN FTTTYSER,< PUSH PDP,DEVDAT ;SAVE TTY > IFE FTTTYSER,< - PUSH PDP, TAC ;SAVE INPUT BYTE POINT > MOVE TAC,TAC1 @@ -903,7 +912,7 @@ IFN FTTTYSER,< SKIPE TAC,TAC1 ;IS THERE A LOGICAL NAME SPECIFIED? PUSHJ PDP, DEVLG ;YES, SEE IF IT IS ALREADY IN USE ; BY THIS USER - JRST ASSG1 ;NO + JRST ASSF1 ;NO MOVEI TAC,LOGERR ;YES, PRINT ERROR MOVE DEVDAT,-3(PDP) ;RESTORE TTY DDB PUSHJ PDP,ERRMES @@ -925,7 +934,7 @@ IFN FT2REL,< ASCIZ / ASSIGNED / -LOGERR: ASCIZ /LOGICAL NAME ALREADY IN USE. / +LOGERR: ASCIZ /LOGICAL NAME ALREADY IN USE, / ;"DEASSIGN DEV" - DEASSIGNS DEVICE FROM CONSOLE @@ -982,8 +991,9 @@ REASSI: LDB UUO,PUUOAC ;"REASSIGN DEV:JOB" - REASSIGN DEVICE "DEV" TO JOB "JOB" + REASS: - PUSHJ PDP,CTEXT ;GET DEVICE NAME + PUSHJ PDP,CTEXT1 ;GET DEVICE NAME JUMPE TAC,NOTENF ;NULL NAME? MOVE UUO,TAC1 ;SAVE IT IN UUO PUSHJ PDP,DECIN1 ;GET NEW JOB NUMBER @@ -1011,7 +1021,6 @@ REASS1: EXCH ITEM,(PDP) ;NEW JOB NO. IN ITEM CAME TAC,ITEM ;ASSIGNED TO THIS JOB JRST REASE3 ;NO MOVE TAC,DEVMOD(DEVDAT) - TLNE TAC,DVTTY ;IS IT A TTY? JRST REASE6 ;YES. CAN'T BE REASSIGNED TRNN TAC,ASSPRG ;IS DEVICE INITED? @@ -1091,7 +1100,6 @@ ATTACH: IFE FTTTYSER,< IFN FTLOGIN, < JRST DEVATT ;WANTS TO ATTACH A DEVICE > - IFE FTLOGIN, < JRST ATT1 > @@ -1153,21 +1161,27 @@ DEVATT: IFE FTTTYSER,< ATT1: JSP TAC,ERRMES ASCIZ /ILLEGAL JOB NUMBER / + ATT2: MOVE TAC1,DEVNAM(DEVDAT) ;[PRINT PHYSICAL NAME MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB PUSHJ PDP,PRNAME JSP TAC,ERRMES ASCIZ / ALREADY ATTACHED / + ATT3: JSP TAC,ERRMES ASCIZ /CAN'T ATT TO JOB / + ATT4: JSP TAC,ERRMES ASCIZ /NOT A JOB / + + ATT5: JSP TAC,ERRMES ASCIZ /CAN'T ATT DEV / + ATT6: POP PDP,DEVDAT JSP TAC,ERRMES ASCIZ /WASN'T DET @@ -1285,7 +1299,6 @@ RUNTIM: PUSHJ PDP,DECIN ;GETJOB NO. ARG. JRST PRTIME ;PRINT AND RETURN RUN2: PUSHJ PDP,INLMES ;PRINT - ASCIZ /SHFL / ;"SHUFFLING " MOVE TAC,SHFWRD ;NO. WORDS SHUFFLED IDIVI TAC,WDPJIF ;NO.WORDS/JIFFY USING BLT @@ -1450,6 +1463,7 @@ DCOM1: PUSHJ PDP,DEAT ;CHECK FOR AC REFERENCE MOVE TAC,JOBPC(JDAT) TLNE TAC,USRMOD ;USER MODE? ADDI TAC1,20 ;YES USER ACS ARE AT 20 INSTEAD OF 0 + POPJ PDP, DCOMA: IFN FT2REL,< @@ -1485,6 +1499,7 @@ SKED1: HRRZ TAC,STATES ;SCHEDULE WITH NO ARGUMENTS. ;"BLANK" OR NO ALPHA NUMERIC BEFORE BREAK CHAR COMMAND ;DISPATCHED TO LIKE ANY OTHER COMMAND(0 IN COMMAND TABLE) + CBLANK: IFE FTTTYSER,< LDB TEM,TAC ;GET BREAK CHARACTER @@ -1637,7 +1652,6 @@ STOPD: LDB TAC,PJOBN JRST CPOPJ ;YES. DELAY STOPC: HLRZ DEVDAT,DEVSER(DEVDAT) MOVSI TAC,446353 - CAMN TAC,DEVNAM(DEVDAT) JRST STOPD JRST CPOPJ1 ;OK TO STOP @@ -1699,10 +1713,9 @@ IFN FTTTYSER,< CAIN TEM,":" ;DEVICE NAME? PUSHJ PDP,GETCHR ;YES. SKIP COLON CAIE TEM,3 ;CONTROL C? - JRST TPOPJ ;NO. RETURN ONE LEVEL UP CTXCNC: MOVSI TAC1,(SIXBIT /HAL/) ;MAKE PHONY HALT COMMAND - MOVSI TEM,12 ;WITH LF FOR TERMINATION + MOVEI TEM,12 ;WITH LF FOR TERMINATION JRST TPOPJ ;AND RETURN UP A LEVEL > ;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS @@ -1728,6 +1741,7 @@ SKIPSA: JRST SKIPSA CAIN TEM,15 ;CR? SKIPS2: POP PDP,T ;YES. POP SUB. LEVEL UP ONE + POPJ PDP, > IFN FTTTYSER,< EXTERNAL GETCHR,SPCHEK,BREAKB,TAKR @@ -1760,6 +1774,7 @@ COMERP: POP PDP,T ;REMOVE SUB. RETURN BEFORE CALLING COMERA COMERA: IFE FTTTYSER,< IBP TAC> IFN FTTTYSER,< PUSHJ PDP,GETCHR> ;MOVE UP, A CH + ;ROUTINE TO REPLACE LAST CHARACTER IN INPUT STRING BY "?" ;AND SET AS OUTPUT ;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING @@ -1855,7 +1870,6 @@ INTERNAL PRQM PRQM: MOVEI TEM,"?" IFN FTTTYSER,< - EXTERN OUTCHS JRST OUTCHS > @@ -1904,7 +1918,6 @@ DEASG: LDB T, PJOBN ;WAS DEVICE ASSIGNED TO THIS JOB? ANDCAB TAC1,DEVMOD(DEVDAT) ;SET DEVICE CHARACTERISTICS FOR TEST ; AND ASGHGH SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME - TRNE TAC1,ASSCON ;IS DEVICE ASSIGNED BY CONSOLE? AOS -1(PDP) ;YES, DO OK RETURN IFN FT2REL,< @@ -1925,6 +1938,7 @@ IFN FT2REL,< INTERNAL DEASAL,DEASTY EXTERNAL DEVLST + DEASTY: DEASAL: PUSH PDP,DEVDAT ;SAVE TTY DDB ADDRESS HLRZ DEVDAT,DEVLST ;SEARCH ALL DDB'S @@ -1992,6 +2006,7 @@ IFN FTLOGIN,< ;(AC2) = 0 IF NO [ ]'S TYPED ;THE TERMINAL ] IS OPTIONAL + IFE FTTTYSER,< PJPGNO: SKIPA TAC1,TAC ;SAVE INPUT BYTE POINTER IN CASE NO ; [ ]'S WERE TYPED IN. @@ -1999,7 +2014,6 @@ PP0: IBP TAC ;GET NEXT CHARACTER (2ND TIME THRU LOOP) LDB TEM,TAC ;GET CHAR WHICH STOPED PREVIOUS FIELD SCAN ; (OR NEXT CHAR ON 2ND TIME THRU LOOP) > - IFN FTTTYSER,< PP0: PUSHJ PDP,SKIPS1 PJPGNO: @@ -2136,7 +2150,6 @@ IFN FTTTYSER,< PUSH PDP,IOS ;SAVE DISPATCH ADDRESS(ANYACT USES IOS) IFN FT2REL,< EXTERN KILHGH - PUSHJ PDP,KILHGH ;KILL HIGH SEG > MOVEI TAC,JOBDA ;LENGTH OF JOBDATA AREA @@ -2183,30 +2196,50 @@ IFE FT2REL,< ;THESE LOCATIONS ARE DEFINED TO BE IN THE USERS UUO ACS ;FOR LOOKUP,ENTER UUOS: - XP SGANAM,0 ;FILE NAME - XP SGAEXT,SGANAM+1 ;FILE EXTENSION - XP SGADAT,SGANAM+2 ;FILE CREATION DATE+TIME - XP SGALEN,SGANAM+3 ;LN=-LENGTH,RH=FIRST LOC-1 DUMPED + XP SGANAM,0 + ;FILE NAME + XP SGAEXT,SGANAM+1 + ;FILE EXTENSION + XP SGADAT,SGANAM+2 + ;FILE CREATION DATE+TIME + XP SGALEN,SGANAM+3 + ;LN=-LENGTH,RH=FIRST LOC-1 DUMPED + ; OR PROJECT-PROGRAMMER NUMBER(DISK) - XP SGAEND,SGALEN+1 ;LAST WORD OF DUMP COMMAND LIST=0(SAVE AND GET) - XP SGAREN,SGAEND ; ALSO FIRST WORD FOR RENAME USED AS DELETE - XP SGAPPN,SGAREN+3 ;FOURTH WORD-PLACE TO SAVE PROJECT-PROGRAMEMR + XP SGAEND,SGALEN+1 + ;LAST WORD OF DUMP COMMAND LIST=0(SAVE AND GET) + XP SGAREN,SGAEND + ; ALSO FIRST WORD FOR RENAME USED AS DELETE + XP SGAPPN,SGAREN+3 + ;FOURTH WORD-PLACE TO SAVE PROJECT-PROGRAMEMR + ; NUMBER USER TYPED ;FOR OPEN UUOS: - XP SGAMOD,10 ;IOS MODE WORD FOR OPEN UUO - XP SGADEV,SGAMOD+1 ;DEVICE NAME - XP SGAHED,SGAMOD+2 ;INPUT-OUTPUT BUFFER HEADER ADDRESSES=0 + XP SGAMOD,10 + ;IOS MODE WORD FOR OPEN UUO + XP SGADEV,SGAMOD+1 + ;DEVICE NAME + XP SGAHED,SGAMOD+2 + ;INPUT-OUTPUT BUFFER HEADER ADDRESSES=0 ;MISC. DATA LOCATIONS: - XP SGADMP,13 ;DUMP COMMAND IOWD - XP SGACOR,14 ;AC FOR CORE UUO'S(HIGHEST USER LOC DESIRED) - XP SGANEW,15 ;NEW CORE ASSIGNMENT AS SPECIFIED BY THIRD ARG - XP SGAHGH,16 ;LH=EXT TO USE FOR SAVING HIGH SEG + XP SGADMP,13 + ;DUMP COMMAND IOWD + XP SGACOR,14 + ;AC FOR CORE UUO'S(HIGHEST USER LOC DESIRED) + XP SGANEW,15 + ;NEW CORE ASSIGNMENT AS SPECIFIED BY THIRD ARG + XP SGAHGH,16 + ;LH=EXT TO USE FOR SAVING HIGH SEG + ; RH=EXT TO DELETE(IE SHRHGH OR HGHSHR) - XP SGALOW,17 ;LH=EXT WHICH USER TYPED FOR SAVE OR GET COMMAND + XP SGALOW,17 + ;LH=EXT WHICH USER TYPED FOR SAVE OR GET COMMAND + ; OR .SAV IF HE DIDN'T TYPE AN ARG WITH LEADING PERIOD + ; RH=0 ;ROUTINE TO SCAN COMMAND STRING ARGUMENTS FOR SAVE,GET,RUN AND R ;COMAMNDS AND STORE THEM IN JOB DATA AREA WHICH MUST BE IN CORE @@ -2276,7 +2309,6 @@ GETARG: HRR UUO,TAC ;MOVE ADR. OF ARG LIST TO UUO EXCH TAC,(PDP) ;AND PUT ON PD LIST PUSH PDP,TAC ;MOVE RETURN PC UP ONE IN PD LIST LDB TAC,PUUOAC ;USER AC FIELD IN RUN OF GETSEG UUO - HRRM TAC,-1(PDP) ;SAVE IN CASE OF ERROR RETURN PUSHJ PDP,GETWDU ;GET FIRST ARG FROM USER AREA MOVEM TAC,SGADEV(PROG) ;STORE DEVICE NAME @@ -2310,6 +2342,7 @@ IFN FT2REL,< INTERNAL SAVJOB,SAVERR EXTERNAL JOB41,JOBS41,JOBDDT,JOBSDD,JOBSV + SAVJOB: JSP TAC1,SG1 ;SET UP ACS PROG,PDP,JDAT,ITEM. ; RESET DEVICES HLRE TAC1,SGADMP(PROG) ;-NO. OF WORDS TO WRITE @@ -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) ; CAUSE ENTER TO ASSIGN FIRST LOBCK OF FILE ; AS LOWEST FREE BLOCK SO TENDMP CAN READ + ; SAVED FILES, SGAHED IS NO LONGER NEEDED(OPEN UUO) ENTER 0,SGANAM ;ENTER FILE NAME IN DIRECTORY JRST SAVERR ;DIRECTORY FULL OR PROTECTION FAILURE MOVE TAC,JOB41(JDAT) ;SAVE USER UUO HANDLING JSR @@ -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 CAMLE TAC1,ITEM ;SEARCH FOR 1ST NON-0 WORD AOJA TAC,CMPTHR ;THROUGH - SKIPN @TAC1 ;THIS A DATA WORD? AOJA TAC1,.-3 ;NO, KEEP LOOKING MOVNI AC1,1 ;YES, AC1 WILL BE AN IOWD @@ -2383,6 +2416,7 @@ CMPTHR: HRLI TEM,254000 ;SET A JRST C(JOBSA) SAVFIN: PUSHJ PDP,SGREL ;RELEASE DEVICE AND FIND TTY JSP TAC,PHOLD ;PRINT MESSAGE AND STOP JOB ASCIZ /JOB SAVED/ + SAVERR: MOVEI TAC,PRTERR ;ERROR CORE IN CASE RUN UUO(PROTECTION ERROR) ; CHANGE TO DISK ERROR CODE IF DEV IS DSK PUSHJ PDP,SGRELL ;CHANGE TO DISK ENTER ERROR CODE IF DSK @@ -2575,6 +2609,7 @@ SGERR1: MOVEI TAC,NSDERR ;ERROR CODE IN CASE RUN UUO(NO SUCH DEVICE) ; PUSHJ PDP,GETJB ; RETURN ONLY IF EVERYTHING OK + EXTERNAL JOBCOR,JOB,CPOPJ,JOBS41,JOB41 GETJB: @@ -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 ; PROGRAM IS RESTARTED ; FALL INTO SGREL - ;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R) + +;ROUTINE TO RELEASE DEVICE AND FIND TTY +INTERN SGREL + +SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY? + JRST SGREL2 ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH + PUSH PDP,T4 ;NO, + MOVE TAC1,DEVMOD(DEVDAT) + TLNE TAC1,DVMTA ;MAGTAPE? + TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE? + JRST SGREL1 ;NO + CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT + STATO 0,IOTEND+IODEND ;AT END OF APTE? + MTAPE 0,16 ;NO SKIP TO EOF +SGREL1: RELEASE 0, ;NO RELEASE DEVICE + POP PDP,T4 +SGREL2: + JRST TTYFNU ;FIND TTY FOR CURRENT USER + +;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R) ;AND CHECK FOR ERRORS. USED ONLY TO READ LOW FILE. ;CALL: PUSHJ P,SGDO ; INPUT 0,SGALEN OR OUTPUT 0,SGALEN @@ -2662,23 +2716,6 @@ SGIOCK: MOVE T4,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE ; OF FIND TTY AND PRINT ?CRLF JSP TAC,PHOLD ;START TTY AND STOP JOB ASCIZ /TRANSMISSION ERROR/ -;ROUTINE TO RELEASE DEVICE AND FIND TTY -INTERN SGREL - -SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY? - JRST SGREL2 ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH - PUSH PDP,T4 ;NO, - MOVE TAC1,DEVMOD(DEVDAT) - TLNE TAC1,DVMTA ;MAGTAPE? - TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE? - JRST SGREL1 ;NO - CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT - STATO 0,IOTEND+IODEND ;AT END OF APTE? - MTAPE 0,16 ;NO SKIP TO EOF -SGREL1: RELEASE 0, ;NO RELEASE DEVICE - POP PDP,T4 -SGREL2: - JRST TTYFNU ;FIND TTY FOR CURRENT USER ;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY) ;CALL: MOVE DEVDAT,DEVICE ADR. ; MOVE PROG,JOBADR. @@ -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 ; RELEASE DEVICE AND ERROR RETURN TO USER IF HE WANTED ; OR FIND TTY AND PRINT ?CRLF + MOVE TAC1,SGANAM(PROG) ;PRINT FILE NAME PUSHJ PDP,PRNAME PUSHJ PDP,PRPER ;PRINT PERIOD @@ -2910,7 +2948,6 @@ IFN FTDISK,< > SGRELE: MOVE TAC1,JOBPD1(JDAT) ;GET FIRST PC ON PD LIST TLNN TAC1,USRMOD ;IS IT IN USER MODE(IE USER UUO)? - JRST SGRLE1 ;NO. MUST BE MONITOR COMMAND OR CALLED OVERLAYED ; RELEASE DEVICE, FIND TTY, AND RETURN TO CALLED PUSH PDP,TAC ;SAVE ERROR CORE @@ -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 ; UUO HANDLER DOES NOT ALLOW THIS FROM EXEC MODE RELEAS 0, ;RELEASE DEVICE(IF INITED) + PUSH PDP,JOBPD1(JDAT) ;PUT RETURN ON END OF PDLIST JRST USRXIT ;AND RETURN TO USER TO HANDLE ERROR + SGRLE1: PUSHJ PDP,SGREL ;RELEASE DEVICE AND FIND TTY JSP TAC,CONMES ;PRINT ?CRLF AND RETURN TO CALLER ; WHO WILL PRINT REST OF ERROR MESSAGE AND STOP JOB