IDENT TFM,TFM PERIPH J BASE MIXED SST PUCW TITLE TFM - TAPE FILE MANAGER. *COMMENT TFM - TAPE FILE MANAGER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TFM SPACE 4,10 ***** TFM - TAPE FILE MANAGER. * * J.P. MOORE. 81/04/01. SPACE 4 ***** *TFM* HAS SUPERVISORY CONTROL OVER THE TMS TAPE CATALOGS, * AND DIRECTS PROCESSING OF TAPE ASSIGNMENTS AND FINAL * DISPOSITION. IT ACCEPTS PROCESSING REQUESTS FROM * RESEX, MAGNET, TFSP AND THE TMS COMMAND * PROCESSOR, TFILES. TFM INTERFACES WITH THE EXTERNAL * REQUESTS THROUGH FETS, AND MAGNETS UNIT DESCRIPTOR TABLE * (UDT). * * TFM IS A GENERAL PURPOSE FUNCTION PROCESSOR FOR THE TAPE * FILE MANAGER. TO ADD A NEW FUNCTION TO *TFM* AN * ENTRY IS MADE IN THE FUNCTION TABLE THAT POINTS TO THE * APPROPRIATE SET OF CODE. THE FUNCTION TABLE IS NOT ORDER * DEPENDENT. OVERLAYS ARE AUTOMATICALLY DEFINED BY THE OVERLAY * MACRO AND THE FUNCTIONS ENTRY POINT BY THE ENTRY MACRO. * NORMAL RETURN FROM A FUNCTION IS THROUGH A RETURN JUMP * FROM THE MAIN LOOP. ABNORMAL RETURN IS THROUGH THE ERROR * PROCESSING OVERLAY. * * TFM IS A NON-DEDICATED FUNCTION PROCESSOR. ALL TFM * REQUESTS ARE VALIDATED AGAINST CRITERIA WHICH IS * UNIQUE TO THE FUNCTION BEING CALLED. IF THIS CRITERIA * IS NOT MET, THE CALLING PROGRAM WILL BE ABORTED AS * A *TFM INCORRECT REQUEST.*. * * TFM IS THE ONLY PROGRAM WHICH HAS DIRECT ACCESS TO THE * TAPE FILE CATALOGS. CREATION, UPDATE, AND INQUIRY * REQUESTS ARE MADE TO TFM, AND ANY RETURNS ARE MADE * THROUGH FETS, BUFFERS, AND/OR THE UDT TABLE IN * MAGNET. * * THE TAPE FILE MANAGER CONSISTS OF FIVE MAIN AREAS * WHICH ARE STRUCTURED TO MAKE OPTIMAL USE OF AVAILABLE * PPU MEMORY AND FOR EASE OF MAINTENANCE. THESE ARE- * * 1. RESIDENT ROUTINES. * 2. OVERLAYABLE PRESET. * 3. PROCESSING OVERLAYS. * 4. CONDITIONALLY ASSEMBLED SUBROUTINES. * 5. I/O BUFFER AREAS. * * * RESIDENT ROUTINES CONSIST OF THE MAIN LOOP AND * SUBROUTINES WHICH ARE LOADED WITH THE PRIMARY * LOAD AND ARE NOT OVERLAYED AT ANY TIME. THESE * ROUTINES CAN BE USED BY ALL SUBORDINATE SUB- * ROUTINES AND OVERLAYS. * * OVERLAYABLE PRESET CONSISTS OF THE RA+1 REQUEST * PROCESSORS, RESIDENT SUBFUNCTION PROCESSORS, * OVERLAYABLE SUBROUTINES, PRESET, AND PRESET SUB- * ROUTINES. THIS CODE IS ARRANGED IN SECTIONS, * DEFINED BY THE OVERLAY LOAD ADDRESS. THE RESIDENT * SUBFUNCTION PROCESSORS DO NOT REQUIRE A OVERLAY * LOAD TO NORMALLY COMPLETE, BUT ERROR CONDITIONS * WILL CAUSE PART OF THIS CODE TO BE OVERLAYED BY * THE ERROR PROCESSOR. * * PROCESSING OVERLAYS ARE THE SUBFUNCTION PROCESSORS * WHICH ARE NOT AVAILABLE IN THE PRIMARY LOAD. THESE * OVERLAYS ARE AUTOMATICALLY GENERATED BY THE OVERLAY * MACRO AND ARE QUALIFIED BY THE THREE CHARACTER * OVERLAY NAME. EACH OVERLAY CAN DEFINE DIRECT CELLS * S1 - S3+4 FOR ITS OWN PURPOSES, AS THESE CELLS ARE * NOT USED BY ANY OTHER ROUTINES. * * CONDITIONALLY ASSEMBLED SUBROUTINES ARE CONTAINED * IN *COMPTFM*. THIS IS A COLLECTION OF SUBROUTINES * THAT OVERLAYABLE PRESET OR ANY OVERLAY CAN USE. * ONLY THE SUBROUTINES REQUESTED BY DEFINING XXX$ * (XXX = SUBROUTINE NAME) WILL BE ASSEMBLED. BY * DEFAULT THE LISTING OF THIS COMMON DECK IS TURNED * OFF. TO OBTAIN A ASSEMBLED LIST OF *COMPTFM* * DEFINE LST$. * * THERE ARE THREE I/O BUFFERS DEFINED. IN SOME CASES * THEY ARE OVERLAYED BUT IN GENERAL EXTREME CARE MUST * BE TAKEN BEFORE USING ANY OF THE BUFFER AREAS FOR * CODE. SOME TFM SUBROUTINES RANDOMLY SELECT BUFFER * SPACE. * * DIRECT CELLS HAVE BEEN ARRANGED IN SUCH A WAY AS TO * ALLOW 15D CONTIGUOUS LOCATIONS (THREE CM WORDS) TO * BE UNIQUELY DEFINED BY EACH OF THE PROCESSING * OVERLAYS. THE REMAINING DIRECT CELLS ARE COMMON TO * TFM AS A WHOLE. SPACE 4,10 *** TFM INPUT REGISTER CALL FORMAT - * *T, 18/ *TFM*, 6/40B, 12/FC, 6/0 , 18/FA * * FC = FUNCTION CODE. * * FA = FUNCTION PARAMETER ADDRESS RELATIVE TO * THE CONTROL POINT (SEE *COMSTFM FOR FORMATS). * * CALLS TO TFM ARE MADE WITH THE AUTO-RECALL FLAG SET * EXCEPT WHEN CALLED BY *MAGNET*. SPACE 4,10 *** DAYFILE MESSAGES. * * (VSN) BUSY. * THE VSN REQUESTED IS CURRENTLY BUSY. * * (LFN) NOT FOUND. * THE LOCAL FILE NAME REQUESTED IS NOT * IN THE FNT OR IS NOT ASSIGNED TO THE JOB. * * (FILENAME) NOT FOUND. * THE FILENAME SPECIFIED WHEN ATTEMPTING * SYMBOLIC ACCESS COULD NOT BE FOUND IN * THE USERS CATALOG. * * (VSN) NOT FOUND. * THE VSN SPECIFIED WHEN ATTEMPTING VSN * ACCESS TO A TAPE FILE COULD NOT BE * FOUND OR WAS NOT ASSIGNED TO THE USER. * * (USERNAME) NOT FOUND. * THE USERNAME IS NOT KNOWN TO TMS. * * (LFN) NOT ON MAGNETIC TAPE. * THE LOCAL FILE REQUESTED IS NOT A * MAGNETIC TAPE FILE. * * (VSN) ALREADY RESERVED. * ATTEMPT TO RESERVE A VSN THAT IS * ALREADY RESERVED * * (FILENAME) ALREADY RESERVED. * ATTEMPT TO RESERVE A FILENAME THAT * IS ALREADY RESERVED TO THE USER. * * TFM ABORTED. * ABNORMAL TERMINATION OF THE TAPE FILE * MANAGER * * TFM INCORRECT REQUEST. * TFM DETECTED A ERROR IN THE REQUEST. * * TMS DISABLED. * THE TAPE MANAGER IS DISABLED. * * MAGNET NOT ACTIVE. * ATTEMPT TO COMMUNICATED WITH THE MAGNETIC * TAPE EXECUTIVE WHICH IS CURRENTLY NOT IN * THE SYSTEM. * * ERRONEOUS BUFFER POINTER. * TFM INTERNAL ERROR. * * TMS UTILITY ACTIVE. * THE TMS UTILITY (TFSP) IS CURRENTLY * ACTIVE. NO USER ACTIONS ARE POSSIBLE. * * BUFFER ARGUMENT ERROR. * A ERROR WAS DETECTED WHEN VALIDATING * THE FET. * * ERROR IN INDEX DATA. * A DATA ERROR WAS DISCOVERED IN EITHER * A VSN OR USERNAME INDEX. * * ERROR IN CATALOG DATA. * A DATA ERROR WAS DISCOVERED IN THE TAPE * CATALOG ENTRY. * * ERROR IN ADMIT DATA. * A DATA ERROR WAS DISCOVERED IN A ADMIT * ENTRY FOR THE FILE. * * (NNNNNN) RANDOM ADDRESS ERROR. * ATTEMPT TO WRITE INTO THE SYSTEM SECTOR * OR BEYOND THE EOI IN THE TAPE CATALOG. * * EQXX, DNYY, MASS STORAGE ERROR. * A UNRECOVERABLE READ/WRITE ERROR HAS * OCCURRED. * * (FAMILY) TAPE CATALOG NOT FOUND. * NO TAPE CATALOG COULD BE FOUND * FOR THIS FAMILY. * * EMPTY CATALOG. * NO CATALOG ENTRIES COULD BE FOUND * FOR THIS USER ON A AUDIT REQUEST. * * CATALOG LINKAGE ERROR. * THE CATALOG LINKAGE HAS BEEN BROKEN. * * I/O SEQUENCE ERROR ON CATALOG. * THE LOCAL FILE CATALOG WAS BUSY. * * EOI NOT ON TRACK CHAIN. * THE EOI ON THE TAPE CATALOG COULD * NOT BE FOUND. * * NO ADMITS. * NO ADMIT ENTRIES COULD BE FOUND ON * A AUDIT REQUEST. * * TMS PROCESSING INHIBITED. * TMS CONTROL OVER TAPE FILES IS INHIBITED * BECAUSE THIS IS A SYSTEM ORIGIN JOB OR * AS A USER SPECIFIED REQUEST. * * ACTIVITY SUSPENDED. * TMS ACTIVITY IS TEMPORARILY SUSPENDED. * * (FAMILY) TAPE CATALOG ERROR. * THERE IS A FATAL CATALOG ERROR OUTSTANDING * FOR THIS FAMILY. * * WAIT SCRATCH ASSIGNMENT. * NO SCRATCH TAPES ARE CURRENTLY AVAILABLE * TO SATISFY THIS REQUEST. * * LINKED CATALOG NOT ACCESSIBLE. * THE LINKED TAPE CATALOG CANNOT BE ACCESSED FROM THE * CURRENT FAMILY. SPACE 4,10 *** ACCOUNT FILE MESSAGES. * * SDAU, FAMNAME, USERNAM, FVSNXX, VSNXXX. * RESERVE * * SDCR, FAMNAME, USERNAM, FVSNXX. * RELEASE. SPACE 4,10 *** ASSEMBLY OPTIONS. IRA$ EQU 1 DEFINE RANDOM PROCESSOR INITIALIZATION LST$ EQU 1 DEFINE *COMPTFM* LIST OPTION *TRP$ EQU 1 DEFINE TRAP ON ERROR CODES WEI$ EQU 1 DEFINE EOI BUFFER SPECIFIED QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS SPACE 4,10 *** COMMON DECKS (SYMBOLS/MACROS) * *CALL COMPMAC QUAL COMSCPS *CALL COMSCPS QUAL * *CALL COMSEJT *CALL COMSMSP *CALL COMSPIM *CALL COMSWEI QUAL EVT *CALL COMSEVT QUAL PFM *CALL COMSPFM QUAL PRD *CALL COMSPRD QUAL SSJ *CALL COMSSSJ QUAL UAM QUAL *CALL COMSSSD SPACE 4,10 *** MAGNET, RESEX, TFM SYMBOL DEFINITIONS. * LIST X QUAL MTX *CALL COMSMTX QUAL *CALL COMSTFM LIST * SPACE 4,10 * VERIFY COMPATIBILITY OF TMS DEFINITIONS IN COMMON DECKS. QUAL TFM *CALL COMSTFM QUAL * TITLE TAPE FILE MANAGER EQUIVALENCES. SPACE 4,10 *** FET PARAMETER BLOCK. * * THE FOLLOWING SYMBOLS DEFINE THE FET * PARAMETERS RELATIVE TO THE FIRST WORD * OF THE PARAMETER BLOCK. FBES EQU TFES-TFFP EXTERNAL VSN FBTD EQU TFTD-TFFP TAPE DESCRIPTORS FBVS EQU TFVS-TFFP INTERNAL VSN FBFI EQU TFID-TFFP FILE IDENTIFIER FBSI EQU TFSI-TFFP SET I.D., VERSION, GENERATION FBNI EQU TFNI-TFFP FILE IDENTIFIER (NEW) FBCR EQU TFCR-TFFP CREATION/RETENTION DATE FBAC EQU TFCE-TFFP CE, AN PARAMETERS FBUN EQU TFUN-TFFP ALTERNATE USER NAME FBUC EQU TFUC-TFFP USER CONTROL WORD FBPW EQU TFPW-TFFP FILE PASSWORD SPACE 4,10 *** BUFFER CONTROL WORD (PP BYTE POSITIONS) CWSC EQU 0 SECTOR COUNT CWWC EQU 1 SECTOR WORD COUNT CWRT EQU BWRT*5+0+2 RECORD TYPE,LEVEL NUMBER CWUW EQU BWRT*5+1+2 UNUSED WORD COUNT (CM WORDS) CWEL EQU BWRT*5+2+2 DATA ENTRY LENGTH IN CM WORDS CWNE EQU BWRT*5+3+2 NUMBER OF DATA ENTRIES CWFE EQU BWRT*5+4+2 FIRST DATA WORD CWDT EQU BWDT*5+2+2 LAST MODIFICATION DATE/TIME (PACKED) CWBI EQU BWRI*5+1+2 RANDOM INDEX TO PREVIOUS BLOCK CWRI EQU BWRI*5+3+2 RANDOM INDEX TO NEXT BLOCK CWUN EQU BWUN*5+0+2 CATALOG/ADMIT/SYSTEM BLOCK USERNAME CWMX EQU BWUN*5+3+2 UTILITY MACHINE INDEX (SYSTEM BLOCK) SPACE 4,10 *** SYSTEM BLOCK LOCATIONS (PP BYTE POSITIONS) SBFN EQU TMFM*5+0 FAMILY NAME SBST EQU TMFM*5+3 CATALOG STATUS SBID EQU TMID*5+0 MACHINE I.D. SBHP EQU TMID*5+3 HOLE POINTER SBTC EQU TMCT*5+1 TRACK COUNT SBPC EQU TMCT*5+2 SECTOR (PRU) COUNT SBSM EQU TMSM*5+0 FIRST *MT*/*NT* SCRATCH VOLUME SBCM EQU TMSM*5+3 *MT*/*NT* SCRATCH COUNT SBLF EQU TMLF*5+0 LINKED FAMILY NAME SBPF EQU TMPA*5+0 PERMITTED ALTERNATE FAMILY NAMES SBSC EQU TMSC*5+0 FIRST *CT* SCRATCH VOLUME SBCC EQU TMSC*5+3 *CT* SCRATCH COUNT SBSA EQU TMSA*5+0 FIRST *AT* SCRATCH VOLUME SBCA EQU TMSA*5+3 *AT* SCRATCH COUNT SPACE 4,10 *** VSN ENTRY LOCATIONS (PP BYTE POSITIONS) VBES EQU VEES*5+0 EXTERNAL VSN VBCI EQU VEES*5+3 CATALOG RANDOM INDEX VBVS EQU VEVS*5+0 INTERNAL VSN VBRC EQU VEVS*5+3 REEL COUNT (UPPER 6 BITS) VBST EQU VEVS*5+3 VSN STATUS (LOWER 18 BITS) VBFV EQU VEFV*5+0 FIRST VSN OF SET VBMX EQU VEFV*5+3 VSN BUSY MACHINE INDEX VBJS EQU VEFV*5+4 EJT ORDINAL VBNV EQU VENV*5+0 NEXT VSN OF SET VBUC EQU VENV*5+3 USAGE COUNTER (UPPER 6 BITS) VBRD EQU VENV*5+3 RELEASE DATE (LOWER 18 BITS) SPACE 4,10 *** USERNAME INDEX LOCATIONS (PP BYTE POSITIONS) UBUN EQU 0 USERNAME UBCI EQU UBUN+3 CATALOG INDEX (18 BITS) SPACE 4,10 *** CATALOG ENTRY LOCATIONS (PP BYTE POSITIONS) CBLI EQU CELI*5+0 FILE NAME (102 BITS) CBST EQU CEST*5+4 STATUS FLAGS (12 BITS) CBES EQU CEES*5+0 EXTERNAL SERIAL NUMBER (36 BITS) CBRC EQU CEES*5+4 REEL COUNT (12 BITS) CBTD EQU CETD*5+0 TAPE FILE DESCRIPTORS (60 BITS) CBFN EQU CETD*5+2 TAPE FORMAT AND NOISE SIZE CBSZ EQU CETD*5+3 BLOCK SIZE (24 BITS) CBVS EQU CEVS*5+0 VOLUME SERIAL NUMBER (36 BITS) CBFA EQU CEVS*5+3 FILE ACCESSIBILITY (6 BITS) CBSN EQU CEVS*5+3 SECTION NUMBER (18 BITS) CBPI EQU CEPI*5+0 PHYSICAL FILE I.D. (102 BITS) CBQN EQU CESQ*5+3 FILE SEQUENCE NUMBER (18 BITS) CBSI EQU CESI*5+0 SET IDENTIFIER (36 BITS) CBVN EQU CESI*5+3 VERSION NUMBER (9 BITS) CBGN EQU CESI*5+3 GENERATION NUMBER (15 BITS) CBLD EQU CERC*5+0 LABEL RETENTION/CREATION DATE (60 BITS) CBPW EQU CEPW*5+0 PASSWORD (42 BITS) CBCT EQU CEPW*5+4 CATAGORY TYPE (6 BITS) CBAM EQU CEPW*5+4 ACCESS MODE (6 BITS) CBNC EQU CECD*5+0 RANDOM INDEX TO CATALOG CBCD EQU CECD*5+2 CREATION DATE/TIME (36 BITS) CBAE EQU CEMD*5+0 RANDOM INDEX TO FIRST ADMIT BLOCK CBMD EQU CEMD*5+2 MODIFICATION DATE/TIME (36 BITS) CBAC EQU CEAD*5+0 ACCESS COUNT (24 BITS) CBAD EQU CEAD*5+2 LAST ACCESS DATE/TIME (36 BITS) CBUC EQU CEUC*5+0 USER CONTROL WORD (60 BITS) CBCN EQU CECN*5+0 CHARGE NUMBER (60 BITS) CBPN EQU CEPN*5+0 PROJECT NUMBER (120 BITS) SPACE 4,10 *** ADMIT ENTRY LOCATIONS (PP BYTE POSITIONS). ABUN EQU AEUN*5+0 ALTERNATE USER NAME (42 BITS) ABAN EQU AEAC*5+0 ACCESS COUNT (18 BITS) ABAM EQU AEAC*5+1 ACCESS MODE (6 BITS) ABDT EQU AEAC*5+2 LAST ACCESS DATE/TIME (36 BITS) SPACE 4,10 *** TFM EVENT SKELETONS. ESVB EQU /EVT/TVBE VSN BUSY OR WAIT SCRATCH ESUA EQU /EVT/TUIE TMS UTILITY INTERLOCK ESMR EQU /EVT/TRME ROLLOUT FOR MAGNET ESVR EQU /EVT/VSNE VSN RESOURCE SPACE 4,10 *** BUFFER ALLOCATION. BUF0 EQU BFMS MASS STORAGE I/O BUFFER BUF1 EQU BUF0-502 MASS STORAGE I/O BUFFER BUF2 EQU BUF1-502 MASS STORAGE I/O BUFFER TITLE MACRO/MICRO DEFINITIONS. * OVERLAY CONTROL. PREFIX MICRO 1,, 5T BASE OVERLAY NAME .A. SET 0 SCRATCH .B. SET 0 SCRATCH .X. SET 0 OVERLAY GENERATION COUNT .Y. MICRO 1,, TFM GENERATED OVERLAY NAME .Z. SET 0 FUNCTION TABLE GENERATION NOREF .A.,.B. OP= SPACE 4,10 ** OP= - CONDITIONALLY GENERATE INSTRUCTION. * * OP= P1,P2,P3 * * ENTRY P1 = ARGUMENT. * P2 = INSTRUCTION IF ARGUMENT .LT. 100B. * P3 = INSTRUCTION IF ARGUMENT .GE. 100B. PURGMAC OP= OP= MACRO P1,P2,P3 IF DEF,P1,3 IFLT P1,100B P2 P1 ELSE P3 P1 ENDIF ENDM CLEAR SPACE 4,10 ** CLEAR - CLEAR PP MEMORY. * * CLEAR P1,P2,P3,P4 * * ENTRY P1 = STARTING WORD IN PPU TO BE SET TO ZERO. * P2 = CELL CONTAINING INDEX TO P1. * P3 = NUMBER OF CHARACTERS (HALF BYTES) TO * CLEAR. * P4 = CELL CONTAINING NUMBER OF CHARACTERS TO CLEAR. * * CALLS CPM. PURGMAC CLEAR CLEAR MACRO P1,P2,P3,P4 MACREF CLEAR EVAL P1,P2,T1 EVAL P3,P4 RJM CPM ENDM CMOVE SPACE 4,15 ** CMOVE - COMPARE/MEMORY MOVE. * * CMOVE P1,P2,P3,P4,P5,P6 * * ENTRY P1 = FWA OF MOVE. * P2 = MODIFIER TO P1. * P3 = FWA OF DESTINATION. * P4 = MODIFIER TO P3. * P5 = MOVE COUNT IN PP BYTES. * P6 = MOVE COUNT IN PP BYTES, STORED IN MEMORY. * * CALLS CMV. PURGMAC CMOVE CMOVE MACRO P1,P2,P3,P4,P5,P6 MACREF CMOVE EVAL P1,P2,T1 EVAL P3,P4,T2 EVAL P5,P6 RJM CMV CMV$ EQU 1 DEFINE CMV - COMPARE/MOVE PP BYTE STRING ENDM COMPARE SPACE 4,10 ** COMPARE - COMPARE CHARACTER STRING. * * COMPARE P1,P2,P3,P4,P5,P6 * * ENTRY P1 = ADDRESS OF STRING 1. * P2 = CELL CONTAINING INDEX. * P3 = ADDRESS OF STRING 2. * P4 = STRING 2 MODIFIER. * P5 = LENGTH OF COMPARE. * P6 = CELL CONTAINING LENGTH OF COMPARE. PURGMAC COMPARE COMPARE MACRO P1,P2,P3,P4,P5,P6 MACREF COMPARE EVAL P1,P2,T1 EVAL P3,P4,T2 EVAL P5,P6 RJM CCS ENDM EMSG SPACE 4,10 ** EMSG - GENERATE ERROR MESSAGE. * * * EMSG P1,P2,(P3) * * ENTRY (P1) = ERROR MESSAGE TYPE AND PROCESSING DISPOSITION. * (P2) = CONTROL WORD FOR MESSAGE DESTINATION. * (P3) = ERROR MESSAGE. PURGMAC EMSG MACRO EMSG,P1,P2,P3,P4 MACREF EMSG IFC EQ,*P2*BEGIN*,3 P1 BSS 0 QUAL P1 SKIP IFC EQ,*P2*END*,4 QUAL * LOC *O P1_L EQU *-P1 SKIP .A. MICRO 1,,$P4$ .B. MICCNT .A. ERRNG 40D-.B. DAYFILE MESSAGE TOO LONG LOC P1 CON P2,P3,=C$P4$ ENDIF ENDM ENTRY SPACE 4,10 ** ENTRY - DEFINE OVERLAY ENTRY POINT. * * P1 ENTRY * * ENTRY P1 = ENTRY/EXIT POINT FOR ROUTINE. PURGMAC ENTRY MACRO ENTRY,P1 MACREF ENTRY P1_X LJP * IFEQ .X.,0 P1 EQU *-1 ELSE IFGT *,PPFW,4 QUAL .A. MICRO 3,1, ".Y." P1 EQU 1R".A."*10000+*-1 QUAL ".Y." ENDIF ENDM ERROR SPACE 4,10 ** ERROR - CALL ERROR PROCESSOR. * * ERROR P1 * * ENTRY P1 = ERROR CODE MNEMONIC. * IF P1 IS NOT SPECIFIED, THE ACCUMULATOR ALREADY * CONTAINS THE ERROR CODE MNEMONIC. * * EXIT (A) = ERROR CODE. * * CALLS ERR. PURGMAC ERROR .ERRJP SET 0 INITIALIZE POINTER TO *RJM ERR* ERROR MACRO P1 MACREF ERROR IFC NE,*P1**,1 OP= /EMSG/P1,LDN,LDC .1 IFLT *-.ERRJP,40B UJN .ERRJP GO TO *ERR* CALL .ERRJP SET *-1 .1 ELSE .ERRJP SET * RJM ERR .1 ENDIF ENDM EVAL SPACE 4,10 ** EVAL - EVALUATE PARAMETER PAIRS. * * EVAL P1,P2,P3 * * ENTRY P1 = CONSTANT. * P2 = BASE ADDRESS. * P3 = ADDRESS RESULT TO BE STORED IN. PURGMAC EVAL EVAL MACRO P1,P2,P3 IFC NE,?_P2_??,5 OP= P2,LDD,LDM IFEQ P1,0,1 SKIP 4 OP= P1,ADN,ADC SKIP 2 IFC NE,?_P1_??,3 OP= P1,LDN,LDC IFC NE,?_P3_??,1 OP= P3,STD,STM ENDM EXOVL SPACE 4,10 ** EXOVL - EXECUTE OVERLAY. * * EXOVL P1 * * ENTRY P1 = PROCESSOR ADDRESS. PURGMAC EXOVL .EXOVL SET 0 INITIALIZE POINTER TO NEAREST *EXOVL* EXOVL MACRO P1 MACREF EXOVL LDN P1/10000 STM TFMA LDC P1-P1/10000*10000 .1 IF DEF,.EXOVLO .2 IFLT *-.EXOVL,40B .EX SET .EXOVL UJN .EX GO LOAD OVERLAY .EXOVL SET *-1 .2 ELSE LJM .EXOVLO GO LOAD OVERLAY .EXOVL SET *-2 .2 ENDIF .1 ELSE .EXOVLO EQU * .EXOVL SET * STM TFMB LJM TFMA-1 LOAD OVERLAY .1 ENDIF ENDM EXSUB SPACE 4,10 ** EXSUB - EXECUTE SUBROUTINE. * * EXSUB P1 * * ENTRY P1 = SUBROUTINE ADDRESS. PURGMAC EXSUB EXSUB MACRO P1 MACREF EXSUB RJM P1-P1/10000*10000 ENDM FCN SPACE 4,10 ** FCN - DEFINE FUNCTION PROCESSOR. * * P1 FCN P2,P3,P4,P5 * * ENTRY P1 = FUNCTION TABLE NAME. * *BEGIN* FWA OF A TABLE. * *END* END OF THE TABLE. * P2 = FUNCTION CODE. * P3 = PROCESSOR ADDRESS. * P4 = CATALOG ACCESS MODE. * 4XXX = NOT ACCESSING CATALOG. * 2XXX = NOT CHANGING CONTROL POINTS. * P5 = MINIMUM FET LENGTH. * 4XXX = NO BUFFER VALIDATION. PURGMAC FCN MACRO FCN,P1,P2,P3,P4,P5 MACREF FCN IFC EQ,*P2*BEGIN*,3 P1 BSS 0 LOC 0 .1 SKIP IFC EQ,*P2*END*,3 LOC *O P1_L EQU *-P1 .1 SKIP LOC P2 CON P3/10000,P3-P3/10000*10000 .2 IFC NE,*P4** CON P4 .2 ELSE CON 0 .2 ENDIF .3 IFC NE,*P5** CON P5 .3 ELSE CON 0 .3 ENDIF .1 ENDIF ENDM LIA SPACE 4,10 ** LIA - LOAD INDIRECT ADDRESS TO A REGISTER. * * LIA P1,P2 * * ENTRY P1 = BASE ADDRESS OF OPERAND. * P2 = ADDRESS OF THE INDEX FOR MODIFYING * THE BASE ADDRESS OF THE OPERAND. * * EXIT (A) = P1 + (P2). PURGMAC LIA LIA MACRO P1,P2 MACREF LIA EVAL P1,P2 ENDM LDA SPACE 4,11 ** LDA - LOAD ABSOLUTE/RELATIVE ADDRESS. * * LDA P1,P2 * * ENTRY P1 = TWO CELLS WITH ADDRESS * P2 = CELL CONTAINING BIAS. * = *ABS* IF ADDRESS IS ABSOLUTE. * *REL* IF ADDRESS IS RELATIVE * TO CONTROL POINT. * * EXIT (A) = (P1+(P2))+(P1+1+(P2)). * (A) = (P1)*4096+(P1+1) IF P2 = *ABS* * (A) = (P1)*4096+(RA)*64+(P1+1) IF P2 = *REL*. PURGMAC LDA LDA MACRO P1,P2 MACREF LDA IFC EQ,*P2*REL*,7 OP= P1,LDD,LDM LPN 77 SHN 6 ADD RA SHN 6 OP= P1+1,ADD,ADM SKIP 10 IFC EQ,*P2*ABS*,5 OP= P1,LDD,LDM LPN 77 SHN 14 OP= P1+1,LMD,LMM SKIP 4 LDM P1,P2 LPN 77 SHN 14 LMM P1+1,P2 ENDM MMOVE SPACE 4,10 ** MMOVE - MEMORY MOVE. * * MMOVE P1,P2,P3,P4,P5,P6 * * ENTRY P1 = FWA OF MOVE. * P2 = MODIFIER TO P1. * P3 = FWA OF DESTINATION. * P4 = MODIFIER TO P3. * P5 = MOVE COUNT IN HALF BYTES. * P6 = MOVE COUNT IN HALF BYTES, STORED IN MEMORY. * * CALLS MPM. PURGMAC MMOVE MMOVE MACRO P1,P2,P3,P4,P5,P6 MACREF MMOVE EVAL P1,P2,T1 EVAL P3,P4,T2 EVAL P5,P6 RJM MPM ENDM MULT3 SPACE 4,10 ** MULT3 - MULTIPLY BY 3. * * MULT3 P1 * * ENTRY (P1) = DIRECT CELL CONTAINING VALUE TO * MULTIPLIED BY 3. * * EXIT (A) = SPECIFIED VALUE MULTIPLIED BY 3. PURGMAC MULT3 MULT3 MACRO P1 MACREF MULT3 LDD P1 SHN 1 *2 ADD P1 *3 ENDM MULT4 SPACE 4,10 ** MULT4 - MULTIPLY BY 4. * * MULT4 * * ENTRY (A) = VALUE TO BE MULTIPLIED BY 4. * * EXIT (A) = (T1) = SPECIFIED VALUE MULTIPLIED BY 4. * * USES T1. PURGMAC MULT4 MULT4 MACRO MACREF MULT4 SHN 2 *4 STD T1 ENDM OVERLAY SPACE 4,10 ** OVERLAY - GENERATE OVERLAY CONSTANTS. * * OVERLAY (P1),P2 * * ENTRY P1 = ENTRY OF SUBTITLE. * P2 = SPECIFIES LOAD ADDRESS. PURGMAC OVERLAY OVERLAY MACRO P1,P2 MACREF OVERLAY QUAL .X. SET .X.+1 .A. MICRO .X.,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ .Y. MICRO 1,3, "PREFIX"".A." QUAL ".Y." TTL TFM/".Y." - P1 TITLE IDENT ".Y.",P2+5 P1 *COMMENT TFM - P1 ORG P2+5 .ERRJP SET 0 RESET POINTER TO *RJM ERR* .EXOVL SET 0 INITIALIZE POINTER TO NEAREST *EXOVL* LJM * UJN *-2 ENDM SAVEP SPACE 4,10 ** SAVEP - SAVE CATALOG POINTERS. * * SAVEP P1 * * ENTRY P1 = FWA OF FIVE CONSECUTIVE WORDS * TO STORE CELLS (BA - BA+4). PURGMAC SAVEP SAVEP MACRO P1 MACREF SAVEP LDD MA CWD BA .1 IF DEF,P1 .2 IFLT P1,100B CRD P1 .2 ELSE CRM P1,ON .2 ENDIF .1 ELSE CRM P1,ON .1 ENDIF ENDM RESTP SPACE 4,10 ** RESTP - RESTORE CATALOG POINTERS. * * RESTP P1 * * ENTRY P1 = FWA OF FIVE CONSECUTIVE BYTES * TO BE RETURNED TO CELLS BA - BA+4. PURGMAC RESTP RESTP MACRO P1 MACREF RESTP LDD MA .1 IF DEF,P1 .2 IFLT P1,100B CWD P1 .2 ELSE CWM P1,ON SBN 1 .2 ENDIF .1 ELSE CWM P1,ON SBN 1 .1 ENDIF CRD BA ENDM UDTRD SPACE 4,10 ** UDTRD - READ UDT WORD(S). * * UDTRD P1,P2,P3 * * ENTRY P1 = ADDRESS OF RECEIVING BUFFER * P2 = FIRST UDT WORD TO READ. * P3 = NUMBER OF WORDS TO READ. * * CALLS UDT. PURGMAC UDTRD UDTRD MACRO P1,P2,P3 MACREF UDTRD IFC NE,*P1*T1*,2 OP= P1,LDN,LDC STD T1 LDC P3*10000+P2 RJM UDT UDT$ EQU 1 DEFINE UDT - READ/WRITE UDT ENTRY. ENDM UDTWT SPACE 4,10 ** UDTWT - WRITE UDT WORD(S). * * UDTWT P1,P2,P3 * * ENTRY P1 = ADDRESS OF SENDING BUFFER. * P2 = FIRST UDT WORD TO WRITE. * P3 = NUMBER OF WORDS TO WRITE. * * CALLS UDT. PURGMAC UDTWT UDTWT MACRO P1,P2,P3 MACREF UDTWT IFC NE,*P1*T1*,2 OP= P1,LDN,LDC STD T1 LDC P3*10000+100000+P2 RJM UDT UDT$ EQU 1 DEFINE UDT - READ/WRITE UDT ENTRY. ENDM TITLE GLOBAL DIRECT CELL LOCATIONS. *** GLOBAL DIRECT LOCATION ASSIGNMENTS. * * THE FOLLOWING DIRECT CELLS ARE DEFINED AND * USED BY ALL OVERLAYS IN TFM, AND AS SUCH ARE * INVIOLATE. IN MANY CASES THEY ARE ORDER * DEPENDENT SO CARE MUST BE USED IF CHANGES * ARE REQUIRED. * * S1, S2, AND S3 ARE DEFINED AS SCRATCH, THAT * IS THEY CAN AND ARE REDEFINED AND USED BY * PRESET AND ANY OVERLAY AS REQUIRED. ALL OF * THE REMAINING DIRECT CELLS ARE USED FOR * SPECIFIC PURPOSES BY OVERLAYS AND TFM COMMON * SUBROUTINES. S1 EQU 16 - 22 SCRATCH (5 LOCATIONS) S2 EQU 23 - 27 SCRATCH (5 LOCATIONS) S3 EQU 30 - 34 SCRATCH (5 LOCATIONS) FN EQU 35 - 41 FNT ENTRY (5 LOCATIONS) FS EQU 42 - 46 FST ENTRY (5 LOCATIONS) EQ EQU FS EQUIPMENT (FS+0) TK EQU FS+1 TRACK (FS+1) SC EQU FS+2 SECTOR (FS+2) FO EQU 47 FNT ORDINAL FC EQU IR+2 FUNCTION CODE (REDEFINES IR+2) BA EQU 60 BUFFER ADDRESS BP EQU 61 BUFFER POINTER CI EQU 62 CATALOG INDEX RI EQU 63 - 64 RANDOM INDEX (2 LOCATIONS) PB EQU 65 PARAMETER BLOCK ADDRESS KA EQU 66 KEY ADDRESS KL EQU 67 KEY LENGTH EC EQU KL ERROR CODE (REDEFINES KL) TITLE ASSEMBLED LIST OF *COMPTFM* ROUTINES. SPACE 4 ORG PPFW SPACE 4 QUAL COMPTFM COMPTFM SPACE 4,10 ** DEFINE ALL CONDITIONALS FOR *COMPTFM* LIST. ABC$ EQU 1 DEFINE ABC - ADD BLOCK TO CHAIN AMD$ EQU 1 DEFINE AMD - AMEND PROCESSING AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY CAA$ EQU 1 DEFINE CAA - CHECK ALTERNATE USER ACCESS CCB$ EQU 1 DEFINE CCB - CHECK CURRENT BUFFER CIE$ EQU 1 DEFINE CIE - CREATE INDEX ENTRY CMV$ EQU 1 DEFINE CMV - COMPARE/MOVE PP BYTE STRING CSN$ EQU 1 DEFINE CSN - CONVERT SEQUENCE NUMBER CVA$ EQU 1 DEFINE CVA - CLEAR VSN ASSIGNMENT DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY DLB$ EQU 1 DEFINE DLB - DELINK BLOCK EOI$ EQU 1 DEFINE EOI - SET END OF INFORMATION FAM$ EQU 1 DEFINE FAM - FORMAT ACCOUNT FILE MESSAGE FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG GEP$ EQU 1 DEFINE GEP - GENERATE EMPTY PRU GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK GNL$ EQU 1 DEFINE GNL - GET NEXT LINK GPL$ EQU 1 DEFINE GPL - GET PREVIOUS BLOCK LINK IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN IDE$ EQU 1 DEFINE IDE - INSERT DATA ENTRY IIE$ EQU 1 DEFINE IIE - INSERT INDEX ENTRY IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES. IRS$ EQU 1 DEFINE IRS - ISSUE RECOVERY MSG SUBROUTINE ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY ISP$ EQU 1 DEFINE ISP - INITIALIZE SCRATCH PROCESSOR IUC$ EQU 1 DEFINE IUC - INCREASE USAGE COUNTER LNB$ EQU 1 DEFINE LNB - LINK NEXT BLOCK LTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG MLT$ EQU 1 DEFINE MLT - (A) REGISTER MULTIPLY PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES PLI$ EQU 1 DEFINE PLI - POSITION TO LAST ENTRY RCL$ EQU 1 DEFINE RCL - PP RECALL RIB$ EQU 1 DEFINE RIB - ROOM IN BLOCK RSP$ EQU 1 DEFINE RSP - RELEASE VSNS TO SCRATCH POOL SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS SCB$ EQU 1 DEFINE SCB - SEARCH CATALOG BUFFER SCC$ EQU 1 DEFINE SCC - SUBSTITUTE CHAR. FOR COLON SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BLOCK SVB$ EQU 1 DEFINE SVB - SET VSN BUSY TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT UDT$ EQU 1 DEFINE UDT - READ/WRITE UDT ENTRY. UIS$ EQU 1 DEFINE UIS - USERNAME INDEXED SEARCH UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER UTR$ EQU 1 DEFUNE UTR - UPDATE TRT VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH VRR$ EQU 1 DEFINE VRR - VERIFY RANDOM REQUEST VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS VUB$ EQU 1 DEFINE VUB - VERIFY USERS BLOCK WES$ EQU 1 DEFINE WES - WRITE EOR/EOI SEQUENCE COMPTFM SPACE 4,10 ** DEFINE TEMPS FOR *COMPTFM* ASSEMBLY. CT EQU 16 FILE CATAGORY TYPE FT EQU 25 FET FIRST POINTER IN EQU 27 FET IN POINTER LM EQU 33 FET LIMIT POINTER MD EQU 17 FILE ACCESS MODE OT EQU 31 FET OUTPUT POINTER BUFA EQU * ENTRY BUFFER ADDRESS BUFB EQU BUFA+12 OVERFLOW BUFFER ADDRESS COMMON SPACE 4,10 ** COMMON DECKS FOR *COMPTFM* ASSEMBLY. *CALL COMPC2D *CALL COMPWEI LIST F,X *CALL COMPTFM LIST * SPACE 4 QUAL * TITLE MAIN PROGRAM. ORG PPFW SPACE 4 ** TFM - MAIN PROGRAM. * * THE TFM MAIN LOOP IS THE ONLY ENTRY AND * EXIT POINT IN TFM. FROM HERE ALL OVERLAYS * ARE LOADED AND EXECUTED VIA A RETURN JUMP. * * ENTRY (TFMC) = 6/ MASS STORAGE ERROR FLAGS,12/ ACCESS FLAGS. * ACCESS FLAGS = 1/ NA,1/ NC,4/ 0,6/ MD. * NA = NOT ACCESSING CATALOG. * NC = NO CONTROL POINT CHANGE. * MD = FAST ATTACH FILE ACCESS MODE. * = /PFM/PTLM IF LOCAL FILE MODE. * * EXIT CATALOG FILE RETURNED IF FAST ATTACH MODE. * FST SET COMPLETE IF LOCAL FILE MODE. * FET OR UDT SET COMPLETE. * * USES CM - CM+4. * * CALLS PLL, PPR, PRS, TFM SUBFUNCTION * PROCESSORS. * * MACROS LDA, MONITOR, UDTRD, UDTWT. TFM BSS 0 TFM MAIN ENTRY POINT RJM /PRESET/PRS PRESET PROGRAM LDC ** SET OVERLAY NAME TFMA EQU *-1 (OVERLAY NAME) ZJN TFM1 IF NO OVERLAY REQUIRED LMC 2L"PREFIX" LOAD OVERLAY RJM EXR TFM1 RJM ** EXECUTE PROCESSOR TFMB EQU *-1 (PROCESSOR ADDRESS) LDC ** GET CATALOG ACCESS MODE TFMC EQU *-1 (MASS STORAGE ERROR FLAG/MODE FLAGS) PJN TFM2 IF NOT MASS STORAGE ERROR LDC LDCI+0 CLEAR MASS STORAGE ERROR FLAG STM TFMC-1 LDD FO RJM AFA GET ABSOLUTE FST ADDRESS CRD FS SBN 1 CRD FN ERROR MSE *EQXX, DNYY, MASS STORAGE ERROR.* TFM2 LPN 77 LMN /PFM/PTLM NJN TFM3 IF NOT LOCAL FILE MODE LDD FO ZJN TFM4 IF NO CATALOG FILE RJM AFA READ LOCAL FST ENTRY CRD FS AOD FS+4 SET FST COMPLETE LDD FO WRITE FST ENTRY RJM AFA CWD FS UJN TFM4 SET FET COMPLETE TFM3 LMN /PFM/PTLM SET ACCESS MODE STD T2 LDD FO SET FNT ORDINAL ZJN TFM4 IF CATALOG NOT ATTACHED STD T1 LDN RFAS SET RETURN FILE RJM ARF RETURN FAST ATTACH CATALOG TFM4 LDD FC LMN MAGF ZJN TFM6 IF CALLED BY *MAGNET* LDA IR+3,REL SET FET COMPLETE CRD CM LDD CM+4 SCN 1 LMN 1 STD CM+4 LDA IR+3,REL CWD CM TFM5 MONITOR DPPM DROP PP LJM PPR EXIT TO PP RESIDENT TFM6 EXOVL CTC COMPLETE *TFM* CALL BY *MAGNET* * UJN DPP EXIT PATH FROM *CTC* TITLE TFM RESIDENT SUBROUTINES. AFA SPACE 4,10 ** AFA - GET ABSOLUTE FST ADDRESS. * * ENTRY (A) = FNT ORDINAL IF SYSTEM FILE. * * EXIT (A) = ABSOLUTE FNT ADDRESS. * * MACROS CFI, NFA. AFA SUBR ENTRY/EXIT AFAA BSS 0 * CFI FNT GET FST ADDRESS FOR SYSTEM FILE *AFAB ADC ** * ADN FSTG NFA FO,R GET FST ADDRESS FOR LOCAL FILE ADN FSTL AFAAL EQU *-AFAA ROUTINE LENGTH UJN AFAX RETURN ARF SPACE 4,10 ** ARF - ATTACH/RETURN FAST ATTACH FILE. * * ENTRY (A) = AFAS IF ATTACH FILE. * = RFAS IF RETURN FILE. * (T1) = SYSTEM FNT ORDINAL. * (T2) = ACCESS MODE. * * EXIT (A) = 0. * (T1) = FNT ORDINAL. * (T2) = ACCESS MODE. * * USES T1, T2, T3, CM - CM+4. * * CALLS AFA. * * MACROS DELAY, MONITOR, PAUSE. ARF SUBR ENTRY/EXIT STD T3 SAVE SUBFUNCTION ARF1 LDD T1 SET FNT ORDINAL STD CM+4 RJM AFA READ FST ENTRY CRD FS SBN FSTG-FNTG READ FNT ENTRY CRD FN LDD FN+3 CHECK FAT/MACHINE INDEX LPN 77 ZJN ARF2 IF NOT GLOBAL FAST ATTACH FILE LDD FS SET GLOBAL FAST ATTACH EST ORDINAL ARF2 STD CM+1 SET GLOBAL FILE FLAG LDD T2 SET MODE STD CM+2 LDD T3 STD CM+3 MONITOR AFAM ATTACH OR RELEASE FILE LDD CM+1 ZJN ARFX IF FUNCTION COMPLETE LDC 1400 PRESET DELAY STM T0 ARF3 DELAY * LDN 0 RESET I/O PAUSE COUNTER STM PFRA RJM PFR PAUSE FOR RELOCATION SOD T0 PJN ARF3 IF MORE DELAY NEEDED UJP ARF1 REISSUE FUNCTION CCS SPACE 4,10 ** CCS - COMPARE CHARACTER STRING. * * ENTRY (A) = COMPARE LENGTH IN CHARACTERS. * (T1) = SOURCE ADDRESS FOR COMPARE. * (T2) = OBJECT ADDRESS FOR COMPARE. * * EXIT (A) = 0 IF NAME(T1) = NAME(T2). * (A) .LT. 0 IF NAME(T1) .LT. NAME(T2). * (A) .GT. 0 IF NAME(T1) .GT. NAME(T2). * * USES T0 - T2. CCS2 LDI T1 COMPARE BYTES SBI T2 NJN CCSX IF BYTE(T1) .NE. BYTE(T2) AOD T1 INCREMENT TO NEXT BYTE AOD T2 SOD T0 DECREMENT CHARACTER COUNT SOD T0 NJN CCS1 IF NAME(T1) .NE. NAME(T2) CCS SUBR ENTRY/EXIT STD T0 SAVE CHARACTER COUNT CCS1 SBN 1 CHECK FOR ODD COUNT NJN CCS2 IF NOT ODD CHARACTER COUNT LDI T1 CHECK TRAILING CHARACTER SCN 77 LMN 77 SBI T2 SCN 77 UJN CCSX RETURN CME SPACE 4,10 ** CME - CHECK FOR MASS STORAGE ERROR. * * ENTRY (A) = MASS STORAGE ERROR, IF PRESENT. * * EXIT MASS STORAGE ERROR FLAG HAS BEEN SET IF PRESENT. * * CALLS PFR. * * MACROS ENDMS. CME SUBR ENTRY/EXIT PJN CME1 IF NO MASS STORAGE ERROR LDC LDCI+40 SET MASS STORAGE ERROR FLAG STM TFMC-1 CME1 ENDMS RELEASE CHANNEL RESERVE RJM PFR PAUSE FOR RELOCATION UJN CMEX RETURN CPM SPACE 4,10 ** CPM - CLEAR CONSECUTIVE PP MEMORY. * * ENTRY (A) = HALF BYTE COUNT. * (T1) = FWA OF AREA TO CLEAR. * * EXIT (A) = 0. * AREA FROM (A) TO ((A)+(T1)) SET TO ZERO. * * USES T0, T1. CPM2 LDN 0 CLEAR ONE WORD STI T1 AOD T1 SOD T0 CPM3 SOD T0 CHECK FOR TERMINATION NJN CPM1 IF MORE TO CLEAR CPM SUBR ENTRY/EXIT STD T0 SET WORD COUNT CPM1 SBN 1 CHECK FOR ODD COUNT NJN CPM2 IF NOT LAST CHARACTER LDI T1 CLEAR UPPER 6 BITS LPN 77 STI T1 UJN CPM3 DECREMENT COUNT AND RETURN CTS SPACE 4,10 ** CTS - CONVERT TO ABSOLUTE TRACK/SECTOR. * * ENTRY (RI - RI+1) = CURRENT RANDOM ADDRESS. * * EXIT (T5) = EQUIPMENT. * (T6) = TRACK (CALCULATED). * (T7) = SECTOR (CALCULATED). * (RI - RI+1) = RANDOM ADDRESS (UNCHANGED). * * USES T5 - T5+4. * * CALLS CRA. * * MACROS ENDMS, ERROR, LDA, SETMS. CTS2 LDA CTSA,ABS RESTORE RANDOM ADDRESS STD RI+1 SHN -14 STD RI CTS SUBR ENTRY/EXIT LDD FO RJM AFA GET ABSOLUTE FST ADDRESS CRD T5 LDA RI,ABS SAVE RANDOM ADDRESS ZJN CTS1 IF SYSTEM SECTOR STM CTSA+1 SHN -14 STM CTSA SETMS IO,RW RESERVE CHANNEL RJM CRA CONVERT RANDOM ADDRESS PJP CTS2 IF NO RANDOM ADDRESS ERROR CTS1 BSS 0 ERROR RAE *RANDOM ADDRESS ERROR.* CTSA CON 0,0 RANDOM ADDRESS CELLS DPP SPACE 4,10 ** DPP - DROP PP. * * DEFINES THE TFM EXIT LOCATION FOR RELINQUISHING * THE PPU WITHOUT CHANGING THE COMPLETION STATUS * FOR THE REQUEST. DPP EQU TFM5 DEFINE DROP PP LOCATION EDT SPACE 4,10 ** EDT - ENTER PACKED DATE/TIME. * * ENTRY (A) = ADDRESS OF WORD TO RECEIVE DATE/TIME. * * EXIT PACKED DATE/TIME ENTERED IN 3 CONSECUTIVE * WORDS STARTING AT (A). * * USES CM - CM+4, T2. * * MACROS MMOVE. EDT SUBR ENTRY/EXIT STD T2 LDN PDTL CRD CM MMOVE CM+2,,,,6 UJN EDTX RETURN EML SPACE 4,10 ** EML - EXIT TO MAIN LOOP. * * DEFINES THE TFM EXIT PATH FOR SETTING THE * COMPLETION STATUS AND DROPPING THE PPU FOR * SPECIAL CASES AND ABNORMAL TERMINATION. EML EQU TFM1+2 DEFINE EXIT TO MAIN LOOP LOCATION ERR SPACE 4,10 ** ERR - CALL ERROR PROCESSING OVERLAY. * * *ERR* IS CALLED EITHER DIRECTLY OR BY THE * *ERROR* MACRO TO ENTER THE ERROR PROCESSING * OVERLAY. IF TRP$ IS DEFINED, CODE IS ASSEMBLED * TO ALLOW THE PP TO BE STEPPED ON ANY ERROR * CONDITION BEFORE THE OVERLAY IS CALLED. THIS * PROVIDES A WAY TO DUMP THE PP ON A ERROR AND * INSURE THAT IT HAS NOT BEEN DESTROYED BY THE * OVERLAY LOAD. * * THE FOLLOWING FORMAT WILL STEP THE PP ON ERRORS; * * STEP,*RSJM*,3,CODE. * * RSJM = THE NUMERIC VALUE FOR THE *RSJM* * MONITOR FUNCTION. * CODE = THE TFM ERROR CODE TO BE TRAPPED. * * ENTRY (A) = ERROR CODE. * * EXIT TO ERROR PROCESSING OVERLAY. * * USES EC, CM - CM+4 * * CALLS OVERLAY 5TA (NO RETURN) * * MACROS MONITOR. ERR SUBR CALL ERROR OVERLAY STD EC SAVE ERROR CODE IF DEF,TRP$ LDN ZERL CRD CM LDD EC STD CM+3 LDM ERR STD CM+4 MONITOR RSJM ENDIF EXOVL TME TAPE MANAGER ERROR PROCESSING GIB SPACE 4,10 ** GIB - GET INITIAL BLOCK. * * ENTRY (BA) = BUFFER ADDRESS. * (RI - RI+1) = RANDOM ADDRESS. * * EXIT (A) = CURRENT RANDOM ADDRESS. * (BA) = UNCHANGED. * (BP) = (BA) + 2. * (CPRI - CPRI+1) = CURRENT POSITION. * * USES BP, CPRI - CPRI+1. * * CALLS RRP. GIB SUBR ENTRY/EXIT RJM RRP READ RANDOM PRU LDD BA ADN 2 STD BP LDD RI SET CURRENT FILE POSITION STM CPRI SHN 14 LMD RI+1 STM CPRI+1 UJN GIBX RETURN MBP SPACE 4,13 ** MBP - MOVE BUFFER POINTER. * * *MBP* ADVANCES THE BUFFER POINTER (BP) THE NUMBER OF * CM WORDS REQUESTED. * * ENTRY (A) = NUMBER OF CM WORDS TO MOVE. * (BA) = BUFFER ADDRESS. * (BP) = ADDRESS OF CURRENT WORD. * * EXIT (A) = ADDRESS OF REQUESTED WORD. * (A) = 777777 IF END OF FILE ENCOUNTERED. * (BP) = ADDRESS OF REQUESTED WORD. * * USES T1, BA, BP. * * CALLS RRP. * * MACROS ERROR. MBP1 ERROR EBP *ERRONEOUS BUFFER POINTER* MBP2 LDD T1 INCREMENT WORD COUNT RAD BP LCN 0 SET END OF BUFFER MBP SUBR ENTRY/EXIT STD T1 SHN 2 RAD T1 LDD BP CHECK VALIDITY SBD BA MJN MBP1 IF OUT OF RANGE ADC -502 PJN MBP1 IF OUT OF RANGE ADD T1 PJN MBP2 IF MOVE OUTSIDE BUFFER LDD T1 RAD BP SET BUFFER POINTER UJN MBPX RETURN MPM SPACE 4,10 ** MPM - MOVE CONSECUTIVE PP MEMORY. * * MOVE MUST BEGIN ON A WORD BOUNDARY. * * ENTRY (A) = MOVE COUNT IN CHARACTERS. * (T1) = FWA OF AREA TO MOVE. * (T2) = FWA OF RECEIVING AREA. * * EXIT AREA FROM (T1) TO (T2) MOVED. * * USES T0 - T2. MPM2 LDI T2 MOVE LAST CHARACTER LPN 77 STI T2 LDI T1 SCN 77 RAI T2 MPM SUBR ENTRY/EXIT MPM1 BSS 0 ZJN MPMX IF NO MOVE COUNT STD T0 SBN 1 CHECK FOR ODD COUNT ZJN MPM2 IF LAST MOVE HALF BYTE LDI T1 MOVE BYTE STI T2 AOD T1 INCREMENT TO NEXT BYTE AOD T2 SOD T0 DECREMENT CHARACTER COUNT SOD T0 UJN MPM1 CHECK IF MOVE COMPLETE PFR SPACE 4,10 ** PFR - PAUSE FOR RELOCATION. * * *PFR* CHECKS THE I/O PAUSE LIMIT TO DETERMINE * IF A PAUSE IS NECESSARY. IF A PAUSE IS REQUIRED * THE PAUSE FLAG IS SET, AND THE COUNTER IS RESET * TO *IOPL*. * * MACROS PAUSE. * PFR SUBR ENTRY/EXIT SOM PFRA DECREMENT PAUSE COUNTER PJN PFRX IF PAUSE NOT NECESSARY PAUSE -STSW LDK IOPL RESET PAUSE COUNTER STM PFRA UJN PFRX RETURN PFRA CON IOPL PAUSE COUNTER RRP SPACE 4,10 ** RRP - READ RANDOM PRU. * * ENTRY (BA) = BUFFER ADDRESS. * (RI - RI+1) = RANDOM INDEX. * * EXIT (BA) = UNCHANGED. * (BP) = UNCHANGED. * BUFFER FILLED. * * CALLS CME, CTS, RDS. RRP SUBR ENTRY/EXIT RJM CTS CONVERT TO ABSOLUTE TRACK/SECTOR LDD BA SET BUFFER RJM RDS READ SECTOR RJM CME CHECK FOR MASS STORAGE ERROR UJN RRPX RETURN WRP SPACE 4,10 ** WRP - WRITE RANDOM PRU. * * ENTRY (BA) = BUFFER ADDRESS. * (RI - RI+1) = RANDOM ADDRESS. * * EXIT WRITE OR REWRITE OF PRU. * * CALLS CME, CTS, EDT, WDS. WRP SUBR ENTRY/EXIT RJM CTS CONVERT TO ABSOLUTE TRACK/SECTOR LIA CWDT,BA RJM EDT ENTER PACKED DATE/TIME LDD BA SET BUFFER RJM WDS WRITE SECTOR RJM CME CHECK FOR MASS STORAGE ERROR UJP WRPX RETURN SPACE 4,10 *** RESIDENT COMMON DECKS. *CALL COMPCRA *CALL COMPSEI *CALL COMPSRA TITLE RESIDENT WORKING STORAGE. SPACE 4,10 *** WORKING STORAGE. CPRI BSSZ 2 CURRENT POSITION RANDOM INDEX CPEB BSSZ 2 CURRENT POSITION EMPTY BLOCK CPSB BSSZ 5 CURRENT POSITION SYSTEM BUFFER CPPI BSSZ 5 CURRENT POSITION PRIMARY INDEX CPSI BSSZ 5 CURRENT POSITION SECONDARY INDEX CPCB BSSZ 5 CURRENT POSITION CATALOG BUFFER CPAB BSSZ 5 CURRENT POSITION ADMIT BUFFER CPHP BSSZ 5 CURRENT POSITION HOLE POINTER UTMS BSSZ 5 *UTMS* FROM *MAGNET* UDTA CON 0 CURRENT UDT ADDRESS BEING PROCESSED ISBA CON BUF0,BUF1 INDEXED SEARCH BUFFER ADDRESS MFID EQU TFM MAINFRAME I.D. CDMX EQU TFM+1 CATALOG DEVICE MACHINE INDEX-1 DFFO CON 0 RSXDID FILE FNT ORDINAL IF ATTACHED ERRZR RDFO ORDINAL MUST BE NON-ZERO SCRP CON 0 ADDRESS IN *TMST* OF CORRECT SCRATCH POOL TFMF SPACE 4,10 *** TFMF - TFM FLAGS. * * FLAGS - * 0010 = NOTIFY OPERATOR ON ANY ERROR. TFMF BSS 0 VFD 8/0 RESERVED FOR FUTURE USE VFD 1/0 NOTIFY OPERATOR ON ERROR VFD 3/0 RESERVED FOR FUTURE USE SPACE 4,10 *** PARAMETER BUFFER. * PFAM BSSZ 5 FAMILY NAME/INDEX PBUN BSSZ 5 USERNAME FOR CATALOG SEARCH PBUF BSSZ TFPL*5 PARAMETER BUFFER SPACE 4,10 *** FET PARAMETER BUFFER (PP BYTE POSITIONS). PESN EQU FBES*5+PBUF EXTERNAL VOLUME SERIAL NUMBER (36 BITS) PFLG EQU FBES*5+3+PBUF MISC FLAGS PFTD EQU FBTD*5+PBUF TAPE DESCRIPTORS (60 BITS) PVSN EQU FBVS*5+PBUF INTERNAL VOLUME SERIAL NUMBER (36 BITS) PBFA EQU PVSN+3 FILE ACCESSIBILITY (6 BITS) PBSN EQU PVSN+3 FILE SECTION NUMBER (18 BITS) POFI EQU FBFI*5+PBUF FILE IDENTIFIER (OLD - 102 BITS) PBQN EQU POFI+10B FILE SEQUENCE NUMBER (18 BITS) PBSI EQU FBSI*5+PBUF SET IDENTIFIER (36 BITS) PBVN EQU PBSI+3 VERSION NUMBER (9 BITS) PBGN EQU PBSI+3 GENERATION NUMBER (15 BITS) PNFI EQU FBNI*5+PBUF FILE IDENTIFIER (NEW - 102 BITS) PBCE EQU PNFI+11 CLEAR ERROR FLAG (UPPER 6 BITS) PBAN EQU PNFI+11 CHANGE CHARGE/PROJECT (LOWER 6 BITS) PBCR EQU FBCR*5+PBUF LABEL CREATION/RETENTION DATE (60 BITS) PAUN EQU FBUN*5+PBUF ALTERNATE USERNAME (42 BITS) PBTO EQU PAUN+3 TAPE OPTIONS (LOWER 18 BITS) PUCW EQU PAUN USER CONTROL WORD (60 BITS) PPWD EQU FBPW*5+PBUF FILE PASSWORD (42 BITS) PBAC EQU PPWD+3 AUDIT ACCESS MODE (LOWER 6 BITS) PBCT EQU PPWD+4 FILE CATEGORY (UPPER 6 BITS) PBMD EQU PPWD+4 FILE ACCESS MODE (LOWER 6 BITS) SPACE 4,10 *** VSN PARAMETER BUFFER (PP BYTE POSITIONS). PVES EQU VBES+PBUF EXTERNAL VSN PVCI EQU VBCI+PBUF CATALOG RANDOM INDEX PVVS EQU VBVS+PBUF INTERNAL VSN PVRC EQU VBRC+PBUF REEL COUNT (UPPER 6 BITS) PVST EQU VBST+PBUF VSN STATUS (I8 BITS) PVFV EQU VBFV+PBUF FIRST VSN OF SET PVJS EQU VBJS+PBUF EJT ORDINAL PVNV EQU VBNV+PBUF NEXT VSN OF SET (36 BITS) TITLE OVERLAYABLE SUBROUTINES (LEVEL 1). SPACE 4,10 *** LEVEL 1 OVERLAYS. * * LEVEL 1 OVERLAYABLE CODE WILL BE DESTROYED BY * AN OVERLAY LOAD AT *OVL1*. OVL1 EQU * DEFINE FIRST LEVEL OVERLAY ADDRESS SPACE 4 QUAL PRESET SPACE 4,10 ** LOCAL DIRECT CELL LOCATIONS. SI EQU S2+2 SUBSYSTEM ID FT EQU S2+2 - S2+3 FET FIRST POINTER IN EQU S2+4 - S3+0 FET IN POINTER OT EQU S3+1 - S3+2 FET OUT POINTER LM EQU S3+3 - S3+4 FET LIMIT POINTER CN EQU FN - FN+4 FAMILY NAME (COMPFAT) FA EQU S1 FNT ORDINAL (COMPSAF) MAGF SPACE 4,10 *** MAGF - *MAGNET* REQUEST FUNCTION. * * THIS FUNCTION CAN ONLY BE CALLED BY *MAGNET*. * *MAGNET* WILL ISSUE THIS REQUEST WITH A SUB- * FUNCTION CODE IN BYTE 0 OF UDT+UTMS, AND CALL * TFM WITHOUT AUTO-RECALL. THIS IS THE ONLY * TFM RA+1 REQUEST VALIDATED FOR NO AUTO-RECALL. * * ENTRY (FC) = MAGF. * (IR+4) = UDT ADDRESS. * * EXIT (TFMA) = OVERLAY NAME. * (TFMB) = PROCESSOR ADDRESS. * (TFMC) = CATALOG ACCESS MODE. * (UDTA) = UDT ADDRESS. * * USES CM - CM+4, S1 - S1+4, T1. * * CALLS CCP, CRS, GUO, TTB. * * MACROS ERROR, FCN, MULT4, UDTRD, UDTWT. * MAG SUBR ENTRY/EXIT LDD IR+4 STM UDTA RJM CRS CHECK RECALL STATUS NJN MAG1 IF CALLED WITH AUTO-RECALL LDD SI CHECK SUBSYSTEM ID LMK MTSI NJN MAG1 IF NOT CALLED BY *MAGNET* UDTRD UTMS,/MTX/UTMS,1 LDM UTMS+4 LPN RSIL ZJN MAG1 IF INTERLOCK NOT SET LDM UTMS SET SUBFUNCTION CODE ZJN MAG1 IF INCORRECT FUNCTION SBN 1 MULT4 MULTIPLY (FUNCTION-1)*4 ADC -MAGAL MJN MAG2 IF LEGAL FUNCTION MAG1 ERROR ILR *TFM INCORRECT REQUEST.* MAG2 LDM MAGA,T1 SET OVERLAY NAME LPN 77 STM TFMA LDM MAGA+1,T1 SET PROCESSOR ADDRESS STM TFMB LDM MAGA+2,T1 SET FILE ACCESS MODE STM TFMC UDTRD S1,/MTX/UTCI,1 LDD S1+1 ZJN MAG3 IF NO *POSMF* IN PROGRESS UDTRD CM,/MTX/UCIB,1 LDD CM SHN -2 LPC 377 LMN 22 ZJN MAG3 IF *CIO* FUNCTION NOT *POSMF* * UJN MAG3 (*SKIP SETTING FUNCTION TO *CPPS*) MAGB EQU *-1 LDM UTMS+4 SET *RE-ISSUE REQUEST* SCN RSRR LMN RSRR STM UTMS+4 LDN CPPS*4-4 SET *CPPS* INTERNAL FUNCTION STD T1 ISTORE MAGB,(UJN MAG3 ) SKIP SETTING FUNCTION TO *CPPS* LJM MAG2 RESET FUNCTION MAG3 LDM TFMC SHN 21-12 MJN MAG5 IF NOT CHANGING CONTROL POINTS RJM CCP CHANGE TO USER CONTROL POINT ZJN MAG5 IF CONTROL POINT CHANGED MAG4 LJM MAG7 JOB NOT AT CONTROL POINT MAG5 UDTRD PBUN,/MTX/UUFN,1 UDTRD PESN,/MTX/UESN,1 UDTRD PVSN,/MTX/UISN,1 LDC 7S12+PBUN RJM TTB TRIM TRAILING BLANKS LDM TFMC CHECK IF PARAMETER BLOCK NEEDS UPDATE SHN 21-11 PJN MAG6 IF NO UPDATE FROM UDT NEEDED RJM GUO GET USER OPTIONS FROM UDT MAG6 LJM MAGX RETURN MAG7 LDM UTMS+4 SET REISSUE REQUEST SCN RSRR LMN RSRR STM UTMS+4 LDM UTMS+3 SET WAIT FOR JOB ROLLIN SCN WUJR LMN WUJR STM UTMS+3 MAG8 LJM EML EXIT TO MAIN LOOP MAGA FCN BEGIN FCN AVSS,AVF,2000+/PFM/PTWR ADVANCE VSN FILE FCN CPPS,CPP,2000+/PFM/PTUP CLEAR *POSMF* CATALOG POINTER FCN RFVS,AVF,2000+/PFM/PTUP REWIND TO FIRST VOLUME FCN RTFS,RRF,3000+/PFM/PTUP RETURN/RESERVE TAPE FILE FCN UCES,UCE,3000+/PFM/PTWR UPDATE CATALOG ENTRY FCN VMFS,VMF,1000+/PFM/PTWR VALIDATE MULTI-FILE SET FCN VTLS,VTL,3000+/PFM/PTWR VERIFY TAPE LABELS MAGA FCN END RSXF SPACE 4,10 *** RSXF - *RESEX* REQUEST FUNCTION. * * THIS FUNCTION IS CALLED ONLY BY *RESEX* ON * FIRST REEL ASSIGNMENT. IT MUST BE CALLED * WITH AUTO-RECALL SET BY A JOB WITH AN SSJ= * ENTRY POINT. * * ENTRY (FC) = RSXF. * (IR+3 - IR+4) = FET ADDRESS. * * EXIT (TFMA) = OVERLAY NAME. * (TFMB) = PROCESSOR ADDRESS. * (TFMC) = CATALOG ACCESS MODE. * * USES CM - CM+4, S1 - S1+4, T1. * * CALLS BPB, CFS, SUL. * * MACROS ERROR, FCN, LDA, MULT4. RSX SUBR ENTRY/EXIT LDN SSTL CHECK IF TMS IS ENABLED CRD CM LDD CM+2 SHN 21-0 PJN RSX1 IF TMS ENABLED ERROR TMD *TMS DISABLED.* RSX1 LDD CP CHECK FOR SSJ= ADC SEPW CRD CM LDD CM SHN 21-2 PJN RSX2 IF NO SSJ= ENTRY POINT LDA IR+3,REL SET SUBFUNCTION CODE CRD S1 LDD S1+4 SHN -3 LPN 77 ZJN RSX2 IF INCORRECT FUNCTION SBN 1 MULT4 MULTIPLY (FUNCTION-1)*4 ADC -RSXAL MJN RSX3 IF LEGAL FUNCTION RSX2 ERROR ILR *TFM INCORRECT REQUEST.* RSX3 LDM RSXA,T1 SET OVERLAY NAME LPN 77 STM TFMA LDM RSXA+1,T1 SET PROCESSOR ADDRESS ZJN RSX2 IF NOT DEFINED STM TFMB LDM RSXA+2,T1 SET FILE ACCESS MODE STM TFMC LDM RSXA+3,T1 RJM CFS CHECK FET STATUS RJM BPB BUILD PARAMETER BLOCK LDM BPBA ADDRESS OF USERNAME STD T0 LDI T0 ZJN RSX4 IF NO USERNAME RJM SUL SET UDT ADDRESS FROM LOCAL FILE LJM RSXX RETURN RSX4 ERROR TPI *TMS PROCESSING INHIBITED.* RSXA FCN BEGIN FCN RFAS,RFA,/PFM/PTWR,4020 FIRST-REEL ASSIGNMENT FCN RAPS,RAP,/PFM/PTWR,4020 ABORT PROCESSING FCN MFAS,MFA,/PFM/PTWR,4020 MULTI-FILE SET ASSIGNMENT RSXA FCN END SSJF SPACE 4,10 *** SSJF - SSJ= REQUEST FUNCTION. * * THIS FUNCTION IS CALLED ONLY BY *TFSP*, THE * TMS TAPE FILE SUPERVISOR. IT MUST BE CALLED * WITH AUTO-RECALL SET BY A JOB WITH A SSJ= * ENTRY POINT. * * ENTRY (FC) = SSJF. * (IR+3 - IR+4) = FET ADDRESS. * * EXIT (TFMA) = OVERLAY NAME. * (TFMB) = PROCESSOR ADDRESS. * (TFMC) = CATALOG ACCESS MODE. * * USES CM - CM+4, S1 - S1+4, T1. * * CALLS BPB, CFS, CRS. * * MACROS ERROR, FCN, LDA, MULT4. SSJ SUBR ENTRY/EXIT RJM CRS CHECK RECALL STATUS ZJN SSJ1 IF NOT CALLED WITH AUTO-RECALL LDD CP ADC SEPW CRD CM LDD CM CHECK FOR SSJ= ENTRY POINT SHN 21-2 PJN SSJ1 IF NOT SSJ= JOB LDA IR+3,REL SET SUBFUNCTION CODE CRD S1 LDD S1+4 SHN -3 LPN 77 ZJN SSJ1 IF INCORRECT FUNCTION SBN 1 MULT4 MULTIPLY (FUNCTION-1)*4 ADC -SSJAL MJN SSJ2 IF LEGAL REQUEST CODE SSJ1 ERROR ILR *TFM INCORRECT REQUEST.* SSJ2 LDM SSJA,T1 SET OVERLAY NAME LPN 77 STM TFMA LDM SSJA+1,T1 SET PROCESSOR ADDRESS ZJN SSJ1 IF NOT DEFINED STM TFMB LDM SSJA+2,T1 SET FILE ACCESS MODE STM TFMC LDM SSJA+3,T1 RJM CFS CHECK FET STATUS RJM BPB BUILD PARAMETER BLOCK LJM SSJX RETURN SSJA FCN BEGIN FCN AUCS,AUD,/PFM/PTRU,20 AUDIT TAPE CATALOG FCN CUAS,CUA,/PFM/PTUP,4005 CLEAR UTILITY ACTIVE FCN DVES,DVE,/PFM/PTWR,5 DELETE VSN ENTRY(S) FCN GNSS,GNS,/PFM/PTWR,7 GET NEXT SCRATCH FCN ICES,ICE,/PFM/PTWR,20 INSERT CATALOG ENTRY FCN ISFS,ISF,/PFM/PTWR,4005 INITIALIZE FAMILY CATALOG FCN IUES,IUE,/PFM/PTWR,5 INSERT USERNAME ENTRY(S) FCN LAES,LAE,/PFM/PTRU,7 LIST ADMIT ENTRY(S) FCN LVES,LVE,/PFM/PTUP,5 LIST VSN ENTRY(S) FCN RAES,RAE,/PFM/PTWR,7 REPLACE/ADD ADMIT ENTRY(S) FCN RCES,RCE,/PFM/PTUP,20 REPLACE CATALOG ENTRY FCN RDRS,RDR,/PFM/PTRU,7 BLOCK READ REQUEST FCN RTCS,RLS,/PFM/PTUP,4020 RELEASE TAPE CATALOG FCN RVES,RAV,/PFM/PTWR,5 REPLACE/ADD VSN ENTRY(S) FCN SUAS,SUA,/PFM/PTUP,4005 SET UTILTY ACTIVE FCN WRRS,WRR,/PFM/PTUP,7 BLOCK REWRITE REQUEST SSJA FCN END TCSF SPACE 4,10 *** TCSF - TFM COMMAND FUNCTION. * * THIS FUNCTION REQUIRES NO SPECIAL VALIDATION * AND IS USED TO PROCESS TMS SPECIFIC * COMMAND REQUESTS. IT MUST BE CALLED WITH * AUTO-RECALL SET AND TMS ENABLED. * * ENTRY (FC) = TCSF. * (IR+3 - IR+4) = FET ADDRESS. * * EXIT (TFMA) = OVERLAY NAME. * (TFMB) = PROCESSOR ADDRESS. * (TFMC) = CATALOG ACCESS MODE. * * USES CM - CM+4, S1 - S1+4, T1. * * CALLS BPB, CFS, CRS. * * MACROS ERROR, FCN, LDA, MULT4. TCS SUBR ENTRY/EXIT LDN SSTL CHECK IF TMS IS ENABLED CRD CM LDD CM+2 SHN 21-0 PJN TCS1 IF TMS ENABLED ERROR TMD *TMS DISABLED.* TCS1 RJM CRS CHECK RECALL STATUS ZJN TCS2 IF NOT CALLED WITH AUTO-RECALL LDA IR+3,REL SET SUBFUNCTION CODE CRD S1 LDD S1+4 SHN -3 LPN 77 ZJN TCS2 IF INCORRECT FUNCTION SBN 1 MULT4 MULTIPLY (FUNCTION-1)*4 ADC -TCSAL MJN TCS3 IF LEGAL FUNCTION TCS2 ERROR ILR *TFM INCORRECT REQUEST.* TCS3 LDM TCSA,T1 SET OVERLAY NAME LPN 77 STM TFMA LDM TCSA+1,T1 SET PROCESSOR ADDRESS ZJN TCS2 IF NOT DEFINED STM TFMB LDM TCSA+2,T1 SET FILE ACCESS MODE STM TFMC LDM TCSA+3,T1 RJM CFS CHECK FET STATUS RJM BPB BUILD PARAMETER BLOCK LDM BPBA ADDRESS OF USERNAME STD T0 LDI T0 ZJN TCS4 IF NO USERNAME LJM TCSX RETURN TCS4 ERROR TPI *TMS PROCESSING INHIBITED.* TCSA FCN BEGIN FCN RSVS,RSV,/PFM/PTUP,4005 RESERVE FCN ADMS,ADM,/PFM/PTWR,4020 ADMIT FCN AUDS,AUD,/PFM/PTRU,20 AUDIT FCN AMDS,AMD,/PFM/PTUP,4020 AMEND FCN RLSS,RLS,/PFM/PTUP,4020 RELEASE FCN GVSS,GVS,/PFM/PTRU,5 GET VSN TCSA FCN END SPACE 4 TITLE RESIDENT SUBFUNCTIONS (LEVEL 2). CUAS SPACE 4,10 *** CUAS - CLEAR UTILITY ACTIVE. * * *CUAS* IS CALLED ONLY BY *TFSP* TO CLEAR THE * INTERLOCKS WHICH WERE SET BY A PREVIOUS CALL. * * ENTRY (BA) = BUFFER ADDRESS. * (BP) = BUFFER POINTER. * (FA) = CATALOG FNT ORDINAL. * (RI - RI+1) = RANDOM ADDRESS OF *TMST* * *TMST* READ TO (BA). * * EXIT *TMST* REWRITTEN. * TMS EVENT ISSUED. * * USES CM - CM+4. * * CALLS WRP. * * MACROS MONITOR. CUA ENTRY ENTRY/EXIT LDM SBST+1,BP CLEAR UTILITY ACTIVE INTERLOCK SCN UITS STM SBST+1,BP RJM WRP WRITE RANDOM PRU LDN ZERL ENTER TMS EVENT CRD CM LDN ESUA STD CM+4 MONITOR EATM UJN CUAX RETURN SUAS SPACE 4,10 *** SUAS - SET UTILITY ACTIVE. * * *SUAS* IS USED BY *TFSP* TO SET THE UTILITY * INTERLOCK SO THAT ONLY *TFSP* CAN HAVE * ACCESS TO THE CATALOG. * * ENTRY (BA) = BUFFER ADDRESS. * (BP) = BUFFER POINTER. * (FA) = CATALOG FNT ORDINAL. * *TMST* READ TO (BA). * * EXIT UTILITY ACTIVE AND JOB SEQUENCE * NNUMBER SET IN *TMST*. * * USES CM - CM+4. * * CALLS WRP. SUA ENTRY ENTRY/EXIT LDM SBST+1,BP SET UTILITY INTERLOCK STATUS SCN UITS LMN UITS STM SBST+1,BP RJM WRP WRITE RANDOM PRU UJN SUAX RETURN VMF SPACE 4,10 *** VMF - VALIDATE MULTI-FILE SET ACCESS. * * ENTRY (UTMS+2) = 0 IF FILE NOT WRITTEN TO. * * EXIT TO *RDC* IF CURRENT FILE WAS WRITTEN ON. * TO *PMF* IF CURRENT FILE WAS ONLY READ. * * CALLS CME, PMF, RDC. * * MACROS EXOVL. VMF ENTRY ENTRY/EXIT RJM CME CHECK FOR MEDIA ERROR LDM UTMS+2 NJN VMF1 IF FILE WRITTEN TO EXOVL PMF PROCESS MULTI-FILE REQUEST VMF1 EXOVL RDC RELEASE DELETED CATALOG ENTRIES AVF SPACE 4,10 *** AVF - ADVANCE VSN FILE. * * *AVF* CALL *CME* TO DETERMINE IF ERROR AND MAINTENANCE FLAGS * SHOULD BE SET, AND CALL *AVS* TO SET THE NEXT VOLUME * OF TAPE IN THE UDT. * * ENTRY NONE. * * EXIT TO *AVS* TO ADVANCE VSN FILE. * * CALLS AVS, CME. * * MACROS EXOVL. AVF ENTRY ENTRY/EXIT RJM CME CHECK FOR MEDIA ERRORS EXOVL AVS ADVANCE VSN FILE RRF SPACE 4,10 *** RRF - RETURN/RESERVE TAPE FILE. * * *RRF* CALL *CME* TO DETERMINE IF ERROR AND MAINTENANCE FLAGS * SHOULD BE SET AND CALL *RTF* TO PROCESS RETURN TAPE FILES. * * ENTRY NONE. * * EXIT TO *RTF* TO RETURN TAPE FILES. * * CALLS CME, RTF. * * MACROS EXOVL. RRF ENTRY ENTRY/EXIT RJM CME CHECK FOR MEDIA ERRORS EXOVL RTF RETURN TAPE FILES. CME SPACE 4,10 *** CME - CHECK FOR MEDIA ERRORS. * * ENTRY NONE. * * EXIT THE ERROR AND MAINTENANCE FLAGS ARE SET IN THE VSN * ENTRY, AND DATA ERROR WILL BE FLAGGED IN THE * CATALOG ENTRY, IF THE UNRECOVERED FLAG IS SET. * * USES BA, CI, KA, RI - RI+1, * * CALLS GIB, MBP, RRP, VIS, VSP, WRP. * * MACROS SAVEP, UDTRD, UDTWT. CME5 LDN 0 STM UTMS+1 CLEAR THE RECOVERED ERROR COUNT LDM UTMS+4 LPC 7577 STM UTMS+4 CLEAR THE UNRECOVERED ERROR FLAG UDTWT UTMS,/MTX/UTMS,1 LDC BUF0 RESTORE SYSTEM BLOCK STD BA LDN TMSB STD RI+1 SHN -14 STD RI RJM GIB GET INITIAL BLOCK LDM CWFE,BA RJM MBP MOVE BUFFER POINTERS SAVEP CPSB SAVE BUFFER POINTERS CME SUBR ENTRY/EXIT UDTRD CM,/MTX/UTCI,1 READ CATALOG ENTRY LDD CM+3 SHN 14 STD CI SHN -14 STD RI LDD CM+4 STD RI+1 LDC BUF0 SET BUFFER STD BA RJM RRP GET INITIAL BLOCK (CATALOG) RJM VSP VERIFY/SET CATALOG POINTERS MJP CMEX IF ERROR IN CATALOG INDEX LDM UTMS+4 SHN 21-7 MJN CME2 IF UNRECOVERED ERROR FLAG SET LDC REMT NJN CME1 IF NOT DISABLES RECOVERED ERROR THRESHOLD LJM CME5 CLEAR THE UNRECOVERED ERROR FLAG CME1 SBM UTMS+1 MJN CME3 IF COUNT GREATER THAN THRESHOLD LIMIT ZJN CME3 IF COUNT EQUAL TO THRESHOLD LIMIT LJM CME5 IF COUNT LESS THAN THRESHOLD LIMIT CME2 LDM CBST,BP SCN 2 LMN 2 STM CBST,BP SET DATA ERROR FLAG IN CATALOG ENTRY RJM WRP WRITE RANDOM PRU CME3 LDC PESN FIND CURRENT VSN STD KA RJM VIS VSN INDEXED SEARCH ZJN CME4 IF VSN FOUND LJM CMEX RETURN CME4 LDM VBST,BP SCN HMVS/10000 LMN HMVS/10000 STM VBST,BP SET MAINTENANCE FLAG IN VSN ENTRY LDM VBST+1,BP SCN ERVS LMN ERVS STM VBST+1,BP SET ERROR FLAG IN VSN ENTRY RJM WRP WRITE RANDOM PRU LJM CME5 CLEAR UNRECOVERED FLAG SPACE 4 *** COMMON DECKS. BSE$ EQU 1 DEFINE BSE - BACKSPACE ON ENTRY GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK GNL$ EQU 1 DEFINE GNL - GET NEXT LINK GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER SVB$ EQU 1 DEFINE SVB - SET VSN BUSY TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT UTR$ EQU 1 DEFINE UTR - UPDATE TRT VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS *CALL COMPTFM TITLE PRESET TAPE FILE MANAGER (LEVEL 2). PRS SPACE 4,10 ** PRS - PRESET PROGRAM. * * ENTRY (FC) = RA+1 REQUEST FUNCTION. * * EXIT (BUF0) = *TMST* FROM CATALOG. * (MFID) = MACHINE ID. * * USES CM - CM+4, CN - CN+4, S2 - S2+4, FC, FO, FN - FN+4, * T1, T3. * * CALLS AFC, AST, EML,MAG , RCL, RSX, SFN, SSJ, TCS. * * MACROS COMPARE, ERROR, INDEX, MMOVE. PRS SUBR ENTRY/EXIT LDN 0 CLEAR CATALOG ADDRESS STD FO LDD CP READ JOB STATUS ADN STSW CRD CN ADN JCIW-STSW READ SUBSYSTEM ID CRD S2 LDD CN+1 NJP EML IF ERROR FLAG SET LDC MMFL SET MACHINE ID CRD CM LDD CM STM MFID LDD IR+2 CHECK FUNCTION CODE LPN 77 STD FC LDD FC SBN MXNR MJN PRS2 IF LEGAL REQUEST TYPE PRS1 ERROR ILR *TFM INCORRECT REQUEST.* PRS2 LDM PRSB,FC SET PROCESSOR ADDRESS STM PRSA RJM ** PRSA EQU *-1 (PROCESSOR ADDRESS) LDM TFMC SHN 21-13 MJP PRSX IF NOT ATTACHING THE CATALOG LDD FC CHECK ACCESS TYPE LMN SSJF NJN PRS3 IF NOT PROCESSING LOCAL FILE LDA IR+3,REL CRD FN LDD FN ZJN PRS3 IF NOT PROCESSING LOCAL FILE LDM TFMC SET LOCAL FILE MODE SCN 77 LMN /PFM/PTLM STM TFMC UJN PRS6 SET FAMILY NAME * PRESET FAST ATTACH CATALOG ACCESS. PRS3 LDK AFAAL SET SYSTEM FILE *AFA* STD T1 PRS4 SOD T1 MJN PRS5 IF SUBROUTINE MOVED LDM PRSD,T1 STM AFAA,T1 UJN PRS4 CHECK NEXT WORD OF ROUTINE PRS5 LDK FNTP GET SYSTEM FNT ADDRESS CRD CM LDD CM SAVE SYSTEM FNT ADDRESS SHN 14 ADD CM+1 STM AFAB+1 SHN -14 RAM AFAB PRS6 RJM SFN SET FAMILY NAME RJM AFC ACCESS FAMILY CATALOG LDD FC LMN SSJF ZJN PRS7 IF SSJF FUNCTION LDM SBLF,BP PRS7 ZJP PRS9 IF NOT LINKED CATALOG LDM TFMC SET MODE LPN 77 STD T2 LDD FO SET FNT ORDINAL STD T1 LDN RFAS RETURN CURRENT CATALOG RJM ARF LDN 0 CLEAR FNT ORDINAL STD FO MMOVE PFAM,,PRSA,,FNKL SAVE CURRENT FAMILY NAME MMOVE SBLF,BP,PFAM,,FNKL SET LINKED FAMILY NAME RJM AFC ACCESS LINKED CATALOG LDD BP SET PERMITTED FAMILY LIST ADDRESS ADK SBPF STD T3 PRS8 COMPARE ,T3,PRSA,,FNKL CHECK NEXT ENTRY ZJN PRS9 IF MATCH LDN 5 INCREMENT ENTRY ADDRESS RAD T3 SBD BP LMK SBPF+PAFL*5 NJN PRS8 IF NOT END OF ENTRIES ERROR CNA *LINKED CATALOG NOT ACCESSIBLE.* PRS9 LDM SBST+1,BP CHECK CATALOG STATUS SHN 21-2 PJN PRS11 IF NOT CATALOG ERROR LDD FC CHECK FUNCTION LMN SSJF NJN PRS10 IF NOT SSJ= FUNCTION LDA IR+3,REL CHECK SUBFUNCTION CRD CM LDD CM+4 SHN -3 LPN 77 LMN ISFS NJN PRS11 IF NOT *ISF* SUBFUNCTION LDD CM+4 SET OPERATOR NOTIFICATION REQUIRED LPN 4 SHN 3-2 RAM TFMF PRS10 ERROR FCE *(FAMILY) CATALOG ERROR.* PRS11 LDM SBST+1,BP CHECK IDLE FLAG SHN 21-1 PJN PRS12 IF NOT SUSPEND ACTIVITY LDD FC LMN RSXF NJN PRS12 IF NOT CALLED BY *RESEX* ERROR SFA *(FAMILY) ACTIVITY SUSPENDED.* PRS12 LDM SBST+1,BP CHECK UTILITY INTERLOCK SHN 21-0 PJN PRS14 IF NOT UTILITY INTERLOCK LDD FC LMN SSJF ZJN PRS14 IF CALLED BY SSJ= JOB PRS13 ERROR TUA *TMS UTILITY ACTIVE.* PRS14 LDM CWUN,BA ZJN PRS15 IF NO CATALOG USERNAME COMPARE PBUN,,CWUN,BA,UNKL NJN PRS15 IF NOT USERNAME INTERLOCK FROM *TFSP* LDD FC LMN SSJF NJN PRS13 IF NOT *TFSP* CALL PRS15 LDM SBHP,BP SET HOLE POINTER STM CPEB LDM SBHP+1,BP STM CPEB+1 LJM PRSX RETURN PRSB INDEX TABLE OF FUNCTION PROCESSORS INDEX TCSF,TCS COMMAND PROCESSOR INDEX RSXF,RSX *RESEX* PROCESSOR INDEX MAGF,MAG *MAGNET* PROCESSOR INDEX SSJF,SSJ SSJ= PROCESSOR INDEX MXNR PRSD BSS 0 SYSTEM FILE *AFA* ROUTINE LOC AFAA CFI FNT GET FST ADDRESS FOR SYSTEM FILE AFAB ADC ** ADN FSTG * NFA FO,R GET FST ADDRESS FOR LOCAL FILE * ADN FSTL AFAAL EQU *-AFAA ROUTINE LENGTH LOC *O TITLE PRESET SUBROUTINES (LEVEL 2). BPB SPACE 4,10 ** BPB - BUILD PARAMETER BLOCK. * * BUILDS A PARAMETER BLOCK FROM CONTROL POINT * VALUES AND THE FET. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT (PBUN - PBUN+4) = ACCESS USERNAME. * (PCHG - PCHG+4) = CHARGE NUMBER. * (PPRJ - PPRJ+12B) = PROJECT NUMBER. * (PBUF - PBUF+55B) = FET PARAMETERS. * * USES CM - CM+4, T1, T2. * * CALLS CCS. * * MACROS CLEAR, LDA. BPB SUBR ENTRY/EXIT LDA IR+3,REL SET PARAMETER BLOCK WORD COUNT ADN 1 CRD CM LDD CM+3 SHN -6 SBN TFFP-5 ZJN BPBX IF NO FET PARAMETER BLOCK MJN BPBX IF NO FET PARAMETER BLOCK STD T1 SBN TFPL+1 MJN BPB1 IF FET LENGTH .LT. MAXIMUM LDN TFPL SET FET PARAMETER LENGTH STD T1 BPB1 LDA IR+3,REL GET FET PARAMETER BLOCK CRD CM ADN TFFP CRM PBUF,T1 LDA PAUN+3,ABS SAVE TAPE MANAGER OPTIONS STM BPBB+1 SHN -14 RAM BPBB LDM PAUN ZJN BPB3 IF NOT ALTERNATE USER ACCESS LDD FC LMN TCSF NJN BPB2 IF NOT COMMAND LDD CM+4 SHN -3 LPN 77 LMN AUDS NJN BPB3 IF NOT *AUDIT* SUBFUNCTION BPB2 LDC PAUN SWAP USERNAMES STM BPBA MMOVE PAUN,,PBUN,,UNKL BPB3 LDD CP CHECK FOR SSJ= JOB ADC SEPW CRD CM LDD CM SHN 21-2 PJN BPB4 IF NOT SSJ= JOB LDA CM+3 CHECK FOR SSJ= BLOCK ZJN BPB4 IF NO SSJ= BLOCK LDA CM+3,REL GET USERNAME FROM SSJ= BLOCK ADN /SSJ/UIDS UJN BPB5 SET USERNAME BPB4 LDD CP GET USERNAME FROM CONTROL POINT ADN UIDW BPB5 CRM PBUN,ON SET USERNAME BPBA EQU *-1 (PAUN IF ALTERNATE USER) LDM PAUN+3 SET TAPE MANAGER OPTIONS. SCN 77 STM PAUN+3 LDC ** BPBB EQU *-2 (TO=OPTIONS FROM FET) STM PBTO+1 SHN -14 RAM PBTO COMPARE PBUN,,PAUN,,UNKL NJN BPB6 IF NOT USERS CATALOG CLEAR PAUN,,UNKL LDC PBUN USERNAME IN PBUN STM BPBA BPB6 LJM BPBX RETURN AFC SPACE 4,10 ** AFC - ACCESS FAMILY TAPE CATALOG. * * ENTRY (FO) = 0. * (FN - FN+4) = FNT ENTRY IF LOCAL FILE MODE. * * EXIT (A) = 0 IF CATALOG ATTACHED. * (A) .NE. 0 IF CATALOG BUSY. * (FO) = GLOBAL FNT ORDINAL OR NFL ADDRESS OF CATALOG. * SYSTEM BLOCK READ TO BUF0 BUFFER IF CATALOG ATTACHED. * * USES BA, CM - CM+4, FO, FN - FN+4, RI - RI+1, T1, T5 - T5+4. * * CALLS AFA, ARF, FAT, GIB, IRA, MBP, SAF, SFB, UTR. * * MACROS ERROR, MMOVE, SAVEP. AFC SUBR ENTRY/EXIT LDM TFMC LPN 77 LMN /PFM/PTLM NJN AFC3 IF NOT LOCAL FILE MODE RJM SAF SEARCH FOR ASSIGNED FILE LDD FA SET NFL ADDRESS ZJN AFC1 IF FILE NOT FOUND STD FO SET FILE ADDRESS RJM SFB SET FILE BUSY ZJP AFC4 IF FILE SET BUSY LMN 2 ZJN AFC1 IF NAME COMPARE ERROR ERROR IOS *I/O SEQUENCE ERROR ON CATALOG.* AFC1 ERROR CNF *CATALOG NOT FOUND.* AFC2 ERROR FCE *(FAMILY) CATALOG ERROR.* AFC3 MMOVE AFCA,,CM,,PFKL SET CATALOG NAME MMOVE PFAM,,FN,,PFKL SET FAMILY NAME RJM FAT SEARCH FOR FAST ATTACH FILE NJN AFC1 IF FILE NOT FOUND LDD T1 SET GLOBAL FNT ORDINAL STD FO LDM TFMC SET FILE ACCESS MODE LPN 77 STD T2 LDN /COMSCPS/AFAS ATTACH CATALOG FILE RJM ARF RJM UTR UPDATE TRT AFC4 LDD FO GET FST ADDRESS RJM AFA CRD T5 SET EQUIPMENT RJM IRA INITIALIZE RANDOM ADDRESS PROCESSING SFA EST,T5 READ EST ENTRY CRD CM LDD CM+4 READ MACHINE INDEX SHN 3 ADN DULL CRD CM LDD CM+2 SET MACHINE INDEX-1 LPN 17 STM CDMX LDC BUF0 READ SYSTEM BLOCK STD BA LDN TMSB STD RI+1 SHN -14 STD RI RJM GIB GET INITIAL BLOCK (SYSTEM BLOCK) LDN 6 COUNT = 1 CM WORD + 2 HEADER BYTES - 1 STD T1 AFC5 LDM BUF0,T1 LMM AFCB,T1 NJP AFC2 IF NOT SYSTEM BLOCK SOD T1 PJN AFC5 IF MORE TO COMPARE LDM CWFE,BA RJM MBP MOVE BUFFER POINTER SAVEP CPSB SAVE BUFFER POINTERS LDN 0 SET NO ERROR LJM AFCX RETURN AFCA VFD 48D/0L"TMFC" TMS CATALOG NAME AFCB CON 2 NEXT SECTOR CON 100 WORD COUNT CON 0 SYSTEM LEVEL CON 0 UNUSED WORDS CON 74 ENTRY LENGTH CON 1 NUMBER ENTRIES CON 4 FIRST WORD OF ENTRY CCP SPACE 4,10 ** CCP - CHANGE CONTROL POINT. * * EXIT (A) = 0 IF CONTROL POINT CHANGED. * (A) .NE. 0 IF CONTROL POINT NOT CHANGED. * * USES CM - CM+4, S1 - S1+4, T1 - T5. * * MACROS MONITOR, UDTRD. CCP SUBR ENTRY/EXIT UDTRD S1,/MTX/UVRI,1 GET EJT ORDINAL SFA EJT,S1 ADK JSNE CRD CM ADK SCHE-JSNE CRD T1 LDD CM+4 LPC 176 LMN EXJS*2 NJN CCPX IF JOB ROLLED OR ROLLING OUT LDD T1+3 SET CP NUMBER ADK /COMSCPS/ALCS SET ALTERNATE CP OPTION STD CM+1 MONITOR CCAM CHANGE CONTROL POINT ASSIGNMENT LDD CM+1 NJN CCPX IF CHANGE NOT MADE LDD CP ADK TFSW CRD CM LDD CM VERIFY EJT ORDINAL LMD S1 ZJN CCP1 IF CORRECT JOB LDK /COMSCPS/ALCS SET RETURN TO MAGNET CP STD CM+1 MONITOR CCAM RETURN TO MAGNET CP LDN 1 SET CP NOT CHANGED CCP1 LJM CCPX RETURN CFS SPACE 4,10 ** CFS - CHECK FET STATUS. * * *CFS* CHECKS THE VALIDITY OF THE FET POINTERS. * * ENTRY (A) = MINIMUM FET LENGTH. * (IR+3 - IR+4) = FET ADDRESS. * * EXIT FT - FT+1 = FIRST POINTER. * IN - IN+1 = IN POINTER. * OT - OT+1 = OUT POINTER. * LM - LM+1 = LIMIT POINTER. * * USES T0, CM - CM+4. * * MACROS LDA. CFS SUBR ENTRY/EXIT STD S1 LDD IN-3 SAVE OVERLAP WORD STD T0 LDA IR+3,REL ADN 4 READ LIMIT CRD LM-3 SBN 1 READ OUT CRD OT-3 SBN 1 READ IN CRD IN-3 SBN 1 READ FIRST CRD T1 SBN 1 CRD CM LDD CM+4 SHN 21-0 MJN CFS1 IF FET COMPLETE LDD CM+3 CHECK LAST STATUS LPN 77 SHN 14 LMD CM+4 SHN -11 NJN CFS1 IF ERRORS ON PREVIOUS OPERATION LDD T0 RESTORE OVERLAP WORD STD IN-3 LDD S1 SHN 21-13 MJP CFSX IF NOT CHECKING BUFFER POINTERS LDD T1+3 SET FIRST LPN 77 STD FT LDD T1+4 STD FT+1 LDD LM CHECK LIMIT LPN 37 STD LM SHN 14 LMD LM+1 SBN 1 SHN -6 SBD FL MJN CFS2 IF LIMIT .LT. FL CFS1 ERROR BAE *BUFFER ARGUMENT ERROR.* CFS2 LDD OT CHECK OUT LPN 37 STD OT SBD LM SHN 14 ADD OT+1 SBD LM+1 PJN CFS1 IF OUT .GE. LIMIT LDD IN CHECK IN LPN 37 STD IN SBD LM SHN 14 ADD IN+1 SBD LM+1 PJN CFS1 IF IN .GE. LIMIT LDD OT CHECK OUT SBD FT SHN 14 ADD OT+1 SBD FT+1 MJN CFS1 IF OUT .LT. FIRST LDD IN CHECK IN SBD FT SHN 14 ADD IN+1 SBD FT+1 MJN CFS1 IF IN .LT. FIRST LJM CFSX RETURN GUO SPACE 4,10 ** GUO - GET USER OPTIONS FROM UDT. * * *GUO* IS USED TO OBTAIN THE USER OPTIONS, INSURING * THE PHYSICAL TAPE ATTRIBUTES IN THE CATALOG MATCH * HOW THE TAPE WAS WRITTEN. THIS IS NECESSARY IF * THE USER REQUESTS A TAPE FILE WITH THE TO=D * OPTION AND WRITES TO A EXISTING TAPE FILE. * * ENTRY (UDTA) = UDT ADDRESS. * * * USES CM - CM+4, FN - FN+4, S1 - S1+4, * S2 - S2+4, S3 - S3+4. * * MACROS LDA, MMOVE, UDTRD. GUO SUBR ENTRY/EXIT UDTRD S1,/MTX/UST1,4 LDD S1+4 GET RING STATUS SHN 4-7 LPN 1S4 STM PFTD+1 LDD FN LPC 3777 SET TAPE DESCRITPTORS STM PFTD LDD FN+2 SET FORMAT AND NOISE STM PFTD+2 UDTRD CM,/MTX/UFSN,1 LDA CM+3,ABS SET FILE SECTION NUMBER STM PBSN+1 SHN -14 STM PBSN UDTRD CM,/MTX/USID,1 MMOVE CM,,PBSI,,6 LDD CM+3 SET FILE ACCESSIBILITY SCN 77 RAM PBFA UDTRD CM,/MTX/UGNU,1 LDA CM+3,ABS SET GENERATION NUMBER STM PBGN+1 SHN -14 LPN 3 STM PBGN LDD CM+3 SET VERSION NUMBER SCN 77 SHN 6 LMD CM+2 SHN 11 SCN 7 RAM PBVN LJM GUOX RETURN SFN SPACE 4,10 ** SFN - SET FAMILY NAME. * * *SFN* SETS THE FAMILY NAME FROM THE *MST*, * OR FROM THE UDT IF CALLED BY *MAGNET*. * * ENTRY (FC) = FUNCTION CODE. * * EXIT (PFAM - PFAM+3) = FAMILY NAME * * USES CM - CM+4. * * MACROS UDTRD. SFN SUBR ENTRY/EXIT LDD FC CHECK FOR *MAGNET* CALL LMN MAGF NJN SFN1 IF NOT CALLED BY *MAGNET* UDTRD CM,/MTX/UUFN,1 LDD CM+3 LPN 77 STD CM+3 LDC FOTP READ *FOT* POINTER CRD FN LDD FN READ FWA OF *FOT* SHN 14 LMD FN+1 ADD CM+3 UJN SFN2 READ FAMILY NAME SFN1 LDD CP GET FAMILY EQUIPMENT ADN PFCW CRD CM SFA EST,CM+3 READ EST ENTRY CRD CM LDD CM+4 GET FAMILY NAME SHN 3 ADN PFGL SFN2 CRM PFAM,ON LDM PFAM+3 SCN 77 STM PFAM+3 LDN 0 STM PFAM+4 LJM SFNX RETURN SUL SPACE 4,10 ** SUL - SET UDT ADDRESS FROM LOCAL FILE. * * SETS THE RELATIVE UDT ADDRESS FROM THE * FST ENTRY OF A ASSIGNED MAGNETIC TAPE * FILE AND UPDATES THE ASSIGNMENT FET WITH * THE PARAMETERS FROM THE UDT. * * ENTRY (IR+3 - IR+4) FET ADDRESS. * * EXIT (UDTA) = UDT ADDRESS IF ASSIGNED * MAGNETIC TAPE FILE. * * PARAMETER BLOCK UPDATED. * * TO *EML* IF NON-SYMBOLIC FILE. * * USES CM - CM+4, CN - CN+4. * * CALLS GUO, SAF. * * MACROS ERROR, LDA, MMOVE, UDTRD. SUL SUBR ENTRY/EXIT LDA IR+3,REL SET FILE NAME CRD FN LDN 0 NO INITIAL SEARCH ADDRESS RJM SAF SEARCH FOR ASSIGNED FILE ZJN SULX IF FILE NOT FOUND NFA FA,R ADN FSTL CRD FS GET FST EST ENTRIES SFA EST,FS CRD CM LDD CM+3 VALIDATE MT/NT EQUIPMENT LMC 2RMT ZJN SUL1 IF 7 TRACK TAPE LMC 2RNT&2RMT ZJN SUL1 IF 9 TRACK TAPE LMC 2RCT&2RNT ZJN SUL1 IF CTS CARTRIDGE TAPE LMC 2RAT&2RCT NJP SULX IF NOT ACS CARTRIDGE TAPE SUL1 LDD FS+1 SET UDT ADDRESS ZJP SULX IF NO UDT ADDRESS STM UDTA LDD CP VALIDATE JOB ASSIGNMENT ADN TFSW CRD CN UDTRD CM,/MTX/UVRI,1 LDD CM LMD CN NJN SUL3 IF NOT EJT ORDINAL UDTRD UTMS,/MTX/UTMS,1 LDM UTMS+4 SHN 21-13 PJN SUL3 IF NOT A TMS CONTROLLED FILE UDTRD CM,/MTX/UST4,1 LDD CM SHN 21-12 PJN SUL2 IF UNLABELED FILE SHN 21-11-21+12 PJN SUL4 IF STANDARD LABELS SUL2 LJM EML EXIT TO MAIN LOOP SUL3 ERROR TPI *TMS PROCESSING INHIBITED.* SUL4 LDM PFTD UPDATE FET FROM UDT LPC 4000 STM PFTD RJM GUO GET USER OPTIONS FROM UDT LDM UTMS+4 SHN 21-10 PJN SUL2 IF NON-SYMBOLIC ACCESS LDM PBTO+1 FORCE TMS FILE, SYMBOLIC ACCESS SCN 24 LMN 24 STM PBTO+1 LJM SULX RETURN TTB SPACE 4,10 ** TTB - TRIM TRAILING BLANKS. * * ENTRY (A, 0-11) = ADDRESS OF STRING. * (A, 12-17)= STRING COUNT. * * EXIT TRAILING BLANKS CONVERTED TO BINARY ZERO. * * USES T0, T1, T2. TTB SUBR ENTRY/EXIT STD T1 SAVE ADDRESS SHN -14 STD T2 SAVE CHARACTER COUNT SHN -1 RAD T1 TTB1 LDD T2 CHECK FOR CHARACTER POSITION LPN 1 ZJN TTB2 IF EVEN CHARACTER LDI T1 PRESET ZERO CHARACTER LPN 77 STD T0 LDI T1 LOAD CHARACTER SHN -6 UJN TTB3 CHECK CHARACTER TTB2 LDI T1 PRESET ZERO CHARACTER SCN 77 STD T0 LMI T1 LOAD CHARACTER TTB3 ZJN TTB4 IF ALREADY ZERO LMN 1R NJN TTBX IF NOT BLANK LMD T0 RESTORE OTHER CHARACTER STI T1 TTB4 SOD T2 LPN 1 NJN TTB1 IF ODD CHARACTER TO DO SOD T1 DECREMENT STRING POINTER LDD T2 NJN TTB1 IF MORE TO BLANK UJN TTBX RETURN SPACE 4 *** LEVEL 2 COMMON DECKS. *CALL COMPAST *CALL COMPCRS *CALL COMPFAT EJT$ EQU 1 ASSEMBLE EJT CODE *CALL COMPGFP *CALL COMPIRA *CALL COMPSAF *CALL COMPSFB SPACE 4 ERRNG BUF0-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (ERROR PROCESSING.),OVL1 SPACE 4,10 *** TAPE MANAGER ERROR PROCESSING. * * * COMMAND OR CENTRAL PROGRAM CALLS. * * IF THE ERROR PROCESSING BIT IS SET IN THE FET, TFM * RETURNS THE ERROR CODE, SETS THE COMPLETE BIT AND ISSUE * THE DAYFILE MESSAGE. THE ERROR CODE IS RETURNED IN * WORD 0 OF THE FET BITS 9 - 16. * * IF THE ERROR PROCESSING BIT IS NOT SET, A DAYFILE * MESSAGE IS ISSUED, THE CONTROL POINT ABORTED, AND THE * PPU IS DROPPED. * * IF ERROR RETURN ADDRESS *ERAD* IS SET AND USER IS * PROCESSING ERRORS, MESSAGE WILL NOT BE ISSUED BUT WILL * BE RETURNED TO USER AT RA + ERAD. FOUR WORDS MUST * BE ALLOCATED AT *ERAD* FOR MESSAGE. * * IF THE ERROR CONDITION IS ONE THAT THE USER CAN * ROLLOUT AND WAIT ON, THE ROLLOUT INDICATOR IS * SET IN WORD 0 OF THE FET, BIT 17, AND THE * EVENT DESCRIPTION WILL BE SET IN *TERW* IN CP * AREA SO CALLING PROGRAM MAY ISSUE ROLLOUT IF IT * DESIRES TO WAIT FOR THE CONDITION TO CLEAR. * SPACE 4,10 *** COMMON SYMBOL DEFINITIONS. *CALL COMS1DS SPACE 4,10 *** DIRECT CELL LOCATIONS. CN EQU S1 -S1+4 SCRATCH WORD (5 LOCATIONS) EA EQU S2 ERROR MESSAGE ADDRESS AP EQU S2+1 ASSEMBLY POINTER HB EQU S2+2 HALF BYTE FLAG TME SPACE 4,20 ** TME - TAPE MANAGER ERROR PROCESSING. * * ENTRY (EC) = ERROR CODE. * (FO) = CATALOG FNT ORDINAL. * * USES CM - CM+4, T1 - T2. * * CALLS ABT, BEM, IEM, IOE, MMC, PRF, SSE, UEP. * * MACROS LDA, MONITOR, MULT3. TME ENTRY OVERLAY ENTRY POINT LDD CP CHECK DMP= STATUS ADC SEPW STD T1 CRD CM LDD CM LPN 20 NJN TME1 IF DMP= ENTRY POINT PRESENT LDN ZERL CRD CM CLEAR CPU COMMUNICATION WORD LDD T1 ADN SPCW-SEPW CWD CM TME1 MULT3 EC MULTIPLY (ERROR CODE)*3 ADC EMSG-3 OFFSET FOR ERROR CODE 0 STD EA RJM BEM BUILD ERROR MESSAGE RJM MMC MOVE TO MAGNET CONTROL POINT LDI EA SHN 21-2 MJP TME5 IF UNCONDITIONAL ABORT LDD FC LMN MAGF ZJN TME3 IF CALLED BY *MAGNET* LDM DFFO ZJN TME2 IF DEMAND FILE NOT ATTACHED STD T1 SET FNT ORDINAL LDN /PFM/PTUP SET MODE STD T2 LDN RFAS RETURN DEMAND FILE RJM ARF TME2 LDA IR+3,REL CHECK USER ERROR PROCESSING FLAG ADN 1 CRD CM LDD CM+1 SHN 21-10 PJP TME5 IF USER NOT PROCESSING ERRORS RJM UEP USER ERROR PROCESSING LJM TME6 CHECK FOR *TFSPE* CALL TME3 LDI EA PROCESS ERRORS FOR *MAGNET* SHN 21-3 PJP TME5 IF NON-ROLLABLE ERROR RJM IEM ISSUE ERROR MESSAGE LDD CP ADN JCIW CRD CM LDD CM+2 NJP TME4 IF JOB NOT ROLLABLE RJM SSE SET SYSTEM EVENT LDM UTMS+3 SET WAIT JOB ROLLIN SCN WUJR LMN WUJR STM UTMS+3 LDN ZERL REQUEST ROLLOUT CRD CM LDC 4000B+/COMSCPS/ROTE STD CM+1 LDD CP SHN -7 STD CM+2 MONITOR ROCM ROLLOUT CONTROL POINT TME4 LDM UTMS+4 SET REISSUE REQUEST SCN RSRR LMN RSRR STM UTMS+4 UJN TME6 CHECK FOR *TFSPE* CALL TME5 RJM IEM ISSUE ERROR MESSAGES RJM ABT ABORT USER JOB TME6 LDM TFMF CHECK FOR OPERATOR NOTIFICATION REQUIRED SHN 21-3 MJN TME7 IF OPERATOR FLAG SET LDM TFMC LPN 77 LMN /PFM/PTLM ZJN TME10 IF LOCAL FILE MODE LDI EA SHN 21-1 PJN TME8 IF NOT CALLING *TFSPE* TME7 RJM IOE INFORM OPERATOR OF ERROR TME8 LDI EA CHECK FOR PP HANG SHN 21-0 PJN TME10 IF NOT HANG CONDITION LDD FO SET FNT ORDINAL ZJN TME9 IF CATALOG NOT ATTACHED STD T1 LDM TFMC SET MODE LPN 77 STD T2 LDN RFAS RETURN CATALOG RJM ARF * LDN 0 CLEAR FNT ORDINAL STD FO TME9 MONITOR CHGM CONDITIONALLY HANG PP TME10 LJM TMEX RETURN TITLE SUBROUTINES. ABT SPACE 4,10 ** ABT - ABORT USER JOB. * * FOR ALL NON-MAGNET REQUESTS, THE FET IS SET * COMPLETE. FOR MAGNET REQUESTS, THE USER JOB * ABORT AND FUNCTION COMPLETE FLAGS ARE SET. * IN ALL CASES THE *PPET* SYSTEM ERROR FLAG * IS SET FOR THE USER JOB. * * USES CM - CM+4. * * MACROS MONITOR, UDTRD, UDTWT. ABT1 LDA IR+3,REL SET FET COMPLETE CRD CM LDD CM+4 SCN 1 LMN 1 STD CM+4 LDA IR+3,REL CWD CM ABT2 LDN ZERL SET ERROR FLAG CRD CM LDN PPET STD CM+1 MONITOR CEFM CHANGE ERROR FLAG ABT SUBR ABORT USER JOB LDD FC CHECK CALLER LMN MAGF NJN ABT1 IF NOT CALLED BY *MAGNET* LDM UTMS+4 SET ABORT USER JOB STATUS SCN RSAJ LMN RSAJ STM UTMS+4 LDD CP ADN JCIW CRD CM LDD CM+2 LMC MTSI NJN ABT2 IF NOT *MAGNET* CONTROL POINT UJN ABTX RETURN BEM SPACE 4,10 ** BEM - BUILD ERROR MESSAGE. * * ENTRY (EA) = ERROR MESSAGE CONTROL WORD. * * EXIT (MBUF) = COMPLETED ERROR MESSAGE. * * USES AP, HB. * * CALLS EQM, FMM, FNM, LFM, MVM, RAM, UNM, * VSM. * BEM SUBR ENTRY/EXIT LDC MBUF INITIALIZE ASSEMBLY POINTER STD AP CLEAR ,AP,MBML*10D LDN 0 STD HB LDI EA SHN 21-13 PJN BEM1 IF NOT EQUIPMENT MESSAGE RJM EQM BUILD EQUIPMENT MESSAGE LJM BEM7 COMPLETE ERROR MESSAGE BEM1 SHN 21-12-21+13 CHECK FAMILY MESSAGE PJN BEM2 IF NOT FAMILY NAME MESSAGE RJM FMM BUILD FAMILY NAME MESSAGE LJM BEM7 COMPLETE ERROR MESSAGE BEM2 SHN 21-11-21+12 CHECK FILE NAME MESSAGE PJN BEM3 IF NOT FILE NAME MESSAGE RJM FNM BUILD FILE NAME MESSAGE UJN BEM7 COMPLETE ERROR MESSAGE BEM3 SHN 21-10-21+11 CHECK LOCAL FILE NAME MESSAGE PJN BEM4 IF NOT LOCAL FILE NAME MESSAGE RJM LFM BUILD LOCAL FILE NAME MESSAGE LDI EA SHN 21-10 BEM4 SHN 21-7-21+10 CHECK VSN MESSAGE PJN BEM5 IF NOT VSN MESSAGE RJM VSM BUILD VSN MESSAGE UJN BEM7 COMPLETE ERROR MESSAGE BEM5 SHN 21-6-21+7 CHECK USERNAME MESSAGE PJN BEM6 IF NOT USERNAME MESSAGE RJM UNM BUILD USERNAME MESSAGE UJN BEM7 COMPLETE ERROR MESSAGE BEM6 SHN 21-5-21+6 CHECK RANDOM ADDRESS MESSAGE PJN BEM7 IF NOT RANDOM ADDRESS MESSAGE RJM RAM BUILD RANDOM ADDRESS MESSAGE BEM7 LDD EA COMPLETE ERROR MESSAGE ADN 2 STM BEMA LDM ** GET MESSAGE ADDRESS BEMA EQU *-1 (ERROR MESSAGE ADDRESS) RJM MVM MERGE VARIABLE MESSAGE LDD HB ZJN BEM8 IF BYTE FILLED AOD AP LDN 0 BEM8 STI AP SET END OF MESSAGE LJM BEMX RETURN CSZ SPACE 4,10 ** CSZ - CONVERT TRAILING SPACES TO ZEROS. * * ENTRY (A) = 6/ CC,12/ ADDR * WHERE - CC = CHARACTER COUNT. * ADDR = ADDRESS. * * USES T1, T2, T3. CSZ SUBR ENTRY/EXIT STD T1 SHN -14 ZJN CSZX IF CHARACTER COUNT NOT GIVEN STD T2 LPN 1 SET HALF BYTE FLAG STD T3 LDD T2 SET LAST WORD ADDRESS SHN -1 SBN 1 ADD T3 RAD T1 LDD T3 ZJN CSZ2 IF TERMINATE ON WORD BOUNDARY CSZ1 LDI T1 CHECK LEFT MOST CHARACTER SHN -6 LMN 1R NJN CSZX IF NOT SPACE LDI T1 LPN 77 STI T1 SOD T1 DECREMENT WORD COUNT SOD T2 DECREMENT CHARACTER COUNT ZJN CSZX IF LAST CHARACTER CSZ2 LDI T1 CHECK RIGHT MOST CHARACTER LPN 77 LMN 1R NJN CSZ3 IF NOT SPACE LDI T1 SCN 77 STI T1 SOD T2 DECREMENT CHARACTER COUNT NJN CSZ1 IF NOT LAST CHARACTER CSZ3 LJM CSZX RETURN EQM SPACE 4,10 ** EQM - BUILD EQUIPMENT MESSAGE. * * SETS EQUIPMENT AND DEVICE NUMBER IN MESSAGE. * * ENTRY (EQ) = EQUIPMENT NUMBER. * (AP) = ASSEMBLY POINTER. * * USES CM - CM+4, T1, CN. * * CALLS C2D, MVM. EQM SUBR ENTRY/EXIT LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL SHN -3 RJM C2D CONVERT TWO DIGITS STM EQMA+1 LDD EQ LPN 7 SHN 6 ADC 2R0, STM EQMA+2 SFA EST,EQ READ EST ENTRY CRD CM LDD CM+3 SET EQUIPMENT TYPE LPC 3777 STM EQMA LDD CM+4 READ MST SHN 3 ADN PFGL CRD CM LDD CM+3 SET DEVICE NUMBER RJM C2D CONVERT TWO DIGITS SHN -6 LPN 77 STD T1 LDM EQMA+4 SCN 77 ADD T1 STM EQMA+4 LDD CM+3 LPN 7 SHN 6 ADC 2R0, STM EQMA+5 LDC EQMA RJM MVM MERGE VARIABLE MESSAGE LJM EQMX RETURN EQMA DATA C*EQXXX, DNYY,* FMM SPACE 4,10 ** FMM - BUILD FAMILY NAME MESSAGE. * * SETS FAMILY NAME IN MESSAGE. * * ENTRY (PFAM - PFAM+3) = FAMILY NAME. * * CALLS MVM. * FMM SUBR ENTRY/EXIT LDM PFAM+3 INSURE END OF FAMILY NAME SCN 77 STM PFAM+3 LDC PFAM RJM MVM MOVE VARIABLE MESSAGE UJN FMMX RETURN FNM SPACE 4,10 ** FNM - BUILD FILENAME MESSAGE. * * SETS FILENAME IF MESSAGE. * * ENTRY (EC) = ERROR CODE. * (POFI - POFI+8D) = OLD FILE NAME. * (PNFI - PNFI-8D) = NEW FILE NAME. * * CALLS CSZ, MVM. FNM SUBR ENTRY/EXIT LDC FIKL*10000+POFI RJM CSZ CONVERT TRAILING SPACES TO ZEROS LDC POFI RJM MVM MOVE VARIABLE MESSAGE UJN FNMX RETURN IDM SPACE 4,10 ** IDM - ISSUE DAYFILE MESSAGE. * * ENTRY (A) = DESTINATION CODE/10000. * * CALLS DFM. IDM SUBR ENTRY/EXIT LPN 77 SET MESSAGE DESTINATION SHN 14 LMC MBUF RJM DFM ISSUE DAYFILE MESSAGE UJN IDMX RETURN IEM SPACE 4,10 ** IEM - ISSUE ERROR MESSAGES. * * DETERMINES THE DISPOSITION OF THE ERROR MESSAGES. * * ENTRY (EA) = FWA OF ERROR MESSAGE CONTROL WORD. * (CO) = CATALOG FST ORDINAL. * * EXIT ALL DAYFILE AND/OR DISPLAY MESSAGES ISSUED. * * USES BA, BP, FN - FN+4, HB, T5 - T5+4. * * CALLS IDM, MBP, RDS, WDS. * * MACROS ENDMS, MMOVE, UDTRD, UDTWT. IEM SUBR ENTRY/EXIT LDD EA SET DESTINATION CODE ADDRESS ADN 1 STD HB LDD FC CHECK CALLER LMN MAGF NJP IEM2 IF NOT CALLED BY *MAGNET* UDTWT MBUF,/MTX/UMSG,4 SET MESSAGE IN UDT BUFFER LDD CP CHECK PP ASSIGNMENT ADN JCIW CRD CM LDD CM+2 LMC MTSI ZJP IME6 IF *MAGNET* CONTROL POINT IEM2 LDI HB CHECK FOR CP DAYFILE MESSAGE SHN 21-0 PJN IEM3 IF NOT FOR CONTROL POINT DAYFILE LDN CPON/10000 RJM IDM ISSUE DAYFILE MESSAGE IEM3 LDI HB CHECK FOR SYSTEM DAYFILE MESSAGE SHN 21-1 PJN IEM4 IF NOT FOR SYSTEM DAYFILE LDN 0 RJM IDM ISSUE DAYFILE MESSAGE IEM4 LDI HB CHECK FOR ERROR LOG MESSAGE SHN 21-2 PJN IEM5 IF NOT FOR ERROR LOG LDN ERLN/10000 RJM IDM ISSUE DAYFILE MESSAGE IEM5 LDI HB CHECK FOR ACCOUNT DAYFILE MESSAGE SHN 21-3 PJN IME6 IF NOT FOR ACCOUNT DAYFILE LDN ACFN/10000 RJM IDM ISSUE DAYFILE MESSAGE IME6 LDI HB CHECK FOR CATALOG BUFFER MESSAGE SHN 21-5 PJP IEMX IF NOT FOR CATALOG BUFFER LDD FO RJM AFA GET ABSOLUTE FST ADDRESS CRD T5 SBN 1 CRD FN LDD T5 SET ABSOLUTE TRACK/SECTOR LPC 777 STD T5 LDN 1 STD T7 LDC BUF0 SET BUFFER ADDRESS/POINTER STD BA ADN 2 STD BP SETMS IO,RW LDD BA RJM RDS READ SECTOR MJN IME8 IF MASS STORAGE ERROR OCCURRED LDM CWFE,BA RJM MBP MOVE BUFFER POINTER LDM SBST+1,BP SET ERROR, SUSPEND ACTIVITY FLAGS SCN FETS LMN FETS STM SBST+1,BP LDN TMMB RJM MBP MOVE BUFFER POINTER MMOVE MBUF,,,BP,MBML*10D LDD BA RJM WDS WRITE SECTOR MJN IME8 IF MASS STORAGE ERROR OCCURRED IME7 ENDMS RELEASE CHANNEL LJM IEMX RETURN IME8 RJM ISM ISSUE SYSTEM CONTROL POINT MESSAGE UJN IME7 EXIT IOE SPACE 4,20 ** IOE - INFORM OPERATOR OF ERROR. * * EXIT (A) = 0 IF TAPE CATALOG ERROR EVENT ISSUED. * .NE. 0 IF UNABLE TO ISSUE EVENT. * *CHECK TMSDIS,FAM* MESSAGE IN A,OPERATOR IF * EVENT IS ISSUED. * * USES CM - CM+4. * * MACROS MONITOR. IOE SUBR ENTRY/EXIT LDN ZERL BUILD EVENT CRD CM LDN /EVT/TCSE STD CM+4 MONITOR EATM ISSUE EVENT LDD CM+0 UJN IOEX RETURN ISM SPACE 4,10 ** ISM - ISSUE MESSAGE TO SYSTEM CONTROL POINT. * * ENTRY (EC) = ERROR CODE. * * EXIT MESSAGE POSTED ON LINE 2 OF B DISPLAY FOR * SYSTEM CONTROL POINT. *GO,SYS.* REQUIRED TO CLEAR IT. * * USES CM - CM+4. ISM SUBR ENTRY/EXIT LDD EC RJM C2D STM ISMA+4 LDK ISMA+7 STD AP LDN 0 STD HB RJM FMM INSERT FAMILY NAME IN MSG LDD HB RE-DIRECT MESSAGE POINTER SBN 1 RAD AP LDD HB TERMINATE MESSAGE WITH *.* ZJN ISM1 IF SPACE IN LOWER 6 BITS LDC 1R.*100-1R *100-1R.+1R ISM1 ADN 1R.-1R RAI AP LDK NCPL CRD CM LDD CM+1 ADN 1 SHN 7 ADK MS2W MESSAGE 2 AREA FOR SYSTEM CONTROL POINT CWM ISMA,TR UJN ISMX RETURN ISMA DATA C* TMS ERRXX ON FAM.* BSSZ 3 SPACE FOR 7 CHARACTER FAMILY NAMES LFM SPACE 4,10 ** LFM - BUILD LOCAL FILE NAME MESSAGE. * * SETS THE LOCAL FILE NAME IN THE MESSAGE. * * ENTRY (FN - FN+3) = LOCAL FILE NAME. * * CALLS MVM. LFM SUBR ENTRY/EXIT LDD FN+3 INSURE END OF LFN SCN 77 STD FN+3 LDN FN RJM MVM MOVE VARIABLE MESSAGE UJN LFMX RETURN MMC SPACE 4,10 * MMC - MOVE TO MAGNET CONTROL POINT. * * ENTRY (FC) = FUNCTION CODE. * (UTMS) = REQUEST SUBFUNCTION. * * EXIT CONTROL POINT ASSIGNMENT CHANGE TO MAGNET IF THIS IS * A *VMFS* MAGNET REQUEST. * * USES CM+1. * * MACROS MONITOR. MMC SUBR ENTRY/EXIT LDD FC LMN MAGF NJN MMCX IF NOT MAGNET REQUEST LDM UTMS LMN VMFS NJN MMCX IF NOT *VMFS* LDK /COMSCPS/ALCS SET RETURN TO CALLING CP STD CM+1 MONITOR CCAM RETURN TO MAGNET CP UJN MMCX RETURN MVM SPACE 4,10 ** MVM - MERGE VARIABLE MESSAGE. * * *MVM* WILL MERGE VARIABLE LENGTH MESSAGES * TO A ASSEMBLY BUFFER INSURING THAT THERE * WILL BE A SPACE (BLANK) BETWEEN EACH * MERGED MESSAGE. THIS ROUTINE IS USED TO * COMBINE SEVERAL DISJOINTED MESSAGES INTO * ONE COHERENT MESSAGE WHICH IS THEN ISSUED * ACCORDING THE DISPOSITION CODE. * * ENTRY (A) = ADDRESS OF CHARACTER STRING. * (AP) = ASSEMBLY POINTER. * (HB) = HALF BYTE FLAG. * * USES T1. * MVM SUBR ENTRY/EXIT STD T1 LDD HB NJN MVM2 IF NOT FULL WORD MVM1 LDI T1 MOVE FULL BYTE ZJN MVM4 IF END OF MESSAGE STI AP LPN 77 ZJN MVM3 IF END OF MESSAGE AOD T1 ADVANCE TO NEXT BYTE AOD AP ADVANCE ASSEMBLY POINTER UJN MVM1 MOVE NEXT BYTE MVM2 LDI T1 MOVE LOWER CHARACTER SHN -6 ZJN MVM3 IF END OF MESSAGE RAI AP AOD AP ADVANCE ASSEMBLY POINTER LDI T1 MOVE UPPER CHARACTER LPN 77 ZJN MVM4 IF END OF MESSAGE SHN 6 STI AP AOD T1 UJN MVM2 MOVE NEXT BYTE MVM3 LDN 1R INSERT SPACE IN LOWER BYTE RAI AP AOD AP LDN 0 UJN MVM5 TOGGLE HALF BYTE MVM4 LDC 1R *100 INSERT SPACE IN UPPER BYTE STI AP LDN 1 MVM5 STD HB TOGGLE HALF BYTE LJM MVMX RETURN RAM SPACE 4,10 ** RAM - BUILD RANDOM ADDRESS MESSAGE. * * CONVERTS THE RANDOM ADDRESS TO DISPLAY CODE * AND MOVES IT TO THE ASSEMBLY BUFFER. * * ENTRY (CTSA - CTSA+1) = RANDOM ADDRESS. * * CALLS C2D, MVM. RAM SUBR ENTRY/EXIT LDM CTSA SHN -6 RJM C2D CONVERT TWO DIGITS STM RAMA LDM CTSA LPN 77 RJM C2D CONVERT TWO DIGITS STM RAMA+1 LDM CTSA+1 SHN -6 RJM C2D CONVERT TWO DIGITS STM RAMA+2 LDM CTSA+1 LPN 77 RJM C2D CONVERT TWO DIGITS STM RAMA+3 LDC RAMA RJM MVM MOVE VARIABLE MESSAGE LJM RAMX RETURN RAMA DATA C*00000000* SSE SPACE 4,10 ** SSE - SET SYSTEM EVENT. * * ENTRY (EC) = ERROR CODE. * * EXIT CONTROL POINT EVENT WORD UPDATED. * * USES CN - CN+4. SSE SUBR ENTRY/EXIT LDD CP ADN TERW CRD CN LDD EC LMN /EMSG/TUA ZJN SSE1 IF TMS UTILITY ACTIVE LMN /EMSG/CNF&/EMSG/TUA NJN SSE2 IF NOT CATALOG NOT FOUND ERROR SSE1 LDN ESUA UJN SSE3 SET EVENT IN CONTROL POINT SSE2 LDN ESVB VSN BUSY OR WAIT SCRATCH SSE3 STD CN+4 SET EVENT IN CONTROL POINT SHN -14 ADC FBRT*1000 STD CN+3 LDD CN+2 SCN 77 ADN FBRT/10 SET ROLLOUT TIME STD CN+2 LDD CP ADN TERW CWD CN LJM SSEX RETURN UEP SPACE 4,10 ** UEP - USER ERROR PROCESSING. * * IF THE USER IS PROCESSING ERRORS, THE ERROR * CODE IS SET IN THE FET. IF THE ERROR IS ONE * THAT THE USER HAS A ROLLOUT OPTION ON, THE * ROLLOUT FLAG IS SET IN FET+0 BIT 17 AND * THE EVENT IS BUILT A ND SET IN *TERW*. IF * THE USER HAS SPECIFIED A ERROR MESSAGE * RETURN BUFFER, THE DETAILED MESSAGE IS * WRITTEN TO THAT BUFFER. * * ENTRY (EC) = ERROR CODE. * (MBUF) = ASSEMBLED ERROR MESSAGE. * * USES CM - CM+4, CN - CN+4, T1 - T3. UEP SUBR ENTRY/EXIT LDA IR+3,REL SET ERROR CODE IN FET CRD CM LDD CM+3 SCN 77 STD CM+3 LDD CM+4 LPC 777 STD CM+4 LDD EC SHN 21-2 RAD CM+3 SHN -6 LPC 7000 RAD CM+4 LDI EA CHECK IF ROLLABLE ERROR SHN 21-3 PJN UEP1 IF NON-ROLLABLE ERROR RJM SSE SET SYSTEM EVENT LDD CM+3 SET ROLLOUT EVENT FLAG LMN 40 STD CM+3 UEP1 LDA IR+3,REL REWRITE FET+0 CWD CM ADN TFEA CRD CM LDA CM+3,ABS ZJP UEPX IF NO USER MESSAGE BUFFER LDC MBUF COPY ERROR MESSAGE STD T1 LDN 5 SET BYTES PER WORD STD T2 LDN 1 STD T3 INITIALIZE CM WORD COUNT UEP2 LDI T1 SEARCH FOR END OF MESSAGE ZJN UEP3 IF ZERO BYTE FOUND AOD T1 SOD T2 NJN UEP2 IF NOT FULL CM WORD AOD T3 LDN 5 STD T2 RESET BYTES PER WORD UJN UEP2 CONTINUE TO END OF MESSAGE UEP3 AOD T1 CLEAR REMAINDER OF MESSAGE TO FULL WORD SOD T2 ZJN UEP4 IF FULL CM WORD LDN 0 STI T1 CLEAR MESSAGE TAIL UJN UEP3 LOOP FOR FULL CM WORD UEP4 LDA IR+3,REL WRITE TO USERS MESSAGE BUFFER ADN TFEA CRD CM LDA CM+3,REL CWM MBUF,T3 SEND MESSAGE TO CENTRAL LJM UEPX RETURN UNM SPACE 4,10 ** UNM - BUILD USERNAME MESSAGE. * * SETS THE USERNAME IN THE MESSAGE. * * ENTRY PBUN - PBUN+3) = USERNAME. * * CALLS MVM. UNM SUBR ENTRY/EXIT LDM PBUN+3 INSURE END OF USERNAME SCN 77 STM PBUN+3 LDC PBUN RJM MVM MOVE VARIABLE MESSAGE UJN UNMX RETURN VSM SPACE 4,10 ** VSM - BUILD VSN MESSAGE. * * SETS THE VSN IN THE MESSAGE. * * ENTRY (PESN - PESN+2) = EXTERNAL VSN. * * CALLS MVM. VSM SUBR ENTRY/EXIT MMOVE PESN,,VSMA+2,,VSKL LDC VSMA RJM MVM MOVE VARIABLE MESSAGE UJN VSMX RETURN VSMA DATA C*VSN XXXXXX* SPACE 4,10 ** COMMON DECKS. MVM$ EQU 1 DEFINE MVM - MOVE VARIABLE MESSAGE RCL$ EQU 1 DEFINE RCL - PP RECALL *CALL COMPTFM *CALL COMPC2D TITLE ERROR MESSAGES. EMSG SPACE 4,15 ** ERROR MESSAGES. * * FORMAT (BYTE 0), ERROR DISPOSITION FLAGS. * (BYTE 1), MESSAGE TYPE AND DESTINATION FLAGS. * (BYTE 2), FIRST WORD ADDRESS OF MESSAGE. * * MESSAGE DISPOSITION FLAGS. * 0001 = HANG PPU. * 0002 = CALL TFSP TO A CONTROL POINT. * 0004 = UNCONDITIONAL ABORT OF USER CONTROL POINT. * 0010 = ROLLOUT USER CONTROL POINT. * 0020 = RESERVED. * 0040 = RANDOM ADDRESS MESSAGE. * 0100 = USERNAME MESSAGE. * 0200 = VSN MESSAGE. * 0400 = LOCAL FILE NAME MESSAGE. * 1000 = FILE NAME MESSAGE. * 2000 = FAMILY NAME MESSAGE. * 4000 = EQUIPMENT MESSAGE. * * MESSAGE DESTINATION CODES. * 0001 = SEND TO CONTROL POINT DAYFILE. * 0002 = SEND TO SYSTEM DAYFILE. * 0004 = SEND TO SYSTEM ERROR LOG. * 0010 = SEND TO ACCOUNT DAYFILE. * 0020 = SEND TO E,P DISPLAY IF UNIT ASSIGNED. * 0040 = SEND TO CATALOG MESSAGE BUFFER. * 0100 = RESERVED. * 0200 = RESERVED. * 0400 = RESERVED. * 1000 = RESERVED. * 2000 = RESERVED. * 4000 = RESERVED. EMSG EMSG BEGIN VBS EMSG 0210,0001,(BUSY.) LNF EMSG 0400,0001,(NOT FOUND.) FNF EMSG 1000,0001,(NOT FOUND.) VNF EMSG 0200,0001,(NOT FOUND.) UNF EMSG 0100,0001,(NOT FOUND.) NMT EMSG 0400,0001,(NOT ON MAGNETIC TAPE.) VSR EMSG 0200,0001,(RESERVED.) VSD EMSG 0200,0000,(DUPLICATE.) FAR EMSG 1000,0001,(ALREADY RESERVED.) VAR EMSG 0200,0001,(ALREADY RESERVED.) DLK EMSG 0200,0006,(DEADLOCK.) ILR EMSG 0000,0001,(TFM INCORRECT REQUEST.) TMD EMSG 0000,0001,(TMS DISABLED.) MNA EMSG 0000,0001,(MAGNET NOT ACTIVE.) EBP EMSG 2006,0047,(ERRONEOUS BUFFER POINTER.) TUA EMSG 0010,0001,(TMS UTILITY ACTIVE.) BAE EMSG 0000,0001,(BUFFER ARGUMENT ERROR.) EID EMSG 0000,0001,(ERROR IN INDEX DATA.) ECD EMSG 0000,0001,(ERROR IN CATALOG DATA.) EAD EMSG 0000,0001,(ERROR IN ADMIT DATA.) RAE EMSG 0046,0041,(RANDOM ADDRESS ERROR.) TKL EMSG 4000,0006,(TRACK LIMIT.) MSE EMSG 4004,0046,(MASS STORAGE ERROR.) CNF EMSG 2010,0007,(TAPE CATALOG NOT FOUND.) ECF EMSG 0000,0001,(EMPTY CATALOG.) CLE EMSG 2006,0047,(CATALOG LINKAGE ERROR.) IOS EMSG 0004,0001,(I/O SEQUENCE ERROR ON CATALOG.) EOI EMSG 0001,0007,(EOI NOT ON TRACK CHAIN.) NAE EMSG 0000,0001,(NO ADMITS.) TPI EMSG 0000,0001,(TMS PROCESSING INHIBITED.) SFA EMSG 2010,0001,(ACTIVITY SUSPENDED.) FCE EMSG 2004,0001,(TAPE CATALOG ERROR.) WSA EMSG 0012,0001,(WAIT SCRATCH ASSIGNMENT.) NEU EMSG 0004,0001,(NO EXTEND ON USER OWNED FILE.) WRF EMSG 0000,0001,(WRITE REQUEST ON READ-ONLY FILE.) MPE EMSG 0000,0001,(MULTI-FILE PROCESSING ERROR.) FCI EMSG 0000,0001,(FILE CREATION NOT ALLOWED.) EFD EMSG 0000,0001,(ERROR IN FILE DATA.) CNA EMSG 0000,2010,(LINKED CATALOG NOT ACCESSIBLE.) EMSG EMSG END CBUF SPACE 4,10 *** BUFFERS. MBUF BSS 40 SPACE 4,10 USE // FORCE LITERALS ERRNG BUF0-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (INITIALIZE FAMILY TAPE CATALOG.),OVL1 SPACE 4 *** LOCAL DIRECT CELL LOCATIONS. TT EQU S1 TAPE TYPE (0=MT/NT, 1=CT, 3=AT) NV EQU S1+1 - S1+3 NEXT VOLUME IC EQU S1+1 INITIAL CATALOG FLAG RC EQU S1+2 REEL COUNT SV EQU S1+4 SYSTEM VSN FLAG CV EQU S2 CURRENT VSN POINTER PV EQU S3 PREVIOUS SCRATCH VSN POINTER SPACE 4,10 *** BUFFER ALLOCATION. * * THE FOLLOWING BUFFER IS CREATED BY THIS OVERLAY, AND IS * USED BY THE *ISFS* POSTPROCESSOR OVERLAY. TSPW BSS 0 TABLE OF SCRATCH POOL WORDS * (INDEXED BY TAPE TYPE) VFD 36/-0,24/0 VFD 36/-0,24/0 VFD 36/-0,24/0 VFD 36/-0,24/0 OVL2 EQU *+2 LOAD ADDRESS FOR *ISFS* POSTPROCESSOR ISFS SPACE 4,30 *** ISFS - INITIALIZE FAMILY TAPE CATALOG. * * ENTRY (IR - IR+3) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0 *T, +2 60/ 0 *T, +3 60/ 0 *T, +4 12/ FNT,30/ 0,18/ 0 *T, +5 42/ 0,18/ EADD *T, +6 60/ 0 *T, +7 46/ 0,2/ OP,12/ 0 * * OP = PROCESSING OPTION. * 0 = REORDER SCRATCH ONLY (*TFSP* *ISV* DIRECTIVE). * 1 = REORDER SCRATCH AND CLEAR ALL INTERLOCKS (FIRST * *ISF* ON DEVICE). * 2 = REORDER SCRATCH AND CLEAR CURRENT AND INACTIVE * MACHINE INTERLOCKS (*ISF* LINK TO SHARED DEVICE). * 3 = REORDER SCRATCH AND CLEAR INACTIVE MACHINE * INTERLOCKS (*TFSPR* COMMAND). * * USES TT, T2, CV - CV+4, PV - PV+4. * * CALLS CFB, GNB, GNL, MBP, PRS, RVB, TBA, WRP. * * MACROS EXOVL, MMOVE. ISF ENTRY ENTRY/EXIT RJM PRS PRESET ISF0 LDI BP ZJN ISF2 IF NO ENTRIES IN FIRST VSN BLOCK ISF1 RJM CFB CHECK FILE BUSY LDM CWEL,BA POSITION TO NEXT INDEX RJM MBP MOVE BUFFER POINTER MJN ISF2 IF MOVE OUTSIDE BUFFER LDI BP NJN ISF1 IF NOT END OF INDEX ISF2 LDC 0 NO BUFFER REWRITE * LDC 1 (IF BUFFER REWRITE) ISFA EQU *-1 ZJN ISF3 IF NO BUFFER REWRITE RJM WRP WRITE RANDOM PRU LDN 0 CLEAR BUFFER REWRITE NEEDED STM ISFA ISF3 RJM GNL GET NEXT LINK ZJN ISF5 IF BLOCK NOT LINKED LDC 0 NO BUFFER SWITCH * LDC 1 (BUFFER SWITCH) ISFB EQU *-1 ZJN ISF4 IF NO BUFFER SWITCH LDN 0 CLEAR BUFFER SWITCH NEEDED STM ISFB RJM TBA TOGGLE BUFFER ASSIGNMENT ISF4 RJM GNB GET NEXT BLOCK LDM CWFE,BA SKIP BLOCK CONTROL WORDS RJM MBP MOVE BUFFER POINTER LJM ISF1 SEARCH INDEX BUFFER ISF5 LDD TT SHN 21-13 MJP ISF7 IF NO VSN ENTRIES OF ANY TYPE FOUND LDD TT SAVE SCRATCH POOL WORD FOR THIS TAPE TYPE SHN 2 ADD TT ADC TSPW STD T2 MMOVE PESN,,,,10D LCN 0 CLEAR *VSN ENTRY FOUND* FLAG FOR TAPE TYPE STM ISFC,TT LDN 4 CHECK FOR OTHER TAPE TYPES TO PROCESS STD TT ISF6 SOD TT CHECK NEXT TAPE TYPE MJP ISF7 IF NO MORE TAPE TYPES LDM ISFC,TT ZJN ISF6 IF NO VSN ENTRIES FOUND FOR THIS TAPE TYPE SHN 21-13 MJN ISF6 IF TAPE TYPE ALREADY PROCESSED LDD MA RESTORE POINTERS FOR FIRST VSN BLOCK CWM ISFD,ON SBN 1 CRD CV CWM ISFE,ON PRESET PREVIOUS VSN SBN 1 CRM PESN,ON LDN ZERL CLEAR PREVIOUS VSN BUFFER POINTERS CRD PV RJM RVB RESTORE VSN BUFFERS LJM ISF0 SCAN FOR NEXT VSN TYPE ISF7 EXOVL ISP EXECUTE *ISFS* POSTPROCESSOR ISFC BSSZ 4 TABLE OF *VSN ENTRY FOUND* FLAGS * (INDEXED BY TAPE TYPE) ISFD BSS 5 POINTERS TO FIRST LEVEL-2 VSN BLOCK ISFE VFD 36/-0,24/0 DEFAULT VALUE FOR SCRATCH POOL WORD TITLE SUBROUTINES. CFB SPACE 4,20 ** CFB - CHECK FILE BUSY. * * ENTRY (BA) = BUFFER ADDRESS (VSN INDEX). * (BP) = BUFFER POINTER (VSN INDEX). * (TT) = TAPE TYPE (0=MT/NT, 1=CT, 3=AT). * (TT) = 4000, IF NO VSN ENTRY OF ANY TYPE FOUND YET. * * EXIT (BA) = UNCHANGED. * (BP) = UNCHANGED. * (TT) = TAPE TYPE, IF THIS VSN IS THE FIRST VSN ENTRY * OF ANY TYPE FOUND. * (ISFC) WORD FOR THE VSN-S TAPE TYPE SET NONZERO, IF * THE VSN IS NOT THE CORRECT TAPE TYPE. * * USES TT, T1. * * CALLS CSV, RLV, RSV, SCP. CFB8 RJM CSV CHECK FOR SCRATCH VOLUME CFB SUBR ENTRY/EXIT LDM VBST+1,BP DETERMINE TAPE TYPE SHN -5 LPN ACVS/40+CTVS/40 STD T1 LMD TT ZJN CFB3 IF SAME TYPE AS CURRENT SCAN TYPE SHN 21-13 PJN CFB1 IF NOT FIRST TAPE VSN FOUND OF ANY TYPE LDD T1 STD TT SET TAPE TYPE FOR THIS SCAN UJN CFB3 PROCESS VSN ENTRY CFB1 LDM ISFC,T1 NJN CFB2 IF NOT FIRST VSN OF THIS TAPE TYPE AOM ISFC,T1 INDICATE THAT VSN OF THIS TYPE FOUND CFB2 UJN CFBX RETURN CFB3 LDM VBST+1,BP * UJN CFB8 (IF NOT CLEARING INTERLOCKS) CFBA EQU *-2 LPN VIVS NJN CFB4 IF VOLUME BUSY LDM VBJS,BP ZJN CFB8 IF VOLUME NOT ASSIGNED CFB4 LDM VBMX,BP SET MACHINE INDEX HOLDING VSN BUSY LPN 17 STD T1 LDM TACM,T1 NJP CFBX IF NOT PROCESSING THIS MACHINE LDM VBRC,BP CHECK REEL NUMBER SHN -6 SBN 2 PJP CFB8 IF NOT FIRST REEL RJM SCP SET CATALOG BUFFER POINTERS LDD BA CHECK FOR CATALOG ENTRY ZJN CFB5 IF NO CATALOG ENTRY LDM CBST,BP CHECK FOR INITIAL ASSIGNMENT SHN 21-11 PJN CFB7 IF NOT INITIAL ASSIGNMENT CFB5 RJM RLV RELEASE CATALOG ENTRIES AND VSNS CFB6 LJM CFBX RETURN CFB7 RJM RSV RESERVE CATALOG ENTRIES AND VSNS UJN CFB6 RETURN CSV SPACE 4,20 ** CSV - CHECK SCRATCH VOLUME. * * ENTRY (BA) = BUFFER ADDRESS (VSN INDEX). * (BP) = BUFFER POINTER (VSN INDEX). * (PV - PV+4) = PREVIOUS SCRATCH VSN POINTERS. * * EXIT (BA) = UNCHANGED. * (BP) = UNCHANGED. * VSN ADDED TO THE SCRATCH STRING, IF THE VSN STATUS * IS SCRATCH. * * USES CV - CV+4, PV - PV+4. * * CALLS CRD, RLV, SCP, WRP. * * MACROS CLEAR, LDA, MMOVE, RESTP, SAVEP. CSV4 PJN CSVX IF NOT RESERVED ERRNZ RTVS-400000 *CODE MUST BE CHANGED* LDM VBRC,BP CHECK REEL NUMBER SHN -6 SBN 2 PJN CSVX IF NOT FIRST REEL RJM CRD CHECK RELEASE DATE ZJN CSVX IF NOT TO BE RELEASED RJM SCP SET CATALOG BUFFER POINTERS RJM RLV RELEASE CATALOG ENTRIES AND VSNS UJN CSVX RETURN CSV9 LMM VBST,BP CLEAR TEMPORARY SCRATCH STM VBST,BP AOM ISFA REWRITE BUFFER CSV SUBR ENTRY/EXIT LDM VBJS,BP NJN CSVX IF VOLUME ASSIGNED LDM VBST,BP CHECK FOR TEMPORARY SCRATCH LPN TSVS/1S12 NJN CSV9 IF TEMPORARY SCRATCH LDA VBST,BP LPC RTVS+HMVS+UOVS+SVVS+TVVS+MVVS+ERVS ZJN CSV1 IF AVAILABLE SCRATCH LJM CSV4 CHECK CONDITIONAL RELEASE CSV1 LDM VBST+1,BP SET AVAILABLE SCRATCH LPC CTVS+ACVS STM VBST+1,BP LDN ASVS/1S12 STM VBST,BP AOM PESN+4 INCREMENT SCRATCH COUNT SHN -14 RAM PESN+3 LDD PV NJN CSV2 IF PREVIOUS SCRATCH FOUND MMOVE VBES,BP,PESN,,VSKL UJN CSV3 SAVE SCRATCH POINTERS CSV2 MMOVE VBES,BP,VBNV,PV+1,VSKL LDD PV LMD BA ZJN CSV3 IF SAME BUFFER SAVEP CV RESTP PV RJM WRP WRITE RANDOM PRU RESTP CV CSV3 AOM ISFA AOM ISFB SAVEP PV CLEAR VBFV,BP,2*10D STM VBCI,BP STM VBCI+1,BP LCN 0 SET END OF SCRATCH DELIMITER STM VBNV,BP STM VBNV+1,BP STM VBNV+2,BP LJM CSVX RETURN RLV SPACE 4,20 ** RLV - RELEASE CATALOG ENTRIES AND VSNS. * * ENTRY (CV - CV+4) = CURRENT VSN POINTERS. * (PV - PV+4) = PREVIOUS SCRATCH POINTERS. * (CPCB - CPCB+4) = CATALOG BUFFER POINTERS. * * EXIT CATALOGS RELEASED. * VSNS RELEASED. * (PV - PV+4) = LAST SCRATCH VSN POINTERS * * USES KA, SV, CM - CM+4, CV - CV+4, NV - NV+2, PV - PV+4. * * CALLS CSN, IAM, PCE, RVB, VIS, WRP. * * MACROS CLEAR, COMPARE, ERROR, MMOVE, RESTP, SAVEP. RLV SUBR ENTRY/EXIT RESTP CV RESTORE CURRENT POINTERS CRM RLVB,ON SAVE (CV) SBN 1 SAVE FIRST SCRATCH VSN AND COUNT CWM PESN,ON SBN 1 CRM RLVA,ON MMOVE VBES,BP,PESN,,VSKL SAVE FIRST VSN FOR MESSAGE/COMPARE LDN 0 RLV0 STD NV SET/CLEAR PRECEDING SYSTEM VSN FLAG LDM VBST+1,BP CHECK SYSTEM VSN FLAG LPC SVVS STD SV SET PROCESSING SYSTEM VSN FLAG NJN RLV0.1 IF PROCESSING SYSTEM VSN LDD PV NJN RLV1 IF PREVIOUS SCRATCH FOUND MMOVE VBES,BP,RLVA,,VSKL SET FIRST SCRATCH VSN RLV0.1 UJP RLV2 SKIP TO LAST VSN RLV1 LDD NV ZJN RLV1.1 IF NO PRECEDING SYSTEM VSN SAVEP CV MAKE THIS VSN CURRENT TEMPORARILY RJM RVB RESTORE VSN BUFFERS RLV1.1 MMOVE VBES,BP,VBNV,PV+1,VSKL SET NEXT IN CHAIN TO FIRST VSN LDD PV LMD BA ZJN RLV1.2 IF SAME BUFFER RESTP PV RESTORE PREVIOUS SCRATCH VSN POINTERS RJM WRP WRITE RANDOM PRU RESTP CV RESTORE CURRENT SCRATCH VSN POINTERS RLV1.2 LDD MA RESTORE ORIGINAL (CV) CWM RLVB,ON SBN 1 CRD CV RLV2 LDN NV SET NEXT VOLUME STD KA MMOVE VBNV,BP,NV,,VSKL SAVE NEXT VSN CLEAR VBFV,BP,2*10D CLEAR VSN BLOCK STM VBCI,BP CLEAR CATALOG POINTERS STM VBCI+1,BP LDM VBST+1,BP CLEAR EXTRANEOUS STATUS FLAGS LPK SVVS+TVVS+MVVS+ERVS+CTVS+ACVS STM VBST+1,BP LDM VBST,BP LPK HMVS/1S12+UOVS/1S12 STM VBST,BP LDD SV NJN RLV3 IF SYSTEM VSN MMOVE NV,,VBNV,BP,VSKL RESTORE NEXT VSN AOM RLVA+4 INCREMENT SCRATCH COUNT SHN -14 RAM RLVA+3 LDN ASVS/1S12 SET AVAILABLE SCRATCH RAM VBST,BP COMPARE PESN,,VBES,BP,VSKL PJN RLV3 IF VSN IN BUFFER ALREADY PROCESSED LDN TSVS/1S12 FLAG TEMPORARY SCRATCH RAM VBST,BP RLV3 LDD NV ZJN RLV4 IF LAST VOLUME RJM WRP WRITE RANDOM PRU RJM VIS VSN INDEXED SEARCH ZJN RLV3.1 IF VSN FOUND ERROR EID *ERROR IN INDEX DATA.* RLV3.1 LDD SV ZJP RLV2 IF NOT PRECEDED BY SYSTEM VSN LJM RLV0 SET FLAG AND CHECK NEXT SCRATCH VSN RLV4 STM ISFA CLEAR BUFFER REWRITE FLAG STM ISFB CLEAR BUFFER TOGGLE FLAG LDD SV NJN RLV4.1 IF ONLY SYSTEM VSN(S) PROCESSED LCN 0 SET END OF SCRATCH VOLUMES STM VBNV,BP STM VBNV+1,BP STM VBNV+2,BP SAVEP PV SAVE LAST SCRATCH POINTERS RLV4.1 RJM WRP WRITE LAST SCRATCH LDM CPCB ZJN RLV6 IF NO CATALOG ENTRY MMOVE CWUN,CPCB,PBUN,,UNKL SET USERNAME TO TAPE FILE LDM CPCB+1 GET FILE STATUS STD CM LDM CBST,CM SHN 21-11 MJN RLV5 IF INITIAL CATALOG LDN 1 RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE LDN ZERL SET UNCONDITIONAL RELEASE CRD CM LDN 1 FLAG RELEASE RJM IAM ISSUE ACCOUNT FILE MESSAGE RLV5 RJM PCE PURGE CATALOG ENTRIES RLV6 RJM RVB RESTORE VSN BUFFERS LDD MA SET/RESTORE FIRST SCRATCH VSN AND COUNTS CWM RLVA,ON SBN 1 CRM PESN,ON LJM RLVX RETURN RLVA BSS 5 FIRST SCRATCH VSN RLVB BSS 5 CURRENT VSN POINTERS RSV SPACE 4,10 ** RSV - RESERVE CATALOG ENTRIES AND VSNS. * * ENTRY (CV - CV+4) = CURRENT VSN POINTERS. * (PV - PV+4) = PREVIOUS SCRATCH POINTERS. * (CPCB - CPCB+4) = CATALOG BUFFER POINTERS. * * EXIT CATALOG ENTRIES AND VSNS RESERVED. * (BA) = UNCHANGED * (BP) = UNCHANGED * * USES CM, IC, KA, RC. * * CALLS CSN, IAM, IRM, RRP, RVB, VIS, VSP, WRP. * * MACROS ERROR, LDA, MMOVE, RESTP, SAVEP. RSV SUBR ENTRY/EXIT LDD MA SAVE SCRATCH POINTERS AND COUNT CWM PESN,ON SBN 1 CRM RLVA,ON RESTP CV RESTORE CURRENT VSN POINTERS MMOVE VBES,BP,PESN,,VSKL SET FIRST VSN AND CURRENT VSN LDC PVSN STD KA MMOVE PESN,,,KA,VSKL SAVEP CPSI SAVE SECONDARY VSN POINTERS RESTP CPCB MMOVE CWUN,BA,PBUN,,UNKL RSV1 LDA CBQN,BP SET SEQUENCE NUMBER RJM CSN LDM CBST,BP GET INITIAL CATALOG STATUS STD T0 LPC 1000 STD IC LMD T0 CLEAR INITIAL CATALOG STATUS SCN 1 CLEAR BUSY STM CBST,BP LDM CBRC,BP STD RC RESTP CPSI RESTORE SECONDARY VSN POINTERS RSV2 LDD IC NJN RSV3 IF INITIAL CATALOG LDM VBST,BP CHECK RESERVED STATUS LPN RTVS/1S12 NJN RSV4 IF RESERVED RSV3 LDN 0 SET RESERVE MESSAGE RJM IAM ISSUE ACCOUNTING MESSAGE RSV4 LDM VBST,BP CLEAR EOI AND SCRATCH STATUS SCN EOIV/1S12+RTVS/1S12+ASVS/1S12 LMN RTVS/1S12 SET RESERVED STATUS STM VBST,BP LDM VBST+1,BP CLEAR VSN BUSY STATUS SCN VIVS STM VBST+1,BP LDN 0 STM VBJS,BP SOD RC ZJN RSV7 IF NO MORE REELS RJM WRP WRITE RANDOM PRU MMOVE VBNV,BP,,KA,VSKL LDI KA NJN RSV6 IF NEXT REEL EXISTS RSV5 ERROR EID *ERROR IN INDEXED DATA.* RSV6 RJM VIS VSN INDEXED SEARCH NJN RSV5 IF NOT FOUND LJM RSV2 UPDATE NEXT VSN RSV7 RESTP CPCB RESTORE CATALOG BUFFER POINTERS LDM CBST,BP SHN 21-10 PJN RSV8 IF NO RECOVERY MESSAGES TO ISSUE RJM IRM ISSUE *TMS* RECOVERY MESSAGES RSV8 LDM CBNC,BP SHN 14 STD CI SHN -14 LMD RI NJN RSV9 IF DIFFERENT CATALOG BLOCK LDM CBNC+1,BP LMD RI+1 ZJN RSV10 IF DIFFERENT CATALOG BLOCK RSV9 RJM WRP WRITE RANDOM PRU LDM CBNC,BP CHECK FOR NEXT CATALOG LPN 77 STD RI LDM CBNC+1,BP STD RI+1 ADD RI ZJN RSV12 IF LAST CATALOG RJM RRP READ RANDOM PRU RSV10 RJM VSP VERIFY/SET CATALOG POINTERS PJN RSV11 IF POINTER VALID ERROR ECD *ERROR IN CATALOG DATA.* RSV11 SAVEP CPCB SAVE CATALOG BUFFERS LJM RSV1 PROCESS NEXT CATALOG RSV12 LDM CPSI+1 CHECK FOR EXCESS VOLUMES STD CM LDM VBNV,CM ZJN RSV13 IF NO EXCESS VOLUMES AOD RC FAKE REEL COUNT RESTP CPCB RESTORE CATALOG BUFFERS LJM RSV2 SET VSN STATUS, ISSUE ACCOUNT FILE MESSAGE RSV13 RESTP CPSI RESTORE VSN POINTERS RJM WRP WRITE RANDOM PRU RJM RVB RESTORE VSN BUFFERS LDD MA RESTORE SCRATCH POINTERS CWM RLVA,ON SBN 1 CRM PESN,ON LJM RSVX RETURN RVB SPACE 4,15 ** RVB - RESTORE VSN BUFFERS. * * ENTRY (CV - CV+4) = CURRENT SCRATCH BUFFER POINTERS. * (PV - PV+4) = PREVIOUS SCRATCH BUFFER POINTERS. * * EXIT (BA - RI+1) = CURRENT SCRATCH BUFFER POINTERS. * BUFFERS RELOADED. * * CALLS RRP, TBA. * * MACROS RESTP. RVB SUBR ENTRY/EXIT LDN 0 STM ISFA NO WRITE NECESSARY STM ISFB NO BUFFER TOGGLE NECESSARY RESTP PV READ LAST SCRATCH BUFFER LDD BA ZJN RVB1 IF NO PREVIOUS SCRATCH RJM TBA TOGGLE BUFFER ALLOCATION RJM RRP READ RANDOM PRU LDD PV+1 RESET PREVIOUS SCRATCH BUFFER POINTER SBD PV ADD BA STD PV+1 STD BP LDD BA RESET PREVIOUS SCRATCH BUFFER ADDRESS STD PV LDD RI COMPARE RANDOM INDICES LMD CV+3 NJN RVB1 IF DIFFERENT LDD RI+1 LMD CV+4 NJN RVB1 IF DIFFERENT AOM ISFB BUFFER TOGGLE REQUIRED FOR NEXT VSN BLOCK UJN RVB2 SET CURRENT VSN POINTERS RVB1 RESTP CV RESTORE CURRENT VSN POINTERS RJM TBA TOGGLE BUFFER ALLOCATION RJM RRP READ RANDOM PRU RVB2 LDD CV+1 RESET CURRENT VSN BUFFER POINTER SBD CV ADD BA STD CV+1 STD BP LDD BA RESET CURRENT VSN BUFFER ADDRESS STD CV LDD RI RESET CURRENT POSITION RANDOM INDEX STM CPRI LDD RI+1 STM CPRI+1 LJM RVBX RETURN SCP SPACE 4,15 ** SCP - SET CATALOG BUFFER POINTERS * * ENTRY (BA - RI+1) = SECONDARY VSN BUFFER POINTERS. * * EXIT (CV - CV+4) = SECONDARY VSN BUFFER POINTERS. * (CPCB - CPCB+4) = CATALOG ENTRY BUFFER POINTERS. * (BA - RI+1) = CATALOG ENTRY BUFFER POINTERS. * * USES BA, BP, CI, CV - CV+4, RI - RI+1. * * CALLS RRP, VSP. * * MACROS SAVEP. SCP2 LDI BP ZJN SCP1 IF HOLE FOUND SCP3 SAVEP CPCB SAVE CATALOG POINTERS SCP SUBR ENTRY/EXIT SAVEP CV SAVE CURRENT POINTERS LDM VBCI,BP SHN 14 STD CI SCN 77 LMM VBCI+1,BP ZJN SCP1 IF NO CATALOG INDEX STD RI+1 SHN -14 STD RI LDC BUF2 DEFINE CATALOG BUFFER SCP1 STD BA ZJN SCP3 IF NO CATALOG INDEX RJM RRP READ RANDOM PRU (CATALOG) RJM VSP VERIFY/SET CATALOG POINTERS PJN SCP2 IF VALID CATALOG LDN 0 UJN SCP1 SET NO CATALOG CRD SPACE 4,10 ** CRD - CHECK RELEASE DATE. * * ENTRY (BA) = BUFFER ADDRESS (VSN INDEX). * (BP) = BUFFER POINTER (VSN INDEX). * (PV - PV+4) = PREVIOUS SCRATCH VSN POINTERS. * * EXIT (A) = 0 IF RELEASE DATE OLD FORMAT, NO RELEASE DATE, * OR IF RELEASE DATE NOT YET REACHED. * (A) .NE. 0 IF RELEASE DATE NEW FORMAT AND EXPIRED. * * USES CM - CM+4. * * MACROS MONITOR. CRD SUBR ENTRY/EXIT LDM VBST+1,BP VSN STATUS LPN RDVS ZJN CRDX IF RELEASE DATE OLD FORMAT LDM VBRD+1,BP RELEASE DATE ZJN CRDX IF NO RELEASE DATE STD CM+4 LDM VBRD,BP RELEASE DATE YEAR LPN 77 STD CM+3 LDN /COMSCPS/VEDS CHECK RELEASE DATE REACHED STD CM+1 MONITOR VSAM VALIDATE SECURITY ACCESS FUNCTIONS LDD CM+1 UJN CRDX RETURN TACM SPACE 4,10 * TACM - TABLE OF ACTIVE MACHINES. * * INDEXED BY MACHINE INDEX-1. NONZERO ENTRY FLAGS MACHINE * ACTIVE. TACM EQU OVL1-20 SPACE 4 ** LOCAL COMMON DECKS. *CALL COMPC2D BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY DDE$ EQU 1 DEFINE DDE - DELETE DATA BLOCK DLB$ EQU 1 DEFINE DLB - DELINK BLOCK GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK GNL$ EQU 1 DEFINE GNL - GET NEXT LINK GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH BY KEY PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS *CALL COMPTFM SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW TITLE PRESET. PRS SPACE 4,15 ** PRS - PRESET FOR *ISF*. * * ENTRY (CPSB - CPSB+4) = SYSTEM BUFFER POINTERS. * * EXIT (TT) = 7777. * (BA - RI+1) = FIRST VSN TO CHECK FOR SCRATCH. * (ISFD - ISFD+4) = (BA - RI+1). * * USES TT, T1, PV - PV+4, RI - RI+1. * * CALLS GIB, MBP, RRP, SAM, TBA. * * MACROS COMPARE, ERROR, ISTORE, RESTP, SAVEP. PRS SUBR ENTRY/EXIT LDM PFLG LPN 3 NJN PRS0 IF CLEARING INTERLOCKS ISTORE CFBA,(UJN CFB8) BYPASS INTERLOCK CLEARING LDN 0 PRS0 SBN 2 MJN PRS1 IF CLEARING NO OR ALL INTERLOCKS RJM SAM SEARCH FOR ACTIVE MACHINES PRS1 LDN ZERL CRD PV CLEAR PREVIOUS SCRATCH POINTERS CRM PESN,ON CLEAR SCRATCH COUNT LCN 0 SET END OF SCRATCH STM PESN STM PESN+1 STM PESN+2 RESTP CPSB RESTORE BUFFER POINTERS RJM RRP READ RANDOM PRU (TMST) LDM CWRT,BA LMC RTSB*100B NJN PRS2 IF NOT TMST COMPARE PFAM,,,BP,PFKL ZJN PRS3 IF FAMILY CATALOG PRS2 ERROR CNF *(FAMILY) CATALOG NOT FOUND.* PRS3 LDM CWUN,BA ZJN PRS4 IF *TFSP* INTERLOCK NOT SET LDM CWMX,BA GET INDEX OF MACHINE HOLDING INTERLOCK LPN 17 STD T1 LDM TACM,T1 CHECK PROCESSING INHIBITED FOR MACHINE ZJN PRS4 IF PROCESSING NOT INHIBITED ERROR TUA * TMS UTILITY ACTIVE.* PRS4 RJM TBA TOGGLE BUFFER ASSIGNMENT LDN FPVI SET PRIMARY VSN INDEX STD RI+1 SHN -14 STD RI RJM GIB GET INITIAL BLOCK (PRIMARY VSN) LDM CWRT,BA LMC RTVB*100+1 ZJN PRS6 IF PRIMARY VSN INDEX BLOCK PRS5 ERROR EID *ERROR IN INDEX DATA.* PRS6 LDM CWFE,BA FIND FIRST SECONDARY INDEX BLOCK RJM MBP MOVE BUFFER POINTER LDA VBCI,BP ZJN PRS5 IF NO SECONDARY INDEX STD RI+1 SHN -14 STD RI RJM GIB GET INITIAL BLOCK (SECONDARY INDEX) LDM CWFE,BA SKIP FIRST INDEX ENTRY ADM CWEL,BA RJM MBP MOVE BUFFER POINTER SAVEP ISFD SAVE POINTERS TO FIRST VSN BLOCK LCN 0 INDICATE THAT FIRST SCRATCH NOT YET FOUND STD TT LJM PRSX RETURN SAM SPACE 4,10 ** SAM - SEARCH FOR ACTIVE MACHINES. * * ENTRY (FO) = CATALOG EST ORDINAL. * * EXIT TACM TABLE INITIALIZED. * * USES CM - CM+4, FN - FN+4, T1. * * CALLS AFA. SAM2 LCN 0 SET CURRENT MACHINE ACTIVE STM TACM SAM3 LDM CDMX STD T1 LDM PFLG CHECK PROCESSING OPTION LPN 3 LMN 2 NJN SAMX IF NOT TO PROCESS CURRENT MACHINE STM TACM,T1 CLEAR CURRENT MACHINE ENTRY SAM SUBR ENTRY/EXIT LDD FO READ CATALOG FILE EST ENTRY RJM AFA CRD CM SFA EST,CM READ EST ENTRY CRD CM LDD CM SHN 21-4 PJN SAM2 IF NOT INDEPENDENT SHARED DEVICE LDD CM+4 READ TRT LENGTH SHN 3 ADK TDGL CRD CM ADN TRLL-TDGL READ TRT POINTER CRD FN LDD CM+2 ADN 7 SHN -3 MRT LENGTH ADD CM+2 TRT LENGTH STD T1 SET DIT OFFSET LDD FN+3 SET FWA OF DIT LPN 77 SHN 14 ADD FN+4 ADD T1 STM SAMA SHN -14 RAM SAMA-1 LDN 0 INITIALIZE DIT ENTRY INDEX STD T1 SAM1 LDC 0 READ DIT ENTRY SAMA EQU *-1 (DIT FWA) ADD T1 CRD CM LDD CM+4 SET MACHINE ACTIVE FLAG STM TACM,T1 AOD T1 ADVANCE ND OF ENTRIES LMN 20 NJN SAM1 IF MORE ENTRIES TO PROCESS LJM SAM3 CHECK INTERLOCK CLEAR OPTION ERRNG BUF1-* OVERFLOW INTO *BUF1* OVERLAY (*ISFS* POSTPROCESSOR.),/5TB/OVL2 SPACE 4 *** LOCAL DIRECT CELL LOCATIONS. TT EQU /5TB/TT TAPE TYPE (SET BY *5TB*) SPACE 4,10 *** BUFFER ALLOCATION. * * THE FOLLOWING BUFFER IS CREATED BY OVERLAY *5TB*. TSPW EQU /5TB/TSPW TABLE OF SCRATCH POOL WORDS * (5 BYTES/ENTRY; INDEXED BY TAPE TYPE) ISP SPACE 4,10 *** ISP - *ISFS* POSTPROCESSOR. * * ENTRY (PFLG) = PROCESSING OPTION (BITS 1-0). * 0 = REORDER SCRATCH ONLY (*TFSP* *ISV* DIRECTIVE). * 1 = REORDER SCRATCH AND CLEAR ALL INTERLOCKS (FIRST * *ISF* ON DEVICE). * 2 = REORDER SCRATCH AND CLEAR CURRENT AND INACTIVE * MACHINE INTERLOCKS (*ISF* LINK TO SHARED DEVICE). * 3 = REORDER SCRATCH AND CLEAR INACTIVE MACHINE * INTERLOCKS (*TFSPR* COMMAND). * * USES CM - CM+4. * * CALLS RRP, SEI, WRP. * * MACROS CLEAR, MMOVE, MONITOR, RESTP. ISP ENTRY ENTRY/EXIT RESTP CPSB REREAD SYSTEM BLOCK RJM RRP READ RANDOM PRU RJM SEI SET EOI SECTOR LOCATION STM SBTC,BP SET TRACK COUNT LDA T2,ABS SET SECTOR COUNT STM SBPC+1,BP SHN -14 STM SBPC,BP MMOVE TSPW,,SBSM,BP,10D SET *MT*/*NT* SCRATCH VSN POINTER MMOVE TSPW+5,,SBSC,BP,10D SET *CT* SCRATCH VSN POINTER MMOVE TSPW+17,,SBSA,BP,10D SET *AT* SCRATCH VSN POINTER LDM PFLG LPN 3 ZJN ISP1 IF NOT CLEARING INTERLOCKS CLEAR CWUN,BA,10D CLEAR *TFSP* USER NAME INTERLOCK LDM SBST+1,BP CLEAR UTILITY ACIVE AND SUSPEND FLAGS SCN UITS+SATS STM SBST+1,BP LDM SBST,BP SCN FFTS/10000 STM SBST,BP LDM SBID,BP CHECK MACHINE ID LMM MFID ZJN ISP1 IF HOME MAINFRAME LDM SBST,BP SCN GFTS/10000 CLEAR GLOBAL SCRATCH STATUS LMN FFTS/10000 SET FOREIGN MAINFRAME STM SBST,BP ISP1 RJM WRP WRITE SYSTEM BLOCK LDN ZERL POST UTILITY ACTIVE EVENT CRD CM LDN ESUA STD CM+4 MONITOR EATM ENTER EVENT LDM TSPW+3 CHECK IF ANY SCRATCH VOLUMES FOUND ADM TSPW+4 ADM TSPW+5+3 ADM TSPW+5+4 ADM TSPW+17+3 ADM TSPW+17+4 ZJN ISP2 IF NO SCRATCH VOLUMES OF ANY TYPE FOUND LDN ZERL CRD CM LDN ESVB STD CM+4 MONITOR EATM ENTER EVENT ISP2 LJM ISPX RETURN OVERFLOW /5TB/OVL2,BUF2 OVERFLOW INTO *BUF2* OVERLAY (*RESEX* FIRST REEL ASSIGNMENT.),OVL1 SPACE 4 *** LOCAL DIRECT CELL LOCATIONS CT EQU S1 FILE CATEGORY MD EQU S1+1 FILE ACCESS MODE FV EQU S2 - S2+2 FIRST VSN RAP SPACE 4,10 RFA SPACE 4,10 *** RFAS - *RESEX* FIRST REEL ASSIGNMENT. * * CALLED BY *RESEX* TO ASSIGN THE FIRST VOLUME * OF A TAPE FILE. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0 *T, +2 60/ 0 *T, +3 60/ 0 *T, +4 12/ FNT,30/ 0,18/ 0 *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST *T, +7 36/ VSN,12/ FLAGS,12/ 0 *T, +10 60/ TAPE DESCRIPTORS *T, +11 36/ PRN,6/ FA,18/ BLOCK SIZE *T, +12 60/ FILE IDENTIFIER *T, +13 42/ FID (CONT.),18/SEQ. NUM. *T, +14 36/ SET I.D.,9/ VER.,15/ GEN. *T, +15 30/ RETENTION DATE,30/ CREATION DATE *T, +16 42/ ALT. USERNAME,18/ TO *T, +17 42/ PASSWORD,6/ AC,6/ CT,6/ MD * * EXIT 1. IF THIS IS A RESERVED FILE THE TAPE * FILE PARAMETERS ARE DEFAULTED FROM * THE CATALOG AND THE VSN IS ASSIGNED. * 2. IF THIS IS A NON- RESERVED FILE, THE * CATALOG IS BUILT AND A SCRATCH VOLUME * IS ASSIGNED. * * USES BP, CM - CM+4, EC, KA. * * CALLS ASR, CAA, ECI, EDT, ERR, FTC, GIB, IUC, PRS, RRP, SMF, * SSP, SVB, VIS, VSP, WRP. * * MACROS COMPARE, ERROR, EXOVL, LDA, MMOVE, RESTP, SAVEP. RFA ENTRY ASSIGN FIRST REEL FUNCTION RJM PRS PRESET ZJN RFA1 IF NOT REENTERED REQUEST RJM GIB GET INITIAL BLOCK RJM VSP VERIFY/SET CATALOG POINTER MJN RFA1 IF INCORRECT POINTER SAVEP CPCB SAVE BUFFER POINTER (CATALOG) LJM RFA11 CHECK ASSIGNED VOLUME RFA1 LDM PESN NJN RFA1.1 IF A VSN IS SPECIFIED LDM PBTO+1 CHECK FOR SYMBOLIC ACCESS SHN 21-2 MJN RFA1.1 IF SYMBOLIC ACCESS LDN /EMSG/ILR PRESET *TFM INCORRECT REQUEST.* STD EC LDM PFLG CHECK FOR VSN=SCRATCH SHN 21-12 MJN RFA1.2 IF VSN=SCRATCH RFA1.1 RJM FTC FIND TAPE CATALOG STD EC SET ERROR CODE ZJN RFA4 IF CATALOG FOUND LMN /EMSG/VNF ZJN RFA2 IF VSN NOT FOUND ERROR RFA1.2 BSS 0 LDM PFTD SHN 21-13 MJN RFA3 IF WRITE LABEL LDM PFTD+1 SHN 21-4 MJN RFA3 IF PO=W SELECTED RFA2 LDD EC RESTORE ERROR CODE ERROR RFA3 LDM PAUN CHECK ALTERNATE USER ACCESS NJN RFA2 IF ALTERNATE USER SPECIFIED EXOVL ECI ENTER CATALOG IMAGE RFA4 LDM PBTO+1 SET RESERVE SCRATCH ASSIGNED LPC 7763 CLEAR RESERVE AND SYMBOLIC ACCESS FLAGS LMN 10 STM PBTO+1 LDN 6 STD T0 LDM PESN NJN RFA5 IF A VSN WAS SPECIFIED LDN 5*10D STD T0 LDM PFLG CHECK IF THE VSN= PARAMETER WAS SPECIFIED SHN 21-12 PJN RFA5 IF VSN= WAS NOT SPECIFIED ERROR FAR *(FILENAME) ALREADY RESERVED.* RFA5 MMOVE CBVS,BP,PVSN,,,T0 LDM CBST,BP SET SYMBOLIC ACCESS FLAG LPN 4 RAM PBTO+1 SHN 21-0 MJN RFA6 IF USER SUPPLYING PARAMETERS LDM CBST,BP SHN 21-12 MJN RFA6 IF RECOVERED FILE SHN 21-11-21+12 RFA6 MJN RFA7 IF SHOULD CHECK SYMBOLIC REQUEST LDM PFTD SET LABEL,TAPE TYPE, DENSITY, CONVERSION LPC 4000 STM PFTD LDM CBTD,BP LPC 3777 RAM PFTD LDM CBTD+2,BP SET FORMAT/NOISE STM PFTD+2 LDM CBTD+3,BP SET BLOCK SIZE STM PFTD+3 LDM CBTD+4,BP STM PFTD+4 RFA7 LDM CBST,BP SHN 21-2 PJP RFA10 IF NOT SYMBOLIC ACCESS AOM CAAC DO NOT UPDATE ADMIT ENTRY LDM PESN ZJN RFA9 IF VSN NOT SPECIFIED LDM POFI NJN RFA8 IF FILE IDENTIFIER SPECIFIED RFAA LDC 0 * LDC (PBQN) ZJN RFA10 IF NO SEQUENCE NUMBER RFA8 EXOVL SMF SET MULTI-FILE PARAMETERS RFA9 LDC 0 * LDC (PBQN) ZJN RFA10 IF NO SEQUENCE NUMBER LMM CBQN+1,BP STD T0 SHN -14 LMM CBQN,BP LPN 77 ADD T0 ZJN RFA10 IF CORRECT SEQUENCE NUMBER ERROR FNF *FILE NOT FOUND.* RFA10 RJM CAA CHECK ALTERNATE USER ACCESS RFA11 LDM CBST,BP CHECK DATA ERROR FLAG SHN 21-1 PJN RFA12 IF NOT DATA ERROR LDM PBTO+1 CHECK FOR *TO=C* SHN 21-11 MJN RFA11.1 IF CHECK FOR CATALOG ERROR SHN 21-7-21+11 CHECK FOR *TO=E* MJN RFA12 IF IGNORE CATALOG ERROR RFA11.1 BSS 0 ERROR EFD * ERROR IN FILE DATA.* RFA12 LDM CBES,BP CHECK ASSIGNED VOLUME NJN RFA15 IF VOLUME ASSIGNED TO CATALOG LDM PFTD SHN 21-13 MJN RFA13 IF WRITE LABEL LDM PFTD+1 SHN 21-4 PJN RFA14 IF PO=W NOT SELECTED, ERROR RFA13 LDM CBTD,BP DETERMINE TAPE TYPE SHN -7 LPN 3 RJM SSP SET SCRATCH POOL ADDRESS EXOVL ASR ASSIGN SCRATCH REEL RFA14 ERROR ILR *TFM INCORRECT REQUEST.* RFA15 LDC PESN GET VSN INDEX STD KA COMPARE ,KA,CBES,BP,VSKL ZJN RFA16 IF VSN INDEX = CATALOG FIRST VOLUME LDI KA ZJN RFA15.1 IF NO VSN SPECIFIED LDM CBNC,BP NJN RFA15.1 IF MULTIFILE TAPE SET LDM PBTO+1 CHECK IF PRN MOUNT REQUEST BY *RECLAIM* SHN 21-10 MJN RFA16 IF PRN MOUNT RFA15.1 BSS 0 MMOVE CBES,BP,,KA,VSKL RJM VIS VSN INDEXED SEARCH ZJN RFA17 IF VSN INDEX FOUND ERROR ECD *ERROR IN CATALOG DATA.* * (A) .LT. 0 IF PRN MOUNT. RFA16 SHN 0-21 FLAG IF PRN MOUNT STM RFAB RESTP CPSI RESTORE VSN INDEX RJM RRP READ RANDOM PRU LDC 0 * LDC 1 (PRN MOUNT) RFAB EQU *-1 ZJN RFA17 IF NOT PRN MOUNT MMOVE VBVS,BP,PVSN,,VSKL RESET INTERNAL VSN TO PRN RFA17 RJM IUC INCREMENT USAGE COUNT LDM PFLG LPC 6377 STM PFLG LDM VBST,BP LPN UOVS/10000 SHN 11-0 SET USER OWNED STATUS RAM PFLG LDM VBST+1,BP LPN TVVS SHN 10-3 SET OFFSITE STATUS RAM PFLG LDM VBRC,BP SHN -6 SBN 1 STM PESN+4 SET REEL NUMBER SBN 1 MJN RFA18 IF FIRST REEL RJM WRP WRITE RANDOM PRU LDN FV STD KA MMOVE VBFV,BP,,KA,VSKL RJM VIS VSN INDEXED SEARCH ZJN RFA18 IF VSN FOUND ERROR EID *ERROR IN INDEX DATA.* RFA18 RJM SVB SET VSN BUSY RJM WRP WRITE RANDOM PRU RESTP CPCB RESTORE CATALOG POINTERS AOM CBAC+1,BP INCREMENT ACCESS COUNT SHN -14 RAM CBAC,BP LIA CBAD,BP RJM EDT ENTER PACKED DATE/TIME LDM PFTD+1 SHN 21-4 PJN RFA19 IF PO=W NOT SPECIFIED LIA CBMD,BP RJM EDT ENTER PACKED DATE/TIME RFA19 RJM WRP WRITE RANDOM PRU (CATALOG) LDN ZERL UPDATE FET CRD CM LDD CI LPN 77 SHN 6 LMD RI STD CM+3 LDD RI+1 STD CM+4 LDN TFUN-TFES+1 STD T1 LDA IR+3,REL ADN TFRR CWM CM,ON CWM PBUF,T1 LJM RFAX RETURN TITLE SUBROUTINES. SPACE 4 ** COMMON DECKS. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH CAA$ EQU 1 DEFINE CAA - CHECK ALTERNATE USER ACCESS FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN IUC$ EQU 1 DEFINE IUC - INCREASE USAGE COUNTER SSP$ EQU 1 DEFINE SSP - SET SCRATCH POOL ADDRESS SVB$ EQU 1 DEFINE SVB - SET VSN BUSY VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS VUB$ EQU 1 DEFINE VUB - VERIFY USERS BLOCK *CALL COMPTFM *CALL COMPWEI SPACE 4 *** BUFFERS. BUFA BSS TAEL*5 BUFB BSS TAEL*5 SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET FOR SUBFUNCTION RFAS. * * ENTRY NONE. * * EXIT (A) = 0 IF NOT A RE-ENTRY REQUEST. * (RI - RI+1) = CATALOG ENTRY IF RE-ENTRANT REQUEST. * * USES BA, CI, CM - CM+4, RI - RI+1. * * MACROS ERROR PRS SUBR ENTRY/EXIT LDM PBTO+1 CHECK OPTION SHN 21-5 PJN PRS1 IF NOT *TO=A* LDC 9999D STM PBQN+1 LDM PBQN SCN 77 LMN 9999D/1S12 STM PBQN PRS1 LDM PBQN SET *PBQN* FOR IN-LINE CHECKS LPN 77 ADC LDCI STM RFAA STM RFA9 LDM PBQN+1 STM RFAA+1 STM RFA9+1 LDA IR+3,REL ADN TFRR CRD CM LDD CM+3 SET CATALOG INDEX IF REENTRANT REQUEST SHN 14 STD CI SCN 77 LMD CM+4 ZJN PRS2 IF NOT REENTRANT REQUEST STD RI+1 SET CATALOG RANDOM ADDRESS SHN -14 STD RI LDC BUF2 SET BUFFER ADDRESS STD BA PRS2 LJM PRSX RETURN SPACE 4,10 ERRNG BUF1-* OVERLAY (SET MULTI-FILE PARAMETERS.),OVL1 SPACE 4,10 *** DIRECT CELLS. CT EQU S1 CATEGORY MD EQU S1+1 MODE FV EQU S1+2 - S1+4 FIRST VOLUME OF MULTI-FILE SET CN EQU S2 - S2+4 SCRATCH SMF SPACE 4,10 ** SMF - SET MULTI-FILE PARAMETERS. * * IF BOTH FILE NAME AND VSN ARE SPECIFIED ON A RESEX * FIRST ASSIGNMENT, AND THE VSN IS A SYMBOLIC ACCESS * TAPE, SMF IS CALLED FROM RFA TO SEARCH FOR THE * CORRECT FILE CATALOG. THE INFORMATION FOR THE FILE * IS RETURNED TO THE FET. * * USES KA, T1, CM - CM+4, CN - CN+4. * * CALLS CAA, FTC, VIS, WRP. * * MACROS COMPARE, ERROR, LDA, LIA, MMOVE, RESTP, SAVEP. SMF ENTRY ENTRY/EXIT RJM PRS PRESET NJP SMF6 IF NOT FILE EXTENSION RJM FTC FIND TAPE CATALOG NJN SMF1 IF FILE NOT FOUND ERROR FAR *(FILE) ALREADY RESERVED.* SMF1 RESTP SMFA GET CATALOG ENTRY FOR FIRST FILE RJM RRP READ RANDOM PRU MMOVE CBSI,BP,PBSI,,6 FORCE SETID TO BE SAME AS FIRST FILE RJM VSI VERIFY SET ID NOT BLANK OR ZERO LDN CN LOCATE LAST VOLUME OF TAPE STD KA SMF2 RJM VIS VSN INDEXED SEARCH ZJN SMF4 IF VSN FOUND SMF3 ERROR EID *ERROR IN INDEXED DATA.* SMF4 LDM VBST,BP LPN EOIV/1S12 NJN SMF5 IF EOI VOLUME MMOVE VBNV,BP,,KA,VSKL LDI KA NJN SMF2 IF MORE VOLUMES LDN FV READ FIRST VOLUME STD KA RJM VIS VSN INDEXED SEARCH NJN SMF3 IF VSN NOT FOUND SMF5 LJM SMF11 COPY FET SMF6 RJM RRP READ CATALOG ENTRY RJM LTC LOCATE TAPE CATALOG NJN SMF8 IF FOUND SMF7 ERROR FNF *(FILE) NOT FOUND.* SMF8 LDM POFI ZJN SMF9 IF FILE IDENTIFIER NOT SPECIFIED LDD BP ADM LTCA STD T1 COMPARE ,,POFI,,FIKL NJN SMF7 IF NAMES DO NOT MATCH SMF9 LDM PBTO+1 CHECK FOR *TO=D* SHN 21-0 MJN SMF10 IF *TO=D* MMOVE CBPI,BP,POFI,,4*10D SMF10 SAVEP SMFA SAVE CATALOG POINTERS AOM CAAC DO NOT UPDATE ADMIT ENTRY RJM CAA CHECK ALTERNATE USER ACCESS LIA CBES,BP STD KA RJM VIS VSN INDEXED SEARCH ZJN SMF11 IF VSN FOUND ERROR ECD *ERROR IN CATALOG DATA.* SMF11 LDM CBST,BP CHECK DATA ERROR FLAG SHN 21-1 PJN SMF12 IF NO DATA ERROR LDM PBTO+1 CHECK FOR *TO=C* SHN 21-11 MJN SMF11.1 IF CHECK FOR CATALOG ERROR SHN 21-7-21+11 MJN SMF12 IF IGNORE CATALOG ERROR SMF11.1 ERROR EFD * ERROR IN FILE DATA.* SMF12 MMOVE VBES,BP,PESN,,VSKL MMOVE VBVS,BP,PVSN,,VSKL LDM VBRC,BP SET REEL NUMBER SHN -6 SBN 1 STM PESN+4 LDN FV SET FIRST VOLUME BUSY STD KA RJM VIS VSN INDEXED SEARCH NJP SMF3 IF VSN NOT FOUND RJM SVB SET VSN BUSY RJM WRP WRITE UPDATED VSN RESTP SMFA RESTORE CATALOG INDEX POINTERS LDN ZERL SET CATALOG INDEX CRD CM LDD CI SHN 6 LMD RI STD CM+3 LDD RI+1 STD CM+4 LDM PBTO+1 CHECK FOR *TO=D* SHN 21-0 MJN SMF13 IF *TO=D* SPECIFIED LDM PFTD SAVE WRITE FLAG LPC 4000 STM PFTD LDM CBTD,BP SET LABEL, TAPE TYPE, DENSITY, CONVERSION LPC 3777 RAM PFTD LDM CBTD+2,BP SET FORMAT/NOISE STM PFTD+2 LDM CBTD+3,BP SET BLOCK SIZE STM PFTD+3 LDM CBTD+4,BP STM PFTD+4 SMF13 LDN TFUN-TFES+1 UPDATE FET STD T1 LDA IR+3,REL ADN TFRR CWD CM ADN TFES-TFRR CWM PESN,T1 LJM SMFX RETURN SMFA BSS 5 CATALOG INDEX TITLE SUBROUTINES. VSI SPACE 4,10 ** VSI - VERIFY SET IDENTIFIER * * ENTRY (PBSI - PBSI+2) = SET ID FROM TAPE CATALOG * * EXIT IF VALID SET IDENTIFIER * * ERROR *MULTI-FILE PROCESSING ERROR* IF SET ID * IS ZEROES OR BLANKS. * * USES T1, T2. VSI4 ERROR MPE *MULTI-FILE PROCESSING ERROR.* VSI SUBR ENTRY/EXIT LDN 0 CHECK FOR ZEROES STD T2 VSI1 LDN 3 VERIFY SET IDENTIFIER STD T1 VSI2 SOD T1 MJN VSI4 IF INCORRECT SET IDENTIFIER LDM PBSI,T1 LMD T2 NJN VSI3 IF VALID CHARACTERS UJN VSI2 VSI3 LDD T2 NJN VSIX IF NEITHER BLANKS NOR ZEROES LDC 2R CHECK FOR BLANKS STD T2 UJN VSI1 VERIFY SET IDENTIFIER SPACE 4,10 *** COMMON DECKS. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH CAA$ EQU 1 DEFINE CAA - CHECK ALTERNATE USER ACCESS FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN LTC$ EQU 1 DEFINE LTC - LOCATE TAPE CATALOG SVB$ EQU 1 DEFINE SVB - SET VSN BUSY VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS VUB$ EQU 1 DEFINE VUB - VERIFY USER BLOCK *CALL COMPTFM *CALL COMPWEI SPACE 4,10 ** BUFFERS. BUFA BSS TAEL*5 BUFB BSS TAEL*5 SPACE 4,10 ERRNG BUF2-* TITLE PRESET. PRS SPACE 4,15 ** PRS - PRESET. * * ENTRY (CPCB - CPCB+4) = CATALOG BUFFER POINTERS. * (FV - FV+2) = FIRST VSN. * (CN - CN+2) = FIRST VSN. * * EXIT (A) = 0 IF FILE EXTENSION. * * USES BA, BP, CI, KA, RI - R1+1. * * CALLS SIB, VIS, VSP. * * MACROS ERROR, LDA, MMOVE, RESTP, SAVEP. PRS SUBR ENTRY/EXIT RESTP CPSI RESTORE SECONDARY VSN INDEX POINTERS MMOVE VBFV,BP,FV,,VSKL MMOVE FV,,CN,,VSKL LDN FV STD KA LDD BA ADN 2 STD BP RJM SIB SEARCH FOR VSN IN BUFFER ZJN PRS2 IF VSN FOUND RJM VIS VSN INDEXED SEARCH ZJN PRS2 IF VSN FOUND PRS1 ERROR EID *ERROR IN INDEX DATA.* PRS2 LDM VBCI,BP ZJN PRS1 IF NO CATALOG ENTRY SHN 14 STD CI SHN -14 STD RI LDM VBCI+1,BP STD RI+1 LDC BUF2 STD BA RJM VSP VERIFY/SET CATALOG POINTERS SAVEP SMFA SAVE CATALOG POINTERS LDA PBQN,ABS LMC 9999D ZJN PRS3 IF EXTENSION LDM PBTO+1 SHN 21-5 PJN PRS6 IF NOT EXTENSION LDM PBQN SCN 77 LMN 9999D/1S12 STM PBQN LDC 9999D STM PBQN+1 PRS3 LDM PAUN ZJN PRS4 IF NOT ALTERNATE USER ERROR FCI *FILE CREATION NOT ALLOWED.* PRS4 STM PESN FORCE SEARCH ON LOGICAL FILENAME PRS5 LJM PRSX RETURN PRS6 LDM PBTO+1 SHN 21-5 PJN PRS7 IF NOT *TO=D* LDN CBLI FORCE SEARCH ON LOGICAL FILENAME STM LTCA PRS7 LDN 1 UJN PRS5 RETURN SPACE 4,10 OVERFLOW OVL1,BUF1 OVERLAY (CLEAR *POSMF* POINTER / MULTI-FILE ASSIGNMENT.),OVL1 SPACE 4,10 *** DIRECT CELLS. FV EQU S1+2 - S1+4 FIRST VOLUME OF MULTI-FILE SET CN EQU S2 - S2+4 SCRATCH CPP SPACE 4,10 *** CPPS - CLEAR *POSMF* CATALOG POINTER. * * IF THE CATALOG POINTED TO BY THE *POSMF* CATALOG HAS * NOT BEEN A VALIDATED TAPE LABEL, THE CATALOG ENTRY * IS PURGED. * * ENTRY NONE. * * EXIT *POSMF* FLAG CLEARED. * CATALOG ENTRY DELETED IF EXTENSION. * * USES BA, CI, KA, T1, CM - CM+4, CN - CN+4, RI - RI+1. * * CALLS DCE, RRP, VIS, VSP. * * MACROS ERROR, LDA, UDTRD, UDTWT. CPP ENTRY ENTRY/EXIT UDTRD CN,/MTX/UTCI,1 LDD CN+1 SHN 14 STD CI SHN -14 STD RI LDD CN+2 STD RI+1 LDC BUF2 STD BA RJM RRP GET CATALOG BLOCK RJM VSP VERIFY/SET CATALOG POINTERS PJN CPP2 IF NO ERROR CPP1 LDN 0 STD CN+1 STD CN+2 UDTWT CN,/MTX/UTCI,1 LJM CPPX RETURN CPP2 LDA CBQN,BP LMC 9999D NJN CPP1 IF NOT *POSMF 9999* LDD CN+3 SAVE VSN POINTER TO CATALOG STD CM LDD CN+4 STD CM+1 CPP3 LDD CM COMPARE NEXT CATALOG INDEX TO CURRENT SHN 14 STD CI SHN -14 LMD RI SHN 14 LMD CM+1 LMD RI+1 ZJN CPP4 IF SAME CATALOG BLOCK LDD CM LPN 77 STD RI LDD CM+1 STD RI+1 RJM RRP GET CATALOG BLOCK CPP4 RJM VSP VERIFY/SET CATALOG POINTERS PJN CPP6 IF NO ERROR CPP5 ERROR ECD *ERROR IN CATALOG DATA.* CPP6 LDM CBNC,BP COMPARE NEXT CATALOG LMD CN+1 NJN CPP7 IF NOT *POSMF 9999* CATALOG LDM CBNC+1,BP LMD CN+2 ZJN CPP8 IF *POSMF 9999* CATALOG CPP7 LDM CBNC,BP ZJN CPP5 IF NO NEXT CATALOG STD CM LDM CBNC+1,BP STD CM+1 LJM CPP3 CHECK NEXT CATALOG ENTRY CPP8 LDN 0 STM CBNC,BP STM CBNC+1,BP LDD CN+1 SHN 14 STD CI SHN -14 LMD RI NJN CPP9 IF DIFFERENT PRU LDD CN+2 LMD RI+1 ZJN CPP10 IF SAME PRU CPP9 RJM WRP WRITE RANDOM PRU LDD CN+1 LPN 77 STD RI LDD CN+2 STD RI+1 RJM RRP READ RANDOM PRU CPP10 RJM VSP VERIFY/SET CATALOG ENTRY MJP CPP5 IF ERROR LDN 0 STD CN+1 STD CN+2 UDTWT CN,/MTX/UTCI,1 RJM PCE PURGE CATALOG ENTRIES LJM CPPX RETURN MFA SPACE 4,24 *** MFAS - *RESEX* MULTI-FILE ASSIGNMENT. * * CALLED BY *RESEX* TO TRANSLATE A MULTI-FILE SET REQUEST * BY SYMBOLIC FILE NAME. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/R,8/ AT,6/ CODE,3/ST *T, +12 60/ FILE IDENTIFIER *T, +13 42/ FILE IDENTIFIER (CONT.),18/ SEQ. NUM *T, +14 36/ SET I.D.,9/ VER.,15/ GEN. *T, +15 30/ RETENTION DATE,30/ CREATION DATE *T, +16 42/ ALTERNATE USERNAME,18/ TO *T, +17 42/ PASSWORD,6/ AC,6/ CT,6/ MD * * EXIT IF THE FILE IS FOUND, THE VALUES IN THE CATALOG * ENTRY ARE PLACED IN THE FET. IF THE FILE IS AN * EXTENSION, THE VALUES FROM THE UDT ARE PLACED IN * THE FET. * * USES KA, T1. * * CALLS CPP, DCE, FTC, PRS, VIS. * * MACROS COMPARE, ERROR, LDA, LIA, MMOVE. MFA ENTRY ENTRY/EXIT RJM PRS PRESET ZJN MFAX IF NON-SYMBOLIC ACCESS LDM VBCI,BP GET FIRST CATALOG ENTRY FOR VSN SHN 14 STD CI SHN -14 STD RI LDM VBCI+1,BP STD RI+1 LDC BUF2 STD BA RJM RRP READ RANDOM PRU RJM VSP VERIFY/SET CATALOG POINTERS PJN MFA1 IF NO ERROR ERROR EID *ERROR IN INDEX DATA.* MFA1 COMPARE PBUN,,CWUN,BA,UNKL FLAG ALTERNATE USER ACCESS STM PAUN MMOVE CWUN,BA,PBUN,,UNKL SAVEP MFAA SAVE CATALOG POINTERS LDD CN+1 CHECK FOR INTERRUPTED *POSMF* ZJN MFA2 IF NO *POSMF* EXSUB CPP CLEAR *POSMF* CATALOG POINTER RESTP MFAA RESTORE FIRST CATALOG ENTRY RJM RRP READ RANDOM PRU MFA2 LDM UTMS+2 CHECK IF FILE WAS WRITTEN ON ZJN MFA3 IF NOT WRITTEN ON RJM DCE DELETE EXCESS CATALOG ENTRIES RESTP MFAA RESTORE FIRST CATALOG ENTRY RJM RRP READ RANDOM PRU MFA3 RJM LTC FIND TAPE CATALOG NJN MFA5 IF FOUND LDM PBTO+1 SHN 21-5 PJN MFA4 IF NOT TAPE FILE EXTENSION MMOVE CBSI,BP,PBSI,,6 LJM MFA8 UPDATE FET MFA4 ERROR FNF *(FILE) NOT FOUND MFA5 LDM POFI COMPARE FILE IDENTIFIERS ZJN MFA6 IF NOT SPECIFIED LDD BP ADM LTCA STD T1 COMPARE ,,POFI,,FIKL NJN MFA4 IF NO MATCH MFA6 LDM PAUN ZJN MFA7 IF NOT ALTERNATE USER ACCESS COMPARE PPWD,,CBPW,BP,PWKL NJN MFA4 IF INCORRECT PASSWORD MFA7 LDM CBST,BP CHECK FOR DATA ERROR SHN 21-1 PJN MFA7.2 IF NO DATA ERROR LDM PBTO+1 CHECK FOR *TO=C* SHN 21-11 MJN MFA7.1 IF CHECK FOR CATALOG ERROR SHN 21-7-21+11 MJN MFA7.2 IF IGNORE CATALOG ERROR MFA7.1 ERROR EFD * ERROR IN FILE DATA.* MFA7.2 LDM PBTO+1 SHN 21-0 MJN MFA9 IF *TO=D* SPECIFIED MMOVE CBVS,BP,PVSN,,5*10D MFA8 LDN TFUN-TFES+1 UPDATE FET STD T1 LDA IR+3,REL ADN TFES CWM PBUF,T1 MFA9 LJM MFAX RETURN MFAA BSS 5 FIRST CATALOG ENTRY FOR VSN TITLE SUBROUTINES. PEC SPACE 4,10 ** PEC - PURGE EXCESS CATALOG ENTRIES. * * ENTRY NONE. * * EXIT EXCESS CATALOGS RELEASED. * EOI VSN STATUS SET. * REEL WRITTEN ON CLEARED. * * USES KA, CN - CN+4. * * CALLS DCE, VIS, WRP. * * MACROS COMPARE, ERROR, MMOVE, UDTRD. PEC3 LDM VBST,BP SET *EOI* VOLUME SCN EOIV/1S12 LMN EOIV/1S12 STM VBST,BP RJM WRP UPDATE STATUS PEC4 LDN 0 CLEAR *REEL WRITTEN* FLAG STM UTMS+2 PEC ENTRY ENTRY/EXIT UDTRD CN,/MTX/UTCI,1 RJM DCE DELETE CATALOG ENTRIES LDC PESN STD KA RJM VIS VSN INDEXED SEARCH NJN PEC4 IF NOT FOUND COMPARE VBFV,BP,PESN,,VSKL ZJN PEC1 IF FIRST VOLUME MMOVE VBFV,BP,PESN,,VSKL RJM VIS VSN INDEXED SEARCH NJN PEC2 IF FOUND PEC1 LDM VBRC,BP CHECK FOR *EOI* VOLUME SHN -6 LMM UTMS+2 ZJP PEC3 IF *EOI* VOLUME MMOVE VBNV,BP,PESN,,VSKL RJM VIS ZJN PEC1 IF NEXT VSN FOUND PEC2 ERROR EID *ERROR IN INDEX DATA.* RDC SPACE 4,10 *** RDC - RELEASE DELETED CATALOG ENTRIES. * * ANY CATALOG ENTRIES WHICH FOLLOW THE CURRENT CATALOG ARE * DELETED BECAUSE THE FILES ON THE TAPE WERE OVERWRITTEN. * * ENTRY NONE. * * EXIT TO PMF TO PROCESS MULTI-FILE SET REQUEST. * * USES CN - CN+4. * * CALLS CPP, DCE, PMF. * * MACROS EXOVL, EXSUB, UDTRD. RDC ENTRY ENTRY/EXIT UDTRD CN,/MTX/UTCI,1 LDD CN+1 CHECK FOR POSMF IN PROGRESS ZJN RDC1 IF NOT *POSMF* EXSUB CPP CLEAR *POSMF* CATALOG POINTER RDC1 LDC BUF2 STD BA RJM DCE DELETE EXCESS CATALOG ENTRIES ZJN RDCX IF NO CATALOG ENTRY EXOVL PMF POSITION MULTI-FILE DCE SPACE 4,10 ** DCE - DELETE EXCESS CATALOG ENTRIES * * ENTRY (CN - CN+4) = *UTCI* FROM UDT. * * EXIT (A) = 0 IF NO CATALOG ENTRY. * * USES CI, KA, RI - RI+1. * * CALLS CSN, IAM, PCE, RRP, VIS, VSP, WRP. * * MACROS ERROR, LDA, MMOVE, RESTP. DCE5 LDN 0 DCE SUBR ENTRY/EXIT LDD CN+3 ZJN DCEX IF NO CATALOG ENTRY SHN 14 STD CI SHN -14 STD RI LDD CN+4 STD RI+1 RJM RRP READ RANDOM PRU RJM VSP VERIFY/SET CATALOG POINTERS MJN DCE5 IF ERROR SAVEP CPCB SAVE CATALOG BUFFER POINTERS LIA CBES,BP STD KA LDI KA ZJP DCE2 IF NO FIRST VSN RJM VIS VSN INDEXED SEARCH NJP DCE2 IF NO FIRST VSN LDM VBRC,BP GET REEL COUNT SHN -6 STD T0 LDM UTMS+2 GET LAST REEL NUMBER SBD T0 ADN 1 STD S1 REEL COUNT MMOVE PESN,,DCEA,,VSKL SAVE CURRENT VSN MMOVE VBFV,BP,PESN,,VSKL RESTP CPCB RESTORE CATALOG BUFFER POINTERS LDD S1 STM CBRC,BP LDM CBNC,BP NJN DCE1 IF NEXT CATALOG FOUND RJM WRP WRITE RANDOM PRU (CATALOG ENTRY) MMOVE DCEA,,PESN,,VSKL RESTORE CURRENT VSN LDN 1 LJM DCEX RETURN DCE1 SHN 14 SET NEXT CATALOG POINTER STM CPCB+2 SHN -14 STM CPCB+3 LDM CBNC+1,BP STM CPCB+4 LDD BA STM CPCB LDN 0 CLEAR NEXT CATALOG POINTER STM CBNC,BP STM CBNC+1,BP RJM WRP WRITE RANDOM PRU RESTP CPCB RESTORE CATALOG POINTERS RJM RRP READ RANDOM PRU RJM VSP VERIFY/SET CATALOG POINTERS PJN DCE3 IF NO ERROR DCE2 ERROR ECD *ERROR IN CATALOG DATA.* DCE3 LDD BP SAVE BUFFER POINTER STM CPCB+1 LDM CBST,BP SHN 21-10 MJP DCE4 IF CATALOG NOT RESERVED LDA CBQN,BP RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE LDN ZERL CRD CM LDN 1 RELEASE VSN/CATALOG ENTRY RJM IAM ISSUE ACCOUNT FILE MESSAGE DCE4 RJM PCE PURGE CATALOG ENTRIES MMOVE DCEA,,PESN,,VSKL RESTORE CURRENT VSN LDN 1 LJM DCEX RETURN DCEA BSS VSKL SAVE CURRENT VSN SPACE 4,10 *** COMMON DECKS. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY DLB$ EQU 1 DEFINE DLB - DELINK BLOCK GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK GNL$ EQU 1 DEFINE GNL - GET NEXT LINK GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH WITH KEY LTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES PLI$ EQU 1 DEFINE PLI - POSITION TO LAAT INDEX SIB$ EQU 1 DEFINE SIB - SEARCH IN BUFFER TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS VUB$ EQU 1 DEFINE VUB - VERIFY USER BLOCK *CALL COMPC2D *CALL COMPTFM SPACE 4,10 ** BUFFERS. BUFA BSS TAEL*5 BUFB BSS TAEL*5 SPACE 4,10 ERRNG BUF2-* TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET FOR SUBFUNCTION MFAS. * * ENTRY NONE * * EXIT (A) = 0 IF NOT A SYMBOLIC ACCESS REQUEST. * (CN - CN+4) = *UTCI* FROM *MAGNET*. * * USES BA, CI, KA, T1, CN - CN+4, FV - FV+4, RI - RI+1. * * CALLS RRP, VIS, VSP. * * MACROS COMPARE, ERROR, LDA, MMOVE, UDTRD. PRS6 ERROR EID *ERROR IN INDEX DATA.* PRS7 LDI T1 SPACE FILL LAST CHARACTER LPN 77 LMC 1S6*1R STI T1 PRS8 LDM PBTO+1 SHN 21-5 MJN PRS9 IF *TO=A* SPECIFIED LDA PBQN,ABS CHECK FOR MULTI-FILE EXTENSION LMC 9999D NJN PRSX IF NOT MULTI-FILE EXTENSION PRS9 LDC 9999D FORCE MULTI-FILE SET EXTENSION STM PBQN+1 LDM PBQN SCN 77 LMN 9999D/1S12 STM PBQN LDM PBTO+1 SET *TO=A* SCN 1S5 LMN 1S5 STM PBTO+1 UJN PRSX RETURN PRS10 LDN 0 NON-SYMBOLIC ACCESS REQUEST PRS SUBR ENTRY/EXIT LDM UDTA ZJN PRSX IF NOT MULTI-FILE LDM UTMS+4 LPC RSSA ZJN PRSX IF NON-SYMBOLIC ACCESS LDM PBTO+1 LPN 1 NJN PRS1 IF *TO=D* NOT SPECIFIED LDN CBLI SEARCH FOR LOGICAL FILE IDENTIFIER STM LTCA PRS1 UDTRD FV,/MTX/USID,1 RJM VSI VERIFY SET IDENTIFIER MMOVE FV,,PBSI,,6 UDTRD FV,/MTX/UESN,1 UDTRD CN,/MTX/UTCI,1 LDN FV STD KA RJM VIS VSN INDEXED SEARCH NJP PRS10 IF VSN NOT FOUND COMPARE VBFV,BP,FV,,VSKL ZJN PRS2 IF FIRST VSN MMOVE VBFV,BP,FV,,VSKL RJM VIS VSN INDEXED SEARCH ZJN PRS2 IF FOUND ERROR EID *ERROR IN INDEX DATA.* PRS2 LDM POFI NJP PRS8 IF FILE NAME SUPPLIED LDA IR+3,REL GENERATE FILE IDENTIFIER FROM FILE NAME CRM POFI,ON LDC POFI STD T1 LDM 3,T1 SCN 77 STM 3,T1 PRS3 LDI T1 SEARCH FOR ZERO BYTE SCN 77 ZJN PRS5 IF ZERO BYTE LDI T1 LPN 77 ZJN PRS4 IF ZERO BYTE AOD T1 UJN PRS3 CONTINUE SEARCH PRS4 LDI T1 MERGE SPACE IN LOWER BYTE LMC 1S6*1R PRS5 LMC 2R STI T1 AOD T1 LMC POFI+10 ZJP PRS7 IF DONE WITH SPACE FILL LDN 0 UJN PRS5 CONTINUE SPACE FILL VSI SPACE 4,10 ** VSI - VERIFY SET IDENTIFIER. * * ENTRY (FV - FV+2) = SET ID FROM *UDT*. * * EXIT IF VALID SET IDENTIFIER. * * ERROR *MULTI-FILE PROCESSING ERROR* IF SET ID * IS ZEROES OR BLANKS. * * USES T1, T2. VSI4 ERROR MPE *MULTI-FILE PROCESSING ERROR.* VSI SUBR ENTRY/EXIT LDN 0 CHECK FOR ZEROES STD T2 VSI1 LDN 3 VERIFY SET IDENTIFIER STD T1 VSI2 SOD T1 MJN VSI4 IF INCORRECT SET IDENTIFIER LDM FV,T1 LMD T2 NJN VSI3 IF VALID CHARACTERS UJN VSI2 CHECK NEXT TWO CHARACTERS VSI3 LDD T2 NJN VSIX IF NEITHER BLANKS NOR ZEROES LDC 2R CHECK FOR BLANKS STD T2 UJN VSI1 VERIFY SET IDENTIFIER SPACE 4,10 ERRNG BUF1-* OVERLAY (POSITION MULTI-FILE.),OVL1 SPACE 4,10 *** DIRECT CELLS. CT EQU S1 CATEGORY MD EQU S1+1 MODE CB EQU S3 - S3+1 CATALOG BUFFER POINTER QUAL PMF CB EQU /".Y."/CB FOR *ENTER CATALOG IMAGE* QUAL * PMF SPACE 4,10 ** PMF - POSITION MULTI-FILE. * * *PMF* READS THE *POSMF* REQUEST FROM THE USER-S FET, * AND VALIDATES THAT IT IS ACCESSIBLE TO THE USER. IF * THE USER IS ALLOWED TO USE IT, IT UPDATES THE ACCESS * COUNTS AND SETS THE *POSMF* FLAGS IN THE *UDT*. * * ENTRY NONE. * * EXIT *POSMF* CATALOG ENTRY PLACED IN *UDT*. * * USES CI, KA, CB - CB+1, CM - CM+4, RI - RI+1. * * CALLS ECI, RRP, VIS, VSP. * * MACROS COMPARE, ERROR, MMOVE. PMF ENTRY ENTRY/EXIT RJM PRS PRESET ZJN PMFX IF NON-SYMBOLIC ACCESS RJM RRP GET CATALOG BLOCK RJM VSP VERIFY/SET CATALOG POINTERS MJP PMF14 IF INCORRECT POINTERS COMPARE PBUN,,CWUN,BA,UNKL ZJN PMF1 IF NOT ALTERNATE USER MMOVE PBUN,,PAUN,,UNKL MMOVE CWUN,BA,PBUN,,UNKL LDM PBTO+1 CHECK FOR EXTENSION SHN 21-5 PJN PMF1 IF NOT EXTENSION ERROR FCI *FILE CREATION INCORRECT* PMF1 SAVEP CPCB SAVE CATALOG BUFFERS LDA PBQN,ABS ZJP PMF7 IF QN NOT SPECIFIED LMM CBQN+1,BP COMPARE SEQUENCE NUMBER WITH CATALOG STD T0 SHN -14 LMM CBQN,BP LPN 77 ADD T0 NJP PMF8 IF NOT CORRECT CATALOG PMF2 LDM PESN SAVE VSN STM PMFA LDN 0 CLEAR VSN (IN CASE CAA ERROR) STM PESN LDM POFI NJN PMF3 IF FILE IDENTIFIER SPECIFIED MMOVE PMFC,,POFI,,FIKL PMF3 RJM CAA CHECK ALTERNATE USER ACCESS PMF4 LDC 0 RESTORE VSN * LDC (PESN) PMFA EQU *-1 STM PESN AOM CBAC+1,BP INCREMENT ACCESS COUNT SHN -14 RAM CBAC,BP LIA CBAD,BP RJM EDT ENTER PACKED DATE/TIME LDM PFTD+1 CHECK FOR WRITE ACCESS SHN 21-4 PJN PMF5 IF NOT WRITE ACCESS LIA CBMD,BP MODIFICATION DATE RJM EDT ENTER PACKED DATE/TIME PMF5 RJM WRP WRITE RANDOM PRU COMPARE PESN,,CBES,BP,VSKL ZJN PMF6 IF SAME VOLUME LDM UTMS+3 SET REWIND FILE FLAG SCN WURF LMN WURF STM UTMS+3 PMF6 UDTRD CM,/MTX/UTCI,1 LDM CPCB+2 SHN 6 LMM CPCB+3 STD CM+1 LDM CPCB+4 STD CM+2 UDTWT CM,/MTX/UTCI,1 LJM PMFX RETURN PMF7 COMPARE POFI,,CBPI,BP,FIKL ZJP PMF2 IF FILE FOUND PMF8 LDM CBNC,BP POSITION TO NEXT CATALOG SHN 14 STD CI SHN -14 LMD RI SHN 14 LMM CBNC+1,BP LMD RI+1 ZJN PMF9 IF SAME CATALOG BLOCK LDM CBNC,BP SAVE RANDOM INDEX LPN 77 STD RI SHN 14 LMM CBNC+1,BP STD RI+1 ZJN PMF10 IF END OF CATALOG BLOCKS RJM RRP READ RANDOM PRU (CATALOG) PMF9 RJM VSP VERIFY/SET CATALOG POINTERS PJP PMF1 IF VALID POINTER ERROR ECD *ERROR IN CATALOG DATA.* PMF10 LDM PBTO+1 CHECK FOR EXTENSION SHN 21-5 PJP PMFX IF NOT APPENDING FILE LDM CPCB+2 SAVE CATALOG POINTERS SHN 6 LMM CPCB+3 STD CB LDM CPCB+4 STD CB+1 RESTP CPSI RESTORE SECONDARY VSN POINTERS LDC PVSN STD KA PMF11 LDM UTMS+2 ZJN PMF13 IF TAPE NOT WRITTEN ON LDM VBRC,BP CHECK FOR LAST REEL SHN -6 LMM UTMS+2 NJN PMF12 IF NOT LAST REEL LDN EOIV/1S12 RAM PMFB PMF12 LDM VBST,BP SET *EOI* VOLUME SCN EOIV/1S12 LMN 0 NOT *EOI* VOLUME * LMN EOIV/1S12 (*EOI* VOLUME) PMFB EQU *-1 STM VBST,BP PMF13 LDM VBST,BP LPN EOIV/1S12 NJN PMF15 IF LAST VOLUME LDM VBNV,BP ZJP PMF16 IF LAST VOLUME MMOVE VBNV,BP,,KA,VSKL RJM SFV SEARCH FOR VOLUME ZJP PMF11 IF VSN FOUND PMF14 ERROR EID *ERROR IN INDEX DATA.* PMF15 COMPARE PESN,,PVSN,,VSKL ZJN PMF16 IF SAME VOLUME LDM UTMS+3 SET REWIND FLAG SCN WURF LMN WURF STM UTMS+3 PMF16 MMOVE VBES,BP,PESN,,VSKL MMOVE VBVS,BP,,KA,VSKL LDM PBTO+1 FORCE SYMBOLIC ACCESS SCN 4 LMN 4 STM PBTO+1 LDM PBSN SCN 77 STM PBSN LDN 1 STM PBSN+1 EXOVL ECI CREATE CATALOG ENTRY PMFC DATA 17HREQUESTED FILE TITLE SUBROUTINES. SFV SPACE 4,10 ** SFV - SEARCH FOR VSN * * ENTRY (BA) = SECONDARY INDEX BLOCK. * (KA) = KEY ADDRESS. * * EXIT (A) = 0 IF VSN FOUND. * * USES BP. * * CALLS SIB, VIS. * * MACROS SAVEP. SFV1 SAVEP CPSI SAVE SECONDARY VSN INDEX POINTERS LDN 0 EXIT *VSN FOUND* SFV SUBR ENTRY/EXIT LDD BA ADN 2 STD BP RJM SIB SEARCH INDEXED BUFFER (VSN) ZJN SFV1 IF FOUND IN THIS BUFFER RJM VIS VSN INDEXED SEARCH ZJN SFV1 IF VSN FOUND UJN SFVX RETURN SPACE 4,10 *** COMMON DECKS. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH CAA$ EQU 1 DEFINE CAA - CHECK ALTERNATE USER ACCESS FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS VUB$ EQU 1 DEFINE VUB - VERIFY USER BLOCK *CALL COMPTFM *CALL COMPWEI SPACE 4,10 SPACE 4,10 *** BUFFERS. BUFA BSS TAEL*5 BUFB BSS TAEL*5 SPACE 4,10 ERRNG BUF2-* TITLE PRESET SUBROUTINES. CDB SPACE 4,10 ** CDB - CONVERT DECIMAL DISPLAY CODE TO BINARY. * * ENTRY (A) = ADDRESS OF STRING (BITS 0-11). * = CHARACTER COUNT (BITS 12-14). * = HALF BYTE FLAG (BIT 15). * * EXIT (A) = CONVERTED VALUE. * * USES S2, S1 - S1+4. * * MACROS ERROR. CDB SUBR ENTRY/EXIT STD S2 ADDRESS OF STRING SHN -14 COUNT AND HALF BYTE FLAG STD S1 SHN -3 HALF BYTE FLAG STD S1+1 LDD S1 CHARACTER COUNT LPN 7 ADD S1+1 STD S1 LDD S1+1 CHECK IF FIELD SPECIFIED SHN 21-0 LMI S2 MJN CDB1 IF HALF BYTE SHN -6 CDB1 LPN 77 ZJN CDBX IF NOT SPECIFIED LDN 0 STD S1+3 ACCUMULATOR (HIGH) STD S1+4 ACCUMULATOR (LOW) CDB2 LDD S1+1 SHN -1 ADD S2 STD T0 LDD S1+1 LPN 1 SHN 21-0 LMI T0 MJN CDB3 IF ODD BYTE SHN -6 CDB3 LPN 77 SBN 1R0 PJN CDB5 IF POSSIBLE VALID DIGIT CDB4 ERROR BAE *BUFFER ARGUMENT ERROR.* CDB5 STD T0 SBN 1R9-1R0+1 PJN CDB4 IF NOT VALID DIGIT LDD S1+3 CALCULATE 10D * ACCUMULATED RESULT SHN 14 ADD S1+4 SHN 2+6 TIMES 4 ADD S1+3 TIMES 5 SHN 14 ADD S1+4 SHN 1 TIMES 10D ADD T0 ADD THIS DIGIT STD S1+4 STORE RESULT SHN -14 STD S1+3 AOD S1+1 SBD S1 NJP CDB2 IF MORE TO CONVERT LDD S1+3 SHN 14 LMD S1+4 LJM CDBX RETURN ELA SPACE 4,10 ** ELA - EXTENDED LABELS ADDRESS PROCESSING. * * ENTRY (T6 - T7) = POSITION TO START AT IN BUFFER. * * EXIT (A) = ABSOLUTE ADDRESS. * (A) = 0, END OF LABEL BUFFER. ELA2 LDN 0 INDICATE END OF BUFFER ELA SUBR ENTRY/EXIT LDA CM+3,REL ADN 11 CRD S1 LDD S1+3 SHN 14 STD S1+1 SHN -14 STD S1+3 SHN 14 LMD S1+4 SBN 2 MJN ELA2 IF NO LABEL BUFFER LDD S1+2 SHN 6 LMD S1+1 STD S1+2 SHN -14 STD S1+1 LDD T6 SBD S1+1 SHN 14 ADD T7 SBD S1+2 ADN 11 ALLOW FOR LABEL PJP ELA2 IF END OF LABEL BUFFER LDD S1+1 CHECK IF BUFFER WITHIN FL ADD S1+3 SHN 14 ADD S1+2 ADD S1+4 SHN -6 SBD FL MJN ELA1 IF BUFFER WITHIN FL ERROR BAE *BUFFER ARGUMENT ERROR.* ELA1 LDD S1+3 CALCULATE LABEL ADDRESS ADD T6 SHN 6 ADD RA SHN 6 ADD S1+4 ADD T7 LJM ELAX RETURN PRS SPACE 4,10 ** PRS - PRESET FOR SUBFUNCTION PMFS. * * ENTRY NONE * * EXIT (A) = 0 IF NOT A SYMBOLIC TAPE REQUEST. * * USES BA, CI, KA, CM - CM+4, RI - RI+1. * * CALLS RLF, SFV, VIS. * * MACROS COMPARE, ERROR, MMOVE. PRS3 LDN 0 NOT A SYMBOLIC TAPE REQUEST PRS SUBR ENTRY/EXIT RJM RLF READ LABELS FROM FET LDC PESN FIND FIRST VOLUME STD KA RJM VIS VSN INDEX SEARCH NJN PRS3 IF NOT FOUND LDC PVSN STD KA MMOVE VBFV,BP,,KA,VSKL COMPARE PESN,,,KA,VSKL ZJN PRS1 IF FIRST VOLUME RJM SFV SEARCH FOR VOLUME ZJN PRS1 IF VSN FOUND ERROR EID *ERROR IN INDEX DATA.* PRS1 LDM VBCI,BP GET CATALOG ENTRY SHN 14 STD CI SHN -14 STD RI LDM VBCI+1,BP STD RI+1 LDC BUF2 STD BA LDD CP CHECK FOR *POSMF* FROM *RESEX* ADN JCIW CRD CM LDD CM CPU PRIORITY LPC 177 LMN /PRD/RXCS NJN PRS2 IF NOT RESEX CP PRIORITY LDM PRSA SKIP PASSWORD CHECK STM CAAB PRS2 LJM PRSX RETURN PRSA BSS 0 LOC CAAB UJN CAA3 SKIP PASSWORD CHECK LOC *O SPACE 4 ERRNG BUF1-* RLF SPACE 4,10 ** READ *HDR1* LABEL FROM USER-S FET. * * ENTRY (UDTA) = UDT ADDRESS. * * EXIT POFI UPDATED FROM USER-S FET. * PBSI UPDATED FROM USER-S FET. * PBQN UPDATED FROM USER-S FET. * * USES T1, T5, T6, T7, CM - CM+4, S1 - S1+4, S2 - S2+4 * * CALLS CDB, ELA. * * MACROS ERROR, UDTRD. RLF SUBR ENTRY/EXIT UDTRD S1,/MTX/UCIB,1 FET OPTIONS UDTRD CM,/MTX/UCIA,1 FET ADDRESS LDD S1+1 SHN 21-5 PJP RLF8 IF NOT EXTENDED LABELS LDN 0 STD T6 STD T7 RLF1 RJM ELA SEARCH FOR *HDR1* LABEL ZJN RLF3 IF END OF LABEL BUFFER CRD S1 ADN 1 CRD S2 LDD S1+4 ZJN RLF3 IF END OF LABELS IN BUFFER LMC 80D NJN RLF3 IF NOT CORRECT LENGTH LDD S2 LMC 2RHD NJN RLF2 IF NOT *HDR1* LABEL LDD S2+1 LMC 2RR1 ZJN RLF4 IF LABEL IS *HDR1* RLF2 LDN 11 INCREMENT LABEL POINTER RAD T7 SHN -14 RAD T6 UJN RLF1 CONTINUE SEARCH RLF3 ERROR BAE *BUFFER ARGUMENT ERROR.* RLF4 LDN 10 READ *HDR1* LABEL STD T5 RJM ELA SEARCH FOR *HDR1* LABEL ADN 1 OFFSET RECORD LENGTH CRM BUF0,T5 MMOVE BUF0+2,,POFI,,FIKL LDN 2 MOVE SET-ID WITH SHIFT STD T7 RLF5 LDM BUF0+10D,T7 HIGH ORDER BYTE LPN 77 SHN 14 LMM BUF0+11D,T7 LOW ORDER BYTE SHN 14 STM PBSI,T7 SOD T7 PJN RLF5 IF MOVE NOT COMPLETE LDM PBQN CLEAR PBQN SCN 77 STM PBQN LDC 14S12+BUF0+15D RJM CDB CONVERT DECIMAL TO BINARY STM PBQN+1 SAVE FILE SEQUENCE NUMBER SHN -14 RAM PBQN LPN 77 SHN 14 ADM PBQN+1 LMC 9999D NJN RLF7 IF NOT EXTENSION LDM PBTO+1 SET *TO=A* SCN 1S5 LMN 1S5 STM PBTO+1 RLF7 LJM RLFX RETURN RLF8 LDN 4 STD T1 LDA CM+3,ABS SBN 2 PJN RLF10 IF FET IN BOUNDS RLF9 LJM RLF3 BUFFER ARGUMENT ERROR RLF10 ADC 77+2+15 SHN -6 SBD FL PJN RLF9 IF FET OUT OF BOUNDS LDA CM+3,REL ADN 11 CRM BUF0,T1 MMOVE BUF0,,POFI,,FIKL MMOVE BUF0+15,,PBSI,,6 LDM PBQN SCN 77 STM PBQN LDC 13S12+BUF0+8D RJM CDB CONVERT DECIMAL TO BINARY ADC -999D NJN RLF11 IF NOT *POSMF 9999* LDC 9000D RLF11 LJM RLF5 STORE FILE SEQUENCE NUMBER SPACE 4,10 ERRNG BUF0-* SPACE 4 OVERLAY (VERIFY TAPE LABELS / UPDATE CATALOG ENTRY.),OVL1 SPACE 4,10 *** DIRECT CELLS. FV EQU S1 - S1+2 FIRST VOLUME RC EQU S1+3 REEL COUNT CN EQU S2 - S2+4 SCRATCH FE EQU CN+1 - CN+2 FINAL CATALOG ENTRY CB EQU CN+3 - CN+4 CURRENT CATALOG ENTRY VTL SPACE 4,10 *** VTL - VERIFY TAPE LABELS. * * VTL COMPARES THE TAPE LABELS WITH THE CATALOG ENTRY TO ENSURE * THAT THE TAPE HAD NOT BEEN MODIFIED IF IT HAD BEEN REMOVED * FROM THE CONTROL OF THE TAPE MANAGEMENT SYSTEM. * * ENTRY PARAMETER BLOCK SET UP BY GUO. * * EXIT CATALOG ENTRY VERIFIED. * * CALLS FCE, MCE, VCE. VTL ENTRY ENTRY/EXIT RJM FCE FIND CATALOG ENTRY ZJN VTLX IF CATALOG NOT FOUND RJM CPC CHECK FOR PURGED CATALOGS LDM CBSI,BP CHECK FOR ORIGINAL TMS CATALOG ENTRY ZJN VTL1 IF SETID NOT SPECIFIED LDM CBLD+2,BP CHECK RETENTION DATE LPN 77 ZJN VTL1 IF RETENTION DATE NOT SPECIFIED LDM CBST,BP CHECK FOR RECOVERED FILE LPC 2000 ZJN VTL2 IF NOT RECOVERED FILE VTL1 RJM UCT UPDATE CATALOG ENTRY FROM TAPE LABEL UJN VTLX RETURN VTL2 RJM VCE VERIFY CATALOG ENTRY UJN VTLX RETURN UCE SPACE 4,10 *** UCES - UPDATE CATALOG ENTRY SUBFUNCTION. * * UPDATE THE CATALOG ENTRY TO MATCH THE INFORMATION WRITTEN ON * THE TAPE. * * ENTRY PARAMETER BLOCK SET UP BY *GUO*. * * EXIT CATALOG ENTRY UPDATED. * * CALLS FCE, UCT. UCE ENTRY ENTRY/EXIT RJM FCE FIND CATALOG ENTRY ZJN UCEX IF NOT FOUND RJM UCT UPDATE CATALOG ENTRY FROM TAPE LABEL UJN UCEX RETURN TITLE SUBROUTINES. CPC SPACE 4,10 ** CPC - CHECK TO PURGE CATALOGS. * * ENTRY (UTMS+2) = TAPE WRITTEN ON. * (CI - RI+1) = CURRENT TAPE CATALOG. * (CB - CB+1) = *UTCI* CURRENT CATALOG. * * EXIT TO *RDC* IF TAPE WRITTEN ON AND CURRENT CATALOG * POINTERS DO NOT MATCH. * * CALLS CPF. CPC SUBR ENTRY/EXIT LDM UTMS+2 ZJN CPCX IF NOT WRITTEN ON LDD CI COMPARE CATALOG ENTRIES SHN 6 LMD RI (A) = CURRENT TAPE CATALOG LMD CB NJN CPC1 IF NOT SAME CATALOG LDD RI+1 LMD CB+1 ZJN CPCX IF SAME CATALOG CPC1 LDM UTMS+4 RE-ISSUE CURRENT REQUEST SCN RSRR LMN RSRR STM UTMS+4 EXOVL PEC PURGE EXCESS CATALOG ENTRIES CTC SPACE 4,10 ** CTC - COMPLETE *MAGNET* *TFM* CALL. * * ENTRY NONE. * * EXIT *TFM* REQUEST FLAG CLEARED, AND NORMAL COMPLETION * SET IN *UDT*. EXIT IS TO *DPP*. * * MACROS UDTWT. CTC ENTRY ENTRY LDM UTMS+4 CLEAR TFM REQUEST FLAG SCN RSIL STM UTMS+4 UDTWT UTMS,/MTX/UTMS,1 LDN ZERL SET NORMAL COMPLETION CRD CM LDN /MTX/NCP STD CM UDTWT CM,/MTX/UXRQ,1 LJM DPP EXIT PP FCE SPACE 4,10 ** FCE - FIND CATALOG ENTRY. * * ENTRY PARAMETER BLOCK SET UP BY *GUO*. * * EXIT (A) = 0 IF CATALOG ENTRY NOT FOUND. * (CB - CB+1) = CURRENT CATALOG ENTRY. * (FE - FE+1) = *POSMF* CATALOG ENTRY. * * USES CI, KA, RC, CM - CM+4, CN - CN+4, * FV - FV+2, R1 - RI+1. * * CALLS RRP, VIS, VSP. * * MACROS COMPARE, ERROR, MMOVE, SAVEP, UDTRD. FCE11 LDN 0 CATALOG ENTRY NOT FOUND FCE SUBR ENTRY/EXIT LDC PESN STD KA RJM VIS VSN INDEXED SEARCH NJN FCE11 IF NOT FOUND LDM VBRC,BP SHN -6 STD RC UDTRD POFI,/MTX/UFID,2 READ FILE IDENTIFIER UDTRD CM,/MTX/USID,1 READ SEQUENCE NUMBER LDM PBQN SCN 77 STM PBQN LDD CM+3 LPN 77 RAM PBQN LDD CM+4 STM PBQN+1 UDTRD PBCR,/MTX/UDAT,1 READ CREATION AND RETENTION DATES MMOVE VBFV,BP,FV,,VSKL COMPARE PESN,,FV,,VSKL ZJN FCE1 IF FIRST VOLUME LDN FV READ FIRST VOLUME STD KA RJM VIS READ FIRST VOLUME NJN FCE2 IF VSN NOT FOUND FCE1 LDM VBCI,BP SEARCH FOR CATALOG ENTRY NJN FCE3 IF CATALOG ENTRY FOUND FCE2 ERROR EID *ERROR IN INDEX DATA.* FCE3 SHN 14 SET POINTERS TO CATALOG STD CI SHN -14 STD RI LDM VBCI+1,BP STD RI+1 LDC BUF2 STD BA FCE4 RJM RRP GET CATALOG BLOCK FCE5 RJM VSP VERIFY/SET CATALOG POINTERS MJN FCE2 IF INCORRECT POINTERS LDM PBQN CHECK FOR CURRENT CATALOG LMM CBQN,BP LPN 77 NJN FCE6 IF NOT CURRENT CATALOG LDM PBQN+1 LMM CBQN+1,BP ZJN FCE7 IF CURRENT CATALOG (TO FCE10) FCE6 LDA CBQN,BP LMC 9999D FCE7 ZJN FCE10 IF CATALOG CREATED BY *POSMF* LDM CBNC,BP NJN FCE8 IF NEXT CATALOG EXISTS ERROR MPE *MULTI-FILE PROCESSING ERROR.* FCE8 SHN 14 SET NEXT CATALOG POINTER STD CI SHN -14 LMD RI NJN FCE9 IF NOT IN CURRENT BLOCK LDM CBNC+1,BP LMD RI+1 ZJP FCE5 IF CURRENT BLOCK FCE9 LDM CBNC,BP LPN 77 STD RI LDM CBNC+1,BP STD RI+1 LJM FCE4 READ NEXT CATALOG ENTRY FCE10 UDTRD CN,/MTX/UTCI,1 READ (FE - FE+1), (CB - CB+1) SAVEP CPCB SAVE CATALOG BUFFER POINTERS LJM FCEX RETURN SBS SPACE 4,10 ** SBS - SET BUSY STATUS. * * SET CATALOG BUSY ON THE CURRENT CATALOG ENTRY, AND CLEAR * CATALOG BUSY ON THE PREVIOUS CATALOG ENTRY. * * ENTRY (BA - RI+1) = CURRENT CATALOG ENTRY POINTERS. * (CB - CB+1) = LAST CATALOG ENTRY RANDOM INDEX. * * EXIT BUSY STATUS SET. * CATALOG ENTRIES WRITTEN. * * USES CI, CB - CB+1, FE - FE+1, RI - RI+1. * * CALLS RRP, VSP, WRP. * * MACROS ERROR, UDTWT. SBS SUBR ENTRY/EXIT LDM CBST,BP SET BUSY STATUS SCN 1 LMN 1 STM CBST,BP LDD CB LMD RI LPN 77 NJN SBS1 IF DIFFERENT CATALOG BLOCKS LDD CB+1 LMD RI+1 NJN SBS1 IF DIFFERENT CATALOG BLOCKS LDD CB SHN -6 LMD CI ZJN SBS4 IF SAME CATALOG ENTRY UJN SBS2 CLEAR BUSY FLAG SBS1 RJM WRP WRITE RANDOM PRU (CATALOG) LDD CB+1 STM RI+1 LDD CB LPN 77 STD RI RJM RRP GET INITIAL BLOCK (CATALOG) SBS2 LDD CB SHN -6 STD CI RJM VSP VERIFY/SET CATALOG POINTERS PJN SBS3 IF NO ERROR ERROR MPE *MULTI-FILE PROCESSING ERROR.* SBS3 LDM CBST,BP SCN 1 STM CBST,BP SBS4 RJM WRP WRITE RANDOM PRU LDM CPCB+2 SET NEW CATALOG INDEX SHN 6 LMM CPCB+3 STD CB LDM CPCB+4 STD CB+1 LDD FE LMD CB NJN SBS5 IF *POSMF* NOT COMPLETE LDD FE+1 LMD CB+1 NJN SBS5 IF *POSMF* NOT COMPLETE STD FE STD FE+1 SBS5 UDTWT CN,/MTX/UTCI,1 UPDATE CATALOG INDICIES IN UDT LJM SBSX RETURN UCT SPACE 4,10 ** UCT - UPDATE CATALOG ENTRY FROM TAPE LABEL. * * ENTRY (BA - RI+1) = CATALOG ENTRY POINTERS. * * EXIT CATALOG UPDATED. * * CALLS SBS. * * MACROS CMOVE, COMPARE, ERROR, RESTP. UCT SUBR ENTRY/EXIT LDN 0 CLEAR DIFFERENCES CELL FOR *CMOVE* STD T3 LDM UTMS+3 CHECK FOR FIRST *HDR1* OF VOLUME LPC WUFL ZJN UCT1 IF NOT FIRST LABEL OF VOLUME LMM UTMS+3 CLEAR FIRST *HDR1* FLAG STM UTMS+3 LJM UCT2 UPDATE CATALOG UCT1 LDM CBSN,BP SET SEQUENCE NUMBER SCN 77 STM CBSN,BP LDM PBSN LPN 77 RAM CBSN,BP LDM PBSN+1 STM CBSN+1,BP CMOVE PESN,,CBES,BP,VSKL/2 COMPARE/SET EXTERNAL VSN CMOVE PVSN,,CBVS,BP,VSKL/2 COMPARE/SET INTERNAL VSN UCT2 CMOVE POFI,,CBPI,BP,2*10D COMPARE/SET FILE ID, SEQ. NUMBER CMOVE PFTD,,CBTD,BP,5 COMPARE/SET TAPE CHARACTERISTICS * LDD T3 CHECK TOTAL COMPARE MISMATCHES ZJN UCT3 IF NO CHANGE DETECTED LDM CBST,BP SET *ISSUE RECOVERY MESSAGE* FLAG LPC 7377 LMC 400 STM CBST,BP UCT3 LDM CBFA,BP LPN 77 STM CBFA,BP LDM PBFA SCN 77 RAM CBFA,BP LDM UTMS CHECK FUNCTION LMN UCES NJP UCT5 IF NOT UPDATE CATALOG LIA CBES,BP FIND FIRST VSN STD KA COMPARE PESN,,,KA,VSKL ZJN UCT4 IF FIRST VSN RJM VIS NJN UCT6 IF VSN NOT FOUND LDM VBRC,BP CALCULATE REEL COUNT SHN -6 STD T0 LDD RC SBD T0 UCT4 ADN 1 FIRST REEL STD RC RESTP CPCB RESTORE CATALOG BUFFER POINTERS LDD RC STM CBRC,BP UCT5 RJM SBS SET CATALOG BUSY STATUS LJM UCTX RETURN UCT6 ERROR ECD *ERROR IN CATALOG DATA.* VCE SPACE 4,10 ** VCE - VERIFY CATALOG ENTRY. * * ENTRY PARAMETER BLOCK SET UP. * (BA) = CATALOG BUFFER POINTER. * (BP) = CATALOG ENTRY POINTER. * * EXIT CATALOG ENTRY VERIFIED. * * USES KA. * * CALLS VIS, WRP. * * MACROS COMPARE, ERROR. VCE SUBR ENTRY/EXIT LDM UTMS+3 CHECK FOR FIRST *HDR1* ON VOLUME LPC WUFL ZJP VCE3 IF NOT FIRST LABEL OF VOLUME LMM UTMS+3 CLEAR FIRST LABEL FLAG STM UTMS+3 LIA CBES,BP DETERMINE CORRECT SECTION NUMBER STD KA LDI KA NJN VCE2 IF EXTERNAL VSN FOUND VCE1 ERROR ECD ERROR IN CATALOG DATA VCE2 RJM VIS VSN INDEXED SEARCH NJN VCE1 IF VSN NOT FOUND LDM VBRC,BP GET REEL COUNT FROM FIRST VOLUME OF FILE SHN -6 STD T0 LDM PBSN ADJUST SECTION NUMBER LPN 7 SHN 14 ADM PBSN+1 SBD RC CURRENT REEL ADD T0 FIRST REEL STM PBSN+1 SHN -14 LPN 7 STD T0 LDM PBSN SCN 7 LMD T0 STM PBSN RESTP CPCB RESTORE CATALOG POINTERS UJN VCE4 COMPARE SECTION NUMBERS VCE3 COMPARE PESN,,CBES,BP,VSKL NJN VCE5 IF NO MATCH COMPARE PVSN,,CBVS,BP,VSKL NJN VCE7 IF NO MATCH VCE4 LDM PBSN COMPARE FILE SECTION NUMBERS LMM CBSN,BP LPN 7 VCE5 NJN VCE7 IF NO MATCH LDM PBSN+1 LMM CBSN+1,BP NJN VCE7 IF NO MATCH VCE6 COMPARE POFI,,CBPI,BP,4*10D ZJN VCE8 IF CATALOG DATA MATCHES PHYSICAL DATA VCE7 LDM CBST,BP SET CATALOG ERROR SCN 2 LMN 2 STM CBST,BP RJM WRP WRITE RANDOM PRU ERROR MPE *MULTI-FILE PROCESSING ERROR.* VCE8 RJM SBS SET BUSY STATUS LJM VCEX RETURN SPACE 4,10 *** COMMON DECKS BSE$ EQU 1 DEFINE BSE - BACK SPACE ONE ENTRY GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK GNL$ EQU 1 DEFINE GNL - GET NEXT LINK GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK ISK$ EQU 1 DEFINE ISK - INDEX SEARCH FOR KEY PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX SIB$ EQU 1 DEFINE SIB - SEARCH IN BLOCK TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS *CALL COMPTFM SPACE 4,10 *** BUFFERS. SPACE 4,10 ERRNG BUF2-* OVERLAY (ENTER CATALOG IMAGE.),OVL1 SPACE 4,10 ** LOCAL DIRECT CELL LOCATIONS. CN EQU S1 - S1+4 SCRATCH (5 LOCATIONS) CB EQU /PMF/CB CATALOG BUFFER POINTER ECIS SPACE 4,10 ** ECIS - ENTER CATALOG IMAGE. * * *ECIS* IS A INTERNAL FUNCTION USED TO * CREATE THE TAPE CATALOG AND THE USERNAME * INDEX (IF REQUIRED). * * ENTRY NONE. * * EXIT (CPCB - CPCB+4) = CATALOG POINTERS. * USERNAME INDEX CREATED IF REQUIRED. * CATALOG IMAGE CREATED. * * USES BA, CI, CM - CM+4, KA, PB, RI - RI+1, * T1. * * CALLS ABC, ASR, CAC, CCT, CFM, EDT, IBC, PRS, RRP, SSP, WRP. * * MACROS CLEAR, ERROR, EXOVL, LIA, LDA, MMOVE, * RESTP, SAVEP. ECI ENTRY ENTRY/EXIT LDC PBUN STD KA RJM UIS USERNAME INDEXED SEARCH ZJP ECI2 IF USERNAME FOUND LDC BUFA ECI1 STD PB CREATE/UPDATE USERNAME INDEX LDC BUF2 STD BA RJM IBC INITIALIZE BLOCK CHAIN SAVEP CPCB SAVE CATALOG POINTERS RESTP CPSI RESTORE INDEX POINTERS LDM CPCB+3 STM UBCI,PB LDM CPCB+4 STM UBCI+1,PB MMOVE ,KA,,PB,UNKL RJM CIE CREATE INDEXED ENTRY ECIA EQU *-1 (RJM TO *WRP* IF UPDATE) RESTP CPCB RESTORE CATALOG POINTERS LJM ECI7 ENTER CATALOG IMAGE ECI2 LDM UBCI,BP SET FIRST CATALOG BLOCK LPN 77 STD RI SHN 14 LMM UBCI+1,BP STD RI+1 NJN ECI3 IF CATALOG INDEX LDC WRP STM ECIA LDD BP LJM ECI1 UPDATE USERNAME INDEX ECI3 LDM PBTO+1 CHECK ACCESS TYPE LPN 4 ZJN ECI4 IF NOT SYMBOLIC ACCESS LDC POFI ECI4 STD KA SET SEARCH TYPE LDC BUF2 SET CATALOG BUFFER STD BA RJM SCB SEARCH CATALOG BUFFER ZJN ECI5 IF FILE NOT FOUND ERROR FAR *(FILENAME) ALREADY RESERVED.* ECI5 LDM CPHP CHECK IF HOLE FOUND ZJN ECI6 IF HOLE NOT FOUND RESTP CPHP RESTORE HOLE POINTERS RJM RRP READ RANDOM PRU UJN ECI8 CREATE CATALOG IMAGE ECI6 LDC BUF2 DEFINE CATALOG BUFFER STD BA LDN CWRI EXTEND CATALOG FILE RJM ABC ADD BLOCK TO CHAIN ECI7 LDC RTCB*100 SET RECORD TYPE/LEVEL STM CWRT,BA LDN TCEL STM CWEL,BA MMOVE PBUN,,CWUN,BA,UNKL LDM CWFE,BA RJM MBP MOVE BUFFER POINTER LDN 1 STD CI ECI8 SAVEP CPCB SAVE CATALOG POINTERS LDM CWUW,BA CREATE CATALOG IMAGE SBN TCEL STM CWUW,BA AOM CWNE,BA RJM DCE BUILD DEFAULT CATALOG ENTRY RJM CAC CHANGE ALTERNATE CATALOG LIST ATTRIBUTE RJM CCT CHANGE FILE CATEGORY RJM CFM CHANGE FILE MODE RJM WRP WRITE RANDOM PRU LDM UDTA NJP ECI9 IF MULTI-FILE LDN ZERL UPDATE FET CRD CM LDD CI LPN 77 SHN 6 LMD RI STD CM+3 LDD RI+1 STD CM+4 LDA IR+3,REL ADN TFRR CWM CM,ON CWM PESN,TR CWM POFI,TR CLEAR PVES,,TSVL*10D LDM CBTD,BP DETERMINE TAPE TYPE SHN -7 LPN 3 RJM SSP SET SCRATCH POOL ADDRESS EXOVL ASR ASSIGN SCRATCH VOLUME (NO RETURN) ECI9 LDD CB GET ASSIGNED CATALOG SHN 14 STD CI SCN 77 LMD CB+1 ZJP ECIX IF NOT ASSIGNED STD RI+1 SHN -14 STD RI RJM RRP GET INITIAL BLOCK RJM VSP VERIFY/SET CATALOG POINTER UDTRD CN,/MTX/UTCI,1 LDM CPCB+2 SET MULTI-FILE LINKAGE SHN 6 LMM CPCB+3 STD CN+1 STM CBNC,BP LDM CPCB+4 STD CN+2 STM CBNC+1,BP RJM WRP WRITE RANDOM PRU (CATALOG) UDTWT CN,/MTX/UTCI,1 LJM ECIX RETURN TITLE SUBROUTINES. CAC SPACE 4,10 ** CAC - CHANGE ALTERNATE CATALOG LIST ATTRIBUTE * * ENTRY (PPWD+3) = ALTERNATE LIST ATTRIBUTE. * * EXIT LIST ATTRIBUTE CHANGED AS REQUIRED. * * USES T1. CAC1 LDM CBST,BP CHANGE CATALOG LIST ATTRIBUTE SHN 0-13+22 SCN 1 LMD T1 LMN 1 SHN 13-0 STM CBST,BP CAC SUBR ENTRY/EXIT LDM PBAC LPN 77 ZJN CACX IF ATTRIBUTE NOT SPECIFIED SBN FAYS STD T1 SBN FANO MJN CAC1 IF VALID ATTRIBUTE UJN CACX RETURN CCT SPACE 4,10 ** CCT - CHANGE CATEGORY TYPE. * * ENTRY (PBCT) = FILE CATEGORY. * * EXIT FILE CATEGORY CHANGED AS REQUIRED. * * USES T1. CCT1 LDM CBCT,BP CHANGE FILE CATEGORY LPN 77 LMD T1 STM CBCT,BP CCT SUBR ENTRY/EXIT LDM PBCT SCN 77 ZJN CCTX IF CATEGORY NOT SPECIFIED STD T1 SHN -6 SBN FCMX MJN CCT1 IF VALID CATEGORY TYPE UJN CCTX RETURN CFM SPACE 4,10 ** CFM - CHANGE FILE MODE. * * ENTRY (PBMD) = FILE ASSESS MODE. * * EXIT FILE MODE CHANGED AS REQUIRED. * * USES T1. CFM1 LDM CBCT,BP CHANGE FILE MODE SCN 77 LMD T1 STM CBCT,BP CFM SUBR ENTRY/EXIT LDM PBMD LPN 77 ZJN CFMX IF MODE NOT SPECIFIED STD T1 SBN FMMX MJN CFM1 IF VALID FILE MODE UJN CFMX RETURN DCE SPACE 4,10 ** DCE - BUILD DEFAULT CATALOG IMAGE. * * ENTRY (BA) = BUFFER ADDRESS (CATALOG). * (BP) = BUFFER POINTER (CATALOG). * (UDTA) NON-ZERO IF MULTI-FILE. * * EXIT CATALOG ENTRY BUILT FROM THE FET * PARAMETERS AND UDT IF MULTI-FILE. * * USES CM - CM+4. * * CALLS EDT. * * MACROS CLEAR, LDA, LIA, MMOVE, UDTRD, ZJM. DCE SUBR ENTRY/EXIT CLEAR ,BP,TCEL*10D MMOVE POFI,,CBLI,BP,FIKL LDC 1401 SET CATALOG STATUS FLAGS STM CBST,BP LDM PBTO+1 SET SYMBOLIC ACCESS IF REQUIRED LPN 4 RAM CBST,BP LDM PFTD SHN 21-12 MJN DCE1 IF LABEL TAPE FILE CLEAR POFI,,FIKL DCE1 LDM PBQN CONVERT SEQUENCE NUMBER TO DISPLAY CODE LPN 77 ADM PBQN+1 NJN DCE2 IF SPECIFIED LDN 1 STM PBQN+1 LDM PBTO SHN 21-2 PJN DCE2 IF NOT SYMBOLIC ACCESS LDC 9999D SET MULTI-FILE EXTENSION STM PBQN+1 SHN -14 RAM PBQN DCE2 LDM PBGN SET GENERATION NUMBER LPN 7 ADM PBGN+1 NJN DCE3 IF SPECIFIED LDN 1 STM PBGN+1 DCE3 MMOVE PBUF,,CBES,BP,6*10D LDN 0 STM CBTD+1,BP MMOVE PBCR+2,,CBLD+2,BP,6 SET RETENTION DATE LDN JDAL GET CREATION DATE CRD CM LDD CM+2 SET CREATION DATE SHN 6 STM CBLD+0,BP LDD CM+3 SHN -6 RAM CBLD+0,BP LDD CM+3 SHN 6 STM CBLD+1,BP LDD CM+4 SHN -6 RAM CBLD+1,BP LDM CBLD+2,BP LPN 77 SHN 14 ADD CM+4 SHN 6 STM CBLD+2,BP MMOVE PPWD,,CBPW,BP,10D LDC FCPR*100+FMRE FILE CATEGORY AND MODE DEFAULTS STM CBCT,BP LIA CBCD,BP RJM EDT ENTER PACKED DATE/TIME LIA CBMD,BP RJM EDT ENTER PACKED DATE/TIME LIA CBAD,BP RJM EDT ENTER PACKED DATE/TIME LDN 1 STM CBAC+1,BP INITIALIZE ACCESS COUNT LDM UDTA ZJP DCE4 IF NOT MULTI-FILE LDN 1 INITIALIZE REEL COUNT STM CBRC,BP DCE4 LDN 2 STD T1 LIA CBCN,BP STM DCEB LIA CBPN,BP STM DCEC NFA CHGN CRM **,ON DCEB EQU *-1 NFA PJ1N CRM **,T1 DCEC EQU *-1 LDM PFTD+1 INSURE PO=W SCN 30 LMN 20 STM PFTD+1 LDM PFTD SHN 21-12 PJN DCE5 IF UNLABELED FILE SCN 1 INSURE WRITE LABEL SET LMN 1 SHN 13-0 STM PFTD DCE5 LDM CBST,BP SHN 21-2 MJN DCE6 IF SYMBOLIC ACCESS LDM CBQN,BP SET SEQUENCE NUMBER TO 1 SCN 77 STM CBQN,BP LDN 1 STM CBQN+1,BP DCE6 LJM DCEX RETURN SPACE 4,10 ** LOCAL COMMON DECKS. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY CIE$ EQU 1 DEFINE CIE - CREATE INDEXED ENTRY IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY SCB$ EQU 1 DEFINE SCB - SEARCH CATALOG BUFFER SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER SSP$ EQU 1 DEFINE SSP - SET SCRATCH POOL ADDRESS UIS$ EQU 1 DEFINE UIS - USERNAME INDEXED SEARCH VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS *CALL COMPTFM *CALL COMPWEI SPACE 4 ** BUFFERS. BUFA BSS TSVL*5 BUFB BSS TSVL*5 SPACE 4,10 ERRNG BUF2-* BYTES LEFT BEFORE OVERFLOW OVERLAY (ASSIGN SCRATCH TAPE.),OVL1 SPACE 4,10 *** COMMON SYMBOL DEFINITIONS. QUAL RSX *CALL COMSRSX QUAL * .RJID EQU /RSX/RJID*5 ERRPL /RSX/RJID-100 MUST BE IN 1ST PRU OF DEMAND FILE ENTRY .RREQ EQU /RSX/RREQ*5-500 ERRNG /RSX/RREQ-100 MUST BE IN 2ND PRU OF DEMAND FILE ENTRY .RQPV EQU /RSX/RQPV*5-500 ERRNG /RSX/RQPV-100 MUST BE IN 2ND PRU OF DEMAND FILE ENTRY SPACE 4,10 *** DIRECT CELL LOCATIONS. CN EQU S1 - S1+4 DE EQU S1+1 DEMAND FILE EQUIPMENT DT EQU S1+2 DEMAND FILE TRACK DS EQU S1+3 DEMAND FILE SECTOR IL EQU S2+1 INTERLOCK FLAG FT EQU S2+2 - S2+3 FET FIRST POINTER IN EQU S2+4 - S3+0 FET IN POINTER OT EQU S3+1 - S3+2 FET OUT POINTER LM EQU S3+3 - S3+4 FET LIMIT POINTER ASRS SPACE 4,10 ** ASRS - ASSIGN SCRATCH REEL. * * ENTRY (CPCB - CPCB+4) = CATALOG POINTERS. * (CPAB - CPAB+4) = PREVIOUS VSN INDEX. * (SCRP) = ADDRESS IN *TMST* OF CORRECT SCRATCH POOL. * * EXIT SCRATCH TAPE ASSIGNED TO THE JOB. * * USES BA, EC, KA, PB, T3, CM - CM+4, FP - FP+4, RI - RI+1. * * CALLS ARF, CIE, DEE, DLB, EDT, ERR, MBP, RRP, SAC, VIS, WRP. * * MACROS LDA, MMOVE, RESTP, SAVEP, UDTRD, UDTWT. ASR ENTRY ENTRY/EXIT LDM SCRP SET SCRATCH POOL ADDRESS STM ASRB ASR1 RESTP CPSB RESTORE TMST BUFFER POINTERS LDM CPCB DEFINE TMST BUFFER = CATALOG BUFFER STD BA RJM GIB GET INITIAL BLOCK (TMST) LDM CWFE,BA RJM MBP MOVE BUFFER POINTER SAVEP CPSB SAVE BUFFER POINTERS (TMST) LDM SBSM,BP CHECK SCRATCH POOL ASRB EQU *-1 (ADDRESS IN *TMST* OF CORRECT SCRATCH POOL) LMC 7777 NJN ASR4 IF SCRATCH AVAILABLE LDM SBST,BP LPN FFTS/10000 NJN ASR2 IF FOREIGN FAMILY EXOVL GSP SEARCH GLOBAL SCRATCH POOLS (NO RETURN) ASR2 ERROR WSA *WAIT SCRATCH ASSIGNMENT.* ASR3 ERROR EID *ERROR IN INDEX DATA.* ASR4 LDC PVNV LOCATE SCRATCH STD KA LDM SCRP GET ADDRESS OF CORRECT SCRATCH POOL ADD BP STD T1 MMOVE ,,,KA,VSKL RJM VIS VSN INDEXED SEARCH NJN ASR3 IF NOT FOUND LDM VBST,BP LPN ASVS/10000 ZJN ASR3 IF SCRATCH NOT FOUND LDM VBST,BP LPN RTVS/10000 NJN ASR3 IF TAPE RESERVED LDM VBST,BP LPN HMVS/10000+UOVS/10000 STM ASRA NJN ASR5 IF NOT AVAILABLE LDM VBST+1,BP LPN TVVS+MVVS+ERVS+VIVS STM ASRA ASR5 RESTP CPSB RESTORE TMST BUFFER POINTERS LDM SCRP GET ADDRESS OF CORRECT SCRATCH POOL WORD ADD BP STD T3 MMOVE VBNV,CPSI+1,,T3,VSKL SET NEW VSN IN SCRATCH POOL WORD LDA 3,T3 DECREMENT SCRATCH COUNT SBN 1 STM 4,T3 SHN -14 STM 3,T3 RJM WRP WRITE RANDOM PRU (TMST) LDC 0 ASRA EQU *-1 ZJN ASR7 IF THIS SCRATCH VSN ACCEPTABLE RESTP CPSI RESTORE SECONDARY VSN POINTERS LDM VBST+1,BP LPN VIVS NJN ASR6 IF VSN INTERLOCKED CLEAR VBNV,BP,VSKL CLEAR NEXT VOLUME RJM WRP ASR6 LJM ASR1 GET NEXT SCRATCH TAPE ASR7 EXSUB CSA COMPLETE SCRATCH ASSIGNMENT LJM ASRX RETURN AVSS SPACE 4,10 ** AVSS - ADVANCE VSN FILE. * * CALLED BY *MAGNET* TO SET THE NEXT VOLUME OF TAPE IN THE UDT. * * EXIT IF THERE IS A NEXT VOLUME, IT IS RETURNED. * IF THERE IS NOT A NEXT VOLUME AND THIS IS A WRITE * REQUEST, A SCRATCH VOLUME WILL BE ASSIGNED. * * USES BA, CI, CM - CM+4, KA, RI - RI+1. * * CALLS ASR, PRS, SSP, VIS, VSP, WRP. * * MACROS ERROR, EXOVL, MMOVE, UDTRD, UDTWT. AVS ENTRY ENTRY/EXIT RJM PRS PRESET ZJN AVSX IF NO CATALOG ENTRY RJM RRP GET CATALOG RJM VSP VERIFY/SET CATALOG POINTERS MJN AVSX IF ERROR SAVEP CPCB RESTP CPSI RESTORE VSN SECONDARY INDEX POINTERS LDM UTMS+3 LPN WURF NJP AVS6 IF REWIND FILE LDM VBRC,BP CHECK FOR LAST VOLUME SHN -6 LMM UTMS+2 NJN AVS1 IF NOT LAST VOLUME LDM VBST,BP CLEAR EOI VOLUME STATUS SCN EOIV/1S12 STM VBST,BP AVS1 RJM WRP WRITE RANDOM PRU (VSN INDEX) MMOVE VBNV,BP,,KA,VSKL LDI KA ZJN AVS4 IF END OF ASSIGNED VOLUMES RJM VIS VSN INDEXED SEARCH NJN AVS3 IF VOLUME NOT FOUND LDM VBRC,BP CHECK FOR LAST VOLUME SHN -6 STD T0 LDM UTMS+2 ZJN AVS2 IF NOT WRITTEN TO SBD T0 SBN 1 NJN AVS2 IF NOT LAST VOLUME LDM VBST,BP SET EOI VOLUME STATUS SCN EOIV/1S12 LMN EOIV/1S12 STM VBST,BP AVS2 RJM IUC INCREASE USAGE COUNTER RJM WRP WRITE RANDOM PRU (VSN INDEX) LJM AVS7 UPDATE UDT AVS3 ERROR EID *ERROR IN INDEX DATA.* AVS4 LDM UTMS+4 CHECK VOLUME EXTENSION SHN 21-12 MJP AVS5 IF USER OWNED FILE SAVEP CPAB SAVE BUFFER POINTERS (VSN INDEX) MMOVE VBFV,BP,PVFV,,VSKL LDM VBRC,BP SCN 77 STD T0 LDM PVRC LPN 77 LMD T0 STM PVRC SAVE REEL COUNT LDM VBST+1,BP DETERMINE TAPE TYPE SHN -5 LPN 3 RJM SSP SET SCRATCH POOL ADDRESS EXSUB ASR ASSIGN SCRATCH REEL LJM AVSX RETURN AVS5 ERROR NEU *NO EXTEND ON USER OWNED FILE.* AVS6 LMM UTMS+3 CLEAR REWIND FLAG STM UTMS+3 COMPARE CBES,CPCB+1,VBES,BP,VSKL ZJP AVSX IF REWIND CURRENT VOLUME RJM WRP WRITE RANDOM PRU (VSN INDEX) LDC PVES STD KA MMOVE CBES,CPCB+1,,KA,VSKL RJM VIS VSN INDEXED SEARCH NJP AVS3 IF VSN NOT FOUND RJM IUC INCREASE USAGE COUNTER AVS7 MMOVE VBES,BP,,KA,VSKL UDTRD CM,/MTX/UESN,1 MMOVE PVES,,CM,,VSKL SET EXTERNAL VSN UDTWT CM,/MTX/UESN,1 UDTRD CM,/MTX/UISN,1 MMOVE VBVS,BP,CM,,VSKL SET INTERNAL VSN UDTWT CM,/MTX/UISN,1 UDTRD CM,/MTX/UVRI,1 LDM VBRC,BP SET REEL NUMBER SHN -6 SBN 1 STD CM+3 UDTWT CM,/MTX/UVRI,1 LJM AVSX RETURN CSAS SPACE 4,10 ** CSAS - COMPLETE SCRATCH ASSIGNMENT. * * ENTRY (CPSI - CPSI+1) = VSN INDEX POINTERS. * (CPCB - CPCB+4) = CATALOG POINTERS. * * USES CM - CM+4, KA, PB, T3. * * CALLS COB, CVS, RBB, RRP, SBP, SVB, WRP. * * MACROS CLEAR, MMOVE, RESTP, UDTRD, UDTWT. CSA ENTRY ENTRY/EXIT RESTP CPSI RESTORE BUFFER POINTERS (VSN INDEX) MMOVE VBES,BP,PVES,,VSKL MMOVE VBVS,BP,PVVS,,VSKL MMOVE VBES,BP,VBVS,BP,VSKL MMOVE PVES,,VBFV,BP,VSKL CLEAR VBNV,BP,VSKL LDM CPCB+2 SET CATALOG INDEX LPN 77 SHN 6 LMM CPCB+3 STM VBCI,BP LDM CPCB+4 STM VBCI+1,BP RJM SVB SET VSN BUSY LDM VBST,BP SET EOI VOLUME STATUS SCN EOIV/1S12 LMN EOIV/1S12 STM VBST,BP LDC 100 INCREMENT REEL COUNT RAM PVRC SCN 77 RAM VBRC,BP SHN -6 SBN 1 ZJN CSA1 IF FIRST VOLUME OF SET MMOVE PVFV,,VBFV,BP,VSKL CSA1 LDD FC LMN SSJF NJP CSA2 IF NOT CALLED BY TFSP LDA IR+3,REL RJM SBP SET BUFFER POINTERS RJM COB CHECK OUTPUT BUFFER LDN TSVL STD T3 LDC BUFA STD PB STD KA RJM RBB READ BINARY BUFFER MMOVE VBJS,PB,VBJS,BP,2 SET *EJTO* CSA2 RJM WRP WRITE RANDOM PRU RESTP CPAB RESTORE BUFFER POINTERS (VSN INDEX) LDD BA ZJN CSA3 IF NOT FIRST REEL RJM RRP READ RANDOM PRU (VSN INDEX) MMOVE PVES,,VBNV,BP,VSKL RJM WRP WRITE RANDOM PRU (VSN INDEX) CSA3 RESTP CPCB RESTORE BUFFER POINTERS (CATALOG) RJM RRP READ RANDOM PRU LDD FC LMN RSXF ZJN CSA4 IF CALLED BY RESEX LMN SSJF&RSXF NJP CSA5 IF NOT CALLED BY TFSP RJM CVS COMPLETE VSN SWITCH LJM CSA7 RETURN CSA4 MMOVE PVES,,CBES,BP,VSKL MMOVE PVES,,CBVS,BP,VSKL LDM PVRC SHN -6 STM CBSN+1,BP SBN 1 STM PVES+4 SET REEL NUMBER TO BE PASSED TO *MAGNET* LDA IR+3,REL RESTORE *FA* AND *SN* ADN TFVS CRD CM LDD CM+3 STM PVVS+3 LDD CM+4 STM PVVS+4 LDM PFLG SET BLANK LABEL REQUIRED FLAG LPC 3777 LMC 4000 STM PFLG LDA IR+3,REL UPDATE FET ADN TFES CWM PVES,ON ADN TFVS-TFES-1 CWM PVVS,ON LJM CSA6 COMPLETE REQUEST CSA5 UDTRD CM,/MTX/UESN,1 MMOVE PVES,,CM,,VSKL SET EXTERNAL VSN UDTWT CM,/MTX/UESN,1 UDTRD CM,/MTX/UISN,1 MMOVE PVVS,,CM,,VSKL SET INTERNAL VSN UDTWT CM,/MTX/UISN,1 UDTRD CM,/MTX/UVRI,1 LDM PVRC SET REEL NUMBER SHN -6 SBN 1 STD CM+3 UDTWT CM,/MTX/UVRI,1 LDM UTMS+3 SET AUTO-BLANK LABEL SCN WUBL LMN WUBL STM UTMS+3 CSA6 AOM CBRC,BP INCREMENT REEL COUNT CSA7 RJM WRP WRITE RANDOM PRU LJM CSAX RETURN CVS SPACE 4,20 ** CVS - COMPLETE VSN SWITCH. * * CVS COMPLETES ASSIGNMENT OF NEXT VSN AND CLEARS * ASSIGNMENT FIELDS IN CURRENT VSN, WHICH IS BEING * FLAGGED BY FUNCTION *GNSS*. *CVS* IS CALLED BY * *CSA* IF THE FUNCTION CALLED IS *SSJF*. (TFSP) * * ENTRY (PVES) = NEW VSN. * (DA) = DEMAND FILE FST ADDRESS. * (DE) = DEMAND FILE EQUIPMENT. * (DT) = DEMAND FILE TRACK. * (DS) = DEMAND FILE SECTOR. * IF FIRST REEL, *RSXDID* FILE ATTACHED * * EXIT NEW VSN SET IN UDT OR RSXDID FILE. * IF FIRST REEL, NEW VSN SET IN CATALOG. * * USES CM - CM+4, FS - FS+4, FN - FN+4, T1, T5, * T6, T7. * * CALLS RDS, WBB, WDS. * * MACROS CLEAR, ENDMS, ERROR, MMOVE, MONITOR, * SETMS, UDTRD, UDTWT. CVS SUBR ENTRY/EXIT LDN 0 STM VBCI,PB CLEAR CATALOG INDEX STM VBCI+1,PB LDM VBRC,PB CLEAR REEL COUNT LPN 77 STM VBRC,PB LDM VBST+1,PB CLEAR BUSY FLAG SCN VIVS STM VBST+1,PB CLEAR VBFV,PB,10D CLEAR FIRST VSN AND JSN LDN TSVL WRITE BUFFER TO FET STD T1 LDC BUFA RJM WBB WRITE BINARY BUFFER LDM UDTA NJP CVS3 IF REEL EXTENSION MMOVE PVES,,CBES,BP,VSKL UPDATE CATALOG MMOVE PVVS,,CBVS,BP,VSKL LDD DE SET EQUIPMENT STD T5 LDD DT SET TRACK STD T6 LDD DS SET SECTOR STD T7 SETMS IO,RW LDC BUF0 RJM RDS READ SECTOR PJN CVS2 IF NOT READ ERROR CVS1 ERROR MSE *EQXX, DNYY, MASS STORAGE ERROR* CVS2 MMOVE PVES,,BUF0+2+.RQPV+5*/RSX/PVSN,,VSKL SET NEW VSN MMOVE PVVS,,BUF0+2+.RQPV+5*/RSX/PVSI,,VSKL SET NEW PRN LDC BUF0 RJM WDS WRITE SECTOR MJP CVS1 IF WRITE ERROR ENDMS DROP CHANNEL LDN RDFO SET DEMAND FILE ORDINAL STD T1 LDN /PFM/PTUP SET MODE STD T2 LDN RFAS RETURN DEMAND FILE RJM ARF * LDN 0 SET DEMAND FILE NOT ATTACHED STM DFFO LDN ZERL ISSUE RESOURCE EVENT CRD CM LDM VBVS,PB HASH VSN ADM VBVS+1,PB ADM VBVS+2,PB SHN 6 SCN 77 SHN 14 ADC ESVR ENTER RESOURCE EVENT STD CM+4 SHN -14 STD CM+3 MONITOR EATM LJM CVSX RETURN CVS3 UDTRD CM,/MTX/UESN,1 UPDATE VSN-S IN *UDT* MMOVE PVES,,CM,,VSKL UDTWT CM,/MTX/UESN,1 WRITE *UDT* UDTRD CM,/MTX/UISN,1 MMOVE PVVS,,CM,,VSKL UDTWT CM,/MTX/UISN,1 LJM CVSX RETURN GNSS SPACE 4,15 ** GNSS - GET NEXT SCRATCH. * * ENTRY (IR+3 - IR+4) ADDRESS OF VSN ENTRY BUFFER. * * EXIT *VSN* ENTRY IN BUFFER UPDATED. * NEXT SCRATCH *VSN* ASSIGNED TO THE JOB. * * CALLS ASR, SFV, SSP. * * MACROS EXSUB. GNS ENTRY RJM SFV PRESET LDC BUF2 SET BUFFER POINTERS STD BA LDM VBST+1,PB DETERMINE TAPE TYPE SHN -5 LPN 3 RJM SSP SET SCRATCH POOL ADDRESS LDM VBCI,PB SHN 14 STD CI SET CATALOG INDEX SHN -14 STD RI SET RANDOM INDEX LDM VBCI+1,PB STD RI+1 RJM GIB GET INITIAL BLOCK RJM VSP VERIFY/SET POINTERS PJN GNS1 IF VALID CATALOG POINTERS ERROR EID *ERROR IN INDEX DATA* GNS1 SAVEP CPCB SAVE CATALOG BUFFER POINTERS EXSUB ASR ASSIGN SCRATCH REEL LJM GNSX RETURN TITLE SUBROUTINES. SPACE 4 ** LOCAL COMMON DECKS. BSE$ EQU 1 BSE - BACKSPACE ONE ENTRY GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK GNL$ EQU 1 DEFINE GNL - GET NEXT LINK GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER SSP$ EQU 1 DEFINE SSP - SET SCRATCH POOL ADDRESS SVB$ EQU 1 DEFINE SVB - SET VSN BUSY TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT UTR$ EQU 1 DEFINE UTR - UPDATE TRT VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS IUC$ EQU 1 DEFINE IUC - INCREASE USAGE COUNTER *CALL COMPCOB *CALL COMPRBB *CALL COMPTFM *CALL COMPWBB BUFA BSS TSVL*5 VSN BUFFER SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET FOR FUNCTION AVSS. * * ENTRY NONE. * * EXIT (A) = 0 IF NO CATALOG INDEX. * (CPCB - CPCB+4) = CATALOG POINTERS. * * USES KA, (CN - CN+4). * * CALLS VIS. * * MACROS ERROR, RESTP. PRS SUBR ENTRY/EXIT UDTRD CN,/MTX/UTCI,1 LDM UTMS+3 SET FIRST *HDR1* LABEL FLAG LPC -WUFL LMC WUFL STM UTMS+3 LPN WURF ZJN PRS1 IF NOT REWIND LDD CN+1 ZJN PRS1 IF NOT POSMF IN PROGRESS LDD CN+2 STM CPCB+4 LDD CN+1 UJN PRS2 SET CATALOG POINTERS PRS1 LDD CN+4 STM CPCB+4 LDD CN+3 SET CATALOG POINTERS PRS2 ZJN PRSX IF NO CATALOG POINTERS SHN 14 STM CPCB+2 SHN -14 STM CPCB+3 LDC BUF2 STM CPCB LDC PESN FIND CURRENT VSN STD KA RJM VIS VSN INDEXED SEARCH ZJN PRS3 IF VSN FOUND ERROR EID *ERROR IN INDEX DATA.* PRS3 LDM VBRC,BP CHECK REEL COUNT SHN -6 SBN 2 MJN PRS3.1 IF FIRST REEL LDM VBST+1,BP CLEAR VOLUME BUSY SCN VIVS STM VBST+1,BP PRS3.1 BSS 0 RESTP CPCB RESTORE CATALOG BUFFER LDD RI ADD RI+1 LJM PRSX RETURN SPACE 4 ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW TITLE SUBROUTINES (OVERLAYED BY BUF2). SFV SPACE 4,20 *** SFV - SEARCH FOR VSN. * * *SFV* IS CALLED BY THE *GNSS* FUNCTION. IT MAY BE * OVERLAYED BY BUF2. *SFV* SEARCHES THE *UDT-S* AND * THE *RSXDID* FILE FOR THE VSN BEING REQUESTED. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT (CPAB - CPAB+4) = CATALOG BUFFER POINTERS. * IF FIRST REEL, (RESEX) * (DE) = DEMAND FILE EQUIPMENT. * (DT) = DEMAND FILE TRACK. * (DS) = DEMAND FILE SECTOR. * (DA) = FST ADDRESS OF RSXDID FILE. * (UDTA) = 0. * RSXD(ID) IS LEFT BUSY. * IF REEL EXTENSION, (MAGNET) * (CPAB - CPAB+4) = BUFFER POINTERS TO * PREVIOUS VSN. * (PVFV) = FIRST VSN. * (UDTA) = *FWA* OF UDT ENTRY. * * USES CM - CM+4, CN - CN+4, DE, DT, DS, KA, PB, T3, T5, T6, * T7. * * CALLS COB, FAT, RBB, RND, SBP, VIS. * * MACROS COMPARE, ENDMS, ERROR, MONITOR, MMOVE, PAUSE, SAVEP, * SETMS, UDTRD. SFV16 SAVEP CPAB SAVE BUFFER POINTERS MMOVE VBFV,PB,PVFV,,VSKL SAVE FIRST VSN LDM VBRC,BP SAVE REEL COUNT STM PVRC UJN SFVX RETURN SFV17 ENDMS SFV SUBR ENTRY/EXIT LDA IR+3,REL RJM SBP SET FET BUFFER POINTERS RJM COB CHECK OUTPUT BUFFERS PJN SFV1 IF NO ERROR ERROR BAE *BUFFER ARGUMENT ERROR* SFV1 LDN TSVL PROCESS REQUEST STD T3 LDC BUFA SET UP BUFFER POINTER STD PB STD KA RJM RBB READ BINARY BUFFER LDC PVES STD KA MMOVE VBES,PB,,KA,VSKL RJM VIS VSN INDEXED SEARCH NJP SFV8 IF VSN NOT FOUND LDM VBNV,BP CHECK FOR NEXT VSN NJP SFV5 IF NEXT VSN SFV2 PAUSE ALLOW MOVE / CHECK FOR ERROR LDD CM+1 LMN ORET ZJN SFV2.1 IF OVERRIDE ERROR LDN 0 GET FIRST AND LAST ADDRESS OF *UDT-S* STD CM+1 LDC MTSI SET *MAGNET* SUBSYSTEM ID STD CM+2 LDC /MTX/UBUF SET BUFFER ADDRESS STD CM+4 SHN -14 ADC 100 SET WORD COUNT STD CM+3 MONITOR TDAM LDD CM+1 ZJN SFV3 IF COMPLETE SCN 3 ZJN SFV2 IF MAGNET BUSY, RETRY SFV2.1 ERROR MNA *MAGNET NOT ACTIVE* SFV3 LDD MA SET *FWA* OF UDT CRD CN LDD CN+4 SBN /MTX/UNITL STM UDTA LDD CN+2 SET LWA+1 OF UDT STD T5 SFV4 LDN /MTX/UNITL SEARCH UDT FOR JOB RAM UDTA SBD T5 PJP SFV9 IF END OF *UDT-S* UDTRD CN,/MTX/UVRI,1 READ EJT ORDINAL AND FLAGS COMPARE CN,,VBJS,PB,2 NJN SFV4 IF NO MATCH UDTRD CM,/MTX/UESN,1 READ *VSN* FROM *UDT* COMPARE CM,,VBES,PB,4 NJP SFV4 IF NOT FOUND LDD CN+4 LPN 21 LMN 1 ZJN SFV6 IF MOUNT REQUEST FOR VSN SFV5 ERROR VBS *VSN BUSY* SFV6 LDC PVES SET FIRST VSN STD KA MMOVE VBFV,PB,,KA,VSKL SFV7 RJM VIS VSN INDEXED SEARCH NJN SFV8 IF NOT FOUND COMPARE VBES,PB,VBNV,BP,VSKL ZJP SFV16 IF NEXT VSN POINTS TO THIS VSN MMOVE VBNV,BP,,KA,VSKL LDI KA NJN SFV7 IF NO NEXT VSN SFV8 ERROR EID ERROR IN INDEX DATA SFV9 LDN RDFO SET DEMAND FILE FNT ORDINAL STD T1 STM DFFO LDN /PFM/PTUP SET MODE STD T2 LDN /COMSCPS/AFAS ATTACH DEMAND FILE RJM ARF LDD FN COMPARE FILE NAMES LMC 2RRS LMD FN+1 LMC 2RXD LMD FN+2 LMM MFID ZJN SFV10 IF *RSXDID* FILE ERROR ILR *TFM INCORRECT REQUEST* SFV10 STM UDTA CLEAR UDT ADDRESS LDD FS SET EQUIPMENT LPC 777 STD DE STD T5 LDD FS+1 SET FIRST TRACK STD T6 LDN FSMS SET FIRST SECTOR STD T7 SETMS IO SFV11 RJM RND READ FIRST SECTOR OF DEMAND FILE ENTRY LDM BUF0+2+.RJID+4 SAVE JOB EJT ORDINAL STM SFVB LDD T6 SAVE TRACK FOR SECOND SECTOR OF ENTRY STD DT LDD T7 SAVE SECTOR FOR SECOND SECTOR OF ENTRY STD DS RJM RND READ SECOND SECTOR OF DEMAND FILE ENTRY LDM VBJS,PB CHECK JOB EJT ORDINAL LMM SFVB NJN SFV11 IF NOT THIS ENTRY LDM BUF0+2+.RREQ ADM BUF0+2+.RREQ+1 ADM BUF0+2+.RREQ+2 ADM BUF0+2+.RREQ+3 ADM BUF0+2+.RREQ+4 NJN SFV11 IF NO REQUEST COMPARE VBES,PB,BUF0+2+.RQPV+5*/RSX/PVSN,,VSKL CHECK VSN NJN SFV15.1 IF NOT THIS ENTRY LDN SFVAL GET LENGTH OF LIST STD T1 SFV15 LDM SFVA,T1 CHECK FOR MATCHING RESOURCE LMM BUF0+2+.RQPV+5*/RSX/PRES+3 ZJP SFV17 IF FOUND SOD T1 PJN SFV15 IF NOT END OF LIST SFV15.1 LJM SFV11 READ NEXT SECTOR SFVA BSS 0 RESOURCE TABLE VFD 12/0RMT 7 TRACK TAPE VFD 12/0RNT 9 TRACK TAPE VFD 12/0RPE 1600 BPI 9 TRACK TAPE VFD 12/0RHD 800 BPI 9 TRACK TAPE VFD 12/0RGE 6250 BPI 9 TRACK TAPE VFD 12/0RCT CTS CARTRIDGE TAPE VFD 12/0RAT ACS CARTRIDGE TAPE SFVAL EQU *-SFVA-1 LENGTH OF RESOURCE TABLE SFVB BSS 1 EJT ORDINAL FROM DEMAND FILE ENTRY RND SPACE 4,15 ** RND - READ NEXT DEMAND FILE SECTOR. * * ENTRY (T5 - T7) = EST ORDINAL, TRACK AND SECTOR. * * EXIT SPECIFIED SECTOR READ. * (T6 - T7) ADVANCED TO NEXT SECTOR. * * ERROR TO *ERR* IF MASS STORAGE ERROR, OR IF EOI ENCOUNTERED. * * USES T3, T6, T7. * * CALLS RDS. * * MACROS ENDMS, ERROR. RND SUBR ENTRY/EXIT LDC BUF0 STD T3 RJM RDS READ SECTOR PJN RND1 IF NOT READ ERROR ERROR MSE *EQXX, DNYY, MASS STORAGE ERROR* RND1 LDI T3 CHECK FIRST CONTROL BYTE NJN RND2 IF NOT EOF LDM 1,T3 CHECK NEXT CONTROL BYTE NJN RND2 IF NOT EOI ENDMS ERROR VNF *VSN NOT FOUND* RND2 STD T7 SET NEXT SECTOR SHN 6 PJN RNDX IF NOT NEW TRACK SHN -6 STD T6 LDN 0 CLEAR SECTOR STD T7 UJN RNDX RETURN SPACE 4,10 OVERFLOW OVL1,BUF1 OVERLAY (SEARCH GLOBAL SCRATCH POOL.),OVL1 SPACE 4,10 ** LOCAL DIRECT CELLS. FP EQU S3 - S3+4 FNT SEARCH POINTERS (5 LOCATIONS) GSPS SPACE 4,10 ** GSP - SEARCH GLOBAL SCRATCH POOL(S). * * CALLED TO LOCATE A SCRATCH TAPE IN ANOTHER FAMILY-S * CATALOG. ONLY FAMILY-S DESIGNATED AS GLOBAL WILL BE * SEARCHED. IF A SCRATCH TAPE IS FOUND, IT IS DELETED * FROM THE FAMILY CATALOG AND RE-ENTERED INTO THE * REQUESTING FAMILY CATALOG TO HONOR USER JOB SCRATCH * REQUEST. * * ENTRY (FO) = FAMILY TAPE CATALOG FNT ORDINAL. * (PFAM - PFAM+3) = FAMILY NAME. * (SCRP) = ADDRESS IN TMST OF CORRECT SCRATCH POOL WORD. * * EXIT (FO) = RESET. * (PFAM - PFAM+3) =RESET. * TO CSA - COMPLETE SCRATCH ASSIGNMENT. * * USES FP - FP+4, PB, T1, T2, KA. * * CALLS ARF, CIE, CSA, DDE, DLB, LSV, PRP, ROC, RRP, SAC, * VIS, WRP. * * MACROS ERROR, EXOVL, MMOVE, RESTP. GSP ENTRY ENTRY/EXIT LDN FNTP INITIALIZE FNT POINTERS CRD FP MMOVE PFAM,,GSPA,,PFKL LDD FO STD FP+3 STM GSPA+4 LDN 0 PRESET FNT ORDINAL STD FP UJP GSP2 ENTER SEARCH LOOP GSP1 RJM ROC RESET ORIGINAL CATALOG ERROR WSA *WAIT SCRATCH ASSIGNMENT.* GSP2 LDD FO SET FNT ORDINAL STD T1 LDN /PFM/PTWR SET MODE STD T2 LDN RFAS RETURN CATALOG RJM ARF RJM SAC SEARCH FOR ALTERNATE CATALOG ZJP GSP1 IF END OF SEARCH RESTP CPSB SWAP TO SYSTEM BLOCK BUFFER RJM RRP READ RANDOM PRU (TMST) LDM SBST,BP LPN GFTS/10000 ZJN GSP2 IF NOT GLOBAL FAMILY LDM SBST+1,BP LPN FETS+SATS+UITS NJP GSP2 IF ERROR, SUSPEND OR UTILITY ACTIVE RJM LSV LOCATE SCRATCH VOLUME NJP GSP2 IF SCRATCH NOT FOUND OR ERROR MMOVE ,BP,BUFA,,TSVL*10D RJM DDE DELETE DATA ENTRY (SECONDARY INDEX) LDM CWNE,BA NJN GSP3 IF BLOCK NOT EMPTY RJM DLB DELINK BLOCK (SECONDARY INDEX) RESTP CPPI SWAP TO PRIMARY INDEX BUFFER RJM DDE DELETE DATA ENTRY (PRIMARY INDEX) LDM CWNE,BA ZJN GSP3 IF BLOCK NOT EMPTY RJM DLB DELINK BLOCK (PRIMARY INDEX) UJN GSP4 UPDATE SCRATCH VOLUME/COUNT GSP3 RJM WRP WRITE RANDOM PRU (PRIMARY VSN INDEX) GSP4 RESTP CPSB SWAP TO SYSTEM BLOCK LDM SCRP SET ADDRESS OF SCRATCH POOL WORD ADD BP STD T3 MMOVE BUFA+VBNV,,,T3,VSKL LDA 3,T3 DECREMENT SCRATCH COUNT SBN 1 STM 4,T3 SHN -14 STM 3,T3 RJM WRP WRITE RANDOM PRU LDD FO SET FNT ORDINAL STD T1 LDN /PFM/PTWR SET MODE STD T2 LDN RFAS RETURN CATALOG RJM ARF RJM ROC RESET ORIGINAL CATALOG LDC BUFA STD PB STD KA MMOVE BUFA,,BUFC,,VSKL RJM VIS VSN INDEXED SEARCH ZJP GSP2 IF VSN FOUND RJM CIE CREATE INDEX ENTRY (VSN) LDC BUFC STD KA RJM VIS FIND NEWLY CREATED VSN INDEX NJN GSP5 IF NOT FOUND EXOVL CSA COMPLETE SCRATCH ASSIGNMENT (NO RETURN) GSP5 ERROR EID *ERROR IN INDEX DATA.* GSPA BSSZ 5 42/ FAMILY,6/ 0,12/ FNT ORDINAL TITLE SUBROUTINES. LSV SPACE 4,10 ** LSV - LOCATE SCRATCH VOLUME. * * ENTRY (PESN - PESN+3) = EXTERNAL VSN. * (SCRP) = ADDRESS IN TMST OF CORRECT SCRATCH POOL WORD. * * EXIT (A) = 0 IF FOUND. * (A) = ERROR CODE IF NOT FOUND. * * USES KA, T2. * * CALLS VIS. * * MACROS MMOVE. LSV3 LDN 0 INDICATE SCRATCH FOUND LSV SUBR ENTRY/EXIT LDC PESN STD KA LDM SCRP GET ADDRESS OF SCRATCH POOL WORD ADD BP STD T3 LDI T3 CHECK SCRATCH POOL LMC 7777 NJN LSV1 IF SCRATCH AVAILABLE LDN /EMSG/WSA *WAIT SCRATCH ASSIGNMENT.* UJN LSVX RETURN LSV1 MMOVE ,T3,,KA,VSKL RJM VIS VSN INDEXED SEARCH NJN LSV2 IF NOT FOUND LDM VBST,BP LPN ASVS/10000 NJN LSV3 INDICATE SCRATCH FOUND LSV2 LDN /EMSG/EID *ERROR IN INDEX DATA.* UJN LSVX RETURN PRP SPACE 4,10 ** PRP - PRESET RANDOM PROCESSORS. * * EXIT RANDOM PROCESSORS INITIALIZED * * USES T5 - T5+4. * * CALLS IRA. PRP SUBR ENTRY/EXIT LDD FO RJM AFA GET ABSOLUTE FST ADDRESS CRD T5 LDD T5 ISOLATE EQUIPMENT LPC 777 STD T5 RJM IRA INITIALIZE RANDOM PROCESSORS UJN PRPX RETURN ROC SPACE 4,10 ** ROC - RESET ORIGINAL CATALOG. * * ENTRY (GSPA - GSPA+3) = ORIGINAL FAMILY NAME. * (GSPA+4 = ORIGINAL CATALOG FNT ORDINAL. * * EXIT (PFAM - PFAM+3) = ORIGINAL FAMILY NAME. * (FO) = ORIGINAL FAMILY ORDINAL. * ORIGINAL CATALOG ATTACHED IN WRITE MODE AND RANDOM * PROCESSORS PRESET. * * USES T1, T2. * * CALLS ARF, PRP, UTR. * * MACROS MMOVE. ROC SUBR ENTRY/EXIT MMOVE GSPA,,PFAM,,PFKL RESET FAMILY NAME LDM GSPA+4 SET FNT ORDINAL STD FO STD T1 LDN /PFM/PTWR SET WRITE MODE STD T2 LDN /COMSCPS/AFAS ATTACH CATALOG RJM ARF RJM UTR UPDATE TRT RJM PRP PRESET RANDOM PROCESSORS UJN ROCX RETURN SAC SPACE 4,10 ** SAC - SEARCH FOR ALTERNATE CATALOG. * * ENTRY (FP) = LAST FNT ORDINAL CHECKED. * (FP+2) = MAXIMUM NUMBER OF FNT ENTRIES. * (FP+3) = FNT ORDINAL OF FAMILY ENTERED. * * EXIT (A) .NE. 0 IF CATALOG FOUND. * (A) = 0 IF CATALOG NOT FOUND. * (FN - FN+4) = FAMILY NAME. * (FO) = FNT ORDINAL. * (FP) = FNT ORDINAL. * * USES CM - CM+4, FN - FN+4, FO, FS - FS+4, T1, T2. * * CALLS AFA, ARF, UTR. * * MACROS COMPARE. SAC SUBR ENTRY/EXIT SAC1 AOD FP ADVANCE POINTER RJM AFA GET ABSOLUTE FST ADDRESS SBN FSTG-FNTG CRD FN READ FNT ENTRY LDD FP LMD FP+2 ZJN SACX IF END OF FNT LDD FN ZJN SAC1 IF EMPTY ENTRY LDD FN+4 CHECK FILE TYPE SHN -6 LMN FAFT NJN SAC1 IF NOT CORRECT FILE TYPE COMPARE SACA,,FN,,PFKL NJN SAC1 IF NOT CATALOG LDD FP RJM AFA GET ABSOLUTE FST ADDRESS CRD FS READ FST OF FAST ATTACH FILE LDD FP LMD FP+3 ZJN SAC1 IF FAMILY ENTERED SFA EST,FS CRD FS READ EST ENTRY LDD FS SHN 21-13 PJP SAC1 IF NOT MASS STORAGE DEVICE SHN 21-6-21+13 MJP SAC1 IF DEVICE UNAVAILABLE LDD FS+3 SHN 21-13 MJP SAC1 IF ACCESS NOT ALLOWED LDD FS+4 SHN 3 ADN PFGL CRM PFAM,ON ADN STLL-PFGL-1 CRD CM GET INITIALIZE REQUESTS LDD CM CHECK INITIALIZE AND UNLOAD REQUESTS LPC 1030 NJP SAC1 IF REQUESTS PENDING LDD FP SET CATALOG FNT ORDINAL STD FO STD T1 LDN /PFM/PTWR SET MODE STD T2 LDN /COMSCPS/AFAS ATTACH CATALOG RJM ARF RJM UTR UPDATE TRT RJM PRP PRESET RANDOM PROCESSORS LDN 1 SET CATALOG FOUND LJM SACX RETURN SACA VFD 48D/0L"TMFC" TMS CATALOG NAME SPACE 4,10 ** LOCAL COMMON DECKS. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY CIE$ EQU 1 DEFINE CIE - CREATE INDEXED ENTRY DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY DLB$ EQU 1 DEFINE DLB - DELINK DATA BLOCK GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT UTR$ EQU 1 DEFUNE UTR - UPDATE TRT VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH *CALL COMPIRA *CALL COMPTFM *CALL COMPWEI SPACE 4,10 ** BUFFERS. BUFA BSS TSVL*5 BUFB BSS TSVL*5 BUFC BSS 4 SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (ADMIT ALTERNATE USERS.),OVL1 ADMS SPACE 4,10 *** ADMS - ADMIT ALTERNATE USERS. * * THE ADMIT OVERLAY GRANTS PERMISSION FOR USERS OTHER * THAN THE FILE CREATOR TO ACCESS A PRIVATE FILE. * THE TWO CM WORD ADMIT ENTRIES SPECIFY THE ALTERNATE * USERNAME AND THE MODE OF ACCESS ALLOWED FOR THAT USER. * * THERE IS NO LIMIT TO THE NUMBER OF ADMIT ENTRIES * THAT CAN BE ASSOCIATED WITH A FILE AS ADDITIONAL * DATA BLOCKS WILL BE APPENDED TO THE FILE AS NEEDED. * * ENTRY (IR - IR+3) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0 *T, +2 60/ 0 *T, +3 60/ 0 *T, +4 12/ FNT,30/ 0,18/ 0 *T, +5 42/ 0,18/ EADD *T, +6 60/ 0 *T, +7 36/ VSN,24/ 0 *T, +10 60/ 0 *T, +11 60/ 0 *T, +12 60/ FILE IDENTIFIER *T, +13 42/ FID (CONT.),18/ 0 *T, +14 60/ 0 *T, +15 60/ 0 *T, +16 42/ ALT. USERNAME,18/ 0 * * USES T7, KA, PB, RI - RI+1. * * CALLS AUS, FTC, IBC, IIE, MBP, TBA, WRP. * * MACROS CLEAR, ERROR, LDA, MMOVE, SAVEP, RESTP. ADM ENTRY ADMIT ALTERNATE USERS LDC BUFA BUILD ADMIT ENTRY STD PB LDN PDTL CRM BUFA+5,ON CLEAR ,PB,TAEL*10D-7 MMOVE PAUN,,,PB,UNKL LDM PAUN ZJP ADM3 IF NO ALTERNATE USERNAME LDM PPWD+4 LPN 77 STM ABAM,PB ZJP ADM3 IF INCORRECT ACCESS MODE SBN FMMX RJM FTC FIND TAPE CATALOG ZJN ADM2 IF CATALOG FOUND ADM1 ERROR ADM2 LDM PESN ZJN ADM5 IF SYMBOLIC FILE NAME RESTP CPSI RESTORE VSN INDEX POINTERS LDM VBRC,BP CHECK FOR FIRST REEL SHN -6 ZJN ADM4 IF NO REEL COUNT, ASSUME FIRST SBN 1 ZJN ADM4 IF FIRST OF SET ADM3 LDN /EMSG/ILR *TFM INCORRECT REQUEST.* UJN ADM1 SET ERROR CODE ADM4 RESTP CPCB RESTORE BUFFER POINTERS (CATALOG) ADM5 LDM CBCT,BP CHECK FILE CATEGORY SHN -6 LMN FCPU ZJN ADM3 IF PUBLIC FILE LDC PAUN STD KA LDM CBAE,BP LPN 77 STD RI SHN 14 LMM CBAE+1,BP STD RI+1 ZJP ADM8 IF ADMIT BLOCK NOT ASSIGNED RJM AUS ALTERNATE USERNAME SEARCH NJN ADM6 IF ALTERNATE USERNAME NOT FOUND LDM ABAN,BP SAVE ACCESS COUNT STM ABAN,PB LDM ABAN+1,BP SCN 77 RAM ABAN+1,PB MMOVE ,PB,,BP,TAEL*10D LDC WRP SET TO UPDATE STM ADMA UJN ADM7 REWRITE PRU ADM6 LDC BUFB DEFINE OVERFLOW BUFFER STD T7 ADM7 RJM IIE INSERT INDEX ENTRY ADMA EQU *-1 (RJM TO *WRP* IF INDEX FOUND) LJM ADMX RETURN ADM8 RJM TBA TOGGLE BUFFER ASSIGNMENT RJM IBC INITIALIZE BLOCK CHAIN LDC RTAB*100 STM CWRT,BA LDN TAEL STM CWEL,BA MMOVE PBUN,,CWUN,BA,UNKL LDM CWFE,BA RJM MBP MOVE BUFFER POINTER SAVEP CPAB SAVE ADMIT BUFFER POINTERS RESTP CPCB RESTORE CATALOG POINTERS LDM CPAB+3 SET ADMIT BUFFER POINTER STM CBAE,BP LDM CPAB+4 STM CBAE+1,BP RJM WRP WRITE RANDOM PRU RESTP CPAB RESTORE ADMIT BUFFER POINTERS LJM ADM6 CREATE ADMIT INDEX TITLE SUBROUTINES. SPACE 4 *** COMMON DECKS. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH IIE$ EQU 1 DEFINE IIE - INSERT INDEX ENTRY FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS VUB$ EQU 1 DEFINE VUB - VERIFY USER BLOCK *CALL COMPTFM *CALL COMPWEI SPACE 4 *** BUFFERS. BUFA BSS TAEL*5 BUFB BSS TAEL*5 SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (AUDIT TAPE FILE CATALOG.),OVL1 SPACE 4,10 ** LOCAL DIRECT CELL LOCATIONS. CN EQU S1+0 - S1+4 SCRATCH WORD (5 LOCATIONS) AF EQU S2+0 AUDIT FUNCTION CODE RC EQU AF REEL COUNT (REDEFINES *AF*) WC EQU S2+1 WORD COUNT FT EQU S2+2 - S2+3 FET FIRST POINTER IN EQU S2+4 - S3+0 FET IN POINTER OT EQU S3+1 - S3+2 FET OUT POINTER LM EQU S3+3 - S3+4 FET LIMIT POINTER FA EQU S1+0 FNT ORDINAL CA EQU EC CONTINUATION ADDRESS AUDS SPACE 4,10 *** AUDS - AUDIT TAPE FILE CATALOG. * * THE AUDIT OVERLAY ENABLES THE FILE CREATOR TO OBTAIN * INFORMATION ABOUT THE FILES THAT RESIDE IN THE * TAPE FILE CATALOG. IN ADDITION, ALTERNATE USERS * CAN OBTAIN AUDIT INFORMATION ABOUT SPECIFIC * FILES THAT THEY ARE PERMITTED TO ACCESS IN THE * FILE CREATORS CATALOG. * * THERE ARE FOUR MODES OF AUDIT ACCESS TO THE * TAPE FILE CATALOG- * * 1. A FULL CATALOG SEARCH. THE CATALOG IMAGE * AND ALL ASSOCIATED VSNS ARE RETURNED TO * THE REQUESTER FOR ALL FILES IN HIS/HER * CATALOG. * * 2. A SELECTIVE CATALOG SEARCH. THE CATALOG * IMAGE AND ALL ASSOCIATED VSNS ARE RETURNED * FOR A SPECIFIED FILE. * * 3. A FULL ADMIT SEARCH. THE ADMIT ENTRY IMAGE IS * RETURNED FOR ALL ADMITS ASSIGNED TO A * SPECIFIED FILE. * * 4. A SELECTIVE ADMIT SEARCH. ONLY THE ADMIT ENTRY * IMAGE FOR THE FILE AND USER SPECIFIED WILL BE * RETURNED TO THE REQUESTER. * * ENTRY (IR - IR+3) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST *T, +7 36/ VSN,24/ 0 *T, +10 60/ 0 *T, +11 60/ 0 *T, +12 60/ FILE IDENTIFIER *T, +13 42/ FID (CONT.),18/ 0. *T, +14 60/ 0 *T, +15 60/ 0 *T, +16 42/ ALT. USERNAME,18/ 0 *T, +17 42/ PASSWORD,12/ 0,6/ MD * * EXIT TO MAIN LOOP IF NO ERROR. * * USES AF, BA, CA, CI, CN - CN+4, CM - CM+4, * RI - RI+1, WC. * * CALLS GIB, PRS, VRR, VSP. * * MACROS ENTRY, ERROR, LDA, SAVEP. AUD ENTRY AUDIT TAPE FILE CATALOG RJM PRS PRESET ADN TFRR CRD CN ADN TFPW-TFRR CRD CM LDD CM+4 ZJN AUD1 IF INCORRECT SEARCH TYPE STD AF SBN MXST MJN AUD2 IF VALID SEARCH TYPE AUD1 ERROR ILR *TFM INCORRECT REQUEST.* AUD2 LDD CN CHECK AUDIT CONTINUATION SHN 14 STD CI SCN 77 LMD CN+1 NJN AUD3 IF AUDIT CONTINUATION STD CA CLEAR CONTINUATION ADDRESS LJM AUD7 BUILD PARAMETER BLOCK AUD3 STD RI+1 SET RANDOM ADDRESS (CATALOG) SHN -14 STD RI LDC BUF2 SET CATALOG BUFFER ADDRESS STD BA RJM VRR VERIFY RANDOM REQUEST RJM VSP VERIFY/SET CATALOG POINTERS PJN AUD5 IF VALID CONTINUATION POINTERS AUD4 ERROR BAE *BUFFER ARGUMENT ERROR.* AUD5 SAVEP FCSA SAVE CATALOG POINTERS LDD AF CHECK SEARCH TYPE LMN FAST NJN AUD6 IF NOT CATALOG CONTINUATION LDC 60D/TAEL+1+SBNI STM VSPA LDC LDNI+TAEL STM VSPB AUD6 LDD CN+3 CHECK RANDOM REQUEST SHN 14 STD CI SCN 77 LMD CN+4 STD RI+1 SHN -14 STD RI RJM VRR VERIFY RANDOM REQUEST RJM GIB GET INITIAL BLOCK RJM VSP VERIFY/SET CATALOG POINTERS STD CA SET CONTINUATION ADDRESS MJP AUD4 IF CONTINUATION POINTERS INCORRECT AUD7 LDM AUDB,AF SET PROCESSOR ADDRESS STM AUDA RJM ** PROCESS FUNCTION AUDA EQU *-1 (PROCESSOR ADDRESS) LJM AUDX RETURN AUDB INDEX TABLE OF AUDIT PROCESSORS INDEX FCST,FCS FULL CATALOG SEARCH INDEX SCST,SCS SELECTIVE CATALOG SEARCH INDEX FAST,FAS FULL ADMIT SEARCH INDEX SAST,SAS SELECTIVE ADMIT SEARCH INDEX MXST GVSS SPACE 4,10 *** GVSS - GET VOLUME SERIAL NUMBERS. * * *GVS* RETURNS A SNAPSHOT CATALOG IMAGE FOR * A ASSIGNED FILE. * * ENTRY (IR - IR+3) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST *T, +7 36/ VSN,24/ 0 *T, +10 60/ 0 *T, +11 60/ 0 *T, +12 60/ FILE IDENTIFIER *T, +13 42/ FID (CONT.),18/0. *T, +14 60/ 0 *T, +15 60/ 0 *T, +16 42/ ALT. USERNAME,18/ 0 *T, +17 42/ PASSWORD,12/ 0,6/ MD * * EXIT TO MAIN LOOP IF NO ERROR. * * USES BA, CI, CM - CM+4, FN - FN+4, * RI - RI+1, T1 - T1+4, WC. * * CALLS GIB, PRS, PTC, RRP, SAF, VSP. * * MACROS ENTRY, ERROR, LDA. GVS ENTRY ENTRY/EXIT RJM PRS PRESET CRD FN LDN 0 NO INITIAL SEARCH ADDRESS RJM SAF SEARCH FOR ASSIGNED FILE NJN GVS1 IF FILE FOUND ERROR LNF *(LFN) NOT FOUND.* GVS1 NFA FA,R ADN FSTL CRD FS GET FST/EST ENTRIES SFA EST,FS CRD CM LDD CM+3 VALIDATE MT/NT EQUIPMENT LMC 2RMT ZJN GVS2 IF 7 TRACK TAPE LMC 2RNT&2RMT ZJN GVS2 IF 9 TRACK TAPE LMC 2RCT&2RNT ZJN GVS2 IF CTS CARTRIDGE TAPE LMC 2RAT&2RCT ZJN GVS2 IF ACS CARTRIDGE TAPE ERROR NMT *(LFN) NOT ON MAGNETIC TAPE.* GVS2 LDD FS+1 SET UDT ADDRESS STM UDTA LDD CP VALIDATE JOB ASSIGNMENT ADN TFSW CRD CN UDTRD CM,/MTX/UVRI,1 LDD CM LMD CN ZJN GVS3 IF ASSIGNED UJN GVS4 *TFM INCORRECT REQUEST.* GVS3 UDTRD CM,/MTX/UTMS,1 LDD CM+4 SHN 21-13 PJN GVS4 IF NOT TMS CONTROLLED FILE UDTRD CM,/MTX/UTCI,1 LDD CM+3 SET CATALOG ADDRESS SHN 14 STD CI SCN 77 LMD CM+4 NJN GVS5 IF CATALOG ADDRESS GVS4 ERROR ILR *TFM INCORRECT REQUEST.* GVS5 STD RI+1 SET RANDOM ADDRESS SHN -14 STD RI LDC BUF0 STD BA RJM GIB GET INITIAL BLOCK (CATALOG) RJM VSP VERIFY/SET CATALOG POINTERS MJN GVS4 IF POINTERS INCORRECT RJM PTC PROCESS TAPE CATALOG LJM GVSX RETURN TITLE SUBROUTINES. CCA SPACE 4,15 ** CCA - CHECK CATALOG ADMISSION. * * FILE ACCESS PERMISSION IS CHECKED GRANTED IF- * * 1. THE FILE BELONGS TO THE CREATOR. * 2. THE FILE IS LISTABLE BY AN ALTERNATE USER, AND THE FILE * COULD BE ACCESSED BY THE ALTERNATE USER IF THE CORRECT * PASSWORD WAS SPECIFIED. * * ON ALL ALTERNATE USER REQUESTS THE PASSWORD * IS CLEARED. * * ENTRY (BA) = ADDRESS OF BUFFER CONTAINING CATALOG. * (BP) = ADDRESS OF CATALOG ENTRY. * (CI) = CATALOG INDEX. * * EXIT (A) = 0 IF USER ADMITTED TO FILE. * * USES RI - RI+1, T1 - T1+3 * * CALLS AUS. * * MACROS CLEAR, RESTP. CCA7 LDN 1 USER NOT ADMITTED TO FILE CCA SUBR ENTRY/EXIT LDM PAUN ZJN CCAX IF NOT ALTERNATE USER SEARCH LDM CBST,BP CHECK ALTERNATE CATALOG LIST ATTRIBUTE SHN 21-13 PJN CCA7 IF ALTERNATE USER AUDIT NOT ALLOWED LDM CBCT,BP SHN -6 LMN FCPU ZJP CCA3 IF PUBLIC FILE LDM CBAE,BP SET ADMIT INDEX LPN 77 STD RI SHN 14 LMM CBAE+1,BP STD RI+1 ZJN CCA1 IF NO PERMIT ENTRIES LDC PAUN STD KA RJM AUS SEARCH FOR ADMIT ENTRY ZJN CCA2 IF ENTRY FOUND RESTP CPCB RESTORE CATALOG BUFFER POINTERS CCA1 LDM CBCT,BP CHECK FOR SEMI-PRIVATE FILE SHN -6 LMN FCSP ZJN CCA3 IF SEMI-PRIVATE FILE UJN CCA4 RETURN CCA2 LDM ABAM,BP GET ADMIT PERMISSION MODE LPN 77 STD T1 RESTP CPCB RESTORE CATALOG BUFFER POINTERS LDD T1 * LMN FMIU ERRNZ FMIU ZJN CCA3 IF IMPLICIT ACCESS LDM CBAM,BP INSERT ADMIT PERMISSION SCN 77 ADD T1 STM CBAM,BP CCA3 LDM CBAM,BP CHECK FOR *NO ACCESS* LPN 77 LMN FMNA NJN CCA5 IF ACCESS ALLOWED CCA4 LDN 1 UJN CCA6 RETURN CCA5 CLEAR CBPW,BP,PWKL CLEAR PASSWORD CCA6 LJM CCAX RETURN FAS SPACE 4,10 ** FAS - FULL ADMIT SEARCH. * * RETURNS A BUFFER OF ADMIT ENTRIES. * * ENTRY (MD) = FAST. * (FT - FT+1) = FIRST. * (IN - IN+1) = IN. * (OT - OT+1) = OUT. * (LM - LM+1) = LIMIT. * * EXIT TO MAIN LOOP IF NO ERROR. * FET+2 UPDATED. * FET+TFRR UPDATED. * * USES CI, CM - CM+4, CN - CN+4, EC, RI - RI+1. * * CALLS CIB, EOI, ERR, FTC, GIB, GNB, GNL, * MBP, SCA, TBA, WDB. * * MACROS ERROR, LDA. FAS SUBR ENTRY/EXIT LDD CA ZJN FAS1 IF NOT AUDIT CONTINUATION RJM VUB VERIFY USERS ADMIT BLOCK ZJP FAS7 IF CORRECT USER LDN /EMSG/EID ERROR IN INDEX DATA UJN FAS2 ABORT WITH ERROR FAS1 RJM FTC FIND TAPE CATALOG ZJN FAS3 IF CATALOG FOUND FAS2 ERROR CALL ERROR PROCESSING (NO RETURN) FAS3 LDD CI SET CATALOG POSITION SHN 6 LMD RI STM SCAA LDD RI+1 STM SCAA+1 LDM CBAE,BP SET FIRST ADMIT BLOCK ADDRESS LPN 77 STD RI SHN 14 LMM CBAE+1,BP STD RI+1 NJN FAS4 IF ADMIT BLOCK ASSIGNED ERROR NAE *NO ADMITS.* FAS4 RJM TBA TOGGLE BUFFER ASSIGNMENT RJM GIB GET INITIAL BLOCK FAS5 LDN 0 SET FIRST ADMIT ENTRY STD CI LDM CWFE,BA FAS6 RJM MBP MOVE BUFFER POINTER MJN FAS8 IF MOVE OUTSIDE OF BUFFER LDI BP ZJN FAS8 IF END OF ADMIT BLOCK AOD CI FAS7 RJM CIB CHECK INPUT BUFFER SBN TAEL MJN FAS10 IF NO ROOM IN BUFFER RJM WDB WRITE DATA TO BUFFER LDM CWEL,BA UJN FAS6 ADVANCE TO NEXT ADMIT ENTRY FAS8 RJM GNL GET NEXT LINK ZJN FAS9 IF BLOCK NOT LINKED RJM GNB GET NEXT BLOCK UJN FAS5 PROCESS ADMIT BLOCK FAS9 RJM EOI SET END OF INFORMATION LDN ZERL CLEAR CONTINUATION ADDRESS CRD BA CRM SCAA,ON FAS10 RJM SCA SET CONTINUATION ADDRESS IN FET LDN ZERL CRD CM LDD IN CURRENT POSITION OF IN STD CM+3 LDD IN+1 STD CM+4 LDA IR+3,REL UPDATE FET ADN 2 CWD CM LJM FASX RETURN FCS SPACE 4,10 ** FCS - FULL CATALOG SEARCH. * * RETURNS THE CATALOG IMAGE FOLLOWED BY THE * IMAGE OF THE VSN INDICIES ASSIGNED TO THE * FILE. THE BUFFER SIZE MUST BE AT LEAST AS * LARGE AS ONE CATALOG PLUS 60D VSN(S). * * ENTRY (MD) = FCST. * (FT - FT+1) = FIRST. * (IN - IN+1) = IN. * (OT - OT+1) = OUT. * (LM - LM+1) = LIMIT. * (CA) = 0 IF NOT CONTINUATION OF A * PREVIOUS REQUEST. * * EXIT BUFFER FULL. * FET UPDATED. * * USES CA, CI, CM - CM+4, RI - RI+1. * * CALLS EOI, GIB, GNL, MBP, PTC, UIS, RRP, VIS * VUB, VSP. * * MACROS ERROR, RESTP, SAVEP. FCS SUBR ENTRY/EXIT LDD CA ZJP FCS5 IF NOT AUDIT CONTINUATION RJM VUB VERIFY USERS CATALOG BLOCK ZJN FCS2 IF CORRECT USER FCS1 ERROR EID *ERROR IN INDEX DATA.* * IF THIS IS A CONTINUATION FROM THE MIDDLE OF A MULTI-FILE * SET, FIND THE CATALOG POINTERS FOR THE FIRST CATALOG OF * THE SET, SO THAT THE NEXT CATALOG RETURNED WHEN THE MULTI * FILE SET IS COMPLETE IS THE ONE FOLLOWING THE FIRST CATALOG * OF THE MULTI-FILE SET. FCS2 LDA CBQN,BP SBN 2 MJP FCS14 IF FIRST FILE OF SET LIA CBVS,BP READ FIRST VSN OF FILE STD KA RJM VIS VSN INDEXED SEARCH ZJN FCS3 IF VSN FOUND ERROR ECD *ERROR IN CATALOG DATA.* FCS3 COMPARE VBES,BP,VBFV,BP,VSKL ZJN FCS4 IF FIRST VOLUME LDN CN STD KA MMOVE VBFV,BP,,KA,VSKL RJM VIS VSN INDEXED SEARCH ZJN FCS4 IF VSN FOUND ERROR EID *ERROR IN INDEX DATA.* FCS4 LDM VBCI,BP SET INDEX OF FIRST CATALOG SHN 14 STM FCSA+2 *FIRST CATALOG IN SET* CATALOG INDEX SHN -14 STM FCSA+3 *FIRST CATALOG IN SET* RANDOM INDEX LDM VBCI+1,BP STM FCSA+4 LDM FCSA RESTORE CATALOG BUFFER POINTERS STD BA LDM FCSA+1 STD BP LJM FCS16 PROCESS TAPE CATALOG FCS5 LDC PBUN STD KA RJM UIS USERNAME INDEX SEARCH NJN FCS7 IF USERNAME NOT FOUND LDM 3,BP SET CATALOG INDEX LPN 77 STD RI SHN 14 LMM 4,BP STD RI+1 NJN FCS6 IF CATALOG ADDRESS UJN FCS7 *EMPTY CATALOG.* FCS6 LDC BUF2 SET CATALOG BUFFER STD BA RJM GIB GET INITIAL BLOCK LDM CWNE,BA NJN FCS9 IF NOT EMPTY CATALOG FCS7 ERROR ECF *EMPTY CATALOG.* FCS8 RJM GIB GET INITIAL BLOCK FCS9 RJM VUB VERIFY USERS CATALOG BLOCK NJP FCS1 IF NOT CORRECT USER LDM CWFE,BA BYPASS HEADER RJM MBP MOVE BUFFER POINTER LDN 0 STD CI FCS10 AOD CI CHECK CATALOG LDI BP NJN FCS12 IF NOT HOLE FCS11 LDN TCEL ADVANCE TO NEXT CATALOG RJM MBP MOVE BUFFER POINTER PJN FCS10 IF WITHIN CURRENT BUFFER RJM GNL GET NEXT LINK NJN FCS8 IF BLOCK LINKED RJM EOI SET BUFFER STATUS LDN ZERL CLEAR CONTINUATION WORD CRD CM LDA IR+3,REL ADN TFRR CWD CM LJM FCSX RETURN FCS12 LDA CBQN,BP CHECK FOR FIRST FILE OF SET SBN 1 FCS13 NJN FCS11 IF NOT FIRST FILE SAVEP FCSA SAVE CATALOG POINTERS FCS14 LDD FC CHECK FOR *TFSP* CALL LMN SSJF ZJN FCS16 IF *TFSP* CALL LDM CBRC,BP CHECK END OF LIST ZJN FCS16 IF END OF LIST LIA CBES,BP STD KA RJM VIS VSN INDEXED SEARCH ZJN FCS15 IF VSN FOUND ERROR ECD * ERROR IN CATALOG DATA * FCS15 LDD BP STD CM RESTP FCSA RESTORE CATALOG POINTERS LDM VBRD+1,CM CHECK RELEASE DATE NJN FCS13 IF CONDITIONAL RELEASE FCS16 RJM PTC PROCESS TAPE CATALOG PJN FCS17 IF BUFFER NOT FULL LJM FCSX RETURN (BUFFER FULL) FCS17 LDM CBNC,BP CHECK FOR MULTI-FILE NJN FCS19 IF MULTI-FILE RESTP FCSA RESTORE CATALOG POINTERS LDM CPRI LMD RI LMM CPRI+1 LMD RI+1 ZJN FCS18 IF BUFFER LOADED RJM GIB GET INITIAL BLOCK (CATALOG) RJM VUB VERIFY USERS CATALOG BLOCK NJP FCS1 IF NOT CORRECT USER RJM VSP VERIFY/SET CATALOG POINTERS FCS18 LJM FCS11 ADVANCE TO NEXT CATALOG FCS19 SHN 14 PROCESS MULTI-FILE STD CI SCN 77 LMM CBNC+1,BP STD RI+1 SHN -14 STD RI RJM GIB GET INITIAL BLOCK RJM VSP VERIFY/SET CATALOG POINTER LJM FCS16 PROCESS TAPE CATALOG FCSA BSS 5 CATALOG POINTERS (FIRST OF SET) SPACE 4 PTC SPACE 4,10 ** PTC - PROCESS TAPE CATALOG. * * ENTRY (BA) = BUFFER ADDRESS CONTAINING CATALOG. * (BP) = BUFFER POINTER TO CATALOG. * * EXIT (A) = 0 IF COMPLETE. * (A) = 1 IF USER NOT ADMITTED TO FILE. * (A) = -0 IF BUFFER FULL ON WRITE. * (BA) = BUFFER ADDRESS (CATALOG). * (BA) = BUFFER POINTER (CATALOG). * (CI) = CATALOG INDEX. * * USES CM - CM+4, KA, RC, SCAA - SCAA+1, T1, WC. * * CALLS CCA, CIB, VIS, WBB, WDB. * * MACROS ERROR, LDA, MMOVE, MULT4, RESTP, SAVEP. PTC SUBR ENTRY/EXIT LDD CI SET CATALOG INDEX FOR CONTINUATION SHN 6 LMD RI STM SCAA LDD RI+1 STM SCAA+1 PTC1 LDM CBRC,BP STD RC MULT4 MULTIPLY BY 4 ADN TCEL+2 STD WC RJM CIB CHECK INPUT BUFFER SBD WC PJN PTC3 IF ROOM IN BUFFER RJM SCA SET CONTINUATION ADDRESS LCN 0 PTC2 UJP PTCX RETURN PTC3 SAVEP CPCB SAVE CATALOG POINTERS LDD FC LMN SSJF ZJN PTC5 IF CALLED BY *TFSP* RJM CCA CHECK CATALOG ADMISSION ZJN PTC5 IF USER ADMITTED TO FILE PTC4 RESTP CPCB RESTORE CATALOG POINTERS UJP PTC2 RETURN PTC5 RJM WDB WRITE DATA TO BUFFER LDN CBES SET FIRST VSN OF SET ADD BP STD T1 PTC6 LDD RC CHECK END OF LIST ZJN PTC8 IF END OF LIST SOD RC LDI T1 ZJN PTC8 IF END OF VSN LIST MMOVE ,,PESN,,VSKL LDC PESN LOCATE VSN STD KA RJM VIS VSN INDEX SEARCH ZJN PTC7 IF VSN FOUND ERROR ECD *ERROR IN CATALOG DATA.* PTC7 RJM WDB WRITE DATA TO BUFFER LDN 3*5 GET NEXT VSN ADD BP STD T1 UJP PTC6 PROCESS NEXT VSN PTC8 LDM CPCB+2 TERMINATE CATALOG SHN 6 LMM CPCB+3 STM PTCA+3 LDM CPCB+4 STM PTCA+4 LDN 1 STD T1 LDC PTCA RJM WBB WRITE BINARY BUFFER LDN ZERL CRD CM LDD IN CURRENT POSITION OF IN STD CM+3 LDD IN+1 STD CM+4 LDA IR+3,REL UPDATE FET ADN 2 CWD CM LDN 0 SET CATALOG COMPLETE LJM PTC4 RESTORE POINTERS AND RETURN PTCA VFD 60D/77777777777777777777B SCA SPACE 4,10 ** SCA - SET CONTINUATION ADDRESS. * * ENTRY (CI) = CATALOG INDEX. * (RI - RI+1) = CATALOG RANDOM ADDRESS. * * EXIT FET WORD TFRR UPDATED. * * USES SCAA+3 - SCAA+4. * * MACROS LDA. SCA SUBR ENTRY/EXIT LDD CI SET CURRENT POSITION SHN 6 LMD RI STM SCAA+3 LDD RI+1 STM SCAA+4 LDA IR+3,REL UPDATE FET ADN TFRR CWM SCAA,ON UJN SCAX RETURN SCAA VFD 60/0 CONTINUATION POINTERS SAS SPACE 4,10 ** SAS - SELECTIVE ADMIT SEARCH. * * ENTRY (MD) = SAST. * (FT - FT+1) = FIRST. * (IN - IN+1) = IN. * (OT - OT+1) = OUT. * (LM - LM+1) = LIMIT. * * EXIT ADMIT ENTRY WRITTEN TO BUFFER. * * USES CM - CM+4, EC, KA, RI - RI+1. * * CALLS AUS, EOI, ERR, WDB. * * MACROS ERROR, LDA, MMOVE. SAS SUBR ENTRY/EXIT LDM PAUN ZJN SAS1 IF USER = ALTERNATE USER LDD MA SWAP USERNAMES CWM PBUN,ON CWM PAUN,ON LDD MA CRM PAUN,ON CRM PBUN,ON SAS1 RJM FTC FIND TAPE CATALOG ZJN SAS2 IF CATALOG FOUND ERROR CALL ERROR PROCESSING (NO RETURN) SAS2 LDM CBAE,BP SET FIRST ADMIT BLOCK ADDRESS LPN 77 STD RI SHN 14 LMM CBAE+1,BP STD RI+1 NJN SAS4 IF ADMIT BLOCK ASSIGNED SAS3 MMOVE PAUN,,PBUN,,UNKL ERROR UNF *(USERNAME) NOT FOUND.* SAS4 LDC PAUN SET SEARCH KEY STD KA RJM AUS ALTERNATE USERNAME SEARCH NJN SAS3 IF ALTERNATE USER NOT FOUND RJM WDB WRITE DATA TO BUFFER RJM EOI SET END OF INFORMATION LDN ZERL CRD CM LDD IN CURRENT POSITION OF IN STD CM+3 LDD IN+1 STD CM+4 LDA IR+3,REL UPDATE FET ADN 2 CWD CM LJM SASX RETURN SCS SPACE 4,10 ** SCS - SELECTIVE CATALOG SEARCH. * * ENTRY (MD) = SCST. * (FT - FT+1) = FIRST. * (IN - IN+1) = IN. * (OT - OT+1) = OUT. * (LM - LM+1) = LIMIT. * * USES BA, CI, CM - CM+4, KA, RI - RI+1. * * CALLS EOI, GIB, PTC, SCB, UIS, VIS, VUB. * * MACROS ERROR, LDA. SCS SUBR ENTRY/EXIT LDC PESN STD KA LDI KA NJN SCS2 IF VSN SEARCH LJM SCS9 SEARCH BY USERNAME/FILE NAME SCS1 ERROR VNF *(VSN) NOT FOUND.* SCS2 LDD CA CHECK AUDIT CONTINUATION NJP SCS6 IF AUDIT CONTINUATION SCS2.1 RJM VIS VSN INDEX SEARCH NJN SCS1 IF VSN NOT FOUND LDD FC LMN SSJF ZJN SCS4 IF *TFSP* CALL LDM VBRD+1,BP SCS3 NJN SCS1 IF CONDITIONALLY RELEASED SCS4 LDM VBRC,BP CHECK REEL COUNT SHN -6 SBN 1 ZJN SCS4.1 IF FIRST REEL MMOVE VBFV,BP,SCSA,,6 SET FIRST VSN FOR SEARCH LDC SCSA STD KA UJN SCS2.1 VSN INDEX SEARCH SCS4.1 LDM VBCI,BP SET CATALOG ADDRESS SHN 14 STD CI SCN 77 LMM VBCI+1,BP ZJP SCS1 IF NOT ASSIGNED SCS5 STD RI+1 SET RANDOM ADDRESS SHN -14 STD RI LDC BUF2 SET CATALOG BUFFER STD BA RJM GIB GET INITIAL BLOCK RJM VUB VERIFY USERS DATA BLOCK NJP SCS3 IF NOT USERS DATA BLOCK RJM VSP VERIFY/SET CATALOG POINTERS SCS6 RJM PTC PROCESS TAPE CATALOG MJN SCS8 IF BUFFER FULL LDM CBNC,BP CHECK FOR MULTI-FILE ZJN SCS7 IF NOT MULTI-FILE SHN 14 STD CI SCN 77 LMM CBNC+1,BP NJN SCS5 IF NOT END OF SET SCS7 RJM EOI SET END OF INFORMATION LDN ZERL CLEAR CONTINUATION WORD CRD CM LDA IR+3,REL ADN TFRR CWD CM SCS8 LJM SCSX RETURN SCS9 LDC PBUN FILE IDENTIFIER SEARCH STD KA RJM UIS USERNAME INDEX SEARCH ZJN SCS11 IF USERNAME FOUND SCS10 ERROR FNF *(FILENAME) NOT FOUND.* SCS11 LDC BUF2 SET CATALOG BUFFER STD BA LDM UBCI,BP SET CATALOG RANDOM INDEX LPN 77 STD RI SHN 14 LMM UBCI+1,BP STD RI+1 ZJN SCS10 IF NO RANDOM ADDRESS LDC POFI SET SEARCH KEY ADDRESS STD KA RJM SCB SEARCH CATALOG BUFFER ZJN SCS10 IF FILE NOT FOUND MJN SCS10 IF FILE NOT FOUND RJM VUB VALIDATE USERS CATALOG BLOCK ZJN SCS12 IF CORRECT USER ERROR EID *ERROR IN INDEX DATA.* SCS12 RJM PTC PROCESS TAPE CATALOG LJM SCS7 SET END OF INFORMATION SCSA BSSZ 5 FIRST VSN WDB SPACE 4,10 ** WDB - WRITE DATA TO BUFFER. * * ENTRY (BA) = BUFFER ADDRESS. * (BP) = BUFFER POINTER. * (CWEL+(BA)) = ENTRY LENGTH. * (IN - IN+1) = CURRENT BUFFER POSITION. * * EXIT (IN - IN+1) ADVANCED. * DATA WRITTEN TO CIRCULAR BUFFER AND * FET UPDATED. * * USES T1. * * CALLS WBB. WDB SUBR ENTRY/EXIT LDM CWEL,BA WRITE DATA TO BUFFER STD T1 LDD BP RJM WBB WRITE BINARY BUFFER UJN WDBX RETURN SPACE 4 *** COMMON DECKS. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH EOI$ EQU 1 DEFINE EOI - SET END OF INFORMATION FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS VRR$ EQU 1 DEFINE VRR - VERIFY RANDOM REQUEST VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS VUB$ EQU 1 DEFINE VUB - VERIFY USERS CATALOG/ADMIT BLO *CALL COMPCIB *CALL COMPSAF *CALL COMPTFM *CALL COMPWBB SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW TITLE PRESET. PRS SPACE 4,15 ** PRS - PRESET FOR *AUD* AND *GVS*. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT (A) = ABSOLUTE FET ADDRESS. * (WC) = WORD COUNT. * * USES WC. * * CALLS CIB, SBP. * * MACROS LDA, ERROR. PRS1 LDA IR+3,REL LOAD ABSOLUTE FET ADDRESS PRS SUBR ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS RJM CIB CHECK INPUT BUFFER STD WC LDC TSVL*60D+TCEL+1 SBD WC MJN PRS1 IF BUFFER SIZE VALID ZJN PRS1 IF BUFFER SIZE VALID ERROR BAE *BUFFER ARGUMENT ERROR.* SPACE 4 ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (AMEND CATALOG ENTRY / RESERVE TAPE FILES.),OVL1 SPACE 4 ** LOCAL DIRECT CELL LOCATIONS. JS EQU S2 - S2+4 JOB SEQUENCE WORD *UJID* (5 LOCATIONS) FA EQU S3 FNT ORDINAL AMDS SPACE 4,10 *** AMDS - AMEND TAPE CATALOG ENTRY. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0 *T, +2 60/ 0 *T, +3 60/ 0 *T, +4 12/ FNT,30/ 0,18/ 0 *T, +5 42/ 0,18/ EADD *T, +6 60/ 0 *T, +7 36/ VSN,24/ 0 *T, +10 60/ 0 *T, +11 60/ 0 *T, +12 60/ OLD FILE IDENTIFIER *T, +13 42/ FID (CONT.),18/0. *T, +14 60/ NEW FILE IDENTIFIER *T, +15 42/ NFI (CONT.),6/ 0,6/ CE,6/ AN *T, +16 42/ ALT. USERNAME,18/ 0 *T, +17 42/ PASSWORD,6/ AC,6/ CT,6/ MD * * USES EC. * * CALLS CAC, CCT, CFM, CPN, ERR, FTC, IRM, * NFI, PWD, UCW, VUB, WRP. * * MACROS MMOVE, RESTP. AMD ENTRY AMEND TAPE CATALOG ENTRY RJM FTC FIND TAPE CATALOG ZJN AMD2 IF FILE FOUND AMD1 ERROR AMD2 LDM PESN ZJN AMD4 IF SYMBOLIC FILE RESTP CPSI CHECK FOR FIRST VSN LDM VBRC,BP CHECK FOR FIRST REEL SHN -6 ZJN AMD3 IF NO REEL COUNT, ASSUME FIRST SBN 1 ZJN AMD3 IF FIRST OF SET LDN /EMSG/ILR *TFM INCORRECT REQUEST.* UJN AMD1 SET ERROR CODE AMD3 RESTP CPCB RESTORE BUFFER POINTERS (CATALOG) AMD4 RJM CPN CHANGE CHARGE AND PROJECT RJM NFI CHANGE NEW FILENAME RJM CAC CHANGE ALTERNATE CATALOG LIST ATTRIBUTE RJM PWD CHANGE PASSWORD RJM CCT CHANGE CATEGORY TYPE RJM CFM CHANGE FILE MODE RJM UCW CHANGE USER CONTROL WORD RJM CEF CLEAR ERROR FLAG RJM WRP WRITE RANDOM PRU LDM CBST,BP SHN 21-10 MJN AMD5 IF *TMS* RECOVERY MESSAGES ALREADY SET MMOVE CBES,BP,PESN,,VSKL RJM IRM ISSUE RECOVERY MESSAGES AMD5 BSS 0 LJM AMDX RETURN RSVS SPACE 4,10 *** RSVS - RESERVE TAPE FILES. * * THIS FUNCTION IS CALLED AS A RA+1 REQUEST * FROM *TFILES* OR BY A USER MACRO CALL. IT * SETS THE RESERVE FILES FLAG IN THE UDT * ENTRY IN MAGNETS FL, AND CAN MODIFY * SOME CATALOG PARAMETERS AS OPTIONS SPECIFY * FROM THE FET. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0 *T, +2 60/ 0 *T, +3 60/ 0 *T, +4 12/ FNT,30/ 0,18/ 0 *T, +5 42/ 0,18/ EADD *T, +6 60/ 0 *T, +7 36/ VSN,24/ 0 *T, +10 60/ 0 *T, +11 60/ 0 *T, +12 60/ FILE IDENTIFIER *T, +13 42/ FID (CONT.),18/0. *T, +14 60/ 0 *T, +15 42/ 0,6/ 0,6/ CE,6/AN *T, +16 42/ ALT. USERNAME,18/ 0 *T, +17 42/ PASSWORD,6/ AC,6/ CT,6/ MD * * * EXIT TAPE CATALOG UPDATED. * * USES BA, BP, CI, FN - FN+4, JS - JS+4, * RB, RI - RI+1, RO, RP. * * CALLS CAC, CCT, CFM, PWD, RRP, * UCW, VSP, VUB, WRP. * * MACROS ERROR, LDA. RSV ENTRY RESERVE FUNCTION LDA IR+3,REL SET FILE NAME CRD FN LDN 0 NO INITIAL SEARCH ADDRESS RJM SAF SEARCH FOR ASSIGNED FILE NJN RSV1 IF FILE FOUND ERROR LNF *(LFN) NOT FOUND.* RSV1 NFA FA,R ADN FSTL CRD FS GET FST/EST ENTRIES SFA EST,FS CRD CM LDD CM+3 VALIDATE MT/NT EQUIPMENT LMC 2RMT ZJN RSV2 IF 7 TRACK TAPE LMC 2RNT&2RMT ZJN RSV2 IF 9 TRACK TAPE LMC 2RCT&2RNT ZJN RSV2 IF CTS CARTRIDGE TAPE LMC 2RAT&2RCT ZJN RSV2 IF ACS CARTRIDGE TAPE ERROR NMT *(LFN) NOT ON MAGNETIC TAPE.* RSV2 LDD FS+1 SET UDT ADDRESS STM UDTA LDD CP VALIDATE JOB ASSIGNMENT ADN TFSW CRD JS UDTRD CM,/MTX/UVRI,1 LDD CM LMD JS NJP RSV3 IF NOT ASSIGNED UDTRD CM,/MTX/UTMS,1 LDD CM+4 SHN 21-13 PJN RSV3 IF NOT TMS CONTROLLED FILE LDD CM+4 SET RESERVE SCRATCH STATUS LPC -RSRS LMC RSRS STD CM+4 UDTWT CM,/MTX/UTMS,1 UDTRD CM,/MTX/UTCI,1 LDD CM+3 SET CATALOG ADDRESS SHN 14 STD CI SCN 77 LMD CM+4 NJN RSV4 IF CATALOG ADDRESS RSV3 ERROR ILR *TFM INCORRECT REQUEST.* RSV4 STD RI+1 SET RANDOM ADDRESS SHN -14 STD RI LDC BUF0 STD BA RJM GIB GET INITIAL BLOCK (CATALOG) RJM VUB VERIFY USERS CATALOG BLOCK NJN RSV3 IF NOT USERS BLOCK RJM VSP VERIFY/SET CATALOG POINTERS MJN RSV3 IF POINTERS INCORRECT RJM CAC CHANGE ALTERNATE CATALOG LIST ATTRIBUTE RJM PWD CHANGE PASSWORD RJM CCT CHANGE CATEGORY TYPE RJM CFM CHANGE FILE MODE RJM UCW CHANGE USER CONTROL WORD RJM WRP WRITE RANDOM PRU LJM RSVX RETURN TITLE SUBROUTINES. CAC SPACE 4,10 ** CAC - CHANGE ALTERNATE CATALOG LIST ATTRIBUTE * * ENTRY (PBAC) = ALTERNATE LIST ATTRIBUTE. * * EXIT LIST ATTRIBUTE CHANGED. * TO ERROR PROCESSING IF INCORRECT OPTION. * * USES T1. * * MACROS ERROR. CAC1 LDM CBST,BP CHANGE CATALOG LIST ATTRIBUTE SHN 0-13+22 SCN 1 LMD T1 LMN 1 SHN 13-0 STM CBST,BP CAC SUBR ENTRY/EXIT LDM PBAC LPN 77 ZJN CACX IF ATTRIBUTE NOT SPECIFIED SBN FAYS STD T1 SBN FANO MJN CAC1 IF VALID ATTRIBUTE ERROR ILR *TFM INCORRECT REQUEST.* CCT SPACE 4,10 ** CCT - CHANGE CATEGORY TYPE. * * ENTRY (PBCT) = FILE CATEGORY. * * EXIT FILE CATEGORY CHANGED AS REQUIRED. * TO ERROR PROCESSING IF INCORRECT OPTION. * * USES T1. * * MACROS ERROR. CCT1 LDM CBCT,BP CHANGE FILE CATEGORY LPN 77 LMD T1 STM CBCT,BP CCT SUBR ENTRY/EXIT LDM PBCT SCN 77 ZJN CCTX IF CATEGORY NOT SPECIFIED STD T1 SHN -6 SBN FCMX MJN CCT1 IF VALID CATEGORY TYPE ERROR ILR *TFM INCORRECT REQUEST.* CEF SPACE 4,10 ** CEF - CLEAR ERROR FLAG. * * ENTRY (PBCE) = CLEAR ERROR FLAG. * * EXIT IF (PBCE) IS NON-ZERO, THE ERROR FLAG * IS CLEARED IN THE CATALOG STATUS WORD. CEF SUBR ENTRY/EXIT LDM PBCE SHN -6 ZJN CEFX IF NOT CLEAR ERROR LDM CBST,BP SCN 2 STM CBST,BP UJN CEFX RETURN CFM SPACE 4,10 ** CFM - CHANGE FILE MODE. * * ENTRY (PBMD) = ALTERNATE ACCESS MODE. * * EXIT ACCESS MODE CHANGED AS REQUIRED. * TO ERROR PROCESSING IF INCORRECT OPTION. * * USES T1. * * MACROS ERROR. CFM1 LDM CBCT,BP CHANGE FILE MODE SCN 77 LMD T1 STM CBCT,BP CFM SUBR ENTRY/EXIT LDM PBMD LPN 77 ZJN CFMX IF MODE NOT SPECIFIED STD T1 SBN FMMX MJN CFM1 IF VALID FILE MODE ERROR ILR *TFM INCORRECT REQUEST.* CPN SPACE 4,10 ** CPN - CHANGE CHARGE AND PROJECT. * * ENTRY (PBAN) = ACCOUNT NUMBER CHANGE. * * EXIT CHARGE AND PROJECT NUMBERS CHANGED. * * MACROS MMOVE. CPN SUBR ENTRY/EXIT LDM PBAN LPN 77 ZJN CPNX IF NOT ACCOUNT NUMBER CHANGE LDN 2 STD T1 LIA CBCN,BP STM CPNA LIA CBPN,BP STM CPNB NFA CHGN CRM **,ON CPNA EQU *-1 NFA PJ1N CRM **,T1 CPNB EQU *-1 UJN CPNX RETURN NFI SPACE 4,10 ** NFI - CHANGE NEW FILE NAME. * * ENTRY (PNFI - PNFI+10B) = NEW FILE NAME. * * EXIT LOGICAL FILE NAME CHANGED. * * USES T1. * * MACROS MMOVE. NFI SUBR ENTRY/EXIT LDC PNFI STD T1 LDI T1 ZJN NFIX IF NEW FILENAME NOT SPECIFIED MMOVE ,,CBLI,BP,FIKL UJN NFIX RETURN PWD SPACE 4,10 ** PWD - CHANGE PASSWORD. * * ENTRY (PPWD - PPWD+3) = FILE PASSWORD. * * EXIT FILE PASSWORD CHANGED. * * USES T1. * * MACROS CLEAR, MMOVE. PWD SUBR ENTRY/EXIT LDC PPWD STD T1 LDI T1 ZJN PWDX IF PASSWORD NOT SPECIFIED LMC 7777 NJN PWD1 IF NOT CLEAR PASSWORD CLEAR ,,PWKL PWD1 MMOVE PPWD,,CBPW,BP,PWKL UJN PWDX RETURN UCW SPACE 4,10 ** UCW - CHANGE USER CONTROL WORD . * * ENTRY (PUCW - PUCW+4) = USER CONTROL WORD. * * EXIT USER CONTROL WORD UPDATED. * * USES T1. * * MACROS CLEAR, MMOVE. UCW SUBR ENTRY/EXIT LDC PUCW STD T1 LDI T1 ZJN UCWX IF CONTROL WORD NOT SPECIFIED LMC 7777 NJN UCW1 IF NOT CLEAR CONTROL WORD CLEAR ,,UCKL UCW1 MMOVE PUCW,,CBUC,BP,UCKL UJN UCWX RETURN SPACE 4 *** COMMON DECKS. AMD$ EQU 1 DEFINE AMD - AMEND PROCESSING FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTER VUB$ EQU 1 DEFINE VUB - VALIDATE USERS BLOCK *CALL COMPC2D *CALL COMPSAF *CALL COMPTFM SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (*RESEX* ABORT PROCESSING / RELEASE TAPE FILE.),OVL1 SPACE 4,10 *** LOCAL DIRECT CELL LOCATIONS CN EQU S2 - S2+4 SCRATCH RAPS SPACE 4,10 ** RAPS - *RESEX* ABORT PROCESSING. * * IF *RESEX* ABORTS AFTER *TFM* HAS ASSIGNED A * VSN, BUT BEFORE THE REQUEST IS SENT TO *MAGNET* * TO ASSIGN A TAPE UNIT, THE TAPE CATALOG MUST * BE CLEANED UP BY THIS SUBFUNCTION. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/0,1/ EP,27/ 0,18/ 0 *T, +2 60/ 0 *T, +3 60/ 0 *T, +4 12/ FNT,30/ 0,18/ 0 *T, +5 42/ 0,18/ EADD *T, +6 36/ 0,24/ RANDOM REQUEST * * EXIT 1. IF THE ABORTING REQUEST WAS FOR A * EXISTING FILE, THE JOB ASSIGNMENT * AND BUSY FLAGS ARE CLEARED. * 2. IF THE ABORTING REQUEST WAS FOR A * SCRATCH TAPE, THE CATALOG ENTRY * IS PURGED. * * USES CM - CM+4, KA, RI - RI+1. * * CALLS CVA, GIB, PCE, PRS, RSP, VIS, VSP, WRP. * * MACROS ERROR, MMOVE, RESTP. RAP ENTRY ENTRY/EXIT RJM PRS PRESET ZJN RAPX IF NO CATALOG ENTRY RJM GIB GET INITIAL BLOCK RJM VSP VERIFY/SET CATALOG POINTER MJN RAPX IF INCORRECT POINTERS SAVEP CPCB SAVE BUFFER POINTERS (CATALOG) LDC PESN STD KA MMOVE CBES,BP,,KA,VSKL LDI KA ZJN RAP2 IF VOLUME NOT ASSIGNED RJM VIS VSN INDEXED SEARCH ZJN RAP1 IF VSN FOUND ERROR ECD *ERROR IN CATALOG DATA.* RAP1 RESTP CPCB RESTORE BUFFER POINTERS (CATALOG) LDM CBST,BP SHN 21-11 PJN RAP3 IF NOT INITIAL ASSIGNMENT RJM RSP RELEASE VSN(S) TO SCRATCH POOL RAP2 RJM PCE PURGE CATALOG ENTRY LJM RAPX RETURN RAP3 RESTP CPSI RESTORE BUFFER POINTERS (VSN INDEX) LDM VBRC,BP CHECK REEL NUMBER SHN -6 SBN 2 MJN RAP4 IF FIRST REEL LDC PESN GET FIRST REEL STD KA MMOVE VBFV,BP,,KA,VSKL RJM VIS VSN INDEX SEARCH RAP4 BSS 0 RJM CVA CLEAR VOLUME ASSIGNMENT RJM WRP WRITE RANDOM PRU (VSN INDEX) LJM RAPX RETURN RLSS SPACE 4,10 *** RLSS - RELEASE TAPE FILE. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0 *T, +2 60/ 0 *T, +3 60/ 0 *T, +4 12/ FNT,30/ 0,18/ 0 *T, +5 42/ 0,18/ EADD *T, +6 60/ 0 *T, +7 36/ VSN,24/ 0 *T, +10 60/ 0 *T, +11 60/ 0 *T, +12 60/ FILE IDENTIFIER *T, +13 42/ FID (CONT.),18/0. * * USES EC. * * CALLS ERR, FTC, PCE, RSP, VIS. * * MACROS ERROR, LIA, MMOVE, RESTP. RLS ENTRY RELEASE TAPE FILE RJM ISP INITIALIZE SCRATCH PROCESSOR RJM FTC FIND TAPE CATALOG ZJN RLS1 IF CATALOG FOUND RJM ERR CALL ERROR PROCESSING (NO RETURN) RLS1 LDM PESN ZJN RLS2 IF SYMBOLIC ACCESS RESTP CPSI RESTORE VSN INDEX POINTERS LJM RLS3 CHECK FOR FIRST REEL RLS2 LIA CBES,BP SET FIRST VSN STD KA MMOVE ,KA,PESN,,VSKL LDA CBQN,BP CHECK FOR FIRST FILE IN SET SBN 2 PJP RLS5 IF NOT FIRST FILE IN SET LDI KA ZJP RLS17 IF NO VSN RJM VIS VSN INDEXED SEARCH ZJN RLS3 IF VSN FOUND ERROR ECD *ERROR IN CATALOG DATA.* RLS3 LDM VBJS,BP CHECK VOLUME BUSY NJN RLS5 IF ASSIGNED TO A JOB LDA VBST,BP LPC UOVS+TVVS ZJN RLS4 IF ON SITE AND NOT USER-OWNED TAPE LDD FC CHECK FOR TFSP CALL LMN SSJF NJN RLS5 IF NOT *TFSP* CALL RLS4 LDM VBRC,BP CHECK FOR FIRST REEL SHN -6 SBN 2 MJN RLS6 IF FIRST REEL STD S1 SAVE ADJUSTED REEL COUNT LDM TFMC LPN 77 LMN /PFM/PTLM NJN RLS5 IF NOT LOCAL FILE MODE LJM RLS19 CLEAR VSN POINTER AND RELEASE VSNS RLS5 ERROR ILR *TFM INCORRECT REQUEST.* RLS6 LDA PBQN,ABS CHECK FILE SEQUENCE NUMBER SBN 2 MJP RLS11 IF FIRST CATALOG REQUESTED STD S1+1 SAVE ADJUSTED SEQUENCE NUMBER SHN -14 STD S1 LDM TFMC LPN 77 LMN /PFM/PTLM NJN RLS5 IF NOT LOCAL FILE MODE RESTP CPCB * *TFSP* CAN SPECIFY A FILE SEQUENCE NUMBER IN LOCAL FILE MODE * SO THAT PURGED CATALOG ENTRIES CAN BE DELETED WHEN RECOVERING * THE FILE CATALOG FROM THE ACCOUNT FILE. SKIP CATALOG ENTRIES * FOR THIS VSN UNTIL THE ONE JUST BEFORE THE CATALOG ENTRY TO * BE RELEASED. NO VSN-S ARE RELEASED WHEN PURGING CATALOG * ENTRIES WHICH ARE NOT THE FIRST FOR A VSN. RLS7 LDA S1,ABS CHECK SKIP COUNT ZJN RLS10 IF LAST CATALOG ENTRY SBN 1 DECREMENT SKIP COUNT STD S1+1 SHN -14 STD S1 LDM CBNC,BP LOAD NEXT CATALOG INDEX SHN 14 STD CI SCN 77 LMM CBNC+1,BP RLS8 ZJP RLS5 IF SEQUENCE NUMBER OUT OF RANGE STD RI+1 SHN -14 STD RI RJM RRP GET NEXT CATALOG ENTRY RJM VSP VERIFY/SET CATALOG POINTERS PJN RLS7 IF NO ERROR RLS9 ERROR ECD ERROR IN CATALOG DATA RLS10 LDM CBNC,BP STORE NEXT CATALOG POINTER STD S1 LDM CBNC+1,BP STD S1+1 ADD S1 ZJN RLS8 IF SEQUENCE NUMBER OUT OF RANGE LDN 0 CLEAR NEXT CATALOG POINTER STM CBNC,BP STM CBNC+1,BP RJM WRP WRITE RANDOM PRU LDD S1 SHN 14 STD CI SCN 77 LMD S1+1 STD RI+1 SHN -14 STD RI RJM RRP GET CATALOG ENTRY TO BE RELEASED RJM VSP VERIFY/SET CATALOG POINTERS MJN RLS9 IF ERROR IN CATALOG SAVEP CPCB SAVE CATALOG BUFFER POINTERS LJM RLS17 PURGE CATALOG ENTRIES RLS11 LDN 1 DEFAULT SEQUENCE NUMBER RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE LDM TFMC LPN 77 LMN /PFM/PTLM ZJP RLS16 IF LOCAL FILE MODE LDD FC CHECK FOR *TFSP* CALL LMN SSJF ZJN RLS12 IF *TFSP* CALL LDN CRDP RLS12 ZJP RLS15 IF ZERO CONDITIONAL RELEASE PERIOD LDM VBRD,BP CLEAR RELEASE YEAR SCN 77 STM VBRD,BP LDN /COMSCPS/RIDS INCREMENT CURRENT DATE BY CRDP STD CM+1 LDN CRDP STD CM+4 MONITOR RDCM REQUEST DATA CONVERSION LDD MA GET PACKED DATE CRD CM LDD CM+3 LPN 77 RAM VBRD,BP SET YEAR LDD CM+4 STM VBRD+1,BP SET MONTH/DAY LDC RDVS SET RELEASE DATE NEW FORMAT FLAG RAM VBST+1,BP RJM WRP WRITE RANDOM PRU RESTP CPCB RLS13 LDM CBST,BP CLEAR SYMBOLIC ACCESS FLAG SCN 4 STM CBST,BP RJM WRP WRITE RANDOM PRU LDM CBNC,BP ZJN RLS14 IF END OF MULTI-FILE SET SHN 14 RESET RANDOM ADDRESS STM CPCB+2 SHN -14 STM CPCB+3 LDM CBNC+1,BP STM CPCB+4 RESTP CPCB RJM RRP READ RANDOM PRU RJM VSP VERIFY/SET POINTERS UJN RLS13 CLEAR SYMBOLIC ACCESS RLS14 LDN DTEL READ CURRENT DATE CRD CM LDN 1 SET RELEASE RJM IAM ISSUE ACCOUNT FILE MESSAGE UJN RLS18 RETURN RLS15 LDN ZERL FLAG UNCONDITIONAL RELEASE CRD CM LDN 1 FLAG RELEASE RJM IAM ISSUE ACCOUNT FILE MESSAGE RLS16 RJM RSP RELEASE VSNS TO SCRATCH POOL RLS17 RJM PCE PURGE CATALOG ENTRIES RLS18 LJM RLSX RETURN * IN LOCAL FILE MODE, *TFSP* CAN RELEASE A VSN THAT IS NOT * THE FIRST VSN OF A SET SO RECOVERY FROM THE ACCOUNT FILE * CAN RELEASE EXCESS VSN-S. NOTE - IT DOES NOT CHECK TO * SEE IF ANY CATALOG ENTRIES EXIST THAT POINT TO THIS OR * FOLLOWING VSN ENTRIES. NO CATALOG ENTRIES ARE RELEASED * WHEN RELEASING VSN-S WHICH ARE NOT THE FIRST VSN. RLS19 LDC PVSN SET VSN SAVE STD KA MMOVE VBFV,BP,,KA,VSKL START AT FIRST VSN RLS20 RJM VIS FIND NEXT VSN NJN RLS21 IF NOT FOUND MMOVE VBNV,BP,,KA,VSKL SET NEXT VSN LDD S1 ZJN RLS22 IF AT LAST VSN SOD S1 LDI KA CHECK LINKAGE NJN RLS20 IF LINKAGE CORRECT RLS21 ERROR EID *ERROR IN INDEX DATA* RLS22 COMPARE ,KA,PESN,,VSKL VERIFY LINKAGE NJN RLS21 IF ERROR IN LINKAGE CLEAR VBNV,BP,VSKL RJM WRP WRITE RANDOM PRU (VSN INDEX) RJM VIS POSITION TO VSN TO RELEASE RJM RSP RELEASE VSN(S) TO SCRATCH POOL LJM RLSX RETURN TITLE SUBROUTINES. SPACE 4 *** COMMON DECKS. DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY DLB$ EQU 1 DEFINE DLB - DELINK DATA BLOCK CVA$ EQU 1 DEFINE CVA - CLEAR VOLUME ASSIGNMENT FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES RSP$ EQU 1 DEFINE RSP - RETURN VSN(S) TO SCRATCH POOL VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS VUB$ EQU 1 DEFINE VUB - VERIFY USERS BLOCK *CALL COMPC2D *CALL COMPTFM SPACE 4 *** BUFFER AREA. SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW TITLE PRESET. PRS SPACE 4,15 ** PRS - PRESET FOR FUNCTION RAPS. * * EXIT (A) = 0 IF NO CATALOG ASSIGNED. * (RI - RI+1) = CATALOG RANDOM INDEX. * (CI) = CATALOG INDEX. * (CN) = 0 IF CURRENT VSN = FIRST VSN * (CN +3 - CN+4) = CATALOG ENTRY RANDOM INDEX POINTERS. * * CALLS ISP. * * USES CN - CN+4. PRS SUBR ENTRY/EXIT RJM ISP INITIALIZE SCRATCH PROCESSOR LDC BUF2 PRESET CATALOG ADDRESS STD BA LDA IR+3,REL READ CATALOG ADDRESS ADN TFRR CRD CN LDD CN+3 SHN 14 STD CI SCN 77 LMD CN+4 STD RI+1 SET RANDOM INDEX SHN -14 STD RI ADD RI+1 (A) .EQ. 0 IF NO INDEX UJN PRSX RETURN ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (RETURN TAPE FILES.),OVL1 SPACE 4,10 *** LOCAL DIRECT CELL LOCATIONS QN EQU S1+2 - S1+3 CURRENT FILE SEQUENCE NUMBER IA EQU S1+4 INITIAL ASSIGNMENT FLAG NC EQU S2 - S2+1 NEXT CATALOG POINTER RC EQU S2+2 REEL COUNT RTFS SPACE 4,20 *** RTFS - RETURN TAPE FILES. * * RTFS ISSUES ACCOUNT FILE MESSAGES FOR ANY SYMBOLIC TAPE * FILES CREATED ON THIS TAPE SINCE IT WAS MOUNTED. FOR ANY * NON-USER OWNED TAPE, RTFS WILL AUTOMATICALLY RESERVE ANY * REEL EXTENSIONS AND AUTOMATICALLY RELEASE ANY RESERVED VSN-S * WHICH ARE PAST THE LAST REEL WRITTEN ON. * * ENTRY NONE. * * EXIT TAPE RELEASED. * * USES IA, NC - NC+1, QN - QN+1, RI - RI+1 * * CALLS CSN, IAM, IRM, PCE, PRS, RRP, RSP, RVU, SES, * SFV, VSP, WRP. * * MACROS CLEAR, ERROR, MMOVE, RESTP, SAVEP, UDTRD, UDTWT. RTF27 CLEAR PESN,,5*10D CLEAR TMS WORDS FROM UDT UDTWT PESN,/MTX/UTCI,5 CLEAR UTMS,,10D CLEAR UTMS WORD RTF ENTRY RETURN TAPE FILES RJM PRS PRESET ZJP RTF27 IF CATALOG ENTRY PRESENT RJM RRP READ RANDOM PRU (CATALOG) MMOVE CWUN,BA,PBUN,,UNKL RJM VSP VERIFY/SET CATALOG POINTERS MJP RTF27 IF CATALOG ENTRY NOT FOUND SAVEP CPCB LDM UTMS+3 CHECK BLANK LABEL FLAG LPN WUBL ZJN RTF0.1 IF BLANK LABEL WRITTEN LDM UTMS+4 CHECK RESERVE FILE FLAG LPC RSRS ZJN RTF1 IF NOT RESERVING FILES LDM CBST,BP CHECK IF INITIAL ASSIGNMENT SHN 21-11 MJN RTF1 IF INITIAL ASSIGNMENT * LAST VSN NOT BLANK LABELED. * VSN MUST BE RELEASED. LDM UTMS+2 CHECK REEL NUMBER SBN 1 ZJN RTF1 IF FIRST VOLUME STM UTMS+2 SET LAST REEL WRITTEN ON RTF0.1 LDM UTMS+4 CHECK RESERVED FILE FLAG LPC RSRS NJN RTF2 IF RESERVING FILES LDM CBST,BP CHECK FOR INITIAL ASSIGNMENT SHN 21-11 PJN RTF2 IF NOT INITIAL ASSIGNMENT RTF1 RJM RSP RELEASE VSNS TO SCRATCH POOL RJM PCE PURGE CATALOG ENTRIES LJM RTF27 COMPLETE REQUEST * RESERVE TAPE CATALOG ENTRIES AND VSN-S. RTF2 SAVEP RTFB SAVE CATALOG BUFFER POINTERS LDN 0 CLEAR *IRM* FLAG STM RTFC AOD QN+1 CONVERT SEQUENCE NUMBER TO DISPLAY CODE SHN -14 RAD QN SHN 14 ADD QN+1 RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE LDM CBST,BP CHECK SCRATCH STATUS SHN 0-11 LPN 1 LMN 1 STD IA SET INITIAL ASSIGNMENT FLAG NJN RTF3 IF NOT INITIAL ASSIGNMENT RJM IAM ISSUE ACCOUNT FILE MESSAGE LDM CBST,BP SHN -10 LPN 1 STM RTFC RESTP CPSI RESTORE SECONDARY INDEX POINTERS RJM SES SET EOI VOLUME STATUS RJM RVU RESERVE VSN TO USER RESTP CPCB RESTORE CATALOG BUFFER POINTERS RTF3 LDM CBST,BP CHECK IF PHYSICAL CHARACTERISTIC UPDATE SHN 21-12 MJN RTF4 IF RECOVERED FILE LDM UTMS+2 ZJN RTF7 IF NO WRITE RTF4 LDM PFTD COPY TAPE DESCRIPTORS FROM UDT LMM CBTD,BP ZJN RTF5 IF NO CHANGES MADE TO TAPE DESCRIPTORS AOM RTFC FLAG CHANGES MADE RTF5 LDM PFTD+2 LMM CBTD+2,BP ZJN RTF6 IF NO CHANGES MADE TO TAPE DESCRIPTORS AOM RTFC FLAG CHANGES MADE RTF6 LDM PFTD STM CBTD,BP LDM PFTD+2 STM CBTD+2,BP RTF7 LDM CBST,BP CLEAR FILE BUSY LPC -3001 STM CBST,BP LDC ** RTFC EQU *-1 ZJN RTF8 IF *TMS* RECOVERY MESSAGES NOT NEEDED RJM IRM ISSUE RECOVERY MESSAGES RTF8 LDM CBNC,BP SAVE NEXT CATALOG POINTER STD NC LDM CBNC+1,BP STD NC+1 LDM UTMS+2 ZJN RTF9 IF NO WRITE LDM PBQN LPN 77 LMD QN NJN RTF9 IF NOT LAST CATALOG LDM PBQN+1 LMD QN+1 NJN RTF9 IF NOT LAST CATALOG STM CBNC,BP STM CBNC+1,BP RTF9 LDM CBNC,BP CHECK IF WRITE REQUIRED LMD RI LPN 77 NJN RTF10 IF WRITE REQUIRED LDM CBNC+1,BP LMD RI+1 NJN RTF10 IF WRITE REQUIRED STM RTFA FLAG NO READ REQUIRED UJN RTF11 LOAD POINTERS FOR NEXT CATALOG RTF10 STM RTFA FLAG READ REQUIRED RJM WRP WRITE RANDOM PRU RTF11 LDD NC LOAD POINTERS TO NEXT CATALOG SHN 14 STM CPCB+2 SHN -14 STM CPCB+3 LDD NC+1 STM CPCB+4 LDM CBNC,BP CHECK FOR END OF SET ZJP RTF19 IF LAST FILE IN SET RESTP CPCB LDC 0 NO READ REQUIRED * LDC (RI) READ REQUIRED RTFA EQU *-1 ZJN RTF12 IF NO READ REQUIRED RJM RRP READ CATALOG ENTRY RTF12 RJM VSP VERIFY/SET CATALOG POINTER PJN RTF14 IF NO ERROR RTF13 ERROR ECD *ERROR IN CATALOG DATA.* * RESERVE VOLUME TO USER. RTF14 SAVEP CPCB SAVE CATALOG BUFFER POINTERS LDM CBES,BP ZJN RTF13 IF NO FIRST VOLUME RTF15 COMPARE ,KA,CBES,BP,VSKL ZJP RTF2 IF SAME VSN RESTP CPSI RESTORE SECONDARY VSN INDEX POINTERS MMOVE VBNV,BP,,KA,VSKL LDD IA CHECK FOR INITIAL ASSIGNMENT ZJN RTF16 IF INITIAL ASSIGNMENT LDM VBST,BP LPN RTVS/1S12 NJN RTF17 IF ALREADY RESERVED RTF16 LDD QN ENSURE SEQUENCE NUMBER PRESENCE SHN 14 ADD QN+1 RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY LDN 0 ISSUE RESERVE MESSAGE RJM IAM ISSUE ACCOUNT FILE MESSAGE RJM SES SET EOI VOLUME STATUS RTF17 RJM RVU RESERVE/RELEASE VOLUME TO USER LDI KA ZJN RTF18 IF VSN NOT FOUND RJM SFV SEARCH FOR VSN NJN RTF18 IF VSN NOT FOUND RESTP CPCB RESTORE CATALOG BUFFER POINTERS LJM RTF15 RESERVE FURTHER VOLUMES RTF18 ERROR EID ERROR IN INDEX DATA * RESERVE VSNS AT LAST CATALOG ENTRY. RTF19 RESTP CPSI LDN 0 RESET REEL COUNT STD RC RTF20 AOD RC INCREMENT REEL COUNT LDM VBST,BP LPN RTVS/1S12 NJN RTF21 IF ALREADY RESERVED LDD QN ENSURE SEQUENCE NUMBER PRESENCE SHN 14 ADD QN+1 RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY LDN 0 ISSUE RESERVE MESSAGE RJM IAM ISSUE ACCOUNT FILE MESSAGE RTF21 RJM SES SET EOI STATUS MMOVE VBNV,BP,,KA,VSKL LDM VBST,BP SHN 21-0 MJN RTF22 IF USER OWNED TAPE SHN 21-2-21+0+22 PJN RTF22 IF NOT EOI VOLUME CLEAR VBNV,BP,VSKL RTF22 RJM RVU RESERVE/RELEASE VOLUME TO USER LDM VBNV,BP ZJN RTF23 IF END OF VSNS RJM SFV SEARCH FOR VSN ZJP RTF20 IF VSN FOUND LJM RTF18 ERROR IN CATALOG DATA * RELEASE EXCESS CATALOGS RTF23 RJM WRP WRITE RANDOM PRU (VSN INDEX) RESTP RTFB RESTORE CATALOG BUFFER POINTERS RJM RRP READ RANDOM PRU RJM VSP VERIFY/SET CATALOG POINTERS MJP RTF13 IF INCORRECT POINTERS LDD RC SET REEL COUNT IN CATALOG ENTRY STM CBRC,BP RJM WRP WRITE RANDOM PRU LDD NC ZJN RTF24 IF LAST CATALOG SHN 14 STM CPCB+2 SHN -14 STM CPCB+3 LDD NC+1 STM CPCB+4 RESTP CPCB RJM RRP READ RANDOM PRU RJM VSP VERIFY/SET CATALOG POINTERS MJP RTF13 IF ERROR IN CATALOG DATA SAVEP CPCB SAVE CATALOG POINTERS RJM PCE PURGE CATALOG ENTRIES RTF24 LDI KA ZJP RTF26 IF NO VSNS TO RELEASE RESTP CPSI RESTORE SECONDARY POINTERS RJM SFV SEARCH FOR VSN NJP RTF18 IF NOT FOUND MMOVE ,KA,PESN,,VSKL LDM VBST,BP CHECK VSN RESERVATION STATUS LPN RTVS/1S12 ZJN RTF25 IF VSN NOT RESERVED LDN 1 CONVERT SEQUENCE NUMBER TO DISPLAY CODE RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE LDN ZERL CRD CM LDN 1 ISSUE RELEASE MESSAGE RJM IAM ISSUE ACCOUNT FILE MESSAGE RTF25 RJM RSP RELEASE VSNS TO SCRATCH POOL RTF26 LJM RTF27 COMPLETE REQUEST RTFB BSS 5 CATALOG BUFFER POINTERS TITLE SUBROUTINES. RVU SPACE 4,10 ** RVU - RESERVE VOLUME TO USER * * ENTRY (BP) = BUFFER POINTER. * * EXIT VSN BUSY STATUS CLEARED. * * CALLS CVA. RVU SUBR ENTRY/EXIT LDM VBJS,BP ZJN RVUX IF ALREADY RESERVED AND RELEASED LDM VBST,BP SET RESERVED STATUS SCN RTVS/1S12+ASVS/1S12 LMN RTVS/1S12 STM VBST,BP RJM CVA CLEAR VSN ASSIGNMENT UJN RVUX RETURN SES SPACE 4,10 ** SES - SET EOI STATUS. * * ENTRY (BP) = VSN BUFFER POINTER. * (UTMS+2) = WRITE OCCURRED ON REEL. * * EXIT VSN EOI STATUS SET. SES SUBR ENTRY/EXIT LDM UTMS+2 CHECK FOR WRITE ZJN SESX IF NO WRITE OCCURRED LDM VBST,BP CLEAR EOI STATUS SCN EOIV/1S12 STM VBST,BP LDM VBRC,BP COMPARE THIS REEL WITH LAST REEL WRITTEN SHN -6 SBM UTMS+2 NJN SESX IF NOT EOI VOLUME LDN EOIV/1S12 RAM VBST,BP UJN SESX RETURN SFV SPACE 4,10 ** SFV - SEARCH FOR VSN * * ENTRY (BA) = BUFFER ADDRESS. * * EXIT (A) = 0 IF VSN FOUND. * * USES BP. * * CALLS SIB, VIS, WRP. * * MACROS SAVEP. SFV1 SAVEP CPSI SAVE SECONDARY VSN INDEX POINTERS LDN 0 EXIT *VSN FOUND* SFV SUBR ENTRY/EXIT LDD BA ADN 2 STD BP RJM SIB SEARCH INDEXED BUFFER (VSN) ZJN SFV1 IF FOUND IN THIS BUFFER RJM WRP WRITE RANDOM PRU (VSN INDEX) RJM VIS VSN INDEXED SEARCH ZJN SFV1 IF VSN FOUND UJN SFVX RETURN SPACE 4,10 *** COMMON DECKS. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY CVA$ EQU 1 DEFINE CVA - CLEAR VSN ASSIGNMENT DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY DLB$ EQU 1 DEFINE DLB - DELINK DATA BLOCK GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK GNL$ EQU 1 DEFINE GNL - GET NEXT BLOCK GPL$ EQU 1 DEFINE GPL - GET PREVIOUS BLOCK ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH WITH KEY IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES. PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES PLI$ EQU 1 DEFINE PLI - POSITION TO LAST ENTRY RSP$ EQU 1 DEFINE RSP - RELEASE VSNS TO SCRATCH POOL SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTER *CALL COMPC2D *CALL COMPTFM SPACE 4,10 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW TITLE PRESET. PRS SPACE 4,15 ** PRS - PRESET FOR FUNCTION RTFS. * * EXIT (A) = 0 IF NO CATALOG ENTRY. * (PESN - PESN+3) = FIRST VSN. * (PBQN - PBQN+1) = LAST FILE SEQUENCE NUMBER. * (RI - RI+1) = FIRST CATALOG RANDOM INDEX. * (CI) = CATALOG ENTRY INDEX. * * USES BA, CI, EC, KA, CM - CM+4, QN - QN+1, RI - RI+1. * * CALLS RRP, IAM, ISP, SIB, CSN, VIS, VSP. * * MACROS LDA, MMOVE, UDTRD. PRS SUBR ENTRY/EXIT RJM ISP INITIALIZE SCRATCH PROCESSOR LDN 0 PRESET SEQUENCE NUMBER STD QN STD QN+1 LDC PESN READ FIRST VSN STD KA RJM VIS VSN INDEXED SEARCH NJN PRS1 IF VSN NOT FOUND LDM VBRC,BP SHN -6 SBN 2 MJN PRS2 IF FIRST VSN MMOVE VBFV,BP,,KA,VSKL LDD BA ADN 2 STD BP RJM SIB SEARCH FOR VSN IN BUFFER ZJN PRS2 IF FIRST VSN IN BUFFER RJM VIS VSN INDEXED SEARCH ZJN PRS2 IF VSN FOUND PRS1 LDN 0 NO CATALOG FOUND LJM PRSX RETURN PRS2 SAVEP CPSI SAVE SECONDARY VSN INDEX POINTERS RJM TBA TOGGLE BUFFER ALLOCATION UDTRD CM,/MTX/UTCI,1 READ CATALOG ENTRY LDD CM+3 SHN 14 STD CI SHN -14 STD RI LDD CM+4 STD RI+1 RJM RRP GET INITIAL BLOCK (CATALOG) RJM VSP VERIFY/SET CATALOG POINTERS MJP PRS1 IF ERROR IN CATALOG INDEX SAVEP CPCB SAVE CATALOG BUFFER POINTERS LDM PBQN SET SEQUENCE NUMBER SCN 77 STM PBQN LDM CBQN,BP LPN 77 RAM PBQN LDM CBQN+1,BP STM PBQN+1 LDM UTMS+2 ZJN PRS3 IF TAPE NOT WRITTEN TO LDM CBNC,BP PRS3 ZJP PRS5 IF NO CATALOGS TO DELETE SHN 14 POSITION TO NEXT CATALOG STD CI SHN -14 LMD RI SHN 14 LMD RI+1 LMM CBNC+1,BP ZJN PRS4 IF IN SAME PRU LMD RI+1 STD RI+1 SHN -14 LMD RI STD RI RJM RRP READ RANDOM PRU PRS4 RJM VSP VERIFY/SET CATALOG POINTER LDM CBST,BP SHN 21-11 MJN PRS5 IF INITIAL CATALOG LDA CBQN,BP RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE LDN ZERL CRD CM LDN 1 RJM IAM ISSUE ACCOUNT FILE MESSAGE PRS5 RESTP CPSI RESTORE SECONDARY VSN INDEX POINTERS MMOVE ,KA,PVSN,,VSKL SET FIRST VSN LDC PVSN STD KA LDC BUF2 SET CATALOG BUFFER ADDRESS STD BA LDM VBCI,BP LOAD CATALOG INDEX SHN 14 STD CI SCN 77 LMM VBCI+1,BP STD RI+1 SHN -14 STD RI ADD RI+1 LJM PRSX RETURN SPACE 4,10 ERRNG BUF1-* OVERLAY (DELETE/REPLACE/LIST VSN, INSERT USERNAME ENTRY.),OVL1 SPACE 4 ** LOCAL DIRECT CELL LOCATIONS. IL EQU S2+1 INTERLOCK FLAG FT EQU S2+2 - S2+3 FET FIRST POINTER IN EQU S2+4 - S3+0 FET IN POINTER OT EQU S3+1 - S3+2 FET OUT POINTER LM EQU S3+3 - S3+4 FET LIMIT POINTER DVES SPACE 4,10 *** DVES - DELETE VSN ENTRY(S). * * THIS FUNCTION IS CALLED ONLY BY A SSJ= JOB * TO DELETE VSN ENTRIES FROM THE TAPE CATALOG. * ONLY UNASSIGNED VSN(S) CAN BE DELETED. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * ENTRY (CO) = CATALOG FST ADDRESS. * * USES KA, PB, T3. * * CALLS COB, DDE, DLB, RBB, SBP, UOP, VIS, WRP. * * MACROS ERROR. DVE ENTRY ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS DVE1 RJM COB CHECK OUTPUT BUFFER PJN DVE2 IF NO ERROR ERROR BAE *BUFFER ARGUMENT ERROR.* DVE2 ZJN DVEX IF BUFFER EMPTY LDN 1 STD T3 LDC PESN STD PB STD KA RJM RBB READ BINARY BUFFER RJM VIS VSN INDEX SEARCH ZJN DVE3 IF VSN FOUND ERROR VNF *(VSN) NOT FOUND.* DVE3 LDA VBCI,BP CHECK FOR ASSIGNED VSN ZJN DVE4 IF VSN NOT ASSIGNED ERROR VSR *(VSN) RESERVED.* DVE4 RJM DDE DELETE DATA ENTRY LDM CWNE,BA NJN DVE5 IF SECONDARY INDEX NOT EMPTY RJM DLB DELINK BLOCK RESTP CPPI SWAP TO PRIMARY INDEX BUFFER RJM DDE DELETE DATA ENTRY LDM CWNE,BA NJN DVE5 IF PRIMARY INDEX NOT EMPTY RJM DLB DELINK DATA BLOCK UJN DVE6 UPDATE OUTPUT POINTER DVE5 RJM WRP WRITE RANDOM PRU DVE6 RJM UOP UPDATE OUT POINTER LJM DVE1 PROCESS NEXT ENTRY IUES SPACE 4,10 *** IUES - INSERT USERNAME ENTRY(S). * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * USES KA, PB, T3. * * CALLS CCB, CIE, COB, RBB, RWI, SCP, * UIS, UOP. * * MARCOS ERROR. IUE ENTRY ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS IUE1 RJM COB CHECK OUTPUT BUFFER PJN IUE2 IF NO ERROR ERROR BAE *BUFFER ARGUMENT ERROR.* IUE2 ZJN IUEX IF BUFFER EMPTY SBN TSUL MJN IUEX IF NOT ENTRY LENGTH LDN TSUL STD T3 LDC BUFA STD PB STD KA RJM RBB READ BINARY BUFFER IUEA UJN IUE4 IF INITIAL CALL RJM CCB CHECK CURRENT BUFFER ZJN IUE6 IF INDEX FOUND PJN IUE3 IF BUFFERS LOADED UJN IUE5 INITIATE INDEXED SEARCH IUE3 RJM CIE CREATE INDEX ENTRY RJM UOP UPDATE OUT POINTER LJM IUE1 PROCESS NEXT ENTRY IUE4 LDC PSNI STM IUEA IUE5 RJM UIS USERNAME INDEX SEARCH NJN IUE3 IF USERNAME NOT FOUND IUE6 LJM IUE1 PROCESS NEXT ENTRY LVES SPACE 4,10 *** LVES - LIST VSN ENTRY(S). * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * USES CM - CM+4, IL, KA, PB. * * CALLS CCB, COB, RBB, RWI, SBP, UOP, VIS. * * MACROS ERROR, LDA, MMOVE. LVE11 LDD IL CHECK INTERLOCK FLAG ZJN LVE12 IF NOT INTERLOCK FUNCTION RJM WRP WRITE RANDOM PRU (VSN INDEX) LVE12 LDN ZERL RESET IN POINTER CRD CM LDD FT STD CM+3 LDD FT+1 STD CM+4 LDA IR+3,REL ADN 2 CWD CM LVE ENTRY ENTRY/EXIT LDA IR+3,REL GET INTERLOCK FLAG CRD CM LDD CM+4 LPN 4 STD IL RJM SBP SET FET BUFFER POINTERS LVE1 RJM COB CHECK OUTPUT BUFFER PJN LVE2 IF NO ERROR ERROR BAE *BUFFER ARGUMENT ERROR.* LVE2 ZJN LVE3 IF BUFFER EMPTY SBN TSVL PJN LVE4 IF .GE. ENTRY LENGTH LVE3 LJM LVE11 FUNCTION COMPLETE LVE4 LDN TSVL PROCESS REQUEST STD T3 LDC BUFA STD PB STD KA RJM RBB READ BINARY BUFFER LVEA UJN LVE5 IF INITIAL CALL RJM CCB CHECK CURRENT BUFFER ZJN LVE9 IF INDEX FOUND PJN LVE7 IF BUFFERS LOADED LDD IL CHECK INTERLOCK FLAG ZJN LVE6 IF NOT INTERLOCK FUNCTION RJM WRP WRITE RANDOM PRU (SECONDARY) UJN LVE6 INITIATE INDEXED SEARCH LVE5 LDC PSNI STM LVEA LVE6 RJM VIS VSN INDEX SEARCH ZJN LVE9 IF VSN FOUND LVE7 MMOVE ,KA,PESN,,VSKL LDD IL ZJN LVE8 IF NOT INTERLOCK FUNCTION RJM WRP WRITE RANDOM PRU (SECONDARY) LVE8 ERROR VNF *(VSN) NOT FOUND.* LVE9 MMOVE ,BP,BUFA,,TSVL*10D LDD IL CHECK INTERLOCK FLAG ZJN LVE10 IF NOT INTERLOCK FUNCTION LDM VBST+1,BP SET VSN INTERLOCK SCN VIVS LMN VIVS STM VBST+1,BP LDM VBMX,BP SET INTERLOCK MACHINE INDEX-1 SCN 17 LMM CDMX STM VBMX,BP LVE10 LDN TSVL RETURN VSN ENTRY TO BUFFER STD T1 LDA IR+3,REL ADN 3 CRD CM LDA CM+3,REL CWM BUFA,T1 RJM UOP UPDATE OUT POINTER LJM LVE1 PROCESS NEXT ENTRY RAVS SPACE 4,10 *** RAVS - REPLACE/ADD VSN. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * USES IL, KA, PB, T3. * * CALLS CCB, CIE, COB, RBB, RWI, SBP, * UOP, VIS. * * MACROS ERROR, LDA, MMOVE. RAV ENTRY ENTRY/EXIT LDN 1 STD IL RJM SBP SET FET BUFFER POINTERS RAV1 RJM COB CHECK OUTPUT BUFFER PJN RAV2 IF NO ERROR ERROR BAE BUFFER ARGUMENT ERROR RAV2 ZJN RAVX IF BUFFER EMPTY SBN TSVL MJN RAVX IF NOT ENTRY LENGTH LDN TSVL STD T3 LDC BUFA STD PB STD KA RJM RBB READ BINARY BUFFER RAVA UJN RAV4 IF INITIAL PASS RJM CCB CHECK CURRENT BUFFER ZJN RAV3 IF VSN FOUND PJN RAV6 IF BUFFERS LOADED UJN RAV5 INITIATE INDEXED SEARCH RAV3 MMOVE BUFA,,,BP,TSVL*10D LDC WRP SET TO UPDATE EXISTING ENTRY UJN RAV7 REWRITE INDEX RAV4 LDC PSNI STM RAVA RAV5 RJM VIS VSN INDEX SEARCH ZJN RAV3 IF VSN FOUND RAV6 LDC CIE SET TO CREATE NEW INDEX RAV7 STM RAVB UPDATE/CREATE VSN INDEX RJM ** (TO *WRP* IF UPDATING EXISTING INDEX) RAVB EQU *-1 (TO CIE IF CREATING NEW INDEX) RJM UOP UPDATE OUT POINTER LJM RAV1 PROCESS NEXT ENTRY TITLE SUBROUTINES. SPACE 4,10 *** COMMON DECKS. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY CCB$ EQU 1 DEFINE CCB - CHECK CURRENT BUFFER CIE$ EQU 1 DEFINE CIE - CREATE INDEX ENTRY DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY DLB$ EQU 1 DEFINE DLB - DELINK DATA BLOCK GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT UIS$ EQU 1 DEFINE UIS - USERNAME INDEXED SEARCH UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH *CALL COMPCOB *CALL COMPRBB *CALL COMPTFM *CALL COMPWEI SPACE 4 *** BUFFERS. BUFA BSS TSVL*5 BUFB BSS TSVL*5 SPACE 4 ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (INSERT/REPLACE CATALOG ENTRY.),OVL1 SPACE 4 ** LOCAL DIRECT CELL LOCATIONS. FT EQU S2+2 - S2+3 FET FIRST POINTER IN EQU S2+4 - S3+0 FET IN POINTER OT EQU S3+1 - S3+2 FET OUT POINTER LM EQU S3+3 - S3+4 FET LIMIT POINTER ICES SPACE 4,10 *** ICES - INSERT CATALOG ENTRY. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST *T, +7 60/ 0 *T, +10 60/ 0 *T, +11 60/ 0 *T, +12 60/ 0 *T, +13 60/ 0 *T, +14 60/ 0 *T, +15 60/ 0 *T, +16 60/ 0 *T, +17 42/ ALT. USERNAME,18/ 0 * * USES BA, BP, CI, CM - CM+4, KA, PB, * RI - RI+1, T3. * * CALLS ABC, COB, EDT, IBC, IRM, MBP, RBB, * RRP, SBP, SCB, UIS, UOP, WRP. * * MACROS ERROR, LDA, MMOVE, SAVEP, RESTP. ICE ENTRY ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS RJM COB CHECK OUTPUT BUFFER PJN ICE1 IF NO ERROR ERROR BAE *BUFFER ARGUMENT ERROR.* ICE1 ZJN ICEX IF BUFFER EMPTY SBN TCEL MJN ICEX IF NOT ENTRY LENGTH LDA IR+3,REL ADN TFUN CRM PBUN,ON LDC PBUN STD KA RJM UIS USERNAME INDEX SEARCH ZJN ICE2 IF USER NAME FOUND ERROR UNF *(USERNAME) NOT FOUND.* ICE2 LDN TCEL GET CATALOG IMAGE STD T3 LDC BUFA STD PB RJM RBB READ BINARY BUFFER LDC BUF2 SET CATALOG BUFFER STD BA LDM UBCI,BP SET FIRST CATALOG BLOCK LPN 77 STD RI SHN 14 LMM UBCI+1,BP STD RI+1 ZJN ICE4 IF NOT INDEX LDM BUFA+CBST LPN 4 ZJN ICE3 IF NOT SYMBOLIC MMOVE BUFA+CBLI,,POFI,,FIKL LDC POFI ICE3 STD KA SET SEARCH TYPE RJM SCB SEARCH CATALOG BUFFER ZJP ICE5 IF FILE NOT FOUND ERROR FAR *(FILENAME) ALREADY RESERVED.* ICE4 LDC BUF2 GENERATE USER CATALOG BLOCK STD BA RJM IBC INITIALIZE BLOCK CHAIN SAVEP CPCB SAVE CATALOG POINTERS RESTP CPSI RESTORE INDEX POINTERS LDM UBCI,BP SET USER CATALOG POINTER SCN 77 LMM CPCB+3 STM UBCI,BP LDM CPCB+4 STM UBCI+1,BP RJM WRP WRITE RANDOM PRU RESTP CPCB RESTORE CATALOG POINTERS UJN ICE7 ENTER CATALOG IMAGE ICE5 LDM CPHP CHECK IF HOLE FOUND ZJN ICE6 IF HOLE NOT FOUND RESTP CPHP RESTORE HOLE POINTERS RJM RRP READ RANDOM PRU UJN ICE8 MOVE CATALOG IMAGE ICE6 LDN CWRI EXTEND CATALOG FILE RJM ABC ADD BLOCK TO CHAIN ICE7 LDC RTCB*100 SET RECORD TYPE/LEVEL STM CWRT,BA LDN TCEL STM CWEL,BA MMOVE PBUN,,CWUN,BA,UNKL LDM CWFE,BA RJM MBP MOVE BUFFER POINTER LDN 1 STD CI ICE8 MMOVE BUFA,,,BP,TCEL*10D LDM CWUW,BA SBN TCEL STM CWUW,BA AOM CWNE,BA MMOVE CBES,BP,PESN,,VSKL RJM IRM ISSUE RECOVERY MESSAGES RJM WRP WRITE RANDOM PRU RJM UOP UPDATE OUT POINTER LDN ZERL CRD CM LDD CI SHN 6 LMD RI STD CM LDD RI+1 STD CM+1 LDA IR+3,REL ADN TFRR CWD CM LJM ICEX RETURN RCES SPACE 4,10 *** RCES - REPLACE CATALOG ENTRY. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * USES BA - BA+4, CI, RI - RI+1, T1, T3. * * CALLS COB, EDT, IRM, RBB, RRP, SBP, UOP, * VRR, VSP, WRP. * * MACROS COMPARE, ERROR, LDA, MMOVE. NUMBYT EQU CBPN-CBUC+10D BYTES BETWEEN *CEUC* AND END OF *CEPN* RCE ENTRY ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS RJM COB CHECK OUTPUT BUFFER PJN RCE2 IF NO ERROR RCE1 ERROR BAE *BUFFER ARGUMENT ERROR.* RCE2 ZJN RCEX IF BUFFER EMPTY SBN TCEL MJN RCEX IF NOT ENTRY LENGTH LDA IR+3,REL GET RANDOM REQUEST ADN TFRR CRD BA LDD RI SHN 14 STD CI SHN -14 STD RI RJM VRR VERIFY RANDOM REQUEST LDC BUF2 STD BA RJM GIB GET INITIAL BLOCK (CATALOG) MMOVE ,BA,BUF1,,502B*2 SAVE COPY OF ORIGINAL BUFFER RJM VSP VERIFY/SET CATALOG POINTER MJP RCE1 IF INCORRECT RANDOM REQUEST LDN TCEL REPLACE CATALOG IMAGE STD T3 LDD BP STD T1 RJM RBB READ BINARY BUFFER RJM WRP WRITE RANDOM PRU LDD BP CALCULATE BUFFER OFFSET SBK BUF2 STD T3 COMPARE ,BP,BUF1,T3,CBAM*2 NJN RCE3 IF CHANGE FOUND COMPARE CBUC,BP,BUF1+CBUC,T3,NUMBYT*2 ZJN RCE4 IF NO CHANGE FOUND RCE3 MMOVE CBES,BP,PESN,,VSKL RJM IRM ISSUE RECOVERY MESSAGES RCE4 BSS 0 RJM UOP UPDATE OUTPUT POINTER LJM RCEX RETURN TITLE SUBROUTINES. SPACE 4,10 ABC$ EQU 1 DEFINE ABC - ADD BLOCK TO CHAIN BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY GEP$ EQU 1 DEFINE GEP - GENERATE EMPTY PRU GPL$ EQU 1 DEFINE GPL - GET PREVIOUS BLOCK LINK IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY LNB$ EQU 1 DEFINE LNB - LINK NEXT BLOCK PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER SCB$ EQU 1 DEFINE SCB - SEARCH CATALOG BUFFER UIS$ EQU 1 DEFINE UIS - USERNAME INDEXED SEARCH UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER VRR$ EQU 1 DEFINE VRR - VERIFY RANDOM REQUEST VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTER WES$ EQU 1 DEFINE WES - WRITE EOR/EOI SEQUENCE *CALL COMPCOB *CALL COMPC2D *CALL COMPRBB *CALL COMPTFM *CALL COMPWEI SPACE 4 *** BUFFERS. BUFA BSS TSVL*5 BUFB BSS TSVL*5 SPACE 4 ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (LIST/REPLACE ADMIT ENTRY.),OVL1 SPACE 4 ** LOCAL DIRECT CELL LOCATIONS. FT EQU S2+2 - S2+3 FET FIRST POINTER IN EQU S2+4 - S3+0 FET IN POINTER OT EQU S3+1 - S3+2 FET OUT POINTER LM EQU S3+3 - S3+4 FET LIMIT POINTER LAES SPACE 4,10 *** LAES - LIST ADMIT ENTRY(S). * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * USES CM - CM+4, KA, PB, T1. * * CALLS AUS, COB, FCB, RBB, SBP, UOP. * * MACROS ERROR, LDA, MMOVE. LAE ENTRY ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS RJM FCB FILL CATALOG BUFFER STM LAEB+1 SHN -14 LMC LDCI STM LAEB LAE1 RJM COB CHECK OUTPUT BUFFER PJN LAE2 IF NO ERROR ERROR BAE *BUFFER ARGUMENT ERROR.* LAE2 ZJN LAE3 IF BUFFER EMPTY SBN TAEL PJN LAE4 IF .GE. ENTRY LENGTH LAE3 LDN ZERL RESET IN POINTER CRD CM LDD FT STD CM+3 LDD FT+1 STD CM+4 LDA IR+3,REL ADN 2 CWD CM LJM LAEX RETURN LAE4 LDN TAEL PROCESS REQUEST STD T3 LDC BUFA STD PB STD KA RJM RBB READ BINARY BUFFER LDC ** SET ADMIT BLOCK ADDRESS LAEB EQU *-2 (FIRST ADMIT BLOCK) ZJN LAE5 IF NO ALTERNATE USERS STD RI+1 SHN -14 STD RI RJM AUS ADMIT USER SEARCH ZJN LAE6 IF ADMIT FOUND LAE5 MMOVE ,KA,PBUN,,UNKL ERROR UNF *(USERNAME) NOT FOUND.* LAE6 MMOVE ,BP,BUFA,,TAEL*10D LDN TAEL RETURN ADMIT ENTRY TO BUFFER STD T1 LDA IR+3,REL ADN 3 CRD CM LDA CM+3,REL CWM BUFA,T1 RJM UOP UPDATE OUT POINTER LJM LAE1 PROCESS NEXT ENTRY RAES SPACE 4,10 *** RAES - REPLACE/ADD ADMIT ENTRY. * * ENTRY (IR - IR+3) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * USES BA, KA, PB, RI - RI+1, T3. * * CALLS AUS, CAE, COB, FCB, IBC, SBP, * UOP, WRP. * * MACROS ERROR, LDA, MMOVE, SAVEP. RAE ENTRY ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS RJM FCB FILL CATALOG BUFFER ZJN RAE1 IF ADMIT BLOCK NOT ASSIGNED LJM RAE2 SAVE FIRST BLOCK ADDRESS RAE1 SAVEP CPCB SAVE CATALOG POINTERS LDC BUF1 STD BA RJM IBC INITIALIZE BLOCK CHAIN LDC RTAB*100 STM CWRT,BA LDN TAEL STM CWEL,BA MMOVE PBUN,,CWUN,BA,UNKL SAVEP CPAB SAVE FIRST ADMIT POINTERS RJM WRP WRITE RANDOM PRU RESTP CPCB RESTORE CATALOG POINTERS LDM CPAB+3 SET ADMIT BUFFER POINTER STM CBAE,BP LDM CPAB+4 STM CBAE+1,BP RJM WRP WRITE RANDOM PRU RESTP CPAB RESTORE ADMIT BUFFER POINTERS LDA RI,ABS RAE2 STM RAEB+1 SAVE FIRST BLOCK ADDRESS SHN -14 LMC LDCI STM RAEB RAE3 RJM COB CHECK OUTPUT BUFFER MJN RAE5 IF ARGUMENT ERROR ZJN RAE4 IF BUFFER EMPTY SBN TAEL PJN RAE6 IF .GE. ENTRY LENGTH RAE4 LJM RAEX RETURN RAE5 ERROR BAE *BUFFER ARGUMENT ERROR* RAE6 LDN TAEL GET ADMIT ENTRY IMAGE STD T3 LDC BUFA STD PB STD KA RJM RBB READ BINARY BUFFER LDC ** SET ADMIT BLOCK ADDRESS RAEB EQU *-2 (FIRST ADMIT BLOCK) STD RI+1 SHN -14 STD RI RJM AUS ALTERNATE USER SEARCH NJN RAE7 IF ALTERNATE USER NOT FOUND MMOVE ,PB,,BP,TAEL*10D LDC WRP SET TO UPDATE INDEX UJN RAE8 UPDATE INDEX RAE7 LDC BUFB ENTER INDEX STD T7 LDC IIE SET TO INSERT INDEX RAE8 STM RAEA UPDATE OR INSERT INDEX RJM ** (TO *IIE* IF CREATING NEW INDEX) RAEA EQU *-1 (TO *WRP* IF UPDATING INDEX) RJM UOP UPDATE OUT POINTER LJM RAE3 PROCESS NEXT ENTRY TITLE SUBROUTINES. FCB SPACE 4,10 ** FCB - FILL CATALOG BUFFER. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT (A) = INDEX TO ADMIT BLOCK. * * USES BA - BA+4, CI, RI - RI+1. * * CALLS RRP, VRR, VSP. * * MACROS ERROR, LDA. FCB SUBR ENTRY/EXIT LDA IR+3,REL GET RANDOM REQUEST ADN TFRR CRD BA LDD RI SHN 14 STD CI SHN -14 STD RI RJM VRR VERIFY RANDOM REQUEST LDC BUF0 STD BA RJM GIB GET INITIAL BLOCK (CATALOG) RJM VSP VERIFY/SET CATALOG POINTER PJN FCB1 IF VALID RANDOM REQUEST ERROR BAE *BUFFER ARGUMENT ERROR.* FCB1 MMOVE CWUN,BA,PBUN,,UNKL LDA CBAE,BP LJM FCBX RETURN SPACE 4 *** COMMON DECKS. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN IIE$ EQU 1 DEFINE IIE - INSERT INDEX ENTRY SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER VRR$ EQU 1 DEFINE VRR - VERIFY RANDOM REQUEST VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS *CALL COMPCOB *CALL COMPRBB *CALL COMPTFM *CALL COMPWEI SPACE 4 *** BUFFERS. BUFA BSS TAEL*5 BUFB BSS TAEL*5 SPACE 4 ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW OVERLAY (READ/WRITE BLOCK.),OVL1 SPACE 4 ** LOCAL DIRECT CELL LOCATIONS. CW EQU S1+0 - S1+4 SCRATCH WORD (5 LOCATIONS) FT EQU S2+2 - S2+3 FET FIRST POINTER IN EQU S2+4 - S3+0 FET IN POINTER OT EQU S3+1 - S3+2 FET OUT POINTER LM EQU S3+3 - S3+4 FET LIMIT POINTER CN EQU FN+0 - FN+4 WC EQU 67 WORD COUNT RDRS SPACE 4,10 *** RDRS - BLOCK READ REQUEST. * * ENTRY (IR+3 - IR+4) = FDET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * USES BA, BP, T1. * * CALLS CIB, EOI, FPB, SBP, UIP, WBB. * * MACROS ERROR. RDR ENTRY ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS RJM CIB CHECK INPUT BUFFER PJN RDR2 IF NO ERROR RDR1 ERROR BAE *BUFFER ARGUMENT ERROR.* RDR2 LDC BUF0 SET BUFFER ADDRESS STD BA ADN 2 STD BP ADC -100 MJN RDR1 IF NO ROOM IN BUFFER RJM FPB FILL PP BUFFER ZJN RDRX IF INCORRECT RANDOM REQUEST LDD HN STD T1 LDD BP RJM WBB WRITE BINARY BUFFER RJM UIP UPDATE IN POINTER LDM CWRI,BA ADM CWRI+1,BA NJN RDR3 IF LINKED BLOCK RJM EOI SET END OF INFORMATION RDR3 LJM RDRX RETURN WRRS SPACE 4,10 *** WRRS - BLOCK WRITE REQUEST. * * ENTRY (IR+3 - IR+4) = FET ADDRESS - * *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST *T, +2 42/ 0,18/ IN *T, +3 42/ 0,18/ OUT *T, +4 12/ FNT,30/ 0,18/ LIMIT *T, +5 42/ 0,18/ EADD *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST * * USES BA, BP, T3. * * CALLS COB, EOI, EPB, RBB, SBP, UOP. * * MACROS ERROR. WRR ENTRY ENTRY/EXIT RJM SBP SET FET BUFFER POINTERS RJM COB CHECK OUTPUT BUFFER PJN WRR2 IF NO ERROR WRR1 ERROR BAE *BUFFER ARGUMENT ERROR.* WRR2 LDC BUF0 SET BUFFER ADDRESS STD BA ADN 2 STD BP ADC -100 MJN WRR1 IF NO ROOM IN BUFFER LDD HN STD T3 LDD BP RJM RBB READ BINARY BUFFER RJM EPB EMPTY PP BUFFER ZJN WRRX IF NO RANDOM REQUEST RJM UOP UPDATE OUT POINTER LDM CWRI,BA ADM CWRI+1,BA NJN WRR3 IF LINKED BLOCK RJM EOI SET END OF INFORMATION WRR3 LJM WRRX RETURN TITLE SUBROUTINES. EPB SPACE 4,10 ** EPB - EMPTY PP BUFFER. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT (A) = 0 IF NO RANDOM REQUEST. * (A) .NE. 0 IF BUFFER EMPTIED. * * USES CM - CM+4, RI - RI+1. * * CALLS WRP. * * MACROS LDA. EPB SUBR ENTRY/EXIT LDA IR+3,REL ADN TFRR CRD CM LDD CM+3 GET RANDOM REQUEST LPN 77 STD RI SHN 14 LMD CM+4 STD RI+1 ZJN EPBX IF NO RANDOM REQUEST RJM WRP WRITE RANDOM PRU LDN ZERL CRD CM LDD RI SET CURRENT R.I. STD CM LDD RI+1 STD CM+1 LDM CWRI,BA SET NEXT R.I. STD CM+3 LDM CWRI+1,BA STD CM+4 LDA IR+3,REL REWRITE FET RANDOM REQUEST WORD ADN TFRR CWD CM LJM EPBX RETURN FPB SPACE 4,10 ** FPB - FILL PP BUFFER. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT (A) = 0 IF NO RANDOM REQUEST. * * USES CM - CM+4, RI - RI+1. * * CALLS RRP. * * MACROS LDA. * (A) .NE. 0 IF BUFFER FILLED. FPB SUBR ENTRY/EXIT LDA IR+3,REL ADN TFRR CRD CM LDD CM+3 GET RANDOM REQUEST LPN 77 STD RI SHN 14 LMD CM+4 STD RI+1 ZJN FPBX IF NO RANDOM REQUEST RJM GIB GET INITIAL BLOCK LDN ZERL CRD CM LDD RI SET CURRENT R.I. STD CM LDD RI+1 STD CM+1 LDM CWRI,BA SET NEXT R.I. STD CM+3 LDM CWRI+1,BA STD CM+4 LDA IR+3,REL REWRITE FET RANDOM REQUEST WORD ADN TFRR CWD CM LJM FPBX RETURN UIP SPACE 4,10 ** UIP - UPDATE IN POINTER. * ENTRY (IN - IN+1) = IN POINTER. * (IR+3 - IR+4) = FET ADDRESS. * * EXIT FET+2 UPDATED. * * USES CM - CM+4. * UIP SUBR ENTRY/EXIT LDN ZERL CRD CM LDD IN CURRENT POSITION OF IN STD CM+3 LDD IN+1 STD CM+4 LDA IR+3,REL UPDATE FET ADN 2 CWD CM UJN UIPX RETURN SPACE 4,10 *** COMMON DECKS. EOI$ EQU 1 DEFINE EOI - SET END OF INFORMATION SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER *CALL COMPCIB *CALL COMPCOB *CALL COMPRBB *CALL COMPTFM *CALL COMPWBB SPACE 4 ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW SPACE 4,10 TTL TFM - TAPE FILE MANAGER. END