cdc:nos2.source:opl871:tfm
Table of Contents
TFM
Table Of Contents
- [00005] TFM - TAPE FILE MANAGER.
- [00291] TAPE FILE MANAGER EQUIVALENCES.
- [00418] MACRO/MICRO DEFINITIONS.
- [00430] OP= - CONDITIONALLY GENERATE INSTRUCTION.
- [00450] CLEAR - CLEAR PP MEMORY.
- [00472] CMOVE - COMPARE/MEMORY MOVE.
- [00497] COMPARE - COMPARE CHARACTER STRING.
- [00519] EMSG - GENERATE ERROR MESSAGE.
- [00550] ENTRY - DEFINE OVERLAY ENTRY POINT.
- [00573] ERROR - CALL ERROR PROCESSOR.
- [00603] EVAL - EVALUATE PARAMETER PAIRS.
- [00627] EXOVL - EXECUTE OVERLAY.
- [00660] EXSUB - EXECUTE SUBROUTINE.
- [00674] FCN - DEFINE FUNCTION PROCESSOR.
- [00717] LIA - LOAD INDIRECT ADDRESS TO A REGISTER.
- [00735] LDA - LOAD ABSOLUTE/RELATIVE ADDRESS.
- [00773] MMOVE - MEMORY MOVE.
- [00797] MULT3 - MULTIPLY BY 3.
- [00816] MULT4 - MULTIPLY BY 4.
- [00835] OVERLAY - GENERATE OVERLAY CONSTANTS.
- [00863] SAVEP - SAVE CATALOG POINTERS.
- [00888] RESTP - RESTORE CATALOG POINTERS.
- [00914] UDTRD - READ UDT WORD(S).
- [00937] UDTWT - WRITE UDT WORD(S).
- [00959] GLOBAL DIRECT CELL LOCATIONS.
- [00994] ASSEMBLED LIST OF *COMPTFM* ROUTINES.
- [01077] MAIN PROGRAM.
- [01080] MAIN PROGRAM.
- [01163] TFM RESIDENT SUBROUTINES.
- [01165] AFA - GET ABSOLUTE FST ADDRESS.
- [01184] ARF - ATTACH/RETURN FAST ATTACH FILE.
- [01232] CCS - COMPARE CHARACTER STRING.
- [01265] CME - CHECK FOR MASS STORAGE ERROR.
- [01284] CPM - CLEAR CONSECUTIVE PP MEMORY.
- [01311] CTS - CONVERT TO ABSOLUTE TRACK/SECTOR.
- [01349] DPP - DROP PP.
- [01358] EDT - ENTER PACKED DATE/TIME.
- [01377] EML - EXIT TO MAIN LOOP.
- [01386] ERR - CALL ERROR PROCESSING OVERLAY.
- [01429] GIB - GET INITIAL BLOCK.
- [01456] MBP - MOVE BUFFER POINTER.
- [01497] MPM - MOVE CONSECUTIVE PP MEMORY.
- [01531] PFR - PAUSE FOR RELOCATION.
- [01552] RRP - READ RANDOM PRU.
- [01571] WRP - WRITE RANDOM PRU.
- [01596] RESIDENT WORKING STORAGE.
- [01674] OVERLAYABLE SUBROUTINES (LEVEL 1).
- [02025] RESIDENT SUBFUNCTIONS (LEVEL 2).
- [02241] PRESET TAPE FILE MANAGER (LEVEL 2).
- [02243] PRS - PRESET PROGRAM.
- [02413] PRESET SUBROUTINES (LEVEL 2).
- [02415] BPB - BUILD PARAMETER BLOCK.
- [02500] AFC - ACCESS FAMILY TAPE CATALOG.
- [02590] CCP - CHANGE CONTROL POINT.
- [02629] CFS - CHECK FET STATUS.
- [02721] GUO - GET USER OPTIONS FROM UDT.
- [02774] SFN - SET FAMILY NAME.
- [02819] SUL - SET UDT ADDRESS FROM LOCAL FILE.
- [02899] TTB - TRIM TRAILING BLANKS.
- [02996] TME - TAPE MANAGER ERROR PROCESSING.
- [03104] SUBROUTINES.
- [03106] ABT - ABORT USER JOB.
- [03149] BEM - BUILD ERROR MESSAGE.
- [03215] CSZ - CONVERT TRAILING SPACES TO ZEROS.
- [03259] EQM - BUILD EQUIPMENT MESSAGE.
- [03310] FMM - BUILD FAMILY NAME MESSAGE.
- [03328] FNM - BUILD FILENAME MESSAGE.
- [03346] IDM - ISSUE DAYFILE MESSAGE.
- [03360] IEM - ISSUE ERROR MESSAGES.
- [03449] IOE - INFORM OPERATOR OF ERROR.
- [03470] ISM - ISSUE MESSAGE TO SYSTEM CONTROL POINT.
- [03509] LFM - BUILD LOCAL FILE NAME MESSAGE.
- [03551] MVM - MERGE VARIABLE MESSAGE.
- [03607] RAM - BUILD RANDOM ADDRESS MESSAGE.
- [03640] SSE - SET SYSTEM EVENT.
- [03675] UEP - USER ERROR PROCESSING.
- [03750] UNM - BUILD USERNAME MESSAGE.
- [03767] VSM - BUILD VSN MESSAGE.
- [03791] ERROR MESSAGES.
- [04011] SUBROUTINES.
- [04013] CFB - CHECK FILE BUSY.
- [04080] CSV - CHECK SCRATCH VOLUME.
- [04158] RLV - RELEASE CATALOG ENTRIES AND VSNS.
- [04280] RSV - RESERVE CATALOG ENTRIES AND VSNS.
- [04397] RVB - RESTORE VSN BUFFERS.
- [04451] SCP - SET CATALOG BUFFER POINTERS
- [04490] CRD - CHECK RELEASE DATE.
- [04552] PRESET.
- [04554] PRS - PRESET FOR *ISF*.
- [04630] SAM - SEARCH FOR ACTIVE MACHINES.
- [05041] SUBROUTINES.
- [05065] PRESET.
- [05067] PRS - PRESET FOR SUBFUNCTION RFAS.
- [05124] SMF - SET MULTI-FILE PARAMETERS.
- [05249] SUBROUTINES.
- [05251] VSI - VERIFY SET IDENTIFIER
- [05305] PRESET.
- [05307] PRS - PRESET.
- [05591] SUBROUTINES.
- [05593] PEC - PURGE EXCESS CATALOG ENTRIES.
- [05664] DCE - DELETE EXCESS CATALOG ENTRIES
- [05782] PRESET.
- [05784] PRS - PRESET FOR SUBFUNCTION MFAS.
- [05879] VSI - VERIFY SET IDENTIFIER.
- [05924] PMF - POSITION MULTI-FILE.
- [06085] SUBROUTINES.
- [06087] SFV - SEARCH FOR VSN
- [06134] PRESET SUBROUTINES.
- [06136] CDB - CONVERT DECIMAL DISPLAY CODE TO BINARY.
- [06207] ELA - EXTENDED LABELS ADDRESS PROCESSING.
- [06262] PRS - PRESET FOR SUBFUNCTION PMFS.
- [06488] SUBROUTINES.
- [06490] CPC - CHECK TO PURGE CATALOGS.
- [06519] CTC - COMPLETE *MAGNET* *TFM* CALL.
- [06541] FCE - FIND CATALOG ENTRY.
- [06633] SBS - SET BUSY STATUS.
- [06704] UCT - UPDATE CATALOG ENTRY FROM TAPE LABEL.
- [06773] VCE - VERIFY CATALOG ENTRY.
- [06872] ECIS - ENTER CATALOG IMAGE.
- [07013] SUBROUTINES.
- [07015] CAC - CHANGE ALTERNATE CATALOG LIST ATTRIBUTE
- [07042] CCT - CHANGE CATEGORY TYPE.
- [07066] CFM - CHANGE FILE MODE.
- [07089] DCE - BUILD DEFAULT CATALOG IMAGE.
- [07261] ASRS - ASSIGN SCRATCH REEL.
- [07345] AVSS - ADVANCE VSN FILE.
- [07449] CSAS - COMPLETE SCRATCH ASSIGNMENT.
- [07563] CVS - COMPLETE VSN SWITCH.
- [07657] GNSS - GET NEXT SCRATCH.
- [07692] SUBROUTINES.
- [07721] PRESET.
- [07723] PRS - PRESET FOR FUNCTION AVSS.
- [07782] SUBROUTINES (OVERLAYED BY BUF2).
- [07965] RND - READ NEXT DEMAND FILE SECTOR.
- [08012] GSP - SEARCH GLOBAL SCRATCH POOL(S).
- [08116] SUBROUTINES.
- [08118] LSV - LOCATE SCRATCH VOLUME.
- [08156] PRP - PRESET RANDOM PROCESSORS.
- [08175] ROC - RESET ORIGINAL CATALOG.
- [08205] SAC - SEARCH FOR ALTERNATE CATALOG.
- [08421] SUBROUTINES.
- [08674] SUBROUTINES.
- [08676] CCA - CHECK CATALOG ADMISSION.
- [08753] FAS - FULL ADMIT SEARCH.
- [08840] FCS - FULL CATALOG SEARCH.
- [09007] PTC - PROCESS TAPE CATALOG.
- [09100] SCA - SET CONTINUATION ADDRESS.
- [09126] SAS - SELECTIVE ADMIT SEARCH.
- [09183] SCS - SELECTIVE CATALOG SEARCH.
- [09286] WDB - WRITE DATA TO BUFFER.
- [09326] PRESET.
- [09328] PRS - PRESET FOR *AUD* AND *GVS*.
- [09534] SUBROUTINES.
- [09536] CAC - CHANGE ALTERNATE CATALOG LIST ATTRIBUTE
- [09566] CCT - CHANGE CATEGORY TYPE.
- [09593] CEF - CLEAR ERROR FLAG.
- [09609] CFM - CHANGE FILE MODE.
- [09635] CPN - CHANGE CHARGE AND PROJECT.
- [09662] NFI - CHANGE NEW FILE NAME.
- [09681] PWD - CHANGE PASSWORD.
- [09703] UCW - CHANGE USER CONTROL WORD .
- [09745] RAPS - *RESEX* ABORT PROCESSING.
- [10033] SUBROUTINES.
- [10055] PRESET.
- [10057] PRS - PRESET FOR FUNCTION RAPS.
- [10359] SUBROUTINES.
- [10361] RVU - RESERVE VOLUME TO USER
- [10380] SES - SET EOI STATUS.
- [10402] SFV - SEARCH FOR VSN
- [10452] PRESET.
- [10454] PRS - PRESET FOR FUNCTION RTFS.
- [10835] SUBROUTINES.
- [11067] SUBROUTINES.
- [11264] SUBROUTINES.
- [11266] FCB - FILL CATALOG BUFFER.
- [11422] SUBROUTINES.
- [11424] EPB - EMPTY PP BUFFER.
- [11465] FPB - FILL PP BUFFER.
- [11506] UIP - UPDATE IN POINTER.
Source Code
- TFM.txt
- 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
cdc/nos2.source/opl871/tfm.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator