Table of Contents

PFLOAD

Table Of Contents

  • [00002] PFLOAD - PERMANENT FILE LOAD.
  • [00010] PERMANENT FILE LOAD.
  • [00322] PROGRAM CONSTANTS.
  • [00376] RESERVED LOCATIONS.
  • [00414] MESSAGE CONSTANTS.
  • [00467] FETS.
  • [00504] NOTE - THE STATUS PORTION OF THE *CATS*, *PETS*, AND *DATA*
  • [00513] MAIN LOOP.
  • [00582] SUBROUTINES.
  • [00584] APR - ABORT PROCESSOR.
  • [00610] ADF - ASSIGN DIRECT ACCESS FILE DEVICE.
  • [00705] AUP - ACTIVATE UTILITY PROCESSOR.
  • [00768] BFL - BUILD FILE LIST.
  • [00831] CAL - CHECK ACCESS LEVELS.
  • [00865] CDE - CHECK DEVICE ENVIRONMENT.
  • [00925] CEL - CHECK FOR END OF LOAD.
  • [01081] CIN - CLEAR PF UTILITY INTERLOCK.
  • [01114] CSP - CHECK SELECTION PARAMETERS.
  • [01192] DDS - DELETE DATA SPACE.
  • [01239] DIF - DELETE INCOMPLETE FILE.
  • [01265] DPS - DELETE PERMIT SPACE.
  • [01305] DUP - DROP UTILITY PROCESSOR.
  • [01336] DWE - DATA WRITE ERROR PROCESSOR.
  • [01459] ECL - EDIT CATALOG ENTRY FOR LOAD.
  • [01516] EFL - ENTER FILE LIST.
  • [01553] EOL - END OF LOAD PROCESSOR.
  • [01592] FCB - FLUSH CATALOG BUFFER.
  • [01720] FDB - FLUSH DATA BUFFER.
  • [01737] FPB - FLUSH PERMIT BUFFER.
  • [01759] FPF - FLUSH PERMANENT FILES.
  • [01815] FUB - FLUSH UTILITY BUFFER.
  • [01850] IFM - ISSUE FILE COUNT MESSAGES.
  • [01877] LLF - LIST LOADED FILES.
  • [01937] MCE - MOVE CATALOG ENTRY TO BUFFER.
  • [01987] PAL - PROCESS ARCHIVE FILE LABEL.
  • [02070] PCB - PROCESS CATALOG BUFFER.
  • [02214] PCE - PROCESS CATALOG ERROR.
  • [02295] PDB - PROCESS DATA BLOCK.
  • [02609] PFD - PROCESS FULL DEVICE.
  • [02752] PGF - PURGE FILE ON REPLACE OPTION.
  • [02879] PPB - PROCESS PERMIT BLOCK.
  • [03016] PWE - PERMIT WRITE ERROR PROCESSOR.
  • [03085] RAS - RETURN AVAILABLE SPACE.
  • [03157] RCT - READ CATALOG TRACK.
  • [03295] RCW - READ ARCHIVE FILE CONTROL WORD.
  • [03355] RIP - REPRIEVE INTERRUPT PROCESSOR.
  • [03367] SCE - SET CATALOG ERROR CODE.
  • [03393] SCI - SKIP CATALOG IMAGE RECORD.
  • [03426] SEC - SKIP THROUGH EOI CONTROL WORD.
  • [03470] SER - SKIP TO END OF RECORD.
  • [03493] SFD - SEARCH FOR DEVICE.
  • [03521] SFL - SEARCH FILE LIST.
  • [03583] SIN - SET PF UTILITY INTERLOCK.
  • [03615] SMD - SET MASTER DEVICE PARAMETERS.
  • [03770] SRD - SELECT RESIDENCY DEVICE FOR LOAD LEVELING.
  • [03824] SSC - SET SECTOR COUNTER.
  • [03878] VFN - VALIDATE FILE NAME.
  • [03904] WCE - WRITE CATALOG ENTRY.
  • [03961] WPR - WRITE PRU TO *PFU* CIRCULAR BUFFER.
  • [04074] INCREMENTAL LOAD SUBROUTINES.
  • [04076] AAT - ASSIGN NEXT ARCHIVE TAPE.
  • [04129] ART - ARCHIVE FILE TRANSITION PROCESSOR.
  • [04293] CCI - CHECK CATALOG IMAGE.
  • [04468] CMA - CLEAR MESSAGE AREA.
  • [04485] LFS - LIST FILES ON CATALOG IMAGE RECORD.
  • [04606] SRS - SELECT RIGHT SCREEN.
  • [04629] COMMON DECKS.
  • [04673] BUFFERS.
  • [04691] LWRD - *PFU* BUFFER LINKAGE WORD.
  • [04726] CIRT - *CIR* DIRECTORY TABLE.
  • [04756] PRESET.
  • [04758] PRS - PRESET PROGRAM.
  • [04868] PRESET SUBROUTINES.
  • [04870] GAM - GENERATE ACCOUNTING MESSAGES.
  • [05032] PCI - PROCESS CATALOG IMAGE RECORD.
  • [05234] SMP - SET MASTER DEVICE PARAMETERS.
  • [05290] STC - SET TAPE CHARACTERISTICS.

Source Code

PFLOAD.txt
  1. IDENT PFLOAD1,PFLRL,PFL,01,00
  2. TITLE PFLOAD - PERMANENT FILE LOAD.
  3. ABS
  4. SST
  5. SYSCOM B1
  6. SPACE 4,10
  7. *COMMENT PFLOAD - PERMANENT FILE LOAD.
  8. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  9. SPACE 4,10
  10. *** PFLOAD - PERMANENT FILE LOAD.
  11. * D. A. HIVELEY 70/12/22.
  12. * S. T. WORSTELL 73/02/15.
  13. SPACE 4,10
  14. *** *PFLOAD* IS A PERMANENT FILE UTILITY PROGRAM WHICH LOADS
  15. * FILES FROM AN ARCHIVE FILE ONTO A PERMANENT FILE DEVICE.
  16. * *PFLOAD* MAY BE CALLED BY THE PERMANENT FILE SUPERVISOR
  17. * OR BY A COMMAND.
  18. *
  19. * SEE *COMSPFS* FOR A DESCRIPTION OF THE PARAMETERS VALID FOR
  20. * *PFLOAD*.
  21. *
  22. * *PFLOAD* CAN PERFORM SEVERAL TYPES OF PERMANENT FILE LOADS.
  23. * AN INCREMENTAL LOAD IS PERFORMED BY READING THE CATALOG
  24. * IMAGE RECORD (CIR) FROM THE MOST RECENT SELECTIVE
  25. * *PFDUMP* (FIRST REEL OF INCREMENTAL LOAD PROCESS) AND
  26. * PLACING IT ON A RANDOM FILE.
  27. * EACH ITEM IN THE CIR REPRESENTS A FILE AT THE TIME OF THE
  28. * SELECTIVE DUMP.
  29. * WHEN READING AN ARCHIVE FILE, IF A MATCH IS FOUND ON THE
  30. * CIR, THE FILE IS A CANDIDATE FOR LOADING AND THE ENTRY IN
  31. * THE CIR IS CLEARED. ELSE, THE FILE IS SKIPPED BECAUSE IT
  32. * HAS BEEN EITHER PURGED OR PREVIOUSLY LOADED.
  33. *
  34. * DIRECT ACCESS FILES ARE LOADED TO THE DEVICE ON WHICH THEY
  35. * RESIDED WHEN DUMPED UNLESS THE DEVICE NO LONGER EXISTS OR
  36. * THE FILE IS NOT ALLOWED ON THE DEVICE (I.E. USER INDEX .LT.
  37. * *AUIMX* AND USER INDEX DOES NOT MATCH THE SECONDARY DEVICE
  38. * MASK). IF THE FILE CAN NOT BE LOADED ON THE ORIGINAL
  39. * DEVICE, IT WILL BE LOADED ON THE DESTINATION DEVICE IF
  40. * SPECIFIED (*DD* PARAMETER) AND IF THE FILE IS ALLOWED ON
  41. * THAT DEVICE. IF THE FILE CAN NOT BE LOADED ON EITHER DEVICE,
  42. * AN *ALTERNATE DEVICE NOT FOUND.* MESSAGE WILL BE ISSUED AND
  43. * THE FILE WILL BE SKIPPED. A DIRECT ACCESS FILE IS CONSIDERED
  44. * TO HAVE RESIDED ON THE MASTER DEVICE BEING LOADED IF IT
  45. * ORIGINALLY RESIDED ON ITS OWN MASTER DEVICE. IF THE *OP=L*
  46. * OPTION IS SPECIFIED, EACH DIRECT ACCESS FILE WILL BE LOADED
  47. * TO THE DEVICE WITH THE MOST SPACE AVAILABLE OF THOSE WHERE
  48. * THE DEVICE MASK ALLOWS IT TO RESIDE, REGARDLESS OF PREVIOUS
  49. * RESIDENCE OR *DD* SPECIFICATION.
  50. *
  51. * ARCHIVE FILE ERRORS MAY BE ENCOUNTERED WHEN PROCESSING A
  52. * FILE. THIS COULD BE CAUSED BY AN ERROR WHEN WRITING THE
  53. * ARCHIVE FILE (*PFDUMP*) OR READING THE ARCHIVE FILE. SUCH
  54. * THINGS AS DROPPED RECORDS, PARITY ERRORS COULD CAUSE THIS.
  55. * IF ARCHIVE FILE ERRORS ARE ENCOUNTERED THEY ARE PROCESSED BY
  56. * SETTING THE LENGTH IN THE CATALOG FOR FILES THAT ARE TOO
  57. * SHORT AND TRUNCATING EXTRA PRUS TO MATCH LENGTH SPECIFIED IN
  58. * THE CATALOG FOR FILES TOO LONG.
  59. SPACE 4,10
  60. *** SECURITY CONSIDERATIONS.
  61. *
  62. * ON A SECURE SYSTEM, THE DEVICE SELECTED FOR A FILE TO RESIDE
  63. * ON MUST HAVE SECURITY ACCESS LEVEL LIMITS ALLOWING THE FILE-S
  64. * ACCESS LEVEL FROM THE PFC ENTRY TO RESIDE THERE. IF NO
  65. * DEVICE CAN BE FOUND, THE FILE IS SKIPPED AND A MESSAGE
  66. * ISSUED.
  67. SPACE 4,10
  68. *** MESSAGE LEGEND.
  69. *
  70. * THE FOLLOWING LEGEND DEFINES PARAMETERS THAT ARE USED IN MANY
  71. * OF THE *PFLOAD* ERROR MESSAGES. THE DESCRIPTIVE CHARACTER
  72. * STRINGS DEFINED HERE ARE REPLACED BY THEIR ACTUAL VALUE WHEN
  73. * A PARTICULAR MESSAGE IS ISSUED. THE _ CHARACTER DOES NOT
  74. * APPEAR IN ACTUAL MESSAGES BUT IS USED IN THE DOCUMENTATION AS
  75. * A DELIMITER TO AVOID AMBIGUITIES.
  76. *
  77. * DD = DEVICE NUMBER.
  78. * EEE = EST ORDINAL.
  79. * MMMMMM = FILE COUNT.
  80. * NNNNNNN = PERMANENT FILE NAME.
  81. * UUUUUU = USER INDEX.
  82. * XXXXXXXX = COUNT OF PRU-S TRUNCATED.
  83. SPACE 4,20
  84. *** OPERATOR MESSAGES.
  85. *
  86. * SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS
  87. * APPEARING IN THESE MESSAGES.
  88. *
  89. * *LOADING NNNNNNN UUUUUU*
  90. * LOAD OF THE INDICATED FILE IS IN PROGRESS.
  91. *
  92. * *SKIPPING NNNNNNN UUUUUU*
  93. * THE INDICATED FILE IS BEING SKIPPED BECAUSE IT WAS NOT
  94. * SELECTED FOR LOAD.
  95. *
  96. * *CREATING CATALOG IMAGE RECORD*
  97. * THE CATALOG IMAGE RECORD FROM THE ARCHIVE FILE IS
  98. * BEING COPIED TO A SCRATCH FILE.
  99. *
  100. * *CLEARING UTILITY INTERLOCK*
  101. * *PFLOAD* IS WAITING FOR *PFU* TO CLEAR THE PERMANENT
  102. * FILE UTILITY INTERLOCK ON A DEVICE.
  103. *
  104. * *SETTING UTILITY INTERLOCK*
  105. * *PFLOAD* IS WAITING FOR *PFU* TO SET THE PERMANENT
  106. * FILE UTILITY INTERLOCK ON A DEVICE.
  107. SPACE 4,10
  108. *** INFORMATIVE DAYFILE MESSAGES.
  109. *
  110. * SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS
  111. * APPEARING IN THESE MESSAGES.
  112. *
  113. * * ERROR IN ARCHIVE FILE LABEL.*
  114. * THE FORMAT OF THE ARCHIVE FILE LABEL IS INCORRECT.
  115. *
  116. * * MMMMMM FILES LOADED WITH ERRORS.*
  117. * THE NUMBER OF FILES WHICH WERE LOADED BUT WHICH HAD
  118. * ERRORS IN THE FILE DATA OR PERMITS. THE PFC ENTRIES
  119. * OF SUCH FILES WILL INDICATED THE ERRORS THAT
  120. * OCCURRED.
  121. *
  122. * * MMMMMM FILES SKIPPED WITH ERRORS.
  123. * THE NUMBER OF SELECTED FILES WHICH COULD NOT BE
  124. * LOADED.
  125. *
  126. * * MMMMMM FILES LOADED.
  127. *
  128. * * READ ERRORS ENCOUNTERED ON ARCHIVE FILE.*
  129. * UNRECOVED ERRORS OCCURRED WHEN READING THE ARCHIVE
  130. * FILE. IT IS POSSIBLE THAT SOME FILES THAT SHOULD HAVE
  131. * BEEN LOADED WERE NOT FOUND.
  132. * THE NUMBER OF FILES LOADED FROM THE ARCHIVE FILE.
  133. SPACE 4,10
  134. *** NON-FATAL ERROR DAYFILE MESSAGES.
  135. *
  136. * SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS
  137. * APPEARING IN THESE MESSAGES.
  138. *
  139. * * ALTERNATE DEVICE NOT FOUND, FN=NNNNNNN, UI=UUUUUU.*
  140. * THE DEVICE NUMBER IN THE PFC ENTRY OF A DIRECT ACCESS
  141. * FILE WAS NOT FOUND IN THE SYSTEM, AND THE *DD* OR
  142. * *OP=L* OPTIONS WERE NOT SPECIFIED. THE FILE IS NOT
  143. * LOADED.
  144. *
  145. * * ARCHIVE FILE BLOCK ERROR, FN=NNNNNNN, UI=UUUUUU.*
  146. * A PFC, PERMIT, OR DATA BLOCK WAS DETECTED WITH AN
  147. * INCORRECT SUB-TYPE, AN INCORRECT LENGTH FOR THE BLOCK
  148. * TYPE, OR INCORRECT CONTENTS FOR THE BLOCK TYPE. ALSO
  149. * ISSUED WHEN PERMIT OR DATA BLOCKS WERE PRESENT OR
  150. * MISSING WHEN THEY SHOULD NOT BE BASED ON INFORMATION
  151. * IN THE PFC BLOCK OR WHEN A BLOCK OF UNKNOWN TYPE IS
  152. * ENCOUNTERED. THE FILE IS NOT LOADED.
  153. *
  154. * * ARCHIVE FILE READ ERROR, FN=NNNNNNN, UI=UUUUUU.*
  155. * A READ ERROR OCCURRED ON THE ARCHIVE FILE WHILE
  156. * PROCESSING THE INDICATED FILE. THE FILE IS NOT
  157. * LOADED.
  158. *
  159. * * DATA WRITE ERROR, FN=NNNNNNN, UI=UUUUUU.*
  160. * A MASS STORAGE ERROR OCCURRED WHILE WRITING THE
  161. * INDICATED FILE. IF DIRECT ACCESS, THE MASS STORAGE
  162. * SPACE FOR THE FILE IS DROPPED, CAUSING THE FAILING
  163. * TRACK TO BE FLAWED. IF INDIRECT ACCESS, THE FAILING
  164. * PORTION OF THE INDIRECT ACCESS FILE CHAIN IS CATALOGED
  165. * UNDER THE *FLAWPF* USER INDEX (377775) TO PREVENT
  166. * REALLOCATION. THE FILE IS NOT LOADED.
  167. *
  168. * * ERROR ON FILE PURGE, FN=NNNNNNN, UI=UUUUUU.*
  169. * THE FILE WAS FOUND IN THE SYSTEM AFTER AN ATTEMPTED
  170. * PURGE WHEN OP=R WAS SECIFIED. THIS INDICATES EITHER
  171. * THAT *PFM* ENCOUNTERED AN ERROR OR THAT A USER
  172. * RECREATED THE FILE AFTER THE PURGE BUT BEFORE *PFLOAD*
  173. * RESET THE UTILITY INTERLOCK ON THE MASTER DEVICE.
  174. * THE FILE IS NOT LOADED.
  175. *
  176. * * FILE LOAD SUPPRESSED BY ERROR OPTION, FN=NNNNNNN,
  177. * UI=UUUUUU.*
  178. * AN ERROR OCCURRED WHEN THE FILE WAS DUMPED AND THE
  179. * *PFLOAD* *EO* OPTION WAS SPECIFIED. THE FILE IS NOT
  180. * LOADED.
  181. *
  182. * * FILE TRUNCATED, FN=NNNNNNN, UI=UUUUUU.*
  183. * THE FILE ON THE ARCHIVE FILE IS TOO SHORT EITHER WITH
  184. * ERROR PADDED EOFS OR A READ ERROR. THE FILE IS
  185. * TRUNCATED AND THE LENGTH IN THE CATALOG IS UPDATED TO
  186. * REFLECT THE SMALLER SIZE.
  187. *
  188. * * INCORRECT FILE NAME/USER INDEX, OOOOOOOOOOOOOOOOOOOO.*
  189. * A FILE WITH AN INCORRECT NAME AND/OR USER INDEX WAS
  190. * ENCOUNTERED. THE FILE NAME (48 BITS) FOLLOWED BY THE
  191. * USER INDEX (18 BITS) ARE SHOWN IN OCTAL. THE ARCHIVE
  192. * FILE IS POSITIONED TO THE NEXT RECORD.
  193. *
  194. * * NO DEVICE FOR FILE ACCESS LEVEL, FN=NNNNNNN, UI=UUUUUU.*
  195. * NONE OF THE DEVICES WHERE THE FILE IS ELIGIBLE TO
  196. * RESIDE HAS SECURITY ACCESS LEVEL LIMITS THAT WILL
  197. * ALLOW THE INDICATED FILE TO RESIDE THERE. THE FILE IS
  198. * NOT LOADED.
  199. *
  200. * * NO SPACE FOR FILE, FN=NNNNNNN, UI=UUUUUU.*
  201. * THE LENGTH OF THE NAMED DIRECT ACCESS FILE WAS GREATER
  202. * THAN THE AMOUNT OF SPACE AVAILABLE ON THE DEVICE THAT
  203. * HAS BEEN SELECTED. IF *OP=L* HAS BEEN SPECIFIED, THIS
  204. * IS THE DEVICE WITH MAXIMUM SPACE OF THOSE WHERE THE
  205. * FILE IS ELIGIBLE TO RESIDE. THE FILE IS NOT LOADED.
  206. SPACE 4,10
  207. *** FATAL ERROR DAYFILE MESSAGES.
  208. *
  209. * SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS
  210. * APPEARING IN THESE MESSAGES.
  211. *
  212. * THESE ERRORS RESULT IN *PFLOAD* BEING ABORTED.
  213. *
  214. * * ARCHIVE FILE LABEL MISSING ON INCREMENTAL LOAD.*
  215. * NO ARCHIVE FILE LABEL WAS FOUND ON THE FIRST ARCHIVE
  216. * FILE OF AN INCREMENTAL LOAD SEQUENCE.
  217. *
  218. * * CATALOG IMAGE FORMAT ERROR.*
  219. * A CATALOG IMAGE RECORD WAS FOUND ON THE ARCHIVE FILE
  220. * BUT IT WAS IN A FORMAT NOT RECOGNIZED BY *PFLOAD*. IT
  221. * IS NOT POSSIBLE TO USE THE BAD ARCHIVE FILE AS THE
  222. * FIRST FILE OF AN INCREMENTAL LOAD. THE BAD ARCHIVE
  223. * FILE CAN BE USED IN A NORMAL LOAD, HOWEVER, BY USING
  224. * THE OMIT OPTION (OP=O) TO SKIP THE CATALOG IMAGE
  225. * RECORD.
  226. *
  227. * * CATALOG READ ERROR, FN=NNNNNNN, UI=UUUUUU.*
  228. * THE INDICATED FILE WAS CATALOGED IN A SECTOR AFFECTED
  229. * BY A MASS STORAGE ERROR.
  230. *
  231. * * CATALOG WRITE ERROR, FN=FFFFFFF, UI=UUUUUU.*
  232. * THE CATALOG INFORMATION FOR THE INDICATED FILE COULD
  233. * NOT BE WRITTEN BECAUSE OF A MASS STORAGE WRITE ERROR.
  234. * ERROR IDLE STATUS IS SET FOR THE MASTER DEVICE IF DATA
  235. * ON THE CATALOG FILE HAS BEEN CORRUPTED.
  236. *
  237. * * DESTINATION DEVICE NOT FOUND.*
  238. * THE DEVICE SPECIFIED ON THE *DD* PARAMETER WAS NOT
  239. * FOUND.
  240. *
  241. * * ERROR IDLE DETECTED, EQ_EEE.*
  242. * AN ERROR IDLE CONDITION HAS BEEN DETECTED ON THE
  243. * INDICATED EQUIPMENT.
  244. *
  245. * * EXTRACT OPTION REQUIRES CIR.*
  246. * THE EXTRACT OPTION WAS SPECIFIED FOR THE LOAD BUT THE
  247. * ARCHIVE FILE DID NOT CONTAIN A CATALOG IMAGE RECORD.
  248. *
  249. * * NO FILES SELECTED.*
  250. * THE FILE SELECTION PARAMETERS SPECIFIED FOR THE LOAD
  251. * WERE SUCH THAT NO DEVICES IN THE SYSTEM COULD CONTAIN
  252. * THE SPECIFIED FILES. THIS MAY BE CAUSED BY
  253. * CONFLICTING SELECTION PARAMETERS.
  254. *
  255. * * PERMIT WRITE ERROR, FN=NNNNNNN, UI=UUUUUU.*
  256. * THE PERMIT INFORMATION FOR THE INDICATED FILE COULD
  257. * NOT BE WRITTEN BECAUSE OF A MASS STORAGE ERROR. ERROR
  258. * IDLE STATUS IS SET FOR THE MASTER DEVICE IF DATA ON
  259. * THE PERMITS FILE HAS BEEN CORRUPTED.
  260. *
  261. * * SELECTED FILES NOT ON ARCHIVE FILE.*
  262. * THE FILES SELECTED FOR LOADING ARE NOT CONTAINED ON
  263. * THE ARCHIVE FILE. THIS WAS DETERMINED FROM
  264. * INFORMATION CONTAINED IN THE ARCHIVE FILE DUMP LABEL.
  265. *
  266. * * SELECTED MASTER OR TRUE DEVICE NOT FOUND.*
  267. * THE DEVICE SPECIFIED WITH THE *DN* OR *TD* PARAMETER
  268. * WAS NOT FOUND.
  269. *
  270. * * TRACK LIMIT, EQ_EEE.*
  271. * A TRACK LIMIT HAS OCCURRED ON THE INDICATED EQUIPMENT.
  272. SPACE 4,10
  273. *** OPERATOR MESSAGES WHICH REQUIRE ACTION.
  274. *
  275. * THE FOLLOWING MESSAGES REQUIRE K-DISPLAY INPUT FOR
  276. * INCREMENTAL LOAD OPERATIONS.
  277. *
  278. * * READ ERROR IN CATALOG IMAGE DM CT.*
  279. * AN ERROR WAS ENCOUNTERED WHILE READING CATALOG IMAGE
  280. * INFORMATION FOR CATALOG TRACK *CT* FOR THE MASTER
  281. * DEVICE WITH MASK *DM*. OPERATOR ENTRY OF *K.GO.* WILL
  282. * CAUSE THE AFFECTED CATALOG TRACK TO BE SKIPPED BUT
  283. * OTHER CATALOG TRACKS TO BE PROCESSED. ENTRY OF
  284. * ANYTHING ELSE WILL CAUSE *PFLOAD* TO ABORT.
  285. *
  286. * *END OF LOAD FILE - SEE RIGHT SCREEN.*
  287. *
  288. * THE END OF AN INCREMENTAL LOAD FILE HAS BEEN
  289. * ENCOUNTERED. THE *K* DISPLAY RIGHT SCREEN DISPLAYS
  290. * THE OPTIONS AVAILABLE TO THE OPERATOR. THESE INCLUDE
  291. * TERMINATION OF THE LOAD, LISTING THE REMAINING FILES
  292. * FROM THE CATALOG IMAGE RECORD, OR SPECIFICATION OF THE
  293. * VSN OF THE NEXT TAPE IN THE INCREMENTAL LOAD SEQUENCE.
  294. COMMON SPACE 4,10
  295. ** COMMON DECKS.
  296.  
  297.  
  298. *CALL COMCCMD
  299. *CALL COMCDCM
  300. *CALL COMCMAC
  301. QUAL COMSACC
  302. *CALL COMSACC
  303. QUAL *
  304. *CALL COMSCPS
  305. *CALL COMSDSP
  306. *CALL COMSLFD
  307. *CALL COMSLFM
  308. *CALL COMSMLS
  309. *CALL COMSMST
  310. QUAL MTX
  311. *CALL COMSMTX
  312. QUAL *
  313. *CALL COMSPFM
  314. LIST X
  315. *CALL COMSPFS
  316. LIST *
  317. *CALL COMSPFU
  318. *CALL COMSPRD
  319. *CALL COMSRPV
  320. *CALL COMSSFM
  321. *CALL COMSVER
  322. TITLE PROGRAM CONSTANTS.
  323. * PROGRAM CONSTANTS.
  324.  
  325. NDEV EQU 10B MAXIMUM NUMBER OF MASTER DEVICES ON *CIR*
  326. NWCD EQU 201B NUMBER WORDS/CIR DIRECTORY
  327.  
  328. * BUFFER LENGTHS.
  329.  
  330. MBUFL EQU 30061B MAIN BUFFER LENGTH
  331. MXCBS EQU 20 MAXIMUM CATALOG BUFFER SECTOR COUNT
  332. CBUFL EQU 101B*MXCBS+1 CATALOG BUFFER LENGTH
  333. PBUFL EQU 101B*20+1 PERMIT BUFFER LENGTH
  334. DBUFL EQU 6001B DATA BUFFER LENGTH
  335. OUTBL EQU 1001B OUTPUT BUFFER LENGTH
  336. TLBFL EQU /COMSPFS/AFLBL TAPE LABEL BUFFER LENGTH
  337. FLBFL EQU 100B/NWCE*2000 FILE LIST BUFFER LENGTH
  338. FLCBL EQU 1001B FILE LIST CIRCULAR BUFFER LENGTH
  339. CWBFL EQU 1 CONTROL WORD BUFFER LENGTH
  340. MSFBL EQU 10001B *COMCMSF* SORT FILES BUFFER LENGTH
  341. PFLBL EQU 1001B PROCESSED FILES FILE BUFFER LENGTH
  342. SABFL EQU 1000B SUMMARY FILE ASSEMBLY BUFFER LENGTH
  343. SRTBL EQU 20000B SORT BUFFER LENGTH
  344. SSBFL EQU 100B SYSTEM SECTOR BUFFER LENGTH
  345. SUMBL EQU 1001B SUMMARY FILE BUFFER LENGTH
  346. TDBFL EQU 511 TEMPORARY DATA BUFFER LENGTH
  347. CIBFL EQU 3001B CATALOG IMAGE BUFFER LENGTH
  348. CIRTL EQU NWCD*NDEV+1 *CIR* CATALOG TRACK DIRECTORY LENGTH
  349. LBUFL EQU 1001B LIST CIR ENTRIES OUTPUT BUFFER LENGTH
  350. PFMBL EQU NWCE+1 *PFM* CATLIST BUFFER LENGTH
  351. DSPBL EQU 7 *DSP* PARAMETER BLOCK LENGTH
  352. ODEBL EQU 20B OPTICAL DISK EXTENSION BUFFER LENGTH
  353.  
  354. * MISCELLANEOUS CONSTANTS.
  355.  
  356. CWSW EQU 5 CONTROL WORD STATUS WORD IN FET
  357. FEDT EQU 1 FILE DATA ERROR CODE
  358. FEPM EQU 2 FILE PERMIT ERROR CODE
  359. DLSS EQU 4 DATA LINKAGE SYSTEM SECTOR CODE
  360. DLEI EQU 2 DATA LINKAGE EOI CODE
  361. DLEF EQU 1 DATA LINKAGE EOF CODE
  362. NCES EQU 100B/NWCE NUMBER OF CATALOG ENTRIES PER SECTOR
  363.  
  364. * *COMSPFS* EQUIVALENCES.
  365.  
  366. CPAR EQU /COMSPFS/CPL
  367. IDSA EQU /COMSPFS/PADR
  368. LBWD EQU /COMSPFS/LBWD
  369.  
  370. * *SETPFP*/*GETPFP* FLAG CONSTANTS.
  371.  
  372. FMPR EQU 10B FAMILY NAME PARAMETER FLAG
  373. PKPR EQU 4 PACKNAME PARAMETER FLAG
  374. UNPR EQU 2 USER NAME PARAMETER FLAG
  375. UIPR EQU 1 USER INDEX PARAMETER FLAG
  376. TITLE RESERVED LOCATIONS.
  377. ORG /COMSPFS/OVLB
  378.  
  379.  
  380. * RESERVED LOCATIONS.
  381.  
  382.  
  383. PFLRL BSS 0
  384.  
  385.  
  386. ACEA DATA 77000B END OF ARCHIVE FILE CONTROL WORD
  387. AFLI VFD 60/0LPFDUMP ARCHIVE FILE LABEL IDENTIFIER
  388. ANCE CON 0 ADDRESS OF NEW CATALOG ENTRIES
  389. AREF CON 0 ARCHIVE FILE READ ERROR FLAG
  390. BFCA CON 0 BAD FILE CATALOG ADDRESS
  391. CBFO CON 1 CATALOG BUFFER ORDINAL
  392. CCTR CON 0 CURRENT CATALOG TRACK
  393. CEWF CON 0 CATALOG ENTRIES WRITTEN FLAG
  394. CIFC CON 0 *CIR* REMAINING FILE COUNT
  395. CSWC CON 0 CATALOG SECTOR WORD COUNT
  396. DDMA CON 0 DESTINATION DEVICE *MSTT* ADDRESS
  397. EOLF CON 0 END OF LOAD FLAG
  398. FLOF CON 0 FILE LIST OVERFLOW FLAG
  399. FLPT CON 0 FILE LIST POINTER
  400. INCF CON 0 INCREMENTAL LOAD FLAG
  401. IPFF CON 0 INCOMPLETE PERMANENT FILE FLAG
  402. MAEQ CON 0 MASTER DEVICE EST ORDINAL
  403. MMSK CON 0 CURRENT MASTER MASK
  404. NCTR CON 0 NUMBER OF CATALOG TRACKS
  405. PAFL CON 0 *PFU* ACTIVE FLAG
  406. PFCO CON 0 PFC ONLY FLAG
  407. RCWF CON 0 CONTROL WORD RE-USE FLAG
  408. RICT CON 0 RANDOM INDEX COUNTER
  409. SKER CON 0 SKIP TO EOR FLAG
  410. UDAT CON 0 UTILITY CONTROL DATE UPDATE FLAG
  411.  
  412.  
  413. TFST BSSZ NCES*MXCBS FILE STATUS TABLE
  414. TITLE MESSAGE CONSTANTS.
  415. * DISPLAYED MESSAGE CONSTANTS.
  416.  
  417.  
  418. MSGA DATA 10HLOADING
  419. MSGC DATA 40C PFLOAD DEVICE FAM/PACK
  420. MSGE DATA 10HSKIPPING
  421. MSGH DATA 40HEND OF LOAD FILE - SEE RIGHT SCREEN.
  422. MSGJ DATA 30C SETTING UTILITY INTERLOCK.
  423. MSGK DATA 30C CLEARING UTILITY INTERLOCK.
  424. MSGP DATA 40CENTERED VSN TOO LONG.
  425. MSGQ DATA 40CNO VSN ENTERED.
  426. MSGT DATA 40HINCORRECT OPTION.
  427. MSGV DATA 40CARCHIVE LABEL BAD, SELECT NEW VSN.
  428. MSGW DATA C*$REQUEST K DISPLAY.*
  429. BLNK DATA 40H
  430. SPACE 4,10
  431. * ERROR MESSAGES.
  432.  
  433.  
  434. ERAB DATA C* ARCHIVE FILE BLOCK ERROR, FN=???????, UI=!!!!!!.*
  435. ERAL DATA C* ERROR IN ARCHIVE FILE LABEL.*
  436. ERAN DATA C* ALTERNATE DEVICE NOT FOUND, FN=???????, UI=!!!!!!.*
  437. ERAR DATA C* ARCHIVE FILE READ ERROR, FN=???????, UI=!!!!!!.*
  438. ERCR DATA C* CATALOG READ ERROR, FN=???????, UI=!!!!!!.*
  439. ERCW DATA C* CATALOG WRITE ERROR, FN=???????, UI=!!!!!!.*
  440. ERDW DATA C* DATA WRITE ERROR, FN=???????, UI=!!!!!!.*
  441. EREO DATA C* FILE LOAD SUPPRESSED BY ERROR OPTION, FN=???????, UI
  442. ,=!!!!!!.*
  443. ERER DATA C* MISSING EOR, FN=???????, UI=!!!!!!.*
  444. ERFT DATA C* FILE TRUNCATED, FN=???????, UI=!!!!!!.*
  445. ERID DATA C* ERROR IDLE DETECTED, FN=???????, UI=!!!!!!.*
  446. ERIN DATA C* INCORRECT NAME/INDEX, FN=???????, UI=!!!!!!.*
  447. ERIS DATA C* ERROR IDLE SET, FN=???????, UI=!!!!!!.*
  448. ERND DATA C* NO DEVICE FOR FILE ACCESS LEVEL, FN=???????, UI=!!!!
  449. ,!!.*
  450. ERNE DATA C* NO EOI FOR FILE, FN=???????, UI=!!!!!!.*
  451. ERNS DATA C* NO SPACE FOR FILE, FN=???????, UI=!!!!!!.*
  452. ERPE DATA C* ERROR ON FILE PURGE, FN=???????, UI=!!!!!!.*
  453. ERPW DATA C* PERMIT WRITE ERROR, FN=???????, UI=!!!!!!.*
  454. ERTL DATA C* TRACK LIMIT, FN=???????, UI=!!!!!!.*
  455. SPACE 4,10
  456. * FILE COUNT MESSAGES.
  457.  
  458.  
  459. LDMS DATA C* ?????? FILE! LOADED.*
  460. SEMS DATA C* ?????? FILE! SKIPPED WITH ERRORS.*
  461. LEMS DATA C* ?????? FILE! LOADED WITH DATA ERRORS.*
  462. SPACE 4,10
  463. * INFORMATIVE MESSAGES.
  464.  
  465.  
  466. AEMS DATA C* READ ERRORS ENCOUNTERED ON ARCHIVE FILE.*
  467. TITLE FETS.
  468. * FETS.
  469.  
  470.  
  471. CATS BSS 0 CATALOG TRACKS
  472. ZZZZZG1 FILEB CBUF,CBUFL,FET=10D
  473.  
  474. PETS BSS 0 PERMIT ENTRIES
  475. ZZZZZG2 FILEB PBUF,PBUFL,FET=10D
  476.  
  477. DATA BSS 0 FILE DATA
  478. ZZZZZG3 FILEB DBUF,DBUFL,FET=10D
  479.  
  480. T BSS 0 ARCHIVE FILE
  481. TAPE FILEB MBUF,MBUFL,EPR,FET=14D
  482. ORG TAPE+8
  483. VFD 1/0,1/1,58/0
  484. ORG TAPE+14
  485.  
  486. ODEB BSSZ ODEBL OPTICAL DISK EXTENSION BUFFER
  487.  
  488. CIRF BSS 0 CATALOG IMAGE RECORD
  489. ZZZZZG4 RFILEB CIBF,CIBFL,FET=10D
  490.  
  491. FO BSS 0 FILE LIST OVERFLOW
  492. ZZZZZG5 FILEB FLCB,FLCBL,FET=10D
  493.  
  494. P BSS 0 PURGE, CATLIST FET FOR OP=R
  495. PURG FILEB PFMB,PFMBL,EPR,FET=13
  496.  
  497. LCIR BSS 0 OUTPUT
  498. ZZZZZG6 FILEB LBUF,LBUFL,FET=10D
  499.  
  500. UIFT FILEB 0,0,(FET=10) FET TO CONTROL UTILITY INTERLOCK
  501. UIFL BSSZ 1 UTILITY INTERLOCK FLAG
  502.  
  503.  
  504. ** NOTE - THE STATUS PORTION OF THE *CATS*, *PETS*, AND *DATA*
  505. * FETS ARE USED IN THE FOLLOWING MANNER.
  506. *
  507. *T, 42/ FILENAME,14/0,1/ C,1/ R,1/ W,1/ F
  508. *
  509. * C = COMPLETION OF LOAD (*DATA*).
  510. * R = FORCED READ - FILL BUFFER (*CATS*).
  511. * W = FORCED WRITE - EMPTY BUFFER (ALL FILES).
  512. * F = *PFU* FINISHED.
  513. TITLE MAIN LOOP.
  514. * MAIN LOOP.
  515.  
  516.  
  517. PFL RJ PRS PRESET PROGRAM
  518.  
  519. * CHECK FOR END OF LOAD.
  520.  
  521. PFL1 RJ CEL CHECK FOR END OF LOAD
  522. ZR X6,PFL2 IF NOT END OF LOAD
  523. RJ EOL PROCESS END OF LOAD
  524. EQ END TERMINATE
  525.  
  526. PFL2 RJ PCB PROCESS CATALOG BLOCK
  527. ZR X6,PFL1 IF FILE NOT TO BE LOADED
  528.  
  529. * CHECK FOR PERMIT ENTRIES.
  530.  
  531. RJ RCW READ CONTROL WORD
  532. SX1 X1+2
  533. ZR X1,PFL1 IF READ ERROR
  534. SX5 X3-2 BLOCK CODE
  535. SA4 TCBF+FCRI CATALOG PERMIT RANDOM INDEX
  536. LX4 24
  537. MX0 36
  538. BX4 -X0*X4
  539. NZ X5,PFL5 IF NO PERMITS ON ARCHIVE FILE
  540. NZ X4,PFL4 IF PERMIT RANDOM INDEX PRESENT
  541. PFL3 SA1 TCBF+FCUI
  542. SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...*
  543. RJ SFE SEND ERROR MESSAGE
  544. RJ SER SKIP TO END OF RECORD
  545. EQ PFL1 FILE NOT TO BE LOADED
  546.  
  547. * PROCESS PERMITS.
  548.  
  549. PFL4 RJ PPB PROCESS PERMIT BLOCK
  550. ZR X6,PFL1 IF FILE NOT TO BE LOADED
  551. EQ PFL6 PROCESS DATA
  552.  
  553. PFL5 ZR X4,PFL7 IF NO PERMITS IN CATALOG
  554. EQ PFL3 PROCESS ARCHIVE FILE ERROR
  555.  
  556. * PROCESS DATA.
  557.  
  558. PFL6 RJ RCW READ CONTROL WORD
  559. PFL7 SA1 PFCO *PFC ONLY* FLAG
  560. NG X3,PFL10 IF PHYSICAL EOR ON ARCHIVE MEDIUM
  561. BX5 X3
  562. SX3 X3-3
  563. BX4 X1+X3
  564. NG X4,PFL8 IF NO DATA BLOCK PRESENT
  565. ZR X4,PFL11 IF DATA PRESENT AND *PFC ONLY*
  566. ZR X3,PFL10 IF DATA PRESENT
  567. PFL8 NZ X1,PFL11 IF NO DATA AND NOT *PFC ONLY*
  568. PFL9 RJ WCE WRITE CATALOG ENTRY
  569. EQ PFL1 CHECK FOR END OF LOAD
  570.  
  571. PFL10 ZR X1,PFL9 IF PFC ONLY
  572. RJ PDB PROCESS DATA BLOCK
  573. NZ X6,PFL9 IF FILE TO BE LOADED
  574. EQ PFL1 CHECK FOR END OF LOAD
  575.  
  576. PFL11 NG X5,PFL12 IF ARCHIVE MEDIUM AT EOR/EOF/EOI
  577. RJ SER SKIP TO EOR
  578. PFL12 SA1 TCBF+FCUI
  579. SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...*
  580. RJ SFE SEND ERROR MESSAGE
  581. EQ PFL1 CHECK FOR END OF LOAD
  582. TITLE SUBROUTINES.
  583. APR SPACE 4,15
  584. ** APR - ABORT PROCESSOR.
  585. *
  586. * EXIT ANY INCOMPLETE PERMANENT FILE DELETED.
  587. * COMPLETE PERMANENT FILES FLUSHED TO MASS STORAGE.
  588. * UTILITY PROCESSOR DROPPED.
  589. * UTILITY INTERLOCK CLEAR.
  590. * PERMANENT FILE PARAMETERS RESTORED.
  591. * *PFLOAD* SYSTEM FILES RETURNED.
  592. *
  593. * CALLS CIN, DUP, FPF.
  594. *
  595. * MACROS RETURN, SETPFP.
  596.  
  597.  
  598. APR SUBR ENTRY/EXIT
  599. RJ FPF FLUSH PERMANENT FILES
  600. RJ DUP DROP UTILITY PROCESSOR
  601. RJ CIN CLEAR UTILITY INTERLOCK
  602. SETPFP GPAR RESTORE PERMANENT FILE PARAMETERS
  603. RETURN CATS RETURN *PFLOAD* SYSTEM FILES
  604. RETURN PETS
  605. RETURN DATA
  606. RETURN CIRF
  607. RETURN FO
  608. EQ APRX RETURN
  609. ADF SPACE 4,20
  610. ** ADF - ASSIGN DIRECT ACCESS FILE DEVICE.
  611. *
  612. * ENTRY PFC ENTRY IN *TCBF*.
  613. *
  614. * EXIT (B2) = 0 IF DEVICE ASSIGNED.
  615. * (B2) = ERROR MESSAGE ADDRESS IF NO DEVICE ASSIGNED.
  616. * (X7) = *MSTT* ADDRESS OF DEVICE IF DEVICE ASSIGNED.
  617. * (X7) = *MSTT* ADDRESS OF DEVICE IF NO SPACE FOR FILE
  618. * ERROR AND FILE MUST RESIDE ON ON THAT DEVICE.
  619. * (X7) = 0 IF NO SPACE FOR FILE ERROR AND DEVICE
  620. * SELECTION BY LOAD LEVELING.
  621. *
  622. * USES X - 1, 2, 3, 4, 5, 6, 7.
  623. * A - 1, 2, 3, 4, 5.
  624. * B - 2, 6.
  625. *
  626. * CALLS CAL, RAS, SFD, SRD.
  627.  
  628.  
  629. ADF9 SB2 B0+ SET NO ERROR
  630.  
  631. ADF SUBR ENTRY/EXIT
  632.  
  633. * CHECK AUXILIARY DEVICE LOAD.
  634.  
  635. SA2 CPAR+/COMSPFS/CPPN
  636. SA4 TCBF+FCUI GET USER INDEX
  637. SA1 CPAR+/COMSPFS/CPOP GET UTILITY OPTIONS
  638. ZR X2,ADF1 IF NOT AUXILIARY DEVICE LOAD
  639. SA5 MSTT+1 GET DEVICE PARAMETERS
  640. EQ ADF4 CHECK ACCESS LEVEL AND SPACE AVAILABLE
  641.  
  642. * CHECK LOAD LEVELING OPTION AND SUBFAMILY USER INDEX.
  643.  
  644. ADF1 SA3 TCBF+FCDN GET DEVICE NUMBER FROM CATALOG
  645. MX6 -3
  646. BX6 -X6*X4 LAST DIGIT OF USER INDEX
  647. BX4 X4-X6
  648. SB6 X6+8-59 SET DAPF MASK SHIFT COUNT
  649. SX4 X4-SBUI
  650. SX2 B0+ SET MASTER DEVICE
  651. ZR X4,ADF2 IF SUBFAMILY USER INDEX
  652. LX3 -36
  653. LX1 59-54
  654. MX6 -6
  655. NG X1,ADF5 IF *OP=L* SPECIFIED
  656. BX2 -X6*X3 DEVICE NUMBER FROM PFC
  657.  
  658. * SEARCH FOR DEVICE IN CURRENT SYSTEM.
  659.  
  660. ADF2 RJ SFD SEARCH FOR DEVICE
  661. ZR X1,ADF3 IF DEVICE NOT FOUND
  662. SA5 A1+B1 GET DEVICE PARAMETERS
  663. AX6 X5,B6
  664. ZR X4,ADF4 IF SUBFAMILY USER INDEX, IGNORE DAPF MASK
  665. NG X6,ADF4 IF USER INDEX ALLOWED ON DEVICE
  666.  
  667. * CHECK DESTINATION DEVICE IF DEVICE FROM PFC NOT FOUND.
  668.  
  669. ADF3 SA1 DDMA GET DESTINATION DEVICE *MSTT* ADDRESS
  670. ZR X1,ADF7 IF DESTINATION DEVICE NOT SPECIFIED
  671. SA5 X1+B1 GET DEVICE PARAMETERS
  672. AX6 X5,B6
  673. PL X6,ADF7 IF USER INDEX NOT ALLOWED ON DEVICE
  674.  
  675. * CHECK ACCESS LEVELS AND SPACE ON DEVICE.
  676.  
  677. ADF4 RJ CAL CHECK ACCESS LEVELS
  678. NG X6,ADF8 IF ACCESS LEVEL ERROR
  679. SX3 B0 SET NO SPACE INCREMENT
  680. RJ RAS RETURN AVAILABLE SPACE
  681. SX7 A5-B1 SET DEVICE POINTER
  682. NZ X1,ADF9 IF SPACE FOR FILE ON DEVICE
  683. EQ ADF6 PROCESS NO SPACE FOR FILE
  684.  
  685. * PROCESS LOAD LEVELING OPTION.
  686.  
  687. ADF5 RJ SRD SELECT RESIDENCY DEVICE
  688. SX7 B2 SET DEVICE POINTER
  689. GT B2,B1,ADF9 IF DEVICE FOUND
  690. SX7 B0 CLEAR DEVICE POINTER FOR NO SPACE ERROR
  691. NG B2,ADF7 IF NO DEVICE FOR USER INDEX
  692. ZR B2,ADF8 IF NO DEVICE FOR ACCESS LEVEL
  693.  
  694. * PROCESS FILE ASSIGNMENT ERRORS.
  695.  
  696. ADF6 SB2 ERNS * NO SPACE FOR FILE ...*
  697. EQ ADFX RETURN
  698.  
  699. ADF7 SB2 ERAN * ALTERNATE DEVICE NOT FOUND ...*
  700. EQ ADFX RETURN
  701.  
  702. ADF8 SB2 ERND * NO DEVICE FOR FILE ...*
  703. EQ ADFX RETURN
  704. AUP SPACE 4,20
  705. ** AUP - ACTIVATE UTILITY PROCESSOR.
  706. *
  707. * (PAFL) = 0 IF *PFU* NOT ACTIVE.
  708. * = 1 IF *PFU* ALREADY ACTIVE.
  709. * (MAEQ) = MASTER EQUIPMENT.
  710. * (CPDN) = DEVICE NUMBER.
  711. * (TCBF+FCUI) = USER INDEX TO ACTIVATE *PFU* ON.
  712. *
  713. * EXIT (PAFL) = 1.
  714. * (RICT) = RANDOM INDEX OF *PETS* EOI.
  715. * *PFU* ACTIVATED IF NOT ALREADY ACTIVE.
  716. * *CATS* AND *PETS* FILES SET UP FOR PROCESSING.
  717. *
  718. * USES X - 1, 2, 3, 6, 7.
  719. * A - 1, 2, 3, 6, 7.
  720. *
  721. * CALLS RCT.
  722. *
  723. * MACROS CALLPFU, RECALL.
  724.  
  725.  
  726. AUP SUBR ENTRY/EXIT
  727. SA2 PAFL *PFU* ACTIVITY FLAG
  728. SA3 MAEQ
  729. NZ X2,AUPX IF *PFU* ALREADY ACTIVE
  730. SA2 CPAR+/COMSPFS/CPDN
  731. LX3 23-11 SET MASTER EQUIPMENT
  732. BX6 X3
  733. SA1 FAPM SET FET ADDRESS PARAMETER
  734. SA6 DATA+FTDW
  735. LX2 54 SET DEVICE NUMBER
  736. BX7 X2+X1
  737. SA7 CATS+FTPM
  738. SA1 CATS CLEAR FET STATUS FIELDS
  739. SA2 PETS
  740. MX3 42
  741. BX6 X3*X1
  742. SX1 B1 SET *CATS* FET COMPLETE
  743. BX7 X6+X1
  744. SA7 A1
  745. BX6 X3*X2
  746. SA1 DATA
  747. SA6 A2
  748. BX7 X3*X1
  749. SA7 A1
  750. BX6 X6-X6 CLEAR SECTOR COUNTS
  751. SA6 CATS+FTSC
  752. SA6 PETS+FTSC
  753. SA6 DATA+FTSC
  754. SA6 DATA+FTDL CLEAR DATA FILE STATE WORD
  755. CALLPFU CATS,CTLM ACTIVATE *PFU* LOAD PROCESSOR
  756. RECALL DATA WAIT FOR *PFU* TO INITIALIZE
  757. RJ RCT READ CATALOG TRACK
  758. SA1 PETS+FTSC SET PETS RANDOM INDEX
  759. MX2 24
  760. BX6 X2*X1
  761. LX6 -36
  762. SA6 RICT
  763. EQ AUPX RETURN
  764.  
  765.  
  766. FAPM VFD 6/0,18/DATA,18/PETS,18/PAFL FET ADDRESS PARAMETER
  767. BFL SPACE 4,30
  768. ** BFL - BUILD FILE LIST.
  769. *
  770. * ENTRY (A0) = ADDRESS OF CATALOG SECTOR.
  771. * (X0) = WORD COUNT OF CATALOG SECTOR.
  772. * (CSWC) = WORD COUNT OF CATALOG SECTOR.
  773. * (FLOF) = 0 IF NO FILE LIST OVERFLOW.
  774. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE.
  775. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER.
  776. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST.
  777. *
  778. * EXIT (A0) = LWA+1 OF CATALOG SECTOR.
  779. * (FLOF) = 0 IF NO FILE LIST OVERFLOW.
  780. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE.
  781. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER.
  782. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST.
  783. * FILE NAME AND USER INDEX FOR EACH CATALOG ENTRY IS
  784. * ADDED TO THE FILE LIST.
  785. * OVERFLOW PORTIONS OF THE FILE LIST ARE WRITTEN TO A
  786. * SCRATCH FILE.
  787. * SCRATCH FILE BUFFER IS FLUSHED IF FILE LIST OVERFLOW
  788. * HAS OCCURRED AND THE CATALOG SECTOR IS SHORT.
  789. *
  790. * USES X - 0, 1, 2, 5, 6, 7.
  791. * A - 0, 1, 5, 6, 7.
  792. *
  793. * MACROS WRITE, WRITEW.
  794.  
  795.  
  796. BFL SUBR ENTRY/EXIT
  797. BFL1 SX0 X0-NWCE
  798. NG X0,BFL3 IF NO MORE CATALOG ENTRIES
  799. SA5 A0+FCFN+FCUI*0 GET FILE NAME AND USER INDEX
  800. SA1 FLPT
  801. MX6 -18
  802. BX6 -X6*X5 CHECK USER INDEX
  803. ZR X6,BFL2.2 IF CATALOG HOLE
  804. SX6 X6-IFUI
  805. SX2 X1-FLBF-FLBFL
  806. ZR X6,BFL2.2 IF INDIRECT ACCESS FLAW
  807. NG X2,BFL2 IF FILE LIST NOT FULL
  808. SX6 B1+ SET FILE LIST OVERFLOW
  809. SA6 FLOF
  810. WRITEW FO,FLBF+FLBFL-100B,100B WRITE LAST SECTOR OF BUFFER
  811. SA1 FLPT BACK BUFFER POINTER UP ONE SECTOR
  812. SX1 X1-100B
  813. BFL2 SX6 X1+B1 ADVANCE BUFFER POINTER
  814. BX7 X5
  815. SA6 A1 UPDATE BUFFER POINTER
  816. SA7 X1 ENTER FILE IN LIST
  817. BFL2.2 SA0 A0+NWCE ADVANCE CATALOG SECTOR ADDRESS
  818. EQ BFL1 PROCESS NEXT CATALOG ENTRY
  819.  
  820. BFL3 SX2 A0+NWCE SET POINTER TO END OF SECTOR
  821. IX0 X0+X2
  822. SA0 X0
  823. SA1 CSWC
  824. SX2 X1-100B
  825. ZR X2,BFLX IF NOT SHORT SECTOR
  826. SA1 FLOF
  827. ZR X1,BFLX IF NO FILE LIST OVERFLOW
  828. WRITE FO FLUSH SCRATCH FILE BUFFER
  829. EQ BFLX RETURN
  830. CAL SPACE 4,15
  831. ** CAL - CHECK ACCESS LEVELS.
  832. *
  833. * ENTRY (TCBF) = CATALOG ENTRY OF FILE.
  834. * (X5) = SECOND WORD OF *MSTT* ENTRY.
  835. * (A5) = ADDRESS OF SECOND WORD OF *MSTT* ENTRY.
  836. *
  837. * EXIT (X6) .LT. 0 IF THE ACCESS LEVEL OF THE FILE IS NOT
  838. * WITHIN THE DEVICE ACCESS LEVEL LIMITS OF THE
  839. * DEVICE.
  840. * (X5) = SECOND WORD OF *MSTT* TABLE ENTRY.
  841. * (A5) = ADDRESS OF SECOND WORD OF *MSTT* ENTRY.
  842. *
  843. * USES X - 0, 1, 5, 6, 7.
  844. * A - 1.
  845.  
  846.  
  847. CAL SUBR ENTRY/EXIT
  848. SA1 SYSS CHECK SECURITY MODE
  849. SX6 B0+ SET NO ERROR
  850. ZR X1,CALX IF NOT SECURE SYSTEM
  851. SA1 TCBF+FCAL GET ACCESS LEVEL OF FILE
  852. MX0 -3
  853. LX5 -30
  854. BX6 -X0*X5 DEVICE ACCESS LEVEL UPPER LIMIT
  855. LX5 -3
  856. LX1 -36
  857. BX7 -X0*X5 DEVICE ACCESS LEVEL LOWER LIMIT
  858. BX1 -X0*X1 FILE ACCESS LEVEL
  859. LX5 33 RESTORE *MSTT* WORD
  860. IX6 X6-X1
  861. NG X6,CALX IF ACCESS LEVEL TOO HIGH FOR DEVICE
  862. IX6 X1-X7 ERROR IF ACCESS LEVEL TOO LOW FOR DEVICE
  863. EQ CALX RETURN
  864. CDE SPACE 4,20
  865. ** CDE - CHECK DEVICE ENVIRONMENT.
  866. *
  867. * ENTRY PFC ENTRY IN *TCBF*.
  868. *
  869. * EXIT (B2) = 0 IF NO ERROR.
  870. * (B2) = ERROR MESSAGE ADDRESS IF FILE CANNOT BE LOADED.
  871. * (X7) = PFC ENTRY *FCDN* WORD SET WITH DEVICE NUMBER IF
  872. * NO ERROR.
  873. * (X7) = *MSTT* ADDRESS OF REQUIRED DEVICE IF NO SPACE
  874. * FOR FILE ERROR AND LOAD LEVELING NOT USED.
  875. * (X7) = 0 IF NO SPACE FOR FILE ERROR AND LOAD LEVELING
  876. * USED IN DEVICE SELECTION.
  877. *
  878. * USES X - 1, 2, 5, 6, 7.
  879. * A - 1, 2, 5, 6.
  880. * B - 2.
  881. *
  882. * CALLS ADF, CAL, SFD.
  883.  
  884.  
  885. CDE SUBR ENTRY/EXIT
  886.  
  887. * CHECK MASTER DEVICE ACCESS LEVELS.
  888.  
  889. SX2 B0 SET MASTER DEVICE SEARCH
  890. RJ SFD SEARCH FOR DEVICE
  891. SA5 A1+B1
  892. RJ CAL CHECK ACCESS LEVEL
  893. SB2 ERND * NO DEVICE FOR FILE ...*
  894. NG X6,CDEX IF MASTER DEVICE ACCESS LEVEL CONFLICT
  895. SA1 TCBF+FCBS CHECK FILE TYPE
  896. SA2 PFCO
  897. LX1 59-11
  898. SX6 B0 SET TO CLEAR DEVICE NUMBER
  899. PL X1,CDE1 IF INDIRECT ACCESS FILE
  900. ZR X2,CDE1 IF *PFC ONLY* FILE
  901. RJ ADF ASSIGN DIRECT ACCESS FILE DEVICE
  902. NZ B2,CDEX IF ERROR IN DEVICE ASSIGNMENT
  903.  
  904. * CHECK MASTER DEVICE ASSIGNMENT.
  905.  
  906. SA1 X7+ GET DEVICE NUMBER FROM *MSTT*
  907. SA2 CPAR+/COMSPFS/CPDN MASTER DEVICE NUMBER
  908. MX6 -6
  909. BX6 -X6*X1 DEVICE NUMBER
  910. BX2 X6-X2
  911. NZ X2,CDE1 IF SELECTED DEVICE IS NOT MASTER
  912. SX6 B0 CLEAR DEVICE NUMBER
  913.  
  914. * SET DEVICE NUMBER IN *FCDN* WORD.
  915.  
  916. CDE1 SA1 TCBF+FCDN
  917. MX7 -6
  918. LX7 36
  919. LX6 36
  920. BX7 X7*X1
  921. SB2 B0 SET NO ERROR
  922. BX7 X7+X6 MERGE DEVICE NUMBER
  923. EQ CDEX RETURN
  924. CEL SPACE 4,20
  925. ** CEL - CHECK FOR END OF LOAD.
  926. *
  927. * ENTRY (SKER) = 0 IF SKIP TO EOR NOT REQUIRED.
  928. * = NON-ZERO IF SKIP TO EOR REQUIRED.
  929. *
  930. * EXIT (X6) = 0 IF NOT END OF LOAD.
  931. * = NON-ZERO IF END OF LOAD.
  932. * (CWBF) = CATALOG CONTROL WORD IF NOT END OF LOAD.
  933. * ARCHIVE FILE TRANSITIONS PERFORMED AS NECESSARY.
  934. * ARCHIVE LABEL PROCESSED IF PRESENT.
  935. *
  936. * USES X - 1, 2, 5, 6, 7.
  937. * A - 1, 2, 6.
  938. * B - 2.
  939. *
  940. * CALLS ART, CIN, DUP, IFL, PAL, RCW, SCI, SER.
  941. *
  942. * MACROS READCW, RECALL, SKIPFF.
  943.  
  944.  
  945. CEL SUBR ENTRY/EXIT
  946.  
  947. * PROCESS FILE SKIP FLAG.
  948.  
  949. SA1 SKER
  950. ZR X1,CEL1 IF FILE SKIP FLAG NOT SET
  951. BX6 X6-X6 CLEAR FILE SKIP FLAG
  952. SA6 A1
  953. RJ DUP DROP UTILITY PROCESSOR
  954. RJ CIN CLEAR UTILITY INTERLOCK
  955. RJ SER SKIP TO END OF RECORD
  956.  
  957. * CHECK IF ALL SELECTED FILES HAVE BEEN LOADED.
  958.  
  959. CEL1 SA1 AFDM GET ARCHIVE FILE DEVICE MASK
  960. SA2 FLSM GET REMAINING FILE SELECTIONS MASK
  961. SA3 CPAR+/COMSPFS/CPDI
  962. SA4 MASK GET ACTIVE DEVICES MASK
  963. BX1 X1*X2
  964. NZ X3,CEL1.1 IF DESTINATION USER INDEX SPECIFIED
  965. BX1 X1*X4
  966. CEL1.1 ZR X1,CEL10 IF LAST ARCHIVE FILE AND NO FILES SELECTED
  967. SA1 /COMSPFS/FISP
  968. SA2 /COMSPFS/NFIS
  969. ZR X1,CEL2 IF NO USER INDEX/FILE NAME SELECTIONS
  970. ZR X2,CEL10 IF ALL SPECIFIED FILES FOUND
  971. CEL2 SA1 INCF
  972. ZR X1,CEL2.1 IF NOT INCREMENTAL LOAD
  973. SA1 CIFC
  974. ZR X1,CEL10 IF END OF CATALOG IMAGE
  975. CEL2.1 SA2 EOLF
  976. ZR X2,CEL3 IF END OF LOAD NOT REACHED
  977. SA2 CPAR+/COMSPFS/CPNB
  978. SB2 X2+
  979. LE B2,B1,CEL9 IF FILE COUNT ONE
  980. CEL2.2 RJ SER SKIP TO END OF RECORD
  981. PL X1,CEL2.2 IF NOT EOF/EOI
  982. EQ CEL7 PROCESS EOF/EOI
  983.  
  984. * PROCESS NEXT ARCHIVE FILE CONTROL WORD.
  985.  
  986. CEL3 RJ RCW READ ARCHIVE FILE CONTROL WORD
  987. SX6 X3-1
  988. NZ X7,CEL5 IF READ ERROR
  989. ZR X6,CELX IF CATALOG CONTROL WORD
  990. ZR X3,CEL4 IF LABEL CONTROL WORD
  991. NG X1,CEL7 IF EOF/EOI
  992. NZ X1,CEL3 IF EOR
  993. SA1 CWBF CHECK FOR END OF LOAD
  994. SA2 ACEA
  995. BX6 X1-X2
  996. ZR X6,CEL6 IF END OF ARCHIVE FILE CONTROL WORD
  997. RJ DUP DROP UTILITY PROCESSOR
  998. RJ CIN CLEAR UTILITY INTERLOCK
  999. RJ SER SKIP TO END OF RECORD
  1000. EQ CEL3 GET NEXT CONTROL WORD
  1001.  
  1002. * PROCESS ARCHIVE FILE LABEL.
  1003.  
  1004. CEL4 RJ DUP DROP UTILITY PROCESSOR
  1005. RJ CIN CLEAR UTILITY INTERLOCK
  1006. SX6 B1+ SET CONTROL WORD RE-USE FLAG
  1007. SA6 RCWF
  1008. RJ PAL PROCESS ARCHIVE LABEL
  1009. ZR X6,CEL8 IF NOT A BAD LABEL
  1010. RJ IFL INITIALIZE OUTPUT FILE FOR FILE PROCESSING
  1011. SB2 ERAL * ERROR IN ACHIVE FILE LABEL.*
  1012. RJ SEM
  1013. EQ CEL3 GET NEXT CONTROL WORD
  1014.  
  1015. * PROCESS ARCHIVE FILE READ ERROR.
  1016.  
  1017. CEL5 RJ DUP DROP UTILITY PROCESSOR
  1018. RJ CIN CLEAR UTILITY INTERLOCK
  1019. RJ SER SKIP TO END OF RECORD
  1020. EQ CEL3 GET NEXT CONTROL WORD
  1021.  
  1022. * PROCESS END OF ARCHIVE FILE CONTROL WORD.
  1023.  
  1024. CEL6 RECALL TAPE
  1025. SA1 X2+B1 REWIND BUFFER
  1026. SX6 X1
  1027. SA6 A1+B1
  1028. SA6 A6+B1
  1029. SX6 30B CHECK FOR EOF/EOI ON ARCHIVE FILE
  1030. SA1 X2
  1031. BX7 X6*X1
  1032. BX6 X7-X6
  1033. ZR X6,CEL7 IF ARCHIVE FILE AT EOF/EOI
  1034. SKIPFF X2,B1,R SKIP TO EOF
  1035.  
  1036. * PROCESS MULTIPLE FILE ARCHIVE OPTION.
  1037.  
  1038. CEL7 SA1 TAPE
  1039. LX1 59-9
  1040. NG X1,CEL9 IF ARCHIVE FILE AT EOI
  1041. SA1 CPAR+/COMSPFS/CPNB CHECK FILE COUNT
  1042. SB2 X1
  1043. SX6 B2-B1
  1044. LE B2,B1,CEL9 IF NO MORE FILES TO PROCESS
  1045. SA6 A1+ SET NEW FILE COUNT
  1046. RJ DUP DROP UTILITY PROCESSOR
  1047. RJ CIN CLEAR UTILITY INTERLOCK
  1048. RJ PSF PROCESS SORTED FILE OUTPUT FOR LAST FILE
  1049. READCW TAPE,17B INITIALIZE CONTROL WORD READ
  1050. SX6 B0+ CLEAR CONTROL WORD STATUS WORD
  1051. SA6 TAPE+CWSW
  1052. RJ PAL PROCESS ARCHIVE LABEL
  1053. ZR X6,CEL8 IF NOT BAD LABEL
  1054. SB2 ERAL * ERROR IN ACHIVE FILE LABEL.*
  1055. RJ SEM
  1056. RJ SER SKIP TO END OF RECORD
  1057. CEL8 RJ SCI SKIP CATALOG IMAGE
  1058. RJ IFL INITIALIZE OUTPUT FILE FOR FILE PROCESSING
  1059. EQ CEL3 GET NEXT CONTROL WORD
  1060.  
  1061. * CHECK INCREMENTAL LOAD STATUS.
  1062.  
  1063. CEL9 SA1 INCF
  1064. ZR X1,CEL10 IF NOT INCREMENTAL LOAD
  1065. SA1 CIFC
  1066. ZR X1,CEL10 IF END OF CATALOG IMAGE
  1067. RJ PSF PROCESS SORTED FILE OUTPUT
  1068. SX6 B0+
  1069. SA6 EOLF CLEAR END OF LOAD FLAG ON INCREMENTAL LOAD
  1070. SA6 MXDC CLEAR DEVICE POSITION AND CATALOG TRACK
  1071. SX6 377B
  1072. SA6 AFDM RESET ARCHIVE FILE DUMP MASK
  1073. RJ ART ADVANCE INCREMENTAL LOAD
  1074. ZR X6,CEL8 IF NOT END OF INCREMENTAL LOAD
  1075.  
  1076. * SET END OF LOAD STATUS.
  1077.  
  1078. CEL10 SX6 B1 SET END OF LOAD STATUS
  1079. EQ CELX RETURN
  1080. CIN SPACE 4,15
  1081. ** CIN - CLEAR PF UTILITY INTERLOCK.
  1082. *
  1083. * ENTRY (UIFL) = 0 IF UTILITY INTERLOCK NOT SET.
  1084. * = 1 IF UTILITY INTERLOCK SET.
  1085. * (MAEQ) = EQUIPMENT TO CLEAR INTERLOCK ON.
  1086. *
  1087. * EXIT (UIFL) = 0.
  1088. * *PFU* CALLED TO CLEAR UTILITY INTERLOCK IF NOT ALREADY
  1089. * CLEAR.
  1090. *
  1091. * USES X - 1, 2, 3, 6.
  1092. * A - 1, 2, 3, 6.
  1093. *
  1094. * MACROS CALLPFU, MESSAGE, MOVE.
  1095.  
  1096.  
  1097. CIN SUBR ENTRY/EXIT
  1098. SA1 UIFL CHECK PF UTILTIY INTERLOCK FLAG
  1099. SA2 MAEQ SET MASTER DEVICE EST ORDINAL
  1100. ZR X1,CINX IF UTILITY INTERLOCK ALREADY CLEAR
  1101. SX1 UIFL SET INTERLOCK FLAG ADDRESS
  1102. LX2 48
  1103. BX6 X2+X1
  1104. SA3 IDSA+/COMSPFS/ADM2 K DISPLAY MESSAGE ADDRESS
  1105. SA6 UIFT+FTPM
  1106. MOVE 3,MSGK,X3 * CLEARING UTILITY INTERLOCK.*
  1107. MESSAGE MSGK,2,R
  1108. CALLPFU UIFT,CTCU,R CLEAR PF UTILITY INTERLOCK
  1109. SA3 IDSA+/COMSPFS/ADM2 K DISPLAY MESSAGE ADDRESS
  1110. MOVE 3,BLNK,X3 CLEAR MESSAGES
  1111. MESSAGE (=C**),2,R
  1112. EQ CINX RETURN
  1113. CSP SPACE 4,20
  1114. ** CSP - CHECK SELECTION PARAMETERS.
  1115. *
  1116. * ENTRY (CPAR) = CONVERTED PARAMETER ARRAY.
  1117. * (TCBF) = CATALOG ENTRY FOR CURRENT FILE.
  1118. *
  1119. * EXIT (X6) = 0 IF FILE NOT TO BE LOADED.
  1120. * (X6) .NE. 0 IF FILE TO BE LOADED.
  1121. * DESTINATION USER INDEX SET IN *TCBF* CATALOG ENTRY IF
  1122. * SPECIFIED.
  1123. *
  1124. * USES X - 0, 1, 2, 3, 4, 6, 7.
  1125. * A - 1, 2, 3, 4, 6, 7.
  1126. * B - 2, 4.
  1127. *
  1128. * CALLS CSC.
  1129.  
  1130.  
  1131. CSP SUBR ENTRY/EXIT
  1132.  
  1133. * CHECK SELECTION CRITERIA.
  1134.  
  1135. SB4 TCBF SET PFC ADDRESS
  1136. RJ CSC CHECK SELECTION CRITERIA
  1137. ZR X6,CSPX IF FILE NOT TO BE LOADED
  1138. ZR B6,CSP2 IF NO FILE NAME SELECTION
  1139. SA1 CPAR+/COMSPFS/CPOP
  1140. SA2 CPAR+/COMSPFS/CPNB
  1141. SA3 /COMSPFS/NFIS
  1142. SA4 B6+ READ FILE NAME ENTRY
  1143. SX6 B1
  1144. LX1 59-52
  1145. SB4 X2
  1146. IX7 X3-X6 DECREMENT FILE SELECTION COUNT
  1147. PL X1,CSP1 IF REPLACE OPTION NOT SELECTED
  1148. GT B4,B1,CSP2 IF NOT LAST ARCHIVE FILE
  1149. CSP1 LX6 17-0
  1150. SA7 A3 UPDATE FILE SELECTION COUNT
  1151. BX6 X6+X4 SET FILE FOUND FLAG
  1152. SA6 B6 WRITE FILE NAME ENTRY
  1153.  
  1154. * PROCESS DESTINATION USER INDEX AND DETERMINE IF FILE-S MASTER
  1155. * DEVICE SELECTED FOR LOAD.
  1156.  
  1157. CSP2 SA1 CPAR+/COMSPFS/CPDI
  1158. SA2 TCBF+FCUI
  1159. SA3 MASK
  1160. MX7 -3
  1161. MX0 -1
  1162. ZR X1,CSP3 IF DESTINATION USER INDEX NOT SPECIFIED
  1163. MX6 42
  1164. BX6 X6*X2
  1165. BX6 X6+X1 SET DESTINATION INDEX IN CATALOG ENTRY
  1166. BX2 X1
  1167. SA6 A2+
  1168. CSP3 BX2 -X7*X2 USER INDEX BITS 0 - 2
  1169. SB2 X2
  1170. AX6 X3,B2 SELECT MASK BIT
  1171. BX6 -X0*X6
  1172. ZR X6,CSPX IF USER INDEX NOT TO BE LOADED
  1173.  
  1174. * CHECK TRUE DEVICE SELECTION.
  1175.  
  1176. SA1 CPAR+/COMSPFS/CPTD
  1177. ZR X1,CSPX IF NO TRUE DEVICE SELECTION
  1178. SA2 TMDA+X2
  1179. SA3 TCBF+FCDN
  1180. SA2 X2+
  1181. MX0 -6
  1182. LX3 24
  1183. BX2 -X0*X2 MASTER DEVICE NUMBER
  1184. BX3 -X0*X3 OLD RESIDENCY DEVICE NUMBER
  1185. IX2 X2-X1
  1186. BX3 X3-X1
  1187. ZR X2,CSPX IF FILE CATALOGED ON TRUE DEVICE
  1188. ZR X3,CSPX IF FILE RESIDED ON TRUE DEVICE
  1189. BX6 X6-X6 SET TO NOT LOAD FILE
  1190. EQ CSPX RETURN
  1191. DDS SPACE 4,10
  1192. ** DDS - DELETE DATA SPACE.
  1193. *
  1194. * ENTRY (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY.
  1195. *
  1196. * EXIT DATA SPACE FOR FILE DELETED.
  1197. *
  1198. * USES X - 1, 2, 3, 6, 7.
  1199. * A - 1, 2, 3, 6, 7.
  1200. *
  1201. * CALLS FDB, SFD.
  1202.  
  1203.  
  1204. DDS SUBR ENTRY/EXIT
  1205. RJ FDB FLUSH DATA BUFFER
  1206. SA3 CATS+2 CHECK FOR FILE WITH WRITE ERROR
  1207. SA1 X3+FCUI
  1208. SX6 X1+
  1209. SX7 X1-IFUI
  1210. ZR X6,DDSX IF WRITE ERROR ON FILE
  1211. ZR X7,DDSX IF WRITE ERROR ON FILE
  1212. SA1 X3+FCBS+FCBT* SET FIRST TRACK AND SECTOR OF FILE
  1213. MX3 -12
  1214. BX6 -X3*X1
  1215. LX3 12
  1216. BX7 X3*X1 CLEAR FIRST TRACK OF FILE
  1217. BX3 -X3*X1
  1218. LX1 59-11
  1219. ZR X3,DDSX IF NO FIRST TRACK
  1220. SA7 A1+
  1221. PL X1,DDS1 IF INDIRECT ACCESS FILE
  1222. SA2 A1+FCDN-FCBT
  1223. MX6 -6
  1224. LX2 -36
  1225. BX2 -X6*X2 SET DEVICE NUMBER
  1226. MX6 -9
  1227. RJ SFD SEARCH FOR DEVICE
  1228. LX1 -6
  1229. BX6 -X6*X1 SET EST ORDINAL
  1230. SX6 X6+4000B SET *DROP TRACKS* FLAG
  1231. DDS1 BX6 X3+X6 PUT PARAMETER IN FET
  1232. SA1 DATA SET POSITION REQUEST IN FET
  1233. MX3 42
  1234. BX7 X3*X1
  1235. SA6 DATA+FTPM
  1236. SA7 A1
  1237. EQ DDSX RETURN
  1238. DIF SPACE 4,15
  1239. ** DIF - DELETE INCOMPLETE FILE.
  1240. *
  1241. * ENTRY (IPFF) = INCOMPLETE PERMANENT FILE FLAG.
  1242. *
  1243. * EXIT (IPFF) = 0.
  1244. * (*TFST* ENTRY) = 0.
  1245. * ANY INCOMPLETE PERMANENT FILE DELETED.
  1246. *
  1247. * USES X - 1, 6.
  1248. * A - 1, 6.
  1249. *
  1250. * CALLS DDS, DPS.
  1251.  
  1252.  
  1253. DIF SUBR ENTRY/EXIT
  1254. SA1 IPFF
  1255. ZR X1,DIF1 IF NO INCOMPLETE PERMANENT FILE
  1256. RJ DDS DELETE DATA SPACE
  1257. RJ DPS DELETE PERMIT SPACE
  1258. DIF1 SA1 CBFO
  1259. SA1 TFST+X1
  1260. SX6 B0
  1261. SA6 IPFF CLEAR INCOMPLETE FILE FLAG
  1262. SA6 A1 CLEAR FILE STATUS
  1263. EQ DIFX RETURN
  1264. DPS SPACE 4,15
  1265. ** DPS - DELETE PERMIT SPACE.
  1266. *
  1267. * ENTRY (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY.
  1268. *
  1269. * EXIT PERMIT SPACE FOR FILE DELETED.
  1270. * (RICT) = UPDATED TO REFLECT DELETED PERMITS.
  1271. *
  1272. * USES X - 1, 3, 6, 7.
  1273. * A - 1, 3, 6, 7.
  1274. * B - 6, 7.
  1275. *
  1276. * CALLS FPB, WPR.
  1277. *
  1278. * MACROS RECALL.
  1279.  
  1280.  
  1281. DPS SUBR ENTRY/EXIT
  1282. RJ FPB FLUSH PERMIT BUFFER
  1283. SA3 CATS+2 GET PERMIT RANDOM INDEX
  1284. SA1 X3+FCRI
  1285. MX6 24
  1286. BX7 X6*X1
  1287. ZR X7,DPSX IF NO PERMITS
  1288. LX7 -36
  1289. SA1 X2 SET POSITION REQUEST IN FET
  1290. SA7 RICT UPDATE PERMIT RANDOM INDEX
  1291. MX3 42
  1292. BX6 X3*X1
  1293. SA7 X2+FTPM PUT RANDOM INDEX PARAMETER IN FET
  1294. SA6 X2
  1295. RECALL X2
  1296. SX7 B1+B1 SET EOI CONTROL WORD
  1297. SB6 LWRD SET BUFFER ADDRESS
  1298. LX7 54
  1299. SB7 B1 SET BUFFER WORD COUNT
  1300. SA7 B6
  1301. RJ WPR WRITE EOI SECTOR
  1302. RJ FPB FLUSH PERMIT BUFFER TO FORCE EOI WRITE
  1303. EQ DPSX RETURN
  1304. DUP SPACE 4,15
  1305. ** DUP - DROP UTILITY PROCESSOR.
  1306. *
  1307. * ENTRY (PAFL) = 0 IF *PFU* NOT ACTIVE.
  1308. * = 1 IF *PFU* ACTIVE.
  1309. *
  1310. * EXIT (PAFL) = 0.
  1311. * *PFU* DROPPED IF ACTIVE.
  1312. * CATALOG PROCESSING COMPLETED.
  1313. *
  1314. * USES X - 1, 2, 6.
  1315. * A - 1, 6.
  1316. *
  1317. * CALLS FCB.
  1318. *
  1319. * MACROS RECALL.
  1320.  
  1321.  
  1322. DUP SUBR ENTRY/EXIT
  1323. SA1 PAFL
  1324. ZR X1,DUPX IF *PFU* NOT ACTIVE
  1325. RJ FCB FLUSH CATALOG BUFFER
  1326. RECALL DATA
  1327. SA1 DATA SIGNAL *PFU* TO DROP
  1328. MX2 42
  1329. BX6 X2*X1
  1330. SX1 10B
  1331. BX6 X6+X1
  1332. SA6 A1
  1333. RECALL DATA WAIT FOR *PFU* TO COMPLETE
  1334. EQ DUPX RETURN
  1335. DWE SPACE 4,40
  1336. ** DWE - DATA WRITE ERROR PROCESSOR.
  1337. *
  1338. * ENTRY (DATA+FTPM) = FST ENTRY AT TIME OF ERROR.
  1339. * WRITE ERROR DETECTED ON DATA FILE.
  1340. *
  1341. * EXIT (BFCA) = BAD FILE CATALOG ADDRESS.
  1342. *
  1343. * IF A WRITE ERROR -
  1344. * DATA FOR BAD FILE REMOVED FROM BUFFER.
  1345. * (DATA+FTSC) = DECREMENTED BY SECTOR COUNT REMOVED FROM
  1346. * BUFFER.
  1347. * FILE LENGTH IN CATALOG DECREMENTED BY THE NUMBER OF
  1348. * SECTORS - 1 REMOVED FROM BUFFER.
  1349. * USER INDEX OF FILE CLEARED FROM CATALOG FOR A DIRECT
  1350. * ACCESS FILE AND SET TO A SPECIAL WRITE ERROR USER
  1351. * INDEX FOR AN INDIRECT ACCESS FILE.
  1352. * DATA WRITE ERROR MESSAGES ISSUED.
  1353. * MASS STORAGE SPACE DROPPED FOR A DIRECT ACCESS FILE.
  1354. * ERROR STATUS CLEARED FROM FET.
  1355. *
  1356. * IF A TRACK LIMIT OR ERROR IDLE -
  1357. * DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES ARE
  1358. * PURGED.
  1359. * UTILITY PROCESSOR IS DROPPED.
  1360. * UTILITY INTERLOCK IS CLEARED.
  1361. * TRACK LIMIT OR ERROR IDLE MESSAGES ARE ISSUED.
  1362. * MESSAGE IDENTIFYING FIRST FILE NOT LOADED IS ISSUED.
  1363. * EXIT TO *ABT* IS TAKEN.
  1364. *
  1365. * USES X - 1, 2, 3, 6, 7.
  1366. * A - 1, 2, 3, 6, 7.
  1367. * B - 2.
  1368. *
  1369. * CALLS CFE, PFD, SEC, SFE.
  1370.  
  1371.  
  1372. DWE SUBR ENTRY/EXIT
  1373. SA1 DATA GET FET ERROR CODE
  1374. MX2 -6
  1375. LX1 -12
  1376. BX6 -X2*X1
  1377. SX2 A1 SAVE FET ADDRESS
  1378. SX1 X6-FEWE
  1379. ZR X1,DWE0 IF WRITE ERROR WITH DATA TANSFERRED
  1380. SX1 X6-FEWN CHECK WRITE ERROR WITH NO DATA TRANSFERRED
  1381. NZ X1,DWE3 IF NOT WRITE ERROR
  1382. DWE0 SA1 DATA+FTPM
  1383. MX7 -9
  1384. LX1 12
  1385. BX7 -X7*X1 SET EST ORDINAL
  1386. SA7 DWEB
  1387.  
  1388. * SET BAD FILE CATALOG ADDRESS.
  1389.  
  1390. SA1 DATA+3 GET CONTROL WORD FOR BAD SECTOR
  1391. SA2 X1
  1392. LX2 -36 SET BAD FILE CATALOG ADDRESS
  1393. SX6 X2
  1394. SA6 BFCA
  1395.  
  1396. * REMOVE BAD FILE FROM BUFFER.
  1397.  
  1398. SX2 DATA SKIP TO END OF BAD FILE
  1399. RJ SEC
  1400. SA1 DATA+FTSC ADJUST SECTOR COUNTER
  1401. SX3 A0
  1402. IX6 X1-X3
  1403. SA6 A1
  1404.  
  1405. * SET CORRECT CATALOG LENGTH AND USER INDEX.
  1406.  
  1407. SA2 BFCA ADJUST CATALOG LENGTH
  1408. SX3 A0-B1 LEAVE BAD SECTOR WITH FILE
  1409. SA1 X2+FCLF+FCBS*
  1410. LX3 36
  1411. IX6 X1-X3
  1412. SA3 X2+FCUI
  1413. LX1 59-11 CHECK FILE TYPE
  1414. SA6 A1
  1415. MX2 42 CLEAR USER INDEX
  1416. BX7 X2*X3
  1417. NG X1,DWE2 IF DIRECT ACCESS FILE
  1418. SX1 IFUI SET *IAPF* FLAWED SECTOR CHAIN USER INDEX
  1419. BX7 X7+X1
  1420. DWE2 SA7 A3+
  1421.  
  1422. * ISSUE ERROR MESSAGE.
  1423.  
  1424. SA2 BFCA
  1425. SA1 X2+FCUI
  1426. SB2 ERDW * DATA WRITE ERROR ...*
  1427. RJ SFE SEND ERROR MESSAGE
  1428. RJ CFE COUNT FILE SKIPPED
  1429.  
  1430. * DROP DIRECT ACCESS FILE.
  1431.  
  1432. SA2 BFCA
  1433. SA1 X2+FCBS+FCBT*
  1434. LX1 59-11
  1435. PL X1,DWEX IF INDIRECT ACCESS FILE
  1436. MX7 -12
  1437. SA3 DWEB SET BAD EQUIPMENT
  1438. BX6 -X7*X1 SET FIRST TRACK OF FILE
  1439. LX6 12
  1440. SX3 X3+4000B SET *DROP TRACKS* FLAG
  1441. BX7 X3+X6
  1442. MX2 42
  1443. SA7 DATA+FTPM PUT POSITION PARAMETERS IN FET
  1444. SA1 DATA SET POSITION FUNCTION IN FET
  1445. BX6 X2*X1
  1446. SA6 A1
  1447. EQ DWEX RETURN
  1448.  
  1449. * PROCESS TRACK LIMIT/ERROR IDLE CONDITION.
  1450.  
  1451. DWE3 RJ PFD PROCESS FULL DEVICE
  1452. SB2 B0 SET NO MESSAGE
  1453. EQ ABT ABORT
  1454.  
  1455.  
  1456. DWEA CON 0 WRITE ERROR MESSAGE ADDRESS
  1457. DWEB CON 0 EST ORDINAL
  1458. ECL SPACE 4,10
  1459. ** ECL - EDIT CATALOG ENTRY FOR LOAD.
  1460. *
  1461. * ENTRY CATALOG ENTRY IN *TCBF*.
  1462. *
  1463. * EXIT CATALOG ENTRY FIELDS MODIFIED AS REQUIRED.
  1464. *
  1465. * USES X - 0, 1, 2, 3, 4, 6, 7.
  1466. * A - 1, 2, 3, 4, 6, 7.
  1467.  
  1468.  
  1469. ECL SUBR ENTRY/EXIT
  1470.  
  1471. * PROCESS UTILITY CONTROL DATE OPTION.
  1472.  
  1473. SA1 UDAT FETCH UTLITY CONTROL UPDATE FLAG
  1474. ZR X1,ECL1 IF FORCED UPDATE FLAG NOT SET
  1475. SA2 TCBF+FCUD
  1476. MX0 24
  1477. BX6 X0*X2
  1478. BX6 X6+X1 SET UTILITY CONTROL DATE
  1479. SA6 A2+
  1480.  
  1481. * PROCESS OP=Z OPTION.
  1482.  
  1483. ECL1 SA1 PFCO FETCH *PFC ONLY* FLAG
  1484. ZR X1,ECL2 IF *PFC* ONLY
  1485. SA1 CPAR+/COMSPFS/CPOP
  1486. BX6 X6-X6
  1487. LX1 59-46
  1488. PL X1,ECL2 IF *OP=Z* NOT SELECTED
  1489. SA6 TCBF+FCAA+FCAT*0+FCAF*0 CLEAR CARTRIDGE POINTERS
  1490. SA6 TCBF+FCTV+FCTS*0+FCTF*0 CLEAR TAPE POINTERS
  1491. EQ ECLX RETURN
  1492.  
  1493. * INITIALIZE ALTERNATE STORAGE FLAGS.
  1494.  
  1495. ECL2 SA1 TCBF+FCAF CHECK ALTERNATE STORAGE INFORMATION
  1496. SA2 TCBF+FCTF
  1497. MX0 -59
  1498. BX6 -X0*X1 CLEAR *AFLOK* FLAG
  1499. BX7 -X0*X2 CLEAR *TFLOK* FLAG
  1500. MX0 -36
  1501. BX3 -X0*X1
  1502. BX4 -X0*X2
  1503. SX0 1
  1504. LX1 59-48
  1505. LX0 52-0
  1506. ZR X3,ECL3 IF NO CARTRIDGE ALTERNATE STORAGE COPY
  1507. NG X1,ECL3 IF CARTRIDGE COPY IS OBSOLETE
  1508. BX6 X6+X0 SET *AFVER* FLAG
  1509. ECL3 ZR X4,ECL4 IF NO TAPE ALTERNATE STORAGE COPY
  1510. LX0 48-52
  1511. BX7 X7+X0 SET *TFVER* FLAG
  1512. ECL4 SA6 TCBF+FCAF SET CARTRIDGE ALTERNATE STORAGE FLAGS
  1513. SA7 TCBF+FCTF SET TAPE ALTERNATE STORAGE FLAGS
  1514. EQ ECLX RETURN
  1515. EFL SPACE 4,20
  1516. ** EFL - ENTER FILE LIST.
  1517. *
  1518. * ENTRY (TCBF) = CATALOG ENTRY FOR FILE.
  1519. * (FLOF) = 0 IF NO FILE LIST OVERFLOW.
  1520. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE.
  1521. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER.
  1522. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST.
  1523. *
  1524. * EXIT (FLOF) = 0 IF NO FILE LIST OVERFLOW.
  1525. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE.
  1526. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER.
  1527. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST.
  1528. * FILE ADDED TO FILE LIST.
  1529. *
  1530. * USES X - 1, 2, 6, 7.
  1531. * A - 1, 2, 6, 7.
  1532. *
  1533. * MACROS WRITE, WRITEW.
  1534.  
  1535.  
  1536. EFL SUBR ENTRY/EXIT
  1537. SA1 FLPT CHECK FOR FULL FILE LIST
  1538. SX6 X1-FLBF-FLBFL
  1539. NG X6,EFL1 IF FILE LIST NOT FULL
  1540. WRITEW FO,FLBF+FLBFL-100B,100B WRITE LAST SECTOR OF BUFFER
  1541. WRITE X2
  1542. SA1 FLPT BACK LIST POINTER UP ONE SECTOR
  1543. SX1 X1-100B
  1544. SX6 B1+ SET FILE LIST OVERFLOW
  1545. SA6 FLOF
  1546. EFL1 SA2 TCBF+FCFN+FCUI* PUT FILE IN FILE LIST
  1547. BX7 X2
  1548. SA7 X1
  1549. SX6 X1+B1 ADVANCE FILE LIST POINTER
  1550. SA6 A1
  1551. EQ EFLX RETURN
  1552. EOL SPACE 4,15
  1553. ** EOL - END OF LOAD PROCESSOR.
  1554. *
  1555. * EXIT UTILITY PROCESSOR DROPPED.
  1556. * UTILITY INTERLOCK CLEARED.
  1557. * LOAD SYSTEM FILES RETURNED.
  1558. * ARCHIVE FILE POSITIONED AS APPROPRIATE.
  1559. *
  1560. * USES X - 1, 3, 6, 7.
  1561. * A - 1, 3.
  1562. *
  1563. * CALLS CIN, DUP, PSF.
  1564. *
  1565. * MACROS RECALL, RETURN, SKIPFF.
  1566.  
  1567.  
  1568. EOL SUBR ENTRY/EXIT
  1569. RJ DUP DROP UTILITY PROCESSOR
  1570. RJ CIN CLEAR UTILITY INTERLOCK
  1571. RJ PSF PROCESS SORTED FILE OUTPUT
  1572. RETURN CATS RETURN LOAD SYSTEM FILES
  1573. RETURN PETS
  1574. RETURN DATA
  1575. SETPFP GPAR RESTORE PERMANENT FILE PARAMETERS
  1576. RETURN DATA RETURN FILES
  1577. RETURN CIRF
  1578. RETURN FO
  1579. RECALL TAPE POSITION ARCHIVE FILE
  1580. SA1 CPAR+/COMSPFS/CPNB
  1581. ZR X1,EOLX IF NO FILE COUNT SPECIFIED
  1582. SA3 X2 CHECK FOR EOF/EOI ON ARCHIVE FILE
  1583. SX6 30B
  1584. BX7 X6*X3
  1585. BX6 X7-X6
  1586. NZ X6,EOL3 IF NOT EOF/EOI
  1587. SX1 X1-1
  1588. EOL3 ZR X1,EOLX IF NO FILES TO SKIP
  1589. SKIPFF X2,X1 SKIP FILES NOT PROCESSED
  1590. EQ EOLX RETURN
  1591. FCB SPACE 4,40
  1592. ** FCB - FLUSH CATALOG BUFFER.
  1593. *
  1594. * ENTRY (CEWF) = 0 IF NO CATALOG ENTRIES IN BUFFER.
  1595. * = NON-ZERO IF CATALOG ENTRIES IN BUFFER.
  1596. * (CSWC) = CURRENT CATALOG SECTOR WORD COUNT.
  1597. *
  1598. * EXIT (CBFO) = 0.
  1599. * (CEWF) = 0.
  1600. * THE FOLLOWING CONDITIONS EXIST IF (CEWF) WAS NON-ZERO.
  1601. * (CSWC) = 0.
  1602. * (ANCE) = FWA OF CATALOG BUFFER.
  1603. * PERMIT BUFFER FLUSHED.
  1604. * DATA BUFFER FLUSHED.
  1605. * CATALOG BUFFER WRITTEN TO MASS STORAGE.
  1606. * CATALOG BUFFER REWOUND.
  1607. *
  1608. * IF A CATALOG WRITE ERROR IS DETECTED THE UTILITY
  1609. * PROCESSOR IS DROPPED, ERROR IDLE STATUS IS SET ON THE
  1610. * MASTER EQUIPMENT IF DATA ON THE CATALOG FILE HAS
  1611. * BEEN CORRUPTED, THE UTILITY INTERLOCK IS CLEARED,
  1612. * CATALOG WRITE ERROR MESSAGES ARE ISSUED AND EXIT IS TO
  1613. * *ABT*.
  1614. *
  1615. * IF A TRACK LIMIT OR ERROR IDLE CONDITION IS DETECTED,
  1616. * DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES ARE
  1617. * PURGED, THE UTILITY PROCESSOR IS DROPPED, THE UTILITY
  1618. * INTERLOCK IS CLEARED, TRACK LIMIT OR ERROR IDLE
  1619. * MESSAGES ARE ISSUED, THE FIRST FILE NOT LOADED IS
  1620. * IDENTIFIED AND EXIT IS TO *ABT*.
  1621. *
  1622. * USES X - 1, 2, 3, 5, 6, 7.
  1623. * A - 1, 2, 3, 6, 7.
  1624. *
  1625. * CALLS FDB, FPB, LLF, PCE, PFD.
  1626. *
  1627. * MACROS RECALL.
  1628.  
  1629.  
  1630. FCB SUBR ENTRY/EXIT
  1631. SA1 CEWF
  1632. ZR X1,FCBX IF NO CATALOG ENTRIES IN BUFFER
  1633. SA1 CSWC GET SECTOR WORD COUNT
  1634. ZR X1,FCB3 IF SECTOR IS EMPTY
  1635.  
  1636. * GET SECTOR CONTROL WORD.
  1637.  
  1638. SA2 CATS+FTIN
  1639. SA3 CATS+FTFT
  1640. SX2 X2
  1641. SX3 X3
  1642. IX6 X2-X1 IN - SECTOR WORD COUNT
  1643. IX7 X6-X3
  1644. ZR X7,FCB1 IF WRAP AROUND
  1645. PL X7,FCB2 IF NO WRAP AROUND
  1646. FCB1 SA3 CATS+FTLM
  1647. SX3 X3
  1648. IX6 X3+X7 LIMIT + COMPLEMENT OF REMAINING COUNT
  1649. FCB2 SA2 X6-1 GET SECTOR CONTROL WORD
  1650.  
  1651. * INSERT WORD COUNT INTO SECTOR CONTROL WORD.
  1652.  
  1653. MX7 48
  1654. BX6 X7*X2
  1655. IX7 X6+X1
  1656. SA7 A2
  1657.  
  1658. * INCREMENT BUFFER SECTOR COUNTER.
  1659.  
  1660. SA2 CATS+FTSC
  1661. SX6 X2+1
  1662. SA6 A2+
  1663.  
  1664. * FLUSH CATALOG AND ASSOCIATED BUFFERS.
  1665.  
  1666. FCB3 RJ FPB FLUSH PERMIT BUFFER
  1667. RJ FDB FLUSH DATA BUFFER
  1668. SA1 CATS ISSUE WRITE REQUEST
  1669. MX2 42
  1670. BX7 X2*X1
  1671. SX1 B1+B1 SET WRITE FUNCTION CODE
  1672. BX6 X7+X1
  1673. SA6 A1
  1674. RECALL A1 WAIT FOR *PFU* TO FLUSH BUFFER
  1675. RJ LLF LIST LOADED FILES
  1676. SA1 CATS CHECK ERROR STATUS
  1677. MX7 -6
  1678. LX1 -12
  1679. BX6 -X7*X1
  1680. NZ X6,FCB4 IF MASS STORAGE ERROR
  1681. SA1 A1+B1 REWIND BUFFER
  1682. SX7 X1
  1683. SA7 A1+B1
  1684. SA7 A7+B1
  1685. SA7 ANCE SET ADDRESS OF NEW CATALOG ENTRIES
  1686. SA6 CSWC CLEAR SECTOR WORD COUNT
  1687. SA6 CATS+FTSC CLEAR SECTOR COUNTER
  1688. SA6 CEWF CLEAR *CATALOG ENTRIES WRITTEN*
  1689. SA6 CBFO RESET CATALOG BUFFER ORDINAL
  1690. EQ FCBX RETURN
  1691.  
  1692. * PROCESS CATALOG WRITE ERROR.
  1693.  
  1694. FCB4 SX1 X6-FEWE
  1695. ZR X1,FCB4.1 IF WRITE ERROR WITH DATA TRANSFERRED
  1696. SX1 X6-FEWN CHECK WRITE ERROR WITH NO DATA TRANSFERRED
  1697. NZ X1,FCB5 IF NOT WRITE ERROR
  1698. FCB4.1 SA2 CATS+FTOT GET BAD SECTOR CONTROL WORD
  1699. SA3 CATS+FTPM GET BAD TRACK AND SECTOR ADDRESS
  1700. MX6 24
  1701. LX3 12 PUT BAD ADDRESS IN CONTROL WORD
  1702. SA1 X2
  1703. LX6 -12
  1704. BX2 X6*X3
  1705. BX3 -X6*X1
  1706. BX7 X2+X3
  1707. SA7 A1
  1708. SX6 ERCW * CATALOG WRITE ERROR...*
  1709. RJ PCE PROCESS CATALOG WRITE ERROR
  1710. SB2 B0 SET NO MESSAGE
  1711. EQ ABT ABORT
  1712.  
  1713. * PROCESS TRACK LIMIT/ERROR IDLE CONDITION.
  1714.  
  1715. FCB5 SX2 CATS
  1716. RJ PFD PROCESS FULL DEVICE
  1717. SB2 B0 SET NO MESSAGE
  1718. EQ ABT ABORT
  1719. FDB SPACE 4,10
  1720. ** FDB - FLUSH DATA BUFFER.
  1721. *
  1722. * EXIT DATA BUFFER FLUSHED.
  1723. * DATA WRITE ERRORS PROCESSED IF NECESSARY.
  1724. *
  1725. * USES X - 2.
  1726. *
  1727. * CALLS DWE, FUB.
  1728.  
  1729.  
  1730. FDB SUBR ENTRY/EXIT
  1731. FDB1 SX2 DATA FLUSH DATA BUFFER
  1732. RJ FUB
  1733. ZR X6,FDBX IF NO MASS STORAGE ERROR
  1734. RJ DWE PROCESS DATA WRITE ERROR
  1735. EQ FDB1 FLUSH DATA BUFFER
  1736. FPB SPACE 4,20
  1737. ** FPB - FLUSH PERMIT BUFFER.
  1738. *
  1739. * EXIT (X2) = PERMIT FET ADDRESS.
  1740. * PERMIT BUFFER FLUSHED.
  1741. *
  1742. * IF A PERMIT WRITE ERROR, TRACK LIMIT ERROR OR ERROR
  1743. * IDLE CONDITION IS DETECTED, CLEANUP IS PERFORMED AND
  1744. * EXIT IS TO *ABT*.
  1745. *
  1746. * USES X - 2, 5.
  1747. *
  1748. * CALLS FUB, PWE.
  1749.  
  1750.  
  1751. FPB SUBR ENTRY/EXIT
  1752. SX2 PETS FLUSH PERMIT BUFFER
  1753. RJ FUB
  1754. ZR X6,FPBX IF NO PERMIT WRITE ERROR
  1755. RJ PWE PROCESS PERMIT WRITE ERROR
  1756. SB2 B0 SET NO MESSAGE
  1757. EQ ABT ABORT
  1758. FPF SPACE 4,15
  1759. ** FPF - FLUSH PERMANENT FILES.
  1760. *
  1761. * ENTRY (UIFL) = UTILITY INTERLOCK STATUS.
  1762. * (PAFL) = UTILITY PROCESSOR ACTIVITY FLAG.
  1763. *
  1764. * EXIT ANY INCOMPLETE PERMANENT FILE DELETED.
  1765. * COMPLETE PERMANENT FILES FLUSHED TO MASS STORAGE.
  1766. *
  1767. * USES X - 1, 2, 6.
  1768. * A - 1, 2, 6.
  1769. *
  1770. * CALLS DIF, SSC.
  1771. *
  1772. * MACROS CALLPFU, RECALL.
  1773.  
  1774.  
  1775. FPF1 RJ DIF DELETE INCOMPLETE FILE
  1776.  
  1777. FPF SUBR ENTRY/EXIT
  1778. SA1 UIFL CHECK UTILITY INTERLOCK STATUS
  1779. SX2 X1-1
  1780. NZ X2,FPFX IF UTILITY INTERLOCK NOT SET
  1781. SA1 PAFL
  1782. NZ X1,FPF1 IF UTILITY PROCESSOR ALREADY ACTIVE
  1783. SA1 CATS+2 SET CATALOG WORD COUNT
  1784. SA2 A1+B1
  1785. IX6 X1-X2
  1786. SX1 101B SET SECTOR COUNT
  1787. ZR X6,FPFX IF NO CATALOG ENTRIES
  1788. IX6 X6/X1
  1789. SA6 CATS+FTSC
  1790. SX2 PETS SET PERMIT FILE SECTOR COUNTER
  1791. RJ SSC
  1792. SX2 DATA SET DATA FILE SECTOR COUNTER
  1793. RJ SSC
  1794. SA1 MAEQ SET MASTER EQUIPMENT AND NON-INITIAL FLAG
  1795. SX2 B1
  1796. LX1 12
  1797. BX6 X1+X2
  1798. SA6 DATA+FTDW
  1799. SA1 CPAR+/COMSPFS/CPDN SET MASTER DEVICE NUMBER
  1800. SA2 FAPM SET FET ADDRESS PARAMETERS
  1801. LX1 54
  1802. BX6 X1+X2
  1803. SA6 CATS+FTPM
  1804. SA1 PETS SET PERMITS FET BUSY
  1805. MX2 48
  1806. BX6 X2*X1
  1807. SA6 A1
  1808. SA1 DATA SET DATA FET BUSY
  1809. BX6 X2*X1
  1810. SA6 A1+
  1811. CALLPFU CATS,CTLM ACTIVATE UTILITY LOAD PROCESSOR
  1812. RECALL DATA WAIT FOR UTILITY PROCESSOR TO INITIALIZE
  1813. EQ FPF1 DELETE INCOMPLETE FILE
  1814. FUB SPACE 4,20
  1815. ** FUB - FLUSH UTILITY BUFFER.
  1816. *
  1817. * ENTRY (X2) = FET ADDRESS.
  1818. *
  1819. * EXIT (X2) = FET ADDRESS.
  1820. * (X6) = 0 IF NO ERROR DETECTED.
  1821. * = FET ERROR CODE IF ERROR DETECTED.
  1822. * *PFU* WRITE FUNCTION CODE PLACED IN FET IF BUFFER NOT
  1823. * EMPTY.
  1824. * FET NOT BUSY.
  1825. *
  1826. * USES X - 1, 3, 6, 7.
  1827. * A - 1, 3, 7.
  1828. *
  1829. * MACROS RECALL.
  1830.  
  1831.  
  1832. FUB SUBR ENTRY/EXIT
  1833. FUB1 RECALL X2
  1834. SA1 X2+2 CHECK FOR EMPTY BUFFER
  1835. SA3 A1+B1
  1836. IX6 X1-X3
  1837. ZR X6,FUBX IF BUFFER EMPTY
  1838. SA1 X2 ISSUE WRITE REQUEST
  1839. MX7 42
  1840. BX6 X7*X1
  1841. SX3 B1+B1 SET WRITE FUNCTION CODE
  1842. BX7 X6+X3
  1843. LX1 -12 GET ERROR STATUS
  1844. MX3 -6
  1845. BX6 -X3*X1
  1846. NZ X6,FUBX IF WRITE ERROR
  1847. SA7 X2
  1848. EQ FUB1 WAIT FOR *PFU* TO FLUSH BUFFER
  1849. IFM SPACE 4,10
  1850. ** IFM - ISSUE FILE COUNT MESSAGES.
  1851. *
  1852. * EXIT FILES PROCESSED COUNTS ISSUED TO DAYFILE.
  1853. *
  1854. * USES X - 1, 5.
  1855. * A - 1, 5.
  1856. *
  1857. * CALLS IFC.
  1858. *
  1859. * MACROS MESSAGE.
  1860.  
  1861.  
  1862. IFM SUBR ENTRY/EXIT
  1863. SA1 AREF
  1864. ZR X1,IFM1 IF NO ARCHIVE FILE READ ERRORS
  1865. MESSAGE AEMS * READ ERRORS ENCOUNTERED ON ARCHIVE...*
  1866. IFM1 SA5 IFMA
  1867. RJ IFC ISSUE FILE COUNT MESSAGES
  1868. EQ IFMX RETURN
  1869.  
  1870.  
  1871. IFMA BSS 0 MESSAGE TABLE
  1872. VFD 1/1,1/0,22/0,18/LDMS,18/PRFC
  1873. VFD 1/1,1/0,22/0,18/SEMS,18/SEFC
  1874. VFD 1/1,1/0,22/0,18/LEMS,18/PEFC
  1875. CON 0 END OF TABLE
  1876. LLF SPACE 4,15
  1877. ** LLF - LIST LOADED FILES.
  1878. *
  1879. * EXIT CATALOG DATA WRITTEN TO OUTPUT FILES FOR LOADED FILES
  1880. * IN CATALOG BUFFER.
  1881. *
  1882. * USES X - 1, 2, 3, 4, 5, 6, 7.
  1883. * A - 0, 1, 2, 3, 4, 5, 6, 7.
  1884. *
  1885. * CALLS CFP.
  1886.  
  1887.  
  1888. LLF SUBR ENTRY/EXIT
  1889. SA3 CATS+FTFT
  1890. SX4 -NWCE INITIALIZE SECTOR WORD COUNT
  1891. SX5 B0+ INITIALIZE CATALOG ORDINAL
  1892. MX6 -18
  1893. BX3 -X6*X3 ADDRESS OF FIRST SECTOR CONTROL WORD
  1894. LLF1 SA1 CATS+FTOT GET *OUT* POINTER
  1895. SX4 NWCE+X4 EXCESS WORDS IN PREVIOUS SECTOR
  1896. IX3 X3+X4 LWA+1 OF PREVIOUS SECTOR
  1897. IX6 X3-X1
  1898. PL X6,LLFX IF NO MORE SECTORS IN BUFFER
  1899. SA4 X3 READ SECTOR CONTROL WORD
  1900. MX6 -12
  1901. BX4 -X6*X4 SECTOR WORD COUNT
  1902. SX3 X3+B1 SKIP CONTROL WORD
  1903. LLF2 SX4 X4-NWCE DECREMENT SECTOR WORD COUNT
  1904. NG X4,LLF1 IF NO MORE CATALOG ENTRIES IN SECTOR
  1905. SA1 X3+FCUI GET USER INDEX
  1906. SA2 ANCE
  1907. MX6 -18
  1908. BX6 -X6*X1
  1909. IX2 X3-X2
  1910. SX3 X3+NWCE ADVANCE CATALOG ENTRY ADDRESS
  1911. SX5 X5+1 ADVANCE CATALOG BUFFER ORDINAL
  1912. NG X2,LLF2 IF OLD CATALOG ENTRY
  1913. ZR X6,LLF2 IF CATALOG HOLE (DATA WRITE ERROR)
  1914. SX6 X6-IFUI
  1915. ZR X6,LLF2 IF IAPF FLAW (DATA WRITE ERROR)
  1916. BX6 X3
  1917. BX7 X4
  1918. SA6 LLFA SAVE NEXT CATALOG ENTRY ADDRESS
  1919. SA7 A6+B1 SAVE SECTOR WORD COUNT
  1920. SA1 TFST-1+X5 GET FILE STATUS
  1921. SX6 X5
  1922. SA6 A7+B1 SAVE CATALOG BUFFER ORDINAL
  1923. BX7 X1
  1924. SA0 X3-NWCE SET CATALOG ENTRY ADDRESS
  1925. SA7 FLST SET FILE STATUS
  1926. RJ CFP COUNT FILE PROCESSED
  1927. SA3 LLFA RESTORE CATALOG ENTRY ADDRESS
  1928. SA4 LLFA+1 RESTORE SECTOR WORD COUNT
  1929. SA5 LLFA+2 RESTORE CATALOG BUFFER ORDINAL
  1930. EQ LLF2 PROCESS NEXT CATALOG ENTRY
  1931.  
  1932.  
  1933. LLFA CON 0 CATALOG ENTRY ADDRESS
  1934. CON 0 REMAINING SECTOR WORD COUNT
  1935. CON 0 CATALOG BUFFER ORDINAL
  1936. MCE SPACE 4,20
  1937. ** MCE - MOVE CATALOG ENTRY TO BUFFER.
  1938. *
  1939. * ENTRY (TCBF - TCBF+NWCE-1) = CATALOG ENTRY.
  1940. * (*CATS* IN POINTER) = BUFFER ADDRESS FOR CATALOG.
  1941. * (IPFF) = INCOMPLETE FILE FLAG.
  1942. *
  1943. * EXIT ANY INCOMPLETE FILE DELETED.
  1944. * CATALOG ENTRY MOVED TO *CATS* BUFFER.
  1945. * FIRST TRACK AND PERMIT RANDOM INDEX CLEARED FROM
  1946. * CATALOG ENTRY IN *CATS* BUFFER.
  1947. * (IPFF) = 1.
  1948. *
  1949. * USES X - 1, 2, 6, 7.
  1950. * A - 1, 2, 6, 7.
  1951. * B - 2, 3.
  1952. *
  1953. * CALLS DIF.
  1954.  
  1955.  
  1956. MCE SUBR ENTRY/EXIT
  1957. RJ DIF DELETE INCOMPLETE FILE
  1958. SA1 CATS+2 BUFFER ADDRESS = IN
  1959. SB2 NWCE-1 CATALOG ENTRY WORD COUNT - 1
  1960. SB3 TCBF CATALOG ENTRY ADDRESS
  1961. MCE1 SA2 B3+B2 GET WORD FROM CATALOG ENTRY
  1962. BX6 X2
  1963. SA6 X1+B2 STORE WORD IN BUFFER
  1964. SB2 B2-B1 DECREMENT WORD COUNT
  1965. PL B2,MCE1 IF MORE WORDS TO MOVE
  1966. SA2 X1+FCBS
  1967. LX2 59-11
  1968. PL X2,MCE2 IF NOT DIRECT ACCESS FILE
  1969. SX6 B1 INCREMENT FILE LENGTH (DATA SECTORS +1)
  1970. SA2 X1+FCLF
  1971. LX6 36-0
  1972. IX6 X2+X6
  1973. SA6 A2+
  1974. MCE2 SA2 X1+FCRI CLEAR RANDOM INDEX
  1975. MX7 -36
  1976. BX6 -X7*X2
  1977. SA6 A2
  1978. MX7 48
  1979. SA2 X1+FCBT CLEAR FIRST TRACK
  1980. LX7 12
  1981. BX6 X7*X2
  1982. SX7 B1 SET INCOMPLETE PERMANENT FILE FLAG
  1983. SA6 A2
  1984. SA7 IPFF
  1985. EQ MCEX RETURN
  1986. PAL SPACE 4,25
  1987. ** PAL - PROCESS ARCHIVE FILE LABEL.
  1988. *
  1989. * EXIT (X6) = 0 IF ARCHIVE FILE LABEL GOOD OR IF ARCHIVE FILE
  1990. * LABEL NOT FOUND AND NOT INCREMENTAL LOAD.
  1991. * (X6) .NE. 0 IF ARCHIVE FILE LABEL BAD OR IF ARCHIVE
  1992. * FILE LABEL NOT FOUND AND INCREMENTAL LOAD.
  1993. * (TLBF+/COMSPFS/PFAL) = 0 IF ARCHIVE FILE LABEL NOT
  1994. * PRESENT OR BAD.
  1995. * (TLBF - TLBF+/COMSPFS/AFLBL-1) = NEW ARCHIVE FILE
  1996. * LABEL IF PRESENT AND GOOD.
  1997. * LABEL INFORMATION SET IN OUTPUT FILE HEADER IF LABEL
  1998. * PRESENT AND GOOD.
  1999. * ARCHIVE FILE INFORMATION BLOCK WRITTEN TO CATALOG
  2000. * ENTRIES FILE IF LABEL PRESENT AND GOOD OR LABEL NOT
  2001. * FOUND.
  2002. * OUTPUT FILE INITIALIZED FOR FILE PROCESSING IF LABEL
  2003. * PRESENT AND GOOD OR LABEL NOT FOUND.
  2004. *
  2005. *
  2006. * USES X - 1, 2, 5, 6, 7.
  2007. * A - 0, 1, 2, 7.
  2008. *
  2009. * CALLS PLP, RCW, SER.
  2010. *
  2011. * MACROS CWREAD, MOVE.
  2012.  
  2013.  
  2014. * PROCESS LABEL NOT FOUND.
  2015.  
  2016. PAL4 SA2 INCF
  2017. SX7 1
  2018. NZ X2,PAL2.1 IF INCREMENTAL LOAD
  2019. NG X1,PAL5 IF EOF/EOI
  2020. NZ X1,PAL1 IF EOR
  2021. SA7 RCWF SET CONTROL WORD RE-USE FLAG
  2022. PAL5 SA0 B0 SET LABEL NOT FOUND
  2023. RJ PLP PROCESS LABEL PARAMETERS
  2024. SX6 B0+ CLEAR BAD LABEL STATUS
  2025.  
  2026. PAL SUBR ENTRY/EXIT
  2027. SX7 B0+ PRESET NO LABEL PRESENT
  2028. SA7 TLBF+/COMSPFS/PFAL
  2029. PAL1 RJ RCW READ ARCHIVE FILE CONTROL WORD
  2030. NZ X7,PAL3 IF READ ERROR
  2031. NZ X3,PAL4 IF NOT LABEL CONTROL WORD
  2032. SA1 CWBF GET LABEL WORD COUNT
  2033. MX2 -9
  2034. BX6 -X2*X1
  2035. SX1 X6-/COMSPFS/AFLBL
  2036. NZ X1,PAL2 IF BAD LABEL WORD COUNT
  2037. CWREAD TAPE,TDBF,X6 READ ARCHIVE FILE LABEL
  2038. NZ X7,PAL3 IF READ ERROR
  2039. NZ X1,PAL2 IF LABEL INCOMPLETE
  2040. SA1 TDBF+/COMSPFS/PFAL CHECK LABEL IDENTIFIER
  2041. SA2 AFLI
  2042. MX6 36
  2043. BX1 X6*X1
  2044. IX2 X1-X2
  2045. NZ X2,PAL2 IF NOT CORRECT LABEL IDENTIFIER
  2046. MOVE /COMSPFS/AFLBL,TDBF,TLBF MOVE LABEL TO LABEL BUFFER
  2047. SA0 TLBF SET ARCHIVE LABEL ADDRESS
  2048. RJ PLP PROCESS ARCHIVE LABEL PARAMETERS
  2049. RJ SER SKIP TO END OF RECORD
  2050. BX6 X6-X6 CLEAR BAD LABEL STATUS
  2051. SA6 EOLF CLEAR END OF LOAD FLAG
  2052. EQ PALX RETURN
  2053.  
  2054. * PROCESS BAD LABEL.
  2055.  
  2056. PAL2 SA2 INCF
  2057. NZ X2,PAL2.1 IF INCREMENTAL LOAD
  2058. RJ SER SKIP TO END OF RECORD
  2059. SA0 B0 SET LABEL NOT FOUND
  2060. RJ PLP PROCESS LABEL PARAMETERS
  2061. PAL2.1 SX6 B1 SET BAD LABEL STATUS
  2062. EQ PALX RETURN
  2063.  
  2064. * PROCESS READ ERROR.
  2065.  
  2066. PAL3 SA7 AREF INDICATE READ ERROR
  2067. RJ SER SKIP TO END OF RECORD
  2068. EQ PAL1 READ ARCHIVE FILE CONTROL WORD
  2069. PCB SPACE 4,40
  2070. ** PCB - PROCESS CATALOG BUFFER.
  2071. *
  2072. * EXIT (X6) = 0 IF FILE NOT TO BE LOADED.
  2073. * = 1 IF FILE TO BE LOADED.
  2074. * (TCBF) = CATALOG ENTRY FOR CURRENT FILE.
  2075. * (MMSK) = UPDATED MASTER DEVICE MASK.
  2076. * (NCTR) = UPDATED NUMBER OF CATALOG TRACKS.
  2077. * (MAEQ) = UPDATED MASTER EQUIPMENT.
  2078. * (CPAR+/COMSPFS/CPDN) = UPDATED MASTER DEVICE NUMBER.
  2079. * (SKER) = 1 IF *SKIP TO EOR* REQUIRED.
  2080. * (PFCO) = 0 IF *PFC ONLY* FILE.
  2081. * (PFCO) .NE. 0 IF NOT *PFC ONLY* FILE.
  2082. * MASTER DEVICE SWITCH MADE IF NECESSARY.
  2083. * FILES OPENED IF A MASTER DEVICE SWITCH IS MADE.
  2084. *
  2085. * USES X - 0, 1, 2, 4, 5, 6, 7.
  2086. * A - 1, 5, 7.
  2087. *
  2088. * CALLS CCE, CCI, CDE, CFE, CSP, DFN, ECL, EFL, GCT, MCE, PGF,
  2089. * SFE, SFL, SMD, VFN.
  2090. *
  2091. * MACROS CWREAD, MESSAGE, MOVE.
  2092.  
  2093.  
  2094. PCB SUBR ENTRY/EXIT
  2095.  
  2096. * CHECK FOR PFC ONLY FILE.
  2097.  
  2098. SA1 CWBF FETCH CONTROL WORD
  2099. MX0 -3 EXTRACT SUBTYPE
  2100. LX0 11-2
  2101. BX7 -X0*X1
  2102. SA7 PFCO SAVE *PFC ONLY* FLAG
  2103.  
  2104. * READ AND VALIDATE CATALOG ENTRY.
  2105.  
  2106. MX0 -9
  2107. BX5 -X0*X1
  2108. CWREAD TAPE,TCBF,X5
  2109. NZ X7,PCB10 IF READ ERROR
  2110. RJ VFN VALIDATE FILE NAME
  2111. PL X3,PCB9 IF FILE NAME NOT VALID
  2112. SA1 TCBF+FCUI VALIDATE USER INDEX
  2113. SX6 X1+
  2114. NG X6,PCB9 IF USER INDEX NOT VALID
  2115.  
  2116. * CHECK FORMAT OF CATALOG ENTRY.
  2117.  
  2118. SA1 CWBF CHECK SIZE OF CATALOG ENTRY
  2119. MX6 -9
  2120. BX2 -X6*X1
  2121. SX1 X2-NWCE
  2122. ZR X1,PCB1 IF CURRENT SIZE
  2123. SX4 TCBF
  2124. RJ CCE CONVERT CATALOG ENTRY TO CURRENT FORMAT
  2125.  
  2126. * PROCESS SELECTION PARAMETERS.
  2127.  
  2128. PCB1 SA1 CPAR+/COMSPFS/CPOP
  2129. LX1 59-46
  2130. PL X1,PCB2 IF *OP=Z* NOT SELECTED
  2131. SA1 PFCO
  2132. ZR X1,PCB6 IF PFC ONLY FILE
  2133. PCB2 RJ CCI CHECK CATALOG IMAGE
  2134. NZ X6,PCB6 IF FILE NOT TO BE LOADED
  2135. RJ CSP CHECK SELECTION PARAMETERS
  2136. ZR X6,PCB6 IF FILE NOT TO BE LOADED
  2137.  
  2138. * DETERMINE IF FILE CAN BE LOADED IN CURRENT ENVIRONMENT.
  2139.  
  2140. RJ SMD SET MASTER DEVICE PARAMETERS
  2141. RJ SFL SEARCH FILE LIST
  2142. ZR X6,PCB3 IF FILE ALREADY PRESENT
  2143. RJ CDE CHECK DEVICE ENVIRONMENT
  2144. ZR B2,PCB5 IF NO ERROR
  2145. EQ PCB8 ISSUE ERROR MESSAGE AND SKIP FILE
  2146.  
  2147. PCB3 SA1 CPAR+/COMSPFS/CPOP
  2148. LX1 59-52
  2149. PL X1,PCB9 IF REPLACE OPTION NOT SPECIFIED
  2150. RJ CDE CHECK DEVICE ENVIRONMENT
  2151. SX6 B2-ERNS
  2152. ZR B2,PCB4 IF NO ERROR
  2153. NZ X6,PCB8 IF NOT *NO SPACE FOR FILE* ERROR
  2154. PCB4 RJ PGF PURGE FILE
  2155. NZ B2,PCB8 IF NO SPACE FOR FILE
  2156. RJ SFL SEARCH FILE LIST
  2157. SB2 ERPE * ERROR ON FILE PURGE ...*
  2158. ZR X6,PCB8 IF FILE FOUND AGAIN AFTER PURGE
  2159. RJ CDE CHECK DEVICE ENVIRONMENT
  2160. NZ B2,PCB8 IF ERROR
  2161.  
  2162. * LOAD FILE.
  2163.  
  2164. PCB5 SA7 TCBF+FCDN SET DEVICE NUMBER
  2165. RJ EFL ENTER FILE IN LIST
  2166. SA1 TCBF+FCUI
  2167. SA2 MSGA *LOADING ...*
  2168. RJ DFN DISPLAY MESSAGE
  2169. RJ ECL EDIT CATALOG ENTRY FOR LOAD
  2170. RJ MCE MOVE CATALOG ENTRY TO CATALOG BUFFER
  2171. SX6 B1 SET LOAD FILE
  2172. EQ PCBX RETURN
  2173.  
  2174. * DETERMINE IF END OF INDEX LOAD.
  2175.  
  2176. PCB6 SA5 MXDC
  2177. ZR X5,PCB9 IF NOT SELECTIVE LOAD
  2178. SA1 TCBF+FCUI CURRENT USER INDEX
  2179. MX2 -3
  2180. BX2 -X2*X1 SUBFAMILY INDEX
  2181. SA2 SFDT+X2
  2182. LX1 -3
  2183. SX6 X2 CATALOG TRACK MASK
  2184. BX2 -X6*X2 ARCHIVE FILE DEVICE ORDINAL
  2185. BX1 X6*X1 CATALOG TRACK
  2186. BX6 X2+X1
  2187. IX6 X5-X6
  2188. PL X6,PCB9 IF NOT PAST USER INDEX-S CATALOG TRACK
  2189. SX7 1
  2190. SA7 EOLF SET END OF LOAD FLAG
  2191. EQ PCB9 SKIP FILE
  2192.  
  2193. * ISSUE ERROR MESSAGE AND COUNT FILE NOT LOADED.
  2194.  
  2195. PCB8 SA1 TCBF+FCUI SET FILE NAME AND USER INDEX
  2196. RJ SFE SEND ERROR MESSAGE
  2197. RJ CFE ISSUE MESSAGE AND COUNT FILE NOT LOADED
  2198.  
  2199. * SKIP FILE.
  2200.  
  2201. PCB9 SX7 B1 SET SKIP TO EOR FLAG
  2202. SA7 SKER
  2203. SA1 TCBF+FCUI
  2204. SA2 MSGE *SKIPPING ...*
  2205. RJ DFN DISPLAY MESSAGE
  2206. SX6 B0 SET SKIP FILE
  2207. EQ PCBX RETURN
  2208.  
  2209. * PROCESS READ ERROR.
  2210.  
  2211. PCB10 SA7 AREF INDICATE READ ERROR
  2212. EQ PCB9 SKIP FILE
  2213. PCE SPACE 4,25
  2214. ** PCE - PROCESS CATALOG ERROR.
  2215. *
  2216. * ENTRY (X6) = CATALOG READ OR WRITE ERROR MESSAGE ADDRESS.
  2217. * (CPAR+/COMSPFS/CPDN) = MASTER DEVICE NUMBER.
  2218. * (CCTR) = CURRENT CATALOG TRACK.
  2219. * (MAEQ) = MASTER DEVICE EST ORDINAL.
  2220. * (*CATS* BUFFER) = CATALOG ENTRIES FOR FILES AFFECTED
  2221. * BY THE ERROR. CONTROL WORD FOR
  2222. * FIRST SECTOR IN BUFFER CONTAINS
  2223. * TRACK AND SECTOR ADDRESS OF THE
  2224. * ERROR.
  2225. *
  2226. * EXIT *PFU* DROPPED.
  2227. * IF A WRITE ERROR, ERROR IDLE STATUS IS SET FOR THE
  2228. * MASTER EQUIPMENT IF DATA ON THE CATALOG FILE HAS
  2229. * BEEN CORRUPTED.
  2230. * UTILITY INTERLOCK CLEARED.
  2231. * CATALOG ERROR MESSAGES ISSUED.
  2232. *
  2233. * USES X - 1, 2, 3, 6, 7.
  2234. * A - 1, 2, 3, 6, 7.
  2235. *
  2236. * CALLS CIN, DUP, SEI, SFE.
  2237.  
  2238.  
  2239. PCE SUBR ENTRY/EXIT
  2240. SA6 PCEB SAVE MESSAGE ADDRESS
  2241.  
  2242. * DROP *PFU*.
  2243.  
  2244. SX6 B0+ CLEAR *CATALOG ENTRIES WRITTEN*
  2245. SA6 CEWF
  2246. RJ DUP DROP UTILITY PROCESSOR
  2247.  
  2248. * IDENTIFY FAILING DEVICE.
  2249.  
  2250. SA1 PCEB ERROR MESSAGE ADDRESS
  2251. SX1 X1-ERCW
  2252. NZ X1,PCE0.1 IF NOT WRITE ERROR
  2253. SA1 CATS GET ERROR CODE FROM FET
  2254. MX2 -6
  2255. LX1 -12
  2256. BX1 -X2*X1 ERROR CODE
  2257. SX1 X1-FEWE
  2258. NZ X1,PCE0.1 IF DATA NOT TRANSFERRED TO DEVICE
  2259. SB2 ELWC * ERROR IDLE SET - PF CATALOG WRITE ...*
  2260. RJ SEI SET ERROR IDLE STATUS
  2261. PCE0.1 RJ CIN CLEAR UTILITY INTERLOCK
  2262.  
  2263. * LIST FILES IN CATALOG BUFFER.
  2264.  
  2265. SA2 CATS+3 SET ADDRESS OF FIRST CONTROL WORD
  2266. PCE1 SA1 CATS+2 CHECK IF MORE SECTORS IN BUFFER
  2267. IX3 X2-X1
  2268. MX6 -12
  2269. PL X3,PCEX IF NO MORE SECTORS IN BUFFER
  2270. SA1 X2 SET SECTOR WORD COUNT
  2271. BX3 -X6*X1
  2272. SX2 X2+1 SET ADDRESS OF NEXT CATALOG ENTRY
  2273. PCE2 SX3 X3-NWCE DECREMENT SECTOR WORD COUNT
  2274. NG X3,PCE1 IF END OF CATALOG SECTOR
  2275. SA1 X2+FCFN SET FILE NAME AND USER INDEX
  2276. SX2 X2+NWCE ADVANCE CATALOG ENTRY ADDRESS
  2277. MX7 -18
  2278. BX6 -X7*X1 USER INDEX
  2279. ZR X6,PCE2 IF CATALOG HOLE
  2280. BX6 X2 SAVE CATALOG ENTRY ADDRESS
  2281. SA6 PCEA
  2282. BX7 X3 SAVE SECTOR WORD COUNT
  2283. SA7 A6+B1
  2284. SA2 PCEB
  2285. SB2 X2 SET ERROR MESSAGE ADDRESS
  2286. RJ SFE SEND ERROR MESSAGE
  2287. SA2 PCEA RESTORE CATALOG ENTRY ADDRESS
  2288. SA3 PCEA+1 RESTORE SECTOR WORD COUNT
  2289. EQ PCE2 PROCESS NEXT CATALOG ENTRY
  2290.  
  2291.  
  2292. PCEA BSSZ 2 SECTOR ADDRESS AND LENGTH PARAMETERS
  2293. PCEB CON 0 ERROR MESSAGE ADDRESS
  2294. PDB SPACE 4,20
  2295. ** PDB - PROCESS DATA BLOCK.
  2296. *
  2297. * ENTRY (X3) .LT. 0 IF EOR DETECTED ON ARCHIVE FILE.
  2298. * .GE. 0 IF EOR NOT DETECTED ON ARCHIVE FILE.
  2299. * (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY.
  2300. *
  2301. * EXIT (X6) = 0 IF FILE NOT TO BE LOADED.
  2302. * = NON-ZERO IF FILE TO BE LOADED.
  2303. * DATA FOR FILE WRITTEN TO MASS STORAGE.
  2304. * (SKER) = 1 IF *SKIP TO EOR* REQUIRED.
  2305. *
  2306. * USES X - ALL.
  2307. * A - 1, 2, 3, 4, 6, 7.
  2308. * B - 6, 7.
  2309. *
  2310. * CALLS AFE, CFE, DIF, DWE, RCW, SCE, SFE, WPR.
  2311. *
  2312. * MACROS CWREAD, RECALL.
  2313.  
  2314.  
  2315. PDB SUBR ENTRY/EXIT
  2316.  
  2317. * PRESET DATA PROCESSING PARAMETERS.
  2318.  
  2319. SA1 TCBF+FCLF SET FILE LENGTH
  2320. MX0 -24
  2321. SX2 B1 ADJUST LENGTH FOR EOI
  2322. LX1 -36
  2323. BX6 -X0*X1
  2324. IX7 X6+X2
  2325. BX5 X5-X5 CLEAR WORD ACCUMULATOR
  2326. SA1 TCBF+FCBS CHECK FILE TYPE
  2327. SA7 PDBB
  2328. BX6 X6-X6 CLEAR *PFU* CONTROL WORD
  2329. LX1 59-11
  2330. SA6 PDBD CLEAR BUFFER POINTER
  2331. SX7 SSBFL INITIALIZE SYSTEM SECTOR LENGTH
  2332. SA7 PDBC
  2333. PL X1,PDB1 IF INDIRECT ACCESS FILE
  2334.  
  2335. * SET DEVICE NUMBER FOR DIRECT ACCESS FILE IN LINKAGE WORD.
  2336.  
  2337. SA1 TCBF+FCDN GET DN FROM CATALOG
  2338. MX0 -6
  2339. LX1 -36
  2340. BX6 -X0*X1
  2341. LX6 48
  2342. NZ X6,PDB1 IF DEVICE SPECIFIED IN CATALOG
  2343. SA1 CPAR+/COMSPFS/CPDN SET MASTER DEVICE NUMBER
  2344. LX1 48
  2345. BX6 X1
  2346. NZ X1,PDB1 IF DN SPECIFIED
  2347. MX6 1 SET 4000B FOR PACK DAPF DN
  2348. PDB1 LX6 24
  2349.  
  2350. * SET CATALOG ADDRESS IN LINKAGE WORD.
  2351.  
  2352. SA1 CATS+2 GET ADDRESS OF CATALOG ENTRY
  2353. LX1 36
  2354. BX6 X6+X1
  2355. SA6 LWRD
  2356. NG X3,PDB13 IF PHYSICAL EOR
  2357. EQ PDB3
  2358.  
  2359. PDB2 RJ RCW READ CONTROL WORD
  2360. NZ X7,PDB25 IF READ ERROR
  2361. SX0 X3-3
  2362. NZ X0,PDB12 IF NOT DATA TYPE
  2363.  
  2364. * BREAK UP CONTROL WORD
  2365.  
  2366. PDB3 SA4 CWBF CHECK FOR ERROR CONTROL WORD
  2367. SA3 PDBE
  2368. MX0 42
  2369. BX2 X0*X4
  2370. BX2 X2-X3
  2371. ZR X2,PDB26 IF ERROR CONTROL WORD
  2372. MX0 51
  2373. BX1 -X0*X4 SET NUMBER OF WORDS
  2374. AX4 9
  2375. AX0 6
  2376. BX0 -X0*X4 SET DATA MARK
  2377. IX5 X5+X1 INCREMENT WORD COUNT
  2378.  
  2379. * CHECK FOR SYSTEM SECTOR.
  2380.  
  2381. SA3 PDBC GET REMAINING SYSTEM SECTOR LENGTH
  2382. SX4 X0-4
  2383. BX7 X7-X7
  2384. BX6 X4+X3
  2385. ZR X6,PDB12 IF SYSTEM SECTOR NOT BOI
  2386. ZR X4,PDB4 IF SYSTEM SECTOR
  2387. ZR X3,PDB6 IF SYSTEM SECTOR PROCESSING COMPLETED
  2388. SX7 X3-SSBFL
  2389. ZR X7,PDB5 IF BOI NOT SYSTEM SECTOR
  2390. SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...*
  2391. EQ PDB27 ISSUE MESSAGE AND SUPPRESS FILE LOAD
  2392.  
  2393. PDB4 IX7 X3-X1 DECREMENT REMAINING SYSTEM SECTOR LENGTH
  2394. PL X7,PDB5 IF SYSTEM SECTOR NOT TOO LONG
  2395. SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...*
  2396. EQ PDB27 ISSUE MESSAGE AND SUPPRESS FILE LOAD
  2397.  
  2398. * READ FILE DATA INTO BUFFER.
  2399.  
  2400. PDB5 SA7 PDBC SAVE REMAINING SYSTEM SECTOR LENGTH
  2401. PDB6 ZR X5,PDB8 IF NO WORDS TO READ
  2402. SA4 PDBD POINTER TO NEXT AVAILABLE WORD
  2403. BX3 -X4
  2404. SX3 X3+100B
  2405. IX2 X5-X3
  2406. PL X2,PDB7 IF NOT ENOUGH SPACE
  2407. IX6 X4+X5 NEW POINTER
  2408. SA6 A4
  2409. CWREAD TAPE,TDBF+X4,X5
  2410. NZ X7,PDB25 IF READ ERROR
  2411. BX5 X5-X5 CLEAR WORD COUNT
  2412. ZR X0,PDB2 IF NO FILE MARK
  2413. SX2 X0-4
  2414. ZR X2,PDB2 IF FIRST PART OF SPLIT SYSTEM SECTOR
  2415. SX0 X0-1
  2416. ZR X0,PDB10 IF EOR
  2417. SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...*
  2418. EQ PDB22 PROCESS ARCHIVE FILE ERROR
  2419.  
  2420. * PROCESS BUFFER WITH NOT ENOUGH SPACE AVAILABLE.
  2421.  
  2422. PDB7 SX6 B0+ RESET WORDS WRITTEN
  2423. SA6 A4
  2424. IX5 X5-X3 WORDS LEFT IN MAIN BUFFER
  2425. CWREAD TAPE,TDBF+X4,X3
  2426. NZ X7,PDB25 IF READ ERROR
  2427. SX6 100B
  2428. EQ PDB14 PROCESS BLOCK
  2429.  
  2430. * PROCESS FILE MARKS.
  2431.  
  2432. PDB8 ZR X0,PDB2 IF PLAIN DATA BLOCK
  2433. SX2 X0-4
  2434. ZR X2,PDB2 IF SYSTEM SECTOR
  2435. SX2 X0-1
  2436. NZ X2,PDB11 IF NOT EOR
  2437.  
  2438. * PROCESS EOR WITH ZERO LENGTH PRU.
  2439.  
  2440. SX6 B0+ SET PRU LENGTH TO ZERO
  2441. PDB9 BX0 X0-X0 CLEAR DATA MARK
  2442. EQ PDB14 PROCESS DATA BLOCK
  2443.  
  2444. * PROCESS EOR WITH SHORT PRU.
  2445.  
  2446. PDB10 SA1 PDBD SET PRU LENGTH
  2447. BX6 X1
  2448. BX7 X7-X7 CLEAR WORDS WRITTEN
  2449. SA7 A1
  2450. EQ PDB14 PROCESS DATA BLOCK
  2451.  
  2452. * PROCESS EOF.
  2453.  
  2454. PDB11 SX6 DLEF SET EOF INDICATOR
  2455. LX6 54
  2456. EQ PDB9 CLEAR DATA MARK
  2457.  
  2458. * PROCESS EOI.
  2459.  
  2460. PDB12 NG X3,PDB13 IF EOI
  2461. SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...*
  2462. EQ PDB22 PROCESS MISSING EOI
  2463.  
  2464. PDB13 SX0 3 SET EOI CONDITION
  2465. SX6 DLEI SET EOI INDICATOR
  2466. LX6 54
  2467.  
  2468. * PROCESS DATA BLOCK
  2469.  
  2470. PDB14 SA1 LWRD SET PRU LENGTH
  2471. MX2 48
  2472. BX2 -X2*X6
  2473. SB7 X2+B1
  2474. MX2 42
  2475. LX2 54
  2476. BX1 X2*X1
  2477. BX6 X6+X1
  2478. SX3 X0-4
  2479. ZR X3,PDB15 IF SYSTEM SECTOR
  2480. SA1 PDBB DECREMENT LENGTH
  2481. SX2 B1
  2482. IX7 X1-X2
  2483. SX3 X0-3
  2484. IX1 X7-X2
  2485. PL X1,PDB16 IF MORE LENGTH INDICATED BY CATALOG
  2486. ZR X3,PDB17 IF EOI
  2487. EQ PDB22 PROCESS FILE TOO LONG
  2488.  
  2489. * PROCESS SYSTEM SECTOR.
  2490.  
  2491. PDB15 SX1 DLSS SET SYSTEM SECTOR INDICATOR
  2492. LX1 54
  2493. BX6 X6+X1
  2494. BX0 X0-X0 CLEAR DATA MARK
  2495. EQ PDB18 WRITE SYSTEM SECTOR TO DATA FILE
  2496.  
  2497. * WRITE SECTOR TO DATA FILE.
  2498.  
  2499. PDB16 ZR X3,PDB21 IF FILE TOO SHORT
  2500. PDB17 SA7 A1 SAVE REMAINING LENGTH
  2501. PDB18 SA6 LWRD SAVE DATA LINKAGE WORD
  2502. SB6 A6 SET BUFFER ADDRESS
  2503. PDB19 SX2 DATA
  2504. RJ WPR WRITE SECTOR TO DATA FILE
  2505. NZ B7,PDB20 IF WRITE ERROR
  2506. SX1 X0-3
  2507. NZ X1,PDB6 IF NOT EOI
  2508. SX6 B1+ SELECT FILE LOADING
  2509. EQ PDBX RETURN
  2510.  
  2511. * PROCESS DATA WRITE ERROR.
  2512.  
  2513. PDB20 BX6 X0 SAVE ARCHIVE CONTROL WORD PARAMETERS
  2514. LX7 X5
  2515. SA6 PDBA
  2516. SA7 A6+B1
  2517. RJ DWE PROCESS DATA WRITE ERROR
  2518. SA1 PDBA RESTORE ARCHIVE CONTROL WORD PARAMETERS
  2519. SA2 A1+B1
  2520. BX0 X1
  2521. LX5 X2
  2522. SA1 LWRD RESTORE SECTOR WORD COUNT
  2523. MX2 -12
  2524. BX3 -X2*X1
  2525. SB6 A1 RESTORE BUFFER ADDRESS
  2526. SA1 BFCA CHECK IF ERROR ON CURRENT FILE
  2527. SA2 CATS+2
  2528. SB7 X3+B1
  2529. BX7 X1-X2
  2530. NZ X7,PDB19 IF ERROR NOT ON CURRENT FILE
  2531. SA1 PDBB LENGTH NOT WRITTEN TO BUFFER
  2532. SA3 X2+FCLF ADJUST CATALOG LENGTH
  2533. LX1 36
  2534. IX7 X3-X1
  2535. SX6 B1 SELECT FILE LOADING
  2536. SA7 A3
  2537. SA6 SKER SET SKIP TO EOR FLAG
  2538. EQ PDBX RETURN
  2539.  
  2540. * PROCESS FILE TOO SHORT.
  2541.  
  2542. PDB21 SA1 TCBF+FCUI
  2543. SB2 ERFT * FILE TRUNCATED ...*
  2544. RJ SFE SEND ERROR MESSAGE
  2545. EQ PDB24 PROCESS TRUNCATED FILE
  2546.  
  2547. * PROCESS ERRORS.
  2548.  
  2549. PDB22 SA1 TCBF+FCUI
  2550. RJ SFE SEND ERROR MESSAGE
  2551. SX6 B1+ SET SKIP TO EOR FLAG
  2552. SA6 SKER
  2553. PDB24 SA2 PDBB UPDATE LENGTH IN CATALOG
  2554. SX1 B1
  2555. IX7 X2-X1 ALLOW FOR EOI SECTOR
  2556. ZR X7,PDB13 IF NO CATALOG CHANGE
  2557. MX6 0
  2558. SA6 A2
  2559. RECALL DATA WAIT FOR *PFU* COMPLETION
  2560. SA1 CATS+2 SET NEW LENGTH IN CATALOG
  2561. SA2 X1+FCLF
  2562. LX2 24
  2563. IX6 X2-X7 NEW FILE LENGTH
  2564. LX6 36
  2565. SA6 A2
  2566. EQ PDB13 FORCE EOI
  2567.  
  2568. * PROCESS READ ERROR.
  2569.  
  2570. PDB25 SB2 ERAR * ARCHIVE FILE READ ERROR ...*
  2571. EQ PDB22 PROCESS ERROR
  2572.  
  2573. * PROCESS ERROR CONTROL WORD.
  2574.  
  2575. PDB26 SX6 FEDT SET DATA ERROR IN CATALOG
  2576. RJ SCE
  2577. SA1 CWBF CLEAR CONTROL WORD ERROR FLAGS
  2578. MX7 -15
  2579. BX6 -X7*X1
  2580. LX1 -15 GET ERROR TYPE
  2581. MX7 -3
  2582. BX2 -X7*X1
  2583. SA6 A1
  2584. ZR X2,PDB21 IF TRUNCATED FILE ERROR
  2585. SA1 CPAR+/COMSPFS/CPEO
  2586. NZ X1,PDB27 IF BAD FILE PROCESSING SUPPRESSED
  2587. SX7 X2-2
  2588. NZ X7,PDB3 IF NOT SUPPRESSED FILE CONTROL WORD
  2589. SB2 EREO * FILE LOAD SUPPRESSED BY ERROR ...*
  2590.  
  2591. * ISSUE ERROR MESSAGE AND SUPRESS FILE LOAD.
  2592.  
  2593. PDB27 SA1 TCBF SET FILE NAME AND USER INDEX
  2594. RJ SFE SEND ERROR MESSAGE
  2595. RJ CFE COUNT FILE NOT LOADED
  2596. RJ DIF DELETE INCOMPLETE FILE
  2597. SX7 B1 SET SKIP TO EOR FLAG
  2598. BX6 X6-X6 CLEAR LOAD FLAG
  2599. SA7 SKER
  2600. EQ PDBX RETURN
  2601.  
  2602.  
  2603. PDBA BSSZ 2 ARCHIVE CONTROL WORD PARAMETERS
  2604. PDBB CON 0 LENGTH ACCUMULATOR
  2605. PDBC CON 0 REMAINING SYSTEM SECTOR LENGTH
  2606. PDBD CON 0 WORDS WRITTEN
  2607. PDBE VFD 42/7HERROR**,18/0
  2608. PFD SPACE 4,25
  2609. ** PFD - PROCESS FULL DEVICE.
  2610. *
  2611. * ENTRY (X2) = FET ADDRESS OF FILE WITH ERROR.
  2612. * (X6) = ERROR CODE.
  2613. * ((X2)+FTPM) = FST ENTRY AT TIME OF ERROR.
  2614. * (ANCE) = ADDRESS OF NEW CATALOG ENTRIES.
  2615. * (*CATS* IN POINTER) = ADDRESS OF FIRST CATALOG SECTOR
  2616. * NOT LOADED.
  2617. *
  2618. * EXIT DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES PURGED.
  2619. * ERROR MESSAGE ISSUED.
  2620. * UTILITY INTERLOCK CLEARED.
  2621. *
  2622. * USES X - ALL.
  2623. * A - 0, 1, 2, 5, 6, 7.
  2624. * B - 5, 6, 7.
  2625. *
  2626. * CALLS CIN, COD, DUP, FUB, SEM, SFD, SSC, WPR.
  2627. *
  2628. * MACROS RECALL.
  2629.  
  2630.  
  2631. PFD SUBR ENTRY/EXIT
  2632.  
  2633. * ISSUE ERROR MESSAGE.
  2634.  
  2635. SB5 ERTL * TRACK LIMIT ...*
  2636. SX1 X6-FETL
  2637. ZR X1,PFD1 IF TRACK LIMIT ERROR
  2638. SB5 ERID * ERROR IDLE DETECTED ...*
  2639. PFD1 SA1 X2+FTPM
  2640. MX6 -9
  2641. LX1 -48
  2642. BX1 -X6*X1 EST ORDINAL OF DEVICE WITH ERROR
  2643. RJ COD CONVERT EST ORDINAL
  2644. BX1 X4
  2645. SB2 1R+
  2646. RJ SNM SET EST ORDINAL IN MESSAGE
  2647. SB2 B5 SET MESSAGE ADDRESS
  2648. RJ SEM SEND ERROR MESSAGE
  2649.  
  2650. * PURGE DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES.
  2651.  
  2652. RECALL DATA
  2653. RECALL PETS
  2654. SA1 PETS+FTSC SAVE OLD SECTOR COUNTER
  2655. SX0 X1+
  2656. RJ SSC SET BUFFER SECTOR COUNT
  2657. SA1 PETS+FTSC ADJUST SECTOR COUNTER
  2658. IX6 X0-X1
  2659. SA6 A1
  2660. SA1 PETS+FTFT REWIND PERMIT BUFFER
  2661. SX6 X1
  2662. SA6 A1+B1
  2663. SA6 A6+B1
  2664. BX4 X4-X4 CLEAR IAPF PROCESSED FLAG
  2665. SA0 B0 CLEAR PERMITS PROCESSED FLAG
  2666. SB5 B0 CLEAR BLOCK WORD COUNT
  2667. SA5 CATS+FTOT GET FWA OF CATALOG ENTRIES
  2668. SA2 IPFF
  2669. SA1 A5-B1 GET LWA+1 OF CATALOG ENTRIES
  2670. SX5 X5-NWCE
  2671. BX0 X1
  2672. ZR X2,PFD4 IF NO INCOMPLETE FILE
  2673. SX0 X0+NWCE INCLUDE INCOMPLETE FILE
  2674. PFD4 SX5 X5+NWCE ADVANCE TO NEXT CATALOG ENTRY
  2675. GT B5,PFD5 IF NOT END OF CATALOG BLOCK
  2676. SB5 100B SET FULL BLOCK WORD COUNT
  2677. SX5 X5+1 SKIP CONTROL WORD
  2678. PFD5 IX6 X5-X0
  2679. SB5 B5-NWCE DECREMENT BLOCK WORD COUNT
  2680. MX3 -12
  2681. PL X6,PFD10 IF NO MORE CATALOG ENTRIES
  2682. SA2 ANCE
  2683. SA1 X5+FCUI
  2684. IX7 X5-X2
  2685. SX6 X1
  2686. NG X7,PFD4 IF AN OLD CATALOG ENTRY
  2687. SX7 X1-IFUI
  2688. ZR X6,PFD7 IF A HOLE
  2689. ZR X7,PFD7 IF WRITE ERROR ON FILE
  2690. SA1 X5+FCBT+FCBS* GET FIRST TRACK AND SECTOR OF FILE
  2691. BX6 -X3*X1
  2692. LX3 12
  2693. BX7 X3*X1 CLEAR FIRST TRACK OF FILE
  2694. BX3 -X3*X1
  2695. LX1 59-11
  2696. SA7 A1
  2697. ZR X3,PFD7 IF NO FIRST TRACK
  2698. NG X1,PFD8 IF DIRECT ACCESS FILE
  2699. NZ X4,PFD7 IF IAPF FILE ALREADY PROCESSED
  2700. SX4 B1+ SET IAPF FILE PROCESSED FLAG
  2701. PFD6 BX6 X3+X6 PUT PARAMETERS IN FET
  2702. MX3 42
  2703. SA6 DATA+FTPM
  2704. SA1 DATA PUT POSITION REQUEST IN FET
  2705. BX7 X3*X1
  2706. SA7 A1
  2707. RECALL A1 WAIT FOR POSITIONING TO COMPLETE
  2708. PFD7 SA1 X5+FCRI GET PERMIT RANDOM INDEX
  2709. MX3 -24
  2710. LX1 -36
  2711. BX6 -X3*X1
  2712. ZR X6,PFD4 IF NO PERMITS
  2713. SB7 A0
  2714. NZ B7,PFD4 IF PERMITS ALREADY PROCESSED
  2715. SA0 B1 SET PERMITS PROCESSED FLAG
  2716. MX3 42
  2717. SA6 PETS+FTPM PUT RANDOM INDEX PARAMETER IN FET
  2718. SA1 PETS SET POSITION REQUEST IN FET
  2719. BX7 X3*X1
  2720. SB6 LWRD SET BUFFER ADDRESS
  2721. SX6 B1+B1 SET EOI CONTROL WORD
  2722. SA7 A1
  2723. LX6 54
  2724. SB7 B1 SET BUFFER WORD COUNT
  2725. SA6 B6
  2726. SX2 A1 SET PERMITS FET ADDRESS
  2727. RJ WPR WRITE EOI SECTOR
  2728. RJ FUB FLUSH PERMIT BUFFER
  2729. EQ PFD4 PROCESS NEXT CATALOG ENTRY
  2730.  
  2731. * PROCESS DIRECT ACCESS FILE.
  2732.  
  2733. PFD8 SA1 X5+FCDN GET DEVICE NUMBER FROM CATALOG
  2734. MX6 -6
  2735. LX1 -36
  2736. BX2 -X6*X1
  2737. RJ SFD SEARCH FOR DEVICE
  2738. LX1 -6 SET EST ORDINAL
  2739. MX7 -9
  2740. BX7 -X7*X1 EXTRACT EST ORDINAL
  2741. SX6 X7+4000B SET *DROP TRACKS* FLAG
  2742. EQ PFD6 DROP TRACK CHAIN
  2743.  
  2744. * DROP UTILITY PROCESSOR AND UTILITY INTERLOCK.
  2745.  
  2746. PFD10 BX6 X6-X6 CLEAR *CATALOG ENTRIES WRITTEN*
  2747. SA6 CEWF
  2748. RJ DUP DROP UTILITY PROCESSOR
  2749. RJ CIN CLEAR UTILITY INTERLOCK
  2750. EQ PFDX RETURN
  2751. PGF SPACE 4,25
  2752. ** PGF - PURGE FILE ON REPLACE OPTION.
  2753. *
  2754. * ENTRY (X6) .NE. 0 IF SPACE AVAILABLE FOR FILE.
  2755. * (X6) = 0 IF NO SPACE FOR DIRECT ACCESS FILE.
  2756. * (X7) = REQUIRED DEVICE NUMBER IF .NE. 0 AND NO SPACE
  2757. * FOR DIRECT ACCESS FILE.
  2758. * (X7) = 0 IF LOAD LEVELING USED IN DEVICE SELECTION AND
  2759. * NO SPACE FOR DIRECT ACCESS FILE.
  2760. *
  2761. * EXIT (B2) = 0 IF FILE PURGE ATTEMPTED.
  2762. * (B2) = * NO SPACE FOR FILE* MESSAGE ADDRESS IF FILE
  2763. * PURGE NOT ATTEMPTED.
  2764. * UTILITY INTERLOCK SET AND *PFU* ACTIVE.
  2765. *
  2766. * USES X - 1, 2, 3, 5, 6, 7.
  2767. * A - 1, 2, 3, 5, 6, 7.
  2768. * B - 2.
  2769. *
  2770. * CALLS AUP, CAL, CIN, DUP, RAS, SFD, SIN.
  2771. *
  2772. * MACROS CATLIST, PURGE, SETPFP.
  2773.  
  2774.  
  2775. * REACTIVATE *PFU* AND RETURN NO SPACE FOR FILE ERROR.
  2776.  
  2777. PGF5 RJ SIN SET UTILITY INTERLOCK
  2778. RJ AUP ACTIVATE *PFU*
  2779. SB2 ERNS * NO SPACE FOR FILE ...*
  2780.  
  2781. PGF SUBR ENTRY/EXIT
  2782.  
  2783. * SAVE ENTRY CONDITIONS AND DROP *PFU*.
  2784.  
  2785. SA6 PGFB SAVE NO SPACE STATUS
  2786. SA7 A6+1 SAVE DEVICE POINTER
  2787. RJ DUP DROP UTILITY PROCESSOR
  2788. RJ CIN CLEAR UTILITY INTERLOCK
  2789.  
  2790. * SET FILE NAME AND USER INDEX FOR *PFM*.
  2791.  
  2792. SA1 TCBF+FCFN GET FILE NAME AND USER INDEX
  2793. SA2 PGFA GET CURRENT USER INDEX
  2794. MX7 -18
  2795. BX6 -X7*X1 USER INDEX
  2796. BX7 X7*X1 FILE NAME
  2797. IX2 X2-X6
  2798. SA7 P+CFPN SET FILE NAME IN FET
  2799. ZR X2,PGF1 IF SAME USER INDEX
  2800. SA6 PGFA UPDATE CURRENT USER INDEX
  2801. SA6 SPAR+2 SET USER INDEX IN *CPM* CALL
  2802. SX6 UIPR SET USER INDEX FLAG
  2803. SA6 SPAR
  2804. SETPFP SPAR SET USER INDEX
  2805.  
  2806. * DETERMINE IF PURGE WILL CREATE SUFFICIENT SPACE FOR FILE.
  2807.  
  2808. PGF1 SA1 PGFB
  2809. NZ X1,PGF4 IF SPACE FOR FILE AVAILABLE
  2810. SX6 PFMB SET IN = OUT = FIRST
  2811. SA6 P+2
  2812. SA6 P+3
  2813. CATLIST P GET DEVICE NUMBER AND FILE LENGTH
  2814. SA1 P
  2815. MX6 -8
  2816. AX1 10
  2817. BX1 -X6*X1
  2818. NZ X1,PGF5 IF ERROR ON CATLIST CALL
  2819. SA2 PFMB+FCDN GET DEVICE NUMBER
  2820. SA3 PFMB+FCBS+FCLF*0 GET FIRST SECTOR AND LENGTH
  2821. MX6 -6
  2822. LX2 -36
  2823. LX3 59-11
  2824. BX2 -X6*X2
  2825. PL X3,PGF5 IF INDIRECT ACCESS FILE
  2826. RJ SFD SEARCH FOR DEVICE
  2827. ZR X1,PGF5 IF DEVICE NOT FOUND
  2828. SA2 PGFB+1
  2829. SA5 A1+1 GET DEVICE PARAMETERS
  2830. ZR X2,PGF2 IF LOAD LEVELING USED TO SELECT DEVICE
  2831. SB2 X2
  2832. SB2 A1-B2
  2833. ZR B2,PGF3 IF SAME DEVICE
  2834. EQ PGF5 SET NO SPACE FOR FILE
  2835.  
  2836. PGF2 RJ CAL CHECK ACCESS LEVELS
  2837. NG X6,PGF5 IF ACCESS LEVEL ERROR
  2838. PGF3 MX6 -24
  2839. MX7 -12
  2840. LX3 -24
  2841. LX5 -36
  2842. BX3 -X6*X3 FILE LENGTH
  2843. SX6 B1+B1
  2844. BX1 -X7*X5 DEVICE SECTOR LIMIT
  2845. IX3 X3+X6 INCLUDE SYSTEM SECTOR AND EOI IN LENGTH
  2846. SX6 X1-1
  2847. BX7 X1
  2848. IX3 X3+X6
  2849. LX5 36 RESTORE DEVICE PARAMETERS
  2850. IX3 X3/X7
  2851. IX3 X3*X1 SPACE OCCUPIED BY FILE
  2852. RJ RAS CHECK SPACE ON DEVICE WITH FILE PURGE
  2853. ZR X1,PGF5 IF NO SPACE AVAILABLE
  2854.  
  2855. * REQUIRE FILE NOT BUSY TO AVOID PURGING OLD FILE WITHOUT
  2856. * CREATING SPACE FOR FILE TO BE LOADED.
  2857.  
  2858. SA1 P+CFPN
  2859. SX6 SRNB SET NOT BUSY REQUIRED
  2860. LX6 12
  2861. BX6 X1+X6
  2862. SA6 A1+
  2863.  
  2864. * PURGE FILE AND REACTIVATE *PFU*. ERROR STATUS IS NOT CHECKED
  2865. * SINCE A PURGE FAILURE WILL BE DETECTED BY THE FILE NAME
  2866. * REAPPEARING IN THE FILE LIST WHEN *PFU* IS REACTIVATED.
  2867.  
  2868. PGF4 PURGE P PURGE FILE
  2869. RJ SIN SET UTILITY INTERLOCK
  2870. RJ AUP ACTIVATE *PFU*
  2871. SB2 B0 SET NO ERROR
  2872. EQ PGFX RETURN
  2873.  
  2874.  
  2875. PGFA CON 0 CURRENT USER INDEX
  2876. PGFB CON 0 NO SPACE FOR FILE STATUS
  2877. CON 0 REQUIRED DEVICE POINTER
  2878. PPB SPACE 4,30
  2879. ** PPB - PROCESS PERMIT BLOCK.
  2880. *
  2881. * ENTRY (CWBF) = PERMIT CONTROL WORD.
  2882. * (RICT) = CURRENT PERMIT RANDOM INDEX.
  2883. * (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY.
  2884. *
  2885. * EXIT (X6) = 0 IF FILE NOT TO BE LOADED.
  2886. * (X6) = 1 IF FILE TO BE LOADED.
  2887. * (RICT) = UPDATED PERMIT RANDOM INDEX.
  2888. * (SKER) = 1 IF *SKIP TO EOR* REQUIRED.
  2889. * CATALOG ENTRY UPDATED WITH RANDOM INDEX OF FIRST
  2890. * PERMIT SECTOR.
  2891. * PERMIT SECTORS WRITTEN TO *PETS* FILE.
  2892. * ARCHIVE FILE POSITIONED AT EOR IF FILE NOT TO BE
  2893. * LOADED, OTHERWISE AT FIRST WORD FOLLOWING PERMITS.
  2894. *
  2895. * IF A PERMIT WRITE ERROR, TRACK LIMIT ERROR OR ERROR
  2896. * IDLE CONDITION IS DETECTED, CLEANUP IS PERFORMED AND
  2897. * EXIT IS TO *ABT*.
  2898. *
  2899. * USES X - 0, 1, 2, 3, 5, 6, 7.
  2900. * A - 1, 2, 3, 6, 7.
  2901. * B - 2, 3, 6, 7.
  2902. *
  2903. * CALLS CFE, PWE, RCW, SCE, SFE, WPR.
  2904. *
  2905. * MACROS CWREAD.
  2906.  
  2907.  
  2908. PPB SUBR ENTRY/EXIT
  2909. SA3 CATS+2 PUT FIRST RANDOM INDEX IN CATALOG
  2910. SA1 X3+FCRI
  2911. SA2 RICT
  2912. MX3 -36
  2913. BX7 -X3*X1
  2914. LX2 36
  2915. BX6 X2+X7
  2916. SA6 A1
  2917. BX5 X5-X5 CLEAR SECTOR BUFFER WORD COUNT
  2918. PPB1 SA1 CWBF SET WORD COUNT OF CONTROL WORD
  2919. MX2 -9
  2920. BX0 -X2*X1
  2921.  
  2922. * FILL PERMIT SECTOR BUFFER.
  2923.  
  2924. PPB2 SX1 100B
  2925. IX3 X1-X5 REMAINING WORD COUNT OF SECTOR BUFFER
  2926. IX2 X0-X3
  2927. PL X2,PPB3 IF CONTROL WORD WILL FILL SECTOR BUFFER
  2928. BX3 X0 SET TO READ REMAINDER OF CONTROL WORD
  2929. PPB3 ZR X3,PPB4 IF NO WORDS TO READ
  2930. SB6 TDBF+X5 SET SECTOR BUFFER ADDRESS
  2931. IX0 X0-X3 REMAINING WORD COUNT FOR CONTROL WORD
  2932. IX5 X5+X3 SECTOR BUFFER WORD COUNT
  2933. CWREAD TAPE,B6,X3
  2934. NZ X7,PPB5 IF READ ERROR
  2935. ZR X1,PPB2 IF CONTROL WORD BLOCK COMPLETE
  2936. SB2 ERAB * ARCHIVE BLOCK ERROR ...*
  2937. EQ PPB6 PROCESS INCOMPLETE PERMIT BLOCK
  2938.  
  2939. * PROCESS END OF CONTROL WORD.
  2940.  
  2941. PPB4 NZ X0,PPB10 IF NOT END OF CONTROL WORD
  2942. SA1 CWBF GET EOR FLAG
  2943. MX2 -3
  2944. LX1 -9
  2945. BX3 -X2*X1 SET LAST SECTOR FLAG
  2946. LX1 -6
  2947. BX6 -X2*X1
  2948. SB3 X3
  2949. NZ X6,PPB8 IF ERROR CONTROL WORD
  2950. EQ B3,B1,PPB9 IF EOR FLAG SET IN CONTROL WORD
  2951. RJ RCW READ NEXT CONTROL WORD
  2952. SX2 X3-2
  2953. ZR X2,PPB1 IF A PERMIT CONTROL WORD
  2954.  
  2955. * PROCESS ARCHIVE FILE ERROR.
  2956.  
  2957. PPB5 SA7 AREF INDICATE READ ERROR
  2958. SB2 ERAR * ARCHIVE FILE READ ERROR ...*
  2959. PPB6 SA1 CATS+FTIN
  2960. SA1 X1+FCUI
  2961. RJ SFE SEND ERROR MESSAGE
  2962. RJ CFE COUNT FILE NOT LOADED
  2963. SX7 B1 SET SKIP TO EOR FLAG
  2964. BX6 X6-X6 SELECT NO FILE LOAD
  2965. SA7 SKER
  2966. EQ PPBX RETURN
  2967.  
  2968. * PROCESS EMPTY PERMIT SECTOR.
  2969.  
  2970. PPB8 SX6 FEPM SET PERMIT ERROR IN CATALOG
  2971. RJ SCE
  2972. PPB9 NZ X5,PPB10 IF NOT EMPTY SECTOR
  2973. SA3 CATS+2 CLEAR PERMIT RANDOM INDEX FROM CATALOG
  2974. SA1 X3+FCRI
  2975. MX2 -36
  2976. BX7 -X2*X1
  2977. SX6 B1 SELECT FILE LOAD
  2978. SA7 A1
  2979. EQ PPBX RETURN
  2980.  
  2981. * WRITE PERMIT SECTOR TO PERMIT FILE.
  2982.  
  2983. PPB10 SA1 RICT ADVANCE RANDOM INDEX
  2984. SA2 CATS+2 GET CATALOG ADDRESS
  2985. SX6 B1
  2986. IX7 X1+X6
  2987. SB7 X5+B1 SET SECTOR WORD COUNT
  2988. SA7 A1
  2989. SA1 X2+FCUI GET USER INDEX FROM CATALOG
  2990. LX2 36 BUILD SECTOR CONTROL WORD
  2991. BX6 X2+X5
  2992. LX7 36
  2993. MX2 -18
  2994. SA6 LWRD
  2995. BX1 -X2*X1
  2996. ZR X3,PPB11 IF NOT LAST SECTOR
  2997. BX7 X7-X7 CLEAR PERMIT LINKAGE RANDOM INDEX
  2998. PPB11 LX1 12 GET PERMIT LINKAGE WORD
  2999. BX6 X7+X1
  3000. SB6 LWRD SET WORKING BUFFER ADDRESS
  3001. BX5 X3 SAVE LAST SECTOR FLAG
  3002. SX2 PETS SET FET ADDRESS
  3003. SA6 B6+B1
  3004. RJ WPR WRITE PERMIT SECTOR
  3005. NZ B7,PPB12 IF PERMIT WRITE ERROR
  3006. ZR X5,PPB2 IF NOT LAST SECTOR
  3007. SX6 B1 SELECT FILE LOAD
  3008. EQ PPBX RETURN
  3009.  
  3010. * PROCESS PERMIT WRITE ERROR.
  3011.  
  3012. PPB12 RJ PWE PROCESS PERMIT WRITE ERROR
  3013. SB2 B0 SET NO MESSAGE
  3014. EQ ABT ABORT LOAD
  3015. PWE SPACE 4,35
  3016. ** PWE - PERMIT WRITE ERROR PROCESSOR.
  3017. *
  3018. * ENTRY (X6) = FET ERROR CODE.
  3019. * (CPAR+COMSPFS/CPDN) = MASTER DEVICE NUMBER.
  3020. * (PETS+FTPM) = BAD TRACK AND SECTOR ADDRESS.
  3021. * (*PETS* OUT POINTER) = ADDRESS OF CONTROL WORD FOR
  3022. * BAD SECTOR.
  3023. *
  3024. * EXIT *PFU* DROPPED.
  3025. *
  3026. * IF A WRITE ERROR -
  3027. * ERROR IDLE STATUS SET FOR MASTER EQUIPMENT IF DATA
  3028. * ON THE PERMITS FILE HAS BEEN CORRUPTED.
  3029. * UTILITY INTERLOCK CLEARED.
  3030. * PERMIT WRITE ERROR MESSAGES ISSUED.
  3031. *
  3032. * IF A TRACK LIMIT OR ERROR IDLE -
  3033. * DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES ARE
  3034. * PURGED.
  3035. * UTILITY PROCESSOR IS DROPPED.
  3036. * UTILITY INTERLOCK IS CLEARED.
  3037. * TRACK LIMIT OR ERROR IDLE MESSAGES ARE ISSUED.
  3038. * MESSAGE IDENTIFYING FIRST FILE NOT LOADED IS
  3039. * ISSUED.
  3040. *
  3041. * USES X - 1, 2, 6, 7.
  3042. * A - 1, 2, 6, 7.
  3043. * B - 2.
  3044. *
  3045. * CALLS CIN, DUP, PFD, SEI, SFE.
  3046.  
  3047.  
  3048. * PROCESS TRACK LIMIT/ERROR IDLE CONDITION.
  3049.  
  3050. PWE3 SX2 PETS
  3051. RJ PFD PROCESS FULL DEVICE
  3052.  
  3053. PWE SUBR ENTRY/EXIT
  3054. SX1 X6-FEWE
  3055. ZR X1,PWE1 IF WRITE ERROR WITH DATA TRANSFERRED
  3056. SX1 X6-FEWN CHECK WRITE ERROR WITH NO DATA TRANSFERRED
  3057. NZ X1,PWE3 IF NOT WRITE ERROR
  3058.  
  3059. * PROCESS WRITE ERROR.
  3060.  
  3061. PWE1 SA6 PWEA SAVE ERROR CODE
  3062. BX6 X6-X6 CLEAR *CATALOG ENTRIES WRITTEN*
  3063. SA6 CEWF
  3064. RJ DUP DROP UTILITY PROCESSOR
  3065. SA1 PWEA ERROR CODE
  3066. SX1 X1-FEWE
  3067. NZ X1,PWE2 IF DATA NOT TRANSFERRED TO DEVICE
  3068. SB2 ELWP * ERROR IDLE SET - PF PERMITS WRITE ...*
  3069. RJ SEI SET ERROR IDLE STATUS
  3070. PWE2 RJ CIN CLEAR UTILITY INTERLOCK
  3071.  
  3072. * IDENTIFY AFFECTED FILE.
  3073.  
  3074. SA2 PETS+3 GET BAD SECTOR CONTROL WORD
  3075. SA1 X2
  3076. LX1 -36 SET FILE NAME OF BAD FILE
  3077. SA1 X1+FCFN+FCUI*
  3078. SB2 ERPW * PERMIT WRITE ERROR ...*
  3079. RJ SFE SEND ERROR MESSAGE
  3080. EQ PWEX RETURN
  3081.  
  3082.  
  3083. PWEA BSS 1 FET ERROR CODE
  3084. RAS SPACE 4,25
  3085. ** RAS - RETURN AVAILABLE SPACE.
  3086. *
  3087. * ENTRY (X5) = SECOND WORD OF *MSTT* ENTRY.
  3088. * (A5) = ADDRESS OF SECOND WORD OF *MSTT* ENTRY.
  3089. * (X3) = INCREMENT TO ADD TO AVAILABLE SPACE.
  3090. * CATALOG ENTRY IN *TCBF*.
  3091. *
  3092. * EXIT (X1) = 2/0, 3/ST, 31/0, 24/SC IF SUFFICIENT SPACE FOR
  3093. * FILE ON DEVICE AND DEVICE IS ACCESSIBLE.
  3094. * ST = 7 IF DEVICE *ON* AND NOT SUSPECT.
  3095. * = 6 IF DEVICE *ON* AND SUSPECT.
  3096. * = 5 IF DEVICE *IDLE* AND NOT SUSPECT.
  3097. * = 4 IF DEVICE *IDLE* AND SUSPECT.
  3098. * = 2 IF DEVICE *OFF*.
  3099. * SC = AVAILABLE SECTOR COUNT ON DEVICE.
  3100. * (X1) = 0 IF INSUFFICIENT SPACE FOR FILE ON DEVICE OR
  3101. * DEVICE STATE IS *DOWN*.
  3102. * (A5) = ADDRESS OF SECOND WORD OF *MSTT* ENTRY.
  3103. *
  3104. * USES X - 1, 2, 5, 6, 7.
  3105. * A - 1, 2, 6, 7.
  3106. *
  3107. * MACROS SYSTEM.
  3108.  
  3109.  
  3110. RAS1 SX1 B0+ SET DEVICE NOT AVAILABLE FOR FILE
  3111.  
  3112. RAS SUBR ENTRY/EXIT
  3113. LX5 12
  3114. MX6 -12
  3115. SX1 DALL+1 WORD COUNT FOR READ
  3116. BX6 -X6*X5 MST ADDRESS / 10B
  3117. LX1 36
  3118. LX6 3+18
  3119. BX6 X6+X1 MERGE WORD COUNT
  3120. SX2 RASB BUFFER ADDRESS
  3121. BX6 X6+X2 MERGE BUFFER ADDRESS
  3122. MX7 1 SET CMR READ
  3123. SA6 RASA SET STATUS WORD
  3124. SA7 RASB SET BUFFER CONTROL WORD
  3125. SYSTEM RSB,R,A6 READ MST DATA
  3126. SA1 RASB+TDGL
  3127. SA2 RASB+DALL
  3128. MX7 -12
  3129. MX6 3
  3130. LX6 -2
  3131. BX1 -X7*X1 TRACKS AVAILABLE
  3132. BX2 X6*X2 DEVICE STATE AND SUSPECT STATUS
  3133. LX5 12
  3134. IX6 X6-X2 DEVICE STATUS FACTOR
  3135. AX2 56
  3136. BX7 -X7*X5 SECTOR LIMIT
  3137. SX2 X2-DWES
  3138. IX1 X1*X7 SECTORS AVAILABLE ON DEVICE
  3139. ZR X2,RAS1 IF DEVICE STATE IS *DOWN*
  3140. SA2 TCBF+FCLF
  3141. IX1 X1+X3 ADD INCREMENT TO AVAILABLE SPACE
  3142. MX7 -24
  3143. LX2 24
  3144. BX2 -X7*X2 LENGTH OF FILE
  3145. SX7 B1+B1
  3146. IX2 X1-X2
  3147. IX2 X2-X7 SUBTRACT SYSTEM SECTOR AND EOI
  3148. IX1 X1+X6 MERGE SECTORS AVAILABLE AND STATUS FACTOR
  3149. NG X2,RAS1 IF INSUFFICIENT SPACE FOR FILE
  3150. EQ RASX RETURN
  3151.  
  3152.  
  3153. RASA VFD 12/0,12/DALL+1,18/0,18/RASB *RSB* STATUS WORD
  3154. RASB BSSZ DALL+1 MST DATA BUFFER
  3155. ERRNG DALL-TDGL CODE DEPENDS ON WORD ORDER
  3156. RCT SPACE 4,45
  3157. ** RCT - READ CATALOG TRACK.
  3158. *
  3159. * *RCT* POSITIONS THE CATALOG FILE TO THE CURRENT CATALOG
  3160. * TRACK, READS THE TRACK AND BUILDS A LIST OF FILES THAT ARE
  3161. * CONTAINED ON THE TRACK. THE CATALOG FILE FET AND BUFFER ARE
  3162. * LEFT IN A STATE READY TO WRITE ADDITIONAL CATALOG ENTRIES.
  3163. *
  3164. * ENTRY (CATS+FTCA) = PARAMETERS DEFINING CURRENT CATALOG
  3165. * TRACK.
  3166. * UTILITY PROCESSOR ACTIVE.
  3167. * UTILITY INTERLOCK SET.
  3168. *
  3169. * EXIT (FLOF) = 0 IF NO FILE LIST OVERFLOW.
  3170. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE.
  3171. * (FLPT) = LWA+1 OF MEMORY RESIDENT PORTION OF FILE
  3172. * LIST.
  3173. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST.
  3174. * (CSWC) = WORD COUNT OF CATALOG SECTOR REMAINING IN
  3175. * CIRCULAR BUFFER.
  3176. * (CEWF) = 0.
  3177. * (CATS+FTSC) = 0.
  3178. * (ANCE) = FIRST ADDRESS AVAILABLE FOR NEW CATALOG
  3179. * ENTRIES.
  3180. * (CBFO) = BUFFER ORDINAL FOR NEW CATALOG ENTRIES.
  3181. * CIRCULAR BUFFER (STARTING AT FIRST) CONTAINS A *FULL
  3182. * SECTOR* CONTROL WORD WITH POSITIONING PARAMETERS
  3183. * NECESSARY TO REWRITE THE LAST CATALOG SECTOR. ANY
  3184. * CATALOG ENTRIES FROM THE LAST SECTOR FOLLOW THE
  3185. * CONTROL WORD.
  3186. *
  3187. * IF A CATALOG READ ERROR IS DETECTED, THE UTILITY
  3188. * PROCESSOR IS DROPPED, ERROR IDLE STATUS IS SET ON THE
  3189. * MASTER EQUIPMENT, THE UTILITY INTERLOCK IS CLEARED,
  3190. * CATALOG READ ERROR MESSAGES ARE ISSUED AND EXIT IS TO
  3191. * *ABT*.
  3192. *
  3193. * USES X - 0, 1, 2, 3, 5, 6, 7.
  3194. * A - 0, 1, 2, 3, 6, 7.
  3195. * B - 7.
  3196. *
  3197. * CALLS BFL, PCE.
  3198. *
  3199. * MACROS RECALL, REWIND.
  3200.  
  3201.  
  3202. RCT SUBR ENTRY/EXIT
  3203.  
  3204. * POSITION CATALOG FILE.
  3205.  
  3206. SA1 CATS POSITION CATALOG FILE
  3207. MX2 42
  3208. BX6 X2*X1
  3209. SA6 A1
  3210. BX7 X7-X7 CLEAR FILE LIST OVERFLOW
  3211. SA7 FLOF
  3212. SX6 FLBF SET FILE LIST BUFFER EMPTY
  3213. SA6 FLPT
  3214. SA7 CEWF CLEAR *CATALOG ENTRIES WRITTEN*
  3215. RECALL A1+ WAIT FOR POSITION COMPLETE
  3216. REWIND FO,R REWIND OVERFLOW SCRATCH FILE
  3217.  
  3218. * READ CATALOG TRACK.
  3219.  
  3220. RCT1 SA1 CATS+1 REWIND CATALOG BUFFER
  3221. SX6 X1
  3222. SA6 A1+B1
  3223. SA6 A6+B1
  3224. SA0 X1 SAVE BUFFER FIRST POINTER
  3225. SA1 A1-B1 ISSUE READ REQUEST
  3226. MX2 42
  3227. BX1 X2*X1
  3228. SX7 4 SET READ FUNCTION CODE
  3229. BX6 X1+X7
  3230. SA6 A1
  3231. RECALL A1 WAIT FOR READ TO COMPLETE
  3232. RCT2 SA1 CATS+2 CHECK FOR MORE DATA IN BUFFER
  3233. SX2 A0
  3234. IX6 X2-X1
  3235. PL X6,RCT1 IF NO DATA IN BUFFER
  3236. SA1 A0 GET SECTOR CONTROL WORD
  3237. MX2 -12 EXTRACT WORD COUNT
  3238. BX6 -X2*X1
  3239. LX2 12 EXTRACT EOF/EOI FLAG
  3240. BX7 -X2*X1
  3241. LX1 59-49
  3242. NZ X7,RCT3 IF NOT EOF/EOI
  3243. SX6 B0+ CLEAR SECTOR WORD COUNT
  3244. RCT3 SA6 CSWC SAVE SECTOR WORD COUNT
  3245. NG X1,RCT5 IF MASS STORAGE ERROR
  3246. BX0 X6
  3247. SA0 A0+B1
  3248. RJ BFL BUILD FILE LIST
  3249. SA1 CSWC CHECK FOR SHORT SECTOR
  3250. SX6 X1-100B
  3251. ZR X6,RCT2 IF NOT SHORT SECTOR
  3252.  
  3253. * MOVE LAST SECTOR TO START OF BUFFER.
  3254.  
  3255. SA2 CATS+1 DESTINATION ADDRESS = FIRST
  3256. SX6 A0-B1 SET ADDRESS OF LAST SECTOR
  3257. IX7 X6-X1
  3258. SA3 X7 SET FULL SECTOR WORD COUNT IN CONTROL WORD
  3259. MX7 48
  3260. SX6 100B
  3261. BX3 X7*X3
  3262. BX7 X3+X6
  3263. RCT4 SA7 X2 STORE ONE WORD OF SECTOR
  3264. SX2 X2+B1
  3265. SA3 A3+B1
  3266. BX7 X3
  3267. SX1 X1-1
  3268. PL X1,RCT4 IF NOT END OF SECTOR
  3269. BX6 X2 SET IN POINTER
  3270. SA6 A2+B1
  3271. SA6 ANCE SET ADDRESS OF NEW CATALOG ENTRIES
  3272. SA1 CSWC
  3273. SX2 NWCE
  3274. IX6 X1/X2 NUMBER OF CATALOG ENTRIES IN SECTOR
  3275. SA6 CBFO SET NEXT CATALOG ORDINAL
  3276. EQ RCTX RETURN
  3277.  
  3278. * PROCESS CATALOG READ ERROR.
  3279.  
  3280. RCT5 SX7 A0 OUT = ADDRESS OF CONTROL WORD
  3281. SA7 CATS+3
  3282. LX1 49-59 SET SECTOR WORD COUNT
  3283. MX3 48
  3284. BX1 X3*X1
  3285. IX2 X7+X6 IN = LWA+1 OF SECTOR
  3286. BX6 X1+X6
  3287. SX7 X2+B1
  3288. SA6 A0+
  3289. SA7 A7-B1
  3290. SX6 ERCR * CATALOG READ ERROR*
  3291. RJ PCE PROCESS CATALOG READ ERROR
  3292. SB2 B0 SET NO ERROR
  3293. EQ ABT ABORT
  3294. RCW SPACE 4,20
  3295. ** RCW - READ ARCHIVE FILE CONTROL WORD.
  3296. *
  3297. * ENTRY (RCWF) = 0 IF NEW CONTROL WORD TO BE READ.
  3298. * = NON-ZERO IF OLD CONTROL WORD IN *CWBF* TO
  3299. * BE USED.
  3300. *
  3301. * EXIT (X1) = READ STATUS FROM *CWREAD*.
  3302. * (X3) = -1 IF EOR/EOF/EOI OR READ ERROR DETECTED.
  3303. * = CONTROL WORD CODE, OTHERWISE.
  3304. * (X7) = READ ERROR STATUS FROM *CWREAD*.
  3305. * (CWBF) = ARCHIVE FILE CONTROL WORD.
  3306. * (RCWF) = 0.
  3307. * *CWSW* CLEARED FOR ARCHIVE FILE IF EOR WAS DETECTED
  3308. * WITHOUT READ ERROR.
  3309. *
  3310. * USES X - 1, 2, 3, 6, 7.
  3311. * A - 1, 2, 6, 7.
  3312. *
  3313. * MACROS CWREAD.
  3314.  
  3315.  
  3316. * PROCESS RE-USED CONTROL WORD.
  3317.  
  3318. RCW3 SA2 CWBF UNPACK CONTROL WORD CODE
  3319. MX6 -3
  3320. BX7 X7-X7 CLEAR ERROR STATUS
  3321. LX2 -12
  3322. BX1 X1-X1 CLEAR EOR/EOF/EOI STATUS
  3323. SA7 A1 CLEAR CONTROL WORD RE-USE FLAG
  3324. BX3 -X6*X2
  3325.  
  3326. RCW SUBR ENTRY/EXIT
  3327. SA1 RCWF
  3328. NZ X1,RCW3 IF CONTROL WORD RE-USE FLAG SET
  3329.  
  3330. * PROCESS NEW CONTROL WORD.
  3331.  
  3332. CWREAD TAPE,CWBF,B1 READ ARCHIVE FILE CONTROL WORD
  3333. NZ X7,RCW2 IF READ ERROR
  3334. NZ X1,RCW1 IF EOR/EOF/EOI
  3335. SA2 B6-B1 UNPACK CONTROL WORD CODE
  3336. MX6 -3
  3337. LX2 -12
  3338. BX3 -X6*X2
  3339. EQ RCWX RETURN
  3340.  
  3341. * PROCESS EOR/EOF/EOI.
  3342.  
  3343. RCW1 SX3 -B1 SET EOR/EOF/EOI/READ ERROR STATUS
  3344. NG X1,RCWX IF EOF/EOI
  3345. BX6 X6-X6 CLEAR EOR
  3346. SA6 TAPE+CWSW
  3347. EQ RCWX RETURN
  3348.  
  3349. * PROCESS READ ERROR.
  3350.  
  3351. RCW2 SA7 AREF INDICATE READ ERROR
  3352. SX3 -B1 SET EOR/EOF/EOI/READ ERROR STATUS
  3353. EQ RCWX RETURN
  3354. RIP SPACE 4,10
  3355. ** RIP - REPRIEVE INTERRUPT PROCESSOR.
  3356. *
  3357. * EXIT BUSY FETS SET COMPLETE TO ALLOW TERMINATION
  3358. * PROCESSING.
  3359. *
  3360. * MACROS COMPFET.
  3361.  
  3362.  
  3363. RIP SUBR ENTRY/EXIT
  3364. COMPFET (CATS,PETS,DATA,CIRF,TAPE,UIFT,FO,O,SU)
  3365. EQ RIPX RETURN
  3366. SCE SPACE 4,15
  3367. ** SCE - SET CATALOG ERROR CODE.
  3368. *
  3369. * ENTRY (X6) = DATA ERROR OR PERMIT ERROR CODE.
  3370. * (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY.
  3371. * (CBFO) = CATALOG BUFFER ORDINAL.
  3372. *
  3373. * EXIT CATALOG ERROR CODE SET IN CATALOG ENTRY AND IN FILE
  3374. * STATUS ENTRY.
  3375. *
  3376. * USES X - 1, 6, 7.
  3377. * A - 1, 6, 7.
  3378.  
  3379.  
  3380. SCE SUBR ENTRY/EXIT
  3381. SA1 CATS+2
  3382. SA1 X1+FCEC GET CURRENT *PFC* ERROR CODE
  3383. LX6 42
  3384. BX7 X1+X6 MERGE NEW ERROR CODE
  3385. LX6 -41
  3386. SA7 A1
  3387. SA1 CBFO GET CATALOG BUFFER ORDINAL
  3388. SA1 TFST+X1 GET FILE STATUS WORD
  3389. BX7 X1+X6 MERGE ERROR CODE
  3390. SA7 A1
  3391. EQ SCEX RETURN
  3392. SCI SPACE 4,20
  3393. ** SCI - SKIP CATALOG IMAGE RECORD.
  3394. *
  3395. * EXIT (RCWF) = SET IF A CONTROL WORD OTHER THAN FOR A
  3396. * CATALOG IMAGE RECORD WAS FOUND BEFORE
  3397. * EOF/EOI.
  3398. * ARCHIVE FILE POSITIONED FOR PROCESSING FIRST RECORD
  3399. * THAT IS NOT A CATALOG IMAGE RECORD. THIS MAY BE AT
  3400. * EOF/EOI.
  3401. *
  3402. * USES X - 5, 6.
  3403. * A - 6.
  3404. *
  3405. * CALLS RCW, SER.
  3406.  
  3407.  
  3408. SCI4 SX6 B1+ SET CONTROL WORD RE-USE FLAG
  3409. SA6 RCWF
  3410.  
  3411. SCI SUBR ENTRY/EXIT
  3412. SCI1 RJ RCW READ ARCHIVE FILE CONTROL WORD
  3413. SX6 X3-5
  3414. ZR X6,SCI3 IF CATALOG IMAGE RECORD
  3415. PL X3,SCI4 IF CONTROL WORD AVAILABLE
  3416. NZ X7,SCI2 IF READ ERROR
  3417. NG X1,SCIX IF EOF/EOI
  3418. EQ SCI1 CHECK NEXT RECORD
  3419.  
  3420. * SKIP TO END OF RECORD.
  3421.  
  3422. SCI2 SA7 AREF INDICATE READ ERROR
  3423. SCI3 RJ SER SKIP TO END OF RECORD
  3424. EQ SCI1 CHECK NEXT RECORD
  3425. SEC SPACE 4,15
  3426. ** SEC - SKIP THROUGH EOI CONTROL WORD.
  3427. *
  3428. * ENTRY (X2) = FET ADDRESS.
  3429. *
  3430. * EXIT (X2) = FET ADDRESS.
  3431. * (A0) = SECTOR COUNT SKIPPED.
  3432. * *CIO* EOR STATUS SET IN FET.
  3433. * DATA READ FROM BUFFER UNTIL AN EOI SECTOR IS READ OR
  3434. * UNTIL BUFFER IS EMPTY.
  3435. *
  3436. * USES X - 0, 5, 6.
  3437. * A - 0, 5, 6.
  3438. *
  3439. * MACROS READW, RECALL.
  3440.  
  3441.  
  3442. SEC3 SX5 X5-2
  3443. NZ X5,SEC1 IF NOT EOI CONTROL WORD
  3444.  
  3445. SEC SUBR ENTRY/EXIT
  3446. RECALL X2 SET EOR STATUS IN FET
  3447. SA5 X2
  3448. MX6 42
  3449. SX0 23B
  3450. BX5 X6*X5
  3451. BX6 X5+X0
  3452. SA0 B0 CLEAR SECTOR COUNT
  3453. SA6 A5
  3454. SEC1 READW X2,SECA,B1 READ CONTROL WORD
  3455. NZ X1,SECX IF BUFFER EMPTY
  3456. SA5 SECA GET SECTOR WORD COUNT
  3457. MX6 -12
  3458. BX0 -X6*X5
  3459. AX5 54 GET CONTROL WORD TYPE
  3460. SA0 A0+B1 INCREMENT SECTOR COUNT
  3461. SEC2 ZR X0,SEC3 IF END OF SECTOR
  3462. READW X2,SECA,B1 READ ONE WORD OF SECTOR
  3463. NZ X1,SECX IF BUFFER EMPTY
  3464. SX0 X0-1
  3465. EQ SEC2 CHECK FOR END OF SECTOR
  3466.  
  3467.  
  3468. SECA CON 0 SCRATCH BUFFER
  3469. SER SPACE 4,10
  3470. ** SER - SKIP TO END OF RECORD.
  3471. *
  3472. * EXIT ARCHIVE FILE POSITIONED AT EOR/EOF/EOI.
  3473. * *CWSW* CLEARED FOR ARCHIVE FILE IF NOT EOF/EOI.
  3474. * (X1) .LT. 0 IF EOF/EOI.
  3475. *
  3476. * USES X - 2, 5, 6, 7.
  3477. * A - 2, 6.
  3478. *
  3479. * MACROS CWREAD.
  3480.  
  3481.  
  3482. SER SUBR ENTRY/EXIT
  3483. SER1 CWREAD TAPE,TDBF,TDBFL
  3484. ZR X7,SER2 IF NO READ ERROR
  3485. SA7 AREF INDICATE READ ERROR
  3486. ZR B7,SER1 IF TRANSFER COMPLETE
  3487. SER2 ZR X1,SER1 IF NOT EOR/EOF/EOI
  3488. NG X1,SERX IF EOF/EOI
  3489. SX6 B0+ CLEAR EOR
  3490. SA6 TAPE+CWSW
  3491. EQ SERX RETURN
  3492. SFD SPACE 4,15
  3493. ** SFD - SEARCH FOR DEVICE.
  3494. *
  3495. * ENTRY (X2) = DEVICE NUMBER TO SEARCH FOR IF .NE. 0.
  3496. * (X2) = 0 IF SEARCH FOR MASTER DEVICE.
  3497. * (CPAR+/COMSPFS/CPDN) = MASTER DEVICE NUMBER.
  3498. *
  3499. * EXIT (A1) = ADDRESS OF FIRST WORD OF DEVICE-S *MSTT* ENTRY.
  3500. * (X1) = FIRST WORD OF DEVICE-S ENTRY.
  3501. * (X1) = 0 IF DEVICE NOT FOUND IN TABLE.
  3502. *
  3503. * USES X - 0, 1, 2, 7.
  3504. * A - 1, 2.
  3505. * B - 7.
  3506.  
  3507.  
  3508. SFD SUBR ENTRY/EXIT
  3509. MX0 -6
  3510. SB7 MSTT
  3511. NZ X2,SFD1 IF NOT MASTER DEVICE SEARCH
  3512. SA2 CPAR+/COMSPFS/CPDN GET MASTER DEVICE NUMBER
  3513. SFD1 SA1 B7+ READ NEXT TABLE ENTRY
  3514. ZR X1,SFDX IF END OF TABLE
  3515. SB7 B7+2 ADVANCE TABLE ADDRESS
  3516. BX7 -X0*X1
  3517. IX7 X2-X7
  3518. NZ X7,SFD1 IF NOT MATCHING DEVICE
  3519. EQ SFDX RETURN
  3520. SFL SPACE 4,15
  3521. ** SFL - SEARCH FILE LIST.
  3522. *
  3523. * ENTRY (TCBF) = CATALOG ENTRY FOR FILE.
  3524. * (FLOF) = 0 IF NO FILE LIST OVERFLOW.
  3525. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE.
  3526. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER.
  3527. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST.
  3528. *
  3529. * EXIT (X6) = 0 IF FILE IN LIST.
  3530. * (X6) .NE. 0 IF FILE NOT IN LIST.
  3531. *
  3532. * USES X - 0, 1, 2, 3, 5, 6.
  3533. * A - 1, 2, 3.
  3534. *
  3535. * MACROS READ, READW, REWIND.
  3536.  
  3537.  
  3538. SFL5 SX6 B1+ SET FILE NOT FOUND
  3539.  
  3540. SFL SUBR ENTRY/EXIT
  3541.  
  3542. * CHECK FOR PRIVATE AUXILIARY DEVICE.
  3543.  
  3544. SA1 CPAR+/COMSPFS/CPPN
  3545. SA2 CPAR+/COMSPFS/CPUN
  3546. MX5 60 SET TO CHECK FILE NAME AND USER INDEX
  3547. ZR X1,SFL1 IF NOT AUXILIARY DEVICE
  3548. ZR X2,SFL1 IF NOT PRIVATE DEVICE
  3549. MX5 42 SET TO CHECK FILE NAME ONLY
  3550.  
  3551. * SEARCH MEMORY RESIDENT PORTION OF FILE LIST.
  3552.  
  3553. SFL1 SA1 TCBF+FCFN+FCUI*0 GET FILE NAME AND USER INDEX
  3554. SA2 FLPT LWA+1 OF FILE LIST
  3555. SX0 FLBF FWA OF FILE LIST
  3556. SFL2 IX6 X0-X2
  3557. PL X6,SFL3 IF NO MORE ENTRIES IN LIST
  3558. SA3 X0 COMPARE FILE NAME AND USER INDEX
  3559. BX6 X3-X1
  3560. BX6 X5*X6
  3561. SX0 X0+1 ADVANCE FILE LIST BUFFER ADDRESS
  3562. ZR X6,SFLX IF MATCHING ENTRY
  3563. EQ SFL2 CHECK NEXT ENTRY
  3564.  
  3565. * SEARCH SCRATCH FILE PORTION OF FILE LIST.
  3566.  
  3567. SFL3 SA3 FLOF
  3568. ZR X3,SFL5 IF NO FILE LIST OVERFLOW
  3569. REWIND FO START SCRATCH FILE READ
  3570. READ FO
  3571. SFL4 READW FO,SFLA,1 GET NEXT FILE LIST ENTRY
  3572. NZ X1,SFL5 IF END OF SCRATCH FILE
  3573. SA1 TCBF+FCFN+FCUI* COMPARE FILE NAME AND USER INDEX
  3574. SA2 SFLA
  3575. BX6 X1-X2
  3576. BX6 X5*X6
  3577. ZR X6,SFLX IF MATCHING ENTRY
  3578. EQ SFL4 CHECK NEXT ENTRY
  3579.  
  3580.  
  3581. SFLA CON 0 FILE LIST ENTRY SCRATCH WORD
  3582. SIN SPACE 4,15
  3583. ** SIN - SET PF UTILITY INTERLOCK.
  3584. *
  3585. * ENTRY (UIFL) = UTILITY INTERLOCK FLAG.
  3586. * (MAEQ) = EQUIPMENT TO SET INTERLOCK ON.
  3587. *
  3588. * EXIT (UIFL) = 1.
  3589. * *PFU* CALLED TO SET UTILITY INTERLOCK IF NOT ALREADY
  3590. * SET.
  3591. *
  3592. * USES X - 1, 2, 3, 6.
  3593. * A - 1, 2, 3, 6.
  3594. *
  3595. * MACROS CALLPFU, MESSAGE, MOVE.
  3596.  
  3597.  
  3598. SIN SUBR ENTRY/EXIT
  3599. SA1 UIFL
  3600. NZ X1,SINX IF UTILITY INTERLOCK ALREADY SET
  3601. SA2 MAEQ SET MASTER DEVICE EST ORDINAL
  3602. SX1 UIFL SET INTERLOCK FLAG ADDRESS
  3603. LX2 48
  3604. BX6 X2+X1
  3605. SA3 IDSA+/COMSPFS/ADM2 K DISPLAY MESSAGE ADDRESS
  3606. SA6 UIFT+FTPM
  3607. MOVE 3,MSGJ,X3 * SETTING UTILITY INTERLOCK.*
  3608. MESSAGE MSGJ,2,R
  3609. CALLPFU UIFT,CTSU,R SET PF UTILITY INTERLOCK
  3610. SA3 IDSA+/COMSPFS/ADM2 K DISPLAY MESSAGE ADDRESS
  3611. MOVE 3,BLNK,X3 CLEAR MESSAGES
  3612. MESSAGE (=C**),2,R
  3613. EQ SINX RETURN
  3614. SMD SPACE 4,30
  3615. ** SMD - SET MASTER DEVICE PARAMETERS.
  3616. *
  3617. * ENTRY (TCBF) = CURRENT CATALOG ENTRY.
  3618. * (MMSK) = CURRENT MASTER DEVICE MASK.
  3619. * (NCTR) = CURRENT NUMBER OF CATALOG TRACKS.
  3620. * (CCTR) = CURRENT CATALOG TRACK.
  3621. *
  3622. * EXIT (MMSK) = UPDATED MASTER DEVICE MASK.
  3623. * (NCTR) = UPDATED NUMBER OF CATALOG TRACKS.
  3624. * (CCTR) = UPDATED CURRENT CATALOG TRACK.
  3625. * (MAEQ) = UPDATED MASTER EQUIPMENT.
  3626. * (CPAR+/COMSPFS/CPDN) = UPDATED MASTER DEVICE NUMBER.
  3627. * MASTER DEVICE SWITCH MADE IF NECESSARY.
  3628. * FILES OPENED IF A MASTER DEVICE SWITCH IS MADE.
  3629. * UTILITY INTERLOCK SET.
  3630. * UTILITY PROCESSOR ACTIVE.
  3631. * FILES POSITIONED.
  3632. *
  3633. * USES X - 0, 1, 2, 3, 4, 6, 7.
  3634. * A - 1, 2, 3, 4, 6, 7.
  3635. * B - 2.
  3636. *
  3637. * CALLS AUP, CIN, DUP, FCB, RCT, SIN.
  3638. *
  3639. * MACROS CALLPFU, RETURN, SETFS.
  3640.  
  3641.  
  3642. SMD1 RJ DUP DROP UTILITY PROCESSOR
  3643. RJ CIN CLEAR UTILITY INTERLOCK
  3644.  
  3645. * GET CATALOG TRACK PARAMETERS.
  3646.  
  3647. SX1 PDWD SET ADDRESS OF PF DESCRIPTION WORD
  3648. SX2 TCBF+FCUI SET ADDRESS OF USER INDEX IN CATALOG
  3649. LX1 18
  3650. BX6 X1+X2
  3651. SA6 CATS+FTCA
  3652. SA6 CATS+FTPM
  3653. CALLPFU CATS,CTCT,R GET CATALOG TRACK PARAMETERS
  3654.  
  3655. * SET UP NEW MASTER DEVICE PARAMETERS.
  3656.  
  3657. SA3 TCBF+FCUI SET *TMDA* INDEX
  3658. MX0 -3
  3659. BX3 -X0*X3
  3660. SA3 TMDA+X3 GET *MSTT* ADDRESS
  3661. SA3 X3+
  3662. SA4 A3+B1
  3663. MX0 -6
  3664. BX6 -X0*X3 SET MASTER DEVICE NUMBER
  3665. MX0 -9
  3666. SA6 CPAR+/COMSPFS/CPDN
  3667. LX3 -6
  3668. BX6 -X0*X3 SET MASTER EQUIPMENT
  3669. LX3 -9
  3670. SA6 MAEQ
  3671. BX7 -X0*X3 SET NUMBER OF CATALOG TRACKS
  3672. MX0 -8
  3673. BX6 -X0*X4 SET MASTER DEVICE MASK
  3674. LX3 -9
  3675. SA7 NCTR
  3676. SA6 MMSK
  3677. SA1 TCBF+FCUI SET CURRENT CATALOG TRACK
  3678. SX2 X7-1
  3679. LX1 -3
  3680. BX7 X2*X1
  3681. SA7 CCTR
  3682.  
  3683. * SET UP CATALOG FST ENTRY.
  3684.  
  3685. SA1 CATS+FTPM GET CATALOG TRACK PARAMETERS
  3686. SX2 5 SET FILE STATUS
  3687. MX0 -24
  3688. BX1 -X0*X1 SET EQ AND FIRST TRACK
  3689. MX0 -12
  3690. BX6 -X0*X1 SET CURRENT TRACK
  3691. LX1 36
  3692. BX2 X2+X1 BUILD CATALOG TRACK FST ENTRY
  3693. LX6 24
  3694. BX7 X2+X6
  3695. SA7 A1
  3696. LX0 36 SET ID, EQ AND STATUS
  3697. BX6 X0*X2
  3698.  
  3699. * SET UP PERMITS FST ENTRY.
  3700.  
  3701. SX1 10000B*FSMS SET SECTOR FOR *PETS* AND *DATA*
  3702. BX6 X6+X1
  3703. MX0 -12
  3704. BX1 -X0*X3 SET FIRST PERMITS TRACK
  3705. BX2 X1 SET CURRENT TRACK
  3706. LX1 36
  3707. LX2 24
  3708. BX7 X6+X1
  3709. LX3 -24
  3710. BX7 X7+X2
  3711. SA7 PETS+FTPM
  3712.  
  3713. * SET UP DATA FST ENTRY.
  3714.  
  3715. BX1 -X0*X3 SET FIRST DATA TRACK
  3716. BX2 X1 SET CURRENT TRACK
  3717. LX1 36
  3718. BX7 X6+X1
  3719. LX2 24
  3720. BX7 X7+X2
  3721. SA7 DATA+FTPM
  3722.  
  3723. * OPEN FILES AND SET SPECIAL SYSTEM FILE STATUS
  3724.  
  3725. RETURN CATS RETURN ANY EXISTING FILES
  3726. RETURN PETS
  3727. RETURN DATA
  3728. CALLPFU CATS,CTOP,R OPEN *CATS* FILE
  3729. CALLPFU PETS,CTOP,R OPEN *PETS* FILE
  3730. CALLPFU DATA,CTOP,R OPEN *DATA* FILE
  3731. SETFS CATS,SSST
  3732. SETFS PETS,SSST
  3733. SETFS DATA,SSST
  3734.  
  3735. * SET UTILITY INTERLOCK AND ACTIVATE *PFU*.
  3736.  
  3737. SMD2 RJ SIN SET UTILITY INTERLOCK
  3738. RJ AUP ACTIVATE *PFU*
  3739.  
  3740. * CHECK FOR NEW MASTER DEVICE.
  3741.  
  3742. SMD SUBR ENTRY/EXIT
  3743. SA2 TCBF+FCUI USER INDEX OF FILE
  3744. SA1 MMSK
  3745. MX0 -3
  3746. BX6 -X0*X2 SELECT CORRECT MASK BIT
  3747. SB2 X6-59
  3748. AX1 X1,B2
  3749. PL X1,SMD1 IF NOT CORRECT MASTER DEVICE
  3750.  
  3751. * CHECK FOR NEW CATALOG TRACK.
  3752.  
  3753. LX2 -3
  3754. SA1 NCTR SET CATALOG TRACK MASK
  3755. SA3 CCTR CURRENT CATALOG TRACK
  3756. SX6 X1-1
  3757. BX7 X6*X2 NEW CATALOG TRACK
  3758. IX2 X3-X7
  3759. ZR X2,SMD2 IF SAME CATALOG TRACK
  3760.  
  3761. * SWITCH CATALOG TRACKS.
  3762.  
  3763. SA1 PAFL
  3764. SA7 A3+ SAVE NEW CATALOG TRACK
  3765. ZR X1,SMD2 IF *PFU* NOT ACTIVE
  3766. RJ FCB FLUSH CATALOG BUFFER
  3767. RJ RCT READ NEW CATALOG TRACK
  3768. EQ SMDX RETURN
  3769. SRD SPACE 4,15
  3770. ** SRD - SELECT RESIDENCY DEVICE FOR LOAD LEVELING.
  3771. *
  3772. * ENTRY PFC ENTRY FOR FILE IN *TCBF*.
  3773. * (B6) = DAPF MASK SHIFT COUNT.
  3774. *
  3775. * EXIT (B2) = *MSTT* ADDRESS OF DEVICE IF DEVICE SELECTED.
  3776. * (B2) = -1 IF NO DEVICE FOR USER INDEX OF FILE.
  3777. * (B2) = 0 IF NO DEVICE FOR ACCESS LEVEL OF FILE.
  3778. * (B2) = 1 IF NO DEVICE WITH SPACE FOR FILE.
  3779. *
  3780. * USES X - 2, 3, 4, 5.
  3781. * A - 5.
  3782. * B - 2, 3.
  3783. *
  3784. * CALLS CAL, RAS.
  3785.  
  3786.  
  3787. SRD SUBR ENTRY/EXIT
  3788.  
  3789. * INITIALIZE SEARCH PARAMETERS.
  3790.  
  3791. SA5 MSTT-1 INITIALIZE SEARCH ADDRESS
  3792. SB2 -B1 PRESET ERROR STATUS = NO DEVICE FOR UI
  3793. SX4 -B1 INITIALIZE BEST DEVICE STATUS
  3794.  
  3795. * ADVANCE TO NEXT DEVICE AND CHECK DEVICE MASK.
  3796.  
  3797. SRD1 SA5 A5+2 GET DEVICE PARAMETERS
  3798. AX2 X5,B6 POSITION DAPF MASK BIT
  3799. ZR X5,SRDX IF END OF DEVICES
  3800. PL X2,SRD1 IF USER INDEX NOT ALLOWED ON DEVICE
  3801.  
  3802. * CHECK ACCESS LEVELS, DEVICE STATE, AND AVAILABLE SPACE.
  3803.  
  3804. RJ CAL CHECK ACCESS LEVELS
  3805. SB3 B0 SET ACCESS LEVEL ERROR
  3806. NG X6,SRD2 IF FILE NOT WITHIN DEVICE LEVELS
  3807. SX3 B0 SET NO SPACE INCREMENT
  3808. RJ RAS RETURN AVAILABLE SPACE
  3809. SB3 B1 SET NO SPACE FOR FILE ERROR
  3810. ZR X1,SRD2 IF INSUFFICIENT SPACE ON DEVICE
  3811. IX2 X1-X4
  3812. NG X2,SRD1 IF PREVIOUS DEVICE BETTER
  3813. BX4 X1 SET NEW BEST DEVICE STATUS
  3814. SB2 A5-B1 SET BEST DEVICE POINTER
  3815. EQ SRD1 ADVANCE TO NEXT DEVICE
  3816.  
  3817. * PROCESS ACCESS LEVEL CONFLICT OR NO SPACE AVAILABLE.
  3818.  
  3819. SRD2 SX2 B2-B3
  3820. PL X2,SRD1 IF NO LOWER PRIORITY ERROR SET
  3821. SB2 B3 UPDATE ERROR STATUS
  3822. EQ SRD1 ADVANCE TO NEXT DEVICE
  3823. SSC SPACE 4,15
  3824. ** SSC - SET SECTOR COUNTER.
  3825. *
  3826. * ENTRY (X2) = FET ADDRESS.
  3827. * FET NOT BUSY.
  3828. *
  3829. * EXIT (X2) = FET ADDRESS.
  3830. * (X2+FTSC) = SECTOR COUNT IN BUFFER.
  3831. *
  3832. * USES X - 1, 5, 6, 7.
  3833. * A - 1, 5, 6, 7.
  3834. *
  3835. * MACROS READW.
  3836.  
  3837.  
  3838. SSC3 SA1 SSCA RESTORE IN
  3839. SA5 A1+B1 RESTORE OUT
  3840. BX6 X1
  3841. LX7 X5
  3842. SA6 X2+2
  3843. SA7 A6+B1
  3844.  
  3845. SSC SUBR ENTRY/EXIT
  3846. SA1 X2+2 SAVE IN
  3847. SA5 A1+B1 SAVE OUT
  3848. BX6 X1
  3849. LX7 X5
  3850. SA6 SSCA
  3851. SA7 A6+B1
  3852. SA1 X2 SET EOR STATUS IN FET
  3853. MX6 48
  3854. SX5 23B
  3855. BX1 X6*X1
  3856. SX7 B0+ CLEAR SECTOR COUNT
  3857. BX6 X1+X5
  3858. SA7 X2+FTSC
  3859. SA6 X2+
  3860. SSC1 READW X2,SSCB,B1 READ CONTROL WORD
  3861. NZ X1,SSC3 IF BUFFER EMPTY
  3862. SA1 SSCB GET SECTOR WORD COUNT
  3863. MX6 -12
  3864. BX5 -X6*X1
  3865. SA1 X2+FTSC INCREMENT SECTOR COUNT
  3866. SX6 X1+B1
  3867. SA6 A1
  3868. SSC2 ZR X5,SSC1 IF END OF SECTOR
  3869. READW X2,SSCB,B1 READ ONE WORD OF SECTOR
  3870. NZ X1,SSC3 IF BUFFER EMPTY
  3871. SX5 X5-1
  3872. EQ SSC2 CHECK FOR END OF SECTOR
  3873.  
  3874.  
  3875. SSCA BSSZ 2 IN AND OUT SAVE AREA
  3876. SSCB CON 0 SCRATCH BUFFER
  3877. VFN SPACE 4,10
  3878. ** VFN - VALIDATE FILE NAME.
  3879. *
  3880. * ENTRY (TCBF) = CURRENT CATALOG ENTRY.
  3881. *
  3882. * EXIT (X3) .GE. 0, IF FILE NAME NOT VALID
  3883. *
  3884. * USES X - 0, 1, 2, 3.
  3885. * A - 1.
  3886.  
  3887.  
  3888. VFN SUBR ENTRY/EXIT
  3889. SA1 TCBF+FCFN CHECK FILE NAME
  3890. MX2 42
  3891. BX1 X2*X1
  3892. MX0 -6
  3893. LX1 6
  3894. SX2 1R9+1
  3895. VFN1 BX3 -X0*X1 CHECK FOR NON-ALPHANUMERIC CHARACTER
  3896. ZR X3,VFNX IF CHARACTER NOT VALID
  3897. BX1 X0*X1
  3898. IX3 X3-X2
  3899. PL X3,VFNX IF CHARACTER NOT VALID
  3900. LX1 6
  3901. NZ X1,VFN1 IF MORE CHARACTERS
  3902. EQ VFNX RETURN
  3903. WCE SPACE 4,20
  3904. ** WCE - WRITE CATALOG ENTRY.
  3905. *
  3906. * ENTRY (CSWC) = CURRENT CATALOG SECTOR WORD COUNT.
  3907. * (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY.
  3908. *
  3909. * EXIT (CSWC) = UPDATED SECTOR WORD COUNT.
  3910. * (CBFO) = UPDATED CATALOG BUFFER ORDINAL.
  3911. * (IPFF) = 0.
  3912. * (CEWF) = 0 IF CATALOG BUFFER FLUSHED.
  3913. * = 1 IF CATALOG BUFFER NOT FLUSHED.
  3914. * CATALOG FILE BUFFER POINTERS ADJUSTED.
  3915. * CATALOG BUFFER FLUSHED IF NECESSARY.
  3916. * FULL SECTOR CONTROL WORD WRITTEN TO BUFFER IF
  3917. * NECESSARY.
  3918. *
  3919. * USES X - 1, 2, 6, 7.
  3920. * A - 1, 2, 6, 7.
  3921. *
  3922. * CALLS FCB.
  3923.  
  3924.  
  3925. WCE SUBR ENTRY/EXIT
  3926. BX6 X6-X6 CLEAR INCOMPLETE FILE FLAG
  3927. SA6 IPFF
  3928. SX7 B1 SET *CATALOG ENTRIES WRITTEN*
  3929. SA7 CEWF
  3930. SA2 CBFO ADVANCE CATALOG ORDINAL
  3931. IX7 X2+X7
  3932. SA7 A2
  3933. SA2 CATS+2 SET IN POINTER TO END OF CATALOG ENTRY
  3934. SA1 CSWC ADJUST SECTOR WORD COUNT
  3935. SX6 X2+NWCE
  3936. SX7 X1+NWCE
  3937. SA6 A2
  3938. SA7 A1
  3939. SX1 X7-100B
  3940. NG X1,WCEX IF NOT FULL SECTOR
  3941. BX6 X6-X6 CLEAR SECTOR WORD COUNT
  3942. SA6 A1
  3943. SA1 CATS+FTSC INCREMENT SECTOR COUNTER
  3944. SX7 X1+B1
  3945. SA7 A1+
  3946. LX7 59-11
  3947. NG X7,WCE1 IF AT SECTOR LIMIT
  3948. SA1 CATS+4 CHECK BUFFER SPACE
  3949. SA2 CATS+2
  3950. SX6 X1-101B
  3951. IX7 X2-X6
  3952. NG X7,WCE2 IF ROOM FOR FULL SECTOR
  3953. WCE1 RJ FCB FLUSH CATALOG BUFFER
  3954. WCE2 SX6 100B SET FULL SECTOR CONTROL WORD
  3955. SA1 CATS+2
  3956. SA6 X1
  3957. SX7 X1+B1 ADJUST IN POINTER
  3958. SA7 A1+
  3959. EQ WCEX RETURN
  3960. WPR SPACE 4,20
  3961. ** WPR - WRITE PRU TO *PFU* CIRCULAR BUFFER.
  3962. *
  3963. * ENTRY (X2) = FET ADDRESS.
  3964. * (B6) = FWA OF WORKING BUFFER.
  3965. * (B7) = WORD COUNT OF WORKING BUFFER.
  3966. *
  3967. * EXIT (X2) = FET ADDRESS.
  3968. * (B7) = 0 IF NO WRITE ERROR DETECTED.
  3969. * = SAME AS ENTRY IF WRITE ERROR DETECTED.
  3970. * (X6) = ERROR CODE FROM FET IF (B7) IS NON-ZERO.
  3971. * DATA WRITTEN TO CIRCULAR BUFFER.
  3972. * WRITE REQUEST ISSUED IF BUFFER AT LEAST HALF FULL.
  3973. *
  3974. * USES X - 1, 3, 6, 7.
  3975. * A - 1, 3, 6, 7.
  3976. * B - 2, 3, 4, 6, 7.
  3977. *
  3978. * CALLS FUB.
  3979. *
  3980. * MACROS RECALL.
  3981.  
  3982.  
  3983. WPR SUBR ENTRY/EXIT
  3984.  
  3985. * CHECK SECTOR COUNTER.
  3986.  
  3987. SA1 X2+FTSC CHECK SECTOR COUNTER
  3988. LX1 59-11
  3989. PL X1,WPR1 IF SECTOR COUNTER NOT AT THRESHOLD
  3990. RJ FUB FLUSH BUFFER
  3991. NZ X6,WPRX IF WRITE ERROR
  3992. SA6 X2+FTSC CLEAR SECTOR COUNTER
  3993.  
  3994. * CHECK BUFFER SPACE.
  3995.  
  3996. WPR1 ZR B7,WPRX IF NO DATA TO TRANSFER
  3997. SA1 X2+2 (B2) = IN
  3998. SB2 X1
  3999. SA1 A1+B1 (B4) = OUT
  4000. SB4 X1
  4001. SA1 A1+B1 (B3) = LIMIT
  4002. SB3 X1
  4003. SB4 B4-B2 BUFFER SPACE + 1 = OUT - IN
  4004. GE B4,B1,WPR2 IF NO BUFFER WRAP
  4005. SA1 X2+B1 BUFFER SPACE + 1 = (OUT-IN)+(LIMIT-FIRST)
  4006. SB4 B4+B3
  4007. BX1 -X1
  4008. SB4 B4+X1
  4009. WPR2 GT B4,B7,WPR4 IF ENOUGH ROOM IN BUFFER
  4010.  
  4011. * PROCESS BUFFER FULL.
  4012.  
  4013. SA1 X2 GET FILE NAME
  4014. MX6 42
  4015. BX7 X6*X1
  4016. LX1 59-0 CHECK BUFFER STATUS
  4017. SX3 B1+B1 SET WRITE FUNCTION CODE
  4018. MX6 -6
  4019. PL X1,WPR3 IF BUFFER BUSY
  4020. LX1 0-12-59+0+60 GET ERROR STATUS
  4021. BX6 -X6*X1
  4022. IX7 X7+X3
  4023. NZ X6,WPRX IF WRITE ERROR
  4024. SA7 X2 ISSUE WRITE REQUEST
  4025. WPR3 RECALL WAIT FOR *PFU* TO CATCH UP
  4026. EQ WPR1 CHECK BUFFER SPACE
  4027.  
  4028. * MOVE DATA TO CIRCULAR BUFFER.
  4029.  
  4030. WPR4 SA1 B6 MOVE WORD
  4031. SB6 B6+B1 ADVANCE WORKING BUFFER ADDRESS
  4032. BX6 X1
  4033. SB7 B7-B1 DECREMENT WORD COUNT
  4034. SA6 B2
  4035. SB2 B2+B1 ADVANCE IN
  4036. LT B2,B3,WPR5 IF IN .LT. LIMIT
  4037. SA1 X2+B1 IN = FIRST
  4038. SB2 X1
  4039. WPR5 NZ B7,WPR4 IF WORKING BUFFER NOT EMPTY
  4040.  
  4041. * CHECK BUFFER THRESHOLD.
  4042.  
  4043. SX6 B2 UPDATE IN
  4044. SA3 X2 CHECK BUFFER STATUS
  4045. SA1 X2+FTSC INCREMENT SECTOR COUNTER
  4046. SA6 X2+2
  4047. SX7 X1+B1
  4048. LX3 59-0
  4049. SA7 A1
  4050. SA1 X2+B1 FIRST
  4051. PL X3,WPRX IF BUFFER ALREADY BUSY
  4052. SA3 X2+3 OUT
  4053. SX6 B3
  4054. SX1 X1
  4055. IX7 X6-X1 BUFFER SIZE = LIMIT - FIRST
  4056. SX6 B2 BUFFER WC = IN - OUT
  4057. IX3 X6-X3
  4058. PL X3,WPR6 IF NO BUFFER WRAP
  4059. IX3 X3+X7 BUFFER WC = BUFFER WC + BUFFER SIZE
  4060. WPR6 AX7 1 BUFFER SIZE / 2
  4061. IX1 X3-X7
  4062. NG X1,WPRX IF BUFFER NOT AT LEAST HALF FULL
  4063. SA1 X2 GET FILE NAME
  4064. MX6 42
  4065. BX7 X6*X1
  4066. LX1 -12 GET ERROR STATUS
  4067. MX3 -6
  4068. BX6 -X3*X1
  4069. SX1 B1+B1 SET WRITE FUNCTION CODE
  4070. BX7 X7+X1
  4071. NZ X6,WPRX IF WRITE ERROR
  4072. SA7 X2+ ISSUE WRITE REQUEST
  4073. EQ WPRX RETURN
  4074. TITLE INCREMENTAL LOAD SUBROUTINES.
  4075. AAT SPACE 4,20
  4076. ** AAT - ASSIGN NEXT ARCHIVE TAPE.
  4077. *
  4078. * ENTRY (X1) = VSN LEFT JUSTIFIED.
  4079. *
  4080. * EXIT (X6) = 0 IF NEW ARCHIVE TAPE ASSIGNED.
  4081. * (X6) .NE. 0 IF ARCHIVE FILE LABEL BAD OR MISSING ON
  4082. * SELECTED TAPE.
  4083. * OLD ARCHIVE FILE UNLOADED.
  4084. * ARCHIVE FILE LABEL PROCESSED IF LABEL GOOD.
  4085. *
  4086. * USES X - 1, 4, 5, 6, 7.
  4087. * A - 1, 4, 6, 7.
  4088. *
  4089. * CALLS PAL, ZTB.
  4090. *
  4091. * MACROS LABEL, READCW, UNLOAD.
  4092.  
  4093.  
  4094. AAT SUBR ENTRY/EXIT
  4095. RJ ZTB SPACE FILL VSN
  4096. MX7 36
  4097. BX7 X7*X6
  4098. SX6 B0
  4099. SA7 TAPE+11B SET VSN IN FET
  4100. SA6 A7+B1 CLEAR TAPE LABEL PARAMETERS
  4101. SA6 A6+B1
  4102. SA6 A6+B1
  4103. SA6 A6+B1
  4104. UNLOAD TAPE,R UNLOAD OLD ARCHIVE FILE
  4105. SA4 X2+B1 CLEAR DEVICE TYPE
  4106. MX6 -48
  4107. SX5 1 CLEAR ERROR PROCESSING BIT
  4108. BX4 -X6*X4
  4109. LX5 44
  4110. BX6 -X5*X4
  4111. SA6 A4
  4112. LABEL TAPE REQUEST ARCHIVE TAPE
  4113. SA4 X2+B1 SET ERROR PROCESSING BIT
  4114. BX6 X5+X4
  4115. SA6 A4
  4116. SA1 X2+B1 SET IN=OUT=FIRST
  4117. SX6 X1
  4118. SA6 A1+B1
  4119. SA6 A6+B1
  4120. READCW X2,17B INITIATE CONTROL WORD READ
  4121. SX6 B0+ CLEAR CONTROL WORD STATUS WORD
  4122. SA6 TAPE+CWSW
  4123. RJ PAL CHECK ARCHIVE LABEL
  4124. ZR X6,AATX IF GOOD ARCHIVE FILE LABEL
  4125. UNLOAD TAPE,R UNLOAD TAPE
  4126. SX6 B1 SET ASSIGNMENT NOT MADE
  4127. EQ AATX RETURN
  4128. ART SPACE 4,20
  4129. ** ART - ARCHIVE FILE TRANSITION PROCESSOR.
  4130. *
  4131. * ENTRY END OF INCREMENTAL LOAD FILE DETECTED.
  4132. *
  4133. * EXIT (X6) = 0 IF NOT END OF INCREMENTAL LOAD.
  4134. * = NON-ZERO IF END OF INCREMENTAL LOAD.
  4135. * UTILITY PROCESSOR INACTIVE.
  4136. * UTILITY INTERLOCK CLEAR.
  4137. * FILES REMAINING ON CATALOG IMAGE RECORD LISTED IF
  4138. * SELECTED BY OPERATOR.
  4139. * NEW ARCHIVE FILE ASSIGNED IF NOT END OF LOAD.
  4140. *
  4141. * USES X - 1, 2, 4, 5, 6, 7.
  4142. * A - 1, 2, 4, 5, 7.
  4143. * B - 2, 3, 4, 5.
  4144. *
  4145. * CALLS AAT, ARM, CCI, CIN, CMA, DUP, KIP, LFS, SRS, USB, ZTB.
  4146. *
  4147. * MACROS MOVE.
  4148.  
  4149.  
  4150. ART SUBR ENTRY/EXIT
  4151.  
  4152. * DROP *PFU* AND FLUSH CIR BUFFER.
  4153.  
  4154. RJ DUP DROP UTILITY PROCESSOR
  4155. RJ CIN CLEAR UTILITY INTERLOCK
  4156. SX7 B0+ SET FLAG TO FLUSH CIR BUFFER
  4157. SA7 TCBF+FCUI
  4158. RJ CCI FLUSH CIR BUFFER
  4159.  
  4160. * PROCESS *OP=V* SELECTED.
  4161.  
  4162. SA1 CPAR+/COMSPFS/CPOP
  4163. LX1 59-51
  4164. PL X1,ART1 IF *OP=V* NOT SELECTED
  4165. SA1 TLBF+/COMSPFS/PVAL CHECK FOR NEXT VSN
  4166. SA2 =10H
  4167. MX6 36
  4168. BX2 X1-X2
  4169. BX1 X6*X1
  4170. BX2 X6*X2
  4171. ZR X1,ARTX IF NEXT VSN NOT PRESENT
  4172. ZR X2,ARTX IF NEXT VSN NOT PRESENT
  4173. RJ AAT ASSIGN ARCHIVE TAPE
  4174. ZR X6,ARTX IF TAPE ASSIGNED
  4175. SB2 ERAL * ERROR IN ACHIVE FILE LABEL.*
  4176. EQ ABT ABORT
  4177.  
  4178. * SET *K* DISPLAY RIGHT SCREEN FOR INPUT.
  4179.  
  4180. ART1 SA5 IDSA+/COMSPFS/ADM2
  4181. MOVE 4,MSGH,X5 *END OF LOAD FILE - SEE RIGHT SCREEN.*
  4182. SX6 ARTA
  4183. RJ SRS SELECT RIGHT SCREEN
  4184.  
  4185. * CLEAR VSN SELECTION.
  4186.  
  4187. ART2 SA1 =10H
  4188. SX6 B0
  4189. BX7 X1
  4190. SA6 VSPR CLEAR *VSN* PARAMETER
  4191. SA7 ARTB+1 CLEAR VSN IN DISPLAY
  4192.  
  4193. * GET OPERATOR INPUT.
  4194.  
  4195. ART3 SX7 B0+ CLEAR *LIST* AND *END* INDICATORS
  4196. SA7 LTPR
  4197. SA7 ENPR
  4198. SB2 ART4 SET ARGUMENT PROCESSOR ADDRESS
  4199. SB3 ART9 SET FUNCTION PROCESSOR ADDRESS
  4200. EQ /COMSPFS/KIP PROCESS KEYBOARD INPUT
  4201.  
  4202. * PROCESS ARGUMENT ENTRY.
  4203.  
  4204. ART4 SB2 /COMSPFS/KIN SET PARAMETERS ADDRESS
  4205. RJ USB UNPACK PARAMETERS
  4206. SB3 ARGT SET ARGUMENT TABLE ADRESS
  4207. RJ ARM PROCESS ARGUMENTS
  4208. ZR X1,ART5 IF NO ERROR
  4209. SA5 IDSA+/COMSPFS/ADER
  4210. MOVE 4,MSGT,X5 *INCORRECT OPTION.*
  4211. EQ ART3 PROCESS KEYBOARD INPUT
  4212.  
  4213. ART5 SA1 ENPR
  4214. ZR X1,ART6 IF NOT END OF LOAD
  4215. RJ CMA CLEAR MESSAGE AREA
  4216. SX6 B1 SET END OF LOAD STATUS
  4217. EQ ARTX RETURN
  4218.  
  4219. ART6 SA1 LTPR
  4220. ZR X1,ART7 IF NOT LIST FILES
  4221. RJ CMA CLEAR MESSAGE AREA
  4222. RJ LFS LIST FILES
  4223. EQ ART1 PROCESS KEYBOARD INPUT
  4224.  
  4225. ART7 SA1 VSPR
  4226. MX7 42
  4227. MX6 -24
  4228. ZR X1,ART3 IF VSN NOT ENTERED
  4229. BX1 X7*X1
  4230. BX7 -X6*X1
  4231. ZR X7,ART8 IF VALID VSN
  4232. SA5 IDSA+/COMSPFS/ADER
  4233. MOVE 4,MSGP,X5 *ENTERED VSN TOO LONG.*
  4234. EQ ART2 CLEAR VSN SELECTION
  4235.  
  4236. ART8 RJ ZTB SPACE FILL VSN
  4237. SA6 ARTB+1 SET VSN IN DISPLAY
  4238. EQ ART3 PROCESS KEYBOARD INPUT
  4239.  
  4240. * PROCESS *GO* ENTRY.
  4241.  
  4242. ART9 SA1 VSPR
  4243. NZ X1,ART10 IF VSN ENTERED
  4244. SA5 IDSA+/COMSPFS/ADER DISPLAY BAD LABEL MESSAGE
  4245. MOVE 4,MSGQ,X5 *NO VSN ENTERED.*
  4246. EQ ART3 GET OPERATOR INPUT
  4247.  
  4248. ART10 RJ AAT ASSIGN ARCHIVE TAPE
  4249. ZR X6,ART12 IF TAPE ASSIGNED
  4250. SA5 IDSA+/COMSPFS/ADER DISPLAY BAD LABEL MESSAGE
  4251. MOVE 4,MSGV,X5 *ARCHIVE LABEL BAD, SELECT NEW VSN.*
  4252. EQ ART2 CLEAR VSN SELECTION
  4253.  
  4254. * PROCESS TAPE ASSIGNED.
  4255.  
  4256. ART12 RJ CMA CLEAR MESSAGE AREA
  4257. SX6 B0 SET TAPE ASSIGNED
  4258. EQ ARTX RETURN
  4259.  
  4260.  
  4261. * RIGHT SCREEN BUFFER FOR TAPE TRANSITION.
  4262.  
  4263. ARTA VFD 12/0,36/0,12/0 DISPLAY CONTROL WORD
  4264.  
  4265. KDL 10,T,(INCREMENTAL LOAD FILE TRANSITION OPTIONS.)
  4266. KDL 13,H,(ENTER K.OPTION.)
  4267. KDL 13,,(OPTION)
  4268. KDL 30,H,(DESCRIPTION)
  4269. KDL 13,K,(END TERMINATE LOAD.)
  4270. KDL 13,K,(LIST LIST REMAINING FILES.)
  4271. ARTB KDL 13,K,(VSN = VSN OF NEXT TAPE.)
  4272. KDL 13,K,(GO RESUME LOAD AFTER VSN ENTERED.)
  4273. CON 0 END OF BUFFER
  4274.  
  4275.  
  4276. * ENTERED PARAMETERS.
  4277.  
  4278. LTPR CON 0 *LIST*
  4279. ENPR CON 0 *END*
  4280. VSPR CON 0 *VSN*
  4281.  
  4282.  
  4283. * ARGUMENT TABLE.
  4284.  
  4285. ARGT BSS 0
  4286. LIST ARG -NZ,LTPR,,1
  4287. END ARG -NZ,ENPR,,1
  4288. VSN ARG NZ,VSPR,,1
  4289. CON 0
  4290.  
  4291. NZ CON 1 NON-ZERO VALUE
  4292. CCI SPACE 4,20
  4293. ** CCI - CHECK CATALOG IMAGE.
  4294. *
  4295. * ENTRY (TCBF) = CATALOG ENTRY BEING PROCESSED.
  4296. * (TCBF+FCUI) = 0, IF INDEX TO BE FLUSHED.
  4297. * (INCF) = INCREMENTAL LOAD FLAG.
  4298. * (CIFC) = FILE COUNT FOR CATALOG IMAGE RECORD.
  4299. * (CIRT) = CATALOG IMAGE RECORD DIRECTORY.
  4300. *
  4301. * EXIT (X6) = 0 IF FILE TO BE LOADED (OR NOT INCREMENTAL
  4302. * LOAD).
  4303. * .NE. 0 OTHERWISE.
  4304. * (TCBF) = UPDATED WITH ACCESS INFORMATION FROM THE CIR
  4305. * IF AN INCREMENTAL LOAD AND FILE TO BE LOADED.
  4306. *
  4307. * USES X - ALL.
  4308. * A - 1, 2, 3, 4, 5, 6, 7.
  4309. * B - 2, 3, 4.
  4310. *
  4311. * MACROS READ, REWRITE, REWRITER.
  4312.  
  4313.  
  4314. CCI SUBR ENTRY/EXIT
  4315. SA1 INCF
  4316. BX6 X6-X6 PRESET TO LOAD FILE
  4317. MX0 42
  4318. ZR X1,CCIX IF NOT AN INCREMENTAL LOAD
  4319. SA1 TCBF+FCUI GET USER INDEX OF FILE
  4320. ZR X1,CCI10 IF CATALOG BUFFER TO BE FLUSHED TO DISK
  4321. BX1 -X0*X1
  4322. MX0 -3 SAVE DEVICE MAP BITS
  4323. BX3 -X0*X1
  4324. SB2 X3
  4325. SX5 B0 SET INDEX
  4326. CCI1 SX6 NWCD
  4327. IX4 X5*X6
  4328. SX5 X5+B1
  4329. SA4 CIRT+X4 READ HEADER WORD
  4330. NZ X4,CCI2 IF DEVICE THERE
  4331. SX6 B1 EXIT - DEVICE NOT FOUND
  4332. EQ CCIX RETURN
  4333.  
  4334. CCI2 AX4 X4,B2
  4335. MX0 -1
  4336. BX4 -X0*X4
  4337. ZR X4,CCI1 IF NOT CORRECT DEVICE
  4338. SA4 A4 GET NUMBER CATALOG TRACKS
  4339. AX4 12
  4340. SX4 X4-1 SET MASK
  4341. AX1 3
  4342. BX1 X4*X1
  4343. SB2 X1
  4344. SA4 A4+B1
  4345. SA5 A4+B2
  4346. SX6 B1
  4347. ZR X5,CCIX IF NO ENTRIES
  4348. CCI3 SA1 CCIA FETCH LAST RANDOM INDEX
  4349. SX6 B1 SET RANDOM REWRITE REQUEST
  4350. MX2 -29
  4351. LX6 29
  4352. BX5 X6+X5
  4353. NG X1,CCI5 IF NO DATA IN BUFFER
  4354. BX4 -X2*X5 EXTRACT RANDOM INDEX
  4355. IX4 X4-X1
  4356. ZR X4,CCI6 IF NO RANDOM INDEX CHANGE
  4357. SA4 CCIB FETCH INDEX MODIFICATION FLAG
  4358. BX6 X6+X1
  4359. NZ X4,CCI5 IF INDEX NOT MODIFIED
  4360. SA1 CIRF CHECK END STATUS
  4361. SA6 CIRF+6 SET RANDOM INDEX FOR WRITE
  4362. LX1 59-4
  4363. PL X1,CCI4 IF NOT END OF RECORD
  4364. REWRITER CIRF,R
  4365. EQ CCI5 PROCESS NEXT INDEX
  4366.  
  4367. CCI4 REWRITE CIRF,R
  4368. CCI5 SA1 CIRF+1 FETCH FIRST
  4369. BX6 X5
  4370. SX7 X1
  4371. SA6 CIRF+6 SET NEW RANDOM INDEX
  4372. MX2 -29
  4373. SA7 A1+B1 SET IN=FIRST
  4374. SA7 A7+B1 SET OUT=FIRST
  4375. SA7 CCIB CLEAR BUFFER MODIFIED FLAG (SET NONZERO)
  4376. BX6 -X2*X6
  4377. SA6 CCIA SAVE RANDOM INDEX
  4378. READ CIRF,R LOAD IMAGE BUFFER
  4379. CCI6 SA1 CIRF
  4380. SA4 TCBF+FCUI FETCH USER INDEX AND FILE
  4381. LX1 17-4
  4382. SB4 X1 END OF RECORD INDICATOR
  4383. SA1 CIRF+2 FETCH IN
  4384. SA2 A1+B1 FETCH OUT
  4385. IX7 X1-X2
  4386. SX6 B1
  4387. ZR X7,CCIX IF END OF RECORD AND BUFFER EMPTY
  4388. SB2 X1 SET LAST BUFFER ADDRESS
  4389. SB3 X2 SET ADDRESS OF FIRST ENTRY
  4390. CCI7 SA1 B3 FETCH NEXT ENTRY
  4391. IX1 X1-X4
  4392. ZR X1,CCI8 IF CATALOG ENTRY FOUND
  4393. SB3 B3+2
  4394. LT B3,B2,CCI7 IF MORE ENTRIES IN BUFFER
  4395. NG B4,CCIX IF END OF RECORD
  4396. SA1 CIRF+6 FETCH RANDOM INDEX
  4397. SA4 CCIB FETCH BUFFER MODIFICATION FLAG
  4398. MX2 -29
  4399. LX1 30 CURRENT RANDOM INDEX
  4400. BX5 X2*X5 PREVIOUS INDEX
  4401. BX6 -X2*X1
  4402. BX5 X5+X6
  4403. ZR X4,CCI3 IF BUFFER MODIFIED
  4404. EQ CCI5 PROCESS NEXT BUFFER LOAD
  4405.  
  4406. * UPDATE CATALOG ENTRY WITH INFORMATION FROM CIR.
  4407.  
  4408. CCI8 BX6 X6-X6
  4409. SA6 CCIB SET BUFFER MODIFIED FLAG
  4410. SA6 B3
  4411. SA1 B3+B1 FETCH NEW ACCESS INFORMATION FROM CIR
  4412. SA2 TCBF+FCAD
  4413. MX0 18
  4414. BX7 X0*X1 EXTRACT NEW ACCESS COUNT
  4415. SA3 TCBF+FCAC
  4416. BX1 -X0*X1 NEW DEVICE NUMBER AND LAST ACCESS DATE
  4417. LX7 -6
  4418. BX2 X0*X2 CLEAR OLD DEVICE NUMBER AND ACCESS DATE
  4419. MX0 -36
  4420. BX6 X1+X2 UPDATE DEVICE NUMBER AND ACCESS DATE
  4421. SA6 A2
  4422. BX3 -X0*X3 CLEAR OLD ACCESS COUNT
  4423. BX7 X7+X3 UPDATE ACCESS COUNT
  4424. SA7 A3
  4425. BX6 X6-X6
  4426. SA5 A5 UPDATE DIRECTORY ENTRY
  4427. LX5 30
  4428. SX1 B1
  4429. IX7 X5-X1
  4430. MX5 -30
  4431. BX5 -X5*X7
  4432. NZ X5,CCI9 IF MORE ENTRIES LEFT
  4433. BX7 X7-X7
  4434. CCI9 LX7 30
  4435. SA7 A5
  4436. SA4 CIFC DECREMENT FILE COUNT
  4437. IX7 X4-X1
  4438. SA7 A4
  4439. EQ CCIX RETURN
  4440.  
  4441. * CLEAN UP CATALOG BUFFER.
  4442.  
  4443. CCI10 SA1 CCIA FETCH CURRENT RENDOM INDEX
  4444. SA2 CCIB FETCH BUFFER MODIFICATION FLAG
  4445. SA4 CIRF
  4446. NG X1,CCI12 IF NO DATA IN BUFFER
  4447. NZ X2,CCI12 IF BUFFER NOT MODIFIED
  4448. SX6 B1
  4449. SX7 -B1
  4450. LX6 29
  4451. SA7 A1 CLEAR CURRENT RANDOM INDEX
  4452. LX4 59-4
  4453. BX6 X6+X1
  4454. SA7 A2 CLEAR BUFFER MODIFICATION FLAG
  4455. SA6 CIRF+6 RESET RANDOM INDEX
  4456. PL X4,CCI11 IF NOT END OF RECORD
  4457. REWRITER CIRF,R
  4458. EQ CCI12 SET NO LOAD STATUS
  4459.  
  4460. CCI11 REWRITE CIRF,R
  4461. CCI12 SX6 B1
  4462. EQ CCIX RETURN
  4463.  
  4464.  
  4465. CCIA DATA -1 CURRENT RANDOM INDEX
  4466. CCIB DATA -1 BUFFER MODIFICATION FLAG
  4467. CMA SPACE 4,10
  4468. ** CMA - CLEAR MESSAGE AREA.
  4469. *
  4470. * EXIT *K* DISPLAY ERROR MESSAGE LINES CLEARED.
  4471. *
  4472. * USES X - 5.
  4473. * A - 5.
  4474. *
  4475. * MACROS MOVE.
  4476.  
  4477.  
  4478. CMA SUBR ENTRY/EXIT
  4479. SA5 IDSA+/COMSPFS/ADM2
  4480. MOVE 4,BLNK,X5
  4481. SA5 A5+B1
  4482. MOVE 4,BLNK,X5
  4483. EQ CMAX RETURN
  4484. LFS SPACE 4,20
  4485. ** LFS - LIST FILES ON CATALOG IMAGE RECORD.
  4486. *
  4487. * ENTRY (CIFC) = REMAINING FILE COUNT.
  4488. * (CIRT - CIRT+NWCD*NDEV) = DIRECTORY OF CATALOG IMAGE
  4489. * RECORD FILE.
  4490. *
  4491. * EXIT FILE LIST CREATED AND RELEASED FOR PRINTING.
  4492. *
  4493. * USES X - 1, 2, 5, 6.
  4494. * A - 1, 5, 6.
  4495. * B - 2.
  4496. *
  4497. * CALLS CDD, FCI, RPP.
  4498. *
  4499. * MACROS MESSAGE, MOVE, READ, READW, RECALL, ROUTE, WRITEF,
  4500. * WRITEH.
  4501.  
  4502.  
  4503. LFS SUBR ENTRY/EXIT
  4504. SA1 PAGE
  4505. SX7 B1+
  4506. BX6 X1
  4507. SA7 A1 RESET PAGE NUMBER
  4508. SA6 LFSK SAVE OUTPUT FILE PAGE NUMBER
  4509. SX6 LCIR
  4510. SA6 OFFA SET OUTPUT FILE FET ADDRESS
  4511. SX2 LFSL SET TITLE TEXT
  4512. SX6 CIS SET CIR SUBHEADER PROCESSOR
  4513. RJ RPP RESET PAGE PARAMETERS
  4514. SX6 -1
  4515. SA6 LFSA
  4516. SA5 IDSA+/COMSPFS/ADMS
  4517. MOVE 3,LFSB,X5 DISPLAY *LISTING FILES* MESSAGE
  4518. MESSAGE LFSB,1
  4519. SA5 CIFC SET TOTAL FILE COUNT
  4520. ZR X5,LFS4 IF NO FILES
  4521. LFS1 SA1 LFSA SET DEVICE INDEX
  4522. SX2 NWCD
  4523. SX6 X1+B1
  4524. SA6 A1
  4525. IX6 X6*X2
  4526. SA5 CIRT+X6
  4527. ZR X5,LFS4 IF NO DEVICES LEFT
  4528. AX5 12
  4529. BX6 X5 SAVE CATALOG TRACK COUNT
  4530. SA6 LFSD
  4531. SX6 A5 SAVE DIRECTORY ADDRESS
  4532. SA6 LFSF
  4533. LFS2 SA1 LFSF GET DIRECTORY ADDRESS
  4534. SA5 X1+B1
  4535. SX6 A5 SAVE DIRECTORY ADDRESS
  4536. SA6 LFSF
  4537. SA1 LFSD
  4538. SX6 X1-1
  4539. SA6 LFSD
  4540. NG X6,LFS1 IF END OF CATALOGS
  4541. ZR X5,LFS2 IF NO FILES LEFT ON THIS TRACK
  4542. RECALL CIRF
  4543. SA1 X2+B1 REWIND BUFFER
  4544. SX6 X1
  4545. SA6 A1+B1
  4546. SA6 A6+B1
  4547. MX6 -30
  4548. BX6 -X6*X5
  4549. SA6 CIRF+6
  4550. AX5 30
  4551. READ CIRF INITIATE RANDOM READ
  4552. LFS3 READW CIRF,LFSG,2 READ CATALOG IMAGE ENTRY
  4553. NZ X1,LFS2 IF END OF CATALOG TRACK
  4554. SA1 LFSG
  4555. ZR X1,LFS3 IF NULL ENTRY
  4556. BX6 X5 SAVE FILE COUNT
  4557. SA6 LFSE
  4558. SX6 A1+ SET CATALOG IMAGE ADDRESS
  4559. RJ FCI FORMAT CIR ENTRY FOR OUTPUT
  4560. SA5 LFSE RESTORE FILE COUNT
  4561. SX1 B1
  4562. IX5 X5-X1 DECREMENT FILE COUNT
  4563. NZ X5,LFS3 IF MORE FILES
  4564. EQ LFS2 PROCESS NEXT CATALOG TRACK
  4565.  
  4566. LFS4 SA1 CIFC CONVERT FILE COUNT
  4567. RJ CDD
  4568. SA6 LFSH+2
  4569. WRITEH LCIR,LFSH,3
  4570. WRITEF LCIR,R
  4571. SX6 B0+ CLEAR PARAMETER BLOCK
  4572. SB2 DSPBL-1
  4573. LFS5 SA6 DSPB+B2
  4574. SB2 B2-1
  4575. PL B2,LFS5 IF NOT END OF BLOCK
  4576. SA5 LCIR SET UP *DSP* PARAMETER BLOCK
  4577. MX2 42
  4578. BX6 X2*X5
  4579. SA6 DSPB
  4580. SA5 LFSJ SET FLAG BITS
  4581. BX6 X5
  4582. SA6 A6+B1
  4583. ROUTE DSPB,RECALL
  4584. SA5 IDSA+/COMSPFS/ADMS
  4585. MOVE 3,BLNK,X5
  4586. MESSAGE (=C**),1
  4587. SA1 LFSK RESET OUTPUT FILE PAGE NUMBER
  4588. BX6 X1
  4589. SA6 PAGE
  4590. SX6 O
  4591. SA6 OFFA RESET OUTPUT FILE FET ADDRESS
  4592. EQ LFSX RETURN
  4593.  
  4594.  
  4595. LFSA CON 0 DEVICE INDEX
  4596. LFSB DATA 30C LISTING REMAINING FILES.
  4597. LFSD CON 0 CATALOG TRACK COUNT
  4598. LFSE CON 0 FILE COUNT
  4599. LFSF CON 0 DIRECTORY ADDRESS
  4600. LFSG BSSZ 2 SCRATCH CATALOG IMAGE ENTRY
  4601. LFSH DATA 30H0 TOTAL FILE COUNT
  4602. LFSJ VFD 24/0,12/2HPR,6/0,18/FRDC
  4603. LFSK CON 1 OUTPUT FILE PAGE NUMBER
  4604. LFSL DATA 50H1FILES REMAINING ON CATALOG IMAGE RECORD.
  4605. SRS SPACE 4,15
  4606. ** SRS - SELECT RIGHT SCREEN.
  4607. *
  4608. * *SRS* REPLACES THE CURRENT RIGHT SCREEN WITH THE REQUESTED
  4609. * ONE AND ALERTS THE OPERATOR TO ENTER AN OPTION.
  4610. *
  4611. * ENTRY (X6) = FWA OF THE REQUESTED RIGHT SCREEN BUFFER.
  4612. *
  4613. * USES X - 0, 5, 6.
  4614. * A - 5, 6.
  4615. *
  4616. * MACROS MESSAGE.
  4617.  
  4618.  
  4619. SRS SUBR ENTRY/EXIT
  4620. SA5 IDSA+/COMSPFS/KDCW CHANGE *K* DISPLAY CONTROL WORD
  4621. MX0 42
  4622. LX6 18
  4623. LX0 18
  4624. BX5 X0*X5
  4625. BX6 X5+X6
  4626. SA6 A5
  4627. MESSAGE MSGW,2 * REQUEST K DISPLAY.*
  4628. EQ SRSX RETURN
  4629. TITLE COMMON DECKS.
  4630. * COMMON DECKS.
  4631.  
  4632.  
  4633. *CALL COMCARM
  4634. *CALL COMCCCE
  4635. *CALL COMCCDD
  4636. ERP1$ EQU 1 SELECT *COMCCIO* ERROR PROCESSING OPTION
  4637. *CALL COMCCIO
  4638. *CALL COMCCOD
  4639. *CALL COMCCPM
  4640. *CALL COMCDXB
  4641. *CALL COMCEDT
  4642. FCE$ EQU 0
  4643. *CALL COMCFCE
  4644. GMS$ EQU 1 USE SORT KEY MASK
  4645. MWK$ EQU 1 ALLOW MULTIPLE WORD SORT KEYS
  4646. *CALL COMCGMS
  4647. *CALL COMCJCR
  4648. *CALL COMCLFM
  4649. *CALL COMCMSF
  4650. *CALL COMCMVE
  4651. *CALL COMCPFM
  4652. COM$ EQU 1 ASSEMBLE COMMON ROUTINES
  4653. PFA$ EQU 1 ASSEMBLE COMMON ARCHIVE FILE ROUTINES
  4654. DVA$ EQU 1 ASSEMBLE DEVICE ACCESS ROUTINES
  4655. PFR$ EQU 1 ASSEMBLE ARCIVE FILE READ ROUTINES
  4656. LIST X
  4657. *CALL COMCPFS
  4658. LIST *
  4659. *CALL COMCPFU
  4660. *CALL COMCPOP
  4661. *CALL COMCRDW
  4662. *CALL COMCSCB
  4663. *CALL COMCSFN
  4664. *CALL COMCSNM
  4665. *CALL COMCSYS
  4666. *CALL COMCUSB
  4667. *CALL COMCVDT
  4668. *CALL COMCWTC
  4669. *CALL COMCWTH
  4670. *CALL COMCWTO
  4671. *CALL COMCWTW
  4672. *CALL COMCZTB
  4673. TITLE BUFFERS.
  4674.  
  4675. USE LITERALS
  4676.  
  4677.  
  4678. * BUFFERS.
  4679.  
  4680.  
  4681. PBUF EQU * PERMIT BUFFER
  4682. DBUF EQU PBUF+PBUFL DATA BUFFER
  4683. TCBF EQU DBUF+DBUFL TEMPORARY CATALOG BUFFER
  4684. CWBF EQU TCBF+NWCE CONTROL WORD BUFFER
  4685. MBUF EQU CWBF+CWBFL MAIN INPUT BUFFER
  4686. CBUF EQU MBUF+MBUFL CATALOG BUFFER
  4687. TLBF EQU CBUF+CBUFL TAPE LABEL BUFFER
  4688. PFMB EQU TLBF+TLBFL *PFM* CATLIST BUFFER
  4689. DSPB EQU PFMB+PFMBL *DSP* PARAMETER BLOCK
  4690. LWRD SPACE 4,20
  4691. ** LWRD - *PFU* BUFFER LINKAGE WORD.
  4692. *
  4693. *T LWRD 6/ TY,18/ CA,12/ 0,12/ DN,12/ LN
  4694. *
  4695. * TY = SECTOR TYPE.
  4696. * 0 = FULL SECTOR OR EOR SECTOR.
  4697. * 1 = EOF SECTOR.
  4698. * 2 = EOI SECTOR.
  4699. * 4 = SYSTEM SECTOR.
  4700. * CA = ADDRESS OF CATALOG ENTRY FOR FILE.
  4701. * DN = 0 FOR INDIRECT ACCESS FILES.
  4702. * = DEVICE NUMBER FOR DIRECT ACCESS FILES.
  4703. * = 4000 FOR DIRECT ACCESS FILES ON AN AUXILIARY DEVICE.
  4704. * LN = LENGTH OF SECTOR.
  4705. *
  4706. * LINKAGE WORD MUST IMMEDIATELY PRECEDE *TDBF*.
  4707.  
  4708.  
  4709. LWRD EQU DSPB+DSPBL *PFU* BUFFER LINKAGE WORD
  4710.  
  4711.  
  4712. TDBF EQU LWRD+1 TEMPORARY DATA BUFFER
  4713. FLBF EQU TDBF+TDBFL FILE LIST BUFFER
  4714. FLCB EQU FLBF+FLBFL FILE LIST CIRCULAR BUFFER
  4715. OUTB EQU FLCB+FLCBL OUTPUT FILE BUFFER
  4716. SUMB EQU OUTB+OUTBL SUMMARY FILE BUFFER
  4717. PFLB EQU SUMB+SUMBL PROCESSED FILES FILE BUFFER
  4718. MS1B EQU PFLB+PFLBL SORT FILE 1
  4719. MS2B EQU MS1B+MSFBL SORT FILE 2
  4720. MS3B EQU MS2B+MSFBL SORT FILE 3
  4721. MS4B EQU MS3B+MSFBL SORT FILE 4
  4722. SRTB EQU MS3B SORT BUFFER (OVERLAYS *MS3B* AND *MS4B*)
  4723. ERRNG MSFBL*2-SRTBL SORT BUFFER OVERFLOW
  4724. CIBF EQU MS4B+MSFBL *CIR* SCRATCH FILE BUFFER
  4725. CIRT SPACE 4,40
  4726. ** CIRT - *CIR* DIRECTORY TABLE.
  4727. *
  4728. * *CIRT* IS A DIRECTORY TO THE CATALOG IMAGE RECORD (*CIR*)
  4729. * WHICH IS COPIED FROM THE ARCHIVE FILE TO THE RANDOM FILE
  4730. * *CIRF*. *CIRT* IS INDEXED BY CATALOG TRACK NUMBER (*CT*)
  4731. * AND THE RELATIVE DEVICE NUMBER WITHIN THE DIRECTORY (*RDEV*)
  4732. * AS DEFINED BELOW.
  4733. *
  4734. *T,CIRT+DI 36/,12/ NCT,12/ DM
  4735. *T,CIRT+TI 30/ FC,30/ RI
  4736. *T, 60/ 0
  4737. *
  4738. * CT = CATALOG TRACK NUMBER.
  4739. * DI = DEVICE INDEX = NWCD*RDEV.
  4740. * DM = DEVICE MASK.
  4741. * FC = FILE COUNT FOR CATALOG TRACK.
  4742. * NCT = NUMBER OF CATALOG TRACKS FOR DEVICE.
  4743. * NWCD = NUMBER OF DIRECTORY WORDS PER DEVICE. (ASSEMBLY
  4744. * CONSTANT.)
  4745. * RDEV = RELATIVE DEVICE IN DIRECTORY.
  4746. * RI = RANDOM INDEX IN *CIRF* FOR CATALOG TRACK FILE LIST.
  4747. * TI = CATALOG TRACK INDEX = DI+1+CT.
  4748. *
  4749. * EACH MASTER DEVICE HAS A RECORD ON *CIRF* FOR EACH NON-NULL
  4750. * CATALOG TRACK CONTAINING THE *CIR* ENTRIES FOR THAT TRACK.
  4751.  
  4752.  
  4753. CIRT EQU CIBF+CIBFL *CIR* DIRECTORY TABLE
  4754. LBUF EQU CIRT+CIRTL LIST *CIR* ENTRIES OUTPUT BUFFER
  4755. ENDB EQU LBUF+LBUFL+5 END OF BUFFERS
  4756. TITLE PRESET.
  4757. PRE SPACE 4,40
  4758. ** PRS - PRESET PROGRAM.
  4759. *
  4760. * ENTRY (CPAR) = CONVERTED PARAMETER ARRAY.
  4761. * FILES *ZZZZZG0* THROUGH ZZZZZG9 AND *ZZZZZGA* RETURNED
  4762. * BY *PFS*.
  4763. * FILE *ZZZZZGB* RETURNED BY *PFS* IF NO FILE
  4764. * SELECTIONS.
  4765. * FILE *ZZZZZGB* CONTAINS FILE SELECTIONS IF PRESENT.
  4766. *
  4767. * EXIT (B1) = 1.
  4768. * (MSTT) = TABLE OF DEVICES IN FAMILY BEING LOADED.
  4769. * (MASK) = MASK FOR MASTER DEVICES BEING LOADED.
  4770. * (TMDA) = TABLE OF MASTER DEVICE ADDRESSES.
  4771. * (PDWD) = PF DESCRIPTION WORD FOR FAMILY OR AUXILIARY
  4772. * DEVICE BEING LOADED.
  4773. * (MPFM) = FAMILY NAME PARAMETER.
  4774. * (MPPN) = PACK NAME PARAMETER.
  4775. * EXIT TO *ABT* FOR EXTRACT OPTION WITHOUT CIR.
  4776. * ARCHIVE FILE ASSIGNED.
  4777. * CATALOG IMAGE RECORD PROCESSED.
  4778. * DEVICE SELECTION PERFORMED.
  4779. * SELECTION PARAMETERS PUT IN ACCOUNTING MESSAGES.
  4780. * APPROPRIATE ACCOUNTING MESSAGES ISSUED TO DAYFILE AND
  4781. * OUTPUT FILE.
  4782. * *K* DISPLAY COORDINATES INITIALIZED.
  4783. *
  4784. * USES X - 0, 1, 2, 5, 6, 7.
  4785. * A - 1, 2, 5, 6, 7.
  4786. * B - 1.
  4787. *
  4788. * CALLS AAF, BMT, CAS, GAM, IFL, IOF, PCI, SBS, SFP, SMP, SSP,
  4789. * SSS, STC.
  4790. *
  4791. * MACROS MEMORY, REPRIEVE, SKIPFF.
  4792.  
  4793.  
  4794. PRS SUBR ENTRY/EXIT
  4795. SB1 1
  4796. MEMORY CM,,R,ENDB REQUEST REQUIRED MEMORY
  4797. REPRIEVE RPVB,SET,277B SET EXTENDED REPRIEVE PROCESSING
  4798. RJ SSS SET SECURED SYSTEM STATUS
  4799.  
  4800. * OPEN ARCHIVE FILE.
  4801.  
  4802. SA1 CPAR+/COMSPFS/CPTB
  4803. SA2 TAPE
  4804. MX0 42 SET ARCHIVE FILE NAME
  4805. BX6 X0*X1
  4806. BX2 -X0*X2
  4807. BX6 X6+X2
  4808. SA6 A2
  4809. SX2 TAPE SET OPTICAL DISK EXTENSION BUFFER
  4810. SA3 PRSC
  4811. RJ SOE SET FET EXTENSION IF OPTICAL DISK FILE
  4812. OPEN TAPE,READNR,R
  4813. SA1 CPAR+/COMSPFS/CPSF
  4814. ZR X1,PRS1 IF NO FILE SKIP COUNT SPECIFIED
  4815. SKIPFF TAPE,X1
  4816.  
  4817. * INITIALIZE FILES AND DEVICE ENVIRONMENT.
  4818.  
  4819. PRS1 RJ IOF INITIALIZE OUTPUT FILES
  4820. SX3 PRSA PRESET *K* DISPLAY COORDINATES
  4821. RJ PRK
  4822. RJ BMT BUILD MASS STORAGE TABLE
  4823. SX6 DSTBUF SET DEVICE STATUS BUFFER ADDRESS
  4824. RJ ODV OUTPUT DEVICE STATUS
  4825. SX0 ENDB SET BUFFER ADDRESS
  4826. RJ RPS READ FILE SELECTIONS
  4827. RJ SMK SET FILE SELECTION MASK
  4828. RJ SMP SET MASTER DEVICE PARAMETERS
  4829. RJ GAM GENERATE ACCOUNTING MESSAGES
  4830. RJ STC SET TAPE CHARACTERISTICS
  4831. READCW TAPE,17B INITIATE CONTROL WORD READ
  4832. BX6 X6-X6 CLEAR CONTROL WORD STATUS WORD
  4833. SA6 TAPE+CWSW
  4834. RJ PAL PROCESS ARCHIVE LABEL
  4835. SB2 ERAL * ERROR IN ACHIVE FILE LABEL.*
  4836. NZ X6,ABT IF BAD ARCHIVE FILE LABEL
  4837. RJ SFP SET PERMANENT FILE PARAMETERS
  4838.  
  4839. * SET UTILITY CONTROL DATE UPDATE FLAG.
  4840.  
  4841. SA1 CPAR+/COMSPFS/CPUD
  4842. ZR X1,PRS3 IF UNCONDITIONAL UPDATE NOT SELECTED
  4843. SA1 /COMSPFS/STDT SET TO UPDATE UTILITY CONTROL DATE
  4844. BX6 X1
  4845. SA6 UDAT
  4846.  
  4847. * PROCESS INCREMENTAL LOAD PARAMETERS.
  4848.  
  4849. PRS3 RJ PCI PROCESS CATALOG IMAGE
  4850. RJ IFL INITIALIZE OUTPUT FILE FOR FILE PROCESSING
  4851. SA1 CPAR+/COMSPFS/CPOP
  4852. LX1 59-49
  4853. PL X1,PRSX IF EXTRACT OPTION NOT SPECIFIED
  4854. SA1 INCF
  4855. SB2 EREC * EXTRACT OPTION REQUIRES CIR.*
  4856. ZR X1,ABT IF CATALOG IMAGE RECORD NOT PRESENT
  4857. SA1 ACEA SET END OF LOAD CONTROL WORD
  4858. SX7 B1 SET CONTROL WORD RE-USE FLAG
  4859. BX6 X1
  4860. SA7 RCWF
  4861. SA6 CWBF
  4862. EQ PRSX RETURN
  4863.  
  4864.  
  4865. PRSA BSS 0 Y-COORDINATE TABLE
  4866. KDL *
  4867. PRSC VFD 36/,6/ODEBL,18/ODEB POINTER TO *OD* EXT. BUFFER
  4868. TITLE PRESET SUBROUTINES.
  4869. GAM SPACE 4,20
  4870. ** GAM - GENERATE ACCOUNTING MESSAGES.
  4871. *
  4872. * ENTRY (MASK) = MASK OF MASTER DEVICES BEING LOADED.
  4873. * (CPAR) = COMVERTED PARAMETER ARRAY.
  4874. *
  4875. * EXIT SELECTION PARAMETERS PUT IN ACCOUNTING MESSAGES.
  4876. * APPROPRIATE ACCOUNTING MESSAGES ISSUED TO DAYFILE AND
  4877. * OUTPUT FILE.
  4878. *
  4879. * USES X - 0, 1, 2, 5, 6, 7.
  4880. * A - 1, 2, 5, 6, 7.
  4881. *
  4882. * CALLS COD, SFN.
  4883. *
  4884. * MACROS EDATE, ETIME, MESSAGE, MOVE, WRITEH.
  4885.  
  4886.  
  4887. GAM SUBR ENTRY/EXIT
  4888.  
  4889. * PUT CORRECT DEVICE NUMBER IN MESSAGES.
  4890.  
  4891. SA1 CPAR+/COMSPFS/CPDN
  4892. SA2 CPAR+/COMSPFS/CPTD
  4893. MX6 -6
  4894. IX1 X1+X2
  4895. BX1 -X6*X1 SET *DN* OR *TD* DEVICE NUMBER
  4896. RJ COD
  4897. MX0 24
  4898. SA5 MSGC+1
  4899. BX5 X0*X5
  4900. BX7 -X0*X6
  4901. BX7 X7+X5
  4902. SA7 A5 SET DEVICE NUMBER IN MESSAGE
  4903.  
  4904. * PUT FAMILY/PACK NAME IN MESSAGES.
  4905.  
  4906. SA5 CPAR+/COMSPFS/CPPN SET PACKNAME PARAMETERS
  4907. SA2 GAMM
  4908. MX0 42
  4909. BX1 X5
  4910. NZ X5,GAM3 IF PACKNAME SPECIFIED
  4911. SA2 GAML SET FAMILY NAME PARAMETERS
  4912. SA1 CPAR+/COMSPFS/CPFN
  4913. GAM3 LX6 X2
  4914. BX1 X0*X1 PUT FAMILY/PACK NAME IN MESSAGE
  4915. SA6 MSGC+2
  4916. RJ SFN
  4917. ZR X5,GAM4 IF PACKNAME NOT SPECIFIED
  4918. SA1 GAMN PUT PACKNAME IN MESSAGE
  4919. BX7 X1
  4920. SA7 A6-B1
  4921. GAM4 BX6 X0*X6 ADD PERIOD TO NAME
  4922. SX2 1L.
  4923. BX1 -X0*X2
  4924. BX6 X6+X1
  4925. SA6 MSGC+3
  4926. MESSAGE MSGC,,R
  4927. WRITEH O,GAMJ,1
  4928. WRITEH O,MSGC,4
  4929. SA1 CPAR+/COMSPFS/CPUD
  4930. ZR X1,GAM5 IF UTILITY CONTROL UPDATE NOT REQUESTED
  4931. WRITEH O,GAMO,4
  4932. GAM5 SA5 CPAR+/COMSPFS/CPOP
  4933. BX1 X5
  4934. LX1 59-46
  4935. PL X1,GAM6 IF OP=Z NOT SPECIFIED
  4936. WRITEH O,GAMP,4
  4937. GAM6 MX0 2
  4938. LX5 3
  4939. SA1 GAMI
  4940. BX5 X0*X5
  4941. LX6 X1
  4942. ZR X5,GAM8 IF NOT INDIRECT OR DIRECT ONLY
  4943. SA6 GAMK
  4944. SX2 GAMH
  4945. PL X5,GAM7 IF DIRECT ONLY
  4946. SX2 GAMG
  4947. GAM7 MOVE 3,X2,GAMK+1
  4948. WRITEH O,GAMK,4
  4949. GAM8 SA5 CPAR+/COMSPFS/CPOP
  4950. MX0 3
  4951. BX5 X0*X5
  4952. ZR X5,GAM11 IF NO DATE OPTION SPECIFIED
  4953. LX5 2
  4954. SA2 X5+GAMD LOAD *CREATED*, *ACCESSED*, OR *MODIFIED*
  4955. SA5 CPAR+/COMSPFS/CPAD
  4956. BX6 X2
  4957. SA6 GAMK SET DATE/TIME OPTION MESSAGE
  4958. ZR X5,GAM9 IF AFTER DATE NOT SPECIFIED
  4959. SA2 GAMC
  4960. BX1 X5
  4961. AX1 18
  4962. BX6 X2
  4963. SA6 GAMK+1 SET *AFTER* IN MESSAGE
  4964. EDATE X1
  4965. MX2 -18
  4966. SA6 GAMK+2 SET DATE IN MESSAGE
  4967. BX1 -X2*X5
  4968. ETIME X1
  4969. SA6 GAMK+3 SET TIME IN MESSAGE
  4970. GAM9 SA5 CPAR+/COMSPFS/CPBD
  4971. ZR X5,GAM10 IF BEFORE DATE NOT SPECIFIED
  4972. SA2 GAMC+1
  4973. BX6 X2
  4974. SA6 A6+B1 SET *BEFORE* IN MESSAGE
  4975. BX1 X5
  4976. AX1 18
  4977. SA0 A6+B1
  4978. EDATE X1
  4979. MX2 -18
  4980. SA6 A0 SET DATE IN MESSAGE
  4981. BX1 -X2*X5
  4982. SA0 A6+B1
  4983. ETIME X1
  4984. SA6 A0 SET TIME IN MESSAGE
  4985. GAM10 WRITEH O,GAMK,A6-GAMK+1
  4986. GAM11 SA2 /COMSPFS/FISP
  4987. ZR X2,GAM12 IF NO FILE SELECTIONS
  4988. MOVE 2,GAMB,GAMK *SELECTED FILES ON *
  4989. SA1 CPAR+/COMSPFS/CPUI
  4990. NZ X1,GAM13 IF ONLY 1 USER INDEX
  4991. MOVE 3,GAMQ,GAMK+2 * MULTIPLE USER INDICES*
  4992. EQ GAM14 WRITE MESSAGE
  4993.  
  4994. GAM12 SA1 CPAR+/COMSPFS/CPUI
  4995. ZR X1,GAMX IF NO USER INDEX SELECTED
  4996. MOVE 2,GAMA,GAMK * ALL FILES FOR *
  4997. GAM13 SA2 GAMF
  4998. SA1 CPAR+/COMSPFS/CPUI
  4999. BX6 X2
  5000. SA6 GAMK+2 *USER INDEX*
  5001. RJ COD
  5002. LX6 12
  5003. SA6 A6+B1
  5004. SA1 =10H
  5005. BX6 X1
  5006. SA6 GAMK+4
  5007. GAM14 WRITEH O,GAMK,5
  5008. EQ GAMX RETURN
  5009.  
  5010.  
  5011. GAMA DATA 20H ALL FILES FOR
  5012. GAMB DATA 20HSELECTED FILES ON
  5013. GAMC DATA 10H AFTER
  5014. DATA 10H BEFORE
  5015. GAMD DATA 10H MODIFIED
  5016. DATA 10H ACCESSED
  5017. DATA 10H CREATED
  5018. GAMF DATA 10HUSER INDEX
  5019. GAMG DATA 30H INDIRECT ACCESS FILES ONLY
  5020. GAMH DATA 30H DIRECT ACCESS FILES ONLY
  5021. GAMI DATA 10H LOADING -
  5022. GAMJ DATA 10H1
  5023. GAMK DATA 40H
  5024. DATA 30H
  5025. GAML DATA 10H FAMILY
  5026. GAMM DATA 10H PACK
  5027. GAMN DATA 10H PACK
  5028. GAMO DATA 40H UPDATE UTILITY CONTROL DATE.
  5029. GAMP DATA 40H CLEAR ALTERNATE STORAGE INFORMATION.
  5030. GAMQ DATA 30H MULTIPLE USER INDICES
  5031. PCI SPACE 4,20
  5032. ** PCI - PROCESS CATALOG IMAGE RECORD.
  5033. *
  5034. * EXIT (RCWF) = SET IF A CONTROL WORD OTHER THAN FOR A
  5035. * CATALOG IMAGE RECORD WAS FOUND BEFORE
  5036. * EOF/EOI.
  5037. * (INCF) = NON-ZERO IF CATALOG IMAGE FOUND AND NOT TO
  5038. * BE IGNORED.
  5039. * CATALOG IMAGE COPIED TO SCRATCH FILE AND DIRECTORY
  5040. * BUILT IF (INCF) IS NON-ZERO.
  5041. * CATALOG IMAGE SKIPPED IF PRESENT AND (INCF) IS ZERO.
  5042. * ARCHIVE FILE POSITIONED FOR PROCESSING FIRST RECORD
  5043. * THAT IS NOT A CATALOG IMAGE RECORD. THIS MAY BE AT
  5044. * EOF/EOI.
  5045. * EXIT TO *ABT* IF FATAL ERROR.
  5046. *
  5047. * USES X - 0, 1, 2, 3, 5, 6, 7.
  5048. * A - 1, 2, 3, 5, 6, 7.
  5049. * B - 2, 3.
  5050. *
  5051. * CALLS COD, ICI, KIP, OCI, PSI, RCW, SCI, SEM, SER.
  5052. *
  5053. * MACROS CWREAD, MESSAGE, MOVE, WRITER, WRITEW.
  5054.  
  5055.  
  5056. PCI14 RJ SCI SKIP CATALOG IMAGE
  5057.  
  5058. PCI SUBR ENTRY/EXIT
  5059. SA1 CPAR+/COMSPFS/CPOP
  5060. LX1 59-48
  5061. NG X1,PCI14 IF OMIT *CIR* SPECIFIED
  5062. RJ RCW READ ARCHIVE FILE CONTROL WORD
  5063. NG X3,PCI14 IF EOR/EOF/EOI OR READ ERROR
  5064. SX1 X3-5
  5065. ZR X1,PCI0 IF CATALOG IMAGE RECORD
  5066. SX6 B1 SET CONTROL WORD RE-USE FLAG
  5067. SA6 RCWF
  5068. EQ PCIX RETURN
  5069.  
  5070. * INITIALIZE FOR INCREMENTAL LOAD.
  5071.  
  5072. PCI0 SA1 TLBF+/COMSPFS/PFAL
  5073. NZ X1,PCI1 IF ARCHIVE FILE LABEL READ
  5074. SB2 ERMI * NO ARCHIVE LABEL ON INCREMENTAL LOAD...*
  5075. EQ ABT ABORT
  5076.  
  5077. PCI1 SX7 B1 SET INCREMENTAL LOAD FLAG
  5078. BX6 X6-X6
  5079. SA7 INCF
  5080. SB2 CIRT SET FWA TO CLEAR
  5081. SB3 CIRT+CIRTL SET LWA+1 TO CLEAR
  5082. PCI2 SA6 B2 CLEAR WORD OF BUFFERS
  5083. SB2 B2+B1
  5084. LT B2,B3,PCI2 IF NOT END OF BUFFERS
  5085. RJ ICI INITIALIZE FOR OUTPUT OF CIR DATA
  5086. PCI3 MESSAGE MSCI,1 * CREATING CATALOG IMAGE RECORD*
  5087. SA5 IDSA+/COMSPFS/ADMS
  5088. MOVE 3,MSCI,X5
  5089. BX6 X6-X6 CLEAR CATALOG TRACK WORD COUNT
  5090. SA6 PCIB
  5091.  
  5092. * COPY CATALOG IMAGE RECORD INFORMATION.
  5093.  
  5094. PCI4 SA1 CWBF SET BLOCK WORD COUNT
  5095. MX2 -9
  5096. BX0 -X2*X1
  5097. LX1 0-48 CHECK IF NEW DEVICE
  5098. MX2 -12
  5099. BX3 -X2*X1
  5100. LX1 0-36-0+48 SET CATALOG TRACK COUNT
  5101. SX6 X3-2RCH
  5102. NZ X6,PCI5 IF NOT NEW DEVICE
  5103. BX7 -X2*X1
  5104. LX1 0-24-0+36 SET DEVICE MASK
  5105. SA7 PCIE
  5106. BX6 -X2*X1
  5107. MX2 -24
  5108. SA6 PCIF
  5109. SA3 PCIC SET DIRECTORY ADDRESS FOR NEXT DEVICE
  5110. SX6 X3+NWCD
  5111. BX7 -X2*X1 PUT DEVICE HEADER IN DIRECTORY
  5112. SA6 A3
  5113. SX2 X6-CIRT-NWCD*NDEV
  5114. PL X2,PCI10 IF TOO MANY DEVICES
  5115. SA7 X6+
  5116. PCI5 SA1 PCIC CHECK FOR DEVICE HEADER
  5117. SX2 X1-CIRT
  5118. NG X2,PCI10 IF NO DEVICE HEADER
  5119. ZR X0,PCI7 IF ZERO WORD COUNT
  5120. CWREAD TAPE,TDBF,X0 READ CATALOG IMAGE BLOCK
  5121. NZ X7,PCI11 IF READ ERROR
  5122. NZ B7,PCI10 IF INCOMPLETE CATALOG IMAGE BLOCK
  5123. WRITEW CIRF,TDBF,X0 COPY BLOCK TO SCRATCH FILE
  5124. SA1 PCIB INCREMENT WORD COUNT
  5125. IX6 X1+X0
  5126. SA6 A1
  5127. NZ X1,PCI6 IF NOT FIRST BLOCK
  5128. SA1 PCIE SET CATALOG TRACK MASK
  5129. SA2 TDBF GET USER INDEX
  5130. SX6 X1-1
  5131. LX2 0-3 SET CATALOG TRACK
  5132. BX7 X6*X2
  5133. SA7 PCID
  5134.  
  5135. * WRITE CIR DATA TO SELECTED OUTPUT FILES.
  5136.  
  5137. PCI6 SX6 TDBF SET BUFFER ADDRESS
  5138. SX7 X0 SET WORD COUNT
  5139. RJ OCI OUTPUT CATALOG IMAGE ENTRIES
  5140.  
  5141. * CHECK FOR EOR (END OF CATALOG TRACK).
  5142.  
  5143. PCI7 SA2 CWBF CHECK FOR EOR BLOCK
  5144. MX0 -3
  5145. LX2 0-9
  5146. BX6 -X0*X2
  5147. NZ X6,PCI8 IF EOR BLOCK
  5148. RJ RCW READ ARCHIVE FILE CONTROL WORD
  5149. NZ X7,PCI11 IF READ ERROR
  5150. SX6 X3-5
  5151. NZ X6,PCI10 IF NOT CATALOG IMAGE CONTROL WORD
  5152. EQ PCI4 COPY MORE CATALOG IMAGE RECORD
  5153.  
  5154. * SET DIRECTORY ENTRY.
  5155.  
  5156. PCI8 SA1 PCIB
  5157. ZR X1,PCI9 IF AN EMPTY CATALOG TRACK
  5158. SA2 CIFC UPDATE TOTAL FILE COUNT
  5159. AX3 X1,B1 FILE COUNT = WORD COUNT / 2
  5160. IX6 X2+X3
  5161. SA6 A2
  5162. LX3 30 30/FILE COUNT, 30/RANDOM INDEX
  5163. SA2 PCIA
  5164. BX6 X3+X2
  5165. AX1 6 SECTOR COUNT = WORD COUNT / 64 + 1
  5166. SX7 B1
  5167. IX0 X1+X7
  5168. SA3 PCIC GET DIRECTORY ADDRESS
  5169. SA1 PCID GET CATALOG TRACK
  5170. IX7 X2+X0 UPDATE RANDOM INDEX
  5171. SA7 A2
  5172. IX3 X3+X1 SAVE DIRECTORY ENTRY
  5173. SA6 X3+B1
  5174. WRITER CIRF,R FLUSH THIS CATALOG TRACK
  5175.  
  5176. * PROCESS END OF CATALOG IMAGE RECORD.
  5177.  
  5178. PCI9 RJ RCW READ ARCHIVE FILE CONTROL WORD
  5179. NZ X7,PCI11 IF READ ERROR
  5180. SX6 X3-5
  5181. ZR X6,PCI3 IF CATALOG IMAGE RECORD
  5182. NG X1,PCI9.1 IF EOF/EOI
  5183. NZ X1,PCI9 IF EOR
  5184. MESSAGE (=C**),1 CLEAR CREATING CATALOG IMAGE MESSAGE
  5185. SA5 IDSA+/COMSPFS/ADMS
  5186. MOVE 3,BLNK,X5
  5187. SX6 1 SET CONTROL WORD RE-USE FLAG
  5188. SA6 RCWF
  5189. PCI9.1 RJ PSI PROCESS SORTED CIR OUTPUT
  5190. EQ PCIX RETURN
  5191.  
  5192. * PROCESS CATALOG IMAGE RECORD FORMAT ERROR.
  5193.  
  5194. PCI10 SB2 ERIF * CATALOG IMAGE FORMAT ERROR.*
  5195. EQ ABT ABORT
  5196.  
  5197. * PROCESS CATALOG IMAGE RECORD READ ERROR.
  5198.  
  5199. PCI11 SA7 AREF INDICATE READ ERROR
  5200. SA1 PCIF PUT DEVICE MASK IN MESSAGE
  5201. RJ COD
  5202. SA1 =1A. ADD PERIOD TO MESSAGE
  5203. LX6 30
  5204. BX5 X1-X6
  5205. SA1 PCID PUT CATALOG TRACK IN MESSAGE
  5206. RJ COD
  5207. LX6 6
  5208. BX7 X6-X5
  5209. SA7 ERIR+3
  5210. SA5 IDSA+/COMSPFS/ADER PUT MESSAGE ON *K* DISPLAY
  5211. MOVE 4,ERIR,X5
  5212. SB2 ERIR *READ ERROR IN CATALOG IMAGE*
  5213. RJ SEM SEND ERROR MESSAGE
  5214. SB3 PCI12 SET *K.GO.* PROCESSOR ADDRESS
  5215. SB2 PCI13 SET *K.ANYTHING ELSE.* PROCESSOR ADDRESS
  5216. EQ /COMSPFS/KIP PROCESS KEYBOARD INPUT
  5217.  
  5218. * PROCESS *K.GO.* RESPONSE TO READ ERROR.
  5219.  
  5220. PCI12 RJ SER SKIP TO END OF RECORD
  5221. EQ PCI8 BUILD DIRECTORY ENTRY
  5222.  
  5223. PCI13 SB2 B0 SET NO MESSAGE
  5224. EQ ABT ABORT
  5225.  
  5226.  
  5227. PCIA CON 1 RANDOM INDEX FOR *CIR*
  5228. PCIB CON 0 CATALOG TRACK WORD COUNT
  5229. PCIC CON CIRT-NWCD CURRENT DIRECTORY ADDRESS
  5230. PCID CON 0 CURRENT CATALOG TRACK
  5231. PCIE CON 0 NUMBER OF CATALOG TRACKS FOR DEVICE
  5232. PCIF CON 0 DEVICE MASK BEING READ
  5233. SMP SPACE 4,20
  5234. ** SMP - SET MASTER DEVICE PARAMETERS.
  5235. *
  5236. * ENTRY (MSTBUF) = MST ENTRY OF DEVICE DESCRIBED BY
  5237. * PACKNAME PARAMETER.
  5238. *
  5239. * EXIT PACK NAME, UNIT COUNT AND EQUIPMENT MNEMONIC SET IN
  5240. * *PURG* FET IF AUXILIARY DEVICE BEING LOADED.
  5241. * (DDMA) = DESTINATION DEVICE *MSTT* ADDRESS IF
  5242. * DESTINATION DEVICE SPECIFIED.
  5243. * TO *ABT* IF DESTINATION DEVICE NOT FOUND.
  5244. *
  5245. * USES X - 1, 2, 3, 6, 7.
  5246. * A - 1, 2, 6, 7.
  5247. * B - 2, 3.
  5248. *
  5249. * CALLS SFD.
  5250.  
  5251.  
  5252. SMP SUBR ENTRY/EXIT
  5253.  
  5254. * INITIALIZE *PURG* FET FOR AUXILIARY DEVICE.
  5255.  
  5256. SA1 CPAR+/COMSPFS/CPPN
  5257. ZR X1,SMP5 IF PACK NAME NOT SPECIFIED
  5258. SA2 MSTBUF+DDLL SET UNIT COUNT
  5259. MX3 -3
  5260. LX2 12
  5261. BX1 -X3*X2
  5262. SA2 MSTT+1
  5263. LX2 -18 SET EQUIPMENT MNEMONIC
  5264. SX1 X1+B1
  5265. MX3 -11
  5266. BX6 X6+X1 MERGE UNIT COUNT WITH PACK NAME
  5267. SA1 PURG+1 CLEAR OLD MNEMONIC FROM FET
  5268. BX2 -X3*X2
  5269. MX3 -48
  5270. SA6 PURG+CFPK
  5271. BX1 -X3*X1
  5272. LX2 48 PUT MNEMONIC IN FET
  5273. BX7 X2+X1
  5274. SA7 A1
  5275.  
  5276. * SET DESTINATION DEVICE *MSTT* ADDRESS.
  5277.  
  5278. SMP5 SA2 CPAR+/COMSPFS/CPDD
  5279. ZR X2,SMPX IF NO DESTINATION DEVICE
  5280. BX6 X2
  5281. RJ SFD SEARCH FOR DEVICE
  5282. NZ X1,SMP6 IF DEVICE FOUND
  5283. SB2 ERDN * DESTINATION DEVICE NOT FOUND.*
  5284. EQ ABT ABORT
  5285.  
  5286. SMP6 SX6 A1+ SET DESTINATION DEVICE *MSTT* ADDRESS
  5287. SA6 DDMA
  5288. EQ SMPX RETURN
  5289. STC SPACE 4,10
  5290. ** STC - SET TAPE CHARACTERISTICS.
  5291. *
  5292. * EXIT TAPE CHARACTERISTICS SET IN FET.
  5293. *
  5294. * USES X - 1, 2, 3, 4, 5, 6.
  5295. * A - 1, 4, 5, 6.
  5296. *
  5297. * MACROS FILINFO, RECALL, SETFS.
  5298.  
  5299.  
  5300. STC SUBR ENTRY/EXIT
  5301. RECALL TAPE
  5302. MX1 42
  5303. SA5 X2 SET ARCHIVE FILE NAME IN PARAMETER BLOCK
  5304. SA4 STCA
  5305. BX5 X1*X5
  5306. SX4 X4
  5307. BX6 X5+X4
  5308. SA6 A4
  5309. FILINFO STCA GET FILE INFORMATION
  5310. SA1 STCA+1 GET TAPE DEVICE TYPE
  5311. SA4 STCA+FIPBL GET TAPE FORMAT
  5312. LX1 59-24
  5313. PL X1,STC3 IF NOT TAPE FILE
  5314. MX3 2
  5315. LX1 59-26-59+24
  5316. BX6 X3*X1 SET TAPE DEVICE TYPE
  5317. SA5 A4+1 GET DENSITY, CONVERSION MODE, LABEL TYPE
  5318. LX6 56-59
  5319. LX4 -6
  5320. MX1 -6
  5321. LX5 -6
  5322. BX4 -X1*X4 TAPE FORMAT
  5323. BX2 -X1*X5 DENSITY AND CONVERSION MODE
  5324. LX5 -6
  5325. BX5 -X1*X5 LABEL TYPE
  5326. LX4 30
  5327. SA1 A5+1 GET PROCESSING OPTIONS
  5328. BX6 X6+X4
  5329. LX2 -12
  5330. MX4 -12
  5331. LX1 -12
  5332. BX6 X6+X2
  5333. SX2 7757B
  5334. BX1 -X4*X1 PROCESSING OPTIONS
  5335. BX1 X2*X1 CLEAR PO=W IF SELECTED
  5336. SX2 /MTX/POGH*100B+/MTX/POLM*200B
  5337. BX1 X1-X2 SET OPTIONS TO TOGGLE INSTALLATION BITS
  5338. LX1 -24
  5339. BX6 X6+X1
  5340. ZR X5,STC2 IF UNLABELED
  5341. MX3 1
  5342. LX3 58-59 SET LABELED TAPE BIT
  5343. BX6 X6+X3
  5344. SX5 X5-14B
  5345. NZ X5,STC2 IF STANDARD LABELS
  5346. LX3 57-59-58+59 SET NONSTANDARD LABEL BIT
  5347. BX6 X6+X3
  5348. STC2 SA6 TAPE+LBWD SET TAPE INFORMATION
  5349. STC3 SETFS TAPE,0 CLEAR SPECIAL FILE STATUS
  5350. EQ STCX RETURN
  5351.  
  5352.  
  5353. STCA VFD 42/0,6/STCAL,12/1 *FILINFO* PARAMETER BLOCK
  5354. BSS FIPBL-1
  5355. CON FMTK FORMAT KEYWORD
  5356. CON DENK DENSITY, CONVERSION, LABEL TYPE KEYWORD
  5357. CON POPK PROCESSING OPTIONS KEYWORD
  5358. STCAL EQU *-STCA
  5359. SPACE 4,10
  5360. * PRESET MESSAGES.
  5361.  
  5362.  
  5363. MSCI DATA 30CCREATING CATALOG IMAGE RECORD
  5364. SPACE 4,10
  5365. * PRESET ERROR MESSAGES.
  5366.  
  5367.  
  5368. ERDN DATA C* DESTINATION DEVICE NOT FOUND.*
  5369. EREC DATA C* EXTRACT OPTION REQUIRES CIR.*
  5370. ERIF DATA C* CATALOG IMAGE FORMAT ERROR.*
  5371. ERIR DATA 40C READ ERROR IN CATALOG IMAGE DM CT.
  5372. ERMI DATA C* NO ARCHIVE LABEL ON INCREMENTAL LOAD FILE.*
  5373. COMMON SPACE 4,10
  5374. ** PRESET COMMON DECKS.
  5375.  
  5376.  
  5377. *CALL COMCDCP
  5378. LIST X
  5379. *CALL COMCPFP
  5380. LIST *
  5381. *CALL COMCRSB
  5382. *CALL COMCSOE
  5383.  
  5384. PRK HERE ASSEMBLE Y-COORDINATE PRESET CODE HERE
  5385. SPACE 4,10
  5386. * PRESET BUFFERS.
  5387.  
  5388. ESTADD EQU * RSB PARAMETER WORD FOR EST
  5389. ESTBUF EQU ESTADD+1 EST BUFFER
  5390. MSTADD EQU ESTBUF+ESMX*ESTE *RSB* PARAMETER WORD FOR MST READ
  5391. MSTBUF EQU MSTADD+1 MST BUFFER
  5392. DSTBUF EQU MSTBUF+MSTL
  5393. PRSL EQU DSTBUF+2*63+2 PRESET LWA+1
  5394.  
  5395. SPACE 4
  5396. END