-A.RLX_CDRSR6.REL,CDRSRX.REL,CLKCSS.REL,CLOCK1.REL,COMCON.REL,CORE1.REL\r
-B.RLX_DCSINT.REL,DIS340.REL,DIST30.REL,DLSINT.REL,DPDINT.REL,DSKINT.REL\r
-C.RLX_DSKSER.REL,DTASRN.REL,DTCSRN.REL,ERRCON.REL,JOBDAT.REL,LPTSER.REL\r
-D.RLX_MTASRX.REL,MTCSR6.REL,NULSEG.REL,PLTSER.REL,PTPSER.REL\r
-E.RLX_PTRSER.REL,PTYSRF.REL,PTYSRH.REL,SCHEDB.REL,SCNSRF.REL,UUOCON.REL\r
-F.RLX_PATCH.REL,SYSINI.REL,SYSMAK.REL,EDDT.REL,ONCEB.REL\r
-SYS50.REL/B_A.RLX,B.RLX,C.RLX,D.RLX,E.RLX,F.RLX\r
-DSK:/D_*.RLX\r
+A.RLX_CDRSR6.REL,CDRSRX.REL,CLKCSS.REL,CLOCK1.REL,COMCON.REL,CORE1.REL
+B.RLX_DLSINT.REL,DCSINT.REL,DIS340.REL,DIST30.REL,DTASRN.REL,DTCSRN.REL
+C.RLX_ERRCON.REL,JOBDAT.REL,LPTSER.REL,MTASRX.REL,MTCSR6.REL,PLTSER.REL
+D.RLX_PTPSER.REL,PTRSER.REL,PTYSRF.REL,PTYSRH.REL,SCNSRF.REL,SEGCON.REL
+E.RLX_SYSINI.REL,UUOCON.REL,PATCH.REL,SYSMAK.REL,EDDT.REL,ONCEB.REL
+SYS50N.REL/B_A.RLX,B.RLX,C.RLX,D.RLX,E.RLX
+DSK:/D_*.RLX
; WHICH IS ON DISK OR ON ITS WAY IN OR OUT.\r
; JOB WILL BE SWAPPED IN (SEE DLYCOM)\r
; AND IS NOT SITTING QUIETLY IN CORE(IE NO SWAPPING TRANSFER)\r
-PLSXPN=4 ;CORE MUST BE EXPANED IF STILL COMPRESSED BY SAVE NOT GOING\r
+PLSXPN==4 ;CORE MUST BE EXPANED IF STILL COMPRESSED BY SAVE NOT GOING\r
; TO COMPLETION(CONTROL C OR DEVICE OK?)\r
; MUST BE USED IN CONJUNCTION WITH COMMANDS WHICH\r
; NEED CORE AND NEED IT IN CORE\r
>\r
PUSHJ PDP,RADX10 ;PRINT NO. OF 1K BLOCKS AVAILABLE\r
IFE FTSWAP,<\r
- JSP TAC,CONMAS\r
+ JSP TAC,CONMES\r
ASCIZ /K CORE\r
/\r
>\r
IFN FTLOGIN,< EXTERNAL HELPPP\r
HELP1:\r
MOVE TAC,HELPPP\r
- TLN T,JLOG\r
+ TLNN T,JLOG\r
JRST ALOGIN\r
POPJ PDP,\r
>\r
\r
REASS:\r
PUSHJ PDP,CTEXT1 ;GET DEVICE NAME\r
- JUMPE TAC,NOTENF ;NULL NAME?\r
+ JUMPE TAC1,NOTENF ;NULL NAME?\r
MOVE UUO,TAC1 ;SAVE IT IN UUO\r
PUSHJ PDP,DECIN1 ;GET NEW JOB NUMBER\r
JRST NOTENF ;NONE SPECIFIED, DOESN'T RETURN IF ERROR\r
AOS JOBEXM(JDAT) ;NO, IT WAS AN E. INCREMENT IN CASE HE TYPES NO ARG\r
HRROS JOBEXM(JDAT) ;YES, FLAG THAT E HAPPENED LAST(LH=-1)\r
PUSHJ PDP,OCTIN ;GET OCTAL LOCATION\r
- SKIPA TAC,JOBEXM(JDAT) ;NONE SPECIFIED, USE LAST LOC OF D OR NEXT OF E\r
+ SKIPA TAC1,JOBEXM(JDAT) ;NONE SPECIFIED, USE LAST LOC OF D OR NEXT OF E\r
JRST COMERA ;ILLEGAL CHARACTER\r
PUSHJ PDP,DEAT ;CHECK FOR AC REFERENCE AND STORE JOBEXM\r
HRRZ UUO,TAC1 ;IGNORE LH\r
HRRZ TAC,(PDP) ;PRINT RIGHT HALF\r
PUSHJ PDP,OCTPNT\r
PUSHJ PDP,INLMES ;PRINT FINAL TAB\r
- ASCIZ / /\r
+ ASCIZ / /\r
JRST TPOPJ ;POP PDP,TAC,POPJ PDP,\r
\f\r
;"DEPOSIT LH RH LOC" - DEPOSITS XWD LH,RH IN LOCATION LOC\r
ASCIZ /. BLKS/\r
>\r
\r
- HRLZ T,DEVLST ;GET DDB POINTER\r
+ HLRZ T,DEVLST ;GET DDB POINTER\r
MOVEI AC2,0 ;SET DEVICE NAME 0 FOR FIRST COMPARE\r
LOP01: MOVE T1,DEVMOD(T) ;DEVICE CHARACTERISTICS\r
TRNN T1,ASSCON!ASSPRG ;DEVICE ASSIGNED BY CONSOLE OR PROGRAM?\r
IDPB TEM,DAT\r
POPJ PDP,\r
>\r
-PRSPC: MOVEI TAC,[ASCIZ / /]\r
+PRSPC: MOVEI TAC,[ASCIZ / /]\r
JRST CONMES\r
\f\r
\r
PUSHJ PDP,DECIN1 ;AMOUNT OF CORE (OPTIONAL THIRD ARG.)\r
JRST SGSET1 ;DOES NOT RETURN IF ERROR. RETURN HERE IF NO ARG.\r
JRST COMERA ;ILLEGAL CHARACTER\r
- LSH TAC,12 ;CONVERT TO HIGHEST REL. LOC.\r
- SUBI TAC,1\r
+ LSH TAC1,12 ;CONVERT TO HIGHEST REL. LOC.\r
+ SUBI TAC1,1\r
SGSET1: MOVEM TAC1,SGANEW(PROG) ;STORE FOR RUN AND SAVE\r
HRRZ TAC1,IOS ;SCHEDULE MONITOR JOB \r
; GUARRANTEE LH OF PC WORD IS 0, SINCE IT WILL\r
MOVE TAC1,DEVMOD(DEVDAT) ;RETURN DEVICE CHARACTERISTICS(IF DISK SYS)\r
TLNE TAC1,DVDSK ;IS THIS DEVICE A DISK?\r
\r
- MOVS TAC1,SGAPPN(PROG) ;YES. MAKE SURE FORTH WORD IS PROJ,PROG NO.\r
+ MOVS TAC,SGAPPN(PROG) ;YES. MAKE SURE FORTH WORD IS PROJ,PROG NO.\r
>\r
MOVSM TAC,SGALEN(PROG) ;NO. MAKE SURE FORTH WORD IS IOWD FOR DECTAPE\r
; SINCE DECTAPE USES RH TO COMPUTE LENGTH IN K\r
MOVEM TAC,JOB41(JDAT) ;SAVED BY SAVE\r
LOWFIN: HRRZ TAC,JOBCOR(JDAT) ;CORE ARG FROM PREVIOUS SAVE(THIS MONITOR\r
; ALWAYS STORES SOMETHING)\r
- SKIP TAC ;IS THIS AN OLD FORMAT FILE WITH NO CORE ARG TO SAVE?\r
+ SKIPN TAC ;IS THIS AN OLD FORMAT FILE WITH NO CORE ARG TO SAVE?\r
MOVE TAC,USRREL ;YES, USE ASSIGNMENT MADE WEN LOW FILE READ IN\r
PUSHJ PDP,CKSARG ;RETURN ONLY IF USER'S SUPLLIED ARG IS 0 OR NOT\r
; SMALLER THAN SAVE CORE ARG. RETURN LARGER\r
\f\r
;ROUTINE TO RELEASE DEVICE AND FIND TTY\r
INTERN SGREL\r
+EXTERN TTYFUW\r
\r
-SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY?\r
- JRST 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
+SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY?\r
+ JRST TTYFUW ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH\r
+ PUSH PDP,IOS ;NO,\r
+ MOVE TAC,DEVMOD(DEVDAT)\r
+ TLNE TAC,DVMTA ;MAGTAPE?\r
+ TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE?\r
+ JRST SGREL1 ;NO\r
+ CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT\r
+ STATO 0,IOTEND+IODEND ;AT END OF APTE?\r
+ MTAPE 0,6 ;NO SKIP TO EOF\r
+SGREL1: RELEAS ;NO RELEASE DEVICE\r
+ POP PDP,IOS\r
SGREL2:\r
- JRST TTYFNU ;FIND TTY FOR CURRENT USER\r
+ JRST TTYFUW ;FIND TTY FOR CURRENT USER\r
\r
;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R)\r
;AND CHECK FOR ERRORS. USED ONLY TO READ LOW FILE.\r
;SGDOA CALLED FROM SAVE, IT HAS ALREADY SET LH OF USRHCU=-2\r
;TO INDICATE CORE IS COMPRESSED\r
\r
- EXTERN USRHCU,USRJDA,JOBSA,JOBDDT,JOBSDD,JOBSD1,JOBSAV,JOBCOR\r
- EXTERN JOBSV,JOBSV3,JOBSVD,JOBSDP\r
+ EXTERN USRHCU,USRJDA,JOBSA,JOBDDT,JOBSDD,JOBSD1,JOBSAV,JOBCOR\r
+ EXTERN JOBSV,JOBSV3,JOBSVD,JOBSDP\r
\r
-SGDO: HRROS USRHCU ;SET LH OF USRCHU-1 AS A FLAG TO INDICATE SAVE GET\r
+SGDO: HRROS USRHCU ;SET LH OF USRCHU-1 AS A FLAG TO INDICATE SAVE GET\r
; LOW FILE IO IN PROGRESS, SO MONITOR WILL\r
; NOT STORE HIGH SEG PROTECTION IN JOBHRL WHICH\r
; HAS IOWD FOR ZERO COMPRESSION\r
-SGDOA: XCT @(PDP) ;EXECUTE INPUT OR OUTPUT UUO\r
- MOVE ITEM,JOB ;READ INTO PROTECTED PART OF JOB DATA AREA\r
- PUSHJ PDP,EXPAND ;EXPAND CORE IMAGE\r
- JRST ADRERR ;ADDRESS CHECK, PRINT MESSAGE AND STOP JOB\r
- MOVE TAC1,JOBDDT(PROG) ;COPY DDT STARTING ADR\r
- MOVEM TAC1,USRDDT ;INTO MONITOR PROTECTED AREA(IN CASE THIS IS GET)\r
- SETZM USRHCU ;FLAG THAT SAVE-GET IO FINISHED AND CORE EXPANDED\r
+SGDOA: XCT @(PDP) ;EXECUTE INPUT OR OUTPUT UUO\r
+ MOVE ITEM,JOB ;READ INTO PROTECTED PART OF JOB DATA AREA\r
+ PUSHJ PDP,EXPAND ;EXPAND CORE IMAGE\r
+ JRST ADRERR ;ADDRESS CHECK, PRINT MESSAGE AND STOP JOB\r
+ MOVE TAC,JOBDDT(PROG) ;COPY DDT STARTING ADR\r
+ MOVEM TAC,USRDDT ;INTO MONITOR PROTECTED AREA(IN CASE THIS IS GET)\r
+ SETZM USRHCU ;FLAG THAT SAVE-GET IO FINISHED AND CORE EXPANDED\r
AOS (PDP) ;SKIP OVER UUO IN CALLING SEQUENCE\r
\r
;ROUTINE TO CHECK FOR IO ERRORS(CALLED FROM SEGCON)\r
\r
INTERN SGIOCK\r
\r
-SGIOCK: MOVE T4,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE\r
- TRNN T4,IOBKTL!IODTER!IODERR!IOIMPM ;ANY ERRORS ON SAVE-GET DEVICE?\r
+SGIOCK: MOVE IOS,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE\r
+ TRNN IOS,IOBKTL!IODTER!IODERR!IOIMPM ;ANY ERRORS ON SAVE-GET DEVICE?\r
POPJ PDP, ;NO, GIVE OK RETURN\r
MOVEI TAC,TRNERR ;YES, ERROR CODE IN CASE THIS IS RUN UUO\r
; (TRANSMISSION ERROR)\r
HLLM TAC,JOBSV(PROG)\r
\f;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE\r
EXPND1: MOVE TAC,[XWD PROG,JOBSV] ;IT WAS READ INTO JOBSV\r
- MOVE TAC,@TAC ;FIRST IOWD\r
+ MOVE TAC1,@TAC ;FIRST IOWD\r
EXPLP1: HRRZ AC1,TAC1 ;ADDRESS OF IOWD\r
CAIGE AC1,JOBSAV ;LEGAL?\r
AOJA AC1,TOOLOW ;NO. DELETE DATA WHICH IS TO LOW\r
HRRZ AC1,@TAC ;GET ADDRESS\r
CAIGE AC1,JOBSD1 ;LEGAL?\r
AOJA AC1,TOOLOW ;NO, AT LEAST PART OF THE DATA IS LOW\r
-IOWBLT: MOVSI TAC,@TAC ;YES, KEEP THE ENTIRE IOWD DATA\r
+IOWBLT: MOVSI TAC1,@TAC ;YES, KEEP THE ENTIRE IOWD DATA\r
HRRI TAC1,JOBSV(PROG) ;TAC1 IS A BLT POINTER\r
SUBI TAC,JOBSV ;RH OF TAC IS AMOUNT BEING DELETED\r
SUBI AC3,(TAC) ;AC3 POINTS TO TOP OF DATA READ IN-(N)\r
;MONTH TABLE FOR DAYTIME COMMAND PRINTING\r
\r
PMONTB: POINT 6,MONTAB(TAC),5 ;POINTER TO NUMBER OF DAYS INMONTH\r
-MONTAB: EXP ^D30B5+"JAN\r
- EXP ^D27B5+"FEB\r
- EXP ^D30B5+"MAR\r
- EXP ^D29B5+"APR\r
- EXP ^D30B5+"MAY\r
- EXP ^D29B5+"JUN\r
- EXP ^D30B5+"JUL\r
- EXP ^D30B5+"AUG\r
- EXP ^D29B5+"SEP\r
- EXP ^D30B5+"OCT\r
- EXP ^D29B5+"NOV\r
- EXP ^D30B5+"DEC\r
+MONTAB: EXP ^D30B5+"JAN"\r
+ EXP ^D27B5+"FEB"\r
+ EXP ^D30B5+"MAR"\r
+ EXP ^D29B5+"APR"\r
+ EXP ^D30B5+"MAY"\r
+ EXP ^D29B5+"JUN"\r
+ EXP ^D30B5+"JUL"\r
+ EXP ^D30B5+"AUG"\r
+ EXP ^D29B5+"SEP"\r
+ EXP ^D30B5+"OCT"\r
+ EXP ^D29B5+"NOV"\r
+ EXP ^D30B5+"DEC"\r
MIDNIT: EXP ^D60*^D60*^D24*JIFSEC ;NO OF JIFFIES TILL MIDNIGHT\r
\f;STOP PROCEDURE WHEN SHUTTING DOWN SYSTEM\r
;BECAUSE OF CATOSTROPHIC FAILURE OR ANY OTHER REASON\r
MTCSR6,MTCSR6/C_S,MTCSR6\r
MTASRX,MTASRX/C_S,MTASRX\r
NULSEG,NULSEG/C_S,FT40N,NULSEG\r
-SEGCON,NULSEG/C_S,FT40N,SEGCON\r
+SEGCON,SEGCON/C_S,FT40N,SEGCON\r
PLTSER,PLTSER/C_S,PLTSER\r
PTRSER,PTRSER/C_S,PTRSER\r
PTPSER,PTPSER/C_S,PTPSER\r
CDRSR6,CDRSR6/C_S,CDRSR6\r
CDRSRX,CDRSRX/C_S,CDRSRX\r
-CLOCK1,CLOCK1/C_S,FT50SB,CLOCK1\r
-CLKCSS,CLKCSS/C_S,FT50SB,CLKCSS\r
-COMCON,COMCON/C_S,FT50SB,COMCON\r
-COMMON,COMMON/C_S,CON50N,COMMON\r
-CORE1,CORE1/C_S,FT50SB,CORE1\r
+CLKCSS,CLKCSS/C_S,FT50N,CLKCSS\r
+CLOCK1,CLOCK1/C_S,FT50N,CLOCK1\r
+COMCON,COMCON/C_S,FT50N,COMCON\r
+COMMON,COMMON/C_S,CONTNY,COMMON\r
+CORE1,CORE1/C_S,FT50N,CORE1\r
DIS340,DIS340/C_S,DISSER\r
DIST30,DIST30/C_S,DIST30,DISSER\r
DCSINT,DCSINT/C_S,DCSINT\r
DLSINT,DLSINT/C_S,DLSINT\r
DPDINT,DPDINT/C_S,DPDINT\r
DSKINT,DSKINT/C_S,DSKINT\r
-DSKSER,DSKSER/C_S,FT50SB,DSKSER\r
-DTCSRN,DTCSRN/C_S,FT50SB,DTCSRN\r
-DTASRN,DTASRN/C_S,FT50SB,DTASRN\r
+DSKSER,DSKSER/C_S,FT50N,DSKSER\r
+DTCSRN,DTCSRN/C_S,FT50N,DTCSRN\r
+DTASRN,DTASRN/C_S,FT50N,DTASRN\r
EDDT,EDDT/C_EDDT\r
ERRCON,ERRCON/C_S,ERRCON\r
JOBDAT,JOBDAT/C_JOBDAT\r
LPTSER,LPTSER/C_S,LPTSER\r
MTCSR6,MTCSR6/C_S,MTCSR6\r
MTASRX,MTASRX/C_S,MTASRX\r
-NULSEG,NULSEG/C_S,FT50SB,NULSEG\r
-SEGCON,SEGCON/C_S,FT50SB,SEGCON\r
+NULSEG,NULSEG/C_S,FT50N,NULSEG\r
+SEGCON,SEGCON/C_S,FT50N,SEGCON\r
PLTSER,PLTSER/C_S,PLTSER\r
PTRSER,PTRSER/C_S,PTRSER\r
PTPSER,PTPSER/C_S,PTPSER\r
PTYSRF,PTYSRF/C_S,PTYSRF\r
PTYSRH,PTYSRH/C_S,PTYSRH\r
PATCH,PATCH/C_PATCH\r
-SYSINI,SYSINI/C_S,FT50SB,SYSINI\r
+SYSINI,SYSINI/C_S,FT50N,SYSINI\r
SYSMAK,SYSMAK/C_S,SYSMAK\r
-ONCEB,ONCEB/C_S,FT50SB,ONCEB\r
-SCNSRF,SCNSRF/C_S,FT50SB,SCNSRF\r
-SCHEDB,SCHEDB/C_S,FT50SB,SCHEDB\r
-UUOCON,UUOCON/C_S,FT50SB,UUOCON\r
+ONCEB,ONCEB/C_S,FT50N,ONCEB\r
+SCNSRF,SCNSRF/C_S,FT50N,SCNSRF\r
+UUOCON,UUOCON/C_S,FT50N,UUOCON\r
IFE T30,<\r
DISBSY=77\r
PENON=7400\r
->IFN T30,<\r
-DISBSY=2000\r
-PENON=1000\r
+>\r
+IFN T30,<\r
+DISBSY=20000\r
+PENON=10000\r
>\r
\r
EXTERN JOBPFI\r
;IS A SAVE FILE (UGETF DONE)\r
MOVEI BLK,DIRBLK ;NO. GET 1ST BLOCK CLOSE TO\r
TLO IOS,RVERSE ;DIRECTORY. GOING IN REVERSE\r
- POPJ PDP,USLSTA\r
+ PUSHJ PDP,USLSTA\r
CAILE BLK,TOPBLK ;BLOCK LEGAL?\r
POPJ PDP, ;NO. ERROR RETURN\r
ENTRC: MOVEM BLK,FSTBLK(DEVDAT) ;SAVE AS 1ST BLOCK\r
MOVEM UUO,SVPNTR\r
ADDI TAC,(PROG) ;RELOCATE ADDRESS OF 1ST IOWD\r
MOVEM TAC,PNTR ;AND SAVE IT\r
- MOVE TAC,[JSP DMPADV] ;SET UP LOC FOR WHEN\r
+ MOVE TAC,[JSR DMPADV] ;SET UP LOC FOR WHEN\r
MOVEM TAC,DTALC2 ;IOWD IS EXHAUSTED\r
HRRZM PROG,ADRPRG ;SAVE JUST ADDRESS OF PROG\r
TLO IOS,NOBUF ;INDICATE DIRECTLY TO USER\r
\r
;HERE WHEN SWAPPER DOES GET THE JOB BACK INTO CORE\r
SWPBAK: MOVE IOS,DEVIOS(DEVDAT)\r
- SETM MONB2 ;CLEAR JOB NO, FROM MON BUFFER\r
+ SETZM MONB2 ;CLEAR JOB NO, FROM MON BUFFER\r
TLNN IOS,IOFST ;WAS JOB SWAPPED OUT WHEN DATA FINISHED?\r
POPJ PDP, ;NO. TRANSFER COMPLETED\r
MOVE TAC,JBTSTS(ITEM) ;YES, WAS IO ABORTED?\r
\r
FTRC10=0 ;NEW PDP-10 DISK(MODEL RC-10) INSTEAD OF DATA PRODUCTS DISK\r
\r
-FTKCT=0 ;ACCUMULATE CORE*RUNNING TIME FOR CHARGING FOR EACH USER\r
+FTKCT=0 ;ACCUMULATE CORE*RUNNING TIME FOR CHARGING FOR EACH USER\r
\r
-FTPRV=0 ;PRIVILEGE BITS FOR EACH USER\r
+FTPRV=0 ;PRIVILEGE BITS FOR EACH USER\r
\r
-FTGETTAB=0 ;GETTAB UUO - RETURN CONTENTS OF MONITOR JOBTABLES\r
+FTGETTAB=1 ;GETTAB UUO - RETURN CONTENTS OF MONITOR JOBTABLES\r
\r
;LAST PAGE SHOULD BE WRITTEN WITH 'HP' TECO COMMAND SO FORM-FEED IS\r
;NOT APPENDED AFTER LIST CAUSING EXTRA BLANK PAGE IN MONITOR LISTING\r
MOVEI TAC,LPTLOV ;GET LINE OVERFLOW ERROR MASK\r
XCT LPTCSO(DEVDAT) ;SKIP IF LINE OVERFLOW FLAG IS ON\r
JRST LPTER2 ; GO CHECK IF PREVIOUS ERROR OCCURRED\r
- MOVN TAC,[EXP 100001] ;DECREMENT BLK0 POINTER\r
+ MOVN TAC,[EXP 1000001] ;DECREMENT BLK0 POINTER\r
ADDM TAC,LPTPTR(DEVDAT)\r
MOVE TAC,[EXP 15B6+12B13] ;PRINT CRLF\r
XCT LPTDTO(DEVDAT)\r
PUSHJ P,ASKYN ;FIND OUT IF 10/40 WITH DISK\r
ASCIIZ <;DISK?>\r
JUMPE N,SYSOUT ;DISK SYSTEM?\r
-SYS1: AOS SYS50N\r
- AOS DSKN\r
+SYS1: AOS DSKN\r
AOS LOGINN\r
SYSOUT: MOVE N,SYS40N ;DEFINE 10/40 SYSTEM SYMBOL\r
PUSHJ P,OUTXP\r
ASCIIZ <XP SYS40N,*>\r
- MOVEI N,SYS50N \r
+ MOVEI N,0 ;ASSUME 10/40\r
+ SKIPN SYS40N ;10/40 SYSTEM?\r
+ MOVEI N,1 ;NO, MUST BE 10/50,SET TO 1\r
PUSHJ P,OUTXP\r
ASCIIZ <XP SYS50N,*>\r
MOVE N,DSKN\r
ASCIIZ </>>\r
\r
\f SUBTTL SET-UP TTY CONFIGURATION\r
- PUSHJ P,ASKYN\r
+DLSASK: PUSHJ P,ASKYN\r
ASCIIZ <;DATA LINE SCANNER(DC10)?[N = WILL ASK FOR 680 OR 630]>\r
MOVEM N,DLSN\r
JUMPN N,DLSOUT\r
\f END MONGEN\r
\r
\f\r
-\0\0\0
\ No newline at end of file
+\0\0\0\r
CODES\r
\fIFN FTCHECK+FTMONP,<\r
DEFINE X(A,B),<\r
-EXTERNAL A'RFQ\r
+EXTERNAL A'REQ\r
>\r
QUEUES\r
EXTERNAL REQTAB\r
JUMPE TAC,GETLN1 ;IF NONE, NO LINES.\r
SKIPLE TISYNC(DEVDAT) ;ANY TYPE-IN?\r
TLO LINE,LINRDY ;YES. FLAG.\r
-GETLN1: MOVE LINE,@UUO ;GIVE IT TO USER\r
+GETLN1: MOVEM LINE,@UUO ;GIVE IT TO USER\r
POPJ PDP,\r
\r
;ROUTINE TO SET LINE CHARACTERISTICS THAT ARE SETABLE\r
TLZ LINE,LGLSET ;INITIALIZE OTHER MODES\r
HLLM LINE,LINTAB(LINE)\r
SETZB TAC,DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME\r
- MOVE TAC,[XWD TTYUSR+TTYATC,ASSCON+ASSPRG]\r
+ MOVE TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG]\r
ANDCAM TAC,DEVMOD(DEVDAT) ;CLEAR ATTACH,USE, AND ASSIGN BITS\r
TTYKL1: LDB LINE,PUNIT ;LINE NO.\r
SETZM TTYTAB(LINE) ;CLEAR TRANSLATOR TABLE\r
TYPL: TLNE LINE,PTYLIN\r
POPJ PDP, ;YES\r
PUSHJ PDP,PEVEN8 ;GENERATE CORRECT PARITY\r
- TLNE LINE,CTYLIN ;NO,CONSOLE TTY?\r
+ TLNN LINE,CTYLIN ;NO,CONSOLE TTY?\r
JRST SCNTYP ;TYPE CHAR.\r
CTYP: DATAO TTY,CHREC\r
DPB CHREC,PLASTC\r
POPJ PDP, ;YES.\r
MOVSI IOS,MLTTYL ;NO. OF TTY DDBS\r
MOVEI DEVDAT,TTYLST ;ADDRESS OF FIRST TTY DDB\r
- SKIPA TAC,[XWD TTYUSE+TTYATC,ASSPRG+ASSCON]\r
+ SKIPA TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG]\r
HLRZ DEVDAT,DEVSER(DEVDAT) ;CHAIN THRU DDBS\r
TDNE TAC,DEVMOD(DEVDAT) ;USE,ATTACH OR ASSIGN BITS ON?\r
AOBJN IOS,.-2 ;YES. DONE?\r
-FTHALT==-1\r
-TITLE SEGCON - HIGH SEGMENT CONTROL FOR REENTRANT USER PROGRAMMING V435\r
+TITLE SEGCON - HIGH SEGMENT CONTROL FOR REENTRANT USER PROGRAMMING V427\r
SUBTTL T. HASTINGS/TW/TNM/TH/AF/CHW/TW/RCC TS 22 DEC 69\r
-XP VSEGCN,434\r
+XP VSEGCN,427\r
;PUT VERSION NUMBER IN GLOB LISTING AND LOADER MAP\r
\r
;ALL OF THE CODE DEALING WITH THE SECOND RELOCATION REGISTER HAS BEEN ISOLATED\r
ASG3: AOBJN ITEM,ASG1 ;NO, KEEP LOOKING, FINISHED?\r
JUMPG ITEM,IPOPJ ;RETURN IF FINISHED AND RESTORE JOB NUMBER\r
TLZ ITEM,-1 ;CLEAR OUT LH BITS OF HIGH SEG NO.\r
- PUSHJ PDP,CLRNAM ;NOT FINISHED, CLEAR SEG NAME\r
+ PUSHJ PDP,CLRNM1 ;NOT FINISHED, CLEAR SEG NAME\r
;AND RETURN DISK SPACE IF NOT IN USE\r
JRST ASG3 ;CONTINUE SCAN, RESTORE TAC TO DEVICE NAME\r
\r
SKIPL JOBHCU(PROG) ;YES, IS A SSVE OR GET FOR EITHER SEG IN PROGRESS?\r
ANYSV1: SOJG ITEM,ANYSV0 ;NO, KEEP LOOKING, FINISHED?\r
JUMPLE ITEM,ANYSV2 ;YES, FIND A SAVE OR GET IN PROGRESS\r
- HRRZ TAC,JBTSGN(ITEM) ;NO, GET ITS HIGH NUMBER, IF ANY\r
- CAIE TAC,@(PDP) ;IS IT SAME AS HIGH SEG IN QUESTION?\r
+ HRRZ AC1,JBTSGN(ITEM) ;NO, GET ITS HIGH NUMBER, IF ANY\r
+ CAIE AC1,@(PDP) ;IS IT SAME AS HIGH SEG IN QUESTION?\r
; (INDIRECT AND INDEX BITS ALWAYS 0)\r
JRST ANYSV1 ;NO, KEEP LOOKING\r
PUSHJ PDP,ANYDEV ;YES, DOES THIS JOB HAVE\r
; ON A GET IF WE LEFT IT ON SWAPPING SPACE?\r
PUSHJ PDP,ZERSWP ;NO, NO NAME, SO DELETE DISK SPACE(IF ANY)\r
>\r
- MOVSI TAC,SNA ;FLAG HIGH SEG AS UNASSIGNED(OR DORMANT\r
+ MOVSI TAC,SNA!NSHF!NSWP! ;FLAG HIGH SEG AS UNASSIGNED(OR DORMANT\r
; IF STILL IN\r
; CORE OR DISK). TURN OFF NO SWAP AND NO SHUFFLE\r
; IN CASE ON BY ACCIDENT(SAVE NOT GO TO COMPLETION)\r
; RETURN ITEM,PROG PRESERVED\r
;CALLED FROM CLRNAM AND FRECOR\r
\r
- INTERN FTHALT\r
EXTERN CORTAL,JBTADR\r
\r
KDORCR: PUSH PDP,PROG ;SAVE R(EITHER HIGH OR LOW RELOC)\r
; (EVEN THOUGH THIS CALL TO CURHGH MAY BE FOR SOME\r
; OTHER JOB) SONCE HIGH SEG MAY BE IN NEW PLACE IN CORE\r
POP PDP,ITEM ;RESTORE HIGH SEG NUMBER AND RELOC FOR HIGH SEG IN CORE\r
- POPJ PDP, ;RETURN\r
+ JRST RPOG ;RETURN\r
\f;ROUTINE TO SEE IF SUM OF BOTH SEGMENTS WILL FIT INTO MAXIMUM SIZE\r
;OF PHYSICAL CORE TOGETHER\r
;CALL: MOVE TAC,REQUESTED LENGTH-1 OF SEG BEING ASSIGNED(LOW OR HIGH)\r
MOVEI TAC1,0 ;ASSUME NO HIGH SEG NUMBER\r
JUMPLE ITEM,SUM1 ;IS THERE NO HIGH SEG OR IS THIS A SPY SEG?\r
PUSHJ PDP,SEGSIZ ;TAC1=SIZE(IN J) OF HIGH OR LOW SEG\r
- ASH TAC1,12 ;CONVERT TO NUMBER OF WORDS(SEG NOT BEING ALLOCATED)\r
-SUM1: ADD TAC1,TAC ;ADD REQUEST(ORED 1777) TO LENGTH-1(OR 0) OF SEG NOT\r
+ LSH TAC1,12 ;CONVERT TO NUMBER OF WORDS(SEG NOT BEING ALLOCATED)\r
+SUM1: ADDI TAC1,(TAC) ;ADD REQUEST(ORED 1777) TO LENGTH-1(OR 0) OF SEG NOT\r
; BEING CHANGED\r
CAMGE TAC1,CORMAX ;WILL TOTAL SIZE-1 BE LESS THAN MAX SIZE\r
AOS -1(PDP) ;YES, OK RETURN\r
JUMPL ITEM,FREC2 ;YES, DID WE FIND A DORMANT OR IDLE SEG WITH CORE?\r
\r
\r
-IFE FTSWAP,<\r
- POP PDP,ITEM ;RESTORE JOB OR SEG. #\r
- JRST TPOPJ ;RESTORE CORE REQUEST AND RETURN\r
->\r
+;IFE FTSWAP,<\r
+; POP PDP,ITEM ;RESTORE JOB OR SEG. #\r
+; JRST TPOPJ ;RESTORE CORE REQUEST AND RETURN\r
+;>\r
\r
\r
-IFN FTSWAP,<\r
JSP DAT,OERROR ;NO, ERROR-CORTAB AND CORTAL DO NOT AGREE\r
; PRINT ON OPERATOR'S CONSOLE, DO NOT BLAME \r
; ANY PARTICULAR JOB\r
->\r
FREC2:\r
TLZ ITEM,-1 ;CLEAR OUT LH OF SEG NUMBER\r
IFN FTSWAP,<\r
\r
INTERN SETEXT\r
\r
-SETEXT: HRLZM TAC1,SGALOW(PROG) ;SAVE EXTENSION USER TYPED FOR LOW SEG\r
+SETEXT: HLLZM TAC1,SGALOW(PROG) ;SAVE EXTENSION USER TYPED FOR LOW SEG\r
MOVE TAC1,[SIXBIT /SHRHGH/] ;ASSUME SSAVE COMMAND(OR GET)\r
TLNE IOS,NSRBIT ;WAS IT?\r
MOVSS TAC1 ;NO, EXCHANGE ROLES OF EXTENSIONS, MUST\r
; BY CORE OR REMAP BY USER R)?\r
SKIPE USRDDT ;YES, IS USER USING DDT?\r
HRLM TAC1,JOBHRL(JDAT) ;YES, SET FIRST FREE TO BE FIRST WORD BEYOND END(REL)\r
- HLRZ TAC,JOBHRL(JDAT) ;GET CORRECT FIRST REL FREE LOC IN HIGH SEG\r
+ HLLZ TAC,JOBHRL(JDAT) ;GET CORRECT FIRST REL FREE LOC IN HIGH SEG\r
MOVNM TAC,SGALEN(PROG) ;SET LH=-NO. OF WORDS TO WRITE. RH=0\r
HLLOS SGALEN(PROG) ;SET RH=-1 IN CASE DECTAPE(USES RH TO COMPUT\r
; LENGTH=FIRST REL LOC-1\r
SETZM JOBDDT(JDAT) ;ALSO CLEAR DDT STARTING ADDRESS\r
SETZM USRDDT ;IN MONITOR PROTECTED AREA AS WELL AS JOBDAT\r
; IN CASE RETURN TO USER WITHOUT RESCHEDULING\r
- PUSHJ PDP,ADJCOR ;COMPUTE AMOUNT OF CORE FOR BOTH LO & HI SEGS\r
- ; FROM USER'S CORE ARG.(IF ANY)\r
- ; RETURNS WITH HI SEG # IN TAC\r
+ MOVE TAC,JBTSGN(ITEM)\r
HRRO TAC,JBTADR(TAC) ;ABSOLUTE ADDRESS OF HIGH SEG(LH=-1 FOR\r
; POPS SO NO PDL UNDERFLOW)\r
ADDI TAC,JOBPOP ;ADD POP OFFSET\r
; RETURN 1 - HIGH SEG OR FILE NOT FOUND\r
; RETURN 2 - HIGH SEG FOUND AND IN LOG ADR. SPACE(IN FACT ALSO IN CORE)\r
\r
- EXTERN NROOM1,DEVPHY,PJOBN,JOB,SGADAT,JOBPD1\r
+ EXTERN NROOM1,DEVPHY,PJOBN,JOB,SGADAT,sganew,JOBPD1\r
\r
GETSEG:\r
IFN FTDISK,<\r
MOVSI TAC1,SNA ;MAKE SURE THIS HIGH SEG IS FLAGGED AS IN USE\r
; IE SEG IN SOME USER'S LOG. ADR. SPACE\r
IORB TAC1,JBTSTS(ITEM) ;MAY HAVE BEEN JUST ASSIGNED OR DORMANT\r
+ PUSHJ PDP,INCCNT\r
+ JRST SETRL1\r
IFN FTSWAP,<\r
MOVE DAT,JBTSTS(TAC) ;JOB STATUS WORD\r
TLNN DAT,JXPN ;JOB WAITING TO EXPAND LOW OR HIGH SEG?\r
; OR WAITING TO EXPAND?\r
JRST SETRL0 ;YES, WAIT TILL HIGH SEG IN CORE TOO\r
>\r
-SHARE3: PUSHJ PDP,INCCNT ;NO, INCREMENT HIGH SEG IN-CORE COUNT FOR THIS\r
- ; JOB(TAC) IF NOT ALREADY INCREMENTED, RETURN\r
- ; WITH J = HIGH SEG NO.\r
-IFN FTHALT,<\r
- PUSHJ PDP,CHKTAL ;CHECK CORTAL WIT CORTAB, HALT IF DIFF.\r
->\r
- JRST SETRL1 ;SET HARD. AND SOFT. RELOC. AND SKIP RETURN\r
-\r
-SHRNRM: HRRZ TAC1,JOBPD1(JDAT) ;GET RETURN PC IN CASE THIS IS RUN UUO\r
- CAMLE TAC1,USRREL ;IS IT IN THE HIGH SEG WHICH IS NOW GONE ?\r
- HRRZS JOBPD1(JDAT) ;YES, TURN OFF USER MODE FLAG, SO ERROR\r
- ; WILL NOT LOOK FOR HALT AFTER UUO\r
- MOVE TAC,TAC1 ;SETUP NO. OF K NEEDED FOR MESSAGE\r
- JRST NROOM1 ;GO PRINT MONITOR MESSAGE AND STOP JOB\r
- ; OR ERROR RETURN TO LOW SEGMENT\r
- ; (UNLESS UUO HAS A HALT FOLLOWING IT)\r
\fSTONAM: MOVE DAT,JOB ;CURRENT JOB NUMBER\r
MOVSI ITEM,SHRSEG ;FLAG THIS USER AS USING A SHARABLE HIGH SEG\r
- IORB ITEM,JBTSGN(DSER) ;AND SETUP HIGH SEG NUMBER\r
+ IORB ITEM,JBTSGN(DAT) ;AND SETUP HIGH SEG NUMBER\r
MOVEM TAC,JBTDIR(ITEM) ;STORE DIRECTORY(OR PHY DEV NAM)>\r
MOVEM TAC1,JBTNAM(ITEM) ;STORE HIGH SEG FILENAME\r
MOVSI TAC,SHRSEG ;ALSO FLAG HIGH SEG ASSIGNED\r
SETRL1: AOS (PDP) ;SKIP RETURN(GETSEG,UCORHI,UREMAP)\r
JRST SETREL ;SET HARDWARE AND SOFTWARE RELOC INFO\r
; FOR CURENT JOB AND RESTORE R AND J\r
-\r
-;ROUTINE TO ADJUST USER'S CORE ARG. IN GET,R,RUN OR SAVE COMMANDS SO THAT\r
-; THE ARG. SUPPLIED IS THE TOTAL OF BOTH THE LO & HI SEGS. IF THERE IS NO\r
-; HI SEG THEN ARG. IS THE LO SEG SIZE AS IN NON-REENTRANT SYSTEMS.\r
-; IF THERE ARE BOTH LO & HI SEGS AND THE ARG. IS LESS THAN THE HI SEG + 1K\r
-; MANDATORY LO SEG SIZE THEN THE CORE ALLOCATION IS UNCHANGED.\r
-\r
-;CALL MOVE PROG,ADR. OF JOB DATA AREA\r
-; MOVE ITEM,JOB NO.\r
-; PUSHJ PDP,ADJCOR\r
-; ALWAYS RETURN WITH TAC=HI SEG #,TAC1 & U DESTROYED\r
-\r
-INTERN ADJCOR\r
-EXTERN SGANEW\r
-\r
-ADJCOR: SKIPN TAC,JBTSGN(ITEM) ;IS THERE A HI SEG ?\r
- POPJ PDP, ;EVIDENTLY NOT\r
- HLRZ TAC1,JBTADR(TAC) ;GET ITS SIZE\r
- SKIPE DAT,SGANEW(JDAT) ;WAS AN ARG. TYPED OF 0 OR NOT AT ALL ?\r
- SUBI DAT,1(TAC1) ;NO - COMPUTE LO SEG SIZE\r
- SKIPLE DAT ;MUST BE 1K OR GREATER!\r
- MOVEM DAT,SGANEW(PROG) ;STORE IT\r
- POPJ PDP, ;RETURN\r
-\f ; TO LOW SEG RELOC AND JOB NUMBER\r
-;TRY TO READ IN NON-SHARABLE FILE WITH EXTENSION .HGH\r
+ ; TO LOW SEG RELOC AND JOB NUMBER\r
+; skipn dat,jbtsgn(item)\r
+; popj pdp,\r
+; hlrz tac1,jbtadr(dat)\r
+; skipe dat,SGAnew(prog)\r
+; subi dat,1(tac1)\r
+; skiple dat\r
+; movem dat,SGAnew(tac1)\r
+; popj pdp,\r
+\f;TRY TO READ IN NON-SHARABLE FILE WITH EXTENSION .HGH\r
\r
TRYHGH: MOVSI TAC,(SIXBIT /HGH/) ;TRY LOOKUP WITH EXTENSION .HGH\r
PUSHJ PDP,SGH1 ;SET EXT AND E+3 OF LOOKUP BLOCK\r
J=ITEM ;CONTAINS JOB OR HIGH SEG NUMBER(SAME AC AS SWAP USES)\r
\r
IFN FTSWAP,<\r
- INTERN FININ\r
EXTERN JOBMAX,JBTSGN,SWPIN,JBTSTS,CPOPJ1,ZERSWP\r
- EXTERN IMGOUT,JBTSWP,FXSAT\r
-\r
-FININ: CAILE J,JOBMAX ;WAS A LOW SEG JUST SWAPPED IN?\r
- JRST FINHGH ;NO, HIGH SEG JUST SWAPPED IN, GO FINISH\r
- MOVEM J,SWPIN ;YES, SAVE JOB NUMBER(FOR FINHGH AND RETURN)\r
- SKIPG J,JBTSGN(J) ;DOES JOB HAVE A REAL HIGH SEG?\r
- JRST BOTHIN ;NO, GIVE NOTHING TO DO RETURN(MAYBE SPYSEG)\r
- SKIPN JBTADR(J) ;YES, IS HIGH SEG ALREADY IN CORE?\r
- ;(NOT POSSIBLE TO BE IN MIDDLE OF SWAPPING)\r
- POPJ PDP, ;NO, GIVE "SWAP-IN-HIGH-SEG" RETURN,\r
- ; AC J SET TO HIGH SEG NO.\r
- PUSHJ PDP,CHKIDL ;YES, CHECK IF THIS HIGH SEG IS IDLE(IF YES,\r
- ; DECREASE CORTAL=FREE+DORMANT+IDLE CORE\r
- ; BY SIZE IN J OF HIGH SEG SINCE IT WILL\r
- ; NO LONGER BE IDLE(IN CORE COUNT NON-ZERO)\r
-\r
- MOVE TAC,SWPIN ;RESTORE JOB NUMBER\r
- PUSHJ PDP,INCCNT ;INCREMENT HIGH SEG IN CORE COUNT\r
- ; FOR THIS JOB\r
-IFN FTHALT,<\r
- PUSHJ PDP,CHKTAL ;CHECK CORTAL WITH CORTAB, HALT IF DIFFER\r
->\r
-FINHGH: MOVSI TAC,SWP ;CLEAR SWAPPED OUT OR ON WAY FLAG FOR HIGH SEG\r
+\r
+FINHGH: MOVE J,SEGPTR\r
+ MOVSI TAC,SWP ;CLEAR SWAPPED OUT OR ON WAY FLAG FOR HIGH SEG\r
ANDCAM TAC,JBTSTS(J) ;AND CLEAR SUPPRESS IN-CORE COUNT INCREMENT FLAG\r
+ AOBJN J,SEGINI+2\r
+ POPJ PDP,\r
\r
TLNE J,UWPOFF ;IS USER MODE WRITE PROTECT(UWP) OFF\r
; FOR THIS USER?\r
\r
SRCSEG: MOVE ITEM,SEGPTR ;POINTER TO JUST HIGH SEGMENTS IN JOB TABLES\r
FNDLOP: CAMN TAC1,JBTNAM(ITEM) ;DO FILE NAMES MATCH?\r
- CAME TAC,PRJPRG(ITEM) ;YES, DO DIRECTORY NAMES MATCH?\r
+ CAME TAC,JBTDIR(ITEM) ;YES, DO DIRECTORY NAMES MATCH?\r
AOBJN ITEM,FNDLOP ;NO, KEEP LOOKING,FINISHED?\r
JUMPGE ITEM,CPOPJ ;YES, FINISHED?(IF YES, GIVE NOT FOUND RETURN)\r
HRLI ITEM,SHRSEG ;YES, THIS MUST BE A MATCH(FLAG SEG AS SHARABLE)\r
-TITLE SYSINI - SYSTEM INITIALIZATION AND RESTART\r
-SUBTTL TH/GH TS 11 NOV 68 V006\r
-XP VSYSII,006\r
+TITLE SYSINI - SYSTEM INITIALIZATION AND RESTART - V405\r
+SUBTTL TH/RCC/TL/AF TS 19 DEC 69\r
+XP VSYSII,405\r
;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP\r
\r
EXTERNAL APRCHN,ERROR\r
JSR1: JSR ONCE ;DO ONCE ONLY CODE ONCE\r
JSR2: JSR LINKSR ;LINK IO SERVICE ROUTINES\r
MOVS TAC,.+1\r
- SETZM SYSBEG\r
+ SETZB AC1,SYSBEG\r
MOVSM TAC,JSR1 ;CLEAR SYSTEM DATA STORAGE\r
MOVSM TAC,JSR2\r
HRRI TAC,SYSBG1 ;CLEAR SYSTEM DATA STORAGE\r
BLT TAC,SYSEND\r
+ MOVE TAC,[XWD 62,63] ;CLEAR SYSTEM PDL'S, ETC., ABOVE\r
+ SETZM 62 ; TRAP LOCATIONS\r
+ BLT TAC,137 ; AND UP TO BASE OF COMMON\r
MOVSI TAC, DVDIRIN+TTYATC+TTYUSE\r
HRRI TAC,ASSCON+ASSPRG\r
HLRZ DEVDAT,DEVLST ;SCAN ALL DEVICES\r
; IF NOT CONTIGUOUS, BANKS ABOVE FIRST NON-EXISTENT ONE ARE IGNORED\r
EXTERN USRLIM\r
MOVEI TAC,CORBLK ;NO. OF BIT BYTES IN CORTAB\r
-CORLIM: MOVEI AC1,USRLIM ;LIMIT OF NO. OF K AVAIL. TO ASINGLE USER\r
- ; RH PATCHED BY ONCE ONLY CODE\r
-\r
MOVE JDAT,COREP ;1 BIT BYTE POINTER TO FIRST K-1\r
CONO APR,NXM ;CLEAR NON EX MEM ONCE\r
-IFN FTSWAP,<\r
MOVEI UUO,2000 ;CORE SIZE INCREMENT TO UPDATE CORMAX\r
->\r
SYS2: IBP JDAT ;MOVE BYTE POINTER UP BY 1K\r
HLLO DAT,(TAC1) ;REFERENCE MEMORY, SET RH OF DAT TO 1\r
CAML TAC1,SYSSIZ ;STILL IN MONITOR(FIRST LOC NOT USED BY MON)?\r
JRST SYS3 ;YES, GO STORE 1 BIT IN CORTAB INDICATING\r
; 1K NOT AVAILABLE\r
MOVEM JDAT,CORLST ;NO, SET LAST AVAILABLE BLOCK EVEN HIGHER\r
- CAML AC1,CORTAL ;MAX RESTRICTED BY ONCE ONLY CODE?\r
- JRST SYS4 ;400 MEANS OPERATOR DIDN'T SPECIFY ANY\r
-IFN FTSWAP,<\r
+CORLIM: CAIGE AC1,USRLIM ;USRLIM=MAX. CORE AVAILABLE TO A SINGLE\r
+ ; USER AS DEFINED BY BUILD AND MODIFIED BY ONCE\r
+ ; REACHED MAX YET FOR SIGIN USER?\r
EXTERN CORMAX\r
ADDM UUO,CORMAX ;INCREASE MAX SIZE CORE AVAIL. TO A USER\r
->\r
-SYS4: AOSA CORTAL ;INCREMENT NO. OF FREE 1K BLOCKS\r
+SYS4: AOSA AC1,CORTAL ;INCREMENT NO. OF FREE 1K BLOCKS\r
; AND LEAVE 0 BIT IN CORTAB TO FLAG IT AS FREE\r
SYS3: DPB DAT,JDAT ;YES, FLAG THIS 1K AS NOT AVAILABLE(1 BIT IN CORATB)\r
ADDI TAC1,2000 ;INCREMENT MEMORY REF\r
MOVEI PDP,SYSPDL ;RECLAIM MONITOR CORE (SIZE OF MONITOR INCREASED\r
PUSHJ PDP,ACCINI ;AT ONCE ONLY TIME) USED BY DISK DEVICE DATA BLOCKS\r
; (IF THIS IS RESTART)\r
- MOVE TAC,CORTAL ;THESE 3 INSTR. TEMPORARY UNTIL ACCINI\r
- LSH TAC,12 ;IS REWRITTEN\r
- MOVEM TAC, CORMAX ;AND MOST OF ITS WORK PUT IN ONCE ONLY TIME\r
>\r
MOVEI 1,IOGO\r
HRRM 1,SYSDSP ;FALL INTO IOGO\r
\r
INTERNAL IOGO,FT2REL\r
EXTERNAL DEVLST, MJOBN, JBTADR,JBTSTS,CLKINI,NXTINI\r
- EXTERNAL SYSPDL,JOBMAX,CLRJOB,APRRST,JOBADR\r
+ EXTERNAL SYSPDL,JOBMAX,CLRJOB,APRRST,JOBADR,CRSHWD,IADPTR\r
\r
\r
IOGO: CONO APR,APRRST ;APR RESET (IO RESET)\r
- CONO PI,611577 ;CLEAR PI SYSTEM (AND MEM PARITY AND POWER FAIL)\r
- HLRZ TAC, DEVLST ;CHAIN OF DEVICE DATA BLOKS\r
+ CONO PI,211577 ;CLEAR PI SYSTEM (AND MEM PARITY AND POWER FAIL)\r
+ SETZM CRSHWD\r
+ HLRZ DEVDAT, DEVLST ;CHAIN OF DEVICE DATA BLOKS\r
IOG0: MOVEI TAC1,ASSPRG ;CLEAR ASSIGNED BY PROGRAM BIT\r
- ANDCAB TAC1,DEVMOD(TAC)\r
+ ANDCAB TAC1,DEVMOD(DEVDAT)\r
HRLOI ITEM,77 ;DO NOT CLEAR HUNG DEVICE COUNT SETTING\r
TRNE TAC1,ASSCON ;ASSIGNED BY CONSOLE?\r
TLO ITEM,770000 ;YES, DO NOT CLEAR JOB NO.\r
- ANDM ITEM,DEVCHR(TAC) ;CLEAR HUNG DEVICE COUNT.\r
- SETZM DEVIOS(TAC) ;CLEAR IO STATUS WORD\r
- SETZM DEVBUF(TAC) ;CLEAR BUFFER ADDRESSES\r
- HLRZ TAC, DEVSER(TAC)\r
- JUMPN TAC, IOG0\r
+ ANDM ITEM,DEVCHR(DEVDAT) ;CLEAR HUNG DEVICE COUNT.\r
+ SETZM DEVIOS(DEVDAT) ;CLEAR IO STATUS WORD\r
+ SETZB DAT,DEVBUF(DEVDAT) ;CLEAR BUFFER ADDRESSES\r
+ TLNE TAC1,DVDTA ;IS THIS A DECTAPE?\r
+ DPB DAT,IADPTR ;YES, SET NO. OF USER CHANNELS INITED\r
+ ; ON THIS DEVICE TO 0\r
+ HLRZ DEVDAT, DEVSER(DEVDAT)\r
+ JUMPN DEVDAT, IOG0\r
MOVEI PDP,SYSPDL ;REUSABLE SPACE(SEE IOINI1)\r
PUSHJ PDP,NXTINI ;ALWAYS INITILIZE SCHEDULER FIST\r
;SO DEVICES MAY RESET QUEUES IF DESIRED\r
HLRZ AC3,DEVLST ;ADDR OF FIRST DDB\r
SETZM SAVITM\r
-IOG01: MOVE AC3,DEVSER(AC3)\r
+IOG01: MOVE DEVDAT,AC3\r
+ MOVE AC3,DEVSER(AC3)\r
HRRZ TAC,AC3\r
CAIE TAC,@SAVITM ;SAME DEVICE\r
PUSHJ PDP,DINI(AC3) ;NO. INITIALIZE IT.\r
-\r
TITLE UUOCON - UUO HANDLER AND UUO+IO ROUTINES - V434\r
SUBTTL /RCC TS 03 JUN 69\r
XP VUUOCN,434 ;THIS MACRO PUTS VERSION NO. IN STORAGE MAP AND GLOB\r