X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..5d24e9e035e495646b261b56872a3e31c2ed244c:/src/comcon.mac diff --git a/src/comcon.mac b/src/comcon.mac index 050b588..2397feb 100644 --- a/src/comcon.mac +++ b/src/comcon.mac @@ -7,7 +7,6 @@ XP VCOMCN,433 COMCON: ;CALLED FROM CLOCK ROUTINE WHEN 'COMCNT' IS GREATER THAN 0 - ;AS SET BY TTY SERVICE ROUTINE ;ALL AC'S HAVE BEEN SAVED BY CLOCK CHANNEL ;THE COMMAND DECODER CALLS TTYCOM WHICH SCANS FOR TTY WHICH TYPED @@ -37,8 +36,7 @@ COMCON: ;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET ;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY ;OR DELAY THE COMMAND FOR LATER EXECUTION - -INTERNAL COMMAND + INTERNAL COMMAND INTERNAL FTLOGIN,FTSWAP,FTTIME EXTERNAL COMCNT,TTYCOM,JBTSTS,JOBMAX,JBTDAT,JBTADR,JOBHCU EXTERNAL CONFIG,HIGHJB @@ -50,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 @@ -79,8 +78,7 @@ COMLP: MOVE T2,COMTAB(T) ;GET NEXT ENTRY FROM COMMAND TABLE COMNEQ: AOBJN T,COMLP ;NO, KEEP LOOKING CAIN T4,1 ;DID ONE AND ONLY ONE COMMAND MATCH? MOVE T,T3 ;YES, GET ITS INDEX - -COMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY, + COMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY, PUSH PDP,TAC1 ;SAVE RH(DISPATCH ADR,+BITS) MOVE T,JBTSTS(ITEM) ;JOB STATUS WORD FOR THIS JOB IFN FTLOGIN,< @@ -89,7 +87,8 @@ IFN FTLOGIN,< JRST CHKNO ;YES JSP TAC,COMER ;NO, TYPE "LOGIN PLEASE" ASCIZ /LOGIN PLEASE -/> +/ +> CHKNO: JUMPN ITEM,CHKRUN ;JOB NUMBER ALREADY ASSIGNED? TLNE TAC1,NOJOBN ;NO, DOES THIS COMMAND NEED A JOB NUMBER? JRST COMGO ;NO @@ -97,15 +96,16 @@ 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" ASCIZ /JOB CAPACITY EXCEEDED / + ; EVEN THROUGH THIS IS A NEW JOB NUMBER ; IT MAY HAVE CORE ASSIGNED NOW BECAUSE IT WAS DELAYED ; UNTIL IT COULD BE SWAPPED IN(LOGIN WITH CORE FULL) + NEWJOB: MOVEI T1,ASSCON ;SET ASSIGNED BY CONSOLE BIT FOR TTY IORM T1,DEVMOD(DEVDAT) ;SO OTHER JOBS CAN NOT USE SETZM DEVLOG(DEVDAT) ;SET LOGICAL NAME TO ZERO @@ -118,10 +118,10 @@ 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? + CHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS? TLNN TAC1,NORUN ;YES, DOES THIS COMMAND REQUIRE A JOB? JRST CHKACT ;NO JSP TAC,COMER ;YES. @@ -150,6 +150,7 @@ IFN FTSWAP,< TLNN TAC1,INCOR ;IS THIS TRUE? CHKDLY: HRRI TAC1,DLYCM1 ;NO, JUST DELAY COMMAND UNTIL SWAP OUT OR IN IS FINISHED JRST COMDIS ;AND DISPATCH TO DELAY COMMAND +> CHKCO2: TLNE TAC1,NOACT ;CAN COMMAND BE PERFORMED WITH ACTIVE DEVICES? PUSHJ PDP,RUNCHK ;NO, RETURN IF JOB STOPPED AND NO ACTIVE DEVICES CHKCO1: TLNE TAC1,NOCORE ;DOES THIS COMMAND NEED CORE? @@ -158,8 +159,7 @@ CHKCO1: TLNE TAC1,NOCORE ;DOES THIS COMMAND NEED CORE? JSP TAC,COMER ;NO, PRINT "NO CORE ASSIGNED" ASCIZ /NO CORE ASSIGNED / - -CHKXPN: TLNN TAC1,PLSXPN ;DOES THIS COMMAND NEED CORE TO BE EXPANDED? + CHKXPN: TLNN TAC1,PLSXPN ;DOES THIS COMMAND NEED CORE TO BE EXPANDED? JRST COMGO ;NO HLRE IOS,JOBHCU(JDAT) ;YES, IS CORE STILL COMPRESSED(SAVE DID NOT GO ; TO COMPLETION) @@ -187,10 +187,10 @@ COMGO: MOVSI IOS,CMWRQ ANDCAM IOS,(PDP) ;NO, CLEAR REQUEU BIT IN DISP. FLAGS MOVEM T,JBTSTS(ITEM) + COMDIS: MOVEI IOS,0 ;CLEAR IOS FOR SETTING DISPATCH ADDRESSES PUSHJ PDP,(TAC1) ;DISPATCH TO COMMAND SETUP ROUTINE. - -;RETURN FROM COMMAND SETUP ROUTINE + ;RETURN FROM COMMAND SETUP ROUTINE COMRET: POP PDP,T1 ;RESTORE COMMAND FLAGS POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS. @@ -230,8 +230,7 @@ IFE FTLOGIN, < PUSHJ PDP,PRSPC PUSHJ PDP,DAYTM1 > - -PCRLF: TLNE T1,ERRFLG ;DID AN ERROR OCCUR? + PCRLF: TLNE T1,ERRFLG ;DID AN ERROR OCCUR? PUSHJ PDP,PRQM ;YES. APPEND ? TLNN T1,NOCRLF ;SUPRESS CRLF? PUSHJ PDP,CRLF ;NO @@ -250,7 +249,6 @@ IFN FTSWAP, < LDB ITEM,PJOBN ;GET JOB NUMBER FROM TTY DEVICE DATA BLOCK JUMPE ITEM,CPOPJ TLNE T1,CMWRQ ;REQUEUE JOB AFTER COMMAND WAIT OR ERROR? - JRST REQUE ;YES > POPJ PDP, @@ -266,8 +264,7 @@ SKPBR1: PUSHJ PDP,GETCHR JUMPN TEM,SKPBR2 ;LOOK FURTHER FOR BREAK JRST TPOPJ ;UNLESS NO MORE CHARS > - -;TABLE OF CONSOLE COMMANDS + ;TABLE OF CONSOLE COMMANDS INTERNAL FTATTACH,FTTIME,FTTALK,FTEXAMINE,FTLOGIN,FTREASSIGN INTERNAL FTFINISH,FTCCL @@ -288,11 +285,12 @@ INCORE=4000!NOTRAN ;COMMAND MUST BE DELAYED IF JOB HAS LOGICAL CORE ; WHICH IS ON DISK OR ON ITS WAY IN OR OUT. ; JOB WILL BE SWAPPED IN (SEE DLYCOM) ; AND IS NOT SITTING QUIETLY IN CORE(IE NO SWAPPING TRANSFER) -PLSXPN=4 ;CORE MUST BE EXPANED IF STILL COMPRESSED BY SAVE NOT GOING +PLSXPN==4 ;CORE MUST BE EXPANED IF STILL COMPRESSED BY SAVE NOT GOING ; TO COMPLETION(CONTROL C OR DEVICE OK?) ; 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 @@ -306,11 +304,11 @@ TTYRNC=20 ;KEEP TTY IN COMMAND MODE AND START JOB ; WHEN COMMAND RESPONSE STOPS TYPING NOMESS=10 ;NO COMMAND RESPONSE EVER, DO NOT CALL TTYSTR - ;T TAKEN ABOVE BY 'PLSXPN' BIT + ;4 TAKEN ABOVE BY 'PLSXPN' BIT + ERRFLG=1 ;COMMAND ERROR - -DEFINE NAMES< + DEFINE NAMES< C START,START,NOPER!TTYRNU!INCORE!NOACT!NORUN C HALT,STOP,NOCORE!NOJOBN!NOLOGIN!NOINCK!CMWRQ C KJOB,KJOB,NOCORE!NOJOBN!NOINCK!NOLOGIN!NOACT!NORUN!NOPER!NOCRLF!NOMESS!NOTRAN @@ -382,21 +380,23 @@ IFN FTCCL,< C CTEST,CCLRUN,NOCORE!NOPER!TTYRNU!NOCRLF!INCORE!NOACT!NORUN > > - -;GENERATE TABLE OF SIXBIT COMMAND NAMES + ;GENERATE TABLE OF SIXBIT COMMAND NAMES DEFINE C(A,B,D) < > + COMTAB: NAMES DISPL=.-COMTAB ;LENGTH OF TABLE - -;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS + ;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS 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: @@ -451,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 @@ -478,7 +479,7 @@ IFE FTSWAP+FTLOGIN,< JUMPE PROG,DLYCM1 ;DELAY COMMAND IF CORE ASSIGNED ON DISK JSP TAC1,MONJOB ;YES, SCHEDULE MONITOR JOB(PC IN EXEC MODE) ;RETURN HERE AT UUO LEVEL WHEN SCHEDULED -JOBKL: MOVEI TAC1,ESTOP ;PUT ESTOP ON END OF PDL + JOBKL: MOVEI TAC1,ESTOP ;PUT ESTOP ON END OF PDL JSP TAC,MONSTR ;GO SETUP ACS AND PD LIST PUSHJ PDP,JOB1 ;FLUSH CORE AFTER RELEASING DEVICES JOBKA: @@ -491,22 +492,25 @@ IFE FTLOGIN, < PUSHJ PDP,TTYKIL ;RETURN TTY TO VIRGIN STATE JRST KSTOP ;CLEAR JOB STATUS WORD AND STOP JOB + ;ERROR IN COMMAND + CERR: JRST ERRMES JOBKB: SETZM -1(PDP) ;CLEAR NOJOBN SO COMRET WILL PRINT ERROR MSG. JRST ATT4 ;"NOT A JOB" - -; "START L" OR "START" - START AT LOC, L OR STARTING ADDRESS + ; "START L" OR "START" - START AT LOC, L OR STARTING ADDRESS INTERNAL FT2REL 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 @@ -528,8 +532,7 @@ SNOARG: SKIPA TAC1,JOBSA(JDAT) ;NO. ARG SPECIFIED, USE START ADR SUPPLIED ; BY PROGRAM END STATEMENT AND STORED BY LINKING LOADER ; SKIP INTO REENTER, START WITH PC IN USER MODE > - -;"REENTER" - REENTER USER PROGRAM + ;"REENTER" - REENTER USER PROGRAM EXTERNAL JOBREN @@ -592,8 +595,7 @@ CONT: MOVSI TAC1,JERR ASCIZ /CAN'T CONTINUE / - -; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB + ; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB ; "CORE" WITH NO ARG. WILL PRINT NO OF FREE BLOCKS LEFT ; WITHOUT AFFECTING CURRENT ASSIGNMENT OF CORE ; JOB NOT IN MIDDLE OF SWAPPING @@ -612,7 +614,6 @@ IFN FTSWAP,< ; IF ASKING FOR 0 CORE > LSH TAC1,12 ;CONVERT 1K BLOCKS TO WORDS - MOVEI TAC,-1(TAC1) ;HIGHEST RELATIVE ADDRESS=LENGTH-1 OF LOW SEG PUSHJ PDP,CORE0 ;TRY TO ASSIGN CORE JRST COR2 ;CORE NOT AVAILABLE. GO PRINT MESSAGE @@ -625,8 +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 @@ -653,7 +653,7 @@ IFN FTSWAP,< > PUSHJ PDP,RADX10 ;PRINT NO. OF 1K BLOCKS AVAILABLE IFE FTSWAP,< - JSP TAC,CONMAS + JSP TAC,CONMES ASCIZ /K CORE / > @@ -661,15 +661,15 @@ 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 > - -; "SSAVE FILENAM.EXT [PROJ,PROG] CORE" + ; "SSAVE FILENAM.EXT [PROJ,PROG] CORE" ;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 @@ -682,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. @@ -703,15 +704,14 @@ LOGREF: MOVEM TAC,PRJPRG(ITEM) ;PRJ,PRG NRS. IN REFLAG SETZM REFLAG ;ONLY ONCE POPJ PDP, > - -;"HELP" -HELP COMMAND + ;"HELP" -HELP COMMAND INTERNAL FTLOGIN IFN FTLOGIN,< EXTERNAL HELPPP HELP1: MOVE TAC,HELPPP - TLN T,JLOG + TLNN T,JLOG JRST ALOGIN POPJ PDP, > @@ -728,6 +728,7 @@ SYSTAT: IFN FTLOGIN,< MOVE TAC,[SIXBIT /SYSTAT/] ;CUSP NAME JRST ARCOM ;RUN IT + EXTERNAL JBTSTS,TTYATT ALOGIN: @@ -744,13 +745,13 @@ ALOGN1: PUSHJ PDP,TTYATT ;MAKE SURE TTY IS ATTACHED IN CASE JFCL > POPJ PDP, - -INTERN FTCCL + INTERN FTCCL IFN FTCCL,< CCLRUN: MOVE TAC,[SIXBIT /COMPIL/] ;CUSP NAME JRST ARCOM ;RUN IT + > ;"LOGIN" - LOGIN COMMAND @@ -784,8 +785,7 @@ CLOG2: SKIPE TAC,REFLAG ;REFLAG SET NON-ZERO FOR AUTOMATIC LOGIN? MOVE TAC,[SIXBIT /LOGIN/] ;CUSP NAME JRST ARCOM ;RUN IT > - -; "R CUSTNAME CORE" - DOES "RUN SYS:CUSPNAME" + ; "R CUSTNAME CORE" - DOES "RUN SYS:CUSPNAME" RCOM: MOVEI TAC,0 ;NO FILE NAME, TTY WILL SUPPLY IT JRST ARCOM1 @@ -812,14 +812,13 @@ IFE FTSWAP,< IFN FTSWAP,< JRST DLYCM ;NO. DELAY COMMAND UNTIL IN CORE > - -; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT LOGICAL NAME + ; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT LOGICAL NAME EXTERNAL DEVLST,PJOBN,SYSTAP ASSIGN: PUSHJ PDP, CTEXT1 ;GET FIRST ARGUMENT JUMPE TAC1, NOTENF ;NO ARGUEMNT TYPED IF 0 -IFN FTLOGIN, IFE FTTTYSER,< - PUSH PDP, TAC ;SAVE INPUT BYTE POINT > MOVE TAC,TAC1 @@ -852,8 +850,7 @@ ASSG4: CAMN T1,[SIXBIT /DSK/] ;IS THIS A DISC?(IF YES, ASSG5: PUSHJ PDP,ASSASG ;NO, TRY TO ASSGIN DEVICE JRST ASSER1 ;ALREADY ASSIGNED TO ANOTHER JOB JRST ASSFIN ;ASSIGNED - -;SYSTEM TAPE OR NOT MATCH OF ARG AND PHYSICAL NAME. + ;SYSTEM TAPE OR NOT MATCH OF ARG AND PHYSICAL NAME. ASSG1: CAMN TAC,SYSTAP ;IS THIS SYSTEM TAPE? JRST ASSG2 ;YES @@ -882,8 +879,7 @@ ASSG7: PUSHJ PDP,CTEXT1 MOVEM TAC1,SYSTAP POPJ PDP, > - -;ALREADY ASSIGNED TO ANOTHER JOB + ;ALREADY ASSIGNED TO ANOTHER JOB ASSER1: IFE FTTTYSER,< PDP PDP, TAC @@ -903,8 +899,7 @@ IFN FTTTYSER,< > ASSMS2: ASCIZ /ALREADY ASSIGNED TO JOB / - -;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME + ;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME ASSFIN: SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME IFE FTTTYSER,< POP PDP,TAC ;RESTORE INPUT BYTE POINTER @@ -917,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 @@ -939,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 @@ -969,8 +964,7 @@ DEAER2: MOVE TAC1,DEVNAM(DEVDAT) ;PRINT PHYSICAL DEVICE NAME ASCIZ / WASN'T ASSIGNED / - -INTERNAL FTREASSIGN + INTERNAL FTREASSIGN IFE FTREASSIGN,< REASSI=UUOERR > @@ -997,9 +991,10 @@ REASSI: LDB UUO,PUUOAC ;"REASSIGN DEV:JOB" - REASSIGN DEVICE "DEV" TO JOB "JOB" + REASS: - PUSHJ PDP,CTEXT ;GET DEVICE NAME - JUMPE TAC,NOTENF ;NULL NAME? + PUSHJ PDP,CTEXT1 ;GET DEVICE NAME + JUMPE TAC1,NOTENF ;NULL NAME? MOVE UUO,TAC1 ;SAVE IT IN UUO PUSHJ PDP,DECIN1 ;GET NEW JOB NUMBER JRST NOTENF ;NONE SPECIFIED, DOESN'T RETURN IF ERROR @@ -1026,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? @@ -1048,8 +1042,7 @@ REASS1: EXCH ITEM,(PDP) ;NEW JOB NO. IN ITEM REASS4: HRRZ DSER,DEVSER(DEVDAT) HRRZM DEVDAT,JOBFDV(JDAT) MOVE UCHN,USRHCU - -REASS2: MOVE DEVDAT,USRJDA(UCHN) ;GET XWD UUO BITS,DDB ADDRESS + REASS2: MOVE DEVDAT,USRJDA(UCHN) ;GET XWD UUO BITS,DDB ADDRESS HRRZ TAC,JOBFDV(JDAT) ;GET ADDR. OF DDB SAVED BY COMMAND PUSH PDP,UCHN ;SAVE USER CHANNEL CAIN TAC,(DEVDAT) ;IS CHOSEN DEVICE ON THHS CHANNEL? @@ -1088,8 +1081,7 @@ REASE7: MOVE TAC1,DEVNAM(DEVDAT) ASCIZ / CAN'T BE REASSIGNED / > - -INTERNAL FTATTACH + INTERNAL FTATTACH IFN FTATTACH,< ;"ATTACH DEVNAME" -ATTACHES A PREVIOUSLY PARTITIONED DEVICE @@ -1108,7 +1100,6 @@ ATTACH: IFE FTTTYSER,< IFN FTLOGIN, < JRST DEVATT ;WANTS TO ATTACH A DEVICE > - IFE FTLOGIN, < JRST ATT1 > @@ -1170,28 +1161,33 @@ 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 / > - -INTERNAL FTATTACH + INTERNAL FTATTACH IFN FTATTACH,< ;"DETACH" - DETACH CONSOLE FROM JOB @@ -1234,8 +1230,7 @@ DETACH: PUSHJ PDP,CTEXT1 ;GET ARGUMENT HRRM TAC1,TTYTAB(TAC) ;SO THAT SCNSER CHECKS FOR THIS POP PDP,DEVDAT ;RESTORE TTY DDB POPJ PDP, ;SUCCESSFUL RETURN - -TEMP1: POP PDP,DEVDAT ;RESTORE TTY DDB + TEMP1: POP PDP,DEVDAT ;RESTORE TTY DDB JRST DEAER1 ;PRINT ERROR MSG. AND RETURN TEMP2: IFE FTTTYSER,< POP PDP,DEVDAT ;RESTORE TTY DDB @@ -1247,10 +1242,8 @@ IFN FTTTYSER,< LOGER1: JSP TAC,ERRMES ASCIZ /CAN'T DET DEV / - >> ;CLOSE BOTH FTLOGIN AND FTATTACH CONDITIONALS. - -;"DAYTIME" - PRINT TIME OF DAY + ;"DAYTIME" - PRINT TIME OF DAY EXTERNAL TIME,THSDAT,MONTAB,JIFMIN @@ -1287,8 +1280,7 @@ DAYTM1: MOVE TAC,THSDAT ;PRINT TODAY'S DATE PUSHJ PDP,PRSPC MOVE TAC,TIME ;PRINT TIME OF DAY JRST PRTIM1 - -INTERNAL FTTIME + INTERNAL FTTIME IFN FTTIME,< ;"TIME (JOB NO.)" - PRINT TOTAL AND INCREMENTAL RUNNING TIME FOR A JOB ;FOLLOWED BY KILO-CORE TICKS @@ -1307,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 @@ -1329,8 +1320,8 @@ RUN2: PUSHJ PDP,INLMES ;PRINT ASCIZ /UP / MOVE TAC,UPTIME JRST PRTIME ;AND RETURN - -RUN1: + + RUN1: IFE FTLOGIN,< MOVEI TAC,0 ;GET SET TO CLEAR INCREMENTAL RUN TIME > @@ -1356,8 +1347,7 @@ IFE FTKCT,< JRST PRTIME ;PRINT IT AND RETURN > > - -;ROUTINE TO LET TTY TALK TO ANY OTHER RING OF TTYS + ;ROUTINE TO LET TTY TALK TO ANY OTHER RING OF TTYS ; "TALK TTYN" ; TTYN NEED NEVER HAVE BEEN TYPED ON BEFORE @@ -1387,8 +1377,7 @@ TALK1: MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB ASCIZ /BUSY / > - -INTERNAL FTEXAMINE + INTERNAL FTEXAMINE IFN FTEXAMINE,< @@ -1403,7 +1392,7 @@ ECOM: SKIPGE JOBEXM(JDAT) ;WAS PREVIOUS D OR E COMMAND. A D COMMAND? AOS JOBEXM(JDAT) ;NO, IT WAS AN E. INCREMENT IN CASE HE TYPES NO ARG HRROS JOBEXM(JDAT) ;YES, FLAG THAT E HAPPENED LAST(LH=-1) PUSHJ PDP,OCTIN ;GET OCTAL LOCATION - SKIPA TAC,JOBEXM(JDAT) ;NONE SPECIFIED, USE LAST LOC OF D OR NEXT OF E + SKIPA TAC1,JOBEXM(JDAT) ;NONE SPECIFIED, USE LAST LOC OF D OR NEXT OF E JRST COMERA ;ILLEGAL CHARACTER PUSHJ PDP,DEAT ;CHECK FOR AC REFERENCE AND STORE JOBEXM HRRZ UUO,TAC1 ;IGNORE LH @@ -1422,7 +1411,7 @@ ECOM: SKIPGE JOBEXM(JDAT) ;WAS PREVIOUS D OR E COMMAND. A D COMMAND? HRRZ TAC,(PDP) ;PRINT RIGHT HALF PUSHJ PDP,OCTPNT PUSHJ PDP,INLMES ;PRINT FINAL TAB - ASCIZ / / + ASCIZ / / JRST TPOPJ ;POP PDP,TAC,POPJ PDP, ;"DEPOSIT LH RH LOC" - DEPOSITS XWD LH,RH IN LOCATION LOC @@ -1464,8 +1453,9 @@ DCOM1: PUSHJ PDP,DEAT ;CHECK FOR AC REFERENCE HRLI TAC1,PROG ;SET FOR RELOCATION MOVEM IOS,@TAC1 POPJ PDP, - -DEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG + + + DEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG HRRM TAC1,JOBEXM(JDAT) ;STORE FOR NEXT TIME, DO NOT TOUCH LH(D OR E LAST) ; YES, WAS JOB STOPPED IN USER MODE? CAIL TAC1,20 ;IS IT AN AC? @@ -1473,6 +1463,7 @@ DEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG 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,< @@ -1484,10 +1475,8 @@ IFN FT2REL,< ECOMA: JSP TAC,ERRMES ;OUT OF BOUNDS ASCIZ /OUT OF BOUNDS / - > - -IFN FTLOGIN,< + IFN FTLOGIN,< ;"SCHEDULE OCTN" - SETS RH OF STATES TO OCTN, IF TYPED FROM ; THE OPERATOR CONSOLE (C(DEVOPR)), OTHERWISE ILLEGAL ;"SCHEDULE" WITH NO ARGUMENTS TYPES OUT RH OF STATES, LEGAL FOR ALL. @@ -1510,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 @@ -1525,8 +1515,7 @@ IFN FTTTYSER,< ;COMMAND NOT IN COMMAND DICECTORY NOCOM: JRST COMERR ;NO, APPEND ? TO WHAT HE TYPED IN - -IFN FTFINISH,< + IFN FTFINISH,< ; "FINISH DEVICE" - CLOSES,RELEASE AND DESASSIGNS DEVICE ;JOB MUST HAVE CORE @@ -1558,8 +1547,7 @@ FDV1: HRRZ DEVDAT,USRJDA(UCHN) ;GET NEXT DEVICE JFCL ;IGNORE IF NOT ASSIGNED BY CONSOLE JRST ESTOP ;STOP JOB SO HE CANNOT CONTINUE > - -IFN FTTIME,< + IFN FTTIME,< ;"RESOURCES" - PRINT OUT AVAILABLE DEVICES AND FREE BLOCKS ON THE DISK EXTERNAL DEVLST @@ -1585,7 +1573,7 @@ LOP06: ADDI T1,SENTSZ ;BUMP POINTER ASCIZ /. BLKS/ > - HRLZ T,DEVLST ;GET DDB POINTER + HLRZ T,DEVLST ;GET DDB POINTER MOVEI AC2,0 ;SET DEVICE NAME 0 FOR FIRST COMPARE LOP01: MOVE T1,DEVMOD(T) ;DEVICE CHARACTERISTICS TRNN T1,ASSCON!ASSPRG ;DEVICE ASSIGNED BY CONSOLE OR PROGRAM? @@ -1608,8 +1596,7 @@ LOP02: HLRZ T,DEVSER(T) ;GET NEXT DEVICE IN CHAIN JUMPN T,LOP01 ;IS THERE ONE? JRST CRLF ;NO. DONE, PRINT CR. LF AND THEN POPJ > - -EXTERNAL CPOPJ,STUSER + EXTERNAL CPOPJ,STUSER ;ROUTINE TO CHECK FOR ACTIVE DEVICES ;NEVER GET HERE DURING SWAP IN OU OUT ;SINCE COMMAND TABLE SHOULD AHVE NOTRAN BIT ON @@ -1665,13 +1652,11 @@ 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 > - -SUBTTL COMCSS - COMMON COMMAND SUBROUTINES + SUBTTL COMCSS - COMMON COMMAND SUBROUTINES ;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING ; IN COMMAND LINE (SIXBIT) @@ -1698,7 +1683,7 @@ IFE FTTTYSER,< CTEX0: ILDB TEM,TAC > IFN FTTTYSER,< -EXTERN TAKR,GETCHAR +EXTERN TAKR,GETCHR LDB TEM,TAKR(DAT) ;GET LAST CHAR. JRST CTEX1 CTEX0: PUSHJ PDP,GETCHR ;ROUTINE IN SCNSER TO PICK UP CHAR. @@ -1709,8 +1694,7 @@ CTEX1: PUSHJ PDP, CTEX ;IS IT ALPHANUMERIC TLNE T,770000 ;SIX CHARS YET? IDPB TEM,T ;NO. BUILD WORD JRST CTEX0 ;LOOP FOR MORE - -;SCAN FOR ALPHANUMERIC CHAR IN TEM + ;SCAN FOR ALPHANUMERIC CHAR IN TEM CTEX: CAILE TEM,"Z"+40 ;GREATER THAN LC Z? JRST CTEXA ;YES. NOT SIXBIT. CAIL TEM,"A"+40 ;LOWER CASE LETTER? @@ -1729,14 +1713,12 @@ 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 + ;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS ;ALSO CLEARS TAC1 ;DOES NOT RETURN IF PREVIOUS CHAR. OR NEXT NON-SPACING ;CHAR, IS CR(IE POPS SUBROUTINE LEVEL UP 1 ON RETURN) @@ -1759,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 @@ -1780,8 +1763,7 @@ SKIPS3: CAIN TEM,3 ;^C? MOVEI TEM,12 ;FOR BREAK CONSISTENCY JRST TPOPJ ;RETURN ONE LEVEL UP > - -;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT + ;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT ;CALLED FROM OCTIN, RETURNS TO SECOND LEVEL ON PDL ;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING ; PUSHJ PDP, COMERA @@ -1792,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 @@ -1823,8 +1806,7 @@ IFE FTTTYSER,< DPB T,DAT > TDZA ITEM,ITEM ;CLEAR JOB NO. AND SKIP INTO CRLF ROUT. - -;ROUTINE TO PRINT A COMMAND ERROR MESSAGE + ;ROUTINE TO PRINT A COMMAND ERROR MESSAGE ;SAME CALL AS CONMES INTERNAL ERRMES @@ -1869,8 +1851,7 @@ IFE FTTTYSER,< IDPB TEM,DAT > JRST CON0 ;KEEP GOING - -;ROUTINE TO PRINT INLINE ASCIZ MESSAGE + ;ROUTINE TO PRINT INLINE ASCIZ MESSAGE ;CALL: PUSHJ PDP,INLMES ; ASCIZ /THE MESSAGE/ ;RETURN TO NEXT LOC AFTER MESSAGE @@ -1889,7 +1870,6 @@ INTERNAL PRQM PRQM: MOVEI TEM,"?" IFN FTTTYSER,< - EXTERN OUTCHS JRST OUTCHS > @@ -1897,9 +1877,10 @@ IFE FTTTYSER,< IDPB TEM,DAT POPJ PDP, > -PRSPC: MOVEI TAC,[ASCIZ / /] +PRSPC: MOVEI TAC,[ASCIZ / /] JRST CONMES + ;ROUTINE TO PRINT "TOO FEW ARGUMENTS" ;CALL: MOVE DAT,BYTE POINTER ; PUSHJ PDP,NOTENF @@ -1937,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,< @@ -1958,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 @@ -1969,7 +1950,7 @@ DEA1: CAIE DEVDAT,@(PDP) ;IS THIS DEVICE NOT TO BE DEASSIGNED? POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS POPJ PDP, -;ROUTINE TO REA CONSOLE AND CONVERT ANY RADIX NUMBER +;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER ; CALL: MOVE TAC1, DESIRED RADIX ; MOVE TAC, BYTE POINTER TO FIRST CHARACTER ; PUSHJ PDP, ANYRIN @@ -2000,7 +1981,7 @@ OCT0: CAIGE TEM,175 ;ALTMODES(175 OR 176)? ; BEFORE [P,P] IN ATT AND GET COMMANDS. JRST CPOPJ2 ;YES. SKIP RETURN CAIE TEM,"-" ;DASH? - CAIG TEM,400 ;SPACE OR CONTROL CHAR? + CAIG TEM,40 ;SPACE OR CONTROL CHAR? JRST CPOPJ2 ;YES, ONLY LEGAL TERMINATORS CAIE TEM,"," ;COMMA? CAIN TEM,"]" ;RIGHT BRACKET? @@ -2014,8 +1995,7 @@ OCT0: CAIGE TEM,175 ;ALTMODES(175 OR 176)? IFE FTTTYSER,< ILDB TEM,TAC ;NEXT CHAR> IFN FTTTYSER,< PUSHJ PDP,GETCHR> ;NEXT CHAR JRST OCT0 - -INTERNAL FTLOGIN + INTERNAL FTLOGIN IFN FTLOGIN,< ;GET PROJECT-PROGRAMMER NUMBERS ;CALL: MOVE TAC,INPUT BYTE POINTER @@ -2026,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. @@ -2033,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: @@ -2067,8 +2047,7 @@ IFE FTTTYSER, ;YES, SKIP IT IFN FTTTYSER, ;YES, SKIP IT SO FINAL ] IS OPTIONAL POPJ PDP, ;RETURN RO CALL > - -;ROUTINE TO PRINT TIME AS HOURS,MINUTES,SECONDS, AND HUNDRETHS + ;ROUTINE TO PRINT TIME AS HOURS,MINUTES,SECONDS, AND HUNDRETHS ;FORMAT IS HHMM:SS.HH ;CALL: MOVE TAC,TIME IN JIFFIES(60THS,50THS OR MILLISECONDS) ; MOVE DAT,OUTPUT TEXT BYTE POINTER @@ -2108,8 +2087,7 @@ PR1: POP PDP,TAC ;RESTORE SECONDS(IN JIFFIES) CAIL TAC1,JIFSC2 ;ROUND IF GREATER THEN HALF AOS TAC JRST PRT2LF ;PRINT - -PRTIM1: IDIVI TAC,JIFMIN ; + PRTIM1: IDIVI TAC,JIFMIN ; IDIVI TAC,^D60 ;HOURS,MINUTES IN TAC,TAC1 PUSHJ PDP,PRT2 PUSHJ PDP,INLMES ;PRINT "HH:" @@ -2122,8 +2100,7 @@ PRT2: MOVEI TEM,"0" CAIGE TAC,^D10 XCT CONOUT ;PUT LEADING 0 IF LESS THEN 10 JRST RADX10 ;PRINT REST OF NUMBER - -;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH) + ;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH) ;CALL: MOVE ITEM, HIGH OR LOW SEG NUMBER ; PUSHJ PDP,PRT SEG ; RETURN @@ -2154,8 +2131,7 @@ IFN FTSWAP,< JUMPE TAC1,CPOPJ ;IS IT IN CORE? LSH TAC1,-12 ;YES, CONVERT TO #K-1 AOJA TAC1,CPOPJ ;ADD 1 AND RETURN NUMBER OF K - -;ROUTINE TO ASSIGN A MINIMAL CORE AREA(140 WORDS) + ;ROUTINE TO ASSIGN A MINIMAL CORE AREA(140 WORDS) ;CALLED FROM CORE,KJOB, AND RUN COMMANDS ;THIS ROUTINE PRESERVES INPUT BYTE POINTER IN TAC ;CALL: PUSHJ PDP,GETMIN @@ -2174,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 @@ -2189,8 +2164,7 @@ IFN FTTTYSER,< IFE FTTTYSER,< JRST TPOPJ ;RESTORE TAC AND RETURN > - -;ROUTINE TO GET 1 WORD FORM USER ARE WHICH CAN BE IN LOW OR HIGH SEG + ;ROUTINE TO GET 1 WORD FORM USER ARE WHICH CAN BE IN LOW OR HIGH SEG ;CALL: MOVE PROG,[XWD PROT,RELOC FOR LOW SEG] ; MOVE ITEM,JOB NUMBER ; HRLI UUO,PROG ;FOR RELOCATION @@ -2215,41 +2189,59 @@ IFE FT2REL,< > MOVE TAC,@UUO ;YES, GET IT FROM LOW SEG JRST CPOPJ1 ;AND SKIP RETURN - -SUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS + SUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS ;SAVGET LOWER CORE LOCATIONS USED FOR UUOS TO MONITOR ;USED IN SAVGET IN APRSER AND SAVGET IN SEGCON ;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 + ;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 ;WHEN SGSET IS CALLED FROM COMMAND DECODER ;CALL: MOVE TAC,INPUT BYTE POINTER @@ -2291,15 +2283,14 @@ IFN FTLOGIN,< PUSHJ PDP,DECIN1 ;AMOUNT OF CORE (OPTIONAL THIRD ARG.) JRST SGSET1 ;DOES NOT RETURN IF ERROR. RETURN HERE IF NO ARG. JRST COMERA ;ILLEGAL CHARACTER - LSH TAC,12 ;CONVERT TO HIGHEST REL. LOC. - SUBI TAC,1 + LSH TAC1,12 ;CONVERT TO HIGHEST REL. LOC. + SUBI TAC1,1 SGSET1: MOVEM TAC1,SGANEW(PROG) ;STORE FOR RUN AND SAVE HRRZ TAC1,IOS ;SCHEDULE MONITOR JOB ; GUARRANTEE LH OF PC WORD IS 0, SINCE IT WILL ; BE ADDED TO STARTING ADDRESS(IF RUN COM) JRST MSTART ;START JOB WITH PC IN MONITOR MODE - -;ROUTINE TO PICKUP ARGUMENTS FOR RUN AND GETSET UUOS + ;ROUTINE TO PICKUP ARGUMENTS FOR RUN AND GETSET UUOS ;THIS ROUTINE DOES SAME THING AS SGSET, EXCEPT THAT ARGUMENTS ARE ;OBTAINED FROM USER UUO ARGUMENTS INSTEAD OF FROM CONSOLE COMMAND ;THE USERS ARG ARE MOVED TO USER ACS(SGA...), THEREBY CLOBBERING HIS AC$S @@ -2312,13 +2303,12 @@ SGSET1: MOVEM TAC1,SGANEW(PROG) ;STORE FOR RUN AND SAVE ; RETURN INTERN GETARG - EXTERN JBTPROG,JOBCORE,PUUOAC + EXTERN JBTPRG,JOBCOR,PUUOAC 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 @@ -2342,8 +2332,7 @@ IFN FT2REL,< ; IGNORE LH JRST SG2A ;GO SET UP LOWER CORE AND RETURN ; DO NOT DO A RESET - -;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE + ;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE ;THIS JOB RUNS IN EXEC MODE AND CALLS IO ROUTINES USING REGULAR UUOS ;NO ATTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBDP, OR AC'S ;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA @@ -2353,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 @@ -2374,12 +2364,12 @@ 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 MOVEM TAC,JOBS41(JDAT) ;IN UPPER PART OF JOB DATA AREA - - MOVE TAC,JOBDDT(JDAT) ;SAVE DDT STARTING ADDRESS HIGHER UP IN JOB DATA AREA + MOVE TAC,JOBDDT(JDAT) ;SAVE DDT STARTING ADDRESS HIGHER UP IN JOB DATA AREA MOVEM TAC,JOBSDD(JDAT) ;SO COMPRESS ALWAYS MOVES CODE DOWN HRROS USRHCU ;FLAG THAT SAVE GET IS UNDER WAY ; SO THAT JOBHRL WILL NOT BE MODIFIED BY SETHGH RUOTINE @@ -2397,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 @@ -2421,13 +2410,13 @@ CMPTHR: HRLI TEM,254000 ;SET A JRST C(JOBSA) ; CORE ON START ,ODT,SAVE, REENTER,SSAVE IN CASE ; THIS SAE IO DOES NOT GO TO COMPLETION. (CONTROL C ; OR DEVICE FULL, SO THAT CORE DOES NOT GET EXPANDED - - PUSHJ PDP,SGDOA ;DO OUTPUT,RELEASE,FIND TTY + PUSHJ PDP,SGDOA ;DO OUTPUT,RELEASE,FIND TTY OUTPUT 0,SGALEN ;OUTPUT UUO EXECUTED BY SGDO ; RETURN HERE ONLY IF NO ERRORS 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 @@ -2464,8 +2453,7 @@ RUNJOB: JSP TAC1,SG1 ;SETUP ACS, SETUP LOWER CORE(SGALEN,SGADMP) ; PUT TAC1 AS FIRST ITEM ON PD LIST(JOBPN1) ; LH USED BY SGRELE ON ERROR TO SEE IF FROM USER ; AND LH ADDED TO START PC(JOBSA) BY URUN - -;RUN UUO + ;RUN UUO ;CALL: MOVE AC,[XWD N,D] ; CALL AC,[SIXBIT /RUN/] ; ERROR RETURN ;UNLESS LH=HALT(PRINT CONSOLE MESS, IF YES) @@ -2511,8 +2499,7 @@ IFN FT2REL,< HRLI TAC1,USRMOD ;SET USER MODE BIT IN PC PUSH PDP,TAC1 ;PUT ON PD LIST JRST USRXIT ;AND GO TO RETURN TO USER AS IF FROM UUO - -;UUO TO GET JUST HIGH SEG AND RETURN TO USER + ;UUO TO GET JUST HIGH SEG AND RETURN TO USER ;CALL IS THE SAME AS FOR RUN UUO EXCEPT THAT OK RETURN IS SKIP RETURN ;IF ERROR RETURN HAS HALT IN LH, STANDARD CONSOLE MESSAGE IS PRINTED AND JOB STOPPED @@ -2526,8 +2513,7 @@ IFN FT2REL,< UGTERR: MOVEI TAC,ILUERR ;ILLEGAL UUO ERROR CORE PUSHJ PDP,SGRELE ;SEE IF USER WANTS ERROR JRST UUOERR ;NO, PRINT ILLEGAL UUO - -;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE LOCATIONS + ;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE LOCATIONS ;FOR SAVE AND GET(SGALEN SET IO IOWD OR PP IF DTA OR DSK) ;SGADMP SET TO IOWD FOR THIS SIZE CORE ;CALL: JSP TAC1,SG1 @@ -2568,8 +2554,7 @@ IFN FT2REL,< > JRST SGERRA ;NOT AVAILABLE ;DEVICE INITED(OR FOUND) - -;COMMON EXIT FROM SAVHGH AND GETHGH ROUTINES(HIGH SEG SAVE AND GET) + ;COMMON EXIT FROM SAVHGH AND GETHGH ROUTINES(HIGH SEG SAVE AND GET) ;SO THAT SGA... LOCATIONS ARE RESTOREED TO ORIGINAL VALUES FOR LOW SEG SG3: MOVE TAC,JOBFF(JDAT) ;FIRST FREE LOC IN JOB(SET FROM LH OF @@ -2589,7 +2574,7 @@ IFN FTDISK,< MOVE TAC1,DEVMOD(DEVDAT) ;RETURN DEVICE CHARACTERISTICS(IF DISK SYS) TLNE TAC1,DVDSK ;IS THIS DEVICE A DISK? - MOVS TAC1,SGAPPN(PROG) ;YES. MAKE SURE FORTH WORD IS PROJ,PROG NO. + MOVS TAC,SGAPPN(PROG) ;YES. MAKE SURE FORTH WORD IS PROJ,PROG NO. > MOVSM TAC,SGALEN(PROG) ;NO. MAKE SURE FORTH WORD IS IOWD FOR DECTAPE ; SINCE DECTAPE USES RH TO COMPUTE LENGTH IN K @@ -2617,14 +2602,14 @@ SGERR1: MOVEI TAC,NSDERR ;ERROR CODE IN CASE RUN UUO(NO SUCH DEVICE) ; OR FIND TTY AND PRINT ?CRLF JSP TAC,PHOLD ;START TTY AND STOP JOB ASCIZ /NO SUCH DEVICE/ - -;ROUTINE TO GET FILE FROM DEVICE(LOW AND/OR HIGH) + ;ROUTINE TO GET FILE FROM DEVICE(LOW AND/OR HIGH) ;CALL: ACS JDAT,PROG,PDP,DEVDAT SETUP ; MOVE ITEM,JOB NUMBER ; IFN FTDISK, ; PUSHJ PDP,GETJB ; RETURN ONLY IF EVERYTHING OK + EXTERNAL JOBCOR,JOB,CPOPJ,JOBS41,JOB41 GETJB: @@ -2662,7 +2647,7 @@ IFN FT2REL,< MOVEM TAC,JOB41(JDAT) ;SAVED BY SAVE LOWFIN: HRRZ TAC,JOBCOR(JDAT) ;CORE ARG FROM PREVIOUS SAVE(THIS MONITOR ; ALWAYS STORES SOMETHING) - SKIP TAC ;IS THIS AN OLD FORMAT FILE WITH NO CORE ARG TO SAVE? + SKIPN TAC ;IS THIS AN OLD FORMAT FILE WITH NO CORE ARG TO SAVE? MOVE TAC,USRREL ;YES, USE ASSIGNMENT MADE WEN LOW FILE READ IN PUSHJ PDP,CKSARG ;RETURN ONLY IF USER'S SUPLLIED ARG IS 0 OR NOT ; SMALLER THAN SAVE CORE ARG. RETURN LARGER @@ -2672,24 +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 RELEASE DEVICE AND FIND TTY INTERN SGREL +EXTERN TTYFUW -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 +SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY? + JRST TTYFUW ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH + PUSH PDP,IOS ;NO, + MOVE TAC,DEVMOD(DEVDAT) + TLNE TAC,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,6 ;NO SKIP TO EOF +SGREL1: RELEAS ;NO RELEASE DEVICE + POP PDP,IOS SGREL2: - JRST TTYFNU ;FIND TTY FOR CURRENT USER - + JRST TTYFUW ;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 @@ -2698,20 +2685,20 @@ SGREL2: ;SGDOA CALLED FROM SAVE, IT HAS ALREADY SET LH OF USRHCU=-2 ;TO INDICATE CORE IS COMPRESSED - EXTERN USRHCU,USRJDA,JOBSA,JOBDDT,JOBSDD,JOBSD1,JOBSAV,JOBCOR - EXTERN JOBSV,JOBSV3,JOBSVD,JOBSDP + EXTERN USRHCU,USRJDA,JOBSA,JOBDDT,JOBSDD,JOBSD1,JOBSAV,JOBCOR + EXTERN JOBSV,JOBSV3,JOBSVD,JOBSDP -SGDO: HRROS USRHCU ;SET LH OF USRCHU-1 AS A FLAG TO INDICATE SAVE GET +SGDO: HRROS USRHCU ;SET LH OF USRCHU-1 AS A FLAG TO INDICATE SAVE GET ; LOW FILE IO IN PROGRESS, SO MONITOR WILL ; NOT STORE HIGH SEG PROTECTION IN JOBHRL WHICH ; HAS IOWD FOR ZERO COMPRESSION -SGDOA: XCT @(PDP) ;EXECUTE INPUT OR OUTPUT UUO - MOVE ITEM,JOB ;READ INTO PROTECTED PART OF JOB DATA AREA - PUSHJ PDP,EXPAND ;EXPAND CORE IMAGE - JRST ADRERR ;ADDRESS CHECK, PRINT MESSAGE AND STOP JOB - MOVE TAC1,JOBDDT(PROG) ;COPY DDT STARTING ADR - MOVEM TAC1,USRDDT ;INTO MONITOR PROTECTED AREA(IN CASE THIS IS GET) - SETZM USRHCU ;FLAG THAT SAVE-GET IO FINISHED AND CORE EXPANDED +SGDOA: XCT @(PDP) ;EXECUTE INPUT OR OUTPUT UUO + MOVE ITEM,JOB ;READ INTO PROTECTED PART OF JOB DATA AREA + PUSHJ PDP,EXPAND ;EXPAND CORE IMAGE + JRST ADRERR ;ADDRESS CHECK, PRINT MESSAGE AND STOP JOB + MOVE TAC,JOBDDT(PROG) ;COPY DDT STARTING ADR + MOVEM TAC,USRDDT ;INTO MONITOR PROTECTED AREA(IN CASE THIS IS GET) + SETZM USRHCU ;FLAG THAT SAVE-GET IO FINISHED AND CORE EXPANDED AOS (PDP) ;SKIP OVER UUO IN CALLING SEQUENCE ;ROUTINE TO CHECK FOR IO ERRORS(CALLED FROM SEGCON) @@ -2721,8 +2708,8 @@ SGDOA: XCT @(PDP) ;EXECUTE INPUT OR OUTPUT UUO INTERN SGIOCK -SGIOCK: MOVE T4,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE - TRNN T4,IOBKTL!IODTER!IODERR!IOIMPM ;ANY ERRORS ON SAVE-GET DEVICE? +SGIOCK: MOVE IOS,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE + TRNN IOS,IOBKTL!IODTER!IODERR!IOIMPM ;ANY ERRORS ON SAVE-GET DEVICE? POPJ PDP, ;NO, GIVE OK RETURN MOVEI TAC,TRNERR ;YES, ERROR CODE IN CASE THIS IS RUN UUO ; (TRANSMISSION ERROR) @@ -2730,8 +2717,7 @@ 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 EXPAND CORE AFTER A SAVE(LOW SEG ONLY) + ;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY) ;CALL: MOVE DEVDAT,DEVICE ADR. ; MOVE PROG,JOBADR. ; MOVE ITEM,JOB NUMBER @@ -2771,10 +2757,9 @@ EXPAND: HLRE AC3,SGALEN(PROG) ;-LENGTH OF FILE JRST EXPND1 EXPZ: MOVSI TAC,-2 HLLM TAC,JOBSV(PROG) - -;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE + ;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE EXPND1: MOVE TAC,[XWD PROG,JOBSV] ;IT WAS READ INTO JOBSV - MOVE TAC,@TAC ;FIRST IOWD + MOVE TAC1,@TAC ;FIRST IOWD EXPLP1: HRRZ AC1,TAC1 ;ADDRESS OF IOWD CAIGE AC1,JOBSAV ;LEGAL? AOJA AC1,TOOLOW ;NO. DELETE DATA WHICH IS TO LOW @@ -2791,7 +2776,6 @@ EXPLP1: HRRZ AC1,TAC1 ;ADDRESS OF IOWD HRRZ TAC,@TAC ;TOP REAL LOCATION NEEDED TRO TAC,1777 ;MAKE IT NK-1 - HLRZ TAC1,PROG ;PRESENT SIZ OF LOW SEG CAMG TAC,TAC1 ;IS THERE ENOUGH? JRST EXPCOR ;YES. @@ -2825,8 +2809,7 @@ EXPLP3: SOS AC1 MOVEM AC2,JOBDDT(JDAT) ;SET USER DDT STR ADR JRST SGDO2 ;AND SETUP USRDDT IN MONITOR PROTECTED ; FROM THIS USER - -;THIS ROUTINE WILL DELETE ALL DATA FROM A COMPRESSED FILE + ;THIS ROUTINE WILL DELETE ALL DATA FROM A COMPRESSED FILE ;WHICH IS BELOW JOBSOD (PROBABLY WRITTEN BY TENDUMP) TOOLOW: HLRE AC2,@TAC ;WORDCOUNT OF OFFENDING IOWD @@ -2845,14 +2828,13 @@ NXIOWD: SUB TAC,AC2 ;POINT TAC TO NEXT IOWD HRRZ AC1,@TAC ;GET ADDRESS CAIGE AC1,JOBSD1 ;LEGAL? AOJA AC1,TOOLOW ;NO, AT LEAST PART OF THE DATA IS LOW -IOWBLT: MOVSI TAC,@TAC ;YES, KEEP THE ENTIRE IOWD DATA +IOWBLT: MOVSI TAC1,@TAC ;YES, KEEP THE ENTIRE IOWD DATA HRRI TAC1,JOBSV(PROG) ;TAC1 IS A BLT POINTER SUBI TAC,JOBSV ;RH OF TAC IS AMOUNT BEING DELETED SUBI AC3,(TAC) ;AC3 POINTS TO TOP OF DATA READ IN-(N) BLT TAC1,@AC3 ;MOVE ONLY GOOD DATA DOWN JRST EXPND1 ;GO EXPAND THE GOOD DATA - -SGDO1: MOVEI TAC,JOBDDT(PROG) ;MOVE EVERYTHING DOWN )MUST BE NON-COMPRESSED DSK FILE + SGDO1: MOVEI TAC,JOBDDT(PROG) ;MOVE EVERYTHING DOWN )MUST BE NON-COMPRESSED DSK FILE HRLI TAC,JOBSVD(TAC) ;OR CONVERT SAVE FILE SKIPGE JOBSV(JDAT) ;IS THIS CONVERT FILE(FIRST WORD IS IOWD)? HRLI TAC,JOBSDP(TAC) ;YES, ALSO SKIP OVER IOWD @@ -2863,8 +2845,7 @@ SGDOER: POP PDP,TAC SETZM JOBHCU(JDAT) ;CLEAR LH AND SET HIGHEST USER CHAN, IN ; USE TO 0(WHERE IT SHOULD BE ANYWAY) POPJ PDP, ;ERROR RETURN OR OK RETURN - -;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND CHECK TO SEE IF 0 + ;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND CHECK TO SEE IF 0 ;OR GREATER THAN OR EQUAL TO IOWD USED TO SAVE OR GET FILE ;CALL: HLRE TAC1,-NO. OF WORDS IN FILE ; PUSHJ PDP,CKIOWD @@ -2908,6 +2889,7 @@ NOROOM: MOVEI TAC,NECERR ;ERROR CODE IN CASE THIS IS RUN UUO(NOT ENOUGH CORE) JSP TAC,PHOLD ;START TTY ADN STOP JOB ASCIZ /K OF CORE NEEDED/ + ;ROUTINE TO ASSIGN CORE FOR LOW AND HIGH SEG ;CALL: MOVE PROG,LOW SEG RELOCATION ; HRR TAC,HIGHEST LOC DESIRED @@ -2921,8 +2903,7 @@ GETCOR: HRRZM TAC,SGACOR(PROG) ;SOTRE CORE ARG FOR CORE UUO IN USER AC CALLI SGACOR,11 ;DO CORE UUO JRST NOROOM ;NOT AVAILABLE, PRINT ERROR AND AMOUNT TRYING FOR JRST TPOPJ ;OK, REMOVE TAC FROM PD LIST AND RETURN - -;ROUTINE TO PRINT NOT A SAVE FILE IF WRONG FORMAT FILE DETECTED + ;ROUTINE TO PRINT NOT A SAVE FILE IF WRONG FORMAT FILE DETECTED INTERN GETERR @@ -2941,6 +2922,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 @@ -2948,8 +2930,7 @@ NOFILE: MOVEI TAC,FNFERR ;ERROR CODE IN CASE THIS IS RUN UUO(FILE NOT FOUND PUSHJ PDP,PRNAME JSP TAC,PHOLD ;START TTY AND STOP JOB ASCIZ / NOT FOUND/ - -;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE + ;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE ;IF THIS IS A MONITOR COMMAND OR USER UUO ;IF USER UUO, GIVE ERROR RETURN TO USER UNLESS THERE IS A HALT ;IN LH OF EROR RETURN WORD, IN WHICH CASE FIND TTY, PRINT ?CRLF @@ -2968,7 +2949,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 @@ -2983,12 +2963,13 @@ 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 ASCIZ /? / COMEND: END ;END OF COMCON -