: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