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
  1. IDENT TFM,TFM
  2. PERIPH J
  3. BASE MIXED
  4. SST PUCW
  5. TITLE TFM - TAPE FILE MANAGER.
  6. *COMMENT TFM - TAPE FILE MANAGER.
  7. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  8. TFM SPACE 4,10
  9. ***** TFM - TAPE FILE MANAGER.
  10. *
  11. * J.P. MOORE. 81/04/01.
  12. SPACE 4
  13. ***** *TFM* HAS SUPERVISORY CONTROL OVER THE TMS TAPE CATALOGS,
  14. * AND DIRECTS PROCESSING OF TAPE ASSIGNMENTS AND FINAL
  15. * DISPOSITION. IT ACCEPTS PROCESSING REQUESTS FROM
  16. * RESEX, MAGNET, TFSP AND THE TMS COMMAND
  17. * PROCESSOR, TFILES. TFM INTERFACES WITH THE EXTERNAL
  18. * REQUESTS THROUGH FETS, AND MAGNETS UNIT DESCRIPTOR TABLE
  19. * (UDT).
  20. *
  21. * TFM IS A GENERAL PURPOSE FUNCTION PROCESSOR FOR THE TAPE
  22. * FILE MANAGER. TO ADD A NEW FUNCTION TO *TFM* AN
  23. * ENTRY IS MADE IN THE FUNCTION TABLE THAT POINTS TO THE
  24. * APPROPRIATE SET OF CODE. THE FUNCTION TABLE IS NOT ORDER
  25. * DEPENDENT. OVERLAYS ARE AUTOMATICALLY DEFINED BY THE OVERLAY
  26. * MACRO AND THE FUNCTIONS ENTRY POINT BY THE ENTRY MACRO.
  27. * NORMAL RETURN FROM A FUNCTION IS THROUGH A RETURN JUMP
  28. * FROM THE MAIN LOOP. ABNORMAL RETURN IS THROUGH THE ERROR
  29. * PROCESSING OVERLAY.
  30. *
  31. * TFM IS A NON-DEDICATED FUNCTION PROCESSOR. ALL TFM
  32. * REQUESTS ARE VALIDATED AGAINST CRITERIA WHICH IS
  33. * UNIQUE TO THE FUNCTION BEING CALLED. IF THIS CRITERIA
  34. * IS NOT MET, THE CALLING PROGRAM WILL BE ABORTED AS
  35. * A *TFM INCORRECT REQUEST.*.
  36. *
  37. * TFM IS THE ONLY PROGRAM WHICH HAS DIRECT ACCESS TO THE
  38. * TAPE FILE CATALOGS. CREATION, UPDATE, AND INQUIRY
  39. * REQUESTS ARE MADE TO TFM, AND ANY RETURNS ARE MADE
  40. * THROUGH FETS, BUFFERS, AND/OR THE UDT TABLE IN
  41. * MAGNET.
  42. *
  43. * THE TAPE FILE MANAGER CONSISTS OF FIVE MAIN AREAS
  44. * WHICH ARE STRUCTURED TO MAKE OPTIMAL USE OF AVAILABLE
  45. * PPU MEMORY AND FOR EASE OF MAINTENANCE. THESE ARE-
  46. *
  47. * 1. RESIDENT ROUTINES.
  48. * 2. OVERLAYABLE PRESET.
  49. * 3. PROCESSING OVERLAYS.
  50. * 4. CONDITIONALLY ASSEMBLED SUBROUTINES.
  51. * 5. I/O BUFFER AREAS.
  52. *
  53. *
  54. * RESIDENT ROUTINES CONSIST OF THE MAIN LOOP AND
  55. * SUBROUTINES WHICH ARE LOADED WITH THE PRIMARY
  56. * LOAD AND ARE NOT OVERLAYED AT ANY TIME. THESE
  57. * ROUTINES CAN BE USED BY ALL SUBORDINATE SUB-
  58. * ROUTINES AND OVERLAYS.
  59. *
  60. * OVERLAYABLE PRESET CONSISTS OF THE RA+1 REQUEST
  61. * PROCESSORS, RESIDENT SUBFUNCTION PROCESSORS,
  62. * OVERLAYABLE SUBROUTINES, PRESET, AND PRESET SUB-
  63. * ROUTINES. THIS CODE IS ARRANGED IN SECTIONS,
  64. * DEFINED BY THE OVERLAY LOAD ADDRESS. THE RESIDENT
  65. * SUBFUNCTION PROCESSORS DO NOT REQUIRE A OVERLAY
  66. * LOAD TO NORMALLY COMPLETE, BUT ERROR CONDITIONS
  67. * WILL CAUSE PART OF THIS CODE TO BE OVERLAYED BY
  68. * THE ERROR PROCESSOR.
  69. *
  70. * PROCESSING OVERLAYS ARE THE SUBFUNCTION PROCESSORS
  71. * WHICH ARE NOT AVAILABLE IN THE PRIMARY LOAD. THESE
  72. * OVERLAYS ARE AUTOMATICALLY GENERATED BY THE OVERLAY
  73. * MACRO AND ARE QUALIFIED BY THE THREE CHARACTER
  74. * OVERLAY NAME. EACH OVERLAY CAN DEFINE DIRECT CELLS
  75. * S1 - S3+4 FOR ITS OWN PURPOSES, AS THESE CELLS ARE
  76. * NOT USED BY ANY OTHER ROUTINES.
  77. *
  78. * CONDITIONALLY ASSEMBLED SUBROUTINES ARE CONTAINED
  79. * IN *COMPTFM*. THIS IS A COLLECTION OF SUBROUTINES
  80. * THAT OVERLAYABLE PRESET OR ANY OVERLAY CAN USE.
  81. * ONLY THE SUBROUTINES REQUESTED BY DEFINING XXX$
  82. * (XXX = SUBROUTINE NAME) WILL BE ASSEMBLED. BY
  83. * DEFAULT THE LISTING OF THIS COMMON DECK IS TURNED
  84. * OFF. TO OBTAIN A ASSEMBLED LIST OF *COMPTFM*
  85. * DEFINE LST$.
  86. *
  87. * THERE ARE THREE I/O BUFFERS DEFINED. IN SOME CASES
  88. * THEY ARE OVERLAYED BUT IN GENERAL EXTREME CARE MUST
  89. * BE TAKEN BEFORE USING ANY OF THE BUFFER AREAS FOR
  90. * CODE. SOME TFM SUBROUTINES RANDOMLY SELECT BUFFER
  91. * SPACE.
  92. *
  93. * DIRECT CELLS HAVE BEEN ARRANGED IN SUCH A WAY AS TO
  94. * ALLOW 15D CONTIGUOUS LOCATIONS (THREE CM WORDS) TO
  95. * BE UNIQUELY DEFINED BY EACH OF THE PROCESSING
  96. * OVERLAYS. THE REMAINING DIRECT CELLS ARE COMMON TO
  97. * TFM AS A WHOLE.
  98. SPACE 4,10
  99. *** TFM INPUT REGISTER CALL FORMAT -
  100. *
  101. *T, 18/ *TFM*, 6/40B, 12/FC, 6/0 , 18/FA
  102. *
  103. * FC = FUNCTION CODE.
  104. *
  105. * FA = FUNCTION PARAMETER ADDRESS RELATIVE TO
  106. * THE CONTROL POINT (SEE *COMSTFM FOR FORMATS).
  107. *
  108. * CALLS TO TFM ARE MADE WITH THE AUTO-RECALL FLAG SET
  109. * EXCEPT WHEN CALLED BY *MAGNET*.
  110. SPACE 4,10
  111. *** DAYFILE MESSAGES.
  112. *
  113. * (VSN) BUSY.
  114. * THE VSN REQUESTED IS CURRENTLY BUSY.
  115. *
  116. * (LFN) NOT FOUND.
  117. * THE LOCAL FILE NAME REQUESTED IS NOT
  118. * IN THE FNT OR IS NOT ASSIGNED TO THE JOB.
  119. *
  120. * (FILENAME) NOT FOUND.
  121. * THE FILENAME SPECIFIED WHEN ATTEMPTING
  122. * SYMBOLIC ACCESS COULD NOT BE FOUND IN
  123. * THE USERS CATALOG.
  124. *
  125. * (VSN) NOT FOUND.
  126. * THE VSN SPECIFIED WHEN ATTEMPTING VSN
  127. * ACCESS TO A TAPE FILE COULD NOT BE
  128. * FOUND OR WAS NOT ASSIGNED TO THE USER.
  129. *
  130. * (USERNAME) NOT FOUND.
  131. * THE USERNAME IS NOT KNOWN TO TMS.
  132. *
  133. * (LFN) NOT ON MAGNETIC TAPE.
  134. * THE LOCAL FILE REQUESTED IS NOT A
  135. * MAGNETIC TAPE FILE.
  136. *
  137. * (VSN) ALREADY RESERVED.
  138. * ATTEMPT TO RESERVE A VSN THAT IS
  139. * ALREADY RESERVED
  140. *
  141. * (FILENAME) ALREADY RESERVED.
  142. * ATTEMPT TO RESERVE A FILENAME THAT
  143. * IS ALREADY RESERVED TO THE USER.
  144. *
  145. * TFM ABORTED.
  146. * ABNORMAL TERMINATION OF THE TAPE FILE
  147. * MANAGER
  148. *
  149. * TFM INCORRECT REQUEST.
  150. * TFM DETECTED A ERROR IN THE REQUEST.
  151. *
  152. * TMS DISABLED.
  153. * THE TAPE MANAGER IS DISABLED.
  154. *
  155. * MAGNET NOT ACTIVE.
  156. * ATTEMPT TO COMMUNICATED WITH THE MAGNETIC
  157. * TAPE EXECUTIVE WHICH IS CURRENTLY NOT IN
  158. * THE SYSTEM.
  159. *
  160. * ERRONEOUS BUFFER POINTER.
  161. * TFM INTERNAL ERROR.
  162. *
  163. * TMS UTILITY ACTIVE.
  164. * THE TMS UTILITY (TFSP) IS CURRENTLY
  165. * ACTIVE. NO USER ACTIONS ARE POSSIBLE.
  166. *
  167. * BUFFER ARGUMENT ERROR.
  168. * A ERROR WAS DETECTED WHEN VALIDATING
  169. * THE FET.
  170. *
  171. * ERROR IN INDEX DATA.
  172. * A DATA ERROR WAS DISCOVERED IN EITHER
  173. * A VSN OR USERNAME INDEX.
  174. *
  175. * ERROR IN CATALOG DATA.
  176. * A DATA ERROR WAS DISCOVERED IN THE TAPE
  177. * CATALOG ENTRY.
  178. *
  179. * ERROR IN ADMIT DATA.
  180. * A DATA ERROR WAS DISCOVERED IN A ADMIT
  181. * ENTRY FOR THE FILE.
  182. *
  183. * (NNNNNN) RANDOM ADDRESS ERROR.
  184. * ATTEMPT TO WRITE INTO THE SYSTEM SECTOR
  185. * OR BEYOND THE EOI IN THE TAPE CATALOG.
  186. *
  187. * EQXX, DNYY, MASS STORAGE ERROR.
  188. * A UNRECOVERABLE READ/WRITE ERROR HAS
  189. * OCCURRED.
  190. *
  191. * (FAMILY) TAPE CATALOG NOT FOUND.
  192. * NO TAPE CATALOG COULD BE FOUND
  193. * FOR THIS FAMILY.
  194. *
  195. * EMPTY CATALOG.
  196. * NO CATALOG ENTRIES COULD BE FOUND
  197. * FOR THIS USER ON A AUDIT REQUEST.
  198. *
  199. * CATALOG LINKAGE ERROR.
  200. * THE CATALOG LINKAGE HAS BEEN BROKEN.
  201. *
  202. * I/O SEQUENCE ERROR ON CATALOG.
  203. * THE LOCAL FILE CATALOG WAS BUSY.
  204. *
  205. * EOI NOT ON TRACK CHAIN.
  206. * THE EOI ON THE TAPE CATALOG COULD
  207. * NOT BE FOUND.
  208. *
  209. * NO ADMITS.
  210. * NO ADMIT ENTRIES COULD BE FOUND ON
  211. * A AUDIT REQUEST.
  212. *
  213. * TMS PROCESSING INHIBITED.
  214. * TMS CONTROL OVER TAPE FILES IS INHIBITED
  215. * BECAUSE THIS IS A SYSTEM ORIGIN JOB OR
  216. * AS A USER SPECIFIED REQUEST.
  217. *
  218. * ACTIVITY SUSPENDED.
  219. * TMS ACTIVITY IS TEMPORARILY SUSPENDED.
  220. *
  221. * (FAMILY) TAPE CATALOG ERROR.
  222. * THERE IS A FATAL CATALOG ERROR OUTSTANDING
  223. * FOR THIS FAMILY.
  224. *
  225. * WAIT SCRATCH ASSIGNMENT.
  226. * NO SCRATCH TAPES ARE CURRENTLY AVAILABLE
  227. * TO SATISFY THIS REQUEST.
  228. *
  229. * LINKED CATALOG NOT ACCESSIBLE.
  230. * THE LINKED TAPE CATALOG CANNOT BE ACCESSED FROM THE
  231. * CURRENT FAMILY.
  232. SPACE 4,10
  233. *** ACCOUNT FILE MESSAGES.
  234. *
  235. * SDAU, FAMNAME, USERNAM, FVSNXX, VSNXXX.
  236. * RESERVE
  237. *
  238. * SDCR, FAMNAME, USERNAM, FVSNXX.
  239. * RELEASE.
  240. SPACE 4,10
  241. *** ASSEMBLY OPTIONS.
  242.  
  243.  
  244. IRA$ EQU 1 DEFINE RANDOM PROCESSOR INITIALIZATION
  245. LST$ EQU 1 DEFINE *COMPTFM* LIST OPTION
  246. *TRP$ EQU 1 DEFINE TRAP ON ERROR CODES
  247. WEI$ EQU 1 DEFINE EOI BUFFER SPECIFIED
  248. QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS
  249. SPACE 4,10
  250. *** COMMON DECKS (SYMBOLS/MACROS)
  251. *
  252.  
  253.  
  254. *CALL COMPMAC
  255. QUAL COMSCPS
  256. *CALL COMSCPS
  257. QUAL *
  258. *CALL COMSEJT
  259. *CALL COMSMSP
  260. *CALL COMSPIM
  261. *CALL COMSWEI
  262. QUAL EVT
  263. *CALL COMSEVT
  264. QUAL PFM
  265. *CALL COMSPFM
  266. QUAL PRD
  267. *CALL COMSPRD
  268. QUAL SSJ
  269. *CALL COMSSSJ
  270. QUAL UAM
  271. QUAL
  272. *CALL COMSSSD
  273. SPACE 4,10
  274. *** MAGNET, RESEX, TFM SYMBOL DEFINITIONS.
  275. *
  276.  
  277.  
  278. LIST X
  279. QUAL MTX
  280. *CALL COMSMTX
  281. QUAL
  282. *CALL COMSTFM
  283. LIST *
  284. SPACE 4,10
  285. * VERIFY COMPATIBILITY OF TMS DEFINITIONS IN COMMON DECKS.
  286.  
  287.  
  288. QUAL TFM
  289. *CALL COMSTFM
  290. QUAL *
  291. TITLE TAPE FILE MANAGER EQUIVALENCES.
  292. SPACE 4,10
  293. *** FET PARAMETER BLOCK.
  294. *
  295. * THE FOLLOWING SYMBOLS DEFINE THE FET
  296. * PARAMETERS RELATIVE TO THE FIRST WORD
  297. * OF THE PARAMETER BLOCK.
  298.  
  299.  
  300. FBES EQU TFES-TFFP EXTERNAL VSN
  301. FBTD EQU TFTD-TFFP TAPE DESCRIPTORS
  302. FBVS EQU TFVS-TFFP INTERNAL VSN
  303. FBFI EQU TFID-TFFP FILE IDENTIFIER
  304. FBSI EQU TFSI-TFFP SET I.D., VERSION, GENERATION
  305. FBNI EQU TFNI-TFFP FILE IDENTIFIER (NEW)
  306. FBCR EQU TFCR-TFFP CREATION/RETENTION DATE
  307. FBAC EQU TFCE-TFFP CE, AN PARAMETERS
  308. FBUN EQU TFUN-TFFP ALTERNATE USER NAME
  309. FBUC EQU TFUC-TFFP USER CONTROL WORD
  310. FBPW EQU TFPW-TFFP FILE PASSWORD
  311. SPACE 4,10
  312. *** BUFFER CONTROL WORD (PP BYTE POSITIONS)
  313.  
  314.  
  315. CWSC EQU 0 SECTOR COUNT
  316. CWWC EQU 1 SECTOR WORD COUNT
  317. CWRT EQU BWRT*5+0+2 RECORD TYPE,LEVEL NUMBER
  318. CWUW EQU BWRT*5+1+2 UNUSED WORD COUNT (CM WORDS)
  319. CWEL EQU BWRT*5+2+2 DATA ENTRY LENGTH IN CM WORDS
  320. CWNE EQU BWRT*5+3+2 NUMBER OF DATA ENTRIES
  321. CWFE EQU BWRT*5+4+2 FIRST DATA WORD
  322. CWDT EQU BWDT*5+2+2 LAST MODIFICATION DATE/TIME (PACKED)
  323. CWBI EQU BWRI*5+1+2 RANDOM INDEX TO PREVIOUS BLOCK
  324. CWRI EQU BWRI*5+3+2 RANDOM INDEX TO NEXT BLOCK
  325. CWUN EQU BWUN*5+0+2 CATALOG/ADMIT/SYSTEM BLOCK USERNAME
  326. CWMX EQU BWUN*5+3+2 UTILITY MACHINE INDEX (SYSTEM BLOCK)
  327. SPACE 4,10
  328. *** SYSTEM BLOCK LOCATIONS (PP BYTE POSITIONS)
  329.  
  330. SBFN EQU TMFM*5+0 FAMILY NAME
  331. SBST EQU TMFM*5+3 CATALOG STATUS
  332. SBID EQU TMID*5+0 MACHINE I.D.
  333. SBHP EQU TMID*5+3 HOLE POINTER
  334. SBTC EQU TMCT*5+1 TRACK COUNT
  335. SBPC EQU TMCT*5+2 SECTOR (PRU) COUNT
  336. SBSM EQU TMSM*5+0 FIRST *MT*/*NT* SCRATCH VOLUME
  337. SBCM EQU TMSM*5+3 *MT*/*NT* SCRATCH COUNT
  338. SBLF EQU TMLF*5+0 LINKED FAMILY NAME
  339. SBPF EQU TMPA*5+0 PERMITTED ALTERNATE FAMILY NAMES
  340. SBSC EQU TMSC*5+0 FIRST *CT* SCRATCH VOLUME
  341. SBCC EQU TMSC*5+3 *CT* SCRATCH COUNT
  342. SBSA EQU TMSA*5+0 FIRST *AT* SCRATCH VOLUME
  343. SBCA EQU TMSA*5+3 *AT* SCRATCH COUNT
  344. SPACE 4,10
  345. *** VSN ENTRY LOCATIONS (PP BYTE POSITIONS)
  346.  
  347.  
  348. VBES EQU VEES*5+0 EXTERNAL VSN
  349. VBCI EQU VEES*5+3 CATALOG RANDOM INDEX
  350. VBVS EQU VEVS*5+0 INTERNAL VSN
  351. VBRC EQU VEVS*5+3 REEL COUNT (UPPER 6 BITS)
  352. VBST EQU VEVS*5+3 VSN STATUS (LOWER 18 BITS)
  353. VBFV EQU VEFV*5+0 FIRST VSN OF SET
  354. VBMX EQU VEFV*5+3 VSN BUSY MACHINE INDEX
  355. VBJS EQU VEFV*5+4 EJT ORDINAL
  356. VBNV EQU VENV*5+0 NEXT VSN OF SET
  357. VBUC EQU VENV*5+3 USAGE COUNTER (UPPER 6 BITS)
  358. VBRD EQU VENV*5+3 RELEASE DATE (LOWER 18 BITS)
  359. SPACE 4,10
  360. *** USERNAME INDEX LOCATIONS (PP BYTE POSITIONS)
  361.  
  362.  
  363. UBUN EQU 0 USERNAME
  364. UBCI EQU UBUN+3 CATALOG INDEX (18 BITS)
  365. SPACE 4,10
  366. *** CATALOG ENTRY LOCATIONS (PP BYTE POSITIONS)
  367.  
  368. CBLI EQU CELI*5+0 FILE NAME (102 BITS)
  369. CBST EQU CEST*5+4 STATUS FLAGS (12 BITS)
  370. CBES EQU CEES*5+0 EXTERNAL SERIAL NUMBER (36 BITS)
  371. CBRC EQU CEES*5+4 REEL COUNT (12 BITS)
  372. CBTD EQU CETD*5+0 TAPE FILE DESCRIPTORS (60 BITS)
  373. CBFN EQU CETD*5+2 TAPE FORMAT AND NOISE SIZE
  374. CBSZ EQU CETD*5+3 BLOCK SIZE (24 BITS)
  375. CBVS EQU CEVS*5+0 VOLUME SERIAL NUMBER (36 BITS)
  376. CBFA EQU CEVS*5+3 FILE ACCESSIBILITY (6 BITS)
  377. CBSN EQU CEVS*5+3 SECTION NUMBER (18 BITS)
  378. CBPI EQU CEPI*5+0 PHYSICAL FILE I.D. (102 BITS)
  379. CBQN EQU CESQ*5+3 FILE SEQUENCE NUMBER (18 BITS)
  380. CBSI EQU CESI*5+0 SET IDENTIFIER (36 BITS)
  381. CBVN EQU CESI*5+3 VERSION NUMBER (9 BITS)
  382. CBGN EQU CESI*5+3 GENERATION NUMBER (15 BITS)
  383. CBLD EQU CERC*5+0 LABEL RETENTION/CREATION DATE (60 BITS)
  384. CBPW EQU CEPW*5+0 PASSWORD (42 BITS)
  385. CBCT EQU CEPW*5+4 CATAGORY TYPE (6 BITS)
  386. CBAM EQU CEPW*5+4 ACCESS MODE (6 BITS)
  387. CBNC EQU CECD*5+0 RANDOM INDEX TO CATALOG
  388. CBCD EQU CECD*5+2 CREATION DATE/TIME (36 BITS)
  389. CBAE EQU CEMD*5+0 RANDOM INDEX TO FIRST ADMIT BLOCK
  390. CBMD EQU CEMD*5+2 MODIFICATION DATE/TIME (36 BITS)
  391. CBAC EQU CEAD*5+0 ACCESS COUNT (24 BITS)
  392. CBAD EQU CEAD*5+2 LAST ACCESS DATE/TIME (36 BITS)
  393. CBUC EQU CEUC*5+0 USER CONTROL WORD (60 BITS)
  394. CBCN EQU CECN*5+0 CHARGE NUMBER (60 BITS)
  395. CBPN EQU CEPN*5+0 PROJECT NUMBER (120 BITS)
  396. SPACE 4,10
  397. *** ADMIT ENTRY LOCATIONS (PP BYTE POSITIONS).
  398.  
  399. ABUN EQU AEUN*5+0 ALTERNATE USER NAME (42 BITS)
  400. ABAN EQU AEAC*5+0 ACCESS COUNT (18 BITS)
  401. ABAM EQU AEAC*5+1 ACCESS MODE (6 BITS)
  402. ABDT EQU AEAC*5+2 LAST ACCESS DATE/TIME (36 BITS)
  403. SPACE 4,10
  404. *** TFM EVENT SKELETONS.
  405.  
  406.  
  407. ESVB EQU /EVT/TVBE VSN BUSY OR WAIT SCRATCH
  408. ESUA EQU /EVT/TUIE TMS UTILITY INTERLOCK
  409. ESMR EQU /EVT/TRME ROLLOUT FOR MAGNET
  410. ESVR EQU /EVT/VSNE VSN RESOURCE
  411. SPACE 4,10
  412. *** BUFFER ALLOCATION.
  413.  
  414.  
  415. BUF0 EQU BFMS MASS STORAGE I/O BUFFER
  416. BUF1 EQU BUF0-502 MASS STORAGE I/O BUFFER
  417. BUF2 EQU BUF1-502 MASS STORAGE I/O BUFFER
  418. TITLE MACRO/MICRO DEFINITIONS.
  419. * OVERLAY CONTROL.
  420.  
  421.  
  422. PREFIX MICRO 1,, 5T BASE OVERLAY NAME
  423. .A. SET 0 SCRATCH
  424. .B. SET 0 SCRATCH
  425. .X. SET 0 OVERLAY GENERATION COUNT
  426. .Y. MICRO 1,, TFM GENERATED OVERLAY NAME
  427. .Z. SET 0 FUNCTION TABLE GENERATION
  428. NOREF .A.,.B.
  429. OP= SPACE 4,10
  430. ** OP= - CONDITIONALLY GENERATE INSTRUCTION.
  431. *
  432. * OP= P1,P2,P3
  433. *
  434. * ENTRY P1 = ARGUMENT.
  435. * P2 = INSTRUCTION IF ARGUMENT .LT. 100B.
  436. * P3 = INSTRUCTION IF ARGUMENT .GE. 100B.
  437.  
  438.  
  439. PURGMAC OP=
  440.  
  441. OP= MACRO P1,P2,P3
  442. IF DEF,P1,3
  443. IFLT P1,100B
  444. P2 P1
  445. ELSE
  446. P3 P1
  447. ENDIF
  448. ENDM
  449. CLEAR SPACE 4,10
  450. ** CLEAR - CLEAR PP MEMORY.
  451. *
  452. * CLEAR P1,P2,P3,P4
  453. *
  454. * ENTRY P1 = STARTING WORD IN PPU TO BE SET TO ZERO.
  455. * P2 = CELL CONTAINING INDEX TO P1.
  456. * P3 = NUMBER OF CHARACTERS (HALF BYTES) TO
  457. * CLEAR.
  458. * P4 = CELL CONTAINING NUMBER OF CHARACTERS TO CLEAR.
  459. *
  460. * CALLS CPM.
  461.  
  462.  
  463. PURGMAC CLEAR
  464.  
  465. CLEAR MACRO P1,P2,P3,P4
  466. MACREF CLEAR
  467. EVAL P1,P2,T1
  468. EVAL P3,P4
  469. RJM CPM
  470. ENDM
  471. CMOVE SPACE 4,15
  472. ** CMOVE - COMPARE/MEMORY MOVE.
  473. *
  474. * CMOVE P1,P2,P3,P4,P5,P6
  475. *
  476. * ENTRY P1 = FWA OF MOVE.
  477. * P2 = MODIFIER TO P1.
  478. * P3 = FWA OF DESTINATION.
  479. * P4 = MODIFIER TO P3.
  480. * P5 = MOVE COUNT IN PP BYTES.
  481. * P6 = MOVE COUNT IN PP BYTES, STORED IN MEMORY.
  482. *
  483. * CALLS CMV.
  484.  
  485.  
  486. PURGMAC CMOVE
  487.  
  488. CMOVE MACRO P1,P2,P3,P4,P5,P6
  489. MACREF CMOVE
  490. EVAL P1,P2,T1
  491. EVAL P3,P4,T2
  492. EVAL P5,P6
  493. RJM CMV
  494. CMV$ EQU 1 DEFINE CMV - COMPARE/MOVE PP BYTE STRING
  495. ENDM
  496. COMPARE SPACE 4,10
  497. ** COMPARE - COMPARE CHARACTER STRING.
  498. *
  499. * COMPARE P1,P2,P3,P4,P5,P6
  500. *
  501. * ENTRY P1 = ADDRESS OF STRING 1.
  502. * P2 = CELL CONTAINING INDEX.
  503. * P3 = ADDRESS OF STRING 2.
  504. * P4 = STRING 2 MODIFIER.
  505. * P5 = LENGTH OF COMPARE.
  506. * P6 = CELL CONTAINING LENGTH OF COMPARE.
  507.  
  508.  
  509. PURGMAC COMPARE
  510.  
  511. COMPARE MACRO P1,P2,P3,P4,P5,P6
  512. MACREF COMPARE
  513. EVAL P1,P2,T1
  514. EVAL P3,P4,T2
  515. EVAL P5,P6
  516. RJM CCS
  517. ENDM
  518. EMSG SPACE 4,10
  519. ** EMSG - GENERATE ERROR MESSAGE.
  520. *
  521. *
  522. * EMSG P1,P2,(P3)
  523. *
  524. * ENTRY (P1) = ERROR MESSAGE TYPE AND PROCESSING DISPOSITION.
  525. * (P2) = CONTROL WORD FOR MESSAGE DESTINATION.
  526. * (P3) = ERROR MESSAGE.
  527.  
  528.  
  529. PURGMAC EMSG
  530.  
  531. MACRO EMSG,P1,P2,P3,P4
  532. MACREF EMSG
  533. IFC EQ,*P2*BEGIN*,3
  534. P1 BSS 0
  535. QUAL P1
  536. SKIP
  537. IFC EQ,*P2*END*,4
  538. QUAL *
  539. LOC *O
  540. P1_L EQU *-P1
  541. SKIP
  542. .A. MICRO 1,,$P4$
  543. .B. MICCNT .A.
  544. ERRNG 40D-.B. DAYFILE MESSAGE TOO LONG
  545. LOC P1
  546. CON P2,P3,=C$P4$
  547. ENDIF
  548. ENDM
  549. ENTRY SPACE 4,10
  550. ** ENTRY - DEFINE OVERLAY ENTRY POINT.
  551. *
  552. * P1 ENTRY
  553. *
  554. * ENTRY P1 = ENTRY/EXIT POINT FOR ROUTINE.
  555.  
  556.  
  557. PURGMAC ENTRY
  558.  
  559. MACRO ENTRY,P1
  560. MACREF ENTRY
  561. P1_X LJP *
  562. IFEQ .X.,0
  563. P1 EQU *-1
  564. ELSE
  565. IFGT *,PPFW,4
  566. QUAL
  567. .A. MICRO 3,1, ".Y."
  568. P1 EQU 1R".A."*10000+*-1
  569. QUAL ".Y."
  570. ENDIF
  571. ENDM
  572. ERROR SPACE 4,10
  573. ** ERROR - CALL ERROR PROCESSOR.
  574. *
  575. * ERROR P1
  576. *
  577. * ENTRY P1 = ERROR CODE MNEMONIC.
  578. * IF P1 IS NOT SPECIFIED, THE ACCUMULATOR ALREADY
  579. * CONTAINS THE ERROR CODE MNEMONIC.
  580. *
  581. * EXIT (A) = ERROR CODE.
  582. *
  583. * CALLS ERR.
  584.  
  585.  
  586. PURGMAC ERROR
  587.  
  588. .ERRJP SET 0 INITIALIZE POINTER TO *RJM ERR*
  589.  
  590. ERROR MACRO P1
  591. MACREF ERROR
  592. IFC NE,*P1**,1
  593. OP= /EMSG/P1,LDN,LDC
  594. .1 IFLT *-.ERRJP,40B
  595. UJN .ERRJP GO TO *ERR* CALL
  596. .ERRJP SET *-1
  597. .1 ELSE
  598. .ERRJP SET *
  599. RJM ERR
  600. .1 ENDIF
  601. ENDM
  602. EVAL SPACE 4,10
  603. ** EVAL - EVALUATE PARAMETER PAIRS.
  604. *
  605. * EVAL P1,P2,P3
  606. *
  607. * ENTRY P1 = CONSTANT.
  608. * P2 = BASE ADDRESS.
  609. * P3 = ADDRESS RESULT TO BE STORED IN.
  610.  
  611.  
  612. PURGMAC EVAL
  613.  
  614. EVAL MACRO P1,P2,P3
  615. IFC NE,?_P2_??,5
  616. OP= P2,LDD,LDM
  617. IFEQ P1,0,1
  618. SKIP 4
  619. OP= P1,ADN,ADC
  620. SKIP 2
  621. IFC NE,?_P1_??,3
  622. OP= P1,LDN,LDC
  623. IFC NE,?_P3_??,1
  624. OP= P3,STD,STM
  625. ENDM
  626. EXOVL SPACE 4,10
  627. ** EXOVL - EXECUTE OVERLAY.
  628. *
  629. * EXOVL P1
  630. *
  631. * ENTRY P1 = PROCESSOR ADDRESS.
  632.  
  633.  
  634. PURGMAC EXOVL
  635.  
  636. .EXOVL SET 0 INITIALIZE POINTER TO NEAREST *EXOVL*
  637.  
  638. EXOVL MACRO P1
  639. MACREF EXOVL
  640. LDN P1/10000
  641. STM TFMA
  642. LDC P1-P1/10000*10000
  643. .1 IF DEF,.EXOVLO
  644. .2 IFLT *-.EXOVL,40B
  645. .EX SET .EXOVL
  646. UJN .EX GO LOAD OVERLAY
  647. .EXOVL SET *-1
  648. .2 ELSE
  649. LJM .EXOVLO GO LOAD OVERLAY
  650. .EXOVL SET *-2
  651. .2 ENDIF
  652. .1 ELSE
  653. .EXOVLO EQU *
  654. .EXOVL SET *
  655. STM TFMB
  656. LJM TFMA-1 LOAD OVERLAY
  657. .1 ENDIF
  658. ENDM
  659. EXSUB SPACE 4,10
  660. ** EXSUB - EXECUTE SUBROUTINE.
  661. *
  662. * EXSUB P1
  663. *
  664. * ENTRY P1 = SUBROUTINE ADDRESS.
  665.  
  666.  
  667. PURGMAC EXSUB
  668.  
  669. EXSUB MACRO P1
  670. MACREF EXSUB
  671. RJM P1-P1/10000*10000
  672. ENDM
  673. FCN SPACE 4,10
  674. ** FCN - DEFINE FUNCTION PROCESSOR.
  675. *
  676. * P1 FCN P2,P3,P4,P5
  677. *
  678. * ENTRY P1 = FUNCTION TABLE NAME.
  679. * *BEGIN* FWA OF A TABLE.
  680. * *END* END OF THE TABLE.
  681. * P2 = FUNCTION CODE.
  682. * P3 = PROCESSOR ADDRESS.
  683. * P4 = CATALOG ACCESS MODE.
  684. * 4XXX = NOT ACCESSING CATALOG.
  685. * 2XXX = NOT CHANGING CONTROL POINTS.
  686. * P5 = MINIMUM FET LENGTH.
  687. * 4XXX = NO BUFFER VALIDATION.
  688.  
  689.  
  690. PURGMAC FCN
  691.  
  692. MACRO FCN,P1,P2,P3,P4,P5
  693. MACREF FCN
  694. IFC EQ,*P2*BEGIN*,3
  695. P1 BSS 0
  696. LOC 0
  697. .1 SKIP
  698. IFC EQ,*P2*END*,3
  699. LOC *O
  700. P1_L EQU *-P1
  701. .1 SKIP
  702. LOC P2
  703. CON P3/10000,P3-P3/10000*10000
  704. .2 IFC NE,*P4**
  705. CON P4
  706. .2 ELSE
  707. CON 0
  708. .2 ENDIF
  709. .3 IFC NE,*P5**
  710. CON P5
  711. .3 ELSE
  712. CON 0
  713. .3 ENDIF
  714. .1 ENDIF
  715. ENDM
  716. LIA SPACE 4,10
  717. ** LIA - LOAD INDIRECT ADDRESS TO A REGISTER.
  718. *
  719. * LIA P1,P2
  720. *
  721. * ENTRY P1 = BASE ADDRESS OF OPERAND.
  722. * P2 = ADDRESS OF THE INDEX FOR MODIFYING
  723. * THE BASE ADDRESS OF THE OPERAND.
  724. *
  725. * EXIT (A) = P1 + (P2).
  726.  
  727.  
  728. PURGMAC LIA
  729.  
  730. LIA MACRO P1,P2
  731. MACREF LIA
  732. EVAL P1,P2
  733. ENDM
  734. LDA SPACE 4,11
  735. ** LDA - LOAD ABSOLUTE/RELATIVE ADDRESS.
  736. *
  737. * LDA P1,P2
  738. *
  739. * ENTRY P1 = TWO CELLS WITH ADDRESS
  740. * P2 = CELL CONTAINING BIAS.
  741. * = *ABS* IF ADDRESS IS ABSOLUTE.
  742. * *REL* IF ADDRESS IS RELATIVE
  743. * TO CONTROL POINT.
  744. *
  745. * EXIT (A) = (P1+(P2))+(P1+1+(P2)).
  746. * (A) = (P1)*4096+(P1+1) IF P2 = *ABS*
  747. * (A) = (P1)*4096+(RA)*64+(P1+1) IF P2 = *REL*.
  748.  
  749. PURGMAC LDA
  750.  
  751. LDA MACRO P1,P2
  752. MACREF LDA
  753. IFC EQ,*P2*REL*,7
  754. OP= P1,LDD,LDM
  755. LPN 77
  756. SHN 6
  757. ADD RA
  758. SHN 6
  759. OP= P1+1,ADD,ADM
  760. SKIP 10
  761. IFC EQ,*P2*ABS*,5
  762. OP= P1,LDD,LDM
  763. LPN 77
  764. SHN 14
  765. OP= P1+1,LMD,LMM
  766. SKIP 4
  767. LDM P1,P2
  768. LPN 77
  769. SHN 14
  770. LMM P1+1,P2
  771. ENDM
  772. MMOVE SPACE 4,10
  773. ** MMOVE - MEMORY MOVE.
  774. *
  775. * MMOVE P1,P2,P3,P4,P5,P6
  776. *
  777. * ENTRY P1 = FWA OF MOVE.
  778. * P2 = MODIFIER TO P1.
  779. * P3 = FWA OF DESTINATION.
  780. * P4 = MODIFIER TO P3.
  781. * P5 = MOVE COUNT IN HALF BYTES.
  782. * P6 = MOVE COUNT IN HALF BYTES, STORED IN MEMORY.
  783. *
  784. * CALLS MPM.
  785.  
  786.  
  787. PURGMAC MMOVE
  788.  
  789. MMOVE MACRO P1,P2,P3,P4,P5,P6
  790. MACREF MMOVE
  791. EVAL P1,P2,T1
  792. EVAL P3,P4,T2
  793. EVAL P5,P6
  794. RJM MPM
  795. ENDM
  796. MULT3 SPACE 4,10
  797. ** MULT3 - MULTIPLY BY 3.
  798. *
  799. * MULT3 P1
  800. *
  801. * ENTRY (P1) = DIRECT CELL CONTAINING VALUE TO
  802. * MULTIPLIED BY 3.
  803. *
  804. * EXIT (A) = SPECIFIED VALUE MULTIPLIED BY 3.
  805.  
  806.  
  807. PURGMAC MULT3
  808.  
  809. MULT3 MACRO P1
  810. MACREF MULT3
  811. LDD P1
  812. SHN 1 *2
  813. ADD P1 *3
  814. ENDM
  815. MULT4 SPACE 4,10
  816. ** MULT4 - MULTIPLY BY 4.
  817. *
  818. * MULT4
  819. *
  820. * ENTRY (A) = VALUE TO BE MULTIPLIED BY 4.
  821. *
  822. * EXIT (A) = (T1) = SPECIFIED VALUE MULTIPLIED BY 4.
  823. *
  824. * USES T1.
  825.  
  826.  
  827. PURGMAC MULT4
  828.  
  829. MULT4 MACRO
  830. MACREF MULT4
  831. SHN 2 *4
  832. STD T1
  833. ENDM
  834. OVERLAY SPACE 4,10
  835. ** OVERLAY - GENERATE OVERLAY CONSTANTS.
  836. *
  837. * OVERLAY (P1),P2
  838. *
  839. * ENTRY P1 = ENTRY OF SUBTITLE.
  840. * P2 = SPECIFIES LOAD ADDRESS.
  841.  
  842.  
  843. PURGMAC OVERLAY
  844.  
  845. OVERLAY MACRO P1,P2
  846. MACREF OVERLAY
  847. QUAL
  848. .X. SET .X.+1
  849. .A. MICRO .X.,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ
  850. .Y. MICRO 1,3, "PREFIX"".A."
  851. QUAL ".Y."
  852. TTL TFM/".Y." - P1
  853. TITLE
  854. IDENT ".Y.",P2+5 P1
  855. *COMMENT TFM - P1
  856. ORG P2+5
  857. .ERRJP SET 0 RESET POINTER TO *RJM ERR*
  858. .EXOVL SET 0 INITIALIZE POINTER TO NEAREST *EXOVL*
  859. LJM *
  860. UJN *-2
  861. ENDM
  862. SAVEP SPACE 4,10
  863. ** SAVEP - SAVE CATALOG POINTERS.
  864. *
  865. * SAVEP P1
  866. *
  867. * ENTRY P1 = FWA OF FIVE CONSECUTIVE WORDS
  868. * TO STORE CELLS (BA - BA+4).
  869.  
  870.  
  871. PURGMAC SAVEP
  872.  
  873. SAVEP MACRO P1
  874. MACREF SAVEP
  875. LDD MA
  876. CWD BA
  877. .1 IF DEF,P1
  878. .2 IFLT P1,100B
  879. CRD P1
  880. .2 ELSE
  881. CRM P1,ON
  882. .2 ENDIF
  883. .1 ELSE
  884. CRM P1,ON
  885. .1 ENDIF
  886. ENDM
  887. RESTP SPACE 4,10
  888. ** RESTP - RESTORE CATALOG POINTERS.
  889. *
  890. * RESTP P1
  891. *
  892. * ENTRY P1 = FWA OF FIVE CONSECUTIVE BYTES
  893. * TO BE RETURNED TO CELLS BA - BA+4.
  894.  
  895.  
  896. PURGMAC RESTP
  897. RESTP MACRO P1
  898. MACREF RESTP
  899. LDD MA
  900. .1 IF DEF,P1
  901. .2 IFLT P1,100B
  902. CWD P1
  903. .2 ELSE
  904. CWM P1,ON
  905. SBN 1
  906. .2 ENDIF
  907. .1 ELSE
  908. CWM P1,ON
  909. SBN 1
  910. .1 ENDIF
  911. CRD BA
  912. ENDM
  913. UDTRD SPACE 4,10
  914. ** UDTRD - READ UDT WORD(S).
  915. *
  916. * UDTRD P1,P2,P3
  917. *
  918. * ENTRY P1 = ADDRESS OF RECEIVING BUFFER
  919. * P2 = FIRST UDT WORD TO READ.
  920. * P3 = NUMBER OF WORDS TO READ.
  921. *
  922. * CALLS UDT.
  923.  
  924.  
  925. PURGMAC UDTRD
  926.  
  927. UDTRD MACRO P1,P2,P3
  928. MACREF UDTRD
  929. IFC NE,*P1*T1*,2
  930. OP= P1,LDN,LDC
  931. STD T1
  932. LDC P3*10000+P2
  933. RJM UDT
  934. UDT$ EQU 1 DEFINE UDT - READ/WRITE UDT ENTRY.
  935. ENDM
  936. UDTWT SPACE 4,10
  937. ** UDTWT - WRITE UDT WORD(S).
  938. *
  939. * UDTWT P1,P2,P3
  940. *
  941. * ENTRY P1 = ADDRESS OF SENDING BUFFER.
  942. * P2 = FIRST UDT WORD TO WRITE.
  943. * P3 = NUMBER OF WORDS TO WRITE.
  944. *
  945. * CALLS UDT.
  946.  
  947.  
  948. PURGMAC UDTWT
  949.  
  950. UDTWT MACRO P1,P2,P3
  951. MACREF UDTWT
  952. IFC NE,*P1*T1*,2
  953. OP= P1,LDN,LDC
  954. STD T1
  955. LDC P3*10000+100000+P2
  956. RJM UDT
  957. UDT$ EQU 1 DEFINE UDT - READ/WRITE UDT ENTRY.
  958. ENDM
  959. TITLE GLOBAL DIRECT CELL LOCATIONS.
  960. *** GLOBAL DIRECT LOCATION ASSIGNMENTS.
  961. *
  962. * THE FOLLOWING DIRECT CELLS ARE DEFINED AND
  963. * USED BY ALL OVERLAYS IN TFM, AND AS SUCH ARE
  964. * INVIOLATE. IN MANY CASES THEY ARE ORDER
  965. * DEPENDENT SO CARE MUST BE USED IF CHANGES
  966. * ARE REQUIRED.
  967. *
  968. * S1, S2, AND S3 ARE DEFINED AS SCRATCH, THAT
  969. * IS THEY CAN AND ARE REDEFINED AND USED BY
  970. * PRESET AND ANY OVERLAY AS REQUIRED. ALL OF
  971. * THE REMAINING DIRECT CELLS ARE USED FOR
  972. * SPECIFIC PURPOSES BY OVERLAYS AND TFM COMMON
  973. * SUBROUTINES.
  974.  
  975.  
  976. S1 EQU 16 - 22 SCRATCH (5 LOCATIONS)
  977. S2 EQU 23 - 27 SCRATCH (5 LOCATIONS)
  978. S3 EQU 30 - 34 SCRATCH (5 LOCATIONS)
  979. FN EQU 35 - 41 FNT ENTRY (5 LOCATIONS)
  980. FS EQU 42 - 46 FST ENTRY (5 LOCATIONS)
  981. EQ EQU FS EQUIPMENT (FS+0)
  982. TK EQU FS+1 TRACK (FS+1)
  983. SC EQU FS+2 SECTOR (FS+2)
  984. FO EQU 47 FNT ORDINAL
  985. FC EQU IR+2 FUNCTION CODE (REDEFINES IR+2)
  986. BA EQU 60 BUFFER ADDRESS
  987. BP EQU 61 BUFFER POINTER
  988. CI EQU 62 CATALOG INDEX
  989. RI EQU 63 - 64 RANDOM INDEX (2 LOCATIONS)
  990. PB EQU 65 PARAMETER BLOCK ADDRESS
  991. KA EQU 66 KEY ADDRESS
  992. KL EQU 67 KEY LENGTH
  993. EC EQU KL ERROR CODE (REDEFINES KL)
  994. TITLE ASSEMBLED LIST OF *COMPTFM* ROUTINES.
  995. SPACE 4
  996. ORG PPFW
  997. SPACE 4
  998. QUAL COMPTFM
  999. COMPTFM SPACE 4,10
  1000. ** DEFINE ALL CONDITIONALS FOR *COMPTFM* LIST.
  1001.  
  1002.  
  1003. ABC$ EQU 1 DEFINE ABC - ADD BLOCK TO CHAIN
  1004. AMD$ EQU 1 DEFINE AMD - AMEND PROCESSING
  1005. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH
  1006. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY
  1007. CAA$ EQU 1 DEFINE CAA - CHECK ALTERNATE USER ACCESS
  1008. CCB$ EQU 1 DEFINE CCB - CHECK CURRENT BUFFER
  1009. CIE$ EQU 1 DEFINE CIE - CREATE INDEX ENTRY
  1010. CMV$ EQU 1 DEFINE CMV - COMPARE/MOVE PP BYTE STRING
  1011. CSN$ EQU 1 DEFINE CSN - CONVERT SEQUENCE NUMBER
  1012. CVA$ EQU 1 DEFINE CVA - CLEAR VSN ASSIGNMENT
  1013. DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY
  1014. DLB$ EQU 1 DEFINE DLB - DELINK BLOCK
  1015. EOI$ EQU 1 DEFINE EOI - SET END OF INFORMATION
  1016. FAM$ EQU 1 DEFINE FAM - FORMAT ACCOUNT FILE MESSAGE
  1017. FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  1018. GEP$ EQU 1 DEFINE GEP - GENERATE EMPTY PRU
  1019. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  1020. GNL$ EQU 1 DEFINE GNL - GET NEXT LINK
  1021. GPL$ EQU 1 DEFINE GPL - GET PREVIOUS BLOCK LINK
  1022. IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE
  1023. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN
  1024. IDE$ EQU 1 DEFINE IDE - INSERT DATA ENTRY
  1025. IIE$ EQU 1 DEFINE IIE - INSERT INDEX ENTRY
  1026. IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES.
  1027. IRS$ EQU 1 DEFINE IRS - ISSUE RECOVERY MSG SUBROUTINE
  1028. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY
  1029. ISP$ EQU 1 DEFINE ISP - INITIALIZE SCRATCH PROCESSOR
  1030. IUC$ EQU 1 DEFINE IUC - INCREASE USAGE COUNTER
  1031. LNB$ EQU 1 DEFINE LNB - LINK NEXT BLOCK
  1032. LTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  1033. MLT$ EQU 1 DEFINE MLT - (A) REGISTER MULTIPLY
  1034. PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES
  1035. PLI$ EQU 1 DEFINE PLI - POSITION TO LAST ENTRY
  1036. RCL$ EQU 1 DEFINE RCL - PP RECALL
  1037. RIB$ EQU 1 DEFINE RIB - ROOM IN BLOCK
  1038. RSP$ EQU 1 DEFINE RSP - RELEASE VSNS TO SCRATCH POOL
  1039. SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS
  1040. SCB$ EQU 1 DEFINE SCB - SEARCH CATALOG BUFFER
  1041. SCC$ EQU 1 DEFINE SCC - SUBSTITUTE CHAR. FOR COLON
  1042. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BLOCK
  1043. SVB$ EQU 1 DEFINE SVB - SET VSN BUSY
  1044. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  1045. UDT$ EQU 1 DEFINE UDT - READ/WRITE UDT ENTRY.
  1046. UIS$ EQU 1 DEFINE UIS - USERNAME INDEXED SEARCH
  1047. UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER
  1048. UTR$ EQU 1 DEFUNE UTR - UPDATE TRT
  1049. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  1050. VRR$ EQU 1 DEFINE VRR - VERIFY RANDOM REQUEST
  1051. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  1052. VUB$ EQU 1 DEFINE VUB - VERIFY USERS BLOCK
  1053. WES$ EQU 1 DEFINE WES - WRITE EOR/EOI SEQUENCE
  1054. COMPTFM SPACE 4,10
  1055. ** DEFINE TEMPS FOR *COMPTFM* ASSEMBLY.
  1056.  
  1057.  
  1058. CT EQU 16 FILE CATAGORY TYPE
  1059. FT EQU 25 FET FIRST POINTER
  1060. IN EQU 27 FET IN POINTER
  1061. LM EQU 33 FET LIMIT POINTER
  1062. MD EQU 17 FILE ACCESS MODE
  1063. OT EQU 31 FET OUTPUT POINTER
  1064. BUFA EQU * ENTRY BUFFER ADDRESS
  1065. BUFB EQU BUFA+12 OVERFLOW BUFFER ADDRESS
  1066. COMMON SPACE 4,10
  1067. ** COMMON DECKS FOR *COMPTFM* ASSEMBLY.
  1068.  
  1069.  
  1070. *CALL COMPC2D
  1071. *CALL COMPWEI
  1072. LIST F,X
  1073. *CALL COMPTFM
  1074. LIST *
  1075. SPACE 4
  1076. QUAL *
  1077. TITLE MAIN PROGRAM.
  1078. ORG PPFW
  1079. SPACE 4
  1080. ** TFM - MAIN PROGRAM.
  1081. *
  1082. * THE TFM MAIN LOOP IS THE ONLY ENTRY AND
  1083. * EXIT POINT IN TFM. FROM HERE ALL OVERLAYS
  1084. * ARE LOADED AND EXECUTED VIA A RETURN JUMP.
  1085. *
  1086. * ENTRY (TFMC) = 6/ MASS STORAGE ERROR FLAGS,12/ ACCESS FLAGS.
  1087. * ACCESS FLAGS = 1/ NA,1/ NC,4/ 0,6/ MD.
  1088. * NA = NOT ACCESSING CATALOG.
  1089. * NC = NO CONTROL POINT CHANGE.
  1090. * MD = FAST ATTACH FILE ACCESS MODE.
  1091. * = /PFM/PTLM IF LOCAL FILE MODE.
  1092. *
  1093. * EXIT CATALOG FILE RETURNED IF FAST ATTACH MODE.
  1094. * FST SET COMPLETE IF LOCAL FILE MODE.
  1095. * FET OR UDT SET COMPLETE.
  1096. *
  1097. * USES CM - CM+4.
  1098. *
  1099. * CALLS PLL, PPR, PRS, TFM SUBFUNCTION
  1100. * PROCESSORS.
  1101. *
  1102. * MACROS LDA, MONITOR, UDTRD, UDTWT.
  1103.  
  1104.  
  1105.  
  1106. TFM BSS 0 TFM MAIN ENTRY POINT
  1107. RJM /PRESET/PRS PRESET PROGRAM
  1108. LDC ** SET OVERLAY NAME
  1109. TFMA EQU *-1 (OVERLAY NAME)
  1110. ZJN TFM1 IF NO OVERLAY REQUIRED
  1111. LMC 2L"PREFIX" LOAD OVERLAY
  1112. RJM EXR
  1113. TFM1 RJM ** EXECUTE PROCESSOR
  1114. TFMB EQU *-1 (PROCESSOR ADDRESS)
  1115. LDC ** GET CATALOG ACCESS MODE
  1116. TFMC EQU *-1 (MASS STORAGE ERROR FLAG/MODE FLAGS)
  1117. PJN TFM2 IF NOT MASS STORAGE ERROR
  1118. LDC LDCI+0 CLEAR MASS STORAGE ERROR FLAG
  1119. STM TFMC-1
  1120. LDD FO
  1121. RJM AFA GET ABSOLUTE FST ADDRESS
  1122. CRD FS
  1123. SBN 1
  1124. CRD FN
  1125. ERROR MSE *EQXX, DNYY, MASS STORAGE ERROR.*
  1126.  
  1127. TFM2 LPN 77
  1128. LMN /PFM/PTLM
  1129. NJN TFM3 IF NOT LOCAL FILE MODE
  1130. LDD FO
  1131. ZJN TFM4 IF NO CATALOG FILE
  1132. RJM AFA READ LOCAL FST ENTRY
  1133. CRD FS
  1134. AOD FS+4 SET FST COMPLETE
  1135. LDD FO WRITE FST ENTRY
  1136. RJM AFA
  1137. CWD FS
  1138. UJN TFM4 SET FET COMPLETE
  1139.  
  1140. TFM3 LMN /PFM/PTLM SET ACCESS MODE
  1141. STD T2
  1142. LDD FO SET FNT ORDINAL
  1143. ZJN TFM4 IF CATALOG NOT ATTACHED
  1144. STD T1
  1145. LDN RFAS SET RETURN FILE
  1146. RJM ARF RETURN FAST ATTACH CATALOG
  1147. TFM4 LDD FC
  1148. LMN MAGF
  1149. ZJN TFM6 IF CALLED BY *MAGNET*
  1150. LDA IR+3,REL SET FET COMPLETE
  1151. CRD CM
  1152. LDD CM+4
  1153. SCN 1
  1154. LMN 1
  1155. STD CM+4
  1156. LDA IR+3,REL
  1157. CWD CM
  1158. TFM5 MONITOR DPPM DROP PP
  1159. LJM PPR EXIT TO PP RESIDENT
  1160.  
  1161. TFM6 EXOVL CTC COMPLETE *TFM* CALL BY *MAGNET*
  1162. * UJN DPP EXIT PATH FROM *CTC*
  1163. TITLE TFM RESIDENT SUBROUTINES.
  1164. AFA SPACE 4,10
  1165. ** AFA - GET ABSOLUTE FST ADDRESS.
  1166. *
  1167. * ENTRY (A) = FNT ORDINAL IF SYSTEM FILE.
  1168. *
  1169. * EXIT (A) = ABSOLUTE FNT ADDRESS.
  1170. *
  1171. * MACROS CFI, NFA.
  1172.  
  1173.  
  1174. AFA SUBR ENTRY/EXIT
  1175. AFAA BSS 0
  1176. * CFI FNT GET FST ADDRESS FOR SYSTEM FILE
  1177. *AFAB ADC **
  1178. * ADN FSTG
  1179. NFA FO,R GET FST ADDRESS FOR LOCAL FILE
  1180. ADN FSTL
  1181. AFAAL EQU *-AFAA ROUTINE LENGTH
  1182. UJN AFAX RETURN
  1183. ARF SPACE 4,10
  1184. ** ARF - ATTACH/RETURN FAST ATTACH FILE.
  1185. *
  1186. * ENTRY (A) = AFAS IF ATTACH FILE.
  1187. * = RFAS IF RETURN FILE.
  1188. * (T1) = SYSTEM FNT ORDINAL.
  1189. * (T2) = ACCESS MODE.
  1190. *
  1191. * EXIT (A) = 0.
  1192. * (T1) = FNT ORDINAL.
  1193. * (T2) = ACCESS MODE.
  1194. *
  1195. * USES T1, T2, T3, CM - CM+4.
  1196. *
  1197. * CALLS AFA.
  1198. *
  1199. * MACROS DELAY, MONITOR, PAUSE.
  1200.  
  1201.  
  1202. ARF SUBR ENTRY/EXIT
  1203. STD T3 SAVE SUBFUNCTION
  1204. ARF1 LDD T1 SET FNT ORDINAL
  1205. STD CM+4
  1206. RJM AFA READ FST ENTRY
  1207. CRD FS
  1208. SBN FSTG-FNTG READ FNT ENTRY
  1209. CRD FN
  1210. LDD FN+3 CHECK FAT/MACHINE INDEX
  1211. LPN 77
  1212. ZJN ARF2 IF NOT GLOBAL FAST ATTACH FILE
  1213. LDD FS SET GLOBAL FAST ATTACH EST ORDINAL
  1214. ARF2 STD CM+1 SET GLOBAL FILE FLAG
  1215. LDD T2 SET MODE
  1216. STD CM+2
  1217. LDD T3
  1218. STD CM+3
  1219. MONITOR AFAM ATTACH OR RELEASE FILE
  1220. LDD CM+1
  1221. ZJN ARFX IF FUNCTION COMPLETE
  1222. LDC 1400 PRESET DELAY
  1223. STM T0
  1224. ARF3 DELAY
  1225. * LDN 0 RESET I/O PAUSE COUNTER
  1226. STM PFRA
  1227. RJM PFR PAUSE FOR RELOCATION
  1228. SOD T0
  1229. PJN ARF3 IF MORE DELAY NEEDED
  1230. UJP ARF1 REISSUE FUNCTION
  1231. CCS SPACE 4,10
  1232. ** CCS - COMPARE CHARACTER STRING.
  1233. *
  1234. * ENTRY (A) = COMPARE LENGTH IN CHARACTERS.
  1235. * (T1) = SOURCE ADDRESS FOR COMPARE.
  1236. * (T2) = OBJECT ADDRESS FOR COMPARE.
  1237. *
  1238. * EXIT (A) = 0 IF NAME(T1) = NAME(T2).
  1239. * (A) .LT. 0 IF NAME(T1) .LT. NAME(T2).
  1240. * (A) .GT. 0 IF NAME(T1) .GT. NAME(T2).
  1241. *
  1242. * USES T0 - T2.
  1243.  
  1244.  
  1245. CCS2 LDI T1 COMPARE BYTES
  1246. SBI T2
  1247. NJN CCSX IF BYTE(T1) .NE. BYTE(T2)
  1248. AOD T1 INCREMENT TO NEXT BYTE
  1249. AOD T2
  1250. SOD T0 DECREMENT CHARACTER COUNT
  1251. SOD T0
  1252. NJN CCS1 IF NAME(T1) .NE. NAME(T2)
  1253.  
  1254. CCS SUBR ENTRY/EXIT
  1255. STD T0 SAVE CHARACTER COUNT
  1256. CCS1 SBN 1 CHECK FOR ODD COUNT
  1257. NJN CCS2 IF NOT ODD CHARACTER COUNT
  1258. LDI T1 CHECK TRAILING CHARACTER
  1259. SCN 77
  1260. LMN 77
  1261. SBI T2
  1262. SCN 77
  1263. UJN CCSX RETURN
  1264. CME SPACE 4,10
  1265. ** CME - CHECK FOR MASS STORAGE ERROR.
  1266. *
  1267. * ENTRY (A) = MASS STORAGE ERROR, IF PRESENT.
  1268. *
  1269. * EXIT MASS STORAGE ERROR FLAG HAS BEEN SET IF PRESENT.
  1270. *
  1271. * CALLS PFR.
  1272. *
  1273. * MACROS ENDMS.
  1274.  
  1275.  
  1276. CME SUBR ENTRY/EXIT
  1277. PJN CME1 IF NO MASS STORAGE ERROR
  1278. LDC LDCI+40 SET MASS STORAGE ERROR FLAG
  1279. STM TFMC-1
  1280. CME1 ENDMS RELEASE CHANNEL RESERVE
  1281. RJM PFR PAUSE FOR RELOCATION
  1282. UJN CMEX RETURN
  1283. CPM SPACE 4,10
  1284. ** CPM - CLEAR CONSECUTIVE PP MEMORY.
  1285. *
  1286. * ENTRY (A) = HALF BYTE COUNT.
  1287. * (T1) = FWA OF AREA TO CLEAR.
  1288. *
  1289. * EXIT (A) = 0.
  1290. * AREA FROM (A) TO ((A)+(T1)) SET TO ZERO.
  1291. *
  1292. * USES T0, T1.
  1293.  
  1294.  
  1295. CPM2 LDN 0 CLEAR ONE WORD
  1296. STI T1
  1297. AOD T1
  1298. SOD T0
  1299. CPM3 SOD T0 CHECK FOR TERMINATION
  1300. NJN CPM1 IF MORE TO CLEAR
  1301.  
  1302. CPM SUBR ENTRY/EXIT
  1303. STD T0 SET WORD COUNT
  1304. CPM1 SBN 1 CHECK FOR ODD COUNT
  1305. NJN CPM2 IF NOT LAST CHARACTER
  1306. LDI T1 CLEAR UPPER 6 BITS
  1307. LPN 77
  1308. STI T1
  1309. UJN CPM3 DECREMENT COUNT AND RETURN
  1310. CTS SPACE 4,10
  1311. ** CTS - CONVERT TO ABSOLUTE TRACK/SECTOR.
  1312. *
  1313. * ENTRY (RI - RI+1) = CURRENT RANDOM ADDRESS.
  1314. *
  1315. * EXIT (T5) = EQUIPMENT.
  1316. * (T6) = TRACK (CALCULATED).
  1317. * (T7) = SECTOR (CALCULATED).
  1318. * (RI - RI+1) = RANDOM ADDRESS (UNCHANGED).
  1319. *
  1320. * USES T5 - T5+4.
  1321. *
  1322. * CALLS CRA.
  1323. *
  1324. * MACROS ENDMS, ERROR, LDA, SETMS.
  1325.  
  1326.  
  1327. CTS2 LDA CTSA,ABS RESTORE RANDOM ADDRESS
  1328. STD RI+1
  1329. SHN -14
  1330. STD RI
  1331.  
  1332. CTS SUBR ENTRY/EXIT
  1333. LDD FO
  1334. RJM AFA GET ABSOLUTE FST ADDRESS
  1335. CRD T5
  1336. LDA RI,ABS SAVE RANDOM ADDRESS
  1337. ZJN CTS1 IF SYSTEM SECTOR
  1338. STM CTSA+1
  1339. SHN -14
  1340. STM CTSA
  1341. SETMS IO,RW RESERVE CHANNEL
  1342. RJM CRA CONVERT RANDOM ADDRESS
  1343. PJP CTS2 IF NO RANDOM ADDRESS ERROR
  1344. CTS1 BSS 0
  1345. ERROR RAE *RANDOM ADDRESS ERROR.*
  1346.  
  1347. CTSA CON 0,0 RANDOM ADDRESS CELLS
  1348. DPP SPACE 4,10
  1349. ** DPP - DROP PP.
  1350. *
  1351. * DEFINES THE TFM EXIT LOCATION FOR RELINQUISHING
  1352. * THE PPU WITHOUT CHANGING THE COMPLETION STATUS
  1353. * FOR THE REQUEST.
  1354.  
  1355.  
  1356. DPP EQU TFM5 DEFINE DROP PP LOCATION
  1357. EDT SPACE 4,10
  1358. ** EDT - ENTER PACKED DATE/TIME.
  1359. *
  1360. * ENTRY (A) = ADDRESS OF WORD TO RECEIVE DATE/TIME.
  1361. *
  1362. * EXIT PACKED DATE/TIME ENTERED IN 3 CONSECUTIVE
  1363. * WORDS STARTING AT (A).
  1364. *
  1365. * USES CM - CM+4, T2.
  1366. *
  1367. * MACROS MMOVE.
  1368.  
  1369.  
  1370. EDT SUBR ENTRY/EXIT
  1371. STD T2
  1372. LDN PDTL
  1373. CRD CM
  1374. MMOVE CM+2,,,,6
  1375. UJN EDTX RETURN
  1376. EML SPACE 4,10
  1377. ** EML - EXIT TO MAIN LOOP.
  1378. *
  1379. * DEFINES THE TFM EXIT PATH FOR SETTING THE
  1380. * COMPLETION STATUS AND DROPPING THE PPU FOR
  1381. * SPECIAL CASES AND ABNORMAL TERMINATION.
  1382.  
  1383.  
  1384. EML EQU TFM1+2 DEFINE EXIT TO MAIN LOOP LOCATION
  1385. ERR SPACE 4,10
  1386. ** ERR - CALL ERROR PROCESSING OVERLAY.
  1387. *
  1388. * *ERR* IS CALLED EITHER DIRECTLY OR BY THE
  1389. * *ERROR* MACRO TO ENTER THE ERROR PROCESSING
  1390. * OVERLAY. IF TRP$ IS DEFINED, CODE IS ASSEMBLED
  1391. * TO ALLOW THE PP TO BE STEPPED ON ANY ERROR
  1392. * CONDITION BEFORE THE OVERLAY IS CALLED. THIS
  1393. * PROVIDES A WAY TO DUMP THE PP ON A ERROR AND
  1394. * INSURE THAT IT HAS NOT BEEN DESTROYED BY THE
  1395. * OVERLAY LOAD.
  1396. *
  1397. * THE FOLLOWING FORMAT WILL STEP THE PP ON ERRORS;
  1398. *
  1399. * STEP,*RSJM*,3,CODE.
  1400. *
  1401. * RSJM = THE NUMERIC VALUE FOR THE *RSJM*
  1402. * MONITOR FUNCTION.
  1403. * CODE = THE TFM ERROR CODE TO BE TRAPPED.
  1404. *
  1405. * ENTRY (A) = ERROR CODE.
  1406. *
  1407. * EXIT TO ERROR PROCESSING OVERLAY.
  1408. *
  1409. * USES EC, CM - CM+4
  1410. *
  1411. * CALLS OVERLAY 5TA (NO RETURN)
  1412. *
  1413. * MACROS MONITOR.
  1414.  
  1415.  
  1416. ERR SUBR CALL ERROR OVERLAY
  1417. STD EC SAVE ERROR CODE
  1418. IF DEF,TRP$
  1419. LDN ZERL
  1420. CRD CM
  1421. LDD EC
  1422. STD CM+3
  1423. LDM ERR
  1424. STD CM+4
  1425. MONITOR RSJM
  1426. ENDIF
  1427. EXOVL TME TAPE MANAGER ERROR PROCESSING
  1428. GIB SPACE 4,10
  1429. ** GIB - GET INITIAL BLOCK.
  1430. *
  1431. * ENTRY (BA) = BUFFER ADDRESS.
  1432. * (RI - RI+1) = RANDOM ADDRESS.
  1433. *
  1434. * EXIT (A) = CURRENT RANDOM ADDRESS.
  1435. * (BA) = UNCHANGED.
  1436. * (BP) = (BA) + 2.
  1437. * (CPRI - CPRI+1) = CURRENT POSITION.
  1438. *
  1439. * USES BP, CPRI - CPRI+1.
  1440. *
  1441. * CALLS RRP.
  1442.  
  1443.  
  1444. GIB SUBR ENTRY/EXIT
  1445. RJM RRP READ RANDOM PRU
  1446. LDD BA
  1447. ADN 2
  1448. STD BP
  1449. LDD RI SET CURRENT FILE POSITION
  1450. STM CPRI
  1451. SHN 14
  1452. LMD RI+1
  1453. STM CPRI+1
  1454. UJN GIBX RETURN
  1455. MBP SPACE 4,13
  1456. ** MBP - MOVE BUFFER POINTER.
  1457. *
  1458. * *MBP* ADVANCES THE BUFFER POINTER (BP) THE NUMBER OF
  1459. * CM WORDS REQUESTED.
  1460. *
  1461. * ENTRY (A) = NUMBER OF CM WORDS TO MOVE.
  1462. * (BA) = BUFFER ADDRESS.
  1463. * (BP) = ADDRESS OF CURRENT WORD.
  1464. *
  1465. * EXIT (A) = ADDRESS OF REQUESTED WORD.
  1466. * (A) = 777777 IF END OF FILE ENCOUNTERED.
  1467. * (BP) = ADDRESS OF REQUESTED WORD.
  1468. *
  1469. * USES T1, BA, BP.
  1470. *
  1471. * CALLS RRP.
  1472. *
  1473. * MACROS ERROR.
  1474.  
  1475.  
  1476. MBP1 ERROR EBP *ERRONEOUS BUFFER POINTER*
  1477.  
  1478. MBP2 LDD T1 INCREMENT WORD COUNT
  1479. RAD BP
  1480. LCN 0 SET END OF BUFFER
  1481.  
  1482. MBP SUBR ENTRY/EXIT
  1483. STD T1
  1484. SHN 2
  1485. RAD T1
  1486. LDD BP CHECK VALIDITY
  1487. SBD BA
  1488. MJN MBP1 IF OUT OF RANGE
  1489. ADC -502
  1490. PJN MBP1 IF OUT OF RANGE
  1491. ADD T1
  1492. PJN MBP2 IF MOVE OUTSIDE BUFFER
  1493. LDD T1
  1494. RAD BP SET BUFFER POINTER
  1495. UJN MBPX RETURN
  1496. MPM SPACE 4,10
  1497. ** MPM - MOVE CONSECUTIVE PP MEMORY.
  1498. *
  1499. * MOVE MUST BEGIN ON A WORD BOUNDARY.
  1500. *
  1501. * ENTRY (A) = MOVE COUNT IN CHARACTERS.
  1502. * (T1) = FWA OF AREA TO MOVE.
  1503. * (T2) = FWA OF RECEIVING AREA.
  1504. *
  1505. * EXIT AREA FROM (T1) TO (T2) MOVED.
  1506. *
  1507. * USES T0 - T2.
  1508.  
  1509.  
  1510. MPM2 LDI T2 MOVE LAST CHARACTER
  1511. LPN 77
  1512. STI T2
  1513. LDI T1
  1514. SCN 77
  1515. RAI T2
  1516.  
  1517. MPM SUBR ENTRY/EXIT
  1518. MPM1 BSS 0
  1519. ZJN MPMX IF NO MOVE COUNT
  1520. STD T0
  1521. SBN 1 CHECK FOR ODD COUNT
  1522. ZJN MPM2 IF LAST MOVE HALF BYTE
  1523. LDI T1 MOVE BYTE
  1524. STI T2
  1525. AOD T1 INCREMENT TO NEXT BYTE
  1526. AOD T2
  1527. SOD T0 DECREMENT CHARACTER COUNT
  1528. SOD T0
  1529. UJN MPM1 CHECK IF MOVE COMPLETE
  1530. PFR SPACE 4,10
  1531. ** PFR - PAUSE FOR RELOCATION.
  1532. *
  1533. * *PFR* CHECKS THE I/O PAUSE LIMIT TO DETERMINE
  1534. * IF A PAUSE IS NECESSARY. IF A PAUSE IS REQUIRED
  1535. * THE PAUSE FLAG IS SET, AND THE COUNTER IS RESET
  1536. * TO *IOPL*.
  1537. *
  1538. * MACROS PAUSE.
  1539. *
  1540.  
  1541.  
  1542. PFR SUBR ENTRY/EXIT
  1543. SOM PFRA DECREMENT PAUSE COUNTER
  1544. PJN PFRX IF PAUSE NOT NECESSARY
  1545. PAUSE -STSW
  1546. LDK IOPL RESET PAUSE COUNTER
  1547. STM PFRA
  1548. UJN PFRX RETURN
  1549.  
  1550. PFRA CON IOPL PAUSE COUNTER
  1551. RRP SPACE 4,10
  1552. ** RRP - READ RANDOM PRU.
  1553. *
  1554. * ENTRY (BA) = BUFFER ADDRESS.
  1555. * (RI - RI+1) = RANDOM INDEX.
  1556. *
  1557. * EXIT (BA) = UNCHANGED.
  1558. * (BP) = UNCHANGED.
  1559. * BUFFER FILLED.
  1560. *
  1561. * CALLS CME, CTS, RDS.
  1562.  
  1563.  
  1564. RRP SUBR ENTRY/EXIT
  1565. RJM CTS CONVERT TO ABSOLUTE TRACK/SECTOR
  1566. LDD BA SET BUFFER
  1567. RJM RDS READ SECTOR
  1568. RJM CME CHECK FOR MASS STORAGE ERROR
  1569. UJN RRPX RETURN
  1570. WRP SPACE 4,10
  1571. ** WRP - WRITE RANDOM PRU.
  1572. *
  1573. * ENTRY (BA) = BUFFER ADDRESS.
  1574. * (RI - RI+1) = RANDOM ADDRESS.
  1575. *
  1576. * EXIT WRITE OR REWRITE OF PRU.
  1577. *
  1578. * CALLS CME, CTS, EDT, WDS.
  1579.  
  1580.  
  1581. WRP SUBR ENTRY/EXIT
  1582. RJM CTS CONVERT TO ABSOLUTE TRACK/SECTOR
  1583. LIA CWDT,BA
  1584. RJM EDT ENTER PACKED DATE/TIME
  1585. LDD BA SET BUFFER
  1586. RJM WDS WRITE SECTOR
  1587. RJM CME CHECK FOR MASS STORAGE ERROR
  1588. UJP WRPX RETURN
  1589. SPACE 4,10
  1590. *** RESIDENT COMMON DECKS.
  1591.  
  1592.  
  1593. *CALL COMPCRA
  1594. *CALL COMPSEI
  1595. *CALL COMPSRA
  1596. TITLE RESIDENT WORKING STORAGE.
  1597. SPACE 4,10
  1598. *** WORKING STORAGE.
  1599.  
  1600.  
  1601. CPRI BSSZ 2 CURRENT POSITION RANDOM INDEX
  1602. CPEB BSSZ 2 CURRENT POSITION EMPTY BLOCK
  1603. CPSB BSSZ 5 CURRENT POSITION SYSTEM BUFFER
  1604. CPPI BSSZ 5 CURRENT POSITION PRIMARY INDEX
  1605. CPSI BSSZ 5 CURRENT POSITION SECONDARY INDEX
  1606. CPCB BSSZ 5 CURRENT POSITION CATALOG BUFFER
  1607. CPAB BSSZ 5 CURRENT POSITION ADMIT BUFFER
  1608. CPHP BSSZ 5 CURRENT POSITION HOLE POINTER
  1609. UTMS BSSZ 5 *UTMS* FROM *MAGNET*
  1610. UDTA CON 0 CURRENT UDT ADDRESS BEING PROCESSED
  1611. ISBA CON BUF0,BUF1 INDEXED SEARCH BUFFER ADDRESS
  1612. MFID EQU TFM MAINFRAME I.D.
  1613. CDMX EQU TFM+1 CATALOG DEVICE MACHINE INDEX-1
  1614. DFFO CON 0 RSXDID FILE FNT ORDINAL IF ATTACHED
  1615. ERRZR RDFO ORDINAL MUST BE NON-ZERO
  1616. SCRP CON 0 ADDRESS IN *TMST* OF CORRECT SCRATCH POOL
  1617. TFMF SPACE 4,10
  1618. *** TFMF - TFM FLAGS.
  1619. *
  1620. * FLAGS -
  1621. * 0010 = NOTIFY OPERATOR ON ANY ERROR.
  1622.  
  1623. TFMF BSS 0
  1624. VFD 8/0 RESERVED FOR FUTURE USE
  1625. VFD 1/0 NOTIFY OPERATOR ON ERROR
  1626. VFD 3/0 RESERVED FOR FUTURE USE
  1627.  
  1628. SPACE 4,10
  1629. *** PARAMETER BUFFER.
  1630. *
  1631.  
  1632.  
  1633. PFAM BSSZ 5 FAMILY NAME/INDEX
  1634. PBUN BSSZ 5 USERNAME FOR CATALOG SEARCH
  1635. PBUF BSSZ TFPL*5 PARAMETER BUFFER
  1636. SPACE 4,10
  1637. *** FET PARAMETER BUFFER (PP BYTE POSITIONS).
  1638.  
  1639.  
  1640. PESN EQU FBES*5+PBUF EXTERNAL VOLUME SERIAL NUMBER (36 BITS)
  1641. PFLG EQU FBES*5+3+PBUF MISC FLAGS
  1642. PFTD EQU FBTD*5+PBUF TAPE DESCRIPTORS (60 BITS)
  1643. PVSN EQU FBVS*5+PBUF INTERNAL VOLUME SERIAL NUMBER (36 BITS)
  1644. PBFA EQU PVSN+3 FILE ACCESSIBILITY (6 BITS)
  1645. PBSN EQU PVSN+3 FILE SECTION NUMBER (18 BITS)
  1646. POFI EQU FBFI*5+PBUF FILE IDENTIFIER (OLD - 102 BITS)
  1647. PBQN EQU POFI+10B FILE SEQUENCE NUMBER (18 BITS)
  1648. PBSI EQU FBSI*5+PBUF SET IDENTIFIER (36 BITS)
  1649. PBVN EQU PBSI+3 VERSION NUMBER (9 BITS)
  1650. PBGN EQU PBSI+3 GENERATION NUMBER (15 BITS)
  1651. PNFI EQU FBNI*5+PBUF FILE IDENTIFIER (NEW - 102 BITS)
  1652. PBCE EQU PNFI+11 CLEAR ERROR FLAG (UPPER 6 BITS)
  1653. PBAN EQU PNFI+11 CHANGE CHARGE/PROJECT (LOWER 6 BITS)
  1654. PBCR EQU FBCR*5+PBUF LABEL CREATION/RETENTION DATE (60 BITS)
  1655. PAUN EQU FBUN*5+PBUF ALTERNATE USERNAME (42 BITS)
  1656. PBTO EQU PAUN+3 TAPE OPTIONS (LOWER 18 BITS)
  1657. PUCW EQU PAUN USER CONTROL WORD (60 BITS)
  1658. PPWD EQU FBPW*5+PBUF FILE PASSWORD (42 BITS)
  1659. PBAC EQU PPWD+3 AUDIT ACCESS MODE (LOWER 6 BITS)
  1660. PBCT EQU PPWD+4 FILE CATEGORY (UPPER 6 BITS)
  1661. PBMD EQU PPWD+4 FILE ACCESS MODE (LOWER 6 BITS)
  1662. SPACE 4,10
  1663. *** VSN PARAMETER BUFFER (PP BYTE POSITIONS).
  1664.  
  1665.  
  1666. PVES EQU VBES+PBUF EXTERNAL VSN
  1667. PVCI EQU VBCI+PBUF CATALOG RANDOM INDEX
  1668. PVVS EQU VBVS+PBUF INTERNAL VSN
  1669. PVRC EQU VBRC+PBUF REEL COUNT (UPPER 6 BITS)
  1670. PVST EQU VBST+PBUF VSN STATUS (I8 BITS)
  1671. PVFV EQU VBFV+PBUF FIRST VSN OF SET
  1672. PVJS EQU VBJS+PBUF EJT ORDINAL
  1673. PVNV EQU VBNV+PBUF NEXT VSN OF SET (36 BITS)
  1674. TITLE OVERLAYABLE SUBROUTINES (LEVEL 1).
  1675. SPACE 4,10
  1676. *** LEVEL 1 OVERLAYS.
  1677. *
  1678. * LEVEL 1 OVERLAYABLE CODE WILL BE DESTROYED BY
  1679. * AN OVERLAY LOAD AT *OVL1*.
  1680.  
  1681.  
  1682. OVL1 EQU * DEFINE FIRST LEVEL OVERLAY ADDRESS
  1683. SPACE 4
  1684. QUAL PRESET
  1685. SPACE 4,10
  1686. ** LOCAL DIRECT CELL LOCATIONS.
  1687.  
  1688.  
  1689. SI EQU S2+2 SUBSYSTEM ID
  1690. FT EQU S2+2 - S2+3 FET FIRST POINTER
  1691. IN EQU S2+4 - S3+0 FET IN POINTER
  1692. OT EQU S3+1 - S3+2 FET OUT POINTER
  1693. LM EQU S3+3 - S3+4 FET LIMIT POINTER
  1694. CN EQU FN - FN+4 FAMILY NAME (COMPFAT)
  1695. FA EQU S1 FNT ORDINAL (COMPSAF)
  1696. MAGF SPACE 4,10
  1697. *** MAGF - *MAGNET* REQUEST FUNCTION.
  1698. *
  1699. * THIS FUNCTION CAN ONLY BE CALLED BY *MAGNET*.
  1700. * *MAGNET* WILL ISSUE THIS REQUEST WITH A SUB-
  1701. * FUNCTION CODE IN BYTE 0 OF UDT+UTMS, AND CALL
  1702. * TFM WITHOUT AUTO-RECALL. THIS IS THE ONLY
  1703. * TFM RA+1 REQUEST VALIDATED FOR NO AUTO-RECALL.
  1704. *
  1705. * ENTRY (FC) = MAGF.
  1706. * (IR+4) = UDT ADDRESS.
  1707. *
  1708. * EXIT (TFMA) = OVERLAY NAME.
  1709. * (TFMB) = PROCESSOR ADDRESS.
  1710. * (TFMC) = CATALOG ACCESS MODE.
  1711. * (UDTA) = UDT ADDRESS.
  1712. *
  1713. * USES CM - CM+4, S1 - S1+4, T1.
  1714. *
  1715. * CALLS CCP, CRS, GUO, TTB.
  1716. *
  1717. * MACROS ERROR, FCN, MULT4, UDTRD, UDTWT.
  1718. *
  1719.  
  1720.  
  1721. MAG SUBR ENTRY/EXIT
  1722. LDD IR+4
  1723. STM UDTA
  1724. RJM CRS CHECK RECALL STATUS
  1725. NJN MAG1 IF CALLED WITH AUTO-RECALL
  1726. LDD SI CHECK SUBSYSTEM ID
  1727. LMK MTSI
  1728. NJN MAG1 IF NOT CALLED BY *MAGNET*
  1729. UDTRD UTMS,/MTX/UTMS,1
  1730. LDM UTMS+4
  1731. LPN RSIL
  1732. ZJN MAG1 IF INTERLOCK NOT SET
  1733. LDM UTMS SET SUBFUNCTION CODE
  1734. ZJN MAG1 IF INCORRECT FUNCTION
  1735. SBN 1
  1736. MULT4 MULTIPLY (FUNCTION-1)*4
  1737. ADC -MAGAL
  1738. MJN MAG2 IF LEGAL FUNCTION
  1739. MAG1 ERROR ILR *TFM INCORRECT REQUEST.*
  1740.  
  1741. MAG2 LDM MAGA,T1 SET OVERLAY NAME
  1742. LPN 77
  1743. STM TFMA
  1744. LDM MAGA+1,T1 SET PROCESSOR ADDRESS
  1745. STM TFMB
  1746. LDM MAGA+2,T1 SET FILE ACCESS MODE
  1747. STM TFMC
  1748. UDTRD S1,/MTX/UTCI,1
  1749. LDD S1+1
  1750. ZJN MAG3 IF NO *POSMF* IN PROGRESS
  1751. UDTRD CM,/MTX/UCIB,1
  1752. LDD CM
  1753. SHN -2
  1754. LPC 377
  1755. LMN 22
  1756. ZJN MAG3 IF *CIO* FUNCTION NOT *POSMF*
  1757. * UJN MAG3 (*SKIP SETTING FUNCTION TO *CPPS*)
  1758. MAGB EQU *-1
  1759. LDM UTMS+4 SET *RE-ISSUE REQUEST*
  1760. SCN RSRR
  1761. LMN RSRR
  1762. STM UTMS+4
  1763. LDN CPPS*4-4 SET *CPPS* INTERNAL FUNCTION
  1764. STD T1
  1765. ISTORE MAGB,(UJN MAG3 ) SKIP SETTING FUNCTION TO *CPPS*
  1766. LJM MAG2 RESET FUNCTION
  1767.  
  1768. MAG3 LDM TFMC
  1769. SHN 21-12
  1770. MJN MAG5 IF NOT CHANGING CONTROL POINTS
  1771. RJM CCP CHANGE TO USER CONTROL POINT
  1772. ZJN MAG5 IF CONTROL POINT CHANGED
  1773. MAG4 LJM MAG7 JOB NOT AT CONTROL POINT
  1774.  
  1775. MAG5 UDTRD PBUN,/MTX/UUFN,1
  1776. UDTRD PESN,/MTX/UESN,1
  1777. UDTRD PVSN,/MTX/UISN,1
  1778. LDC 7S12+PBUN
  1779. RJM TTB TRIM TRAILING BLANKS
  1780. LDM TFMC CHECK IF PARAMETER BLOCK NEEDS UPDATE
  1781. SHN 21-11
  1782. PJN MAG6 IF NO UPDATE FROM UDT NEEDED
  1783. RJM GUO GET USER OPTIONS FROM UDT
  1784. MAG6 LJM MAGX RETURN
  1785.  
  1786. MAG7 LDM UTMS+4 SET REISSUE REQUEST
  1787. SCN RSRR
  1788. LMN RSRR
  1789. STM UTMS+4
  1790. LDM UTMS+3 SET WAIT FOR JOB ROLLIN
  1791. SCN WUJR
  1792. LMN WUJR
  1793. STM UTMS+3
  1794. MAG8 LJM EML EXIT TO MAIN LOOP
  1795.  
  1796.  
  1797. MAGA FCN BEGIN
  1798. FCN AVSS,AVF,2000+/PFM/PTWR ADVANCE VSN FILE
  1799. FCN CPPS,CPP,2000+/PFM/PTUP CLEAR *POSMF* CATALOG POINTER
  1800. FCN RFVS,AVF,2000+/PFM/PTUP REWIND TO FIRST VOLUME
  1801. FCN RTFS,RRF,3000+/PFM/PTUP RETURN/RESERVE TAPE FILE
  1802. FCN UCES,UCE,3000+/PFM/PTWR UPDATE CATALOG ENTRY
  1803. FCN VMFS,VMF,1000+/PFM/PTWR VALIDATE MULTI-FILE SET
  1804. FCN VTLS,VTL,3000+/PFM/PTWR VERIFY TAPE LABELS
  1805. MAGA FCN END
  1806. RSXF SPACE 4,10
  1807. *** RSXF - *RESEX* REQUEST FUNCTION.
  1808. *
  1809. * THIS FUNCTION IS CALLED ONLY BY *RESEX* ON
  1810. * FIRST REEL ASSIGNMENT. IT MUST BE CALLED
  1811. * WITH AUTO-RECALL SET BY A JOB WITH AN SSJ=
  1812. * ENTRY POINT.
  1813. *
  1814. * ENTRY (FC) = RSXF.
  1815. * (IR+3 - IR+4) = FET ADDRESS.
  1816. *
  1817. * EXIT (TFMA) = OVERLAY NAME.
  1818. * (TFMB) = PROCESSOR ADDRESS.
  1819. * (TFMC) = CATALOG ACCESS MODE.
  1820. *
  1821. * USES CM - CM+4, S1 - S1+4, T1.
  1822. *
  1823. * CALLS BPB, CFS, SUL.
  1824. *
  1825. * MACROS ERROR, FCN, LDA, MULT4.
  1826.  
  1827.  
  1828. RSX SUBR ENTRY/EXIT
  1829. LDN SSTL CHECK IF TMS IS ENABLED
  1830. CRD CM
  1831. LDD CM+2
  1832. SHN 21-0
  1833. PJN RSX1 IF TMS ENABLED
  1834. ERROR TMD *TMS DISABLED.*
  1835.  
  1836. RSX1 LDD CP CHECK FOR SSJ=
  1837. ADC SEPW
  1838. CRD CM
  1839. LDD CM
  1840. SHN 21-2
  1841. PJN RSX2 IF NO SSJ= ENTRY POINT
  1842. LDA IR+3,REL SET SUBFUNCTION CODE
  1843. CRD S1
  1844. LDD S1+4
  1845. SHN -3
  1846. LPN 77
  1847. ZJN RSX2 IF INCORRECT FUNCTION
  1848. SBN 1
  1849. MULT4 MULTIPLY (FUNCTION-1)*4
  1850. ADC -RSXAL
  1851. MJN RSX3 IF LEGAL FUNCTION
  1852. RSX2 ERROR ILR *TFM INCORRECT REQUEST.*
  1853.  
  1854. RSX3 LDM RSXA,T1 SET OVERLAY NAME
  1855. LPN 77
  1856. STM TFMA
  1857. LDM RSXA+1,T1 SET PROCESSOR ADDRESS
  1858. ZJN RSX2 IF NOT DEFINED
  1859. STM TFMB
  1860. LDM RSXA+2,T1 SET FILE ACCESS MODE
  1861. STM TFMC
  1862. LDM RSXA+3,T1
  1863. RJM CFS CHECK FET STATUS
  1864. RJM BPB BUILD PARAMETER BLOCK
  1865. LDM BPBA ADDRESS OF USERNAME
  1866. STD T0
  1867. LDI T0
  1868. ZJN RSX4 IF NO USERNAME
  1869. RJM SUL SET UDT ADDRESS FROM LOCAL FILE
  1870. LJM RSXX RETURN
  1871.  
  1872. RSX4 ERROR TPI *TMS PROCESSING INHIBITED.*
  1873.  
  1874. RSXA FCN BEGIN
  1875. FCN RFAS,RFA,/PFM/PTWR,4020 FIRST-REEL ASSIGNMENT
  1876. FCN RAPS,RAP,/PFM/PTWR,4020 ABORT PROCESSING
  1877. FCN MFAS,MFA,/PFM/PTWR,4020 MULTI-FILE SET ASSIGNMENT
  1878. RSXA FCN END
  1879. SSJF SPACE 4,10
  1880. *** SSJF - SSJ= REQUEST FUNCTION.
  1881. *
  1882. * THIS FUNCTION IS CALLED ONLY BY *TFSP*, THE
  1883. * TMS TAPE FILE SUPERVISOR. IT MUST BE CALLED
  1884. * WITH AUTO-RECALL SET BY A JOB WITH A SSJ=
  1885. * ENTRY POINT.
  1886. *
  1887. * ENTRY (FC) = SSJF.
  1888. * (IR+3 - IR+4) = FET ADDRESS.
  1889. *
  1890. * EXIT (TFMA) = OVERLAY NAME.
  1891. * (TFMB) = PROCESSOR ADDRESS.
  1892. * (TFMC) = CATALOG ACCESS MODE.
  1893. *
  1894. * USES CM - CM+4, S1 - S1+4, T1.
  1895. *
  1896. * CALLS BPB, CFS, CRS.
  1897. *
  1898. * MACROS ERROR, FCN, LDA, MULT4.
  1899.  
  1900.  
  1901. SSJ SUBR ENTRY/EXIT
  1902. RJM CRS CHECK RECALL STATUS
  1903. ZJN SSJ1 IF NOT CALLED WITH AUTO-RECALL
  1904. LDD CP
  1905. ADC SEPW
  1906. CRD CM
  1907. LDD CM CHECK FOR SSJ= ENTRY POINT
  1908. SHN 21-2
  1909. PJN SSJ1 IF NOT SSJ= JOB
  1910. LDA IR+3,REL SET SUBFUNCTION CODE
  1911. CRD S1
  1912. LDD S1+4
  1913. SHN -3
  1914. LPN 77
  1915. ZJN SSJ1 IF INCORRECT FUNCTION
  1916. SBN 1
  1917. MULT4 MULTIPLY (FUNCTION-1)*4
  1918. ADC -SSJAL
  1919. MJN SSJ2 IF LEGAL REQUEST CODE
  1920. SSJ1 ERROR ILR *TFM INCORRECT REQUEST.*
  1921.  
  1922. SSJ2 LDM SSJA,T1 SET OVERLAY NAME
  1923. LPN 77
  1924. STM TFMA
  1925. LDM SSJA+1,T1 SET PROCESSOR ADDRESS
  1926. ZJN SSJ1 IF NOT DEFINED
  1927. STM TFMB
  1928. LDM SSJA+2,T1 SET FILE ACCESS MODE
  1929. STM TFMC
  1930. LDM SSJA+3,T1
  1931. RJM CFS CHECK FET STATUS
  1932. RJM BPB BUILD PARAMETER BLOCK
  1933. LJM SSJX RETURN
  1934.  
  1935. SSJA FCN BEGIN
  1936. FCN AUCS,AUD,/PFM/PTRU,20 AUDIT TAPE CATALOG
  1937. FCN CUAS,CUA,/PFM/PTUP,4005 CLEAR UTILITY ACTIVE
  1938. FCN DVES,DVE,/PFM/PTWR,5 DELETE VSN ENTRY(S)
  1939. FCN GNSS,GNS,/PFM/PTWR,7 GET NEXT SCRATCH
  1940. FCN ICES,ICE,/PFM/PTWR,20 INSERT CATALOG ENTRY
  1941. FCN ISFS,ISF,/PFM/PTWR,4005 INITIALIZE FAMILY CATALOG
  1942. FCN IUES,IUE,/PFM/PTWR,5 INSERT USERNAME ENTRY(S)
  1943. FCN LAES,LAE,/PFM/PTRU,7 LIST ADMIT ENTRY(S)
  1944. FCN LVES,LVE,/PFM/PTUP,5 LIST VSN ENTRY(S)
  1945. FCN RAES,RAE,/PFM/PTWR,7 REPLACE/ADD ADMIT ENTRY(S)
  1946. FCN RCES,RCE,/PFM/PTUP,20 REPLACE CATALOG ENTRY
  1947. FCN RDRS,RDR,/PFM/PTRU,7 BLOCK READ REQUEST
  1948. FCN RTCS,RLS,/PFM/PTUP,4020 RELEASE TAPE CATALOG
  1949. FCN RVES,RAV,/PFM/PTWR,5 REPLACE/ADD VSN ENTRY(S)
  1950. FCN SUAS,SUA,/PFM/PTUP,4005 SET UTILTY ACTIVE
  1951. FCN WRRS,WRR,/PFM/PTUP,7 BLOCK REWRITE REQUEST
  1952. SSJA FCN END
  1953. TCSF SPACE 4,10
  1954. *** TCSF - TFM COMMAND FUNCTION.
  1955. *
  1956. * THIS FUNCTION REQUIRES NO SPECIAL VALIDATION
  1957. * AND IS USED TO PROCESS TMS SPECIFIC
  1958. * COMMAND REQUESTS. IT MUST BE CALLED WITH
  1959. * AUTO-RECALL SET AND TMS ENABLED.
  1960. *
  1961. * ENTRY (FC) = TCSF.
  1962. * (IR+3 - IR+4) = FET ADDRESS.
  1963. *
  1964. * EXIT (TFMA) = OVERLAY NAME.
  1965. * (TFMB) = PROCESSOR ADDRESS.
  1966. * (TFMC) = CATALOG ACCESS MODE.
  1967. *
  1968. * USES CM - CM+4, S1 - S1+4, T1.
  1969. *
  1970. * CALLS BPB, CFS, CRS.
  1971. *
  1972. * MACROS ERROR, FCN, LDA, MULT4.
  1973.  
  1974.  
  1975. TCS SUBR ENTRY/EXIT
  1976. LDN SSTL CHECK IF TMS IS ENABLED
  1977. CRD CM
  1978. LDD CM+2
  1979. SHN 21-0
  1980. PJN TCS1 IF TMS ENABLED
  1981. ERROR TMD *TMS DISABLED.*
  1982.  
  1983. TCS1 RJM CRS CHECK RECALL STATUS
  1984. ZJN TCS2 IF NOT CALLED WITH AUTO-RECALL
  1985. LDA IR+3,REL SET SUBFUNCTION CODE
  1986. CRD S1
  1987. LDD S1+4
  1988. SHN -3
  1989. LPN 77
  1990. ZJN TCS2 IF INCORRECT FUNCTION
  1991. SBN 1
  1992. MULT4 MULTIPLY (FUNCTION-1)*4
  1993. ADC -TCSAL
  1994. MJN TCS3 IF LEGAL FUNCTION
  1995. TCS2 ERROR ILR *TFM INCORRECT REQUEST.*
  1996.  
  1997. TCS3 LDM TCSA,T1 SET OVERLAY NAME
  1998. LPN 77
  1999. STM TFMA
  2000. LDM TCSA+1,T1 SET PROCESSOR ADDRESS
  2001. ZJN TCS2 IF NOT DEFINED
  2002. STM TFMB
  2003. LDM TCSA+2,T1 SET FILE ACCESS MODE
  2004. STM TFMC
  2005. LDM TCSA+3,T1
  2006. RJM CFS CHECK FET STATUS
  2007. RJM BPB BUILD PARAMETER BLOCK
  2008. LDM BPBA ADDRESS OF USERNAME
  2009. STD T0
  2010. LDI T0
  2011. ZJN TCS4 IF NO USERNAME
  2012. LJM TCSX RETURN
  2013.  
  2014. TCS4 ERROR TPI *TMS PROCESSING INHIBITED.*
  2015.  
  2016. TCSA FCN BEGIN
  2017. FCN RSVS,RSV,/PFM/PTUP,4005 RESERVE
  2018. FCN ADMS,ADM,/PFM/PTWR,4020 ADMIT
  2019. FCN AUDS,AUD,/PFM/PTRU,20 AUDIT
  2020. FCN AMDS,AMD,/PFM/PTUP,4020 AMEND
  2021. FCN RLSS,RLS,/PFM/PTUP,4020 RELEASE
  2022. FCN GVSS,GVS,/PFM/PTRU,5 GET VSN
  2023. TCSA FCN END
  2024. SPACE 4
  2025. TITLE RESIDENT SUBFUNCTIONS (LEVEL 2).
  2026. CUAS SPACE 4,10
  2027. *** CUAS - CLEAR UTILITY ACTIVE.
  2028. *
  2029. * *CUAS* IS CALLED ONLY BY *TFSP* TO CLEAR THE
  2030. * INTERLOCKS WHICH WERE SET BY A PREVIOUS CALL.
  2031. *
  2032. * ENTRY (BA) = BUFFER ADDRESS.
  2033. * (BP) = BUFFER POINTER.
  2034. * (FA) = CATALOG FNT ORDINAL.
  2035. * (RI - RI+1) = RANDOM ADDRESS OF *TMST*
  2036. * *TMST* READ TO (BA).
  2037. *
  2038. * EXIT *TMST* REWRITTEN.
  2039. * TMS EVENT ISSUED.
  2040. *
  2041. * USES CM - CM+4.
  2042. *
  2043. * CALLS WRP.
  2044. *
  2045. * MACROS MONITOR.
  2046.  
  2047.  
  2048. CUA ENTRY ENTRY/EXIT
  2049. LDM SBST+1,BP CLEAR UTILITY ACTIVE INTERLOCK
  2050. SCN UITS
  2051. STM SBST+1,BP
  2052. RJM WRP WRITE RANDOM PRU
  2053. LDN ZERL ENTER TMS EVENT
  2054. CRD CM
  2055. LDN ESUA
  2056. STD CM+4
  2057. MONITOR EATM
  2058. UJN CUAX RETURN
  2059. SUAS SPACE 4,10
  2060. *** SUAS - SET UTILITY ACTIVE.
  2061. *
  2062. * *SUAS* IS USED BY *TFSP* TO SET THE UTILITY
  2063. * INTERLOCK SO THAT ONLY *TFSP* CAN HAVE
  2064. * ACCESS TO THE CATALOG.
  2065. *
  2066. * ENTRY (BA) = BUFFER ADDRESS.
  2067. * (BP) = BUFFER POINTER.
  2068. * (FA) = CATALOG FNT ORDINAL.
  2069. * *TMST* READ TO (BA).
  2070. *
  2071. * EXIT UTILITY ACTIVE AND JOB SEQUENCE
  2072. * NNUMBER SET IN *TMST*.
  2073. *
  2074. * USES CM - CM+4.
  2075. *
  2076. * CALLS WRP.
  2077.  
  2078.  
  2079. SUA ENTRY ENTRY/EXIT
  2080. LDM SBST+1,BP SET UTILITY INTERLOCK STATUS
  2081. SCN UITS
  2082. LMN UITS
  2083. STM SBST+1,BP
  2084. RJM WRP WRITE RANDOM PRU
  2085. UJN SUAX RETURN
  2086. VMF SPACE 4,10
  2087. *** VMF - VALIDATE MULTI-FILE SET ACCESS.
  2088. *
  2089. * ENTRY (UTMS+2) = 0 IF FILE NOT WRITTEN TO.
  2090. *
  2091. * EXIT TO *RDC* IF CURRENT FILE WAS WRITTEN ON.
  2092. * TO *PMF* IF CURRENT FILE WAS ONLY READ.
  2093. *
  2094. * CALLS CME, PMF, RDC.
  2095. *
  2096. * MACROS EXOVL.
  2097.  
  2098.  
  2099. VMF ENTRY ENTRY/EXIT
  2100. RJM CME CHECK FOR MEDIA ERROR
  2101. LDM UTMS+2
  2102. NJN VMF1 IF FILE WRITTEN TO
  2103. EXOVL PMF PROCESS MULTI-FILE REQUEST
  2104.  
  2105. VMF1 EXOVL RDC RELEASE DELETED CATALOG ENTRIES
  2106. AVF SPACE 4,10
  2107. *** AVF - ADVANCE VSN FILE.
  2108. *
  2109. * *AVF* CALL *CME* TO DETERMINE IF ERROR AND MAINTENANCE FLAGS
  2110. * SHOULD BE SET, AND CALL *AVS* TO SET THE NEXT VOLUME
  2111. * OF TAPE IN THE UDT.
  2112. *
  2113. * ENTRY NONE.
  2114. *
  2115. * EXIT TO *AVS* TO ADVANCE VSN FILE.
  2116. *
  2117. * CALLS AVS, CME.
  2118. *
  2119. * MACROS EXOVL.
  2120.  
  2121.  
  2122. AVF ENTRY ENTRY/EXIT
  2123. RJM CME CHECK FOR MEDIA ERRORS
  2124. EXOVL AVS ADVANCE VSN FILE
  2125. RRF SPACE 4,10
  2126. *** RRF - RETURN/RESERVE TAPE FILE.
  2127. *
  2128. * *RRF* CALL *CME* TO DETERMINE IF ERROR AND MAINTENANCE FLAGS
  2129. * SHOULD BE SET AND CALL *RTF* TO PROCESS RETURN TAPE FILES.
  2130. *
  2131. * ENTRY NONE.
  2132. *
  2133. * EXIT TO *RTF* TO RETURN TAPE FILES.
  2134. *
  2135. * CALLS CME, RTF.
  2136. *
  2137. * MACROS EXOVL.
  2138.  
  2139.  
  2140. RRF ENTRY ENTRY/EXIT
  2141. RJM CME CHECK FOR MEDIA ERRORS
  2142. EXOVL RTF RETURN TAPE FILES.
  2143. CME SPACE 4,10
  2144. *** CME - CHECK FOR MEDIA ERRORS.
  2145. *
  2146. * ENTRY NONE.
  2147. *
  2148. * EXIT THE ERROR AND MAINTENANCE FLAGS ARE SET IN THE VSN
  2149. * ENTRY, AND DATA ERROR WILL BE FLAGGED IN THE
  2150. * CATALOG ENTRY, IF THE UNRECOVERED FLAG IS SET.
  2151. *
  2152. * USES BA, CI, KA, RI - RI+1,
  2153. *
  2154. * CALLS GIB, MBP, RRP, VIS, VSP, WRP.
  2155. *
  2156. * MACROS SAVEP, UDTRD, UDTWT.
  2157.  
  2158.  
  2159. CME5 LDN 0
  2160. STM UTMS+1 CLEAR THE RECOVERED ERROR COUNT
  2161. LDM UTMS+4
  2162. LPC 7577
  2163. STM UTMS+4 CLEAR THE UNRECOVERED ERROR FLAG
  2164. UDTWT UTMS,/MTX/UTMS,1
  2165. LDC BUF0 RESTORE SYSTEM BLOCK
  2166. STD BA
  2167. LDN TMSB
  2168. STD RI+1
  2169. SHN -14
  2170. STD RI
  2171. RJM GIB GET INITIAL BLOCK
  2172. LDM CWFE,BA
  2173. RJM MBP MOVE BUFFER POINTERS
  2174. SAVEP CPSB SAVE BUFFER POINTERS
  2175.  
  2176. CME SUBR ENTRY/EXIT
  2177. UDTRD CM,/MTX/UTCI,1 READ CATALOG ENTRY
  2178. LDD CM+3
  2179. SHN 14
  2180. STD CI
  2181. SHN -14
  2182. STD RI
  2183. LDD CM+4
  2184. STD RI+1
  2185. LDC BUF0 SET BUFFER
  2186. STD BA
  2187. RJM RRP GET INITIAL BLOCK (CATALOG)
  2188. RJM VSP VERIFY/SET CATALOG POINTERS
  2189. MJP CMEX IF ERROR IN CATALOG INDEX
  2190. LDM UTMS+4
  2191. SHN 21-7
  2192. MJN CME2 IF UNRECOVERED ERROR FLAG SET
  2193. LDC REMT
  2194. NJN CME1 IF NOT DISABLES RECOVERED ERROR THRESHOLD
  2195. LJM CME5 CLEAR THE UNRECOVERED ERROR FLAG
  2196.  
  2197. CME1 SBM UTMS+1
  2198. MJN CME3 IF COUNT GREATER THAN THRESHOLD LIMIT
  2199. ZJN CME3 IF COUNT EQUAL TO THRESHOLD LIMIT
  2200. LJM CME5 IF COUNT LESS THAN THRESHOLD LIMIT
  2201.  
  2202. CME2 LDM CBST,BP
  2203. SCN 2
  2204. LMN 2
  2205. STM CBST,BP SET DATA ERROR FLAG IN CATALOG ENTRY
  2206. RJM WRP WRITE RANDOM PRU
  2207. CME3 LDC PESN FIND CURRENT VSN
  2208. STD KA
  2209. RJM VIS VSN INDEXED SEARCH
  2210. ZJN CME4 IF VSN FOUND
  2211. LJM CMEX RETURN
  2212.  
  2213. CME4 LDM VBST,BP
  2214. SCN HMVS/10000
  2215. LMN HMVS/10000
  2216. STM VBST,BP SET MAINTENANCE FLAG IN VSN ENTRY
  2217. LDM VBST+1,BP
  2218. SCN ERVS
  2219. LMN ERVS
  2220. STM VBST+1,BP SET ERROR FLAG IN VSN ENTRY
  2221. RJM WRP WRITE RANDOM PRU
  2222. LJM CME5 CLEAR UNRECOVERED FLAG
  2223. SPACE 4
  2224. *** COMMON DECKS.
  2225.  
  2226.  
  2227. BSE$ EQU 1 DEFINE BSE - BACKSPACE ON ENTRY
  2228. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  2229. GNL$ EQU 1 DEFINE GNL - GET NEXT LINK
  2230. GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK
  2231. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY
  2232. PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX
  2233. SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS
  2234. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER
  2235. SVB$ EQU 1 DEFINE SVB - SET VSN BUSY
  2236. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  2237. UTR$ EQU 1 DEFINE UTR - UPDATE TRT
  2238. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  2239. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  2240. *CALL COMPTFM
  2241. TITLE PRESET TAPE FILE MANAGER (LEVEL 2).
  2242. PRS SPACE 4,10
  2243. ** PRS - PRESET PROGRAM.
  2244. *
  2245. * ENTRY (FC) = RA+1 REQUEST FUNCTION.
  2246. *
  2247. * EXIT (BUF0) = *TMST* FROM CATALOG.
  2248. * (MFID) = MACHINE ID.
  2249. *
  2250. * USES CM - CM+4, CN - CN+4, S2 - S2+4, FC, FO, FN - FN+4,
  2251. * T1, T3.
  2252. *
  2253. * CALLS AFC, AST, EML,MAG , RCL, RSX, SFN, SSJ, TCS.
  2254. *
  2255. * MACROS COMPARE, ERROR, INDEX, MMOVE.
  2256.  
  2257.  
  2258. PRS SUBR ENTRY/EXIT
  2259. LDN 0 CLEAR CATALOG ADDRESS
  2260. STD FO
  2261. LDD CP READ JOB STATUS
  2262. ADN STSW
  2263. CRD CN
  2264. ADN JCIW-STSW READ SUBSYSTEM ID
  2265. CRD S2
  2266. LDD CN+1
  2267. NJP EML IF ERROR FLAG SET
  2268. LDC MMFL SET MACHINE ID
  2269. CRD CM
  2270. LDD CM
  2271. STM MFID
  2272. LDD IR+2 CHECK FUNCTION CODE
  2273. LPN 77
  2274. STD FC
  2275. LDD FC
  2276. SBN MXNR
  2277. MJN PRS2 IF LEGAL REQUEST TYPE
  2278. PRS1 ERROR ILR *TFM INCORRECT REQUEST.*
  2279.  
  2280. PRS2 LDM PRSB,FC SET PROCESSOR ADDRESS
  2281. STM PRSA
  2282. RJM **
  2283. PRSA EQU *-1 (PROCESSOR ADDRESS)
  2284. LDM TFMC
  2285. SHN 21-13
  2286. MJP PRSX IF NOT ATTACHING THE CATALOG
  2287. LDD FC CHECK ACCESS TYPE
  2288. LMN SSJF
  2289. NJN PRS3 IF NOT PROCESSING LOCAL FILE
  2290. LDA IR+3,REL
  2291. CRD FN
  2292. LDD FN
  2293. ZJN PRS3 IF NOT PROCESSING LOCAL FILE
  2294. LDM TFMC SET LOCAL FILE MODE
  2295. SCN 77
  2296. LMN /PFM/PTLM
  2297. STM TFMC
  2298. UJN PRS6 SET FAMILY NAME
  2299.  
  2300. * PRESET FAST ATTACH CATALOG ACCESS.
  2301.  
  2302. PRS3 LDK AFAAL SET SYSTEM FILE *AFA*
  2303. STD T1
  2304. PRS4 SOD T1
  2305. MJN PRS5 IF SUBROUTINE MOVED
  2306. LDM PRSD,T1
  2307. STM AFAA,T1
  2308. UJN PRS4 CHECK NEXT WORD OF ROUTINE
  2309.  
  2310. PRS5 LDK FNTP GET SYSTEM FNT ADDRESS
  2311. CRD CM
  2312. LDD CM SAVE SYSTEM FNT ADDRESS
  2313. SHN 14
  2314. ADD CM+1
  2315. STM AFAB+1
  2316. SHN -14
  2317. RAM AFAB
  2318. PRS6 RJM SFN SET FAMILY NAME
  2319. RJM AFC ACCESS FAMILY CATALOG
  2320. LDD FC
  2321. LMN SSJF
  2322. ZJN PRS7 IF SSJF FUNCTION
  2323. LDM SBLF,BP
  2324. PRS7 ZJP PRS9 IF NOT LINKED CATALOG
  2325. LDM TFMC SET MODE
  2326. LPN 77
  2327. STD T2
  2328. LDD FO SET FNT ORDINAL
  2329. STD T1
  2330. LDN RFAS RETURN CURRENT CATALOG
  2331. RJM ARF
  2332. LDN 0 CLEAR FNT ORDINAL
  2333. STD FO
  2334. MMOVE PFAM,,PRSA,,FNKL SAVE CURRENT FAMILY NAME
  2335. MMOVE SBLF,BP,PFAM,,FNKL SET LINKED FAMILY NAME
  2336. RJM AFC ACCESS LINKED CATALOG
  2337. LDD BP SET PERMITTED FAMILY LIST ADDRESS
  2338. ADK SBPF
  2339. STD T3
  2340. PRS8 COMPARE ,T3,PRSA,,FNKL CHECK NEXT ENTRY
  2341. ZJN PRS9 IF MATCH
  2342. LDN 5 INCREMENT ENTRY ADDRESS
  2343. RAD T3
  2344. SBD BP
  2345. LMK SBPF+PAFL*5
  2346. NJN PRS8 IF NOT END OF ENTRIES
  2347. ERROR CNA *LINKED CATALOG NOT ACCESSIBLE.*
  2348.  
  2349. PRS9 LDM SBST+1,BP CHECK CATALOG STATUS
  2350. SHN 21-2
  2351. PJN PRS11 IF NOT CATALOG ERROR
  2352. LDD FC CHECK FUNCTION
  2353. LMN SSJF
  2354. NJN PRS10 IF NOT SSJ= FUNCTION
  2355. LDA IR+3,REL CHECK SUBFUNCTION
  2356. CRD CM
  2357. LDD CM+4
  2358. SHN -3
  2359. LPN 77
  2360. LMN ISFS
  2361. NJN PRS11 IF NOT *ISF* SUBFUNCTION
  2362. LDD CM+4 SET OPERATOR NOTIFICATION REQUIRED
  2363. LPN 4
  2364. SHN 3-2
  2365. RAM TFMF
  2366. PRS10 ERROR FCE *(FAMILY) CATALOG ERROR.*
  2367.  
  2368. PRS11 LDM SBST+1,BP CHECK IDLE FLAG
  2369. SHN 21-1
  2370. PJN PRS12 IF NOT SUSPEND ACTIVITY
  2371. LDD FC
  2372. LMN RSXF
  2373. NJN PRS12 IF NOT CALLED BY *RESEX*
  2374. ERROR SFA *(FAMILY) ACTIVITY SUSPENDED.*
  2375.  
  2376. PRS12 LDM SBST+1,BP CHECK UTILITY INTERLOCK
  2377. SHN 21-0
  2378. PJN PRS14 IF NOT UTILITY INTERLOCK
  2379. LDD FC
  2380. LMN SSJF
  2381. ZJN PRS14 IF CALLED BY SSJ= JOB
  2382. PRS13 ERROR TUA *TMS UTILITY ACTIVE.*
  2383.  
  2384. PRS14 LDM CWUN,BA
  2385. ZJN PRS15 IF NO CATALOG USERNAME
  2386. COMPARE PBUN,,CWUN,BA,UNKL
  2387. NJN PRS15 IF NOT USERNAME INTERLOCK FROM *TFSP*
  2388. LDD FC
  2389. LMN SSJF
  2390. NJN PRS13 IF NOT *TFSP* CALL
  2391. PRS15 LDM SBHP,BP SET HOLE POINTER
  2392. STM CPEB
  2393. LDM SBHP+1,BP
  2394. STM CPEB+1
  2395. LJM PRSX RETURN
  2396.  
  2397. PRSB INDEX TABLE OF FUNCTION PROCESSORS
  2398. INDEX TCSF,TCS COMMAND PROCESSOR
  2399. INDEX RSXF,RSX *RESEX* PROCESSOR
  2400. INDEX MAGF,MAG *MAGNET* PROCESSOR
  2401. INDEX SSJF,SSJ SSJ= PROCESSOR
  2402. INDEX MXNR
  2403.  
  2404. PRSD BSS 0 SYSTEM FILE *AFA* ROUTINE
  2405. LOC AFAA
  2406. CFI FNT GET FST ADDRESS FOR SYSTEM FILE
  2407. AFAB ADC **
  2408. ADN FSTG
  2409. * NFA FO,R GET FST ADDRESS FOR LOCAL FILE
  2410. * ADN FSTL
  2411. AFAAL EQU *-AFAA ROUTINE LENGTH
  2412. LOC *O
  2413. TITLE PRESET SUBROUTINES (LEVEL 2).
  2414. BPB SPACE 4,10
  2415. ** BPB - BUILD PARAMETER BLOCK.
  2416. *
  2417. * BUILDS A PARAMETER BLOCK FROM CONTROL POINT
  2418. * VALUES AND THE FET.
  2419. *
  2420. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  2421. *
  2422. * EXIT (PBUN - PBUN+4) = ACCESS USERNAME.
  2423. * (PCHG - PCHG+4) = CHARGE NUMBER.
  2424. * (PPRJ - PPRJ+12B) = PROJECT NUMBER.
  2425. * (PBUF - PBUF+55B) = FET PARAMETERS.
  2426. *
  2427. * USES CM - CM+4, T1, T2.
  2428. *
  2429. * CALLS CCS.
  2430. *
  2431. * MACROS CLEAR, LDA.
  2432.  
  2433.  
  2434. BPB SUBR ENTRY/EXIT
  2435. LDA IR+3,REL SET PARAMETER BLOCK WORD COUNT
  2436. ADN 1
  2437. CRD CM
  2438. LDD CM+3
  2439. SHN -6
  2440. SBN TFFP-5
  2441. ZJN BPBX IF NO FET PARAMETER BLOCK
  2442. MJN BPBX IF NO FET PARAMETER BLOCK
  2443. STD T1
  2444. SBN TFPL+1
  2445. MJN BPB1 IF FET LENGTH .LT. MAXIMUM
  2446. LDN TFPL SET FET PARAMETER LENGTH
  2447. STD T1
  2448. BPB1 LDA IR+3,REL GET FET PARAMETER BLOCK
  2449. CRD CM
  2450. ADN TFFP
  2451. CRM PBUF,T1
  2452. LDA PAUN+3,ABS SAVE TAPE MANAGER OPTIONS
  2453. STM BPBB+1
  2454. SHN -14
  2455. RAM BPBB
  2456. LDM PAUN
  2457. ZJN BPB3 IF NOT ALTERNATE USER ACCESS
  2458. LDD FC
  2459. LMN TCSF
  2460. NJN BPB2 IF NOT COMMAND
  2461. LDD CM+4
  2462. SHN -3
  2463. LPN 77
  2464. LMN AUDS
  2465. NJN BPB3 IF NOT *AUDIT* SUBFUNCTION
  2466. BPB2 LDC PAUN SWAP USERNAMES
  2467. STM BPBA
  2468. MMOVE PAUN,,PBUN,,UNKL
  2469. BPB3 LDD CP CHECK FOR SSJ= JOB
  2470. ADC SEPW
  2471. CRD CM
  2472. LDD CM
  2473. SHN 21-2
  2474. PJN BPB4 IF NOT SSJ= JOB
  2475. LDA CM+3 CHECK FOR SSJ= BLOCK
  2476. ZJN BPB4 IF NO SSJ= BLOCK
  2477. LDA CM+3,REL GET USERNAME FROM SSJ= BLOCK
  2478. ADN /SSJ/UIDS
  2479. UJN BPB5 SET USERNAME
  2480.  
  2481. BPB4 LDD CP GET USERNAME FROM CONTROL POINT
  2482. ADN UIDW
  2483. BPB5 CRM PBUN,ON SET USERNAME
  2484. BPBA EQU *-1 (PAUN IF ALTERNATE USER)
  2485. LDM PAUN+3 SET TAPE MANAGER OPTIONS.
  2486. SCN 77
  2487. STM PAUN+3
  2488. LDC **
  2489. BPBB EQU *-2 (TO=OPTIONS FROM FET)
  2490. STM PBTO+1
  2491. SHN -14
  2492. RAM PBTO
  2493. COMPARE PBUN,,PAUN,,UNKL
  2494. NJN BPB6 IF NOT USERS CATALOG
  2495. CLEAR PAUN,,UNKL
  2496. LDC PBUN USERNAME IN PBUN
  2497. STM BPBA
  2498. BPB6 LJM BPBX RETURN
  2499. AFC SPACE 4,10
  2500. ** AFC - ACCESS FAMILY TAPE CATALOG.
  2501. *
  2502. * ENTRY (FO) = 0.
  2503. * (FN - FN+4) = FNT ENTRY IF LOCAL FILE MODE.
  2504. *
  2505. * EXIT (A) = 0 IF CATALOG ATTACHED.
  2506. * (A) .NE. 0 IF CATALOG BUSY.
  2507. * (FO) = GLOBAL FNT ORDINAL OR NFL ADDRESS OF CATALOG.
  2508. * SYSTEM BLOCK READ TO BUF0 BUFFER IF CATALOG ATTACHED.
  2509. *
  2510. * USES BA, CM - CM+4, FO, FN - FN+4, RI - RI+1, T1, T5 - T5+4.
  2511. *
  2512. * CALLS AFA, ARF, FAT, GIB, IRA, MBP, SAF, SFB, UTR.
  2513. *
  2514. * MACROS ERROR, MMOVE, SAVEP.
  2515.  
  2516.  
  2517. AFC SUBR ENTRY/EXIT
  2518. LDM TFMC
  2519. LPN 77
  2520. LMN /PFM/PTLM
  2521. NJN AFC3 IF NOT LOCAL FILE MODE
  2522. RJM SAF SEARCH FOR ASSIGNED FILE
  2523. LDD FA SET NFL ADDRESS
  2524. ZJN AFC1 IF FILE NOT FOUND
  2525. STD FO SET FILE ADDRESS
  2526. RJM SFB SET FILE BUSY
  2527. ZJP AFC4 IF FILE SET BUSY
  2528. LMN 2
  2529. ZJN AFC1 IF NAME COMPARE ERROR
  2530. ERROR IOS *I/O SEQUENCE ERROR ON CATALOG.*
  2531.  
  2532. AFC1 ERROR CNF *CATALOG NOT FOUND.*
  2533.  
  2534. AFC2 ERROR FCE *(FAMILY) CATALOG ERROR.*
  2535.  
  2536. AFC3 MMOVE AFCA,,CM,,PFKL SET CATALOG NAME
  2537. MMOVE PFAM,,FN,,PFKL SET FAMILY NAME
  2538. RJM FAT SEARCH FOR FAST ATTACH FILE
  2539. NJN AFC1 IF FILE NOT FOUND
  2540. LDD T1 SET GLOBAL FNT ORDINAL
  2541. STD FO
  2542. LDM TFMC SET FILE ACCESS MODE
  2543. LPN 77
  2544. STD T2
  2545. LDN /COMSCPS/AFAS ATTACH CATALOG FILE
  2546. RJM ARF
  2547. RJM UTR UPDATE TRT
  2548. AFC4 LDD FO GET FST ADDRESS
  2549. RJM AFA
  2550. CRD T5 SET EQUIPMENT
  2551. RJM IRA INITIALIZE RANDOM ADDRESS PROCESSING
  2552. SFA EST,T5 READ EST ENTRY
  2553. CRD CM
  2554. LDD CM+4 READ MACHINE INDEX
  2555. SHN 3
  2556. ADN DULL
  2557. CRD CM
  2558. LDD CM+2 SET MACHINE INDEX-1
  2559. LPN 17
  2560. STM CDMX
  2561. LDC BUF0 READ SYSTEM BLOCK
  2562. STD BA
  2563. LDN TMSB
  2564. STD RI+1
  2565. SHN -14
  2566. STD RI
  2567. RJM GIB GET INITIAL BLOCK (SYSTEM BLOCK)
  2568. LDN 6 COUNT = 1 CM WORD + 2 HEADER BYTES - 1
  2569. STD T1
  2570. AFC5 LDM BUF0,T1
  2571. LMM AFCB,T1
  2572. NJP AFC2 IF NOT SYSTEM BLOCK
  2573. SOD T1
  2574. PJN AFC5 IF MORE TO COMPARE
  2575. LDM CWFE,BA
  2576. RJM MBP MOVE BUFFER POINTER
  2577. SAVEP CPSB SAVE BUFFER POINTERS
  2578. LDN 0 SET NO ERROR
  2579. LJM AFCX RETURN
  2580.  
  2581. AFCA VFD 48D/0L"TMFC" TMS CATALOG NAME
  2582. AFCB CON 2 NEXT SECTOR
  2583. CON 100 WORD COUNT
  2584. CON 0 SYSTEM LEVEL
  2585. CON 0 UNUSED WORDS
  2586. CON 74 ENTRY LENGTH
  2587. CON 1 NUMBER ENTRIES
  2588. CON 4 FIRST WORD OF ENTRY
  2589. CCP SPACE 4,10
  2590. ** CCP - CHANGE CONTROL POINT.
  2591. *
  2592. * EXIT (A) = 0 IF CONTROL POINT CHANGED.
  2593. * (A) .NE. 0 IF CONTROL POINT NOT CHANGED.
  2594. *
  2595. * USES CM - CM+4, S1 - S1+4, T1 - T5.
  2596. *
  2597. * MACROS MONITOR, UDTRD.
  2598.  
  2599.  
  2600. CCP SUBR ENTRY/EXIT
  2601. UDTRD S1,/MTX/UVRI,1 GET EJT ORDINAL
  2602. SFA EJT,S1
  2603. ADK JSNE
  2604. CRD CM
  2605. ADK SCHE-JSNE
  2606. CRD T1
  2607. LDD CM+4
  2608. LPC 176
  2609. LMN EXJS*2
  2610. NJN CCPX IF JOB ROLLED OR ROLLING OUT
  2611. LDD T1+3 SET CP NUMBER
  2612. ADK /COMSCPS/ALCS SET ALTERNATE CP OPTION
  2613. STD CM+1
  2614. MONITOR CCAM CHANGE CONTROL POINT ASSIGNMENT
  2615. LDD CM+1
  2616. NJN CCPX IF CHANGE NOT MADE
  2617. LDD CP
  2618. ADK TFSW
  2619. CRD CM
  2620. LDD CM VERIFY EJT ORDINAL
  2621. LMD S1
  2622. ZJN CCP1 IF CORRECT JOB
  2623. LDK /COMSCPS/ALCS SET RETURN TO MAGNET CP
  2624. STD CM+1
  2625. MONITOR CCAM RETURN TO MAGNET CP
  2626. LDN 1 SET CP NOT CHANGED
  2627. CCP1 LJM CCPX RETURN
  2628. CFS SPACE 4,10
  2629. ** CFS - CHECK FET STATUS.
  2630. *
  2631. * *CFS* CHECKS THE VALIDITY OF THE FET POINTERS.
  2632. *
  2633. * ENTRY (A) = MINIMUM FET LENGTH.
  2634. * (IR+3 - IR+4) = FET ADDRESS.
  2635. *
  2636. * EXIT FT - FT+1 = FIRST POINTER.
  2637. * IN - IN+1 = IN POINTER.
  2638. * OT - OT+1 = OUT POINTER.
  2639. * LM - LM+1 = LIMIT POINTER.
  2640. *
  2641. * USES T0, CM - CM+4.
  2642. *
  2643. * MACROS LDA.
  2644.  
  2645.  
  2646. CFS SUBR ENTRY/EXIT
  2647. STD S1
  2648. LDD IN-3 SAVE OVERLAP WORD
  2649. STD T0
  2650. LDA IR+3,REL
  2651. ADN 4 READ LIMIT
  2652. CRD LM-3
  2653. SBN 1 READ OUT
  2654. CRD OT-3
  2655. SBN 1 READ IN
  2656. CRD IN-3
  2657. SBN 1 READ FIRST
  2658. CRD T1
  2659. SBN 1
  2660. CRD CM
  2661. LDD CM+4
  2662. SHN 21-0
  2663. MJN CFS1 IF FET COMPLETE
  2664. LDD CM+3 CHECK LAST STATUS
  2665. LPN 77
  2666. SHN 14
  2667. LMD CM+4
  2668. SHN -11
  2669. NJN CFS1 IF ERRORS ON PREVIOUS OPERATION
  2670. LDD T0 RESTORE OVERLAP WORD
  2671. STD IN-3
  2672. LDD S1
  2673. SHN 21-13
  2674. MJP CFSX IF NOT CHECKING BUFFER POINTERS
  2675. LDD T1+3 SET FIRST
  2676. LPN 77
  2677. STD FT
  2678. LDD T1+4
  2679. STD FT+1
  2680. LDD LM CHECK LIMIT
  2681. LPN 37
  2682. STD LM
  2683. SHN 14
  2684. LMD LM+1
  2685. SBN 1
  2686. SHN -6
  2687. SBD FL
  2688. MJN CFS2 IF LIMIT .LT. FL
  2689. CFS1 ERROR BAE *BUFFER ARGUMENT ERROR.*
  2690.  
  2691. CFS2 LDD OT CHECK OUT
  2692. LPN 37
  2693. STD OT
  2694. SBD LM
  2695. SHN 14
  2696. ADD OT+1
  2697. SBD LM+1
  2698. PJN CFS1 IF OUT .GE. LIMIT
  2699. LDD IN CHECK IN
  2700. LPN 37
  2701. STD IN
  2702. SBD LM
  2703. SHN 14
  2704. ADD IN+1
  2705. SBD LM+1
  2706. PJN CFS1 IF IN .GE. LIMIT
  2707. LDD OT CHECK OUT
  2708. SBD FT
  2709. SHN 14
  2710. ADD OT+1
  2711. SBD FT+1
  2712. MJN CFS1 IF OUT .LT. FIRST
  2713. LDD IN CHECK IN
  2714. SBD FT
  2715. SHN 14
  2716. ADD IN+1
  2717. SBD FT+1
  2718. MJN CFS1 IF IN .LT. FIRST
  2719. LJM CFSX RETURN
  2720. GUO SPACE 4,10
  2721. ** GUO - GET USER OPTIONS FROM UDT.
  2722. *
  2723. * *GUO* IS USED TO OBTAIN THE USER OPTIONS, INSURING
  2724. * THE PHYSICAL TAPE ATTRIBUTES IN THE CATALOG MATCH
  2725. * HOW THE TAPE WAS WRITTEN. THIS IS NECESSARY IF
  2726. * THE USER REQUESTS A TAPE FILE WITH THE TO=D
  2727. * OPTION AND WRITES TO A EXISTING TAPE FILE.
  2728. *
  2729. * ENTRY (UDTA) = UDT ADDRESS.
  2730. *
  2731. *
  2732. * USES CM - CM+4, FN - FN+4, S1 - S1+4,
  2733. * S2 - S2+4, S3 - S3+4.
  2734. *
  2735. * MACROS LDA, MMOVE, UDTRD.
  2736.  
  2737.  
  2738. GUO SUBR ENTRY/EXIT
  2739. UDTRD S1,/MTX/UST1,4
  2740. LDD S1+4 GET RING STATUS
  2741. SHN 4-7
  2742. LPN 1S4
  2743. STM PFTD+1
  2744. LDD FN
  2745. LPC 3777 SET TAPE DESCRITPTORS
  2746. STM PFTD
  2747. LDD FN+2 SET FORMAT AND NOISE
  2748. STM PFTD+2
  2749. UDTRD CM,/MTX/UFSN,1
  2750. LDA CM+3,ABS SET FILE SECTION NUMBER
  2751. STM PBSN+1
  2752. SHN -14
  2753. STM PBSN
  2754. UDTRD CM,/MTX/USID,1
  2755. MMOVE CM,,PBSI,,6
  2756. LDD CM+3 SET FILE ACCESSIBILITY
  2757. SCN 77
  2758. RAM PBFA
  2759. UDTRD CM,/MTX/UGNU,1
  2760. LDA CM+3,ABS SET GENERATION NUMBER
  2761. STM PBGN+1
  2762. SHN -14
  2763. LPN 3
  2764. STM PBGN
  2765. LDD CM+3 SET VERSION NUMBER
  2766. SCN 77
  2767. SHN 6
  2768. LMD CM+2
  2769. SHN 11
  2770. SCN 7
  2771. RAM PBVN
  2772. LJM GUOX RETURN
  2773. SFN SPACE 4,10
  2774. ** SFN - SET FAMILY NAME.
  2775. *
  2776. * *SFN* SETS THE FAMILY NAME FROM THE *MST*,
  2777. * OR FROM THE UDT IF CALLED BY *MAGNET*.
  2778. *
  2779. * ENTRY (FC) = FUNCTION CODE.
  2780. *
  2781. * EXIT (PFAM - PFAM+3) = FAMILY NAME
  2782. *
  2783. * USES CM - CM+4.
  2784. *
  2785. * MACROS UDTRD.
  2786.  
  2787. SFN SUBR ENTRY/EXIT
  2788. LDD FC CHECK FOR *MAGNET* CALL
  2789. LMN MAGF
  2790. NJN SFN1 IF NOT CALLED BY *MAGNET*
  2791. UDTRD CM,/MTX/UUFN,1
  2792. LDD CM+3
  2793. LPN 77
  2794. STD CM+3
  2795. LDC FOTP READ *FOT* POINTER
  2796. CRD FN
  2797. LDD FN READ FWA OF *FOT*
  2798. SHN 14
  2799. LMD FN+1
  2800. ADD CM+3
  2801. UJN SFN2 READ FAMILY NAME
  2802.  
  2803. SFN1 LDD CP GET FAMILY EQUIPMENT
  2804. ADN PFCW
  2805. CRD CM
  2806. SFA EST,CM+3 READ EST ENTRY
  2807. CRD CM
  2808. LDD CM+4 GET FAMILY NAME
  2809. SHN 3
  2810. ADN PFGL
  2811. SFN2 CRM PFAM,ON
  2812. LDM PFAM+3
  2813. SCN 77
  2814. STM PFAM+3
  2815. LDN 0
  2816. STM PFAM+4
  2817. LJM SFNX RETURN
  2818. SUL SPACE 4,10
  2819. ** SUL - SET UDT ADDRESS FROM LOCAL FILE.
  2820. *
  2821. * SETS THE RELATIVE UDT ADDRESS FROM THE
  2822. * FST ENTRY OF A ASSIGNED MAGNETIC TAPE
  2823. * FILE AND UPDATES THE ASSIGNMENT FET WITH
  2824. * THE PARAMETERS FROM THE UDT.
  2825. *
  2826. * ENTRY (IR+3 - IR+4) FET ADDRESS.
  2827. *
  2828. * EXIT (UDTA) = UDT ADDRESS IF ASSIGNED
  2829. * MAGNETIC TAPE FILE.
  2830. *
  2831. * PARAMETER BLOCK UPDATED.
  2832. *
  2833. * TO *EML* IF NON-SYMBOLIC FILE.
  2834. *
  2835. * USES CM - CM+4, CN - CN+4.
  2836. *
  2837. * CALLS GUO, SAF.
  2838. *
  2839. * MACROS ERROR, LDA, MMOVE, UDTRD.
  2840.  
  2841.  
  2842. SUL SUBR ENTRY/EXIT
  2843. LDA IR+3,REL SET FILE NAME
  2844. CRD FN
  2845. LDN 0 NO INITIAL SEARCH ADDRESS
  2846. RJM SAF SEARCH FOR ASSIGNED FILE
  2847. ZJN SULX IF FILE NOT FOUND
  2848. NFA FA,R
  2849. ADN FSTL
  2850. CRD FS GET FST EST ENTRIES
  2851. SFA EST,FS
  2852. CRD CM
  2853. LDD CM+3 VALIDATE MT/NT EQUIPMENT
  2854. LMC 2RMT
  2855. ZJN SUL1 IF 7 TRACK TAPE
  2856. LMC 2RNT&2RMT
  2857. ZJN SUL1 IF 9 TRACK TAPE
  2858. LMC 2RCT&2RNT
  2859. ZJN SUL1 IF CTS CARTRIDGE TAPE
  2860. LMC 2RAT&2RCT
  2861. NJP SULX IF NOT ACS CARTRIDGE TAPE
  2862. SUL1 LDD FS+1 SET UDT ADDRESS
  2863. ZJP SULX IF NO UDT ADDRESS
  2864. STM UDTA
  2865. LDD CP VALIDATE JOB ASSIGNMENT
  2866. ADN TFSW
  2867. CRD CN
  2868. UDTRD CM,/MTX/UVRI,1
  2869. LDD CM
  2870. LMD CN
  2871. NJN SUL3 IF NOT EJT ORDINAL
  2872. UDTRD UTMS,/MTX/UTMS,1
  2873. LDM UTMS+4
  2874. SHN 21-13
  2875. PJN SUL3 IF NOT A TMS CONTROLLED FILE
  2876. UDTRD CM,/MTX/UST4,1
  2877. LDD CM
  2878. SHN 21-12
  2879. PJN SUL2 IF UNLABELED FILE
  2880. SHN 21-11-21+12
  2881. PJN SUL4 IF STANDARD LABELS
  2882. SUL2 LJM EML EXIT TO MAIN LOOP
  2883.  
  2884. SUL3 ERROR TPI *TMS PROCESSING INHIBITED.*
  2885.  
  2886. SUL4 LDM PFTD UPDATE FET FROM UDT
  2887. LPC 4000
  2888. STM PFTD
  2889. RJM GUO GET USER OPTIONS FROM UDT
  2890. LDM UTMS+4
  2891. SHN 21-10
  2892. PJN SUL2 IF NON-SYMBOLIC ACCESS
  2893. LDM PBTO+1 FORCE TMS FILE, SYMBOLIC ACCESS
  2894. SCN 24
  2895. LMN 24
  2896. STM PBTO+1
  2897. LJM SULX RETURN
  2898. TTB SPACE 4,10
  2899. ** TTB - TRIM TRAILING BLANKS.
  2900. *
  2901. * ENTRY (A, 0-11) = ADDRESS OF STRING.
  2902. * (A, 12-17)= STRING COUNT.
  2903. *
  2904. * EXIT TRAILING BLANKS CONVERTED TO BINARY ZERO.
  2905. *
  2906. * USES T0, T1, T2.
  2907.  
  2908.  
  2909. TTB SUBR ENTRY/EXIT
  2910. STD T1 SAVE ADDRESS
  2911. SHN -14
  2912. STD T2 SAVE CHARACTER COUNT
  2913. SHN -1
  2914. RAD T1
  2915. TTB1 LDD T2 CHECK FOR CHARACTER POSITION
  2916. LPN 1
  2917. ZJN TTB2 IF EVEN CHARACTER
  2918. LDI T1 PRESET ZERO CHARACTER
  2919. LPN 77
  2920. STD T0
  2921. LDI T1 LOAD CHARACTER
  2922. SHN -6
  2923. UJN TTB3 CHECK CHARACTER
  2924.  
  2925. TTB2 LDI T1 PRESET ZERO CHARACTER
  2926. SCN 77
  2927. STD T0
  2928. LMI T1 LOAD CHARACTER
  2929. TTB3 ZJN TTB4 IF ALREADY ZERO
  2930. LMN 1R
  2931. NJN TTBX IF NOT BLANK
  2932. LMD T0 RESTORE OTHER CHARACTER
  2933. STI T1
  2934. TTB4 SOD T2
  2935. LPN 1
  2936. NJN TTB1 IF ODD CHARACTER TO DO
  2937. SOD T1 DECREMENT STRING POINTER
  2938. LDD T2
  2939. NJN TTB1 IF MORE TO BLANK
  2940. UJN TTBX RETURN
  2941. SPACE 4
  2942. *** LEVEL 2 COMMON DECKS.
  2943.  
  2944. *CALL COMPAST
  2945. *CALL COMPCRS
  2946. *CALL COMPFAT
  2947. EJT$ EQU 1 ASSEMBLE EJT CODE
  2948. *CALL COMPGFP
  2949. *CALL COMPIRA
  2950. *CALL COMPSAF
  2951. *CALL COMPSFB
  2952. SPACE 4
  2953. ERRNG BUF0-* BYTES LEFT BEFORE BUFFER OVERFLOW
  2954. OVERLAY (ERROR PROCESSING.),OVL1
  2955. SPACE 4,10
  2956. *** TAPE MANAGER ERROR PROCESSING.
  2957. *
  2958. *
  2959. * COMMAND OR CENTRAL PROGRAM CALLS.
  2960. *
  2961. * IF THE ERROR PROCESSING BIT IS SET IN THE FET, TFM
  2962. * RETURNS THE ERROR CODE, SETS THE COMPLETE BIT AND ISSUE
  2963. * THE DAYFILE MESSAGE. THE ERROR CODE IS RETURNED IN
  2964. * WORD 0 OF THE FET BITS 9 - 16.
  2965. *
  2966. * IF THE ERROR PROCESSING BIT IS NOT SET, A DAYFILE
  2967. * MESSAGE IS ISSUED, THE CONTROL POINT ABORTED, AND THE
  2968. * PPU IS DROPPED.
  2969. *
  2970. * IF ERROR RETURN ADDRESS *ERAD* IS SET AND USER IS
  2971. * PROCESSING ERRORS, MESSAGE WILL NOT BE ISSUED BUT WILL
  2972. * BE RETURNED TO USER AT RA + ERAD. FOUR WORDS MUST
  2973. * BE ALLOCATED AT *ERAD* FOR MESSAGE.
  2974. *
  2975. * IF THE ERROR CONDITION IS ONE THAT THE USER CAN
  2976. * ROLLOUT AND WAIT ON, THE ROLLOUT INDICATOR IS
  2977. * SET IN WORD 0 OF THE FET, BIT 17, AND THE
  2978. * EVENT DESCRIPTION WILL BE SET IN *TERW* IN CP
  2979. * AREA SO CALLING PROGRAM MAY ISSUE ROLLOUT IF IT
  2980. * DESIRES TO WAIT FOR THE CONDITION TO CLEAR.
  2981. *
  2982. SPACE 4,10
  2983. *** COMMON SYMBOL DEFINITIONS.
  2984.  
  2985.  
  2986. *CALL COMS1DS
  2987. SPACE 4,10
  2988. *** DIRECT CELL LOCATIONS.
  2989.  
  2990.  
  2991. CN EQU S1 -S1+4 SCRATCH WORD (5 LOCATIONS)
  2992. EA EQU S2 ERROR MESSAGE ADDRESS
  2993. AP EQU S2+1 ASSEMBLY POINTER
  2994. HB EQU S2+2 HALF BYTE FLAG
  2995. TME SPACE 4,20
  2996. ** TME - TAPE MANAGER ERROR PROCESSING.
  2997. *
  2998. * ENTRY (EC) = ERROR CODE.
  2999. * (FO) = CATALOG FNT ORDINAL.
  3000. *
  3001. * USES CM - CM+4, T1 - T2.
  3002. *
  3003. * CALLS ABT, BEM, IEM, IOE, MMC, PRF, SSE, UEP.
  3004. *
  3005. * MACROS LDA, MONITOR, MULT3.
  3006.  
  3007.  
  3008. TME ENTRY OVERLAY ENTRY POINT
  3009. LDD CP CHECK DMP= STATUS
  3010. ADC SEPW
  3011. STD T1
  3012. CRD CM
  3013. LDD CM
  3014. LPN 20
  3015. NJN TME1 IF DMP= ENTRY POINT PRESENT
  3016. LDN ZERL
  3017. CRD CM CLEAR CPU COMMUNICATION WORD
  3018. LDD T1
  3019. ADN SPCW-SEPW
  3020. CWD CM
  3021. TME1 MULT3 EC MULTIPLY (ERROR CODE)*3
  3022. ADC EMSG-3 OFFSET FOR ERROR CODE 0
  3023. STD EA
  3024. RJM BEM BUILD ERROR MESSAGE
  3025. RJM MMC MOVE TO MAGNET CONTROL POINT
  3026. LDI EA
  3027. SHN 21-2
  3028. MJP TME5 IF UNCONDITIONAL ABORT
  3029. LDD FC
  3030. LMN MAGF
  3031. ZJN TME3 IF CALLED BY *MAGNET*
  3032. LDM DFFO
  3033. ZJN TME2 IF DEMAND FILE NOT ATTACHED
  3034. STD T1 SET FNT ORDINAL
  3035. LDN /PFM/PTUP SET MODE
  3036. STD T2
  3037. LDN RFAS RETURN DEMAND FILE
  3038. RJM ARF
  3039. TME2 LDA IR+3,REL CHECK USER ERROR PROCESSING FLAG
  3040. ADN 1
  3041. CRD CM
  3042. LDD CM+1
  3043. SHN 21-10
  3044. PJP TME5 IF USER NOT PROCESSING ERRORS
  3045. RJM UEP USER ERROR PROCESSING
  3046. LJM TME6 CHECK FOR *TFSPE* CALL
  3047.  
  3048. TME3 LDI EA PROCESS ERRORS FOR *MAGNET*
  3049. SHN 21-3
  3050. PJP TME5 IF NON-ROLLABLE ERROR
  3051. RJM IEM ISSUE ERROR MESSAGE
  3052. LDD CP
  3053. ADN JCIW
  3054. CRD CM
  3055. LDD CM+2
  3056. NJP TME4 IF JOB NOT ROLLABLE
  3057. RJM SSE SET SYSTEM EVENT
  3058. LDM UTMS+3 SET WAIT JOB ROLLIN
  3059. SCN WUJR
  3060. LMN WUJR
  3061. STM UTMS+3
  3062. LDN ZERL REQUEST ROLLOUT
  3063. CRD CM
  3064. LDC 4000B+/COMSCPS/ROTE
  3065. STD CM+1
  3066. LDD CP
  3067. SHN -7
  3068. STD CM+2
  3069. MONITOR ROCM ROLLOUT CONTROL POINT
  3070. TME4 LDM UTMS+4 SET REISSUE REQUEST
  3071. SCN RSRR
  3072. LMN RSRR
  3073. STM UTMS+4
  3074. UJN TME6 CHECK FOR *TFSPE* CALL
  3075.  
  3076. TME5 RJM IEM ISSUE ERROR MESSAGES
  3077. RJM ABT ABORT USER JOB
  3078. TME6 LDM TFMF CHECK FOR OPERATOR NOTIFICATION REQUIRED
  3079. SHN 21-3
  3080. MJN TME7 IF OPERATOR FLAG SET
  3081. LDM TFMC
  3082. LPN 77
  3083. LMN /PFM/PTLM
  3084. ZJN TME10 IF LOCAL FILE MODE
  3085. LDI EA
  3086. SHN 21-1
  3087. PJN TME8 IF NOT CALLING *TFSPE*
  3088. TME7 RJM IOE INFORM OPERATOR OF ERROR
  3089. TME8 LDI EA CHECK FOR PP HANG
  3090. SHN 21-0
  3091. PJN TME10 IF NOT HANG CONDITION
  3092. LDD FO SET FNT ORDINAL
  3093. ZJN TME9 IF CATALOG NOT ATTACHED
  3094. STD T1
  3095. LDM TFMC SET MODE
  3096. LPN 77
  3097. STD T2
  3098. LDN RFAS RETURN CATALOG
  3099. RJM ARF
  3100. * LDN 0 CLEAR FNT ORDINAL
  3101. STD FO
  3102. TME9 MONITOR CHGM CONDITIONALLY HANG PP
  3103. TME10 LJM TMEX RETURN
  3104. TITLE SUBROUTINES.
  3105. ABT SPACE 4,10
  3106. ** ABT - ABORT USER JOB.
  3107. *
  3108. * FOR ALL NON-MAGNET REQUESTS, THE FET IS SET
  3109. * COMPLETE. FOR MAGNET REQUESTS, THE USER JOB
  3110. * ABORT AND FUNCTION COMPLETE FLAGS ARE SET.
  3111. * IN ALL CASES THE *PPET* SYSTEM ERROR FLAG
  3112. * IS SET FOR THE USER JOB.
  3113. *
  3114. * USES CM - CM+4.
  3115. *
  3116. * MACROS MONITOR, UDTRD, UDTWT.
  3117.  
  3118.  
  3119. ABT1 LDA IR+3,REL SET FET COMPLETE
  3120. CRD CM
  3121. LDD CM+4
  3122. SCN 1
  3123. LMN 1
  3124. STD CM+4
  3125. LDA IR+3,REL
  3126. CWD CM
  3127. ABT2 LDN ZERL SET ERROR FLAG
  3128. CRD CM
  3129. LDN PPET
  3130. STD CM+1
  3131. MONITOR CEFM CHANGE ERROR FLAG
  3132.  
  3133. ABT SUBR ABORT USER JOB
  3134. LDD FC CHECK CALLER
  3135. LMN MAGF
  3136. NJN ABT1 IF NOT CALLED BY *MAGNET*
  3137. LDM UTMS+4 SET ABORT USER JOB STATUS
  3138. SCN RSAJ
  3139. LMN RSAJ
  3140. STM UTMS+4
  3141. LDD CP
  3142. ADN JCIW
  3143. CRD CM
  3144. LDD CM+2
  3145. LMC MTSI
  3146. NJN ABT2 IF NOT *MAGNET* CONTROL POINT
  3147. UJN ABTX RETURN
  3148. BEM SPACE 4,10
  3149. ** BEM - BUILD ERROR MESSAGE.
  3150. *
  3151. * ENTRY (EA) = ERROR MESSAGE CONTROL WORD.
  3152. *
  3153. * EXIT (MBUF) = COMPLETED ERROR MESSAGE.
  3154. *
  3155. * USES AP, HB.
  3156. *
  3157. * CALLS EQM, FMM, FNM, LFM, MVM, RAM, UNM,
  3158. * VSM.
  3159. *
  3160.  
  3161.  
  3162. BEM SUBR ENTRY/EXIT
  3163. LDC MBUF INITIALIZE ASSEMBLY POINTER
  3164. STD AP
  3165. CLEAR ,AP,MBML*10D
  3166. LDN 0
  3167. STD HB
  3168. LDI EA
  3169. SHN 21-13
  3170. PJN BEM1 IF NOT EQUIPMENT MESSAGE
  3171. RJM EQM BUILD EQUIPMENT MESSAGE
  3172. LJM BEM7 COMPLETE ERROR MESSAGE
  3173.  
  3174. BEM1 SHN 21-12-21+13 CHECK FAMILY MESSAGE
  3175. PJN BEM2 IF NOT FAMILY NAME MESSAGE
  3176. RJM FMM BUILD FAMILY NAME MESSAGE
  3177. LJM BEM7 COMPLETE ERROR MESSAGE
  3178.  
  3179. BEM2 SHN 21-11-21+12 CHECK FILE NAME MESSAGE
  3180. PJN BEM3 IF NOT FILE NAME MESSAGE
  3181. RJM FNM BUILD FILE NAME MESSAGE
  3182. UJN BEM7 COMPLETE ERROR MESSAGE
  3183.  
  3184. BEM3 SHN 21-10-21+11 CHECK LOCAL FILE NAME MESSAGE
  3185. PJN BEM4 IF NOT LOCAL FILE NAME MESSAGE
  3186. RJM LFM BUILD LOCAL FILE NAME MESSAGE
  3187. LDI EA
  3188. SHN 21-10
  3189. BEM4 SHN 21-7-21+10 CHECK VSN MESSAGE
  3190. PJN BEM5 IF NOT VSN MESSAGE
  3191. RJM VSM BUILD VSN MESSAGE
  3192. UJN BEM7 COMPLETE ERROR MESSAGE
  3193.  
  3194. BEM5 SHN 21-6-21+7 CHECK USERNAME MESSAGE
  3195. PJN BEM6 IF NOT USERNAME MESSAGE
  3196. RJM UNM BUILD USERNAME MESSAGE
  3197. UJN BEM7 COMPLETE ERROR MESSAGE
  3198.  
  3199. BEM6 SHN 21-5-21+6 CHECK RANDOM ADDRESS MESSAGE
  3200. PJN BEM7 IF NOT RANDOM ADDRESS MESSAGE
  3201. RJM RAM BUILD RANDOM ADDRESS MESSAGE
  3202. BEM7 LDD EA COMPLETE ERROR MESSAGE
  3203. ADN 2
  3204. STM BEMA
  3205. LDM ** GET MESSAGE ADDRESS
  3206. BEMA EQU *-1 (ERROR MESSAGE ADDRESS)
  3207. RJM MVM MERGE VARIABLE MESSAGE
  3208. LDD HB
  3209. ZJN BEM8 IF BYTE FILLED
  3210. AOD AP
  3211. LDN 0
  3212. BEM8 STI AP SET END OF MESSAGE
  3213. LJM BEMX RETURN
  3214. CSZ SPACE 4,10
  3215. ** CSZ - CONVERT TRAILING SPACES TO ZEROS.
  3216. *
  3217. * ENTRY (A) = 6/ CC,12/ ADDR
  3218. * WHERE - CC = CHARACTER COUNT.
  3219. * ADDR = ADDRESS.
  3220. *
  3221. * USES T1, T2, T3.
  3222.  
  3223.  
  3224. CSZ SUBR ENTRY/EXIT
  3225. STD T1
  3226. SHN -14
  3227. ZJN CSZX IF CHARACTER COUNT NOT GIVEN
  3228. STD T2
  3229. LPN 1 SET HALF BYTE FLAG
  3230. STD T3
  3231. LDD T2 SET LAST WORD ADDRESS
  3232. SHN -1
  3233. SBN 1
  3234. ADD T3
  3235. RAD T1
  3236. LDD T3
  3237. ZJN CSZ2 IF TERMINATE ON WORD BOUNDARY
  3238. CSZ1 LDI T1 CHECK LEFT MOST CHARACTER
  3239. SHN -6
  3240. LMN 1R
  3241. NJN CSZX IF NOT SPACE
  3242. LDI T1
  3243. LPN 77
  3244. STI T1
  3245. SOD T1 DECREMENT WORD COUNT
  3246. SOD T2 DECREMENT CHARACTER COUNT
  3247. ZJN CSZX IF LAST CHARACTER
  3248. CSZ2 LDI T1 CHECK RIGHT MOST CHARACTER
  3249. LPN 77
  3250. LMN 1R
  3251. NJN CSZ3 IF NOT SPACE
  3252. LDI T1
  3253. SCN 77
  3254. STI T1
  3255. SOD T2 DECREMENT CHARACTER COUNT
  3256. NJN CSZ1 IF NOT LAST CHARACTER
  3257. CSZ3 LJM CSZX RETURN
  3258. EQM SPACE 4,10
  3259. ** EQM - BUILD EQUIPMENT MESSAGE.
  3260. *
  3261. * SETS EQUIPMENT AND DEVICE NUMBER IN MESSAGE.
  3262. *
  3263. * ENTRY (EQ) = EQUIPMENT NUMBER.
  3264. * (AP) = ASSEMBLY POINTER.
  3265. *
  3266. * USES CM - CM+4, T1, CN.
  3267. *
  3268. * CALLS C2D, MVM.
  3269.  
  3270.  
  3271. EQM SUBR ENTRY/EXIT
  3272. LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL
  3273. SHN -3
  3274. RJM C2D CONVERT TWO DIGITS
  3275. STM EQMA+1
  3276. LDD EQ
  3277. LPN 7
  3278. SHN 6
  3279. ADC 2R0,
  3280. STM EQMA+2
  3281. SFA EST,EQ READ EST ENTRY
  3282. CRD CM
  3283. LDD CM+3 SET EQUIPMENT TYPE
  3284. LPC 3777
  3285. STM EQMA
  3286. LDD CM+4 READ MST
  3287. SHN 3
  3288. ADN PFGL
  3289. CRD CM
  3290. LDD CM+3 SET DEVICE NUMBER
  3291. RJM C2D CONVERT TWO DIGITS
  3292. SHN -6
  3293. LPN 77
  3294. STD T1
  3295. LDM EQMA+4
  3296. SCN 77
  3297. ADD T1
  3298. STM EQMA+4
  3299. LDD CM+3
  3300. LPN 7
  3301. SHN 6
  3302. ADC 2R0,
  3303. STM EQMA+5
  3304. LDC EQMA
  3305. RJM MVM MERGE VARIABLE MESSAGE
  3306. LJM EQMX RETURN
  3307.  
  3308. EQMA DATA C*EQXXX, DNYY,*
  3309. FMM SPACE 4,10
  3310. ** FMM - BUILD FAMILY NAME MESSAGE.
  3311. *
  3312. * SETS FAMILY NAME IN MESSAGE.
  3313. *
  3314. * ENTRY (PFAM - PFAM+3) = FAMILY NAME.
  3315. *
  3316. * CALLS MVM.
  3317. *
  3318.  
  3319.  
  3320. FMM SUBR ENTRY/EXIT
  3321. LDM PFAM+3 INSURE END OF FAMILY NAME
  3322. SCN 77
  3323. STM PFAM+3
  3324. LDC PFAM
  3325. RJM MVM MOVE VARIABLE MESSAGE
  3326. UJN FMMX RETURN
  3327. FNM SPACE 4,10
  3328. ** FNM - BUILD FILENAME MESSAGE.
  3329. *
  3330. * SETS FILENAME IF MESSAGE.
  3331. *
  3332. * ENTRY (EC) = ERROR CODE.
  3333. * (POFI - POFI+8D) = OLD FILE NAME.
  3334. * (PNFI - PNFI-8D) = NEW FILE NAME.
  3335. *
  3336. * CALLS CSZ, MVM.
  3337.  
  3338.  
  3339. FNM SUBR ENTRY/EXIT
  3340. LDC FIKL*10000+POFI
  3341. RJM CSZ CONVERT TRAILING SPACES TO ZEROS
  3342. LDC POFI
  3343. RJM MVM MOVE VARIABLE MESSAGE
  3344. UJN FNMX RETURN
  3345. IDM SPACE 4,10
  3346. ** IDM - ISSUE DAYFILE MESSAGE.
  3347. *
  3348. * ENTRY (A) = DESTINATION CODE/10000.
  3349. *
  3350. * CALLS DFM.
  3351.  
  3352.  
  3353. IDM SUBR ENTRY/EXIT
  3354. LPN 77 SET MESSAGE DESTINATION
  3355. SHN 14
  3356. LMC MBUF
  3357. RJM DFM ISSUE DAYFILE MESSAGE
  3358. UJN IDMX RETURN
  3359. IEM SPACE 4,10
  3360. ** IEM - ISSUE ERROR MESSAGES.
  3361. *
  3362. * DETERMINES THE DISPOSITION OF THE ERROR MESSAGES.
  3363. *
  3364. * ENTRY (EA) = FWA OF ERROR MESSAGE CONTROL WORD.
  3365. * (CO) = CATALOG FST ORDINAL.
  3366. *
  3367. * EXIT ALL DAYFILE AND/OR DISPLAY MESSAGES ISSUED.
  3368. *
  3369. * USES BA, BP, FN - FN+4, HB, T5 - T5+4.
  3370. *
  3371. * CALLS IDM, MBP, RDS, WDS.
  3372. *
  3373. * MACROS ENDMS, MMOVE, UDTRD, UDTWT.
  3374.  
  3375.  
  3376. IEM SUBR ENTRY/EXIT
  3377. LDD EA SET DESTINATION CODE ADDRESS
  3378. ADN 1
  3379. STD HB
  3380. LDD FC CHECK CALLER
  3381. LMN MAGF
  3382. NJP IEM2 IF NOT CALLED BY *MAGNET*
  3383. UDTWT MBUF,/MTX/UMSG,4 SET MESSAGE IN UDT BUFFER
  3384. LDD CP CHECK PP ASSIGNMENT
  3385. ADN JCIW
  3386. CRD CM
  3387. LDD CM+2
  3388. LMC MTSI
  3389. ZJP IME6 IF *MAGNET* CONTROL POINT
  3390. IEM2 LDI HB CHECK FOR CP DAYFILE MESSAGE
  3391. SHN 21-0
  3392. PJN IEM3 IF NOT FOR CONTROL POINT DAYFILE
  3393. LDN CPON/10000
  3394. RJM IDM ISSUE DAYFILE MESSAGE
  3395. IEM3 LDI HB CHECK FOR SYSTEM DAYFILE MESSAGE
  3396. SHN 21-1
  3397. PJN IEM4 IF NOT FOR SYSTEM DAYFILE
  3398. LDN 0
  3399. RJM IDM ISSUE DAYFILE MESSAGE
  3400. IEM4 LDI HB CHECK FOR ERROR LOG MESSAGE
  3401. SHN 21-2
  3402. PJN IEM5 IF NOT FOR ERROR LOG
  3403. LDN ERLN/10000
  3404. RJM IDM ISSUE DAYFILE MESSAGE
  3405. IEM5 LDI HB CHECK FOR ACCOUNT DAYFILE MESSAGE
  3406. SHN 21-3
  3407. PJN IME6 IF NOT FOR ACCOUNT DAYFILE
  3408. LDN ACFN/10000
  3409. RJM IDM ISSUE DAYFILE MESSAGE
  3410. IME6 LDI HB CHECK FOR CATALOG BUFFER MESSAGE
  3411. SHN 21-5
  3412. PJP IEMX IF NOT FOR CATALOG BUFFER
  3413. LDD FO
  3414. RJM AFA GET ABSOLUTE FST ADDRESS
  3415. CRD T5
  3416. SBN 1
  3417. CRD FN
  3418. LDD T5 SET ABSOLUTE TRACK/SECTOR
  3419. LPC 777
  3420. STD T5
  3421. LDN 1
  3422. STD T7
  3423. LDC BUF0 SET BUFFER ADDRESS/POINTER
  3424. STD BA
  3425. ADN 2
  3426. STD BP
  3427. SETMS IO,RW
  3428. LDD BA
  3429. RJM RDS READ SECTOR
  3430. MJN IME8 IF MASS STORAGE ERROR OCCURRED
  3431. LDM CWFE,BA
  3432. RJM MBP MOVE BUFFER POINTER
  3433. LDM SBST+1,BP SET ERROR, SUSPEND ACTIVITY FLAGS
  3434. SCN FETS
  3435. LMN FETS
  3436. STM SBST+1,BP
  3437. LDN TMMB
  3438. RJM MBP MOVE BUFFER POINTER
  3439. MMOVE MBUF,,,BP,MBML*10D
  3440. LDD BA
  3441. RJM WDS WRITE SECTOR
  3442. MJN IME8 IF MASS STORAGE ERROR OCCURRED
  3443. IME7 ENDMS RELEASE CHANNEL
  3444. LJM IEMX RETURN
  3445.  
  3446. IME8 RJM ISM ISSUE SYSTEM CONTROL POINT MESSAGE
  3447. UJN IME7 EXIT
  3448. IOE SPACE 4,20
  3449. ** IOE - INFORM OPERATOR OF ERROR.
  3450. *
  3451. * EXIT (A) = 0 IF TAPE CATALOG ERROR EVENT ISSUED.
  3452. * .NE. 0 IF UNABLE TO ISSUE EVENT.
  3453. * *CHECK TMSDIS,FAM* MESSAGE IN A,OPERATOR IF
  3454. * EVENT IS ISSUED.
  3455. *
  3456. * USES CM - CM+4.
  3457. *
  3458. * MACROS MONITOR.
  3459.  
  3460.  
  3461. IOE SUBR ENTRY/EXIT
  3462. LDN ZERL BUILD EVENT
  3463. CRD CM
  3464. LDN /EVT/TCSE
  3465. STD CM+4
  3466. MONITOR EATM ISSUE EVENT
  3467. LDD CM+0
  3468. UJN IOEX RETURN
  3469. ISM SPACE 4,10
  3470. ** ISM - ISSUE MESSAGE TO SYSTEM CONTROL POINT.
  3471. *
  3472. * ENTRY (EC) = ERROR CODE.
  3473. *
  3474. * EXIT MESSAGE POSTED ON LINE 2 OF B DISPLAY FOR
  3475. * SYSTEM CONTROL POINT. *GO,SYS.* REQUIRED TO CLEAR IT.
  3476. *
  3477. * USES CM - CM+4.
  3478.  
  3479.  
  3480. ISM SUBR ENTRY/EXIT
  3481. LDD EC
  3482. RJM C2D
  3483. STM ISMA+4
  3484. LDK ISMA+7
  3485. STD AP
  3486. LDN 0
  3487. STD HB
  3488. RJM FMM INSERT FAMILY NAME IN MSG
  3489. LDD HB RE-DIRECT MESSAGE POINTER
  3490. SBN 1
  3491. RAD AP
  3492. LDD HB TERMINATE MESSAGE WITH *.*
  3493. ZJN ISM1 IF SPACE IN LOWER 6 BITS
  3494. LDC 1R.*100-1R *100-1R.+1R
  3495. ISM1 ADN 1R.-1R
  3496. RAI AP
  3497. LDK NCPL
  3498. CRD CM
  3499. LDD CM+1
  3500. ADN 1
  3501. SHN 7
  3502. ADK MS2W MESSAGE 2 AREA FOR SYSTEM CONTROL POINT
  3503. CWM ISMA,TR
  3504. UJN ISMX RETURN
  3505.  
  3506. ISMA DATA C* TMS ERRXX ON FAM.*
  3507. BSSZ 3 SPACE FOR 7 CHARACTER FAMILY NAMES
  3508. LFM SPACE 4,10
  3509. ** LFM - BUILD LOCAL FILE NAME MESSAGE.
  3510. *
  3511. * SETS THE LOCAL FILE NAME IN THE MESSAGE.
  3512. *
  3513. * ENTRY (FN - FN+3) = LOCAL FILE NAME.
  3514. *
  3515. * CALLS MVM.
  3516.  
  3517.  
  3518. LFM SUBR ENTRY/EXIT
  3519. LDD FN+3 INSURE END OF LFN
  3520. SCN 77
  3521. STD FN+3
  3522. LDN FN
  3523. RJM MVM MOVE VARIABLE MESSAGE
  3524. UJN LFMX RETURN
  3525. MMC SPACE 4,10
  3526. * MMC - MOVE TO MAGNET CONTROL POINT.
  3527. *
  3528. * ENTRY (FC) = FUNCTION CODE.
  3529. * (UTMS) = REQUEST SUBFUNCTION.
  3530. *
  3531. * EXIT CONTROL POINT ASSIGNMENT CHANGE TO MAGNET IF THIS IS
  3532. * A *VMFS* MAGNET REQUEST.
  3533. *
  3534. * USES CM+1.
  3535. *
  3536. * MACROS MONITOR.
  3537.  
  3538.  
  3539. MMC SUBR ENTRY/EXIT
  3540. LDD FC
  3541. LMN MAGF
  3542. NJN MMCX IF NOT MAGNET REQUEST
  3543. LDM UTMS
  3544. LMN VMFS
  3545. NJN MMCX IF NOT *VMFS*
  3546. LDK /COMSCPS/ALCS SET RETURN TO CALLING CP
  3547. STD CM+1
  3548. MONITOR CCAM RETURN TO MAGNET CP
  3549. UJN MMCX RETURN
  3550. MVM SPACE 4,10
  3551. ** MVM - MERGE VARIABLE MESSAGE.
  3552. *
  3553. * *MVM* WILL MERGE VARIABLE LENGTH MESSAGES
  3554. * TO A ASSEMBLY BUFFER INSURING THAT THERE
  3555. * WILL BE A SPACE (BLANK) BETWEEN EACH
  3556. * MERGED MESSAGE. THIS ROUTINE IS USED TO
  3557. * COMBINE SEVERAL DISJOINTED MESSAGES INTO
  3558. * ONE COHERENT MESSAGE WHICH IS THEN ISSUED
  3559. * ACCORDING THE DISPOSITION CODE.
  3560. *
  3561. * ENTRY (A) = ADDRESS OF CHARACTER STRING.
  3562. * (AP) = ASSEMBLY POINTER.
  3563. * (HB) = HALF BYTE FLAG.
  3564. *
  3565. * USES T1.
  3566. *
  3567.  
  3568.  
  3569. MVM SUBR ENTRY/EXIT
  3570. STD T1
  3571. LDD HB
  3572. NJN MVM2 IF NOT FULL WORD
  3573. MVM1 LDI T1 MOVE FULL BYTE
  3574. ZJN MVM4 IF END OF MESSAGE
  3575. STI AP
  3576. LPN 77
  3577. ZJN MVM3 IF END OF MESSAGE
  3578. AOD T1 ADVANCE TO NEXT BYTE
  3579. AOD AP ADVANCE ASSEMBLY POINTER
  3580. UJN MVM1 MOVE NEXT BYTE
  3581.  
  3582. MVM2 LDI T1 MOVE LOWER CHARACTER
  3583. SHN -6
  3584. ZJN MVM3 IF END OF MESSAGE
  3585. RAI AP
  3586. AOD AP ADVANCE ASSEMBLY POINTER
  3587. LDI T1 MOVE UPPER CHARACTER
  3588. LPN 77
  3589. ZJN MVM4 IF END OF MESSAGE
  3590. SHN 6
  3591. STI AP
  3592. AOD T1
  3593. UJN MVM2 MOVE NEXT BYTE
  3594.  
  3595. MVM3 LDN 1R INSERT SPACE IN LOWER BYTE
  3596. RAI AP
  3597. AOD AP
  3598. LDN 0
  3599. UJN MVM5 TOGGLE HALF BYTE
  3600.  
  3601. MVM4 LDC 1R *100 INSERT SPACE IN UPPER BYTE
  3602. STI AP
  3603. LDN 1
  3604. MVM5 STD HB TOGGLE HALF BYTE
  3605. LJM MVMX RETURN
  3606. RAM SPACE 4,10
  3607. ** RAM - BUILD RANDOM ADDRESS MESSAGE.
  3608. *
  3609. * CONVERTS THE RANDOM ADDRESS TO DISPLAY CODE
  3610. * AND MOVES IT TO THE ASSEMBLY BUFFER.
  3611. *
  3612. * ENTRY (CTSA - CTSA+1) = RANDOM ADDRESS.
  3613. *
  3614. * CALLS C2D, MVM.
  3615.  
  3616.  
  3617. RAM SUBR ENTRY/EXIT
  3618. LDM CTSA
  3619. SHN -6
  3620. RJM C2D CONVERT TWO DIGITS
  3621. STM RAMA
  3622. LDM CTSA
  3623. LPN 77
  3624. RJM C2D CONVERT TWO DIGITS
  3625. STM RAMA+1
  3626. LDM CTSA+1
  3627. SHN -6
  3628. RJM C2D CONVERT TWO DIGITS
  3629. STM RAMA+2
  3630. LDM CTSA+1
  3631. LPN 77
  3632. RJM C2D CONVERT TWO DIGITS
  3633. STM RAMA+3
  3634. LDC RAMA
  3635. RJM MVM MOVE VARIABLE MESSAGE
  3636. LJM RAMX RETURN
  3637.  
  3638. RAMA DATA C*00000000*
  3639. SSE SPACE 4,10
  3640. ** SSE - SET SYSTEM EVENT.
  3641. *
  3642. * ENTRY (EC) = ERROR CODE.
  3643. *
  3644. * EXIT CONTROL POINT EVENT WORD UPDATED.
  3645. *
  3646. * USES CN - CN+4.
  3647.  
  3648.  
  3649. SSE SUBR ENTRY/EXIT
  3650. LDD CP
  3651. ADN TERW
  3652. CRD CN
  3653. LDD EC
  3654. LMN /EMSG/TUA
  3655. ZJN SSE1 IF TMS UTILITY ACTIVE
  3656. LMN /EMSG/CNF&/EMSG/TUA
  3657. NJN SSE2 IF NOT CATALOG NOT FOUND ERROR
  3658. SSE1 LDN ESUA
  3659. UJN SSE3 SET EVENT IN CONTROL POINT
  3660.  
  3661. SSE2 LDN ESVB VSN BUSY OR WAIT SCRATCH
  3662. SSE3 STD CN+4 SET EVENT IN CONTROL POINT
  3663. SHN -14
  3664. ADC FBRT*1000
  3665. STD CN+3
  3666. LDD CN+2
  3667. SCN 77
  3668. ADN FBRT/10 SET ROLLOUT TIME
  3669. STD CN+2
  3670. LDD CP
  3671. ADN TERW
  3672. CWD CN
  3673. LJM SSEX RETURN
  3674. UEP SPACE 4,10
  3675. ** UEP - USER ERROR PROCESSING.
  3676. *
  3677. * IF THE USER IS PROCESSING ERRORS, THE ERROR
  3678. * CODE IS SET IN THE FET. IF THE ERROR IS ONE
  3679. * THAT THE USER HAS A ROLLOUT OPTION ON, THE
  3680. * ROLLOUT FLAG IS SET IN FET+0 BIT 17 AND
  3681. * THE EVENT IS BUILT A ND SET IN *TERW*. IF
  3682. * THE USER HAS SPECIFIED A ERROR MESSAGE
  3683. * RETURN BUFFER, THE DETAILED MESSAGE IS
  3684. * WRITTEN TO THAT BUFFER.
  3685. *
  3686. * ENTRY (EC) = ERROR CODE.
  3687. * (MBUF) = ASSEMBLED ERROR MESSAGE.
  3688. *
  3689. * USES CM - CM+4, CN - CN+4, T1 - T3.
  3690.  
  3691.  
  3692. UEP SUBR ENTRY/EXIT
  3693. LDA IR+3,REL SET ERROR CODE IN FET
  3694. CRD CM
  3695. LDD CM+3
  3696. SCN 77
  3697. STD CM+3
  3698. LDD CM+4
  3699. LPC 777
  3700. STD CM+4
  3701. LDD EC
  3702. SHN 21-2
  3703. RAD CM+3
  3704. SHN -6
  3705. LPC 7000
  3706. RAD CM+4
  3707. LDI EA CHECK IF ROLLABLE ERROR
  3708. SHN 21-3
  3709. PJN UEP1 IF NON-ROLLABLE ERROR
  3710. RJM SSE SET SYSTEM EVENT
  3711. LDD CM+3 SET ROLLOUT EVENT FLAG
  3712. LMN 40
  3713. STD CM+3
  3714. UEP1 LDA IR+3,REL REWRITE FET+0
  3715. CWD CM
  3716. ADN TFEA
  3717. CRD CM
  3718. LDA CM+3,ABS
  3719. ZJP UEPX IF NO USER MESSAGE BUFFER
  3720. LDC MBUF COPY ERROR MESSAGE
  3721. STD T1
  3722. LDN 5 SET BYTES PER WORD
  3723. STD T2
  3724. LDN 1
  3725. STD T3 INITIALIZE CM WORD COUNT
  3726. UEP2 LDI T1 SEARCH FOR END OF MESSAGE
  3727. ZJN UEP3 IF ZERO BYTE FOUND
  3728. AOD T1
  3729. SOD T2
  3730. NJN UEP2 IF NOT FULL CM WORD
  3731. AOD T3
  3732. LDN 5
  3733. STD T2 RESET BYTES PER WORD
  3734. UJN UEP2 CONTINUE TO END OF MESSAGE
  3735.  
  3736. UEP3 AOD T1 CLEAR REMAINDER OF MESSAGE TO FULL WORD
  3737. SOD T2
  3738. ZJN UEP4 IF FULL CM WORD
  3739. LDN 0
  3740. STI T1 CLEAR MESSAGE TAIL
  3741. UJN UEP3 LOOP FOR FULL CM WORD
  3742.  
  3743. UEP4 LDA IR+3,REL WRITE TO USERS MESSAGE BUFFER
  3744. ADN TFEA
  3745. CRD CM
  3746. LDA CM+3,REL
  3747. CWM MBUF,T3 SEND MESSAGE TO CENTRAL
  3748. LJM UEPX RETURN
  3749. UNM SPACE 4,10
  3750. ** UNM - BUILD USERNAME MESSAGE.
  3751. *
  3752. * SETS THE USERNAME IN THE MESSAGE.
  3753. *
  3754. * ENTRY PBUN - PBUN+3) = USERNAME.
  3755. *
  3756. * CALLS MVM.
  3757.  
  3758.  
  3759. UNM SUBR ENTRY/EXIT
  3760. LDM PBUN+3 INSURE END OF USERNAME
  3761. SCN 77
  3762. STM PBUN+3
  3763. LDC PBUN
  3764. RJM MVM MOVE VARIABLE MESSAGE
  3765. UJN UNMX RETURN
  3766. VSM SPACE 4,10
  3767. ** VSM - BUILD VSN MESSAGE.
  3768. *
  3769. * SETS THE VSN IN THE MESSAGE.
  3770. *
  3771. * ENTRY (PESN - PESN+2) = EXTERNAL VSN.
  3772. *
  3773. * CALLS MVM.
  3774.  
  3775.  
  3776. VSM SUBR ENTRY/EXIT
  3777. MMOVE PESN,,VSMA+2,,VSKL
  3778. LDC VSMA
  3779. RJM MVM MOVE VARIABLE MESSAGE
  3780. UJN VSMX RETURN
  3781.  
  3782. VSMA DATA C*VSN XXXXXX*
  3783. SPACE 4,10
  3784. ** COMMON DECKS.
  3785.  
  3786.  
  3787. MVM$ EQU 1 DEFINE MVM - MOVE VARIABLE MESSAGE
  3788. RCL$ EQU 1 DEFINE RCL - PP RECALL
  3789. *CALL COMPTFM
  3790. *CALL COMPC2D
  3791. TITLE ERROR MESSAGES.
  3792. EMSG SPACE 4,15
  3793. ** ERROR MESSAGES.
  3794. *
  3795. * FORMAT (BYTE 0), ERROR DISPOSITION FLAGS.
  3796. * (BYTE 1), MESSAGE TYPE AND DESTINATION FLAGS.
  3797. * (BYTE 2), FIRST WORD ADDRESS OF MESSAGE.
  3798. *
  3799. * MESSAGE DISPOSITION FLAGS.
  3800. * 0001 = HANG PPU.
  3801. * 0002 = CALL TFSP TO A CONTROL POINT.
  3802. * 0004 = UNCONDITIONAL ABORT OF USER CONTROL POINT.
  3803. * 0010 = ROLLOUT USER CONTROL POINT.
  3804. * 0020 = RESERVED.
  3805. * 0040 = RANDOM ADDRESS MESSAGE.
  3806. * 0100 = USERNAME MESSAGE.
  3807. * 0200 = VSN MESSAGE.
  3808. * 0400 = LOCAL FILE NAME MESSAGE.
  3809. * 1000 = FILE NAME MESSAGE.
  3810. * 2000 = FAMILY NAME MESSAGE.
  3811. * 4000 = EQUIPMENT MESSAGE.
  3812. *
  3813. * MESSAGE DESTINATION CODES.
  3814. * 0001 = SEND TO CONTROL POINT DAYFILE.
  3815. * 0002 = SEND TO SYSTEM DAYFILE.
  3816. * 0004 = SEND TO SYSTEM ERROR LOG.
  3817. * 0010 = SEND TO ACCOUNT DAYFILE.
  3818. * 0020 = SEND TO E,P DISPLAY IF UNIT ASSIGNED.
  3819. * 0040 = SEND TO CATALOG MESSAGE BUFFER.
  3820. * 0100 = RESERVED.
  3821. * 0200 = RESERVED.
  3822. * 0400 = RESERVED.
  3823. * 1000 = RESERVED.
  3824. * 2000 = RESERVED.
  3825. * 4000 = RESERVED.
  3826.  
  3827.  
  3828. EMSG EMSG BEGIN
  3829.  
  3830. VBS EMSG 0210,0001,(BUSY.)
  3831. LNF EMSG 0400,0001,(NOT FOUND.)
  3832. FNF EMSG 1000,0001,(NOT FOUND.)
  3833. VNF EMSG 0200,0001,(NOT FOUND.)
  3834. UNF EMSG 0100,0001,(NOT FOUND.)
  3835. NMT EMSG 0400,0001,(NOT ON MAGNETIC TAPE.)
  3836. VSR EMSG 0200,0001,(RESERVED.)
  3837. VSD EMSG 0200,0000,(DUPLICATE.)
  3838. FAR EMSG 1000,0001,(ALREADY RESERVED.)
  3839. VAR EMSG 0200,0001,(ALREADY RESERVED.)
  3840. DLK EMSG 0200,0006,(DEADLOCK.)
  3841. ILR EMSG 0000,0001,(TFM INCORRECT REQUEST.)
  3842. TMD EMSG 0000,0001,(TMS DISABLED.)
  3843. MNA EMSG 0000,0001,(MAGNET NOT ACTIVE.)
  3844. EBP EMSG 2006,0047,(ERRONEOUS BUFFER POINTER.)
  3845. TUA EMSG 0010,0001,(TMS UTILITY ACTIVE.)
  3846. BAE EMSG 0000,0001,(BUFFER ARGUMENT ERROR.)
  3847. EID EMSG 0000,0001,(ERROR IN INDEX DATA.)
  3848. ECD EMSG 0000,0001,(ERROR IN CATALOG DATA.)
  3849. EAD EMSG 0000,0001,(ERROR IN ADMIT DATA.)
  3850. RAE EMSG 0046,0041,(RANDOM ADDRESS ERROR.)
  3851. TKL EMSG 4000,0006,(TRACK LIMIT.)
  3852. MSE EMSG 4004,0046,(MASS STORAGE ERROR.)
  3853. CNF EMSG 2010,0007,(TAPE CATALOG NOT FOUND.)
  3854. ECF EMSG 0000,0001,(EMPTY CATALOG.)
  3855. CLE EMSG 2006,0047,(CATALOG LINKAGE ERROR.)
  3856. IOS EMSG 0004,0001,(I/O SEQUENCE ERROR ON CATALOG.)
  3857. EOI EMSG 0001,0007,(EOI NOT ON TRACK CHAIN.)
  3858. NAE EMSG 0000,0001,(NO ADMITS.)
  3859. TPI EMSG 0000,0001,(TMS PROCESSING INHIBITED.)
  3860. SFA EMSG 2010,0001,(ACTIVITY SUSPENDED.)
  3861. FCE EMSG 2004,0001,(TAPE CATALOG ERROR.)
  3862. WSA EMSG 0012,0001,(WAIT SCRATCH ASSIGNMENT.)
  3863. NEU EMSG 0004,0001,(NO EXTEND ON USER OWNED FILE.)
  3864. WRF EMSG 0000,0001,(WRITE REQUEST ON READ-ONLY FILE.)
  3865. MPE EMSG 0000,0001,(MULTI-FILE PROCESSING ERROR.)
  3866. FCI EMSG 0000,0001,(FILE CREATION NOT ALLOWED.)
  3867. EFD EMSG 0000,0001,(ERROR IN FILE DATA.)
  3868. CNA EMSG 0000,2010,(LINKED CATALOG NOT ACCESSIBLE.)
  3869.  
  3870. EMSG EMSG END
  3871.  
  3872.  
  3873. CBUF SPACE 4,10
  3874. *** BUFFERS.
  3875.  
  3876.  
  3877. MBUF BSS 40
  3878. SPACE 4,10
  3879. USE // FORCE LITERALS
  3880.  
  3881.  
  3882. ERRNG BUF0-* BYTES LEFT BEFORE BUFFER OVERFLOW
  3883. OVERLAY (INITIALIZE FAMILY TAPE CATALOG.),OVL1
  3884. SPACE 4
  3885. *** LOCAL DIRECT CELL LOCATIONS.
  3886.  
  3887.  
  3888. TT EQU S1 TAPE TYPE (0=MT/NT, 1=CT, 3=AT)
  3889. NV EQU S1+1 - S1+3 NEXT VOLUME
  3890. IC EQU S1+1 INITIAL CATALOG FLAG
  3891. RC EQU S1+2 REEL COUNT
  3892. SV EQU S1+4 SYSTEM VSN FLAG
  3893. CV EQU S2 CURRENT VSN POINTER
  3894. PV EQU S3 PREVIOUS SCRATCH VSN POINTER
  3895. SPACE 4,10
  3896. *** BUFFER ALLOCATION.
  3897. *
  3898. * THE FOLLOWING BUFFER IS CREATED BY THIS OVERLAY, AND IS
  3899. * USED BY THE *ISFS* POSTPROCESSOR OVERLAY.
  3900.  
  3901.  
  3902. TSPW BSS 0 TABLE OF SCRATCH POOL WORDS
  3903. * (INDEXED BY TAPE TYPE)
  3904. VFD 36/-0,24/0
  3905. VFD 36/-0,24/0
  3906. VFD 36/-0,24/0
  3907. VFD 36/-0,24/0
  3908.  
  3909. OVL2 EQU *+2 LOAD ADDRESS FOR *ISFS* POSTPROCESSOR
  3910. ISFS SPACE 4,30
  3911. *** ISFS - INITIALIZE FAMILY TAPE CATALOG.
  3912. *
  3913. * ENTRY (IR - IR+3) = FET ADDRESS -
  3914. *
  3915. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  3916. *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0
  3917. *T, +2 60/ 0
  3918. *T, +3 60/ 0
  3919. *T, +4 12/ FNT,30/ 0,18/ 0
  3920. *T, +5 42/ 0,18/ EADD
  3921. *T, +6 60/ 0
  3922. *T, +7 46/ 0,2/ OP,12/ 0
  3923. *
  3924. * OP = PROCESSING OPTION.
  3925. * 0 = REORDER SCRATCH ONLY (*TFSP* *ISV* DIRECTIVE).
  3926. * 1 = REORDER SCRATCH AND CLEAR ALL INTERLOCKS (FIRST
  3927. * *ISF* ON DEVICE).
  3928. * 2 = REORDER SCRATCH AND CLEAR CURRENT AND INACTIVE
  3929. * MACHINE INTERLOCKS (*ISF* LINK TO SHARED DEVICE).
  3930. * 3 = REORDER SCRATCH AND CLEAR INACTIVE MACHINE
  3931. * INTERLOCKS (*TFSPR* COMMAND).
  3932. *
  3933. * USES TT, T2, CV - CV+4, PV - PV+4.
  3934. *
  3935. * CALLS CFB, GNB, GNL, MBP, PRS, RVB, TBA, WRP.
  3936. *
  3937. * MACROS EXOVL, MMOVE.
  3938.  
  3939.  
  3940. ISF ENTRY ENTRY/EXIT
  3941. RJM PRS PRESET
  3942. ISF0 LDI BP
  3943. ZJN ISF2 IF NO ENTRIES IN FIRST VSN BLOCK
  3944. ISF1 RJM CFB CHECK FILE BUSY
  3945. LDM CWEL,BA POSITION TO NEXT INDEX
  3946. RJM MBP MOVE BUFFER POINTER
  3947. MJN ISF2 IF MOVE OUTSIDE BUFFER
  3948. LDI BP
  3949. NJN ISF1 IF NOT END OF INDEX
  3950. ISF2 LDC 0 NO BUFFER REWRITE
  3951. * LDC 1 (IF BUFFER REWRITE)
  3952. ISFA EQU *-1
  3953. ZJN ISF3 IF NO BUFFER REWRITE
  3954. RJM WRP WRITE RANDOM PRU
  3955. LDN 0 CLEAR BUFFER REWRITE NEEDED
  3956. STM ISFA
  3957. ISF3 RJM GNL GET NEXT LINK
  3958. ZJN ISF5 IF BLOCK NOT LINKED
  3959. LDC 0 NO BUFFER SWITCH
  3960. * LDC 1 (BUFFER SWITCH)
  3961. ISFB EQU *-1
  3962. ZJN ISF4 IF NO BUFFER SWITCH
  3963. LDN 0 CLEAR BUFFER SWITCH NEEDED
  3964. STM ISFB
  3965. RJM TBA TOGGLE BUFFER ASSIGNMENT
  3966. ISF4 RJM GNB GET NEXT BLOCK
  3967. LDM CWFE,BA SKIP BLOCK CONTROL WORDS
  3968. RJM MBP MOVE BUFFER POINTER
  3969. LJM ISF1 SEARCH INDEX BUFFER
  3970.  
  3971. ISF5 LDD TT
  3972. SHN 21-13
  3973. MJP ISF7 IF NO VSN ENTRIES OF ANY TYPE FOUND
  3974. LDD TT SAVE SCRATCH POOL WORD FOR THIS TAPE TYPE
  3975. SHN 2
  3976. ADD TT
  3977. ADC TSPW
  3978. STD T2
  3979. MMOVE PESN,,,,10D
  3980. LCN 0 CLEAR *VSN ENTRY FOUND* FLAG FOR TAPE TYPE
  3981. STM ISFC,TT
  3982. LDN 4 CHECK FOR OTHER TAPE TYPES TO PROCESS
  3983. STD TT
  3984. ISF6 SOD TT CHECK NEXT TAPE TYPE
  3985. MJP ISF7 IF NO MORE TAPE TYPES
  3986. LDM ISFC,TT
  3987. ZJN ISF6 IF NO VSN ENTRIES FOUND FOR THIS TAPE TYPE
  3988. SHN 21-13
  3989. MJN ISF6 IF TAPE TYPE ALREADY PROCESSED
  3990. LDD MA RESTORE POINTERS FOR FIRST VSN BLOCK
  3991. CWM ISFD,ON
  3992. SBN 1
  3993. CRD CV
  3994. CWM ISFE,ON PRESET PREVIOUS VSN
  3995. SBN 1
  3996. CRM PESN,ON
  3997. LDN ZERL CLEAR PREVIOUS VSN BUFFER POINTERS
  3998. CRD PV
  3999. RJM RVB RESTORE VSN BUFFERS
  4000. LJM ISF0 SCAN FOR NEXT VSN TYPE
  4001.  
  4002. ISF7 EXOVL ISP EXECUTE *ISFS* POSTPROCESSOR
  4003.  
  4004.  
  4005. ISFC BSSZ 4 TABLE OF *VSN ENTRY FOUND* FLAGS
  4006. * (INDEXED BY TAPE TYPE)
  4007.  
  4008. ISFD BSS 5 POINTERS TO FIRST LEVEL-2 VSN BLOCK
  4009.  
  4010. ISFE VFD 36/-0,24/0 DEFAULT VALUE FOR SCRATCH POOL WORD
  4011. TITLE SUBROUTINES.
  4012. CFB SPACE 4,20
  4013. ** CFB - CHECK FILE BUSY.
  4014. *
  4015. * ENTRY (BA) = BUFFER ADDRESS (VSN INDEX).
  4016. * (BP) = BUFFER POINTER (VSN INDEX).
  4017. * (TT) = TAPE TYPE (0=MT/NT, 1=CT, 3=AT).
  4018. * (TT) = 4000, IF NO VSN ENTRY OF ANY TYPE FOUND YET.
  4019. *
  4020. * EXIT (BA) = UNCHANGED.
  4021. * (BP) = UNCHANGED.
  4022. * (TT) = TAPE TYPE, IF THIS VSN IS THE FIRST VSN ENTRY
  4023. * OF ANY TYPE FOUND.
  4024. * (ISFC) WORD FOR THE VSN-S TAPE TYPE SET NONZERO, IF
  4025. * THE VSN IS NOT THE CORRECT TAPE TYPE.
  4026. *
  4027. * USES TT, T1.
  4028. *
  4029. * CALLS CSV, RLV, RSV, SCP.
  4030.  
  4031.  
  4032. CFB8 RJM CSV CHECK FOR SCRATCH VOLUME
  4033.  
  4034. CFB SUBR ENTRY/EXIT
  4035. LDM VBST+1,BP DETERMINE TAPE TYPE
  4036. SHN -5
  4037. LPN ACVS/40+CTVS/40
  4038. STD T1
  4039. LMD TT
  4040. ZJN CFB3 IF SAME TYPE AS CURRENT SCAN TYPE
  4041. SHN 21-13
  4042. PJN CFB1 IF NOT FIRST TAPE VSN FOUND OF ANY TYPE
  4043. LDD T1
  4044. STD TT SET TAPE TYPE FOR THIS SCAN
  4045. UJN CFB3 PROCESS VSN ENTRY
  4046.  
  4047. CFB1 LDM ISFC,T1
  4048. NJN CFB2 IF NOT FIRST VSN OF THIS TAPE TYPE
  4049. AOM ISFC,T1 INDICATE THAT VSN OF THIS TYPE FOUND
  4050. CFB2 UJN CFBX RETURN
  4051.  
  4052. CFB3 LDM VBST+1,BP
  4053. * UJN CFB8 (IF NOT CLEARING INTERLOCKS)
  4054. CFBA EQU *-2
  4055. LPN VIVS
  4056. NJN CFB4 IF VOLUME BUSY
  4057. LDM VBJS,BP
  4058. ZJN CFB8 IF VOLUME NOT ASSIGNED
  4059. CFB4 LDM VBMX,BP SET MACHINE INDEX HOLDING VSN BUSY
  4060. LPN 17
  4061. STD T1
  4062. LDM TACM,T1
  4063. NJP CFBX IF NOT PROCESSING THIS MACHINE
  4064. LDM VBRC,BP CHECK REEL NUMBER
  4065. SHN -6
  4066. SBN 2
  4067. PJP CFB8 IF NOT FIRST REEL
  4068. RJM SCP SET CATALOG BUFFER POINTERS
  4069. LDD BA CHECK FOR CATALOG ENTRY
  4070. ZJN CFB5 IF NO CATALOG ENTRY
  4071. LDM CBST,BP CHECK FOR INITIAL ASSIGNMENT
  4072. SHN 21-11
  4073. PJN CFB7 IF NOT INITIAL ASSIGNMENT
  4074. CFB5 RJM RLV RELEASE CATALOG ENTRIES AND VSNS
  4075. CFB6 LJM CFBX RETURN
  4076.  
  4077. CFB7 RJM RSV RESERVE CATALOG ENTRIES AND VSNS
  4078. UJN CFB6 RETURN
  4079. CSV SPACE 4,20
  4080. ** CSV - CHECK SCRATCH VOLUME.
  4081. *
  4082. * ENTRY (BA) = BUFFER ADDRESS (VSN INDEX).
  4083. * (BP) = BUFFER POINTER (VSN INDEX).
  4084. * (PV - PV+4) = PREVIOUS SCRATCH VSN POINTERS.
  4085. *
  4086. * EXIT (BA) = UNCHANGED.
  4087. * (BP) = UNCHANGED.
  4088. * VSN ADDED TO THE SCRATCH STRING, IF THE VSN STATUS
  4089. * IS SCRATCH.
  4090. *
  4091. * USES CV - CV+4, PV - PV+4.
  4092. *
  4093. * CALLS CRD, RLV, SCP, WRP.
  4094. *
  4095. * MACROS CLEAR, LDA, MMOVE, RESTP, SAVEP.
  4096.  
  4097.  
  4098. CSV4 PJN CSVX IF NOT RESERVED
  4099. ERRNZ RTVS-400000 *CODE MUST BE CHANGED*
  4100. LDM VBRC,BP CHECK REEL NUMBER
  4101. SHN -6
  4102. SBN 2
  4103. PJN CSVX IF NOT FIRST REEL
  4104. RJM CRD CHECK RELEASE DATE
  4105. ZJN CSVX IF NOT TO BE RELEASED
  4106. RJM SCP SET CATALOG BUFFER POINTERS
  4107. RJM RLV RELEASE CATALOG ENTRIES AND VSNS
  4108. UJN CSVX RETURN
  4109.  
  4110. CSV9 LMM VBST,BP CLEAR TEMPORARY SCRATCH
  4111. STM VBST,BP
  4112. AOM ISFA REWRITE BUFFER
  4113.  
  4114. CSV SUBR ENTRY/EXIT
  4115. LDM VBJS,BP
  4116. NJN CSVX IF VOLUME ASSIGNED
  4117. LDM VBST,BP CHECK FOR TEMPORARY SCRATCH
  4118. LPN TSVS/1S12
  4119. NJN CSV9 IF TEMPORARY SCRATCH
  4120. LDA VBST,BP
  4121. LPC RTVS+HMVS+UOVS+SVVS+TVVS+MVVS+ERVS
  4122. ZJN CSV1 IF AVAILABLE SCRATCH
  4123. LJM CSV4 CHECK CONDITIONAL RELEASE
  4124.  
  4125. CSV1 LDM VBST+1,BP SET AVAILABLE SCRATCH
  4126. LPC CTVS+ACVS
  4127. STM VBST+1,BP
  4128. LDN ASVS/1S12
  4129. STM VBST,BP
  4130. AOM PESN+4 INCREMENT SCRATCH COUNT
  4131. SHN -14
  4132. RAM PESN+3
  4133. LDD PV
  4134. NJN CSV2 IF PREVIOUS SCRATCH FOUND
  4135. MMOVE VBES,BP,PESN,,VSKL
  4136. UJN CSV3 SAVE SCRATCH POINTERS
  4137.  
  4138. CSV2 MMOVE VBES,BP,VBNV,PV+1,VSKL
  4139. LDD PV
  4140. LMD BA
  4141. ZJN CSV3 IF SAME BUFFER
  4142. SAVEP CV
  4143. RESTP PV
  4144. RJM WRP WRITE RANDOM PRU
  4145. RESTP CV
  4146. CSV3 AOM ISFA
  4147. AOM ISFB
  4148. SAVEP PV
  4149. CLEAR VBFV,BP,2*10D
  4150. STM VBCI,BP
  4151. STM VBCI+1,BP
  4152. LCN 0 SET END OF SCRATCH DELIMITER
  4153. STM VBNV,BP
  4154. STM VBNV+1,BP
  4155. STM VBNV+2,BP
  4156. LJM CSVX RETURN
  4157. RLV SPACE 4,20
  4158. ** RLV - RELEASE CATALOG ENTRIES AND VSNS.
  4159. *
  4160. * ENTRY (CV - CV+4) = CURRENT VSN POINTERS.
  4161. * (PV - PV+4) = PREVIOUS SCRATCH POINTERS.
  4162. * (CPCB - CPCB+4) = CATALOG BUFFER POINTERS.
  4163. *
  4164. * EXIT CATALOGS RELEASED.
  4165. * VSNS RELEASED.
  4166. * (PV - PV+4) = LAST SCRATCH VSN POINTERS
  4167. *
  4168. * USES KA, SV, CM - CM+4, CV - CV+4, NV - NV+2, PV - PV+4.
  4169. *
  4170. * CALLS CSN, IAM, PCE, RVB, VIS, WRP.
  4171. *
  4172. * MACROS CLEAR, COMPARE, ERROR, MMOVE, RESTP, SAVEP.
  4173.  
  4174.  
  4175. RLV SUBR ENTRY/EXIT
  4176. RESTP CV RESTORE CURRENT POINTERS
  4177. CRM RLVB,ON SAVE (CV)
  4178. SBN 1 SAVE FIRST SCRATCH VSN AND COUNT
  4179. CWM PESN,ON
  4180. SBN 1
  4181. CRM RLVA,ON
  4182. MMOVE VBES,BP,PESN,,VSKL SAVE FIRST VSN FOR MESSAGE/COMPARE
  4183. LDN 0
  4184. RLV0 STD NV SET/CLEAR PRECEDING SYSTEM VSN FLAG
  4185. LDM VBST+1,BP CHECK SYSTEM VSN FLAG
  4186. LPC SVVS
  4187. STD SV SET PROCESSING SYSTEM VSN FLAG
  4188. NJN RLV0.1 IF PROCESSING SYSTEM VSN
  4189. LDD PV
  4190. NJN RLV1 IF PREVIOUS SCRATCH FOUND
  4191. MMOVE VBES,BP,RLVA,,VSKL SET FIRST SCRATCH VSN
  4192. RLV0.1 UJP RLV2 SKIP TO LAST VSN
  4193.  
  4194. RLV1 LDD NV
  4195. ZJN RLV1.1 IF NO PRECEDING SYSTEM VSN
  4196. SAVEP CV MAKE THIS VSN CURRENT TEMPORARILY
  4197. RJM RVB RESTORE VSN BUFFERS
  4198. RLV1.1 MMOVE VBES,BP,VBNV,PV+1,VSKL SET NEXT IN CHAIN TO FIRST VSN
  4199. LDD PV
  4200. LMD BA
  4201. ZJN RLV1.2 IF SAME BUFFER
  4202. RESTP PV RESTORE PREVIOUS SCRATCH VSN POINTERS
  4203. RJM WRP WRITE RANDOM PRU
  4204. RESTP CV RESTORE CURRENT SCRATCH VSN POINTERS
  4205. RLV1.2 LDD MA RESTORE ORIGINAL (CV)
  4206. CWM RLVB,ON
  4207. SBN 1
  4208. CRD CV
  4209. RLV2 LDN NV SET NEXT VOLUME
  4210. STD KA
  4211. MMOVE VBNV,BP,NV,,VSKL SAVE NEXT VSN
  4212. CLEAR VBFV,BP,2*10D CLEAR VSN BLOCK
  4213. STM VBCI,BP CLEAR CATALOG POINTERS
  4214. STM VBCI+1,BP
  4215. LDM VBST+1,BP CLEAR EXTRANEOUS STATUS FLAGS
  4216. LPK SVVS+TVVS+MVVS+ERVS+CTVS+ACVS
  4217. STM VBST+1,BP
  4218. LDM VBST,BP
  4219. LPK HMVS/1S12+UOVS/1S12
  4220. STM VBST,BP
  4221. LDD SV
  4222. NJN RLV3 IF SYSTEM VSN
  4223. MMOVE NV,,VBNV,BP,VSKL RESTORE NEXT VSN
  4224. AOM RLVA+4 INCREMENT SCRATCH COUNT
  4225. SHN -14
  4226. RAM RLVA+3
  4227. LDN ASVS/1S12 SET AVAILABLE SCRATCH
  4228. RAM VBST,BP
  4229. COMPARE PESN,,VBES,BP,VSKL
  4230. PJN RLV3 IF VSN IN BUFFER ALREADY PROCESSED
  4231. LDN TSVS/1S12 FLAG TEMPORARY SCRATCH
  4232. RAM VBST,BP
  4233. RLV3 LDD NV
  4234. ZJN RLV4 IF LAST VOLUME
  4235. RJM WRP WRITE RANDOM PRU
  4236. RJM VIS VSN INDEXED SEARCH
  4237. ZJN RLV3.1 IF VSN FOUND
  4238. ERROR EID *ERROR IN INDEX DATA.*
  4239.  
  4240. RLV3.1 LDD SV
  4241. ZJP RLV2 IF NOT PRECEDED BY SYSTEM VSN
  4242. LJM RLV0 SET FLAG AND CHECK NEXT SCRATCH VSN
  4243.  
  4244. RLV4 STM ISFA CLEAR BUFFER REWRITE FLAG
  4245. STM ISFB CLEAR BUFFER TOGGLE FLAG
  4246. LDD SV
  4247. NJN RLV4.1 IF ONLY SYSTEM VSN(S) PROCESSED
  4248. LCN 0 SET END OF SCRATCH VOLUMES
  4249. STM VBNV,BP
  4250. STM VBNV+1,BP
  4251. STM VBNV+2,BP
  4252. SAVEP PV SAVE LAST SCRATCH POINTERS
  4253. RLV4.1 RJM WRP WRITE LAST SCRATCH
  4254. LDM CPCB
  4255. ZJN RLV6 IF NO CATALOG ENTRY
  4256. MMOVE CWUN,CPCB,PBUN,,UNKL SET USERNAME TO TAPE FILE
  4257. LDM CPCB+1 GET FILE STATUS
  4258. STD CM
  4259. LDM CBST,CM
  4260. SHN 21-11
  4261. MJN RLV5 IF INITIAL CATALOG
  4262. LDN 1
  4263. RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  4264. LDN ZERL SET UNCONDITIONAL RELEASE
  4265. CRD CM
  4266. LDN 1 FLAG RELEASE
  4267. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  4268. RLV5 RJM PCE PURGE CATALOG ENTRIES
  4269. RLV6 RJM RVB RESTORE VSN BUFFERS
  4270. LDD MA SET/RESTORE FIRST SCRATCH VSN AND COUNTS
  4271. CWM RLVA,ON
  4272. SBN 1
  4273. CRM PESN,ON
  4274. LJM RLVX RETURN
  4275.  
  4276.  
  4277. RLVA BSS 5 FIRST SCRATCH VSN
  4278. RLVB BSS 5 CURRENT VSN POINTERS
  4279. RSV SPACE 4,10
  4280. ** RSV - RESERVE CATALOG ENTRIES AND VSNS.
  4281. *
  4282. * ENTRY (CV - CV+4) = CURRENT VSN POINTERS.
  4283. * (PV - PV+4) = PREVIOUS SCRATCH POINTERS.
  4284. * (CPCB - CPCB+4) = CATALOG BUFFER POINTERS.
  4285. *
  4286. * EXIT CATALOG ENTRIES AND VSNS RESERVED.
  4287. * (BA) = UNCHANGED
  4288. * (BP) = UNCHANGED
  4289. *
  4290. * USES CM, IC, KA, RC.
  4291. *
  4292. * CALLS CSN, IAM, IRM, RRP, RVB, VIS, VSP, WRP.
  4293. *
  4294. * MACROS ERROR, LDA, MMOVE, RESTP, SAVEP.
  4295.  
  4296.  
  4297. RSV SUBR ENTRY/EXIT
  4298. LDD MA SAVE SCRATCH POINTERS AND COUNT
  4299. CWM PESN,ON
  4300. SBN 1
  4301. CRM RLVA,ON
  4302. RESTP CV RESTORE CURRENT VSN POINTERS
  4303. MMOVE VBES,BP,PESN,,VSKL SET FIRST VSN AND CURRENT VSN
  4304. LDC PVSN
  4305. STD KA
  4306. MMOVE PESN,,,KA,VSKL
  4307. SAVEP CPSI SAVE SECONDARY VSN POINTERS
  4308. RESTP CPCB
  4309. MMOVE CWUN,BA,PBUN,,UNKL
  4310. RSV1 LDA CBQN,BP SET SEQUENCE NUMBER
  4311. RJM CSN
  4312. LDM CBST,BP GET INITIAL CATALOG STATUS
  4313. STD T0
  4314. LPC 1000
  4315. STD IC
  4316. LMD T0 CLEAR INITIAL CATALOG STATUS
  4317. SCN 1 CLEAR BUSY
  4318. STM CBST,BP
  4319. LDM CBRC,BP
  4320. STD RC
  4321. RESTP CPSI RESTORE SECONDARY VSN POINTERS
  4322. RSV2 LDD IC
  4323. NJN RSV3 IF INITIAL CATALOG
  4324. LDM VBST,BP CHECK RESERVED STATUS
  4325. LPN RTVS/1S12
  4326. NJN RSV4 IF RESERVED
  4327. RSV3 LDN 0 SET RESERVE MESSAGE
  4328. RJM IAM ISSUE ACCOUNTING MESSAGE
  4329. RSV4 LDM VBST,BP CLEAR EOI AND SCRATCH STATUS
  4330. SCN EOIV/1S12+RTVS/1S12+ASVS/1S12
  4331. LMN RTVS/1S12 SET RESERVED STATUS
  4332. STM VBST,BP
  4333. LDM VBST+1,BP CLEAR VSN BUSY STATUS
  4334. SCN VIVS
  4335. STM VBST+1,BP
  4336. LDN 0
  4337. STM VBJS,BP
  4338. SOD RC
  4339. ZJN RSV7 IF NO MORE REELS
  4340. RJM WRP WRITE RANDOM PRU
  4341. MMOVE VBNV,BP,,KA,VSKL
  4342. LDI KA
  4343. NJN RSV6 IF NEXT REEL EXISTS
  4344. RSV5 ERROR EID *ERROR IN INDEXED DATA.*
  4345.  
  4346. RSV6 RJM VIS VSN INDEXED SEARCH
  4347. NJN RSV5 IF NOT FOUND
  4348. LJM RSV2 UPDATE NEXT VSN
  4349.  
  4350. RSV7 RESTP CPCB RESTORE CATALOG BUFFER POINTERS
  4351. LDM CBST,BP
  4352. SHN 21-10
  4353. PJN RSV8 IF NO RECOVERY MESSAGES TO ISSUE
  4354. RJM IRM ISSUE *TMS* RECOVERY MESSAGES
  4355. RSV8 LDM CBNC,BP
  4356. SHN 14
  4357. STD CI
  4358. SHN -14
  4359. LMD RI
  4360. NJN RSV9 IF DIFFERENT CATALOG BLOCK
  4361. LDM CBNC+1,BP
  4362. LMD RI+1
  4363. ZJN RSV10 IF DIFFERENT CATALOG BLOCK
  4364. RSV9 RJM WRP WRITE RANDOM PRU
  4365. LDM CBNC,BP CHECK FOR NEXT CATALOG
  4366. LPN 77
  4367. STD RI
  4368. LDM CBNC+1,BP
  4369. STD RI+1
  4370. ADD RI
  4371. ZJN RSV12 IF LAST CATALOG
  4372. RJM RRP READ RANDOM PRU
  4373. RSV10 RJM VSP VERIFY/SET CATALOG POINTERS
  4374. PJN RSV11 IF POINTER VALID
  4375. ERROR ECD *ERROR IN CATALOG DATA.*
  4376.  
  4377. RSV11 SAVEP CPCB SAVE CATALOG BUFFERS
  4378. LJM RSV1 PROCESS NEXT CATALOG
  4379.  
  4380. RSV12 LDM CPSI+1 CHECK FOR EXCESS VOLUMES
  4381. STD CM
  4382. LDM VBNV,CM
  4383. ZJN RSV13 IF NO EXCESS VOLUMES
  4384. AOD RC FAKE REEL COUNT
  4385. RESTP CPCB RESTORE CATALOG BUFFERS
  4386. LJM RSV2 SET VSN STATUS, ISSUE ACCOUNT FILE MESSAGE
  4387.  
  4388. RSV13 RESTP CPSI RESTORE VSN POINTERS
  4389. RJM WRP WRITE RANDOM PRU
  4390. RJM RVB RESTORE VSN BUFFERS
  4391. LDD MA RESTORE SCRATCH POINTERS
  4392. CWM RLVA,ON
  4393. SBN 1
  4394. CRM PESN,ON
  4395. LJM RSVX RETURN
  4396. RVB SPACE 4,15
  4397. ** RVB - RESTORE VSN BUFFERS.
  4398. *
  4399. * ENTRY (CV - CV+4) = CURRENT SCRATCH BUFFER POINTERS.
  4400. * (PV - PV+4) = PREVIOUS SCRATCH BUFFER POINTERS.
  4401. *
  4402. * EXIT (BA - RI+1) = CURRENT SCRATCH BUFFER POINTERS.
  4403. * BUFFERS RELOADED.
  4404. *
  4405. * CALLS RRP, TBA.
  4406. *
  4407. * MACROS RESTP.
  4408.  
  4409.  
  4410. RVB SUBR ENTRY/EXIT
  4411. LDN 0
  4412. STM ISFA NO WRITE NECESSARY
  4413. STM ISFB NO BUFFER TOGGLE NECESSARY
  4414. RESTP PV READ LAST SCRATCH BUFFER
  4415. LDD BA
  4416. ZJN RVB1 IF NO PREVIOUS SCRATCH
  4417. RJM TBA TOGGLE BUFFER ALLOCATION
  4418. RJM RRP READ RANDOM PRU
  4419. LDD PV+1 RESET PREVIOUS SCRATCH BUFFER POINTER
  4420. SBD PV
  4421. ADD BA
  4422. STD PV+1
  4423. STD BP
  4424. LDD BA RESET PREVIOUS SCRATCH BUFFER ADDRESS
  4425. STD PV
  4426. LDD RI COMPARE RANDOM INDICES
  4427. LMD CV+3
  4428. NJN RVB1 IF DIFFERENT
  4429. LDD RI+1
  4430. LMD CV+4
  4431. NJN RVB1 IF DIFFERENT
  4432. AOM ISFB BUFFER TOGGLE REQUIRED FOR NEXT VSN BLOCK
  4433. UJN RVB2 SET CURRENT VSN POINTERS
  4434.  
  4435. RVB1 RESTP CV RESTORE CURRENT VSN POINTERS
  4436. RJM TBA TOGGLE BUFFER ALLOCATION
  4437. RJM RRP READ RANDOM PRU
  4438. RVB2 LDD CV+1 RESET CURRENT VSN BUFFER POINTER
  4439. SBD CV
  4440. ADD BA
  4441. STD CV+1
  4442. STD BP
  4443. LDD BA RESET CURRENT VSN BUFFER ADDRESS
  4444. STD CV
  4445. LDD RI RESET CURRENT POSITION RANDOM INDEX
  4446. STM CPRI
  4447. LDD RI+1
  4448. STM CPRI+1
  4449. LJM RVBX RETURN
  4450. SCP SPACE 4,15
  4451. ** SCP - SET CATALOG BUFFER POINTERS
  4452. *
  4453. * ENTRY (BA - RI+1) = SECONDARY VSN BUFFER POINTERS.
  4454. *
  4455. * EXIT (CV - CV+4) = SECONDARY VSN BUFFER POINTERS.
  4456. * (CPCB - CPCB+4) = CATALOG ENTRY BUFFER POINTERS.
  4457. * (BA - RI+1) = CATALOG ENTRY BUFFER POINTERS.
  4458. *
  4459. * USES BA, BP, CI, CV - CV+4, RI - RI+1.
  4460. *
  4461. * CALLS RRP, VSP.
  4462. *
  4463. * MACROS SAVEP.
  4464.  
  4465.  
  4466. SCP2 LDI BP
  4467. ZJN SCP1 IF HOLE FOUND
  4468. SCP3 SAVEP CPCB SAVE CATALOG POINTERS
  4469.  
  4470. SCP SUBR ENTRY/EXIT
  4471. SAVEP CV SAVE CURRENT POINTERS
  4472. LDM VBCI,BP
  4473. SHN 14
  4474. STD CI
  4475. SCN 77
  4476. LMM VBCI+1,BP
  4477. ZJN SCP1 IF NO CATALOG INDEX
  4478. STD RI+1
  4479. SHN -14
  4480. STD RI
  4481. LDC BUF2 DEFINE CATALOG BUFFER
  4482. SCP1 STD BA
  4483. ZJN SCP3 IF NO CATALOG INDEX
  4484. RJM RRP READ RANDOM PRU (CATALOG)
  4485. RJM VSP VERIFY/SET CATALOG POINTERS
  4486. PJN SCP2 IF VALID CATALOG
  4487. LDN 0
  4488. UJN SCP1 SET NO CATALOG
  4489. CRD SPACE 4,10
  4490. ** CRD - CHECK RELEASE DATE.
  4491. *
  4492. * ENTRY (BA) = BUFFER ADDRESS (VSN INDEX).
  4493. * (BP) = BUFFER POINTER (VSN INDEX).
  4494. * (PV - PV+4) = PREVIOUS SCRATCH VSN POINTERS.
  4495. *
  4496. * EXIT (A) = 0 IF RELEASE DATE OLD FORMAT, NO RELEASE DATE,
  4497. * OR IF RELEASE DATE NOT YET REACHED.
  4498. * (A) .NE. 0 IF RELEASE DATE NEW FORMAT AND EXPIRED.
  4499. *
  4500. * USES CM - CM+4.
  4501. *
  4502. * MACROS MONITOR.
  4503.  
  4504.  
  4505. CRD SUBR ENTRY/EXIT
  4506. LDM VBST+1,BP VSN STATUS
  4507. LPN RDVS
  4508. ZJN CRDX IF RELEASE DATE OLD FORMAT
  4509. LDM VBRD+1,BP RELEASE DATE
  4510. ZJN CRDX IF NO RELEASE DATE
  4511. STD CM+4
  4512. LDM VBRD,BP RELEASE DATE YEAR
  4513. LPN 77
  4514. STD CM+3
  4515. LDN /COMSCPS/VEDS CHECK RELEASE DATE REACHED
  4516. STD CM+1
  4517. MONITOR VSAM VALIDATE SECURITY ACCESS FUNCTIONS
  4518. LDD CM+1
  4519. UJN CRDX RETURN
  4520. TACM SPACE 4,10
  4521. * TACM - TABLE OF ACTIVE MACHINES.
  4522. *
  4523. * INDEXED BY MACHINE INDEX-1. NONZERO ENTRY FLAGS MACHINE
  4524. * ACTIVE.
  4525.  
  4526.  
  4527. TACM EQU OVL1-20
  4528. SPACE 4
  4529. ** LOCAL COMMON DECKS.
  4530.  
  4531. *CALL COMPC2D
  4532.  
  4533.  
  4534. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY
  4535. DDE$ EQU 1 DEFINE DDE - DELETE DATA BLOCK
  4536. DLB$ EQU 1 DEFINE DLB - DELINK BLOCK
  4537. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  4538. GNL$ EQU 1 DEFINE GNL - GET NEXT LINK
  4539. GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK
  4540. IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE
  4541. IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES.
  4542. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH BY KEY
  4543. PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES
  4544. PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX
  4545. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER
  4546. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  4547. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  4548. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  4549. *CALL COMPTFM
  4550. SPACE 4
  4551. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  4552. TITLE PRESET.
  4553. PRS SPACE 4,15
  4554. ** PRS - PRESET FOR *ISF*.
  4555. *
  4556. * ENTRY (CPSB - CPSB+4) = SYSTEM BUFFER POINTERS.
  4557. *
  4558. * EXIT (TT) = 7777.
  4559. * (BA - RI+1) = FIRST VSN TO CHECK FOR SCRATCH.
  4560. * (ISFD - ISFD+4) = (BA - RI+1).
  4561. *
  4562. * USES TT, T1, PV - PV+4, RI - RI+1.
  4563. *
  4564. * CALLS GIB, MBP, RRP, SAM, TBA.
  4565. *
  4566. * MACROS COMPARE, ERROR, ISTORE, RESTP, SAVEP.
  4567.  
  4568.  
  4569. PRS SUBR ENTRY/EXIT
  4570. LDM PFLG
  4571. LPN 3
  4572. NJN PRS0 IF CLEARING INTERLOCKS
  4573. ISTORE CFBA,(UJN CFB8) BYPASS INTERLOCK CLEARING
  4574. LDN 0
  4575. PRS0 SBN 2
  4576. MJN PRS1 IF CLEARING NO OR ALL INTERLOCKS
  4577. RJM SAM SEARCH FOR ACTIVE MACHINES
  4578. PRS1 LDN ZERL
  4579. CRD PV CLEAR PREVIOUS SCRATCH POINTERS
  4580. CRM PESN,ON CLEAR SCRATCH COUNT
  4581. LCN 0 SET END OF SCRATCH
  4582. STM PESN
  4583. STM PESN+1
  4584. STM PESN+2
  4585. RESTP CPSB RESTORE BUFFER POINTERS
  4586. RJM RRP READ RANDOM PRU (TMST)
  4587. LDM CWRT,BA
  4588. LMC RTSB*100B
  4589. NJN PRS2 IF NOT TMST
  4590. COMPARE PFAM,,,BP,PFKL
  4591. ZJN PRS3 IF FAMILY CATALOG
  4592. PRS2 ERROR CNF *(FAMILY) CATALOG NOT FOUND.*
  4593.  
  4594. PRS3 LDM CWUN,BA
  4595. ZJN PRS4 IF *TFSP* INTERLOCK NOT SET
  4596. LDM CWMX,BA GET INDEX OF MACHINE HOLDING INTERLOCK
  4597. LPN 17
  4598. STD T1
  4599. LDM TACM,T1 CHECK PROCESSING INHIBITED FOR MACHINE
  4600. ZJN PRS4 IF PROCESSING NOT INHIBITED
  4601. ERROR TUA * TMS UTILITY ACTIVE.*
  4602.  
  4603. PRS4 RJM TBA TOGGLE BUFFER ASSIGNMENT
  4604. LDN FPVI SET PRIMARY VSN INDEX
  4605. STD RI+1
  4606. SHN -14
  4607. STD RI
  4608. RJM GIB GET INITIAL BLOCK (PRIMARY VSN)
  4609. LDM CWRT,BA
  4610. LMC RTVB*100+1
  4611. ZJN PRS6 IF PRIMARY VSN INDEX BLOCK
  4612. PRS5 ERROR EID *ERROR IN INDEX DATA.*
  4613.  
  4614. PRS6 LDM CWFE,BA FIND FIRST SECONDARY INDEX BLOCK
  4615. RJM MBP MOVE BUFFER POINTER
  4616. LDA VBCI,BP
  4617. ZJN PRS5 IF NO SECONDARY INDEX
  4618. STD RI+1
  4619. SHN -14
  4620. STD RI
  4621. RJM GIB GET INITIAL BLOCK (SECONDARY INDEX)
  4622. LDM CWFE,BA SKIP FIRST INDEX ENTRY
  4623. ADM CWEL,BA
  4624. RJM MBP MOVE BUFFER POINTER
  4625. SAVEP ISFD SAVE POINTERS TO FIRST VSN BLOCK
  4626. LCN 0 INDICATE THAT FIRST SCRATCH NOT YET FOUND
  4627. STD TT
  4628. LJM PRSX RETURN
  4629. SAM SPACE 4,10
  4630. ** SAM - SEARCH FOR ACTIVE MACHINES.
  4631. *
  4632. * ENTRY (FO) = CATALOG EST ORDINAL.
  4633. *
  4634. * EXIT TACM TABLE INITIALIZED.
  4635. *
  4636. * USES CM - CM+4, FN - FN+4, T1.
  4637. *
  4638. * CALLS AFA.
  4639.  
  4640.  
  4641. SAM2 LCN 0 SET CURRENT MACHINE ACTIVE
  4642. STM TACM
  4643. SAM3 LDM CDMX
  4644. STD T1
  4645. LDM PFLG CHECK PROCESSING OPTION
  4646. LPN 3
  4647. LMN 2
  4648. NJN SAMX IF NOT TO PROCESS CURRENT MACHINE
  4649. STM TACM,T1 CLEAR CURRENT MACHINE ENTRY
  4650.  
  4651. SAM SUBR ENTRY/EXIT
  4652. LDD FO READ CATALOG FILE EST ENTRY
  4653. RJM AFA
  4654. CRD CM
  4655. SFA EST,CM READ EST ENTRY
  4656. CRD CM
  4657. LDD CM
  4658. SHN 21-4
  4659. PJN SAM2 IF NOT INDEPENDENT SHARED DEVICE
  4660. LDD CM+4 READ TRT LENGTH
  4661. SHN 3
  4662. ADK TDGL
  4663. CRD CM
  4664. ADN TRLL-TDGL READ TRT POINTER
  4665. CRD FN
  4666. LDD CM+2
  4667. ADN 7
  4668. SHN -3 MRT LENGTH
  4669. ADD CM+2 TRT LENGTH
  4670. STD T1 SET DIT OFFSET
  4671. LDD FN+3 SET FWA OF DIT
  4672. LPN 77
  4673. SHN 14
  4674. ADD FN+4
  4675. ADD T1
  4676. STM SAMA
  4677. SHN -14
  4678. RAM SAMA-1
  4679. LDN 0 INITIALIZE DIT ENTRY INDEX
  4680. STD T1
  4681. SAM1 LDC 0 READ DIT ENTRY
  4682. SAMA EQU *-1 (DIT FWA)
  4683. ADD T1
  4684. CRD CM
  4685. LDD CM+4 SET MACHINE ACTIVE FLAG
  4686. STM TACM,T1
  4687. AOD T1 ADVANCE ND OF ENTRIES
  4688. LMN 20
  4689. NJN SAM1 IF MORE ENTRIES TO PROCESS
  4690. LJM SAM3 CHECK INTERLOCK CLEAR OPTION
  4691.  
  4692.  
  4693. ERRNG BUF1-* OVERFLOW INTO *BUF1*
  4694. OVERLAY (*ISFS* POSTPROCESSOR.),/5TB/OVL2
  4695. SPACE 4
  4696. *** LOCAL DIRECT CELL LOCATIONS.
  4697.  
  4698.  
  4699. TT EQU /5TB/TT TAPE TYPE (SET BY *5TB*)
  4700. SPACE 4,10
  4701. *** BUFFER ALLOCATION.
  4702. *
  4703. * THE FOLLOWING BUFFER IS CREATED BY OVERLAY *5TB*.
  4704.  
  4705.  
  4706. TSPW EQU /5TB/TSPW TABLE OF SCRATCH POOL WORDS
  4707. * (5 BYTES/ENTRY; INDEXED BY TAPE TYPE)
  4708. ISP SPACE 4,10
  4709. *** ISP - *ISFS* POSTPROCESSOR.
  4710. *
  4711. * ENTRY (PFLG) = PROCESSING OPTION (BITS 1-0).
  4712. * 0 = REORDER SCRATCH ONLY (*TFSP* *ISV* DIRECTIVE).
  4713. * 1 = REORDER SCRATCH AND CLEAR ALL INTERLOCKS (FIRST
  4714. * *ISF* ON DEVICE).
  4715. * 2 = REORDER SCRATCH AND CLEAR CURRENT AND INACTIVE
  4716. * MACHINE INTERLOCKS (*ISF* LINK TO SHARED DEVICE).
  4717. * 3 = REORDER SCRATCH AND CLEAR INACTIVE MACHINE
  4718. * INTERLOCKS (*TFSPR* COMMAND).
  4719. *
  4720. * USES CM - CM+4.
  4721. *
  4722. * CALLS RRP, SEI, WRP.
  4723. *
  4724. * MACROS CLEAR, MMOVE, MONITOR, RESTP.
  4725.  
  4726.  
  4727. ISP ENTRY ENTRY/EXIT
  4728. RESTP CPSB REREAD SYSTEM BLOCK
  4729. RJM RRP READ RANDOM PRU
  4730. RJM SEI SET EOI SECTOR LOCATION
  4731. STM SBTC,BP SET TRACK COUNT
  4732. LDA T2,ABS SET SECTOR COUNT
  4733. STM SBPC+1,BP
  4734. SHN -14
  4735. STM SBPC,BP
  4736. MMOVE TSPW,,SBSM,BP,10D SET *MT*/*NT* SCRATCH VSN POINTER
  4737. MMOVE TSPW+5,,SBSC,BP,10D SET *CT* SCRATCH VSN POINTER
  4738. MMOVE TSPW+17,,SBSA,BP,10D SET *AT* SCRATCH VSN POINTER
  4739. LDM PFLG
  4740. LPN 3
  4741. ZJN ISP1 IF NOT CLEARING INTERLOCKS
  4742. CLEAR CWUN,BA,10D CLEAR *TFSP* USER NAME INTERLOCK
  4743. LDM SBST+1,BP CLEAR UTILITY ACIVE AND SUSPEND FLAGS
  4744. SCN UITS+SATS
  4745. STM SBST+1,BP
  4746. LDM SBST,BP
  4747. SCN FFTS/10000
  4748. STM SBST,BP
  4749. LDM SBID,BP CHECK MACHINE ID
  4750. LMM MFID
  4751. ZJN ISP1 IF HOME MAINFRAME
  4752. LDM SBST,BP
  4753. SCN GFTS/10000 CLEAR GLOBAL SCRATCH STATUS
  4754. LMN FFTS/10000 SET FOREIGN MAINFRAME
  4755. STM SBST,BP
  4756. ISP1 RJM WRP WRITE SYSTEM BLOCK
  4757. LDN ZERL POST UTILITY ACTIVE EVENT
  4758. CRD CM
  4759. LDN ESUA
  4760. STD CM+4
  4761. MONITOR EATM ENTER EVENT
  4762. LDM TSPW+3 CHECK IF ANY SCRATCH VOLUMES FOUND
  4763. ADM TSPW+4
  4764. ADM TSPW+5+3
  4765. ADM TSPW+5+4
  4766. ADM TSPW+17+3
  4767. ADM TSPW+17+4
  4768. ZJN ISP2 IF NO SCRATCH VOLUMES OF ANY TYPE FOUND
  4769. LDN ZERL
  4770. CRD CM
  4771. LDN ESVB
  4772. STD CM+4
  4773. MONITOR EATM ENTER EVENT
  4774. ISP2 LJM ISPX RETURN
  4775.  
  4776.  
  4777. OVERFLOW /5TB/OVL2,BUF2 OVERFLOW INTO *BUF2*
  4778. OVERLAY (*RESEX* FIRST REEL ASSIGNMENT.),OVL1
  4779. SPACE 4
  4780. *** LOCAL DIRECT CELL LOCATIONS
  4781.  
  4782.  
  4783. CT EQU S1 FILE CATEGORY
  4784. MD EQU S1+1 FILE ACCESS MODE
  4785. FV EQU S2 - S2+2 FIRST VSN
  4786. RAP SPACE 4,10
  4787. RFA SPACE 4,10
  4788. *** RFAS - *RESEX* FIRST REEL ASSIGNMENT.
  4789. *
  4790. * CALLED BY *RESEX* TO ASSIGN THE FIRST VOLUME
  4791. * OF A TAPE FILE.
  4792. *
  4793. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  4794. *
  4795. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  4796. *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0
  4797. *T, +2 60/ 0
  4798. *T, +3 60/ 0
  4799. *T, +4 12/ FNT,30/ 0,18/ 0
  4800. *T, +5 42/ 0,18/ EADD
  4801. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  4802. *T, +7 36/ VSN,12/ FLAGS,12/ 0
  4803. *T, +10 60/ TAPE DESCRIPTORS
  4804. *T, +11 36/ PRN,6/ FA,18/ BLOCK SIZE
  4805. *T, +12 60/ FILE IDENTIFIER
  4806. *T, +13 42/ FID (CONT.),18/SEQ. NUM.
  4807. *T, +14 36/ SET I.D.,9/ VER.,15/ GEN.
  4808. *T, +15 30/ RETENTION DATE,30/ CREATION DATE
  4809. *T, +16 42/ ALT. USERNAME,18/ TO
  4810. *T, +17 42/ PASSWORD,6/ AC,6/ CT,6/ MD
  4811. *
  4812. * EXIT 1. IF THIS IS A RESERVED FILE THE TAPE
  4813. * FILE PARAMETERS ARE DEFAULTED FROM
  4814. * THE CATALOG AND THE VSN IS ASSIGNED.
  4815. * 2. IF THIS IS A NON- RESERVED FILE, THE
  4816. * CATALOG IS BUILT AND A SCRATCH VOLUME
  4817. * IS ASSIGNED.
  4818. *
  4819. * USES BP, CM - CM+4, EC, KA.
  4820. *
  4821. * CALLS ASR, CAA, ECI, EDT, ERR, FTC, GIB, IUC, PRS, RRP, SMF,
  4822. * SSP, SVB, VIS, VSP, WRP.
  4823. *
  4824. * MACROS COMPARE, ERROR, EXOVL, LDA, MMOVE, RESTP, SAVEP.
  4825.  
  4826.  
  4827. RFA ENTRY ASSIGN FIRST REEL FUNCTION
  4828. RJM PRS PRESET
  4829. ZJN RFA1 IF NOT REENTERED REQUEST
  4830. RJM GIB GET INITIAL BLOCK
  4831. RJM VSP VERIFY/SET CATALOG POINTER
  4832. MJN RFA1 IF INCORRECT POINTER
  4833. SAVEP CPCB SAVE BUFFER POINTER (CATALOG)
  4834. LJM RFA11 CHECK ASSIGNED VOLUME
  4835.  
  4836. RFA1 LDM PESN
  4837. NJN RFA1.1 IF A VSN IS SPECIFIED
  4838. LDM PBTO+1 CHECK FOR SYMBOLIC ACCESS
  4839. SHN 21-2
  4840. MJN RFA1.1 IF SYMBOLIC ACCESS
  4841. LDN /EMSG/ILR PRESET *TFM INCORRECT REQUEST.*
  4842. STD EC
  4843. LDM PFLG CHECK FOR VSN=SCRATCH
  4844. SHN 21-12
  4845. MJN RFA1.2 IF VSN=SCRATCH
  4846. RFA1.1 RJM FTC FIND TAPE CATALOG
  4847. STD EC SET ERROR CODE
  4848. ZJN RFA4 IF CATALOG FOUND
  4849. LMN /EMSG/VNF
  4850. ZJN RFA2 IF VSN NOT FOUND ERROR
  4851. RFA1.2 BSS 0
  4852. LDM PFTD
  4853. SHN 21-13
  4854. MJN RFA3 IF WRITE LABEL
  4855. LDM PFTD+1
  4856. SHN 21-4
  4857. MJN RFA3 IF PO=W SELECTED
  4858. RFA2 LDD EC RESTORE ERROR CODE
  4859. ERROR
  4860.  
  4861. RFA3 LDM PAUN CHECK ALTERNATE USER ACCESS
  4862. NJN RFA2 IF ALTERNATE USER SPECIFIED
  4863. EXOVL ECI ENTER CATALOG IMAGE
  4864.  
  4865. RFA4 LDM PBTO+1 SET RESERVE SCRATCH ASSIGNED
  4866. LPC 7763 CLEAR RESERVE AND SYMBOLIC ACCESS FLAGS
  4867. LMN 10
  4868. STM PBTO+1
  4869. LDN 6
  4870. STD T0
  4871. LDM PESN
  4872. NJN RFA5 IF A VSN WAS SPECIFIED
  4873. LDN 5*10D
  4874. STD T0
  4875. LDM PFLG CHECK IF THE VSN= PARAMETER WAS SPECIFIED
  4876. SHN 21-12
  4877. PJN RFA5 IF VSN= WAS NOT SPECIFIED
  4878. ERROR FAR *(FILENAME) ALREADY RESERVED.*
  4879.  
  4880. RFA5 MMOVE CBVS,BP,PVSN,,,T0
  4881. LDM CBST,BP SET SYMBOLIC ACCESS FLAG
  4882. LPN 4
  4883. RAM PBTO+1
  4884. SHN 21-0
  4885. MJN RFA6 IF USER SUPPLYING PARAMETERS
  4886. LDM CBST,BP
  4887. SHN 21-12
  4888. MJN RFA6 IF RECOVERED FILE
  4889. SHN 21-11-21+12
  4890. RFA6 MJN RFA7 IF SHOULD CHECK SYMBOLIC REQUEST
  4891. LDM PFTD SET LABEL,TAPE TYPE, DENSITY, CONVERSION
  4892. LPC 4000
  4893. STM PFTD
  4894. LDM CBTD,BP
  4895. LPC 3777
  4896. RAM PFTD
  4897. LDM CBTD+2,BP SET FORMAT/NOISE
  4898. STM PFTD+2
  4899. LDM CBTD+3,BP SET BLOCK SIZE
  4900. STM PFTD+3
  4901. LDM CBTD+4,BP
  4902. STM PFTD+4
  4903. RFA7 LDM CBST,BP
  4904. SHN 21-2
  4905. PJP RFA10 IF NOT SYMBOLIC ACCESS
  4906. AOM CAAC DO NOT UPDATE ADMIT ENTRY
  4907. LDM PESN
  4908. ZJN RFA9 IF VSN NOT SPECIFIED
  4909. LDM POFI
  4910. NJN RFA8 IF FILE IDENTIFIER SPECIFIED
  4911. RFAA LDC 0
  4912. * LDC (PBQN)
  4913. ZJN RFA10 IF NO SEQUENCE NUMBER
  4914. RFA8 EXOVL SMF SET MULTI-FILE PARAMETERS
  4915.  
  4916. RFA9 LDC 0
  4917. * LDC (PBQN)
  4918. ZJN RFA10 IF NO SEQUENCE NUMBER
  4919. LMM CBQN+1,BP
  4920. STD T0
  4921. SHN -14
  4922. LMM CBQN,BP
  4923. LPN 77
  4924. ADD T0
  4925. ZJN RFA10 IF CORRECT SEQUENCE NUMBER
  4926. ERROR FNF *FILE NOT FOUND.*
  4927.  
  4928. RFA10 RJM CAA CHECK ALTERNATE USER ACCESS
  4929. RFA11 LDM CBST,BP CHECK DATA ERROR FLAG
  4930. SHN 21-1
  4931. PJN RFA12 IF NOT DATA ERROR
  4932. LDM PBTO+1 CHECK FOR *TO=C*
  4933. SHN 21-11
  4934. MJN RFA11.1 IF CHECK FOR CATALOG ERROR
  4935. SHN 21-7-21+11 CHECK FOR *TO=E*
  4936. MJN RFA12 IF IGNORE CATALOG ERROR
  4937. RFA11.1 BSS 0
  4938. ERROR EFD * ERROR IN FILE DATA.*
  4939.  
  4940. RFA12 LDM CBES,BP CHECK ASSIGNED VOLUME
  4941. NJN RFA15 IF VOLUME ASSIGNED TO CATALOG
  4942. LDM PFTD
  4943. SHN 21-13
  4944. MJN RFA13 IF WRITE LABEL
  4945. LDM PFTD+1
  4946. SHN 21-4
  4947. PJN RFA14 IF PO=W NOT SELECTED, ERROR
  4948.  
  4949. RFA13 LDM CBTD,BP DETERMINE TAPE TYPE
  4950. SHN -7
  4951. LPN 3
  4952. RJM SSP SET SCRATCH POOL ADDRESS
  4953. EXOVL ASR ASSIGN SCRATCH REEL
  4954.  
  4955. RFA14 ERROR ILR *TFM INCORRECT REQUEST.*
  4956.  
  4957. RFA15 LDC PESN GET VSN INDEX
  4958. STD KA
  4959. COMPARE ,KA,CBES,BP,VSKL
  4960. ZJN RFA16 IF VSN INDEX = CATALOG FIRST VOLUME
  4961. LDI KA
  4962. ZJN RFA15.1 IF NO VSN SPECIFIED
  4963. LDM CBNC,BP
  4964. NJN RFA15.1 IF MULTIFILE TAPE SET
  4965. LDM PBTO+1 CHECK IF PRN MOUNT REQUEST BY *RECLAIM*
  4966. SHN 21-10
  4967. MJN RFA16 IF PRN MOUNT
  4968. RFA15.1 BSS 0
  4969. MMOVE CBES,BP,,KA,VSKL
  4970. RJM VIS VSN INDEXED SEARCH
  4971. ZJN RFA17 IF VSN INDEX FOUND
  4972. ERROR ECD *ERROR IN CATALOG DATA.*
  4973.  
  4974. * (A) .LT. 0 IF PRN MOUNT.
  4975.  
  4976. RFA16 SHN 0-21 FLAG IF PRN MOUNT
  4977. STM RFAB
  4978. RESTP CPSI RESTORE VSN INDEX
  4979. RJM RRP READ RANDOM PRU
  4980. LDC 0
  4981. * LDC 1 (PRN MOUNT)
  4982. RFAB EQU *-1
  4983. ZJN RFA17 IF NOT PRN MOUNT
  4984. MMOVE VBVS,BP,PVSN,,VSKL RESET INTERNAL VSN TO PRN
  4985. RFA17 RJM IUC INCREMENT USAGE COUNT
  4986. LDM PFLG
  4987. LPC 6377
  4988. STM PFLG
  4989. LDM VBST,BP
  4990. LPN UOVS/10000
  4991. SHN 11-0 SET USER OWNED STATUS
  4992. RAM PFLG
  4993. LDM VBST+1,BP
  4994. LPN TVVS
  4995. SHN 10-3 SET OFFSITE STATUS
  4996. RAM PFLG
  4997. LDM VBRC,BP
  4998. SHN -6
  4999. SBN 1
  5000. STM PESN+4 SET REEL NUMBER
  5001. SBN 1
  5002. MJN RFA18 IF FIRST REEL
  5003. RJM WRP WRITE RANDOM PRU
  5004. LDN FV
  5005. STD KA
  5006. MMOVE VBFV,BP,,KA,VSKL
  5007. RJM VIS VSN INDEXED SEARCH
  5008. ZJN RFA18 IF VSN FOUND
  5009. ERROR EID *ERROR IN INDEX DATA.*
  5010.  
  5011. RFA18 RJM SVB SET VSN BUSY
  5012. RJM WRP WRITE RANDOM PRU
  5013. RESTP CPCB RESTORE CATALOG POINTERS
  5014. AOM CBAC+1,BP INCREMENT ACCESS COUNT
  5015. SHN -14
  5016. RAM CBAC,BP
  5017. LIA CBAD,BP
  5018. RJM EDT ENTER PACKED DATE/TIME
  5019. LDM PFTD+1
  5020. SHN 21-4
  5021. PJN RFA19 IF PO=W NOT SPECIFIED
  5022. LIA CBMD,BP
  5023. RJM EDT ENTER PACKED DATE/TIME
  5024. RFA19 RJM WRP WRITE RANDOM PRU (CATALOG)
  5025. LDN ZERL UPDATE FET
  5026. CRD CM
  5027. LDD CI
  5028. LPN 77
  5029. SHN 6
  5030. LMD RI
  5031. STD CM+3
  5032. LDD RI+1
  5033. STD CM+4
  5034. LDN TFUN-TFES+1
  5035. STD T1
  5036. LDA IR+3,REL
  5037. ADN TFRR
  5038. CWM CM,ON
  5039. CWM PBUF,T1
  5040. LJM RFAX RETURN
  5041. TITLE SUBROUTINES.
  5042. SPACE 4
  5043. ** COMMON DECKS.
  5044.  
  5045.  
  5046. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH
  5047. CAA$ EQU 1 DEFINE CAA - CHECK ALTERNATE USER ACCESS
  5048. FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG.
  5049. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN
  5050. IUC$ EQU 1 DEFINE IUC - INCREASE USAGE COUNTER
  5051. SSP$ EQU 1 DEFINE SSP - SET SCRATCH POOL ADDRESS
  5052. SVB$ EQU 1 DEFINE SVB - SET VSN BUSY
  5053. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  5054. VUB$ EQU 1 DEFINE VUB - VERIFY USERS BLOCK
  5055. *CALL COMPTFM
  5056. *CALL COMPWEI
  5057. SPACE 4
  5058. *** BUFFERS.
  5059.  
  5060.  
  5061. BUFA BSS TAEL*5
  5062. BUFB BSS TAEL*5
  5063. SPACE 4
  5064. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  5065. TITLE PRESET.
  5066. PRS SPACE 4,10
  5067. ** PRS - PRESET FOR SUBFUNCTION RFAS.
  5068. *
  5069. * ENTRY NONE.
  5070. *
  5071. * EXIT (A) = 0 IF NOT A RE-ENTRY REQUEST.
  5072. * (RI - RI+1) = CATALOG ENTRY IF RE-ENTRANT REQUEST.
  5073. *
  5074. * USES BA, CI, CM - CM+4, RI - RI+1.
  5075. *
  5076. * MACROS ERROR
  5077.  
  5078.  
  5079. PRS SUBR ENTRY/EXIT
  5080. LDM PBTO+1 CHECK OPTION
  5081. SHN 21-5
  5082. PJN PRS1 IF NOT *TO=A*
  5083. LDC 9999D
  5084. STM PBQN+1
  5085. LDM PBQN
  5086. SCN 77
  5087. LMN 9999D/1S12
  5088. STM PBQN
  5089. PRS1 LDM PBQN SET *PBQN* FOR IN-LINE CHECKS
  5090. LPN 77
  5091. ADC LDCI
  5092. STM RFAA
  5093. STM RFA9
  5094. LDM PBQN+1
  5095. STM RFAA+1
  5096. STM RFA9+1
  5097. LDA IR+3,REL
  5098. ADN TFRR
  5099. CRD CM
  5100. LDD CM+3 SET CATALOG INDEX IF REENTRANT REQUEST
  5101. SHN 14
  5102. STD CI
  5103. SCN 77
  5104. LMD CM+4
  5105. ZJN PRS2 IF NOT REENTRANT REQUEST
  5106. STD RI+1 SET CATALOG RANDOM ADDRESS
  5107. SHN -14
  5108. STD RI
  5109. LDC BUF2 SET BUFFER ADDRESS
  5110. STD BA
  5111. PRS2 LJM PRSX RETURN
  5112. SPACE 4,10
  5113. ERRNG BUF1-*
  5114. OVERLAY (SET MULTI-FILE PARAMETERS.),OVL1
  5115. SPACE 4,10
  5116. *** DIRECT CELLS.
  5117.  
  5118.  
  5119. CT EQU S1 CATEGORY
  5120. MD EQU S1+1 MODE
  5121. FV EQU S1+2 - S1+4 FIRST VOLUME OF MULTI-FILE SET
  5122. CN EQU S2 - S2+4 SCRATCH
  5123. SMF SPACE 4,10
  5124. ** SMF - SET MULTI-FILE PARAMETERS.
  5125. *
  5126. * IF BOTH FILE NAME AND VSN ARE SPECIFIED ON A RESEX
  5127. * FIRST ASSIGNMENT, AND THE VSN IS A SYMBOLIC ACCESS
  5128. * TAPE, SMF IS CALLED FROM RFA TO SEARCH FOR THE
  5129. * CORRECT FILE CATALOG. THE INFORMATION FOR THE FILE
  5130. * IS RETURNED TO THE FET.
  5131. *
  5132. * USES KA, T1, CM - CM+4, CN - CN+4.
  5133. *
  5134. * CALLS CAA, FTC, VIS, WRP.
  5135. *
  5136. * MACROS COMPARE, ERROR, LDA, LIA, MMOVE, RESTP, SAVEP.
  5137.  
  5138.  
  5139. SMF ENTRY ENTRY/EXIT
  5140. RJM PRS PRESET
  5141. NJP SMF6 IF NOT FILE EXTENSION
  5142. RJM FTC FIND TAPE CATALOG
  5143. NJN SMF1 IF FILE NOT FOUND
  5144. ERROR FAR *(FILE) ALREADY RESERVED.*
  5145.  
  5146. SMF1 RESTP SMFA GET CATALOG ENTRY FOR FIRST FILE
  5147. RJM RRP READ RANDOM PRU
  5148. MMOVE CBSI,BP,PBSI,,6 FORCE SETID TO BE SAME AS FIRST FILE
  5149. RJM VSI VERIFY SET ID NOT BLANK OR ZERO
  5150. LDN CN LOCATE LAST VOLUME OF TAPE
  5151. STD KA
  5152. SMF2 RJM VIS VSN INDEXED SEARCH
  5153. ZJN SMF4 IF VSN FOUND
  5154. SMF3 ERROR EID *ERROR IN INDEXED DATA.*
  5155.  
  5156. SMF4 LDM VBST,BP
  5157. LPN EOIV/1S12
  5158. NJN SMF5 IF EOI VOLUME
  5159. MMOVE VBNV,BP,,KA,VSKL
  5160. LDI KA
  5161. NJN SMF2 IF MORE VOLUMES
  5162. LDN FV READ FIRST VOLUME
  5163. STD KA
  5164. RJM VIS VSN INDEXED SEARCH
  5165. NJN SMF3 IF VSN NOT FOUND
  5166. SMF5 LJM SMF11 COPY FET
  5167.  
  5168. SMF6 RJM RRP READ CATALOG ENTRY
  5169. RJM LTC LOCATE TAPE CATALOG
  5170. NJN SMF8 IF FOUND
  5171. SMF7 ERROR FNF *(FILE) NOT FOUND.*
  5172.  
  5173. SMF8 LDM POFI
  5174. ZJN SMF9 IF FILE IDENTIFIER NOT SPECIFIED
  5175. LDD BP
  5176. ADM LTCA
  5177. STD T1
  5178. COMPARE ,,POFI,,FIKL
  5179. NJN SMF7 IF NAMES DO NOT MATCH
  5180. SMF9 LDM PBTO+1 CHECK FOR *TO=D*
  5181. SHN 21-0
  5182. MJN SMF10 IF *TO=D*
  5183. MMOVE CBPI,BP,POFI,,4*10D
  5184. SMF10 SAVEP SMFA SAVE CATALOG POINTERS
  5185. AOM CAAC DO NOT UPDATE ADMIT ENTRY
  5186. RJM CAA CHECK ALTERNATE USER ACCESS
  5187. LIA CBES,BP
  5188. STD KA
  5189. RJM VIS VSN INDEXED SEARCH
  5190. ZJN SMF11 IF VSN FOUND
  5191. ERROR ECD *ERROR IN CATALOG DATA.*
  5192.  
  5193. SMF11 LDM CBST,BP CHECK DATA ERROR FLAG
  5194. SHN 21-1
  5195. PJN SMF12 IF NO DATA ERROR
  5196. LDM PBTO+1 CHECK FOR *TO=C*
  5197. SHN 21-11
  5198. MJN SMF11.1 IF CHECK FOR CATALOG ERROR
  5199. SHN 21-7-21+11
  5200. MJN SMF12 IF IGNORE CATALOG ERROR
  5201. SMF11.1 ERROR EFD * ERROR IN FILE DATA.*
  5202.  
  5203. SMF12 MMOVE VBES,BP,PESN,,VSKL
  5204. MMOVE VBVS,BP,PVSN,,VSKL
  5205. LDM VBRC,BP SET REEL NUMBER
  5206. SHN -6
  5207. SBN 1
  5208. STM PESN+4
  5209. LDN FV SET FIRST VOLUME BUSY
  5210. STD KA
  5211. RJM VIS VSN INDEXED SEARCH
  5212. NJP SMF3 IF VSN NOT FOUND
  5213. RJM SVB SET VSN BUSY
  5214. RJM WRP WRITE UPDATED VSN
  5215. RESTP SMFA RESTORE CATALOG INDEX POINTERS
  5216. LDN ZERL SET CATALOG INDEX
  5217. CRD CM
  5218. LDD CI
  5219. SHN 6
  5220. LMD RI
  5221. STD CM+3
  5222. LDD RI+1
  5223. STD CM+4
  5224. LDM PBTO+1 CHECK FOR *TO=D*
  5225. SHN 21-0
  5226. MJN SMF13 IF *TO=D* SPECIFIED
  5227. LDM PFTD SAVE WRITE FLAG
  5228. LPC 4000
  5229. STM PFTD
  5230. LDM CBTD,BP SET LABEL, TAPE TYPE, DENSITY, CONVERSION
  5231. LPC 3777
  5232. RAM PFTD
  5233. LDM CBTD+2,BP SET FORMAT/NOISE
  5234. STM PFTD+2
  5235. LDM CBTD+3,BP SET BLOCK SIZE
  5236. STM PFTD+3
  5237. LDM CBTD+4,BP
  5238. STM PFTD+4
  5239. SMF13 LDN TFUN-TFES+1 UPDATE FET
  5240. STD T1
  5241. LDA IR+3,REL
  5242. ADN TFRR
  5243. CWD CM
  5244. ADN TFES-TFRR
  5245. CWM PESN,T1
  5246. LJM SMFX RETURN
  5247.  
  5248. SMFA BSS 5 CATALOG INDEX
  5249. TITLE SUBROUTINES.
  5250. VSI SPACE 4,10
  5251. ** VSI - VERIFY SET IDENTIFIER
  5252. *
  5253. * ENTRY (PBSI - PBSI+2) = SET ID FROM TAPE CATALOG
  5254. *
  5255. * EXIT IF VALID SET IDENTIFIER
  5256. *
  5257. * ERROR *MULTI-FILE PROCESSING ERROR* IF SET ID
  5258. * IS ZEROES OR BLANKS.
  5259. *
  5260. * USES T1, T2.
  5261.  
  5262.  
  5263. VSI4 ERROR MPE *MULTI-FILE PROCESSING ERROR.*
  5264.  
  5265. VSI SUBR ENTRY/EXIT
  5266. LDN 0 CHECK FOR ZEROES
  5267. STD T2
  5268. VSI1 LDN 3 VERIFY SET IDENTIFIER
  5269. STD T1
  5270. VSI2 SOD T1
  5271. MJN VSI4 IF INCORRECT SET IDENTIFIER
  5272. LDM PBSI,T1
  5273. LMD T2
  5274. NJN VSI3 IF VALID CHARACTERS
  5275. UJN VSI2
  5276.  
  5277. VSI3 LDD T2
  5278. NJN VSIX IF NEITHER BLANKS NOR ZEROES
  5279. LDC 2R CHECK FOR BLANKS
  5280. STD T2
  5281. UJN VSI1 VERIFY SET IDENTIFIER
  5282. SPACE 4,10
  5283. *** COMMON DECKS.
  5284.  
  5285. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH
  5286. CAA$ EQU 1 DEFINE CAA - CHECK ALTERNATE USER ACCESS
  5287. FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  5288. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN
  5289. LTC$ EQU 1 DEFINE LTC - LOCATE TAPE CATALOG
  5290. SVB$ EQU 1 DEFINE SVB - SET VSN BUSY
  5291. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  5292. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  5293. VUB$ EQU 1 DEFINE VUB - VERIFY USER BLOCK
  5294.  
  5295. *CALL COMPTFM
  5296. *CALL COMPWEI
  5297. SPACE 4,10
  5298. ** BUFFERS.
  5299.  
  5300.  
  5301. BUFA BSS TAEL*5
  5302. BUFB BSS TAEL*5
  5303. SPACE 4,10
  5304. ERRNG BUF2-*
  5305. TITLE PRESET.
  5306. PRS SPACE 4,15
  5307. ** PRS - PRESET.
  5308. *
  5309. * ENTRY (CPCB - CPCB+4) = CATALOG BUFFER POINTERS.
  5310. * (FV - FV+2) = FIRST VSN.
  5311. * (CN - CN+2) = FIRST VSN.
  5312. *
  5313. * EXIT (A) = 0 IF FILE EXTENSION.
  5314. *
  5315. * USES BA, BP, CI, KA, RI - R1+1.
  5316. *
  5317. * CALLS SIB, VIS, VSP.
  5318. *
  5319. * MACROS ERROR, LDA, MMOVE, RESTP, SAVEP.
  5320.  
  5321.  
  5322. PRS SUBR ENTRY/EXIT
  5323. RESTP CPSI RESTORE SECONDARY VSN INDEX POINTERS
  5324. MMOVE VBFV,BP,FV,,VSKL
  5325. MMOVE FV,,CN,,VSKL
  5326. LDN FV
  5327. STD KA
  5328. LDD BA
  5329. ADN 2
  5330. STD BP
  5331. RJM SIB SEARCH FOR VSN IN BUFFER
  5332. ZJN PRS2 IF VSN FOUND
  5333. RJM VIS VSN INDEXED SEARCH
  5334. ZJN PRS2 IF VSN FOUND
  5335. PRS1 ERROR EID *ERROR IN INDEX DATA.*
  5336.  
  5337. PRS2 LDM VBCI,BP
  5338. ZJN PRS1 IF NO CATALOG ENTRY
  5339. SHN 14
  5340. STD CI
  5341. SHN -14
  5342. STD RI
  5343. LDM VBCI+1,BP
  5344. STD RI+1
  5345. LDC BUF2
  5346. STD BA
  5347. RJM VSP VERIFY/SET CATALOG POINTERS
  5348. SAVEP SMFA SAVE CATALOG POINTERS
  5349. LDA PBQN,ABS
  5350. LMC 9999D
  5351. ZJN PRS3 IF EXTENSION
  5352. LDM PBTO+1
  5353. SHN 21-5
  5354. PJN PRS6 IF NOT EXTENSION
  5355. LDM PBQN
  5356. SCN 77
  5357. LMN 9999D/1S12
  5358. STM PBQN
  5359. LDC 9999D
  5360. STM PBQN+1
  5361. PRS3 LDM PAUN
  5362. ZJN PRS4 IF NOT ALTERNATE USER
  5363. ERROR FCI *FILE CREATION NOT ALLOWED.*
  5364.  
  5365. PRS4 STM PESN FORCE SEARCH ON LOGICAL FILENAME
  5366. PRS5 LJM PRSX RETURN
  5367.  
  5368. PRS6 LDM PBTO+1
  5369. SHN 21-5
  5370. PJN PRS7 IF NOT *TO=D*
  5371. LDN CBLI FORCE SEARCH ON LOGICAL FILENAME
  5372. STM LTCA
  5373. PRS7 LDN 1
  5374. UJN PRS5 RETURN
  5375. SPACE 4,10
  5376. OVERFLOW OVL1,BUF1
  5377. OVERLAY (CLEAR *POSMF* POINTER / MULTI-FILE ASSIGNMENT.),OVL1
  5378. SPACE 4,10
  5379. *** DIRECT CELLS.
  5380.  
  5381.  
  5382. FV EQU S1+2 - S1+4 FIRST VOLUME OF MULTI-FILE SET
  5383. CN EQU S2 - S2+4 SCRATCH
  5384. CPP SPACE 4,10
  5385. *** CPPS - CLEAR *POSMF* CATALOG POINTER.
  5386. *
  5387. * IF THE CATALOG POINTED TO BY THE *POSMF* CATALOG HAS
  5388. * NOT BEEN A VALIDATED TAPE LABEL, THE CATALOG ENTRY
  5389. * IS PURGED.
  5390. *
  5391. * ENTRY NONE.
  5392. *
  5393. * EXIT *POSMF* FLAG CLEARED.
  5394. * CATALOG ENTRY DELETED IF EXTENSION.
  5395. *
  5396. * USES BA, CI, KA, T1, CM - CM+4, CN - CN+4, RI - RI+1.
  5397. *
  5398. * CALLS DCE, RRP, VIS, VSP.
  5399. *
  5400. * MACROS ERROR, LDA, UDTRD, UDTWT.
  5401.  
  5402.  
  5403. CPP ENTRY ENTRY/EXIT
  5404. UDTRD CN,/MTX/UTCI,1
  5405. LDD CN+1
  5406. SHN 14
  5407. STD CI
  5408. SHN -14
  5409. STD RI
  5410. LDD CN+2
  5411. STD RI+1
  5412. LDC BUF2
  5413. STD BA
  5414. RJM RRP GET CATALOG BLOCK
  5415. RJM VSP VERIFY/SET CATALOG POINTERS
  5416. PJN CPP2 IF NO ERROR
  5417. CPP1 LDN 0
  5418. STD CN+1
  5419. STD CN+2
  5420. UDTWT CN,/MTX/UTCI,1
  5421. LJM CPPX RETURN
  5422.  
  5423. CPP2 LDA CBQN,BP
  5424. LMC 9999D
  5425. NJN CPP1 IF NOT *POSMF 9999*
  5426. LDD CN+3 SAVE VSN POINTER TO CATALOG
  5427. STD CM
  5428. LDD CN+4
  5429. STD CM+1
  5430. CPP3 LDD CM COMPARE NEXT CATALOG INDEX TO CURRENT
  5431. SHN 14
  5432. STD CI
  5433. SHN -14
  5434. LMD RI
  5435. SHN 14
  5436. LMD CM+1
  5437. LMD RI+1
  5438. ZJN CPP4 IF SAME CATALOG BLOCK
  5439. LDD CM
  5440. LPN 77
  5441. STD RI
  5442. LDD CM+1
  5443. STD RI+1
  5444. RJM RRP GET CATALOG BLOCK
  5445. CPP4 RJM VSP VERIFY/SET CATALOG POINTERS
  5446. PJN CPP6 IF NO ERROR
  5447. CPP5 ERROR ECD *ERROR IN CATALOG DATA.*
  5448.  
  5449. CPP6 LDM CBNC,BP COMPARE NEXT CATALOG
  5450. LMD CN+1
  5451. NJN CPP7 IF NOT *POSMF 9999* CATALOG
  5452. LDM CBNC+1,BP
  5453. LMD CN+2
  5454. ZJN CPP8 IF *POSMF 9999* CATALOG
  5455. CPP7 LDM CBNC,BP
  5456. ZJN CPP5 IF NO NEXT CATALOG
  5457. STD CM
  5458. LDM CBNC+1,BP
  5459. STD CM+1
  5460. LJM CPP3 CHECK NEXT CATALOG ENTRY
  5461.  
  5462. CPP8 LDN 0
  5463. STM CBNC,BP
  5464. STM CBNC+1,BP
  5465. LDD CN+1
  5466. SHN 14
  5467. STD CI
  5468. SHN -14
  5469. LMD RI
  5470. NJN CPP9 IF DIFFERENT PRU
  5471. LDD CN+2
  5472. LMD RI+1
  5473. ZJN CPP10 IF SAME PRU
  5474. CPP9 RJM WRP WRITE RANDOM PRU
  5475. LDD CN+1
  5476. LPN 77
  5477. STD RI
  5478. LDD CN+2
  5479. STD RI+1
  5480. RJM RRP READ RANDOM PRU
  5481. CPP10 RJM VSP VERIFY/SET CATALOG ENTRY
  5482. MJP CPP5 IF ERROR
  5483. LDN 0
  5484. STD CN+1
  5485. STD CN+2
  5486. UDTWT CN,/MTX/UTCI,1
  5487. RJM PCE PURGE CATALOG ENTRIES
  5488. LJM CPPX RETURN
  5489. MFA SPACE 4,24
  5490. *** MFAS - *RESEX* MULTI-FILE ASSIGNMENT.
  5491. *
  5492. * CALLED BY *RESEX* TO TRANSLATE A MULTI-FILE SET REQUEST
  5493. * BY SYMBOLIC FILE NAME.
  5494. *
  5495. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  5496. *
  5497. *T FET+0 42/ FILE NAME,1/R,8/ AT,6/ CODE,3/ST
  5498. *T, +12 60/ FILE IDENTIFIER
  5499. *T, +13 42/ FILE IDENTIFIER (CONT.),18/ SEQ. NUM
  5500. *T, +14 36/ SET I.D.,9/ VER.,15/ GEN.
  5501. *T, +15 30/ RETENTION DATE,30/ CREATION DATE
  5502. *T, +16 42/ ALTERNATE USERNAME,18/ TO
  5503. *T, +17 42/ PASSWORD,6/ AC,6/ CT,6/ MD
  5504. *
  5505. * EXIT IF THE FILE IS FOUND, THE VALUES IN THE CATALOG
  5506. * ENTRY ARE PLACED IN THE FET. IF THE FILE IS AN
  5507. * EXTENSION, THE VALUES FROM THE UDT ARE PLACED IN
  5508. * THE FET.
  5509. *
  5510. * USES KA, T1.
  5511. *
  5512. * CALLS CPP, DCE, FTC, PRS, VIS.
  5513. *
  5514. * MACROS COMPARE, ERROR, LDA, LIA, MMOVE.
  5515.  
  5516.  
  5517. MFA ENTRY ENTRY/EXIT
  5518. RJM PRS PRESET
  5519. ZJN MFAX IF NON-SYMBOLIC ACCESS
  5520. LDM VBCI,BP GET FIRST CATALOG ENTRY FOR VSN
  5521. SHN 14
  5522. STD CI
  5523. SHN -14
  5524. STD RI
  5525. LDM VBCI+1,BP
  5526. STD RI+1
  5527. LDC BUF2
  5528. STD BA
  5529. RJM RRP READ RANDOM PRU
  5530. RJM VSP VERIFY/SET CATALOG POINTERS
  5531. PJN MFA1 IF NO ERROR
  5532. ERROR EID *ERROR IN INDEX DATA.*
  5533.  
  5534. MFA1 COMPARE PBUN,,CWUN,BA,UNKL FLAG ALTERNATE USER ACCESS
  5535. STM PAUN
  5536. MMOVE CWUN,BA,PBUN,,UNKL
  5537. SAVEP MFAA SAVE CATALOG POINTERS
  5538. LDD CN+1 CHECK FOR INTERRUPTED *POSMF*
  5539. ZJN MFA2 IF NO *POSMF*
  5540. EXSUB CPP CLEAR *POSMF* CATALOG POINTER
  5541. RESTP MFAA RESTORE FIRST CATALOG ENTRY
  5542. RJM RRP READ RANDOM PRU
  5543. MFA2 LDM UTMS+2 CHECK IF FILE WAS WRITTEN ON
  5544. ZJN MFA3 IF NOT WRITTEN ON
  5545. RJM DCE DELETE EXCESS CATALOG ENTRIES
  5546. RESTP MFAA RESTORE FIRST CATALOG ENTRY
  5547. RJM RRP READ RANDOM PRU
  5548. MFA3 RJM LTC FIND TAPE CATALOG
  5549. NJN MFA5 IF FOUND
  5550. LDM PBTO+1
  5551. SHN 21-5
  5552. PJN MFA4 IF NOT TAPE FILE EXTENSION
  5553. MMOVE CBSI,BP,PBSI,,6
  5554. LJM MFA8 UPDATE FET
  5555.  
  5556. MFA4 ERROR FNF *(FILE) NOT FOUND
  5557.  
  5558. MFA5 LDM POFI COMPARE FILE IDENTIFIERS
  5559. ZJN MFA6 IF NOT SPECIFIED
  5560. LDD BP
  5561. ADM LTCA
  5562. STD T1
  5563. COMPARE ,,POFI,,FIKL
  5564. NJN MFA4 IF NO MATCH
  5565. MFA6 LDM PAUN
  5566. ZJN MFA7 IF NOT ALTERNATE USER ACCESS
  5567. COMPARE PPWD,,CBPW,BP,PWKL
  5568. NJN MFA4 IF INCORRECT PASSWORD
  5569. MFA7 LDM CBST,BP CHECK FOR DATA ERROR
  5570. SHN 21-1
  5571. PJN MFA7.2 IF NO DATA ERROR
  5572. LDM PBTO+1 CHECK FOR *TO=C*
  5573. SHN 21-11
  5574. MJN MFA7.1 IF CHECK FOR CATALOG ERROR
  5575. SHN 21-7-21+11
  5576. MJN MFA7.2 IF IGNORE CATALOG ERROR
  5577. MFA7.1 ERROR EFD * ERROR IN FILE DATA.*
  5578.  
  5579. MFA7.2 LDM PBTO+1
  5580. SHN 21-0
  5581. MJN MFA9 IF *TO=D* SPECIFIED
  5582. MMOVE CBVS,BP,PVSN,,5*10D
  5583. MFA8 LDN TFUN-TFES+1 UPDATE FET
  5584. STD T1
  5585. LDA IR+3,REL
  5586. ADN TFES
  5587. CWM PBUF,T1
  5588. MFA9 LJM MFAX RETURN
  5589.  
  5590. MFAA BSS 5 FIRST CATALOG ENTRY FOR VSN
  5591. TITLE SUBROUTINES.
  5592. PEC SPACE 4,10
  5593. ** PEC - PURGE EXCESS CATALOG ENTRIES.
  5594. *
  5595. * ENTRY NONE.
  5596. *
  5597. * EXIT EXCESS CATALOGS RELEASED.
  5598. * EOI VSN STATUS SET.
  5599. * REEL WRITTEN ON CLEARED.
  5600. *
  5601. * USES KA, CN - CN+4.
  5602. *
  5603. * CALLS DCE, VIS, WRP.
  5604. *
  5605. * MACROS COMPARE, ERROR, MMOVE, UDTRD.
  5606.  
  5607.  
  5608. PEC3 LDM VBST,BP SET *EOI* VOLUME
  5609. SCN EOIV/1S12
  5610. LMN EOIV/1S12
  5611. STM VBST,BP
  5612. RJM WRP UPDATE STATUS
  5613. PEC4 LDN 0 CLEAR *REEL WRITTEN* FLAG
  5614. STM UTMS+2
  5615.  
  5616. PEC ENTRY ENTRY/EXIT
  5617. UDTRD CN,/MTX/UTCI,1
  5618. RJM DCE DELETE CATALOG ENTRIES
  5619. LDC PESN
  5620. STD KA
  5621. RJM VIS VSN INDEXED SEARCH
  5622. NJN PEC4 IF NOT FOUND
  5623. COMPARE VBFV,BP,PESN,,VSKL
  5624. ZJN PEC1 IF FIRST VOLUME
  5625. MMOVE VBFV,BP,PESN,,VSKL
  5626. RJM VIS VSN INDEXED SEARCH
  5627. NJN PEC2 IF FOUND
  5628. PEC1 LDM VBRC,BP CHECK FOR *EOI* VOLUME
  5629. SHN -6
  5630. LMM UTMS+2
  5631. ZJP PEC3 IF *EOI* VOLUME
  5632. MMOVE VBNV,BP,PESN,,VSKL
  5633. RJM VIS
  5634. ZJN PEC1 IF NEXT VSN FOUND
  5635. PEC2 ERROR EID *ERROR IN INDEX DATA.*
  5636. RDC SPACE 4,10
  5637. *** RDC - RELEASE DELETED CATALOG ENTRIES.
  5638. *
  5639. * ANY CATALOG ENTRIES WHICH FOLLOW THE CURRENT CATALOG ARE
  5640. * DELETED BECAUSE THE FILES ON THE TAPE WERE OVERWRITTEN.
  5641. *
  5642. * ENTRY NONE.
  5643. *
  5644. * EXIT TO PMF TO PROCESS MULTI-FILE SET REQUEST.
  5645. *
  5646. * USES CN - CN+4.
  5647. *
  5648. * CALLS CPP, DCE, PMF.
  5649. *
  5650. * MACROS EXOVL, EXSUB, UDTRD.
  5651.  
  5652.  
  5653. RDC ENTRY ENTRY/EXIT
  5654. UDTRD CN,/MTX/UTCI,1
  5655. LDD CN+1 CHECK FOR POSMF IN PROGRESS
  5656. ZJN RDC1 IF NOT *POSMF*
  5657. EXSUB CPP CLEAR *POSMF* CATALOG POINTER
  5658. RDC1 LDC BUF2
  5659. STD BA
  5660. RJM DCE DELETE EXCESS CATALOG ENTRIES
  5661. ZJN RDCX IF NO CATALOG ENTRY
  5662. EXOVL PMF POSITION MULTI-FILE
  5663. DCE SPACE 4,10
  5664. ** DCE - DELETE EXCESS CATALOG ENTRIES
  5665. *
  5666. * ENTRY (CN - CN+4) = *UTCI* FROM UDT.
  5667. *
  5668. * EXIT (A) = 0 IF NO CATALOG ENTRY.
  5669. *
  5670. * USES CI, KA, RI - RI+1.
  5671. *
  5672. * CALLS CSN, IAM, PCE, RRP, VIS, VSP, WRP.
  5673. *
  5674. * MACROS ERROR, LDA, MMOVE, RESTP.
  5675.  
  5676.  
  5677. DCE5 LDN 0
  5678.  
  5679. DCE SUBR ENTRY/EXIT
  5680. LDD CN+3
  5681. ZJN DCEX IF NO CATALOG ENTRY
  5682. SHN 14
  5683. STD CI
  5684. SHN -14
  5685. STD RI
  5686. LDD CN+4
  5687. STD RI+1
  5688. RJM RRP READ RANDOM PRU
  5689. RJM VSP VERIFY/SET CATALOG POINTERS
  5690. MJN DCE5 IF ERROR
  5691. SAVEP CPCB SAVE CATALOG BUFFER POINTERS
  5692. LIA CBES,BP
  5693. STD KA
  5694. LDI KA
  5695. ZJP DCE2 IF NO FIRST VSN
  5696. RJM VIS VSN INDEXED SEARCH
  5697. NJP DCE2 IF NO FIRST VSN
  5698. LDM VBRC,BP GET REEL COUNT
  5699. SHN -6
  5700. STD T0
  5701. LDM UTMS+2 GET LAST REEL NUMBER
  5702. SBD T0
  5703. ADN 1
  5704. STD S1 REEL COUNT
  5705. MMOVE PESN,,DCEA,,VSKL SAVE CURRENT VSN
  5706. MMOVE VBFV,BP,PESN,,VSKL
  5707. RESTP CPCB RESTORE CATALOG BUFFER POINTERS
  5708. LDD S1
  5709. STM CBRC,BP
  5710. LDM CBNC,BP
  5711. NJN DCE1 IF NEXT CATALOG FOUND
  5712. RJM WRP WRITE RANDOM PRU (CATALOG ENTRY)
  5713. MMOVE DCEA,,PESN,,VSKL RESTORE CURRENT VSN
  5714. LDN 1
  5715. LJM DCEX RETURN
  5716.  
  5717. DCE1 SHN 14 SET NEXT CATALOG POINTER
  5718. STM CPCB+2
  5719. SHN -14
  5720. STM CPCB+3
  5721. LDM CBNC+1,BP
  5722. STM CPCB+4
  5723. LDD BA
  5724. STM CPCB
  5725. LDN 0 CLEAR NEXT CATALOG POINTER
  5726. STM CBNC,BP
  5727. STM CBNC+1,BP
  5728. RJM WRP WRITE RANDOM PRU
  5729. RESTP CPCB RESTORE CATALOG POINTERS
  5730. RJM RRP READ RANDOM PRU
  5731. RJM VSP VERIFY/SET CATALOG POINTERS
  5732. PJN DCE3 IF NO ERROR
  5733. DCE2 ERROR ECD *ERROR IN CATALOG DATA.*
  5734.  
  5735. DCE3 LDD BP SAVE BUFFER POINTER
  5736. STM CPCB+1
  5737. LDM CBST,BP
  5738. SHN 21-10
  5739. MJP DCE4 IF CATALOG NOT RESERVED
  5740. LDA CBQN,BP
  5741. RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  5742. LDN ZERL
  5743. CRD CM
  5744. LDN 1 RELEASE VSN/CATALOG ENTRY
  5745. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  5746. DCE4 RJM PCE PURGE CATALOG ENTRIES
  5747. MMOVE DCEA,,PESN,,VSKL RESTORE CURRENT VSN
  5748. LDN 1
  5749. LJM DCEX RETURN
  5750.  
  5751. DCEA BSS VSKL SAVE CURRENT VSN
  5752. SPACE 4,10
  5753. *** COMMON DECKS.
  5754.  
  5755. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY
  5756. DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY
  5757. DLB$ EQU 1 DEFINE DLB - DELINK BLOCK
  5758. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  5759. GNL$ EQU 1 DEFINE GNL - GET NEXT LINK
  5760. GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK
  5761. IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE
  5762. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH WITH KEY
  5763. LTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  5764. PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES
  5765. PLI$ EQU 1 DEFINE PLI - POSITION TO LAAT INDEX
  5766. SIB$ EQU 1 DEFINE SIB - SEARCH IN BUFFER
  5767. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  5768. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  5769. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  5770. VUB$ EQU 1 DEFINE VUB - VERIFY USER BLOCK
  5771.  
  5772. *CALL COMPC2D
  5773. *CALL COMPTFM
  5774. SPACE 4,10
  5775. ** BUFFERS.
  5776.  
  5777.  
  5778. BUFA BSS TAEL*5
  5779. BUFB BSS TAEL*5
  5780. SPACE 4,10
  5781. ERRNG BUF2-*
  5782. TITLE PRESET.
  5783. PRS SPACE 4,10
  5784. ** PRS - PRESET FOR SUBFUNCTION MFAS.
  5785. *
  5786. * ENTRY NONE
  5787. *
  5788. * EXIT (A) = 0 IF NOT A SYMBOLIC ACCESS REQUEST.
  5789. * (CN - CN+4) = *UTCI* FROM *MAGNET*.
  5790. *
  5791. * USES BA, CI, KA, T1, CN - CN+4, FV - FV+4, RI - RI+1.
  5792. *
  5793. * CALLS RRP, VIS, VSP.
  5794. *
  5795. * MACROS COMPARE, ERROR, LDA, MMOVE, UDTRD.
  5796.  
  5797.  
  5798. PRS6 ERROR EID *ERROR IN INDEX DATA.*
  5799.  
  5800. PRS7 LDI T1 SPACE FILL LAST CHARACTER
  5801. LPN 77
  5802. LMC 1S6*1R
  5803. STI T1
  5804. PRS8 LDM PBTO+1
  5805. SHN 21-5
  5806. MJN PRS9 IF *TO=A* SPECIFIED
  5807. LDA PBQN,ABS CHECK FOR MULTI-FILE EXTENSION
  5808. LMC 9999D
  5809. NJN PRSX IF NOT MULTI-FILE EXTENSION
  5810. PRS9 LDC 9999D FORCE MULTI-FILE SET EXTENSION
  5811. STM PBQN+1
  5812. LDM PBQN
  5813. SCN 77
  5814. LMN 9999D/1S12
  5815. STM PBQN
  5816. LDM PBTO+1 SET *TO=A*
  5817. SCN 1S5
  5818. LMN 1S5
  5819. STM PBTO+1
  5820. UJN PRSX RETURN
  5821.  
  5822. PRS10 LDN 0 NON-SYMBOLIC ACCESS REQUEST
  5823.  
  5824. PRS SUBR ENTRY/EXIT
  5825. LDM UDTA
  5826. ZJN PRSX IF NOT MULTI-FILE
  5827. LDM UTMS+4
  5828. LPC RSSA
  5829. ZJN PRSX IF NON-SYMBOLIC ACCESS
  5830. LDM PBTO+1
  5831. LPN 1
  5832. NJN PRS1 IF *TO=D* NOT SPECIFIED
  5833. LDN CBLI SEARCH FOR LOGICAL FILE IDENTIFIER
  5834. STM LTCA
  5835. PRS1 UDTRD FV,/MTX/USID,1
  5836. RJM VSI VERIFY SET IDENTIFIER
  5837. MMOVE FV,,PBSI,,6
  5838. UDTRD FV,/MTX/UESN,1
  5839. UDTRD CN,/MTX/UTCI,1
  5840. LDN FV
  5841. STD KA
  5842. RJM VIS VSN INDEXED SEARCH
  5843. NJP PRS10 IF VSN NOT FOUND
  5844. COMPARE VBFV,BP,FV,,VSKL
  5845. ZJN PRS2 IF FIRST VSN
  5846. MMOVE VBFV,BP,FV,,VSKL
  5847. RJM VIS VSN INDEXED SEARCH
  5848. ZJN PRS2 IF FOUND
  5849. ERROR EID *ERROR IN INDEX DATA.*
  5850.  
  5851. PRS2 LDM POFI
  5852. NJP PRS8 IF FILE NAME SUPPLIED
  5853. LDA IR+3,REL GENERATE FILE IDENTIFIER FROM FILE NAME
  5854. CRM POFI,ON
  5855. LDC POFI
  5856. STD T1
  5857. LDM 3,T1
  5858. SCN 77
  5859. STM 3,T1
  5860. PRS3 LDI T1 SEARCH FOR ZERO BYTE
  5861. SCN 77
  5862. ZJN PRS5 IF ZERO BYTE
  5863. LDI T1
  5864. LPN 77
  5865. ZJN PRS4 IF ZERO BYTE
  5866. AOD T1
  5867. UJN PRS3 CONTINUE SEARCH
  5868.  
  5869. PRS4 LDI T1 MERGE SPACE IN LOWER BYTE
  5870. LMC 1S6*1R
  5871. PRS5 LMC 2R
  5872. STI T1
  5873. AOD T1
  5874. LMC POFI+10
  5875. ZJP PRS7 IF DONE WITH SPACE FILL
  5876. LDN 0
  5877. UJN PRS5 CONTINUE SPACE FILL
  5878. VSI SPACE 4,10
  5879. ** VSI - VERIFY SET IDENTIFIER.
  5880. *
  5881. * ENTRY (FV - FV+2) = SET ID FROM *UDT*.
  5882. *
  5883. * EXIT IF VALID SET IDENTIFIER.
  5884. *
  5885. * ERROR *MULTI-FILE PROCESSING ERROR* IF SET ID
  5886. * IS ZEROES OR BLANKS.
  5887. *
  5888. * USES T1, T2.
  5889.  
  5890.  
  5891. VSI4 ERROR MPE *MULTI-FILE PROCESSING ERROR.*
  5892.  
  5893. VSI SUBR ENTRY/EXIT
  5894. LDN 0 CHECK FOR ZEROES
  5895. STD T2
  5896. VSI1 LDN 3 VERIFY SET IDENTIFIER
  5897. STD T1
  5898. VSI2 SOD T1
  5899. MJN VSI4 IF INCORRECT SET IDENTIFIER
  5900. LDM FV,T1
  5901. LMD T2
  5902. NJN VSI3 IF VALID CHARACTERS
  5903. UJN VSI2 CHECK NEXT TWO CHARACTERS
  5904.  
  5905. VSI3 LDD T2
  5906. NJN VSIX IF NEITHER BLANKS NOR ZEROES
  5907. LDC 2R CHECK FOR BLANKS
  5908. STD T2
  5909. UJN VSI1 VERIFY SET IDENTIFIER
  5910. SPACE 4,10
  5911. ERRNG BUF1-*
  5912. OVERLAY (POSITION MULTI-FILE.),OVL1
  5913. SPACE 4,10
  5914. *** DIRECT CELLS.
  5915.  
  5916.  
  5917. CT EQU S1 CATEGORY
  5918. MD EQU S1+1 MODE
  5919. CB EQU S3 - S3+1 CATALOG BUFFER POINTER
  5920. QUAL PMF
  5921. CB EQU /".Y."/CB FOR *ENTER CATALOG IMAGE*
  5922. QUAL *
  5923. PMF SPACE 4,10
  5924. ** PMF - POSITION MULTI-FILE.
  5925. *
  5926. * *PMF* READS THE *POSMF* REQUEST FROM THE USER-S FET,
  5927. * AND VALIDATES THAT IT IS ACCESSIBLE TO THE USER. IF
  5928. * THE USER IS ALLOWED TO USE IT, IT UPDATES THE ACCESS
  5929. * COUNTS AND SETS THE *POSMF* FLAGS IN THE *UDT*.
  5930. *
  5931. * ENTRY NONE.
  5932. *
  5933. * EXIT *POSMF* CATALOG ENTRY PLACED IN *UDT*.
  5934. *
  5935. * USES CI, KA, CB - CB+1, CM - CM+4, RI - RI+1.
  5936. *
  5937. * CALLS ECI, RRP, VIS, VSP.
  5938. *
  5939. * MACROS COMPARE, ERROR, MMOVE.
  5940.  
  5941.  
  5942. PMF ENTRY ENTRY/EXIT
  5943. RJM PRS PRESET
  5944. ZJN PMFX IF NON-SYMBOLIC ACCESS
  5945. RJM RRP GET CATALOG BLOCK
  5946. RJM VSP VERIFY/SET CATALOG POINTERS
  5947. MJP PMF14 IF INCORRECT POINTERS
  5948. COMPARE PBUN,,CWUN,BA,UNKL
  5949. ZJN PMF1 IF NOT ALTERNATE USER
  5950. MMOVE PBUN,,PAUN,,UNKL
  5951. MMOVE CWUN,BA,PBUN,,UNKL
  5952. LDM PBTO+1 CHECK FOR EXTENSION
  5953. SHN 21-5
  5954. PJN PMF1 IF NOT EXTENSION
  5955. ERROR FCI *FILE CREATION INCORRECT*
  5956.  
  5957. PMF1 SAVEP CPCB SAVE CATALOG BUFFERS
  5958. LDA PBQN,ABS
  5959. ZJP PMF7 IF QN NOT SPECIFIED
  5960. LMM CBQN+1,BP COMPARE SEQUENCE NUMBER WITH CATALOG
  5961. STD T0
  5962. SHN -14
  5963. LMM CBQN,BP
  5964. LPN 77
  5965. ADD T0
  5966. NJP PMF8 IF NOT CORRECT CATALOG
  5967. PMF2 LDM PESN SAVE VSN
  5968. STM PMFA
  5969. LDN 0 CLEAR VSN (IN CASE CAA ERROR)
  5970. STM PESN
  5971. LDM POFI
  5972. NJN PMF3 IF FILE IDENTIFIER SPECIFIED
  5973. MMOVE PMFC,,POFI,,FIKL
  5974. PMF3 RJM CAA CHECK ALTERNATE USER ACCESS
  5975. PMF4 LDC 0 RESTORE VSN
  5976. * LDC (PESN)
  5977. PMFA EQU *-1
  5978. STM PESN
  5979. AOM CBAC+1,BP INCREMENT ACCESS COUNT
  5980. SHN -14
  5981. RAM CBAC,BP
  5982. LIA CBAD,BP
  5983. RJM EDT ENTER PACKED DATE/TIME
  5984. LDM PFTD+1 CHECK FOR WRITE ACCESS
  5985. SHN 21-4
  5986. PJN PMF5 IF NOT WRITE ACCESS
  5987. LIA CBMD,BP MODIFICATION DATE
  5988. RJM EDT ENTER PACKED DATE/TIME
  5989. PMF5 RJM WRP WRITE RANDOM PRU
  5990. COMPARE PESN,,CBES,BP,VSKL
  5991. ZJN PMF6 IF SAME VOLUME
  5992. LDM UTMS+3 SET REWIND FILE FLAG
  5993. SCN WURF
  5994. LMN WURF
  5995. STM UTMS+3
  5996. PMF6 UDTRD CM,/MTX/UTCI,1
  5997. LDM CPCB+2
  5998. SHN 6
  5999. LMM CPCB+3
  6000. STD CM+1
  6001. LDM CPCB+4
  6002. STD CM+2
  6003. UDTWT CM,/MTX/UTCI,1
  6004. LJM PMFX RETURN
  6005.  
  6006. PMF7 COMPARE POFI,,CBPI,BP,FIKL
  6007. ZJP PMF2 IF FILE FOUND
  6008. PMF8 LDM CBNC,BP POSITION TO NEXT CATALOG
  6009. SHN 14
  6010. STD CI
  6011. SHN -14
  6012. LMD RI
  6013. SHN 14
  6014. LMM CBNC+1,BP
  6015. LMD RI+1
  6016. ZJN PMF9 IF SAME CATALOG BLOCK
  6017. LDM CBNC,BP SAVE RANDOM INDEX
  6018. LPN 77
  6019. STD RI
  6020. SHN 14
  6021. LMM CBNC+1,BP
  6022. STD RI+1
  6023. ZJN PMF10 IF END OF CATALOG BLOCKS
  6024. RJM RRP READ RANDOM PRU (CATALOG)
  6025. PMF9 RJM VSP VERIFY/SET CATALOG POINTERS
  6026. PJP PMF1 IF VALID POINTER
  6027. ERROR ECD *ERROR IN CATALOG DATA.*
  6028.  
  6029. PMF10 LDM PBTO+1 CHECK FOR EXTENSION
  6030. SHN 21-5
  6031. PJP PMFX IF NOT APPENDING FILE
  6032. LDM CPCB+2 SAVE CATALOG POINTERS
  6033. SHN 6
  6034. LMM CPCB+3
  6035. STD CB
  6036. LDM CPCB+4
  6037. STD CB+1
  6038. RESTP CPSI RESTORE SECONDARY VSN POINTERS
  6039. LDC PVSN
  6040. STD KA
  6041. PMF11 LDM UTMS+2
  6042. ZJN PMF13 IF TAPE NOT WRITTEN ON
  6043. LDM VBRC,BP CHECK FOR LAST REEL
  6044. SHN -6
  6045. LMM UTMS+2
  6046. NJN PMF12 IF NOT LAST REEL
  6047. LDN EOIV/1S12
  6048. RAM PMFB
  6049. PMF12 LDM VBST,BP SET *EOI* VOLUME
  6050. SCN EOIV/1S12
  6051. LMN 0 NOT *EOI* VOLUME
  6052. * LMN EOIV/1S12 (*EOI* VOLUME)
  6053. PMFB EQU *-1
  6054. STM VBST,BP
  6055. PMF13 LDM VBST,BP
  6056. LPN EOIV/1S12
  6057. NJN PMF15 IF LAST VOLUME
  6058. LDM VBNV,BP
  6059. ZJP PMF16 IF LAST VOLUME
  6060. MMOVE VBNV,BP,,KA,VSKL
  6061. RJM SFV SEARCH FOR VOLUME
  6062. ZJP PMF11 IF VSN FOUND
  6063. PMF14 ERROR EID *ERROR IN INDEX DATA.*
  6064.  
  6065. PMF15 COMPARE PESN,,PVSN,,VSKL
  6066. ZJN PMF16 IF SAME VOLUME
  6067. LDM UTMS+3 SET REWIND FLAG
  6068. SCN WURF
  6069. LMN WURF
  6070. STM UTMS+3
  6071. PMF16 MMOVE VBES,BP,PESN,,VSKL
  6072. MMOVE VBVS,BP,,KA,VSKL
  6073. LDM PBTO+1 FORCE SYMBOLIC ACCESS
  6074. SCN 4
  6075. LMN 4
  6076. STM PBTO+1
  6077. LDM PBSN
  6078. SCN 77
  6079. STM PBSN
  6080. LDN 1
  6081. STM PBSN+1
  6082. EXOVL ECI CREATE CATALOG ENTRY
  6083.  
  6084. PMFC DATA 17HREQUESTED FILE
  6085. TITLE SUBROUTINES.
  6086. SFV SPACE 4,10
  6087. ** SFV - SEARCH FOR VSN
  6088. *
  6089. * ENTRY (BA) = SECONDARY INDEX BLOCK.
  6090. * (KA) = KEY ADDRESS.
  6091. *
  6092. * EXIT (A) = 0 IF VSN FOUND.
  6093. *
  6094. * USES BP.
  6095. *
  6096. * CALLS SIB, VIS.
  6097. *
  6098. * MACROS SAVEP.
  6099.  
  6100.  
  6101. SFV1 SAVEP CPSI SAVE SECONDARY VSN INDEX POINTERS
  6102. LDN 0 EXIT *VSN FOUND*
  6103.  
  6104. SFV SUBR ENTRY/EXIT
  6105. LDD BA
  6106. ADN 2
  6107. STD BP
  6108. RJM SIB SEARCH INDEXED BUFFER (VSN)
  6109. ZJN SFV1 IF FOUND IN THIS BUFFER
  6110. RJM VIS VSN INDEXED SEARCH
  6111. ZJN SFV1 IF VSN FOUND
  6112. UJN SFVX RETURN
  6113. SPACE 4,10
  6114. *** COMMON DECKS.
  6115.  
  6116. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH
  6117. CAA$ EQU 1 DEFINE CAA - CHECK ALTERNATE USER ACCESS
  6118. FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  6119. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN
  6120. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  6121. VUB$ EQU 1 DEFINE VUB - VERIFY USER BLOCK
  6122.  
  6123. *CALL COMPTFM
  6124. *CALL COMPWEI
  6125. SPACE 4,10
  6126. SPACE 4,10
  6127. *** BUFFERS.
  6128.  
  6129.  
  6130. BUFA BSS TAEL*5
  6131. BUFB BSS TAEL*5
  6132. SPACE 4,10
  6133. ERRNG BUF2-*
  6134. TITLE PRESET SUBROUTINES.
  6135. CDB SPACE 4,10
  6136. ** CDB - CONVERT DECIMAL DISPLAY CODE TO BINARY.
  6137. *
  6138. * ENTRY (A) = ADDRESS OF STRING (BITS 0-11).
  6139. * = CHARACTER COUNT (BITS 12-14).
  6140. * = HALF BYTE FLAG (BIT 15).
  6141. *
  6142. * EXIT (A) = CONVERTED VALUE.
  6143. *
  6144. * USES S2, S1 - S1+4.
  6145. *
  6146. * MACROS ERROR.
  6147.  
  6148.  
  6149. CDB SUBR ENTRY/EXIT
  6150. STD S2 ADDRESS OF STRING
  6151. SHN -14 COUNT AND HALF BYTE FLAG
  6152. STD S1
  6153. SHN -3 HALF BYTE FLAG
  6154. STD S1+1
  6155. LDD S1 CHARACTER COUNT
  6156. LPN 7
  6157. ADD S1+1
  6158. STD S1
  6159. LDD S1+1 CHECK IF FIELD SPECIFIED
  6160. SHN 21-0
  6161. LMI S2
  6162. MJN CDB1 IF HALF BYTE
  6163. SHN -6
  6164. CDB1 LPN 77
  6165. ZJN CDBX IF NOT SPECIFIED
  6166. LDN 0
  6167. STD S1+3 ACCUMULATOR (HIGH)
  6168. STD S1+4 ACCUMULATOR (LOW)
  6169. CDB2 LDD S1+1
  6170. SHN -1
  6171. ADD S2
  6172. STD T0
  6173. LDD S1+1
  6174. LPN 1
  6175. SHN 21-0
  6176. LMI T0
  6177. MJN CDB3 IF ODD BYTE
  6178. SHN -6
  6179. CDB3 LPN 77
  6180. SBN 1R0
  6181. PJN CDB5 IF POSSIBLE VALID DIGIT
  6182. CDB4 ERROR BAE *BUFFER ARGUMENT ERROR.*
  6183.  
  6184. CDB5 STD T0
  6185. SBN 1R9-1R0+1
  6186. PJN CDB4 IF NOT VALID DIGIT
  6187. LDD S1+3 CALCULATE 10D * ACCUMULATED RESULT
  6188. SHN 14
  6189. ADD S1+4
  6190. SHN 2+6 TIMES 4
  6191. ADD S1+3 TIMES 5
  6192. SHN 14
  6193. ADD S1+4
  6194. SHN 1 TIMES 10D
  6195. ADD T0 ADD THIS DIGIT
  6196. STD S1+4 STORE RESULT
  6197. SHN -14
  6198. STD S1+3
  6199. AOD S1+1
  6200. SBD S1
  6201. NJP CDB2 IF MORE TO CONVERT
  6202. LDD S1+3
  6203. SHN 14
  6204. LMD S1+4
  6205. LJM CDBX RETURN
  6206. ELA SPACE 4,10
  6207. ** ELA - EXTENDED LABELS ADDRESS PROCESSING.
  6208. *
  6209. * ENTRY (T6 - T7) = POSITION TO START AT IN BUFFER.
  6210. *
  6211. * EXIT (A) = ABSOLUTE ADDRESS.
  6212. * (A) = 0, END OF LABEL BUFFER.
  6213.  
  6214.  
  6215. ELA2 LDN 0 INDICATE END OF BUFFER
  6216.  
  6217. ELA SUBR ENTRY/EXIT
  6218. LDA CM+3,REL
  6219. ADN 11
  6220. CRD S1
  6221. LDD S1+3
  6222. SHN 14
  6223. STD S1+1
  6224. SHN -14
  6225. STD S1+3
  6226. SHN 14
  6227. LMD S1+4
  6228. SBN 2
  6229. MJN ELA2 IF NO LABEL BUFFER
  6230. LDD S1+2
  6231. SHN 6
  6232. LMD S1+1
  6233. STD S1+2
  6234. SHN -14
  6235. STD S1+1
  6236. LDD T6
  6237. SBD S1+1
  6238. SHN 14
  6239. ADD T7
  6240. SBD S1+2
  6241. ADN 11 ALLOW FOR LABEL
  6242. PJP ELA2 IF END OF LABEL BUFFER
  6243. LDD S1+1 CHECK IF BUFFER WITHIN FL
  6244. ADD S1+3
  6245. SHN 14
  6246. ADD S1+2
  6247. ADD S1+4
  6248. SHN -6
  6249. SBD FL
  6250. MJN ELA1 IF BUFFER WITHIN FL
  6251. ERROR BAE *BUFFER ARGUMENT ERROR.*
  6252.  
  6253. ELA1 LDD S1+3 CALCULATE LABEL ADDRESS
  6254. ADD T6
  6255. SHN 6
  6256. ADD RA
  6257. SHN 6
  6258. ADD S1+4
  6259. ADD T7
  6260. LJM ELAX RETURN
  6261. PRS SPACE 4,10
  6262. ** PRS - PRESET FOR SUBFUNCTION PMFS.
  6263. *
  6264. * ENTRY NONE
  6265. *
  6266. * EXIT (A) = 0 IF NOT A SYMBOLIC TAPE REQUEST.
  6267. *
  6268. * USES BA, CI, KA, CM - CM+4, RI - RI+1.
  6269. *
  6270. * CALLS RLF, SFV, VIS.
  6271. *
  6272. * MACROS COMPARE, ERROR, MMOVE.
  6273.  
  6274.  
  6275. PRS3 LDN 0 NOT A SYMBOLIC TAPE REQUEST
  6276.  
  6277. PRS SUBR ENTRY/EXIT
  6278. RJM RLF READ LABELS FROM FET
  6279. LDC PESN FIND FIRST VOLUME
  6280. STD KA
  6281. RJM VIS VSN INDEX SEARCH
  6282. NJN PRS3 IF NOT FOUND
  6283. LDC PVSN
  6284. STD KA
  6285. MMOVE VBFV,BP,,KA,VSKL
  6286. COMPARE PESN,,,KA,VSKL
  6287. ZJN PRS1 IF FIRST VOLUME
  6288. RJM SFV SEARCH FOR VOLUME
  6289. ZJN PRS1 IF VSN FOUND
  6290. ERROR EID *ERROR IN INDEX DATA.*
  6291.  
  6292. PRS1 LDM VBCI,BP GET CATALOG ENTRY
  6293. SHN 14
  6294. STD CI
  6295. SHN -14
  6296. STD RI
  6297. LDM VBCI+1,BP
  6298. STD RI+1
  6299. LDC BUF2
  6300. STD BA
  6301. LDD CP CHECK FOR *POSMF* FROM *RESEX*
  6302. ADN JCIW
  6303. CRD CM
  6304. LDD CM CPU PRIORITY
  6305. LPC 177
  6306. LMN /PRD/RXCS
  6307. NJN PRS2 IF NOT RESEX CP PRIORITY
  6308. LDM PRSA SKIP PASSWORD CHECK
  6309. STM CAAB
  6310. PRS2 LJM PRSX RETURN
  6311.  
  6312. PRSA BSS 0
  6313. LOC CAAB
  6314. UJN CAA3 SKIP PASSWORD CHECK
  6315. LOC *O
  6316. SPACE 4
  6317. ERRNG BUF1-*
  6318. RLF SPACE 4,10
  6319. ** READ *HDR1* LABEL FROM USER-S FET.
  6320. *
  6321. * ENTRY (UDTA) = UDT ADDRESS.
  6322. *
  6323. * EXIT POFI UPDATED FROM USER-S FET.
  6324. * PBSI UPDATED FROM USER-S FET.
  6325. * PBQN UPDATED FROM USER-S FET.
  6326. *
  6327. * USES T1, T5, T6, T7, CM - CM+4, S1 - S1+4, S2 - S2+4
  6328. *
  6329. * CALLS CDB, ELA.
  6330. *
  6331. * MACROS ERROR, UDTRD.
  6332.  
  6333.  
  6334. RLF SUBR ENTRY/EXIT
  6335. UDTRD S1,/MTX/UCIB,1 FET OPTIONS
  6336. UDTRD CM,/MTX/UCIA,1 FET ADDRESS
  6337. LDD S1+1
  6338. SHN 21-5
  6339. PJP RLF8 IF NOT EXTENDED LABELS
  6340. LDN 0
  6341. STD T6
  6342. STD T7
  6343. RLF1 RJM ELA SEARCH FOR *HDR1* LABEL
  6344. ZJN RLF3 IF END OF LABEL BUFFER
  6345. CRD S1
  6346. ADN 1
  6347. CRD S2
  6348. LDD S1+4
  6349. ZJN RLF3 IF END OF LABELS IN BUFFER
  6350. LMC 80D
  6351. NJN RLF3 IF NOT CORRECT LENGTH
  6352. LDD S2
  6353. LMC 2RHD
  6354. NJN RLF2 IF NOT *HDR1* LABEL
  6355. LDD S2+1
  6356. LMC 2RR1
  6357. ZJN RLF4 IF LABEL IS *HDR1*
  6358. RLF2 LDN 11 INCREMENT LABEL POINTER
  6359. RAD T7
  6360. SHN -14
  6361. RAD T6
  6362. UJN RLF1 CONTINUE SEARCH
  6363.  
  6364. RLF3 ERROR BAE *BUFFER ARGUMENT ERROR.*
  6365.  
  6366. RLF4 LDN 10 READ *HDR1* LABEL
  6367. STD T5
  6368. RJM ELA SEARCH FOR *HDR1* LABEL
  6369. ADN 1 OFFSET RECORD LENGTH
  6370. CRM BUF0,T5
  6371. MMOVE BUF0+2,,POFI,,FIKL
  6372. LDN 2 MOVE SET-ID WITH SHIFT
  6373. STD T7
  6374. RLF5 LDM BUF0+10D,T7 HIGH ORDER BYTE
  6375. LPN 77
  6376. SHN 14
  6377. LMM BUF0+11D,T7 LOW ORDER BYTE
  6378. SHN 14
  6379. STM PBSI,T7
  6380. SOD T7
  6381. PJN RLF5 IF MOVE NOT COMPLETE
  6382. LDM PBQN CLEAR PBQN
  6383. SCN 77
  6384. STM PBQN
  6385. LDC 14S12+BUF0+15D
  6386. RJM CDB CONVERT DECIMAL TO BINARY
  6387. STM PBQN+1 SAVE FILE SEQUENCE NUMBER
  6388. SHN -14
  6389. RAM PBQN
  6390. LPN 77
  6391. SHN 14
  6392. ADM PBQN+1
  6393. LMC 9999D
  6394. NJN RLF7 IF NOT EXTENSION
  6395. LDM PBTO+1 SET *TO=A*
  6396. SCN 1S5
  6397. LMN 1S5
  6398. STM PBTO+1
  6399. RLF7 LJM RLFX RETURN
  6400.  
  6401. RLF8 LDN 4
  6402. STD T1
  6403. LDA CM+3,ABS
  6404. SBN 2
  6405. PJN RLF10 IF FET IN BOUNDS
  6406. RLF9 LJM RLF3 BUFFER ARGUMENT ERROR
  6407.  
  6408. RLF10 ADC 77+2+15
  6409. SHN -6
  6410. SBD FL
  6411. PJN RLF9 IF FET OUT OF BOUNDS
  6412. LDA CM+3,REL
  6413. ADN 11
  6414. CRM BUF0,T1
  6415. MMOVE BUF0,,POFI,,FIKL
  6416. MMOVE BUF0+15,,PBSI,,6
  6417. LDM PBQN
  6418. SCN 77
  6419. STM PBQN
  6420. LDC 13S12+BUF0+8D
  6421. RJM CDB CONVERT DECIMAL TO BINARY
  6422. ADC -999D
  6423. NJN RLF11 IF NOT *POSMF 9999*
  6424. LDC 9000D
  6425. RLF11 LJM RLF5 STORE FILE SEQUENCE NUMBER
  6426. SPACE 4,10
  6427. ERRNG BUF0-*
  6428. SPACE 4
  6429. OVERLAY (VERIFY TAPE LABELS / UPDATE CATALOG ENTRY.),OVL1
  6430. SPACE 4,10
  6431. *** DIRECT CELLS.
  6432.  
  6433.  
  6434. FV EQU S1 - S1+2 FIRST VOLUME
  6435. RC EQU S1+3 REEL COUNT
  6436. CN EQU S2 - S2+4 SCRATCH
  6437. FE EQU CN+1 - CN+2 FINAL CATALOG ENTRY
  6438. CB EQU CN+3 - CN+4 CURRENT CATALOG ENTRY
  6439. VTL SPACE 4,10
  6440. *** VTL - VERIFY TAPE LABELS.
  6441. *
  6442. * VTL COMPARES THE TAPE LABELS WITH THE CATALOG ENTRY TO ENSURE
  6443. * THAT THE TAPE HAD NOT BEEN MODIFIED IF IT HAD BEEN REMOVED
  6444. * FROM THE CONTROL OF THE TAPE MANAGEMENT SYSTEM.
  6445. *
  6446. * ENTRY PARAMETER BLOCK SET UP BY GUO.
  6447. *
  6448. * EXIT CATALOG ENTRY VERIFIED.
  6449. *
  6450. * CALLS FCE, MCE, VCE.
  6451.  
  6452.  
  6453. VTL ENTRY ENTRY/EXIT
  6454. RJM FCE FIND CATALOG ENTRY
  6455. ZJN VTLX IF CATALOG NOT FOUND
  6456. RJM CPC CHECK FOR PURGED CATALOGS
  6457. LDM CBSI,BP CHECK FOR ORIGINAL TMS CATALOG ENTRY
  6458. ZJN VTL1 IF SETID NOT SPECIFIED
  6459. LDM CBLD+2,BP CHECK RETENTION DATE
  6460. LPN 77
  6461. ZJN VTL1 IF RETENTION DATE NOT SPECIFIED
  6462. LDM CBST,BP CHECK FOR RECOVERED FILE
  6463. LPC 2000
  6464. ZJN VTL2 IF NOT RECOVERED FILE
  6465. VTL1 RJM UCT UPDATE CATALOG ENTRY FROM TAPE LABEL
  6466. UJN VTLX RETURN
  6467.  
  6468. VTL2 RJM VCE VERIFY CATALOG ENTRY
  6469. UJN VTLX RETURN
  6470. UCE SPACE 4,10
  6471. *** UCES - UPDATE CATALOG ENTRY SUBFUNCTION.
  6472. *
  6473. * UPDATE THE CATALOG ENTRY TO MATCH THE INFORMATION WRITTEN ON
  6474. * THE TAPE.
  6475. *
  6476. * ENTRY PARAMETER BLOCK SET UP BY *GUO*.
  6477. *
  6478. * EXIT CATALOG ENTRY UPDATED.
  6479. *
  6480. * CALLS FCE, UCT.
  6481.  
  6482.  
  6483. UCE ENTRY ENTRY/EXIT
  6484. RJM FCE FIND CATALOG ENTRY
  6485. ZJN UCEX IF NOT FOUND
  6486. RJM UCT UPDATE CATALOG ENTRY FROM TAPE LABEL
  6487. UJN UCEX RETURN
  6488. TITLE SUBROUTINES.
  6489. CPC SPACE 4,10
  6490. ** CPC - CHECK TO PURGE CATALOGS.
  6491. *
  6492. * ENTRY (UTMS+2) = TAPE WRITTEN ON.
  6493. * (CI - RI+1) = CURRENT TAPE CATALOG.
  6494. * (CB - CB+1) = *UTCI* CURRENT CATALOG.
  6495. *
  6496. * EXIT TO *RDC* IF TAPE WRITTEN ON AND CURRENT CATALOG
  6497. * POINTERS DO NOT MATCH.
  6498. *
  6499. * CALLS CPF.
  6500.  
  6501.  
  6502. CPC SUBR ENTRY/EXIT
  6503. LDM UTMS+2
  6504. ZJN CPCX IF NOT WRITTEN ON
  6505. LDD CI COMPARE CATALOG ENTRIES
  6506. SHN 6
  6507. LMD RI (A) = CURRENT TAPE CATALOG
  6508. LMD CB
  6509. NJN CPC1 IF NOT SAME CATALOG
  6510. LDD RI+1
  6511. LMD CB+1
  6512. ZJN CPCX IF SAME CATALOG
  6513. CPC1 LDM UTMS+4 RE-ISSUE CURRENT REQUEST
  6514. SCN RSRR
  6515. LMN RSRR
  6516. STM UTMS+4
  6517. EXOVL PEC PURGE EXCESS CATALOG ENTRIES
  6518. CTC SPACE 4,10
  6519. ** CTC - COMPLETE *MAGNET* *TFM* CALL.
  6520. *
  6521. * ENTRY NONE.
  6522. *
  6523. * EXIT *TFM* REQUEST FLAG CLEARED, AND NORMAL COMPLETION
  6524. * SET IN *UDT*. EXIT IS TO *DPP*.
  6525. *
  6526. * MACROS UDTWT.
  6527.  
  6528.  
  6529. CTC ENTRY ENTRY
  6530. LDM UTMS+4 CLEAR TFM REQUEST FLAG
  6531. SCN RSIL
  6532. STM UTMS+4
  6533. UDTWT UTMS,/MTX/UTMS,1
  6534. LDN ZERL SET NORMAL COMPLETION
  6535. CRD CM
  6536. LDN /MTX/NCP
  6537. STD CM
  6538. UDTWT CM,/MTX/UXRQ,1
  6539. LJM DPP EXIT PP
  6540. FCE SPACE 4,10
  6541. ** FCE - FIND CATALOG ENTRY.
  6542. *
  6543. * ENTRY PARAMETER BLOCK SET UP BY *GUO*.
  6544. *
  6545. * EXIT (A) = 0 IF CATALOG ENTRY NOT FOUND.
  6546. * (CB - CB+1) = CURRENT CATALOG ENTRY.
  6547. * (FE - FE+1) = *POSMF* CATALOG ENTRY.
  6548. *
  6549. * USES CI, KA, RC, CM - CM+4, CN - CN+4,
  6550. * FV - FV+2, R1 - RI+1.
  6551. *
  6552. * CALLS RRP, VIS, VSP.
  6553. *
  6554. * MACROS COMPARE, ERROR, MMOVE, SAVEP, UDTRD.
  6555.  
  6556.  
  6557. FCE11 LDN 0 CATALOG ENTRY NOT FOUND
  6558.  
  6559. FCE SUBR ENTRY/EXIT
  6560. LDC PESN
  6561. STD KA
  6562. RJM VIS VSN INDEXED SEARCH
  6563. NJN FCE11 IF NOT FOUND
  6564. LDM VBRC,BP
  6565. SHN -6
  6566. STD RC
  6567. UDTRD POFI,/MTX/UFID,2 READ FILE IDENTIFIER
  6568. UDTRD CM,/MTX/USID,1 READ SEQUENCE NUMBER
  6569. LDM PBQN
  6570. SCN 77
  6571. STM PBQN
  6572. LDD CM+3
  6573. LPN 77
  6574. RAM PBQN
  6575. LDD CM+4
  6576. STM PBQN+1
  6577. UDTRD PBCR,/MTX/UDAT,1 READ CREATION AND RETENTION DATES
  6578. MMOVE VBFV,BP,FV,,VSKL
  6579. COMPARE PESN,,FV,,VSKL
  6580. ZJN FCE1 IF FIRST VOLUME
  6581. LDN FV READ FIRST VOLUME
  6582. STD KA
  6583. RJM VIS READ FIRST VOLUME
  6584. NJN FCE2 IF VSN NOT FOUND
  6585. FCE1 LDM VBCI,BP SEARCH FOR CATALOG ENTRY
  6586. NJN FCE3 IF CATALOG ENTRY FOUND
  6587. FCE2 ERROR EID *ERROR IN INDEX DATA.*
  6588.  
  6589. FCE3 SHN 14 SET POINTERS TO CATALOG
  6590. STD CI
  6591. SHN -14
  6592. STD RI
  6593. LDM VBCI+1,BP
  6594. STD RI+1
  6595. LDC BUF2
  6596. STD BA
  6597. FCE4 RJM RRP GET CATALOG BLOCK
  6598. FCE5 RJM VSP VERIFY/SET CATALOG POINTERS
  6599. MJN FCE2 IF INCORRECT POINTERS
  6600. LDM PBQN CHECK FOR CURRENT CATALOG
  6601. LMM CBQN,BP
  6602. LPN 77
  6603. NJN FCE6 IF NOT CURRENT CATALOG
  6604. LDM PBQN+1
  6605. LMM CBQN+1,BP
  6606. ZJN FCE7 IF CURRENT CATALOG (TO FCE10)
  6607. FCE6 LDA CBQN,BP
  6608. LMC 9999D
  6609. FCE7 ZJN FCE10 IF CATALOG CREATED BY *POSMF*
  6610. LDM CBNC,BP
  6611. NJN FCE8 IF NEXT CATALOG EXISTS
  6612. ERROR MPE *MULTI-FILE PROCESSING ERROR.*
  6613.  
  6614. FCE8 SHN 14 SET NEXT CATALOG POINTER
  6615. STD CI
  6616. SHN -14
  6617. LMD RI
  6618. NJN FCE9 IF NOT IN CURRENT BLOCK
  6619. LDM CBNC+1,BP
  6620. LMD RI+1
  6621. ZJP FCE5 IF CURRENT BLOCK
  6622. FCE9 LDM CBNC,BP
  6623. LPN 77
  6624. STD RI
  6625. LDM CBNC+1,BP
  6626. STD RI+1
  6627. LJM FCE4 READ NEXT CATALOG ENTRY
  6628.  
  6629. FCE10 UDTRD CN,/MTX/UTCI,1 READ (FE - FE+1), (CB - CB+1)
  6630. SAVEP CPCB SAVE CATALOG BUFFER POINTERS
  6631. LJM FCEX RETURN
  6632. SBS SPACE 4,10
  6633. ** SBS - SET BUSY STATUS.
  6634. *
  6635. * SET CATALOG BUSY ON THE CURRENT CATALOG ENTRY, AND CLEAR
  6636. * CATALOG BUSY ON THE PREVIOUS CATALOG ENTRY.
  6637. *
  6638. * ENTRY (BA - RI+1) = CURRENT CATALOG ENTRY POINTERS.
  6639. * (CB - CB+1) = LAST CATALOG ENTRY RANDOM INDEX.
  6640. *
  6641. * EXIT BUSY STATUS SET.
  6642. * CATALOG ENTRIES WRITTEN.
  6643. *
  6644. * USES CI, CB - CB+1, FE - FE+1, RI - RI+1.
  6645. *
  6646. * CALLS RRP, VSP, WRP.
  6647. *
  6648. * MACROS ERROR, UDTWT.
  6649.  
  6650.  
  6651. SBS SUBR ENTRY/EXIT
  6652. LDM CBST,BP SET BUSY STATUS
  6653. SCN 1
  6654. LMN 1
  6655. STM CBST,BP
  6656. LDD CB
  6657. LMD RI
  6658. LPN 77
  6659. NJN SBS1 IF DIFFERENT CATALOG BLOCKS
  6660. LDD CB+1
  6661. LMD RI+1
  6662. NJN SBS1 IF DIFFERENT CATALOG BLOCKS
  6663. LDD CB
  6664. SHN -6
  6665. LMD CI
  6666. ZJN SBS4 IF SAME CATALOG ENTRY
  6667. UJN SBS2 CLEAR BUSY FLAG
  6668.  
  6669. SBS1 RJM WRP WRITE RANDOM PRU (CATALOG)
  6670. LDD CB+1
  6671. STM RI+1
  6672. LDD CB
  6673. LPN 77
  6674. STD RI
  6675. RJM RRP GET INITIAL BLOCK (CATALOG)
  6676. SBS2 LDD CB
  6677. SHN -6
  6678. STD CI
  6679. RJM VSP VERIFY/SET CATALOG POINTERS
  6680. PJN SBS3 IF NO ERROR
  6681. ERROR MPE *MULTI-FILE PROCESSING ERROR.*
  6682.  
  6683. SBS3 LDM CBST,BP
  6684. SCN 1
  6685. STM CBST,BP
  6686. SBS4 RJM WRP WRITE RANDOM PRU
  6687. LDM CPCB+2 SET NEW CATALOG INDEX
  6688. SHN 6
  6689. LMM CPCB+3
  6690. STD CB
  6691. LDM CPCB+4
  6692. STD CB+1
  6693. LDD FE
  6694. LMD CB
  6695. NJN SBS5 IF *POSMF* NOT COMPLETE
  6696. LDD FE+1
  6697. LMD CB+1
  6698. NJN SBS5 IF *POSMF* NOT COMPLETE
  6699. STD FE
  6700. STD FE+1
  6701. SBS5 UDTWT CN,/MTX/UTCI,1 UPDATE CATALOG INDICIES IN UDT
  6702. LJM SBSX RETURN
  6703. UCT SPACE 4,10
  6704. ** UCT - UPDATE CATALOG ENTRY FROM TAPE LABEL.
  6705. *
  6706. * ENTRY (BA - RI+1) = CATALOG ENTRY POINTERS.
  6707. *
  6708. * EXIT CATALOG UPDATED.
  6709. *
  6710. * CALLS SBS.
  6711. *
  6712. * MACROS CMOVE, COMPARE, ERROR, RESTP.
  6713.  
  6714.  
  6715. UCT SUBR ENTRY/EXIT
  6716. LDN 0 CLEAR DIFFERENCES CELL FOR *CMOVE*
  6717. STD T3
  6718. LDM UTMS+3 CHECK FOR FIRST *HDR1* OF VOLUME
  6719. LPC WUFL
  6720. ZJN UCT1 IF NOT FIRST LABEL OF VOLUME
  6721. LMM UTMS+3 CLEAR FIRST *HDR1* FLAG
  6722. STM UTMS+3
  6723. LJM UCT2 UPDATE CATALOG
  6724.  
  6725. UCT1 LDM CBSN,BP SET SEQUENCE NUMBER
  6726. SCN 77
  6727. STM CBSN,BP
  6728. LDM PBSN
  6729. LPN 77
  6730. RAM CBSN,BP
  6731. LDM PBSN+1
  6732. STM CBSN+1,BP
  6733. CMOVE PESN,,CBES,BP,VSKL/2 COMPARE/SET EXTERNAL VSN
  6734. CMOVE PVSN,,CBVS,BP,VSKL/2 COMPARE/SET INTERNAL VSN
  6735. UCT2 CMOVE POFI,,CBPI,BP,2*10D COMPARE/SET FILE ID, SEQ. NUMBER
  6736. CMOVE PFTD,,CBTD,BP,5 COMPARE/SET TAPE CHARACTERISTICS
  6737. * LDD T3 CHECK TOTAL COMPARE MISMATCHES
  6738. ZJN UCT3 IF NO CHANGE DETECTED
  6739. LDM CBST,BP SET *ISSUE RECOVERY MESSAGE* FLAG
  6740. LPC 7377
  6741. LMC 400
  6742. STM CBST,BP
  6743. UCT3 LDM CBFA,BP
  6744. LPN 77
  6745. STM CBFA,BP
  6746. LDM PBFA
  6747. SCN 77
  6748. RAM CBFA,BP
  6749. LDM UTMS CHECK FUNCTION
  6750. LMN UCES
  6751. NJP UCT5 IF NOT UPDATE CATALOG
  6752. LIA CBES,BP FIND FIRST VSN
  6753. STD KA
  6754. COMPARE PESN,,,KA,VSKL
  6755. ZJN UCT4 IF FIRST VSN
  6756. RJM VIS
  6757. NJN UCT6 IF VSN NOT FOUND
  6758. LDM VBRC,BP CALCULATE REEL COUNT
  6759. SHN -6
  6760. STD T0
  6761. LDD RC
  6762. SBD T0
  6763. UCT4 ADN 1 FIRST REEL
  6764. STD RC
  6765. RESTP CPCB RESTORE CATALOG BUFFER POINTERS
  6766. LDD RC
  6767. STM CBRC,BP
  6768. UCT5 RJM SBS SET CATALOG BUSY STATUS
  6769. LJM UCTX RETURN
  6770.  
  6771. UCT6 ERROR ECD *ERROR IN CATALOG DATA.*
  6772. VCE SPACE 4,10
  6773. ** VCE - VERIFY CATALOG ENTRY.
  6774. *
  6775. * ENTRY PARAMETER BLOCK SET UP.
  6776. * (BA) = CATALOG BUFFER POINTER.
  6777. * (BP) = CATALOG ENTRY POINTER.
  6778. *
  6779. * EXIT CATALOG ENTRY VERIFIED.
  6780. *
  6781. * USES KA.
  6782. *
  6783. * CALLS VIS, WRP.
  6784. *
  6785. * MACROS COMPARE, ERROR.
  6786.  
  6787.  
  6788. VCE SUBR ENTRY/EXIT
  6789. LDM UTMS+3 CHECK FOR FIRST *HDR1* ON VOLUME
  6790. LPC WUFL
  6791. ZJP VCE3 IF NOT FIRST LABEL OF VOLUME
  6792. LMM UTMS+3 CLEAR FIRST LABEL FLAG
  6793. STM UTMS+3
  6794. LIA CBES,BP DETERMINE CORRECT SECTION NUMBER
  6795. STD KA
  6796. LDI KA
  6797. NJN VCE2 IF EXTERNAL VSN FOUND
  6798. VCE1 ERROR ECD ERROR IN CATALOG DATA
  6799.  
  6800. VCE2 RJM VIS VSN INDEXED SEARCH
  6801. NJN VCE1 IF VSN NOT FOUND
  6802. LDM VBRC,BP GET REEL COUNT FROM FIRST VOLUME OF FILE
  6803. SHN -6
  6804. STD T0
  6805. LDM PBSN ADJUST SECTION NUMBER
  6806. LPN 7
  6807. SHN 14
  6808. ADM PBSN+1
  6809. SBD RC CURRENT REEL
  6810. ADD T0 FIRST REEL
  6811. STM PBSN+1
  6812. SHN -14
  6813. LPN 7
  6814. STD T0
  6815. LDM PBSN
  6816. SCN 7
  6817. LMD T0
  6818. STM PBSN
  6819. RESTP CPCB RESTORE CATALOG POINTERS
  6820. UJN VCE4 COMPARE SECTION NUMBERS
  6821.  
  6822. VCE3 COMPARE PESN,,CBES,BP,VSKL
  6823. NJN VCE5 IF NO MATCH
  6824. COMPARE PVSN,,CBVS,BP,VSKL
  6825. NJN VCE7 IF NO MATCH
  6826. VCE4 LDM PBSN COMPARE FILE SECTION NUMBERS
  6827. LMM CBSN,BP
  6828. LPN 7
  6829. VCE5 NJN VCE7 IF NO MATCH
  6830. LDM PBSN+1
  6831. LMM CBSN+1,BP
  6832. NJN VCE7 IF NO MATCH
  6833. VCE6 COMPARE POFI,,CBPI,BP,4*10D
  6834. ZJN VCE8 IF CATALOG DATA MATCHES PHYSICAL DATA
  6835. VCE7 LDM CBST,BP SET CATALOG ERROR
  6836. SCN 2
  6837. LMN 2
  6838. STM CBST,BP
  6839. RJM WRP WRITE RANDOM PRU
  6840. ERROR MPE *MULTI-FILE PROCESSING ERROR.*
  6841.  
  6842. VCE8 RJM SBS SET BUSY STATUS
  6843. LJM VCEX RETURN
  6844. SPACE 4,10
  6845. *** COMMON DECKS
  6846.  
  6847.  
  6848. BSE$ EQU 1 DEFINE BSE - BACK SPACE ONE ENTRY
  6849. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  6850. GNL$ EQU 1 DEFINE GNL - GET NEXT LINK
  6851. GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK
  6852. ISK$ EQU 1 DEFINE ISK - INDEX SEARCH FOR KEY
  6853. PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX
  6854. SIB$ EQU 1 DEFINE SIB - SEARCH IN BLOCK
  6855. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  6856. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  6857. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  6858.  
  6859. *CALL COMPTFM
  6860. SPACE 4,10
  6861. *** BUFFERS.
  6862. SPACE 4,10
  6863. ERRNG BUF2-*
  6864. OVERLAY (ENTER CATALOG IMAGE.),OVL1
  6865. SPACE 4,10
  6866. ** LOCAL DIRECT CELL LOCATIONS.
  6867.  
  6868.  
  6869. CN EQU S1 - S1+4 SCRATCH (5 LOCATIONS)
  6870. CB EQU /PMF/CB CATALOG BUFFER POINTER
  6871. ECIS SPACE 4,10
  6872. ** ECIS - ENTER CATALOG IMAGE.
  6873. *
  6874. * *ECIS* IS A INTERNAL FUNCTION USED TO
  6875. * CREATE THE TAPE CATALOG AND THE USERNAME
  6876. * INDEX (IF REQUIRED).
  6877. *
  6878. * ENTRY NONE.
  6879. *
  6880. * EXIT (CPCB - CPCB+4) = CATALOG POINTERS.
  6881. * USERNAME INDEX CREATED IF REQUIRED.
  6882. * CATALOG IMAGE CREATED.
  6883. *
  6884. * USES BA, CI, CM - CM+4, KA, PB, RI - RI+1,
  6885. * T1.
  6886. *
  6887. * CALLS ABC, ASR, CAC, CCT, CFM, EDT, IBC, PRS, RRP, SSP, WRP.
  6888. *
  6889. * MACROS CLEAR, ERROR, EXOVL, LIA, LDA, MMOVE,
  6890. * RESTP, SAVEP.
  6891.  
  6892.  
  6893. ECI ENTRY ENTRY/EXIT
  6894. LDC PBUN
  6895. STD KA
  6896. RJM UIS USERNAME INDEXED SEARCH
  6897. ZJP ECI2 IF USERNAME FOUND
  6898. LDC BUFA
  6899. ECI1 STD PB CREATE/UPDATE USERNAME INDEX
  6900. LDC BUF2
  6901. STD BA
  6902. RJM IBC INITIALIZE BLOCK CHAIN
  6903. SAVEP CPCB SAVE CATALOG POINTERS
  6904. RESTP CPSI RESTORE INDEX POINTERS
  6905. LDM CPCB+3
  6906. STM UBCI,PB
  6907. LDM CPCB+4
  6908. STM UBCI+1,PB
  6909. MMOVE ,KA,,PB,UNKL
  6910. RJM CIE CREATE INDEXED ENTRY
  6911. ECIA EQU *-1 (RJM TO *WRP* IF UPDATE)
  6912. RESTP CPCB RESTORE CATALOG POINTERS
  6913. LJM ECI7 ENTER CATALOG IMAGE
  6914.  
  6915. ECI2 LDM UBCI,BP SET FIRST CATALOG BLOCK
  6916. LPN 77
  6917. STD RI
  6918. SHN 14
  6919. LMM UBCI+1,BP
  6920. STD RI+1
  6921. NJN ECI3 IF CATALOG INDEX
  6922. LDC WRP
  6923. STM ECIA
  6924. LDD BP
  6925. LJM ECI1 UPDATE USERNAME INDEX
  6926.  
  6927. ECI3 LDM PBTO+1 CHECK ACCESS TYPE
  6928. LPN 4
  6929. ZJN ECI4 IF NOT SYMBOLIC ACCESS
  6930. LDC POFI
  6931. ECI4 STD KA SET SEARCH TYPE
  6932. LDC BUF2 SET CATALOG BUFFER
  6933. STD BA
  6934. RJM SCB SEARCH CATALOG BUFFER
  6935. ZJN ECI5 IF FILE NOT FOUND
  6936. ERROR FAR *(FILENAME) ALREADY RESERVED.*
  6937.  
  6938. ECI5 LDM CPHP CHECK IF HOLE FOUND
  6939. ZJN ECI6 IF HOLE NOT FOUND
  6940. RESTP CPHP RESTORE HOLE POINTERS
  6941. RJM RRP READ RANDOM PRU
  6942. UJN ECI8 CREATE CATALOG IMAGE
  6943.  
  6944. ECI6 LDC BUF2 DEFINE CATALOG BUFFER
  6945. STD BA
  6946. LDN CWRI EXTEND CATALOG FILE
  6947. RJM ABC ADD BLOCK TO CHAIN
  6948. ECI7 LDC RTCB*100 SET RECORD TYPE/LEVEL
  6949. STM CWRT,BA
  6950. LDN TCEL
  6951. STM CWEL,BA
  6952. MMOVE PBUN,,CWUN,BA,UNKL
  6953. LDM CWFE,BA
  6954. RJM MBP MOVE BUFFER POINTER
  6955. LDN 1
  6956. STD CI
  6957. ECI8 SAVEP CPCB SAVE CATALOG POINTERS
  6958. LDM CWUW,BA CREATE CATALOG IMAGE
  6959. SBN TCEL
  6960. STM CWUW,BA
  6961. AOM CWNE,BA
  6962. RJM DCE BUILD DEFAULT CATALOG ENTRY
  6963. RJM CAC CHANGE ALTERNATE CATALOG LIST ATTRIBUTE
  6964. RJM CCT CHANGE FILE CATEGORY
  6965. RJM CFM CHANGE FILE MODE
  6966. RJM WRP WRITE RANDOM PRU
  6967. LDM UDTA
  6968. NJP ECI9 IF MULTI-FILE
  6969. LDN ZERL UPDATE FET
  6970. CRD CM
  6971. LDD CI
  6972. LPN 77
  6973. SHN 6
  6974. LMD RI
  6975. STD CM+3
  6976. LDD RI+1
  6977. STD CM+4
  6978. LDA IR+3,REL
  6979. ADN TFRR
  6980. CWM CM,ON
  6981. CWM PESN,TR
  6982. CWM POFI,TR
  6983. CLEAR PVES,,TSVL*10D
  6984. LDM CBTD,BP DETERMINE TAPE TYPE
  6985. SHN -7
  6986. LPN 3
  6987. RJM SSP SET SCRATCH POOL ADDRESS
  6988. EXOVL ASR ASSIGN SCRATCH VOLUME (NO RETURN)
  6989.  
  6990. ECI9 LDD CB GET ASSIGNED CATALOG
  6991. SHN 14
  6992. STD CI
  6993. SCN 77
  6994. LMD CB+1
  6995. ZJP ECIX IF NOT ASSIGNED
  6996. STD RI+1
  6997. SHN -14
  6998. STD RI
  6999. RJM RRP GET INITIAL BLOCK
  7000. RJM VSP VERIFY/SET CATALOG POINTER
  7001. UDTRD CN,/MTX/UTCI,1
  7002. LDM CPCB+2 SET MULTI-FILE LINKAGE
  7003. SHN 6
  7004. LMM CPCB+3
  7005. STD CN+1
  7006. STM CBNC,BP
  7007. LDM CPCB+4
  7008. STD CN+2
  7009. STM CBNC+1,BP
  7010. RJM WRP WRITE RANDOM PRU (CATALOG)
  7011. UDTWT CN,/MTX/UTCI,1
  7012. LJM ECIX RETURN
  7013. TITLE SUBROUTINES.
  7014. CAC SPACE 4,10
  7015. ** CAC - CHANGE ALTERNATE CATALOG LIST ATTRIBUTE
  7016. *
  7017. * ENTRY (PPWD+3) = ALTERNATE LIST ATTRIBUTE.
  7018. *
  7019. * EXIT LIST ATTRIBUTE CHANGED AS REQUIRED.
  7020. *
  7021. * USES T1.
  7022.  
  7023.  
  7024. CAC1 LDM CBST,BP CHANGE CATALOG LIST ATTRIBUTE
  7025. SHN 0-13+22
  7026. SCN 1
  7027. LMD T1
  7028. LMN 1
  7029. SHN 13-0
  7030. STM CBST,BP
  7031.  
  7032. CAC SUBR ENTRY/EXIT
  7033. LDM PBAC
  7034. LPN 77
  7035. ZJN CACX IF ATTRIBUTE NOT SPECIFIED
  7036. SBN FAYS
  7037. STD T1
  7038. SBN FANO
  7039. MJN CAC1 IF VALID ATTRIBUTE
  7040. UJN CACX RETURN
  7041. CCT SPACE 4,10
  7042. ** CCT - CHANGE CATEGORY TYPE.
  7043. *
  7044. * ENTRY (PBCT) = FILE CATEGORY.
  7045. *
  7046. * EXIT FILE CATEGORY CHANGED AS REQUIRED.
  7047. *
  7048. * USES T1.
  7049.  
  7050.  
  7051. CCT1 LDM CBCT,BP CHANGE FILE CATEGORY
  7052. LPN 77
  7053. LMD T1
  7054. STM CBCT,BP
  7055.  
  7056. CCT SUBR ENTRY/EXIT
  7057. LDM PBCT
  7058. SCN 77
  7059. ZJN CCTX IF CATEGORY NOT SPECIFIED
  7060. STD T1
  7061. SHN -6
  7062. SBN FCMX
  7063. MJN CCT1 IF VALID CATEGORY TYPE
  7064. UJN CCTX RETURN
  7065. CFM SPACE 4,10
  7066. ** CFM - CHANGE FILE MODE.
  7067. *
  7068. * ENTRY (PBMD) = FILE ASSESS MODE.
  7069. *
  7070. * EXIT FILE MODE CHANGED AS REQUIRED.
  7071. *
  7072. * USES T1.
  7073.  
  7074.  
  7075. CFM1 LDM CBCT,BP CHANGE FILE MODE
  7076. SCN 77
  7077. LMD T1
  7078. STM CBCT,BP
  7079.  
  7080. CFM SUBR ENTRY/EXIT
  7081. LDM PBMD
  7082. LPN 77
  7083. ZJN CFMX IF MODE NOT SPECIFIED
  7084. STD T1
  7085. SBN FMMX
  7086. MJN CFM1 IF VALID FILE MODE
  7087. UJN CFMX RETURN
  7088. DCE SPACE 4,10
  7089. ** DCE - BUILD DEFAULT CATALOG IMAGE.
  7090. *
  7091. * ENTRY (BA) = BUFFER ADDRESS (CATALOG).
  7092. * (BP) = BUFFER POINTER (CATALOG).
  7093. * (UDTA) NON-ZERO IF MULTI-FILE.
  7094. *
  7095. * EXIT CATALOG ENTRY BUILT FROM THE FET
  7096. * PARAMETERS AND UDT IF MULTI-FILE.
  7097. *
  7098. * USES CM - CM+4.
  7099. *
  7100. * CALLS EDT.
  7101. *
  7102. * MACROS CLEAR, LDA, LIA, MMOVE, UDTRD, ZJM.
  7103.  
  7104.  
  7105. DCE SUBR ENTRY/EXIT
  7106. CLEAR ,BP,TCEL*10D
  7107. MMOVE POFI,,CBLI,BP,FIKL
  7108. LDC 1401 SET CATALOG STATUS FLAGS
  7109. STM CBST,BP
  7110. LDM PBTO+1 SET SYMBOLIC ACCESS IF REQUIRED
  7111. LPN 4
  7112. RAM CBST,BP
  7113. LDM PFTD
  7114. SHN 21-12
  7115. MJN DCE1 IF LABEL TAPE FILE
  7116. CLEAR POFI,,FIKL
  7117. DCE1 LDM PBQN CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  7118. LPN 77
  7119. ADM PBQN+1
  7120. NJN DCE2 IF SPECIFIED
  7121. LDN 1
  7122. STM PBQN+1
  7123. LDM PBTO
  7124. SHN 21-2
  7125. PJN DCE2 IF NOT SYMBOLIC ACCESS
  7126. LDC 9999D SET MULTI-FILE EXTENSION
  7127. STM PBQN+1
  7128. SHN -14
  7129. RAM PBQN
  7130. DCE2 LDM PBGN SET GENERATION NUMBER
  7131. LPN 7
  7132. ADM PBGN+1
  7133. NJN DCE3 IF SPECIFIED
  7134. LDN 1
  7135. STM PBGN+1
  7136. DCE3 MMOVE PBUF,,CBES,BP,6*10D
  7137. LDN 0
  7138. STM CBTD+1,BP
  7139. MMOVE PBCR+2,,CBLD+2,BP,6 SET RETENTION DATE
  7140. LDN JDAL GET CREATION DATE
  7141. CRD CM
  7142. LDD CM+2 SET CREATION DATE
  7143. SHN 6
  7144. STM CBLD+0,BP
  7145. LDD CM+3
  7146. SHN -6
  7147. RAM CBLD+0,BP
  7148. LDD CM+3
  7149. SHN 6
  7150. STM CBLD+1,BP
  7151. LDD CM+4
  7152. SHN -6
  7153. RAM CBLD+1,BP
  7154. LDM CBLD+2,BP
  7155. LPN 77
  7156. SHN 14
  7157. ADD CM+4
  7158. SHN 6
  7159. STM CBLD+2,BP
  7160. MMOVE PPWD,,CBPW,BP,10D
  7161. LDC FCPR*100+FMRE FILE CATEGORY AND MODE DEFAULTS
  7162. STM CBCT,BP
  7163. LIA CBCD,BP
  7164. RJM EDT ENTER PACKED DATE/TIME
  7165. LIA CBMD,BP
  7166. RJM EDT ENTER PACKED DATE/TIME
  7167. LIA CBAD,BP
  7168. RJM EDT ENTER PACKED DATE/TIME
  7169. LDN 1
  7170. STM CBAC+1,BP INITIALIZE ACCESS COUNT
  7171. LDM UDTA
  7172. ZJP DCE4 IF NOT MULTI-FILE
  7173. LDN 1 INITIALIZE REEL COUNT
  7174. STM CBRC,BP
  7175. DCE4 LDN 2
  7176. STD T1
  7177. LIA CBCN,BP
  7178. STM DCEB
  7179. LIA CBPN,BP
  7180. STM DCEC
  7181. NFA CHGN
  7182. CRM **,ON
  7183. DCEB EQU *-1
  7184. NFA PJ1N
  7185. CRM **,T1
  7186. DCEC EQU *-1
  7187. LDM PFTD+1 INSURE PO=W
  7188. SCN 30
  7189. LMN 20
  7190. STM PFTD+1
  7191. LDM PFTD
  7192. SHN 21-12
  7193. PJN DCE5 IF UNLABELED FILE
  7194. SCN 1 INSURE WRITE LABEL SET
  7195. LMN 1
  7196. SHN 13-0
  7197. STM PFTD
  7198. DCE5 LDM CBST,BP
  7199. SHN 21-2
  7200. MJN DCE6 IF SYMBOLIC ACCESS
  7201. LDM CBQN,BP SET SEQUENCE NUMBER TO 1
  7202. SCN 77
  7203. STM CBQN,BP
  7204. LDN 1
  7205. STM CBQN+1,BP
  7206. DCE6 LJM DCEX RETURN
  7207. SPACE 4,10
  7208. ** LOCAL COMMON DECKS.
  7209.  
  7210.  
  7211. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY
  7212. CIE$ EQU 1 DEFINE CIE - CREATE INDEXED ENTRY
  7213. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN
  7214. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY
  7215. SCB$ EQU 1 DEFINE SCB - SEARCH CATALOG BUFFER
  7216. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER
  7217. SSP$ EQU 1 DEFINE SSP - SET SCRATCH POOL ADDRESS
  7218. UIS$ EQU 1 DEFINE UIS - USERNAME INDEXED SEARCH
  7219. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  7220. *CALL COMPTFM
  7221. *CALL COMPWEI
  7222. SPACE 4
  7223. ** BUFFERS.
  7224.  
  7225.  
  7226. BUFA BSS TSVL*5
  7227. BUFB BSS TSVL*5
  7228. SPACE 4,10
  7229. ERRNG BUF2-* BYTES LEFT BEFORE OVERFLOW
  7230. OVERLAY (ASSIGN SCRATCH TAPE.),OVL1
  7231. SPACE 4,10
  7232. *** COMMON SYMBOL DEFINITIONS.
  7233.  
  7234.  
  7235. QUAL RSX
  7236. *CALL COMSRSX
  7237. QUAL *
  7238.  
  7239. .RJID EQU /RSX/RJID*5
  7240. ERRPL /RSX/RJID-100 MUST BE IN 1ST PRU OF DEMAND FILE ENTRY
  7241.  
  7242. .RREQ EQU /RSX/RREQ*5-500
  7243. ERRNG /RSX/RREQ-100 MUST BE IN 2ND PRU OF DEMAND FILE ENTRY
  7244.  
  7245. .RQPV EQU /RSX/RQPV*5-500
  7246. ERRNG /RSX/RQPV-100 MUST BE IN 2ND PRU OF DEMAND FILE ENTRY
  7247. SPACE 4,10
  7248. *** DIRECT CELL LOCATIONS.
  7249.  
  7250.  
  7251. CN EQU S1 - S1+4
  7252. DE EQU S1+1 DEMAND FILE EQUIPMENT
  7253. DT EQU S1+2 DEMAND FILE TRACK
  7254. DS EQU S1+3 DEMAND FILE SECTOR
  7255. IL EQU S2+1 INTERLOCK FLAG
  7256. FT EQU S2+2 - S2+3 FET FIRST POINTER
  7257. IN EQU S2+4 - S3+0 FET IN POINTER
  7258. OT EQU S3+1 - S3+2 FET OUT POINTER
  7259. LM EQU S3+3 - S3+4 FET LIMIT POINTER
  7260. ASRS SPACE 4,10
  7261. ** ASRS - ASSIGN SCRATCH REEL.
  7262. *
  7263. * ENTRY (CPCB - CPCB+4) = CATALOG POINTERS.
  7264. * (CPAB - CPAB+4) = PREVIOUS VSN INDEX.
  7265. * (SCRP) = ADDRESS IN *TMST* OF CORRECT SCRATCH POOL.
  7266. *
  7267. * EXIT SCRATCH TAPE ASSIGNED TO THE JOB.
  7268. *
  7269. * USES BA, EC, KA, PB, T3, CM - CM+4, FP - FP+4, RI - RI+1.
  7270. *
  7271. * CALLS ARF, CIE, DEE, DLB, EDT, ERR, MBP, RRP, SAC, VIS, WRP.
  7272. *
  7273. * MACROS LDA, MMOVE, RESTP, SAVEP, UDTRD, UDTWT.
  7274.  
  7275.  
  7276. ASR ENTRY ENTRY/EXIT
  7277. LDM SCRP SET SCRATCH POOL ADDRESS
  7278. STM ASRB
  7279. ASR1 RESTP CPSB RESTORE TMST BUFFER POINTERS
  7280. LDM CPCB DEFINE TMST BUFFER = CATALOG BUFFER
  7281. STD BA
  7282. RJM GIB GET INITIAL BLOCK (TMST)
  7283. LDM CWFE,BA
  7284. RJM MBP MOVE BUFFER POINTER
  7285. SAVEP CPSB SAVE BUFFER POINTERS (TMST)
  7286. LDM SBSM,BP CHECK SCRATCH POOL
  7287. ASRB EQU *-1 (ADDRESS IN *TMST* OF CORRECT SCRATCH POOL)
  7288. LMC 7777
  7289. NJN ASR4 IF SCRATCH AVAILABLE
  7290. LDM SBST,BP
  7291. LPN FFTS/10000
  7292. NJN ASR2 IF FOREIGN FAMILY
  7293. EXOVL GSP SEARCH GLOBAL SCRATCH POOLS (NO RETURN)
  7294.  
  7295. ASR2 ERROR WSA *WAIT SCRATCH ASSIGNMENT.*
  7296.  
  7297. ASR3 ERROR EID *ERROR IN INDEX DATA.*
  7298.  
  7299. ASR4 LDC PVNV LOCATE SCRATCH
  7300. STD KA
  7301. LDM SCRP GET ADDRESS OF CORRECT SCRATCH POOL
  7302. ADD BP
  7303. STD T1
  7304. MMOVE ,,,KA,VSKL
  7305. RJM VIS VSN INDEXED SEARCH
  7306. NJN ASR3 IF NOT FOUND
  7307. LDM VBST,BP
  7308. LPN ASVS/10000
  7309. ZJN ASR3 IF SCRATCH NOT FOUND
  7310. LDM VBST,BP
  7311. LPN RTVS/10000
  7312. NJN ASR3 IF TAPE RESERVED
  7313. LDM VBST,BP
  7314. LPN HMVS/10000+UOVS/10000
  7315. STM ASRA
  7316. NJN ASR5 IF NOT AVAILABLE
  7317. LDM VBST+1,BP
  7318. LPN TVVS+MVVS+ERVS+VIVS
  7319. STM ASRA
  7320. ASR5 RESTP CPSB RESTORE TMST BUFFER POINTERS
  7321. LDM SCRP GET ADDRESS OF CORRECT SCRATCH POOL WORD
  7322. ADD BP
  7323. STD T3
  7324. MMOVE VBNV,CPSI+1,,T3,VSKL SET NEW VSN IN SCRATCH POOL WORD
  7325. LDA 3,T3 DECREMENT SCRATCH COUNT
  7326. SBN 1
  7327. STM 4,T3
  7328. SHN -14
  7329. STM 3,T3
  7330. RJM WRP WRITE RANDOM PRU (TMST)
  7331. LDC 0
  7332. ASRA EQU *-1
  7333. ZJN ASR7 IF THIS SCRATCH VSN ACCEPTABLE
  7334. RESTP CPSI RESTORE SECONDARY VSN POINTERS
  7335. LDM VBST+1,BP
  7336. LPN VIVS
  7337. NJN ASR6 IF VSN INTERLOCKED
  7338. CLEAR VBNV,BP,VSKL CLEAR NEXT VOLUME
  7339. RJM WRP
  7340. ASR6 LJM ASR1 GET NEXT SCRATCH TAPE
  7341.  
  7342. ASR7 EXSUB CSA COMPLETE SCRATCH ASSIGNMENT
  7343. LJM ASRX RETURN
  7344. AVSS SPACE 4,10
  7345. ** AVSS - ADVANCE VSN FILE.
  7346. *
  7347. * CALLED BY *MAGNET* TO SET THE NEXT VOLUME OF TAPE IN THE UDT.
  7348. *
  7349. * EXIT IF THERE IS A NEXT VOLUME, IT IS RETURNED.
  7350. * IF THERE IS NOT A NEXT VOLUME AND THIS IS A WRITE
  7351. * REQUEST, A SCRATCH VOLUME WILL BE ASSIGNED.
  7352. *
  7353. * USES BA, CI, CM - CM+4, KA, RI - RI+1.
  7354. *
  7355. * CALLS ASR, PRS, SSP, VIS, VSP, WRP.
  7356. *
  7357. * MACROS ERROR, EXOVL, MMOVE, UDTRD, UDTWT.
  7358.  
  7359.  
  7360. AVS ENTRY ENTRY/EXIT
  7361. RJM PRS PRESET
  7362. ZJN AVSX IF NO CATALOG ENTRY
  7363. RJM RRP GET CATALOG
  7364. RJM VSP VERIFY/SET CATALOG POINTERS
  7365. MJN AVSX IF ERROR
  7366. SAVEP CPCB
  7367. RESTP CPSI RESTORE VSN SECONDARY INDEX POINTERS
  7368. LDM UTMS+3
  7369. LPN WURF
  7370. NJP AVS6 IF REWIND FILE
  7371. LDM VBRC,BP CHECK FOR LAST VOLUME
  7372. SHN -6
  7373. LMM UTMS+2
  7374. NJN AVS1 IF NOT LAST VOLUME
  7375. LDM VBST,BP CLEAR EOI VOLUME STATUS
  7376. SCN EOIV/1S12
  7377. STM VBST,BP
  7378. AVS1 RJM WRP WRITE RANDOM PRU (VSN INDEX)
  7379. MMOVE VBNV,BP,,KA,VSKL
  7380. LDI KA
  7381. ZJN AVS4 IF END OF ASSIGNED VOLUMES
  7382. RJM VIS VSN INDEXED SEARCH
  7383. NJN AVS3 IF VOLUME NOT FOUND
  7384. LDM VBRC,BP CHECK FOR LAST VOLUME
  7385. SHN -6
  7386. STD T0
  7387. LDM UTMS+2
  7388. ZJN AVS2 IF NOT WRITTEN TO
  7389. SBD T0
  7390. SBN 1
  7391. NJN AVS2 IF NOT LAST VOLUME
  7392. LDM VBST,BP SET EOI VOLUME STATUS
  7393. SCN EOIV/1S12
  7394. LMN EOIV/1S12
  7395. STM VBST,BP
  7396. AVS2 RJM IUC INCREASE USAGE COUNTER
  7397. RJM WRP WRITE RANDOM PRU (VSN INDEX)
  7398. LJM AVS7 UPDATE UDT
  7399.  
  7400. AVS3 ERROR EID *ERROR IN INDEX DATA.*
  7401.  
  7402. AVS4 LDM UTMS+4 CHECK VOLUME EXTENSION
  7403. SHN 21-12
  7404. MJP AVS5 IF USER OWNED FILE
  7405. SAVEP CPAB SAVE BUFFER POINTERS (VSN INDEX)
  7406. MMOVE VBFV,BP,PVFV,,VSKL
  7407. LDM VBRC,BP
  7408. SCN 77
  7409. STD T0
  7410. LDM PVRC
  7411. LPN 77
  7412. LMD T0
  7413. STM PVRC SAVE REEL COUNT
  7414. LDM VBST+1,BP DETERMINE TAPE TYPE
  7415. SHN -5
  7416. LPN 3
  7417. RJM SSP SET SCRATCH POOL ADDRESS
  7418. EXSUB ASR ASSIGN SCRATCH REEL
  7419. LJM AVSX RETURN
  7420.  
  7421. AVS5 ERROR NEU *NO EXTEND ON USER OWNED FILE.*
  7422.  
  7423. AVS6 LMM UTMS+3 CLEAR REWIND FLAG
  7424. STM UTMS+3
  7425. COMPARE CBES,CPCB+1,VBES,BP,VSKL
  7426. ZJP AVSX IF REWIND CURRENT VOLUME
  7427. RJM WRP WRITE RANDOM PRU (VSN INDEX)
  7428. LDC PVES
  7429. STD KA
  7430. MMOVE CBES,CPCB+1,,KA,VSKL
  7431. RJM VIS VSN INDEXED SEARCH
  7432. NJP AVS3 IF VSN NOT FOUND
  7433. RJM IUC INCREASE USAGE COUNTER
  7434. AVS7 MMOVE VBES,BP,,KA,VSKL
  7435. UDTRD CM,/MTX/UESN,1
  7436. MMOVE PVES,,CM,,VSKL SET EXTERNAL VSN
  7437. UDTWT CM,/MTX/UESN,1
  7438. UDTRD CM,/MTX/UISN,1
  7439. MMOVE VBVS,BP,CM,,VSKL SET INTERNAL VSN
  7440. UDTWT CM,/MTX/UISN,1
  7441. UDTRD CM,/MTX/UVRI,1
  7442. LDM VBRC,BP SET REEL NUMBER
  7443. SHN -6
  7444. SBN 1
  7445. STD CM+3
  7446. UDTWT CM,/MTX/UVRI,1
  7447. LJM AVSX RETURN
  7448. CSAS SPACE 4,10
  7449. ** CSAS - COMPLETE SCRATCH ASSIGNMENT.
  7450. *
  7451. * ENTRY (CPSI - CPSI+1) = VSN INDEX POINTERS.
  7452. * (CPCB - CPCB+4) = CATALOG POINTERS.
  7453. *
  7454. * USES CM - CM+4, KA, PB, T3.
  7455. *
  7456. * CALLS COB, CVS, RBB, RRP, SBP, SVB, WRP.
  7457. *
  7458. * MACROS CLEAR, MMOVE, RESTP, UDTRD, UDTWT.
  7459.  
  7460.  
  7461. CSA ENTRY ENTRY/EXIT
  7462. RESTP CPSI RESTORE BUFFER POINTERS (VSN INDEX)
  7463. MMOVE VBES,BP,PVES,,VSKL
  7464. MMOVE VBVS,BP,PVVS,,VSKL
  7465. MMOVE VBES,BP,VBVS,BP,VSKL
  7466. MMOVE PVES,,VBFV,BP,VSKL
  7467. CLEAR VBNV,BP,VSKL
  7468. LDM CPCB+2 SET CATALOG INDEX
  7469. LPN 77
  7470. SHN 6
  7471. LMM CPCB+3
  7472. STM VBCI,BP
  7473. LDM CPCB+4
  7474. STM VBCI+1,BP
  7475. RJM SVB SET VSN BUSY
  7476. LDM VBST,BP SET EOI VOLUME STATUS
  7477. SCN EOIV/1S12
  7478. LMN EOIV/1S12
  7479. STM VBST,BP
  7480. LDC 100 INCREMENT REEL COUNT
  7481. RAM PVRC
  7482. SCN 77
  7483. RAM VBRC,BP
  7484. SHN -6
  7485. SBN 1
  7486. ZJN CSA1 IF FIRST VOLUME OF SET
  7487. MMOVE PVFV,,VBFV,BP,VSKL
  7488. CSA1 LDD FC
  7489. LMN SSJF
  7490. NJP CSA2 IF NOT CALLED BY TFSP
  7491. LDA IR+3,REL
  7492. RJM SBP SET BUFFER POINTERS
  7493. RJM COB CHECK OUTPUT BUFFER
  7494. LDN TSVL
  7495. STD T3
  7496. LDC BUFA
  7497. STD PB
  7498. STD KA
  7499. RJM RBB READ BINARY BUFFER
  7500. MMOVE VBJS,PB,VBJS,BP,2 SET *EJTO*
  7501. CSA2 RJM WRP WRITE RANDOM PRU
  7502. RESTP CPAB RESTORE BUFFER POINTERS (VSN INDEX)
  7503. LDD BA
  7504. ZJN CSA3 IF NOT FIRST REEL
  7505. RJM RRP READ RANDOM PRU (VSN INDEX)
  7506. MMOVE PVES,,VBNV,BP,VSKL
  7507. RJM WRP WRITE RANDOM PRU (VSN INDEX)
  7508. CSA3 RESTP CPCB RESTORE BUFFER POINTERS (CATALOG)
  7509. RJM RRP READ RANDOM PRU
  7510. LDD FC
  7511. LMN RSXF
  7512. ZJN CSA4 IF CALLED BY RESEX
  7513. LMN SSJF&RSXF
  7514. NJP CSA5 IF NOT CALLED BY TFSP
  7515. RJM CVS COMPLETE VSN SWITCH
  7516. LJM CSA7 RETURN
  7517.  
  7518. CSA4 MMOVE PVES,,CBES,BP,VSKL
  7519. MMOVE PVES,,CBVS,BP,VSKL
  7520. LDM PVRC
  7521. SHN -6
  7522. STM CBSN+1,BP
  7523. SBN 1
  7524. STM PVES+4 SET REEL NUMBER TO BE PASSED TO *MAGNET*
  7525. LDA IR+3,REL RESTORE *FA* AND *SN*
  7526. ADN TFVS
  7527. CRD CM
  7528. LDD CM+3
  7529. STM PVVS+3
  7530. LDD CM+4
  7531. STM PVVS+4
  7532. LDM PFLG SET BLANK LABEL REQUIRED FLAG
  7533. LPC 3777
  7534. LMC 4000
  7535. STM PFLG
  7536. LDA IR+3,REL UPDATE FET
  7537. ADN TFES
  7538. CWM PVES,ON
  7539. ADN TFVS-TFES-1
  7540. CWM PVVS,ON
  7541. LJM CSA6 COMPLETE REQUEST
  7542.  
  7543. CSA5 UDTRD CM,/MTX/UESN,1
  7544. MMOVE PVES,,CM,,VSKL SET EXTERNAL VSN
  7545. UDTWT CM,/MTX/UESN,1
  7546. UDTRD CM,/MTX/UISN,1
  7547. MMOVE PVVS,,CM,,VSKL SET INTERNAL VSN
  7548. UDTWT CM,/MTX/UISN,1
  7549. UDTRD CM,/MTX/UVRI,1
  7550. LDM PVRC SET REEL NUMBER
  7551. SHN -6
  7552. SBN 1
  7553. STD CM+3
  7554. UDTWT CM,/MTX/UVRI,1
  7555. LDM UTMS+3 SET AUTO-BLANK LABEL
  7556. SCN WUBL
  7557. LMN WUBL
  7558. STM UTMS+3
  7559. CSA6 AOM CBRC,BP INCREMENT REEL COUNT
  7560. CSA7 RJM WRP WRITE RANDOM PRU
  7561. LJM CSAX RETURN
  7562. CVS SPACE 4,20
  7563. ** CVS - COMPLETE VSN SWITCH.
  7564. *
  7565. * CVS COMPLETES ASSIGNMENT OF NEXT VSN AND CLEARS
  7566. * ASSIGNMENT FIELDS IN CURRENT VSN, WHICH IS BEING
  7567. * FLAGGED BY FUNCTION *GNSS*. *CVS* IS CALLED BY
  7568. * *CSA* IF THE FUNCTION CALLED IS *SSJF*. (TFSP)
  7569. *
  7570. * ENTRY (PVES) = NEW VSN.
  7571. * (DA) = DEMAND FILE FST ADDRESS.
  7572. * (DE) = DEMAND FILE EQUIPMENT.
  7573. * (DT) = DEMAND FILE TRACK.
  7574. * (DS) = DEMAND FILE SECTOR.
  7575. * IF FIRST REEL, *RSXDID* FILE ATTACHED
  7576. *
  7577. * EXIT NEW VSN SET IN UDT OR RSXDID FILE.
  7578. * IF FIRST REEL, NEW VSN SET IN CATALOG.
  7579. *
  7580. * USES CM - CM+4, FS - FS+4, FN - FN+4, T1, T5,
  7581. * T6, T7.
  7582. *
  7583. * CALLS RDS, WBB, WDS.
  7584. *
  7585. * MACROS CLEAR, ENDMS, ERROR, MMOVE, MONITOR,
  7586. * SETMS, UDTRD, UDTWT.
  7587.  
  7588.  
  7589. CVS SUBR ENTRY/EXIT
  7590. LDN 0
  7591. STM VBCI,PB CLEAR CATALOG INDEX
  7592. STM VBCI+1,PB
  7593. LDM VBRC,PB CLEAR REEL COUNT
  7594. LPN 77
  7595. STM VBRC,PB
  7596. LDM VBST+1,PB CLEAR BUSY FLAG
  7597. SCN VIVS
  7598. STM VBST+1,PB
  7599. CLEAR VBFV,PB,10D CLEAR FIRST VSN AND JSN
  7600. LDN TSVL WRITE BUFFER TO FET
  7601. STD T1
  7602. LDC BUFA
  7603. RJM WBB WRITE BINARY BUFFER
  7604. LDM UDTA
  7605. NJP CVS3 IF REEL EXTENSION
  7606. MMOVE PVES,,CBES,BP,VSKL UPDATE CATALOG
  7607. MMOVE PVVS,,CBVS,BP,VSKL
  7608. LDD DE SET EQUIPMENT
  7609. STD T5
  7610. LDD DT SET TRACK
  7611. STD T6
  7612. LDD DS SET SECTOR
  7613. STD T7
  7614. SETMS IO,RW
  7615. LDC BUF0
  7616. RJM RDS READ SECTOR
  7617. PJN CVS2 IF NOT READ ERROR
  7618. CVS1 ERROR MSE *EQXX, DNYY, MASS STORAGE ERROR*
  7619.  
  7620. CVS2 MMOVE PVES,,BUF0+2+.RQPV+5*/RSX/PVSN,,VSKL SET NEW VSN
  7621. MMOVE PVVS,,BUF0+2+.RQPV+5*/RSX/PVSI,,VSKL SET NEW PRN
  7622. LDC BUF0
  7623. RJM WDS WRITE SECTOR
  7624. MJP CVS1 IF WRITE ERROR
  7625. ENDMS DROP CHANNEL
  7626. LDN RDFO SET DEMAND FILE ORDINAL
  7627. STD T1
  7628. LDN /PFM/PTUP SET MODE
  7629. STD T2
  7630. LDN RFAS RETURN DEMAND FILE
  7631. RJM ARF
  7632. * LDN 0 SET DEMAND FILE NOT ATTACHED
  7633. STM DFFO
  7634. LDN ZERL ISSUE RESOURCE EVENT
  7635. CRD CM
  7636. LDM VBVS,PB HASH VSN
  7637. ADM VBVS+1,PB
  7638. ADM VBVS+2,PB
  7639. SHN 6
  7640. SCN 77
  7641. SHN 14
  7642. ADC ESVR ENTER RESOURCE EVENT
  7643. STD CM+4
  7644. SHN -14
  7645. STD CM+3
  7646. MONITOR EATM
  7647. LJM CVSX RETURN
  7648.  
  7649. CVS3 UDTRD CM,/MTX/UESN,1 UPDATE VSN-S IN *UDT*
  7650. MMOVE PVES,,CM,,VSKL
  7651. UDTWT CM,/MTX/UESN,1 WRITE *UDT*
  7652. UDTRD CM,/MTX/UISN,1
  7653. MMOVE PVVS,,CM,,VSKL
  7654. UDTWT CM,/MTX/UISN,1
  7655. LJM CVSX RETURN
  7656. GNSS SPACE 4,15
  7657. ** GNSS - GET NEXT SCRATCH.
  7658. *
  7659. * ENTRY (IR+3 - IR+4) ADDRESS OF VSN ENTRY BUFFER.
  7660. *
  7661. * EXIT *VSN* ENTRY IN BUFFER UPDATED.
  7662. * NEXT SCRATCH *VSN* ASSIGNED TO THE JOB.
  7663. *
  7664. * CALLS ASR, SFV, SSP.
  7665. *
  7666. * MACROS EXSUB.
  7667.  
  7668.  
  7669. GNS ENTRY
  7670. RJM SFV PRESET
  7671. LDC BUF2 SET BUFFER POINTERS
  7672. STD BA
  7673. LDM VBST+1,PB DETERMINE TAPE TYPE
  7674. SHN -5
  7675. LPN 3
  7676. RJM SSP SET SCRATCH POOL ADDRESS
  7677. LDM VBCI,PB
  7678. SHN 14
  7679. STD CI SET CATALOG INDEX
  7680. SHN -14
  7681. STD RI SET RANDOM INDEX
  7682. LDM VBCI+1,PB
  7683. STD RI+1
  7684. RJM GIB GET INITIAL BLOCK
  7685. RJM VSP VERIFY/SET POINTERS
  7686. PJN GNS1 IF VALID CATALOG POINTERS
  7687. ERROR EID *ERROR IN INDEX DATA*
  7688.  
  7689. GNS1 SAVEP CPCB SAVE CATALOG BUFFER POINTERS
  7690. EXSUB ASR ASSIGN SCRATCH REEL
  7691. LJM GNSX RETURN
  7692. TITLE SUBROUTINES.
  7693. SPACE 4
  7694. ** LOCAL COMMON DECKS.
  7695.  
  7696.  
  7697. BSE$ EQU 1 BSE - BACKSPACE ONE ENTRY
  7698. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  7699. GNL$ EQU 1 DEFINE GNL - GET NEXT LINK
  7700. GPL$ EQU 1 DEFINE GPL - GET PREVIOUS LINK
  7701. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY
  7702. PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX
  7703. SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS
  7704. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER
  7705. SSP$ EQU 1 DEFINE SSP - SET SCRATCH POOL ADDRESS
  7706. SVB$ EQU 1 DEFINE SVB - SET VSN BUSY
  7707. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  7708. UTR$ EQU 1 DEFINE UTR - UPDATE TRT
  7709. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  7710. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  7711. IUC$ EQU 1 DEFINE IUC - INCREASE USAGE COUNTER
  7712. *CALL COMPCOB
  7713. *CALL COMPRBB
  7714. *CALL COMPTFM
  7715. *CALL COMPWBB
  7716.  
  7717.  
  7718. BUFA BSS TSVL*5 VSN BUFFER
  7719. SPACE 4
  7720. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  7721. TITLE PRESET.
  7722. PRS SPACE 4,10
  7723. ** PRS - PRESET FOR FUNCTION AVSS.
  7724. *
  7725. * ENTRY NONE.
  7726. *
  7727. * EXIT (A) = 0 IF NO CATALOG INDEX.
  7728. * (CPCB - CPCB+4) = CATALOG POINTERS.
  7729. *
  7730. * USES KA, (CN - CN+4).
  7731. *
  7732. * CALLS VIS.
  7733. *
  7734. * MACROS ERROR, RESTP.
  7735.  
  7736.  
  7737. PRS SUBR ENTRY/EXIT
  7738. UDTRD CN,/MTX/UTCI,1
  7739. LDM UTMS+3 SET FIRST *HDR1* LABEL FLAG
  7740. LPC -WUFL
  7741. LMC WUFL
  7742. STM UTMS+3
  7743. LPN WURF
  7744. ZJN PRS1 IF NOT REWIND
  7745. LDD CN+1
  7746. ZJN PRS1 IF NOT POSMF IN PROGRESS
  7747. LDD CN+2
  7748. STM CPCB+4
  7749. LDD CN+1
  7750. UJN PRS2 SET CATALOG POINTERS
  7751.  
  7752. PRS1 LDD CN+4
  7753. STM CPCB+4
  7754. LDD CN+3 SET CATALOG POINTERS
  7755. PRS2 ZJN PRSX IF NO CATALOG POINTERS
  7756. SHN 14
  7757. STM CPCB+2
  7758. SHN -14
  7759. STM CPCB+3
  7760. LDC BUF2
  7761. STM CPCB
  7762. LDC PESN FIND CURRENT VSN
  7763. STD KA
  7764. RJM VIS VSN INDEXED SEARCH
  7765. ZJN PRS3 IF VSN FOUND
  7766. ERROR EID *ERROR IN INDEX DATA.*
  7767.  
  7768. PRS3 LDM VBRC,BP CHECK REEL COUNT
  7769. SHN -6
  7770. SBN 2
  7771. MJN PRS3.1 IF FIRST REEL
  7772. LDM VBST+1,BP CLEAR VOLUME BUSY
  7773. SCN VIVS
  7774. STM VBST+1,BP
  7775. PRS3.1 BSS 0
  7776. RESTP CPCB RESTORE CATALOG BUFFER
  7777. LDD RI
  7778. ADD RI+1
  7779. LJM PRSX RETURN
  7780. SPACE 4
  7781. ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW
  7782. TITLE SUBROUTINES (OVERLAYED BY BUF2).
  7783. SFV SPACE 4,20
  7784. *** SFV - SEARCH FOR VSN.
  7785. *
  7786. * *SFV* IS CALLED BY THE *GNSS* FUNCTION. IT MAY BE
  7787. * OVERLAYED BY BUF2. *SFV* SEARCHES THE *UDT-S* AND
  7788. * THE *RSXDID* FILE FOR THE VSN BEING REQUESTED.
  7789. *
  7790. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  7791. *
  7792. * EXIT (CPAB - CPAB+4) = CATALOG BUFFER POINTERS.
  7793. * IF FIRST REEL, (RESEX)
  7794. * (DE) = DEMAND FILE EQUIPMENT.
  7795. * (DT) = DEMAND FILE TRACK.
  7796. * (DS) = DEMAND FILE SECTOR.
  7797. * (DA) = FST ADDRESS OF RSXDID FILE.
  7798. * (UDTA) = 0.
  7799. * RSXD(ID) IS LEFT BUSY.
  7800. * IF REEL EXTENSION, (MAGNET)
  7801. * (CPAB - CPAB+4) = BUFFER POINTERS TO
  7802. * PREVIOUS VSN.
  7803. * (PVFV) = FIRST VSN.
  7804. * (UDTA) = *FWA* OF UDT ENTRY.
  7805. *
  7806. * USES CM - CM+4, CN - CN+4, DE, DT, DS, KA, PB, T3, T5, T6,
  7807. * T7.
  7808. *
  7809. * CALLS COB, FAT, RBB, RND, SBP, VIS.
  7810. *
  7811. * MACROS COMPARE, ENDMS, ERROR, MONITOR, MMOVE, PAUSE, SAVEP,
  7812. * SETMS, UDTRD.
  7813.  
  7814.  
  7815. SFV16 SAVEP CPAB SAVE BUFFER POINTERS
  7816. MMOVE VBFV,PB,PVFV,,VSKL SAVE FIRST VSN
  7817. LDM VBRC,BP SAVE REEL COUNT
  7818. STM PVRC
  7819. UJN SFVX RETURN
  7820.  
  7821. SFV17 ENDMS
  7822.  
  7823. SFV SUBR ENTRY/EXIT
  7824. LDA IR+3,REL
  7825. RJM SBP SET FET BUFFER POINTERS
  7826. RJM COB CHECK OUTPUT BUFFERS
  7827. PJN SFV1 IF NO ERROR
  7828. ERROR BAE *BUFFER ARGUMENT ERROR*
  7829.  
  7830. SFV1 LDN TSVL PROCESS REQUEST
  7831. STD T3
  7832. LDC BUFA SET UP BUFFER POINTER
  7833. STD PB
  7834. STD KA
  7835. RJM RBB READ BINARY BUFFER
  7836. LDC PVES
  7837. STD KA
  7838. MMOVE VBES,PB,,KA,VSKL
  7839. RJM VIS VSN INDEXED SEARCH
  7840. NJP SFV8 IF VSN NOT FOUND
  7841. LDM VBNV,BP CHECK FOR NEXT VSN
  7842. NJP SFV5 IF NEXT VSN
  7843. SFV2 PAUSE ALLOW MOVE / CHECK FOR ERROR
  7844. LDD CM+1
  7845. LMN ORET
  7846. ZJN SFV2.1 IF OVERRIDE ERROR
  7847. LDN 0 GET FIRST AND LAST ADDRESS OF *UDT-S*
  7848. STD CM+1
  7849. LDC MTSI SET *MAGNET* SUBSYSTEM ID
  7850. STD CM+2
  7851. LDC /MTX/UBUF SET BUFFER ADDRESS
  7852. STD CM+4
  7853. SHN -14
  7854. ADC 100 SET WORD COUNT
  7855. STD CM+3
  7856. MONITOR TDAM
  7857. LDD CM+1
  7858. ZJN SFV3 IF COMPLETE
  7859. SCN 3
  7860. ZJN SFV2 IF MAGNET BUSY, RETRY
  7861. SFV2.1 ERROR MNA *MAGNET NOT ACTIVE*
  7862.  
  7863. SFV3 LDD MA SET *FWA* OF UDT
  7864. CRD CN
  7865. LDD CN+4
  7866. SBN /MTX/UNITL
  7867. STM UDTA
  7868. LDD CN+2 SET LWA+1 OF UDT
  7869. STD T5
  7870. SFV4 LDN /MTX/UNITL SEARCH UDT FOR JOB
  7871. RAM UDTA
  7872. SBD T5
  7873. PJP SFV9 IF END OF *UDT-S*
  7874. UDTRD CN,/MTX/UVRI,1 READ EJT ORDINAL AND FLAGS
  7875. COMPARE CN,,VBJS,PB,2
  7876. NJN SFV4 IF NO MATCH
  7877. UDTRD CM,/MTX/UESN,1 READ *VSN* FROM *UDT*
  7878. COMPARE CM,,VBES,PB,4
  7879. NJP SFV4 IF NOT FOUND
  7880. LDD CN+4
  7881. LPN 21
  7882. LMN 1
  7883. ZJN SFV6 IF MOUNT REQUEST FOR VSN
  7884. SFV5 ERROR VBS *VSN BUSY*
  7885.  
  7886. SFV6 LDC PVES SET FIRST VSN
  7887. STD KA
  7888. MMOVE VBFV,PB,,KA,VSKL
  7889. SFV7 RJM VIS VSN INDEXED SEARCH
  7890. NJN SFV8 IF NOT FOUND
  7891. COMPARE VBES,PB,VBNV,BP,VSKL
  7892. ZJP SFV16 IF NEXT VSN POINTS TO THIS VSN
  7893. MMOVE VBNV,BP,,KA,VSKL
  7894. LDI KA
  7895. NJN SFV7 IF NO NEXT VSN
  7896. SFV8 ERROR EID ERROR IN INDEX DATA
  7897.  
  7898. SFV9 LDN RDFO SET DEMAND FILE FNT ORDINAL
  7899. STD T1
  7900. STM DFFO
  7901. LDN /PFM/PTUP SET MODE
  7902. STD T2
  7903. LDN /COMSCPS/AFAS ATTACH DEMAND FILE
  7904. RJM ARF
  7905. LDD FN COMPARE FILE NAMES
  7906. LMC 2RRS
  7907. LMD FN+1
  7908. LMC 2RXD
  7909. LMD FN+2
  7910. LMM MFID
  7911. ZJN SFV10 IF *RSXDID* FILE
  7912. ERROR ILR *TFM INCORRECT REQUEST*
  7913.  
  7914. SFV10 STM UDTA CLEAR UDT ADDRESS
  7915. LDD FS SET EQUIPMENT
  7916. LPC 777
  7917. STD DE
  7918. STD T5
  7919. LDD FS+1 SET FIRST TRACK
  7920. STD T6
  7921. LDN FSMS SET FIRST SECTOR
  7922. STD T7
  7923. SETMS IO
  7924. SFV11 RJM RND READ FIRST SECTOR OF DEMAND FILE ENTRY
  7925. LDM BUF0+2+.RJID+4 SAVE JOB EJT ORDINAL
  7926. STM SFVB
  7927. LDD T6 SAVE TRACK FOR SECOND SECTOR OF ENTRY
  7928. STD DT
  7929. LDD T7 SAVE SECTOR FOR SECOND SECTOR OF ENTRY
  7930. STD DS
  7931. RJM RND READ SECOND SECTOR OF DEMAND FILE ENTRY
  7932. LDM VBJS,PB CHECK JOB EJT ORDINAL
  7933. LMM SFVB
  7934. NJN SFV11 IF NOT THIS ENTRY
  7935. LDM BUF0+2+.RREQ
  7936. ADM BUF0+2+.RREQ+1
  7937. ADM BUF0+2+.RREQ+2
  7938. ADM BUF0+2+.RREQ+3
  7939. ADM BUF0+2+.RREQ+4
  7940. NJN SFV11 IF NO REQUEST
  7941. COMPARE VBES,PB,BUF0+2+.RQPV+5*/RSX/PVSN,,VSKL CHECK VSN
  7942. NJN SFV15.1 IF NOT THIS ENTRY
  7943. LDN SFVAL GET LENGTH OF LIST
  7944. STD T1
  7945. SFV15 LDM SFVA,T1 CHECK FOR MATCHING RESOURCE
  7946. LMM BUF0+2+.RQPV+5*/RSX/PRES+3
  7947. ZJP SFV17 IF FOUND
  7948. SOD T1
  7949. PJN SFV15 IF NOT END OF LIST
  7950. SFV15.1 LJM SFV11 READ NEXT SECTOR
  7951.  
  7952.  
  7953. SFVA BSS 0 RESOURCE TABLE
  7954. VFD 12/0RMT 7 TRACK TAPE
  7955. VFD 12/0RNT 9 TRACK TAPE
  7956. VFD 12/0RPE 1600 BPI 9 TRACK TAPE
  7957. VFD 12/0RHD 800 BPI 9 TRACK TAPE
  7958. VFD 12/0RGE 6250 BPI 9 TRACK TAPE
  7959. VFD 12/0RCT CTS CARTRIDGE TAPE
  7960. VFD 12/0RAT ACS CARTRIDGE TAPE
  7961. SFVAL EQU *-SFVA-1 LENGTH OF RESOURCE TABLE
  7962.  
  7963. SFVB BSS 1 EJT ORDINAL FROM DEMAND FILE ENTRY
  7964. RND SPACE 4,15
  7965. ** RND - READ NEXT DEMAND FILE SECTOR.
  7966. *
  7967. * ENTRY (T5 - T7) = EST ORDINAL, TRACK AND SECTOR.
  7968. *
  7969. * EXIT SPECIFIED SECTOR READ.
  7970. * (T6 - T7) ADVANCED TO NEXT SECTOR.
  7971. *
  7972. * ERROR TO *ERR* IF MASS STORAGE ERROR, OR IF EOI ENCOUNTERED.
  7973. *
  7974. * USES T3, T6, T7.
  7975. *
  7976. * CALLS RDS.
  7977. *
  7978. * MACROS ENDMS, ERROR.
  7979.  
  7980.  
  7981. RND SUBR ENTRY/EXIT
  7982. LDC BUF0
  7983. STD T3
  7984. RJM RDS READ SECTOR
  7985. PJN RND1 IF NOT READ ERROR
  7986. ERROR MSE *EQXX, DNYY, MASS STORAGE ERROR*
  7987.  
  7988. RND1 LDI T3 CHECK FIRST CONTROL BYTE
  7989. NJN RND2 IF NOT EOF
  7990. LDM 1,T3 CHECK NEXT CONTROL BYTE
  7991. NJN RND2 IF NOT EOI
  7992. ENDMS
  7993. ERROR VNF *VSN NOT FOUND*
  7994.  
  7995. RND2 STD T7 SET NEXT SECTOR
  7996. SHN 6
  7997. PJN RNDX IF NOT NEW TRACK
  7998. SHN -6
  7999. STD T6
  8000. LDN 0 CLEAR SECTOR
  8001. STD T7
  8002. UJN RNDX RETURN
  8003. SPACE 4,10
  8004. OVERFLOW OVL1,BUF1
  8005. OVERLAY (SEARCH GLOBAL SCRATCH POOL.),OVL1
  8006. SPACE 4,10
  8007. ** LOCAL DIRECT CELLS.
  8008.  
  8009.  
  8010. FP EQU S3 - S3+4 FNT SEARCH POINTERS (5 LOCATIONS)
  8011. GSPS SPACE 4,10
  8012. ** GSP - SEARCH GLOBAL SCRATCH POOL(S).
  8013. *
  8014. * CALLED TO LOCATE A SCRATCH TAPE IN ANOTHER FAMILY-S
  8015. * CATALOG. ONLY FAMILY-S DESIGNATED AS GLOBAL WILL BE
  8016. * SEARCHED. IF A SCRATCH TAPE IS FOUND, IT IS DELETED
  8017. * FROM THE FAMILY CATALOG AND RE-ENTERED INTO THE
  8018. * REQUESTING FAMILY CATALOG TO HONOR USER JOB SCRATCH
  8019. * REQUEST.
  8020. *
  8021. * ENTRY (FO) = FAMILY TAPE CATALOG FNT ORDINAL.
  8022. * (PFAM - PFAM+3) = FAMILY NAME.
  8023. * (SCRP) = ADDRESS IN TMST OF CORRECT SCRATCH POOL WORD.
  8024. *
  8025. * EXIT (FO) = RESET.
  8026. * (PFAM - PFAM+3) =RESET.
  8027. * TO CSA - COMPLETE SCRATCH ASSIGNMENT.
  8028. *
  8029. * USES FP - FP+4, PB, T1, T2, KA.
  8030. *
  8031. * CALLS ARF, CIE, CSA, DDE, DLB, LSV, PRP, ROC, RRP, SAC,
  8032. * VIS, WRP.
  8033. *
  8034. * MACROS ERROR, EXOVL, MMOVE, RESTP.
  8035.  
  8036.  
  8037. GSP ENTRY ENTRY/EXIT
  8038. LDN FNTP INITIALIZE FNT POINTERS
  8039. CRD FP
  8040. MMOVE PFAM,,GSPA,,PFKL
  8041. LDD FO
  8042. STD FP+3
  8043. STM GSPA+4
  8044. LDN 0 PRESET FNT ORDINAL
  8045. STD FP
  8046. UJP GSP2 ENTER SEARCH LOOP
  8047.  
  8048. GSP1 RJM ROC RESET ORIGINAL CATALOG
  8049. ERROR WSA *WAIT SCRATCH ASSIGNMENT.*
  8050.  
  8051. GSP2 LDD FO SET FNT ORDINAL
  8052. STD T1
  8053. LDN /PFM/PTWR SET MODE
  8054. STD T2
  8055. LDN RFAS RETURN CATALOG
  8056. RJM ARF
  8057. RJM SAC SEARCH FOR ALTERNATE CATALOG
  8058. ZJP GSP1 IF END OF SEARCH
  8059. RESTP CPSB SWAP TO SYSTEM BLOCK BUFFER
  8060. RJM RRP READ RANDOM PRU (TMST)
  8061. LDM SBST,BP
  8062. LPN GFTS/10000
  8063. ZJN GSP2 IF NOT GLOBAL FAMILY
  8064. LDM SBST+1,BP
  8065. LPN FETS+SATS+UITS
  8066. NJP GSP2 IF ERROR, SUSPEND OR UTILITY ACTIVE
  8067. RJM LSV LOCATE SCRATCH VOLUME
  8068. NJP GSP2 IF SCRATCH NOT FOUND OR ERROR
  8069. MMOVE ,BP,BUFA,,TSVL*10D
  8070. RJM DDE DELETE DATA ENTRY (SECONDARY INDEX)
  8071. LDM CWNE,BA
  8072. NJN GSP3 IF BLOCK NOT EMPTY
  8073. RJM DLB DELINK BLOCK (SECONDARY INDEX)
  8074. RESTP CPPI SWAP TO PRIMARY INDEX BUFFER
  8075. RJM DDE DELETE DATA ENTRY (PRIMARY INDEX)
  8076. LDM CWNE,BA
  8077. ZJN GSP3 IF BLOCK NOT EMPTY
  8078. RJM DLB DELINK BLOCK (PRIMARY INDEX)
  8079. UJN GSP4 UPDATE SCRATCH VOLUME/COUNT
  8080.  
  8081. GSP3 RJM WRP WRITE RANDOM PRU (PRIMARY VSN INDEX)
  8082. GSP4 RESTP CPSB SWAP TO SYSTEM BLOCK
  8083. LDM SCRP SET ADDRESS OF SCRATCH POOL WORD
  8084. ADD BP
  8085. STD T3
  8086. MMOVE BUFA+VBNV,,,T3,VSKL
  8087. LDA 3,T3 DECREMENT SCRATCH COUNT
  8088. SBN 1
  8089. STM 4,T3
  8090. SHN -14
  8091. STM 3,T3
  8092. RJM WRP WRITE RANDOM PRU
  8093. LDD FO SET FNT ORDINAL
  8094. STD T1
  8095. LDN /PFM/PTWR SET MODE
  8096. STD T2
  8097. LDN RFAS RETURN CATALOG
  8098. RJM ARF
  8099. RJM ROC RESET ORIGINAL CATALOG
  8100. LDC BUFA
  8101. STD PB
  8102. STD KA
  8103. MMOVE BUFA,,BUFC,,VSKL
  8104. RJM VIS VSN INDEXED SEARCH
  8105. ZJP GSP2 IF VSN FOUND
  8106. RJM CIE CREATE INDEX ENTRY (VSN)
  8107. LDC BUFC
  8108. STD KA
  8109. RJM VIS FIND NEWLY CREATED VSN INDEX
  8110. NJN GSP5 IF NOT FOUND
  8111. EXOVL CSA COMPLETE SCRATCH ASSIGNMENT (NO RETURN)
  8112.  
  8113. GSP5 ERROR EID *ERROR IN INDEX DATA.*
  8114.  
  8115. GSPA BSSZ 5 42/ FAMILY,6/ 0,12/ FNT ORDINAL
  8116. TITLE SUBROUTINES.
  8117. LSV SPACE 4,10
  8118. ** LSV - LOCATE SCRATCH VOLUME.
  8119. *
  8120. * ENTRY (PESN - PESN+3) = EXTERNAL VSN.
  8121. * (SCRP) = ADDRESS IN TMST OF CORRECT SCRATCH POOL WORD.
  8122. *
  8123. * EXIT (A) = 0 IF FOUND.
  8124. * (A) = ERROR CODE IF NOT FOUND.
  8125. *
  8126. * USES KA, T2.
  8127. *
  8128. * CALLS VIS.
  8129. *
  8130. * MACROS MMOVE.
  8131.  
  8132.  
  8133. LSV3 LDN 0 INDICATE SCRATCH FOUND
  8134.  
  8135. LSV SUBR ENTRY/EXIT
  8136. LDC PESN
  8137. STD KA
  8138. LDM SCRP GET ADDRESS OF SCRATCH POOL WORD
  8139. ADD BP
  8140. STD T3
  8141. LDI T3 CHECK SCRATCH POOL
  8142. LMC 7777
  8143. NJN LSV1 IF SCRATCH AVAILABLE
  8144. LDN /EMSG/WSA *WAIT SCRATCH ASSIGNMENT.*
  8145. UJN LSVX RETURN
  8146.  
  8147. LSV1 MMOVE ,T3,,KA,VSKL
  8148. RJM VIS VSN INDEXED SEARCH
  8149. NJN LSV2 IF NOT FOUND
  8150. LDM VBST,BP
  8151. LPN ASVS/10000
  8152. NJN LSV3 INDICATE SCRATCH FOUND
  8153. LSV2 LDN /EMSG/EID *ERROR IN INDEX DATA.*
  8154. UJN LSVX RETURN
  8155. PRP SPACE 4,10
  8156. ** PRP - PRESET RANDOM PROCESSORS.
  8157. *
  8158. * EXIT RANDOM PROCESSORS INITIALIZED
  8159. *
  8160. * USES T5 - T5+4.
  8161. *
  8162. * CALLS IRA.
  8163.  
  8164.  
  8165. PRP SUBR ENTRY/EXIT
  8166. LDD FO
  8167. RJM AFA GET ABSOLUTE FST ADDRESS
  8168. CRD T5
  8169. LDD T5 ISOLATE EQUIPMENT
  8170. LPC 777
  8171. STD T5
  8172. RJM IRA INITIALIZE RANDOM PROCESSORS
  8173. UJN PRPX RETURN
  8174. ROC SPACE 4,10
  8175. ** ROC - RESET ORIGINAL CATALOG.
  8176. *
  8177. * ENTRY (GSPA - GSPA+3) = ORIGINAL FAMILY NAME.
  8178. * (GSPA+4 = ORIGINAL CATALOG FNT ORDINAL.
  8179. *
  8180. * EXIT (PFAM - PFAM+3) = ORIGINAL FAMILY NAME.
  8181. * (FO) = ORIGINAL FAMILY ORDINAL.
  8182. * ORIGINAL CATALOG ATTACHED IN WRITE MODE AND RANDOM
  8183. * PROCESSORS PRESET.
  8184. *
  8185. * USES T1, T2.
  8186. *
  8187. * CALLS ARF, PRP, UTR.
  8188. *
  8189. * MACROS MMOVE.
  8190.  
  8191.  
  8192. ROC SUBR ENTRY/EXIT
  8193. MMOVE GSPA,,PFAM,,PFKL RESET FAMILY NAME
  8194. LDM GSPA+4 SET FNT ORDINAL
  8195. STD FO
  8196. STD T1
  8197. LDN /PFM/PTWR SET WRITE MODE
  8198. STD T2
  8199. LDN /COMSCPS/AFAS ATTACH CATALOG
  8200. RJM ARF
  8201. RJM UTR UPDATE TRT
  8202. RJM PRP PRESET RANDOM PROCESSORS
  8203. UJN ROCX RETURN
  8204. SAC SPACE 4,10
  8205. ** SAC - SEARCH FOR ALTERNATE CATALOG.
  8206. *
  8207. * ENTRY (FP) = LAST FNT ORDINAL CHECKED.
  8208. * (FP+2) = MAXIMUM NUMBER OF FNT ENTRIES.
  8209. * (FP+3) = FNT ORDINAL OF FAMILY ENTERED.
  8210. *
  8211. * EXIT (A) .NE. 0 IF CATALOG FOUND.
  8212. * (A) = 0 IF CATALOG NOT FOUND.
  8213. * (FN - FN+4) = FAMILY NAME.
  8214. * (FO) = FNT ORDINAL.
  8215. * (FP) = FNT ORDINAL.
  8216. *
  8217. * USES CM - CM+4, FN - FN+4, FO, FS - FS+4, T1, T2.
  8218. *
  8219. * CALLS AFA, ARF, UTR.
  8220. *
  8221. * MACROS COMPARE.
  8222.  
  8223.  
  8224. SAC SUBR ENTRY/EXIT
  8225. SAC1 AOD FP ADVANCE POINTER
  8226. RJM AFA GET ABSOLUTE FST ADDRESS
  8227. SBN FSTG-FNTG
  8228. CRD FN READ FNT ENTRY
  8229. LDD FP
  8230. LMD FP+2
  8231. ZJN SACX IF END OF FNT
  8232. LDD FN
  8233. ZJN SAC1 IF EMPTY ENTRY
  8234. LDD FN+4 CHECK FILE TYPE
  8235. SHN -6
  8236. LMN FAFT
  8237. NJN SAC1 IF NOT CORRECT FILE TYPE
  8238. COMPARE SACA,,FN,,PFKL
  8239. NJN SAC1 IF NOT CATALOG
  8240. LDD FP
  8241. RJM AFA GET ABSOLUTE FST ADDRESS
  8242. CRD FS READ FST OF FAST ATTACH FILE
  8243. LDD FP
  8244. LMD FP+3
  8245. ZJN SAC1 IF FAMILY ENTERED
  8246. SFA EST,FS
  8247. CRD FS READ EST ENTRY
  8248. LDD FS
  8249. SHN 21-13
  8250. PJP SAC1 IF NOT MASS STORAGE DEVICE
  8251. SHN 21-6-21+13
  8252. MJP SAC1 IF DEVICE UNAVAILABLE
  8253. LDD FS+3
  8254. SHN 21-13
  8255. MJP SAC1 IF ACCESS NOT ALLOWED
  8256. LDD FS+4
  8257. SHN 3
  8258. ADN PFGL
  8259. CRM PFAM,ON
  8260. ADN STLL-PFGL-1
  8261. CRD CM GET INITIALIZE REQUESTS
  8262. LDD CM CHECK INITIALIZE AND UNLOAD REQUESTS
  8263. LPC 1030
  8264. NJP SAC1 IF REQUESTS PENDING
  8265. LDD FP SET CATALOG FNT ORDINAL
  8266. STD FO
  8267. STD T1
  8268. LDN /PFM/PTWR SET MODE
  8269. STD T2
  8270. LDN /COMSCPS/AFAS ATTACH CATALOG
  8271. RJM ARF
  8272. RJM UTR UPDATE TRT
  8273. RJM PRP PRESET RANDOM PROCESSORS
  8274. LDN 1 SET CATALOG FOUND
  8275. LJM SACX RETURN
  8276.  
  8277. SACA VFD 48D/0L"TMFC" TMS CATALOG NAME
  8278. SPACE 4,10
  8279. ** LOCAL COMMON DECKS.
  8280.  
  8281.  
  8282. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY
  8283. CIE$ EQU 1 DEFINE CIE - CREATE INDEXED ENTRY
  8284. DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY
  8285. DLB$ EQU 1 DEFINE DLB - DELINK DATA BLOCK
  8286. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  8287. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY
  8288. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER
  8289. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  8290. UTR$ EQU 1 DEFUNE UTR - UPDATE TRT
  8291. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  8292. *CALL COMPIRA
  8293. *CALL COMPTFM
  8294. *CALL COMPWEI
  8295. SPACE 4,10
  8296. ** BUFFERS.
  8297.  
  8298.  
  8299. BUFA BSS TSVL*5
  8300. BUFB BSS TSVL*5
  8301. BUFC BSS 4
  8302. SPACE 4
  8303. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  8304. OVERLAY (ADMIT ALTERNATE USERS.),OVL1
  8305. ADMS SPACE 4,10
  8306. *** ADMS - ADMIT ALTERNATE USERS.
  8307. *
  8308. * THE ADMIT OVERLAY GRANTS PERMISSION FOR USERS OTHER
  8309. * THAN THE FILE CREATOR TO ACCESS A PRIVATE FILE.
  8310. * THE TWO CM WORD ADMIT ENTRIES SPECIFY THE ALTERNATE
  8311. * USERNAME AND THE MODE OF ACCESS ALLOWED FOR THAT USER.
  8312. *
  8313. * THERE IS NO LIMIT TO THE NUMBER OF ADMIT ENTRIES
  8314. * THAT CAN BE ASSOCIATED WITH A FILE AS ADDITIONAL
  8315. * DATA BLOCKS WILL BE APPENDED TO THE FILE AS NEEDED.
  8316. *
  8317. * ENTRY (IR - IR+3) = FET ADDRESS -
  8318. *
  8319. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  8320. *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0
  8321. *T, +2 60/ 0
  8322. *T, +3 60/ 0
  8323. *T, +4 12/ FNT,30/ 0,18/ 0
  8324. *T, +5 42/ 0,18/ EADD
  8325. *T, +6 60/ 0
  8326. *T, +7 36/ VSN,24/ 0
  8327. *T, +10 60/ 0
  8328. *T, +11 60/ 0
  8329. *T, +12 60/ FILE IDENTIFIER
  8330. *T, +13 42/ FID (CONT.),18/ 0
  8331. *T, +14 60/ 0
  8332. *T, +15 60/ 0
  8333. *T, +16 42/ ALT. USERNAME,18/ 0
  8334. *
  8335. * USES T7, KA, PB, RI - RI+1.
  8336. *
  8337. * CALLS AUS, FTC, IBC, IIE, MBP, TBA, WRP.
  8338. *
  8339. * MACROS CLEAR, ERROR, LDA, MMOVE, SAVEP, RESTP.
  8340.  
  8341.  
  8342. ADM ENTRY ADMIT ALTERNATE USERS
  8343. LDC BUFA BUILD ADMIT ENTRY
  8344. STD PB
  8345. LDN PDTL
  8346. CRM BUFA+5,ON
  8347. CLEAR ,PB,TAEL*10D-7
  8348. MMOVE PAUN,,,PB,UNKL
  8349. LDM PAUN
  8350. ZJP ADM3 IF NO ALTERNATE USERNAME
  8351. LDM PPWD+4
  8352. LPN 77
  8353. STM ABAM,PB
  8354. ZJP ADM3 IF INCORRECT ACCESS MODE
  8355. SBN FMMX
  8356. RJM FTC FIND TAPE CATALOG
  8357. ZJN ADM2 IF CATALOG FOUND
  8358. ADM1 ERROR
  8359.  
  8360. ADM2 LDM PESN
  8361. ZJN ADM5 IF SYMBOLIC FILE NAME
  8362. RESTP CPSI RESTORE VSN INDEX POINTERS
  8363. LDM VBRC,BP CHECK FOR FIRST REEL
  8364. SHN -6
  8365. ZJN ADM4 IF NO REEL COUNT, ASSUME FIRST
  8366. SBN 1
  8367. ZJN ADM4 IF FIRST OF SET
  8368. ADM3 LDN /EMSG/ILR *TFM INCORRECT REQUEST.*
  8369. UJN ADM1 SET ERROR CODE
  8370.  
  8371. ADM4 RESTP CPCB RESTORE BUFFER POINTERS (CATALOG)
  8372. ADM5 LDM CBCT,BP CHECK FILE CATEGORY
  8373. SHN -6
  8374. LMN FCPU
  8375. ZJN ADM3 IF PUBLIC FILE
  8376. LDC PAUN
  8377. STD KA
  8378. LDM CBAE,BP
  8379. LPN 77
  8380. STD RI
  8381. SHN 14
  8382. LMM CBAE+1,BP
  8383. STD RI+1
  8384. ZJP ADM8 IF ADMIT BLOCK NOT ASSIGNED
  8385. RJM AUS ALTERNATE USERNAME SEARCH
  8386. NJN ADM6 IF ALTERNATE USERNAME NOT FOUND
  8387. LDM ABAN,BP SAVE ACCESS COUNT
  8388. STM ABAN,PB
  8389. LDM ABAN+1,BP
  8390. SCN 77
  8391. RAM ABAN+1,PB
  8392. MMOVE ,PB,,BP,TAEL*10D
  8393. LDC WRP SET TO UPDATE
  8394. STM ADMA
  8395. UJN ADM7 REWRITE PRU
  8396.  
  8397. ADM6 LDC BUFB DEFINE OVERFLOW BUFFER
  8398. STD T7
  8399. ADM7 RJM IIE INSERT INDEX ENTRY
  8400. ADMA EQU *-1 (RJM TO *WRP* IF INDEX FOUND)
  8401. LJM ADMX RETURN
  8402.  
  8403. ADM8 RJM TBA TOGGLE BUFFER ASSIGNMENT
  8404. RJM IBC INITIALIZE BLOCK CHAIN
  8405. LDC RTAB*100
  8406. STM CWRT,BA
  8407. LDN TAEL
  8408. STM CWEL,BA
  8409. MMOVE PBUN,,CWUN,BA,UNKL
  8410. LDM CWFE,BA
  8411. RJM MBP MOVE BUFFER POINTER
  8412. SAVEP CPAB SAVE ADMIT BUFFER POINTERS
  8413. RESTP CPCB RESTORE CATALOG POINTERS
  8414. LDM CPAB+3 SET ADMIT BUFFER POINTER
  8415. STM CBAE,BP
  8416. LDM CPAB+4
  8417. STM CBAE+1,BP
  8418. RJM WRP WRITE RANDOM PRU
  8419. RESTP CPAB RESTORE ADMIT BUFFER POINTERS
  8420. LJM ADM6 CREATE ADMIT INDEX
  8421. TITLE SUBROUTINES.
  8422. SPACE 4
  8423. *** COMMON DECKS.
  8424.  
  8425.  
  8426. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH
  8427. IIE$ EQU 1 DEFINE IIE - INSERT INDEX ENTRY
  8428. FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  8429. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN
  8430. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  8431. VUB$ EQU 1 DEFINE VUB - VERIFY USER BLOCK
  8432. *CALL COMPTFM
  8433. *CALL COMPWEI
  8434. SPACE 4
  8435. *** BUFFERS.
  8436.  
  8437.  
  8438. BUFA BSS TAEL*5
  8439. BUFB BSS TAEL*5
  8440. SPACE 4
  8441. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  8442. OVERLAY (AUDIT TAPE FILE CATALOG.),OVL1
  8443. SPACE 4,10
  8444. ** LOCAL DIRECT CELL LOCATIONS.
  8445.  
  8446.  
  8447. CN EQU S1+0 - S1+4 SCRATCH WORD (5 LOCATIONS)
  8448. AF EQU S2+0 AUDIT FUNCTION CODE
  8449. RC EQU AF REEL COUNT (REDEFINES *AF*)
  8450. WC EQU S2+1 WORD COUNT
  8451. FT EQU S2+2 - S2+3 FET FIRST POINTER
  8452. IN EQU S2+4 - S3+0 FET IN POINTER
  8453. OT EQU S3+1 - S3+2 FET OUT POINTER
  8454. LM EQU S3+3 - S3+4 FET LIMIT POINTER
  8455. FA EQU S1+0 FNT ORDINAL
  8456. CA EQU EC CONTINUATION ADDRESS
  8457. AUDS SPACE 4,10
  8458. *** AUDS - AUDIT TAPE FILE CATALOG.
  8459. *
  8460. * THE AUDIT OVERLAY ENABLES THE FILE CREATOR TO OBTAIN
  8461. * INFORMATION ABOUT THE FILES THAT RESIDE IN THE
  8462. * TAPE FILE CATALOG. IN ADDITION, ALTERNATE USERS
  8463. * CAN OBTAIN AUDIT INFORMATION ABOUT SPECIFIC
  8464. * FILES THAT THEY ARE PERMITTED TO ACCESS IN THE
  8465. * FILE CREATORS CATALOG.
  8466. *
  8467. * THERE ARE FOUR MODES OF AUDIT ACCESS TO THE
  8468. * TAPE FILE CATALOG-
  8469. *
  8470. * 1. A FULL CATALOG SEARCH. THE CATALOG IMAGE
  8471. * AND ALL ASSOCIATED VSNS ARE RETURNED TO
  8472. * THE REQUESTER FOR ALL FILES IN HIS/HER
  8473. * CATALOG.
  8474. *
  8475. * 2. A SELECTIVE CATALOG SEARCH. THE CATALOG
  8476. * IMAGE AND ALL ASSOCIATED VSNS ARE RETURNED
  8477. * FOR A SPECIFIED FILE.
  8478. *
  8479. * 3. A FULL ADMIT SEARCH. THE ADMIT ENTRY IMAGE IS
  8480. * RETURNED FOR ALL ADMITS ASSIGNED TO A
  8481. * SPECIFIED FILE.
  8482. *
  8483. * 4. A SELECTIVE ADMIT SEARCH. ONLY THE ADMIT ENTRY
  8484. * IMAGE FOR THE FILE AND USER SPECIFIED WILL BE
  8485. * RETURNED TO THE REQUESTER.
  8486. *
  8487. * ENTRY (IR - IR+3) = FET ADDRESS -
  8488. *
  8489. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  8490. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  8491. *T, +2 42/ 0,18/ IN
  8492. *T, +3 42/ 0,18/ OUT
  8493. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  8494. *T, +5 42/ 0,18/ EADD
  8495. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  8496. *T, +7 36/ VSN,24/ 0
  8497. *T, +10 60/ 0
  8498. *T, +11 60/ 0
  8499. *T, +12 60/ FILE IDENTIFIER
  8500. *T, +13 42/ FID (CONT.),18/ 0.
  8501. *T, +14 60/ 0
  8502. *T, +15 60/ 0
  8503. *T, +16 42/ ALT. USERNAME,18/ 0
  8504. *T, +17 42/ PASSWORD,12/ 0,6/ MD
  8505. *
  8506. * EXIT TO MAIN LOOP IF NO ERROR.
  8507. *
  8508. * USES AF, BA, CA, CI, CN - CN+4, CM - CM+4,
  8509. * RI - RI+1, WC.
  8510. *
  8511. * CALLS GIB, PRS, VRR, VSP.
  8512. *
  8513. * MACROS ENTRY, ERROR, LDA, SAVEP.
  8514.  
  8515. AUD ENTRY AUDIT TAPE FILE CATALOG
  8516. RJM PRS PRESET
  8517. ADN TFRR
  8518. CRD CN
  8519. ADN TFPW-TFRR
  8520. CRD CM
  8521. LDD CM+4
  8522. ZJN AUD1 IF INCORRECT SEARCH TYPE
  8523. STD AF
  8524. SBN MXST
  8525. MJN AUD2 IF VALID SEARCH TYPE
  8526. AUD1 ERROR ILR *TFM INCORRECT REQUEST.*
  8527.  
  8528. AUD2 LDD CN CHECK AUDIT CONTINUATION
  8529. SHN 14
  8530. STD CI
  8531. SCN 77
  8532. LMD CN+1
  8533. NJN AUD3 IF AUDIT CONTINUATION
  8534. STD CA CLEAR CONTINUATION ADDRESS
  8535. LJM AUD7 BUILD PARAMETER BLOCK
  8536.  
  8537. AUD3 STD RI+1 SET RANDOM ADDRESS (CATALOG)
  8538. SHN -14
  8539. STD RI
  8540. LDC BUF2 SET CATALOG BUFFER ADDRESS
  8541. STD BA
  8542. RJM VRR VERIFY RANDOM REQUEST
  8543. RJM VSP VERIFY/SET CATALOG POINTERS
  8544. PJN AUD5 IF VALID CONTINUATION POINTERS
  8545. AUD4 ERROR BAE *BUFFER ARGUMENT ERROR.*
  8546.  
  8547. AUD5 SAVEP FCSA SAVE CATALOG POINTERS
  8548. LDD AF CHECK SEARCH TYPE
  8549. LMN FAST
  8550. NJN AUD6 IF NOT CATALOG CONTINUATION
  8551. LDC 60D/TAEL+1+SBNI
  8552. STM VSPA
  8553. LDC LDNI+TAEL
  8554. STM VSPB
  8555. AUD6 LDD CN+3 CHECK RANDOM REQUEST
  8556. SHN 14
  8557. STD CI
  8558. SCN 77
  8559. LMD CN+4
  8560. STD RI+1
  8561. SHN -14
  8562. STD RI
  8563. RJM VRR VERIFY RANDOM REQUEST
  8564. RJM GIB GET INITIAL BLOCK
  8565. RJM VSP VERIFY/SET CATALOG POINTERS
  8566. STD CA SET CONTINUATION ADDRESS
  8567. MJP AUD4 IF CONTINUATION POINTERS INCORRECT
  8568. AUD7 LDM AUDB,AF SET PROCESSOR ADDRESS
  8569. STM AUDA
  8570. RJM ** PROCESS FUNCTION
  8571. AUDA EQU *-1 (PROCESSOR ADDRESS)
  8572. LJM AUDX RETURN
  8573.  
  8574.  
  8575. AUDB INDEX TABLE OF AUDIT PROCESSORS
  8576. INDEX FCST,FCS FULL CATALOG SEARCH
  8577. INDEX SCST,SCS SELECTIVE CATALOG SEARCH
  8578. INDEX FAST,FAS FULL ADMIT SEARCH
  8579. INDEX SAST,SAS SELECTIVE ADMIT SEARCH
  8580. INDEX MXST
  8581. GVSS SPACE 4,10
  8582. *** GVSS - GET VOLUME SERIAL NUMBERS.
  8583. *
  8584. * *GVS* RETURNS A SNAPSHOT CATALOG IMAGE FOR
  8585. * A ASSIGNED FILE.
  8586. *
  8587. * ENTRY (IR - IR+3) = FET ADDRESS -
  8588. *
  8589. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  8590. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  8591. *T, +2 42/ 0,18/ IN
  8592. *T, +3 42/ 0,18/ OUT
  8593. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  8594. *T, +5 42/ 0,18/ EADD
  8595. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  8596. *T, +7 36/ VSN,24/ 0
  8597. *T, +10 60/ 0
  8598. *T, +11 60/ 0
  8599. *T, +12 60/ FILE IDENTIFIER
  8600. *T, +13 42/ FID (CONT.),18/0.
  8601. *T, +14 60/ 0
  8602. *T, +15 60/ 0
  8603. *T, +16 42/ ALT. USERNAME,18/ 0
  8604. *T, +17 42/ PASSWORD,12/ 0,6/ MD
  8605. *
  8606. * EXIT TO MAIN LOOP IF NO ERROR.
  8607. *
  8608. * USES BA, CI, CM - CM+4, FN - FN+4,
  8609. * RI - RI+1, T1 - T1+4, WC.
  8610. *
  8611. * CALLS GIB, PRS, PTC, RRP, SAF, VSP.
  8612. *
  8613. * MACROS ENTRY, ERROR, LDA.
  8614.  
  8615.  
  8616. GVS ENTRY ENTRY/EXIT
  8617. RJM PRS PRESET
  8618. CRD FN
  8619. LDN 0 NO INITIAL SEARCH ADDRESS
  8620. RJM SAF SEARCH FOR ASSIGNED FILE
  8621. NJN GVS1 IF FILE FOUND
  8622. ERROR LNF *(LFN) NOT FOUND.*
  8623.  
  8624. GVS1 NFA FA,R
  8625. ADN FSTL
  8626. CRD FS GET FST/EST ENTRIES
  8627. SFA EST,FS
  8628. CRD CM
  8629. LDD CM+3 VALIDATE MT/NT EQUIPMENT
  8630. LMC 2RMT
  8631. ZJN GVS2 IF 7 TRACK TAPE
  8632. LMC 2RNT&2RMT
  8633. ZJN GVS2 IF 9 TRACK TAPE
  8634. LMC 2RCT&2RNT
  8635. ZJN GVS2 IF CTS CARTRIDGE TAPE
  8636. LMC 2RAT&2RCT
  8637. ZJN GVS2 IF ACS CARTRIDGE TAPE
  8638. ERROR NMT *(LFN) NOT ON MAGNETIC TAPE.*
  8639.  
  8640. GVS2 LDD FS+1 SET UDT ADDRESS
  8641. STM UDTA
  8642. LDD CP VALIDATE JOB ASSIGNMENT
  8643. ADN TFSW
  8644. CRD CN
  8645. UDTRD CM,/MTX/UVRI,1
  8646. LDD CM
  8647. LMD CN
  8648. ZJN GVS3 IF ASSIGNED
  8649. UJN GVS4 *TFM INCORRECT REQUEST.*
  8650.  
  8651. GVS3 UDTRD CM,/MTX/UTMS,1
  8652. LDD CM+4
  8653. SHN 21-13
  8654. PJN GVS4 IF NOT TMS CONTROLLED FILE
  8655. UDTRD CM,/MTX/UTCI,1
  8656. LDD CM+3 SET CATALOG ADDRESS
  8657. SHN 14
  8658. STD CI
  8659. SCN 77
  8660. LMD CM+4
  8661. NJN GVS5 IF CATALOG ADDRESS
  8662. GVS4 ERROR ILR *TFM INCORRECT REQUEST.*
  8663.  
  8664. GVS5 STD RI+1 SET RANDOM ADDRESS
  8665. SHN -14
  8666. STD RI
  8667. LDC BUF0
  8668. STD BA
  8669. RJM GIB GET INITIAL BLOCK (CATALOG)
  8670. RJM VSP VERIFY/SET CATALOG POINTERS
  8671. MJN GVS4 IF POINTERS INCORRECT
  8672. RJM PTC PROCESS TAPE CATALOG
  8673. LJM GVSX RETURN
  8674. TITLE SUBROUTINES.
  8675. CCA SPACE 4,15
  8676. ** CCA - CHECK CATALOG ADMISSION.
  8677. *
  8678. * FILE ACCESS PERMISSION IS CHECKED GRANTED IF-
  8679. *
  8680. * 1. THE FILE BELONGS TO THE CREATOR.
  8681. * 2. THE FILE IS LISTABLE BY AN ALTERNATE USER, AND THE FILE
  8682. * COULD BE ACCESSED BY THE ALTERNATE USER IF THE CORRECT
  8683. * PASSWORD WAS SPECIFIED.
  8684. *
  8685. * ON ALL ALTERNATE USER REQUESTS THE PASSWORD
  8686. * IS CLEARED.
  8687. *
  8688. * ENTRY (BA) = ADDRESS OF BUFFER CONTAINING CATALOG.
  8689. * (BP) = ADDRESS OF CATALOG ENTRY.
  8690. * (CI) = CATALOG INDEX.
  8691. *
  8692. * EXIT (A) = 0 IF USER ADMITTED TO FILE.
  8693. *
  8694. * USES RI - RI+1, T1 - T1+3
  8695. *
  8696. * CALLS AUS.
  8697. *
  8698. * MACROS CLEAR, RESTP.
  8699.  
  8700.  
  8701. CCA7 LDN 1 USER NOT ADMITTED TO FILE
  8702.  
  8703. CCA SUBR ENTRY/EXIT
  8704. LDM PAUN
  8705. ZJN CCAX IF NOT ALTERNATE USER SEARCH
  8706. LDM CBST,BP CHECK ALTERNATE CATALOG LIST ATTRIBUTE
  8707. SHN 21-13
  8708. PJN CCA7 IF ALTERNATE USER AUDIT NOT ALLOWED
  8709. LDM CBCT,BP
  8710. SHN -6
  8711. LMN FCPU
  8712. ZJP CCA3 IF PUBLIC FILE
  8713. LDM CBAE,BP SET ADMIT INDEX
  8714. LPN 77
  8715. STD RI
  8716. SHN 14
  8717. LMM CBAE+1,BP
  8718. STD RI+1
  8719. ZJN CCA1 IF NO PERMIT ENTRIES
  8720. LDC PAUN
  8721. STD KA
  8722. RJM AUS SEARCH FOR ADMIT ENTRY
  8723. ZJN CCA2 IF ENTRY FOUND
  8724. RESTP CPCB RESTORE CATALOG BUFFER POINTERS
  8725. CCA1 LDM CBCT,BP CHECK FOR SEMI-PRIVATE FILE
  8726. SHN -6
  8727. LMN FCSP
  8728. ZJN CCA3 IF SEMI-PRIVATE FILE
  8729. UJN CCA4 RETURN
  8730.  
  8731. CCA2 LDM ABAM,BP GET ADMIT PERMISSION MODE
  8732. LPN 77
  8733. STD T1
  8734. RESTP CPCB RESTORE CATALOG BUFFER POINTERS
  8735. LDD T1
  8736. * LMN FMIU
  8737. ERRNZ FMIU
  8738. ZJN CCA3 IF IMPLICIT ACCESS
  8739. LDM CBAM,BP INSERT ADMIT PERMISSION
  8740. SCN 77
  8741. ADD T1
  8742. STM CBAM,BP
  8743. CCA3 LDM CBAM,BP CHECK FOR *NO ACCESS*
  8744. LPN 77
  8745. LMN FMNA
  8746. NJN CCA5 IF ACCESS ALLOWED
  8747. CCA4 LDN 1
  8748. UJN CCA6 RETURN
  8749.  
  8750. CCA5 CLEAR CBPW,BP,PWKL CLEAR PASSWORD
  8751. CCA6 LJM CCAX RETURN
  8752. FAS SPACE 4,10
  8753. ** FAS - FULL ADMIT SEARCH.
  8754. *
  8755. * RETURNS A BUFFER OF ADMIT ENTRIES.
  8756. *
  8757. * ENTRY (MD) = FAST.
  8758. * (FT - FT+1) = FIRST.
  8759. * (IN - IN+1) = IN.
  8760. * (OT - OT+1) = OUT.
  8761. * (LM - LM+1) = LIMIT.
  8762. *
  8763. * EXIT TO MAIN LOOP IF NO ERROR.
  8764. * FET+2 UPDATED.
  8765. * FET+TFRR UPDATED.
  8766. *
  8767. * USES CI, CM - CM+4, CN - CN+4, EC, RI - RI+1.
  8768. *
  8769. * CALLS CIB, EOI, ERR, FTC, GIB, GNB, GNL,
  8770. * MBP, SCA, TBA, WDB.
  8771. *
  8772. * MACROS ERROR, LDA.
  8773.  
  8774.  
  8775. FAS SUBR ENTRY/EXIT
  8776. LDD CA
  8777. ZJN FAS1 IF NOT AUDIT CONTINUATION
  8778. RJM VUB VERIFY USERS ADMIT BLOCK
  8779. ZJP FAS7 IF CORRECT USER
  8780. LDN /EMSG/EID ERROR IN INDEX DATA
  8781. UJN FAS2 ABORT WITH ERROR
  8782.  
  8783. FAS1 RJM FTC FIND TAPE CATALOG
  8784. ZJN FAS3 IF CATALOG FOUND
  8785. FAS2 ERROR CALL ERROR PROCESSING (NO RETURN)
  8786.  
  8787. FAS3 LDD CI SET CATALOG POSITION
  8788. SHN 6
  8789. LMD RI
  8790. STM SCAA
  8791. LDD RI+1
  8792. STM SCAA+1
  8793. LDM CBAE,BP SET FIRST ADMIT BLOCK ADDRESS
  8794. LPN 77
  8795. STD RI
  8796. SHN 14
  8797. LMM CBAE+1,BP
  8798. STD RI+1
  8799. NJN FAS4 IF ADMIT BLOCK ASSIGNED
  8800. ERROR NAE *NO ADMITS.*
  8801.  
  8802. FAS4 RJM TBA TOGGLE BUFFER ASSIGNMENT
  8803. RJM GIB GET INITIAL BLOCK
  8804. FAS5 LDN 0 SET FIRST ADMIT ENTRY
  8805. STD CI
  8806. LDM CWFE,BA
  8807. FAS6 RJM MBP MOVE BUFFER POINTER
  8808. MJN FAS8 IF MOVE OUTSIDE OF BUFFER
  8809. LDI BP
  8810. ZJN FAS8 IF END OF ADMIT BLOCK
  8811. AOD CI
  8812. FAS7 RJM CIB CHECK INPUT BUFFER
  8813. SBN TAEL
  8814. MJN FAS10 IF NO ROOM IN BUFFER
  8815. RJM WDB WRITE DATA TO BUFFER
  8816. LDM CWEL,BA
  8817. UJN FAS6 ADVANCE TO NEXT ADMIT ENTRY
  8818.  
  8819. FAS8 RJM GNL GET NEXT LINK
  8820. ZJN FAS9 IF BLOCK NOT LINKED
  8821. RJM GNB GET NEXT BLOCK
  8822. UJN FAS5 PROCESS ADMIT BLOCK
  8823.  
  8824. FAS9 RJM EOI SET END OF INFORMATION
  8825. LDN ZERL CLEAR CONTINUATION ADDRESS
  8826. CRD BA
  8827. CRM SCAA,ON
  8828. FAS10 RJM SCA SET CONTINUATION ADDRESS IN FET
  8829. LDN ZERL
  8830. CRD CM
  8831. LDD IN CURRENT POSITION OF IN
  8832. STD CM+3
  8833. LDD IN+1
  8834. STD CM+4
  8835. LDA IR+3,REL UPDATE FET
  8836. ADN 2
  8837. CWD CM
  8838. LJM FASX RETURN
  8839. FCS SPACE 4,10
  8840. ** FCS - FULL CATALOG SEARCH.
  8841. *
  8842. * RETURNS THE CATALOG IMAGE FOLLOWED BY THE
  8843. * IMAGE OF THE VSN INDICIES ASSIGNED TO THE
  8844. * FILE. THE BUFFER SIZE MUST BE AT LEAST AS
  8845. * LARGE AS ONE CATALOG PLUS 60D VSN(S).
  8846. *
  8847. * ENTRY (MD) = FCST.
  8848. * (FT - FT+1) = FIRST.
  8849. * (IN - IN+1) = IN.
  8850. * (OT - OT+1) = OUT.
  8851. * (LM - LM+1) = LIMIT.
  8852. * (CA) = 0 IF NOT CONTINUATION OF A
  8853. * PREVIOUS REQUEST.
  8854. *
  8855. * EXIT BUFFER FULL.
  8856. * FET UPDATED.
  8857. *
  8858. * USES CA, CI, CM - CM+4, RI - RI+1.
  8859. *
  8860. * CALLS EOI, GIB, GNL, MBP, PTC, UIS, RRP, VIS
  8861. * VUB, VSP.
  8862. *
  8863. * MACROS ERROR, RESTP, SAVEP.
  8864.  
  8865.  
  8866. FCS SUBR ENTRY/EXIT
  8867. LDD CA
  8868. ZJP FCS5 IF NOT AUDIT CONTINUATION
  8869. RJM VUB VERIFY USERS CATALOG BLOCK
  8870. ZJN FCS2 IF CORRECT USER
  8871. FCS1 ERROR EID *ERROR IN INDEX DATA.*
  8872.  
  8873. * IF THIS IS A CONTINUATION FROM THE MIDDLE OF A MULTI-FILE
  8874. * SET, FIND THE CATALOG POINTERS FOR THE FIRST CATALOG OF
  8875. * THE SET, SO THAT THE NEXT CATALOG RETURNED WHEN THE MULTI
  8876. * FILE SET IS COMPLETE IS THE ONE FOLLOWING THE FIRST CATALOG
  8877. * OF THE MULTI-FILE SET.
  8878.  
  8879. FCS2 LDA CBQN,BP
  8880. SBN 2
  8881. MJP FCS14 IF FIRST FILE OF SET
  8882. LIA CBVS,BP READ FIRST VSN OF FILE
  8883. STD KA
  8884. RJM VIS VSN INDEXED SEARCH
  8885. ZJN FCS3 IF VSN FOUND
  8886. ERROR ECD *ERROR IN CATALOG DATA.*
  8887.  
  8888. FCS3 COMPARE VBES,BP,VBFV,BP,VSKL
  8889. ZJN FCS4 IF FIRST VOLUME
  8890. LDN CN
  8891. STD KA
  8892. MMOVE VBFV,BP,,KA,VSKL
  8893. RJM VIS VSN INDEXED SEARCH
  8894. ZJN FCS4 IF VSN FOUND
  8895. ERROR EID *ERROR IN INDEX DATA.*
  8896.  
  8897. FCS4 LDM VBCI,BP SET INDEX OF FIRST CATALOG
  8898. SHN 14
  8899. STM FCSA+2 *FIRST CATALOG IN SET* CATALOG INDEX
  8900. SHN -14
  8901. STM FCSA+3 *FIRST CATALOG IN SET* RANDOM INDEX
  8902. LDM VBCI+1,BP
  8903. STM FCSA+4
  8904. LDM FCSA RESTORE CATALOG BUFFER POINTERS
  8905. STD BA
  8906. LDM FCSA+1
  8907. STD BP
  8908. LJM FCS16 PROCESS TAPE CATALOG
  8909.  
  8910.  
  8911. FCS5 LDC PBUN
  8912. STD KA
  8913. RJM UIS USERNAME INDEX SEARCH
  8914. NJN FCS7 IF USERNAME NOT FOUND
  8915. LDM 3,BP SET CATALOG INDEX
  8916. LPN 77
  8917. STD RI
  8918. SHN 14
  8919. LMM 4,BP
  8920. STD RI+1
  8921. NJN FCS6 IF CATALOG ADDRESS
  8922. UJN FCS7 *EMPTY CATALOG.*
  8923.  
  8924. FCS6 LDC BUF2 SET CATALOG BUFFER
  8925. STD BA
  8926. RJM GIB GET INITIAL BLOCK
  8927. LDM CWNE,BA
  8928. NJN FCS9 IF NOT EMPTY CATALOG
  8929. FCS7 ERROR ECF *EMPTY CATALOG.*
  8930.  
  8931. FCS8 RJM GIB GET INITIAL BLOCK
  8932. FCS9 RJM VUB VERIFY USERS CATALOG BLOCK
  8933. NJP FCS1 IF NOT CORRECT USER
  8934. LDM CWFE,BA BYPASS HEADER
  8935. RJM MBP MOVE BUFFER POINTER
  8936. LDN 0
  8937. STD CI
  8938. FCS10 AOD CI CHECK CATALOG
  8939. LDI BP
  8940. NJN FCS12 IF NOT HOLE
  8941. FCS11 LDN TCEL ADVANCE TO NEXT CATALOG
  8942. RJM MBP MOVE BUFFER POINTER
  8943. PJN FCS10 IF WITHIN CURRENT BUFFER
  8944. RJM GNL GET NEXT LINK
  8945. NJN FCS8 IF BLOCK LINKED
  8946. RJM EOI SET BUFFER STATUS
  8947. LDN ZERL CLEAR CONTINUATION WORD
  8948. CRD CM
  8949. LDA IR+3,REL
  8950. ADN TFRR
  8951. CWD CM
  8952. LJM FCSX RETURN
  8953.  
  8954. FCS12 LDA CBQN,BP CHECK FOR FIRST FILE OF SET
  8955. SBN 1
  8956. FCS13 NJN FCS11 IF NOT FIRST FILE
  8957. SAVEP FCSA SAVE CATALOG POINTERS
  8958. FCS14 LDD FC CHECK FOR *TFSP* CALL
  8959. LMN SSJF
  8960. ZJN FCS16 IF *TFSP* CALL
  8961. LDM CBRC,BP CHECK END OF LIST
  8962. ZJN FCS16 IF END OF LIST
  8963. LIA CBES,BP
  8964. STD KA
  8965. RJM VIS VSN INDEXED SEARCH
  8966. ZJN FCS15 IF VSN FOUND
  8967. ERROR ECD * ERROR IN CATALOG DATA *
  8968.  
  8969. FCS15 LDD BP
  8970. STD CM
  8971. RESTP FCSA RESTORE CATALOG POINTERS
  8972. LDM VBRD+1,CM CHECK RELEASE DATE
  8973. NJN FCS13 IF CONDITIONAL RELEASE
  8974. FCS16 RJM PTC PROCESS TAPE CATALOG
  8975. PJN FCS17 IF BUFFER NOT FULL
  8976. LJM FCSX RETURN (BUFFER FULL)
  8977.  
  8978. FCS17 LDM CBNC,BP CHECK FOR MULTI-FILE
  8979. NJN FCS19 IF MULTI-FILE
  8980. RESTP FCSA RESTORE CATALOG POINTERS
  8981. LDM CPRI
  8982. LMD RI
  8983. LMM CPRI+1
  8984. LMD RI+1
  8985. ZJN FCS18 IF BUFFER LOADED
  8986. RJM GIB GET INITIAL BLOCK (CATALOG)
  8987. RJM VUB VERIFY USERS CATALOG BLOCK
  8988. NJP FCS1 IF NOT CORRECT USER
  8989. RJM VSP VERIFY/SET CATALOG POINTERS
  8990. FCS18 LJM FCS11 ADVANCE TO NEXT CATALOG
  8991.  
  8992. FCS19 SHN 14 PROCESS MULTI-FILE
  8993. STD CI
  8994. SCN 77
  8995. LMM CBNC+1,BP
  8996. STD RI+1
  8997. SHN -14
  8998. STD RI
  8999. RJM GIB GET INITIAL BLOCK
  9000. RJM VSP VERIFY/SET CATALOG POINTER
  9001. LJM FCS16 PROCESS TAPE CATALOG
  9002.  
  9003. FCSA BSS 5 CATALOG POINTERS (FIRST OF SET)
  9004. SPACE 4
  9005.  
  9006. PTC SPACE 4,10
  9007. ** PTC - PROCESS TAPE CATALOG.
  9008. *
  9009. * ENTRY (BA) = BUFFER ADDRESS CONTAINING CATALOG.
  9010. * (BP) = BUFFER POINTER TO CATALOG.
  9011. *
  9012. * EXIT (A) = 0 IF COMPLETE.
  9013. * (A) = 1 IF USER NOT ADMITTED TO FILE.
  9014. * (A) = -0 IF BUFFER FULL ON WRITE.
  9015. * (BA) = BUFFER ADDRESS (CATALOG).
  9016. * (BA) = BUFFER POINTER (CATALOG).
  9017. * (CI) = CATALOG INDEX.
  9018. *
  9019. * USES CM - CM+4, KA, RC, SCAA - SCAA+1, T1, WC.
  9020. *
  9021. * CALLS CCA, CIB, VIS, WBB, WDB.
  9022. *
  9023. * MACROS ERROR, LDA, MMOVE, MULT4, RESTP, SAVEP.
  9024.  
  9025.  
  9026. PTC SUBR ENTRY/EXIT
  9027. LDD CI SET CATALOG INDEX FOR CONTINUATION
  9028. SHN 6
  9029. LMD RI
  9030. STM SCAA
  9031. LDD RI+1
  9032. STM SCAA+1
  9033. PTC1 LDM CBRC,BP
  9034. STD RC
  9035. MULT4 MULTIPLY BY 4
  9036. ADN TCEL+2
  9037. STD WC
  9038. RJM CIB CHECK INPUT BUFFER
  9039. SBD WC
  9040. PJN PTC3 IF ROOM IN BUFFER
  9041. RJM SCA SET CONTINUATION ADDRESS
  9042. LCN 0
  9043. PTC2 UJP PTCX RETURN
  9044.  
  9045. PTC3 SAVEP CPCB SAVE CATALOG POINTERS
  9046. LDD FC
  9047. LMN SSJF
  9048. ZJN PTC5 IF CALLED BY *TFSP*
  9049. RJM CCA CHECK CATALOG ADMISSION
  9050. ZJN PTC5 IF USER ADMITTED TO FILE
  9051. PTC4 RESTP CPCB RESTORE CATALOG POINTERS
  9052. UJP PTC2 RETURN
  9053.  
  9054. PTC5 RJM WDB WRITE DATA TO BUFFER
  9055. LDN CBES SET FIRST VSN OF SET
  9056. ADD BP
  9057. STD T1
  9058. PTC6 LDD RC CHECK END OF LIST
  9059. ZJN PTC8 IF END OF LIST
  9060. SOD RC
  9061. LDI T1
  9062. ZJN PTC8 IF END OF VSN LIST
  9063. MMOVE ,,PESN,,VSKL
  9064. LDC PESN LOCATE VSN
  9065. STD KA
  9066. RJM VIS VSN INDEX SEARCH
  9067. ZJN PTC7 IF VSN FOUND
  9068. ERROR ECD *ERROR IN CATALOG DATA.*
  9069.  
  9070. PTC7 RJM WDB WRITE DATA TO BUFFER
  9071. LDN 3*5 GET NEXT VSN
  9072. ADD BP
  9073. STD T1
  9074. UJP PTC6 PROCESS NEXT VSN
  9075.  
  9076. PTC8 LDM CPCB+2 TERMINATE CATALOG
  9077. SHN 6
  9078. LMM CPCB+3
  9079. STM PTCA+3
  9080. LDM CPCB+4
  9081. STM PTCA+4
  9082. LDN 1
  9083. STD T1
  9084. LDC PTCA
  9085. RJM WBB WRITE BINARY BUFFER
  9086. LDN ZERL
  9087. CRD CM
  9088. LDD IN CURRENT POSITION OF IN
  9089. STD CM+3
  9090. LDD IN+1
  9091. STD CM+4
  9092. LDA IR+3,REL UPDATE FET
  9093. ADN 2
  9094. CWD CM
  9095. LDN 0 SET CATALOG COMPLETE
  9096. LJM PTC4 RESTORE POINTERS AND RETURN
  9097.  
  9098. PTCA VFD 60D/77777777777777777777B
  9099. SCA SPACE 4,10
  9100. ** SCA - SET CONTINUATION ADDRESS.
  9101. *
  9102. * ENTRY (CI) = CATALOG INDEX.
  9103. * (RI - RI+1) = CATALOG RANDOM ADDRESS.
  9104. *
  9105. * EXIT FET WORD TFRR UPDATED.
  9106. *
  9107. * USES SCAA+3 - SCAA+4.
  9108. *
  9109. * MACROS LDA.
  9110.  
  9111.  
  9112. SCA SUBR ENTRY/EXIT
  9113. LDD CI SET CURRENT POSITION
  9114. SHN 6
  9115. LMD RI
  9116. STM SCAA+3
  9117. LDD RI+1
  9118. STM SCAA+4
  9119. LDA IR+3,REL UPDATE FET
  9120. ADN TFRR
  9121. CWM SCAA,ON
  9122. UJN SCAX RETURN
  9123.  
  9124. SCAA VFD 60/0 CONTINUATION POINTERS
  9125. SAS SPACE 4,10
  9126. ** SAS - SELECTIVE ADMIT SEARCH.
  9127. *
  9128. * ENTRY (MD) = SAST.
  9129. * (FT - FT+1) = FIRST.
  9130. * (IN - IN+1) = IN.
  9131. * (OT - OT+1) = OUT.
  9132. * (LM - LM+1) = LIMIT.
  9133. *
  9134. * EXIT ADMIT ENTRY WRITTEN TO BUFFER.
  9135. *
  9136. * USES CM - CM+4, EC, KA, RI - RI+1.
  9137. *
  9138. * CALLS AUS, EOI, ERR, WDB.
  9139. *
  9140. * MACROS ERROR, LDA, MMOVE.
  9141.  
  9142.  
  9143. SAS SUBR ENTRY/EXIT
  9144. LDM PAUN
  9145. ZJN SAS1 IF USER = ALTERNATE USER
  9146. LDD MA SWAP USERNAMES
  9147. CWM PBUN,ON
  9148. CWM PAUN,ON
  9149. LDD MA
  9150. CRM PAUN,ON
  9151. CRM PBUN,ON
  9152. SAS1 RJM FTC FIND TAPE CATALOG
  9153. ZJN SAS2 IF CATALOG FOUND
  9154. ERROR CALL ERROR PROCESSING (NO RETURN)
  9155.  
  9156. SAS2 LDM CBAE,BP SET FIRST ADMIT BLOCK ADDRESS
  9157. LPN 77
  9158. STD RI
  9159. SHN 14
  9160. LMM CBAE+1,BP
  9161. STD RI+1
  9162. NJN SAS4 IF ADMIT BLOCK ASSIGNED
  9163. SAS3 MMOVE PAUN,,PBUN,,UNKL
  9164. ERROR UNF *(USERNAME) NOT FOUND.*
  9165.  
  9166. SAS4 LDC PAUN SET SEARCH KEY
  9167. STD KA
  9168. RJM AUS ALTERNATE USERNAME SEARCH
  9169. NJN SAS3 IF ALTERNATE USER NOT FOUND
  9170. RJM WDB WRITE DATA TO BUFFER
  9171. RJM EOI SET END OF INFORMATION
  9172. LDN ZERL
  9173. CRD CM
  9174. LDD IN CURRENT POSITION OF IN
  9175. STD CM+3
  9176. LDD IN+1
  9177. STD CM+4
  9178. LDA IR+3,REL UPDATE FET
  9179. ADN 2
  9180. CWD CM
  9181. LJM SASX RETURN
  9182. SCS SPACE 4,10
  9183. ** SCS - SELECTIVE CATALOG SEARCH.
  9184. *
  9185. * ENTRY (MD) = SCST.
  9186. * (FT - FT+1) = FIRST.
  9187. * (IN - IN+1) = IN.
  9188. * (OT - OT+1) = OUT.
  9189. * (LM - LM+1) = LIMIT.
  9190. *
  9191. * USES BA, CI, CM - CM+4, KA, RI - RI+1.
  9192. *
  9193. * CALLS EOI, GIB, PTC, SCB, UIS, VIS, VUB.
  9194. *
  9195. * MACROS ERROR, LDA.
  9196.  
  9197.  
  9198. SCS SUBR ENTRY/EXIT
  9199. LDC PESN
  9200. STD KA
  9201. LDI KA
  9202. NJN SCS2 IF VSN SEARCH
  9203. LJM SCS9 SEARCH BY USERNAME/FILE NAME
  9204.  
  9205. SCS1 ERROR VNF *(VSN) NOT FOUND.*
  9206.  
  9207. SCS2 LDD CA CHECK AUDIT CONTINUATION
  9208. NJP SCS6 IF AUDIT CONTINUATION
  9209. SCS2.1 RJM VIS VSN INDEX SEARCH
  9210. NJN SCS1 IF VSN NOT FOUND
  9211. LDD FC
  9212. LMN SSJF
  9213. ZJN SCS4 IF *TFSP* CALL
  9214. LDM VBRD+1,BP
  9215. SCS3 NJN SCS1 IF CONDITIONALLY RELEASED
  9216. SCS4 LDM VBRC,BP CHECK REEL COUNT
  9217. SHN -6
  9218. SBN 1
  9219. ZJN SCS4.1 IF FIRST REEL
  9220. MMOVE VBFV,BP,SCSA,,6 SET FIRST VSN FOR SEARCH
  9221. LDC SCSA
  9222. STD KA
  9223. UJN SCS2.1 VSN INDEX SEARCH
  9224.  
  9225. SCS4.1 LDM VBCI,BP SET CATALOG ADDRESS
  9226. SHN 14
  9227. STD CI
  9228. SCN 77
  9229. LMM VBCI+1,BP
  9230. ZJP SCS1 IF NOT ASSIGNED
  9231. SCS5 STD RI+1 SET RANDOM ADDRESS
  9232. SHN -14
  9233. STD RI
  9234. LDC BUF2 SET CATALOG BUFFER
  9235. STD BA
  9236. RJM GIB GET INITIAL BLOCK
  9237. RJM VUB VERIFY USERS DATA BLOCK
  9238. NJP SCS3 IF NOT USERS DATA BLOCK
  9239. RJM VSP VERIFY/SET CATALOG POINTERS
  9240. SCS6 RJM PTC PROCESS TAPE CATALOG
  9241. MJN SCS8 IF BUFFER FULL
  9242. LDM CBNC,BP CHECK FOR MULTI-FILE
  9243. ZJN SCS7 IF NOT MULTI-FILE
  9244. SHN 14
  9245. STD CI
  9246. SCN 77
  9247. LMM CBNC+1,BP
  9248. NJN SCS5 IF NOT END OF SET
  9249. SCS7 RJM EOI SET END OF INFORMATION
  9250. LDN ZERL CLEAR CONTINUATION WORD
  9251. CRD CM
  9252. LDA IR+3,REL
  9253. ADN TFRR
  9254. CWD CM
  9255. SCS8 LJM SCSX RETURN
  9256.  
  9257. SCS9 LDC PBUN FILE IDENTIFIER SEARCH
  9258. STD KA
  9259. RJM UIS USERNAME INDEX SEARCH
  9260. ZJN SCS11 IF USERNAME FOUND
  9261. SCS10 ERROR FNF *(FILENAME) NOT FOUND.*
  9262.  
  9263. SCS11 LDC BUF2 SET CATALOG BUFFER
  9264. STD BA
  9265. LDM UBCI,BP SET CATALOG RANDOM INDEX
  9266. LPN 77
  9267. STD RI
  9268. SHN 14
  9269. LMM UBCI+1,BP
  9270. STD RI+1
  9271. ZJN SCS10 IF NO RANDOM ADDRESS
  9272. LDC POFI SET SEARCH KEY ADDRESS
  9273. STD KA
  9274. RJM SCB SEARCH CATALOG BUFFER
  9275. ZJN SCS10 IF FILE NOT FOUND
  9276. MJN SCS10 IF FILE NOT FOUND
  9277. RJM VUB VALIDATE USERS CATALOG BLOCK
  9278. ZJN SCS12 IF CORRECT USER
  9279. ERROR EID *ERROR IN INDEX DATA.*
  9280.  
  9281. SCS12 RJM PTC PROCESS TAPE CATALOG
  9282. LJM SCS7 SET END OF INFORMATION
  9283.  
  9284. SCSA BSSZ 5 FIRST VSN
  9285. WDB SPACE 4,10
  9286. ** WDB - WRITE DATA TO BUFFER.
  9287. *
  9288. * ENTRY (BA) = BUFFER ADDRESS.
  9289. * (BP) = BUFFER POINTER.
  9290. * (CWEL+(BA)) = ENTRY LENGTH.
  9291. * (IN - IN+1) = CURRENT BUFFER POSITION.
  9292. *
  9293. * EXIT (IN - IN+1) ADVANCED.
  9294. * DATA WRITTEN TO CIRCULAR BUFFER AND
  9295. * FET UPDATED.
  9296. *
  9297. * USES T1.
  9298. *
  9299. * CALLS WBB.
  9300.  
  9301.  
  9302. WDB SUBR ENTRY/EXIT
  9303. LDM CWEL,BA WRITE DATA TO BUFFER
  9304. STD T1
  9305. LDD BP
  9306. RJM WBB WRITE BINARY BUFFER
  9307. UJN WDBX RETURN
  9308.  
  9309. SPACE 4
  9310. *** COMMON DECKS.
  9311.  
  9312.  
  9313. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH
  9314. EOI$ EQU 1 DEFINE EOI - SET END OF INFORMATION
  9315. FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  9316. SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS
  9317. VRR$ EQU 1 DEFINE VRR - VERIFY RANDOM REQUEST
  9318. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  9319. VUB$ EQU 1 DEFINE VUB - VERIFY USERS CATALOG/ADMIT BLO
  9320. *CALL COMPCIB
  9321. *CALL COMPSAF
  9322. *CALL COMPTFM
  9323. *CALL COMPWBB
  9324. SPACE 4
  9325. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  9326. TITLE PRESET.
  9327. PRS SPACE 4,15
  9328. ** PRS - PRESET FOR *AUD* AND *GVS*.
  9329. *
  9330. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  9331. *
  9332. * EXIT (A) = ABSOLUTE FET ADDRESS.
  9333. * (WC) = WORD COUNT.
  9334. *
  9335. * USES WC.
  9336. *
  9337. * CALLS CIB, SBP.
  9338. *
  9339. * MACROS LDA, ERROR.
  9340.  
  9341.  
  9342. PRS1 LDA IR+3,REL LOAD ABSOLUTE FET ADDRESS
  9343.  
  9344. PRS SUBR ENTRY/EXIT
  9345. RJM SBP SET FET BUFFER POINTERS
  9346. RJM CIB CHECK INPUT BUFFER
  9347. STD WC
  9348. LDC TSVL*60D+TCEL+1
  9349. SBD WC
  9350. MJN PRS1 IF BUFFER SIZE VALID
  9351. ZJN PRS1 IF BUFFER SIZE VALID
  9352. ERROR BAE *BUFFER ARGUMENT ERROR.*
  9353. SPACE 4
  9354. ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW
  9355. OVERLAY (AMEND CATALOG ENTRY / RESERVE TAPE FILES.),OVL1
  9356. SPACE 4
  9357. ** LOCAL DIRECT CELL LOCATIONS.
  9358.  
  9359.  
  9360. JS EQU S2 - S2+4 JOB SEQUENCE WORD *UJID* (5 LOCATIONS)
  9361. FA EQU S3 FNT ORDINAL
  9362. AMDS SPACE 4,10
  9363. *** AMDS - AMEND TAPE CATALOG ENTRY.
  9364. *
  9365. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  9366. *
  9367. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  9368. *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0
  9369. *T, +2 60/ 0
  9370. *T, +3 60/ 0
  9371. *T, +4 12/ FNT,30/ 0,18/ 0
  9372. *T, +5 42/ 0,18/ EADD
  9373. *T, +6 60/ 0
  9374. *T, +7 36/ VSN,24/ 0
  9375. *T, +10 60/ 0
  9376. *T, +11 60/ 0
  9377. *T, +12 60/ OLD FILE IDENTIFIER
  9378. *T, +13 42/ FID (CONT.),18/0.
  9379. *T, +14 60/ NEW FILE IDENTIFIER
  9380. *T, +15 42/ NFI (CONT.),6/ 0,6/ CE,6/ AN
  9381. *T, +16 42/ ALT. USERNAME,18/ 0
  9382. *T, +17 42/ PASSWORD,6/ AC,6/ CT,6/ MD
  9383. *
  9384. * USES EC.
  9385. *
  9386. * CALLS CAC, CCT, CFM, CPN, ERR, FTC, IRM,
  9387. * NFI, PWD, UCW, VUB, WRP.
  9388. *
  9389. * MACROS MMOVE, RESTP.
  9390.  
  9391.  
  9392. AMD ENTRY AMEND TAPE CATALOG ENTRY
  9393. RJM FTC FIND TAPE CATALOG
  9394. ZJN AMD2 IF FILE FOUND
  9395. AMD1 ERROR
  9396.  
  9397. AMD2 LDM PESN
  9398. ZJN AMD4 IF SYMBOLIC FILE
  9399. RESTP CPSI CHECK FOR FIRST VSN
  9400. LDM VBRC,BP CHECK FOR FIRST REEL
  9401. SHN -6
  9402. ZJN AMD3 IF NO REEL COUNT, ASSUME FIRST
  9403. SBN 1
  9404. ZJN AMD3 IF FIRST OF SET
  9405. LDN /EMSG/ILR *TFM INCORRECT REQUEST.*
  9406. UJN AMD1 SET ERROR CODE
  9407.  
  9408. AMD3 RESTP CPCB RESTORE BUFFER POINTERS (CATALOG)
  9409. AMD4 RJM CPN CHANGE CHARGE AND PROJECT
  9410. RJM NFI CHANGE NEW FILENAME
  9411. RJM CAC CHANGE ALTERNATE CATALOG LIST ATTRIBUTE
  9412. RJM PWD CHANGE PASSWORD
  9413. RJM CCT CHANGE CATEGORY TYPE
  9414. RJM CFM CHANGE FILE MODE
  9415. RJM UCW CHANGE USER CONTROL WORD
  9416. RJM CEF CLEAR ERROR FLAG
  9417. RJM WRP WRITE RANDOM PRU
  9418. LDM CBST,BP
  9419. SHN 21-10
  9420. MJN AMD5 IF *TMS* RECOVERY MESSAGES ALREADY SET
  9421. MMOVE CBES,BP,PESN,,VSKL
  9422. RJM IRM ISSUE RECOVERY MESSAGES
  9423. AMD5 BSS 0
  9424. LJM AMDX RETURN
  9425. RSVS SPACE 4,10
  9426. *** RSVS - RESERVE TAPE FILES.
  9427. *
  9428. * THIS FUNCTION IS CALLED AS A RA+1 REQUEST
  9429. * FROM *TFILES* OR BY A USER MACRO CALL. IT
  9430. * SETS THE RESERVE FILES FLAG IN THE UDT
  9431. * ENTRY IN MAGNETS FL, AND CAN MODIFY
  9432. * SOME CATALOG PARAMETERS AS OPTIONS SPECIFY
  9433. * FROM THE FET.
  9434. *
  9435. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  9436. *
  9437. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  9438. *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0
  9439. *T, +2 60/ 0
  9440. *T, +3 60/ 0
  9441. *T, +4 12/ FNT,30/ 0,18/ 0
  9442. *T, +5 42/ 0,18/ EADD
  9443. *T, +6 60/ 0
  9444. *T, +7 36/ VSN,24/ 0
  9445. *T, +10 60/ 0
  9446. *T, +11 60/ 0
  9447. *T, +12 60/ FILE IDENTIFIER
  9448. *T, +13 42/ FID (CONT.),18/0.
  9449. *T, +14 60/ 0
  9450. *T, +15 42/ 0,6/ 0,6/ CE,6/AN
  9451. *T, +16 42/ ALT. USERNAME,18/ 0
  9452. *T, +17 42/ PASSWORD,6/ AC,6/ CT,6/ MD
  9453. *
  9454. *
  9455. * EXIT TAPE CATALOG UPDATED.
  9456. *
  9457. * USES BA, BP, CI, FN - FN+4, JS - JS+4,
  9458. * RB, RI - RI+1, RO, RP.
  9459. *
  9460. * CALLS CAC, CCT, CFM, PWD, RRP,
  9461. * UCW, VSP, VUB, WRP.
  9462. *
  9463. * MACROS ERROR, LDA.
  9464.  
  9465.  
  9466. RSV ENTRY RESERVE FUNCTION
  9467. LDA IR+3,REL SET FILE NAME
  9468. CRD FN
  9469. LDN 0 NO INITIAL SEARCH ADDRESS
  9470. RJM SAF SEARCH FOR ASSIGNED FILE
  9471. NJN RSV1 IF FILE FOUND
  9472. ERROR LNF *(LFN) NOT FOUND.*
  9473.  
  9474. RSV1 NFA FA,R
  9475. ADN FSTL
  9476. CRD FS GET FST/EST ENTRIES
  9477. SFA EST,FS
  9478. CRD CM
  9479. LDD CM+3 VALIDATE MT/NT EQUIPMENT
  9480. LMC 2RMT
  9481. ZJN RSV2 IF 7 TRACK TAPE
  9482. LMC 2RNT&2RMT
  9483. ZJN RSV2 IF 9 TRACK TAPE
  9484. LMC 2RCT&2RNT
  9485. ZJN RSV2 IF CTS CARTRIDGE TAPE
  9486. LMC 2RAT&2RCT
  9487. ZJN RSV2 IF ACS CARTRIDGE TAPE
  9488. ERROR NMT *(LFN) NOT ON MAGNETIC TAPE.*
  9489.  
  9490. RSV2 LDD FS+1 SET UDT ADDRESS
  9491. STM UDTA
  9492. LDD CP VALIDATE JOB ASSIGNMENT
  9493. ADN TFSW
  9494. CRD JS
  9495. UDTRD CM,/MTX/UVRI,1
  9496. LDD CM
  9497. LMD JS
  9498. NJP RSV3 IF NOT ASSIGNED
  9499. UDTRD CM,/MTX/UTMS,1
  9500. LDD CM+4
  9501. SHN 21-13
  9502. PJN RSV3 IF NOT TMS CONTROLLED FILE
  9503. LDD CM+4 SET RESERVE SCRATCH STATUS
  9504. LPC -RSRS
  9505. LMC RSRS
  9506. STD CM+4
  9507. UDTWT CM,/MTX/UTMS,1
  9508. UDTRD CM,/MTX/UTCI,1
  9509. LDD CM+3 SET CATALOG ADDRESS
  9510. SHN 14
  9511. STD CI
  9512. SCN 77
  9513. LMD CM+4
  9514. NJN RSV4 IF CATALOG ADDRESS
  9515. RSV3 ERROR ILR *TFM INCORRECT REQUEST.*
  9516.  
  9517. RSV4 STD RI+1 SET RANDOM ADDRESS
  9518. SHN -14
  9519. STD RI
  9520. LDC BUF0
  9521. STD BA
  9522. RJM GIB GET INITIAL BLOCK (CATALOG)
  9523. RJM VUB VERIFY USERS CATALOG BLOCK
  9524. NJN RSV3 IF NOT USERS BLOCK
  9525. RJM VSP VERIFY/SET CATALOG POINTERS
  9526. MJN RSV3 IF POINTERS INCORRECT
  9527. RJM CAC CHANGE ALTERNATE CATALOG LIST ATTRIBUTE
  9528. RJM PWD CHANGE PASSWORD
  9529. RJM CCT CHANGE CATEGORY TYPE
  9530. RJM CFM CHANGE FILE MODE
  9531. RJM UCW CHANGE USER CONTROL WORD
  9532. RJM WRP WRITE RANDOM PRU
  9533. LJM RSVX RETURN
  9534. TITLE SUBROUTINES.
  9535. CAC SPACE 4,10
  9536. ** CAC - CHANGE ALTERNATE CATALOG LIST ATTRIBUTE
  9537. *
  9538. * ENTRY (PBAC) = ALTERNATE LIST ATTRIBUTE.
  9539. *
  9540. * EXIT LIST ATTRIBUTE CHANGED.
  9541. * TO ERROR PROCESSING IF INCORRECT OPTION.
  9542. *
  9543. * USES T1.
  9544. *
  9545. * MACROS ERROR.
  9546.  
  9547.  
  9548. CAC1 LDM CBST,BP CHANGE CATALOG LIST ATTRIBUTE
  9549. SHN 0-13+22
  9550. SCN 1
  9551. LMD T1
  9552. LMN 1
  9553. SHN 13-0
  9554. STM CBST,BP
  9555.  
  9556. CAC SUBR ENTRY/EXIT
  9557. LDM PBAC
  9558. LPN 77
  9559. ZJN CACX IF ATTRIBUTE NOT SPECIFIED
  9560. SBN FAYS
  9561. STD T1
  9562. SBN FANO
  9563. MJN CAC1 IF VALID ATTRIBUTE
  9564. ERROR ILR *TFM INCORRECT REQUEST.*
  9565. CCT SPACE 4,10
  9566. ** CCT - CHANGE CATEGORY TYPE.
  9567. *
  9568. * ENTRY (PBCT) = FILE CATEGORY.
  9569. *
  9570. * EXIT FILE CATEGORY CHANGED AS REQUIRED.
  9571. * TO ERROR PROCESSING IF INCORRECT OPTION.
  9572. *
  9573. * USES T1.
  9574. *
  9575. * MACROS ERROR.
  9576.  
  9577.  
  9578. CCT1 LDM CBCT,BP CHANGE FILE CATEGORY
  9579. LPN 77
  9580. LMD T1
  9581. STM CBCT,BP
  9582.  
  9583. CCT SUBR ENTRY/EXIT
  9584. LDM PBCT
  9585. SCN 77
  9586. ZJN CCTX IF CATEGORY NOT SPECIFIED
  9587. STD T1
  9588. SHN -6
  9589. SBN FCMX
  9590. MJN CCT1 IF VALID CATEGORY TYPE
  9591. ERROR ILR *TFM INCORRECT REQUEST.*
  9592. CEF SPACE 4,10
  9593. ** CEF - CLEAR ERROR FLAG.
  9594. *
  9595. * ENTRY (PBCE) = CLEAR ERROR FLAG.
  9596. *
  9597. * EXIT IF (PBCE) IS NON-ZERO, THE ERROR FLAG
  9598. * IS CLEARED IN THE CATALOG STATUS WORD.
  9599.  
  9600. CEF SUBR ENTRY/EXIT
  9601. LDM PBCE
  9602. SHN -6
  9603. ZJN CEFX IF NOT CLEAR ERROR
  9604. LDM CBST,BP
  9605. SCN 2
  9606. STM CBST,BP
  9607. UJN CEFX RETURN
  9608. CFM SPACE 4,10
  9609. ** CFM - CHANGE FILE MODE.
  9610. *
  9611. * ENTRY (PBMD) = ALTERNATE ACCESS MODE.
  9612. *
  9613. * EXIT ACCESS MODE CHANGED AS REQUIRED.
  9614. * TO ERROR PROCESSING IF INCORRECT OPTION.
  9615. *
  9616. * USES T1.
  9617. *
  9618. * MACROS ERROR.
  9619.  
  9620.  
  9621. CFM1 LDM CBCT,BP CHANGE FILE MODE
  9622. SCN 77
  9623. LMD T1
  9624. STM CBCT,BP
  9625.  
  9626. CFM SUBR ENTRY/EXIT
  9627. LDM PBMD
  9628. LPN 77
  9629. ZJN CFMX IF MODE NOT SPECIFIED
  9630. STD T1
  9631. SBN FMMX
  9632. MJN CFM1 IF VALID FILE MODE
  9633. ERROR ILR *TFM INCORRECT REQUEST.*
  9634. CPN SPACE 4,10
  9635. ** CPN - CHANGE CHARGE AND PROJECT.
  9636. *
  9637. * ENTRY (PBAN) = ACCOUNT NUMBER CHANGE.
  9638. *
  9639. * EXIT CHARGE AND PROJECT NUMBERS CHANGED.
  9640. *
  9641. * MACROS MMOVE.
  9642.  
  9643.  
  9644. CPN SUBR ENTRY/EXIT
  9645. LDM PBAN
  9646. LPN 77
  9647. ZJN CPNX IF NOT ACCOUNT NUMBER CHANGE
  9648. LDN 2
  9649. STD T1
  9650. LIA CBCN,BP
  9651. STM CPNA
  9652. LIA CBPN,BP
  9653. STM CPNB
  9654. NFA CHGN
  9655. CRM **,ON
  9656. CPNA EQU *-1
  9657. NFA PJ1N
  9658. CRM **,T1
  9659. CPNB EQU *-1
  9660. UJN CPNX RETURN
  9661. NFI SPACE 4,10
  9662. ** NFI - CHANGE NEW FILE NAME.
  9663. *
  9664. * ENTRY (PNFI - PNFI+10B) = NEW FILE NAME.
  9665. *
  9666. * EXIT LOGICAL FILE NAME CHANGED.
  9667. *
  9668. * USES T1.
  9669. *
  9670. * MACROS MMOVE.
  9671.  
  9672.  
  9673. NFI SUBR ENTRY/EXIT
  9674. LDC PNFI
  9675. STD T1
  9676. LDI T1
  9677. ZJN NFIX IF NEW FILENAME NOT SPECIFIED
  9678. MMOVE ,,CBLI,BP,FIKL
  9679. UJN NFIX RETURN
  9680. PWD SPACE 4,10
  9681. ** PWD - CHANGE PASSWORD.
  9682. *
  9683. * ENTRY (PPWD - PPWD+3) = FILE PASSWORD.
  9684. *
  9685. * EXIT FILE PASSWORD CHANGED.
  9686. *
  9687. * USES T1.
  9688. *
  9689. * MACROS CLEAR, MMOVE.
  9690.  
  9691.  
  9692. PWD SUBR ENTRY/EXIT
  9693. LDC PPWD
  9694. STD T1
  9695. LDI T1
  9696. ZJN PWDX IF PASSWORD NOT SPECIFIED
  9697. LMC 7777
  9698. NJN PWD1 IF NOT CLEAR PASSWORD
  9699. CLEAR ,,PWKL
  9700. PWD1 MMOVE PPWD,,CBPW,BP,PWKL
  9701. UJN PWDX RETURN
  9702. UCW SPACE 4,10
  9703. ** UCW - CHANGE USER CONTROL WORD .
  9704. *
  9705. * ENTRY (PUCW - PUCW+4) = USER CONTROL WORD.
  9706. *
  9707. * EXIT USER CONTROL WORD UPDATED.
  9708. *
  9709. * USES T1.
  9710. *
  9711. * MACROS CLEAR, MMOVE.
  9712.  
  9713.  
  9714. UCW SUBR ENTRY/EXIT
  9715. LDC PUCW
  9716. STD T1
  9717. LDI T1
  9718. ZJN UCWX IF CONTROL WORD NOT SPECIFIED
  9719. LMC 7777
  9720. NJN UCW1 IF NOT CLEAR CONTROL WORD
  9721. CLEAR ,,UCKL
  9722. UCW1 MMOVE PUCW,,CBUC,BP,UCKL
  9723. UJN UCWX RETURN
  9724. SPACE 4
  9725. *** COMMON DECKS.
  9726.  
  9727.  
  9728. AMD$ EQU 1 DEFINE AMD - AMEND PROCESSING
  9729. FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  9730. IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES.
  9731. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTER
  9732. VUB$ EQU 1 DEFINE VUB - VALIDATE USERS BLOCK
  9733. *CALL COMPC2D
  9734. *CALL COMPSAF
  9735. *CALL COMPTFM
  9736. SPACE 4
  9737. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  9738. OVERLAY (*RESEX* ABORT PROCESSING / RELEASE TAPE FILE.),OVL1
  9739. SPACE 4,10
  9740. *** LOCAL DIRECT CELL LOCATIONS
  9741.  
  9742.  
  9743. CN EQU S2 - S2+4 SCRATCH
  9744. RAPS SPACE 4,10
  9745. ** RAPS - *RESEX* ABORT PROCESSING.
  9746. *
  9747. * IF *RESEX* ABORTS AFTER *TFM* HAS ASSIGNED A
  9748. * VSN, BUT BEFORE THE REQUEST IS SENT TO *MAGNET*
  9749. * TO ASSIGN A TAPE UNIT, THE TAPE CATALOG MUST
  9750. * BE CLEANED UP BY THIS SUBFUNCTION.
  9751. *
  9752. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  9753. *
  9754. *T FET+0 42/FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  9755. *T, +1 15/0,1/ EP,27/ 0,18/ 0
  9756. *T, +2 60/ 0
  9757. *T, +3 60/ 0
  9758. *T, +4 12/ FNT,30/ 0,18/ 0
  9759. *T, +5 42/ 0,18/ EADD
  9760. *T, +6 36/ 0,24/ RANDOM REQUEST
  9761. *
  9762. * EXIT 1. IF THE ABORTING REQUEST WAS FOR A
  9763. * EXISTING FILE, THE JOB ASSIGNMENT
  9764. * AND BUSY FLAGS ARE CLEARED.
  9765. * 2. IF THE ABORTING REQUEST WAS FOR A
  9766. * SCRATCH TAPE, THE CATALOG ENTRY
  9767. * IS PURGED.
  9768. *
  9769. * USES CM - CM+4, KA, RI - RI+1.
  9770. *
  9771. * CALLS CVA, GIB, PCE, PRS, RSP, VIS, VSP, WRP.
  9772. *
  9773. * MACROS ERROR, MMOVE, RESTP.
  9774.  
  9775.  
  9776. RAP ENTRY ENTRY/EXIT
  9777. RJM PRS PRESET
  9778. ZJN RAPX IF NO CATALOG ENTRY
  9779. RJM GIB GET INITIAL BLOCK
  9780. RJM VSP VERIFY/SET CATALOG POINTER
  9781. MJN RAPX IF INCORRECT POINTERS
  9782. SAVEP CPCB SAVE BUFFER POINTERS (CATALOG)
  9783. LDC PESN
  9784. STD KA
  9785. MMOVE CBES,BP,,KA,VSKL
  9786. LDI KA
  9787. ZJN RAP2 IF VOLUME NOT ASSIGNED
  9788. RJM VIS VSN INDEXED SEARCH
  9789. ZJN RAP1 IF VSN FOUND
  9790. ERROR ECD *ERROR IN CATALOG DATA.*
  9791.  
  9792. RAP1 RESTP CPCB RESTORE BUFFER POINTERS (CATALOG)
  9793. LDM CBST,BP
  9794. SHN 21-11
  9795. PJN RAP3 IF NOT INITIAL ASSIGNMENT
  9796. RJM RSP RELEASE VSN(S) TO SCRATCH POOL
  9797. RAP2 RJM PCE PURGE CATALOG ENTRY
  9798. LJM RAPX RETURN
  9799.  
  9800. RAP3 RESTP CPSI RESTORE BUFFER POINTERS (VSN INDEX)
  9801. LDM VBRC,BP CHECK REEL NUMBER
  9802. SHN -6
  9803. SBN 2
  9804. MJN RAP4 IF FIRST REEL
  9805. LDC PESN GET FIRST REEL
  9806. STD KA
  9807. MMOVE VBFV,BP,,KA,VSKL
  9808. RJM VIS VSN INDEX SEARCH
  9809. RAP4 BSS 0
  9810. RJM CVA CLEAR VOLUME ASSIGNMENT
  9811. RJM WRP WRITE RANDOM PRU (VSN INDEX)
  9812. LJM RAPX RETURN
  9813. RLSS SPACE 4,10
  9814. *** RLSS - RELEASE TAPE FILE.
  9815. *
  9816. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  9817. *
  9818. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  9819. *T, +1 15/ 0,1/ EP, 27/ 0,18/ 0
  9820. *T, +2 60/ 0
  9821. *T, +3 60/ 0
  9822. *T, +4 12/ FNT,30/ 0,18/ 0
  9823. *T, +5 42/ 0,18/ EADD
  9824. *T, +6 60/ 0
  9825. *T, +7 36/ VSN,24/ 0
  9826. *T, +10 60/ 0
  9827. *T, +11 60/ 0
  9828. *T, +12 60/ FILE IDENTIFIER
  9829. *T, +13 42/ FID (CONT.),18/0.
  9830. *
  9831. * USES EC.
  9832. *
  9833. * CALLS ERR, FTC, PCE, RSP, VIS.
  9834. *
  9835. * MACROS ERROR, LIA, MMOVE, RESTP.
  9836.  
  9837.  
  9838. RLS ENTRY RELEASE TAPE FILE
  9839. RJM ISP INITIALIZE SCRATCH PROCESSOR
  9840. RJM FTC FIND TAPE CATALOG
  9841. ZJN RLS1 IF CATALOG FOUND
  9842. RJM ERR CALL ERROR PROCESSING (NO RETURN)
  9843.  
  9844. RLS1 LDM PESN
  9845. ZJN RLS2 IF SYMBOLIC ACCESS
  9846. RESTP CPSI RESTORE VSN INDEX POINTERS
  9847. LJM RLS3 CHECK FOR FIRST REEL
  9848.  
  9849. RLS2 LIA CBES,BP SET FIRST VSN
  9850. STD KA
  9851. MMOVE ,KA,PESN,,VSKL
  9852. LDA CBQN,BP CHECK FOR FIRST FILE IN SET
  9853. SBN 2
  9854. PJP RLS5 IF NOT FIRST FILE IN SET
  9855. LDI KA
  9856. ZJP RLS17 IF NO VSN
  9857. RJM VIS VSN INDEXED SEARCH
  9858. ZJN RLS3 IF VSN FOUND
  9859. ERROR ECD *ERROR IN CATALOG DATA.*
  9860.  
  9861. RLS3 LDM VBJS,BP CHECK VOLUME BUSY
  9862. NJN RLS5 IF ASSIGNED TO A JOB
  9863. LDA VBST,BP
  9864. LPC UOVS+TVVS
  9865. ZJN RLS4 IF ON SITE AND NOT USER-OWNED TAPE
  9866. LDD FC CHECK FOR TFSP CALL
  9867. LMN SSJF
  9868. NJN RLS5 IF NOT *TFSP* CALL
  9869. RLS4 LDM VBRC,BP CHECK FOR FIRST REEL
  9870. SHN -6
  9871. SBN 2
  9872. MJN RLS6 IF FIRST REEL
  9873. STD S1 SAVE ADJUSTED REEL COUNT
  9874. LDM TFMC
  9875. LPN 77
  9876. LMN /PFM/PTLM
  9877. NJN RLS5 IF NOT LOCAL FILE MODE
  9878. LJM RLS19 CLEAR VSN POINTER AND RELEASE VSNS
  9879.  
  9880. RLS5 ERROR ILR *TFM INCORRECT REQUEST.*
  9881.  
  9882. RLS6 LDA PBQN,ABS CHECK FILE SEQUENCE NUMBER
  9883. SBN 2
  9884. MJP RLS11 IF FIRST CATALOG REQUESTED
  9885. STD S1+1 SAVE ADJUSTED SEQUENCE NUMBER
  9886. SHN -14
  9887. STD S1
  9888. LDM TFMC
  9889. LPN 77
  9890. LMN /PFM/PTLM
  9891. NJN RLS5 IF NOT LOCAL FILE MODE
  9892. RESTP CPCB
  9893.  
  9894. * *TFSP* CAN SPECIFY A FILE SEQUENCE NUMBER IN LOCAL FILE MODE
  9895. * SO THAT PURGED CATALOG ENTRIES CAN BE DELETED WHEN RECOVERING
  9896. * THE FILE CATALOG FROM THE ACCOUNT FILE. SKIP CATALOG ENTRIES
  9897. * FOR THIS VSN UNTIL THE ONE JUST BEFORE THE CATALOG ENTRY TO
  9898. * BE RELEASED. NO VSN-S ARE RELEASED WHEN PURGING CATALOG
  9899. * ENTRIES WHICH ARE NOT THE FIRST FOR A VSN.
  9900.  
  9901. RLS7 LDA S1,ABS CHECK SKIP COUNT
  9902. ZJN RLS10 IF LAST CATALOG ENTRY
  9903. SBN 1 DECREMENT SKIP COUNT
  9904. STD S1+1
  9905. SHN -14
  9906. STD S1
  9907. LDM CBNC,BP LOAD NEXT CATALOG INDEX
  9908. SHN 14
  9909. STD CI
  9910. SCN 77
  9911. LMM CBNC+1,BP
  9912. RLS8 ZJP RLS5 IF SEQUENCE NUMBER OUT OF RANGE
  9913. STD RI+1
  9914. SHN -14
  9915. STD RI
  9916. RJM RRP GET NEXT CATALOG ENTRY
  9917. RJM VSP VERIFY/SET CATALOG POINTERS
  9918. PJN RLS7 IF NO ERROR
  9919. RLS9 ERROR ECD ERROR IN CATALOG DATA
  9920.  
  9921. RLS10 LDM CBNC,BP STORE NEXT CATALOG POINTER
  9922. STD S1
  9923. LDM CBNC+1,BP
  9924. STD S1+1
  9925. ADD S1
  9926. ZJN RLS8 IF SEQUENCE NUMBER OUT OF RANGE
  9927. LDN 0 CLEAR NEXT CATALOG POINTER
  9928. STM CBNC,BP
  9929. STM CBNC+1,BP
  9930. RJM WRP WRITE RANDOM PRU
  9931. LDD S1
  9932. SHN 14
  9933. STD CI
  9934. SCN 77
  9935. LMD S1+1
  9936. STD RI+1
  9937. SHN -14
  9938. STD RI
  9939. RJM RRP GET CATALOG ENTRY TO BE RELEASED
  9940. RJM VSP VERIFY/SET CATALOG POINTERS
  9941. MJN RLS9 IF ERROR IN CATALOG
  9942. SAVEP CPCB SAVE CATALOG BUFFER POINTERS
  9943. LJM RLS17 PURGE CATALOG ENTRIES
  9944.  
  9945. RLS11 LDN 1 DEFAULT SEQUENCE NUMBER
  9946. RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  9947. LDM TFMC
  9948. LPN 77
  9949. LMN /PFM/PTLM
  9950. ZJP RLS16 IF LOCAL FILE MODE
  9951. LDD FC CHECK FOR *TFSP* CALL
  9952. LMN SSJF
  9953. ZJN RLS12 IF *TFSP* CALL
  9954. LDN CRDP
  9955. RLS12 ZJP RLS15 IF ZERO CONDITIONAL RELEASE PERIOD
  9956. LDM VBRD,BP CLEAR RELEASE YEAR
  9957. SCN 77
  9958. STM VBRD,BP
  9959. LDN /COMSCPS/RIDS INCREMENT CURRENT DATE BY CRDP
  9960. STD CM+1
  9961. LDN CRDP
  9962. STD CM+4
  9963. MONITOR RDCM REQUEST DATA CONVERSION
  9964. LDD MA GET PACKED DATE
  9965. CRD CM
  9966. LDD CM+3
  9967. LPN 77
  9968. RAM VBRD,BP SET YEAR
  9969. LDD CM+4
  9970. STM VBRD+1,BP SET MONTH/DAY
  9971. LDC RDVS SET RELEASE DATE NEW FORMAT FLAG
  9972. RAM VBST+1,BP
  9973. RJM WRP WRITE RANDOM PRU
  9974. RESTP CPCB
  9975. RLS13 LDM CBST,BP CLEAR SYMBOLIC ACCESS FLAG
  9976. SCN 4
  9977. STM CBST,BP
  9978. RJM WRP WRITE RANDOM PRU
  9979. LDM CBNC,BP
  9980. ZJN RLS14 IF END OF MULTI-FILE SET
  9981. SHN 14 RESET RANDOM ADDRESS
  9982. STM CPCB+2
  9983. SHN -14
  9984. STM CPCB+3
  9985. LDM CBNC+1,BP
  9986. STM CPCB+4
  9987. RESTP CPCB
  9988. RJM RRP READ RANDOM PRU
  9989. RJM VSP VERIFY/SET POINTERS
  9990. UJN RLS13 CLEAR SYMBOLIC ACCESS
  9991.  
  9992. RLS14 LDN DTEL READ CURRENT DATE
  9993. CRD CM
  9994. LDN 1 SET RELEASE
  9995. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  9996. UJN RLS18 RETURN
  9997.  
  9998. RLS15 LDN ZERL FLAG UNCONDITIONAL RELEASE
  9999. CRD CM
  10000. LDN 1 FLAG RELEASE
  10001. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  10002. RLS16 RJM RSP RELEASE VSNS TO SCRATCH POOL
  10003. RLS17 RJM PCE PURGE CATALOG ENTRIES
  10004. RLS18 LJM RLSX RETURN
  10005.  
  10006. * IN LOCAL FILE MODE, *TFSP* CAN RELEASE A VSN THAT IS NOT
  10007. * THE FIRST VSN OF A SET SO RECOVERY FROM THE ACCOUNT FILE
  10008. * CAN RELEASE EXCESS VSN-S. NOTE - IT DOES NOT CHECK TO
  10009. * SEE IF ANY CATALOG ENTRIES EXIST THAT POINT TO THIS OR
  10010. * FOLLOWING VSN ENTRIES. NO CATALOG ENTRIES ARE RELEASED
  10011. * WHEN RELEASING VSN-S WHICH ARE NOT THE FIRST VSN.
  10012.  
  10013. RLS19 LDC PVSN SET VSN SAVE
  10014. STD KA
  10015. MMOVE VBFV,BP,,KA,VSKL START AT FIRST VSN
  10016. RLS20 RJM VIS FIND NEXT VSN
  10017. NJN RLS21 IF NOT FOUND
  10018. MMOVE VBNV,BP,,KA,VSKL SET NEXT VSN
  10019. LDD S1
  10020. ZJN RLS22 IF AT LAST VSN
  10021. SOD S1
  10022. LDI KA CHECK LINKAGE
  10023. NJN RLS20 IF LINKAGE CORRECT
  10024. RLS21 ERROR EID *ERROR IN INDEX DATA*
  10025.  
  10026. RLS22 COMPARE ,KA,PESN,,VSKL VERIFY LINKAGE
  10027. NJN RLS21 IF ERROR IN LINKAGE
  10028. CLEAR VBNV,BP,VSKL
  10029. RJM WRP WRITE RANDOM PRU (VSN INDEX)
  10030. RJM VIS POSITION TO VSN TO RELEASE
  10031. RJM RSP RELEASE VSN(S) TO SCRATCH POOL
  10032. LJM RLSX RETURN
  10033. TITLE SUBROUTINES.
  10034. SPACE 4
  10035. *** COMMON DECKS.
  10036.  
  10037.  
  10038. DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY
  10039. DLB$ EQU 1 DEFINE DLB - DELINK DATA BLOCK
  10040. CVA$ EQU 1 DEFINE CVA - CLEAR VOLUME ASSIGNMENT
  10041. FTC$ EQU 1 DEFINE FTC - FIND TAPE CATALOG
  10042. IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE
  10043. PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES
  10044. RSP$ EQU 1 DEFINE RSP - RETURN VSN(S) TO SCRATCH POOL
  10045. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  10046. VUB$ EQU 1 DEFINE VUB - VERIFY USERS BLOCK
  10047. *CALL COMPC2D
  10048. *CALL COMPTFM
  10049. SPACE 4
  10050. *** BUFFER AREA.
  10051.  
  10052.  
  10053. SPACE 4
  10054. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  10055. TITLE PRESET.
  10056. PRS SPACE 4,15
  10057. ** PRS - PRESET FOR FUNCTION RAPS.
  10058. *
  10059. * EXIT (A) = 0 IF NO CATALOG ASSIGNED.
  10060. * (RI - RI+1) = CATALOG RANDOM INDEX.
  10061. * (CI) = CATALOG INDEX.
  10062. * (CN) = 0 IF CURRENT VSN = FIRST VSN
  10063. * (CN +3 - CN+4) = CATALOG ENTRY RANDOM INDEX POINTERS.
  10064. *
  10065. * CALLS ISP.
  10066. *
  10067. * USES CN - CN+4.
  10068.  
  10069.  
  10070. PRS SUBR ENTRY/EXIT
  10071. RJM ISP INITIALIZE SCRATCH PROCESSOR
  10072. LDC BUF2 PRESET CATALOG ADDRESS
  10073. STD BA
  10074. LDA IR+3,REL READ CATALOG ADDRESS
  10075. ADN TFRR
  10076. CRD CN
  10077. LDD CN+3
  10078. SHN 14
  10079. STD CI
  10080. SCN 77
  10081. LMD CN+4
  10082. STD RI+1 SET RANDOM INDEX
  10083. SHN -14
  10084. STD RI
  10085. ADD RI+1 (A) .EQ. 0 IF NO INDEX
  10086. UJN PRSX RETURN
  10087.  
  10088.  
  10089. ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW
  10090. OVERLAY (RETURN TAPE FILES.),OVL1
  10091. SPACE 4,10
  10092. *** LOCAL DIRECT CELL LOCATIONS
  10093.  
  10094.  
  10095. QN EQU S1+2 - S1+3 CURRENT FILE SEQUENCE NUMBER
  10096. IA EQU S1+4 INITIAL ASSIGNMENT FLAG
  10097. NC EQU S2 - S2+1 NEXT CATALOG POINTER
  10098. RC EQU S2+2 REEL COUNT
  10099. RTFS SPACE 4,20
  10100. *** RTFS - RETURN TAPE FILES.
  10101. *
  10102. * RTFS ISSUES ACCOUNT FILE MESSAGES FOR ANY SYMBOLIC TAPE
  10103. * FILES CREATED ON THIS TAPE SINCE IT WAS MOUNTED. FOR ANY
  10104. * NON-USER OWNED TAPE, RTFS WILL AUTOMATICALLY RESERVE ANY
  10105. * REEL EXTENSIONS AND AUTOMATICALLY RELEASE ANY RESERVED VSN-S
  10106. * WHICH ARE PAST THE LAST REEL WRITTEN ON.
  10107. *
  10108. * ENTRY NONE.
  10109. *
  10110. * EXIT TAPE RELEASED.
  10111. *
  10112. * USES IA, NC - NC+1, QN - QN+1, RI - RI+1
  10113. *
  10114. * CALLS CSN, IAM, IRM, PCE, PRS, RRP, RSP, RVU, SES,
  10115. * SFV, VSP, WRP.
  10116. *
  10117. * MACROS CLEAR, ERROR, MMOVE, RESTP, SAVEP, UDTRD, UDTWT.
  10118.  
  10119.  
  10120. RTF27 CLEAR PESN,,5*10D CLEAR TMS WORDS FROM UDT
  10121. UDTWT PESN,/MTX/UTCI,5
  10122. CLEAR UTMS,,10D CLEAR UTMS WORD
  10123.  
  10124. RTF ENTRY RETURN TAPE FILES
  10125. RJM PRS PRESET
  10126. ZJP RTF27 IF CATALOG ENTRY PRESENT
  10127. RJM RRP READ RANDOM PRU (CATALOG)
  10128. MMOVE CWUN,BA,PBUN,,UNKL
  10129. RJM VSP VERIFY/SET CATALOG POINTERS
  10130. MJP RTF27 IF CATALOG ENTRY NOT FOUND
  10131. SAVEP CPCB
  10132. LDM UTMS+3 CHECK BLANK LABEL FLAG
  10133. LPN WUBL
  10134. ZJN RTF0.1 IF BLANK LABEL WRITTEN
  10135. LDM UTMS+4 CHECK RESERVE FILE FLAG
  10136. LPC RSRS
  10137. ZJN RTF1 IF NOT RESERVING FILES
  10138. LDM CBST,BP CHECK IF INITIAL ASSIGNMENT
  10139. SHN 21-11
  10140. MJN RTF1 IF INITIAL ASSIGNMENT
  10141.  
  10142. * LAST VSN NOT BLANK LABELED.
  10143. * VSN MUST BE RELEASED.
  10144. LDM UTMS+2 CHECK REEL NUMBER
  10145. SBN 1
  10146. ZJN RTF1 IF FIRST VOLUME
  10147. STM UTMS+2 SET LAST REEL WRITTEN ON
  10148.  
  10149. RTF0.1 LDM UTMS+4 CHECK RESERVED FILE FLAG
  10150. LPC RSRS
  10151. NJN RTF2 IF RESERVING FILES
  10152. LDM CBST,BP CHECK FOR INITIAL ASSIGNMENT
  10153. SHN 21-11
  10154. PJN RTF2 IF NOT INITIAL ASSIGNMENT
  10155. RTF1 RJM RSP RELEASE VSNS TO SCRATCH POOL
  10156. RJM PCE PURGE CATALOG ENTRIES
  10157. LJM RTF27 COMPLETE REQUEST
  10158.  
  10159. * RESERVE TAPE CATALOG ENTRIES AND VSN-S.
  10160.  
  10161. RTF2 SAVEP RTFB SAVE CATALOG BUFFER POINTERS
  10162. LDN 0 CLEAR *IRM* FLAG
  10163. STM RTFC
  10164. AOD QN+1 CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  10165. SHN -14
  10166. RAD QN
  10167. SHN 14
  10168. ADD QN+1
  10169. RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  10170. LDM CBST,BP CHECK SCRATCH STATUS
  10171. SHN 0-11
  10172. LPN 1
  10173. LMN 1
  10174. STD IA SET INITIAL ASSIGNMENT FLAG
  10175. NJN RTF3 IF NOT INITIAL ASSIGNMENT
  10176. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  10177. LDM CBST,BP
  10178. SHN -10
  10179. LPN 1
  10180. STM RTFC
  10181. RESTP CPSI RESTORE SECONDARY INDEX POINTERS
  10182. RJM SES SET EOI VOLUME STATUS
  10183. RJM RVU RESERVE VSN TO USER
  10184. RESTP CPCB RESTORE CATALOG BUFFER POINTERS
  10185. RTF3 LDM CBST,BP CHECK IF PHYSICAL CHARACTERISTIC UPDATE
  10186. SHN 21-12
  10187. MJN RTF4 IF RECOVERED FILE
  10188. LDM UTMS+2
  10189. ZJN RTF7 IF NO WRITE
  10190. RTF4 LDM PFTD COPY TAPE DESCRIPTORS FROM UDT
  10191. LMM CBTD,BP
  10192. ZJN RTF5 IF NO CHANGES MADE TO TAPE DESCRIPTORS
  10193. AOM RTFC FLAG CHANGES MADE
  10194. RTF5 LDM PFTD+2
  10195. LMM CBTD+2,BP
  10196. ZJN RTF6 IF NO CHANGES MADE TO TAPE DESCRIPTORS
  10197. AOM RTFC FLAG CHANGES MADE
  10198. RTF6 LDM PFTD
  10199. STM CBTD,BP
  10200. LDM PFTD+2
  10201. STM CBTD+2,BP
  10202. RTF7 LDM CBST,BP CLEAR FILE BUSY
  10203. LPC -3001
  10204. STM CBST,BP
  10205. LDC **
  10206. RTFC EQU *-1
  10207. ZJN RTF8 IF *TMS* RECOVERY MESSAGES NOT NEEDED
  10208. RJM IRM ISSUE RECOVERY MESSAGES
  10209. RTF8 LDM CBNC,BP SAVE NEXT CATALOG POINTER
  10210. STD NC
  10211. LDM CBNC+1,BP
  10212. STD NC+1
  10213. LDM UTMS+2
  10214. ZJN RTF9 IF NO WRITE
  10215. LDM PBQN
  10216. LPN 77
  10217. LMD QN
  10218. NJN RTF9 IF NOT LAST CATALOG
  10219. LDM PBQN+1
  10220. LMD QN+1
  10221. NJN RTF9 IF NOT LAST CATALOG
  10222. STM CBNC,BP
  10223. STM CBNC+1,BP
  10224. RTF9 LDM CBNC,BP CHECK IF WRITE REQUIRED
  10225. LMD RI
  10226. LPN 77
  10227. NJN RTF10 IF WRITE REQUIRED
  10228. LDM CBNC+1,BP
  10229. LMD RI+1
  10230. NJN RTF10 IF WRITE REQUIRED
  10231. STM RTFA FLAG NO READ REQUIRED
  10232. UJN RTF11 LOAD POINTERS FOR NEXT CATALOG
  10233.  
  10234. RTF10 STM RTFA FLAG READ REQUIRED
  10235. RJM WRP WRITE RANDOM PRU
  10236. RTF11 LDD NC LOAD POINTERS TO NEXT CATALOG
  10237. SHN 14
  10238. STM CPCB+2
  10239. SHN -14
  10240. STM CPCB+3
  10241. LDD NC+1
  10242. STM CPCB+4
  10243. LDM CBNC,BP CHECK FOR END OF SET
  10244. ZJP RTF19 IF LAST FILE IN SET
  10245. RESTP CPCB
  10246. LDC 0 NO READ REQUIRED
  10247. * LDC (RI) READ REQUIRED
  10248. RTFA EQU *-1
  10249. ZJN RTF12 IF NO READ REQUIRED
  10250. RJM RRP READ CATALOG ENTRY
  10251. RTF12 RJM VSP VERIFY/SET CATALOG POINTER
  10252. PJN RTF14 IF NO ERROR
  10253. RTF13 ERROR ECD *ERROR IN CATALOG DATA.*
  10254.  
  10255. * RESERVE VOLUME TO USER.
  10256.  
  10257. RTF14 SAVEP CPCB SAVE CATALOG BUFFER POINTERS
  10258. LDM CBES,BP
  10259. ZJN RTF13 IF NO FIRST VOLUME
  10260. RTF15 COMPARE ,KA,CBES,BP,VSKL
  10261. ZJP RTF2 IF SAME VSN
  10262. RESTP CPSI RESTORE SECONDARY VSN INDEX POINTERS
  10263. MMOVE VBNV,BP,,KA,VSKL
  10264. LDD IA CHECK FOR INITIAL ASSIGNMENT
  10265. ZJN RTF16 IF INITIAL ASSIGNMENT
  10266. LDM VBST,BP
  10267. LPN RTVS/1S12
  10268. NJN RTF17 IF ALREADY RESERVED
  10269. RTF16 LDD QN ENSURE SEQUENCE NUMBER PRESENCE
  10270. SHN 14
  10271. ADD QN+1
  10272. RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY
  10273. LDN 0 ISSUE RESERVE MESSAGE
  10274. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  10275. RJM SES SET EOI VOLUME STATUS
  10276. RTF17 RJM RVU RESERVE/RELEASE VOLUME TO USER
  10277. LDI KA
  10278. ZJN RTF18 IF VSN NOT FOUND
  10279. RJM SFV SEARCH FOR VSN
  10280. NJN RTF18 IF VSN NOT FOUND
  10281. RESTP CPCB RESTORE CATALOG BUFFER POINTERS
  10282. LJM RTF15 RESERVE FURTHER VOLUMES
  10283.  
  10284. RTF18 ERROR EID ERROR IN INDEX DATA
  10285.  
  10286. * RESERVE VSNS AT LAST CATALOG ENTRY.
  10287.  
  10288. RTF19 RESTP CPSI
  10289. LDN 0 RESET REEL COUNT
  10290. STD RC
  10291. RTF20 AOD RC INCREMENT REEL COUNT
  10292. LDM VBST,BP
  10293. LPN RTVS/1S12
  10294. NJN RTF21 IF ALREADY RESERVED
  10295. LDD QN ENSURE SEQUENCE NUMBER PRESENCE
  10296. SHN 14
  10297. ADD QN+1
  10298. RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY
  10299. LDN 0 ISSUE RESERVE MESSAGE
  10300. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  10301. RTF21 RJM SES SET EOI STATUS
  10302. MMOVE VBNV,BP,,KA,VSKL
  10303. LDM VBST,BP
  10304. SHN 21-0
  10305. MJN RTF22 IF USER OWNED TAPE
  10306. SHN 21-2-21+0+22
  10307. PJN RTF22 IF NOT EOI VOLUME
  10308. CLEAR VBNV,BP,VSKL
  10309. RTF22 RJM RVU RESERVE/RELEASE VOLUME TO USER
  10310. LDM VBNV,BP
  10311. ZJN RTF23 IF END OF VSNS
  10312. RJM SFV SEARCH FOR VSN
  10313. ZJP RTF20 IF VSN FOUND
  10314. LJM RTF18 ERROR IN CATALOG DATA
  10315.  
  10316. * RELEASE EXCESS CATALOGS
  10317.  
  10318. RTF23 RJM WRP WRITE RANDOM PRU (VSN INDEX)
  10319. RESTP RTFB RESTORE CATALOG BUFFER POINTERS
  10320. RJM RRP READ RANDOM PRU
  10321. RJM VSP VERIFY/SET CATALOG POINTERS
  10322. MJP RTF13 IF INCORRECT POINTERS
  10323. LDD RC SET REEL COUNT IN CATALOG ENTRY
  10324. STM CBRC,BP
  10325. RJM WRP WRITE RANDOM PRU
  10326. LDD NC
  10327. ZJN RTF24 IF LAST CATALOG
  10328. SHN 14
  10329. STM CPCB+2
  10330. SHN -14
  10331. STM CPCB+3
  10332. LDD NC+1
  10333. STM CPCB+4
  10334. RESTP CPCB
  10335. RJM RRP READ RANDOM PRU
  10336. RJM VSP VERIFY/SET CATALOG POINTERS
  10337. MJP RTF13 IF ERROR IN CATALOG DATA
  10338. SAVEP CPCB SAVE CATALOG POINTERS
  10339. RJM PCE PURGE CATALOG ENTRIES
  10340. RTF24 LDI KA
  10341. ZJP RTF26 IF NO VSNS TO RELEASE
  10342. RESTP CPSI RESTORE SECONDARY POINTERS
  10343. RJM SFV SEARCH FOR VSN
  10344. NJP RTF18 IF NOT FOUND
  10345. MMOVE ,KA,PESN,,VSKL
  10346. LDM VBST,BP CHECK VSN RESERVATION STATUS
  10347. LPN RTVS/1S12
  10348. ZJN RTF25 IF VSN NOT RESERVED
  10349. LDN 1 CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  10350. RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  10351. LDN ZERL
  10352. CRD CM
  10353. LDN 1 ISSUE RELEASE MESSAGE
  10354. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  10355. RTF25 RJM RSP RELEASE VSNS TO SCRATCH POOL
  10356. RTF26 LJM RTF27 COMPLETE REQUEST
  10357.  
  10358. RTFB BSS 5 CATALOG BUFFER POINTERS
  10359. TITLE SUBROUTINES.
  10360. RVU SPACE 4,10
  10361. ** RVU - RESERVE VOLUME TO USER
  10362. *
  10363. * ENTRY (BP) = BUFFER POINTER.
  10364. *
  10365. * EXIT VSN BUSY STATUS CLEARED.
  10366. *
  10367. * CALLS CVA.
  10368.  
  10369.  
  10370. RVU SUBR ENTRY/EXIT
  10371. LDM VBJS,BP
  10372. ZJN RVUX IF ALREADY RESERVED AND RELEASED
  10373. LDM VBST,BP SET RESERVED STATUS
  10374. SCN RTVS/1S12+ASVS/1S12
  10375. LMN RTVS/1S12
  10376. STM VBST,BP
  10377. RJM CVA CLEAR VSN ASSIGNMENT
  10378. UJN RVUX RETURN
  10379. SES SPACE 4,10
  10380. ** SES - SET EOI STATUS.
  10381. *
  10382. * ENTRY (BP) = VSN BUFFER POINTER.
  10383. * (UTMS+2) = WRITE OCCURRED ON REEL.
  10384. *
  10385. * EXIT VSN EOI STATUS SET.
  10386.  
  10387.  
  10388. SES SUBR ENTRY/EXIT
  10389. LDM UTMS+2 CHECK FOR WRITE
  10390. ZJN SESX IF NO WRITE OCCURRED
  10391. LDM VBST,BP CLEAR EOI STATUS
  10392. SCN EOIV/1S12
  10393. STM VBST,BP
  10394. LDM VBRC,BP COMPARE THIS REEL WITH LAST REEL WRITTEN
  10395. SHN -6
  10396. SBM UTMS+2
  10397. NJN SESX IF NOT EOI VOLUME
  10398. LDN EOIV/1S12
  10399. RAM VBST,BP
  10400. UJN SESX RETURN
  10401. SFV SPACE 4,10
  10402. ** SFV - SEARCH FOR VSN
  10403. *
  10404. * ENTRY (BA) = BUFFER ADDRESS.
  10405. *
  10406. * EXIT (A) = 0 IF VSN FOUND.
  10407. *
  10408. * USES BP.
  10409. *
  10410. * CALLS SIB, VIS, WRP.
  10411. *
  10412. * MACROS SAVEP.
  10413.  
  10414.  
  10415. SFV1 SAVEP CPSI SAVE SECONDARY VSN INDEX POINTERS
  10416. LDN 0 EXIT *VSN FOUND*
  10417.  
  10418. SFV SUBR ENTRY/EXIT
  10419. LDD BA
  10420. ADN 2
  10421. STD BP
  10422. RJM SIB SEARCH INDEXED BUFFER (VSN)
  10423. ZJN SFV1 IF FOUND IN THIS BUFFER
  10424. RJM WRP WRITE RANDOM PRU (VSN INDEX)
  10425. RJM VIS VSN INDEXED SEARCH
  10426. ZJN SFV1 IF VSN FOUND
  10427. UJN SFVX RETURN
  10428. SPACE 4,10
  10429. *** COMMON DECKS.
  10430.  
  10431. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY
  10432. CVA$ EQU 1 DEFINE CVA - CLEAR VSN ASSIGNMENT
  10433. DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY
  10434. DLB$ EQU 1 DEFINE DLB - DELINK DATA BLOCK
  10435. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  10436. GNL$ EQU 1 DEFINE GNL - GET NEXT BLOCK
  10437. GPL$ EQU 1 DEFINE GPL - GET PREVIOUS BLOCK
  10438. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH WITH KEY
  10439. IAM$ EQU 1 DEFINE IAM - ISSUE ACCOUNT FILE MESSAGE
  10440. IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES.
  10441. PCE$ EQU 1 DEFINE PCE - PURGE CATALOG ENTRIES
  10442. PLI$ EQU 1 DEFINE PLI - POSITION TO LAST ENTRY
  10443. RSP$ EQU 1 DEFINE RSP - RELEASE VSNS TO SCRATCH POOL
  10444. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER
  10445. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  10446. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  10447. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTER
  10448. *CALL COMPC2D
  10449. *CALL COMPTFM
  10450. SPACE 4,10
  10451. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  10452. TITLE PRESET.
  10453. PRS SPACE 4,15
  10454. ** PRS - PRESET FOR FUNCTION RTFS.
  10455. *
  10456. * EXIT (A) = 0 IF NO CATALOG ENTRY.
  10457. * (PESN - PESN+3) = FIRST VSN.
  10458. * (PBQN - PBQN+1) = LAST FILE SEQUENCE NUMBER.
  10459. * (RI - RI+1) = FIRST CATALOG RANDOM INDEX.
  10460. * (CI) = CATALOG ENTRY INDEX.
  10461. *
  10462. * USES BA, CI, EC, KA, CM - CM+4, QN - QN+1, RI - RI+1.
  10463. *
  10464. * CALLS RRP, IAM, ISP, SIB, CSN, VIS, VSP.
  10465. *
  10466. * MACROS LDA, MMOVE, UDTRD.
  10467.  
  10468.  
  10469. PRS SUBR ENTRY/EXIT
  10470. RJM ISP INITIALIZE SCRATCH PROCESSOR
  10471. LDN 0 PRESET SEQUENCE NUMBER
  10472. STD QN
  10473. STD QN+1
  10474. LDC PESN READ FIRST VSN
  10475. STD KA
  10476. RJM VIS VSN INDEXED SEARCH
  10477. NJN PRS1 IF VSN NOT FOUND
  10478. LDM VBRC,BP
  10479. SHN -6
  10480. SBN 2
  10481. MJN PRS2 IF FIRST VSN
  10482. MMOVE VBFV,BP,,KA,VSKL
  10483. LDD BA
  10484. ADN 2
  10485. STD BP
  10486. RJM SIB SEARCH FOR VSN IN BUFFER
  10487. ZJN PRS2 IF FIRST VSN IN BUFFER
  10488. RJM VIS VSN INDEXED SEARCH
  10489. ZJN PRS2 IF VSN FOUND
  10490. PRS1 LDN 0 NO CATALOG FOUND
  10491. LJM PRSX RETURN
  10492.  
  10493. PRS2 SAVEP CPSI SAVE SECONDARY VSN INDEX POINTERS
  10494. RJM TBA TOGGLE BUFFER ALLOCATION
  10495. UDTRD CM,/MTX/UTCI,1 READ CATALOG ENTRY
  10496. LDD CM+3
  10497. SHN 14
  10498. STD CI
  10499. SHN -14
  10500. STD RI
  10501. LDD CM+4
  10502. STD RI+1
  10503. RJM RRP GET INITIAL BLOCK (CATALOG)
  10504. RJM VSP VERIFY/SET CATALOG POINTERS
  10505. MJP PRS1 IF ERROR IN CATALOG INDEX
  10506. SAVEP CPCB SAVE CATALOG BUFFER POINTERS
  10507. LDM PBQN SET SEQUENCE NUMBER
  10508. SCN 77
  10509. STM PBQN
  10510. LDM CBQN,BP
  10511. LPN 77
  10512. RAM PBQN
  10513. LDM CBQN+1,BP
  10514. STM PBQN+1
  10515. LDM UTMS+2
  10516. ZJN PRS3 IF TAPE NOT WRITTEN TO
  10517. LDM CBNC,BP
  10518. PRS3 ZJP PRS5 IF NO CATALOGS TO DELETE
  10519. SHN 14 POSITION TO NEXT CATALOG
  10520. STD CI
  10521. SHN -14
  10522. LMD RI
  10523. SHN 14
  10524. LMD RI+1
  10525. LMM CBNC+1,BP
  10526. ZJN PRS4 IF IN SAME PRU
  10527. LMD RI+1
  10528. STD RI+1
  10529. SHN -14
  10530. LMD RI
  10531. STD RI
  10532. RJM RRP READ RANDOM PRU
  10533. PRS4 RJM VSP VERIFY/SET CATALOG POINTER
  10534. LDM CBST,BP
  10535. SHN 21-11
  10536. MJN PRS5 IF INITIAL CATALOG
  10537. LDA CBQN,BP
  10538. RJM CSN CONVERT SEQUENCE NUMBER TO DISPLAY CODE
  10539. LDN ZERL
  10540. CRD CM
  10541. LDN 1
  10542. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  10543. PRS5 RESTP CPSI RESTORE SECONDARY VSN INDEX POINTERS
  10544. MMOVE ,KA,PVSN,,VSKL SET FIRST VSN
  10545. LDC PVSN
  10546. STD KA
  10547. LDC BUF2 SET CATALOG BUFFER ADDRESS
  10548. STD BA
  10549. LDM VBCI,BP LOAD CATALOG INDEX
  10550. SHN 14
  10551. STD CI
  10552. SCN 77
  10553. LMM VBCI+1,BP
  10554. STD RI+1
  10555. SHN -14
  10556. STD RI
  10557. ADD RI+1
  10558. LJM PRSX RETURN
  10559. SPACE 4,10
  10560. ERRNG BUF1-*
  10561. OVERLAY (DELETE/REPLACE/LIST VSN, INSERT USERNAME ENTRY.),OVL1
  10562. SPACE 4
  10563. ** LOCAL DIRECT CELL LOCATIONS.
  10564.  
  10565.  
  10566. IL EQU S2+1 INTERLOCK FLAG
  10567. FT EQU S2+2 - S2+3 FET FIRST POINTER
  10568. IN EQU S2+4 - S3+0 FET IN POINTER
  10569. OT EQU S3+1 - S3+2 FET OUT POINTER
  10570. LM EQU S3+3 - S3+4 FET LIMIT POINTER
  10571. DVES SPACE 4,10
  10572. *** DVES - DELETE VSN ENTRY(S).
  10573. *
  10574. * THIS FUNCTION IS CALLED ONLY BY A SSJ= JOB
  10575. * TO DELETE VSN ENTRIES FROM THE TAPE CATALOG.
  10576. * ONLY UNASSIGNED VSN(S) CAN BE DELETED.
  10577. *
  10578. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  10579. *
  10580. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  10581. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  10582. *T, +2 42/ 0,18/ IN
  10583. *T, +3 42/ 0,18/ OUT
  10584. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  10585. *T, +5 42/ 0,18/ EADD
  10586. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  10587. *
  10588. * ENTRY (CO) = CATALOG FST ADDRESS.
  10589. *
  10590. * USES KA, PB, T3.
  10591. *
  10592. * CALLS COB, DDE, DLB, RBB, SBP, UOP, VIS, WRP.
  10593. *
  10594. * MACROS ERROR.
  10595.  
  10596.  
  10597. DVE ENTRY ENTRY/EXIT
  10598. RJM SBP SET FET BUFFER POINTERS
  10599. DVE1 RJM COB CHECK OUTPUT BUFFER
  10600. PJN DVE2 IF NO ERROR
  10601. ERROR BAE *BUFFER ARGUMENT ERROR.*
  10602.  
  10603. DVE2 ZJN DVEX IF BUFFER EMPTY
  10604. LDN 1
  10605. STD T3
  10606. LDC PESN
  10607. STD PB
  10608. STD KA
  10609. RJM RBB READ BINARY BUFFER
  10610. RJM VIS VSN INDEX SEARCH
  10611. ZJN DVE3 IF VSN FOUND
  10612. ERROR VNF *(VSN) NOT FOUND.*
  10613.  
  10614. DVE3 LDA VBCI,BP CHECK FOR ASSIGNED VSN
  10615. ZJN DVE4 IF VSN NOT ASSIGNED
  10616. ERROR VSR *(VSN) RESERVED.*
  10617.  
  10618. DVE4 RJM DDE DELETE DATA ENTRY
  10619. LDM CWNE,BA
  10620. NJN DVE5 IF SECONDARY INDEX NOT EMPTY
  10621. RJM DLB DELINK BLOCK
  10622. RESTP CPPI SWAP TO PRIMARY INDEX BUFFER
  10623. RJM DDE DELETE DATA ENTRY
  10624. LDM CWNE,BA
  10625. NJN DVE5 IF PRIMARY INDEX NOT EMPTY
  10626. RJM DLB DELINK DATA BLOCK
  10627. UJN DVE6 UPDATE OUTPUT POINTER
  10628.  
  10629. DVE5 RJM WRP WRITE RANDOM PRU
  10630. DVE6 RJM UOP UPDATE OUT POINTER
  10631. LJM DVE1 PROCESS NEXT ENTRY
  10632. IUES SPACE 4,10
  10633. *** IUES - INSERT USERNAME ENTRY(S).
  10634. *
  10635. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  10636. *
  10637. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  10638. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  10639. *T, +2 42/ 0,18/ IN
  10640. *T, +3 42/ 0,18/ OUT
  10641. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  10642. *T, +5 42/ 0,18/ EADD
  10643. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  10644. *
  10645. * USES KA, PB, T3.
  10646. *
  10647. * CALLS CCB, CIE, COB, RBB, RWI, SCP,
  10648. * UIS, UOP.
  10649. *
  10650. * MARCOS ERROR.
  10651.  
  10652.  
  10653. IUE ENTRY ENTRY/EXIT
  10654. RJM SBP SET FET BUFFER POINTERS
  10655. IUE1 RJM COB CHECK OUTPUT BUFFER
  10656. PJN IUE2 IF NO ERROR
  10657. ERROR BAE *BUFFER ARGUMENT ERROR.*
  10658.  
  10659. IUE2 ZJN IUEX IF BUFFER EMPTY
  10660. SBN TSUL
  10661. MJN IUEX IF NOT ENTRY LENGTH
  10662. LDN TSUL
  10663. STD T3
  10664. LDC BUFA
  10665. STD PB
  10666. STD KA
  10667. RJM RBB READ BINARY BUFFER
  10668. IUEA UJN IUE4 IF INITIAL CALL
  10669. RJM CCB CHECK CURRENT BUFFER
  10670. ZJN IUE6 IF INDEX FOUND
  10671. PJN IUE3 IF BUFFERS LOADED
  10672. UJN IUE5 INITIATE INDEXED SEARCH
  10673.  
  10674. IUE3 RJM CIE CREATE INDEX ENTRY
  10675. RJM UOP UPDATE OUT POINTER
  10676. LJM IUE1 PROCESS NEXT ENTRY
  10677.  
  10678. IUE4 LDC PSNI
  10679. STM IUEA
  10680. IUE5 RJM UIS USERNAME INDEX SEARCH
  10681. NJN IUE3 IF USERNAME NOT FOUND
  10682. IUE6 LJM IUE1 PROCESS NEXT ENTRY
  10683. LVES SPACE 4,10
  10684. *** LVES - LIST VSN ENTRY(S).
  10685. *
  10686. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  10687. *
  10688. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  10689. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  10690. *T, +2 42/ 0,18/ IN
  10691. *T, +3 42/ 0,18/ OUT
  10692. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  10693. *T, +5 42/ 0,18/ EADD
  10694. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  10695. *
  10696. * USES CM - CM+4, IL, KA, PB.
  10697. *
  10698. * CALLS CCB, COB, RBB, RWI, SBP, UOP, VIS.
  10699. *
  10700. * MACROS ERROR, LDA, MMOVE.
  10701.  
  10702.  
  10703. LVE11 LDD IL CHECK INTERLOCK FLAG
  10704. ZJN LVE12 IF NOT INTERLOCK FUNCTION
  10705. RJM WRP WRITE RANDOM PRU (VSN INDEX)
  10706. LVE12 LDN ZERL RESET IN POINTER
  10707. CRD CM
  10708. LDD FT
  10709. STD CM+3
  10710. LDD FT+1
  10711. STD CM+4
  10712. LDA IR+3,REL
  10713. ADN 2
  10714. CWD CM
  10715.  
  10716. LVE ENTRY ENTRY/EXIT
  10717. LDA IR+3,REL GET INTERLOCK FLAG
  10718. CRD CM
  10719. LDD CM+4
  10720. LPN 4
  10721. STD IL
  10722. RJM SBP SET FET BUFFER POINTERS
  10723. LVE1 RJM COB CHECK OUTPUT BUFFER
  10724. PJN LVE2 IF NO ERROR
  10725. ERROR BAE *BUFFER ARGUMENT ERROR.*
  10726.  
  10727. LVE2 ZJN LVE3 IF BUFFER EMPTY
  10728. SBN TSVL
  10729. PJN LVE4 IF .GE. ENTRY LENGTH
  10730. LVE3 LJM LVE11 FUNCTION COMPLETE
  10731.  
  10732. LVE4 LDN TSVL PROCESS REQUEST
  10733. STD T3
  10734. LDC BUFA
  10735. STD PB
  10736. STD KA
  10737. RJM RBB READ BINARY BUFFER
  10738. LVEA UJN LVE5 IF INITIAL CALL
  10739. RJM CCB CHECK CURRENT BUFFER
  10740. ZJN LVE9 IF INDEX FOUND
  10741. PJN LVE7 IF BUFFERS LOADED
  10742. LDD IL CHECK INTERLOCK FLAG
  10743. ZJN LVE6 IF NOT INTERLOCK FUNCTION
  10744. RJM WRP WRITE RANDOM PRU (SECONDARY)
  10745. UJN LVE6 INITIATE INDEXED SEARCH
  10746.  
  10747. LVE5 LDC PSNI
  10748. STM LVEA
  10749. LVE6 RJM VIS VSN INDEX SEARCH
  10750. ZJN LVE9 IF VSN FOUND
  10751. LVE7 MMOVE ,KA,PESN,,VSKL
  10752. LDD IL
  10753. ZJN LVE8 IF NOT INTERLOCK FUNCTION
  10754. RJM WRP WRITE RANDOM PRU (SECONDARY)
  10755. LVE8 ERROR VNF *(VSN) NOT FOUND.*
  10756.  
  10757. LVE9 MMOVE ,BP,BUFA,,TSVL*10D
  10758. LDD IL CHECK INTERLOCK FLAG
  10759. ZJN LVE10 IF NOT INTERLOCK FUNCTION
  10760. LDM VBST+1,BP SET VSN INTERLOCK
  10761. SCN VIVS
  10762. LMN VIVS
  10763. STM VBST+1,BP
  10764. LDM VBMX,BP SET INTERLOCK MACHINE INDEX-1
  10765. SCN 17
  10766. LMM CDMX
  10767. STM VBMX,BP
  10768. LVE10 LDN TSVL RETURN VSN ENTRY TO BUFFER
  10769. STD T1
  10770. LDA IR+3,REL
  10771. ADN 3
  10772. CRD CM
  10773. LDA CM+3,REL
  10774. CWM BUFA,T1
  10775. RJM UOP UPDATE OUT POINTER
  10776. LJM LVE1 PROCESS NEXT ENTRY
  10777. RAVS SPACE 4,10
  10778. *** RAVS - REPLACE/ADD VSN.
  10779. *
  10780. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  10781. *
  10782. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  10783. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  10784. *T, +2 42/ 0,18/ IN
  10785. *T, +3 42/ 0,18/ OUT
  10786. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  10787. *T, +5 42/ 0,18/ EADD
  10788. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  10789. *
  10790. * USES IL, KA, PB, T3.
  10791. *
  10792. * CALLS CCB, CIE, COB, RBB, RWI, SBP,
  10793. * UOP, VIS.
  10794. *
  10795. * MACROS ERROR, LDA, MMOVE.
  10796.  
  10797.  
  10798. RAV ENTRY ENTRY/EXIT
  10799. LDN 1
  10800. STD IL
  10801. RJM SBP SET FET BUFFER POINTERS
  10802. RAV1 RJM COB CHECK OUTPUT BUFFER
  10803. PJN RAV2 IF NO ERROR
  10804. ERROR BAE BUFFER ARGUMENT ERROR
  10805.  
  10806. RAV2 ZJN RAVX IF BUFFER EMPTY
  10807. SBN TSVL
  10808. MJN RAVX IF NOT ENTRY LENGTH
  10809. LDN TSVL
  10810. STD T3
  10811. LDC BUFA
  10812. STD PB
  10813. STD KA
  10814. RJM RBB READ BINARY BUFFER
  10815. RAVA UJN RAV4 IF INITIAL PASS
  10816. RJM CCB CHECK CURRENT BUFFER
  10817. ZJN RAV3 IF VSN FOUND
  10818. PJN RAV6 IF BUFFERS LOADED
  10819. UJN RAV5 INITIATE INDEXED SEARCH
  10820.  
  10821. RAV3 MMOVE BUFA,,,BP,TSVL*10D
  10822. LDC WRP SET TO UPDATE EXISTING ENTRY
  10823. UJN RAV7 REWRITE INDEX
  10824.  
  10825. RAV4 LDC PSNI
  10826. STM RAVA
  10827. RAV5 RJM VIS VSN INDEX SEARCH
  10828. ZJN RAV3 IF VSN FOUND
  10829. RAV6 LDC CIE SET TO CREATE NEW INDEX
  10830. RAV7 STM RAVB UPDATE/CREATE VSN INDEX
  10831. RJM ** (TO *WRP* IF UPDATING EXISTING INDEX)
  10832. RAVB EQU *-1 (TO CIE IF CREATING NEW INDEX)
  10833. RJM UOP UPDATE OUT POINTER
  10834. LJM RAV1 PROCESS NEXT ENTRY
  10835. TITLE SUBROUTINES.
  10836. SPACE 4,10
  10837. *** COMMON DECKS.
  10838.  
  10839.  
  10840. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY
  10841. CCB$ EQU 1 DEFINE CCB - CHECK CURRENT BUFFER
  10842. CIE$ EQU 1 DEFINE CIE - CREATE INDEX ENTRY
  10843. DDE$ EQU 1 DEFINE DDE - DELETE DATA ENTRY
  10844. DLB$ EQU 1 DEFINE DLB - DELINK DATA BLOCK
  10845. GNB$ EQU 1 DEFINE GNB - GET NEXT BLOCK
  10846. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY
  10847. SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS
  10848. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER
  10849. TBA$ EQU 1 DEFINE TBA - TOGGLE BUFFER ASSIGNMENT
  10850. UIS$ EQU 1 DEFINE UIS - USERNAME INDEXED SEARCH
  10851. UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER
  10852. VIS$ EQU 1 DEFINE VIS - VSN INDEXED SEARCH
  10853. *CALL COMPCOB
  10854. *CALL COMPRBB
  10855. *CALL COMPTFM
  10856. *CALL COMPWEI
  10857. SPACE 4
  10858. *** BUFFERS.
  10859.  
  10860.  
  10861. BUFA BSS TSVL*5
  10862. BUFB BSS TSVL*5
  10863. SPACE 4
  10864. ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW
  10865.  
  10866. OVERLAY (INSERT/REPLACE CATALOG ENTRY.),OVL1
  10867. SPACE 4
  10868. ** LOCAL DIRECT CELL LOCATIONS.
  10869.  
  10870.  
  10871. FT EQU S2+2 - S2+3 FET FIRST POINTER
  10872. IN EQU S2+4 - S3+0 FET IN POINTER
  10873. OT EQU S3+1 - S3+2 FET OUT POINTER
  10874. LM EQU S3+3 - S3+4 FET LIMIT POINTER
  10875. ICES SPACE 4,10
  10876. *** ICES - INSERT CATALOG ENTRY.
  10877. *
  10878. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  10879. *
  10880. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  10881. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  10882. *T, +2 42/ 0,18/ IN
  10883. *T, +3 42/ 0,18/ OUT
  10884. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  10885. *T, +5 42/ 0,18/ EADD
  10886. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  10887. *T, +7 60/ 0
  10888. *T, +10 60/ 0
  10889. *T, +11 60/ 0
  10890. *T, +12 60/ 0
  10891. *T, +13 60/ 0
  10892. *T, +14 60/ 0
  10893. *T, +15 60/ 0
  10894. *T, +16 60/ 0
  10895. *T, +17 42/ ALT. USERNAME,18/ 0
  10896. *
  10897. * USES BA, BP, CI, CM - CM+4, KA, PB,
  10898. * RI - RI+1, T3.
  10899. *
  10900. * CALLS ABC, COB, EDT, IBC, IRM, MBP, RBB,
  10901. * RRP, SBP, SCB, UIS, UOP, WRP.
  10902. *
  10903. * MACROS ERROR, LDA, MMOVE, SAVEP, RESTP.
  10904.  
  10905.  
  10906. ICE ENTRY ENTRY/EXIT
  10907. RJM SBP SET FET BUFFER POINTERS
  10908. RJM COB CHECK OUTPUT BUFFER
  10909. PJN ICE1 IF NO ERROR
  10910. ERROR BAE *BUFFER ARGUMENT ERROR.*
  10911.  
  10912. ICE1 ZJN ICEX IF BUFFER EMPTY
  10913. SBN TCEL
  10914. MJN ICEX IF NOT ENTRY LENGTH
  10915. LDA IR+3,REL
  10916. ADN TFUN
  10917. CRM PBUN,ON
  10918. LDC PBUN
  10919. STD KA
  10920. RJM UIS USERNAME INDEX SEARCH
  10921. ZJN ICE2 IF USER NAME FOUND
  10922. ERROR UNF *(USERNAME) NOT FOUND.*
  10923.  
  10924. ICE2 LDN TCEL GET CATALOG IMAGE
  10925. STD T3
  10926. LDC BUFA
  10927. STD PB
  10928. RJM RBB READ BINARY BUFFER
  10929. LDC BUF2 SET CATALOG BUFFER
  10930. STD BA
  10931. LDM UBCI,BP SET FIRST CATALOG BLOCK
  10932. LPN 77
  10933. STD RI
  10934. SHN 14
  10935. LMM UBCI+1,BP
  10936. STD RI+1
  10937. ZJN ICE4 IF NOT INDEX
  10938. LDM BUFA+CBST
  10939. LPN 4
  10940. ZJN ICE3 IF NOT SYMBOLIC
  10941. MMOVE BUFA+CBLI,,POFI,,FIKL
  10942. LDC POFI
  10943. ICE3 STD KA SET SEARCH TYPE
  10944. RJM SCB SEARCH CATALOG BUFFER
  10945. ZJP ICE5 IF FILE NOT FOUND
  10946. ERROR FAR *(FILENAME) ALREADY RESERVED.*
  10947.  
  10948. ICE4 LDC BUF2 GENERATE USER CATALOG BLOCK
  10949. STD BA
  10950. RJM IBC INITIALIZE BLOCK CHAIN
  10951. SAVEP CPCB SAVE CATALOG POINTERS
  10952. RESTP CPSI RESTORE INDEX POINTERS
  10953. LDM UBCI,BP SET USER CATALOG POINTER
  10954. SCN 77
  10955. LMM CPCB+3
  10956. STM UBCI,BP
  10957. LDM CPCB+4
  10958. STM UBCI+1,BP
  10959. RJM WRP WRITE RANDOM PRU
  10960. RESTP CPCB RESTORE CATALOG POINTERS
  10961. UJN ICE7 ENTER CATALOG IMAGE
  10962.  
  10963.  
  10964. ICE5 LDM CPHP CHECK IF HOLE FOUND
  10965. ZJN ICE6 IF HOLE NOT FOUND
  10966. RESTP CPHP RESTORE HOLE POINTERS
  10967. RJM RRP READ RANDOM PRU
  10968. UJN ICE8 MOVE CATALOG IMAGE
  10969.  
  10970. ICE6 LDN CWRI EXTEND CATALOG FILE
  10971. RJM ABC ADD BLOCK TO CHAIN
  10972. ICE7 LDC RTCB*100 SET RECORD TYPE/LEVEL
  10973. STM CWRT,BA
  10974. LDN TCEL
  10975. STM CWEL,BA
  10976. MMOVE PBUN,,CWUN,BA,UNKL
  10977. LDM CWFE,BA
  10978. RJM MBP MOVE BUFFER POINTER
  10979. LDN 1
  10980. STD CI
  10981. ICE8 MMOVE BUFA,,,BP,TCEL*10D
  10982. LDM CWUW,BA
  10983. SBN TCEL
  10984. STM CWUW,BA
  10985. AOM CWNE,BA
  10986. MMOVE CBES,BP,PESN,,VSKL
  10987. RJM IRM ISSUE RECOVERY MESSAGES
  10988. RJM WRP WRITE RANDOM PRU
  10989. RJM UOP UPDATE OUT POINTER
  10990. LDN ZERL
  10991. CRD CM
  10992. LDD CI
  10993. SHN 6
  10994. LMD RI
  10995. STD CM
  10996. LDD RI+1
  10997. STD CM+1
  10998. LDA IR+3,REL
  10999. ADN TFRR
  11000. CWD CM
  11001. LJM ICEX RETURN
  11002. RCES SPACE 4,10
  11003. *** RCES - REPLACE CATALOG ENTRY.
  11004. *
  11005. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  11006. *
  11007. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  11008. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  11009. *T, +2 42/ 0,18/ IN
  11010. *T, +3 42/ 0,18/ OUT
  11011. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  11012. *T, +5 42/ 0,18/ EADD
  11013. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  11014. *
  11015. * USES BA - BA+4, CI, RI - RI+1, T1, T3.
  11016. *
  11017. * CALLS COB, EDT, IRM, RBB, RRP, SBP, UOP,
  11018. * VRR, VSP, WRP.
  11019. *
  11020. * MACROS COMPARE, ERROR, LDA, MMOVE.
  11021.  
  11022.  
  11023. NUMBYT EQU CBPN-CBUC+10D BYTES BETWEEN *CEUC* AND END OF *CEPN*
  11024.  
  11025. RCE ENTRY ENTRY/EXIT
  11026. RJM SBP SET FET BUFFER POINTERS
  11027. RJM COB CHECK OUTPUT BUFFER
  11028. PJN RCE2 IF NO ERROR
  11029. RCE1 ERROR BAE *BUFFER ARGUMENT ERROR.*
  11030.  
  11031. RCE2 ZJN RCEX IF BUFFER EMPTY
  11032. SBN TCEL
  11033. MJN RCEX IF NOT ENTRY LENGTH
  11034. LDA IR+3,REL GET RANDOM REQUEST
  11035. ADN TFRR
  11036. CRD BA
  11037. LDD RI
  11038. SHN 14
  11039. STD CI
  11040. SHN -14
  11041. STD RI
  11042. RJM VRR VERIFY RANDOM REQUEST
  11043. LDC BUF2
  11044. STD BA
  11045. RJM GIB GET INITIAL BLOCK (CATALOG)
  11046. MMOVE ,BA,BUF1,,502B*2 SAVE COPY OF ORIGINAL BUFFER
  11047. RJM VSP VERIFY/SET CATALOG POINTER
  11048. MJP RCE1 IF INCORRECT RANDOM REQUEST
  11049. LDN TCEL REPLACE CATALOG IMAGE
  11050. STD T3
  11051. LDD BP
  11052. STD T1
  11053. RJM RBB READ BINARY BUFFER
  11054. RJM WRP WRITE RANDOM PRU
  11055. LDD BP CALCULATE BUFFER OFFSET
  11056. SBK BUF2
  11057. STD T3
  11058. COMPARE ,BP,BUF1,T3,CBAM*2
  11059. NJN RCE3 IF CHANGE FOUND
  11060. COMPARE CBUC,BP,BUF1+CBUC,T3,NUMBYT*2
  11061. ZJN RCE4 IF NO CHANGE FOUND
  11062. RCE3 MMOVE CBES,BP,PESN,,VSKL
  11063. RJM IRM ISSUE RECOVERY MESSAGES
  11064. RCE4 BSS 0
  11065. RJM UOP UPDATE OUTPUT POINTER
  11066. LJM RCEX RETURN
  11067. TITLE SUBROUTINES.
  11068. SPACE 4,10
  11069. ABC$ EQU 1 DEFINE ABC - ADD BLOCK TO CHAIN
  11070. BSE$ EQU 1 DEFINE BSE - BACKSPACE ONE ENTRY
  11071. GEP$ EQU 1 DEFINE GEP - GENERATE EMPTY PRU
  11072. GPL$ EQU 1 DEFINE GPL - GET PREVIOUS BLOCK LINK
  11073. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN
  11074. IRM$ EQU 1 DEFINE IRM - ISSUE RECOVERY MESSAGES.
  11075. ISK$ EQU 1 DEFINE ISK - INDEXED SEARCH FOR KEY
  11076. LNB$ EQU 1 DEFINE LNB - LINK NEXT BLOCK
  11077. PLI$ EQU 1 DEFINE PLI - POSITION TO LAST INDEX
  11078. SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS
  11079. SIB$ EQU 1 DEFINE SIB - SEARCH INDEX BUFFER
  11080. SCB$ EQU 1 DEFINE SCB - SEARCH CATALOG BUFFER
  11081. UIS$ EQU 1 DEFINE UIS - USERNAME INDEXED SEARCH
  11082. UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER
  11083. VRR$ EQU 1 DEFINE VRR - VERIFY RANDOM REQUEST
  11084. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTER
  11085. WES$ EQU 1 DEFINE WES - WRITE EOR/EOI SEQUENCE
  11086. *CALL COMPCOB
  11087. *CALL COMPC2D
  11088. *CALL COMPRBB
  11089. *CALL COMPTFM
  11090. *CALL COMPWEI
  11091. SPACE 4
  11092. *** BUFFERS.
  11093.  
  11094.  
  11095. BUFA BSS TSVL*5
  11096. BUFB BSS TSVL*5
  11097. SPACE 4
  11098. ERRNG BUF2-* BYTES LEFT BEFORE BUFFER OVERFLOW
  11099. OVERLAY (LIST/REPLACE ADMIT ENTRY.),OVL1
  11100. SPACE 4
  11101. ** LOCAL DIRECT CELL LOCATIONS.
  11102.  
  11103.  
  11104. FT EQU S2+2 - S2+3 FET FIRST POINTER
  11105. IN EQU S2+4 - S3+0 FET IN POINTER
  11106. OT EQU S3+1 - S3+2 FET OUT POINTER
  11107. LM EQU S3+3 - S3+4 FET LIMIT POINTER
  11108. LAES SPACE 4,10
  11109. *** LAES - LIST ADMIT ENTRY(S).
  11110. *
  11111. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  11112. *
  11113. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  11114. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  11115. *T, +2 42/ 0,18/ IN
  11116. *T, +3 42/ 0,18/ OUT
  11117. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  11118. *T, +5 42/ 0,18/ EADD
  11119. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  11120. *
  11121. * USES CM - CM+4, KA, PB, T1.
  11122. *
  11123. * CALLS AUS, COB, FCB, RBB, SBP, UOP.
  11124. *
  11125. * MACROS ERROR, LDA, MMOVE.
  11126.  
  11127.  
  11128. LAE ENTRY ENTRY/EXIT
  11129. RJM SBP SET FET BUFFER POINTERS
  11130. RJM FCB FILL CATALOG BUFFER
  11131. STM LAEB+1
  11132. SHN -14
  11133. LMC LDCI
  11134. STM LAEB
  11135. LAE1 RJM COB CHECK OUTPUT BUFFER
  11136. PJN LAE2 IF NO ERROR
  11137. ERROR BAE *BUFFER ARGUMENT ERROR.*
  11138.  
  11139. LAE2 ZJN LAE3 IF BUFFER EMPTY
  11140. SBN TAEL
  11141. PJN LAE4 IF .GE. ENTRY LENGTH
  11142. LAE3 LDN ZERL RESET IN POINTER
  11143. CRD CM
  11144. LDD FT
  11145. STD CM+3
  11146. LDD FT+1
  11147. STD CM+4
  11148. LDA IR+3,REL
  11149. ADN 2
  11150. CWD CM
  11151. LJM LAEX RETURN
  11152.  
  11153. LAE4 LDN TAEL PROCESS REQUEST
  11154. STD T3
  11155. LDC BUFA
  11156. STD PB
  11157. STD KA
  11158. RJM RBB READ BINARY BUFFER
  11159. LDC ** SET ADMIT BLOCK ADDRESS
  11160. LAEB EQU *-2 (FIRST ADMIT BLOCK)
  11161. ZJN LAE5 IF NO ALTERNATE USERS
  11162. STD RI+1
  11163. SHN -14
  11164. STD RI
  11165. RJM AUS ADMIT USER SEARCH
  11166. ZJN LAE6 IF ADMIT FOUND
  11167. LAE5 MMOVE ,KA,PBUN,,UNKL
  11168. ERROR UNF *(USERNAME) NOT FOUND.*
  11169.  
  11170. LAE6 MMOVE ,BP,BUFA,,TAEL*10D
  11171. LDN TAEL RETURN ADMIT ENTRY TO BUFFER
  11172. STD T1
  11173. LDA IR+3,REL
  11174. ADN 3
  11175. CRD CM
  11176. LDA CM+3,REL
  11177. CWM BUFA,T1
  11178. RJM UOP UPDATE OUT POINTER
  11179. LJM LAE1 PROCESS NEXT ENTRY
  11180. RAES SPACE 4,10
  11181. *** RAES - REPLACE/ADD ADMIT ENTRY.
  11182. *
  11183. * ENTRY (IR - IR+3) = FET ADDRESS -
  11184. *
  11185. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  11186. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  11187. *T, +2 42/ 0,18/ IN
  11188. *T, +3 42/ 0,18/ OUT
  11189. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  11190. *T, +5 42/ 0,18/ EADD
  11191. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  11192. *
  11193. * USES BA, KA, PB, RI - RI+1, T3.
  11194. *
  11195. * CALLS AUS, CAE, COB, FCB, IBC, SBP,
  11196. * UOP, WRP.
  11197. *
  11198. * MACROS ERROR, LDA, MMOVE, SAVEP.
  11199.  
  11200.  
  11201. RAE ENTRY ENTRY/EXIT
  11202. RJM SBP SET FET BUFFER POINTERS
  11203. RJM FCB FILL CATALOG BUFFER
  11204. ZJN RAE1 IF ADMIT BLOCK NOT ASSIGNED
  11205. LJM RAE2 SAVE FIRST BLOCK ADDRESS
  11206.  
  11207. RAE1 SAVEP CPCB SAVE CATALOG POINTERS
  11208. LDC BUF1
  11209. STD BA
  11210. RJM IBC INITIALIZE BLOCK CHAIN
  11211. LDC RTAB*100
  11212. STM CWRT,BA
  11213. LDN TAEL
  11214. STM CWEL,BA
  11215. MMOVE PBUN,,CWUN,BA,UNKL
  11216. SAVEP CPAB SAVE FIRST ADMIT POINTERS
  11217. RJM WRP WRITE RANDOM PRU
  11218. RESTP CPCB RESTORE CATALOG POINTERS
  11219. LDM CPAB+3 SET ADMIT BUFFER POINTER
  11220. STM CBAE,BP
  11221. LDM CPAB+4
  11222. STM CBAE+1,BP
  11223. RJM WRP WRITE RANDOM PRU
  11224. RESTP CPAB RESTORE ADMIT BUFFER POINTERS
  11225. LDA RI,ABS
  11226. RAE2 STM RAEB+1 SAVE FIRST BLOCK ADDRESS
  11227. SHN -14
  11228. LMC LDCI
  11229. STM RAEB
  11230. RAE3 RJM COB CHECK OUTPUT BUFFER
  11231. MJN RAE5 IF ARGUMENT ERROR
  11232. ZJN RAE4 IF BUFFER EMPTY
  11233. SBN TAEL
  11234. PJN RAE6 IF .GE. ENTRY LENGTH
  11235. RAE4 LJM RAEX RETURN
  11236.  
  11237. RAE5 ERROR BAE *BUFFER ARGUMENT ERROR*
  11238.  
  11239. RAE6 LDN TAEL GET ADMIT ENTRY IMAGE
  11240. STD T3
  11241. LDC BUFA
  11242. STD PB
  11243. STD KA
  11244. RJM RBB READ BINARY BUFFER
  11245. LDC ** SET ADMIT BLOCK ADDRESS
  11246. RAEB EQU *-2 (FIRST ADMIT BLOCK)
  11247. STD RI+1
  11248. SHN -14
  11249. STD RI
  11250. RJM AUS ALTERNATE USER SEARCH
  11251. NJN RAE7 IF ALTERNATE USER NOT FOUND
  11252. MMOVE ,PB,,BP,TAEL*10D
  11253. LDC WRP SET TO UPDATE INDEX
  11254. UJN RAE8 UPDATE INDEX
  11255.  
  11256. RAE7 LDC BUFB ENTER INDEX
  11257. STD T7
  11258. LDC IIE SET TO INSERT INDEX
  11259. RAE8 STM RAEA UPDATE OR INSERT INDEX
  11260. RJM ** (TO *IIE* IF CREATING NEW INDEX)
  11261. RAEA EQU *-1 (TO *WRP* IF UPDATING INDEX)
  11262. RJM UOP UPDATE OUT POINTER
  11263. LJM RAE3 PROCESS NEXT ENTRY
  11264. TITLE SUBROUTINES.
  11265. FCB SPACE 4,10
  11266. ** FCB - FILL CATALOG BUFFER.
  11267. *
  11268. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  11269. *
  11270. * EXIT (A) = INDEX TO ADMIT BLOCK.
  11271. *
  11272. * USES BA - BA+4, CI, RI - RI+1.
  11273. *
  11274. * CALLS RRP, VRR, VSP.
  11275. *
  11276. * MACROS ERROR, LDA.
  11277.  
  11278.  
  11279. FCB SUBR ENTRY/EXIT
  11280. LDA IR+3,REL GET RANDOM REQUEST
  11281. ADN TFRR
  11282. CRD BA
  11283. LDD RI
  11284. SHN 14
  11285. STD CI
  11286. SHN -14
  11287. STD RI
  11288. RJM VRR VERIFY RANDOM REQUEST
  11289. LDC BUF0
  11290. STD BA
  11291. RJM GIB GET INITIAL BLOCK (CATALOG)
  11292. RJM VSP VERIFY/SET CATALOG POINTER
  11293. PJN FCB1 IF VALID RANDOM REQUEST
  11294. ERROR BAE *BUFFER ARGUMENT ERROR.*
  11295.  
  11296. FCB1 MMOVE CWUN,BA,PBUN,,UNKL
  11297. LDA CBAE,BP
  11298. LJM FCBX RETURN
  11299. SPACE 4
  11300. *** COMMON DECKS.
  11301.  
  11302.  
  11303. AUS$ EQU 1 DEFINE AUS - ALTERNATE USERNAME SEARCH
  11304. IBC$ EQU 1 DEFINE IBC - INITIALIZE BLOCK CHAIN
  11305. IIE$ EQU 1 DEFINE IIE - INSERT INDEX ENTRY
  11306. SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS
  11307. UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER
  11308. VRR$ EQU 1 DEFINE VRR - VERIFY RANDOM REQUEST
  11309. VSP$ EQU 1 DEFINE VSP - VERIFY/SET CATALOG POINTERS
  11310. *CALL COMPCOB
  11311. *CALL COMPRBB
  11312. *CALL COMPTFM
  11313. *CALL COMPWEI
  11314. SPACE 4
  11315. *** BUFFERS.
  11316.  
  11317.  
  11318. BUFA BSS TAEL*5
  11319. BUFB BSS TAEL*5
  11320. SPACE 4
  11321. ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW
  11322. OVERLAY (READ/WRITE BLOCK.),OVL1
  11323. SPACE 4
  11324. ** LOCAL DIRECT CELL LOCATIONS.
  11325.  
  11326.  
  11327. CW EQU S1+0 - S1+4 SCRATCH WORD (5 LOCATIONS)
  11328. FT EQU S2+2 - S2+3 FET FIRST POINTER
  11329. IN EQU S2+4 - S3+0 FET IN POINTER
  11330. OT EQU S3+1 - S3+2 FET OUT POINTER
  11331. LM EQU S3+3 - S3+4 FET LIMIT POINTER
  11332. CN EQU FN+0 - FN+4
  11333. WC EQU 67 WORD COUNT
  11334. RDRS SPACE 4,10
  11335. *** RDRS - BLOCK READ REQUEST.
  11336. *
  11337. * ENTRY (IR+3 - IR+4) = FDET ADDRESS -
  11338. *
  11339. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  11340. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  11341. *T, +2 42/ 0,18/ IN
  11342. *T, +3 42/ 0,18/ OUT
  11343. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  11344. *T, +5 42/ 0,18/ EADD
  11345. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  11346. *
  11347. * USES BA, BP, T1.
  11348. *
  11349. * CALLS CIB, EOI, FPB, SBP, UIP, WBB.
  11350. *
  11351. * MACROS ERROR.
  11352.  
  11353.  
  11354. RDR ENTRY ENTRY/EXIT
  11355. RJM SBP SET FET BUFFER POINTERS
  11356. RJM CIB CHECK INPUT BUFFER
  11357. PJN RDR2 IF NO ERROR
  11358. RDR1 ERROR BAE *BUFFER ARGUMENT ERROR.*
  11359.  
  11360. RDR2 LDC BUF0 SET BUFFER ADDRESS
  11361. STD BA
  11362. ADN 2
  11363. STD BP
  11364. ADC -100
  11365. MJN RDR1 IF NO ROOM IN BUFFER
  11366. RJM FPB FILL PP BUFFER
  11367. ZJN RDRX IF INCORRECT RANDOM REQUEST
  11368. LDD HN
  11369. STD T1
  11370. LDD BP
  11371. RJM WBB WRITE BINARY BUFFER
  11372. RJM UIP UPDATE IN POINTER
  11373. LDM CWRI,BA
  11374. ADM CWRI+1,BA
  11375. NJN RDR3 IF LINKED BLOCK
  11376. RJM EOI SET END OF INFORMATION
  11377. RDR3 LJM RDRX RETURN
  11378. WRRS SPACE 4,10
  11379. *** WRRS - BLOCK WRITE REQUEST.
  11380. *
  11381. * ENTRY (IR+3 - IR+4) = FET ADDRESS -
  11382. *
  11383. *T FET+0 42/ FILE NAME,1/ R,8/ AT,6/ CODE,3/ ST
  11384. *T, +1 15/ 0,1/ EP, 27/ 0,18/ FIRST
  11385. *T, +2 42/ 0,18/ IN
  11386. *T, +3 42/ 0,18/ OUT
  11387. *T, +4 12/ FNT,30/ 0,18/ LIMIT
  11388. *T, +5 42/ 0,18/ EADD
  11389. *T, +6 30/ CURRENT R.I.,30/ RANDOM REQUEST
  11390. *
  11391. * USES BA, BP, T3.
  11392. *
  11393. * CALLS COB, EOI, EPB, RBB, SBP, UOP.
  11394. *
  11395. * MACROS ERROR.
  11396.  
  11397.  
  11398. WRR ENTRY ENTRY/EXIT
  11399. RJM SBP SET FET BUFFER POINTERS
  11400. RJM COB CHECK OUTPUT BUFFER
  11401. PJN WRR2 IF NO ERROR
  11402. WRR1 ERROR BAE *BUFFER ARGUMENT ERROR.*
  11403.  
  11404. WRR2 LDC BUF0 SET BUFFER ADDRESS
  11405. STD BA
  11406. ADN 2
  11407. STD BP
  11408. ADC -100
  11409. MJN WRR1 IF NO ROOM IN BUFFER
  11410. LDD HN
  11411. STD T3
  11412. LDD BP
  11413. RJM RBB READ BINARY BUFFER
  11414. RJM EPB EMPTY PP BUFFER
  11415. ZJN WRRX IF NO RANDOM REQUEST
  11416. RJM UOP UPDATE OUT POINTER
  11417. LDM CWRI,BA
  11418. ADM CWRI+1,BA
  11419. NJN WRR3 IF LINKED BLOCK
  11420. RJM EOI SET END OF INFORMATION
  11421. WRR3 LJM WRRX RETURN
  11422. TITLE SUBROUTINES.
  11423. EPB SPACE 4,10
  11424. ** EPB - EMPTY PP BUFFER.
  11425. *
  11426. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  11427. *
  11428. * EXIT (A) = 0 IF NO RANDOM REQUEST.
  11429. * (A) .NE. 0 IF BUFFER EMPTIED.
  11430. *
  11431. * USES CM - CM+4, RI - RI+1.
  11432. *
  11433. * CALLS WRP.
  11434. *
  11435. * MACROS LDA.
  11436.  
  11437.  
  11438. EPB SUBR ENTRY/EXIT
  11439. LDA IR+3,REL
  11440. ADN TFRR
  11441. CRD CM
  11442. LDD CM+3 GET RANDOM REQUEST
  11443. LPN 77
  11444. STD RI
  11445. SHN 14
  11446. LMD CM+4
  11447. STD RI+1
  11448. ZJN EPBX IF NO RANDOM REQUEST
  11449. RJM WRP WRITE RANDOM PRU
  11450. LDN ZERL
  11451. CRD CM
  11452. LDD RI SET CURRENT R.I.
  11453. STD CM
  11454. LDD RI+1
  11455. STD CM+1
  11456. LDM CWRI,BA SET NEXT R.I.
  11457. STD CM+3
  11458. LDM CWRI+1,BA
  11459. STD CM+4
  11460. LDA IR+3,REL REWRITE FET RANDOM REQUEST WORD
  11461. ADN TFRR
  11462. CWD CM
  11463. LJM EPBX RETURN
  11464. FPB SPACE 4,10
  11465. ** FPB - FILL PP BUFFER.
  11466. *
  11467. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  11468. *
  11469. * EXIT (A) = 0 IF NO RANDOM REQUEST.
  11470. *
  11471. * USES CM - CM+4, RI - RI+1.
  11472. *
  11473. * CALLS RRP.
  11474. *
  11475. * MACROS LDA.
  11476. * (A) .NE. 0 IF BUFFER FILLED.
  11477.  
  11478.  
  11479. FPB SUBR ENTRY/EXIT
  11480. LDA IR+3,REL
  11481. ADN TFRR
  11482. CRD CM
  11483. LDD CM+3 GET RANDOM REQUEST
  11484. LPN 77
  11485. STD RI
  11486. SHN 14
  11487. LMD CM+4
  11488. STD RI+1
  11489. ZJN FPBX IF NO RANDOM REQUEST
  11490. RJM GIB GET INITIAL BLOCK
  11491. LDN ZERL
  11492. CRD CM
  11493. LDD RI SET CURRENT R.I.
  11494. STD CM
  11495. LDD RI+1
  11496. STD CM+1
  11497. LDM CWRI,BA SET NEXT R.I.
  11498. STD CM+3
  11499. LDM CWRI+1,BA
  11500. STD CM+4
  11501. LDA IR+3,REL REWRITE FET RANDOM REQUEST WORD
  11502. ADN TFRR
  11503. CWD CM
  11504. LJM FPBX RETURN
  11505. UIP SPACE 4,10
  11506. ** UIP - UPDATE IN POINTER.
  11507. * ENTRY (IN - IN+1) = IN POINTER.
  11508. * (IR+3 - IR+4) = FET ADDRESS.
  11509. *
  11510. * EXIT FET+2 UPDATED.
  11511. *
  11512. * USES CM - CM+4.
  11513. *
  11514.  
  11515.  
  11516. UIP SUBR ENTRY/EXIT
  11517. LDN ZERL
  11518. CRD CM
  11519. LDD IN CURRENT POSITION OF IN
  11520. STD CM+3
  11521. LDD IN+1
  11522. STD CM+4
  11523. LDA IR+3,REL UPDATE FET
  11524. ADN 2
  11525. CWD CM
  11526. UJN UIPX RETURN
  11527. SPACE 4,10
  11528. *** COMMON DECKS.
  11529.  
  11530.  
  11531. EOI$ EQU 1 DEFINE EOI - SET END OF INFORMATION
  11532. SBP$ EQU 1 DEFINE SBP - SET FET BUFFER POINTERS
  11533. UOP$ EQU 1 DEFINE UOP - UPDATE OUTPUT POINTER
  11534. *CALL COMPCIB
  11535. *CALL COMPCOB
  11536. *CALL COMPRBB
  11537. *CALL COMPTFM
  11538. *CALL COMPWBB
  11539. SPACE 4
  11540. ERRNG BUF1-* BYTES LEFT BEFORE BUFFER OVERFLOW
  11541.  
  11542. SPACE 4,10
  11543. TTL TFM - TAPE FILE MANAGER.
  11544. END