Table of Contents

PACKER

Table Of Contents

  • [00013] PACKER - INDIRECT ACCESS PERMANENT FILE HOLE PACKER.
  • [00014] INDIRECT ACCESS PERMANENT FILE HOLE PACKER.
  • [00590] COMMON DECKS.
  • [00605] MACRO DEFINITIONS.
  • [00607] ABSREAD - READ ABSOLUTE CENTRAL MEMORY.
  • [00736] RJT - DEFINE ROUTINES TO BE TRACED VIA RJ TRACE.
  • [00748] SCIOF - SET *CIO* FUNCTION IN FET.
  • [00789] DATA AND CONSTANTS.
  • [00959] MANAGED TABLES.
  • [00961] TRJH - RETURN JUMP HISTORY (DEBUG USE).
  • [00979] TCAT - TABLE OF CATALOG TRACKS.
  • [00991] TTRT - IMAGE OF DEVICE TRT
  • [01001] TTLT - TRACK LINK TABLE.
  • [01014] TAPE - TABLE OF AVAILABLE PFC ENTRIES.
  • [01030] TFRI - TABLE OF FILE RANDOM INDEXES.
  • [01046] TFHL - TABLE OF FILE AND HOLE LENGTHS FROM THE PFC.
  • [01059] *K* DISPLAY.
  • [01124] MAIN PROGRAM.
  • [01234] ERROR TERMINATION PROCESSORS.
  • [01242] RPV - PROCESS REPRIEVE.
  • [01309] ERR - PROCESS ERROR.
  • [01349] TEMS - TABLE OF ERROR MESSAGES.
  • [01439] RJ TRACE PROCESSORS.
  • [01447] RJT - RETURN JUMP TRACE.
  • [01874] SUBROUTINES.
  • [01876] AFM - ATTEMPT FILL MOVE.
  • [02004] ASM - ATTEMPT SLIDE MOVE.
  • [02115] ATD - ATTEMPT PRE-MOVE TRACK DELINK.
  • [02181] CDF - COPY DATA FOR FILE.
  • [02308] CEO - CHECK ENTRY OVERLAP.
  • [02404] CFL - CHECK FILE LENGTH.
  • [02479] CIP - CLEAR IRRELEVANT PFC INFORMATION.
  • [02511] CIT - CLEAR INTERLOCKS.
  • [02536] CRA - CONVERT RANDOM ADDRESS.
  • [02582] CTC - CHECK TERMINATION CONDITIONS.
  • [02620] CTE - CREATE AND INSERT TABLE ENTRY.
  • [02720] DLK - DELINK TRACKS IN MIDDLE OF TRACK CHAIN.
  • [02828] DRP - DROP TRACKS AT END OF TRACK CHAIN.
  • [02894] DTE - DELETE TABLE ENTRY.
  • [02970] FLT - FIND LAST TRACK OF HOLE.
  • [03038] FPI - FORMAT PFC INFORMATION.
  • [03101] FRM - FORMAT HOLES RELEASED STATISTICAL MESSAGE.
  • [03146] FSM - FORMAT STATISTICAL MESSAGE.
  • [03180] IOM - ISSUE OVERLAP MESSAGE.
  • [03225] IRS - ISSUE RESOURCE SUMMARY MESSAGES TO DAYFILE.
  • [03276] ISD - ISSUE STATISTICS TO DAYFILE.
  • [03341] ISM - ISSUE STATISTICAL MESSAGE.
  • [03358] MSG - ISSUE MESSAGE.
  • [03409] PCH - PURGE CONTIGUOUS HOLES.
  • [03471] RCE - READ CATALOG ENTRY.
  • [03553] RJA - RETURN JUMP TRACE ACTIVATION/DEACTIVATION.
  • [03609] RLS - RECLAIM LOST SPACE.
  • [03726] RSS - REMOVE *SSST* STATUS FROM DUMP FILES.
  • [03764] TOV - TABLE OVERFLOW PROCESSOR.
  • [03833] UFE - UPDATE FILE ENTRY.
  • [03898] UFF - UPDATE AFTER FILL FILE MOVE.
  • [04022] UHE - UPDATE HOLE ENTRY.
  • [04130] UKD - UPDATE *K* DISPLAY.
  • [04231] USS - UPDATE SYSTEM SECTOR.
  • [04266] VHS - VERIFY THAT HOLE SIZE IS ADEQUATE FOR DELINK.
  • [04307] WCE - WRITE CATALOG ENTRY.
  • [04340] ZWT - ZERO WORD TERMINATE *TFRI* TABLE.
  • [04390] PRESET.
  • [04392] PRS - PRESET.
  • [04438] PRESET SUBROUTINES.
  • [04440] CST - CONVERT AND SORT TABLES.
  • [04534] CTT - CONVERT TRACK TABLE.
  • [04607] FDN - FIND DEVICE NUMBER.
  • [04717] ICF - INITIALIZE CATALOG FILE.
  • [04824] KDP - *K* DISPLAY PRESET.
  • [04911] PAG - PROCESS COMMAND ARGUMENTS.
  • [05017] SCT - SCAN CATALOG TRACKS.
  • [05201] SRA - SET RANDOM ADDRESS.
  • [05254] SST - SHELL SORT TABLE.

Source Code

PACKER.txt
  1. IDENT PACKER,DATA
  2. ABS
  3. ENTRY PACKER
  4. ENTRY RFL=
  5. ENTRY SSJ=
  6. SST
  7. SYSCOM B1
  8. ORG 110B
  9. SPACE 4,10
  10. *COMMENT PACKER - IAPF HOLE PACKER.
  11. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  12. SPACE 4,10
  13. TITLE PACKER - INDIRECT ACCESS PERMANENT FILE HOLE PACKER.
  14. *** PACKER - INDIRECT ACCESS PERMANENT FILE HOLE PACKER.
  15. *
  16. * C. A. LACEY. 75/12/18.
  17. * D. F. LINTON. 75/12/18.
  18. * R. R. VEACH. 78/01/08.
  19. * W. J. STURGIS. 78/03/07.
  20. * D. G. BEAUSANG. 80/08/24.
  21. * A. J. NATHANSON. 83/10/25.
  22. * K. R. DELAY. 84/03/26.
  23. * B. G. ALBRECHT. 85/03/22.
  24. * D. G. BEAUSANG. 87/01/06.
  25. * P. C. SMITH. 87/12/01.
  26. SPACE 4,15
  27. *** *PACKER* PERFORMS PERIODIC MAINTENANCE ON THE INDIRECT
  28. * ACCESS PERMANENT FILE (IAPF) CHAIN. THE PROCESS OF IAPF
  29. * HOLE FRAGMENTATION, OCCURRING DURING NORMAL IAPF ACTIVITY,
  30. * IS COUNTERED BY THE PERIODIC EXECUTION OF *PACKER*. ADJACENT
  31. * HOLES ARE COLLAPSED TOGETHER, FILES ARE MOVED TO MAXIMIZE
  32. * THE SIZE OF HOLES, AND LOST SPACE IS RECLAIMED IF POSSIBLE.
  33. * THE SPACE OCCUPIED BY THE ENLARGED HOLES IS RETURNED TO THE
  34. * OPERATING SYSTEM IF POSSIBLE. THE HOLES WHICH MAY REMAIN AT
  35. * THE END OF *PACKER* EXECUTION ARE LARGER AND MORE USEFUL TO
  36. * IAPF OPERATIONS.
  37. *
  38. * THE OPERATION OF *PACKER* NEVER LEAVES A DISK VULNERABLE.
  39. * *PACKER* DUPLICATES ANY FILE IT MOVES, AND CHANGES THE FILE
  40. * ADDRESS IN THE PFC WITH A SINGLE SECTOR REWRITE. IF A
  41. * MACHINE OR ENVIRONMENT FAILURE OCCURS, ALL IAPF FILES ARE
  42. * INTACT.
  43. SPACE 4,10
  44. *** *PACKER* MAY BE RUN IN AN ACTIVE SYSTEM ENVIRONMENT.
  45. * USER ACCESS TO THE DEVICE IS PREVENTED WHILE *PACKER* IS
  46. * RUNNING BY SETTING THE PF UTILITY ACTIVE INTERLOCK IN THE
  47. * MASS STORAGE TABLE. SINCE *PACKER* CAN BE RUN IN AN ACTIVE
  48. * SYSTEM, IT CAN BE USEFUL FOR DEALING WITH EMERGENCY
  49. * SITUATIONS WHERE A DEVICE IS GETTING FULL DURING
  50. * PRODUCTION. CONTIGUOUS HOLES CAN BE COMBINED QUICKLY BY
  51. * ENTERING
  52. *
  53. * PACKER(FM=NNNNNNN,DN=XX,NM)
  54. *
  55. * IF ANY HOLES MADE BY COALESCING CONTIGUOUS HOLES ARE LARGE
  56. * ENOUGH, TRACKS WILL BE MADE AVAILABLE THROUGH DELINKING.
  57. * THE REMAINING HOLES SHOULD BE MORE USEFUL DUE TO THEIR
  58. * INCREASED SIZE.
  59. *
  60. * FOR NORMAL PERIODIC MAINTENANCE, *PACKER* CAN BE RUN AT
  61. * A TIME WHEN THE PRODUCTION LOAD IS LIGHT AND/OR PRIMARILY
  62. * NOT INTERACTIVE. FOR EXAMPLE, A SITE MAY CHOOSE TO RUN
  63. * *PACKER* VIA THE FOLLOWING COMMAND AT 0230 LOCAL TIME EVERY
  64. * MORNING.
  65. *
  66. * PACKER(FM=NNNNNNN,DN=XX)
  67. *
  68. * IF A SITE DETERMINES THAT THIS IS TOO MUCH OF AN IMPACT ON
  69. * PRODUCTION, THEY MAY DECIDE TO RUN *PACKER* WITH THE ABOVE
  70. * COMMAND ONLY ON SUNDAY MORNINGS AND THE REST OF THE WEEK
  71. * THEY MAY NOT RUN *PACKER* AT ALL OR THEY MAY ONLY COMBINE
  72. * HOLES VIA THE FOLLOWING COMMAND.
  73. *
  74. * PACKER(FM=NNNNNNN,DN=XX,NM)
  75. *
  76. * HOW FREQUENTLY *PACKER* NEEDS TO BE RUN IS SITE
  77. * DEPENDENT. SITES WHICH ARE EXTREMELY LIMITED ON DISK SPACE
  78. * MAY NEED TO RUN *PACKER* MUCH MORE OFTEN THAN SITES WHICH
  79. * RUN *PACKER* ONLY TO PROVIDE DYNAMIC SPACE MANAGEMENT OF
  80. * THE IAPF CHAIN. THE DYNAMIC SPACE MANAGEMENT OF THE IAPF
  81. * CHAIN WHICH *PACKER* PROVIDES FREES A SITE FROM SPACE
  82. * MANAGEMENT VIA *PFDUMP* AND *PFLOAD*.
  83. *
  84. * A SINGLE CALL TO *PACKER* ONLY ACCESSES A SINGLE
  85. * DEVICE, BUT MULTIPLE COPIES OF *PACKER* MAY BE ACTIVE AT
  86. * THE SAME TIME IF EACH IS OPERATING ON A DIFFERENT DEVICE.
  87. *
  88. * TURNING ON SENSE SWITCH 1 WILL STOP *PACKER* IN A
  89. * CONTROLLED MANNER. AN OPERATOR DROP OR IDLE DOWN REQUEST
  90. * WILL ALSO TERMINATE *PACKER* IN A CONTROLLED MANNER. A
  91. * SECOND OPERATOR DROP OR IDLE DOWN REQUEST WILL TERMINATE
  92. * *PACKER* IMMEDIATELY.
  93. SPACE 4,10
  94. *** COMMAND FORMAT.
  95. SPACE 4,10
  96. *** PACKER (P1=F1,P2=F2,...,PN=FN)
  97. *
  98. * WHERE P1, P2, ... PN CAN BE THE FOLLOWING -
  99. *
  100. * DN = DEVICE NUMBER OF THE DEVICE TO BE PACKED. REQUIRED
  101. * UNLESS THE DEVICE IS AN AUXILIARY PACK.
  102. *
  103. * FM = FAMILY NAME OF THE DEVICE TO BE PACKED. REQUIRED
  104. * UNLESS THE DEVICE IS AN AUXILIARY PACK.
  105. * DEFAULT - SYSTEM DEFAULT FAMILY NAME.
  106. *
  107. * NM = NO MOVES. IF SPECIFIED, *PACKER* WILL NOT MOVE ANY
  108. * FILES. THE WORK PERFORMED IS LIMITED TO THE
  109. * COALESCING OF CONTIGUOUS HOLES AND THE RECLAMATION
  110. * OF LOST SPACE.
  111. * THIS PARAMETER MAY NOT BE EQUIVALENCED.
  112. *
  113. * PN = PACKNAME OF THE AUXILIARY PACK TO BE PACKED.
  114. * REQUIRED IF THE DEVICE TO BE PACKED IS AN AUXILIARY
  115. * PACK.
  116. *
  117. * TL = TIME LIMIT. THE MAXIMUM REAL TIME TO RUN IN
  118. * SECONDS. THE VALUE IS ASSUMED TO BE OCTAL. AN 8, 9
  119. * OR POST RADIX OF D WILL FORCE DECIMAL. A POST RADIX
  120. * OF B WILL FORCE OCTAL.
  121. * DEFAULT - NO LIMIT.
  122. * ALTERNATE DEFAULT - 300D.
  123. *
  124. * THE FOLLOWING COMMAND PARAMETERS ARE ESOTERIC AND NEED NOT BE
  125. * CONSIDERED FOR NORMAL OPERATION.
  126. *
  127. * EF = EXACT FIT. IF SPECIFIED, AN EXACT FIT IS REQUIRED
  128. * FOR FILL MOVES. USE OF THIS PARAMETER MAY INCREASE
  129. * THE NUMBER OF FILES MOVED VIA THE SLIDE TECHNIQUE
  130. * WHICH CAN RESULT IN MORE SPACE BEING RELEASED TO THE
  131. * OPERATING SYSTEM AT THE EXPENSE OF MOVING AN
  132. * INCREASED NUMBER OF FILES.
  133. * THIS PARAMETER MAY NOT BE EQUIVALENCED.
  134. *
  135. * IX = INDEX. THE STARTING INDEX INTO THE SORTED PFC
  136. * TABLE. THIS PARAMETER CAN BE USED TO SKIP THE
  137. * SPECIFIED NUMBER OF PFC ENTRIES BEFORE BEGINNING
  138. * OPERATION. IN SOME SITUATIONS THIS PROVIDES A
  139. * USEFUL METHOD OF SHORTENING THE EXECUTION TIME OF
  140. * *PACKER*. THE USE OF THIS PARAMETER IMPACTS THE END
  141. * OF RUN STATISTICS AS THEY DO NOT REFLECT THE PORTION
  142. * SKIPPED. THE VALUE IS ASSUMED TO BE OCTAL. AN 8, 9
  143. * OR POST RADIX OF D WILL FORCE DECIMAL. A POST RADIX
  144. * OF B WILL FORCE OCTAL.
  145. * DEFAULT - 0.
  146. *
  147. * MR = MOVE RATIO. THIS IS THE MAXIMUM RATIO ALLOWED OF
  148. * TOTAL DATA TO MOVE TO HOLE SIZE FOR A SLIDE MOVE.
  149. * BEFORE MOVING A FILE WITH THE SLIDE TECHNIQUE, THE
  150. * TOTAL AMOUNT OF DATA TO BE MOVED (THE SUM OF ALL THE
  151. * FILE LENGTHS UP TO THE NEXT HOLE IN THE IAPF CHAIN)
  152. * AND THE HOLE SIZE (THE HOLE THE FILE IS TO BE SLID
  153. * ACROSS) ARE COMPARED (THE TOTAL DATA IS DIVIDED BY
  154. * THE HOLE SIZE). IF THIS RATIO IS GREATER THAN OR
  155. * EQUAL TO THE *MOVE RATIO*, THEN THE FILE IS NOT
  156. * MOVED. A VALUE OF 0 WILL PREVENT ALL FILES FROM
  157. * BEING MOVED VIA THE SLIDE TECHNIQUE; HOWEVER,
  158. * IT IS RECOMMENDED THAT THE *NS* PARAMETER BE
  159. * USED RATHER THAN SPECIFYING *MR=0*. THE VALUE IS
  160. * ASSUMED TO BE OCTAL. AN 8, 9 OR POST RADIX OF D
  161. * WILL FORCE DECIMAL. A POST RADIX OF B WILL FORCE
  162. * OCTAL.
  163. * DEFAULT - 100B.
  164. * ALTERNATE DEFAULT - 377777B.
  165. *
  166. * NC = NO CHANGES. IF SPECIFIED, *PACKER* WILL NOT MAKE
  167. * ANY CHANGES TO THE DEVICE. THIS ALLOWS MULTIPLE
  168. * SCENARIOS TO BE RUN TO DETERMINE THE BEST
  169. * COMBINATION OF OPTIONS TO OBTAIN THE DESIRED
  170. * RESULTS. MOST DEVICE READS ARE PERFORMED EXCEPT
  171. * THOSE CONCERNING FILE COPIES. NO DEVICE WRITES ARE
  172. * PERFORMED.
  173. * THIS PARAMETER MAY NOT BE EQUIVALENCED.
  174. *
  175. * NF = NO FILL MOVES. IF SPECIFIED, *PACKER* WILL NOT MOVE
  176. * ANY FILES USING THE FILL MOVE TECHNIQUE. USE OF
  177. * THIS PARAMETER FORCES ALL FILES TO BE MOVED VIA THE
  178. * SLIDE TECHNIQUE. THIS CAN RESULT IN MORE SPACE
  179. * BEING RELEASED TO THE OPERATING SYSTEM AT THE
  180. * EXPENSE OF MOVING AN INCREASED NUMBER OF FILES.
  181. * THIS PARAMETER MAY NOT BE EQUIVALENCED.
  182. *
  183. * NP = NO PRE-MOVE DELINKS. IF SPECIFIED, *PACKER* WILL NOT
  184. * DELINK TRACKS PRIOR TO ATTEMPTING TO MOVE FILES.
  185. * DELINKING TRACKS PRIOR TO MOVING FILES LIMITS THE
  186. * SIZE TO WHICH THE COLLECTION HOLE IS ALLOWED TO
  187. * GROW. THIS LIMITS THE AMOUNT OF DATA (FILES) MOVED
  188. * BY *PACKER* IN ITS ATTEMPTS TO FILL THE COLLECTION
  189. * HOLE. THESE DELINKS MAY SHORTEN THE TIME *PACKER*
  190. * EXECUTES AT THE EXPENSE OF POSSIBLY LEAVING SMALL
  191. * HOLES AT THE POINT WHERE TRACK(S) WERE DELINKED.
  192. * THIS PARAMETER DOES NOT AFFECT THE DELINKING OF
  193. * TRACKS FROM HOLES WHICH REMAIN AFTER *PACKER* HAS
  194. * COMPLETED ITS WORK.
  195. * THIS PARAMETER MAY NOT BE EQUIVALENCED.
  196. *
  197. * NS = NO SLIDE MOVES. IF SPECIFIED, *PACKER* WILL NOT
  198. * MOVE ANY FILES USING SLIDE MOVE TECHNIQUE. THIS MAY
  199. * INCREASE THE SPEED OF *PACKER* EXECUTION BY LEAVING
  200. * MORE HOLES UNFILLED. IT IS USUALLY BETTER TO USE
  201. * THE *MR* PARAMETER TO CONTROL THE SLIDE MOVE. THE
  202. * ONLY EXCEPTION IS THAT IT IS BETTER TO SPECIFY *NS*
  203. * THAN *MR=0* AS (FOR VERY ESOTERIC REASONS) *MR=0*
  204. * MAY ALSO DISABLE A TYPE OF LOST SPACE RECLAMATION.
  205. * THIS PARAMETER MAY NOT BE EQUIVALENCED.
  206. SPACE 4,10
  207. ** DEBUGGING COMMAND OPTIONS.
  208. *
  209. * THE FOLLOWING OPTIONS ARE PROVIDED FOR DEBUGGING PURPOSES
  210. * ONLY.
  211. *
  212. * DEBUG = OCTAL VALUE, EACH BIT SPECIFYING A DEBUGGING OPTION
  213. * TO BE ACTIVATED.
  214. * BIT - OPTION
  215. * 0 - CALL *CEO* IN THE MAIN LOOP.
  216. * 1 - ACTIVATE RJ TRACE.
  217. * DEFAULT - 0 (ALL DEBUG OPTIONS OFF).
  218. * ALTERNATE DEFAULT - 377777B (ALL DEBUG OPTIONS ON).
  219. SPACE 4,10
  220. *** OPERATIONAL OVERVIEW.
  221. *
  222. * *PACKER* SCANS THE DEVICE-S CATALOG TRACKS AND BUILDS A
  223. * SET OF TABLES WHICH ALLOWS IT TO OPERATE ON THE IAPF CHAIN
  224. * IN SEQUENTIAL ORDER. AS *PACKER* SCANS THE IAPF CHAIN IT
  225. * PERFORMS FUNCTIONS DEPENDING ON THE ITEMS ENCOUNTERED.
  226. *
  227. * LOST SPACE IS A CONDITION WHERE SPACE EXISTS ON THE
  228. * IAPF CHAIN WHICH IS NOT POINTED TO BY A PFC ENTRY. WITHOUT
  229. * A PFC ENTRY *PFM* IS UNAWARE OF THE SPACE; THUS THE NAME,
  230. * LOST SPACE. IF THE LOST SPACE IS PRECEDED OR FOLLOWED BY A
  231. * HOLE, *PACKER* WILL MERGE THE LOST SPACE WITH ONE OF THE
  232. * HOLES. IF THE LOST SPACE IS PRECEDED BY A FILE AND NOT
  233. * FOLLOWED BY A HOLE, *PACKER* WILL CREATE A NEW PFC ENTRY
  234. * FOR THE LOST SPACE, TRANSFORMING IT INTO A NORMAL IAPF
  235. * HOLE. IF THE LOST SPACE IS SMALLER THAN THE ABSOLUTE
  236. * MINIMUM IAPF HOLE SIZE OF THREE PRU-S, THE LOST SPACE CAN
  237. * NOT BE RECLAIMED AND IS LEFT AS LOST SPACE.
  238. *
  239. * A FILE IS CHECKED TO SEE IF IT HAS THE CORRECT LENGTH.
  240. *
  241. * A HOLE STARTS A SEQUENCE OF EVENTS. THE HOLE IS TURNED
  242. * INTO THE COLLECTION HOLE. THE COLLECTION HOLE IS THE FOCAL
  243. * POINT OF THE MAJOR OPERATIONS OF COMBINING HOLES AND MOVING
  244. * FILES. THE PFC POINTING TO THE COLLECTION HOLE IS CHANGED
  245. * INTO A PURGED DIRECT ACCESS PERMANENT FILE (DAPF) PFC.
  246. * THIS PFC WILL BE CHANGED BACK INTO AN IAPF PFC POINTING TO
  247. * THE HOLE WHEN THE COLLECTION HOLE IS CHANGED BACK INTO A
  248. * NORMAL HOLE. UNTIL THAT OCCURS, THE COLLECTION HOLE IS
  249. * LOST SPACE. *PACKER* USES THIS TO PROVIDE FOR A SYSTEM
  250. * FAILURE DURING *PACKER* OPERATION. THE SYSTEM WILL BE
  251. * UNAWARE OF THE CHANGES *PACKER* WAS MAKING, ALL FILES WILL
  252. * BE INTACT, AND THE LOST SPACE WILL BE RECOVERED THE NEXT
  253. * TIME *PACKER* IS RUN. THE FOLLOWING SEQUENCE WILL BE
  254. * REPEATED UNTIL THE COLLECTION HOLE IS CLOSED.
  255. *
  256. * ANY HOLES FOLLOWING THE COLLECTION HOLE HAVE THEIR PFC-S
  257. * CHANGED INTO PURGED DAPF PFC-S AND THEIR SPACE IS ADDED TO
  258. * THE COLLECTION HOLE. THIS COLLAPSING OF CONTIGUOUS HOLES IS
  259. * CONTINUED UNTIL A FILE IS ENCOUNTERED.
  260. *
  261. * WHEN A FILE IS ENCOUNTERED A CHECK IS MADE TO SEE IF THE
  262. * COLLECTION HOLE IS BIG ENOUGH FOR TRACKS TO BE DELINKED FROM
  263. * IT. IF SO, TRACKS ARE DELINKED AND RETURNED TO THE SYSTEM.
  264. * AN IMPORTANT EFFECT OF THIS PREMOVE DELINKING IS THAT IT
  265. * LIMITS THE AMOUNT OF DATA (FILES) THAT ARE MOVED BY LIMITING
  266. * THE SIZE OF THE COLLECTION HOLE.
  267. *
  268. * NEXT A SCAN IS MADE STARTING FROM THE END OF THE IAPF
  269. * CHAIN TO THE CURRENT POSITION, LOOKING FOR THE LARGEST FILE
  270. * WHICH WILL FIT INTO THE COLLECTION HOLE. IF SUCH A FILE IS
  271. * FOUND IT WILL BE COPIED TO THE BEGINNING OF THE COLLECTION
  272. * HOLE AND ITS PFC WILL BE UPDATED TO POINT TO THE NEW
  273. * POSITION. THEN THE COLLECTION HOLE-S STARTING ADDRESS AND
  274. * LENGTH IS UPDATED. THIS IS THE JUMP FILL MOVE TECHNIQUE. IF
  275. * THE COLLECTION HOLE WAS COMPETELY FILLED, IT IS CONSIDERED
  276. * CLOSED AND THE SCAN STARTS OVER. IF THE MOVE WAS SUCCESSFUL,
  277. * IT IS REPEATED UNTIL NO FURTHER FILES CAN BE MOVED VIA THE
  278. * FILL TECHNIQUE.
  279. *
  280. * NEXT, THE FILE ADJACENT TO THE COLLECTION HOLE (WHICH WAS
  281. * EXCLUDED FROM THE FILL SEARCH) IS EXAMINED TO SEE IF IT CAN
  282. * BE SLID ACROSS THE COLLECTION HOLE. THE FILE MUST COMPLETELY
  283. * FIT WITHIN THE COLLECTION HOLE, FOR THE FILE WOULD BE
  284. * DESTROYED IF THE FILE WAS COPIED ON TOP OF ITSELF AND THE
  285. * SYSTEM FAILED DURING THE COPY. THE SIZES OF ALL THE FILES
  286. * UNTIL THE NEXT HOLE ARE EXAMINED TO ENSURE THEY ALL WILL
  287. * FIT IN THE COLLECTION HOLE (IF ANY DO NOT FIT THE EFFECT OF
  288. * THE MOVES WOULD ONLY BE TO MOVE THE POSITION OF THE HOLE,
  289. * WHICH IN ITSELF IS OF NO BENEFIT). IF ALL THE FILES FIT,
  290. * THEY ARE COPIED, ONE BY ONE, ACROSS THE COLLECTION HOLE, AND
  291. * THE ADDRESS OF THE COLLECTION HOLE IS UPDATED. THIS IS THE
  292. * SLIDE MOVE TECHNIQUE. THE SCAN THEN CONTINUES WITH THE
  293. * COLLAPSING OF THE NEWLY ADJACENT HOLE. IF THE FILES DO NOT
  294. * FIT, THE COLLECTION HOLE IS CLOSED AND SCAN CONTINUES.
  295. *
  296. * WHEN THE END OF THE IAPF CHAIN IS ENCOUNTERED THE SCAN
  297. * TERMINATES. IF THE COLLECTION HOLE IS OPEN, IT IS DROPPED
  298. * OFF THE THE END OF THE IAPF CHAIN BY ADJUSTING THE EOI.
  299. SPACE 4,10
  300. ** THE PP HELPER PROGRAM *MPF* IS CALLED TO DO
  301. * THE FOLLOWING -
  302. * 1. DROP TRACKS FROM IAPF CHAIN.
  303. * 2. REWRITE END OF INFORMATION FOR FILE COPY.
  304. * 3. DELINK TRACKS FROM IAPF CHAIN.
  305. * 4. READ SYSTEM SECTOR.
  306. * 5. WRITE SYSTEM SECTOR.
  307. * 6. RETURN FST FOR OVERFLOW CATALOG TRACK.
  308. * 7. REWRITE CATALOG TRACK SECTOR.
  309. SPACE 4,10
  310. ** THE PF UTILITY PP ROUTINE *PFU* IS CALLED TO DO
  311. * THE FOLLOWING -
  312. * 1. SET PF UTILITY DEVICE INTERLOCK.
  313. * 2. CLEAR PF UTILITY INTERLOCK.
  314. * 3. REWIND CATALOG FILE.
  315. * 4. OPEN CATALOG / DATA FILE.
  316. * 5. ADVANCE CATALOG TRACK.
  317. SPACE 4,10
  318. *** TERMINATION DAYFILE MESSAGES (SYSTEM AND LOCAL DAYFILE).
  319. *
  320. * * PACKER COMPLETE.*
  321. * *PACKER* TERMINATED NORMALLY.
  322. *
  323. * * PACKER ABORTED.*
  324. * *PACKER* TERMINATED ABNORMALLY.
  325. *
  326. * * REAL TIME DURATION TERMINATION.*
  327. * THE MAXIMUN REAL TIME ALLOWED FOR *PACKER* TO EXECUTE
  328. * HAS BEEN EXCEEDED.
  329. *
  330. * * SENSE SWITCH ONE TERMINATION.*
  331. * *PACKER* HAS DETECTED A TERMINATION REQUEST VIA
  332. * SENCE SWITCH ONE.
  333. SPACE 4,10
  334. *** STATISTICAL DAYFILE MESSAGES (SYSTEM AND LOCAL DAYFILE).
  335. *
  336. * *PACKER* STATISTICS (BELOW) REFLECT THE CONDITION OF THE
  337. * PORTION OF THE IAPF CHAIN WHICH *PACKER* HAS PROCESSED.
  338. *
  339. * * ONSET FILES NNNNNN, SSSSSS PRUS.*
  340. * *PACKER* STATISTICS.
  341. * NNNNNN - NUMBER OF FILES AT *PACKER* ONSET.
  342. * SSSSSS - TOTAL SECTORS OCCUPIED BY FILES AT *PACKER*
  343. * ONSET.
  344. *
  345. * * ONSET HOLES NNNNNN, SSSSSS PRUS.*
  346. * *PACKER* STATISTICS.
  347. * NNNNNN - NUMBER OF HOLES AT *PACKER* ONSET.
  348. * SSSSSS - TOTAL SECTORS OCCUPIED BY HOLES AT *PACKER*
  349. * ONSET.
  350. *
  351. * * FILL MOVES NNNNNN, SSSSSS PRUS.*
  352. * *PACKER* STATISTICS.
  353. * NNNNNN - NUMBER OF FILES JUMP FILLED INTO HOLES.
  354. * SSSSSS - TOTAL SECTORS JUMP MOVED.
  355. *
  356. * * SLIDE MOVES NNNNNN, SSSSSS PRUS.*
  357. * *PACKER* STATISTICS.
  358. * NNNNNN - NUMBER OF FILES SLID INTO HOLES.
  359. * SSSSSS - TOTAL SECTORS SLID.
  360. *
  361. * * FILES MOVED NNNNNN, SSSSSS PRUS.*
  362. * *PACKER* STATISTICS.
  363. * NNNNNN - NUMBER OF FILES MOVED.
  364. * SSSSSS - TOTAL SECTORS MOVED.
  365. *
  366. * * LOST SPACE NNNNNN, SSSSSS PRUS.*
  367. * *PACKER* STATISTICS.
  368. * NNNNNN - NUMBER OF HOLES WITHOUT CATALOG ENTRIES.
  369. * SSSSSS - TOTAL SECTORS W/O CATALOG HOLE ENTRIES.
  370. * THIS MESSAGE INDICATES THE AMOUNT OF LOST
  371. * SPACE WHICH *PACKER* WAS UNABLE TO RECLAIM.
  372. * IT REMAINS UNKNOWN TO *PFM*. IT MAY BE
  373. * RECLAIMED ON A FUTURE *PACKER* RUN AFTER
  374. * PRODUCTION HAS CHANGED THE MAKEUP OF THE
  375. * IAPF CHAIN. (SYSTEM AND EOI SECTORS ARE
  376. * NOT REMOVED FROM THIS TOTAL, SINCE LOST SPACE
  377. * CAN BE LESS THAN THREE SECTORS).
  378. *
  379. * * HOLES LEFT NNNNNN, SSSSSS PRUS.*
  380. * *PACKER* STATISTICS.
  381. * NNNNNN - NUMBER OF HOLES WITH CATALOG ENTRIES.
  382. * SSSSSS - TOTAL SECTORS WITH CATALOG HOLE ENTRIES.
  383. *
  384. * * HOLES FREED NNNNNN, SSSSSS PRUS.*
  385. * *PACKER* STATISTICS.
  386. * NNNNNN - NUMBER OF CATALOG ENTRIES FREED.
  387. * SSSSSS - SECTORS REMOVED FROM THE IAPF CHAIN. THIS
  388. * IS THE NUMBER OF SECTORS GAINED WHEN VIEWING
  389. * THE IAPF CHAIN AS A SEQUENCE OF SECTORS,
  390. * IGNORING THE EFFECTS OF TRACK BOUNDARIES.
  391. *
  392. * * TRACKS FREED NNNNNN, SSSSSS PRUS.*
  393. * *PACKER* STATISTICS.
  394. * NNNNNN - NUMBER OF TRACKS DELINKED OR DROPPED.
  395. * SSSSSS - SECTORS RETURNED TO THE SYSTEM VIA TRACK
  396. * DELINKS OR TRACK DROPS.
  397. *
  398. * * FLAW SPACE NNNNNN, SSSSSS PRUS.*
  399. * *PACKER* STATISTICS.
  400. * NNNNNN - NUMBER OF IAPF FLAW FILES ENCOUNTERED.
  401. * SSSSSS - SECTORS OCCUPIED BY IAPF FLAW FILES.
  402. * IAPF FLAWS ARE FILES WITH UI=IFUI. THEY MAY
  403. * RESIDE ON ANY IAPF DEVICE REGARDLESS OF THE
  404. * DEVICE MASK.
  405. *
  406. * *PACKER* RESOURCE UTILIZATION SUMMARY (BELOW) REFLECTS THE
  407. * RESOURCES USED BY *PACKER*.
  408. *
  409. * * SRUS 23456.890 UNTS.*
  410. * * CPU SECONDS 23456.890 SECS.*
  411. * * MAXIMUM CM FL 234567890 SCM.*
  412. * * MANAGED TABLE MOVES 234567890 UNTS.*
  413. SPACE 4,10
  414. *** EXTERNAL ABORT DAYFILE MESSAGES (SYSTEM AND LOCAL DAYFILE).
  415. *
  416. * *REPRIEVE PROCESSING BEGUN.*
  417. * *PACKER* HAS BEGUN REPRIEVE PROCESSING.
  418. *
  419. * *REPRIEVE PROCESSING COMPLETE.*
  420. * *PACKER* HAS COMPLETED REPRIEVE PROCESSING.
  421. *
  422. * *STATISTICS MAY NOT BE ACCURATE.*
  423. * *PACKER* IS ISSUING STATISTICAL MESSAGES DURING
  424. * REPRIEVE OR ERROR RECOVERY PROCESSING. SINCE NORMAL
  425. * PROCESSING HAS BEEN INTERRUPTED, THE INFORMATION MAY
  426. * NOT BE ACCURATE.
  427. *
  428. * WHEN AN ERROR FLAG IS SET AT *PACKER*-S CONTROL POINT, THE
  429. * CORRESPONDING MESSAGE (BELOW) IS ISSUED AND REPRIEVE
  430. * PROCESSING IS BEGUN.
  431. *
  432. * *USER BREAK ONE.*
  433. * *USER BREAK TWO.*
  434. * *ARITHMETIC ERROR.*
  435. * *SCP INVALID TRANSFER ADDRESS.*
  436. * *PROGRAM STOP ERROR.*
  437. * *PPU ABORT.*
  438. * *CPU ABORT.*
  439. * *PPU CALL ERROR.*
  440. * *COMMAND LIMIT.*
  441. * *MESSAGE LIMIT.*
  442. * *TIME LIMIT ERROR.*
  443. * *FILE LIMIT ERROR.*
  444. * *TRACK LIMIT ERROR.*
  445. * *SRU LIMIT ERROR.*
  446. * *FORCED ERROR.*
  447. * *JOB HUNG IN AUTORECALL.*
  448. * *OPERATOR DROP.*
  449. * *IDLE DOWN.*
  450. * *SUSPENSION TIMEOUT.*
  451. * *ECS PARITY ERROR.*
  452. * *SUBSYSTEM RECOVERED DURING LEVEL 3 DEADSTART.*
  453. * *SUBSYSTEM ABORTED.*
  454. * *OPERATOR RERUN.*
  455. * *OPERATOR KILL.*
  456. * *DEADSTART RERUN.*
  457. * *RECOVERY ABORT.*
  458. * *JOB STEP ABORT.*
  459. * *SECURITY VIOLATION.*
  460. * *SYSTEM ABORT.*
  461. * *CPU OR CM PARITY ERROR.*
  462. * *SOFTWARE ERROR ABORT.*
  463. * *OVERRIDE OF ERROR CONDITION.*
  464. SPACE 4,10
  465. *** ERROR MESSAGES (SYSTEM AND LOCAL DAYFILE).
  466. *
  467. * * CATALOG FST CURRENT SECTOR .NE. ZERO.*
  468. * OVERFLOW PROCESSING REQUIRES CATALOG TRACKS TO
  469. * CONTAIN THE FULL NUMBER OF SECTORS PER TRACK.
  470. *
  471. * * DISK ADDRESS NOT ON CHAIN.*
  472. * THE TRACK AND SECTOR SPECIFIED IN THE CATALOG ENTRY
  473. * WAS NOT ON THE IAPF CHAIN. ABORT WITH DUMP.
  474. *
  475. * * ENTRY OVERLAP TTTT/SSSS/O, TTTT/SSSS/O.*
  476. * *PACKER* HAS DETECTED AN IAPF CHAIN OVERLAP BETWEEN
  477. * THE TWO ENTRIES WHOSE PFC LOCATIONS ARE GIVEN
  478. * (TRACK/SECTOR/ PFC ORDINAL).
  479. * NOTE - A VALUE OF 0000/0000/0 IN THE MESSAGE
  480. * INDICATES THE IAPF CHAIN EOI.
  481. *
  482. * * FAMILY NOT FOUND.*
  483. * THE FAMILY DEVICE REQUESTED WAS AN AUXILIARY DEVICE.
  484. * ABORT WITH DUMP.
  485. *
  486. * * FILE OVERLAP TTTT/SSSS/O, TTTT/SSSS/O.*
  487. * THE FILE LENGTH FROM THE CATALOG ENTRY OVERLAPS THE
  488. * NEXT FILE/HOLE. ABORT WITH DUMP. THE TWO PFC
  489. * LOCATIONS ARE GIVEN (TRACK/SECTOR/PFC ORDINAL).
  490. *
  491. * * FILE LENGTH ERROR TTTT/SSSS/O.*
  492. * DURING A FILE COPY, THE AMOUNT OF DATA READ DOES NOT
  493. * MATCH THE FILE LENGTH IN THE PFC. ABORT WITH DUMP.
  494. * TTTT/SSSS/O IS THE TRACK/SECTOR/PFC ORDINAL OF THE
  495. * FILE-S PFC ENTRY.
  496. *
  497. * * IAPF CHAIN OVERLAP.*
  498. * *PACKER* HAS DETECTED ENTRY OVERLAPS ON THE IAPF
  499. * CHAIN BEFORE ANY CHANGES HAVE BEEN MADE. *PACKER*
  500. * WILL NOT ATTEMPT TO PACK A CORRUPT IAPF CHAIN.
  501. *
  502. * * INCORRECT ARGUMENT.*
  503. * ERROR IN COMMAND PARAMETER.
  504. *
  505. * * INCORRECT DEVICE/FAMILY.*
  506. * THE DEVICE SPECIFIED BY THE *DN* AND THE *FM*/*PN*
  507. * PARAMETERS COULD NOT BE FOUND OR WAS OFF, UNLOADED
  508. * OR PF UTILITY ACTIVE. ABORT WITH DUMP.
  509. *
  510. * * INTERNAL ERROR, ...*
  511. * *PACKER* HAS ENCOUNTERED A CONDITION WHICH IT CANNOT
  512. * HANDLE. THIS MAY BE DUE TO AN INTERNAL ERROR OR TO
  513. * EXTERNAL PROBLEMS. *PACKER* ABORTS, WITH ITS
  514. * REASONS, TO PREVENT CAUSING PROBLEMS OR MAKING A BAD
  515. * SITUATION WORSE.
  516. *
  517. * * NOT A MASTER DEVICE.*
  518. * THE DEVICE REQUESTED DID NOT CONTAIN PF CATALOGS
  519. * (DEVICE MASK = 0). ABORT WITH DUMP.
  520. *
  521. * * PACKNAME NOT FOUND.*
  522. * THE PACK REQUESTED WAS A FAMILY DEVICE.
  523. * ABORT WITH DUMP.
  524. *
  525. * * PARAMETER XX ARGUMENT ERROR.*
  526. * ERROR IN THE SPECIFICATION OF PARAMETER XX.
  527. *
  528. * * RSA NOT ON CHAIN.*
  529. * THE RANDOM ADDRESS IN A CATALOG ENTRY IS NOT IN THE
  530. * IAPF CHAIN. ABORT WITH DUMP.
  531. *
  532. * * TABLE OVERFLOW, UNABLE TO OBTAIN REQUIRED MEMORY.*
  533. * THE TABLE OVERFLOW PROCESSOR WAS UNABLE TO OBTAIN
  534. * ENOUGH MEMORY TO BUILD THE REQUIRED TABLES. MAKE SURE
  535. * THAT THE JOB HAS UNLIMITED CM VALIDATION.
  536. *
  537. * * TFHL TABLE DEACTIVATED.*
  538. * THE *TFHL* TABLE WAS DEACTIVATED DUE TO MEMORY
  539. * CONSTRAINTS. THE FILL MOVE TECHNIQUE IS NOT USED
  540. * WHEN THE *TFHL* TABLE IS INACTIVE. THE PROCESSING
  541. * TIME OF *PACKER* MAY INCREASE WHEN THE *TFHL* TABLE IS
  542. * INACTIVE.
  543. *
  544. * * TOO MANY OVERFLOW CATALOG TRACKS.*
  545. * THE FIELD WIDTH ALLOTTED FOR THE CATALOG TRACK INDEX
  546. * IN THE *TFRI* TABLE ENTRIES HAS BEEN EXCEEDED.
  547. * *PACKER* IS UNABLE TO PROCESS THE DEVICE.
  548. SPACE 4,10
  549. *** B DISPLAY MESSAGES.
  550. *
  551. * *CHECKING ENTRY OVERLAP.*
  552. * INFORMATIVE STATUS MESSAGE.
  553. *
  554. * *COGITATING.*
  555. * INFORMATIVE STATUS MESSAGE.
  556. *
  557. * *CREATING CATALOG TRACK TABLES.*
  558. * INFORMATIVE STATUS MESSAGE.
  559. *
  560. * *CREATING RANDOM ADDRESSES.*
  561. * INFORMATIVE STATUS MESSAGE.
  562. *
  563. * *CREATING TRACK RESERVATION TABLE.*
  564. * INFORMATIVE STATUS MESSAGE.
  565. *
  566. * *INTERCHANGING HOLE-FILE*
  567. * INFORMATIVE STATUS MESSAGE.
  568. *
  569. * *PURGING CONTIGUOUS HOLES.*
  570. * INFORMATIVE STATUS MESSAGE.
  571. SPACE 4,10
  572. *** *K* DISPLAY.
  573. *
  574. * AN INFORMATIVE *K* DISPLAY IS AVAILABLE. IT IS PROVIDED
  575. * TO ALLOW AN ANALYST TO OBSERVE *PACKER*-S STATE DURING
  576. * EXCEPTIONAL CIRCUMSTANCES. ACTIVATION OF THE *K* DISPLAY IS
  577. * BY SIMPLY ASSIGNING THE *K* DISPLAY DURING EXECUTION.
  578. SPACE 4,10
  579. *** FILES USED.
  580. *
  581. * C CATALOG TRACK FILE.
  582. *
  583. * I IAPF CHAIN INPUT FILE.
  584. *
  585. * O IAPF CHAIN OUTPUT FILE.
  586. *
  587. * OUTPUT ENSURE DUMPS ARE NOT LOST VIA *SSST* ID.
  588. *
  589. * ZZZZDMB ENSURE DUMPS ARE NOT LOST VIA *SSST* ID.
  590. TITLE COMMON DECKS.
  591. SPACE 4,10
  592. * COMMON DECKS.
  593.  
  594.  
  595. *CALL COMCMAC
  596. *CALL COMCCMD
  597. *CALL COMCDCM
  598. *CALL COMCMTM
  599. *CALL COMSLFD
  600. *CALL COMSPFM
  601. *CALL COMSPFU
  602. *CALL COMSRPV
  603. *CALL COMSSSD
  604. *CALL COMSSSJ
  605. TITLE MACRO DEFINITIONS.
  606. ABSREAD SPACE 4,10
  607. ** ABSREAD - READ ABSOLUTE CENTRAL MEMORY.
  608. *
  609. * ABSREAD FWA,BUF,N
  610. *
  611. * FWA = FIRST WORD ADDRESS TO READ.
  612. * BUF = ADDRESS OF BUFFER TO READ TO.
  613. * N = NUMBER OF WORDS TO READ (DEFAULT IS 1).
  614. *
  615. * IF *BUF* IS NOT SPECIFIED, ONE WORD IS READ TO (X6).
  616. *
  617. * USES X - 1, 6.
  618. * A - 1, 6.
  619. *
  620. * MACROS SYSTEM.
  621. *
  622. * NOTE THIS MACRO DEFINES AND USES THE LOCATIONS
  623. * *ABSBUF* AND *ABSPAR*.
  624.  
  625.  
  626. PURGMAC ABSREAD
  627.  
  628. ABSREAD MACRO FWA,BUF,N
  629. MX6 12
  630. IFC EQ,$BUF$$,1
  631. R= A6,=SABSBUF
  632. IFC NE,$BUF$$,1
  633. R= A6,BUF
  634. R= X1,FWA
  635. LX1 18
  636. SX6 A6
  637. BX6 X6+X1
  638. IFC EQ,$N$$,1
  639. R= X1,1
  640. IFC NE,$N$$,1
  641. R= X1,N
  642. IFC EQ,$BUF$$,1
  643. R= X1,1
  644. LX1 36
  645. BX6 X6+X1
  646. SX1 =SABSPAR
  647. SA6 X1
  648. SYSTEM RSB,R,X1
  649. IFC EQ,$BUF$$,2
  650. SA1 =SABSBUF
  651. BX6 X1
  652. ABSREAD ENDM
  653. RJ SPACE 4,10
  654. ** REDEFINE THE RJ INSTRUCTION TO PROVIDE RJ TRACE CAPABILITY.
  655. *
  656. * IF RJ TRACING IS REQUESTED FOR ROUTINE SUB, THEN THE RJ
  657. * INSTRUCTION
  658. * RJ SUB CALL SUBROUTINE SUB
  659. * WILL GENERATE CODE OF THE FORM
  660. * + RJ SUB
  661. * - RJ RJT
  662. * WHERE *SUB* IS THE SUBROUTINE SPECIFIED ON THE RJ INSTRUCTION
  663. * AND *RJT* IS THE RJ TRACE SUBROUTINE. IF RJ TRACE IS ENABLED
  664. * INSTRUCTION MODIFICATION REVERSES THE ORDER OF THE RJ-S,
  665. * CALLING THE RJ TRACE SUBROUTINE WHICH IN TURN CALLS THE
  666. * SUBROUTINE SPECIFIED ON THE RJ INSTRUCTION. SJ (SUBROUTINE
  667. * JUMP) IS DEFINED TO PROVIDE A NORMAL RJ INSTRUCTION.
  668. *
  669. * CODE WITH THE QUAL *RPV* IS EXCLUDED FROM THE RJ TRACE SINCE
  670. * IT COULD INVALIDATE REPRIEVE INTERRUPT RESUMPTION. CODE WITH
  671. * THE QUAL *RJT* IS EXCLUDED SINCE THAT WOULD BE RECURSIVE.
  672. * CODE WITH THE QUAL *PRS* IS EXCLUDED SINCE NO PROVISION
  673. * EXISTS TO REMOVE ENTRIES FROM THE TABLE WHICH DO NOT EXIST
  674. * AFTER PRESET. CALLS TO *RJT* ARE EXCLUDED SINCE THEY WOULD
  675. * BE RECURSIVE.
  676.  
  677. SJQ CPSYN RJQ
  678.  
  679. PURGDEF RJQ
  680.  
  681. PURGMAC RJ
  682.  
  683. RJQ OPDEF W
  684. LOCAL T,LA,LB,LC,LD,LF,LG
  685. LA MICRO 1,, W
  686. LB MICRO 1,1, "LA"
  687. LC MICCNT LA
  688. * REMOVE /QUAL/
  689. RJTA IFC EQ, "LB" /
  690. LG SET 1
  691. RJTB DUP LC-1
  692. LG SET LG+1
  693. LF MICRO LG,1, "LA"
  694. IFC EQ, "LF" / ,1
  695. STOPDUP
  696. RJTB ENDD
  697. RJTC IFC EQ, "LF" /
  698. LG SET LG+1
  699. RJTC IFLT LG,LC
  700. LA MICRO LG,, "LA"
  701. LB MICRO 1,1, "LA"
  702. LC MICCNT LA
  703. RJTC ENDIF
  704. RJTA ENDIF
  705. * REMOVE =S, =X, =Y
  706. LD MICRO 1,2, "LA"
  707. RJTA IFC NE, "LD" =S
  708. RJTA IFC NE, "LD" =X
  709. RJTA IFC NE, "LD" =Y
  710. RJTA ELSE
  711. LA MICRO 3,, "LA"
  712. LB MICRO 1,1, "LA"
  713. LC MICCNT LA
  714. RJTA ENDIF
  715. * CHECK LENGTH, VALID SYMBOL, DEF AND EXCEPTIONS
  716. RJT IFLE LC,7
  717. RJT IFC GE, "LB" A
  718. RJT IFC LE, "LB" 9
  719. RJT IF DEF,"LA"_.
  720. RJT IFC NE, "QUAL" PRS
  721. RJT IFC NE, "QUAL" RJT
  722. RJT IFC NE, "QUAL" RPV
  723. RJT IFC NE, "LA" RJT
  724. MACREF "LA"_.
  725. + SJ W
  726. - SJ RJT
  727. T EQU *-1
  728. RJAT RMT
  729. + VFD 42/0L"LA",18/T W
  730. RJAT RMT
  731. RJT ELSE
  732. SJ W
  733. RJT ENDIF
  734. RJQ ENDM
  735. RJT SPACE 4,10
  736. ** RJT - DEFINE ROUTINES TO BE TRACED VIA RJ TRACE.
  737. *
  738. * RJT SUB RJ TRACE ROUTINE SUB
  739. * RJT ETC RJ TRACE ROUTINE ETC
  740.  
  741.  
  742. PURGMAC RJT
  743.  
  744. RJT MACRO W
  745. W_. EQU 0
  746. RJT ENDM
  747. SCIOF SPACE 4,10
  748. ** SCIOF - SET *CIO* FUNCTION IN FET.
  749. *
  750. * SCIOF FILE,C
  751. *
  752. * *SCIOF* SETS UP A CALL TO *CIO=* WITH THE *CIO* FUNCTION
  753. * CODE *C* ON THE FET *FILE*, AND REQUESTS THAT *CIO=* NOT
  754. * CALL *CIO*. THE CALLER MUST ENSURE THAT THE FET IS
  755. * COMPLETE BEFORE CALLING *SCIOF*.
  756. * THE RESULT IS INSERTING A *CIO* FUNCTION CODE IN THE
  757. * FET WITHOUT CALLING *CIO*. THIS IS THE SAME AS THE
  758. * * OPTION ON SOME *CIO* MACROS EXCEPT THAT THE FET
  759. * COMPLETE BIT IS NOT SET.
  760.  
  761.  
  762. PURGMAC SCIOF
  763.  
  764. SCIOF MACRO F,C
  765. MACREF SCIOF
  766. R= X2,F
  767. MX7 1
  768. BX2 X7+X2
  769. SX7 C
  770. RJ =XCIO=
  771. SCIOF ENDM
  772. VOID SPACE 4,10
  773. *** VOID - VOID THE STACK MACRO.
  774. *
  775. * THIS MACRO WILL CAUSE AN UNCONDITIONAL VOIDING OF THE
  776. * STACK TO OCCUR. IT IS PLACED AFTER ALL LOCATIONS WHICH
  777. * CONTAIN INSTRUCTIONS THAT PLUG CODE AND WHICH ARE NOT
  778. * NATURALLY FOLLOWED BY A RETURN JUMP.
  779.  
  780.  
  781. PURGMAC VOID
  782.  
  783. VOID MACRO
  784. MACREF VOID
  785. RJ *+1
  786. + EQ *+1S17
  787. - VFD 30/0LVOID.
  788. VOID ENDM
  789. TITLE DATA AND CONSTANTS.
  790. * ASSEMBLY CONSTANTS.
  791.  
  792. DBUFL EQU 6001B FILE TRANSFER BUFFER LENGTH
  793. CBUFL EQU 1001B CATALOG TRACK BUFFER LENGTH
  794. SBUFL EQU 1 SCRATCH FET BUFFER LENGTH
  795. MXCT EQU 377B MAXIMUM CATALOG TRACKS + 1 (*TFRI* LIMIT)
  796. CTSS EQU 10B ADDRESS OF PFC COPY IN SYSTEM SECTOR
  797. TRJHL EQU 1001B LENGTH OF RJ HISTORY TABLE
  798. ERRNG TRJHL-10D *TRJH* TABLE TOO SMALL
  799.  
  800. PAKVER MICRO 1,, 4.0 *PACKER* VERSION
  801. PAKLVL EQU "NOSLVL" *PACKER* RELEASE LEVEL
  802. PAKLVL DECMIC PAKLVL *PACKER* RELEASE LEVEL
  803. SPACE 4,10
  804. * RJ TRACE DEFINITIONS.
  805.  
  806. RJT AFM ATTEMPT FILL MOVE
  807. RJT ASM ATTEMPT SLIDE MOVE
  808. RJT ATD ATTEMPT TRACK DELINK
  809. RJT CEO CHECK ENTRY OVERLAP
  810. RJT CDF COPY DATA FOR FILE
  811. RJT CFL CHECK FILE LENGTH
  812. RJT CIP CLEAR IRRELEVANT PFC INFORMATION
  813. RJT CIT CLEAR INTERLOCKS
  814. RJT CRA CONVERT RANDOM ADDRESS
  815. RJT CTC CHECK TERMINATION CONDITIONS
  816. RJT CTE CREATE AND INSERT TABLE ENTRY
  817. RJT DLK DELINK TRACKS
  818. RJT DRP DROP TRACKS
  819. RJT DTE DELETE TABLE ENTRY
  820. RJT FLT FIND LAST TRACK
  821. RJT FPI FORMAT PFC INFORMATION
  822. RJT FRM FORMAT HOLES REMOVED STATISTIC MESSAGE
  823. RJT FSM FORMAT STATISTIC MESSAGE
  824. RJT MSG MESSAGE TO B DISPLAY (LINE ONE)
  825. RJT IOM ISSUE OVERLAP MESSAGE
  826. RJT IRS ISSUE RESOURCE SUMMARY TO DAYFILE
  827. RJT ISD ISSUE STATISTICS TO DAYFILE
  828. RJT ISM ISSUE STATISTIC MESSAGE
  829. RJT PCH PURGE CONTIGUOUS HOLES
  830. RJT RCE READ CATALOG ENTRY
  831. RJT RJA RJ TRACE ACTIVATION/DEACTIVATION
  832. RJT RLS RECLAIM LOST SPACE
  833. RJT RSS READ SYSTEM SECTOR
  834. RJT UFE UPDATE FILE ENTRY
  835. RJT UFF UPDATE FILL FILE ENTRY
  836. RJT UHE UPDATE HOLE ENTRY
  837. RJT UKD UPDATE *K* DISPLAY
  838. RJT USS UPDATE SYSTEM SECTOR
  839. RJT VHS VERIFY HOLE SIZE ADEQUATE FOR DELINK
  840. RJT WCE WRITE CATALOG ENTRY
  841. RJT ZWT ZERO WORD TERMINATE *TFRI* TABLE
  842.  
  843. RJT ADW ADD WORD TO MANAGED TABLE
  844. RJT AMU ACCUMULATE MEMORY USED
  845. RJT ATS ALLOCATE TABLE SPACE
  846. RJT CDD CONSTANT TO DECIMAL DISPLAY CONVERSION
  847. RJT CFD CONSTANT TO F10.3 CONVERSION
  848. RJT CIO= I/O FUNCTION PROCESSOR
  849. RJT COD CONSTANT TO OCTAL DISPLAY CODE CONVERSION
  850. RJT EQS EQUALITY SEARCH TABLE
  851. RJT LFM= LOCAL FILE MANAGER PROCESSOR
  852. RJT MES MASKED EQUALITY SEARCH TABLE
  853. RJT MSG= SEND MESSAGE
  854. RJT MTD MOVE TABLES DOWN
  855. RJT MTU MOVE TABLES UP
  856. RJT MVE= MOVE BLOCK OF DATA
  857. RJT MTD MOVE TABLES DOWN
  858. RJT PFU PERMANENT FILE UTILITY FUNCTION PROCESSOR
  859. RJT RSR RESTORE REGISTERS
  860. RJT SNM SET NAME IN MESSAGE
  861. RJT SVR SAVE ALL REGISTERS
  862. RJT SYS= PROCESS SYSTEM REQUEST
  863. RJT WNB= WAIT NOT BUSY
  864. RJT ZTB ZEROS TO BLANKS
  865. POINTER SPACE 4,10
  866. ** POINTER TABLE.
  867. *
  868. * THE POINTER TABLE MUST BE LOCATED AT FWA. THIS
  869. * PLACES IT IMMEDIATELY AFTER THE 5100 LOADER TABLE
  870. * WHICH ALLOWS IT TO BE LOCATED BY A DMB INTERPRETER.
  871.  
  872. ****
  873. DATA BSS 0 POINTER TABLE
  874. VFD 42/0LPOINTER,18/DATA
  875. VFD 42/0LRPVBLK,18/RPVA
  876. VFD 42/0LFTAB,18/FTAB
  877. VFD 42/0LFETS,18/C
  878. VFD 42/0LGLOBALS,18/PV
  879. CON 0 END OF TABLE
  880. ****
  881. SPACE 4,10
  882. * FETS AND STORAGE.
  883.  
  884. C RFILEB CBUF,CBUFL,FET=16D,RTP
  885. I RFILEB DBUF,DBUFL,FET=16D,RTP
  886. O RFILEB DBUF,DBUFL,FET=16D,RTP
  887. S BSS 0 SCRATCH FET
  888. FILEB SBUF,SBUFL,FET=10B,EPR
  889.  
  890. SSJ= BSS 0
  891. VFD 12/0,24/77777777B,12/60B,12/IRSI
  892. BSSZ SSJL-*+SSJ=
  893.  
  894. PV VFD 42/0LPAKVER,18/0L"PAKVER" *PACKER* VERSION
  895. VFD 42/0LPAKLVL,18/0L"PAKLVL" *PACKER* RELEASE LEVEL
  896. VFD 42/0LNOSLVL,18/0L"NOSLVL" NOS RELEASE LEVEL
  897. VFD 60/10L"DATE" DATE *PACKER* ASSEMBLED
  898. VFD 60/10L"TIME" TIME *PACKER* ASSEMBLED
  899. PD CON 0 PACKED DATE AND TIME
  900. DN CON 0 DEVICE NUMBER
  901. FM CON 0 FAMILY NAME
  902. PN CON 0 PACKNAME
  903. EQ CON -1 EST ORDINAL
  904. CC CON 0 CATALOG TRACK COUNT
  905. CN CON -1 CATALOG TRACK NUMBER
  906. HE CON 0 COLLECTION HOLE *TFRI* TABLE ENTRY (COPY)
  907. FE CON 0 SLIDE FILE *TFRI* TABLE ENTRY (COPY)
  908. IX CON 0 INDEX TO *TFRI* TABLE
  909. IF CON 0 PF UTILITY INTERLOCK FLAG
  910. FT CON 0 FIRST TRACK OF IAPF CHAIN
  911. SL CON 0 SECTORS/TRACK
  912. TL CON 0 TIME LIMIT
  913. CT CON 0 CURRENT TRACK
  914. ERRNZ CT-TL-1 LOCATIONS MUST BE CONTIGUOUS
  915. EI CON 0 RSA OF IAPF CHAIN EOI
  916. MR CON 0L100B MOVE RATIO
  917. DS CON 0 DROPPED TRACK STATISTICS
  918. HS CON 0 HOLES SKIPPED STATISTICS
  919. LS CON 0 LOST SPACE STATISTICS
  920. BF CON 0 COUNT OF TIMES BUFFER FILLED IN *CPY*
  921. HL CON 0 LENGTH OF HOLE
  922. FB CON 0 BEGINNING RSA OF FILE
  923. FS CON 0 FILE SIZE FROM CATALOG ENTRY + 1 FOR SS
  924. DM CON 0 DATA MOVED
  925. HR CON 0 HOLES REMOVED
  926. DF CON 0 DUMP REQUIRED FLAG
  927. RP CON 0 REPRIEVE ACTIVATED
  928. PC CON 0 PRESET COMPLETED
  929. LT CON 0 LENGTH TABLE ACTIVE
  930. HD CON 0 HOLES DELETED SINCE FL REDUCTION
  931. BD CON 0 HOLE SIZE BEFORE DELINK (FOR STATISTICS)
  932. AD CON 0 HOLE SIZE AFTER DELINK (FOR STATISTICS)
  933. CTIH CON 0 CURRENT TRACK IN HOLE
  934. HSIT CON 0 HOLE SIZE IN CURRENT TRACK
  935. LTIH CON 0 LAST TRACK IN HOLE
  936. NTIH CON 0 NUMBER OF TRACKS IN HOLE
  937. PTIH CON 0 PREVIOUS TRACK IN HOLE
  938. FW CON 0 IAPF FLAW SPACE STATISTICS
  939. ID CON 0 OPERATOR IDLE DOWN REQUEST
  940. FF CON 0 FILL FILL *TFRI* TABLE ENTRY (COPY)
  941. FX CON 0 FILL FILE INDEX TO *TFRI* TABLE
  942. EF CON 0 EXACT FIT REQUIRED ON FILL FILE MOVE
  943. NC CON 0 NO CHANGES ARE TO BE MADE TO THE DEVICE
  944. NM CON 0 NO DATA MOVE (NEITHER FILL NOR SLIDE)
  945. NF CON 0 NO FILL FILE DATA MOVE
  946. NS CON 0 NO SLIDE FILE DATA MOVE
  947. NP CON 0 NO PRE-MOVE TRACK DELINKS
  948. JM CON 0 JUMP FILL MOVES OF FILES (FOR STATISTICS)
  949. SM CON 0 SLIDE MOVES OF FILES (FOR STATISTICS)
  950. ES CON 0 END SRU-S
  951. SS CON 0 START SRU-S
  952. ET CON 0 END CPU TIME
  953. ST CON 0 START CPU TIME
  954. DB CON 0 DEBUG OPTIONS
  955. IS CON 0 INCOMPLETE/INACCURATE STATISTICS
  956. OF CON 0 FILES AT THE ONSET
  957. OH CON 0 HOLES AT THE ONSET
  958. HC CON 0 HOLES CREATED BY JUMP MOVE
  959. TITLE MANAGED TABLES.
  960. SPACE 4,10
  961. ** TRJH - RETURN JUMP HISTORY (DEBUG USE).
  962. *
  963. * *TRJH* CONTAINS A ONE WAY *CIO* BUFFER INTO WHICH RJ TRACE
  964. * VALUES ARE STORED. THE POINTERS *FIRST*, *IN*, *OUT*,
  965. * AND *LIMIT* ARE OFFSETS RELATIVE TO *F.TRJH*.
  966. *
  967. * *FIRST* IS 1.
  968. * *IN* IS STORED AT F.TRJH+0.
  969. * *OUT* DOES NOT EXIST (AS IT IS NOT USED).
  970. * *LIMIT* IS L.TRJH.
  971. *
  972. * THE TRACE GROUPS ARE COMPOSED OF THE FOLLOWING ENTRIES.
  973. *
  974. *T 30/ RJ CALLEE,30/ EQ CALLER
  975.  
  976.  
  977. TRJH TABLE
  978. SPACE 4,10
  979. ** TCAT - TABLE OF CATALOG TRACKS.
  980. *
  981. * FST ENTRIES FOR *PFU* OPEN FILE.
  982. *
  983. *T 12/ EQ ,12/ TRACK ,12/ TRACK ,12/,12/ 5
  984. *
  985. * EQ EST ORDINAL OF CATALOG TRACK.
  986. * TRACK LOGICAL TRACK NUMBER.
  987.  
  988.  
  989. TCAT TABLE
  990. SPACE 4,10
  991. ** TTRT - IMAGE OF DEVICE TRT
  992. *
  993. *T 60/ EXACT IMAGE OF DEVICE TRACK RESERVATION TABLE
  994. *
  995. * NOTE - THIS TABLE IS USED ONLY TO BUILD *TTLT*, AND IS
  996. * NOT USED AFTER PRESET.
  997.  
  998.  
  999. TTRT TABLE
  1000. SPACE 4,10
  1001. ** TTLT - TRACK LINK TABLE.
  1002. *
  1003. *T 48/ CALCULATED RSA,12/ TRACK LINK
  1004. *
  1005. * THE TABLE IS INDEXED BY TRACK NUMBER. THE RSA MAY NOT
  1006. * EXIST FOR ALL ENTRIES AS IT IS CALCULATED ONLY IF NEEDED.
  1007. *
  1008. * NOTE - THE RSA IS VALID ONLY DURING PRESET. IT IS NOT
  1009. * ADJUSTED WHEN TRACKS ARE DELINKED FROM THE IAPF CHAIN.
  1010.  
  1011.  
  1012. TTLT TABLE
  1013. TAPE SPACE 4,10
  1014. ** TAPE - TABLE OF AVAILABLE PFC ENTRIES.
  1015. *
  1016. *T 1/H,1/1,8/,8/ CT,15/ PRU,3/ P,24/
  1017. *
  1018. * H ALWAYS SET.
  1019. * 1 REQUIRED TO MAKE ALL VALID ENTRIES NON-ZERO.
  1020. * CT CATALOG TRACK NUMBER.
  1021. * PRU SECTOR WITHIN CATALOG TRACK.
  1022. * P 8-WORD PARCEL IN SECTOR.
  1023. *
  1024. * THESE ENTRIES INDICATE PFC-S WHICH MAY BE USED FOR HOLES
  1025. * CREATED BY FILL MOVES.
  1026.  
  1027.  
  1028. TAPE TABLE
  1029. SPACE 4,10
  1030. ** TFRI - TABLE OF FILE RANDOM INDEXES.
  1031. *
  1032. *T 1/H,1/1,1/I,7/,8/ CT,15/ PRU,3/ P,12/ TK,12/ SC
  1033. *
  1034. * H SET IF ENTRY IS FOR A HOLE.
  1035. * 1 REQUIRED TO MAKE ALL VALID ENTRIES NON-ZERO.
  1036. * I IMMOVABLE FILE UNDER ALL CIRCUMSTANCES.
  1037. * CT CATALOG TRACK NUMBER.
  1038. * PRU SECTOR WITHIN CATALOG TRACK.
  1039. * P 8-WORD PARCEL IN SECTOR.
  1040. * TK FILE/HOLE TRACK (OR RSA).
  1041. * SC FILE/HOLE SECTOR (OR RSA).
  1042.  
  1043.  
  1044. TFRI TABLE
  1045. SPACE 4,13
  1046. ** TFHL - TABLE OF FILE AND HOLE LENGTHS FROM THE PFC.
  1047. *
  1048. * THIS TABLE HAS EXACTLY A ONE TO ONE CORRESPONDENCE WITH
  1049. * THE *TFRI* TABLE AT ALL TIMES, UNLESS IT DOES NOT EXIST.
  1050. *
  1051. *T 24/ LENGTH,12/0,24/ RSA
  1052. *
  1053. * LENGTH FILE OR HOLE LENGTH FROM THE PFC.
  1054. * RSA RANDOM SECTOR ADDRESS OF FILE OR HOLE ON IAPF CHAIN.
  1055. *E
  1056.  
  1057.  
  1058. TFHL TABLE
  1059. TITLE *K* DISPLAY.
  1060. KDS SPACE 4,10
  1061. * *K* DISPLAY.
  1062.  
  1063.  
  1064. KDS VFD 24/KDI,18/KDRS,18/KDLS *K* DISPLAY CONTROL WORD
  1065. KDI SPACE 4,10
  1066. * *K* DISPLAY INPUT BUFFER.
  1067.  
  1068.  
  1069. KDI BSSZ 8 *K* DISPLAY INPUT BUFFER.
  1070. KDLS SPACE 4,10
  1071. * KDLS - *K* DISPLAY LEFT SCREEN BUFFER.
  1072.  
  1073.  
  1074. KDLS BSS 0 *K* DISPLAY LEFT SCREEN
  1075.  
  1076. VFD 10/0,1/0,1/1,47/0,1/1 LEFT DISPLAY CONTROL WORD
  1077.  
  1078. KDLSA DATA C*PACKER "PAKVER"-"PAKLVL"("NOSLVL").*
  1079. KDLSB DATA C* *
  1080. KDLSC DATA C* PERCENT PROCESSED*
  1081. KDLSD DATA C* TFRI LENGTH*
  1082. KDLSE DATA C* IX PRIMARY TFRI INDEX*
  1083. KDLSF DATA C* FX FILL FILE TFRI INDEX*
  1084. KDLSG DATA C* *
  1085. KDLSH DATA C* LT LENGTH TABLE ACTIVE*
  1086. KDLSI DATA C* ID IDLE DOWN REQUESTED*
  1087. KDLSJ DATA C* RP REPRIEVE ACTIVE*
  1088. KDLSK DATA C* *
  1089. KDLSL DATA C* EQ*
  1090. KDLSM DATA C* FM*
  1091. KDLSN DATA C* PN*
  1092. KDLSO DATA C* DN*
  1093. KDLSP DATA C* *
  1094. KDLSQ DATA C* DB*
  1095. KDLSR DATA C* MR*
  1096. KDLSS DATA C* NO EF*
  1097. KDLST DATA C* NO NC*
  1098. KDLSU DATA C* NO NM*
  1099. KDLSV DATA C* NO NF*
  1100. KDLSW DATA C* NO NS*
  1101. KDLSX DATA C* NO NP*
  1102. KDLSY DATA C* *
  1103. KDLSZ DATA C* ONSET FILES , PRUS.*
  1104. KDLS0 DATA C* ONSET HOLES , PRUS.*
  1105. KDLS1 DATA C* FILL MOVES , PRUS.*
  1106. KDLS2 DATA C* SLIDE MOVES , PRUS.*
  1107. KDLS3 DATA C* FILES MOVED , PRUS.*
  1108. KDLS4 DATA C* LOST SPACE , PRUS.*
  1109. KDLS5 DATA C* HOLES LEFT , PRUS.*
  1110. KDLS6 DATA C* HOLES FREED , PRUS.*
  1111. KDLS7 DATA C* TRACKS FREED , PRUS.*
  1112. KDLS8 DATA C* FLAW SPACE , PRUS.*
  1113. KDLS9 DATA C* *
  1114. KDLS$ DATA C* *
  1115. KDLS= DATA 50C CURRENT *B* DISPLAY MESSAGE 012345678901234567890
  1116.  
  1117. CON 0
  1118. ERRNG 512-*+KDLS *K* DISPLAY LEFT SCREEN TOO LONG
  1119. KDRS SPACE 4,10
  1120. * KDRS - *K* DISPLAY RIGHT SCREEN BUFFER.
  1121.  
  1122.  
  1123. KDRS EQU KDLS RIGHT SCREEN IS THE SAME AS THE LEFT
  1124. TITLE MAIN PROGRAM.
  1125. ** MAIN PROGRAM.
  1126.  
  1127.  
  1128. PACKER BSS 0 ENTRY
  1129. SB1 1
  1130. RJ PRS PRESET
  1131. RJ CEO CHECK ENTRY OVERLAP
  1132. SX6 1
  1133. SA6 CEOA ENABLE *CEO* CHECK FOR INTERNAL ERRORS
  1134. EQ PAC2 ENTER LOOP
  1135.  
  1136. * LOOK FOR HOLE AND CHECK FOR OVERLAP OF INTERVENING FILES.
  1137.  
  1138. PAC1 RJ CTC CHECK TERMINATION CONDITIONS
  1139. NZ X1,PAC8 IF TIME TO QUIT
  1140. PAC2 SA1 DB FETCH DEBUG FLAGS
  1141. LX1 59-0
  1142. PL X1,PAC3 IF *CEO* DEBUG AID NOT REQUESTED
  1143. RJ CEO CHECK ENTRY OVERLAP
  1144. PAC3 SA1 KDLS
  1145. LX1 59-0
  1146. PL X1,PAC4 IF SCREEN NOT ASSIGNED
  1147. RJ UKD UPDATE *K* DISPLAY
  1148. PAC4 SX0 =C/ COGITATING./
  1149. RJ MSG
  1150. SA4 F.TFRI
  1151. SA1 IX
  1152. SA3 L.TFRI
  1153. IX3 X1-X3
  1154. PL X3,PAC10 IF PAST END OF TABLE
  1155. SB2 X1
  1156. SX6 X1+B1
  1157. SA6 A1 INCREMENT INDEX
  1158. SA2 X4+B2
  1159. NG X2,PAC5 IF HOLE FOUND
  1160. ZR X2,PAC10 IF END OF TABLE
  1161. RJ CTC CHECK TERMINATION CONDITIONS
  1162. NZ X1,PAC10 IF TIME TO QUIT
  1163. RJ CFL CHECK FILE LENGTH
  1164. ZR X7,PAC2 IF NO LOST SPACE
  1165. RJ RLS RECLAIM LOST SPACE
  1166. EQ PAC2 KEEP LOOKING FOR HOLE
  1167.  
  1168. * HOLE FOUND, PURGE ALL THE CONTIGUOUS HOLES.
  1169.  
  1170. PAC5 SA1 A2 HOLE ENTRY
  1171. SA2 A2+B1 NEXT ENTRY
  1172. BX6 X1
  1173. SA6 HE REMEMBER ORIGINAL HOLE (COLLECTION HOLE)
  1174. RJ PCH PURGE CONTIGUOUS HOLES
  1175. ZR X2,PAC9 IF END OF TABLE
  1176.  
  1177. * FILE ENCOUNTERED, PREPARE FOR POTENTIAL MOVE.
  1178.  
  1179. BX6 X1 HOLE ENTRY
  1180. BX7 X2 FILE ENTRY
  1181. SA6 HE COLLECTION HOLE ENTRY
  1182. SA7 FE SLIDE FILE ENTRY
  1183. MX4 -24
  1184. BX6 -X4*X6
  1185. BX7 -X4*X7
  1186. IX6 X7-X6 HOLE LENGTH
  1187. SA6 HL
  1188. RJ ATD ATTEMPT PRE-MOVE TRACK DELINK
  1189. PL X1,PAC6 IF NO TRACK DELINKED
  1190. EQ PAC2 COLLECTION HOLE IS CLOSED
  1191.  
  1192. PAC6 RJ AFM ATTEMPT FILL MOVE
  1193. NG X1,PAC2 IF EXACT FIT, COLLECTION HOLE IS CLOSED
  1194. ZR X1,PAC7 IF UNSUCCESSFUL FILL MOVE
  1195. EQ PAC1 TRY ANOTHER MOVE, COLLECTION HOLE IS OPEN
  1196.  
  1197. PAC7 RJ ASM ATTEMPT SLIDE MOVE
  1198. NG X1,PAC2 IF UNSUCCESSFUL, COLLECTION HOLE IS CLOSED
  1199. EQ PAC1 SUCCESSFUL MOVE, COLLECTION HOLE IS OPEN
  1200.  
  1201. * TERMINATION. UPDATE ACTIVE COLLECTION HOLE.
  1202.  
  1203. PAC8 SA4 F.TFRI
  1204. SA1 IX
  1205. IX2 X1+X4
  1206. SA5 X2 HOLE ENTRY
  1207. SX6 X1+B1 UPDATE (IX) FOR *UHE*
  1208. SA6 A1
  1209. BX6 X5
  1210. SA6 HE REMEMBER COLLECTION HOLE ENTRY
  1211. RJ UHE UPDATE HOLE CATALOG ENTRY
  1212. EQ PAC10 CLEAR INTERLOCK AND TERMINATE
  1213.  
  1214. * TERMINATION. UPDATE ACTIVE COLLECTION HOLE AT END OF CHAIN.
  1215.  
  1216. PAC9 SA1 HE COLLECTION HOLE ENTRY
  1217. MX0 -24
  1218. BX1 -X0*X1
  1219. SA2 EI CALCULATE HOLE LENGTH
  1220. IX6 X2-X1
  1221. SA6 HL
  1222. RJ UHE UPDATE HOLE ENTRY
  1223.  
  1224. * CLEAR THE UTILITY INTERLOCK AND ISSUE STATISTICS.
  1225.  
  1226. PAC10 RJ CIT CLEAR INTERLOCKS
  1227. SX6 =0
  1228. SA6 MSGA CLEAR LAST *B* DISPLAY MESSAGE ADDRESS
  1229. RJ UKD UPDATE *K* DISPLAY
  1230. BX0 X0-X0 SET NORMAL TERMINATION FLAG
  1231. RJ ISD ISSUE STATISTICS TO DAYFILE
  1232. MESSAGE (=C/ PACKER COMPLETE./),,R
  1233. ENDRUN
  1234. TITLE ERROR TERMINATION PROCESSORS.
  1235. SPACE 4,10
  1236. ** ERROR PROCESSORS.
  1237.  
  1238. QUAL RPV
  1239.  
  1240. * NOTE - QUALIFICATION PREVENTS RJ TRACE ACTION.
  1241. RPV SPACE 4,15
  1242. ** RPV - PROCESS REPRIEVE.
  1243. *
  1244. * ENTRY FROM *RPV*.
  1245. *
  1246. * EXIT ERROR CONDITION RESET.
  1247. *
  1248. * USES X - 0, 1, 6, 7.
  1249. * A - 1, 6, 7.
  1250. * B - 1.
  1251. *
  1252. * CALLS CIT, ISD, RSS.
  1253. *
  1254. * MACROS ABORT, MESSAGE, REPRIEVE, RPVBLK, SYSTEM.
  1255.  
  1256.  
  1257. RPV BSS 0 ENTRY FROM *RPV*
  1258. SB1 1
  1259. SX6 B1
  1260. SA6 RP SET REPRIEVE ACTIVATED
  1261. SA1 RPVA+7
  1262. MX0 -12
  1263. BX0 -X0*X1 ERROR FLAG FROM REPRIEVE BLOCK
  1264. SA1 TEMS+X0 ADDRESS OF CORRESPONDING MESSAGE
  1265. ZR X1,RPV1 IF NO MESSAGE
  1266. MESSAGE X1,,R ISSUE MESSAGE TO DAYFILE
  1267. RPV1 SX1 X0-ODET CHECK ERROR FLAG
  1268. ZR X1,RPV2 IF OPERATOR DROP
  1269. SX1 X0-IDET
  1270. ZR X1,RPV2 IF IDLE DOWN
  1271. EQ RPV3 PROCESS OTHER ERRORS
  1272.  
  1273. RPV2 SA1 ID
  1274. NZ X1,RPV3 IF PREVIOUS IDLE DOWN REQUESTED
  1275. SX6 B1
  1276. SA6 A1 SET IDLE DOWN REQUESTED FLAG
  1277. MESSAGE (=C/ IDLE DOWN BEGUN./),,R
  1278. SX6 B0+
  1279. SA6 RP CLEAR REPRIEVE ACTIVATED FLAG
  1280. REPRIEVE RPVA,RESUME,RPVC RESUME PROGRAM EXECUTION
  1281.  
  1282. RPV3 MESSAGE (=C/ REPRIEVE PROCESSING BEGUN./),,R
  1283. SYSTEM DMB,R GENERATE BINARY DUMP FILE
  1284. SYSTEM DMP,R,0,0 DUMP EXCHANGE PACKAGE
  1285. SYSTEM DMD,R,377777B DUMP FIELD LENGTH
  1286. RJ RSS REMOVE *SSST* STATUS FROM DUMP FILES
  1287. SX6 B1+
  1288. SA1 C COMPLETE FETS SO *CIT* WON-T HANG
  1289. BX7 X1+X6
  1290. SA7 A1
  1291. SA1 I
  1292. BX7 X6+X1
  1293. SA7 A1
  1294. SA1 O
  1295. BX7 X1+X6
  1296. SA7 A1
  1297. RJ CIT CLEAR INTERLOCKS
  1298. SX0 B1 SET ABNORMAL TERMINATION FLAG
  1299. RJ ISD ISSUE STATISTICS TO DAYFILE
  1300. MESSAGE (=C/ REPRIEVE PROCESSING COMPLETE./),,R
  1301. MESSAGE (=C/ PACKER ABORTED./),,R
  1302. REPRIEVE RPVA,RESET,0 RESET ERROR
  1303.  
  1304.  
  1305. RPVA RPVBLK RPV,RPVB REPRIEVE BLOCK
  1306. RPVC EQU /COMSRPV/EEMS+/COMSRPV/PCMS+/COMSRPV/SRMS+/COMSRPV/OTMS
  1307. ,+/COMSRPV/PPMS+/COMSRPV/CPMS+/COMSRPV/TIMS ERROR MASK
  1308. ERR SPACE 4,15
  1309. ** ERR - PROCESS ERROR.
  1310. *
  1311. * *ERR* PROCESSES AN INTERNAL ERROR BY CLEARING THE INTERLOCKS,
  1312. * ISSUING AN ERROR MESSAGE, GENERATING A DUMP, ISSUING THE
  1313. * STATISTICS, AND ABORTING.
  1314. *
  1315. * ENTRY (X0) = ADDRESS OF MESSAGE.
  1316. *
  1317. * USES X - 0, 1.
  1318. * A - 1.
  1319. * B - 1.
  1320. *
  1321. * CALLS CIT, ISD, RSS.
  1322. *
  1323. * MACROS ABORT, MESSAGE, REPRIEVE, SYSTEM.
  1324.  
  1325.  
  1326. ERR BSS 0 ENTRY
  1327. SB1 1
  1328. ZR X0,ERR1 IF NO MESSAGE
  1329. MESSAGE X0,,R ISSUE MESSAGE TO DAYFILE
  1330.  
  1331. * GENERATE DUMPS.
  1332.  
  1333. ERR1 SA1 DF
  1334. ZR X1,ERR2 IF NO DUMP REQUIRED
  1335. SYSTEM DMB,R GENERATE BINARY DUMP FILE
  1336. SYSTEM DMP,R,0,0 DUMP EXCHANGE PACKAGE
  1337. SYSTEM DMD,R,377777B DUMP FIELD LENGTH
  1338. RJ RSS REMOVE *SSST* STATUS FROM DUMP FILES
  1339.  
  1340. * CLEAR INTERLOCKS AND TERMINATE.
  1341.  
  1342. ERR2 RJ CIT CLEAR INTERLOCKS
  1343. SX0 B1 SET ABNORMAL TERMINATION FLAG
  1344. RJ ISD ISSUE STATISTICS TO DAYFILE
  1345. MESSAGE (=C/ PACKER ABORTED./),,R
  1346. REPRIEVE RPVA,SETUP,0B CLEAR REPRIEVE PROCESSING
  1347. ABORT
  1348. SPACE 4,10
  1349. ** TEMS - TABLE OF ERROR MESSAGES.
  1350. *
  1351. * INDEXED BY VALUE OF SYSTEM ERROR FLAG.
  1352. *
  1353. * THESE ERROR FLAGS ARE LISTED IN THE PRIORITY ORDER SCHEME.
  1354. * THE TABLE GENERATED IS INDEPENDENT OF THE ACTUAL VALUES.
  1355.  
  1356.  
  1357. MACRO .1,A,B,M
  1358. .3 IFC NE,$A$$
  1359. A BSS 0
  1360. .2 SET A
  1361. IFC EQ,$B$$,1
  1362. ERR MAX+1 VALUE NOT SPECIFIED
  1363. IF -DEF,B,1
  1364. ERR B (MAX+1 VALUE) NOT DEFINED
  1365. BSSZ B
  1366. .3 ELSE
  1367. IF -DEF,B,1
  1368. .3 SKIP
  1369. ORG .2+B
  1370. IFC NE,$M$$,2
  1371. LOC B
  1372. CON =C/_M_/
  1373. BSS 0
  1374. .3 ENDIF
  1375. .1 ENDM
  1376.  
  1377. TEMS .1 MXET START TABLE AND ZERO MAX WORDS
  1378.  
  1379. * ERROR FLAGS AND MESSAGES.
  1380.  
  1381. .1 TIET,( USER BREAK ONE.)
  1382. .1 TAET,( USER BREAK TWO.)
  1383. .1 ARET,( ARITHMETIC ERROR.)
  1384. .1 ITET,( SCP INVALID TRANSFER ADDRESS.)
  1385. .1 PSET,( PROGRAM STOP ERROR.)
  1386. .1 PPET,( PPU ABORT.)
  1387. .1 CPET,( CPU ABORT.)
  1388. .1 PCET,( PPU CALL ERROR.)
  1389. .1 CLET,( COMMAND LIMIT.)
  1390. .1 MLET,( MESSAGE LIMIT.)
  1391. .1 TLET,( TIME LIMIT ERROR.)
  1392. .1 FLET,( FILE LIMIT ERROR.)
  1393. .1 TKET,( TRACK LIMIT ERROR.)
  1394. .1 SRET,( SRU LIMIT ERROR.)
  1395. .1 FSET,( FORCED ERROR.)
  1396. .1 RCET,( JOB HUNG IN AUTORECALL.)
  1397. .1 ODET,( OPERATOR DROP.)
  1398. .1 IDET,( IDLE DOWN.)
  1399.  
  1400. * SPET - BEGINING OF SPECIAL ERRORS.
  1401.  
  1402. .1 STET,( SUSPENSION TIMEOUT.)
  1403. .1 ECET,( ECS PARITY ERROR.)
  1404. .1 RSET,( SUBSYSTEM RECOVERED DURING LEVEL 3 DEADSTART.)
  1405. .1 SSET,( SUBSYSTEM ABORTED.)
  1406. .1 RRET,( OPERATOR RERUN.)
  1407. .1 OKET,( OPERATOR KILL.)
  1408.  
  1409. * NRET - BEGINNING OF NON-REPRIEVABLE ERRORS.
  1410.  
  1411. .1 DRET,( DEADSTART RERUN.)
  1412. .1 RAET,( RECOVERY ABORT.)
  1413. .1 JSET,( JOB STEP ABORT.)
  1414. .1 SVET,( SECURITY VIOLATION.)
  1415. .1 SYET,( SYSTEM ABORT.)
  1416. .1 PEET,( CPU OR CM PARITY ERROR.)
  1417. .1 SWET,( SOFTWARE ERROR ABORT.)
  1418. .1 ORET,( OVERRIDE OF ERROR CONDITION.)
  1419.  
  1420. * MXET - MAXIMUM NUMBER OF ERROR FLAGS.
  1421.  
  1422. .1 MXET REALIGN ORG
  1423.  
  1424.  
  1425. PURGMAC .1
  1426. SPACE 4,10
  1427. * UNQUALIFIED COMMON DECKS FOR *RPV* AND *ERR* USE.
  1428.  
  1429. QUAL$ EQU 0 FORCE UNQUALIFIED COMMON DECKS
  1430.  
  1431. *CALL COMCSYS
  1432. SPACE 4,10
  1433. QUAL *
  1434. ERR EQU /RPV/ERR
  1435. RPV EQU /RPV/RPV
  1436. RPVA EQU /RPV/RPVA
  1437. RPVB EQU /RPV/RPVB
  1438. RPVC EQU /RPV/RPVC
  1439. TITLE RJ TRACE PROCESSORS.
  1440. ** RJ TRACE PROCESSORS.
  1441.  
  1442.  
  1443. QUAL RJT
  1444.  
  1445. * NOTE - QUALIFICATION PREVENTS RJ TRACE ACTION.
  1446. RJT SPACE 4,25
  1447. ** RJT - RETURN JUMP TRACE.
  1448. *
  1449. * THIS ROUTINE PLACES DEBUG INFORMATION IN A ONE WAY *CIO*
  1450. * BUFFER. THIS INFORMATION IS IN BLOCKS BEGINNING WITH
  1451. * 30/RJ CALLEE,30/EQ CALLER.
  1452. *
  1453. * ENTRY CALLED VIA + RJ RJT
  1454. * - RJ SUB
  1455. * WHERE SUB IS THE TARGET SUBROUTINE.
  1456. *
  1457. * EXIT TO *SUB*+1 WITH (SUB) SET TO PROPER RETURN ADDRESS,
  1458. * STACK VOIDED.
  1459. *
  1460. * USES ALL.
  1461. *
  1462. * RESTORES ALL.
  1463. *
  1464. * CALLS RSR, SVR.
  1465. *
  1466. * MACROS VOID.
  1467.  
  1468.  
  1469. RJT SUBR ENTRY ONLY
  1470. RJ SVR SAVE ALL REGISTERS
  1471. SB1 1
  1472. SA1 RJTX FETCH RETURN INSTRUCTION
  1473. BX6 X1
  1474. LX1 30
  1475. SA1 X1-1 FETCH CALLING INSTRUCTION
  1476. SA6 X1 STORE RETURN IN TARGET SUBROUTINE
  1477. MX2 -30
  1478. BX6 X2*X6 30/EQ INSTRUCTION, 30/0
  1479. BX1 -X2*X1 30/0, 30/RJ INSTRUCTION
  1480. BX7 X6+X1
  1481. LX7 30 FIRST WORD FOR DEBUG BUFFER
  1482. MX2 -18
  1483. SX1 X1+B1 FWA OF EXECUTABLE CODE IN SUBROUTINE
  1484. LX2 30
  1485. LX1 30
  1486. BX6 X2*X6
  1487. BX1 -X2*X1
  1488. BX6 X6+X1
  1489. SA6 RJTA SET INSTRUCTION TO CALL SUBROUTINE
  1490. VOID VOID ALL TYPES OF INSTRUCTION STACKS
  1491. SA1 F.TRJH INSERT INTO ONE WAY CIO BUFFER
  1492. SA2 L.TRJH
  1493. SX3 X2-10D
  1494. NG X3,RJT2 IF TABLE IS TOO SMALL
  1495. SA3 X1 GET *IN*
  1496. SB2 X3
  1497. SA7 X1+B2 STORE AT *IN*
  1498. SX6 X3+B1 NEXT *IN*
  1499. IX3 X3-X2 *IN* - *LIMIT*
  1500. NG X3,RJT1 IF NOT AT *LIMIT*
  1501. SX6 B1 RESET *IN* TO *FIRST*
  1502. RJT1 SA6 A3 STORE *IN*
  1503. RJT2 RJ RSR RESTORE ALL REGISTERS
  1504. RJTA EQ * EXIT TO TARGET SUBROUTINE
  1505.  
  1506.  
  1507. RJTB BSSZ 3*8 REGISTER SAVE AREA
  1508. SPACE 4,10
  1509. * UNQUALIFIED PSEUDO COMMON DECKS FOR *RJT* USE.
  1510.  
  1511. QUAL$ EQU 0 FORCE UNQUALIFIED COMMON DECKS
  1512.  
  1513. RSR$ EQU RJTB REGISTER SAVE AREA FOR RSR
  1514. RSR CTEXT COMCRSR - RESTORE REGISTERS. *MODIFIED FOR PACKER*
  1515. RSR SPACE 4,10
  1516. IF -DEF,QUAL$,1
  1517. QUAL COMCRSR
  1518. BASE D
  1519. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  1520. RSR SPACE 4,10
  1521. *** RSR - RESTORE ALL REGISTERS.
  1522. *
  1523. * AUTHOR UNKNOWN. CIRCA 1971.
  1524. * P. C. TAM 77/07/05.
  1525. *
  1526. * RSR RESTORES B, A, AND X REGISTERS FROM A SAVE AREA.
  1527. RSR SPACE 4,10
  1528. *** RSR RESTORES B, A, AND X REGISTERS FROM A SPECIFIED REGISTER
  1529. * SAVE AREA. THE FORMAT OF THE REGISTERS IN THE SAVE AREA IS -
  1530. * B0, B1, ..., B7, A0, A1, ..., A7, X0, X1, ..., X7.
  1531. * EACH REGISTER OCCUPIES A FULL WORD WITH B AND A REGISTER
  1532. * VALUES IN BITS 17-0.
  1533. *
  1534. * ENTRY (X1) = ADDRESS OF REGISTER SAVE AREA.
  1535. * IF RSR$ IS DEFINED THEN ITS VALUE IS THE FWA OF A
  1536. * PERMANENT REGISTER SAVE AREA AND IT IS USED INSTEAD.
  1537. *
  1538. * EXIT ALL REGISTERS SET TO THE CONTENT OF THE REGISTER
  1539. * SAVE AREA.
  1540. *
  1541. * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
  1542. * B - 1, 2, 3, 4, 5, 6, 7.
  1543. * A - 0, 1, 2, 3, 4, 5, 6, 7.
  1544. *
  1545. * CALLS NONE.
  1546.  
  1547.  
  1548. SAVEB EQU 0
  1549. SAVEA EQU 8
  1550. SAVEX EQU 16
  1551. RSR SPACE 4,10
  1552. RSR SUBR ENTRY/EXIT
  1553. IF -DEF,B1=1,1
  1554. SB1 1
  1555.  
  1556. * SET UP FINAL -B- REGISTERS RESTORE AT (RSR4) ET SEQ.
  1557.  
  1558. RSR. IF DEF,RSR$
  1559. SB7 RSR$ (B7) = FWA OF REGISTER SAVE AREA
  1560. RSR. ELSE
  1561. SB7 X1+ (B7) = FWA OF REGISTER SAVE AREA
  1562. RSR. ENDIF
  1563. MX4 -18
  1564. SA1 B7+SAVEB+7 (X1) = SAVED (B7)
  1565. BX5 X4
  1566. LX4 30
  1567. SB4 4
  1568. BX0 X4*X5 (X0) = 77770000007777000000B
  1569.  
  1570. * SET UP RESTORE B REGISTER INSTRUCTIONS.
  1571.  
  1572. RSR2 SA2 A1-B1 (X2) = SAVED (B.N-1)
  1573. SA3 RSR4+B4-1
  1574. BX1 -X5*X1
  1575. SB4 B4-B1
  1576. BX2 -X5*X2
  1577. LX1 30
  1578. BX3 X0*X3
  1579. IX6 X1+X2
  1580. BX7 X6+X3 (X7) = 30/SB.N B6+K, 30/SB.N-1 B6+K
  1581. SA7 A3
  1582. SA1 A2-B1 (X1) = SAVED (B.N)
  1583. NZ B4,RSR2 IF STILL MORE B REGISTERS TO GO
  1584.  
  1585. * THE MOST LIKELY CANDIDATE FOR THE DANGER DISCUSSED IN THE
  1586. * NEXT PARAGRAPH IS THE SYSTEM COMMUNICATION CELL (RA.MTR).
  1587. * ACCORDINGLY, WE WAIT FOR IT TO CLEAR BEFORE PROCEEDING.
  1588.  
  1589. SA2 B7+SAVEA+6 (X2) = SAVED (A6)
  1590. RSR3 SA1 RA.MTR
  1591. NZ X1,RSR3 IF (RA.MTR) NOT CLEAR
  1592.  
  1593. * A BIT OF CARE IS SPENT ON RESTORATION OF (A6) AND (A7).
  1594. * WE WISH TO AVOID HAVING THE CONTENTS OF THE WORD THAT THE
  1595. * STORE REGISTER IS POINTING TO GET CHANGED (I.E. BY A PP)
  1596. * WHILE WE ARE RESTORING (A6) OR (A7). ABOUT THE ONLY THING
  1597. * THAT CAN BE DONE TO MINIMIZE THIS POSSIBILITY IS TO GET THE
  1598. * LOAD AND THE STORE AS CLOSE TOGETHER AS POSSIBLE. BY KEEPING
  1599. * THEM IN THE SAME WORD, WE HAVE AT LEAST ENSURED THAT WE WILL
  1600. * NOT BE EXCHANGED AFTER THE LOAD BUT BEFORE THE STORE.
  1601. * BARRING DELAYS IN THE HOPPER, THIS SHOULD REDUCE THE DANGER
  1602. * PERIOD TO A FEW MINOR CYCLES.
  1603.  
  1604. SA3 A2+B1 (X3) = SAVED (A7)
  1605. + SA4 X2-0
  1606. BX6 X4
  1607. SA6 A4-B0 RESTORE (A6)
  1608. + SA5 X3-0
  1609. BX7 X5
  1610. SA7 A5-B0 RESTORE (A7)
  1611.  
  1612. * RESTORE (X6), (X7).
  1613.  
  1614. SA1 B7+SAVEX+6
  1615. SA4 A1+B1
  1616. BX6 X1 RESTORE (X6)
  1617. LX7 X4 RESTORE (X7)
  1618. BX0 -X0-X0
  1619. SB6 X0-0 (B6) = -0
  1620.  
  1621. * RESTORE (A0),(X0).
  1622.  
  1623. SA4 B7+SAVEA+0
  1624. SA5 B7+SAVEX+0
  1625. SA0 X4+B6
  1626. BX0 X5
  1627.  
  1628. * RESTORE (A) - 1,2,3,4.
  1629. * (X) - 1,2,3,4.
  1630.  
  1631. ECHO 4,N=(1,2,3,4)
  1632. SA4 A4+B1 (X4) = SAVED (A.N)
  1633. SA5 A5+B1 (X5) = SAVED (X.N)
  1634. SA.N X4+B6
  1635. BX.N X5
  1636.  
  1637. * RESTORE (A5),(X5)-- THE ORIGINAL (X5) ARE BROKEN APART INTO
  1638. * (B1) THRU (B5) AS DISPLAYED BELOW. THIS ALLOWS US TO RESTORE
  1639. * (A5).
  1640. * DISASSEMBLY IS FROM LEFT TO RIGHT, TOP TO BOTTOM.
  1641. * REASSEMBLY IS FROM RIGHT TO LEFT, BOTTOM TO TOP.
  1642. * 5 4 3 2 1 55
  1643. * 9 8 7 6 5 098
  1644. * ..............................................................
  1645. * ++++++++++++
  1646. * (B1) ++++++++++++
  1647. * (B2) ++++++++++++
  1648. * (B3) ++++++++++++
  1649. * (B4) ++++++++++++++++++
  1650. * ++ (B5)
  1651.  
  1652. SA5 A5+B1 (X5) = SAVED (X5)
  1653. ECHO 2,N=(1,2,3)
  1654. UX5,B.N X5
  1655. LX5 11
  1656. UX5,B4 X5
  1657. LX5 11+18
  1658. SB5 X5+B6
  1659. SA5 B7+SAVEA+5 (X5) = SAVED (A5)
  1660. SA5 X5+B6 RESTORE (A5)
  1661.  
  1662. * REASSEMBLE (X5).
  1663.  
  1664. SX5 B5+B6
  1665. LX5 60-11-18
  1666. PX5 X5,B4
  1667. ECHO 2,N=(3,2,1)
  1668. LX5 -11
  1669. PX5 X5,B.N
  1670.  
  1671. * RESTORE (B) - 0,1,2,3,4,5,6,7.
  1672.  
  1673. RSR4 BSS 0
  1674. ECHO 2,U=(1,3,5,7),L=(0,2,4,6)
  1675. SB.U B6+*
  1676. SB.L B6+*
  1677. EQ RSRX RETURN
  1678. RSR SPACE 4,10
  1679. BASE *
  1680. QUAL$ IF -DEF,QUAL$
  1681. QUAL *
  1682. RSR EQU /COMCRSR/RSR
  1683. RSR= EQU /COMCRSR/RSR
  1684. QUAL$ ENDIF
  1685. RSR ENDX
  1686. SVR$ EQU RJTB REGISTER SAVE AREA FOR SVR
  1687. SVR CTEXT COMCSVR - SAVE ALL REGISTERS. *MODIFIED FOR PACKER*
  1688. SVR SPACE 4,10
  1689. IF -DEF,QUAL$,1
  1690. QUAL COMCSVR
  1691. BASE D
  1692. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  1693. SVR SPACE 4,10
  1694. *** SVR - SAVE ALL REGISTERS.
  1695. *
  1696. * AUTHOR UNKNOWN. CIRCA 1971.
  1697. * P. C. TAM. 77/06/18.
  1698. *
  1699. * SVR SAVES ALL REGISTERS IN A SPECIFIED REGISTER SAVE AREA.
  1700. SVR SPACE 4,10
  1701. *** SVR SAVES ALL REGISTERS IN A SPECIFIED REGISTER SAVE AREA.
  1702. * THE REGISTERS ARE SAVED IN THE FOLLOWING ORDER -
  1703. * B0, B1, ..., B7, A0, A1, ..., A7, X0, X1, ..., X7.
  1704. * EACH REGISTER OCCUPIES A FULL WORD WITH B AND A REGISTER
  1705. * VALUES IN BITS 17-0. B AND A REGISTERS ARE SIGN EXTENDED.
  1706. * MINUS ZERO (-0) IS PRESERVED IN ALL REGISTERS.
  1707. *
  1708. * ENTRY BITS 17-0 OF THE WORD FROM WHICH SVR= WAS CALLED
  1709. * CONTAIN THE ADDRESS OF THE REGISTER SAVE AREA.
  1710. * IF SVR$ IS DEFINED THEN ITS VALUE IS THE FWA OF A
  1711. * PERMANENT REGISTER SAVE AREA AND IT IS USED INSTEAD.
  1712. *
  1713. * EXIT (SAVE - SAVE+7) = B REGISTERS.
  1714. * (SAVE+8 - SAVE+15) = A REGISTERS.
  1715. * (SAVE+16 - SAVE+23) = X REGISTERS.
  1716. *
  1717. * USES A - 0, 1, 2, 3, 4, 5, 6, 7.
  1718. * B - 1, 2, 3, 4, 5, 6, 7.
  1719. * X - 0, 1, 2, 3, 4, 5, 6, 7.
  1720. *
  1721. * CALLS NONE.
  1722.  
  1723.  
  1724. SAVEB EQU 0
  1725. SAVEA EQU 8
  1726. SAVEX EQU 16
  1727.  
  1728. SVR SUBR ENTRY/EXIT
  1729.  
  1730. * CHECK FOR (B1) = 1. IF NOT, SAVE (B1) THE HARD WAY BY
  1731. * EXECUTING THE RJ SEQUENCE AT *SVR2*. IF BIT
  1732. * 2**N WAS ON IN (B1), THEN THE *RJ* AT (SVR2+2*N+1) WILL BE
  1733. * EXECUTED, RESULTING IN AN /EQ SVR2+2*N+1/. IF BIT 2**N WAS
  1734. * NOT ON IN (B1), THEN THE *RJ* WILL NOT BE EXECUTED. BY
  1735. * QUERYING (SVR2+2*N+1), ONE CAN DETERMINE WHETHER OR NOT THE
  1736. * BIT 2**N WAS ON IN (B1) BY THE PRESENCE OF AN *EQ* OR AN *RJ*
  1737. * INSTRUCTION.
  1738.  
  1739. NG B1,SVR2 IF (B1) .LE. 0 (PRESERVE -0)
  1740. SB1 B1-1
  1741. ZR B1,SVR4 IF (B1) = 1
  1742. SB1 B1+1 RESTORE (B1)
  1743.  
  1744. * *RJ* SEQUENCE FOR SAVING (B1).
  1745.  
  1746. SVR2 PL B1,*+2
  1747. + RJ *
  1748. B.NE.1 DUP 17
  1749. + SB1 B1+B1
  1750. NO
  1751. PL B1,*+2
  1752. + RJ *
  1753. B.NE.1 ENDD
  1754.  
  1755. * FILLER BECAUSE RJ-S MUST BE 2 WORDS APART FOR RESTORE.
  1756.  
  1757. + SB0 B0+
  1758. SVR3 RJ * (B1) = 1/(B1) .NE. 1 FLAG
  1759.  
  1760. * SAVE (A) - 4,5,6,7.
  1761. * (X) - 4,5,6,7.
  1762.  
  1763. SVR4 SB1 A7-B0 SAVE (A7) TEMPORARILY.
  1764. SA7 SVRA SAVE (X7) TEMPORARILY
  1765. SX7 A5-B0
  1766. SA7 SVRB SAVE (A5) TEMPORARILY
  1767. BX7 X5
  1768. SA7 SVRC SAVE (X5) TEMPORARILY
  1769. SVR. IF DEF,SVR$
  1770. SX5 SVR$ (X5) = FWA OF RSA
  1771. SVR. ELSE
  1772. SA5 SVRX (X5) = 30/EQ CALLER+1, 30/0
  1773. LX5 30
  1774. SA5 X5-1 (X5) = 30/RJ SVR=, 30/FWA OF RSA
  1775. SVR. ENDIF
  1776. SX7 B1-B0
  1777. SB1 1
  1778. SA7 X5+SAVEA+7 (A7) TO SAVE AREA
  1779. SX7 A6-B0
  1780. SA6 X5+SAVEX+6 (X6) TO SAVE AREA
  1781. SA7 A7-B1 (A6) TO SAVE AREA
  1782. BX6 X4
  1783. SX7 A4-B0
  1784. SA6 A6-2 (X4) TO SAVE AREA
  1785. SA7 A7-2 (A4) TO SAVE AREA
  1786.  
  1787. * SAVE (A) - 0,1,2,3.
  1788. * (X) - 0,1,2,3.
  1789.  
  1790. SV=AX ECHO ,N=(3,2,1,0)
  1791. BX6 X.N
  1792. SX7 A.N-B0
  1793. SA6 A6-B1 (X.N) TO SAVE AREA
  1794. SA7 A7-B1 (A.N) TO SAVE AREA
  1795. SV=AX ENDD
  1796.  
  1797. * SAVE (X7), (A5), (X5) FINALLY.
  1798.  
  1799. SA2 SVRA (X2) = SAVED (X7)
  1800. SA3 SVRB (X3) = SAVED (A5)
  1801. SA4 SVRC (X4) = SAVED (X5)
  1802. BX6 X2
  1803. LX7 X3
  1804. SA6 X5+SAVEX+7 (X7) TO SAVE AREA
  1805. SA7 X5+SAVEA+5 (A5) TO SAVE AREA
  1806. BX6 X4
  1807. SA6 X5+SAVEX+5 (X5) TO SAVE AREA
  1808.  
  1809. * SAVE (B) - 0,1,2,3,4,5,6,7.
  1810.  
  1811. BX6 X6-X6
  1812. SA6 X5+SAVEB+0 (B0) = 0 TO SAVE AREA
  1813. SX7 B1
  1814. SA7 A6+B1
  1815. SV=B ECHO ,U=(2,4,6),L=(3,5,7)
  1816. SX6 B.U-B0
  1817. SX7 B.L-B0
  1818. SA6 A7+B1
  1819. SA7 A6+B1
  1820. SV=B ENDD
  1821.  
  1822. * SAVE (B1).
  1823.  
  1824. SA5 SVR3 (X5) = (B1) = 1/(B1) .NE. 1 FLAG
  1825. SX4 0100B (X4) = *RJ* OP CODE
  1826. SX3 B1
  1827. LX3 42-0-1 BIT FOR RECONSTRUCTION OF B1
  1828. SX6 A5
  1829. LX4 29-11
  1830. BX6 X4+X6 (X6) = 30/0, 30/RJ *
  1831. LX6 59-29
  1832. SA6 A5 RESTORE RJ *
  1833. LX5 59-56
  1834. BX7 X7-X7
  1835. PL X5,SVRX IF (B1) = 1
  1836. SB2 B1+B1
  1837.  
  1838. * ASSEMBLE ORIGINAL (B1) INTO (X7).
  1839.  
  1840. SVR5 SA5 A5-B2
  1841. IX3 X3+X3
  1842. SX6 A5
  1843. LX5 59-56
  1844. BX6 X4+X6 (X6) = 30/0, 30/RJ *
  1845. PL X5,SVR6 IF BIT WAS CLEAR
  1846. BX7 X7+X3
  1847. SVR6 LX6 59-29 RESTORE RJ *
  1848. SA6 A5
  1849. PL X3,SVR5 IF MORE BITS TO ASSEMBLE
  1850.  
  1851. * FINALLY SAVE (B1).
  1852.  
  1853. AX7 42 SIGN EXTEND
  1854. SA7 A7-7+1 (B1) TO SAVE AREA
  1855. EQ SVRX RETURN
  1856.  
  1857. * TEMPORARY SAVE AREAS.
  1858.  
  1859. SVRA BSS 1 SAVE FOR (X7)
  1860. SVRB BSS 1 SAVE FOR (A5)
  1861. SVRC BSS 1 SAVE FOR (X5)
  1862. SVR SPACE 4,10
  1863. BASE *
  1864. QUAL$ IF -DEF,QUAL$
  1865. QUAL *
  1866. SVR EQU /COMCSVR/SVR
  1867. SVR= EQU /COMCSVR/SVR
  1868. QUAL$ ENDIF
  1869. SVR ENDX
  1870.  
  1871.  
  1872. QUAL *
  1873. RJT EQU /RJT/RJT
  1874. TITLE SUBROUTINES.
  1875. AFM SPACE 4,25
  1876. ** AFM - ATTEMPT FILL MOVE.
  1877. *
  1878. * ENTRY (HL) = COLLECTION HOLE LENGTH.
  1879. * (HE) = COLLECTION HOLE ENTRY.
  1880. * (FE) = SLIDE FILE ENTRY.
  1881. * (IX) = INDEX OF SLIDE FILE.
  1882. * (IX)-1 = INDEX OF COLLECTION HOLE.
  1883. *
  1884. * EXIT (X1) = 0, IF NO FILL MOVE WAS POSSIBLE.
  1885. * (X1) .LT. 0, IF AN EXACT FIT OCCURRED.
  1886. * THE COLLECTION HOLE IS CLOSED.
  1887. * (X1) .GE. 0, IF EITHER NO FILL MOVE WAS POSSIBLE, OR
  1888. * THE FILL MOVE DID NOT EXACTLY FILL THE
  1889. * COLLECTION HOLE.
  1890. * THE COLLECTION HOLE IS OPEN.
  1891. * (HE) = UPDATED.
  1892. * (HL) = UPDATED.
  1893. *
  1894. * USES X - ALL.
  1895. * A - 1, 2, 3, 4, 5, 6, 7.
  1896. * B - 2, 3.
  1897. *
  1898. * CALLS CDF, RCE, UFF.
  1899.  
  1900.  
  1901. AFM6 SX1 B0+ INDICATE NO MOVE POSSIBLE
  1902.  
  1903. AFM SUBR ENTRY/EXIT
  1904. SA1 NF
  1905. SA2 LT
  1906. NZ X1,AFM6 IF FILL MOVE TECHNIQUE IS NOT TO BE USED
  1907. NZ X2,AFM6 IF *TFHL* TABLE IS NOT ACTIVE
  1908. SX6 B1
  1909. LX6 24-0 LARGEST FILE SIZE + 1
  1910. SA6 AFMA CLEAR BEST CANDIDATE SIZE
  1911. SX6 -1
  1912. SA6 FX CLEAR BEST CANDIDATE INDEX
  1913.  
  1914. * SEARCH FOR FILE TO JUMP FILL INTO COLLECTION HOLE.
  1915.  
  1916. SA1 F.TFRI
  1917. SA2 L.TFRI
  1918. SA3 F.TFHL
  1919. SA4 IX SLIDE FILE INDEX
  1920. SB2 X2 SEARCH INDEX + 1 (LENGTH)
  1921. SB3 X4
  1922. SA5 HL HOLE LENGTH
  1923. AFM1 SB2 B2-B1
  1924. LE B2,B3,AFM3 IF SEARCH COMPLETE (SEARCH .LE. SLIDE)
  1925. SA2 X1+B2 ENTRY
  1926. NG X2,AFM1 IF HOLE
  1927. SA4 X3+B2 CHECK LENGTH
  1928. LX2 59-57
  1929. NG X2,AFM1 IF IMMOVABLE FILE
  1930. MX2 -24
  1931. LX4 24
  1932. BX4 -X2*X4
  1933. SX2 B1+B1
  1934. IX6 X4+X2 ADD SYSTEM AND EOI SECTORS
  1935. IX2 X5-X6
  1936. ZR X2,AFM2 IF EXACT FIT
  1937. NG X2,AFM1 IF FILE TOO LARGE
  1938. SA4 AFMA BEST CANDIDATE THUS FAR
  1939. IX4 X6-X4
  1940. PL X4,AFM1 IF NOT SMALLER FILE
  1941. AFM2 SX7 B2
  1942. SA6 AFMA NEW BEST CANDIDATE LENGTH
  1943. SA7 FX NEW BEST CANDIDATE INDEX
  1944. NZ X2,AFM1 IF NOT EXACT FIT, CONTINUE SEARCH
  1945. AFM3 SA2 AFMA BEST CANDIDATE LENGTH
  1946. SX4 MNHS
  1947. ERRNG MNHS-3 MUST CONTAIN SYSTEM AND EOI SECTORS
  1948. IX6 X5-X2 HOLE-FILE-SS-EOI
  1949. SA6 AFMB POTENTIAL NEW COLLECTION HOLE LENGTH
  1950. ZR X6,AFM4 IF EXACT FIT
  1951. IX4 X6-X4 HOLE-FILE-SS-EOI-MNHS
  1952. NG X4,AFM6 IF BEST NOT GOOD ENOUGH
  1953. SA2 EF
  1954. NZ X2,AFM6 IF EXACT FIT REQUIRED
  1955. SA2 L.TAPE
  1956. ZR X2,AFM6 IF NO PFC AVAILABLE AND NOT EXACT FIT
  1957.  
  1958. * COPY THE FILL FILE INTO THE COLLECTION HOLE.
  1959.  
  1960. AFM4 SA2 FX FILL FILE INDEX
  1961. NG X2,AFM6 IF NEVER FOUND A VALID CANDIDATE
  1962. SX0 =C/ INTERNAL ERROR, HOLE LENGTH NEGATIVE IN AFM./
  1963. NG X6,ERR IF HOLE LENGTH NEGATIVE
  1964. SB3 X2
  1965. SA2 X1+B3 BASE + OFFSET
  1966. BX6 X2
  1967. SA6 FF FILL FILE ENTRY
  1968. SA1 HE COLLECTION HOLE ENTRY
  1969. MX4 -24
  1970. BX6 -X4*X1
  1971. SA6 O+6 OUTPUT I/O SETUP
  1972. BX7 -X4*X2
  1973. SA7 I+6 INPUT I/O SETUP
  1974. SA7 FB RSA OF FILE DATA
  1975. SA1 AFMA FILE LENGTH + SS + EOI
  1976. SX7 B1
  1977. IX6 X1-X7 REMOVE EOI FROM LENGTH
  1978. SA6 FS FILE SIZE + SS
  1979. SA1 FF
  1980. RJ RCE SET (A0) FOR *CDF*
  1981. SA1 FF FILE *TFRI* ENTRY
  1982. RJ CDF COPY DATA FOR FILE
  1983. RJ UFF UPDATE AFTER FILL FILE MOVE
  1984. SA3 FS FILES SIZE + SYSTEM SECTOR
  1985. SA4 JM JUMP FILL MOVE STATISTICS
  1986. SX7 B1
  1987. IX3 X3-X7 REMOVE SYSTEM SECTOR FROM FILE SIZE
  1988. IX4 X4+X7 INCREMENT COUNT
  1989. LX3 30
  1990. IX7 X3+X4
  1991. SA7 A4 UPDATE STATISTICS
  1992. SA1 AFMB
  1993. NZ X1,AFM5 IF NOT AN EXACT FIT
  1994. SX1 -B1 INDICATE COLLECTION HOLE CLOSED
  1995. EQ AFMX RETURN
  1996.  
  1997. AFM5 SX1 B1 INDICATE COLLECTION HOLE OPEN
  1998. EQ AFMX RETURN
  1999.  
  2000.  
  2001. AFMA CON 0 BEST CANDIDATE LENGTH
  2002. AFMB CON 0 ZERO IF EXACT FIT (HOLE - FILE - SS - EOI)
  2003. ASM SPACE 4,10
  2004. ** ASM - ATTEMPT SLIDE MOVE.
  2005. *
  2006. * ENTRY (HL) = COLLECTION HOLE LENGTH.
  2007. * (HE) = COLLECTION HOLE ENTRY.
  2008. * (FE) = SLIDE FILE ENTRY.
  2009. * (IX) = INDEX OF SLIDE FILE.
  2010. * (IX)-1 = INDEX OF COLLECTION HOLE.
  2011. *
  2012. * EXIT (X1) .GE. 0, IF THE FILE WAS MOVED.
  2013. * THE COLLECTION HOLE IS OPEN.
  2014. * (X1) .LT. 0, IF THE FILE WAS NOT MOVED.
  2015. * THE COLLECTION HOLE IS CLOSED.
  2016. *
  2017. * USES X - 1, 2, 3, 4, 5, 6, 7.
  2018. * A - 1, 2, 3, 4, 5, 6, 7.
  2019. * B - 2.
  2020. *
  2021. * CALLS CDF, CFL, RCE, UFE, UHE.
  2022.  
  2023.  
  2024. ASM SUBR ENTRY/EXIT
  2025.  
  2026. * SET UP I/O FOR POTENTIAL MOVE.
  2027.  
  2028. SA1 HE COLLECTION HOLE ENTRY
  2029. SA2 FE SLIDE FILE ENTRY
  2030. MX4 -24
  2031. BX6 -X4*X1
  2032. SA6 O+6 OUTPUT I/O SET UP
  2033. BX7 -X4*X2
  2034. SA7 I+6 INPUT I/O SET UP
  2035. SA7 FB REMEMBER WHERE FILE STARTED
  2036.  
  2037. * CHECK IF THE FILE FITS IN THE COLLECTION HOLE.
  2038.  
  2039. SA1 F.TFRI
  2040. SA2 IX
  2041. SB2 X2
  2042. SA2 X1+B2 (A2), (X2) ENTRY CONDITIONS FOR *CFL*
  2043. RJ CFL GET FILE LENGTH
  2044. SX5 B1 ADD SYSTEM SECTOR
  2045. IX6 X6+X5
  2046. SA6 FS
  2047. SA5 HL
  2048. IX3 X5-X6
  2049. ZR X3,ASM4 IF HOLE TOO SMALL
  2050. NG X3,ASM4 IF HOLE TOO SMALL
  2051.  
  2052. * DETERMINE IF THE MOVE IS PRACTICAL.
  2053.  
  2054. SA1 NS
  2055. NZ X1,ASM4 IF SLIDE MOVE TECHNIQUE IS NOT TO BE USED
  2056. SA1 F.TFRI
  2057. SA2 IX
  2058. SA3 LT *TFHL TABLE ACTIVE* FLAG
  2059. SB2 X2-1
  2060. SA2 X1+B2 ENTRY MINUS ONE
  2061. ASM1 SA2 A2+B1 GET NEXT ENTRY
  2062. NG X2,ASM3 IF HOLE
  2063. NZ X2,ASM2 IF NOT EOI
  2064. SA2 EI RSA OF EOI
  2065. EQ ASM3 CHECK SIZE OF MOVE
  2066.  
  2067. ASM2 BX1 X2
  2068. LX1 59-57 CHECK IF IMMOVABLE FILE
  2069. NG X1,ASM4 IF FILE MAY NOT BE MOVED
  2070. NZ X3,ASM1 IF *TFHL* TABLE IS NOT ACTIVE
  2071. RJ CFL GET FILE LENGTH
  2072. SX5 B1 + SS + EOI - 1
  2073. IX6 X6+X5
  2074. SA5 HL
  2075. IX3 X5-X6
  2076. ZR X3,ASM4 IF HOLE TOO SMALL
  2077. NG X3,ASM4 IF HOLE TOO SMALL
  2078. SA3 LT REFETCH *TFHL TABLE ACTIVE* FLAG
  2079. EQ ASM1 GET NEXT ENTRY
  2080.  
  2081. ASM3 SA3 FB RSA OF START TO MOVE
  2082. MX4 -24
  2083. BX1 -X4*X2 RSA OF END OF MOVE
  2084. IX4 X1-X3 TOTAL SECTORS TO MOVE
  2085. IX5 X4/X5 DATA/HOLE SIZE
  2086. SA4 MR
  2087. IX4 X4-X5
  2088. ZR X4,ASM4 IF NOT WARRANTED
  2089. PL X4,ASM5 IF MOVE WARRANTED
  2090.  
  2091. * SKIP HOLE.
  2092.  
  2093. ASM4 RJ UHE UPDATE HOLE CATALOG ENTRY
  2094. SX1 -B1 INDICATE COLLECTION HOLE CLOSED
  2095. EQ ASMX RETURN
  2096.  
  2097. * MOVE ONE FILE.
  2098.  
  2099. ASM5 SA1 FE
  2100. RJ RCE SET (A0) FOR *CDF*
  2101. SA1 FE FILE *TFRI* ENTRY
  2102. RJ CDF COPY FILE INTO HOLE
  2103. RJ UFE UPDATE CATALOG ENTRY FOR FILE
  2104. SA3 FS FILE SIZE + SYSTEM SECTOR
  2105. SA4 SM JUMP FILL MOVE STATISTICS
  2106. SX7 B1
  2107. IX3 X3-X7 REMOVE SYSTEM SECTOR FROM FILE SIZE
  2108. IX4 X4+X7 INCREMENT COUNT
  2109. LX3 30
  2110. IX7 X3+X4
  2111. SA7 A4 UPDATE STATISTICS
  2112. SX1 B1+ INDICATE COLLECTION HOLE OPEN
  2113. EQ ASMX RETURN
  2114. ATD SPACE 4,25
  2115. ** ATD - ATTEMPT PRE-MOVE TRACK DELINK.
  2116. *
  2117. * ENTRY (HL) = COLLECTION HOLE LENGTH.
  2118. * (HE) = COLLECTION HOLE ENTRY.
  2119. * (IX)-1 = INDEX OF COLLECTION HOLE.
  2120. *
  2121. * EXIT (X1) .LT. 0, IF A TRACK OR TRACKS HAVE BEEN DELINKED.
  2122. * THE COLLECTION HOLE IS CLOSED.
  2123. * (X1) .GE. 0, IF NO TRACKS WERE DELINKED.
  2124. * THE COLLECTION HOLE IS OPEN.
  2125. * (IX) = UPDATED IF NEEDED TO REPROCESS CLOSED
  2126. * COLLECTION HOLE ENTRY.
  2127. *
  2128. * USES X - 1, 2, 3, 5, 6, 7.
  2129. * A - 1, 2, 3, 5, 6, 7.
  2130. *
  2131. * CALLS CRA, FLT, UHE, VHS.
  2132.  
  2133.  
  2134. ATD2 SX1 B0+ INDICATE NO TRACKS DELINKED
  2135.  
  2136. ATD SUBR ENTRY/EXIT
  2137. SA1 NP
  2138. NZ X1,ATD2 IF NO PRE-MOVE TRACK DELINK IS TO BE DONE
  2139. SA5 HE GET HOLE ENTRY
  2140. RJ CRA CONVERT RANDOM ADDRESS
  2141. RJ FLT FIND LAST TRACK
  2142. ZR X6,ATD2 IF TRACK AT END OF IAPF CHAIN
  2143. RJ VHS VERIFY HOLE SIZE
  2144. NG X7,ATD2 IF NO TRACKS CAN BE DELINKED
  2145. SA1 HS
  2146. SA2 DS
  2147. BX6 X1
  2148. BX7 X2
  2149. SA1 L.TFRI
  2150. SA6 ATDA SAVE HOLE STATISTICS PRIOR TO *UHE*
  2151. SA7 ATDB SAVE TRACK STATISTICS PRIOR TO *UHE*
  2152. BX6 X1
  2153. SA6 ATDC SAVE *TFRI* LENGTH PRIOR TO *UHE*
  2154. RJ UHE UPDATE HOLE ENTRY
  2155. SA1 ATDA HOLE STATISTICS PRIOR TO *UHE*
  2156. SA2 DS TRACKS DROPPED AFTER *UHE*
  2157. SA5 ATDB TRACKS DROPPED STATISTICS
  2158. BX6 X1
  2159. IX7 X2-X5 CHANGES MADE BY *UHE*
  2160. SA6 HS RESTORE HOLE STATISTICS
  2161. SA1 HR HOLES REMOVED
  2162. MX2 30
  2163. BX7 X2*X7
  2164. IX7 X1+X7 ADD SPACE DELINKED
  2165. SA7 A1
  2166. SA2 L.TFRI *TFRI* LENGTH AFTER *UHE*
  2167. SA3 ATDC *TFRI* LENGTH BEFORE *UHE*
  2168. IX6 X2-X3
  2169. NG X6,ATD1 IF THE HOLE ENTRY WAS DELETED FROM *TFRI*
  2170. SA2 IX
  2171. SX6 X2-1
  2172. SA6 A2 DECREMENT *IX* TO REPROCESS HOLE
  2173. ATD1 SX1 -B1 INDICATE COLLECTION HOLE CLOSED
  2174. EQ ATDX RETURN
  2175.  
  2176.  
  2177. ATDA CON 0 STORAGE FOR HOLES LEFT STATISTICS
  2178. ATDB CON 0 STORAGE FOR TRACKS DROPPED STATISTICS
  2179. ATDC CON 0 STORAGE FOR *TFRI* LENGTH
  2180. CDF SPACE 4,20
  2181. ** CDF - COPY DATA FOR FILE.
  2182. *
  2183. * ENTRY (I+6) = RSA OF FILE DATA.
  2184. * (O+6) = RSA OF TARGET.
  2185. * (FB) = RSA OF FILE DATA.
  2186. * (FS) = FILE SIZE FROM PFC ( + 1 FOR SS).
  2187. * (A0) = ADDRESS OF PFC OR ZERO FOR NO PFC UPDATE IN SS.
  2188. * (X1) = FILE *TFRI* ENTRY.
  2189. *
  2190. * EXIT DATA COPIED TO TARGET.
  2191. * PFC IN SYSTEM SECTOR UPDATED IF REQUESTED.
  2192. * TO *ERR* IF ERROR.
  2193. *
  2194. * USES X - ALL.
  2195. * A - 1, 2, 3, 4, 5, 6, 7.
  2196. * B - 5, 7.
  2197. *
  2198. * CALLS CRA, FPI, MSG, USS.
  2199. *
  2200. * MACROS BKSPRU, READ, REWRITE, REWRITEF, REWRITER, SYSTEM.
  2201.  
  2202.  
  2203. CDF9 SA1 DM UPDATE STATISTICS FOR *NO CHANGE* OPTION
  2204. SA2 FS
  2205. SX6 B1
  2206. IX2 X2-X6 REMOVE SYSTEM SECTOR FROM FILE SIZE
  2207. LX2 30
  2208. IX6 X2+X6 COUNT FILE
  2209. IX6 X1+X6
  2210. SA6 A1+
  2211.  
  2212. CDF SUBR ENTRY/EXIT
  2213. BX6 X1 FILE *TFRI* ENTRY
  2214. SA6 CDFB
  2215. SX0 =C/ INTERCHANGING HOLE-FILE./
  2216. RJ MSG
  2217. SA1 NC
  2218. NZ X1,CDF9 IF NO CHANGES ARE TO BE MADE TO THE DEVICE
  2219. SYSTEM MPF,R,I,4S6 READ SYSTEM SECTOR
  2220. SA5 O+6
  2221. RJ CRA
  2222. SA1 I+1
  2223. RJ USS UPDATE SYSTEM SECTOR
  2224. SYSTEM MPF,R,O,5S6 WRITE SYSTEM SECTOR
  2225. SX6 1
  2226. SA6 CDFA SET NO EOR FLAG INITIALLY
  2227. CDF1 SA1 O+2 IN
  2228. SA3 A1+B1 OUT
  2229. BX6 X1
  2230. BX7 X3
  2231. SA6 I+2
  2232. SA7 A6+B1
  2233. READ I,R
  2234. SA1 I+2 IN
  2235. SA3 A1+B1
  2236. BX6 X1
  2237. BX7 X3
  2238. SA6 O+2
  2239. SA7 A6+B1
  2240. SA1 X2
  2241. LX1 59-9
  2242. NG X1,CDF6 IF EOI
  2243. LX1 9-4
  2244. LX2 X1,B1
  2245. NG X1,CDF2 IF EOR OR EOF
  2246. REWRITE O,R
  2247. SA1 BF INCREMENT BUFFER FULL COUNT
  2248. SX6 X1+B1
  2249. SA6 A1
  2250. SA6 CDFA SET NO EOR FLAG
  2251. EQ CDF1 LOOP
  2252.  
  2253. CDF2 NG X2,CDF3 IF EOF
  2254. REWRITER O,R
  2255. SX6 B0+
  2256. SA6 CDFA CLEAR NO EOR FLAG
  2257. EQ CDF1 LOOP
  2258.  
  2259. CDF3 SA1 O+2 CHECK FOR DATA WITH EOF
  2260. SA2 A1+B1
  2261. IX2 X1-X2
  2262. NZ X2,CDF4 IF DATA IN BUFFER
  2263. SA1 CDFA
  2264. ZR X1,CDF5 IF EOR/EOF WRITTEN
  2265. CDF4 REWRITER O,R
  2266. BKSPRU O,1,R BACK OVER EMPTY PRU
  2267. CDF5 REWRITEF O,R WRITE EOF
  2268. SX6 B0+
  2269. SA6 CDFA CLEAR NO EOR FLAG
  2270. EQ CDF1 LOOP
  2271.  
  2272. CDF6 SA1 I+6 CHECK DATA COPIED
  2273. SA2 FB
  2274. SA3 FS
  2275. SA4 DM
  2276. SX7 B1
  2277. AX1 30
  2278. IX2 X2+X3
  2279. BX6 X1-X2
  2280. IX3 X3-X7 REMOVE SYSTEM SECTOR FROM FILE SIZE
  2281. LX3 30
  2282. IX3 X3+X7 INCREMENT FILE COUNT
  2283. IX7 X4+X3
  2284. SA7 A4
  2285. NZ X6,CDF8 IF NOT CORRECT LENGTH
  2286. SA3 O+2
  2287. SA4 A3+B1
  2288. BX6 X3-X4
  2289. ZR X6,CDF7 IF NO DATA IN BUFFER
  2290. REWRITE O,R
  2291. CDF7 REWRITER O,R FORCE FST UPDATE FOR *MPF*
  2292. BKSPRU X2,1,R
  2293. SYSTEM MPF,R,O,1S6 REWRITE EOI
  2294. EQ CDFX RETURN
  2295.  
  2296. CDF8 SA1 CDFB FILE *TFRI* ENTRY
  2297. SB7 1R(
  2298. SB5 CDFC
  2299. RJ FPI FORMAT PFC INFORMATION
  2300. SX0 CDFC * FILE LENGTH ERROR TTTT/SSSS/O.*
  2301. EQ ERR ABORT
  2302.  
  2303.  
  2304. CDFA CON 0 NO EOR/EOF WRITTEN FLAG
  2305. CDFB CON 0 FILE *TFRI* ENTRY
  2306. CDFC DATA C* FILE LENGTH ERROR ((((/))))/$.*
  2307. CEO SPACE 4,15
  2308. ** CEO - CHECK ENTRY OVERLAP.
  2309. *
  2310. * EXIT TO *ERR* IF OVERLAP.
  2311. *
  2312. * USES X - 0, 1, 2, 3, 4, 6, 7.
  2313. * A - 1, 2, 3, 4, 6, 7.
  2314. * B - 2, 3.
  2315. *
  2316. * CALLS IOM, MSG.
  2317.  
  2318.  
  2319. CEO SUBR ENTRY/EXIT
  2320. SA1 LT
  2321. NZ X1,CEOX IF *TFHL* TABLE IS NOT ACTIVE
  2322. SX0 =C/ CHECKING ENTRY OVERLAP./
  2323. RJ MSG
  2324. BX6 X6-X6
  2325. SX7 -B1
  2326. SA6 CEOC CLEAR PREVIOUS EOI+1
  2327. SA7 CEOD PRESET INDEX
  2328. SA3 L.TFRI
  2329. SA4 L.TFHL
  2330. BX6 X3-X4
  2331. SX0 =C* INTERNAL ERROR, TFRI/TFHL LENGTH MISMATCH IN CEO.*
  2332. NZ X6,ERR IF *TFRI*/*TFHL* LENGTH MISMATCH
  2333. SB2 X3
  2334. SA3 F.TFRI
  2335. SA4 F.TFHL
  2336. SA1 X3+B2
  2337. SA2 X4+B2
  2338. BX6 X1+X2
  2339. SX0 =C* INTERNAL ERROR, MISSING TABLE TERMINATOR IN CEO.*
  2340. NZ X6,ERR IF NO ZERO WORD FOLLOWING TABLES
  2341.  
  2342. * TABLE SCAN LOOP.
  2343.  
  2344. CEO1 SA1 CEOC PREVIOUS EOI + 1
  2345. SA2 CEOD INDEX
  2346. SA3 L.TFRI
  2347. SB2 X2
  2348. SB3 X3
  2349. BX7 X1
  2350. MX0 -24
  2351. SA3 F.TFRI
  2352. SA4 F.TFHL
  2353. CEO2 SB2 B2+B1
  2354. GT B2,B3,CEO5 IF NO MORE ENTRIES TO EXAMINE
  2355. EQ B2,B3,CEO3 IF AT EOI
  2356. SA1 X3+B2 *TFRI* ENTRY
  2357. SA2 X4+B2 *TFHL* ENTRY
  2358. BX6 X1-X2
  2359. BX6 -X0*X6
  2360. SX0 =C* INTERNAL ERROR, TRFI/TFHL MISMATCH IN CEO.*
  2361. NZ X6,ERR IF *TFRI*/*TFHL* TABLE MISMATCH
  2362. MX0 -24
  2363. BX6 -X0*X2 RSA
  2364. IX1 X6-X7 RSA - (RSA OF PREVIOUS EOI+1)
  2365. SX7 B1+B1
  2366. LX2 24
  2367. BX2 -X0*X2 LENGTH
  2368. IX7 X2+X7 LENGTH + SS + EOI
  2369. IX7 X6+X7 NEW PREVIOUS EOI + 1
  2370. PL X1,CEO2 IF NO OVERLAP
  2371. EQ CEO4 PROCESS ERROR
  2372.  
  2373. CEO3 SA1 EI
  2374. IX1 X1-X7
  2375. PL X1,CEO2 IF NO OVERLAP WITH IAPF CHAIN EOI
  2376.  
  2377. * ISSUE ENTRY OVERLAP MESSAGE.
  2378.  
  2379. CEO4 SA7 CEOC SAVE PREVIOUS EOI + 1
  2380. SX6 B2
  2381. SX7 B1
  2382. SA6 CEOD SAVE INDEX
  2383. SA7 CEOB SET ERROR ENCOUNTERED
  2384. SB2 B2-1
  2385. RJ IOM ISSUE OVERLAP MESSAGE
  2386. EQ CEO1 LOOP
  2387.  
  2388. * TERMINATE.
  2389.  
  2390. CEO5 SA1 CEOB
  2391. ZR X1,CEOX IF NO ERRORS ENCOUNTERED
  2392. SX0 =C/ IAPF CHAIN OVERLAP./
  2393. SA1 CEOA
  2394. ZR X1,ERR IF EXTERNAL ERROR
  2395. SX0 =C/ INTERNAL ERROR, CEO DETECTED ERRORS./
  2396. EQ ERR INTERNAL ERROR
  2397.  
  2398.  
  2399. CEOA CON 0 INTERNAL/EXTERNAL ERROR MESSAGE FLAG
  2400. CEOB CON 0 ERRORS ENCOUNTERED FLAG
  2401. CEOC CON 0 PREVIOUS EOI + 1
  2402. CEOD CON 0 INDEX
  2403. CFL SPACE 4,15
  2404. ** CFL - CHECK FILE LENGTH.
  2405. *
  2406. * ENTRY (A2,X2) = *TFRI* TABLE ENTRY OF FILE.
  2407. *
  2408. * EXIT (X6) = FILE LENGTH (FROM THE PFC).
  2409. * (X7) = LOST SPACE AFTER FILE.
  2410. * TO *ERR* IF ERROR.
  2411. *
  2412. * USES X - 0, 1, 3, 4, 5, 6, 7.
  2413. * A - 3, 5.
  2414. * A - 5, 7.
  2415. *
  2416. * CALLS FPI, RCE.
  2417.  
  2418.  
  2419. CFL SUBR ENTRY/EXIT
  2420. SA3 A2+B1 GET NEXT ENTRY
  2421. SA5 MR
  2422. MX4 -24
  2423. NZ X3,CFL1 IF NOT AT EOI
  2424. SA3 EI
  2425. CFL1 BX6 -X4*X2 GET IMPLIED LENGTH
  2426. BX3 -X4*X3
  2427. IX6 X3-X6
  2428. SX7 B1+B1 ADD SYSTEM AND EOI SECTORS
  2429. IX6 X6-X7
  2430. BX7 X7-X7
  2431. NG X6,CFL4 IF NOT ENOUGH ROOM FOR FILE
  2432. SA3 LT
  2433. NZ X3,CFL2 IF *TFHL* IS NOT ACTIVE
  2434. BX5 X6
  2435. SA3 F.TFRI FWA OF TABLE
  2436. SX1 A2 ENTRY ADDRESS
  2437. IX1 X1-X3 OFFSET IN TABLE
  2438. SA3 F.TFHL
  2439. IX3 X3+X1
  2440. SA3 X3 FETCH FILE LENGTH
  2441. MX4 -24
  2442. BX1 X2-X3 COMPARE RSA-S FROM *TFRI* AND *TFHL*
  2443. BX4 -X4*X1
  2444. NZ X4,CFL5 IF TABLES DO NOT MATCH
  2445. EQ CFL3 CHECK LENGTH
  2446.  
  2447. CFL2 ZR X5,CFLX IF *MR=0*, DO NOT READ CATALOG
  2448. SA3 IX
  2449. BX5 X6
  2450. BX1 X2
  2451. SX4 X3-2
  2452. SX3 B0+ ANCHOR ENTRY DATA LENGTH
  2453. NG X4,CFL3 IF ANCHOR ENTRY, IT DOES NOT HAVE A PFC
  2454. RJ RCE READ CATALOG ENTRY
  2455. SA3 A0+FCLF GET LENGTH FROM CATALOG
  2456. CFL3 MX4 -24
  2457. LX3 24
  2458. BX6 -X4*X3
  2459. IX7 X5-X6
  2460. PL X7,CFLX IF IMPLIED .GE. CATALOG LENGTH
  2461. CFL4 BX1 X2 *TFRI* ENTRY
  2462. SB7 1R(
  2463. SB5 CFLA
  2464. RJ FPI FORMAT PFC INFORMATION
  2465. SA3 A2+B1 NEXT *TFRI* ENTRY
  2466. BX1 X3
  2467. SB7 1R[
  2468. SB5 CFLA
  2469. RJ FPI FORMAT PFC INFORMATION
  2470. SX0 CFLA * FILE OVERLAP TTTT/SSSS/O, TTTT/SSSS/O.*
  2471. EQ ERR ABORT
  2472.  
  2473. CFL5 SX0 =C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN CFL.*
  2474. EQ ERR ABORT
  2475.  
  2476.  
  2477. CFLA DATA C* FILE OVERLAP ((((/))))/$, [[[[/]]]]/%.*
  2478. CIP SPACE 4,20
  2479. ** CIP - CLEAR IRRELEVANT PFC INFORMATION.
  2480. *
  2481. * THIS ROUTINE CLEARS ALL WORDS OF THE PFC EXCEPT FOR PFC+1.
  2482. * THE CURRENT PACKED DATE AND TIME IS PLACED INTO THE CREATION
  2483. * DATE AND TIME FIELD. THIS IS DONE TO SIMPLIFY DISK RECOVERY
  2484. * VIA *DDF* SINCE THE INFORMATION CLEARED NO LONGER RELATES TO
  2485. * WHERE THE PFC NOW POINTS.
  2486. *
  2487. * ENTRY (A0) = ADDRESS OF THE PFC.
  2488. *
  2489. * EXIT (A0) = UNCHANGED.
  2490. *
  2491. * USES X - 1, 6.
  2492. * A - 1, 6.
  2493. * B - 6, 7.
  2494.  
  2495.  
  2496. CIP SUBR ENTRY/EXIT
  2497. BX6 X6-X6
  2498. SA6 A0 CLEAR WORD 0
  2499. SB7 17B LAST WORD OFFSET TO CLEAR
  2500. SB6 B1 SKIP WORD 1
  2501. ERRNZ 1-FCBT CODE DEPENDS ON THE VALUE OF *FCBT*
  2502. ERRNZ 1-FCLF CODE DEPENDS ON THE VALUE OF *FCLF*
  2503. CIP1 SB6 B6+B1
  2504. SA6 A0+B6 CLEAR WORDS 2 TO 17B
  2505. LT B6,B7,CIP1 IF FINAL WORD NOT CLEARED
  2506. SA1 PD PACKED DATE AND TIME
  2507. BX6 X1
  2508. SA6 A0+FCCD SET CREATION DATE AND TIME
  2509. EQ CIPX RETURN
  2510. CIT SPACE 4,15
  2511. ** CIT - CLEAR INTERLOCKS.
  2512. *
  2513. * ENTRY (IF) = INTERLOCK REQUEST.
  2514. *
  2515. * EXIT FILES RETURNED, ETC.
  2516. *
  2517. * USES X - 1, 7.
  2518. * A - 1, 7.
  2519. *
  2520. * MACROS CALLPFU, RETURN.
  2521.  
  2522.  
  2523. CIT SUBR ENTRY/EXIT
  2524. RETURN C,R
  2525. RETURN I,R
  2526. RETURN O,R
  2527. SA1 EQ
  2528. NG X1,CITX IF NEVER INTERLOCKED
  2529. SX7 IF
  2530. LX1 48
  2531. BX7 X7+X1 SET EST ORDINAL AND INTERLOCK FLAG
  2532. SA7 C+FTPM
  2533. CALLPFU C,CTCU,R CLEAR UTILITY INTERLOCK
  2534. EQ CITX RETURN
  2535. CRA SPACE 4,20
  2536. ** CRA - CONVERT RANDOM ADDRESS.
  2537. *
  2538. * ENTRY (X5) = 36/ ,24/RSA.
  2539. *
  2540. * EXIT (X5) = 36/ 0,12/ TK,12/ SECTOR.
  2541. * (X4) = 36/ 0,12/ TK,12/ 0.
  2542. * (X3) = (SL).
  2543. * (X0) = -7777B.
  2544. * (B6) = (F.TTLT)-1S11.
  2545. * TO *ERR* IF ERROR.
  2546. *
  2547. * USES X - 0, 1, 3, 4, 5, 6.
  2548. * A - 1, 3.
  2549. * B - 6, 7.
  2550.  
  2551.  
  2552. CRA4 BX6 -X0*X1 LINK OR EOI SECTOR
  2553. IX5 X5+X3 SECTOR ON TRACK
  2554. LX4 12
  2555. IX6 X6-X5
  2556. NG X6,CRA3 IF BEYOND EOI
  2557. BX5 X5+X4
  2558.  
  2559. CRA SUBR ENTRY/EXIT
  2560. MX0 -24
  2561. BX5 -X0*X5
  2562. SA1 F.TTLT
  2563. SB7 59-11 SHIFT COUNT FOR TRACK BIT
  2564. SB6 X1-1S11
  2565. SA1 FT FIRST TRACK OF IAPF CHAIN
  2566. SA3 SL SECTORS/TRACK
  2567. MX0 -12
  2568. BX6 -X6+X6 (X6) = -0
  2569. EQ CRA2 ENTER LOOP
  2570.  
  2571. CRA1 IX5 X5-X3
  2572. NG X5,CRA4 IF RSA ON THIS TRACK
  2573. LX6 X1,B7
  2574. CRA2 PL X6,CRA3 IF EOI
  2575. BX4 -X0*X1 NEXT TRACK
  2576. SA1 X4+B6
  2577. EQ CRA1 LOOP
  2578.  
  2579. CRA3 SX0 =C/ RSA NOT ON CHAIN./
  2580. EQ ERR ABORT
  2581. CTC SPACE 4,15
  2582. ** CTC - CHECK TERMINATION CONDITIONS.
  2583. *
  2584. * EXIT (X1) .NE. 0, IF TERMINATION CONDITIONS MET.
  2585. *
  2586. * USES X - 1, 5, 6.
  2587. * A - 1, 5, 6.
  2588. *
  2589. * PRESERVES A2, X2.
  2590. *
  2591. * MACROS MESSAGE, RTIME.
  2592.  
  2593.  
  2594. CTC2 MESSAGE (=C/ REAL TIME DURATION TERMINATION./)
  2595. EQ CTC4 SET RETURN STATUS
  2596.  
  2597. CTC3 MESSAGE (=C/ SENSE SWITCH ONE TERMINATION./)
  2598. CTC4 SX1 B1 INDICATE TERMINATION CONDITIONS MET
  2599. SX6 B1
  2600. SA6 IS SET INCOMPLETE/INACCURATE STATISTICS
  2601.  
  2602. CTC SUBR ENTRY/EXIT
  2603. SA1 ID CHECK IDLE DOWN FLAG
  2604. NZ X1,CTC4 IF OPERATOR IDLE DOWN REQUESTED
  2605. SA1 B0
  2606. LX1 59-6 CHECK SENSE SWITCH ONE
  2607. NG X1,CTC3 IF SENSE SWITCH ONE IS SET
  2608. SA5 TL
  2609. ZR X5,CTC1 IF NO TIME LIMIT
  2610. RTIME CTCB
  2611. SA1 CTCB
  2612. IX1 X5-X1
  2613. NG X1,CTC2 IF TIME TO QUIT
  2614. CTC1 BX1 X1-X1 INDICATE TERMINATION CONDITIONS NOT MET
  2615. EQ CTCX RETURN
  2616.  
  2617.  
  2618. CTCB CON 0 CURRENT TIME STORAGE
  2619. CTE SPACE 4,25
  2620. ** CTE - CREATE AND INSERT TABLE ENTRY.
  2621. *
  2622. * ENTRY (X1) = INDEX OF ENTRY BEFORE WHICH TO INSERT THE
  2623. * NEW ENTRY.
  2624. * (X2) = RSA OF THE SPACE ON THE CHAIN.
  2625. * (X6) = LENGTH OF THE SPACE (AS IN PFC, W/O SS EOI).
  2626. *
  2627. * EXIT NEW ENTRY CREATED, INSERTED INTO *TFRI*/*TFHL* TABLES.
  2628. * (X6) = ENTRY INSERTED.
  2629. * (HD) = UPDATED.
  2630. * (LT) = UPDATED (*TFHL* TABLE MAY BECOME INACTIVE).
  2631. * TO *ERR* IF ERROR.
  2632. *
  2633. * USES X - 0, 1, 2, 3, 4, 6, 7.
  2634. * A - 1, 2, 3, 4, 6, 7.
  2635. * B - 7.
  2636. *
  2637. * CALLS ZWT.
  2638. *
  2639. * MACROS ADDWRD, MOVE.
  2640.  
  2641.  
  2642. CTE4 SX0 =C/ INTERNAL ERROR, TAPE TABLE EMPTY IN CTE./
  2643. EQ ERR ABORT
  2644.  
  2645. CTE SUBR ENTRY/EXIT
  2646. SA3 F.TAPE
  2647. SA4 L.TAPE
  2648. ZR X4,CTE4 IF *TAPE* TABLE EMPTY
  2649. NG X4,CTE4 IF *TAPE* TABLE EMPTY
  2650. SX7 B1
  2651. IX7 X4-X7
  2652. SA7 A4 NEW LENGTH OF TABLE
  2653. SB7 X7
  2654. SA3 X3+B7 FETCH ENTRY
  2655. MX0 -24
  2656. BX2 -X0*X2 RSA
  2657. BX7 X0*X3 *TFRI* ENTRY W/O RSA
  2658. BX7 X7+X2
  2659. SA7 CTEA NEW *TFRI* ENTRY
  2660. BX6 -X0*X6 LENGTH
  2661. LX6 -24
  2662. BX6 X2+X6
  2663. SA6 CTEB *TFHL* ENTRY
  2664. BX6 X1
  2665. SA6 CTEC INDEX
  2666. BX1 X1-X1
  2667. ADDWRD TFRI,X1 MAKE ROOM
  2668. SA1 L.TFRI
  2669. SA2 F.TFRI
  2670. SA3 CTEC INDEX
  2671. IX1 X1-X3 LENGTH - OFFSET = WORDS TO MOVE
  2672. IX3 X2+X3 FROM
  2673. MOVE X1,X3,X3+B1
  2674. SA1 F.TFRI
  2675. SA2 CTEC INDEX
  2676. SA3 CTEA *TFRI* ENTRY
  2677. SB7 X2
  2678. BX6 X3
  2679. SA6 X1+B7 INSERT ENTRY
  2680. SA1 HD
  2681. SX6 X1-1
  2682. NG X6,CTE1 IF LESS THAN ZERO
  2683. SA6 A1
  2684. CTE1 SA1 LT
  2685. NZ X1,CTE3 IF *TFHL* TABLE IS NOT ACTIVE
  2686. BX1 X1-X1
  2687. ADDWRD TFHL,X1 MAKE ROOM
  2688. SA1 LT
  2689. ZR X1,CTE2 IF *TFHL* TABLE IS STILL ACTIVE
  2690. BX6 X6-X6
  2691. SA6 L.TFHL CLEAR LENGTH
  2692. EQ CTE3 ZERO WORD TERMINATE *TFRI* TABLE
  2693.  
  2694. CTE2 SA1 L.TFHL
  2695. SA2 F.TFHL
  2696. SA3 CTEC INDEX
  2697. IX1 X1-X3 LENGTH - OFFSET = WORDS TO MOVE
  2698. IX3 X2+X3 FROM
  2699. MOVE X1,X3,X3+B1
  2700. SA1 F.TFHL
  2701. SA2 CTEC INDEX
  2702. SA3 CTEB *TFHL* ENTRY
  2703. SB7 X2
  2704. BX6 X3
  2705. SA6 X1+B7 INSERT ENTRY
  2706. SA1 HD
  2707. SX6 X1-1
  2708. NG X6,CTE3 IF LESS THAN ZERO
  2709. SA6 A1
  2710. CTE3 RJ ZWT ZERO WORD TERMINATE *TFRI* TABLE
  2711. SA1 CTEA
  2712. BX6 X1 EXIT CONDITION
  2713. EQ CTEX RETURN
  2714.  
  2715.  
  2716. CTEA CON 0 NEW *TFRI* ENTRY
  2717. CTEB CON 0 NEW *TFHL* ENTRY
  2718. CTEC CON 0 INDEX BEFORE WHICH TO INSERT THE NEW ENTRY
  2719. DLK SPACE 4,25
  2720. ** DLK - DELINK TRACKS IN MIDDLE OF TRACK CHAIN.
  2721. *
  2722. * ENTRY (X3) = SECTOR LIMIT.
  2723. * (X4) = 36/0, 12/TRACK, 12/0 (OF HOLE).
  2724. * (X4) = 36/0, 12/TRACK, 12/SECTOR (OF HOLE).
  2725. * (B7) = 48.
  2726. * (HE) = COLLECTION HOLE *TFRI* TABLE ENTRY.
  2727. *
  2728. * EXIT TRACKS DELINKED.
  2729. * *HL*, *EI* ADJUSTED BY NUMBER OF SECTORS DELINKED.
  2730. * RANDOM INDEXES OF REMAINING FILES AND HOLES
  2731. * ADJUSTED BY NUMBER OF SECTORS DELINKED.
  2732. * TO *ERR* IF ERROR.
  2733. *
  2734. * CALLS CRA.
  2735. *
  2736. * USES X - ALL.
  2737. * A - 1, 2, 3, 5, 6.
  2738. * B - 2, 6, 7.
  2739. *
  2740. * MACROS SYSTEM.
  2741.  
  2742.  
  2743. DLK SUBR ENTRY/EXIT
  2744. BX6 X4-X5
  2745. NZ X6,DLK1 IF FIRST TRACK OF HOLE NOT TO BE DELINKED
  2746. SA5 HE FIND TRACK BEFORE HOLE
  2747. SX7 B1
  2748. IX5 X5-X7
  2749. RJ CRA CONVERT RANDOM ADDRESS
  2750. DLK1 SA1 EQ
  2751. LX2 X4,B7 FIRST TRACK
  2752. LX1 36
  2753. SX6 X2-4000B CLEAR TRACK BIT
  2754. LX6 24
  2755. BX6 X1+X6
  2756. SA1 CTIH CURRENT TRACK IN HOLE
  2757. SA2 LTIH LAST TRACK IN HOLE
  2758. LX1 12
  2759. BX6 X2+X6
  2760. BX6 X1+X6
  2761. SA6 DLKA 12/,12/EQ,12/FT,12/NT,12/LT
  2762. SA1 NC
  2763. NZ X1,DLK2 IF NO CHANGES ARE TO BE MADE TO THE DEVICE
  2764. SYSTEM MPF,R,DLKA,2S6 DELINK TRACKS
  2765. DLK2 SA1 CTIH DELINK TRACKS IN TRT TABLE
  2766. LX2 X4,B7 FIRST TRACK
  2767. BX6 X1
  2768. SA6 X2+B6 LINK FIRST TRACK TO LAST TRACK
  2769. SA1 NTIH NUMBER OF TRACKS IN HOLE
  2770. SA2 DS GET TRACKS DROPPED STATISTICS
  2771. SX1 X1-1 ACTUAL TRACKS DELINKED
  2772. IX7 X1*X3 SECTORS DELINKED
  2773. LX7 30
  2774. IX6 X1+X7 MERGE TRACK COUNT WITH SECTOR COUNT
  2775. IX6 X2+X6
  2776. SA6 A2+
  2777. LX7 -30
  2778.  
  2779. * CORRECT RANDOM INDEXES DUE TO HOLE DELINK.
  2780.  
  2781. MX0 -24
  2782. SA1 EI ADJUST EOI RANDOM INDEX
  2783. IX6 X1-X7
  2784. SA6 A1
  2785. SA1 HL ADJUST HOLE LENGTH
  2786. IX6 X1-X7
  2787. SA6 A1
  2788. SA3 LT *TFHL ACTIVE* FLAG
  2789. SA1 L.TFRI ADJUST ENTRIES IN FILE RANDOM INDEX TABLE
  2790. SA2 F.TFRI
  2791. SB6 X1-1
  2792. SB7 X2+
  2793. SA1 HE RANDOM INDEX OF HOLE ENTRY
  2794. BX1 -X0*X1
  2795. BX4 X3
  2796. NZ X4,DLK3 IF *TFHL* TABLE NOT ACTIVE
  2797. SA2 L.TFHL TABLE MISMATCH CHECK
  2798. SB2 X2-1
  2799. SB2 B2-B6
  2800. NZ B2,DLK6 IF *TFRI*/*TFHL* TABLE LENGTHS MISMATCH
  2801. SA2 F.TFHL SET UP FOR THE *TFHL* TABLE
  2802. SB2 X2+ FWA *TFHL*
  2803. DLK3 SA2 B6+B7 GET NEXT RANDOM INDEX TO ADJUST
  2804. BX6 -X0*X2
  2805. IX6 X1-X6
  2806. PL X6,DLK5 IF ALL INDEXES ADJUSTED
  2807. IX6 X2-X7
  2808. SA6 A2
  2809. NZ X4,DLK4 IF *TFHL* NOT ACTIVE
  2810. SA3 B6+B2 GET NEXT RANDOM INDEX FROM *TFHL*
  2811. IX6 X3-X7
  2812. SA6 A3+
  2813. BX6 X2-X3 COMPARE ORIGINAL RSA-S
  2814. BX6 -X0*X6
  2815. NZ X6,DLK6 IF *TFRI*/*TFHL* TABLES MISMATCH
  2816. DLK4 SB6 B6-1 DECREMENT INDEX
  2817. GT B6,DLK3 IF MORE FILES TO ADJUST
  2818. DLK5 SA5 HE RESET HOLE ADDRESS
  2819. RJ CRA CONVERT RANDOM ADDRESS
  2820. EQ DLKX RETURN
  2821.  
  2822. DLK6 SX0 =C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN DLK.*
  2823. EQ ERR ABORT
  2824.  
  2825.  
  2826. DLKA CON 0 *MPF* PARAMETER WORD
  2827. DRP SPACE 4,15
  2828. ** DRP - DROP TRACKS AT END OF TRACK CHAIN.
  2829. *
  2830. * ENTRY (HE) = HOLE ENTRY AT END OF CHAIN.
  2831. * (X3) = SECTOR LIMIT.
  2832. * (X5) = 36/ 0, 12/ FIRST TRACK, 12/ SECTOR.
  2833. *
  2834. * EXIT TRACKS DROPPED.
  2835. * (HL) = 0.
  2836. *
  2837. * USES X - 0, 1, 2, 4, 6, 7.
  2838. * A - 1, 4, 6, 7.
  2839. *
  2840. * MACROS SYSTEM.
  2841.  
  2842.  
  2843. DRP SUBR ENTRY/EXIT
  2844. SA1 HE ENTRY OF HOLE AT END OF CHAIN
  2845. MX0 -24
  2846. BX1 -X0*X1 RSA OF HOLE
  2847. SA4 EQ
  2848. SX2 B1
  2849. MX0 -12
  2850. IX7 X1-X2 RSA HOLE - 1 = FILE EOI = EOI OF CHAIN
  2851. BX4 -X0*X4
  2852. LX4 -12
  2853. BX6 X4+X7
  2854. SA6 DRPA 12/EQ, 24/, 24/EOI
  2855. SA1 EI OLD EOI
  2856. IX1 X1-X2 (EI WAS REALLY EOI+1)
  2857. IX6 X1-X7 OLD RSA - NEW RSA = SECTORS DROPPED
  2858. IX7 X7+X2 (EI REMAINS EOI+1)
  2859. SA7 A1 NEW EOI
  2860. SX7 B1
  2861. BX1 X1-X1 FULL TRACKS DROPPED
  2862. BX2 X6 SECTORS DROPPED
  2863. BX4 -X0*X5 ISOLATE FIRST SECTOR OF HOLE
  2864. ZR X4,DRP1 IF FIRST TRACK DROPPED IS A FULL TRACK
  2865. IX4 X3-X4
  2866. IX2 X2-X4 REMOVE INCOMPLETE TRACK FROM SECTOR COUNT
  2867. DRP1 ZR X2,DRP2 IF NO TRACKS REMAINING
  2868. NG X2,DRP2 IF NOT A COMPLETE TRACK REMAINING
  2869. IX1 X1+X7 INCREMENT FULL TRACKS DROPPED COUNT
  2870. IX2 X2-X3 DEBIT A TRACK OF SECTORS
  2871. EQ DRP1 LOOP
  2872.  
  2873. DRP2 IX7 X1*X3 SECTORS DROPPED (FULL TRACKS)
  2874. LX7 30
  2875. IX7 X7+X1
  2876. SA1 DS ADD TO DROPPED TRACK STATISTICS
  2877. IX7 X7+X1
  2878. SA7 A1
  2879. LX6 30 SECTORS RELEASED FROM THE IAPF CHAIN
  2880. SA1 HR HOLES RELEASED
  2881. IX6 X1+X6
  2882. SA6 A1
  2883. SX4 0S6 DROP TRACKS
  2884. SA1 NC
  2885. NZ X1,DRP3 IF NO CHANGES ARE TO BE MADE TO THE DEVICE
  2886. SYSTEM MPF,R,DRPA,X4
  2887. DRP3 SX6 B0+ RESET HOLE LENGTH
  2888. SA6 HL
  2889. EQ DRPX RETURN
  2890.  
  2891.  
  2892. DRPA CON 0 *MPF* PARAMETER WORD
  2893. DTE SPACE 4,20
  2894. ** DTE - DELETE TABLE ENTRY.
  2895. *
  2896. * ENTRY (X4) = INDEX OF ENTRY TO BE DELEATED FROM
  2897. * *TFRI* AND *TFHL* TABLES.
  2898. *
  2899. * EXIT ENTRY DELETED FROM TABLES.
  2900. *
  2901. * USES X - 1, 3, 4, 6.
  2902. * A - 1, 3, 4, 6.
  2903. * B - 7.
  2904. *
  2905. * CALLS MTD, ZWT.
  2906. *
  2907. * MACROS ADDWRD, MEMORY, MOVE.
  2908.  
  2909.  
  2910. DTE SUBR ENTRY/EXIT
  2911. SA3 F.TFRI DELETE TABLE ENTRY OF SECOND HOLE
  2912. BX6 X4
  2913. SB7 X4
  2914. SA6 DTEA SAVE INDEX
  2915. SA1 X3+B7
  2916. BX6 X1
  2917. SA6 DTEB SAVE ENTRY TO BE DELETED
  2918. SA1 L.TFRI
  2919. SX6 X1-1
  2920. IX3 X3+X4
  2921. SA6 A1 DECREMENT TABLE LENGTH
  2922. IX1 X1-X4 NUMBER OF WORDS TO MOVE
  2923. MOVE X1,X3+B1,X3
  2924. SA3 HD HOLES DELETED SINCE FL REDUCTION
  2925. SX6 X3+B1
  2926. SA6 A3
  2927. SA3 LT
  2928. NZ X3,DTE1 IF *TFHL* IS NOT ACTIVE
  2929. SA3 F.TFHL DELETE TABLE ENTRY OF SECOND HOLE
  2930. SA4 DTEA
  2931. SA1 L.TFHL
  2932. SX6 X1-1
  2933. IX3 X3+X4
  2934. SA6 A1 DECREMENT TABLE LENGTH
  2935. IX1 X1-X4 NUMBER OF WORDS TO MOVE
  2936. MOVE X1,X3+B1,X3
  2937. SA3 HD HOLES DELETED SINCE FL REDUCTION
  2938. SX6 X3+B1
  2939. SA6 A3
  2940. SA1 DTEB
  2941. MX3 -24
  2942. BX6 X3*X1 REMOVE RSA
  2943. MX1 10D
  2944. BX6 -X1*X6 REMOVE FLAGS
  2945. MX1 2
  2946. BX1 X1+X6 SET HOLE AND NON-ZERO BIT
  2947. ADDWRD TAPE,X1 TABLE OF AVAILABLE PFC ENTRIES
  2948. SA3 HD
  2949. SX6 X3-1
  2950. SA6 A3
  2951. DTE1 SX6 X6-1000B
  2952. NG X6,DTE2 IF NOT ENOUGH TO WARRANT FL REDUCTION
  2953. RJ MTD MOVE TABLES DOWN
  2954. SA1 F.TFHL
  2955. SA3 L.TFHL
  2956. IX6 X1+X3
  2957. SX6 X6+B1
  2958. SA6 F.TEND
  2959. SX6 X3+10B MORE FL THAN TELLING
  2960. MEMORY CM,,R,X6 REDUCE FL
  2961. BX6 X6-X6
  2962. SA6 HD CLEAR HOLES DELETED SINCE FL REDUCTION
  2963. DTE2 RJ ZWT ZERO WORD TERMINATE *TFRI* TABLE
  2964. EQ DTEX RETURN
  2965.  
  2966.  
  2967. DTEA CON 0 INDEX OF ENTRY TO REMOVE FROM TABLES
  2968. DTEB CON 0 ENTRY TO BE DELETED
  2969. FLT SPACE 4,15
  2970. ** FLT - FIND LAST TRACK OF HOLE.
  2971. *
  2972. * ENTRY (X0) = -7777B.
  2973. * (X3) = SECTOR LIMIT.
  2974. * (X4) = 36/0, 12/TRACK, 12/0 (OF HOLE).
  2975. * (X5) = 36/0, 12/TRACK, 12/SECTOR (OF HOLE).
  2976. * (B7) = 48.
  2977. *
  2978. * EXIT (X6) = 0 IF HOLE IS AT END OF TRACK CHAIN.
  2979. *
  2980. * USES X - 1, 2, 6, 7.
  2981. * A - 1, 2, 6, 7.
  2982.  
  2983.  
  2984. FLT SUBR ENTRY/EXIT
  2985. SA1 HL HOLE LENGTH
  2986. IX6 X5-X4 FIRST SECTOR OF HOLE
  2987. BX7 X1
  2988. SA6 FLTA FIRST SECTOR
  2989. SA7 HSIT HOLE SIZE
  2990. MX7 0 NUMBER OF TRACKS
  2991. NZ X6,FLT1 IF HOLE DOES NOT START IN FIRST SECTOR
  2992. SX7 B1 SET 1 POSSIBLE TRACK TO DELINK/DROP
  2993. FLT1 LX6 X4,B7 STARTING TRACK
  2994. SA7 NTIH
  2995. SA6 CTIH
  2996.  
  2997. * FIND LAST TRACK OF HOLE.
  2998.  
  2999. FLT2 SA1 CTIH CURRENT TRACK
  3000. SA2 X1+B6 NEXT TRACK
  3001. LX6 X2,B7
  3002. NG X6,FLT3 IF NOT END OF TRACK CHAIN
  3003. SA1 FLTA FIRST SECTOR OF HOLE IN CURRENT TRACK
  3004. BX2 -X0*X2 CLEAR TAG
  3005. IX6 X2-X1
  3006. SA1 HSIT HOLE SIZE IN TRACK
  3007. IX6 X1-X6 CALCULATE HOLE
  3008. SX6 X6-1 (X6) = 0 IF EOI IS AT END OF HOLE
  3009. EQ FLTX RETURN
  3010.  
  3011. * CHECK FOR LAST TRACK OF HOLE.
  3012.  
  3013. FLT3 SA1 FLTA FIRST SECTOR OF THIS TRACK
  3014. SA2 HSIT LENGTH OF HOLE REMAINING
  3015. IX7 X3-X1 NUMBER OF SECTORS OF HOLE IN THIS TRACK
  3016. IX6 X2-X7
  3017. NG X6,FLTX IF END OF HOLE
  3018. MX7 0
  3019. SA6 A2 LENGTH MINUS SECTOR THIS TRACK
  3020. SA7 A1+ FIRST SECTOR OF HOLE IN NEXT TRACK
  3021. SA1 NTIH TRACK COUNT
  3022. SA2 LTIH LAST TRACK
  3023. SX6 X1+B1
  3024. BX7 X2
  3025. SA6 A1+ NEW TRACK COUNT
  3026. SA7 PTIH PREVIOUS LAST TRACK
  3027. SA1 CTIH CURRENT TRACK
  3028. SA2 X1+B6 NEXT TRACK
  3029. LX6 X1
  3030. BX7 -X0*X2
  3031. SA7 A1 NEW CURRENT TRACK
  3032. SA6 LTIH NEW LAST TRACK
  3033. EQ FLT2 FIND END OF HOLE
  3034.  
  3035.  
  3036. FLTA CON 0 FIRST SECTOR OF HOLE IN CURRENT TRACK
  3037. FPI SPACE 4,20
  3038. ** FPI - FORMAT PFC INFORMATION.
  3039. *
  3040. * *FPI* WILL FORMAT FOR OUTPUT THE INFORMATION DESCRIBING
  3041. * THE LOCATION OF A PARTICULAR PFC ENTRY.
  3042. *
  3043. * ENTRY (X1) = *TFRI* TABLE ENTRY.
  3044. * (B7) = FIRST CHARACTER OF SEQUENCE FOR *SNM*.
  3045. * (B5) = ADDRESS OF MESSAGE FOR *SNM*.
  3046. *
  3047. * EXIT MESSAGE FORMATTED.
  3048. *
  3049. * USES X - 1, 2, 5, 6.
  3050. * A - 1.
  3051. * B - 2, 7.
  3052. *
  3053. * CALLS COD, SNM.
  3054.  
  3055.  
  3056. FPI SUBR ENTRY/EXIT
  3057. BX5 X1
  3058. LX1 -42
  3059. MX2 -8
  3060. BX1 -X2*X1
  3061. SB2 X1 CATALOG TRACK INDEX
  3062. SA1 F.TCAT
  3063. SA1 X1+B2 FSE FOR CATALOG TRACK
  3064. LX1 -36
  3065. MX2 -12
  3066. BX1 -X2*X1 TRACK
  3067. RJ COD CONVERT TRACK
  3068. MX1 4*6
  3069. LX6 6*6
  3070. BX1 X1*X6
  3071. SB2 B7
  3072. RJ SNM SET TRACK IN MESSAGE
  3073. SB7 B7+B1
  3074. BX1 X5
  3075. LX1 -27
  3076. MX2 -12
  3077. BX1 -X2*X1 SECTOR
  3078. SX2 B1
  3079. LX2 13
  3080. BX1 X1+X2 PROVIDE LEADING ZEROS
  3081. RJ COD CONVERT SECTOR
  3082. MX1 4*6
  3083. LX6 6*6
  3084. BX1 X1*X6
  3085. SB2 B7
  3086. RJ SNM SET SECTOR IN MESSAGE
  3087. SB7 B7+B1
  3088. BX1 X5
  3089. LX1 -24
  3090. MX2 -3
  3091. BX1 -X2*X1 PFC ORDINAL IN EIGHT WORD PARCELS
  3092. AX1 1 PFC ORDINAL IN SIXTEEN WORD PARCELS
  3093. RJ COD CONVERT ORDINAL
  3094. MX1 1*6
  3095. LX6 9*6
  3096. BX1 X1*X6
  3097. SB2 B7
  3098. RJ SNM SET ORDINAL IN MESSAGE
  3099. EQ FPIX RETURN
  3100. FRM SPACE 4,15
  3101. ** FRM - FORMAT HOLES RELEASED STATISTICAL MESSAGE.
  3102. *
  3103. * ENTRY (A0) = ADDRESS OF MESSAGE.
  3104. *
  3105. * EXIT MESSAGE FORMATTED.
  3106. *
  3107. * USES X - 0, 1, 2, 3, 5, 6.
  3108. * A - 1, 2, 6.
  3109. *
  3110. * CALLS CDD.
  3111.  
  3112.  
  3113. FRM SUBR ENTRY/EXIT
  3114. SA1 HR HOLES FREED
  3115. SX5 1R POSITIVE VALUE SIGN
  3116. SA2 HC HOLES CREATED
  3117. BX0 X1 SAVE SECTOR COUNT
  3118. MX6 -30
  3119. BX1 -X6*X1 NUMBER
  3120. IX1 X1-X2 FREED MINUS CREATED
  3121. PL X1,FRM1 IF POSITIVE VALUE
  3122. SX5 1R- NEGATIVE VALUE SIGN
  3123. BX1 -X1 COMPLEMENT
  3124. FRM1 RJ CDD
  3125. SA1 A0+B1 MMBXXXXXXX
  3126. MX3 18
  3127. BX1 X3*X1 MMB.......
  3128. BX6 -X3*X6 ...NNNNNNN
  3129. BX6 X6+X1 MMBNNNNNNN
  3130. MX1 -6
  3131. LX1 B2 POSITION MASK
  3132. LX5 B2 POSITION SIGN
  3133. BX6 X1*X6 REMOVE CHARACTER
  3134. IX6 X6+X5 INSERT SIGN
  3135. SA6 A1
  3136. MX6 -30
  3137. LX0 30
  3138. BX1 -X6*X0 NUMBER OF SECTORS
  3139. RJ CDD
  3140. SX1 1R,-1R
  3141. LX1 -6
  3142. IX6 X6+X1
  3143. SA6 A6+B1
  3144. EQ FRMX RETURN
  3145. FSM SPACE 4,15
  3146. ** FSM - FORMAT STATISTICAL MESSAGE.
  3147. *
  3148. * ENTRY (A0) = ADDRESS OF MESSAGE.
  3149. * (X1) = 30/ SECTORS,30/ N.
  3150. *
  3151. * EXIT MESSAGE FORMATTED.
  3152. *
  3153. * USES X - 0, 1, 3, 6.
  3154. * A - 1, 6.
  3155. *
  3156. * CALLS CDD.
  3157.  
  3158.  
  3159. FSM SUBR ENTRY/EXIT
  3160. BX0 X1 SAVE SECTOR COUNT
  3161. MX6 -30
  3162. BX1 -X6*X1 NUMBER
  3163. RJ CDD
  3164. SA1 A0+B1 MMBXXXXXXX
  3165. MX3 18
  3166. BX1 X3*X1 MMB.......
  3167. BX6 -X3*X6 ...NNNNNNN
  3168. BX6 X6+X1 MMBNNNNNNN
  3169. SA6 A1
  3170. MX6 -30
  3171. LX0 30
  3172. BX1 -X6*X0 NUMBER OF SECTORS
  3173. RJ CDD
  3174. SX1 1R,-1R
  3175. LX1 -6
  3176. IX6 X6+X1
  3177. SA6 A6+B1
  3178. EQ FSMX RETURN
  3179. IOM SPACE 4,20
  3180. ** IOM - ISSUE OVERLAP MESSAGE.
  3181. *
  3182. * *IOM* WILL ISSUE A MESSAGE INFORMING THE USER THAT
  3183. * AN OVERLAP HAS BEEN DETECTED.
  3184. *
  3185. * ENTRY (B2) = INDEX OF THE FIRST ENTRY WHICH OVERLAPS.
  3186. *
  3187. * EXIT MESSAGE ISSUED.
  3188. *
  3189. * USES X - 1, 2, 3, 6, 7.
  3190. * A - 1, 2, 3, 6, 7.
  3191. * B - 5, 7.
  3192. *
  3193. * CALLS FPI.
  3194. *
  3195. * MACROS MESSAGE, MOVE.
  3196.  
  3197.  
  3198. IOM SUBR ENTRY/EXIT
  3199. SA1 F.TFRI
  3200. SA2 X1+B2
  3201. SA3 A2+B1
  3202. BX6 X2
  3203. BX7 X3
  3204. SA6 IOMA
  3205. SA7 IOMB
  3206. MOVE IOMCL,IOMC,IOMD
  3207. SA1 IOMA
  3208. SB7 1R(
  3209. SB5 IOMD
  3210. RJ FPI
  3211. SA1 IOMB
  3212. SB7 1R[
  3213. SB5 IOMD
  3214. RJ FPI
  3215. MESSAGE IOMD
  3216. EQ IOMX RETURN
  3217.  
  3218.  
  3219. IOMA DATA 0
  3220. IOMB DATA 0
  3221. IOMC DATA C* ENTRY OVERLAP ((((/))))/$, [[[[/]]]]/%.*
  3222. IOMCL EQU *-IOMC
  3223. IOMD BSS IOMCL
  3224. IRS SPACE 4,15
  3225. ** IRS - ISSUE RESOURCE SUMMARY MESSAGES TO DAYFILE.
  3226. *
  3227. * USES X - 0, 1, 2, 3, 6.
  3228. * A - 1, 2, 6.
  3229. *
  3230. * CALLS CDD, CFD, COD.
  3231. *
  3232. * MACROS MESSAGE, STIME, TIME.
  3233.  
  3234.  
  3235. IRS SUBR ENTRY/EXIT
  3236. STIME ES
  3237. TIME ET
  3238. SA1 ES END SRU-S
  3239. SA2 SS START SRU-S
  3240. IX6 X1-X2
  3241. MX0 -36
  3242. BX1 -X0*X6
  3243. RJ CFD CONVERT TO F10.3 FORMAT
  3244. SA6 IRSA+2 SET SRU-S CONSUMED
  3245. SA1 ET END CPU TIME
  3246. SA2 ST START CPU TIME
  3247. IX6 X1-X2
  3248. MX0 -12
  3249. BX1 -X0*X6 MILLISECONDS
  3250. SX3 1000D
  3251. LX6 -12
  3252. MX0 -24
  3253. BX2 -X0*X6 SECONDS
  3254. IX6 X2*X3 SECONDS*1000
  3255. IX1 X6+X1 (SECONDS*1000)+MILLISECONDS
  3256. RJ CFD CONVERT TO F10.3 FORMAT
  3257. SA6 IRSB+2 SET CPU TIME USED
  3258. SA1 TOVC
  3259. RJ COD CONVERT TO OCTAL DISPLAY
  3260. SA6 IRSC+2 SET MAXIMUM CM FL USED
  3261. SA1 /COMCMTP/ATSA
  3262. RJ CDD CONVERT TO DECIMAL DISPLAY
  3263. SA6 IRSD+2 SET MANAGED TABLE MOVES
  3264. MESSAGE IRSA * SRUS 23456.890 UNTS.*
  3265. MESSAGE IRSB * CPU SECONDS 23456.890 SECS.*
  3266. MESSAGE IRSC * MAXIMUM CM FL 234567890 SCM.*
  3267. MESSAGE IRSD * MANAGED TABLE MOVES 234567890 UNTS.*
  3268. EQ IRSX RETURN
  3269.  
  3270.  
  3271. IRSA DATA 36C SRUS 23456.890 UNTS.
  3272. IRSB DATA 36C CPU SECONDS 23456.890 SECS.
  3273. IRSC DATA 36C MAXIMUM CM FL 23456.890 SCM.
  3274. IRSD DATA 36C MANAGED TABLE MOVES 23456.890 UNTS.
  3275. ISD SPACE 4,15
  3276. ** ISD - ISSUE STATISTICS TO DAYFILE.
  3277. *
  3278. * ENTRY (X0) = 0 IF NORMAL TERMINATION.
  3279. * (X0) = 1 IF ABNORMAL TERMINATION.
  3280. *
  3281. * USES X - 1.
  3282. * A - 0, 1.
  3283. *
  3284. * CALLS FRM, IRS, ISM.
  3285. *
  3286. * MACROS MESSAGE.
  3287.  
  3288.  
  3289. ISD SUBR ENTRY/EXIT
  3290. SA1 PC CHECK IF PRESET COMPLETE
  3291. ZR X1,ISDX IF PRESET NEVER COMPLETED
  3292. SA1 IS INCOMPLETE/INACCURATE STATISTICS FLAG
  3293. BX0 X0+X1
  3294. ZR X0,ISD1 IF NORMAL TERMINATION
  3295. MESSAGE (=C/ STATISTICS MAY NOT BE ACCURATE./),,R
  3296. ISD1 SA1 OF ONSET FILES
  3297. SA0 ISDI
  3298. RJ ISM
  3299. SA1 OH ONSET HOLES
  3300. SA0 ISDJ
  3301. RJ ISM
  3302. SA1 JM FILES MOVED VIA THE FILL TECHNIQUE
  3303. SA0 ISDA
  3304. RJ ISM
  3305. SA1 SM FILES MOVED VIA THE SLIDE TECHNIQUE
  3306. SA0 ISDB
  3307. RJ ISM
  3308. SA1 DM FILES MOVED
  3309. SA0 ISDC
  3310. RJ ISM
  3311. SA1 LS LOST SPACE
  3312. SA0 ISDD
  3313. RJ ISM
  3314. SA1 HS HOLES REMAINING
  3315. SA0 ISDE
  3316. RJ ISM
  3317. SA0 ISDF
  3318. RJ FRM FORMAT HOLES REMOVED MESSAGE
  3319. MESSAGE A0
  3320. SA1 DS DROPPED TRACKS SPACE
  3321. SA0 ISDG
  3322. RJ ISM
  3323. SA1 FW FLAW FILES ENCOUNTERED
  3324. SA0 ISDH
  3325. RJ ISM
  3326. RJ IRS ISSUE RESOURCE SUMMARY
  3327. EQ ISDX RETURN
  3328.  
  3329.  
  3330. ISDI DATA 36C ONSET FILES , PRUS.
  3331. ISDJ DATA 36C ONSET HOLES , PRUS.
  3332. ISDA DATA 36C FILL MOVES , PRUS.
  3333. ISDB DATA 36C SLIDE MOVES , PRUS.
  3334. ISDC DATA 36C FILES MOVED , PRUS.
  3335. ISDD DATA 36C LOST SPACE , PRUS.
  3336. ISDE DATA 36C HOLES LEFT , PRUS.
  3337. ISDF DATA 36C HOLES FREED , PRUS.
  3338. ISDG DATA 36C TRACKS FREED , PRUS.
  3339. ISDH DATA 36C FLAW SPACE , PRUS.
  3340. ISM SPACE 4,15
  3341. ** ISM - ISSUE STATISTICAL MESSAGE.
  3342. *
  3343. * ENTRY (A0) = ADDRESS OF MESSAGE.
  3344. * (X1) = 30/ SECTORS,30/ N.
  3345. *
  3346. * EXIT MESSAGE ISSUED.
  3347. *
  3348. * CALLS FSM.
  3349. *
  3350. * MACROS MESSAGE.
  3351.  
  3352.  
  3353. ISM SUBR ENTRY/EXIT
  3354. RJ FSM FORMAT STATISTIC MESSAGE
  3355. MESSAGE A0
  3356. EQ ISMX RETURN
  3357. MSG SPACE 4,20
  3358. ** MSG - ISSUE MESSAGE.
  3359. *
  3360. * ENTRY (X0) = ADDRESS OF MESSAGE.
  3361. * MUST BE TERMINATED WITH A ZERO BYTE IN BITS 11-0.
  3362. *
  3363. * EXIT MESSAGE TO B DISPLAY (LINE ONE).
  3364. * *B* DISPLAY MESSAGE IN *K* DISPLAY UPDATED.
  3365. *
  3366. * USES X - 0, 1, 3, 4, 6.
  3367. * A - 1, 4, 6.
  3368. * B - 2, 3, 4.
  3369. *
  3370. * PRESERVES A0, X2.
  3371. *
  3372. * CALLS ZTB.
  3373. *
  3374. * MACROS MESSAGE.
  3375.  
  3376.  
  3377. MSG SUBR ENTRY/EXIT
  3378. SA1 MSGA
  3379. BX3 X1-X0
  3380. BX6 X0
  3381. ZR X3,MSGX IF SAME MESSAGE
  3382. SA6 A1
  3383. MESSAGE X0,1
  3384.  
  3385. * MOVE CURRENT *B* DISPLAY MESSAGE TO THE *K* DISPLAY.
  3386.  
  3387. SB4 B0 ZERO BYTE FLAG
  3388. SB3 5 MAXIMUM WORDS TO TRANSFER TO *K* DISPLAY
  3389. SB2 B0 ADDRESS OFFSET
  3390. MX4 -12
  3391. SA1 MSGA ADDRESS OF CURRENT MESSAGE
  3392. SX0 X1 SOURCE BASE ADDRESS
  3393. MSG1 SA1 X0+B2
  3394. BX6 -X4*X1
  3395. NZ X6,MSG2 IF NOT ZERO BYTE
  3396. SB4 B1+ SET ZERO BYTE ENCOUNTERED FLAG
  3397. SA4 =10H
  3398. MSG2 RJ ZTB
  3399. MSG3 SA6 KDLS=+B2 STORE WORD IN *K* DISPLAY BUFFER
  3400. SB2 B2+B1
  3401. GE B2,B3,MSGX IF ALL WORDS PROCESSED
  3402. EQ B4,B0,MSG1 IF NO ZERO BYTE ENCOUNTERED
  3403. BX6 X4 BLANKS
  3404. EQ MSG3 BLANK FILL
  3405.  
  3406.  
  3407. MSGA CON =0 INITIALLY THE ADDRESS OF A ZERO WORD
  3408. PCH SPACE 4,20
  3409. ** PCH - PURGE CONTIGUOUS HOLES.
  3410. *
  3411. * ENTRY (A1,X1) = HOLE ENTRY.
  3412. * (A2,X2) = NEXT CONTIGUOUS ENTRY.
  3413. * (PCHA) = -1 IFF THE COLLECTION HOLE IS CLOSED.
  3414. *
  3415. * EXIT (A1,X1) = ORIGINAL HOLE ENTRY.
  3416. * (A2,X2) = ENTRY AFTER LAST CONTIGUOUS HOLES.
  3417. * CONTIGUOUS HOLES PURGED FROM CATALOG.
  3418. * ALL BUT FIRST HOLE REMOVED FROM TABLE.
  3419. *
  3420. * USES X - 0, 1, 2, 3, 4, 5, 6.
  3421. * A - 1, 2, 3, 4, 6.
  3422. * B - 2.
  3423. *
  3424. * CALLS CIP, DTE, MSG, RCE, WCE.
  3425.  
  3426.  
  3427. PCH SUBR ENTRY/EXIT
  3428. SA3 PCHA CHECK IF FIRST HOLE ALREADY SEEN
  3429. MX4 -24
  3430. BX3 X1-X3
  3431. BX3 X4*X3
  3432. ZR X3,PCH1 IF ALREADY PROCESSED
  3433. BX6 X1
  3434. SA6 PCHA REMEMBER THIS ONE
  3435. SX5 A1+ SAVE (A1)
  3436. RJ RCE PURGE FIRST HOLE
  3437. SA1 A0+FCBS
  3438. SX6 1S11
  3439. BX6 X6+X1 SET DAPF BIT
  3440. SA6 A1+
  3441. RJ WCE
  3442. SA1 X5+ RESTORE (A1) AND (X1)
  3443. SA2 X5+B1 RESTORE (A2) AND (X2)
  3444. PCH1 PL X2,PCHX IF NOT CONTIGUOUS HOLE
  3445. SA1 HR
  3446. SX6 B1
  3447. IX6 X6+X1
  3448. SA6 A1+
  3449. SX0 =C/ PURGING CONTIGUOUS HOLES./
  3450. RJ MSG
  3451. BX1 X2 PURGE NEXT HOLE
  3452. RJ RCE
  3453. SA1 A0+FCBS
  3454. SX6 1S11
  3455. BX6 X1+X6
  3456. SA6 A1+
  3457. RJ CIP CLEAR IRRELEVANT INFORMATION
  3458. RJ WCE
  3459. SA4 IX ESTABLISH (IX) AS ENTRY TO DELETE
  3460. RJ DTE DELETE TABLE ENTRY
  3461. SA4 IX RE-ESTABLISH LOCATION IN TABLE
  3462. SB2 X4
  3463. SA3 F.TFRI
  3464. SA2 X3+B2 NEXT HOLE/FILE ENTRY
  3465. SA1 A2-B1 OLD HOLE ENTRY
  3466. EQ PCH1 LOOP FOR NEXT ENTRY
  3467.  
  3468.  
  3469. PCHA CON -1 FIRST HOLE FROM LAST CALL
  3470. RCE SPACE 4,15
  3471. ** RCE - READ CATALOG ENTRY.
  3472. *
  3473. * ENTRY (X1) = *TFRI* ENTRY OF CATALOG ENTRY.
  3474. *
  3475. * EXIT (A0) = ADDRESS OF CATALOG ENTRY.
  3476. *
  3477. * USES X - 0, 1, 2, 3, 4, 6, 7.
  3478. * A - 0, 1, 2, 6, 7.
  3479. * B - 2.
  3480. *
  3481. * MACROS CALLPFU, RECALL, RETURN, RPHR.
  3482.  
  3483.  
  3484. RCE SUBR ENTRY/EXIT
  3485. BX0 X1
  3486. SA2 RCEB
  3487. BX4 X2-X1
  3488. RECALL C
  3489. MX3 15+8
  3490. LX3 -1-1-8
  3491. BX4 X3*X4
  3492. NZ X4,RCE1 IF DIFFERENT PRU
  3493. SA1 C+1
  3494. SA2 RCEC
  3495. IX6 X1+X2
  3496. SX6 X6
  3497. SX7 X1
  3498. SA6 A1+B1 INCREMENT IN
  3499. SA7 A6+B1 RESET OUT
  3500. LX0 36
  3501. EQ RCE4 SET CATALOG ENTRY ADDRESS
  3502.  
  3503. RCE1 BX6 X0
  3504. SA6 RCEB
  3505. LX0 5-47
  3506. MX3 8
  3507. LX3 -1-1-8
  3508. BX4 X3*X4
  3509. ZR X4,RCE2 IF SAME CATALOG TRACK
  3510. RETURN C,R
  3511. SA1 F.TCAT
  3512. MX2 -8
  3513. BX3 -X2*X0 CATALOG TRACK NUMBER
  3514. SB2 X3
  3515. SX3 X3-MXCT
  3516. PL X3,RCE5 IF ANCHOR ENTRY REFERENCE
  3517. SA1 X1+B2 FST FOR THIS CATALOG TRACK
  3518. BX7 X1
  3519. SA7 C+FTPM
  3520. CALLPFU C,CTOP,R OPEN CATALOG TRACK
  3521. RCE2 LX0 47-5-27
  3522. MX4 -15
  3523. BX6 -X4*X0 CATALOG ENTRY PRU
  3524. SA6 C+6
  3525. SA6 RCEA SAVE CURRENT ADDRESS
  3526. NZ X6,RCE3 IF NOT PRU 0
  3527. CALLPFU C,CTRC,R REWIND CATALOG FILE
  3528. RCE3 SA1 C+1
  3529. SX6 X1
  3530. SA6 A1+B1 SET IN = OUT = FIRST
  3531. SA6 A6+B1
  3532. RPHR A1-B1,R
  3533. SA1 C+3
  3534. SA2 A1-1
  3535. IX6 X2-X1 WORDS IN PRU READ
  3536. SA6 RCEC
  3537. LX0 3
  3538. RCE4 MX4 -3
  3539. BX3 -X4*X0
  3540. LX3 3
  3541. IX3 X3+X1
  3542. SA0 X3 SET CATALOG ENTRY ADDRESS
  3543. EQ RCEX RETURN
  3544.  
  3545. RCE5 SX0 =C/ INTERNAL ERROR, ANCHOR ENTRY REFERENCE IN RCE./
  3546. EQ ERR ABORT
  3547.  
  3548.  
  3549. RCEA CON 0 CURRENT PRU RSA
  3550. RCEB CON -1 LAST CALL TO *RCE*
  3551. RCEC CON 0 NUMBER OF WORDS IN PRU
  3552. RJA SPACE 4,20
  3553. ** RJA - RETURN JUMP TRACE ACTIVATION/DEACTIVATION.
  3554. *
  3555. * THIS ROUTINE ACTIVATES OR DEACTIVATES THE RETURN JUMP
  3556. * TRACE INSTRUCTIONS. THIS IS ACCOMPLISHED BY SHIFTING
  3557. * EACH RJ INSTRUCTION WORD BY 30 BITS.
  3558. * 30/RJ SUB, 30/RJ RJT TO/FROM 30/RJ RJT, 30/RJ SUB
  3559. *
  3560. * ENTRY (X1) = 0, DEACTIVATE RJ TRACE.
  3561. * (X1) = 1, ACTIVATE RJ TRACE.
  3562. *
  3563. * EXIT INSTRUCTIONS MODIFIED, STACK VOIDED.
  3564. *
  3565. * USES X - 1, 2, 6.
  3566. * A - 1, 2, 6.
  3567. * B - 2, 3.
  3568. *
  3569. * MACROS ALLOC, VOID.
  3570.  
  3571.  
  3572. RJA6 VOID VOID ALL TYPES OF INSTRUCTION STACKS
  3573.  
  3574. RJA SUBR ENTRY/EXIT
  3575. SA2 RJAA
  3576. ZR X1,RJA3 IF DEACTIVATE REQUEST
  3577. NZ X2,RJA6 IF RJ TRACE ALREADY ACTIVE
  3578. SA1 L.TRJH LENGTH
  3579. NZ X1,RJA1 IF TABLE ALREADY ALLOCATED
  3580. ALLOC TRJH,TRJHL ALLOCATE RJ TRACE BUFFER
  3581. RJA1 SA1 F.TRJH CLEAR RJ HISTORY BUFFER
  3582. SA2 L.TRJH
  3583. SX6 B1 INITIAL *IN*
  3584. SA6 X1
  3585. SB3 X2
  3586. BX6 X6-X6
  3587. SB2 B1 SKIP *IN* POINTER STORAGE
  3588. RJA2 SA6 X1+B2
  3589. SB2 B2+B1
  3590. LT B2,B3,RJA2 IF MORE ADDRESSES IN BUFFER
  3591. SX6 B1
  3592. EQ RJA4 SET NEW RJ TRACE STATE
  3593.  
  3594. RJA3 ZR X2,RJA6 IF RJ TRACE ALREADY INACTIVE
  3595. SX6 B0
  3596. RJA4 SA6 RJAA SET NEW RJ TRACE STATE
  3597. SB2 30
  3598. SA1 RJAT-1 PRESET (A1)
  3599. RJA5 SA1 A1+B1 NEXT ENTRY
  3600. ZR X1,RJA6 IF END OF TABLE
  3601. SA2 X1 FETCH INSTRUCTION WORD
  3602. LX6 X2,B2 REVERSE RJ INSTRUCTIONS
  3603. SA6 A2
  3604. EQ RJA5 LOOP
  3605.  
  3606.  
  3607. RJAA CON 0 RJ TRACE STATE, 0=INACTIVE, 1=ACTIVE
  3608. RLS SPACE 4,20
  3609. ** RLS - RECLAIM LOST SPACE.
  3610. *
  3611. * IF (IX) POINTS TO A HOLE ENTRY THEN THE LOST SPACE IS MERGED
  3612. * WITH THAT HOLE, ELSE A NEW HOLE IS CREATED IF THE LOST SPACE
  3613. * IS AT LEAST THREE PRUS (SS+DATA+EOI), OTHERWISE THE LOST
  3614. * SPACE IS LEFT AS LOST SPACE.
  3615. *
  3616. * ENTRY (IX) = INDEX OF NEXT ENTRY.
  3617. * (IX)-1 = FILE INDEX.
  3618. * (X6) = FILE LENGTH.
  3619. * (X7) = LOST SPACE FOLLOWING THE FILE.
  3620. *
  3621. * EXIT (LS) = UPDATED.
  3622. *
  3623. * USES X - ALL.
  3624. * A - 1, 2, 3, 4, 5, 6, 7.
  3625. * B - 2.
  3626. *
  3627. * CALLS CIP, CRA, CTE, RCE, WCE.
  3628.  
  3629.  
  3630. * UPDATE STATISTICS.
  3631.  
  3632. RLS3 SA1 LS LOST SPACE
  3633. SA2 RLSA SPACE
  3634. SX6 B1
  3635. LX2 30
  3636. IX6 X6+X2
  3637. IX6 X6+X1
  3638. SA6 A1 UPDATE LOST SPACE
  3639.  
  3640. RLS SUBR ENTRY/EXIT
  3641. SA7 RLSA LOST SPACE FOLLOWING FILE
  3642. SA4 F.TFRI
  3643. SA1 IX
  3644. SA3 L.TFRI
  3645. SB2 X1+
  3646. IX3 X1-X3
  3647. SA2 X4+B2
  3648. PL X3,RLS2 IF PAST END OF TABLE
  3649. PL X2,RLS2 IF FILE OR EOI FOLLOWS LOST SPACE
  3650.  
  3651. * MERGE THE LOST SPACE WITH THE HOLE FOLLOWING IT.
  3652.  
  3653. MX0 -24
  3654. BX7 -X0*X7
  3655. IX6 X2-X7 BACK UP THE RSA OF THE HOLE
  3656. SA6 A2 REWRITE *TFRI* ENTRY
  3657. SA3 LT
  3658. NZ X3,RLS1 IF *TFHL* TABLE IS NOT ACTIVE
  3659. SA3 F.TFHL
  3660. SA3 X3+B2
  3661. IX6 X3-X7 BACK UP THE RSA OF THE HOLE
  3662. LX7 -24
  3663. IX6 X6+X7 INCREASE THE LENGTH
  3664. LX7 24
  3665. SA6 A3 REWRITE THE *TFHL* ENTRY
  3666. RLS1 SA5 A2 *TFRI* ENTRY
  3667. RJ CRA CONVERT RANDOM ADDRESS
  3668. SA1 A2
  3669. RJ RCE READ CATALOG ENTRY
  3670. SA1 A0+FCLF
  3671. SA4 RLSA LOST SPACE LENGTH
  3672. LX4 -24
  3673. IX6 X1+X4 INCREASE THE HOLE SIZE
  3674. SA6 A1
  3675. SA1 A0+FCBT
  3676. MX0 36
  3677. BX6 X0*X1
  3678. BX5 -X0*X5
  3679. BX6 X6+X5 SET NEW ADDRESS OF HOLE
  3680. SA6 A1
  3681. RJ WCE WRITE CATALOG ENTRY
  3682. EQ RLSX RETURN
  3683.  
  3684. * CREATE AN ENTRY FOR THE LOST SPACE.
  3685.  
  3686. RLS2 SX4 B1+B1
  3687. IX3 X4-X7
  3688. PL X3,RLS3 IF SMALLER THAN ABSOLUTE MINIMUM
  3689. SA3 L.TAPE
  3690. ZR X3,RLS3 IF *TAPE* TABLE EMPTY
  3691. NG X3,RLS3 IF *TAPE* TABLE EMPTY
  3692. SA2 A2-B1 ENTRY OF FILE PRECEDING LOST SPACE
  3693. IX2 X2+X6 FILE RSA + FILE LENGTH
  3694. IX2 X2+X4 FILE RSA + FILE LENGTH + SS + EOI
  3695. IX6 X7-X4 LENGTH OF THE HOLE (LOST SPACE - SS - EOI)
  3696. RJ CTE CREATE TABLE ENTRY
  3697. SA6 RLSB SAVE *TFRI* ENTRY
  3698. BX5 X6
  3699. RJ CRA CONVERT RANDOM ADDRESS
  3700. SA1 RLSB
  3701. RJ RCE READ CATALOG ENTRY
  3702. SA1 A0+FCBT
  3703. MX0 36
  3704. BX6 X0*X1
  3705. BX5 -X0*X5
  3706. BX7 X6+X5
  3707. SA7 A1 SET THE ADDRESS OF THE HOLE
  3708. SA1 A0+FCLF
  3709. SA4 RLSA LOST SPACE
  3710. SX0 B1+B1
  3711. IX4 X4-X0 LOST SPACE - SS - EOI
  3712. MX0 24
  3713. LX4 -24
  3714. BX4 X0*X4
  3715. BX6 -X0*X1
  3716. BX6 X6+X4
  3717. SA6 A1 SET LENGTH OF HOLE
  3718. RJ CIP CLEAR IRRELEVANT INFORMATION
  3719. RJ WCE WRITE CATALOG ENTRY
  3720. EQ RLSX RETURN
  3721.  
  3722.  
  3723. RLSA CON 0 LOST SPACE FOLLOWING FILE
  3724. RLSB CON 0 *TFRI* ENTRY RETURNED FROM *CTE*
  3725. RSS SPACE 4,15
  3726. ** RSS - REMOVE *SSST* STATUS FROM DUMP FILES.
  3727. *
  3728. * EXIT *SSST* STATUS REMOVED FROM SPECIFIED FILES.
  3729. *
  3730. * USES X - 1, 2, 6.
  3731. * A - 1, 2, 6.
  3732. * B - 7.
  3733. *
  3734. * MACROS RECALL, SETFS, STATUS.
  3735.  
  3736.  
  3737. RSS SUBR ENTRY/EXIT
  3738. SB7 RSSA-1 FILE LIST MINUS ONE
  3739. RSS1 RECALL S
  3740. SB7 B7+B1
  3741. SA1 B7 42/0LLFN,18/3
  3742. ZR X1,RSS2 IF END OF FILE NAME LIST
  3743. BX6 X1
  3744. SA6 S SET SCRATCH FET+0
  3745. STATUS S,P
  3746. SA2 S+5 GET FNT
  3747. MX1 -6
  3748. BX2 -X1*X2 GET FILE STATUS
  3749. SX1 X2-SSST
  3750. NZ X1,RSS1 IF PRIOR OUTPUT ID
  3751. SETFS S,0 CLEAR FILE STATUS
  3752. EQ RSS1 LOOP
  3753.  
  3754. RSS2 RECALL S
  3755. SX6 3
  3756. SA6 S CLEAR SCRATCH FET
  3757. EQ RSSX RETURN
  3758.  
  3759.  
  3760. RSSA VFD 42/0LOUTPUT,18/3
  3761. VFD 42/0LZZZZDMB,18/3
  3762. CON 0
  3763. TOV SPACE 4,15
  3764. ** TOV - TABLE OVERFLOW PROCESSOR.
  3765. *
  3766. * ENTRY (B5) = -AMOUNT OF MEMORY NEEDED.
  3767. * (B6) = RETURN ADDRESS.
  3768. *
  3769. * EXIT TO *ERR* IF UNABLE TO OBTAIN MEMORY.
  3770. *
  3771. * USES X - 0, 1, 2, 6.
  3772. * A - 1, 2, 6.
  3773. *
  3774. * MACROS MEMORY, MESSAGE.
  3775.  
  3776.  
  3777. TOV BSS 0 ENTRY
  3778. SX6 -B5
  3779. SA1 F.TEND
  3780. IX6 X6+X1 CM REQUIRED TO SATISFY TABLES
  3781. SX1 10B INSURANCE
  3782. IX6 X6+X1 REQUIRED + INSURANCE
  3783. SA2 TOVD MAXIMUM CM FOR CURRENT JOB STEP
  3784. IX1 X6-X2
  3785. PL X1,TOV3 IF JOB MAXIMUM IS INSUFFICIENT
  3786. SX1 3000B DESIRED CM INCREMENT ABOVE REQUIREMENT
  3787. IX6 X6+X1 REQUIRED + INSURANCE + INCREMENT
  3788. IX1 X6-X2
  3789. NG X1,TOV1 IF JOB MAXIMUM IS SUFFICIENT
  3790. BX6 X2 REQUEST THE MAXIMUM CM ALLOWED
  3791. TOV1 SA6 TOVA CM FL REQUESTED
  3792. LX6 30
  3793. SA6 TOVB *STAT* FOR MEMORY MACRO
  3794. MEMORY CM,TOVB,R,,NA
  3795. SA1 TOVB FL OBTAINED
  3796. BX6 X1
  3797. SA1 TOVC PREVIOUS MAXIMUM FL
  3798. AX6 30
  3799. IX1 X1-X6 OLD - NEW
  3800. PL X1,TOV2 IF NOT NEW MAXIMUM
  3801. SA6 A1
  3802. TOV2 SA1 TOVA REQUESTED FL
  3803. IX1 X6-X1
  3804. NG X1,TOV3 IF CM FL NOT OBTAINED
  3805. SX6 X6-10B CM FL MINUS INSURANCE
  3806. SA6 F.TEND NEW END OF MANAGED TABLES
  3807. JP B6 RE-ENTER PROCESSOR
  3808.  
  3809. TOV3 SA1 L.TAPE CHECK THE *TAPE* TABLE SIZE
  3810. ZR X1,TOV4 IF NO SPACE TO RELEASE
  3811. BX6 X6-X6
  3812. SA6 A1 SET *TAPE* TABLE SIZE TO ZERO
  3813. JP B6 RE-ENTER PROCESSOR
  3814.  
  3815. TOV4 SA1 LT CHECK IF *TFHL* TABLE IS ACTIVE
  3816. NZ X1,TOV5 IF *TFHL* IS NOT ACTIVE
  3817. SX6 1
  3818. SA6 LT SET *TFHL* NOT ACTIVE
  3819. MESSAGE (=C* TFHL TABLE DEACTIVATED.*)
  3820. SX6 B0+
  3821. SA6 L.TFHL SET LENGTH OF *TFHL* TABLE TO ZERO
  3822. JP B6 RE-ENTER PROCESSOR
  3823.  
  3824. TOV5 SX0 =C* TABLE OVERFLOW, UNABLE TO OBTAIN REQUIRED MEMORY.*
  3825. EQ ERR ABORT
  3826.  
  3827.  
  3828. TOVA CON 0 MEMORY REQUESTED
  3829. TOVB CON 0 MEMORY MACRO STAT WORD
  3830. TOVC CON 0 MAXIMUM FIELD LENGTH OBTAINED
  3831. TOVD CON 0 MAXIMUM CM FOR CURRENT JOB STEP
  3832. UFE SPACE 4,10
  3833. ** UFE - UPDATE FILE ENTRY.
  3834. *
  3835. * ENTRY (HE) = HOLE *TFRI* TABLE ENTRY.
  3836. * (FE) = FILE *TFRI* TABLE ENTRY.
  3837. * (FS) = FILE SIZE FROM PFC ( + 1 FOR SS).
  3838. *
  3839. * EXIT FILE CATALOG ENTRY UPDATED.
  3840. * TABLE ENTRIES UPDATED AND EXCHANGED.
  3841. * TO *ERR* IF ERROR.
  3842. *
  3843. * USES X - ALL.
  3844. * A - 1, 2, 3, 4, 5, 6, 7.
  3845. *
  3846. * CALLS CRA, RCE, WCE.
  3847.  
  3848.  
  3849. UFE SUBR ENTRY/EXIT
  3850. SA5 HE HOLE ENTRY
  3851. RJ CRA GET FILE ADDRESS
  3852. SA1 FE FILE ENTRY
  3853. RJ RCE READ FILE CATALOG ENTRY
  3854. SA1 A0+FCBT
  3855. MX0 36
  3856. BX6 X0*X1
  3857. BX5 -X0*X5
  3858. BX7 X6+X5 SET NEW ADDRESS OF FILE
  3859. SA7 A1
  3860. RJ WCE
  3861. SA1 F.TFRI
  3862. SA2 IX
  3863. IX1 X2+X1
  3864. SA2 X1
  3865. SA1 A2-1
  3866. SA3 FS
  3867. MX4 -24
  3868. BX5 X4*X2
  3869. BX7 -X4*X1
  3870. BX7 X5+X7
  3871. SX6 B1
  3872. IX6 X3+X6
  3873. IX6 X1+X6
  3874. SA6 A2 NEW HOLE ENTRY
  3875. SA7 A1 NEW FILE ENTRY
  3876. SA3 LT
  3877. NZ X3,UFEX IF *TFHL* IS NOT ACTIVE
  3878. SA3 F.TFHL EXCHANGE RSA-S IN *TFHL*
  3879. SA4 IX
  3880. IX3 X4+X3
  3881. SA4 X3 IX ENTRY
  3882. SA3 A4-B1 IX-1 ENTRY
  3883. BX1 X7-X3 CHECK IF *TFRI*/*TFHL* MATCH (NEW F OLD H)
  3884. MX2 -24
  3885. BX1 -X2*X1
  3886. SX0 =C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN UFE.*
  3887. NZ X1,ERR IF *TFRI*/*TFHL* MISMATCH
  3888. BX3 X2*X3 REMOVE OLD RSA
  3889. BX4 X2*X4
  3890. BX6 -X2*X6 ISOLATE NEW RSA
  3891. BX7 -X2*X7
  3892. BX6 X3+X6 INSERT NEW RSA
  3893. BX7 X4+X7
  3894. SA6 A4 STORE ENTRY WITH EXCHANGED RSA
  3895. SA7 A3
  3896. EQ UFEX RETURN
  3897. UFF SPACE 4,30
  3898. ** UFF - UPDATE AFTER FILL FILE MOVE.
  3899. *
  3900. * ENTRY (HE) = COLLECTION HOLE *TFRI* TABLE ENTRY.
  3901. * (FE) = SLIDE FILE *TFRI* TABLE ENTRY.
  3902. * (FF) = FILL FILE *TFRI* TABLE ENTRY.
  3903. * (FS) = FILL FILE SIZE + SYSTEM SECTOR.
  3904. * (HL) = COLLECTION HOLE LENGTH.
  3905. * (FX) = FILL FILE INDEX.
  3906. * (IX) = SLIDE FILE INDEX.
  3907. * (IX)-1 = COLLECTION HOLE INDEX.
  3908. *
  3909. * EXIT FILL FILE PFC ENTRY UPDATED.
  3910. * PFC CREATED FOR NEW HOLE AT (FX).
  3911. * *TFRI*, *TFHL* AND *TAPE* TABLES UPDATED.
  3912. * (HE) = UPDATED.
  3913. * (HL) = UPDATED.
  3914. * (LT) = UPDATED (*TFHL* TABLE MAY BECOME INACTIVE).
  3915. * (PCHA) = -1 IFF THE COLLECTION HOLE IS CLOSED.
  3916. *
  3917. * USES X - ALL.
  3918. * A - 1, 2, 3, 4, 5, 6, 7.
  3919. * B - 2, 3.
  3920. *
  3921. * CALLS CIP, CTE, CRA, RCE, WCE.
  3922.  
  3923.  
  3924. UFF SUBR ENTRY/EXIT
  3925.  
  3926. * UPDATE THE FILL FILE PFC.
  3927.  
  3928. SA5 HE COLLECTION HOLE ENTRY
  3929. RJ CRA CONVERT RANDOM ADDRESS
  3930. SA1 FF FILL FILE ENTRY
  3931. RJ RCE READ CATALOG ENTRY
  3932. SA1 A0+FCBT
  3933. MX0 36
  3934. BX6 X0*X1
  3935. BX5 -X0*X5
  3936. BX7 X6+X5
  3937. SA7 A1+ SET NEW ADDRESS OF FILE
  3938. RJ WCE WRITE CATALOG ENTRY
  3939.  
  3940. * CHANGE THE COLLECTION HOLE PFC TO POINT TO THE NEW HOLE.
  3941.  
  3942. SA5 FF FILL FILE ENTRY
  3943. RJ CRA CONVERT RANDOM ADDRESS
  3944. SA1 HE COLLECTION HOLE ENTRY
  3945. RJ RCE READ CATALOG ENTRY
  3946. SA1 A0+FCBT
  3947. MX0 36
  3948. BX6 X0*X1
  3949. BX5 -X0*X5
  3950. BX7 X6+X5
  3951. SA2 FS FILE SIZE + SS
  3952. SX6 B1
  3953. IX6 X2-X6 NEW HOLE LENGTH
  3954. MX0 24
  3955. LX6 36-0
  3956. BX7 -X0*X7
  3957. BX6 X0*X6
  3958. BX7 X7+X6 INSERT NEW LENGTH
  3959. SA7 A1 SET LENGTH AND NEW ADDRESS OF HOLE
  3960. RJ CIP CLEAR IRRELEVANT INFORMATION
  3961. RJ WCE WRITE CATALOG ENTRY
  3962.  
  3963. * UPDATE THE *TFRI*/*TFHL* ENTRIES EXCEPT FOR COLLECTION HOLE.
  3964.  
  3965. SA1 F.TFRI
  3966. SA2 IX SLIDE FILE INDEX
  3967. SA3 FX FILL FILE INDEX
  3968. SB3 X3
  3969. SB2 X2-1 COLLECTION HOLE INDEX
  3970. SA4 X1+B3 FILL FILE ENTRY
  3971. SA1 X1+B2 COLLECTION HOLE ENTRY
  3972. MX0 -24
  3973. BX6 -X0*X1 NEW RSA OF FILL FILE
  3974. BX7 -X0*X4 RSA OF NEW HOLE
  3975. BX1 X0*X1 PFC ADDRESS, ET CETERA, OF NEW HOLE
  3976. BX4 X0*X4 PFC ADDRESS, ET CETERA, OF FILL FILE
  3977. BX6 X6+X4 FILE ENTRY
  3978. BX7 X7+X1 NEW HOLE ENTRY
  3979. SA6 A1 FILE ENTRY GOES WHERE COLLECTION HOLE WAS
  3980. SA7 A4 HOLE ENTRY GOES WHERE FILL FILE WAS
  3981. SA1 F.TFHL
  3982. SA4 X1+B3 FILL FILE LENGTH ENTRY
  3983. SA1 X1+B2 COLLECTION HOLE LENGTH ENTRY
  3984. BX6 -X0*X6 RSA OF FILL FILE ENTRY
  3985. BX7 -X0*X7 RSA OF HOLE ENTRY
  3986. BX4 X0*X4 LENGTH OF FILL FILE
  3987. BX6 X6+X4 FILL FILE ENTRY
  3988. BX7 X7+X4 HOLE ENTRY
  3989. SA6 A1 FILE ENTRY GOES WHERE COLLECTION HOLE WAS
  3990. SA7 A4 HOLE ENTRY GOES WHERE FILL FILE WAS
  3991.  
  3992. * UPDATE THE COLLECTION HOLE STATUS.
  3993.  
  3994. SA1 HL COLLECTION HOLE LENGTH
  3995. LX7 24
  3996. SX4 B1+B1
  3997. BX2 -X0*X7 NEW HOLE LENGTH
  3998. IX7 X2+X4 FILE LENGTH + SS + EOI
  3999. IX6 X1-X7
  4000. SA6 A1 NEW COLLECTION HOLE LENGTH
  4001. SX0 =C/ INTERNAL ERROR, HOLE LENGTH NEGATIVE IN UFF./
  4002. NG X6,ERR IF HOLE LENGTH NEGATIVE ABORT
  4003. NZ X6,UFF1 IF NOT EXACT FIT
  4004. BX7 -X6
  4005. SX6 -B1
  4006. SA7 HE NEW COLLECTION HOLE ENTRY (NONE)
  4007. SA6 PCHA INDICATE COLLECTION HOLE CLOSED
  4008. EQ UFFX RETURN
  4009.  
  4010. UFF1 SA1 HE OLD RSA OF COLLECTION HOLE
  4011. IX2 X2+X4 SS AND EOI OF FILE
  4012. IX2 X1+X2 NEW RSA OF COLLECTION HOLE
  4013. IX6 X6-X4 HOLE LENGTH FOR PFC (W/O SS EOI)
  4014. SA1 IX INDEX BEFORE WHICH TO INSERT THE ENTRY
  4015. RJ CTE CREATE AND INSERT TABLE ENTRY
  4016. SA1 HC HOLES CREATED
  4017. SX6 B1
  4018. IX6 X1+X6
  4019. SA6 A1
  4020. EQ UFFX RETURN
  4021. UHE SPACE 4,20
  4022. ** UHE - UPDATE HOLE ENTRY.
  4023. *
  4024. * ENTRY (HE) = HOLE *TFRI* TABLE ENTRY.
  4025. * (HL) = HOLE LENGTH.
  4026. * (IX)-1 = HOLE ENTRY INDEX.
  4027. *
  4028. * EXIT CATALOG UPDATED.
  4029. * (HS) = UPDATED.
  4030. * (HL) = 0.
  4031. * (PCHA) = -1.
  4032. * TO *ERR* IF ERROR.
  4033. *
  4034. * USES X - 0, 1, 2, 3, 4, 5, 6.
  4035. * A - 1, 2, 3, 4, 5, 6.
  4036. *
  4037. * CALLS CIP, CRA, DLK, DRP, DTE, FLT, RCE, VHS, WCE.
  4038.  
  4039.  
  4040. UHE6 SX6 -B1
  4041. SA6 PCHA SET COLLECTION HOLE CLOSED
  4042. BX6 X6-X6
  4043. SA6 HL REPLACE THEN FALL TO RETURN
  4044.  
  4045. UHE SUBR ENTRY/EXIT
  4046. SA5 HE GET HOLE ADDRESS
  4047. RJ CRA
  4048. RJ FLT FIND LAST TRACK OF HOLE
  4049. NZ X6,UHE1 IF NOT AT END OF TRACK CHAIN
  4050. RJ DRP DROP TRACKS AT END OF CHAIN
  4051. EQ UHE2 REWRITE HOLE ENTRY
  4052.  
  4053. UHE1 RJ VHS VERIFY HOLE SIZE
  4054. NG X7,UHE2 IF NO TRACKS TO DELINK
  4055. RJ DLK DELINK TRACKS
  4056. UHE2 SA1 HE
  4057. RJ RCE UPDATE CATALOG ENTRY FOR HOLE
  4058. SA1 A0+FCLF
  4059. SA2 HL
  4060. SX6 X2-3 MAKE SURE HOLE IS .GE. REAL MINIMUM SIZE
  4061. NG X6,UHE4 IF HOLE TOO SMALL
  4062. SX2 X2-2 ADJUST FOR SYSTEM AND EOI SECTORS
  4063. MX4 12
  4064. LX4 -24
  4065. BX1 X4*X1
  4066. LX2 36
  4067. BX6 X1+X2 PUT IN NEW LENGTH
  4068. MX4 -24
  4069. BX5 -X4*X5
  4070. BX6 X6+X5 PUT IN ADDRESS
  4071. SA6 A1
  4072. SA1 IX
  4073. SA3 LT
  4074. NZ X3,UHE3 IF *TFHL* TABLE IS NOT ACTIVE
  4075. SA3 F.TFHL
  4076. SX1 X1-1 INDEX TO HOLE ENTRY
  4077. IX3 X3+X1
  4078. SA3 X3 ENTRY
  4079. LX4 -24
  4080. BX6 X4*X3 REMOVE OLD LENGTH
  4081. BX2 -X4*X2
  4082. BX6 X6+X2 INSERT NEW LENGTH
  4083. SA6 A3
  4084. LX4 24
  4085. SA1 HE
  4086. BX6 X6-X1
  4087. BX6 -X4*X6
  4088. SX0 =C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN UHE.*
  4089. NZ X6,ERR IF TABLE MISMATCH
  4090. UHE3 RJ CIP CLEAR IRRELEVANT PFC INFORMATION
  4091. RJ WCE WRITE CATALOG ENTRY
  4092. SA3 HL UPDATE HOLE STATISTICS
  4093. SX6 B1
  4094. IX3 X3-X6 ADJUST FOR SYSTEM AND EOI SECTORS
  4095. IX3 X3-X6
  4096. LX3 30
  4097. IX6 X3+X6
  4098. SA3 HS
  4099. IX6 X6+X3
  4100. SA6 A3
  4101. EQ UHE6 CLEAR HOLE SIZE
  4102.  
  4103. UHE4 SA1 A0+FCBS PURGE HOLE SMALLER THAN MINIMUM HOLE SIZE
  4104. SX6 1S11
  4105. BX6 X6+X1 SET DAPF BIT
  4106. SA6 A1
  4107. RJ CIP CLEAR IRRELEVANT INFORMATION
  4108. RJ WCE UPDATE CATALOG ENTRY
  4109. SA4 IX
  4110. SX4 X4-1 ESTABLISH (IX)-1 AS THE ENTRY TO DELETE
  4111. RJ DTE DELETE TABLE ENTRY
  4112. SA1 IX ADJUST (IX) SINCE PRIOR ENTRY WAS DELETED
  4113. SX6 X1-1
  4114. SA6 A1
  4115. SA1 LS UPDATE LOST SPACE
  4116. SA2 HL HOLE LENGTH
  4117. LX2 30
  4118. BX6 X2
  4119. ZR X6,UHE5 IF CATALOG ENTRY PURGED
  4120. SX6 B1 ONE HOLE LOST
  4121. UHE5 IX6 X6+X2 LENGTH
  4122. IX6 X6+X1 COUNT
  4123. SA6 A1 REPLACE
  4124. SA1 HR CATALOG ENTRY RELEASED
  4125. SX6 B1
  4126. IX6 X6+X1
  4127. SA6 A1 REPLACE
  4128. EQ UHE6 CLEAR HOLE LENGTH
  4129. UKD SPACE 4,15
  4130. ** UKD - UPDATE *K* DISPLAY.
  4131. *
  4132. * ENTRY *K* DISPLAY SCREEN PRESET WITH STATIC VALUES.
  4133. *
  4134. * EXIT LEFT SCREEN CONTROL WORD SCREEN DISPLAY BIT CLEARED.
  4135. * DYNAMIC VALUES UPDATED.
  4136. *
  4137. * USES X - 0, 1, 2, 3, 6, 7.
  4138. * A - 0, 1, 2, 3, 6.
  4139. * B - 2, 3, 4.
  4140. *
  4141. * CALLS CFD, COD, FRM, FSM, ZTB.
  4142.  
  4143.  
  4144. UKD SUBR ENTRY/EXIT
  4145. SA1 KDLS LEFT SCREEN CONTROL WORD
  4146. MX0 -1
  4147. BX6 X0*X1 CLEAR SCREEN DISPLAYED BIT
  4148. SA6 A1
  4149. SA2 L.TFRI CURRENT LENGTH OF *TFRI*
  4150. SA1 IX CURRENT POSITION IN *TFRI*
  4151. PX0 X2
  4152. PX7 X1
  4153. NX6 X0
  4154. NX0 X7
  4155. FX7 X0/X6
  4156. SA1 =100000. 100.*1000.
  4157. RX0 X1*X7
  4158. UX7,B2 X0
  4159. LX6 B2,X7 PERCENT PROCESSED * 1000.
  4160. BX1 X6
  4161. RJ CFD CONVERT TO FLOATING POINT FORMAT
  4162. SA6 KDLSC
  4163. SA1 L.TFRI
  4164. RJ COD CONVERT TO OCTAL DISPLAY
  4165. SA6 KDLSD
  4166. SA1 IX
  4167. RJ COD CONVERT TO OCTAL DISPLAY
  4168. SA6 KDLSE
  4169. SA1 FX
  4170. RJ COD CONVERT TO OCTAL DISPLAY
  4171. SA6 KDLSF
  4172. SA2 =H* YES*
  4173. SA3 =H* NO*
  4174. SA1 LT
  4175. BX6 X2 YES
  4176. ZR X1,UKD1 IF TABLE ACTIVE
  4177. BX6 X3 NO
  4178. UKD1 SA6 KDLSH
  4179. SA1 ID
  4180. BX6 X2 YES
  4181. NZ X1,UKD2 IF IDLE DOWN REQUESTED
  4182. BX6 X3 NO
  4183. UKD2 SA6 KDLSI
  4184. SA1 RP
  4185. BX6 X2 YES
  4186. NZ X1,UKD3 IF REPRIEVE ACTIVE
  4187. BX6 X3 NO
  4188. UKD3 SA6 KDLSJ
  4189. SA1 JM FILES MOVED VIA THE FILL TECHNIQUE
  4190. SA0 KDLS1
  4191. RJ FSM
  4192. SA1 SM FILES MOVED VIA THE SLIDE TECHNIQUE
  4193. SA0 KDLS2
  4194. RJ FSM
  4195. SA1 DM FILES MOVED
  4196. SA0 KDLS3
  4197. RJ FSM
  4198. SA1 LS LOST SPACE
  4199. SA0 KDLS4
  4200. RJ FSM
  4201. SA1 HS HOLES REMAINING
  4202. SA0 KDLS5
  4203. RJ FSM
  4204. SA0 KDLS6
  4205. RJ FRM FORMAT HOLES REMOVED MESSAGE
  4206. SA1 DS DROPPED TRACKS SPACE
  4207. SA0 KDLS7
  4208. RJ FSM
  4209.  
  4210. * MOVE CURRENT *B* DISPLAY MESSAGE TO THE *K* DISPLAY.
  4211.  
  4212. SB4 B0 ZERO BYTE FLAG
  4213. SB3 5 MAXIMUM WORDS TO TRANSFER TO *K* DISPLAY
  4214. SB2 B0 ADDRESS OFFSET
  4215. MX2 -12
  4216. SA1 MSGA ADDRESS OF CURRENT MESSAGE
  4217. SX0 X1 SOURCE BASE ADDRESS
  4218. UKD4 SA1 X0+B2
  4219. BX6 -X2*X1
  4220. NZ X6,UKD5 IF NOT ZERO BYTE
  4221. SB4 B1+ SET ZERO BYTE ENCOUNTERED FLAG
  4222. SA2 =10H
  4223. UKD5 RJ ZTB
  4224. UKD6 SA6 KDLS=+B2 STORE WORD IN *K* DISPLAY BUFFER
  4225. SB2 B2+B1
  4226. GE B2,B3,UKDX IF ALL WORDS PROCESSED
  4227. EQ B4,B0,UKD4 IF NO ZERO BYTE ENCOUNTERED
  4228. BX6 X2 BLANKS
  4229. EQ UKD6 BLANK FILL
  4230. USS SPACE 4,20
  4231. ** USS - UPDATE SYSTEM SECTOR.
  4232. *
  4233. * ENTRY (A0) = ADDRESS OF PFC OR ZERO FOR NO PFC UPDATE IN SS.
  4234. * (X1) = ADDRESS OF SYSTEM SECTOR (INCLUDING THE EXTRA
  4235. * WORD WITH THE LINKAGE BYTES).
  4236. * (X5) = TK/SC ADDRESS OF TARGET LOCATION.
  4237. *
  4238. * EXIT SYSTEM SECTOR UPDATED.
  4239. * PFC IN SYSTEM SECTOR UPDATED IF REQUESTED.
  4240. *
  4241. * USES X - 1, 5, 6.
  4242. * A - 1, 6.
  4243. *
  4244. * MACROS MOVE.
  4245.  
  4246.  
  4247. USS SUBR ENTRY/EXIT
  4248. SX6 X1
  4249. SA6 USSA SAVE TARGET ADDRESS
  4250. SX6 A0
  4251. ZR X6,USSX IF PFC UPDATE NOT REQUESTED
  4252. SX6 X1
  4253. MOVE NWCE,A0,X6+CTSS+1
  4254. SA1 USSA UPDATE TRACK AND SECTOR IN PFC
  4255. SA1 X1+CTSS+FCBT+1
  4256. MX6 -24
  4257. BX1 X6*X1
  4258. BX5 -X6*X5
  4259. BX6 X1+X5
  4260. SA6 A1
  4261. EQ USSX RETURN
  4262.  
  4263.  
  4264. USSA CON 0 STORAGE FOR TARGET ADDRESS
  4265. VHS SPACE 4,15
  4266. ** VHS - VERIFY THAT HOLE SIZE IS ADEQUATE FOR DELINK.
  4267. *
  4268. * ENTRY (X3) = SECTOR LIMIT.
  4269. * (X4) = 36/0, 12/TRACK, 12/0 (OF HOLE).
  4270. * (X5) = 36/0, 12/TRACK, 12/SECTOR (OF HOLE).
  4271. *
  4272. * EXIT (X7) .LT. 0 IF HOLE IS TOO SMALL FOR DELINK.
  4273. *
  4274. * USES X - 1, 2, 6, 7.
  4275. * A - 1, 2, 6, 7.
  4276.  
  4277.  
  4278. VHS SUBR ENTRY/EXIT
  4279. VHS1 SA1 NTIH CHECK TRACK COUNT
  4280. SX7 X1-2
  4281. NG X7,VHSX IF HOLE TOO SMALL
  4282.  
  4283. * ENSURE HOLE AFTER DELINK IS LARGE ENOUGH.
  4284.  
  4285. SA1 HSIT HOLE SIZE IN TRACK
  4286. BX6 X5-X4 FIRST SECTOR OF FIRST TRACK
  4287. ZR X6,VHS2 IF FIRST TRACK TO BE DELINKED
  4288. IX6 X3-X6 HOLE SIZE IN FIRST TRACK
  4289. VHS2 IX6 X1+X6 HOLE SIZE IN FIRST AND LAST TRACK
  4290. SX6 X6-MNHS
  4291. PL X6,VHSX IF HOLE SIZE ADEQUATE
  4292.  
  4293. * INCREASE HOLE SIZE BY ADDING TRACK.
  4294.  
  4295. IX6 X1+X3 ADD SECTORS FOR ONE TRACK TO HOLE LENGTH
  4296. SX7 X7+B1 (TRACK COUNT - 1) = (TRACK COUNT - 2) + 1
  4297. SA6 A1+ SECTORS REMAINING IN HOLE
  4298. SA7 NTIH NUMBER OF TRACKS
  4299. SA1 PTIH PREVIOUS LAST TRACK
  4300. SA2 LTIH LAST TRACK IN HOLE
  4301. BX6 X1
  4302. LX7 X2
  4303. SA6 A2+ NEW LAST TRACK
  4304. SA7 CTIH NEW CURRENT TRACK
  4305. EQ VHS1 MAKE SURE HOLE SPANS AT LEAST ONE TRACK
  4306. WCE SPACE 4,15
  4307. ** WCE - WRITE CATALOG ENTRY.
  4308. *
  4309. * ENTRY (RCEA) = CURRENT PRU RSA.
  4310. * (RCEC) = CURRENT PRU LENGTH.
  4311. * (CBUF) = PRU TO WRITE.
  4312. *
  4313. * USES X - 1, 3, 6.
  4314. * A - 1, 6.
  4315. *
  4316. * MACROS CALLPFU, RECALL, SCIOF, SYSTEM.
  4317.  
  4318.  
  4319. WCE SUBR ENTRY/EXIT
  4320. SA1 NC
  4321. NZ X1,WCEX IF NO CHANGES ARE TO BE MADE TO THE DEVICE
  4322. RECALL C
  4323. SA1 RCEA
  4324. NZ X1,WCE1 IF NOT PRU 0
  4325. CALLPFU C,CTRC,R REWIND CATALOG FILE
  4326. SA1 RCEA
  4327. WCE1 BX6 X1
  4328. SA6 C+6 SET RANDOM ADDRESS
  4329. SA1 RCEC
  4330. SX3 X1-100B
  4331. ZR X3,WCE2 IF FULL PRU
  4332. SCIOF C,224B SET *CIO* *REWRITER* FUNCTION IN FET
  4333. SYSTEM MPF,R,C,7S6 REWRITE SECTOR VIA *MPF*
  4334. EQ WCEX RETURN
  4335.  
  4336. WCE2 SCIOF C,214B SET *CIO* *REWRITE* FUNCTION IN FET
  4337. SYSTEM MPF,R,C,7S6 REWRITE SECTOR VIA *MPF*
  4338. EQ WCEX RETURN
  4339. ZWT SPACE 4,10
  4340. ** ZWT - ZERO WORD TERMINATE *TFRI* TABLE.
  4341. *
  4342. * EXIT ZERO WORD SET AT END OF *TFRI* TABLE.
  4343. *
  4344. * USES X - 1, 6.
  4345. * A - 1, 6.
  4346. * B - 7.
  4347.  
  4348.  
  4349. ZWT SUBR ENTRY/EXIT
  4350. SA1 L.TFRI
  4351. SB7 X1
  4352. BX6 X6-X6
  4353. SA1 F.TFRI
  4354. SA6 X1+B7
  4355. EQ ZWTX RETURN
  4356. SPACE 4,10
  4357. * RJAT - RJ ADDRESS TABLE (FOR RJ TRACE).
  4358.  
  4359.  
  4360. RJAT BSS 0
  4361. RJAT HERE DUMP RJ ADDRESS TABLE HERE
  4362. CON 0 TERMINATE TABLE
  4363. SPACE 4,10
  4364. * COMMON DECKS.
  4365.  
  4366.  
  4367. *CALL COMCCDD
  4368. *CALL COMCCIO
  4369. *CALL COMCCFD
  4370. *CALL COMCCOD
  4371. *CALL COMCLFM
  4372. *CALL COMCMTP
  4373. *CALL COMCMVE
  4374. *CALL COMCPFU
  4375. *CALL COMCSNM
  4376. *CALL COMCSYS
  4377. *CALL COMCZTB
  4378. SPACE 4,10
  4379. SEG
  4380. USE BUFFERS
  4381.  
  4382.  
  4383. DBUF BSS DBUFL FILE TRANSFER BUFFER
  4384. WBUF BSS NWCE PFC BUFFER
  4385. CBUF BSS CBUFL CATALOG TRACK BUFFER
  4386. SBUF BSS SBUFL SCRATCH FET BUFFER
  4387. MSTBUF BSS MSTL MST BUFFER
  4388. MEML BSS 700B MANAGED TABLE BUFFER
  4389. RFL= BSS 0 INITIAL FIELD LENGTH
  4390. TITLE PRESET.
  4391. PRS SPACE 4,10
  4392. ** PRS - PRESET.
  4393. *
  4394. * ENTRY (B1) = 1.
  4395. *
  4396. * EXIT COMMAND PARAMETERS PROCESSED.
  4397. * DEVICE UTILITY INTERLOCK SET.
  4398. * ERROR EXIT ADDRESS SET.
  4399. * TABLE *TCAT* CREATED.
  4400. * TABLE *TFRI* CREATED AND SORTED.
  4401. * TABLE *TTLT* CREATED.
  4402. *
  4403. * USES X - 1, 6, 7.
  4404. * A - 1, 6, 7.
  4405. *
  4406. * CALLS CST, ICF, PAG, SCT.
  4407. *
  4408. * MACROS GETFLC, PDATE, STIME, SYSTEM, TIME.
  4409.  
  4410.  
  4411. ORG DBUF
  4412. QUAL PRS
  4413.  
  4414.  
  4415. PRS SUBR ENTRY/EXIT
  4416. SX6 A0+
  4417. SX7 A0-10B
  4418. SA6 TOVC INITIAL FL
  4419. SA7 F.TEND SET TABLE END AS FL-10B
  4420. TIME ST START CPU TIME
  4421. STIME SS START SRU-S
  4422. PDATE PD GET PACKED DATE AND TIME
  4423. GETFLC TOVD
  4424. SA1 TOVD
  4425. MX6 12
  4426. BX6 X6*X1 ISOLATE MAXIMUM CM FOR CURRENT JOB STEP
  4427. LX6 17-59 POSITION AS 18 BIT ADDRESS
  4428. SA6 A1
  4429. SYSTEM CPM,R,,10100B ABORT IF NO SYSTEM ORIGIN/PRIVILEGES
  4430. RJ PAG PROCESS COMMAND ARGUMENTS
  4431. RJ ICF FIND DEVICE AND INTERLOCK FILE
  4432. RJ SCT SCAN CATALOG TRACKS
  4433. RJ CST CONVERT AND SORT TABLES
  4434. RJ KDP *K* DISPLAY PRESET
  4435. SX6 B1+
  4436. SA6 PC SET PRESET COMPLETE
  4437. EQ PRSX RETURN
  4438. TITLE PRESET SUBROUTINES.
  4439. CST SPACE 4,15
  4440. ** CST - CONVERT AND SORT TABLES.
  4441. *
  4442. * EXIT TABLES BUILT AND SORTED.
  4443. *
  4444. * USES X - 0, 1, 2, 5, 6, 7.
  4445. * A - 1, 2, 5, 6, 7.
  4446. * B - 6, 7.
  4447. *
  4448. * CALLS CTT, MSG, MTD, SRA, SST, ZWT.
  4449. *
  4450. * MACROS MEMORY.
  4451.  
  4452.  
  4453. CST SUBR ENTRY/EXIT
  4454. SX0 CSTA * CREATING TRACK RESERVATION TABLE.*
  4455. RJ MSG
  4456. SA5 EQ
  4457. RJ CTT CONVERT TRACK TABLE
  4458. SA1 L.TFRI
  4459. SB6 X1
  4460. BX7 X7-X7
  4461. SA5 LT
  4462. NZ X5,CST1 IF *TFHL* IS NOT ACTIVE
  4463. SA5 L.TFHL
  4464. BX5 X1-X5
  4465. SX0 CSTB * INTERNAL ERROR, TFRI/TFHL MISMATCH ...*
  4466. NZ X5,ERR IF *TFRI*/*TFHL* LENGTH MISMATCH
  4467. SA1 F.TFHL
  4468. SA7 X1+B6 CLEAR EXPANSION WORD FOLLOWING TABLE
  4469. CST1 SA1 F.TFRI
  4470. SA7 X1+B6 CLEAR EXPANSION WORD FOLLOWING TABLE
  4471. SX0 CSTC * CONVERTING RANDOM ADDRESSES.*
  4472. RJ MSG
  4473. SA5 F.TFRI
  4474. SA5 X5-1
  4475. SA2 F.TFHL
  4476. SA2 X2-1
  4477. CST2 SA5 A5+1
  4478. SA1 LT
  4479. NZ X1,CST3 IF *TFHL* IS NOT ACTIVE
  4480. SA2 A2+1
  4481. MX0 -24
  4482. BX2 -X0*X2
  4483. BX6 -X0*X5
  4484. BX2 X2-X6
  4485. SX0 CSTD * INTERNAL ERROR, TFRI/TFHL MISMATCH ...*
  4486. NZ X2,ERR IF *TFRI*/*TFHL* MISMATCH
  4487. CST3 ZR X5,CST4 IF END OF TABLE
  4488. RJ SRA SET RANDOM ADDRESS
  4489. MX0 36
  4490. SA5 A5
  4491. BX5 X0*X5
  4492. BX6 X5+X6
  4493. SA6 A5
  4494. SA1 LT
  4495. NZ X1,CST2 IF *TFHL* IS NOT ACTIVE
  4496. SA2 A2
  4497. BX2 X0*X2
  4498. BX6 -X0*X6
  4499. BX6 X2+X6
  4500. SA6 A2
  4501. EQ CST2 LOOP
  4502.  
  4503. CST4 SX0 CSTE * SORTING TABLE.*
  4504. RJ MSG
  4505. SA2 F.TFRI
  4506. SA1 L.TFRI
  4507. SB7 X2
  4508. RJ SST SHELL-SORT TABLE
  4509. SA1 LT
  4510. NZ X1,CST5 IF *TFHL* IS NOT ACTIVE
  4511. SA2 F.TFHL
  4512. SA1 L.TFHL
  4513. SB7 X2
  4514. RJ SST SHELL-SORT TABLE
  4515. CST5 RJ MTD MOVE TABLES DOWN
  4516. RJ ZWT ZERO WORD TERMINATE *TFRI* TABLE
  4517. SA1 F.TFHL
  4518. SA2 L.TFHL
  4519. IX6 X1+X2
  4520. SX6 X6+B1
  4521. SA6 F.TEND
  4522. BX5 X6
  4523. SX2 X5+10B MORE FL THAN TELLING
  4524. MEMORY CM,,R,X2 REDUCE MEMORY
  4525. EQ CSTX RETURN
  4526.  
  4527.  
  4528. CSTA DATA C/ CREATING TRACK RESERVATION TABLE./
  4529. CSTB DATA C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN CST.*
  4530. CSTC DATA C/ CONVERTING RANDOM ADDRESSES./
  4531. CSTD DATA C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN CST2.*
  4532. CSTE DATA C/ SORTING TABLE./
  4533. CTT SPACE 4,10
  4534. ** CTT - CONVERT TRACK TABLE.
  4535. *
  4536. * ENTRY (X5) = EST ORDINAL.
  4537. *
  4538. * EXIT *TTLT* BUILT.
  4539. *
  4540. * USES X - ALL.
  4541. * A - 1, 2, 4, 6, 7.
  4542. * B - 2, 3, 4, 5, 6.
  4543. *
  4544. * CALLS MTD.
  4545. *
  4546. * MACROS ABSREAD, ALLOC.
  4547.  
  4548.  
  4549. CTT SUBR ENTRY/EXIT
  4550. ABSREAD ESTP
  4551. MX0 -18
  4552. LX6 24
  4553. BX6 -X0*X6
  4554. SX2 ESTE
  4555. IX5 X5*X2
  4556. IX5 X5+X6
  4557. ABSREAD X5 READ EST ENTRY
  4558. MX0 -12
  4559. BX5 -X0*X6 FWA/10 OF MST
  4560. LX5 3
  4561. SX5 X5+TDGL
  4562. ABSREAD X5
  4563. AX6 24
  4564. BX0 -X0*X6 LENGTH OF TRT
  4565. ALLOC TTRT,X0
  4566. SX5 X5+TRLL-TDGL
  4567. ABSREAD X5
  4568. MX1 -18
  4569. BX5 -X1*X6 FWA TRT
  4570. SA4 F.TTRT
  4571. SX2 X0
  4572. SX3 100B
  4573. CTT1 IX2 X2-X3
  4574. PL X2,CTT2 IF FULL BLOCK OF DATA
  4575. IX3 X2+X3 LAST BLOCK SIZE
  4576. SX2 B0
  4577. CTT2 ABSREAD X5,X4,X3
  4578. IX5 X5+X3 ADVANCE TRT ADDRESS
  4579. IX4 X4+X3 ADVANCE DATA ADDRESS
  4580. NZ X2,CTT1 IF MORE DATA TO READ
  4581. LX0 2 LENGTH OF LINK TABLE
  4582. ALLOC TTLT,X0
  4583. AX0 2
  4584. SB2 -B1
  4585. SA1 F.TTRT
  4586. SA2 F.TTLT
  4587. SB3 X1 FWA *TTRT*
  4588. SB4 X2 FWA *TTLT*
  4589. SB5 0 WORD INDEX
  4590. SX7 7777B
  4591. CTT3 SA1 B3+B5 ADVANCE WORD
  4592. SB6 4
  4593. CTT4 SB2 B2+B1 INCREMENT TRACK
  4594. LX1 12
  4595. BX6 X7*X1
  4596. SA6 B4+B2
  4597. SB6 B6-B1
  4598. NZ B6,CTT4 IF FULL WORD NOT PROCESSED
  4599. SB5 B5+B1
  4600. SX0 X0-1
  4601. NZ X0,CTT3 IF MORE TRT WORDS
  4602. SX7 0
  4603. SA7 L.TTRT RELEASE *TTRT*
  4604. RJ MTD PACK TABLES
  4605. EQ CTTX RETURN
  4606. FDN SPACE 4,15
  4607. ** FDN - FIND DEVICE NUMBER.
  4608. *
  4609. * ENTRY (X1) = 42/ FAMILY NAME,6/ DEVICE NUMBER,12/ 0.
  4610. *
  4611. * EXIT (X1) = 0, IF DEVICE FOUND.
  4612. * (X1) = 1, IF DEVICE NOT FOUND.
  4613. * (X6) = EST ORDINAL.
  4614. *
  4615. * USES X - 1, 2, 3, 5, 6, 7.
  4616. * A - 1, 2, 6, 7.
  4617. * B - 2.
  4618. *
  4619. * MACROS ABSREAD.
  4620.  
  4621.  
  4622. FDN5 SX6 B1+
  4623. SA6 DF SET DUMP REQUIRED FLAG
  4624.  
  4625. FDN6 SX1 B1 INDICATE DEVICE NOT FOUND
  4626.  
  4627. FDN SUBR ENTRY/EXIT
  4628. BX6 X1
  4629. SA6 FDNA
  4630. ABSREAD ESTP
  4631. LX1 24
  4632. MX6 -18
  4633. BX2 -X6*X1 FWA EST
  4634. MX6 -12
  4635. LX1 24
  4636. SX3 ESTE
  4637. BX7 -X6*X1 LAST MS ORDINAL + 1
  4638. IX7 X7*X3
  4639. SA7 FDNC SAVE LAST MS ORDINAL + 1
  4640. SX5 FDNB SET BUFFER TO READ INTO
  4641. SX3 100B NUMBER OF WORDS TO READ
  4642. FDN1 IX7 X7-X3
  4643. PL X7,FDN2 IF NEXT WILL NOT BE LAST READ
  4644. IX3 X7+X3
  4645. SX7 B0
  4646. FDN2 ABSREAD X2,X5,X3
  4647. IX2 X2+X3
  4648. IX5 X5+X3
  4649. NZ X7,FDN1 IF MORE TO READ
  4650. SA1 FDNA
  4651. MX6 42
  4652. BX1 X6*X1
  4653. NZ X1,FDN3 IF FAMILY/PACK SPECIFIED
  4654. ABSREAD PFNL GET SYSTEM DEFAULT NAME
  4655. AX6 12
  4656. MX2 -12
  4657. BX1 -X2*X6
  4658. SX2 ESTE
  4659. IX1 X1*X2 FOR EST MULTI WORD ENTRIES
  4660. SA2 FDNB+X1 PICK UP FIRST WORD OF EST ENTRY
  4661. PL X2,FDN6 IF NOT MASS STORAGE DEVICE
  4662. MX1 -12
  4663. BX1 -X1*X2
  4664. LX1 3 MST FOR DEFAULT FAMILY
  4665. ABSREAD X1,MSTBUF,MSTL
  4666. SA1 MSTBUF+PFGL
  4667. SA2 FDNA
  4668. MX6 42
  4669. BX1 X6*X1
  4670. BX2 -X6*X2
  4671. BX6 X1+X2
  4672. SA6 FDNA STORE FAMILY NAME AND DEVICE NUMBER
  4673. FDN3 SA1 FDNC PICK UP LARGEST MS EST ORDINAL
  4674. SB2 X1
  4675. FDN4 SB2 B2-ESTE
  4676. NG B2,FDN6 IF END OF EST
  4677. SA1 B2+FDNB
  4678. MX6 -12
  4679. BX2 -X6*X1 MST ADDRESS/10B
  4680. LX2 3
  4681. PL X1,FDN4 IF NOT MASS STORAGE DEVICE
  4682. LX1 59-54
  4683. NG X1,FDN4 IF DEVICE *UNAVAILABLE*
  4684. LX1 54-23
  4685. NG X1,FDN4 IF DEVICE *OFF*
  4686. ABSREAD X2,MSTBUF,MSTL
  4687. SA1 MSTBUF+STLL
  4688. SX2 7752B
  4689. LX1 -48
  4690. BX2 X1*X2
  4691. NZ X2,FDN4 IF *INITIALIZE* OR *UNLOAD* STATUS
  4692. MX6 48
  4693. SA1 MSTBUF+PFGL
  4694. SA2 FDNA
  4695. BX1 X1-X2
  4696. BX1 X6*X1
  4697. NZ X1,FDN4 IF NOT SPECIFIED DEVICE
  4698. SA2 MSTBUF+ACGL
  4699. SX6 20B
  4700. BX6 X6*X2
  4701. NZ X6,FDN5 IF *ERROR IDLE*
  4702. SA2 MSTBUF+DALL
  4703. SX6 3
  4704. LX6 56-0
  4705. BX6 X6*X2
  4706. NZ X6,FDN5 IF DEVICE STATE IS NOT *ON*
  4707. SX6 B2 SET EST ORDINAL
  4708. SX2 ESTE
  4709. IX6 X6/X2
  4710. EQ FDNX RETURN
  4711.  
  4712.  
  4713. FDNA CON 0 SPECIFIED FAMILY/DEVICE NUMBER
  4714. FDNB BSS ESMX*ESTE BUFFER FOR EST
  4715. FDNC CON 0 LAST MS ORDINAL + 1
  4716. ICF SPACE 4,20
  4717. ** ICF - INITIALIZE CATALOG FILE.
  4718. *
  4719. * ENTRY (DN) = DEVICE NUMBER.
  4720. * (FM) = FAMILY OR PACKNAME.
  4721. *
  4722. * EXIT (EI) = RSA OF IAPF CHAIN EOI.
  4723. * (EQ) = EST ORDINAL.
  4724. * (CC) = NUMBER OF CATALOG TRACKS.
  4725. * PF UTILITY INTERLOCK SET.
  4726. * CATALOG AND DATA FILES OPENED.
  4727. * TO *ERR* IF ERROR.
  4728. *
  4729. * USES X - ALL.
  4730. * A - 1, 2, 3, 6, 7.
  4731. *
  4732. * CALLS FDN.
  4733. *
  4734. * MACROS CALLPFU, REPRIEVE, RETURN, SKIPEI.
  4735.  
  4736.  
  4737. ICF SUBR ENTRY/EXIT
  4738. RETURN C,R
  4739. RETURN I,R
  4740. RETURN O,R
  4741. SA1 DN
  4742. SA2 FM
  4743. LX1 12
  4744. BX1 X1+X2
  4745. RJ FDN READ MST FOR DEVICE
  4746. SX0 ICFA * INCORRECT DEVICE/FAMILY.*
  4747. NZ X1,ERR IF ERROR
  4748. SA2 MSTBUF+PUGL
  4749. SA1 MSTBUF+MDGL
  4750. LX1 59-58
  4751. SA3 PN
  4752. ZR X3,ICF1 IF NO PACKNAME SPECIFIED
  4753. NG X1,ICF3 IF AN AUXILIARY DEVICE
  4754. SX0 ICFB * PACKNAME NOT FOUND.*
  4755. EQ ERR ABORT
  4756.  
  4757. ICF1 PL X1,ICF2 IF FAMILY DEVICE
  4758. SX0 ICFC * FAMILY NOT FOUND.*
  4759. EQ ERR ABORT
  4760.  
  4761. ICF2 MX0 -8
  4762. BX2 -X0*X2
  4763. NZ X2,ICF3 IF A MASTER DEVICE
  4764. SX0 ICFD * NOT A MASTER DEVICE.*
  4765. EQ ERR ABORT
  4766.  
  4767. ICF3 SA6 EQ SAVE EST ORDINAL
  4768. SX7 IF
  4769. LX6 48
  4770. BX7 X6+X7
  4771. SA7 C+FTPM
  4772. SX6 1
  4773. SA6 DF FORCE FL DUMP
  4774. REPRIEVE RPVA,SETUP,RPVC SET REPRIEVE PROCESSING
  4775. CALLPFU C,CTSU,R SET UTILITY INTERLOCK
  4776. SA1 MSTBUF+ALGL
  4777. AX1 12
  4778. MX0 -12
  4779. BX6 -X0*X1 CATALOG TRACK COUNT
  4780. SA6 CC
  4781. AX1 24
  4782. BX1 -X0*X1
  4783. BX6 X1
  4784. LX6 12
  4785. BX6 X6+X1 BUILD FST FOR CATALOG CHAIN
  4786. LX6 24
  4787. SX1 5
  4788. BX6 X6+X1
  4789. SA1 EQ
  4790. LX1 48
  4791. BX6 X6+X1
  4792. SA6 C+FTPM
  4793. CALLPFU C,CTOP,R OPEN CATALOG FILE
  4794. SA1 MSTBUF+ALGL
  4795. MX0 12
  4796. BX6 X0*X1 BUILD FST FOR IAPF CHAIN
  4797. LX6 -12
  4798. BX4 X6
  4799. LX4 -12
  4800. BX6 X4+X6
  4801. SA1 EQ
  4802. LX1 48
  4803. BX6 X1+X6
  4804. SX3 5
  4805. BX5 X3+X6
  4806. SA6 I+FTPM
  4807. SA6 O+FTPM
  4808. CALLPFU I,CTOP,R OPEN INPUT FILE
  4809. CALLPFU O,CTOP,R OPEN OUTPUT FILE
  4810. SKIPEI O,R
  4811. SA1 O+6
  4812. AX1 30
  4813. SX6 B1
  4814. IX6 X6+X1
  4815. SA6 EI SET IAPF CHAIN EOI RSA
  4816. EQ ICFX RETURN
  4817.  
  4818.  
  4819. ICFA DATA C* INCORRECT DEVICE/FAMILY.*
  4820. ICFB DATA C* PACKNAME NOT FOUND.*
  4821. ICFC DATA C* FAMILY NOT FOUND.*
  4822. ICFD DATA C* NOT A MASTER DEVICE.*
  4823. KDP SPACE 4,15
  4824. ** KDP - *K* DISPLAY PRESET.
  4825. *
  4826. * EXIT DISPLAY PRESET WITH STATIC VALUES.
  4827. *
  4828. * USES A - 0, 1, 2, 6.
  4829. * X - 0, 1, 2, 6.
  4830. *
  4831. * CALLS COD, FSM, ZTB.
  4832. *
  4833. * MACROS CONSOLE, MESSAGE.
  4834.  
  4835.  
  4836. KDP SUBR ENTRY/EXIT
  4837. SA1 EQ
  4838. RJ COD
  4839. SA6 KDLSL
  4840. SA1 FM
  4841. ZR X1,KDP3 IF NO FAMILY NAME
  4842. RJ ZTB
  4843. MX0 -6
  4844. KDP1 BX2 -X0*X1
  4845. NZ X2,KDP2 IF NAME RIGHT JUSTIFIED
  4846. LX1 -6
  4847. LX6 -6
  4848. EQ KDP1 LOOP
  4849.  
  4850. KDP2 SA6 KDLSM
  4851. KDP3 SA1 PN
  4852. ZR X1,KDP6 IF NO PACKNAME
  4853. RJ ZTB
  4854. MX0 -6
  4855. KDP4 BX2 -X0*X1
  4856. NZ X2,KDP5 IF NAME RIGHT JUSTIFIED
  4857. LX1 -6
  4858. LX6 -6
  4859. EQ KDP4 LOOP
  4860.  
  4861. KDP5 SA6 KDLSN
  4862. SA2 KDPB BLANK WORD
  4863. BX6 X2
  4864. SA6 KDLSM CLEAR FM IF AUXILIARY PACK
  4865. KDP6 SA1 DN
  4866. RJ COD
  4867. SA6 KDLSO
  4868. SA1 DB
  4869. RJ COD
  4870. SA6 KDLSQ
  4871. SA1 MR
  4872. RJ COD
  4873. SA6 KDLSR
  4874. SA2 =H* YES*
  4875. BX6 X2
  4876. SA1 EF
  4877. ZR X1,KDP7 IF EXACT FIT NOT REQUIRED
  4878. SA6 KDLSS
  4879. KDP7 SA1 NC
  4880. ZR X1,KDP8 IF NO CHANGE NOT REQUESTED
  4881. SA6 KDLST
  4882. KDP8 SA1 NM
  4883. ZR X1,KDP9 IF NO MOVE NOT REQUESTED
  4884. SA6 KDLSU
  4885. KDP9 SA1 NF
  4886. ZR X1,KDP10 IF NO FILL MOVE NOT REQUESTED
  4887. SA6 KDLSV
  4888. KDP10 SA1 NS
  4889. ZR X1,KDP11 IF NO SLIDE MOVE NOT REQUESTED
  4890. SA6 KDLSW
  4891. KDP11 SA1 NP
  4892. ZR X1,KDP12 IF NO PREMOVE DELINK NOT REQUESTED
  4893. SA6 KDLSX
  4894. KDP12 SA1 OF ONSET FILES
  4895. SA0 KDLSZ
  4896. RJ FSM
  4897. SA1 OH ONSET HOLES
  4898. SA0 KDLS0
  4899. RJ FSM
  4900. SA1 FW FLAW FILES ENCOUNTERED
  4901. SA0 KDLS8
  4902. RJ FSM
  4903. CONSOLE KDS REQUEST *K* DISPLAY
  4904. MESSAGE KDPA,2,R CLEAR MESSAGE
  4905. EQ KDPX RETURN
  4906.  
  4907.  
  4908. KDPA DATA 0 BLANK MESSAGE
  4909. KDPB DATA H* * BLANK WORD
  4910. PAG SPACE 4,15
  4911. ** PAG - PROCESS COMMAND ARGUMENTS.
  4912. *
  4913. * EXIT TO *ERR* IF ERROR.
  4914. *
  4915. * USES X - 0, 1, 2, 4, 5, 6.
  4916. * A - 1, 2, 4, 5, 6.
  4917. * B - 4, 5, 7.
  4918. *
  4919. * CALLS ARG, DXB, RJA.
  4920. *
  4921. * MACROS RTIME.
  4922.  
  4923.  
  4924. PAG SUBR ENTRY/EXIT
  4925. SB5 TARG TABLE OF COMMAND ARGUMENTS
  4926. SA1 ACTR
  4927. SB4 X1
  4928. SA4 ARGR
  4929. RJ ARG PROCESS ARGUMENTS
  4930. SX0 PAGA * INCORRECT ARGUMENT.*
  4931. NZ X1,ERR IF ARG ERRORS
  4932. SA5 DN
  4933. SB7 B0 ASSUME OCTAL CONVERSION
  4934. RJ DXB
  4935. SX0 PAGB * PARAMETER DN ARGUMENT ERROR.*
  4936. NZ X4,ERR IF CONVERSION ERRORS
  4937. SA6 DN
  4938. SA5 IX
  4939. SB7 B0 ASSUME OCTAL CONVERSION
  4940. RJ DXB
  4941. SX0 PAGC * PARAMETER IX ARGUMENT ERROR.*
  4942. NZ X4,ERR IF CONVERSION ERRORS
  4943. SA6 IX
  4944. SA5 TL
  4945. ZR X5,PAG1 IF NO TIME LIMIT SPECIFIED
  4946. SB7 1 ASSUME DECIMAL CONVERSION
  4947. RJ DXB
  4948. SX0 PAGD * PARAMETER TL ARGUMENT ERROR.*
  4949. NZ X4,ERR IF CONVERSION ERRORS
  4950. BX5 X6
  4951. LX5 36
  4952. RTIME TL
  4953. SA2 TL
  4954. IX6 X2+X5
  4955. SA6 A2 SET TIME TO QUIT
  4956. PAG1 SA5 MR
  4957. SB7 B0 ASSUME OCTAL CONVERSION
  4958. RJ DXB
  4959. SX0 PAGE * PARAMETER MR ARGUMENT ERROR.*
  4960. NZ X4,ERR IF CONVERSION ERRORS
  4961. SA6 A5
  4962. SA1 PN
  4963. ZR X1,PAG2 IF NO PACKNAME
  4964. BX6 X1
  4965. SA6 FM SET FAMILY = PACKNAME
  4966. PAG2 SA1 NM
  4967. ZR X1,PAG3 IF NO MOVE NOT REQUESTED
  4968. SX6 B1+
  4969. SA6 NF FORCE NO FILL
  4970. SA6 NS FORCE NO SLIDE
  4971. PAG3 SA5 DB
  4972. ZR X5,PAG4 IF DEBUG NOT SPECIFIED
  4973. SB7 B0 ASSUME OCTAL CONVERSION
  4974. RJ DXB
  4975. SX0 PAGF * PARAMETER DEBUG ARGUMENT ERROR.*
  4976. NZ X4,ERR IF CONVERSION ERRORS
  4977. SA6 DB
  4978. LX6 59-1
  4979. PL X6,PAG4 IF RJ TRACE NOT SPECIFIED
  4980. SX1 B1
  4981. RJ RJA ACTIVATE RJ TRACE
  4982. PAG4 EQ PAGX RETURN
  4983.  
  4984.  
  4985. PAGA DATA C* INCORRECT ARGUMENT.*
  4986. PAGB DATA C* PARAMETER DN ARGUMENT ERROR.*
  4987. PAGC DATA C* PARAMETER IX ARGUMENT ERROR.*
  4988. PAGD DATA C* PARAMETER TL ARGUMENT ERROR.*
  4989. PAGE DATA C* PARAMETER MR ARGUMENT ERROR.*
  4990. PAGF DATA C* PARAMETER DEBUG ARGUMENT ERROR.*
  4991.  
  4992.  
  4993. * TARG - TABLE OF COMMAND ARGUMENTS.
  4994.  
  4995. TARG BSS 0
  4996. DEBUG ARG TARC,DB
  4997. DN ARG DN,DN
  4998. EF ARG -TARA,EF
  4999. FM ARG FM,FM
  5000. IX ARG IX,IX
  5001. MR ARG TARC,MR
  5002. NC ARG -TARA,NC
  5003. NF ARG -TARA,NF
  5004. NM ARG -TARA,NM
  5005. NP ARG -TARA,NP
  5006. NS ARG -TARA,NS
  5007. PN ARG PN,PN
  5008. TL ARG TARB,TL
  5009. CON 0
  5010.  
  5011. * ASSUMED VALUES FOR COMMAND ARGUMENTS.
  5012.  
  5013. TARA DATA 1
  5014. TARB DATA 0L300D
  5015. TARC DATA 0L377777B
  5016. SCT SPACE 4,15
  5017. ** SCT - SCAN CATALOG TRACKS.
  5018. *
  5019. * EXIT TO *ERR* IF ERROR.
  5020. *
  5021. * USES X - ALL.
  5022. * A - 1, 2, 3, 4, 6, 7.
  5023. *
  5024. * CALLS MSG.
  5025. *
  5026. * MACROS ADDWRD, CALLPFU, READ, READW, STATUS, SYSTEM.
  5027.  
  5028.  
  5029. SCT SUBR ENTRY/EXIT
  5030. SA1 MSTBUF+MDGL
  5031. SA2 MSTBUF+ALGL
  5032. MX0 -12
  5033. LX2 12
  5034. BX7 -X0*X1 SECTOR LIMIT
  5035. BX6 -X0*X2 FIRST TRACK OF IAPF CHAIN
  5036. SA7 SL SET SECTORS/TRACK
  5037. SA6 FT SET FIRST TRACK OF IAPF CHAIN
  5038. SX0 64D/NWCE*NWCE/8 PFC-S PER SECTOR (8 WORD PARCELS)
  5039. ERRNZ NWCE/8*8-NWCE *NWCE* NOT EVENLY DIVISIBLE BY EIGHT
  5040. IX7 X0*X7
  5041. SA7 SCTA CATALOG ENTRIES PER TRACK (8 WORD PARCELS)
  5042. SX0 SCTC * CREATING CATALOG TRACK TABLES.*
  5043. RJ MSG
  5044. SA1 FT FIRST TRACK OF THE IAPF CHAIN
  5045. MX2 2 FLAGS FOR THE IAPF CHAIN ANCHOR ENTRY
  5046. LX2 59-60
  5047. LX1 12
  5048. BX0 X1 (X0) IS UNCHANGED BY ADDWRD
  5049. BX1 X2+X1
  5050. SX6 MXCT MAXIMUM CATALOG TRACK + 1
  5051. LX6 24+18
  5052. BX1 X1+X6 *TFRI* ANCHOR ENTRY
  5053. ADDWRD TFRI,X1
  5054. SA1 LT
  5055. NZ X1,SCT1 IF *TFHL* TABLE IS NOT ACTIVE
  5056. BX1 X0 ANCHOR LENGTH IS ZERO (JUST SS AND EOI)
  5057. ADDWRD TFHL,X1
  5058. SCT1 SA1 CN
  5059. SA2 CC
  5060. SX6 X1+B1
  5061. IX2 X2-X6
  5062. ZR X2,SCTX IF NO MORE TRACKS
  5063. SA6 A1
  5064. CALLPFU C,CTAC,R ADVANCE CATALOG TRACK
  5065. STATUS C,P BUILD FST ENTRY FOR THIS TRACK
  5066.  
  5067. * NOTE - OVERFLOW PROCESSING ASSUMES THAT CATALOG TRACKS
  5068. * HAVE FULL SECTORS.
  5069.  
  5070. SA1 C+6
  5071. LX1 36
  5072. AX1 48
  5073. SX0 SCTD * CATALOG FST CURRENT SECTOR .NE. ZERO.*
  5074. NZ X1,ERR IF NOT ZERO
  5075. SA1 A1 REFETCH FST FROM FET
  5076. SX7 5
  5077. MX6 48
  5078. BX1 X1*X6
  5079. BX1 X1+X7
  5080. BX7 X1
  5081. SA7 SCTB BASE CATALOG TRACK ENTRY (FOR OVERFLOW)
  5082. ADDWRD TCAT,X1
  5083. SX7 B0+ CLEAR FET+6
  5084. SA7 C+6
  5085. SA7 SCTB+1 CLEAR OVERFLOW TRACK NUMBER
  5086. SX5 -NWCE/8 (CATALOG ENTRY IN 8 WORD PARCELS)
  5087. READ C
  5088. SCT2 READW C,WBUF,NWCE
  5089. SX5 X5+NWCE/8 (CATALOG ENTRY IN 8 WORD PARCELS)
  5090. NZ X1,SCT1 IF EOI ON TRACK
  5091. SA1 SCTA CATALOG ENTRIES PER TRACK (8 WORD PARCELS)
  5092. IX1 X5-X1
  5093. NG X1,SCT3 IF STILL ON SAME TRACK
  5094. SA1 SCTB+1 INCREMENT OVERFLOW TRACK NUMBER
  5095. SX6 X1+B1
  5096. SA6 A1
  5097. SYSTEM MPF,R,SCTB,6S6 GET OVERFLOW TRACK FST
  5098. SA1 SCTB+2
  5099. SX5 B0 RESET TO FIRST ENTRY ON TRACK
  5100. ADDWRD TCAT,X1
  5101. SA1 CN INCREMENT CURRENT TRACK NUMBER
  5102. SA2 CC INCREMENT NUMBER OF CATALOG TRACKS
  5103. SX6 X1+B1
  5104. SX7 X2+B1
  5105. SA6 A1
  5106. SX1 X6-MXCT
  5107. SX0 SCTE * TOO MANY OVERFLOW CATALOG TRACKS.*
  5108. PL X1,ERR IF TOO MANY TRACKS FOR THE FIELD SIZE
  5109. SA7 A2
  5110. SCT3 SA1 WBUF+FCUI
  5111. SA4 A1+B1
  5112. ERRNZ 1-FCUI-FCBS CODE DEPENDS ON *FCUI*, *FCBS* VALUES
  5113. ERRNZ FCBT-FCBS CODE DEPENDS ON *FCBT*, *FCBS* VALUES
  5114. ERRNZ FCBT-FCLF CODE DEPENDS ON *FCBT*, *FCLF* VALUES
  5115. LX4 59-11
  5116. NG X4,SCT7 IF DIRECT ACCESS FILE
  5117. MX2 -12 CHECK FOR ZERO TRACK
  5118. BX2 -X2*X4
  5119. ZR X2,SCT2 IF DISK SPACE RELEASED
  5120. SA2 CN
  5121. LX2 24+18
  5122. SX7 X5+
  5123. LX7 24
  5124. PX7 X7
  5125. BX7 X7+X2
  5126. MX3 -18
  5127. BX3 -X3*X1 USER INDEX
  5128. NZ X3,SCT4 IF FILE (NOT HOLE)
  5129. MX3 1 SET HOLE FLAG
  5130. BX7 X7+X3
  5131. EQ SCT5 ISOLATE HOLE FLAG
  5132.  
  5133. SCT4 SX3 X3-IFUI CHECK IF CATALOGED UNDER *IFUI*
  5134. NZ X3,SCT5 IF NOT A FLAWED SECTOR CHAIN
  5135. SX3 B1 SET IMMOVABLE FILE FLAG
  5136. LX3 57-0
  5137. BX7 X7+X3
  5138. SA3 WBUF+FCLF GET LENGTH
  5139. MX6 -24
  5140. LX3 24
  5141. BX6 -X6*X3 FLAW LENGTH
  5142. SX3 B1
  5143. LX6 30
  5144. IX6 X6+X3 30/ LENGTH,30/ COUNT
  5145. SA3 FW
  5146. IX6 X6+X3
  5147. SA6 A3
  5148. SCT5 LX4 11-59
  5149. MX3 -24
  5150. BX0 -X3*X4 (X0 IS UNCHANGED BY ADDWORD)
  5151. BX1 X0+X7
  5152. MX3 1
  5153. BX3 X3*X7 ISOLATE HOLE FLAG
  5154. BX0 X0+X3 SAVE HOLE FLAG
  5155. ADDWRD TFRI,X1
  5156. SA2 OF ONSET FILES
  5157. PL X0,SCT6 IF FILE
  5158. SA2 OH ONSET HOLES
  5159. SCT6 MX3 1
  5160. BX0 -X3*X0 REMOVE HOLE FLAG
  5161. SA1 WBUF+FCLF
  5162. MX3 24
  5163. BX1 X3*X1
  5164. BX1 X0+X1 24/ LENGTH,12/ 0,12/ TK,12/ SC
  5165. BX6 X1*X3 LENGTH
  5166. LX6 30-36+60
  5167. SX3 B1
  5168. IX6 X6+X3 30/ LENGTH,30/ COUNT
  5169. IX6 X6+X2
  5170. SA6 A2 UPDATE (OF) OR (OH)
  5171. SA2 LT CHECK IF *TFHL* TABLE IS ACTIVE
  5172. NZ X2,SCT2 IF *TFHL* IS NOT ACTIVE
  5173. ADDWRD TFHL,X1
  5174. EQ SCT2 LOOP
  5175.  
  5176. SCT7 MX3 -18
  5177. BX3 -X3*X1
  5178. NZ X3,SCT2 IF DIRECT ACCESS FILE IN USE
  5179. SA2 CN
  5180. MX3 1
  5181. LX2 24+18
  5182. SX1 X5+
  5183. LX1 24
  5184. PX1
  5185. BX1 X1+X2
  5186. BX1 X1+X3 SET HOLE BIT
  5187. ADDWRD TAPE,X1 TABLE OF AVAILABLE PFC ENTRIES
  5188. EQ SCT2 LOOP
  5189.  
  5190.  
  5191. SCTA CON 0 CATALOG ENTRIES PER TRACK (8 WORD PARCELS)
  5192. SCTB BSS 0 *MPF* PARAMETER BLOCK (FN=6)
  5193. CON 0 BASE CATALOG TRACK FST
  5194. CON 0 NUMBER OF OVERFLOW TRACK WHOSE FST IS DESIRED
  5195. CON 0 OVERFLOW TRACK FST (RETURNED)
  5196. * (12/EQ,12/FT,12/FT,12/0,12/5)
  5197. SCTC DATA C/ CREATING CATALOG TRACK TABLES./
  5198. SCTD DATA C/ CATALOG FST CURRENT SECTOR .NE. ZERO./
  5199. SCTE DATA C* TOO MANY OVERFLOW CATALOG TRACKS.*
  5200. SRA SPACE 4,15
  5201. ** SRA - SET RANDOM ADDRESS.
  5202. *
  5203. * ENTRY (X5) = 36/ ,12/ TK, 12/ SC.
  5204. *
  5205. * EXIT (X6) = RANDOM SECTOR ADDRESS.
  5206. * TO *ERR* IF ERROR.
  5207. *
  5208. * USES X - ALL.
  5209. * A - 1, 3, 4, 7.
  5210. * B - 6, 7.
  5211.  
  5212.  
  5213. SRA3 BX4 -X0*X1
  5214. IX6 X4-X2
  5215. NG X6,SRA2 IF NOT ON CHAIN
  5216. IX6 X7+X2
  5217. LX7 12
  5218. BX7 X7+X4
  5219. SA7 A1 PRESET LENGTH
  5220.  
  5221. SRA SUBR ENTRY/EXIT
  5222. MX0 -12
  5223. BX2 -X0*X5 SECTOR
  5224. AX5 12
  5225. BX5 -X0*X5 TRACK
  5226. SB7 59-11 SHIFT FOR TRACK BIT
  5227. SA1 F.TTLT
  5228. SB6 X1-1S11 FWA - 4000B
  5229. SA4 FT FIRST TRACK OF IAPF CHAIN
  5230. SA3 SL SECTORS/TRACK
  5231. BX7 X7-X7
  5232. SA1 B6+X5
  5233. BX6 X0*X1
  5234. ZR X6,SRA1 IF LENGTH NOT PREDETERMINED
  5235. BX7 X6 PRECALCULATED LENGTH
  5236. AX7 12
  5237. EQ SRA3 SET RSA AND EXIT
  5238.  
  5239. SRA1 SA1 B6+X4
  5240. BX6 X4-X5
  5241. ZR X6,SRA3 IF TRACK LOCATED
  5242. IX7 X7+X3
  5243. LX6 X1,B7
  5244. PL X6,SRA2 IF END OF CHAIN
  5245. BX4 -X0*X1
  5246. EQ SRA1 LOOP
  5247.  
  5248. SRA2 SX0 SRAA * DISK ADDRESS NOT ON CHAIN.*
  5249. EQ ERR ABORT
  5250.  
  5251.  
  5252. SRAA DATA C* DISK ADDRESS NOT ON CHAIN.*
  5253. SST SPACE 4,30
  5254. ** SST - SHELL SORT TABLE.
  5255. *
  5256. * *SST* SORTS A TABLE USING A SHELL SORTING TECHNIQUE.
  5257. * THE TABLE IS SORTED IN PLACE INTO ASCENDING ORDER.
  5258. * ALL ELEMENTS SHOULD BE OF THE SAME SIGN.
  5259. *
  5260. * ORIGIN OF TECHNIQUE IS CACM VOL 6 NUMBER 5 MAY 1963, P209.
  5261. * FIRST CODED BY R. HOTCHKISS IN *SORT1*.
  5262. * REVISED BU L. A. LIDDIARD.
  5263. * MODIFIED TO PERFORM MASKED SORT BY D. F. LINTON
  5264. * AND C. A. LACEY, 1975.
  5265. *
  5266. * ENTRY (B7) = ADDRESS OF TABLE TO BE SORTED.
  5267. * (X1) = NUMBER OF ELEMENTS IN ARRAY.
  5268. *
  5269. * EXIT TABLE SORTED.
  5270. *
  5271. * USES X - 0, 1, 2, 3, 4, 6, 7.
  5272. * B - 2, 3, 4, 5.
  5273. * A - 1, 2, 6, 7.
  5274.  
  5275.  
  5276. SST1 SA7 B5-B4 T(J+K) = S
  5277. SB2 B2+B1 I = I+1
  5278. EQ B2,B3,SST4 IF END OF TABLE
  5279. SST2 SA2 B2+ S = T(I)
  5280. SB5 B2+B4 J = I-K
  5281. BX7 X2
  5282. SST3 SA1 B5+
  5283. BX2 -X0*X2
  5284. BX6 X1
  5285. BX1 -X0*X1
  5286. IX3 X2-X1 COMPARE S AND T(J)
  5287. PL X3,SST1 IF ELEMENTS IN ORDER
  5288. SB5 B5+B4 J = J-K
  5289. SA6 A1-B4
  5290. GE B5,B7,SST3 IF J .NE. FIRST
  5291. EQ SST1 CONTINUE
  5292.  
  5293. SST4 AX4 1 K = K/2
  5294. SB4 X4+ (B4) = -K
  5295. SB2 B7-B4 I = FIRST+K
  5296. NZ X4,SST2 IF K .NE. 0
  5297.  
  5298. SST SUBR ENTRY/EXIT
  5299. MX0 -24
  5300. MX4 12 K = 2**(ENTIER(LOG2(COUNT)+1)
  5301. SB3 B7+X1 (B3) = LAST+1
  5302. NX6,B2 X1
  5303. AX4 X4,B2
  5304. EQ SST4 BEGIN SORTING
  5305. SPACE 4,10
  5306. * PRESET COMMON DECKS.
  5307.  
  5308.  
  5309. *CALL COMCARG
  5310. *CALL COMCCPM
  5311. *CALL COMCDXB
  5312. *CALL COMCRDW
  5313. SPACE 4,10
  5314. QUAL *
  5315. PRS EQU /PRS/PRS
  5316. SPACE 4,10
  5317. ERRNG RFL=-* INITIAL FIELD LENGTH TOO SHORT
  5318. SPACE 4
  5319. END