COMCON:\r
\r
;CALLED FROM CLOCK ROUTINE WHEN 'COMCNT' IS GREATER THAN 0\r
-\r
;AS SET BY TTY SERVICE ROUTINE\r
;ALL AC'S HAVE BEEN SAVED BY CLOCK CHANNEL\r
;THE COMMAND DECODER CALLS TTYCOM WHICH SCANS FOR TTY WHICH TYPED\r
;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET\r
;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY\r
;OR DELAY THE COMMAND FOR LATER EXECUTION\r
-\f\r
-INTERNAL COMMAND\r
+\fINTERNAL COMMAND\r
INTERNAL FTLOGIN,FTSWAP,FTTIME\r
EXTERNAL COMCNT,TTYCOM,JBTSTS,JOBMAX,JBTDAT,JBTADR,JOBHCU\r
EXTERNAL CONFIG,HIGHJB\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
COMNEQ: AOBJN T,COMLP ;NO, KEEP LOOKING\r
CAIN T4,1 ;DID ONE AND ONLY ONE COMMAND MATCH?\r
MOVE T,T3 ;YES, GET ITS INDEX\r
-\f\r
-COMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY,\r
+\fCOMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY,\r
PUSH PDP,TAC1 ;SAVE RH(DISPATCH ADR,+BITS)\r
MOVE T,JBTSTS(ITEM) ;JOB STATUS WORD FOR THIS JOB\r
IFN FTLOGIN,<\r
JRST CHKNO ;YES\r
JSP TAC,COMER ;NO, TYPE "LOGIN PLEASE"\r
ASCIZ /LOGIN PLEASE\r
-/>\r
+/\r
+>\r
CHKNO: JUMPN ITEM,CHKRUN ;JOB NUMBER ALREADY ASSIGNED?\r
TLNE TAC1,NOJOBN ;NO, DOES THIS COMMAND NEED A JOB NUMBER?\r
JRST COMGO ;NO\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
ASCIZ /JOB CAPACITY EXCEEDED\r
/\r
+\r
; EVEN THROUGH THIS IS A NEW JOB NUMBER\r
; IT MAY HAVE CORE ASSIGNED NOW BECAUSE IT WAS DELAYED\r
; UNTIL IT COULD BE SWAPPED IN(LOGIN WITH CORE FULL)\r
+\r
NEWJOB: MOVEI T1,ASSCON ;SET ASSIGNED BY CONSOLE BIT FOR TTY\r
IORM T1,DEVMOD(DEVDAT) ;SO OTHER JOBS CAN NOT USE\r
SETZM DEVLOG(DEVDAT) ;SET LOGICAL NAME TO ZERO\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
-\f\r
-CHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS?\r
+\fCHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS?\r
TLNN TAC1,NORUN ;YES, DOES THIS COMMAND REQUIRE A JOB?\r
JRST CHKACT ;NO\r
JSP TAC,COMER ;YES.\r
TLNN TAC1,INCOR ;IS THIS TRUE?\r
CHKDLY: HRRI TAC1,DLYCM1 ;NO, JUST DELAY COMMAND UNTIL SWAP OUT OR IN IS FINISHED\r
JRST COMDIS ;AND DISPATCH TO DELAY COMMAND\r
+>\r
CHKCO2: TLNE TAC1,NOACT ;CAN COMMAND BE PERFORMED WITH ACTIVE DEVICES?\r
PUSHJ PDP,RUNCHK ;NO, RETURN IF JOB STOPPED AND NO ACTIVE DEVICES\r
CHKCO1: TLNE TAC1,NOCORE ;DOES THIS COMMAND NEED CORE?\r
JSP TAC,COMER ;NO, PRINT "NO CORE ASSIGNED"\r
ASCIZ /NO CORE ASSIGNED\r
/\r
-\f\r
-CHKXPN: TLNN TAC1,PLSXPN ;DOES THIS COMMAND NEED CORE TO BE EXPANDED?\r
+\fCHKXPN: TLNN TAC1,PLSXPN ;DOES THIS COMMAND NEED CORE TO BE EXPANDED?\r
JRST COMGO ;NO\r
HLRE IOS,JOBHCU(JDAT) ;YES, IS CORE STILL COMPRESSED(SAVE DID NOT GO\r
; TO COMPLETION)\r
ANDCAM IOS,(PDP) ;NO, CLEAR REQUEU BIT IN DISP. FLAGS\r
MOVEM T,JBTSTS(ITEM)\r
\r
+\r
COMDIS: MOVEI IOS,0 ;CLEAR IOS FOR SETTING DISPATCH ADDRESSES\r
PUSHJ PDP,(TAC1) ;DISPATCH TO COMMAND SETUP ROUTINE.\r
-\f\r
-;RETURN FROM COMMAND SETUP ROUTINE\r
+\f;RETURN FROM COMMAND SETUP ROUTINE\r
\r
COMRET: POP PDP,T1 ;RESTORE COMMAND FLAGS\r
POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS.\r
PUSHJ PDP,PRSPC\r
PUSHJ PDP,DAYTM1\r
>\r
-\f\r
-PCRLF: TLNE T1,ERRFLG ;DID AN ERROR OCCUR?\r
+\fPCRLF: TLNE T1,ERRFLG ;DID AN ERROR OCCUR?\r
PUSHJ PDP,PRQM ;YES. APPEND ?\r
TLNN T1,NOCRLF ;SUPRESS CRLF?\r
PUSHJ PDP,CRLF ;NO\r
LDB ITEM,PJOBN ;GET JOB NUMBER FROM TTY DEVICE DATA BLOCK\r
JUMPE ITEM,CPOPJ \r
TLNE T1,CMWRQ ;REQUEUE JOB AFTER COMMAND WAIT OR ERROR?\r
-\r
JRST REQUE ;YES\r
>\r
POPJ PDP,\r
JUMPN TEM,SKPBR2 ;LOOK FURTHER FOR BREAK\r
JRST TPOPJ ;UNLESS NO MORE CHARS\r
>\r
-\f\r
-;TABLE OF CONSOLE COMMANDS\r
+\f;TABLE OF CONSOLE COMMANDS\r
\r
INTERNAL FTATTACH,FTTIME,FTTALK,FTEXAMINE,FTLOGIN,FTREASSIGN\r
INTERNAL FTFINISH,FTCCL\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
; WHEN COMMAND RESPONSE STOPS TYPING\r
NOMESS=10 ;NO COMMAND RESPONSE EVER, DO NOT CALL TTYSTR\r
\r
- ;T TAKEN ABOVE BY 'PLSXPN' BIT\r
+ ;4 TAKEN ABOVE BY 'PLSXPN' BIT\r
+\r
\r
ERRFLG=1 ;COMMAND ERROR\r
-\f\r
-DEFINE NAMES<\r
+\fDEFINE NAMES<\r
C START,START,NOPER!TTYRNU!INCORE!NOACT!NORUN\r
C HALT,STOP,NOCORE!NOJOBN!NOLOGIN!NOINCK!CMWRQ\r
C KJOB,KJOB,NOCORE!NOJOBN!NOINCK!NOLOGIN!NOACT!NORUN!NOPER!NOCRLF!NOMESS!NOTRAN\r
C CTEST,CCLRUN,NOCORE!NOPER!TTYRNU!NOCRLF!INCORE!NOACT!NORUN\r
>\r
>\r
-\f\r
-;GENERATE TABLE OF SIXBIT COMMAND NAMES\r
+\f;GENERATE TABLE OF SIXBIT COMMAND NAMES\r
\r
DEFINE C(A,B,D) <\r
<SIXBIT /A/>\r
>\r
+\r
COMTAB: NAMES\r
DISPL=.-COMTAB ;LENGTH OF TABLE\r
-\f\r
-;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS\r
+\f;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS\r
\r
DEFINE C(A,B,D) <\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
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
JUMPE PROG,DLYCM1 ;DELAY COMMAND IF CORE ASSIGNED ON DISK\r
JSP TAC1,MONJOB ;YES, SCHEDULE MONITOR JOB(PC IN EXEC MODE)\r
;RETURN HERE AT UUO LEVEL WHEN SCHEDULED\r
-JOBKL: MOVEI TAC1,ESTOP ;PUT ESTOP ON END OF PDL\r
+\fJOBKL: MOVEI TAC1,ESTOP ;PUT ESTOP ON END OF PDL\r
JSP TAC,MONSTR ;GO SETUP ACS AND PD LIST\r
PUSHJ PDP,JOB1 ;FLUSH CORE AFTER RELEASING DEVICES\r
JOBKA:\r
PUSHJ PDP,TTYKIL ;RETURN TTY TO VIRGIN STATE\r
JRST KSTOP ;CLEAR JOB STATUS WORD AND STOP JOB\r
\r
+\r
;ERROR IN COMMAND\r
\r
+\r
CERR: JRST ERRMES\r
\r
JOBKB: SETZM -1(PDP) ;CLEAR NOJOBN SO COMRET WILL PRINT ERROR MSG.\r
JRST ATT4 ;"NOT A JOB"\r
-\f\r
-; "START L" OR "START" - START AT LOC, L OR STARTING ADDRESS\r
+\f; "START L" OR "START" - START AT LOC, L OR STARTING ADDRESS\r
INTERNAL FT2REL\r
EXTERNAL JOBSA\r
\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
; BY PROGRAM END STATEMENT AND STORED BY LINKING LOADER\r
; SKIP INTO REENTER, START WITH PC IN USER MODE\r
>\r
-\f\r
-;"REENTER" - REENTER USER PROGRAM\r
+\f;"REENTER" - REENTER USER PROGRAM\r
\r
EXTERNAL JOBREN\r
\r
\r
ASCIZ /CAN'T CONTINUE\r
/\r
-\f\r
-; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB\r
+\f; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB\r
; "CORE" WITH NO ARG. WILL PRINT NO OF FREE BLOCKS LEFT\r
; WITHOUT AFFECTING CURRENT ASSIGNMENT OF CORE\r
; JOB NOT IN MIDDLE OF SWAPPING\r
; IF ASKING FOR 0 CORE\r
>\r
LSH TAC1,12 ;CONVERT 1K BLOCKS TO WORDS\r
- \r
MOVEI TAC,-1(TAC1) ;HIGHEST RELATIVE ADDRESS=LENGTH-1 OF LOW SEG\r
PUSHJ PDP,CORE0 ;TRY TO ASSIGN CORE\r
JRST COR2 ;CORE NOT AVAILABLE. GO PRINT MESSAGE\r
JRST DLYCM ;AND DELAY COMMAND TILL CORE IS IN MEMORY\r
; DLYCM WILL SWAP IT IN.\r
>\r
-\f\r
-COR2: IFN FTTTYSERM,<\r
+\fCOR2: IFN FTTTYSER,<\r
MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB ADR\r
>\r
PUSHJ PDP,INLMES ;PRINT ? FOR PATCH\r
EXTERN VIRTAL\r
PUSHJ PDP,INLMES\r
ASCIZ /K CORE\r
-VIR. CORE LEFT =/\r
+VIR. CORE LEFT=/\r
MOVE TAC,VIRTAL ;PRINT AMOUNT OF FREE SWAP SAPCE LEFT\r
JRST RADX10 ;IN DECIMAL\r
>\r
-\f\r
-; "SSAVE FILENAM.EXT [PROJ,PROG] CORE"\r
+\f; "SSAVE FILENAM.EXT [PROJ,PROG] CORE"\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
SETZM REFLAG ;ONLY ONCE\r
POPJ PDP,\r
>\r
-\f\r
-;"HELP" -HELP COMMAND\r
+\f;"HELP" -HELP COMMAND\r
\r
INTERNAL FTLOGIN\r
\r
MOVE TAC,[SIXBIT /SYSTAT/] ;CUSP NAME\r
JRST ARCOM ;RUN IT\r
\r
+\r
EXTERNAL JBTSTS,TTYATT\r
\r
ALOGIN:\r
JFCL\r
>\r
POPJ PDP,\r
-\f\r
-INTERN FTCCL\r
+\fINTERN FTCCL\r
\r
IFN FTCCL,<\r
\r
CCLRUN: MOVE TAC,[SIXBIT /COMPIL/] ;CUSP NAME\r
JRST ARCOM ;RUN IT\r
+\r
>\r
;"LOGIN" - LOGIN COMMAND\r
\r
MOVE TAC,[SIXBIT /LOGIN/] ;CUSP NAME\r
JRST ARCOM ;RUN IT\r
>\r
-\f\r
-; "R CUSTNAME CORE" - DOES "RUN SYS:CUSPNAME"\r
+\f; "R CUSTNAME CORE" - DOES "RUN SYS:CUSPNAME"\r
\r
RCOM: MOVEI TAC,0 ;NO FILE NAME, TTY WILL SUPPLY IT\r
JRST ARCOM1\r
IFN FTSWAP,<\r
JRST DLYCM ;NO. DELAY COMMAND UNTIL IN CORE\r
>\r
-\f\r
-; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT LOGICAL NAME\r
+\f; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT LOGICAL NAME\r
\r
EXTERNAL DEVLST,PJOBN,SYSTAP\r
\r
ASSIGN: PUSHJ PDP, CTEXT1 ;GET FIRST ARGUMENT\r
JUMPE TAC1, NOTENF ;NO ARGUEMNT TYPED IF 0\r
-IFN FTLOGIN,<EXTERN PRJPROG\r
+IFN FTLOGIN,<EXTERN PRJPRG\r
CAME TAC,[SIXBIT .SYS.]\r
JRST ASSG6\r
HLRZ T1,PRJPRG(ITEM)\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
ASSG5: PUSHJ PDP,ASSASG ;NO, TRY TO ASSGIN DEVICE\r
JRST ASSER1 ;ALREADY ASSIGNED TO ANOTHER JOB\r
JRST ASSFIN ;ASSIGNED\r
-\f\r
-;SYSTEM TAPE OR NOT MATCH OF ARG AND PHYSICAL NAME.\r
+\f;SYSTEM TAPE OR NOT MATCH OF ARG AND PHYSICAL NAME.\r
\r
ASSG1: CAMN TAC,SYSTAP ;IS THIS SYSTEM TAPE?\r
JRST ASSG2 ;YES\r
MOVEM TAC1,SYSTAP\r
POPJ PDP,\r
>\r
-\f\r
-;ALREADY ASSIGNED TO ANOTHER JOB\r
+\f;ALREADY ASSIGNED TO ANOTHER JOB\r
ASSER1:\r
IFE FTTTYSER,<\r
PDP PDP, TAC\r
>\r
\r
ASSMS2: ASCIZ /ALREADY ASSIGNED TO JOB /\r
-\f\r
-;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME\r
+\f;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME\r
ASSFIN: SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME\r
IFE FTTTYSER,<\r
POP PDP,TAC ;RESTORE INPUT BYTE POINTER\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
ASCIZ / WASN'T ASSIGNED\r
/\r
-\f\r
-INTERNAL FTREASSIGN\r
+\fINTERNAL FTREASSIGN\r
IFE FTREASSIGN,<\r
REASSI=UUOERR\r
>\r
\r
;"REASSIGN DEV:JOB" - REASSIGN DEVICE "DEV" TO JOB "JOB"\r
\r
+\r
REASS:\r
- PUSHJ PDP,CTEXT ;GET DEVICE NAME\r
+ PUSHJ PDP,CTEXT1 ;GET DEVICE NAME\r
JUMPE TAC,NOTENF ;NULL NAME?\r
MOVE UUO,TAC1 ;SAVE IT IN UUO\r
PUSHJ PDP,DECIN1 ;GET NEW JOB NUMBER\r
CAME TAC,ITEM ;ASSIGNED TO THIS JOB\r
JRST REASE3 ;NO\r
MOVE TAC,DEVMOD(DEVDAT)\r
-\r
TLNE TAC,DVTTY ;IS IT A TTY?\r
JRST REASE6 ;YES. CAN'T BE REASSIGNED\r
TRNN TAC,ASSPRG ;IS DEVICE INITED?\r
REASS4: HRRZ DSER,DEVSER(DEVDAT)\r
HRRZM DEVDAT,JOBFDV(JDAT)\r
MOVE UCHN,USRHCU\r
-\f\r
-REASS2: MOVE DEVDAT,USRJDA(UCHN) ;GET XWD UUO BITS,DDB ADDRESS\r
+\fREASS2: MOVE DEVDAT,USRJDA(UCHN) ;GET XWD UUO BITS,DDB ADDRESS\r
HRRZ TAC,JOBFDV(JDAT) ;GET ADDR. OF DDB SAVED BY COMMAND\r
PUSH PDP,UCHN ;SAVE USER CHANNEL\r
CAIN TAC,(DEVDAT) ;IS CHOSEN DEVICE ON THHS CHANNEL?\r
ASCIZ / CAN'T BE REASSIGNED\r
/\r
>\r
-\f\r
-INTERNAL FTATTACH\r
+\fINTERNAL FTATTACH\r
IFN FTATTACH,<\r
\r
;"ATTACH DEVNAME" -ATTACHES A PREVIOUSLY PARTITIONED DEVICE\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
/\r
>\r
-\f\r
-INTERNAL FTATTACH\r
+\fINTERNAL FTATTACH\r
IFN FTATTACH,<\r
\r
;"DETACH" - DETACH CONSOLE FROM JOB\r
HRRM TAC1,TTYTAB(TAC) ;SO THAT SCNSER CHECKS FOR THIS\r
POP PDP,DEVDAT ;RESTORE TTY DDB\r
POPJ PDP, ;SUCCESSFUL RETURN\r
-\f\r
-TEMP1: POP PDP,DEVDAT ;RESTORE TTY DDB\r
+\fTEMP1: POP PDP,DEVDAT ;RESTORE TTY DDB\r
JRST DEAER1 ;PRINT ERROR MSG. AND RETURN\r
TEMP2:\r
IFE FTTTYSER,< POP PDP,DEVDAT ;RESTORE TTY DDB\r
LOGER1: JSP TAC,ERRMES\r
ASCIZ /CAN'T DET DEV\r
/\r
-\r
>> ;CLOSE BOTH FTLOGIN AND FTATTACH CONDITIONALS.\r
-\r
-;"DAYTIME" - PRINT TIME OF DAY\r
+\f;"DAYTIME" - PRINT TIME OF DAY\r
\r
EXTERNAL TIME,THSDAT,MONTAB,JIFMIN\r
\r
PUSHJ PDP,PRSPC\r
MOVE TAC,TIME ;PRINT TIME OF DAY\r
JRST PRTIM1\r
-\f\r
-INTERNAL FTTIME\r
+\fINTERNAL FTTIME\r
IFN FTTIME,<\r
;"TIME (JOB NO.)" - PRINT TOTAL AND INCREMENTAL RUNNING TIME FOR A JOB\r
;FOLLOWED BY KILO-CORE TICKS\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
ASCIZ /UP /\r
MOVE TAC,UPTIME\r
JRST PRTIME ;AND RETURN\r
-\f\r
-RUN1:\r
+\r
+\fRUN1:\r
IFE FTLOGIN,<\r
MOVEI TAC,0 ;GET SET TO CLEAR INCREMENTAL RUN TIME\r
>\r
JRST PRTIME ;PRINT IT AND RETURN\r
>\r
>\r
-\f\r
-;ROUTINE TO LET TTY TALK TO ANY OTHER RING OF TTYS\r
+\f;ROUTINE TO LET TTY TALK TO ANY OTHER RING OF TTYS\r
; "TALK TTYN"\r
; TTYN NEED NEVER HAVE BEEN TYPED ON BEFORE\r
\r
ASCIZ /BUSY\r
/\r
>\r
-\f\r
-INTERNAL FTEXAMINE\r
+\fINTERNAL FTEXAMINE\r
\r
IFN FTEXAMINE,<\r
\r
HRLI TAC1,PROG ;SET FOR RELOCATION\r
MOVEM IOS,@TAC1 \r
POPJ PDP,\r
-\f\r
-DEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG\r
+\r
+\r
+\fDEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG\r
HRRM TAC1,JOBEXM(JDAT) ;STORE FOR NEXT TIME, DO NOT TOUCH LH(D OR E LAST)\r
; YES, WAS JOB STOPPED IN USER MODE?\r
CAIL TAC1,20 ;IS IT AN AC?\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
ECOMA: JSP TAC,ERRMES ;OUT OF BOUNDS\r
ASCIZ /OUT OF BOUNDS\r
/\r
-\r
>\r
-\f\r
-IFN FTLOGIN,<\r
+\fIFN FTLOGIN,<\r
;"SCHEDULE OCTN" - SETS RH OF STATES TO OCTN, IF TYPED FROM\r
; THE OPERATOR CONSOLE (C(DEVOPR)), OTHERWISE ILLEGAL\r
;"SCHEDULE" WITH NO ARGUMENTS TYPES OUT RH OF STATES, LEGAL FOR ALL.\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
;COMMAND NOT IN COMMAND DICECTORY\r
\r
NOCOM: JRST COMERR ;NO, APPEND ? TO WHAT HE TYPED IN\r
-\f\r
-IFN FTFINISH,<\r
+\fIFN FTFINISH,<\r
; "FINISH DEVICE" - CLOSES,RELEASE AND DESASSIGNS DEVICE\r
;JOB MUST HAVE CORE\r
\r
JFCL ;IGNORE IF NOT ASSIGNED BY CONSOLE\r
JRST ESTOP ;STOP JOB SO HE CANNOT CONTINUE\r
>\r
-\f\r
-IFN FTTIME,<\r
+\fIFN FTTIME,<\r
;"RESOURCES" - PRINT OUT AVAILABLE DEVICES AND FREE BLOCKS ON THE DISK\r
\r
EXTERNAL DEVLST\r
JUMPN T,LOP01 ;IS THERE ONE?\r
JRST CRLF ;NO. DONE, PRINT CR. LF AND THEN POPJ\r
>\r
-\f\r
-EXTERNAL CPOPJ,STUSER\r
+\fEXTERNAL CPOPJ,STUSER\r
;ROUTINE TO CHECK FOR ACTIVE DEVICES\r
;NEVER GET HERE DURING SWAP IN OU OUT\r
;SINCE COMMAND TABLE SHOULD AHVE NOTRAN BIT ON\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
>\r
-\f\r
-SUBTTL COMCSS - COMMON COMMAND SUBROUTINES\r
+\fSUBTTL COMCSS - COMMON COMMAND SUBROUTINES\r
\r
;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING\r
; IN COMMAND LINE (SIXBIT)\r
CTEX0: ILDB TEM,TAC\r
>\r
IFN FTTTYSER,<\r
-EXTERN TAKR,GETCHAR\r
+EXTERN TAKR,GETCHR\r
LDB TEM,TAKR(DAT) ;GET LAST CHAR.\r
JRST CTEX1\r
CTEX0: PUSHJ PDP,GETCHR ;ROUTINE IN SCNSER TO PICK UP CHAR.\r
TLNE T,770000 ;SIX CHARS YET?\r
IDPB TEM,T ;NO. BUILD WORD \r
JRST CTEX0 ;LOOP FOR MORE\r
-\f\r
-;SCAN FOR ALPHANUMERIC CHAR IN TEM\r
+\f;SCAN FOR ALPHANUMERIC CHAR IN TEM\r
CTEX: CAILE TEM,"Z"+40 ;GREATER THAN LC Z?\r
JRST CTEXA ;YES. NOT SIXBIT.\r
CAIL TEM,"A"+40 ;LOWER CASE LETTER?\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\r
-;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS\r
+\f;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS\r
;ALSO CLEARS TAC1\r
;DOES NOT RETURN IF PREVIOUS CHAR. OR NEXT NON-SPACING\r
;CHAR, IS CR(IE POPS SUBROUTINE LEVEL UP 1 ON RETURN)\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
MOVEI TEM,12 ;FOR BREAK CONSISTENCY\r
JRST TPOPJ ;RETURN ONE LEVEL UP\r
>\r
-\f\r
-;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT\r
+\f;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT\r
;CALLED FROM OCTIN, RETURNS TO SECOND LEVEL ON PDL\r
;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
; PUSHJ PDP, COMERA\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
DPB T,DAT\r
>\r
TDZA ITEM,ITEM ;CLEAR JOB NO. AND SKIP INTO CRLF ROUT.\r
-\f\r
-;ROUTINE TO PRINT A COMMAND ERROR MESSAGE\r
+\f;ROUTINE TO PRINT A COMMAND ERROR MESSAGE\r
;SAME CALL AS CONMES\r
\r
INTERNAL ERRMES\r
IDPB TEM,DAT\r
>\r
JRST CON0 ;KEEP GOING\r
-\f\r
-;ROUTINE TO PRINT INLINE ASCIZ MESSAGE\r
+\f;ROUTINE TO PRINT INLINE ASCIZ MESSAGE\r
;CALL: PUSHJ PDP,INLMES\r
; ASCIZ /THE MESSAGE/\r
;RETURN TO NEXT LOC AFTER MESSAGE\r
\r
PRQM: MOVEI TEM,"?"\r
IFN FTTTYSER,<\r
-\r
EXTERN OUTCHS\r
JRST OUTCHS\r
>\r
PRSPC: MOVEI TAC,[ASCIZ / /]\r
JRST CONMES\r
\f\r
+\r
;ROUTINE TO PRINT "TOO FEW ARGUMENTS"\r
;CALL: MOVE DAT,BYTE POINTER\r
; PUSHJ PDP,NOTENF\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
POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS\r
POPJ PDP,\r
\f\r
-;ROUTINE TO REA CONSOLE AND CONVERT ANY RADIX NUMBER\r
+;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER\r
; CALL: MOVE TAC1, DESIRED RADIX\r
; MOVE TAC, BYTE POINTER TO FIRST CHARACTER\r
; PUSHJ PDP, ANYRIN\r
; BEFORE [P,P] IN ATT AND GET COMMANDS.\r
JRST CPOPJ2 ;YES. SKIP RETURN\r
CAIE TEM,"-" ;DASH?\r
- CAIG TEM,400 ;SPACE OR CONTROL CHAR?\r
+ CAIG TEM,40 ;SPACE OR CONTROL CHAR?\r
JRST CPOPJ2 ;YES, ONLY LEGAL TERMINATORS\r
CAIE TEM,"," ;COMMA?\r
CAIN TEM,"]" ;RIGHT BRACKET?\r
IFE FTTTYSER,< ILDB TEM,TAC ;NEXT CHAR>\r
IFN FTTTYSER,< PUSHJ PDP,GETCHR> ;NEXT CHAR\r
JRST OCT0\r
-\f\r
-INTERNAL FTLOGIN\r
+\fINTERNAL FTLOGIN\r
IFN FTLOGIN,<\r
;GET PROJECT-PROGRAMMER NUMBERS\r
;CALL: MOVE TAC,INPUT BYTE POINTER\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
IFN FTTTYSER,<PUSHJ PDP,GETCHR> ;YES, SKIP IT SO FINAL ] IS OPTIONAL\r
POPJ PDP, ;RETURN RO CALL\r
>\r
-\f\r
-;ROUTINE TO PRINT TIME AS HOURS,MINUTES,SECONDS, AND HUNDRETHS\r
+\f;ROUTINE TO PRINT TIME AS HOURS,MINUTES,SECONDS, AND HUNDRETHS\r
;FORMAT IS HHMM:SS.HH\r
;CALL: MOVE TAC,TIME IN JIFFIES(60THS,50THS OR MILLISECONDS)\r
; MOVE DAT,OUTPUT TEXT BYTE POINTER\r
CAIL TAC1,JIFSC2 ;ROUND IF GREATER THEN HALF\r
AOS TAC\r
JRST PRT2LF ;PRINT\r
-\f\r
-PRTIM1: IDIVI TAC,JIFMIN ;\r
+\fPRTIM1: IDIVI TAC,JIFMIN ;\r
IDIVI TAC,^D60 ;HOURS,MINUTES IN TAC,TAC1\r
PUSHJ PDP,PRT2\r
PUSHJ PDP,INLMES ;PRINT "HH:"\r
CAIGE TAC,^D10\r
XCT CONOUT ;PUT LEADING 0 IF LESS THEN 10\r
JRST RADX10 ;PRINT REST OF NUMBER\r
-\f\r
-;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH)\r
+\f;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH)\r
;CALL: MOVE ITEM, HIGH OR LOW SEG NUMBER\r
; PUSHJ PDP,PRT SEG\r
; RETURN\r
JUMPE TAC1,CPOPJ ;IS IT IN CORE?\r
LSH TAC1,-12 ;YES, CONVERT TO #K-1\r
AOJA TAC1,CPOPJ ;ADD 1 AND RETURN NUMBER OF K\r
-\f\r
-;ROUTINE TO ASSIGN A MINIMAL CORE AREA(140 WORDS)\r
+\f;ROUTINE TO ASSIGN A MINIMAL CORE AREA(140 WORDS)\r
;CALLED FROM CORE,KJOB, AND RUN COMMANDS\r
;THIS ROUTINE PRESERVES INPUT BYTE POINTER IN TAC\r
;CALL: PUSHJ PDP,GETMIN\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
IFE FTTTYSER,<\r
JRST TPOPJ ;RESTORE TAC AND RETURN\r
>\r
-\f\r
-;ROUTINE TO GET 1 WORD FORM USER ARE WHICH CAN BE IN LOW OR HIGH SEG\r
+\f;ROUTINE TO GET 1 WORD FORM USER ARE WHICH CAN BE IN LOW OR HIGH SEG\r
;CALL: MOVE PROG,[XWD PROT,RELOC FOR LOW SEG]\r
; MOVE ITEM,JOB NUMBER\r
; HRLI UUO,PROG ;FOR RELOCATION\r
>\r
MOVE TAC,@UUO ;YES, GET IT FROM LOW SEG\r
JRST CPOPJ1 ;AND SKIP RETURN\r
-\f\r
-SUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS\r
+\fSUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS\r
\r
;SAVGET LOWER CORE LOCATIONS USED FOR UUOS TO MONITOR\r
;USED IN SAVGET IN APRSER AND SAVGET IN SEGCON\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\r
-;ROUTINE TO SCAN COMMAND STRING ARGUMENTS FOR SAVE,GET,RUN AND R\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
;WHEN SGSET IS CALLED FROM COMMAND DECODER\r
;CALL: MOVE TAC,INPUT BYTE POINTER\r
; GUARRANTEE LH OF PC WORD IS 0, SINCE IT WILL\r
; BE ADDED TO STARTING ADDRESS(IF RUN COM)\r
JRST MSTART ;START JOB WITH PC IN MONITOR MODE\r
-\f\r
-;ROUTINE TO PICKUP ARGUMENTS FOR RUN AND GETSET UUOS\r
+\f;ROUTINE TO PICKUP ARGUMENTS FOR RUN AND GETSET UUOS\r
;THIS ROUTINE DOES SAME THING AS SGSET, EXCEPT THAT ARGUMENTS ARE\r
;OBTAINED FROM USER UUO ARGUMENTS INSTEAD OF FROM CONSOLE COMMAND\r
;THE USERS ARG ARE MOVED TO USER ACS(SGA...), THEREBY CLOBBERING HIS AC$S\r
; RETURN\r
\r
INTERN GETARG\r
- EXTERN JBTPROG,JOBCORE,PUUOAC\r
+ EXTERN JBTPRG,JOBCOR,PUUOAC\r
\r
GETARG: HRR UUO,TAC ;MOVE ADR. OF ARG LIST TO UUO\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
; IGNORE LH\r
JRST SG2A ;GO SET UP LOWER CORE AND RETURN\r
; DO NOT DO A RESET\r
-\f\r
-;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE\r
+\f;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE\r
;THIS JOB RUNS IN EXEC MODE AND CALLS IO ROUTINES USING REGULAR UUOS\r
;NO ATTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBDP, OR AC'S\r
;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA\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
MOVEM TAC,JOBS41(JDAT) ;IN UPPER PART OF JOB DATA AREA\r
-\f\r
- MOVE TAC,JOBDDT(JDAT) ;SAVE DDT STARTING ADDRESS HIGHER UP IN JOB DATA AREA\r
+\f MOVE TAC,JOBDDT(JDAT) ;SAVE DDT STARTING ADDRESS HIGHER UP IN JOB DATA AREA\r
MOVEM TAC,JOBSDD(JDAT) ;SO COMPRESS ALWAYS MOVES CODE DOWN\r
HRROS USRHCU ;FLAG THAT SAVE GET IS UNDER WAY\r
; SO THAT JOBHRL WILL NOT BE MODIFIED BY SETHGH RUOTINE\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
; CORE ON START ,ODT,SAVE, REENTER,SSAVE IN CASE\r
; THIS SAE IO DOES NOT GO TO COMPLETION. (CONTROL C\r
; OR DEVICE FULL, SO THAT CORE DOES NOT GET EXPANDED\r
-\f\r
- PUSHJ PDP,SGDOA ;DO OUTPUT,RELEASE,FIND TTY\r
+\f PUSHJ PDP,SGDOA ;DO OUTPUT,RELEASE,FIND TTY\r
OUTPUT 0,SGALEN ;OUTPUT UUO EXECUTED BY SGDO\r
; RETURN HERE ONLY IF NO ERRORS\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
; PUT TAC1 AS FIRST ITEM ON PD LIST(JOBPN1)\r
; LH USED BY SGRELE ON ERROR TO SEE IF FROM USER\r
; AND LH ADDED TO START PC(JOBSA) BY URUN\r
-\f\r
-;RUN UUO\r
+\f;RUN UUO\r
;CALL: MOVE AC,[XWD N,D]\r
; CALL AC,[SIXBIT /RUN/]\r
; ERROR RETURN ;UNLESS LH=HALT(PRINT CONSOLE MESS, IF YES)\r
HRLI TAC1,USRMOD ;SET USER MODE BIT IN PC\r
PUSH PDP,TAC1 ;PUT ON PD LIST\r
JRST USRXIT ;AND GO TO RETURN TO USER AS IF FROM UUO\r
-\f\r
-;UUO TO GET JUST HIGH SEG AND RETURN TO USER\r
+\f;UUO TO GET JUST HIGH SEG AND RETURN TO USER\r
;CALL IS THE SAME AS FOR RUN UUO EXCEPT THAT OK RETURN IS SKIP RETURN\r
;IF ERROR RETURN HAS HALT IN LH, STANDARD CONSOLE MESSAGE IS PRINTED AND JOB STOPPED\r
\r
UGTERR: MOVEI TAC,ILUERR ;ILLEGAL UUO ERROR CORE\r
PUSHJ PDP,SGRELE ;SEE IF USER WANTS ERROR\r
JRST UUOERR ;NO, PRINT ILLEGAL UUO\r
-\f\r
-;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE LOCATIONS\r
+\f;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE LOCATIONS\r
;FOR SAVE AND GET(SGALEN SET IO IOWD OR PP IF DTA OR DSK)\r
;SGADMP SET TO IOWD FOR THIS SIZE CORE\r
;CALL: JSP TAC1,SG1\r
>\r
JRST SGERRA ;NOT AVAILABLE\r
;DEVICE INITED(OR FOUND)\r
-\f\r
-;COMMON EXIT FROM SAVHGH AND GETHGH ROUTINES(HIGH SEG SAVE AND GET)\r
+\f;COMMON EXIT FROM SAVHGH AND GETHGH ROUTINES(HIGH SEG SAVE AND GET)\r
;SO THAT SGA... LOCATIONS ARE RESTOREED TO ORIGINAL VALUES FOR LOW SEG\r
\r
SG3: MOVE TAC,JOBFF(JDAT) ;FIRST FREE LOC IN JOB(SET FROM LH OF\r
; OR FIND TTY AND PRINT ?CRLF\r
JSP TAC,PHOLD ;START TTY AND STOP JOB\r
ASCIZ /NO SUCH DEVICE/\r
-\f\r
-;ROUTINE TO GET FILE FROM DEVICE(LOW AND/OR HIGH)\r
+\f;ROUTINE TO GET FILE FROM DEVICE(LOW AND/OR HIGH)\r
;CALL: ACS JDAT,PROG,PDP,DEVDAT SETUP\r
; MOVE ITEM,JOB NUMBER\r
; IFN FTDISK,<MOVE TAC1,DEVMOD(DEVDAT) ;DEVICE CHAR.>\r
; PUSHJ PDP,GETJB\r
; RETURN ONLY IF EVERYTHING OK\r
\r
+\r
EXTERNAL JOBCOR,JOB,CPOPJ,JOBS41,JOB41\r
\r
GETJB:\r
; USER TO USE TO RESET CORE TO INITIAL SETTING WHEN\r
; PROGRAM IS RESTARTED\r
; FALL INTO SGREL\r
+\f\r
;ROUTINE TO RELEASE DEVICE AND FIND TTY\r
INTERN SGREL\r
\r
POP PDP,T4\r
SGREL2:\r
JRST TTYFNU ;FIND TTY FOR CURRENT USER\r
-\f\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
; OF FIND TTY AND PRINT ?CRLF\r
JSP TAC,PHOLD ;START TTY AND STOP JOB\r
ASCIZ /TRANSMISSION ERROR/\r
-\f\r
-;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY)\r
+\f;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY)\r
;CALL: MOVE DEVDAT,DEVICE ADR.\r
; MOVE PROG,JOBADR.\r
; MOVE ITEM,JOB NUMBER\r
JRST EXPND1\r
EXPZ: MOVSI TAC,-2\r
HLLM TAC,JOBSV(PROG)\r
-\f\r
-;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE\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
EXPLP1: HRRZ AC1,TAC1 ;ADDRESS OF IOWD\r
HRRZ TAC,@TAC ;TOP REAL LOCATION NEEDED\r
\r
TRO TAC,1777 ;MAKE IT NK-1\r
-\r
HLRZ TAC1,PROG ;PRESENT SIZ OF LOW SEG\r
CAMG TAC,TAC1 ;IS THERE ENOUGH?\r
JRST EXPCOR ;YES.\r
MOVEM AC2,JOBDDT(JDAT) ;SET USER DDT STR ADR\r
JRST SGDO2 ;AND SETUP USRDDT IN MONITOR PROTECTED\r
; FROM THIS USER\r
-\f\r
-;THIS ROUTINE WILL DELETE ALL DATA FROM A COMPRESSED FILE\r
+\f;THIS ROUTINE WILL DELETE ALL DATA FROM A COMPRESSED FILE\r
;WHICH IS BELOW JOBSOD (PROBABLY WRITTEN BY TENDUMP)\r
\r
TOOLOW: HLRE AC2,@TAC ;WORDCOUNT OF OFFENDING IOWD\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
-\f\r
-SGDO1: 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
SETZM JOBHCU(JDAT) ;CLEAR LH AND SET HIGHEST USER CHAN, IN\r
; USE TO 0(WHERE IT SHOULD BE ANYWAY)\r
POPJ PDP, ;ERROR RETURN OR OK RETURN\r
-\f\r
-;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND CHECK TO SEE IF 0\r
+\f;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND CHECK TO SEE IF 0\r
;OR GREATER THAN OR EQUAL TO IOWD USED TO SAVE OR GET FILE\r
;CALL: HLRE TAC1,-NO. OF WORDS IN FILE\r
; PUSHJ PDP,CKIOWD\r
JSP TAC,PHOLD ;START TTY ADN STOP JOB\r
ASCIZ /K OF CORE NEEDED/\r
\f\r
+\r
;ROUTINE TO ASSIGN CORE FOR LOW AND HIGH SEG\r
;CALL: MOVE PROG,LOW SEG RELOCATION\r
; HRR TAC,HIGHEST LOC DESIRED\r
CALLI SGACOR,11 ;DO CORE UUO\r
JRST NOROOM ;NOT AVAILABLE, PRINT ERROR AND AMOUNT TRYING FOR\r
JRST TPOPJ ;OK, REMOVE TAC FROM PD LIST AND RETURN\r
-\f\r
-;ROUTINE TO PRINT NOT A SAVE FILE IF WRONG FORMAT FILE DETECTED\r
+\f;ROUTINE TO PRINT NOT A SAVE FILE IF WRONG FORMAT FILE DETECTED\r
\r
INTERN GETERR\r
\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
PUSHJ PDP,PRNAME\r
JSP TAC,PHOLD ;START TTY AND STOP JOB\r
ASCIZ / NOT FOUND/\r
-\f\r
-;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE\r
+\f;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE\r
;IF THIS IS A MONITOR COMMAND OR USER UUO\r
;IF USER UUO, GIVE ERROR RETURN TO USER UNLESS THERE IS A HALT\r
;IN LH OF EROR RETURN WORD, IN WHICH CASE FIND TTY, PRINT ?CRLF\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
ASCIZ /?\r
/\r
COMEND: END ;END OF COMCON\r
-\r