:ST,S,$TC14,5 
ASMB,L,C
      NAM CNFIG,6 
      HED ***TCS UTILITIES (CNFIG) - 9/74***
      ENT CNFIG 
      ENT CNFGX                                REVB 
      EXT .ENTR 
      EXT EXEC                         REVB 
*     CONFIGURATION SUBROUTINE (REV B)
*     REV B SUPPORTS MULTIPLE LOGICAL DRIVE*S,AS SPECIFIED
*           BY THE CONFIGURATION TABLE. 
*         PROVIDES AN ADDITIONAL ENTRY POINT
*         FOR SPECIFYING AN ARRAY TO HOLD THE 
*         ADDRESS OF THE EQT EXTENSIONS.
*         THE NEW ENTRY POINT CNFGX MUST BE 
*         CALLED PRIOR TO CALLING CNFIG 
* 
*     CALLING SEQUENCE
*     JSB CNFGX                                REVB 
*     DEF *+2                                  REVB 
*     DEF EQTX      ADDRESS OF ARRAY           REVB 
* 
*     JSB CNFIG 
*     DEF *+2 
*     DEF TBL       CONFIGURATION TABLE 
*     DEF LUT       LOGICAL UNIT TABLE
*     DEF CNT       COUNT OF LU'S INITIALIZED 
* 
XTBL  NOP                                      REVB 
CNFGX EQU *                                    REVB 
      NOP                                      REVB 
      JSB .ENTR                                REVB 
      DEF XTBL                                 REVB 
      CLA                                      REVB 
      STA XON       ENABLE LOGGING EXT'S       REVB 
      JMP CNFGX,I                              REVB 
TBL   NOP 
LUT   NOP 
CNT   NOP 
CNFIG NOP 
      JSB .ENTR 
      DEF TBL 
      LDA MDFLG                        REVB 
      STA SAVE      SAVE PRIVILEGED MODE REVB 
      CLA                              REVB 
      JSB STOR      CLR FLAGS DURING CNFIGREVB
      CLA 
      STA CNT,I     CLEAR COUNT 
      LDA TBL 
      STA PQD       USE CONFIGURATION AS Q COUNTER
      LDA TBL,I 
      SZA,RSS       TCS 
      JMP CNFG2     NO
      STA TCS1      YES-SET JSB TCS 
      STA TCS2
      STA TCS3
      STA MTO1
      ISZ TBL 
      LDA TBL,I     GET PENDING Q ADDRESS 
      STA PQ
      ISZ TBL 
      LDA TBL       GET PENDING Q LENGTH
      STA PQL 
      ISZ TBL 
      LDA TBL,I     GET SEGMENT ARRAY 
      STA SG
      ISZ TBL 
      LDA TBL       GET # OF SEGMENTS 
      STA SGL 
      ISZ TBL 
      LDA TBL,I     GET SEGMENT DIRECTORY 
      STA DR
      ISZ TBL 
TCS1  JSB *         JSB TCS 
      DEF *+8 
      DEF P82$
PQ    DEF * 
PQL   DEF * 
PQD   DEF * 
SG    DEF * 
SGL   DEF * 
DR    DEF * 
      LDA TBL,I 
      ISZ TBL 
      SZA,RSS       MTO FILE DIRECTORY? 
      JMP TCS3      NO
      LDA TBL       YEES-SET ADDRESS OF FILE DIRECTORY
      STA FILDR 
      ADA =D-1      FORM ADDR OF NUMBER OF FILES
      STA FIL#
      LDA TBL,I     RESET TABLE POINTER 
      STA TBL 
MTO1  EQU * 
      JSB * 
      DEF *+4 
      DEF P31$
FIL#  DEF * 
FILDR DEF * 
TCS3  EQU * 
      JSB * 
      DEF *+6 
      DEF P79$      STATUS CALL 
      DEF STAT
      DEF IPAR
      DEF ILUN
      DEF LOG 
      LDA STAT
      SZA,RSS       GOOD STATUS 
      JMP CNFG3     YES 
      CLA           NO
      STA CNFG7    NOP FURTHER TCS CALLS
CNFG3 EQU * 
      LDA TBL,I 
      SZA,RSS       FILES TO OPEN 
      JMP CNFG4     NO
      LDA TBL       YES 
      STA FNAM      SET FILE NAME 
      ADA =D3 
      STA FNUM      SET FILE #
      ADA =D1 
      STA TBL 
CNFG7 JMP *+2 
      JMP CNFG3 
TCS2  JSB *         JSB TCS 
      DEF *+4 
      DEF P84$
FNAM  DEF * 
FNUM  DEF * 
      JMP TCS3
P31$  DEC 31
CNFG4 EQU * 
      ISZ TBL 
      LDA TBL,I 
      STA TBL 
      JMP CNFG1 
CNFG2 EQU * 
      ISZ TBL 
      JMP CNFG1 
CNFG1 EQU * 
      LDA TBL,I 
      SZA,RSS       END OF TABLE
      JMP SLCI      YES-CHECK FOR SLC          REVB 
      SSA           NON PRIVILEGED
      JMP CNFG5     YES 
      LDB TBL       NO
      ADA TBL 
      STA TBL       UPDATE POINTER
      STB EXT       SAVE EXTENSION ADDRESS
      STB BASE                                 REVB 
      INB 
      LDA B,I       GET PARAMETER WORD
      STA X         "BBATLL"
      AND =B77
      STA LU        SET LU
      LDA X 
      ALF,ALF 
      RAR 
      AND =B177 
      STA LINE      SET LINE "BBA"
      INB 
      LDA B,I 
      STA HXXXX 
      INB                               REVB
      LDA B,I       PICK UP JSB ATDXX   REVB
      INB                    REVB 
      LDB B,I      GGET TYPE REVB 
      BLF,BLF                REVB 
      STB TYPE               REVB 
      STA *+1                           REVB
      JSB *         CALL LOGICAL DRIVER REVB
      DEF *+5 
      DEF LU
HXXXX NOP 
      DEF LINE
EXT   NOP 
      SZA 
      JMP CNFG1 
CNFG6 EQU * 
      JSB LOG       SAVE LU+EXT ADDRESS        REVB 
      JMP CNFG1 
CNFG5 EQU * 
      STA LU        SAVE NEGATIVE LU
      ISZ TBL       BUMP POINTER
      CLA                                      REVB 
      STA BASE                                 REVB 
      STA TYPE                                 REVB 
      JMP CNFG6 
LOG   NOP                                      REVB 
      LDA LU
      ADA TYPE                                 REVB 
      STA LUT,I 
      ISZ LUT 
      ISZ CNT,I 
      NOP 
      LDA BASE                                 REVB 
XON   JMP *+3       CHG TO NOP TO ENABLE LOG   REVB 
      STA XTBL,I                               REVB 
      ISZ XTBL                                 REVB 
      JMP LOG,I                                REVB 
SLCI  EQU *                                    REVB 
      ISZ TBL                                  REVB 
      LDA TBL,I                                REVB 
      SZA,RSS       SLC USED?                  REVB 
      JMP RTRN                         REVB 
      STA SLCL      YES-SAVE JSB SLC           REVB 
      LDA =B1000   INDICAT TYPEVB 
      STA TYPE     #2        REVB 
      ISZ TBL                                  REVB 
SLC1  EQU *                                    REVB 
      LDA TBL,I                                REVB 
      SZA,RSS       END OF LIST?               REVB 
      JMP RTRN                         REVB 
      LDB TBL                                  REVB 
      ADA TBL                                  REVB 
      STA TBL       MOVE TO NEXT ENTRY         REVB 
      STB BASE      SAVE EXT ADDR              REVB 
      STB SLCB      SAVE EXT ADDR              REVB 
      ADB =D4                                  REVB 
      LDA B,I       PICKUP LU                  REVB 
      STA LU                                   REVB 
SLCL  JSB *         JSB L                      REVB 
      DEF *+3                                  REVB 
      DEF LU                                   REVB 
SLCB  DEF *         DEF EXT                    REVB 
      SZA,RSS       OK?                        REVB 
      JSB LOG       YES                        REVB 
      JMP SLC1      CONTINUE                   REVB 
TYPE  NOP                                      REVB 
BASE  NOP                                      REVB 
RTRN  EQU *                            REVB 
      LDA SAVE                         REVB 
      JSB STOR      RESTORE MDFLG      REVB 
      JMP CNFIG,I                      REVB 
* 
STOR  NOP                              REVB 
      LDB MFLAG                        REVB 
      JSB EXEC                         REVB 
      DEF *+2                          REVB 
      DEF N19$                         REVB 
      JMP STOR,I                       REVB 
N19$  DEC -19                          REVB 
MDFLG EQU 133B                         REVB 
MFLAG DEF MDFLG                        REVB 
SAVE  NOP                              REVB 
* 
A     EQU 0 
B     EQU 1 
LU    NOP 
LINE  NOP 
X     NOP 
P84$  DEC 84
P82$  DEC 82
P79$  DEC 79
STAT  NOP 
IPAR  NOP 
ILUN  NOP 
      END 
::
:ST,S,$TC15,5 
ASMB,L,C
      NAM LOGIN,7 
      HED ***TCS UTILITIES (LOGIN) - 9/74***
      ENT LOGIN 
      EXT .ENTR,EXEC
      EXT .LOGA,.LOGP,.PRR,TCS
      EXT .STAT 
* 
* CONDITIONAL COMMON FOR IMAGE/2100 
* 
      IFZ 
      COM IMAG1(1024),IMAG2(1),IMAG3(1175),IMAG4(128) 
      XIF 
      COM ISTAT,IPAR
********************************************************************
* 
* INITIALIZE LOGGING
*     JSB LOGIN 
*     DEF *+2 
*     DEF LU
********************************************************************
LGLU  OCT 0 
LOGIN NOP 
      JSB .ENTR     /GET LOG DEVICE LU# 
      DEF LGLU
      LDA LGLU,I
      STA LGLU
* 
      JSB EXEC      /OUTPUT PROMPT FOR ID 
      DEF *+5 
      DEF P02$
      DEF P01$
.FD   DEF FD
      DEF P20$
* 
      JSB EXEC      /INPUT LOG TAPE ID
      DEF *+5 
      DEF P01$
      DEF RCW 
      DEF HEAD
      DEF P05$
* 
      LDA LOGP      /SET ADDR FD ENTRY ROUTINE
      STA .LOGP 
      LDA LOGA      /SET LOGGING ROUTINE ADDR 
      STA .LOGA 
      JMP LOGIN,I   /RETURN 
      SKP 
****************************************************
* 
* LOGP - SET FILE NAME
* 
****************************************************
LOGP  DEF LOGP1 
LOGP1 NOP 
      STB TEM1      /SAVE ADDR OF FILE NAME 
      ADA N01$      /COMPUTE ENTRY ADDR 
      MPY P03$
      ADA .FD 
      STA B 
      LDA TEM1,I    /SET FILE NAME (3 WORDS)
      STA B,I 
      INB 
      ISZ TEM1
      LDA TEM1,I
      STA B,I 
      INB 
      ISZ TEM1
      LDA TEM1,I
      AND LBYT$ 
      IOR CUDSC     /SET UD SBCHN,RBYTE,3RD WORD
      STA B,I 
      JMP LOGP1,I   /RETURN 
      SKP 
****************************************************
* 
* THIS ROUTINE FORMATS THE LOGGING HEADER 
* AND OUTPUTS IT AND THE USER DATA TO THE 
* LOGGING  DEVICE 
* 
****************************************************
C     OCT 0         FILE #
D     OCT 0         REL SECT #
E     OCT 0         BUFFER ADDR 
F     OCT 0         BUFFER LENGTH 
G     OCT 0         LOCK
LOG   NOP 
      JSB .ENTR     GET PARAMS
      DEF C 
      CCA 
      STA G,I       SET LOCK. 
* 
      LDA C,I       GET FILE #
      ADA N01$
      MPY P03$      CALCULATE FILE NAME 
      ADA .FD       POSITION IN FILE TABLE
* 
      LDB A,I 
      STB FNAME      MOVE FILE
      INA              NAME AND 
      LDB A,I           USER DISC 
      STB FNAME+1        SUBCHANNEL 
      INA                 INTO HEADER 
      LDB A,I              BLOCK
      STB FNAME+2 
* 
      LDB 104B       SET TIME IN
      STB TIME
      LDB 105B        HEADER BUFFER 
      STB TIME+1
* 
* 
      LDB D,I       SET REL SECTOR
      STB SECT       IN HEADER BUFFER 
* 
      LDB F,I       SET BUFFER LENGTH IN
      STB LENG        HEADER BUFFER 
* 
* NOW MAKE CALLS TO WRITE HEADER AND DATA 
* 
LOG1  EQU * 
      JSB TCS 
      DEF *+6 
      DEF P02$
      DEF LGLU      WRITE HEADER
      DEF HEAD
      DEF P13$
      DEF IPAR
      JSB TEOT      END OF TAPE?
      JMP LOG1      YES, DO IT AGAIN. 
* 
LOG2  EQU * 
      JSB TCS 
      DEF *+6 
      DEF P02$
      DEF LGLU      WRITE USER DATA BUFFER
      DEF E,I 
      DEF F,I 
      DEF IPAR
      JSB TEOT      END OF TAPE?
      JMP LOG2      YES.
* 
      CLA           NO, RETURN. 
      STA G,I       CLEAR LOCK. 
      JMP LOG,I 
      SKP 
****************************************************
* TEOT - AT END OF TAPE ON LOG DEVICE:
*         1. BACKSPACE RECORD 
*         2. WRITE EXTENDED FILE GAP
*         3. REWIND/OFFLINE 
*         4. OUTPUT MESSAGE TO OPERATOR 
*         5. WAIT IN DYNAMIC STATUS LOOP TILL 
*             DEVICE GOES ON-LINE 
* 
* EXIT: P+2 - NO END OF TAPE
*       P+1 - END OF TAPE AND DEVICE IS BACK
* 
****************************************************
* 
TEOT  NOP 
      JSB .STAT     GET TCS STATUS. 
      LDA ISTAT 
      AND =B40
      SZA,RSS       END OF TAPE?
      JMP RET2      NO, RETURN P+2
* 
      LDA LGLU
      AND M77$      GET LOG DEVICE LU#. 
      STA LLU 
      IOR =B200 
      STA LLUC
      JSB TTCS      BACKSPACE 
      LDA LLU 
      IOR =B1200
      STA LLUC
      JSB TTCS      FILE GAP
      LDA LLU 
      IOR =B500 
      STA LLUC
      JSB TTCS      REWIND/STANDBY
* 
* INFORM OPERATOR 
* 
      JSB EXEC
      DEF *+5 
      DEF P02$
      DEF P01$
      DEF MTPE
      DEF P18$
* 
* PAUSE TILL DEVICE ON-LINE 
* 
      LDA LLU 
      IOR =B600 
      STA LLUC
LOG3  JSB TTCS      DYNAMIC STATUS
      JSB .STAT     GET TCS STATUS
      LDA ISTAT 
      SLA           ON-LINE?
      JMP LOG3      NO
      JMP RET1      YES,RETURN
* 
RET2  ISZ TEOT
RET1  JMP TEOT,I
* 
* TCS CONTROL REQUEST 
* 
TTCS  NOP 
      JSB TCS 
      DEF *+4 
      DEF P03$
      DEF LLUC
      DEF IPAR
      JMP TTCS,I
      SKP 
****************************************************
* 
* MESSAGES, TABLES, CONSTANTS 
* 
****************************************************
* 
A     EQU 0 
B     EQU 1 
N01$  EQU 52B 
P01$  EQU 54B 
P02$  EQU 55B 
P03$  EQU 56B 
P05$  EQU 60B 
P06$  EQU 61B 
P13$  DEC 13
P15$  EQU 70B 
P18$  DEC 18
P20$  DEC 20
P53$  DEC 53
M77$  EQU 72B 
LBYT$ EQU 75B 
CUDSC EQU 161B
RCW   OCT 401 
TEM1  OCT 0 
LOGA  DEF LOG 
LLUC  OCT 0 
LLU   OCT 0 
MTPE  ASC 18,MOUNT NEXT LOG TAPE-PUT UNIT ONLINE
* 
* FILE DIRECTORY (NAMES)
* 
FD    ASC 20,ENTER LOG TAPE IDENTIFIER(10 CHARS MAX)
      BSS 28
* 
* LOGGING HEADER
* 
HEAD  ASC 5,
TIME  BSS 2 
      DEC 15
FNAME ASC 3,
SECT  BSS 1 
LENG  BSS 1 
      END 
::
:CO MOUNT TAPE #10, TYPE :GO
:PA 
                                                                                                                                                                                                                                