Table of Contents

DMSDSV Source

References

Source Listing

DMSDSV.ASSEMBLE.txt
  1. DSV TITLE 'DMSDSV (CMS) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 00002000
  3. * IBM DISK OPERATING SYSTEM 00003000
  4. * LIBRARIAN - 5745-SC-LBR 00004000
  5. *. 00005000
  6. * 00006000
  7. * MODULE NAME: 00007000
  8. * 00008000
  9. * DMSDSV (DSERV) 00009000
  10. * 00010000
  11. * FUNCTION: 00011000
  12. * 00012000
  13. * DMSDSV WILL LIST THE DIRECTORIES OF DOS PRIVATE 00013000
  14. * OR SYSTEM PACKS. 00014000
  15. * 00015000
  16. * ATTRIBUTES: 00016000
  17. * 00017000
  18. * NON-REUSABLE NON-REENTRANT 00018000
  19. * 00019000
  20. * ENTRY POINT: 00020000
  21. * 00021000
  22. * DMSDSV 00022000
  23. * 00023000
  24. * ENTRY CONDITION: 00024000
  25. * 00025000
  26. * R1 - PLIST 00026000
  27. * 00027000
  28. * PLIST: 00028000
  29. * CL8'DSERV' 00029000
  30. * CL8'DIRECTORY' 00030000
  31. * CL8'DIRECTORY' OPTIONAL 00031000
  32. * CL8'PHASE' OPTIONAL WITH 'CD' 00032000
  33. * CL8'PHASENAME' DITTO 00033000
  34. * CL8'NUMBER' DITTO 00034000
  35. * CL8'(' IF OPTIONS DESIRED 00035000
  36. * CL8'SORT' IF ALPHAMERIC SORT WANTED 00036000
  37. * CL8'TERM','DISK','PRINT' 00037000
  38. * 00038000
  39. * DIRECTORY - SPECIFIES TYPES OF DIRECTORIES 00039000
  40. * TO BE DISPLAYED. THE ALLOWED TYPES ARE 00040000
  41. * 'CD' (CORE IMAGE DIRECTORY), 'RD' (RELOCATABLE 00041000
  42. * DIRECTORY), 'SD' (SOURCE STATEMENT DIRECTORY), 00042000
  43. * 'TD' (TRANSIENT DIRECTORY), 00043000
  44. * 'PD' (PROCEDURE DIRECTORY) OR 'ALL'. 00044000
  45. * THE USER PRIVATE LIBRARIES WILL 00045000
  46. * TAKE PRECEDENCE OVER SYSTEM DIRECTORIES. 00046000
  47. * 00047000
  48. * PHASE - SPECIFIES THAT THE NEXT ENTRY WILL 00048000
  49. * BE THE PHASENAME (VALID ONLY WITH CD). 00049000
  50. * 00050000
  51. * PHASENAME - THE NAME OF THE PHASE TO BE 00051000
  52. * LISTED. IF THE PHASENAME ENDS WITH AN 00052000
  53. * ASTERISK, ALL PHASES THAT START WITH THE 00053000
  54. * LETTERS BEFORE THE ASTERISK WILL BE 00054000
  55. * DISPLAYED. 00055000
  56. * 00056000
  57. * NUMBER - THE OFFSET WITHIN THE PHASE WHERE 00057000
  58. * THE VERSION AND MOD LEVEL ARE TO BE FOUND 00058000
  59. * (DEFAULT IS TWELVE). 00059000
  60. * 00060000
  61. * SORT - SPECIFIES THAT THE ENTRIES ARE TO BE 00061000
  62. * SORTED ALPHAMERICALLY, OTHERWISE THE ORDER 00062000
  63. * WILL BE THE ORDER THEY WERE CATALOGED. 00063000
  64. * 00064000
  65. * TERM - THE OUTPUT WILL BE DISPLAYED ON THE 00065000
  66. * USERS TERMINAL. 00066000
  67. * 00067000
  68. * DISK - THE OUTPUT WILL BE STORED ON A CMS 00068000
  69. * DISK WITH A FILENAME OF DSERV AND A FILETYPE 00069000
  70. * OF MAP (THIS IS THE DEFAULT). 00070000
  71. * 00071000
  72. * PRINT - THE OUTPUT WILL BE PRINTED ON THE 00072000
  73. * SYSTEM OUTPUT DEVICE. 00073000
  74. * 00074000
  75. * EXIT CONDITIONS: 00075000
  76. * 00076000
  77. * NORMAL - RETURN TO CMS VIA R14, R15=ZERO. 00077000
  78. * ERROR - RETURN TO CMS VIA R14, R15=NON-ZERO. 00078000
  79. * 00079000
  80. * CALLS TO OTHER ROUTINES: 00080000
  81. * 00081000
  82. * DMSERR, DMSPRT 00082000
  83. * 00083000
  84. * EXTERNAL REFERENCES: 00084000
  85. * 00085000
  86. * NONE 00086000
  87. * 00087000
  88. * TABLES/WORKAREAS: 00088000
  89. * 00089000
  90. * PNBUCKET - PHASE NAME BUCKET USED TO SELECT THE 00090000
  91. * SPECIFIC PHASES(S) IN CORE IMAGE LIBRARY. 00091000
  92. * 00092000
  93. * LIBAREA - 1024-BYTE CD LIBRARY READIN AREA FOR 00093000
  94. * SEARCHING VERSION AND MOD LEVEL. 00094000
  95. * 00095000
  96. * RLAREA - 80-BYTE REL DIR INFORMATION RECORD READIN AREA CMS 00096000
  97. * 00097000
  98. * SLAREA - 80-BYTE SS DIR INFORMATION RECORD READIN AREA 00098000
  99. * 00099000
  100. * PLAREA - 80-BYTE PROC DIR INFORMATION REC READIN AREA 00100000
  101. * 00101000
  102. * REGISTER USAGE: 00102000
  103. * 00103000
  104. * R1 - INPUT PLIST 00104000
  105. * R2-R11 - WORK REGISTERS 00105000
  106. * R12 - WORK AREAS, COMMON ROUTINES 00106000
  107. * R13 - ROUTINE BASE 00107000
  108. * R14-R15 - WORK REGISTERS 00108000
  109. * 00109000
  110. * OPERATION: 00110000
  111. * 00111000
  112. * CONTROL ENTERS DSERV AT THE LOCATION STARTA. 00112000
  113. * A CHECK IS MADE TO DETERMINE DOS IS ACTIVE AND CONTROL 00113000
  114. * IS THEN PASSED TO DSERV1 TO CHECK FOR PLIST ERRORS 00114000
  115. * AND THE OPERATIONS DESIRED. ALSO, TESTS ARE MADE TO 00115000
  116. * DETERMINE IF SYSTEM OR PRIVATE LIBRARIES ARE ASSIGNED 00116000
  117. * AND APPROPRIATE INDICATORS ARE SET. THE BRANCH TABLE 00117000
  118. * IS SET TO PASS CONTROL TO THE ROUTINE THAT PERFORMS 00118000
  119. * THE DESIRED OPERATION. AT THE CONCLUSION OF THE 00119000
  120. * OPERATION, CONTROL RETURNS TO DSERV1 TO CHECK FOR 00120000
  121. * ANOTHER OPERATION OR, IF NONE, TO TERMINATE THE 00121000
  122. * PROGRAM. 00122000
  123. * 00123000
  124. * DSERV2 RECEIVES CONTROL IF THE DESIRED OPERATION 00124000
  125. * IS TO PRINT THE TRANSIENT OR CORE IMAGE DIRECTORY. 00125000
  126. * THE HEADER IS INITIALIZED AND A RECORD IS READ. IF 00126000
  127. * A CD REQUEST WAS MADE WITH A PHASENAME, THE DIRECTORY 00127000
  128. * IS SEARCHED FOR THE SPECIFIED PHASENAME. THE HEADER 00128000
  129. * IS THEN PRINTED AND THE DIRECTORY ENTRIES ARE MASSAGED 00129000
  130. * TO FIT THE OUTPUT FORMAT. ADDITIONAL RECORDS ARE READ 00130000
  131. * AND PRINTED UNTIL THE REQUEST IS SATISFIED, THEN 00131000
  132. * CONTROL RETURNS TO DSERV1. 00132000
  133. * 00133000
  134. * DSERV3 RECEIVES CONTROL IF THE DESIRED OPERATION 00134000
  135. * IS TO PRINT THE RELOCATABLE, SOURCE STATEMENT, OR 00135000
  136. * PROCEDURE DIRECTORY. THE RECORDS ARE READ INTO CORE 00136000
  137. * AND SORTED IF SORT WAS SPECIFIED. IF NOT ENOUGH CORE 00137000
  138. * IS AVAILABLE, THE ADDITIONAL RECORDS WILL BE READ IN 00138000
  139. * SUBSEQUENT PASSES UNTIL ALL ARE PROCESSED. CONTROL 00139000
  140. * IS THEN PASSED TO THE PROPER PRINT ROUTINE. 00140000
  141. * 00141000
  142. * DSERV4 RECEIVES CONTROL IF THE RELOCATABLE OR 00142000
  143. * SOURCE STATEMENT DIRECTORY IS TO BE PRINTED. RELOC- 00143000
  144. * ATABLE DIRECTORY ENTRIES ARE FORMATTED TO RESEMBLE 00144000
  145. * SOURCE STATEMENT DIRECTORY ENTRIES FOR COMMON PRINT 00145000
  146. * ROUTINE AND THE ENTRIES ARE TRANSLATED TO PRINTABLE 00146000
  147. * CHARACTERS. WHEN ALL THE RECORDS ARE PRINTED, A 00147000
  148. * CHECK IS MADE TO DETERMINE IF MORE ARE AVAILABLE. 00148000
  149. * IF SO, A SWITCH IS SET TO INDICATE TO DSERV1 TO 00149000
  150. * RETURN TO DSERV3. 00150000
  151. * 00151000
  152. * DSERV5 RECEIVES CONTROL IF THE PROCEDURE 00152000
  153. * DIRECTORY IS TO BE PRINTED. THE DIRECTORY ENTRIES 00153000
  154. * ARE TRANSLATED TO PRINTABLE CHARACTERS AND PRINTED. 00154000
  155. * WHEN COMPLETE, A CHECK IS MADE TO DETERMINE IF MORE 00155000
  156. * ENTRIES ARE AVAILABLE. IF SO, A SWITCH IS SET TO 00156000
  157. * INDICATE TO DSERV1 TO RETURN TO DSERV3. 00157000
  158. * 00158000
  159. *. 00159000
  160. EJECT 00160000
  161. USING NUCON,R0 @V305096 00161000
  162. DMSDSV CSECT @V305065 00162000
  163. SPACE 1 00163000
  164. * THE FOLLOWING ENTRY IS NOT USED BY DSERV, IT IS ONLY USED 00164000
  165. * TO FULFILL STANDARD REQUIREMENTS. 00165000
  166. ENTRY IJJCPD3 DUMMY ENTRY @V305096 00166000
  167. SPACE 00167000
  168. ROOTPH DC C'DSERV ' PHASE NAME @V305096 00168000
  169. SPACE 00169000
  170. *********************************************************************** 00170000
  171. ***** ***** 00171000
  172. ***** CURRENT VERSION AND MOD LEVEL - THESE TWO BYTES MUST BE ***** 00172000
  173. ***** UPDATED FOR EACH RELEASE ***** 00173000
  174. ***** ***** 00174000
  175. VERSION DC X'2900' VERSION AND MOD. LEVEL @V305096 00175000
  176. MODLEVEL EQU VERSION+1 MOD LEVEL BYTE @V305096 00176000
  177. ***** ***** 00177000
  178. *********************************************************************** 00178000
  179. SPACE 2 00179000
  180. *********************************************************************** 00180000
  181. ***** INITIALIZE THE BASE REG AND OVERLAY PHASES BASE REG * 00181000
  182. ***** LOAD NEXT PROCESSING OVERLAY PHASE * 00182000
  183. *********************************************************************** 00183000
  184. SPACE 00184000
  185. STARTA BALR R12,R0 LOAD BASE REG @V305096 00185000
  186. USING *,R12 SPECIFY BASE REG TO ASSEMBLER@V305096 00186000
  187. SL R12,VMDISP BASE REG TO START OF CSECT @V305096 00187000
  188. USING ROOTPH,R12 SPECIFY LOCATION TO ASSEMBLR @V305096 00188000
  189. ST R14,R14SAVE SAVE RETURN REGISTER @V305065 00189000
  190. DMSKEY NUCLEUS @V305065 00190000
  191. TM DOSFLAGS,DOSMODE IS DOS ACTIVE? @V305065 00191000
  192. BZ NODOS BRANCH IF NOT @V305065 00192000
  193. L R13,20 POINT TO COMM. REGION @V305065 00193000
  194. USING BGCOM,R13 @V305065 00194000
  195. MVC COMNAME(8),ROOTPH MOVE IN PROGRAM NAME @V305065 00195000
  196. DROP R13 @V305096 00196000
  197. DMSKEY RESET @V305065 00197000
  198. SPACE 2 00198000
  199. FETCH L R13,PHASNAME ADDR OF PHASE TO LOAD @V305096 00199000
  200. SLL R13,2 GET OFFSET @V305065 00200000
  201. L R13,PHASNAME(R13) GET PHASE ADDRESS @V305065 00201000
  202. BR R13 GO TO PHASE @V305065 00202000
  203. SPACE 2 00203000
  204. FINAL EQU * @V305065 00204000
  205. FSCLOSE ,FSCB=MAP CLOSE MAP FILE(IF ONE) @V305065 00205000
  206. DMSKEY NUCLEUS @V305065 00206000
  207. FINAL1 EQU * @V305065 00207000
  208. TM CMSSWT,PRTOPT WAS PRINTER SPECIFIED? @V305065 00208000
  209. BZ FINALA BRANCH IF NOT @V305065 00209000
  210. LA R1,CLSPLST POINT TO PLIST @V305065 00210000
  211. SVC 202 ISSUE CP CLOSE FOR PRINTER @V305065 00211000
  212. DC AL4(FINALA) @V305065 00212000
  213. FINALA EQU * @V305065 00213000
  214. TM DOSFLAGS,DOSMODE IS DOS ACTIVE? @VA06147 00213300
  215. BZ FINALB BRANCH IF NOT @VA06147 00213700
  216. L R1,20 POINT TO COMM. REGION @V305065 00214000
  217. USING BGCOM,R1 @V305065 00215000
  218. MVC COMNAME(8),=CL8'CMS/DOS' MOVE IN DEFAULT NAME @V305065 00216000
  219. DROP R1 @V305096 00217000
  220. FINALB EQU * @VA06147 00217500
  221. DMSKEY RESET @V305065 00218000
  222. L R14,R14SAVE RESTORE RETURN REGISTER @V305065 00219000
  223. SR R15,R15 CLEAR REGISTER @V305065 00220000
  224. IC R15,ERCODE GET ERROR CODE @V305065 00221000
  225. BR R14 RETURN TO CMS @V305065 00222000
  226. EJECT 00223000
  227. SPACE 3 00224000
  228. *********************************************************************** 00225000
  229. ***** ROUTINE TO PRINT ERROR MESSAGES OR A DIRECTORY LISTING * 00226000
  230. *********************************************************************** 00227000
  231. SPACE 00228000
  232. PRINT SR R0,R0 CLEAR LINE COUNTER REG @V305096 00229000
  233. IC R0,LINES GET REMAINING LINES @V305096 00230000
  234. TM SWA,HEADIND NEED A HEADER FOR NEW PAGE @V305096 00231000
  235. BZ REDUCE NO @V305096 00232000
  236. XI SWA,HEADIND RESET NEED HEADER IND @V305096 00233000
  237. MVI PRINTA,SKIP1 SET ASA CODE TO SKIP TO 1 @V305096 00234000
  238. REDUCE EQU * @V305065 00235000
  239. TM CMSSWT,PRTOPT WAS PRINT SPECIFIED? @V305065 00236000
  240. BZ SAVER0 BRANCH IF NOT @V305065 00237000
  241. BCT R0,SAVER0 IF ZERO, GET NEW LINE COUNT @V305096 00240000
  242. IC R0,LINECTR REINIT LINE COUNTER REG @V305096 00241000
  243. OI SWA,HEADIND SET NEED HEADER IND @V305096 00242000
  244. SAVER0 STC R0,LINES SAVE LINE COUNT @V305096 00243000
  245. TM CMSSWT,PRTOPT WAS PRINT SPECIFIED? @V305065 00244000
  246. BZ TYPE BRANCH IF NOT @V305065 00245000
  247. PRTLINE EQU * @V305065 00246000
  248. PRINTL PRINTA,121,ERROR=PRTERR @V305065 00247000
  249. PRTCLEAR EQU * @V305065 00248000
  250. SPACE 00249000
  251. MVC PRINTA,BLANKER CLEAR PRINT AREA @V305096 00250000
  252. BR R9 EXIT TO CALLER @V305096 00251000
  253. EJECT 00252000
  254. TYPE EQU * @V305065 00253000
  255. TM CMSSWT,TYPOPT WAS TYPE SPECIFIED? @V305065 00254000
  256. BZ DISK BRANCH IF NOT @V305065 00255000
  257. WRTERM PRINTB,121 TYPE LINE @V305065 00256000
  258. B PRTCLEAR AND RETURN @V305065 00257000
  259. EJECT 1 00258000
  260. DISK EQU * @V305065 00259000
  261. FSWRITE ,FSCB=MAP,ERROR=WRITERR @V305065 00260000
  262. B PRTCLEAR RETURN @V305065 00261000
  263. EJECT 1 00262000
  264. WRITERR EQU * @V305065 00263000
  265. LR R3,R15 SAVE ERROR CODE @V305065 00264000
  266. LA R6,8(,R1) POINT TO FILENAME @V305065 00265000
  267. DMSERR MF=(E,ERRLIST),NUM=105,TEXT='ERROR ''..'' WRITING FILE X00266000
  268. ''....................'' ON DISK',LET=S, @V305065X00267000
  269. SUB=(DEC,(3),CHARA,(6)) @V305065 00268000
  270. MVI ERCODE,HUND SET ERROR CODE @V305065 00269000
  271. B FINAL @V305065 00270000
  272. EJECT 1 00271000
  273. PRTERR EQU * @V305065 00272000
  274. MVI PRINTA,C'+' SUPPRESS SPACE @V305065 00273000
  275. CH R15,=H'3' CHANNEL 9? @V305065 00274000
  276. BE PRTLINE REPRINT LINE IF SO @V305065 00275000
  277. OI SWA,HEADIND INDICATE NEW HEADER @V305065 00276000
  278. CH R15,=H'2' CHANNEL 12 SENSED? @V305065 00277000
  279. BE PRTLINE REPRINT LINE IF SO @V305065 00278000
  280. LR R3,R15 GET ERROR CODE @V305065 00279000
  281. DMSERR NUM=245,LET=S,SUB=(DEC,(R3)), @V305065X00280000
  282. TEXT='ERROR ''...'' ON PRINTER' @V305065 00281000
  283. MVI ERCODE,HUND SET ERROR CODE @V305065 00282000
  284. B FINAL @V305065 00283000
  285. EJECT 1 00284000
  286. NODOS EQU * @V305065 00285000
  287. DMSERR NUM=099,LET=E, @V305065X00286000
  288. TEXT='CMS/DOS ENVIRONMENT NOT ACTIVE' @V305065 00287000
  289. MVI ERCODE,FORTY RETURN CODE = 40 @V305066 00288000
  290. B FINAL1 @V305065 00289000
  291. EJECT 1 00290000
  292. ***** CONSTANTS - COMMON TO ALL PHASES, LOCATED IN THE ROOT PHASE 00291000
  293. ***** SAVE AREAS, BUCKETS, FLAGS, ETC FOR FOLLOWING PHASES 00292000
  294. SPACE 1 00293000
  295. SAVEREGS DC 2F'0' REGISTER SAVE AREA @V305096 00294000
  296. R14SAVE DC F'0' @V305065 00295000
  297. SORTSTRT DC A(ENDDSERV) START OF SORT AREA ADDR @V305096 00296000
  298. VMDISP DC F'12' INIT STANDARD VM LOCATION @V305096 00297000
  299. PNBUCKET DC CL8' ' PHASE NAME BUCKET @V305096 00298000
  300. PHASNAME DC F'1' PHASE NAME TO BE FETCHED@V305096 00299000
  301. PHASENO EQU PHASNAME+3 PHASE CHARACTER NAME @V305096 00300000
  302. PHASE DC A(DSERV1) PHASE ADDRESSES @V305065 00301000
  303. DC A(DSERV2) @V305065 00302000
  304. DC A(DSERV3) @V305065 00303000
  305. DC A(DSERV4) @V305065 00304000
  306. DC A(DSERV5) @V305065 00305000
  307. ENTRIES DC F'0' NO. OF ENTRIES ON FULL PAGES @V305096 00306000
  308. SORTEND DC F'0' END OF SORT AREA ADDR @V305096 00307000
  309. TRCYLCIL DC F'0' TRACKS/CYL IN (P)CIL @V305096 00308000
  310. RESBLOCK DC H'1024' CIL BLOCK SIZE @V305096 00309000
  311. REMAINS DC H'0' NO. OF ENTRIES ON LAST PAGE @V305096 00310000
  312. RECORDS DC H'0' NUMBER OF RECORDS SORTED@V305096 00311000
  313. HALFW9 DC H'9' CONSTANT OF 9 @V305096 00312000
  314. DISKCID DC X'0000000201' CORE IMAGE DIR DISK ADDR@V305096 00313000
  315. DISKRLD DC X'0000000000' RELOC DIR DISK ADDR @V305096 00314000
  316. DISKSLD DC X'0000000000' SOURC STMT DIR DISK ADDR@V305096 00315000
  317. DISKPLD DC XL5'0' PROCEDURE DIR. ADDRESS @V305096 00316000
  318. DISKSAVE DC X'0000000000' DISK ADDR SAVE AREA @V305096 00317000
  319. LINECTR DC X'00' SYSLST LINE COUNTER @V305096 00318000
  320. LINES DC X'00' LINES REMAINING ON PAGE @V305096 00319000
  321. DS 0D @V305065 00320000
  322. CLSPLST DC CL8'CP' @V305065 00321000
  323. DC CL8'CLOSE' @V305065 00322000
  324. DC CL8'PRINTER' @V305065 00323000
  325. DC 8X'FF' @V305065 00324000
  326. ACTLINES DC H'0' LINES(HEADER EXCLUDED) @V305096 00325000
  327. NAMELNG DC X'0' PHASE NAME LENGTH @V305096 00326000
  328. PASSCTR DC C'1' SORT PASS COUNTER @V305096 00327000
  329. PAGECTR DC X'01' PAGE COUNTER @V305096 00328000
  330. ERCODE DC X'0' CMS ERROR CODE @V305065 00329000
  331. SPACE 2 00330000
  332. BLANKER DC C' ' BLANK TO CLEAR PRINT AREA @V305096 00331000
  333. PRINTA DC CL121' ' PRINT AREA @V305096 00332000
  334. PRINTB EQU PRINTA+1 BEGINNING OF PRINT AREA @V305096 00333000
  335. DC C' ' *** WORK AREA FOR SECOND *** @V305096 00334000
  336. * *** COLUMN DIR. THIS BYTE *** 00335000
  337. * *** MUST NOT BE REMOVED *** 00336000
  338. ERRLIST DMSERR MF=L,SUB=(HEX,0,CHAR,0) @V305065 00337000
  339. MAP FSCB 'DSERV MAP A5',RECFM=F,BUFFER=PRINTB,BSIZE=120 @V305065 00338000
  340. EJECT 00339000
  341. CMSSWT DC X'0' CMS SWITCH @V305065 00340000
  342. PRTOPT EQU X'40' PRINT OPTION SPECIFIED @V305065 00341000
  343. TYPOPT EQU X'20' TERM OPTION SPECIFIED @V305065 00342000
  344. DSKOPT EQU X'80' DISK OPTION SPECIFIED @V305065 00343000
  345. PRT3211 EQU X'10' 3211 PRINTER SPECIFIED @V305065 00344000
  346. SPACE 1 00345000
  347. SWA DC X'0' DISPLAY SWITCH A @V305096 00346000
  348. SPACE 1 00347000
  349. VMIND EQU X'80' VER AND MOD LEVEL IND @V305096 00348000
  350. HEADIND EQU X'40' HEADER NEEDED IND @V305096 00349000
  351. NONAME EQU X'20' PHASE NAME NOT FOUND IND@V305096 00350000
  352. ALLIND EQU X'1F' DISPLAY ALL INDICATORS @V305096 00351000
  353. PDIND EQU X'10' DISPLAY PROCEDURE DIRECTORY @V305096 00352000
  354. SDIND EQU X'08' DISPLAY SOURCE STMNT DIRECTORY @V305096 00353000
  355. RDIND EQU X'04' DISPLAY RELOCATABLE DIRECTORY @V305096 00354000
  356. CDIND EQU X'02' DISPLAY CORE IMAGE DIRECTORY @V305096 00355000
  357. TDIND EQU X'01' DISPLAY TRANSIENT DIRECTORY @V305096 00356000
  358. SPACE 2 00357000
  359. SWB DC X'0' SWITCH BYTE B @V305096 00358000
  360. SPACE 1 00359000
  361. SYSTD EQU X'80' DISPLAY TRANSIENT DIRECTORY @V305096 00360000
  362. SYSCL EQU X'40' DISPLAY SYSTEM CORE IMAGE DIR@V305096 00361000
  363. SYSRL EQU X'20' DISPLAY SYSTEM REL DIR @V305096 00362000
  364. SYSSL EQU X'10' DISPLAY SYSTEM SOURCE DIR @V305096 00363000
  365. SYSPL EQU X'08' DISPLAY SYSTEM PROC. DIR. @V305096 00364000
  366. ANYMORE EQU X'F8' ANY DIRECTORY DISPLAY MASK @V305096 00365000
  367. SPACE 1 00366000
  368. SWB1 DC X'0' DISPLAY SWITCH B1 @V305096 00367000
  369. SPACE 1 00368000
  370. PCLB EQU X'40' DISPLAY PRIVATE CORE IMAGE D.@V305096 00369000
  371. PRLB EQU X'20' DISPLAY PRIVATE REL DIR @V305096 00370000
  372. PSLB EQU X'10' DISPLAY PRIVATE SOURCE DIR. @V305096 00371000
  373. PTD EQU X'80' PRIVATE TRANSIENT DIR IND @V305096 00372000
  374. RESERVE EQU X'08' RESERVED @V305096 00373000
  375. FIRST EQU X'01' FIRST TIME IND @V305096 00374000
  376. SPACE 1 00375000
  377. SWC DC X'0' SWITCH BYTE C @V305096 00376000
  378. SPACE 00377000
  379. FULLTBL EQU X'80' FULL TABLE IND @V305096 00378000
  380. RELOOP EQU X'40' GO THROUGH SORT LOOP AGAIN @V305096 00379000
  381. ONEIND EQU X'10' DISPLAY SINGLE PHASE @V305096 00380000
  382. LEVELNO EQU X'08' NEED LEVEL NO. FROM NEXT RECORD @V305096 00381000
  383. SKIPNAME EQU X'04' DO NOT SCAN PHASE NAME IND. @V305096 00382000
  384. DUMYCNT EQU X'02' DUMY LOOP-COUNT RECDS LEFT IND. @V305096 00383000
  385. DISPLACE EQU X'01' DISPLACEMENT SEPECIFIED IND. @V305096 00384000
  386. SPACE 2 00385000
  387. SWD DC X'0' SWITCH BYTE D @V305096 00386000
  388. SPACE 00387000
  389. SORT EQU X'80' ALPHANUMERICALLY DISPLAY@V305096 00388000
  390. SVADIR EQU X'40' SVA PRESENT INDICATOR @V305096 00389000
  391. PCST EQU X'20' PRIVATE CORE IMAGE STATUS IND@V305096 00390000
  392. PRST EQU X'10' PRIVATE REL STATUS IND @V305096 00391000
  393. PSST EQU X'08' PRIVATE SOURCE STATUS IND @V305096 00392000
  394. SECOND EQU X'04' SECOND TIME INDICATOR @V305096 00393000
  395. DIREND EQU X'02' IND END OF DIR REACHED @V305096 00394000
  396. SYSST EQU X'01' SYSRES IND @V305065 00395000
  397. SPACE 2 00396000
  398. SWE DC X'00' SWITCH BYTE E @V305096 00397000
  399. SPACE 00398000
  400. ERR3 EQU X'80' NO SYSTEM REL ACTIVE ENTRIES @V305096 00399000
  401. ERR4 EQU X'40' NO SYSTEM SOR ACTIVE ENTRIES IND @V305096 00400000
  402. ERR5 EQU X'20' NO PRI CI ACTIVE ENTRIES IND @V305096 00401000
  403. ERR6 EQU X'10' NO PRI REL ACTIVE ENTRIES IND @V305096 00402000
  404. ERR7 EQU X'08' NO PRI SOR ACTIVE ENTRIES IND @V305096 00403000
  405. ERR8 EQU X'04' NO PRIV TD ACTIVE ENTRIES IND @V305096 00404000
  406. ERR9 EQU X'02' NO SYSTEM PROC LIBRARY @V305096 00405000
  407. ERR10 EQU X'01' SYTEM PROC LIB CANNOT BE USED @V305096 00406000
  408. SPACE 2 00407000
  409. *********************************************************************** 00408000
  410. ***** EQUATES -- COMMON TO ALL PHASES, LOCATED IN ROOT PHASE * 00409000
  411. *********************************************************************** 00410000
  412. SPACE 2 00411000
  413. ***** REGISTER EQUATES 00412000
  414. SPACE 1 00413000
  415. R0 EQU 0 WORK REG @V305096 00414000
  416. R1 EQU 1 I/O AND WORK REG @V305096 00415000
  417. R2 EQU 2 WORK REG @V305096 00416000
  418. R3 EQU 3 WORK REG @V305096 00417000
  419. R4 EQU 4 WORK REG @V305096 00418000
  420. R5 EQU 5 WORK REG @V305096 00419000
  421. R6 EQU 6 WORK REG @V305096 00420000
  422. R7 EQU 7 WORK REG @V305096 00421000
  423. R8 EQU 8 WORK AND ERROR MESSG POINTER @V305096 00422000
  424. R9 EQU 9 LINK REG TO SUBROUTINES @V305096 00423000
  425. R10 EQU 10 WORK REG @V305096 00424000
  426. R11 EQU 11 WORK REG @V305096 00425000
  427. R12 EQU 12 BASE REG FOR OVERLAY PHASES @V305096 00426000
  428. R13 EQU 13 PROGRAM BASE REG - ASERV ROOT PH @V305096 00427000
  429. R14 EQU 14 GET/PUT REG FOR LIOCS @V305096 00428000
  430. R15 EQU 15 LIOCS BASE REG @V305096 00429000
  431. EJECT 00430000
  432. ***** CCW OP CODE AND FLAG EQUATES 00431000
  433. SPACE 1 00432000
  434. SEEK EQU X'07' SEEK BBCCHH COMMAND @V305096 00433000
  435. SIDE EQU X'31' SEARCH ID EQUAL COMMAND @V305096 00434000
  436. TIC EQU X'08' TRANSFER IN CHANNEL COMMAND @V305096 00435000
  437. READ EQU X'06' READ DATA COMMAND @V305096 00436000
  438. RDCNT EQU X'92' READ COUNT/MULTI TRACK COMMAND @V305096 00437000
  439. SPACE 2 00438000
  440. SLI EQU X'20' SUPPRESS WRONG LNG CCW IND @V305096 00439000
  441. CCSLI EQU X'60' CHAIN AND WRONG LNG CCW IND @V305096 00440000
  442. WRNGLN EQU X'40' WRONG LENGTH BIT IN CCB @V305096 00441000
  443. SPACE 3 00442000
  444. RES EQU X'06' SYSRES LOGICAL UNIT @V305096 00443000
  445. SLB EQU X'07' SYSSLB LOGICAL UNIT NUMBER @V305096 00444000
  446. RLB EQU X'08' SYSRLB LOGICAL UNIT NUMBER @V305096 00445000
  447. VMDISP1 EQU VMDISP+3 VERSION BYTE @V305096 00446000
  448. EJECT 00447000
  449. ***** CONSTANT EQUATES 00448000
  450. SPACE 2 00449000
  451. ZERO EQU 0 @V305096 00450000
  452. ONE EQU 1 @V305096 00451000
  453. TWO EQU 2 @V305096 00452000
  454. THREE EQU 3 @V305096 00453000
  455. FOUR EQU 4 @V305096 00454000
  456. FIVE EQU 5 @V305096 00455000
  457. SIX EQU 6 @V305096 00456000
  458. SEVEN EQU 7 @V305096 00457000
  459. EIGHT EQU 8 @V305096 00458000
  460. NINE EQU 9 @V305096 00459000
  461. TEN EQU 10 @V305096 00460000
  462. ELEVEN EQU 11 @V305096 00461000
  463. TWELVE EQU 12 @V305096 00462000
  464. FOURTEEN EQU 14 @V305096 00463000
  465. SIXTEEN EQU 16 @V305096 00464000
  466. SEVETEEN EQU 17 @V305096 00465000
  467. EIGHTEEN EQU 18 @V305096 00466000
  468. TWENTY EQU 20 @V305096 00467000
  469. TWENTY1 EQU 21 @V305096 00468000
  470. TWENTY2 EQU 22 @V305096 00469000
  471. TWENTY3 EQU 23 @V305096 00470000
  472. TWENTY4 EQU 24 @V305096 00471000
  473. TWENTY5 EQU 25 @V305096 00472000
  474. TWENTY6 EQU 26 @V305096 00473000
  475. TWENTY7 EQU 27 DISP OF 27 @V305096 00474000
  476. TWENTY9 EQU 29 @V305096 00475000
  477. THIRTY2 EQU 32 @V305096 00476000
  478. THIRTY3 EQU 33 @V305096 00477000
  479. THIRTY4 EQU 34 @V305096 00478000
  480. THIRTY5 EQU 35 @V305096 00479000
  481. THIRTY6 EQU 36 DISP OF 36 @V305096 00480000
  482. THIRTY9 EQU 39 @V305096 00481000
  483. FORTY EQU 40 @V305096 00482000
  484. FORTY2 EQU 42 @V305096 00483000
  485. FORTY3 EQU 43 @V305096 00484000
  486. FORTY5 EQU 45 @V305096 00485000
  487. FIFTY EQU 50 @V305096 00486000
  488. FIFTY2 EQU 52 @V305096 00487000
  489. FIFTY5 EQU 55 @V305096 00488000
  490. FIFTY7 EQU 57 @V305096 00489000
  491. FIFTY6 EQU 56 @V305065 00490000
  492. SIXTY6 EQU 66 @V305096 00491000
  493. SEVENTY8 EQU 78 DISP OF 78 @V305096 00492000
  494. EIGHTY EQU 80 @V305096 00493000
  495. EIGHTY1 EQU 81 @V305096 00494000
  496. EIGHTY9 EQU 89 @V305096 00495000
  497. NINETY1 EQU 91 DISP OF 91 @V305096 00496000
  498. NINETY2 EQU 92 DISP OF 92 @V305096 00497000
  499. NINETY6 EQU 96 @V305096 00498000
  500. LCILH EQU 101 LENGTH CIL HEADER @V305096 00499000
  501. LDASH EQU 60 NO. OF DASHES IN HEADER @V305096 00500000
  502. FORTY6 EQU 46 @V305096 00501000
  503. SIXTY3 EQU 63 @V305096 00502000
  504. SIXTY5 EQU 65 @V305096 00503000
  505. SEVENTY1 EQU 71 @V305096 00504000
  506. HUND EQU 100 @V305065 00505000
  507. ONE03 EQU 103 @V305096 00506000
  508. ONE18 EQU 118 @V305096 00507000
  509. ONE19 EQU 119 @V305096 00508000
  510. SPACE 1 00509000
  511. DEV2314 EQU X'62' @V305065 00510000
  512. DEV3330 EQU X'63' @V305065 00511000
  513. DEV333B EQU X'65' PUB DEV CODE FOR 3330-11@V505098 00511300
  514. DEV3350 EQU X'67' PUB DEV CODE FOR 3350 @V505098 00511600
  515. DEV3343 EQU X'69' @V305065 00512000
  516. DEV3347 EQU X'6A' @V305065 00513000
  517. SPACE 1 00514000
  518. DASH EQU C'-' @V305096 00515000
  519. BLANK EQU C' ' @V305096 00516000
  520. SKIP1 EQU C'1' SKIP TO 1 ASA CHAR @V305096 00517000
  521. F1 EQU C'1' SCAN CARD ROUTINE PHASE NO. @V305096 00518000
  522. F2 EQU C'2' TD/CD PRINT SGL COL @V305096 00519000
  523. F3 EQU C'3' RD/SD PHASE NO. @V305096 00520000
  524. F4 EQU C'4' RD AND SD PRINT PHASE @V305096 00521000
  525. F5 EQU C'5' PD PRINT PHASE @V305096 00522000
  526. SPACE 1 00523000
  527. CLB EQU X'0B' SYSCLB SYMBOLIC UNIT @V305096 00524000
  528. EOC EQU X'20' END OF CYLINDER INDICATOR @V305096 00525000
  529. RELPHASE EQU X'40' REL PHASE INDICATOR @V305096 00526000
  530. HEX00 EQU X'00' @V305096 00527000
  531. HEX3F EQU X'3F' @V305096 00528000
  532. HEXF0 EQU X'F0' @V305096 00529000
  533. HEXFE EQU X'FE' @V305065 00530000
  534. HEXFF EQU X'FF' @V305096 00531000
  535. SPACE 1 00532000
  536. LASTREC DS 2D HOLD LAST RECORD FOR NEXT PASS @V305096 00533000
  537. LTORG @V305065 00534000
  538. DS 0F @V305065 00535000
  539. DSERV1 EQU * @V305065 00537000
  540. USING *,R13 SPECIFY BASE REG TO ASSE@V305096 00538000
  541. TM SWB1,FIRST IS IT FIRST TIME THROUGH? @V305065 00539000
  542. BO GETCOM BRANCH IF YES @V305065 00540000
  543. BAL R14,PLIST GO CHECK PLIST @V305065 00541000
  544. TM CMSSWT,DSKOPT WAS DISK SPECIFIED? @V305065 00542000
  545. BZ GETCOM BRANCH IF NOT @V305065 00543000
  546. FSERASE ,FSCB=MAP ERASE OLD MAP @V305065 00544000
  547. FSOPEN ,FSCB=(1) OPEN NEW MAP @V305065 00545000
  548. GETCOM EQU * @V305065 00546000
  549. SPACE 2 00547000
  550. *********************************************************************** 00548000
  551. ***** GET ADDR OF COMMUNICATION REGION * 3-10 00549000
  552. *********************************************************************** 00550000
  553. SPACE 2 00551000
  554. COMRG ADDR OF COMMUNICATION REGION @V305096 00552000
  555. SPACE 2 00553000
  556. *************************************************************** 00554000
  557. * INITIALIZE PRINTER CONTROL FIELD. 00555000
  558. * INDICATE THAT HEADER IS TO BE PRINTED. 00556000
  559. *************************************************************** 00557000
  560. SPACE 2 00558000
  561. OI SWA,HEADIND INDICATE HEADER @V305065 00559000
  562. SR R2,R2 CLEAR REGISTER @V305096 00562000
  563. IC R2,SEVENTY8(R1) GET NO.OF LINES/PAGE @V305096 00563000
  564. STC R2,LINECTR SAVE IT IN PRINTER @V305096 00564000
  565. STC R2,LINES CONTROL FIELDS @V305096 00565000
  566. SH R2,CON8 SUBTR.8 HEADER LINES @V305096 00566000
  567. STH R2,ACTLINES NO. OF DATA LINES @V305096 00567000
  568. SPACE 2 00568000
  569. *********************************************************************** 00569000
  570. ***** ROUTINE TO GET PARTITION ENDING ADDRESS 00570000
  571. *********************************************************************** 00571000
  572. SPACE 2 00572000
  573. FNDADDR L R4,FREELOWE GET PARTITION END ADDR @V305096 00573000
  574. LA R4,ONE(R4) PARTITION END ADDR + 1 @V305096 00574000
  575. ST R4,SORTEND SAVE PARTITION END ADDR +1 @V305096 00575000
  576. EJECT 00576000
  577. ************************************************************** 00577000
  578. * AT FIRST TIME THROUGH: * 00578000
  579. * OPEN PRIVATE LIBRARIES IF THEY ARE ASSIGNED AND SETUP * 00579000
  580. * APPROPRIATE INDICATORS OF SWD. * 00580000
  581. * CALCULATE START ADDRESSES OF PRIVATE LIBRARIES. * 00581000
  582. * CHECK FOR ACTIVE ENTRIES IN RLB,SLB,PLIB,PRLB,PSLB. * 00582000
  583. * SET INDICATORS IF NO ACTIVE ENTRIES IN THESE LIBRARIES. * 00583000
  584. * ACTIVE ENTRIES IN PCIL WILL BE CHECKED IN DSERV2. * 00584000
  585. * MOVE THE START ADDRESS OF OF THE LIBRARIES IN THE STATUS * 00585000
  586. * TABLE. * 00586000
  587. ************************************************************** 00587000
  588. SPACE 2 00588000
  589. TM SWB1,FIRST IS IT FIRST TIME THROUGH@V305096 00589000
  590. BO GETPASS NO @V305096 00590000
  591. SPACE 1 00591000
  592. OI SWB1,FIRST SET FIRST TIME SWITCH @V305096 00592000
  593. SPACE 1 00593000
  594. GETLUB SYSIR (R1,R2,R3,R4),LUB,FG POINT TO LUB @V305096 00594000
  595. LR R5,R1 SAVE LUB PTR FOR PRI DIR COMP@V305096 00595000
  596. EJECT 00596000
  597. TM LUBRES,HEXFE IS THERE A SYSRES? @V305065 00597000
  598. BO NOSYSRES BRANCH IF NOT @V305065 00598000
  599. SR R3,R3 @V305065 00599000
  600. IC R3,LUBRES GET PUB FOR SYSRES @V305065 00600000
  601. BAL R9,TRKCYL GET TRACKS / CYLINDER @V305065 00601000
  602. OI SWD,SYSST INDICATE SYSRES PRESENT @V305065 00602000
  603. NOSYSRES EQU * @V305065 00603000
  604. TM LUBCLB,HEXFE IS PCIL ASSIGNED? @V305065 00604000
  605. BO CHKRLB BRANCH IF NOT @V305065 00605000
  606. SR R3,R3 CLEAR RGISTER @V305065 00606000
  607. ICM R3,7,DOSFIRST+1 GET DOSCB CHAIN ADDRESS @V305065 00607000
  608. USING DOSSECT,R3 @V305065 00608000
  609. NXTSYSCL EQU * @V305065 00609000
  610. BZ CHKRLB NO MORE DOSCB IF ZERO @V305065 00610000
  611. CLC DOSDD,IJSYSCL+22 MATCHING DSNAME? @V305065 00611000
  612. BE OPSYSCL BRANCH IF YES @V305065 00612000
  613. ICM R3,7,1(R3) GET NEXT DOSCB ADDRESS @V305065 00613000
  614. B NXTSYSCL AND LOOP @V305065 00614000
  615. OPSYSCL EQU * @V305065 00615000
  616. SR R3,R3 @V305065 00616000
  617. IC R3,LUBCLB GET PUB FOR SYSCLB @V305065 00617000
  618. BAL R9,TRKCYL GET TRACKS / CYLINDER @V305065 00618000
  619. LA R6,IJSYSCL POINT TO PCIL DTF @V305065 00619000
  620. OPENR (R6) OPEN PRIVATE CORE IMAGE LIB @V305065 00620000
  621. MVC DISKCID(FOUR),IJCLL GET PCIL START ADDRESS @V305065 00621000
  622. OI SWD,PCST SETUP PCIL ASSIGNED IND @V305096 00622000
  623. EJECT 00623000
  624. CHKRLB EQU * @V305065 00624000
  625. TM SWD,SYSST SYSRES ASSIGNED? @V305065 00625000
  626. BZ CHKRLBA BRANCH IF NOT @V305065 00626000
  627. BAL R9,READDIR GET SYSTEM DIR RECS @V305096 00627000
  628. CHKRLBA EQU * @V305065 00628000
  629. MVI CCW4FLAG,SLI BRAKE CHAIN OFF @V305096 00629000
  630. LR R1,R5 RESTORE LUB PTR @V305096 00630000
  631. CLI LUBRLB+LUBP,HEXFF IS SYSRLB ASSIGNED @V305096 00631000
  632. BE CHKRL NO @V305096 00632000
  633. SR R3,R3 CLEAR REGISTER @V305065 00633000
  634. ICM R3,7,DOSFIRST+1 GET DOSCB CHAIN ADDRESS @V305065 00634000
  635. NXTSYSRL EQU * @V305065 00635000
  636. BZ CHKRL NO MORE DOSCB IF ZERO @V305065 00636000
  637. CLC DOSDD,IJSYSRL+22 MATCHING DDNAME? @V305065 00637000
  638. BE OPSYSRL BRANCH IF YES @V305065 00638000
  639. ICM R3,7,1(R3) GET NEXT DOSCB ADDRESS @V305065 00639000
  640. B NXTSYSRL AND LOOP @V305065 00640000
  641. OPSYSRL EQU * @V305065 00641000
  642. LA R6,IJSYSRL ADDR OF PRIV REL LIB @V305096 00642000
  643. SPACE 00643000
  644. OPENR (R6) OPEN PRIVATE RELOCATE LIB @V305096 00644000
  645. SPACE 00645000
  646. MVI CCBSYM2,RLB SET SYSRLB SYMBOLIC UNIT IN CCB @V305096 00646000
  647. MVC SEEKCC(FIVE),IJRLL CCHH TO SEEK BUCKET @V305096 00647000
  648. BAL R9,READDIR READ PRI RD 80 BYTES DIR REC @V305096 00648000
  649. MVI CCBSYM2,RES SET SYSRES LOGICAL UNIT @V305096 00649000
  650. OI SWD,PRST SETUP PREL ASSIGNED IND @V305096 00650000
  651. SR R0,R0 ZERO REG FOR COMPARE @V305096 00651000
  652. C R0,RACTENT ANY PRI REL ACTIVE ENTRIES @V305096 00652000
  653. BNE SAVERLD YES @V305096 00653000
  654. OI SWE,ERR6 NO, SETUP NO PRI REL ERROR IND @V305096 00654000
  655. B CHKSLB CHECK SYSSLB IF IT WAS ASSIGNED @V305096 00655000
  656. CHKRL CLI RLAREA,BLANK IS THERE A SYSTEM REL @V305096 00656000
  657. BE NORLB NO @V305096 00657000
  658. TM SWD,SYSST IS THERE A SYSRES? @V305065 00658000
  659. BZ NORLB BRANCH IF NOT @V305065 00659000
  660. MVC SEEKCC(FIVE),RLAREA2 CCHHR TO SEEK BUCKET @V305096 00660000
  661. BAL R9,READDIR READ SYSDIR REC OF REL @V305096 00661000
  662. SR R0,R0 ZERO REG FOR COMPARE @V305096 00662000
  663. C R0,RACTENT ANY ACTIVE ENTR IN REL @V305096 00663000
  664. BNE SAVERLD YES @V305096 00664000
  665. NORLB OI SWE,ERR3 INDICATE 'NO SYS REL ' @V305096 00665000
  666. B CHKSLB CHECK FOR SYSSLB ASSIGN @V305096 00666000
  667. SAVERLD MVC DISKRLD,RLAREA2 SAVE PRIV REL DIR DISK ADDR @V305096 00667000
  668. EJECT 00668000
  669. CHKSLB LR R1,R5 RESTORE LUB PTR FOR PRI DIR COMP @V305096 00669000
  670. MVC CCW4(EIGHT),CCW5 MODIFY CCW TO READ 1ST @V305096 00670000
  671. * REC OF PRIV SSL 00671000
  672. MVI CCW4FLAG,SLI BRAKE CHAIN OFF @V305096 00672000
  673. CLI LUBSLB+LUBP,HEXFF IS SYSSLB ASSIGNED @V305096 00673000
  674. BE CHKSL NO @V305096 00674000
  675. SR R3,R3 CLEAR REGISTER @V305065 00675000
  676. ICM R3,7,DOSFIRST+1 GET DOSCB CHAIN ADDRESS @V305065 00676000
  677. NXTSYSSL EQU * @V305065 00677000
  678. BZ CHKSL NO MORE DOSCB IF ZERO @V305065 00678000
  679. CLC DOSDD,IJSYSSL+22 MATCHING DDNAMES? @V305065 00679000
  680. BE OPSYSSL BRANCH IF YES @V305065 00680000
  681. ICM R3,7,1(R3) GET NEXT DOSCB ADDRESS @V305065 00681000
  682. B NXTSYSSL AND LOOP @V305065 00682000
  683. DROP R3 @V305065 00683000
  684. OPSYSSL EQU * @V305065 00684000
  685. LA R6,IJSYSSL ADDR OF PRIV SOURCE LIB @V305096 00685000
  686. SPACE 00686000
  687. OPENR (R6) OPEN PRIVATE SOURCE LIB @V305096 00687000
  688. SPACE 00688000
  689. MVI CCBSYM2,SLB SET SYSSLB SYMBOLIC UNIT IN CCB @V305096 00689000
  690. MVC SEEKCC(FIVE),IJSLL CCHH TO SEEK BUCKET @V305096 00690000
  691. BAL R9,READDIR READ PRI SOURCE 80 BYTES DIR REC @V305096 00691000
  692. MVI CCBSYM2,RES SET SYSRES LOGICAL UNIT @V305096 00692000
  693. OI SWD,PSST SETUP PRIVATE SD STATUS IND @V305096 00693000
  694. SR R0,R0 ZERO REG FOR COMPARE @V305096 00694000
  695. C R0,SACTENT ANY PRI SOURCE ACTIVE ENTRIES @V305096 00695000
  696. BNE SAVESLD YES @V305096 00696000
  697. OI SWE,ERR7 NO, SETUP NO PRI SOR ERROR IND @V305096 00697000
  698. B CHKPL CHECK PROC LIB @V305096 00698000
  699. CHKSL CLI SLAREA,BLANK IS THERE A SYSTEM SSL @V305096 00699000
  700. BE NOSSL NO @V305096 00700000
  701. TM SWD,SYSST IS THERE A SYSRES? @V305065 00701000
  702. BZ NOSSL BRANCH IF NOT @V305065 00702000
  703. MVC SEEKCC(FIVE),SLAREA2 CCHHR TO SEEK BUCKET @V305096 00703000
  704. BAL R9,READDIR READ 1ST REC OF SSL DIR @V305096 00704000
  705. SR R0,R0 ZERO REG FOR COMPARE @V305096 00705000
  706. C R0,SACTENT ANY SSL ACTIVE ENTRIES @V305096 00706000
  707. BNE SAVESLD YES @V305096 00707000
  708. NOSSL OI SWE,ERR4 INDICATE 'NO SSL ' @V305096 00708000
  709. B CHKPL CHECK PROC LIB @V305096 00709000
  710. SAVESLD MVC DISKSLD,SLAREA2 SAVE ADDR OF PRIV SOURCE DIR @V305096 00710000
  711. CHKPL EQU * * @V305096 00711000
  712. TM SWD,SYSST IS THERE A SYSRES? @V305065 00712000
  713. BZ NOPLB BRANCH IF NOT @V305065 00713000
  714. CLI PLAREA,BLANK IS THERE A PROC LIBR @V305096 00714000
  715. BE NOPLB NO - POST ERROR ERR9 @V305096 00715000
  716. CLI PLAREA+SIX,HEX00 REALLY A PROCLIB @V305096 00716000
  717. BE NOPLB NO - POST ERROR ERR9 @V305096 00717000
  718. MVC CCW4(EIGHT),CCW6 MODIFY CCW TO READ FIRST@V305096 00718000
  719. * 80 BYTES OF PROC. DIR. 00719000
  720. MVC SEEKCC(FIVE),PLAREA2 CCHHR TO SEEK BUCKET @V305096 00720000
  721. BAL R9,READDIR READ PROC. DIR. HEADER @V305096 00721000
  722. MVC DISKPLD,PLAREA2 SAVE PD ADDR FOR LATER @V305096 00722000
  723. SR R0,R0 @V305096 00723000
  724. C R0,PACTENT ANY ENTRY OF ACTIVE @V305096 00724000
  725. BNE SETUP YES - @V305096 00725000
  726. NOPLB OI SWE,ERR9 POST NO PROC LIBR IND @V305096 00726000
  727. B SETUP @V305065 00727000
  728. EJECT 00728000
  729. *********************************************************************** 00729000
  730. ***** INITIALIZATION OF SORT STARTING ADDRESS, PASS AND PAGE * 00730000
  731. ***** COUNTERS, RESET INDICATORS * 00731000
  732. *********************************************************************** 00732000
  733. SPACE 2 00733000
  734. GETPASS IC R2,PASSCTR GET CURRENT PASS NUMBER @V305096 00734000
  735. LA R2,ONE(R2) INCREMENT TO NEXT PASS @V305096 00735000
  736. STC R2,PASSCTR STORE NEW PASS NUMBER @V305096 00736000
  737. TM SWC,FULLTBL DID WE DO A PARTIAL SORT@V305096 00737000
  738. BO TESTANY YES @V305096 00738000
  739. MVI PASSCTR,F1 NO, RESET PASS COUNTER TO 1 @V305096 00739000
  740. MVI PAGECTR,ONE RESET PAGE COUNTER TO 1 @V305096 00740000
  741. TM SWE,ERR5 ANY PCIL ACT ENTRIES @V305096 00741000
  742. BNO TESTTD YES, TEST TD ACT ENTRIES@V305096 00742000
  743. BAL R9,PCDERR GO PRINT MESSAGE @V305065 00743000
  744. NI SWE,HEXFF-ERR5 RESET NO PCIL ERROR IND @V305096 00744000
  745. B TESTSWA CONTINUE @V305096 00745000
  746. TESTTD TM SWE,ERR8 ANY TD ENTRIES @V305096 00746000
  747. BZ TESTSWA YES @V305096 00747000
  748. LA R15,PV1 POINT TO PRIVATE @V305065 00748000
  749. TM SWD,PCST PRIV. CIL DIRECTORY DISPLAY @V305096 00749000
  750. BO PRTMSG9 YES, PRINT PRIV. CIL MESSAGE @V305096 00750000
  751. LA R15,ST1 POINT TO SYSTEM @V305065 00751000
  752. PRTMSG9 EQU * @V305065 00752000
  753. BAL R9,PTDERR GO PRINT MESSAGE @V305065 00753000
  754. NI SWE,HEXFF-ERR8 RESET NO PRIVATE TD ERROR IND@V305096 00754000
  755. B TESTANY CONTINUE PROCESS @V305096 00755000
  756. SPACE 2 00756000
  757. TESTSWA TM SWA,NONAME WAS PHASE NAME FOUND @V305096 00757000
  758. BZ TESTANY YES @V305096 00758000
  759. NI SWA,HEXFF-NONAME-VMIND RESET DISPLAY INDICATOR @V305096 00759000
  760. LA R15,PNBUCKET POINT TO NAME @V305065 00760000
  761. BAL R9,BADNAME GO PRINT MESSAGE @V305065 00761000
  762. NI SWB,HEXFF-SYSCL NO, RESET DISPLAY CD IND@V305096 00762000
  763. NI SWB1,HEXFF-PCLB =============== @V305096 00763000
  764. TESTANY TM SWB,ANYMORE ANY DIRECTORIES LEFT TO DISPLAY @V305096 00764000
  765. BNZ LOADF2 YES @V305096 00765000
  766. TM SWB1,ANYMORE ANY DIRECTORIES TO DISPLAY @V305096 00766000
  767. BNZ LOADF2 YES - @V305096 00767000
  768. B FINAL @V305065 00768000
  769. EJECT 00769000
  770. ************************************************************ 00770000
  771. * CMS ROUTINE TO DEFINE TRACKS / CYLINDER 00771000
  772. ************************************************************ 00772000
  773. USING PUBADR,R3 @V305065 00773000
  774. USING BGCOM,R4 @V305065 00774000
  775. TRKCYL EQU * @V305065 00775000
  776. MH R3,=Y(PUBWIT) MULTIPLY WITH LENGTH OF PUB @V305065 00776000
  777. AH R3,PUBPT ADD PUB TABLE ADDRESS @V305065 00777000
  778. LA R6,(DEVEND-DEVSTART)/LDEVTAB NO. OF DEVICES @V305065 00778000
  779. LA R2,DEVSTART GET START ADDRESS @V305065 00779000
  780. TRKCYLOP EQU * @V305065 00780000
  781. CLC 0(1,R2),4(R3) IS THIS THE DEVICE? @V305065 00781000
  782. BE TRKCYLFD BRANCH IF YES @V305065 00782000
  783. LA R2,LDEVTAB(R2) POINT TO NEXT DEVICE @V305065 00783000
  784. BCT R6,TRKCYLOP AND TRY AGAIN @V305065 00784000
  785. B INVDEV NOT FOUND @V305065 00785000
  786. TRKCYLFD EQU * @V305065 00786000
  787. MVC TRCYLCIL+2(TWO),1(R2) MOVE IN CONSTANT @V305065 00787000
  788. BR R9 RETURN @V305065 00788000
  789. DROP R3 @V305065 00789000
  790. DROP R4 @V305065 00790000
  791. EJECT 1 00791000
  792. ********************************************************** 00792000
  793. * CMS SUBROUTINE FOR CHECKING PLIST 00793000
  794. ********************************************************* 00794000
  795. PLIST EQU * @V305065 00795000
  796. LA R1,8(,R1) POINT TO PLIST @V305065 00796000
  797. CLI ZERO(R1),X'FF' IS THERE A PLIST? @V305065 00797000
  798. BE NODIR BRANCH IF NOT, ERROR @V305065 00798000
  799. CLI ZERO(R1),C'(' IS THIS THE OPTION? @V305065 00799000
  800. BE NODIR BRANCH IF YES, ERROR @V305065 00800000
  801. PLISTLOP EQU * @V305065 00801000
  802. LR R2,R1 POINT TO DIRECTORY @V305065 00802000
  803. BAL R5,RESCAN1 CHECK DIRECTORY ACTION @V305065 00803000
  804. PLISTLP1 EQU * @V305065 00804000
  805. BAL R5,RESCAN CHECK NEXT TOKEN @V305065 00805000
  806. B PLISTEND END OF PLIST @V305065 00806000
  807. B PLISTOPT GO CHECK OPTIONS @V305065 00807000
  808. CLC KCD,ZERO(R2) WAS LAST CD? @V305065 00808000
  809. BNE PLISTLOP BRANCH IF NOT @V305065 00809000
  810. CLC KPHASE,ZERO(R1) YES, WAS PHASE SPECIFIED? @V305065 00810000
  811. BNE PLISTLOP BRANCH IF NOT @V305065 00811000
  812. LA R1,8(,R1) POINT TO PHASE NAME @V305065 00812000
  813. BAL R9,GETNAME GET NAME AND DISPLACEMENT @V305065 00813000
  814. B PLISTLP1 @V305065 00814000
  815. SPACE 2 00815000
  816. PLISTOPT EQU * @V305065 00816000
  817. BAL R5,RESCAN CHECK NEXT TOKEN @V305065 00817000
  818. B PLISTEND END OF PLIST @V305065 00818000
  819. B BADOPT TWO L PARENS ARE BAD @V305065 00819000
  820. CLI ZERO(R1),C')' RIGHT PARENS? @V305065 00820000
  821. BNE PLISTOP2 BRANCH IF NOT @V305065 00821000
  822. LA R1,8(,R1) POINT PAST PARENS @V305065 00822000
  823. CLI ZERO(R1),X'FF' YES, END OF PLIST? @V305065 00823000
  824. BNE BADPARM BRANCH IF NOT, ERROR @V305065 00824000
  825. B PLISTEND @V305065 00825000
  826. PLISTOP2 EQU * @V305065 00826000
  827. LA R15,OPTIONS GET OPTION LIST @V305065 00827000
  828. LA R6,OPTIONN AND NUMBER OF OPTIONS @V305065 00828000
  829. PLISTOP3 EQU * @V305065 00829000
  830. CLC 0(8,R15),0(R1) IS THIS THE OPTION? @V305065 00830000
  831. BNE PLISTOP4 BRANCH IF NOT @V305065 00831000
  832. L R4,8(,R15) GET OPTION ROUTINE ADDRESS @V305065 00832000
  833. BALR R5,R4 AND PROCESS OPTION @V305065 00833000
  834. B PLISTOPT @V305065 00834000
  835. PLISTOP4 EQU * @V305065 00835000
  836. LA R15,OPTIONL(,R15) POINT TO NEXT OPTION @V305065 00836000
  837. BCT R6,PLISTOP3 AND TRY AGAIN @V305065 00837000
  838. B BADOPT @V305065 00838000
  839. PLISTEND EQU * @V305065 00839000
  840. TM CMSSWT,PRTOPT+TYPOPT EITHER OPTION SPECIFIED? @V305065 00840000
  841. BNZ PLISTND1 BRANCH IF YES @V305065 00841000
  842. OI CMSSWT,DSKOPT INSURE DISK INDICATED @V305065 00842000
  843. PLISTND1 EQU * @V305065 00843000
  844. BR R14 RETURN @V305065 00852000
  845. EJECT 00853000
  846. RESCAN1 LA R10,ALLIND INDICATOR TO DISPLAY ALL@V305096 00854000
  847. CLC KALL,ZERO(R2) IS OPERAND ALL @V305096 00855000
  848. BE SETSWA YES @V305096 00856000
  849. LA R10,TDIND INDICATOR TO DISPLAY TD @V305096 00857000
  850. CLC KTD,ZERO(R2) IS OPERAND TD @V305096 00858000
  851. BE SETSWA YES @V305096 00859000
  852. LA R10,CDIND INDICATOR TO DISPLAY CD @V305096 00860000
  853. CLC KCD,ZERO(R2) IS OPERAND CD @V305096 00861000
  854. BE SETSWA YES @V305096 00862000
  855. LA R10,RDIND INDICATOR TO DISPLAY RD @V305096 00863000
  856. CLC KRD,ZERO(R2) IS OPERAND RD @V305096 00864000
  857. BE SETSWA YES @V305096 00865000
  858. LA R10,SDIND INDICATOR TO DISPLAY SD @V305096 00866000
  859. CLC KSD,ZERO(R2) IS OPERAND SD @V305096 00867000
  860. BE SETSWA YES @V305096 00868000
  861. LA R10,PDIND INDICATOR TO DISPLAY PD @V305096 00869000
  862. CLC KPD(L'KPD),ZERO(R2) IS OPERAND PD @V305096 00870000
  863. BE SETSWA YES - @V305096 00871000
  864. B BADPARM NO, ERROR @V305096 00872000
  865. SETSWA EX R10,SETIND EXECUTE SET IND INSTR. @V305096 00873000
  866. BR R5 @V305065 00874000
  867. EJECT 00875000
  868. *********************************************************************** 00876000
  869. ***** SETUP APPROPRIATE INDICATORS OF SWB * 00877000
  870. ***** PRINT ERROR MESSAGES IF ANY * 00878000
  871. *********************************************************************** 00879000
  872. SETUP EQU * @V305096 00880000
  873. SPACE 1 00881000
  874. TM SWA,TDIND DISPLAY TRANSIENT DIR SPECD @V305096 00882000
  875. BZ CHKCD NO @V305096 00883000
  876. OI SWB,SYSTD SETUP DISPLAY TD DIR IND@V305096 00884000
  877. TM SWD,PCST WAS SYSCLB ASSIGNED @V305096 00885000
  878. BZ CHKTD1 NO @V305096 00886000
  879. NI SWB,HEXFF-SYSTD SET SYSTD IND OFF @V305096 00887000
  880. OI SWB1,PTD SETUP PRIVATE TD IND @V305096 00888000
  881. B CHKCD @V305065 00889000
  882. CHKTD1 EQU * @V305065 00890000
  883. TM SWD,SYSST WAS SYSRES ASSIGNED? @V305065 00891000
  884. BO CHKCD BRANCH IF YES @V305065 00892000
  885. BAL R9,TDERR NO, PRINT ERROR MSG @V305065 00893000
  886. NI SWA,HEXFF-TDIND REMOVE TD INDICATOR @V305065 00894000
  887. NI SWB,HEXFF-SYSTD REMOVE SYSTD IND @V305065 00895000
  888. SPACE 00896000
  889. CHKCD TM SWA,CDIND+VMIND DISPLAY CORE IMAGE DIR SPECD @V305096 00897000
  890. BZ CHKRD NO @V305096 00898000
  891. OI SWB,SYSCL SETUP DSPL CD IND @V305096 00899000
  892. TM SWD,PCST WAS SYSCLB ASSIGNED @V305096 00900000
  893. BZ CHKCD1 NO @V305096 00901000
  894. NI SWB,HEXFF-SYSCL SET SYSCL IND OFF @V305096 00902000
  895. OI SWB1,PCLB SET DISPLAY PRIVATE SYSCLB @V305096 00903000
  896. B CHKRD @V305065 00904000
  897. CHKCD1 EQU * @V305065 00905000
  898. TM SWD,SYSST WAS SYSRES ASSIGNED? @V305065 00906000
  899. BO CHKRD BRANCH IF YES @V305065 00907000
  900. BAL R9,CDERR PRINT ERROR MSG @V305065 00908000
  901. NI SWA,HEXFF-CDIND-VMIND REMOVE CD INDICATOR @V305065 00909000
  902. NI SWB,HEXFF-SYSCL REMOVE SYSCL IND @V305065 00910000
  903. SPACE 00911000
  904. CHKRD TM SWA,RDIND DISPLAY REL SPECIFIED @V305096 00912000
  905. BZ CHKSD NO @V305096 00913000
  906. TM SWD,PRST WAS SYSRLB ASSIGNED @V305096 00914000
  907. BZ CHKRLB1 NO @V305096 00915000
  908. TM SWE,ERR6 ANY PRI REL ACTIVE ENTRIES @V305096 00916000
  909. BO ERROR6 NO @V305096 00917000
  910. OI SWB1,PRLB SET DISPLAY PRI REL DIR IND @V305096 00918000
  911. SPACE 00919000
  912. CHKSD TM SWA,SDIND DISPLAY SD SPECIFIED @V305096 00920000
  913. BZ CHKPD NO @V305096 00921000
  914. TM SWD,PSST WAS SYSSL ASSIGNED @V305096 00922000
  915. BZ CHKSLB1 NO @V305096 00923000
  916. TM SWE,ERR7 ANY PRI SOURCE ACTIVE ENTRIES @V305096 00924000
  917. BO ERROR7 NO @V305096 00925000
  918. OI SWB1,PSLB SETUP DISPLAY SYSRLD DIR @V305096 00926000
  919. SPACE 1 00927000
  920. CHKPD EQU * * @V305096 00928000
  921. TM SWA,PDIND DISPLAY PD SPECIFIED @V305096 00929000
  922. BZ LOADF2 NO - @V305096 00930000
  923. TM SWE,ERR9 ANY ENTRY ACTIVE @V305096 00931000
  924. BO DPL06 NO - @V305096 00932000
  925. OI SWB,SYSPL POST DISPLAY PD @V305096 00933000
  926. SPACE 1 00934000
  927. B LOADF2 INITIALIZE PHASE NAME TO LOAD@V305096 00935000
  928. EJECT 00936000
  929. CHKRLB1 EQU * @V305065 00937000
  930. TM SWE,ERR3 ANY SYSTEM REL. ACTIVE ENT? @V305065 00938000
  931. BZ SETRDIND BRANCH IF YES @V305065 00939000
  932. ERROR6 EQU * @V305065 00940000
  933. BAL R9,RDERR EXIT TO PRINT ROUTINE @V305096 00941000
  934. B CHKSD CHECK IF SD IS SPECIFIED @V305096 00942000
  935. SETRDIND OI SWB,SYSRL SET DISPLAY SYSTEM REL DIR IND @V305096 00943000
  936. B CHKSD GO TO TEST IF SD SPECIFIED @V305096 00944000
  937. SPACE 1 00945000
  938. CHKSLB1 EQU * @V305065 00946000
  939. TM SWE,ERR4 ANY SYSTEM SOURCE ACTIVE ENT?@V305065 00947000
  940. BZ SETSDIND BRANCH IF YES @V305065 00948000
  941. ERROR7 EQU * @V305065 00949000
  942. BAL R9,SDERR PRINT ERROR MSG 7 @V305096 00950000
  943. B CHKPD GO READ ANOTHER CARD @V305096 00951000
  944. SETSDIND OI SWB,SYSSL SET DISPLAY SYS SOURCE DIR IN@V305096 00952000
  945. B CHKPD @V305096 00953000
  946. SPACE 2 00954000
  947. DPL06 EQU * @V305096 00955000
  948. BAL R9,PDERR PRINT ERROR MESSAGE @V305096 00956000
  949. EJECT 00957000
  950. *********************************************************************** 00958000
  951. ***** INITIALIZATION OF NEXT PROCESSING OVERLAY PHASE * 00959000
  952. *********************************************************************** 00960000
  953. SPACE 1 00961000
  954. LOADF2 MVI PHASENO,TWO INIT TO FETCH TD/CD PHASE @V305096 00962000
  955. TM SWB,SYSTD+SYSCL DISPLAY SYSTEM TD/CD @V305096 00963000
  956. BNZ FETCH GO TO FETCH PHASE TWO @V305096 00964000
  957. TM SWB1,PTD+PCLB DISPLAY PRIVATE TD OR PD@V305096 00965000
  958. BNZ FETCH YES - @V305096 00966000
  959. MVI PHASENO,THREE INIT TO FETCH SD/RD/PD P@V305096 00967000
  960. TM SWB,SYSPL+SYSRL+SYSSL DISPLAY SD, RD OR PD @V305096 00968000
  961. BNZ FETCH YES - @V305096 00969000
  962. TM SWB1,PRLB+PSLB DISPLAY PRLB OR PSLB @V305096 00970000
  963. BZ FINAL NO - @V305096 00971000
  964. B FETCH YES @V305096 00972000
  965. EJECT 00973000
  966. *********************************************************************** 00974000
  967. ***** SCAN THE CD OPERAND WITH A SPECIFIC PHASE NAME * 00975000
  968. *********************************************************************** 00976000
  969. SPACE 00977000
  970. GETNAME EQU * @V305096 00978000
  971. LA R3,8 MAXIMUM TOKEN LENGTH @V305065 00979000
  972. LR R4,R1 GET PLIST POINTER @V305065 00980000
  973. LR R5,R4 R5, TOO @V305065 00981000
  974. COMP1 EQU * @V305096 00982000
  975. CLI ZERO(R4),ASTER IS DELIMITER AN ASTERISK? @V305096 00983000
  976. BE COMMART YES @V305096 00984000
  977. CLI ZERO(R4),BLANK IS BLANK AT END OF NAME? @V305096 00985000
  978. BE COMMART BRANCH IF YES @V305065 00986000
  979. COMP1B LA R4,ONE(R4) INCREMENT TO NEXT COLUMN@V305096 00987000
  980. BCT R3,COMP1 DUNK BYTES AND CONTINUE SEARCH @V305096 00988000
  981. SPACE 00989000
  982. COMMART EQU * @V305096 00990000
  983. SR R4,R5 LENGTH OF PHASE NAME @V305096 00991000
  984. BCTR R4,R0 DECREMENT FOR MOVE INSTRUCTION @V305096 00992000
  985. STC R4,NAMELNG SAVE LENGTH @V305065 00993000
  986. MVC PNBUCKET,PRINTB CLEAR PHASE NAME BUCKET @V305096 00994000
  987. EX R4,MOVENAME MOVE PHASENAME TO BUCKET@V305096 00995000
  988. MVI VMDISP1,TWELVE SET STANDARD VM LOCATION@V305096 00996000
  989. AR R4,R5 POINT TO END OF NAME @V305065 00997000
  990. LA R4,1(,R4) @V305065 00998000
  991. CLI ZERO(R4),ASTER WAS ASTERISK SPECIFIED? @V305065 00999000
  992. BE COMP1C BRANCH IF YES @V305065 01000000
  993. OI SWC,ONEIND INDICATE ONE PHASE @V305065 01001000
  994. COMP1C EQU * @V305065 01002000
  995. LA R4,8(,R1) LOOK AT NEXT TOKEN @VA14978 01003000
  996. CLI ZERO(R4),HEXFF CHECK FOR FENCE @VA14978 01003250
  997. BE COMP3 BRANCH IF YES @VA14978 01003500
  998. TM ZERO(R4),HEXF0 IS IT NUMERIC @VA14978 01003750
  999. BO GETDISP BRANCH IF YES @V305065 01005000
  1000. COMP3 EQU * @V305065 01006000
  1001. OI SWA,VMIND SET VER AND MOD LEVEL IND @V305065 01007000
  1002. BR R9 @V305065 01008000
  1003. EJECT 01009000
  1004. GETDISP EQU * @V305065 01010000
  1005. LA R3,8 MAXIMUM TOKEN SIZE @V305065 01011000
  1006. LA R1,8(,R1) POINT TO NEXT TOKEN @V305065 01012000
  1007. LR R5,R3 SAVE BYTE COUNTER @V305096 01013000
  1008. COMP2 CLI ZERO(R4),BLANK IS DELIMITER A BLANK @V305096 01014000
  1009. BE CALDISP YES, CALCULATE DISP @V305096 01015000
  1010. TM ZERO(R4),HEXF0 IS CHARACTER NUMERIC @V305096 01016000
  1011. BNO BADADD NO, ERROR @V305096 01017000
  1012. LA R4,ONE(R4) INCREMENT TO NEXT COLUMN@V305096 01018000
  1013. BCT R3,COMP2 DUNK BYTES AND CONTINUE SEARCH @V305096 01019000
  1014. CALDISP EQU * @V305065 01020000
  1015. SR R5,R3 LENGTH OF NUMERIC FIELD @V305096 01021000
  1016. BCTR R5,R0 DECREMENT FOR PACK INSTR. @V305096 01022000
  1017. EX R5,PACK1 EXECUTE PACK INSTRUCTION@V305096 01023000
  1018. CVB R3,DBLWORD CONVERT DISP TO BINARY @V305096 01024000
  1019. CL R3,MAXADDR DISP WITHIN ADDR RANGE @V305096 01025000
  1020. BH BADADD NO, ERROR @V305096 01026000
  1021. ST R3,VMDISP SAVE VM DISP FOR CD PHASE @V305096 01027000
  1022. OI SWC,DISPLACE TURN ON DISP SEPECIFIED IND @V305096 01028000
  1023. B COMP3 CONTINUE SCAN @V305096 01029000
  1024. EJECT 1 01030000
  1025. ************************************************************ 01031000
  1026. * CMS ROUTINE TO GET NEXT TOKEN ON PLIST 01032000
  1027. ************************************************************ 01033000
  1028. RESCAN EQU * @V305065 01034000
  1029. LA R1,8(,R1) POINT TO NEXT TOKEN @V305065 01035000
  1030. CLI ZERO(R1),X'FF' END OF PLIST? @V305065 01036000
  1031. BCR 8,R5 BRANCH IF YES @V305065 01037000
  1032. CLI ZERO(R1),LPAREN START OF OPTIONS? @V305065 01038000
  1033. BE 4(,R5) BRANCH IF YES @V305065 01039000
  1034. B 8(,R5) @V305065 01040000
  1035. EJECT 1 01041000
  1036. ************************************************************ 01042000
  1037. * CMS OPTION SUBROUTINES 01043000
  1038. ************************************************************ 01044000
  1039. TERMOP EQU * @V305065 01045000
  1040. TM CMSSWT,PRTOPT+DSKOPT OTHER DEVICES SPECIFIED? @V305065 01046000
  1041. BNZ OTHDEV BRANCH IF YES @V305065 01047000
  1042. TM CMSSWT,TYPOPT THIS DEVICE SPECIFIED? @V305065 01048000
  1043. BO DUPOPT BRANCH IF YES @V305065 01049000
  1044. OI CMSSWT,TYPOPT INDICATE TERM @V305065 01050000
  1045. BR R5 @V305065 01051000
  1046. SPACE 2 01052000
  1047. PRNTOP EQU * @V305065 01053000
  1048. TM CMSSWT,TYPOPT+DSKOPT OTHERDEVICES SPECIFIED? @V305065 01054000
  1049. BNZ OTHDEV BRANCH IF YES @V305065 01055000
  1050. TM CMSSWT,PRTOPT THIS DEVICE SPECIFIED? @V305065 01056000
  1051. BO DUPOPT BRANCH IF YES @V305065 01057000
  1052. OI CMSSWT,PRTOPT INDICATE PRINT @V305065 01058000
  1053. BR R5 @V305065 01059000
  1054. SPACE 2 01060000
  1055. DISKOP EQU * @V305065 01061000
  1056. TM CMSSWT,PRTOPT+TYPOPT OTHER DEVICES SPECIFIED? @V305065 01062000
  1057. BNZ OTHDEV BRANCH IF YES @V305065 01063000
  1058. TM CMSSWT,DSKOPT THIS DEVICE SPECIFIED? @V305065 01064000
  1059. BO DUPOPT BRANCH IF YES @V305065 01065000
  1060. OI CMSSWT,DSKOPT INDICATE DISK @V305065 01066000
  1061. BR R5 @V305065 01067000
  1062. SPACE 2 01068000
  1063. SORTOP EQU * @V305065 01069000
  1064. TM SWD,SORT WAS SORT SPECIFIED? @V305065 01070000
  1065. BO DUPOPT BRANCH IF YES @V305065 01071000
  1066. OI SWD,SORT INDICATE SORT @V305065 01072000
  1067. BR R5 @V305065 01073000
  1068. EJECT 1 01074000
  1069. DUPOPT EQU * @V305065 01075000
  1070. LR R2,R1 POINT TO OPTION @V305065 01076000
  1071. DMSERR NUM=065,LET=E,SUB=(CHARA,(R2)), @V305065X01077000
  1072. TEXT='''........'' OPTION SPECIFIED TWICE' @V305065 01078000
  1073. MVI ERCODE,TWENTY4 SET ERROR CODE @V305065 01079000
  1074. B FINAL @V305065 01080000
  1075. EJECT 1 01081000
  1076. OTHDEV EQU * @V305065 01082000
  1077. LA R2,OPTIONL GET OPTION LENGTH @V305065 01083000
  1078. STH R2,RECORDS AND SAVE IT @V305065 01084000
  1079. SR R2,R2 CLEAR REGISTER @V305065 01085000
  1080. IC R2,CMSSWT GET OPTION SWITCH @V305065 01086000
  1081. SRL R2,6 SHIFT OUT LOW BITS @V305065 01087000
  1082. MH R2,RECORDS TIMES LENGTH OF OPTIONS TABLE@V305065 01088000
  1083. LA R2,OPTIONS(R2) POINT TO PROPER OPTION @V305065 01089000
  1084. LR R3,R1 POINT TO CURRENT OPTION @V305065 01090000
  1085. DMSERR NUM=066,LET=E,SUB=(CHARA,(R3),CHARA,(R2)), @V305065X01091000
  1086. MF=(E,ERRLIST), @V305065X01092000
  1087. TEXT='''........'' AND ''........'' ARE CONFLICTING OPTIX01093000
  1088. ONS' @V305065 01094000
  1089. MVI ERCODE,TWENTY4 SET ERROR CODE @V305065 01095000
  1090. B FINAL @V305065 01096000
  1091. EJECT 1 01097000
  1092. INVDEV EQU * @V305065 01098000
  1093. SR R6,R6 @V305065 01099000
  1094. IC R6,4(R3) GET DEVICE CODE @V305065 01100000
  1095. DMSERR NUM=027,LET=E,SUB=(HEX,(R6)), @V305065X01101000
  1096. TEXT='INVALID DEVICE ''..''' @V305065 01102000
  1097. MVI ERCODE,TWENTY4 SET ERROR CODE @V305065 01103000
  1098. B FINAL @V305065 01104000
  1099. EJECT 1 01105000
  1100. NODIR EQU * @V305065 01106000
  1101. DMSERR NUM=047,LET=E,TEXT='NO FUNCTION SPECIFIED' @V305065 01107000
  1102. MVI ERCODE,TWENTY4 SET ERROR CODE @V305065 01108000
  1103. B FINAL @V305065 01109000
  1104. EJECT 1 01110000
  1105. BADADD EQU * @V305065 01111000
  1106. LR R2,R1 SAVE PLIST POINTER @V305065 01112000
  1107. DMSERR NUM=095,LET=E,SUB=(CHARA,(R2)), @V305065X01113000
  1108. TEXT='INVALID ADDRESS ''........''' @V305065 01114000
  1109. MVI ERCODE,TWENTY4 SET ERROR CODE @V305065 01115000
  1110. B FINAL @V305065 01116000
  1111. EJECT 1 01117000
  1112. BADPARM EQU * @V305065 01118000
  1113. LR R2,R1 SAVE PLIST POINTER @V305065 01119000
  1114. DMSERR NUM=070,LET=E,SUB=(CHARA,(R2)), @V305065X01120000
  1115. TEXT='INVALID PARAMETER ''........''' @V305065 01121000
  1116. MVI ERCODE,TWENTY4 SET ERROR CODE @V305065 01122000
  1117. B FINAL @V305065 01123000
  1118. EJECT 1 01124000
  1119. BADOPT EQU * @V305065 01125000
  1120. LR R2,R1 SAVE PLIST POINTER @V305065 01126000
  1121. DMSERR NUM=003,LET=E,SUB=(CHARA,(R2)), @V305065X01127000
  1122. TEXT='INVALID OPTION ''........''' @V305065 01128000
  1123. MVI ERCODE,TWENTY4 SET ERROR CODE @V305065 01129000
  1124. B FINAL @V305065 01130000
  1125. EJECT 1 01131000
  1126. TDERR EQU * @V305065 01132000
  1127. DMSERR NUM=021,LET=W, @V305065X01133000
  1128. TEXT='NO TRANSIENT DIRECTORY ' @V305065 01134000
  1129. MVI ERCODE,FOUR SET ERROR CODE @V305065 01135000
  1130. BR R9 @V305065 01136000
  1131. EJECT 1 01137000
  1132. CDERR EQU * @V305065 01138000
  1133. DMSERR NUM=022,LET=W, @V305065X01139000
  1134. TEXT='NO CORE IMAGE DIRECTORY ' @V305065 01140000
  1135. MVI ERCODE,FOUR SET ERROR CODE @V305065 01141000
  1136. BR R9 @V305065 01142000
  1137. EJECT 1 01143000
  1138. RDERR EQU * @V305065 01144000
  1139. DMSERR NUM=023,LET=W, @V305065X01145000
  1140. TEXT='NO RELOCATABLE DIRECTORY ' @V305065 01146000
  1141. MVI ERCODE,FOUR SET ERROR CODE @V305065 01147000
  1142. BR R9 @V305065 01148000
  1143. EJECT 1 01149000
  1144. PDERR EQU * @V305065 01150000
  1145. DMSERR NUM=024,LET=W, @V305065X01151000
  1146. TEXT='NO PROCEDURE DIRECTORY ' @V305065 01152000
  1147. MVI ERCODE,FOUR SET ERROR CODE @V305065 01153000
  1148. BR R9 @V305065 01154000
  1149. EJECT 1 01155000
  1150. SDERR EQU * @V305065 01156000
  1151. DMSERR NUM=025,LET=W, @V305065X01157000
  1152. TEXT='NO SOURCE STATEMENT DIRECTORY ' @V305065 01158000
  1153. MVI ERCODE,FOUR SET ERROR CODE @V305065 01159000
  1154. BR R9 @V305065 01160000
  1155. EJECT 1 01161000
  1156. BADNAME EQU * @V305065 01162000
  1157. DMSERR NUM=026,LET=W,SUB=(CHARA,(R15)), @V305065X01163000
  1158. TEXT='''........'' NOT IN LIBRARY' @V305065 01164000
  1159. MVI ERCODE,FOUR SET ERROR CODE @V305065 01165000
  1160. BR R9 @V305065 01166000
  1161. EJECT 1 01167000
  1162. PCDERR EQU * @V305065 01168000
  1163. DMSERR NUM=027,LET=W, @V305065X01169000
  1164. TEXT='NO PRIVATE CORE IMAGE LIBRARY' @V305065 01170000
  1165. MVI ERCODE,FOUR SET ERROR CODE @V305065 01171000
  1166. BR R9 @V305065 01172000
  1167. EJECT 1 01173000
  1168. PTDERR EQU * @V305065 01174000
  1169. DMSERR NUM=028,LET=W,SUB=(CHARA,(R15)), @V305065X01175000
  1170. TEXT='NO ........ TRANSIENT DIRECTORY ENTRIES' @V305065 01176000
  1171. MVI ERCODE,FOUR SET ERROR CODE @V305065 01177000
  1172. BR R9 @V305065 01178000
  1173. EJECT 1 01179000
  1174. *********************************************************************** 01180000
  1175. ***** DIRECTORY READ ROUTINE * 01181000
  1176. *********************************************************************** 01182000
  1177. SPACE 1 01183000
  1178. READDIR LA R1,RDCCB ADDR OF CCB FOR EXCP @V305096 01184000
  1179. SVC 0 @V305066 01185000
  1180. BR R9 RETURN TO CALLER @V305096 01186000
  1181. EJECT 01187000
  1182. *********************************************************************** 01188000
  1183. ***** INSTRUCTIONS TO BE EXECUTED VIA THE EX INSTRUCTION * 01189000
  1184. *********************************************************************** 01190000
  1185. SPACE 2 01191000
  1186. SETIND OI SWA,ZERO SET DISPLAY INDICATOR INSTR. @V305096 01192000
  1187. SPACE 1 01193000
  1188. MOVENAME MVC PNBUCKET(ZERO),ZERO(R1) MOVE SPECIFIED PHASENAME@V305096 01194000
  1189. SPACE 1 01195000
  1190. PACK1 PACK DBLWORD(EIGHT),ZERO(ZERO,R2) CONVERT DATA TYPE @V305096 01196000
  1191. EJECT 01197000
  1192. *********************************************************************** 01198000
  1193. * DTF'S, CCB'S, CCW'S, DC'S AND DS'S * 01199000
  1194. *********************************************************************** 01200000
  1195. SPACE 2 01201000
  1196. ***** DTF FOR OPENING PRIVATE RELOCATABLE LIBRARY 01202000
  1197. SPACE 2 01203000
  1198. IJSYSRL DTFCP TYPEFLE=INPUT, @V305096X01204000
  1199. DISK=YES, @V305096X01205000
  1200. DEVADDR=SYSRLB, @V305096X01206000
  1201. EOFADDR=*, @V305096X01207000
  1202. IOAREA1=* @V305096 01208000
  1203. SPACE 2 01209000
  1204. * THE LABEL 'IJJCPD3' IS ONLY USED TO PROVIDE THE PROGRAM 01210000
  1205. * WITH A DUMMY ENTRY, SO THAT THERE WILL BE NOT 01211000
  1206. * UNRESOLVED ADDRESS CONSTANTS DURING LINK EDITING. 01212000
  1207. SPACE 1 01213000
  1208. IJJCPD3 EQU * @V305096 01214000
  1209. SPACE 2 01215000
  1210. ***** DTF FOR OPENING PRIVATE CORE IMAGE LIBRARY 01216000
  1211. SPACE 2 01217000
  1212. IJSYSCL DTFCP TYPEFLE=INPUT, @V305065C01218000
  1213. DISK=YES, @V305065C01219000
  1214. DEVADDR=SYSCLB, @V305065C01220000
  1215. EOFADDR=*, @V305065C01221000
  1216. IOAREA1=* @V305065 01222000
  1217. SPACE 3 01223000
  1218. ***** DTF FOR OPENING PRIVATE SOURCE STATEMENT LIBRARY 01224000
  1219. SPACE 2 01225000
  1220. IJSYSSL DTFCP TYPEFLE=INPUT, @V305096X01226000
  1221. DISK=YES, @V305096X01227000
  1222. DEVADDR=SYSSLB, @V305096X01228000
  1223. EOFADDR=*, @V305096X01229000
  1224. IOAREA1=* @V305096 01230000
  1225. SPACE 3 01231000
  1226. LTORG @V305096 01232000
  1227. DS 0F @V305096 01233000
  1228. EJECT 01234000
  1229. ***** CCB FOR READING SYSTEM DIRECTORIES 01235000
  1230. SPACE 1 01236000
  1231. RDCCB CCB SYSRES,CCW1 CCB FOR READING SYSTEM DIRECTORY @V305096 01237000
  1232. SPACE 3 01238000
  1233. ***** CCW CHAIN TO READ 4 - 80 BYTE SYSTEM RECORDS 01239000
  1234. SPACE 1 01240000
  1235. CCW1 CCW SEEK,SEEKBB,CCSLI,SIX SEEK BBCCHH @V305096 01241000
  1236. CCW2 CCW SIDE,SEEKCC,CCSLI,FIVE SEARCH ID EQUAL @V305096 01242000
  1237. CCW TIC,CCW2,CCSLI,ONE TRANSFER IN CHANNEL @V305096 01243000
  1238. CCW4 CCW READ,RLAREA,CCSLI,EIGHTY READ DATA @V305096 01244000
  1239. CCW5 CCW READ,SLAREA,CCSLI,EIGHTY READ DATA @V305096 01245000
  1240. CCW6 CCW READ,PLAREA,SLI,EIGHTY READ DATA @V305096 01246000
  1241. SPACE 3 01247000
  1242. ***** DISK ADDRESS SEEK BUCKET TO READ SYSTEM RECORDS 01248000
  1243. SPACE 1 01249000
  1244. SEEKBB DC H'0' BB PORTION OF SEEK ADDR @V305096 01250000
  1245. SEEKCC DC X'0000' CC PORTION OF SEEK ADDR @V305096 01251000
  1246. DC X'0001' HH PORTION OF SEEK ADDR @V305096 01252000
  1247. DC X'02' R - RECORD NO. @V305096 01253000
  1248. EJECT 01254000
  1249. ***** CONSTANTS - COMMON TO THIS PHASE ONLY 01255000
  1250. SPACE 1 01256000
  1251. DBLWORD DC D'0' DOUBLE WORD WORK AREA @V305096 01257000
  1252. MAXADDR DC F'16777214' MAX. VM LOCATION IN A PHASE @V305096 01258000
  1253. R1SAVE DC F'0' SAVE AREA REGISTER 1 @V305096 01259000
  1254. R24SAVE DC F'0' SAVE AREA FOR @V305096 01260000
  1255. R34SAVE DC F'0' REGISTERS @V305096 01261000
  1256. DC F'0' R2, R3 AND R4 @V305096 01262000
  1257. SAVEIN DC F'0' READIN SAVE AREA @V305096 01263000
  1258. CON8 DC H'8' CONSTANT OF 8 @V305096 01264000
  1259. HALFW20 DC H'20' CONSTANT OF 20 @V305096 01265000
  1260. KALL DC C'ALL' DISPLAY CARD OPERAND @V305096 01266000
  1261. KTD DC C'TD' DISPLAY CARD OPERAND @V305096 01267000
  1262. KCD DC C'CD' DISPLAY CARD OPERAND @V305096 01268000
  1263. KRD DC C'RD' DISPLAY CARD OPERAND @V305096 01269000
  1264. KSD DC C'SD' DISPLAY CARD OPERAND @V305096 01270000
  1265. KPD DC C'PD' DISPLAY CARD OPERAND @V305096 01271000
  1266. KPHASE DC CL8'PHASE' @V305065 01272000
  1267. ZEROS DC XL4'0' ZEROS @V305096 01273000
  1268. SPACE 1 01274000
  1269. ST1 DC CL8'SYSTEM' @V305096 01275000
  1270. PV1 DC CL8'PRIVATE' @V305065 01276000
  1271. SPACE 2 01277000
  1272. OPTIONS DS 0F @V305065 01278000
  1273. DC CL8'TERM' @V305065 01279000
  1274. DC A(TERMOP) @V305065 01280000
  1275. OPTIONL EQU *-OPTIONS LENGTH OF OPTION ENTRY @V305065 01281000
  1276. DC CL8'PRINT' @V305065 01282000
  1277. DC A(PRNTOP) @V305065 01283000
  1278. DC CL8'DISK' @V305065 01284000
  1279. DC A(DISKOP) @V305065 01285000
  1280. DC CL8'SORT' @V305065 01286000
  1281. DC A(SORTOP) @V305065 01287000
  1282. OPTIONN EQU (*-OPTIONS)/OPTIONL NUMBER OF OPTIONS @V305065 01288000
  1283. SPACE 2 01289000
  1284. DS 0F ALIGN AREAS ON FULL WORD@V305096 01290000
  1285. RLAREA DC XL80'0' RELOCATABLE DIR READ IN @V305096 01291000
  1286. SLAREA DC XL80'0' SOURCE DIRECTORY READ IN@V305096 01292000
  1287. PLAREA DC XL80'0' PROCEDURE DIRECTORY READ IN @V305096 01293000
  1288. EJECT 01294000
  1289. ************************************************************ 01295000
  1290. * CMS DEVICE TABLE FOR TRACKS / CYLINDER 01296000
  1291. ************************************************************ 01297000
  1292. DEVSTART EQU * @V305065 01298000
  1293. * 01299000
  1294. * 2314 01300000
  1295. * 01301000
  1296. TAB2314 EQU * @V305065 01302000
  1297. DC AL1(DEV2314) @V305065 01303000
  1298. DC X'0014' @V305065 01304000
  1299. LDEVTAB EQU *-TAB2314 @V305065 01305000
  1300. * 01306000
  1301. * 3330 01307000
  1302. * 01308000
  1303. DC AL1(DEV3330) @V305065 01309000
  1304. DC X'0013' @V305065 01310000
  1305. * 01311000
  1306. * 3330-11 01311150
  1307. * 01311300
  1308. DC AL1(DEV333B) @V505098 01311450
  1309. DC X'0013' @V505098 01311600
  1310. * 01311750
  1311. * 3340,36MB 01312000
  1312. * 01313000
  1313. DC AL1(DEV3343) @V305065 01314000
  1314. DC X'000C' @V305065 01315000
  1315. * 01316000
  1316. * 3340,70MB 01317000
  1317. * 01318000
  1318. DC AL1(DEV3347) @V305065 01319000
  1319. DC X'000C' @V305065 01320000
  1320. * 01321000
  1321. * 3350 01321150
  1322. * 01321300
  1323. DC AL1(DEV3350) @V505098 01321450
  1324. DC X'001E' @V505098 01321600
  1325. * 01321750
  1326. DEVEND EQU * @V305065 01322000
  1327. EJECT 01323000
  1328. *********************************************************************** 01324000
  1329. ***** EQUATES -- COMMON TO THIS PHASE ONLY * 01325000
  1330. *********************************************************************** 01326000
  1331. SPACE 1 01327000
  1332. CCBSYM2 EQU RDCCB+7 2ND BYTE OF SYMBOLIC UNIT @V305096 01328000
  1333. CCW4FLAG EQU CCW4+4 CCW FLAG BYTE @V305096 01329000
  1334. IJRLL EQU IJSYSRL+60 LOC OF LOWER LIMIT IN DTF @V305096 01330000
  1335. IJSLL EQU IJSYSSL+60 LOC OF LOWER LIMIT IN DTF @V305096 01331000
  1336. IJCLL EQU IJSYSCL+60 DITTO @V305065 01332000
  1337. RLAREA2 EQU RLAREA+2 STARTING ADDR OF RD DIR @V305096 01333000
  1338. SLAREA2 EQU SLAREA+2 STARTING ADDR OF SD DIR @V305096 01334000
  1339. PLAREA2 EQU PLAREA+2 STARTING ADDRESS OF PD DIR @V305096 01335000
  1340. RACTENT EQU RLAREA+44 ACTIVE ENTRY BYTE OF RD REC @V305096 01336000
  1341. SACTENT EQU SLAREA+44 ACTIVE ENTRY BYTE OF SD REC @V305096 01337000
  1342. PACTENT EQU PLAREA+44 ACTIVE ENTRY BYTE OF PD REC @V305096 01338000
  1343. SEVEN1 EQU 71 @V305096 01339000
  1344. SPACE 1 01340000
  1345. COMMA EQU C',' @V305096 01341000
  1346. LPAREN EQU C'(' FOR PARAENTHESIS CHECK @V305096 01342000
  1347. RPAREN EQU C')' FOR PARENTHESIS CHECK @V305096 01343000
  1348. SPACE 01344000
  1349. THIRTY1 EQU 31 @V305096 01345000
  1350. DS 0F @V305065 01346000
  1351. DSERV2 EQU * @V305065 01348000
  1352. USING *,R13 SPECIFY BASE REG TO ASSEMBLER @V305096 01349000
  1353. SPACE 2 01350000
  1354. ************************************************************** 01351000
  1355. * INITIALIZE HEADINGS FOR THE DIFFERENT DIRECTORIES. * 01352000
  1356. ************************************************************** 01353000
  1357. SPACE 1 01354000
  1358. MVC LINE21(FIFTY6),LINE2A INITIALIZE HEADERS @V305065 01355000
  1359. MVC LINE31(FIFTY6),LINE3A @V305065 01356000
  1360. MVC LINES,LINECTR INIT LINE COUNTER @V305096 01357000
  1361. OI SWA,HEADIND INDICATE HEADER PRINT @V305096 01358000
  1362. MVI PHASENO,ONE INIT FOR FETCH DSERV1 @V305096 01359000
  1363. MVC TCSEEKCC(FIVE),DISKCID INIT DIR SEEK ADDR @V305096 01360000
  1364. MVC TCCOUNT(FIVE),DISKCID INIT DIR SEEK ADDR @V305096 01361000
  1365. TM SWB,SYSTD ASK TO DISPLAY SYS TD @V305096 01362000
  1366. BO ST YES @V305096 01363000
  1367. TM SWB,SYSCL ASK TO DISPLAY SYS CIL @V305096 01364000
  1368. BO SC YES @V305096 01365000
  1369. TM SWB1,PTD ASK TO DISPLAY PRIV TD @V305096 01366000
  1370. BZ PC NO @V305096 01367000
  1371. MVC TW(L'T2),T2 'PRIVATE' TO TITLE @V305096 01368000
  1372. ST MVC TW+EIGHT(L'T1),T1 'TRANSIENT' TO TITLE @V305096 01369000
  1373. MVC TW+EIGHTEEN(L'T4),T4 'DIRECTORY' TO TITLE @V305096 01370000
  1374. B MVCLINE2 'LOAD ENTRY' TO TITLE @V305096 01371000
  1375. PC MVC TW(L'T2),T2 'PRIVATE' TO TITLE @V305096 01372000
  1376. SC MVC TW+EIGHT(L'T3+L'T4),T3 'CORE IMAGE DIRECTORY' @V305096 01373000
  1377. * TO TITLE AREA 01374000
  1378. TM SWA,VMIND VM SPECIFIED @V305096 01375000
  1379. BO TC1 GO TO PRINT DIRECTORY @V305096 01376000
  1380. MVCLINE2 MVC LINE21(FIFTY4),LINE2B DO NOT PRINT 'VER MOD' @V305096 01377000
  1381. MVCLINE3 MVC LINE31(FIFTY4),LINE3B DO NOT PRINT 'LEV LEV' @V305096 01378000
  1382. TC1 TM SWB1,PTD+PCLB DISPL PRIV TD OR CD @V305096 01379000
  1383. BZ PROCESS NO @V305096 01380000
  1384. MVI VMCBSYM,CLB SET SYMB UNIT IN VM CCB @V305096 01381000
  1385. MVI TCCBSYM,CLB SET SYMB UNIT TO SYSCLB @V305096 01382000
  1386. MVI VMDIRSYM,CLB SET SYMB UNIT TO SYSCLB @V305096 01383000
  1387. EJECT 01384000
  1388. ************************************************************** 01385000
  1389. * READ THE CORE IMAGE LIBRARY DESCRIPTOR RECORD AND * 01386000
  1390. * CHECK FOR ACTIVE ENTRIES IF PPRIV CD REQUEST * 01387000
  1391. * CHECK FOR $-PHASES FOR PRIV TD REQUEST * 01388000
  1392. * CHECK FOR VM DSPL AND IF SO READ THE RIGHT BLOCK * 01389000
  1393. * IMMEDIATELY, OTHERWISE READ THE DIRECTORY SEQUENTIAL. * 01390000
  1394. * UPDATE TO NEXT ENTRY AND CHECK FOR END OF DIR. * 01391000
  1395. ************************************************************** 01392000
  1396. SPACE 1 01393000
  1397. PROCESS BAL R9,TCEXCP READ LIBR DESCR REC @V305096 01394000
  1398. BAL R9,SETPTRS INITIALIZE POINTERS @V305096 01395000
  1399. TM SWB1,PCLB REQUEST FOR PRIV CD @V305096 01396000
  1400. BZ TDREQ NO, CHECK TD REQUEST @V305096 01397000
  1401. SR R0,R0 ZERO REG FOR COMPARE @V305096 01398000
  1402. CH R0,EIGHTEEN(R6) ACTIVE ENTRIES @V305096 01399000
  1403. BNE TDREQ YES, CHECK TD REQUEST @V305096 01400000
  1404. OI SWE,ERR5 INDICATE 'NO PRIVATE CD'@V305096 01401000
  1405. B RESETCD RESET SWITCHES @V305096 01402000
  1406. TDREQ BAL R9,ADDENTR UPDATE TO NEXT ENTRY @V305096 01403000
  1407. TM SWB1,PTD REQUEST FOR PRIV TD @V305096 01404000
  1408. BZ READCHK NO @V305096 01405000
  1409. CLI ZERO(R6),DOLLAR FIRST ENTRY $ ENTRY @V305096 01406000
  1410. BE READCHK YES @V305096 01407000
  1411. OI SWE,ERR8 INDICATE 'NO PRIVATE TD'@V305096 01408000
  1412. B RESETTD RESET SWITCHES @V305096 01409000
  1413. SPACE 1 01410000
  1414. READCHK TM SWA,VMIND VM SPECIFIED @V305096 01411000
  1415. BNO HEADS PROCESS FIRST ENTRY @V305096 01412000
  1416. READKEY LA R1,VMDIRCCB ADDR OF CCB FOR EXCP @V305096 01413000
  1417. BAL R9,EXCP READ THE RIGHT BLOCK @V305096 01414000
  1418. TM THREE(R1),EOC END OF CYL POSTED @V305096 01415000
  1419. BZ INITPTR NO, INIT PTRS @V305096 01416000
  1420. MVC TCSEEKCC,TCCOUNT GET ADDR OF NXT REC @V305096 01417000
  1421. LA R9,TICCCW CCW AFTER SRCH ON KEY @V305096 01418000
  1422. L R10,VMDIRCCB+12 ADDR NXT CCW TO BE EXEC @V305096 01419000
  1423. LA R10,ZERO(R10) CLEAR HIGH ORDER BYTE @V305096 01420000
  1424. CR R9,R10 BROKEN ON SRCH ON KEY @V305096 01421000
  1425. BE READKEY YES, REISSUE I/O @V305096 01422000
  1426. INITPTR BAL R9,SETPTRS INITIALIZE POINTERS @V305096 01423000
  1427. IC R10,NAMELNG GET PHASE NAME LENGTH @V305096 01424000
  1428. EXCOMP EX R10,VMCOMP THIS THE RIGHT PHASE @V305096 01425000
  1429. BE HEADS PROCESS IF EQUAL @V305096 01426000
  1430. BH PHNOTFND PHASE NOT FOUND IF HIGH @V305096 01427000
  1431. BAL R9,ADDENTR UPDATE TO NEXT ENTRY @V305096 01428000
  1432. CR R6,R8 ALL ENTRIES PROCESSED? @V305065 01429000
  1433. BL EXCOMP BRANCH IF NOT @V305065 01430000
  1434. BAL R7,SEQREAD GO GET NEXT RECORD @V305065 01431000
  1435. B EXCOMP COMPARE PHASENAMES @V305096 01432000
  1436. PHNOTFND OI SWA,NONAME PHASE NOT FOUND COND @V305096 01433000
  1437. B FETCH GO TO DSERV1 @V305096 01434000
  1438. EJECT 01435000
  1439. SETPTRS LA R6,TCAREA+2 PTR TO FIRST ENT IN BLK @V305096 01436000
  1440. LA R8,TCAREA CALCULATE PTR TO FIRST @V305096 01437000
  1441. AH R8,ZERO(R8) UNUSED BYTE IN BLOCK @V305096 01438000
  1442. BR R9 BACK TO CALLER @V305096 01439000
  1443. SPACE 1 01440000
  1444. SEQREAD BAL R9,TCEXCP READ A DIR BLOCK @V305096 01441000
  1445. BAL R9,SETPTRS INITIALIZE POINTERS @V305096 01442000
  1446. BR R7 TEST FOR END OF DIR @V305096 01443000
  1447. SPACE 1 01444000
  1448. NEXTENTR BAL R9,ADDENTR UPDATE TO NEXT ENTRY @V305096 01445000
  1449. ENDCHK CR R6,R8 ALL ENTRIES PROCESSED @V305096 01446000
  1450. BL ENDCHK1 BRANCH IF NOT @V305065 01447000
  1451. BAL R7,SEQREAD YES, READ ANOTHER BLOCK @V305096 01448000
  1452. ENDCHK1 EQU * @V305065 01449000
  1453. TM SWB,SYSTD REQUEST FOR SYS TD @V305096 01450000
  1454. BO $CHECK YES TEST END OF $-PHASES@V305096 01451000
  1455. TM SWB1,PTD REQUEST FOR PRV TD @V305096 01452000
  1456. BZ ENDCHK2 NO, TEST END OF DIR @V305096 01453000
  1457. $CHECK CLI ZERO(R6),DOLLAR END OF TD PRINT REACHED @V305096 01454000
  1458. BE HEADS NO, GO ON @V305096 01455000
  1459. RESETTD NI SWB,HEXFF-SYSTD RESET TD SWITCHES @V305096 01456000
  1460. NI SWB1,HEXFF-PTD * @V305096 01457000
  1461. B FETCH GO TO DSERV1 @V305096 01458000
  1462. ENDCHK2 CLC ZERO(EIGHT,R6),ENDDIR END OF DIR REACHED @V305096 01459000
  1463. BE RESETCD YES, TEST END OF SDL @V305096 01460000
  1464. TM SWA,VMIND VM SPECIFIED @V305096 01461000
  1465. BNO HEADS NO, CONTINUE @V305096 01462000
  1466. IC R10,NAMELNG GET PHASENAME LENGTH @V305096 01463000
  1467. EX R10,VMCOMP HAS PHASE TO BE DISPL @V305096 01464000
  1468. BH RESETCD NO, RESET SWITCHES @V305096 01465000
  1469. B HEADS CONTINUE PROCESSING @V305096 01466000
  1470. RESETCD NI SWB,HEXFF-SYSCL RESET CD SWITCHES @V305096 01467000
  1471. NI SWB1,HEXFF-PCLB * @V305096 01468000
  1472. B FETCH GO TO DSERV1 @V305096 01469000
  1473. SPACE 1 01470000
  1474. ADDENTR SR R5,R5 CLEAR REGISTER @V305096 01471000
  1475. IC R5,ELEVEN(R6) GET NUMBER OF HALFWORDS @V305096 01472000
  1476. LA R5,TWELVE(R5,R5) CALCULATE ENTRY LENGTH @V305096 01473000
  1477. AR R6,R5 ADD THIS TO ENTRY PTR @V305096 01474000
  1478. BR R9 RETURN TO CALLER @V305096 01475000
  1479. EJECT 01476000
  1480. ************************************************************** 01477000
  1481. * PRINT HEADINGS FOR TD & CD DIRECTORY * 01478000
  1482. ************************************************************** 01479000
  1483. SPACE 1 01480000
  1484. SETDIRSW OI SWD,DIREND IND END OF DISK DIR @V305096 01481000
  1485. HEADS TM SWA,HEADIND NEED HEADER FOR NEW PAGE@V305096 01482000
  1486. BZ TCLINE NO @V305096 01483000
  1487. LA R2,PRINT GET ADDR OF PRINT ROUT @V305096 01484000
  1488. LA R7,PRINTB GET ADDR OF PRINT AREA @V305096 01485000
  1489. MVI ZERO(R7),DASH MOVE DASH TO PRINT AREA @V305096 01486000
  1490. MVC ONE(SIXTY9,R7),ZERO(R7) PROPAGATE DASH @V305096 01487000
  1491. MVC ZERO(TWENTY8,R7),TW TITLE TO PRINT AREA @V305096 01488000
  1492. TM SWA,VMIND DISPLAY CD WITH VM @V305096 01489000
  1493. BNO DATECNV CONVERT DATE @V305096 01490000
  1494. MVC SEVENTY(NINE,R7),SIXTY9(R7) EXTEND DASHES @V305096 01491000
  1495. DATECNV EQU * @V305065 01492000
  1496. TM CMSSWT,TYPOPT WAS TERMINAL SPECIFIED? @V305065 01493000
  1497. BO PTHEADS BRANCH IF YES @V305065 01494000
  1498. COMRG GET ADDR COMMUNICAT REG @V305096 01495000
  1499. MVC ONE02(EIGHT,R7),ZERO(R1) DATE TO PRINT AREA @V305096 01496000
  1500. ZEROR1 SR R1,R1 ZERO WORK REGISTER @V305096 01497000
  1501. IC R1,PAGECTR GET CURRENT PAGE NUMBER @V305096 01498000
  1502. CVD R1,DW CONVERT TO DECIMAL @V305096 01499000
  1503. LA R1,ONE(R1) BUMP PAGE NO. BY 1 @V305096 01500000
  1504. STC R1,PAGECTR SAVE NEW PAGE NUMBER @V305096 01501000
  1505. UNPK ONE18(TWO,R7),DW+SIX(TWO) CONVERT PAGE NO. TO @V305096 01502000
  1506. OI ONE19(R7),HEXF0 PRINTABLE CHARACTER @V305096 01503000
  1507. CLI ONE18(R7),HEXF0 PAGE NO. LEADING ZERO @V305096 01504000
  1508. BNE MVCT7 NO @V305096 01505000
  1509. MVI ONE18(R7),BLANK SUPPRESS LEADING ZERO @V305096 01506000
  1510. MVCT7 MVC ONE11(FOUR,R7),T7 PAGE NO. TO PRINT AREA @V305096 01507000
  1511. PTHEADS EQU * @V305065 01508000
  1512. BALR R9,R2 PRINT TITLE,DATE AND @V305096 01509000
  1513. BALR R9,R2 PAGENO, SKIP ONE LINE @V305096 01510000
  1514. MVC TWO(LCILH,R7),LINE2 HEADING LINE2 TO AREA @V305096 01511000
  1515. BALR R9,R2 PRINT HEADING LINE 2 @V305096 01512000
  1516. MVC TWO(LCILH,R7),LINE3 HEADING LINE3 TO AREA @V305096 01513000
  1517. BALR R9,R2 PRINT HEADING LINE 3 @V305096 01514000
  1518. BALR R9,R2 SKIP ONE LINE @V305096 01515000
  1519. MVI TEN(R7),DASH MOVE DASH TO PRINT AREA @V305096 01516000
  1520. MVC ELEVEN(LDASH,R7),TEN(R7) PROPOGATE DASH @V305096 01517000
  1521. TM SWA,VMIND DISPLAY CD WITH VM @V305096 01518000
  1522. BO VMLINE4 YES @V305096 01519000
  1523. MVCHEX MVC FIFTY9(THREE,R7),HEX MOVE 'HEX' TO PR AREA @V305096 01520000
  1524. MVC FORTY6(THREE,R7),BLANKS BLANK UNUSED FIELD @V305096 01521000
  1525. MVC TWENTY8(THREE,R7),DEC MOVE 'DEC' TO PR AREA @V305096 01522000
  1526. B LINE4 GO PRINT LINE @V305096 01523000
  1527. VMLINE4 MVC THIRTY2(THREE,R7),DEC MOVE 'DEC' TO PR AREA @V305096 01524000
  1528. MVC FIFTY5(THREE,R7),BLANKS BLANK UNUSED FIELD @V305096 01525000
  1529. MVC SEVENTY(NINE,R7),SIXTY9(R7) PROPOGATE DASH @V305096 01526000
  1530. MVC SIXTY8(THREE,R7),HEX MOVE 'HEX' TO PR AREA @V305096 01527000
  1531. LINE4 BALR R9,R2 PRINT HEADING LINE4 @V305096 01528000
  1532. BALR R9,R2 SKIP ONE LINE @V305096 01529000
  1533. LA R7,PRINTB REINIT PR AREA PTR @V305096 01530000
  1534. MVC ELEVEN(L'T6,R7),T6 MOVE 'CHR' TO PR AREA @V305096 01531000
  1535. BALR R9,R2 PRINT CHR LINE @V305096 01532000
  1536. SPACE 1 01533000
  1537. ************************************************************** 01534000
  1538. * MOVE THE DIRECTORY ENTRY TO A TEMPORARY LOCATION TO GET * 01535000
  1539. * THE LOAD AND ENTRY ADDRESSES WITHOUT SEVERAL TESTS. * 01536000
  1540. * RESET R6 TO ITS ORIGINAL VALUE AT THE END OF THIS ROUTINE. * 01537000
  1541. ************************************************************** 01538000
  1542. SPACE 1 01539000
  1543. TCLINE ST R6,SAVEPTR SAVE REG 6 @V305096 01540000
  1544. IC R5,ELEVEN(R6) GET NUMBER OF HALFWORDS @V305096 01541000
  1545. LA R5,TWELVE(R5,R5) CALCULATE ENTRY LENGTH @V305096 01542000
  1546. BCTR R5,0 MINUS 1 FOR EXECUTE @V305096 01543000
  1547. EX R5,MOVEENTR INSERT ENTRY LENGTH @V305096 01544000
  1548. LA R6,TEMPENTR GET ADDR OF ENTRY @V305096 01545000
  1549. LA R7,PRINTB REINITIALIZE PRINT PTR @V305096 01546000
  1550. TM SWA,VMIND DISPLY CD WITH VM @V305096 01547000
  1551. BNO SUBADDR NO, GET SUBROUTINE ADDR @V305096 01548000
  1552. LA R7,NINE(R7) UPDATE OUTPUT PTR @V305096 01549000
  1553. SUBADDR LA R4,FULL LOAD ADDR OF SUBROUTINE @V305096 01550000
  1554. EJECT 01551000
  1555. ************************************************************** 01552000
  1556. * PRINT PHASE NAME AND PHASE INFORMATION FROM (P)CIL. * 01553000
  1557. ************************************************************** 01554000
  1558. SPACE 1 01555000
  1559. ELIGIBLE TM SWA,VMIND DISPLY CD WITH VM @V305096 01556000
  1560. BNO MOVEPHAS NO, MOVE PHASENAME @V305096 01557000
  1561. SH R7,HALFW9 SUBTR 9 FROM PTR @V305096 01558000
  1562. MOVEPHAS MVC ZERO(EIGHT,R7),ZERO(R6) PHASE NAME TO PR AREA @V305096 01559000
  1563. MVC FW3(ONE),TEN(R6) GET REC NO FROM TTR @V305096 01560000
  1564. MVC VMSEEKR(ONE),TEN(R6) SAVE R FOR VM LIB SEEK @V305096 01561000
  1565. BALR R9,R4 CONVERT R TO ZONED @V305096 01562000
  1566. MVC SEVETEEN(TWO,R7),ZND4 R TO PRINT AREA @V305096 01563000
  1567. SR R2,R2 CLEAR REG FOR DIVIDE @V305096 01564000
  1568. LH R3,EIGHT(R6) ADD HH FROM TTR AND @V305096 01565000
  1569. AH R3,DISKCID+TWO HH FROM DIR START ADDR @V305096 01566000
  1570. D R2,TRCYLCIL DIVIDE BY TRACKS/CYL @V305096 01567000
  1571. STH R2,FW2 STORE HH FOR CONVERTING @V305096 01568000
  1572. STH R2,VMSEEKH SAVE HH FOR LIB SEEK @V305096 01569000
  1573. BALR R9,R4 CONVERT HH TO ZONED @V305096 01570000
  1574. MVC FOURTEEN(TWO,R7),ZND4 HH TO PRINT AREA @V305096 01571000
  1575. AH R3,DISKCID ADD DIR START ADDR CC @V305096 01572000
  1576. STH R3,FW2 STORE CC FOR CONVERTING @V305096 01573000
  1577. STH R3,VMSEEKCC SAVE CC FOR LIB SEEK @V305096 01574000
  1578. BALR R9,R4 CONVERT CC TO ZONED @V305096 01575000
  1579. MVC TEN(THREE,R7),ZND3 CC TO PRINT AREA @V305096 01576000
  1580. MVC FW2(TWO),TWELVE(R6) NUMBER OF REC TO FULLW @V305096 01577000
  1581. BALR R9,R4 CONVERT IT TO ZONED @V305096 01578000
  1582. MVC TWENTY1(THREE,R7),ZND3 NO OF REC TO PRINT AREA @V305096 01579000
  1583. TM SIXTEEN(R6),RELPHASE IS PHASE RELOCATABLE @V305096 01580000
  1584. BZ NOTREL1 NO, BRANCH @V305096 01581000
  1585. MVC FW2(TWO),TWENTY4(R6) RLD ITEMS TO FULL WORD @V305096 01582000
  1586. BALR R9,R4 CONVERT IT TO ZONED @V305096 01583000
  1587. MVC FORTY1(FIVE,R7),ZND1 MOVE TO OUTPUT AREA @V305096 01584000
  1588. MVC FW3(ONE),TWENTY6(R6) ADD. RLD BLKS TO FULLW @V305096 01585000
  1589. BALR R9,R4 CONVERT IT TO ZONED @V305096 01586000
  1590. MVC THIRTY5(THREE,R7),ZND3 MOVE TO PRINT AREA @V305096 01587000
  1591. NOTREL1 MVC FW2(TWO),FOURTEEN(R6) BTS LAST REC TO FULLW @V305096 01588000
  1592. BALR R9,R4 CONVERT IT TO ZONED @V305096 01589000
  1593. MVC TWENTY7(FOUR,R7),ZND2 BTS IN LAST REC TO PR @V305096 01590000
  1594. TM SWA,VMIND VM SPECIFIED @V305096 01591000
  1595. BZ TC2 NO @V305096 01592000
  1596. LA R7,NINE(R7) YES, BUMP R7 FOR VM @V305096 01593000
  1597. TC2 UNPK FORTY9(SEVEN,R7),EIGHTEEN(FOUR,R6) UNPK LOAD ADR@V305096 01594000
  1598. TR FORTY9(SIX,R7),TABLET TRANSLATE IT @V305096 01595000
  1599. MVI FIFTY5(R7),BLANK BLANK UNUSED 7TH POS @V305096 01596000
  1600. UNPK FIFTY7(SEVEN,R7),TWENTY1(FOUR,R6) UNPK ENT ADDR @V305096 01597000
  1601. TR FIFTY7(SIX,R7),TABLET TRANSLATE IT @V305096 01598000
  1602. MVI SIXTY3(R7),BLANK BLANK UNUSED 7TH POS @V305096 01599000
  1603. TM SIXTEEN(R6),RELPHASE IS PHASE RELOCATABLE @V305096 01600000
  1604. BZ TC4 NO, BRANCH @V305096 01601000
  1605. UNPK SIXTY5(SEVEN,R7),TWENTY7(FOUR,R6) @V305096 01602000
  1606. * PART ADDR TO PRINT AREA 01603000
  1607. TR SIXTY5(SIX,R7),TABLET TRANSLATE IT @V305096 01604000
  1608. MVI SEVENTY1(R7),BLANK BLANK UNUSED 7TH POS @V305096 01605000
  1609. TC4 XC ZERO(THIRTY4,R6),ZERO(R6) ZERO OUT 'TEMPENTR' @V305096 01606000
  1610. L R6,SAVEPTR GET ORIG ENTR ADDR @V305096 01607000
  1611. TM SWA,VMIND VM SPECIFIED @V305096 01608000
  1612. BO VMROUT YES @V305096 01609000
  1613. BAL R9,PRINT PRINT A LINE @V305096 01610000
  1614. B NEXTENTR PROCESS NEXT ENTRY @V305096 01611000
  1615. SPACE 2 01612000
  1616. FULL L R1,FW PASS FULLW TO WORK REG @V305096 01613000
  1617. CVD R1,DW CONVERT TO PACKED FORM @V305096 01614000
  1618. UNPK ZND(SIX),DW+FOUR(FOUR) CONVERT TO ZONED @V305096 01615000
  1619. OI ZND+FIVE,HEXF0 MAKE LAST BYTE PRINTABLE@V305096 01616000
  1620. XC FW(FOUR),FW CLEAR FULLWORD @V305096 01617000
  1621. BR R9 RETURN @V305096 01618000
  1622. SPACE 1 01619000
  1623. MOVEENTR MVC TEMPENTR(ZERO),ZERO(R6) MOVE ENTR OVER 34 ZEROS @V305096 01620000
  1624. SPACE 1 01621000
  1625. SDLSTEP SR R10,R10 CLEAR REGISTER @V305096 01622000
  1626. IC R10,ELEVEN(R11) GET NUMBER OF HALFWORDS @V305096 01623000
  1627. LA R10,TWELVE(R10,R10) CALCULATE ENTRY LENGTH @V305096 01624000
  1628. AR R11,R10 ADD THIS TO ENTRY PTR @V305096 01625000
  1629. BR R9 RETURN TO CALLER @V305096 01626000
  1630. EJECT 01627000
  1631. ************************************************************** 01628000
  1632. ***** ROUTINE TO HANDLE QUALIFIED PHASE(S) SPECIFIED * 01629000
  1633. ***** IN THE CD OPERAND * 01630000
  1634. ***** MOVE THE V/M LEVEL IN 'VM' AREA. * 01631000
  1635. ************************************************************** 01632000
  1636. SPACE 1 01633000
  1637. VMROUT TM SWC,DISPLACE WAS V/M DISPL SPECIFIED @V305096 01634000
  1638. BO CHECKA NO @V305096 01635000
  1639. MVI VMDISP1,TWELVE SET DEFAULT VALUE TO 12 @V305096 01636000
  1640. CHECKA CLC DOLLARA(THREE),ZERO(R6) IS IT A $$A PHASE @V305096 01637000
  1641. BE DOLLARAB YES @V305096 01638000
  1642. CLC DOLLARB(THREE),ZERO(R6) IS IT A $$B PHASE @V305096 01639000
  1643. BE DOLLARAB YES @V305096 01640000
  1644. TM SWC,DISPLACE WAS V/M DISPLACEMENT SEPECIFIED? @V305096 01641000
  1645. BO VMBLANKR YES @V305096 01642000
  1646. MVI VMDISP1,EIGHT SET 2ND DEFAULT VALUE TO 8 @V305096 01643000
  1647. VMBLANKR MVC VM(TWO),BLANK2 PUT BLANKS IN VERS NO. @V305096 01644000
  1648. VMSKADR L R5,VMDISP INIT VERSION LOCATE REG @V305096 01645000
  1649. LH R10,TWELVE(R6) GET NO OF TXT BLOCKS @V305096 01646000
  1650. VMRDCIL LA R2,LIBAREA GET ADDR OF LIB AREA @V305096 01647000
  1651. BAL R9,VMEXCP READ CORE IMAGE LIBRARY BLOCK@V305096 01648000
  1652. TM SWC,LEVELNO NEED LEVEL NUMBER ONLY @V305096 01649000
  1653. BO VMGETLVL YES @V305096 01650000
  1654. TM SWA,NONAME PHASE NAME FOUND? @V305096 01651000
  1655. BO VMSKSCAN NO @V305096 01652000
  1656. TM SWC,SKIPNAME IS IT TRANSIENT PHASE? @V305096 01653000
  1657. BO VMSKSCAN YES @V305096 01654000
  1658. LA R4,ONE28 INIT PH NAME SRCH FACT @V305096 01655000
  1659. COMP CLC ZERO(EIGHT,R6),ZERO(R2) IS IT PHASE NAME? @V305096 01656000
  1660. BE NAMEFOND YES @V305096 01657000
  1661. LA R2,EIGHT(R2) INCREMENT LIB PTR BY 8 @V305096 01658000
  1662. BCT R4,COMP CONTINUE UNTIL WHOLE BLOCK COMP @V305096 01659000
  1663. BCT R10,VMRDCIL CONTINUE UNTIL WHOLE PHASE SR @V305096 01660000
  1664. OI SWA,NONAME SET NO PHASE NAME IND. @V305096 01661000
  1665. CLC TWELVE(TWO,R6),HALFW1 IS PHASE IN 1 BLOCK @V305096 01662000
  1666. BNE VMSKADR NO, REREAD LIBRARY @V305096 01663000
  1667. VMSKSCAN LH R4,RESBLOCK INIT BLOCK SIZE REG. @V305096 01664000
  1668. B GETVM GO TO GET V/M BYTE @V305096 01665000
  1669. SPACE 1 01666000
  1670. DOLLARAB OI SWC,SKIPNAME SET SKIP SEARCHING PH NAME IND. @V305096 01667000
  1671. CLI VMDISP1,TWELVE WAS VERSION DISP SPECIFIED @V305096 01668000
  1672. BH VMBLANKR YES @V305096 01669000
  1673. MVI VMDISP1,TWELVE NO, SET DEFAULT VALUE TO 12 @V305096 01670000
  1674. NI SWC,HEXFF-DISPLACE TURN OFF DISP SEPECIFIED IND @V305096 01671000
  1675. B VMBLANKR GO TO READ PHASE FROM LIB @V305096 01672000
  1676. SPACE 1 01673000
  1677. NAMEFOND OI SWC,SKIPNAME SET SKIP SEARCHING PH NAME IND. @V305096 01674000
  1678. LH R4,FOURTEEN(R6) GET LAST RECORD SIZE @V305096 01675000
  1679. LPR R4,R4 BE SURE IT IS POSITIVE @V305096 01676000
  1680. BCTR R10,R0 DECREMENT NO OF BLOCKS BY ONE@V305096 01677000
  1681. LTR R10,R10 IS IT IN LAST BLOCK @V305096 01678000
  1682. BZ LASTBLK YES @V305096 01679000
  1683. BCTR R10,R0 DECREMENT NO OF BLOCKS BY ONE@V305096 01680000
  1684. LTR R10,R10 IS IT IN 2ND LAST BLOCK @V305096 01681000
  1685. BZ LASTBLK2 YES @V305096 01682000
  1686. MH R10,RESBLOCK NO, GET TOTAL LEN OF FULL BLO@V305096 01683000
  1687. LASTBLK2 AR R10,R4 ADD LAST RECORD SIZE @V305096 01684000
  1688. LH R4,RESBLOCK INIT ENDING ADDR OF @V305096 01685000
  1689. LASTBLK LA R4,LIBAREA(R4) LIBRARY AREA @V305096 01686000
  1690. SR R4,R2 CALC REMAINING BYTES @V305096 01687000
  1691. * IN LIBAREA 01688000
  1692. AR R10,R4 TOTAL LENGTH OF PHASE @V305096 01689000
  1693. BCTR R10,R0 DECREMENT LENGTH OF @V305096 01690000
  1694. BCTR R10,R0 PHASE BY TWO @V305096 01691000
  1695. CR R10,R5 IS SPEC DISP IN PHASE @V305096 01692000
  1696. BL VMONEPH NO, BYPASS VERSION @V305096 01693000
  1697. GETVM BCTR R4,R0 DECREMENT BLOCK SIZE BY ONE @V305096 01694000
  1698. CR R5,R4 VERS NO IN THIS BLOCK @V305096 01695000
  1699. BE VM1BYTE YES, BUT ONLY FIRST BYTE@V305096 01696000
  1700. BL VMCALC YES, BOTH BYTE @V305096 01697000
  1701. SR R5,R4 SUBTR VERS ADDR 1 BLK @V305096 01698000
  1702. B VMRDCIL READ ANOTHER BLOCK @V305096 01699000
  1703. VMCALC AR R5,R2 ADDR OF VERSION NUMBER @V305096 01700000
  1704. MVC VM(TWO),ZERO(R5) MOVE VERS NO TO DIR ENTR@V305096 01701000
  1705. VMTRANS TR VM(TWO),VMTBL TRANSLATE TO HEX NUMBER @V305096 01702000
  1706. TM SWC,DISPLACE WAS DISP SEPCIFIED @V305096 01703000
  1707. BO VMONEPH YES @V305096 01704000
  1708. CLI VM,ZERO IS VERSION NO. ZERO @V305096 01705000
  1709. BE VMKLEER YES, INVALID VERSION NUMBER @V305096 01706000
  1710. CLC VM(TWO),VERSION VER. NO. GT CURRENT @V305096 01707000
  1711. BH VMKLEER INVALID LEVEL @V305096 01708000
  1712. VMONEPH NI SWA,HEXFF-NONAME RESET NO PH NAME IND. @V305096 01709000
  1713. NI SWC,HEXFF-SKIPNAME RESET INDICATOR @V305096 01710000
  1714. MVI THIRTY9(R7),DASH MOVE '-' TO VERSION @V305096 01711000
  1715. MVC FORTY(SIX,R7),THIRTY9(R7) PROPAGATE DASH @V305096 01712000
  1716. MVI FORTY2(R7),BLANK BLANK UNUSED FIELD @V305096 01713000
  1717. CLI VM,BLANK VERS AND MOD VALID? @V305096 01714000
  1718. BE VMPRINT NO @V305096 01715000
  1719. MVC FW3(ONE),VM VERSION LEV TO FULLWORD @V305096 01716000
  1720. BAL R9,FULL CONVERT IT TO ZONED @V305096 01717000
  1721. MVC THIRTY9(THREE,R7),ZND3 VERSION TO PRINT AREA @V305096 01718000
  1722. MVC FW3(ONE),VML MODULE LEV TO FULLWORD @V305096 01719000
  1723. BAL R9,FULL CONVERT IT TO ZONED @V305096 01720000
  1724. MVC FORTY3(THREE,R7),ZND3 MOD LEVEL TO PRINT @V305096 01721000
  1725. VMPRINT BAL R9,PRINT PRINT A LINE @V305096 01722000
  1726. TM SWC,ONEIND DISPLAYIND ONLY 1 PHASE @V305096 01723000
  1727. BO RESETCD YES, GO TO DSERV1 @V305096 01724000
  1728. B NEXTENTR GET NEXT ENTRY @V305096 01725000
  1729. SPACE 2 01726000
  1730. VMKLEER EX R0,VMBLANKR CLEAR INVALID VERSION NUMBERS@V305096 01727000
  1731. B VMONEPH GO TEST FOR MORE PHASES @V305096 01728000
  1732. SPACE 2 01729000
  1733. VM1BYTE LA R5,LIBAREA(R5) ADDR OF VERSION NUMBER @V305096 01730000
  1734. MVC VM(ONE),ZERO(R5) MOVE VERS NO. TO VM @V305096 01731000
  1735. OI SWC,LEVELNO SET 'NEED LEVEL NO. ONLY' IND@V305096 01732000
  1736. B VMRDCIL GO SETUP TO READ NEXT BLOCK @V305096 01733000
  1737. SPACE 2 01734000
  1738. VMGETLVL MVC VML(ONE),ZERO(R2) MOVE LEVEL NO. TO VM @V305096 01735000
  1739. XI SWC,LEVELNO RESET 'NEED LEVEL NO. ONLY' IND @V305096 01736000
  1740. B VMTRANS GO TRANSLATE SAME @V305096 01737000
  1741. SPACE 2 01738000
  1742. VMCOMP CLC ZERO(ZERO,R6),PNBUCKET COMP SPECIFIED PHASE @V305096 01739000
  1743. EJECT 01740000
  1744. *********************************************************************** 01741000
  1745. ***** DIRECTORY READ ROUTINE * 01742000
  1746. *********************************************************************** 01743000
  1747. SPACE 1 01744000
  1748. TCEXCP MVC TCSEEKCC,TCCOUNT GET ADDR OF NEXT RECORD @V305096 01745000
  1749. LA R1,TCCCB ADDR OF CCB FOR EXCP @V305096 01746000
  1750. EXCP SVC 0 @V305066 01747000
  1751. SPACE 1 01748000
  1752. TM THREE(R1),EOC END OF CYLINDER POSTED @V305096 01749000
  1753. BCR EIGHT,R9 NO, EXIT TO CALLER @V305096 01750000
  1754. LH R4,TCSEEKCC UPDATE @V305096 01751000
  1755. LA R4,ONE(R4) CYLINDER @V305096 01752000
  1756. STH R4,TCCOUNT NUMBER @V305096 01753000
  1757. MVC TCCOUNT+THREE(TWO),TCHR SET HEAD & RECD TO 1'S@V305096 01754000
  1758. BR R9 EXIT TO CALLER @V305096 01755000
  1759. SPACE 1 01756000
  1760. ***** CCB AND CCW'S FOR TRANSIENT AND CORE IMAGE DIRECTORY 01757000
  1761. DS 0D @V305096 01758000
  1762. TCCCB CCB SYSRES,TCCCW1 CCB FOR TD AND CD @V305096 01759000
  1763. TCCCW1 CCW SEEK,TCSEEKBB,CCSLI,SIX SEEK BBCCHH @V305096 01760000
  1764. TCCCW2 CCW SIDE,TCSEEKCC,CCSLI,FIVE SEARCH ID EQUAL @V305096 01761000
  1765. CCW TIC,TCCCW2,CCSLI,ONE TRANSFER IN CHANNEL @V305096 01762000
  1766. CCW READ,TCAREA,CCSLI,TWO56 READ DATA - 1024 BYTES @V305096 01763000
  1767. CCW RDCNT,TCCOUNT,SLI,FIVE READ COUNT OF NEXT REC @V305096 01764000
  1768. SPACE 1 01765000
  1769. TCSEEKBB DC X'0000' BB PORTION OF SEEK ADDR @V305096 01766000
  1770. TCSEEKCC DC X'0000000201' CCHHR OF SEEK ADDR @V305096 01767000
  1771. DS 0H @V305096 01768000
  1772. TCCOUNT DC X'0000000201' COUNT FIELD READIN AREA @V305096 01769000
  1773. DS 0H @V305096 01770000
  1774. TCAREA DS CL256 DIR READ-IN AREA @V305096 01771000
  1775. EJECT 01772000
  1776. ***** CCB & CCW'S FOR READING DIRECTORY FOR VM 01773000
  1777. SPACE 1 01774000
  1778. DS 0D @V305096 01775000
  1779. VMDIRCCB CCB SYSRES,VMDIRCCW CCB FOR VM DIR READ @V305096 01776000
  1780. SPACE 1 01777000
  1781. VMDIRCCW CCW SEEK,TCSEEKBB,CCSLI,SIX SEEK BBCCHH @V305096 01778000
  1782. DIRCCW2 CCW SIDE,TCSEEKCC,CCSLI,FIVE SEARCH FOR RECORD 1 @V305096 01779000
  1783. CCW TIC,DIRCCW2,CCSLI,ONE TRANSFER IN CHANNEL @V305096 01780000
  1784. DIRCCW4 CCW SKEH,SRCHKEY,CCSLI,EIGHT SEARCH KEY HIGH OR EQ @V305096 01781000
  1785. TICCCW CCW TIC,DIRCCW4,CCSLI,ONE TRANSFER IN CHANNEL @V305096 01782000
  1786. CCW READ,TCAREA,CCSLI,TWO56 READ DATA-256 BYTES @V305096 01783000
  1787. CCW RDCNT,TCCOUNT,SLI,FIVE READ COUNT NEXT REC @V305096 01784000
  1788. SPACE 1 01785000
  1789. SRCHKEY EQU PNBUCKET KEY IS SPEC PHASE @V305096 01786000
  1790. SKEH EQU X'E9' SEARCH ON KEY H OR E @V305096 01787000
  1791. EJECT 01788000
  1792. ***** CONSTANTS - COMMON TO THIS PHASE ONLY 01789000
  1793. SPACE 1 01790000
  1794. DS 0F ALIGN WORKAREA ON FULL WORD @V305096 01791000
  1795. TCHR DC X'0001' HEAD AND RECORD RESET CONSTANT @V305096 01792000
  1796. ENDDIR DC 8X'FF' END OF DIRECTORY @V305096 01793000
  1797. BLANK2 DC C' ' BLANKS IF INVALID VM @V305096 01794000
  1798. DOLLARA DC C'$$A' PREFIX TRANSIENT A PHASE NAME@V305096 01795000
  1799. DOLLARB DC C'$$B' PREFIX TRANSIENT B PHASE NAME@V305096 01796000
  1800. T1 DC C'TRANSIENT' HEADINGS FOR @V305096 01797000
  1801. T2 DC C'PRIVATE ' CD/TD @V305096 01798000
  1802. T3 DC C'CORE IMAGE ' SVA DISPLAY @V305096 01799000
  1803. T4 DC C'DIRECTORY' * @V305096 01800000
  1804. T6 DC C'C H R' * @V305096 01801000
  1805. T7 DC C'PAGE' * @V305096 01802000
  1806. DEC DC C'DEC' * @V305096 01803000
  1807. HEX DC C'HEX' * @V305096 01804000
  1808. SPACE 2 01805000
  1809. LINE2 DC C'PHASE DISK TXT BTS LST RLD ' @V305096 01806000
  1810. DC C'RLD ' @V305096 01807000
  1811. LINE21 DS 56C @V305065 01808000
  1812. LINE2A DC C'VER MOD ' @V305096 01809000
  1813. LINE2B DC C' LOAD ENTRY PART' @V305096 01810000
  1814. DC CL34' ' *** BLANK UNUSED FIELD @V305065 01811000
  1815. * *** THIS AREA MUST NOT 01812000
  1816. * *** BE REMOVED 01813000
  1817. LINE3 DC C'NAME ADDR RCDS TXT RCD RCDS ' @V305096 01814000
  1818. DC C'ITEMS ' @V305096 01815000
  1819. LINE31 DS 56C @V305065 01816000
  1820. LINE3A DC C'LEV LEV ' @V305096 01817000
  1821. LINE3B DC C' ADDR ADDR ADDR' @V305096 01818000
  1822. BLANKS DC CL34' ' *** BLANK UNUSED FIELD @V305065 01819000
  1823. * *** THIS AREA MUST NOT 01820000
  1824. * *** BE REMOVED 01821000
  1825. SPACE 1 01822000
  1826. TW DC C'SYSTEM ' TITLE WORK AREA@V305096 01823000
  1827. ZND DC CL6' ' @V305096 01824000
  1828. DW DC D'0' DOUBLE WORD WORK AREA @V305096 01825000
  1829. FW DC F'0' WORKAREA @V305096 01826000
  1830. SAVEPTR DS F SAVE AREA FOR R6 @V305096 01827000
  1831. HALFW1 DC H'1' CONSTANT OF 1 @V305096 01828000
  1832. VM DC X'4040' VERSION AND MOD LEVEL @V305096 01829000
  1833. TEMPENTR DC XL34'0' TEMP AREA FOR ENTRY @V305096 01830000
  1834. EJECT 01831000
  1835. ***** TRANSLATE TABLES 01832000
  1836. SPACE 1 01833000
  1837. VMTBL DC X'000102030405060708090A0B0C0D0E0F' @V305096 01834000
  1838. DC X'101112131415161718191A1B1C1D1E1F' @V305096 01835000
  1839. DC X'202122232425262728292A2B2C2D2E2F' @V305096 01836000
  1840. DC X'303132333435363738393A3B3C3D3E3F' @V305096 01837000
  1841. DC X'404142434445464748494A4B4C4D4E4F' @V305096 01838000
  1842. DC X'505152535455565758595A5B5C5D5E5F' @V305096 01839000
  1843. DC X'606162636465666768696A6B6C6D6E6F' @V305096 01840000
  1844. DC X'707172737475767778797A7B7C7D7E7F' @V305096 01841000
  1845. DC X'808182838485868788898A8B8C8D8E8F' @V305096 01842000
  1846. DC X'909192939495969798999A9B9C9D9E9F' @V305096 01843000
  1847. DC X'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF' @V305096 01844000
  1848. DC X'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF' @V305096 01845000
  1849. DC X'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF' @V305096 01846000
  1850. DC X'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF' @V305096 01847000
  1851. DC X'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF' @V305096 01848000
  1852. DC X'00010203040506070809FAFBFCFDFEFF' @V305096 01849000
  1853. SPACE 3 01850000
  1854. TABLE DC C'0123456789ABCDEF' @V305096 01851000
  1855. EJECT 01852000
  1856. DS 0F ALIGN READIN AREA ON FW @V305096 01853000
  1857. SPACE 1 01854000
  1858. ************************************************************** 01855000
  1859. * READ CIL BLOCK TO FIND VERSION AND MODIFICATION LEVEL * 01856000
  1860. ************************************************************** 01857000
  1861. SPACE 1 01858000
  1862. VMEXCP LA R1,VMCCB ADDR OF CCB FOR EXCP @V305096 01859000
  1863. SVC 0 @V305066 01860000
  1864. SPACE 1 01861000
  1865. TM THREE(R1),EOC END OF CYLINDER POSTED @V305096 01862000
  1866. BCR CC0,R9 NO, EXIT TO CALLER @V305096 01863000
  1867. LH R1,VMSEEKCC UPDATE @V305096 01864000
  1868. LA R1,ONE(R1) CYLINDER @V305096 01865000
  1869. STH R1,VMSEEKCC NUMBER @V305096 01866000
  1870. XC VMSEEKH1(TWO),VMSEEKH1 SET HR TO ZEROS @V305096 01867000
  1871. B VMEXCP DO READ ON NEXT CYL @V305096 01868000
  1872. SPACE 1 01869000
  1873. **** CCW'S TO READ CORE IMAGE LIBRARY PHASES 01870000
  1874. VMCCW1 CCW SEEK,VMSEEKBB,CCSLI,SIX SEEK @V305096 01871000
  1875. VMCCW2 CCW SIDE,VMSEEKCC,CCSLI,FIVE SEARCH @V305096 01872000
  1876. CCW TIC,VMCCW2,CCSLI,ONE TIC @V305096 01873000
  1877. CCW READ,LIBAREA,CCSLI,ONE024 READ DATA @V305096 01874000
  1878. CCW RDCNT,VMSEEKCC,SLI,FIVE READ COUNT @V305096 01875000
  1879. SPACE 1 01876000
  1880. **** CCB TO READ CORE IMAGE LIBRARY PHASES 01877000
  1881. VMCCB CCB SYSRES,VMCCW1 @V305096 01878000
  1882. SPACE 1 01879000
  1883. **** SEEK ADDRESS BUCKET 01880000
  1884. VMSEEKBB DC X'0000' BB PORTION SEEK ADDRESS@V305096 01881000
  1885. VMSEEKCC DC X'000000000000' CCHHR PORTION SEEK ADDRESS @V305096 01882000
  1886. EJECT 01883000
  1887. LIBAREA DS 1024C START CD LIBRARY READIN AREA @V305096 01884000
  1888. SPACE 1 01885000
  1889. *********************************************************************** 01886000
  1890. ***** EQUATES -- COMMON TO THIS PHASE ONLY * 01887000
  1891. *********************************************************************** 01888000
  1892. SPACE 1 01889000
  1893. TCCBSYM EQU TCCCB+7 LOC OF SYMBOLIC UNIT IN CCB @V305096 01890000
  1894. VMCBSYM EQU VMCCB+7 LOC OF SYMBOLIC UNIT IN CCB @V305096 01891000
  1895. VMDIRSYM EQU VMDIRCCB+7 SYM UNIT IN CCB @V305096 01892000
  1896. VMSEEKH1 EQU VMSEEKCC+3 USING TRACK NUMBER @V305096 01893000
  1897. VMSEEKH EQU VMSEEKCC+2 USING TRACK NUMBER @V305096 01894000
  1898. VMSEEKR EQU VMSEEKCC+4 USING RECORD NUMBER @V305096 01895000
  1899. VML EQU VM+1 LEVEL NUMBER @V305096 01896000
  1900. CC0 EQU 8 BRANCH ON CC=0 @V305096 01897000
  1901. SPACE 01898000
  1902. TWENTY8 EQU 28 DISP OF 28 @V305096 01899000
  1903. FIFTY4 EQU 54 DISP OF 54 @V305096 01900000
  1904. FIFTY9 EQU 59 DISP OF 59 @V305096 01901000
  1905. SEVENTY EQU 70 DISP OF 70 @V305096 01902000
  1906. SEVENTY3 EQU 73 DISP OF 73 @V305096 01903000
  1907. SEVENTY7 EQU 77 DISP OF 77 @V305096 01904000
  1908. SEVENTY9 EQU 79 DISP OF 79 @V305096 01905000
  1909. EIGHTY2 EQU 82 DISP OF 82 @V305096 01906000
  1910. EIGHTY8 EQU 88 DISP OF 88 @V305096 01907000
  1911. ONE02 EQU 102 DISP OF 102 @V305096 01908000
  1912. ONE11 EQU 111 DISP OF 111 @V305096 01909000
  1913. ONE28 EQU 128 PH NAME SEARCH FACTOR @V305096 01910000
  1914. FORTY1 EQU 41 DISP OF 41 @V305096 01911000
  1915. FORTY9 EQU 49 DISP OF 49 @V305096 01912000
  1916. TWO56 EQU 256 LENGTH OF 256 @V305096 01913000
  1917. ONE024 EQU 1024 LENGTH OF 1024 @V305096 01914000
  1918. DOLLAR EQU C'$' $ INDISCATOR @V305096 01915000
  1919. ZND1 EQU ZND+1 WORKFIELDS FOR @V305096 01916000
  1920. ZND2 EQU ZND+2 CONVERT AND UNPACK @V305096 01917000
  1921. ZND3 EQU ZND+3 * @V305096 01918000
  1922. ZND4 EQU ZND+4 * @V305096 01919000
  1923. FW2 EQU FW+2 * @V305096 01920000
  1924. FW3 EQU FW+3 * @V305096 01921000
  1925. TABLET EQU TABLE-240 @V305096 01922000
  1926. DSERV3 EQU * @V305065 01924000
  1927. USING *,R13 SPECIFY BASE REG TO ASSEMBLER @V305096 01925000
  1928. SPACE 2 01926000
  1929. ******************************************************************** 01927000
  1930. ***** FIND NO. OF ENTRIES WHICH CAN BE HANDLED IN ONE PASS 01928000
  1931. ******************************************************************** 01929000
  1932. SPACE 1 01930000
  1933. LA R1,SIXTEEN INIT SD/RD ENTRY SIZE @V305096 01931000
  1934. L R3,SORTEND CALCULATE SIZE OF @V305096 01932000
  1935. S R3,SORTSTRT SORT AREA @V305096 01933000
  1936. SPACE 2 01934000
  1937. SR R2,R2 ZERO REG FOR DIVIDE @V305096 01935000
  1938. DR R2,R1 CALCULATE THE @V305096 01936000
  1939. SR R2,R2 NUMBER OF FULL @V305096 01937000
  1940. LH R1,ACTLINES PAGES THAT @V305096 01938000
  1941. AR R1,R1 THE ALLOCATED @V305096 01939000
  1942. DR R2,R1 SORT AREA @V305096 01940000
  1943. STH R2,REMAINS SAVE REMAINDER OF ENTRIES @V305096 01941000
  1944. MR R2,R1 NO. OF ENTRIES ON FULL PAGES @V305096 01942000
  1945. ST R3,ENTRIES SAVE FOR NEXT PHASE @V305096 01943000
  1946. MVC LINES,LINECTR INIT LINE COUNTER FOR PRINT P@V305096 01944000
  1947. OI SWA,HEADIND INDICATE HEADER PRINT @V305096 01945000
  1948. L R6,SORTSTRT GET SORT AREA START ADDR@V305096 01946000
  1949. LR R7,R3 NO. OF RECDS THAT CAN BE SORT@V305096 01947000
  1950. MVI RSRECDS1,TWENTY SET DEFAULT NO. OF RECORDS @V305065 01948000
  1951. EJECT 01949000
  1952. ******************************************************************** 01950000
  1953. ***** READ DIRECTORY ENTRIES AND 01951000
  1954. ***** MOVE THEM INTO THE SORT AREA * 01952000
  1955. *********************************************************************** 01953000
  1956. SPACE 01954000
  1957. SR R5,R5 ZERO RECORD COUNTER @V305096 01955000
  1958. TM SWB,SYSRL DISPLAYING SYSTEM REL DIR. @V305096 01956000
  1959. BO RSMOVEDA YES, SET UP DISK ADDR @V305096 01957000
  1960. TM SWB,SYSSL DISPLAYING SYSTEM SOURCE DIR.@V305096 01958000
  1961. BO RSSOURCE YES @V305096 01959000
  1962. TM SWB,SYSPL DISPLAY SYSTEM PROC DIRECTORY@V305096 01960000
  1963. BO RSMOVEPL YES - @V305096 01961000
  1964. SPACE 1 01962000
  1965. MVI RSCBSYM,RLB SET SYSRLB LOGICAL UNIT IN CCB @V305096 01963000
  1966. TM SWB1,PRLB DISPLAYING PRIVATE REL DIR. @V305096 01964000
  1967. BZ RSSETSLB NO, HAS TO BE PRIVATE SOURCE @V305096 01965000
  1968. RSMOVEDA MVC RSSEEKCC,DISKRLD INIT SEEK BUCKET RLD ADDR @V305096 01966000
  1969. B RSFULL GO CHECK FOR RE-ENTRY @V305096 01967000
  1970. SPACE 3 01968000
  1971. RSMOVEPL EQU * @V305096 01969000
  1972. MVC RSSEEKCC,DISKPLD INIT SEEK BUCKET PLD ADDR @V305096 01970000
  1973. B RSFULL0 @V305096 01971000
  1974. SPACE 3 01972000
  1975. RSSETSLB MVI RSCBSYM,SLB SET SYSSLB LOGICAL UNIT IN CCB @V305096 01973000
  1976. RSSOURCE MVC RSSEEKCC,DISKSLD INIT SEEK BUCKET SRCE STMT DR@V305096 01974000
  1977. RSFULL0 EQU * @V305096 01975000
  1978. MVI RSRECDS1,TEN NO. OF RECORDS IN SOURCE BLOCK @V305096 01976000
  1979. RSFULL LH R2,RSRECDS NO. OF RECDS IN A BLOCK @V305096 01977000
  1980. SH R2,RSFIVE NO. OF RECORDS IN 1ST BLOCK @V305096 01978000
  1981. LA R3,RSAREA+EIGHTY ADDR OF 6TH RECD IN 1ST BLOCK@V305096 01979000
  1982. SPACE 1 01980000
  1983. TM SWC,FULLTBL SORT AREA PREVIOUSLY FILLED @V305096 01981000
  1984. BZ RSREAD NO @V305096 01982000
  1985. XI SWC,FULLTBL RESET FULL TABLE IND @V305096 01983000
  1986. MVC RSSEEKCC,DISKSAVE GET CURRENT DISK ADDRESS@V305096 01984000
  1987. LM R2,R3,SAVEREGS RESTORE POINTERS @V305096 01985000
  1988. RSREAD BAL R9,RSEXCP READ LAST BLOCK PROCESSED @V305096 01986000
  1989. B RSCOMP CONTINUE WHERE LEFT OFF @V305096 01987000
  1990. SPACE 2 01988000
  1991. RSREAD1 BAL R9,RSEXCP READ A DIRECTORY BLOCK @V305096 01989000
  1992. LH R2,RSRECDS 10/20 RECORDS PER BLOCK @V305096 01990000
  1993. LA R3,RSAREA ADDR OF READIN AREA @V305096 01991000
  1994. RSCOMP CLI ZERO(R3),ASTER THIS THE END OF THE DIR.@V305096 01992000
  1995. BE RSALLIN YES @V305096 01993000
  1996. CLC ZERO(SIXTEEN,R3),LASTREC IF ENC OF LAST PASS @V305096 01994000
  1997. BE RSNEXT SKIP THIS ENTRY @V305096 01995000
  1998. CLI ZERO(R3),BLANK IS THIS A DELETED ENTRY @V305096 01996000
  1999. BNE RSMOVE1 NO, MOVE TO SORT AREA @V305096 01997000
  2000. RSNEXT LA R3,SIXTEEN(R3) BUMP TO NEXT ENTRY IN BLOCK @V305096 01998000
  2001. BCT R2,RSCOMP CONTINUE UNTIL BLOCK IS DONE @V305096 01999000
  2002. MVC RSSEEKCC,RSCOUNT GET NEXT RECORD ADDR @V305096 02000000
  2003. B RSREAD1 GO TO READ SAME @V305096 02001000
  2004. SPACE 2 02002000
  2005. EJECT 02003000
  2006. SPACE 3 02004000
  2007. RSMOVE1 TM SWC,DUMYCNT ARE WE IN A DUMMY COUNT LOOP @V305096 02005000
  2008. BO RSADDR5 YES, DONT MOVE RECORD NOW @V305096 02006000
  2009. MVC LASTREC(SIXTEEN),ZERO(R3) SAVE REC FOR COMPARE @V305096 02007000
  2010. MVC ZERO(SIXTEEN,R6),ZERO(R3) MOVE REC TO SORT AREA @V305096 02008000
  2011. LA R6,SIXTEEN(R6) BUMP TO NEXT SRT STR POSITION@V305096 02009000
  2012. RSADDR5 LA R5,ONE(R5) INCREMENT RECORD COUNTER@V305096 02010000
  2013. CR R5,R7 IS SORT AREA FULL WITH RECORDS @V305096 02011000
  2014. BL RSNEXT NO, GET NEXT RECORD @V305096 02012000
  2015. TM SWC,DUMYCNT WENT THROUGH DUMMY COUNT LOOP@V305096 02013000
  2016. BZ RSSTM NO, START IT @V305096 02014000
  2017. XI SWC,DUMYCNT YES, RESET DUMMY LOOP CNT IND@V305096 02015000
  2018. OI SWC,FULLTBL SET FULL TABLE IND @V305096 02016000
  2019. LH R5,RECORDS SAVE TOTAL RECDS MOVED IN 1 PASS @V305096 02017000
  2020. B RSSORT GO START SORT @V305096 02018000
  2021. SPACE 2 02019000
  2022. RSSTM STM R2,R3,SAVEREGS SAVE REGS FOR RE-ENTRY @V305096 02020000
  2023. MVC SVECCHHR,RSSEEKCC SAVE CURRENT RECORD ADDR@V305096 02021000
  2024. MVC DISKSAVE,RSSEEKCC SAVE CURRENT RECORD ADDR@V305096 02022000
  2025. STH R5,RECORDS SAVE RECORDS MOVED THUS FAR @V305096 02023000
  2026. OI SWC,DUMYCNT SET IND TO FIND RECORDS LEFT @V305096 02024000
  2027. AH R7,REMAINS TOTAL RECDS THAT FIT IN 1 PASS @V305096 02025000
  2028. B RSNEXT START DUMMY COUNT LOOP @V305096 02026000
  2029. SPACE 2 02027000
  2030. RSALLIN TM SWC,DUMYCNT WERE WE IN A DUMMY COUNT LOOP@V305096 02028000
  2031. BZ RSSORT NO, SORT RECORDS @V305096 02029000
  2032. LH R5,RECORDS RESTORE RECORD COUNT @V305096 02030000
  2033. XI SWC,DUMYCNT RESET DUMMY COUNT LOOP IND @V305096 02031000
  2034. MVC RSSEEKCC,SVECCHHR RESTORE CURRENT RECORD ADDR @V305096 02032000
  2035. LM R2,R3,SAVEREGS RESTORE POINTERS @V305096 02033000
  2036. BAL R9,RSEXCP READ LAST BLOCK PROCESSED @V305096 02034000
  2037. B RSNEXT CONTINUE WHERE LEFT OFF @V305096 02035000
  2038. EJECT 02036000
  2039. *********************************************************************** 02037000
  2040. ***** SORT ROUTINE FOR RELOCATABLE AND SOURCE STATEMENT DIRECTORY * 02038000
  2041. ***** RECORDS * 02039000
  2042. ***** REGISTER R5 CONTAINS NUMBER OF RECORDS TO BE SORTED * 02040000
  2043. *********************************************************************** 02041000
  2044. SPACE 2 02042000
  2045. RSSORT STH R5,RECORDS SAVE NO. OF RECDS FOR PRINT PH @V305096 02043000
  2046. LA R8,SIXTEEN GET RECORD LENGTH FACTOR@V305096 02044000
  2047. TM SWD,SORT DSPLYS SPECIFIED @V305096 02045000
  2048. BZ RSFETCH5 NO @V305096 02046000
  2049. CH R5,HW2 ARE THERE AT LEAST 2 RECORDS @V305096 02047000
  2050. BL RSFETCH5 NO, FETCH PRINT PHASE @V305096 02048000
  2051. RSSORT1 BCTR R5,R0 DUNK RECDS TO SORT ON EACH PASS @V305096 02049000
  2052. LTR R5,R5 ARE WE IN THE LAST SORT PASS @V305096 02050000
  2053. BZ RSFETCH5 YES @V305096 02051000
  2054. STH R5,RSRECNO SAVE COUNT FOR NEXT PASS@V305096 02052000
  2055. L R6,SORTSTRT GET ADDR OF 1ST RECORD TO SORT @V305096 02053000
  2056. LA R7,SIXTEEN(R6) ADDR OF 2ND RECORD @V305096 02054000
  2057. SPACE 1 02055000
  2058. RSSORT2 TM SWB,SYSRL IF SORTING SYST.REL @V305096 02056000
  2059. BO RSSORT3 LIBRARY ,BRANCH @V305096 02057000
  2060. TM SWB,SYSSL SORTING S. SOURCE DIR. @V305096 02058000
  2061. BO RSSORT2A YES @V305096 02059000
  2062. TM SWB,SYSPL SORT PROCEDURE LIBRARY @V305096 02060000
  2063. BO RSSORT3 YES. @V305096 02061000
  2064. TM SWB1,PRLB SORTING PRIVATE REL. DIR. @V305096 02062000
  2065. BO RSSORT3 YES @V305096 02063000
  2066. RSSORT2A CLC ZERO(NINE,R6),ZERO(R7) COMP. REC. PHASE NAMES @V305096 02064000
  2067. BL RSSORT5 BUMP TO NEXT RECORD IF LOW @V305096 02065000
  2068. B RSSORT4 SWAP THE TWO RECORDS AROUND @V305096 02066000
  2069. SPACE 1 02067000
  2070. RSSORT3 CLC ZERO(EIGHT,R6),ZERO(R7) COMPARE RCD PHASE NAMES @V305096 02068000
  2071. BL RSSORT5 BUMP TO NEXT RECORD IF LOW @V305096 02069000
  2072. SPACE 1 02070000
  2073. RSSORT4 MVC RSWORK(SIXTEEN),ZERO(R6) HIGH RECORD TO SAVAREA @V305096 02071000
  2074. MVC ZERO(SIXTEEN,R6),ZERO(R7) REPLACE WITH 2ND RECOR@V305096 02072000
  2075. MVC ZERO(SIXTEEN,R7),RSWORK REPLACE WITH 1ST RECD @V305096 02073000
  2076. OI SWC,RELOOP SET IND TO RELOOP COMPARE AGAIN @V305096 02074000
  2077. RSSORT5 AR R6,R8 BUMP COMPARE REGISTERS @V305096 02075000
  2078. AR R7,R8 TO NEXT RECORD @V305096 02076000
  2079. BCT R5,RSSORT2 CONTINUE UNTIL ALL RECDS CHECKED @V305096 02077000
  2080. SPACE 1 02078000
  2081. TM SWC,RELOOP NEED TO GO THROUGH LOOP AGAIN @V305096 02079000
  2082. BZ RSFETCH5 NO, SORT DONE @V305096 02080000
  2083. XI SWC,RELOOP RESET RELOOP COMPARE IND@V305096 02081000
  2084. LH R5,RSRECNO GET CURRENT NO. OF RECDS TO SORT @V305096 02082000
  2085. B RSSORT1 GO THROUGH LOOP AGAIN @V305096 02083000
  2086. SPACE 1 02084000
  2087. RSFETCH5 MVI PHASENO,FOUR INIT TO FETCH PRINT PHASE@V305096 02085000
  2088. TM SWB,SYSSL+SYSRL PROCEDURE DIRECTORY TO PRINT @V305096 02086000
  2089. BNZ FETCH NO - @V305096 02087000
  2090. MVI PHASENO,FIVE PROC DIRECTORY PRINTOUT @V305096 02088000
  2091. TM SWB,SYSPL PROCEDURE DISPLAY @V305096 02089000
  2092. BO FETCH YES - @V305096 02090000
  2093. MVI PHASENO,FOUR PRIVATE SSL OR RL @V305096 02091000
  2094. B FETCH FETCH SAME @V305096 02092000
  2095. EJECT 02093000
  2096. *********************************************************************** 02094000
  2097. ***** DIRECTORY READ ROUTINE * 02095000
  2098. *********************************************************************** 02096000
  2099. SPACE 2 02097000
  2100. RSEXCP LA R1,RSCCB ADDR OF CCB FOR EXCP @V305096 02098000
  2101. SVC 0 @V305066 02099000
  2102. SPACE 1 02100000
  2103. TM RSCCB3,EOC END OF CYLINDER @V305096 02101000
  2104. BCR EIGHT,R9 NO, EXIT TO CALLER @V305096 02102000
  2105. LH R1,RSSEEKCC GET OLD CC OF SEEK ADDRESS @V305096 02103000
  2106. LA R1,ONE(R1) INCREMENT TO NEXT CYLINDER @V305096 02104000
  2107. STH R1,RSCOUNT STORE UPDATE CC OF SEEK ADDR.@V305096 02105000
  2108. MVC RSCOUNT3(TWO),RSHR SET HEAD AND RECD TO ONES @V305096 02106000
  2109. BR R9 EXIT TO CALLER @V305096 02107000
  2110. EJECT 02108000
  2111. *********************************************************************** 02109000
  2112. * CCB'S, CCW'S, DC'S AND DS'S * 02110000
  2113. *********************************************************************** 02111000
  2114. SPACE 2 02112000
  2115. ***** CCB FOR RELOCATABLE AND SOURCE STATEMENT DIRECTORIES 02113000
  2116. SPACE 1 02114000
  2117. DS 0D @V305096 02115000
  2118. RSCCB CCB SYSRES,RSCCW1 CCB FOR RELOCATABLE/SOURCE DIR. @V305096 02116000
  2119. SPACE 3 02117000
  2120. ***** CCW,S TO READ RELOCATABLE AND SOURCE STATEMENT DIRECTORIES 02118000
  2121. SPACE 1 02119000
  2122. RSCCW1 CCW SEEK,RSSEEKBB,CCSLI,SIX SEEK BBCCHH @V305096 02120000
  2123. RSCCW2 CCW SIDE,RSSEEKCC,CCSLI,FIVE SEARCH ID EQUAL @V305096 02121000
  2124. CCW TIC,RSCCW2,CCSLI,ONE TRANSFER IN CHANNEL@V305096 02122000
  2125. CCW READ,RSAREA,CCSLI,THREE20 READ DATA - 320 BYTES @V305096 02123000
  2126. CCW RDCNT,RSCOUNT,SLI,EIGHT READ COUNT OF NEXT RCD @V305096 02124000
  2127. SPACE 3 02125000
  2128. ***** SEEK ADDRESS BUCKET 02126000
  2129. SPACE 1 02127000
  2130. RSSEEKBB DC X'0000' BB PORTION OF SEEK ADDR @V305096 02128000
  2131. RSSEEKCC DC XL5'00' CCHHR PORTION OF SEEK ADDR @V305096 02129000
  2132. SVECCHHR DC XL5'00' CCHHR SAVE AREA @V305096 02130000
  2133. SPACE 3 02131000
  2134. ***** DISK COUNT READIN FIELD 02132000
  2135. SPACE 1 02133000
  2136. RSCOUNT DC XL8'00' COUNT FIELD READIN AREA @V305096 02134000
  2137. SPACE 3 02135000
  2138. ***** RELOCATABLE AND SOURCE STATEMENT DIRECTORY READIN AREA 02136000
  2139. SPACE 1 02137000
  2140. RSAREA DS 320C' ' DIRECTORY READIN AREA @V305096 02138000
  2141. EJECT 02139000
  2142. ***** CONSTANTS - COMMON TO THIS PHASE ONLY 02140000
  2143. SPACE 1 02141000
  2144. RSWORK DC 4F'0' DIRECTORY MOVE WORK AREA@V305096 02142000
  2145. RSRECNO DC H'0' RECORD COUNT SAVE AREA @V305096 02143000
  2146. RSHR DC X'0001' HEAD AND RECORD RESET CONSTANT @V305096 02144000
  2147. RSFIVE DC H'5' STATEMENT 1ST 5 RECORDS @V305096 02145000
  2148. RSRECDS DC H'20' RECORDS IN RELOCATABLE BLOCK @V305096 02146000
  2149. HW2 DC H'2' MIN. NUMBER TO BE SORTED@V305096 02147000
  2150. DS 0D DW ALIGNMENT @V305096 02148000
  2151. SPACE 3 02149000
  2152. *********************************************************************** 02150000
  2153. ***** EQUATES -- COMMON TO THIS PHASE ONLY * 02151000
  2154. *********************************************************************** 02152000
  2155. SPACE 1 02153000
  2156. RSCCB3 EQU RSCCB+3 BYTE 2 OF TRANSFERRED INFO @V305096 02154000
  2157. RSCBSYM EQU RSCCB+7 LOC OF SYMBOLIC UNIT IN CCB @V305096 02155000
  2158. RSCOUNT3 EQU RSCOUNT+3 USING TRACK IN COUNT FIELD @V305096 02156000
  2159. RSRECDS1 EQU RSRECDS+1 LOCATION OF BLOCK BYTE @V305096 02157000
  2160. THREE20 EQU 320 @V305096 02158000
  2161. ASTER EQU C'*' END OF LIBRARY RECORD IN@V305096 02159000
  2162. DSERV4 EQU * @V305065 02161000
  2163. USING *,R13 SPECIFY BASE REG TO ASSEMBLER @V305096 02162000
  2164. SPACE 2 02163000
  2165. *********************************************************************** 02164000
  2166. ***** INITIALIZE SORT AREA POINTER AND NUMBER OF RECORDS * 02165000
  2167. *********************************************************************** 02166000
  2168. SPACE 2 02167000
  2169. BGSERV4 L R5,SORTSTRT POINT TO OF SORT AREA @V305096 02168000
  2170. LH R8,RECORDS GET NUMBER OF SORTED RECORDS @V305096 02169000
  2171. SPACE 2 02170000
  2172. *********************************************************************** 02171000
  2173. ***** FIND OUT WHAT DIRECTORY TO PRINT AND GO TO PRINT IT * 02172000
  2174. *********************************************************************** 02173000
  2175. SPACE 2 02174000
  2176. MVC RSTW(L'RST9),RST9 SET 'SYSTEM' @V305065 02175000
  2177. TM SWB,SYSRL ASK TO DISPLAY SYSTEM RD@V305096 02176000
  2178. BO REL YES @V305096 02177000
  2179. TM SWB,SYSSL ASK TO DISPLAY SYSTEM SD@V305096 02178000
  2180. BO SORA YES @V305096 02179000
  2181. TM SWB1,PRLB ASK TO DISPLAY PRIVATE RD @V305096 02180000
  2182. BZ SOR NO @V305096 02181000
  2183. EJECT 02182000
  2184. *********************************************************************** 02183000
  2185. ***** ROUTINE TO PRINT RELOCATABLE DIRECTORY * 02184000
  2186. *********************************************************************** 02185000
  2187. SPACE 2 02186000
  2188. MVC RSTW(L'RST2),RST2 'PRIVATE' TO TITLE WORK AREA @V305096 02187000
  2189. REL MVC RSTW+EIGHT(L'RST1),RST1 'RELOCATABLE' @V305096 02188000
  2190. MVC RSTW+TWENTY(L'RST4),RST4 'DIRECTORY' @V305096 02189000
  2191. SPACE 2 02190000
  2192. MVC RSLINE21(SIX),RSLINE2 BLANK @V305096 02191000
  2193. MVC RSLINE31(SIX),RSLINE3 UNUSED @V305096 02192000
  2194. MVC RLINE2A1(THREE),RSLINE2A FIELD @V305096 02193000
  2195. MVC RLINE3A1(THREE),RSLINE3A @V305096 02194000
  2196. MVC RSLINE2M(L'RST8),RST8 'MODULE' TO HEADING LINE2 @V305096 02195000
  2197. SPACE 2 02196000
  2198. REL2 BAL R4,RSHEAD PRINT A HEADER IF NEEDED@V305096 02197000
  2199. LA R7,PRINTB GET ADDR OF PRINT AREA @V305096 02198000
  2200. ST R5,RSR5SAVE SAVE CURRENT SORT AREA POINTER @V305096 02199000
  2201. REL3 MVC TWELVE(EIGHT,R7),ZERO(R5) MODULE NAME TO PRTAREA@V305096 02200000
  2202. SPACE 2 02201000
  2203. * FORMAT RELOCATABLE DIRECTORY ENTRY TO LOOK LIKE SOURCE STATEMENT * 02202000
  2204. * DIRECTORY ENTRY FOR COMMON ROUTINE AND PRINT IT * 02203000
  2205. SPACE 2 02204000
  2206. MVC RSW(ONE),TEN(R5) C TO WORK AREA @V305096 02205000
  2207. MVC RSW+ONE(TWO),TWELVE(R5) HR TO WORK AREA @V305096 02206000
  2208. IC R4,ELEVEN(R5) OBTAIN C1 FIELD OF C2C1HR @V305096 02207000
  2209. SLL R4,SIX LOW ORDER 2 BITS HIGH ORDER @V305096 02208000
  2210. EX R4,CCINIT BRING IT TO CHR FORMAT @V305096 02209000
  2211. MVC RSW+THREE(TWO),EIGHT(R5) NO. OF RCDS TO WORKAREA@V305096 02210000
  2212. MVC RSW+FIVE(TWO),FOURTEEN(R5) VM TO WORK AREA @V305096 02211000
  2213. SPACE 02212000
  2214. BAL R10,RELSOR REMAINING BYTES TO PRINT AREA@V305096 02213000
  2215. TM SWD,SECOND DO WE NEED TO MOVE 2ND COLUMN@V305096 02214000
  2216. BO REL3 YES @V305096 02215000
  2217. BCT R8,REL2 PRINT UNTIL ALL RECORDS BE PRINT @V305096 02216000
  2218. TM SWC,FULLTBL FULL TABLE BIT ON @V305096 02217000
  2219. BO FETCH1A YES, RETURN TO ROOT PHASE @V305096 02218000
  2220. NI SWB,HEXFF-SYSRL AT LAST REC TURN OFF RL SW BIT @V305096 02219000
  2221. NI SWB1,HEXFF-PRLB ============== @V305096 02220000
  2222. FETCH1A MVI PHASENO,ONE INIT TO FETCH PHASE 1 @V305096 02221000
  2223. MVC RSTW,PRINTA CLEAR HEADER @V305065 02222000
  2224. B FETCH RETURN TO ROOT PHASE @V305096 02223000
  2225. SPACE 1 02224000
  2226. CCINIT OI RSW+ONE,HEX00 SET CORRECT CYL. NO. @V305096 02225000
  2227. EJECT 02226000
  2228. *********************************************************************** 02227000
  2229. ***** ROUTINE TO PRINT SOURCE STATMENT DIRECTORY * 02228000
  2230. *********************************************************************** 02229000
  2231. SPACE 2 02230000
  2232. SOR MVC RSTW(L'RST2),RST2 'PRIVATE' TO TITLE WORK AREA @V305096 02231000
  2233. SORA MVC RSTW+EIGHT(L'RST3+L'RST4),RST3 @V305096 02232000
  2234. * 'SOURCE STATEMENT DIR' TO WORK 02233000
  2235. SPACE 02234000
  2236. SOR1 BAL R4,RSHEAD PRINT A HEADER IF NEEDED@V305096 02235000
  2237. LA R7,PRINTB REINITIALIZE PRINT AREA POINTER @V305096 02236000
  2238. ST R5,RSR5SAVE SAVE CURRENT SORT AREA POINTER @V305096 02237000
  2239. SOR2 MVC FIVE(ONE,R7),ZERO(R5) PREFIX CHAR TO PRINT AREA@V305096 02238000
  2240. MVC TWELVE(EIGHT,R7),ONE(R5) BOOK NAME TO PRT AREA @V305096 02239000
  2241. MVC RSW(SEVEN),NINE(R5) REMAINING BYTES TO WORK AREA@V305096 02240000
  2242. TM RSW+FIVE,CHGLEV CHANGE-LEVEL VERIFY BIT ON @V305096 02241000
  2243. BZ SOR3 NO @V305096 02242000
  2244. MVI FIFTY(R7),C CHANGE-LEVEL CHAR TO PRINT @V305096 02243000
  2245. SPACE 02244000
  2246. SOR3 BAL R10,RELSOR REMAINING TO PRINT AREA @V305096 02245000
  2247. TM SWD,SECOND DO WE NEED TO MOVE 2ND COLUMN@V305096 02246000
  2248. BO SOR2 YES @V305096 02247000
  2249. BCT R8,SOR1 PRINT UNTIL ALL RCDS BE PRINTED @V305096 02248000
  2250. TM SWC,FULLTBL FULL TABLE BIT ON @V305096 02249000
  2251. BO FETCH1A YES, RETURN TO ROOT PHASE @V305096 02250000
  2252. NI SWB,HEXFF-SYSSL AT LAST REC TURN OFF SL SW BIT @V305096 02251000
  2253. NI SWB1,HEXFF-PSLB ============ @V305096 02252000
  2254. B FETCH1A RETURN TO ROOT PHASE @V305096 02253000
  2255. EJECT 02254000
  2256. *********************************************************************** 02255000
  2257. * CONVERT RELOCATABLE AND SOURCE STATMENT DIRECTORIES TO PRINTABLE * 02256000
  2258. * FORM * 02257000
  2259. *********************************************************************** 02258000
  2260. SPACE 2 02259000
  2261. RELSOR MVC RSCHR(THREE),RSW CHR TO WORK AREA FOR COMMON RT.@V305096 02260000
  2262. BAL R3,RSCVTCHR CHR TO PRINT AREA @V305096 02261000
  2263. MVC RSFW2(TWO),RSW+THREE NO. OF RECORDS TO FUKKWORD @V305096 02262000
  2264. BALR R4,R2 CONVERT IT TO ZONED @V305096 02263000
  2265. MVC THIRTY3(FIVE,R7),RSZND1 NO. OF RECORDS TO PRINT @V305096 02264000
  2266. MVC RSFW3(ONE),RSW+FIVE VERSION LEVEL TO FULLWORD @V305096 02265000
  2267. NI RSFW3,HEXFF-CHGLEV TURN OFF CHG-LEV VERIFY BIT @V305096 02266000
  2268. BALR R4,R2 CONVERT IT TO ZONED @V305096 02267000
  2269. MVC FORTY(THREE,R7),RSZND3 VERSION LEV TO PRINT AREA@V305096 02268000
  2270. MVC RSFW3(ONE),RSW+SIX MOD LEVEL TO FULLWORD @V305096 02269000
  2271. BALR R4,R2 CONVERT IT TO ZONED @V305096 02270000
  2272. MVC FORTY5(THREE,R7),RSZND3 MOD LEVEL TO PRINT AREA@V305096 02271000
  2273. SPACE 02272000
  2274. TM SWD,SECOND ARE WE MOVING SECOND COLUMN @V305096 02273000
  2275. BO RELSORA YES @V305096 02274000
  2276. LTR R11,R11 DO WE NEED TWO COLUMNS @V305096 02275000
  2277. BM RELSORA NO @V305096 02276000
  2278. LA R4,SIXTEEN BUMP SORT AREA POINTER @V305096 02277000
  2279. MH R4,ACTLINES FOR SECOND @V305096 02278000
  2280. AR R5,R4 COLUMN @V305096 02279000
  2281. OI SWD,SECOND SET SECOND COLUMN INDICATOR @V305096 02280000
  2282. LA R7,SIXTY6(R7) BUMP PRINT AREA POINTER @V305096 02281000
  2283. BCTR R11,R0 DUNK NO. OF RECORDS BY ONE @V305096 02282000
  2284. LTR R11,R11 ANY RECORD LEFT TO BE PRINTED@V305096 02283000
  2285. BM RELSORA NO @V305096 02284000
  2286. BCTR R8,R0 DUNK NO. OF RECORDS BY ONE @V305096 02285000
  2287. BR R10 RETURN TO CALLER @V305096 02286000
  2288. SPACE 2 02287000
  2289. RELSORA NI SWD,HEXFF-SECOND RESET SECOND COLUMN INDICATOR@V305096 02288000
  2290. BAL R9,PRINT PRINT A LINE @V305096 02289000
  2291. TM SWA,HEADIND END OF PAGE @V305096 02290000
  2292. BO RSBUMP YES @V305096 02291000
  2293. L R5,RSR5SAVE RESTORE SORT AREA POINTER @V305096 02292000
  2294. RSBUMP LA R5,SIXTEEN(R5) BUMP SORT AREA POINTER @V305096 02293000
  2295. BR R10 RETURN TO CALLER @V305096 02294000
  2296. EJECT 02295000
  2297. *********************************************************************** 02296000
  2298. * SUBROUTINE TO CONVERT CHR FROM BINARY TO ZONED AND MOVE IT INTO * 02297000
  2299. * PRINT AREA * 02298000
  2300. *********************************************************************** 02299000
  2301. SPACE 2 02300000
  2302. RSCVTCHR LA R2,RSFULLA GET ADDR OF FULL ROUTINE@V305096 02301000
  2303. SR R4,R4 CLEAR WORK REGISTER @V305096 02302000
  2304. IC R4,RSCHR+ONE INSERT H BYTE OF CHR FIELD @V305096 02303000
  2305. SLL R4,TWO OBTAIN TWO HIGH ORDER BITS @V305096 02304000
  2306. IC R4,RSCHR OBTAIN C BYTE OF CHR FIELD @V305096 02305000
  2307. STH R4,RSFW2 PASS CYL. NO. TO SUBROUTINE @V305096 02306000
  2308. BALR R4,R2 CONVERT C TO ZONED @V305096 02307000
  2309. MVC TWENTY2(THREE,R7),RSZND3 C TO PRINT AREA @V305096 02308000
  2310. MVC RSFW3(ONE),RSCHR+ONE PASS H TO SUBROUTINE @V305096 02309000
  2311. NI RSFW3,HEX3F CLEAR HIGH ORDER BITS H FIELD@V305096 02310000
  2312. BALR R4,R2 CONVERT H TO ZONED @V305096 02311000
  2313. MVC TWENTY6(TWO,R7),RSZND4 H TO PRINT AREA @V305096 02312000
  2314. MVC RSFW3(ONE),RSCHR+TWO PASS R TO SUBROUTINE @V305096 02313000
  2315. BALR R4,R2 CONVERT R TO ZONED @V305096 02314000
  2316. MVC TWENTY9(TWO,R7),RSZND4 R TO PRINT AREA @V305096 02315000
  2317. BR R3 RETURN TO CALLER @V305096 02316000
  2318. SPACE 2 02317000
  2319. *********************************************************************** 02318000
  2320. * SUBROUTINE TO CONVERT FULLWORD BINARY TO 6 DIGITS ZONED IN 'RSZND' * 02319000
  2321. *********************************************************************** 02320000
  2322. SPACE 2 02321000
  2323. RSFULLA L R1,RSFW PASS FULLWORD TO WORK AREA @V305096 02322000
  2324. CVD R1,RSDW CONVERT IT TO PACKED FORM @V305096 02323000
  2325. UNPK RSZND(SIX),RSDW+FOUR(FOUR) CONVERT IT TO ZONED@V305096 02324000
  2326. OI RSZND+FIVE,HEXF0 MODIFY LAST BYTE TO PRINTABLE@V305096 02325000
  2327. XC RSFW(FOUR),RSFW CLEAR FULLWORD @V305096 02326000
  2328. BR R4 RETURN TO CALLER @V305096 02327000
  2329. EJECT 02328000
  2330. *********************************************************************** 02329000
  2331. * SUBROUTINE TO PRINT HEADERS FOR DIRECTORY PRINTOUTS * 02330000
  2332. *********************************************************************** 02331000
  2333. SPACE 2 02332000
  2334. RSHEAD TM SWA,HEADIND NEED A HEADER FOR NEW PAGE @V305096 02333000
  2335. BCR EIGHT,R4 NO @V305096 02334000
  2336. LA R2,PRINT GET ADDR OF PRINT REOUTINE @V305096 02335000
  2337. LA R7,PRINTB GET ADDR OF PRINT AREA @V305096 02336000
  2338. LR R11,R8 DO WE NEED @V305096 02337000
  2339. SH R11,ACTLINES TO PRINT @V305096 02338000
  2340. TM CMSSWT,TYPOPT WAS TERM SPECIFIED? @V305065 02339000
  2341. BZ RSHEAD2 BRANCH IF NOT @V305065 02340000
  2342. LNR R11,R4 SET R11 NEGATIVE @V305065 02341000
  2343. RSHEAD2 EQU * @V305065 02342000
  2344. LTR R11,R11 TWO HEADERS @V305096 02343000
  2345. BNP RSONE NO @V305096 02344000
  2346. TM CMSSWT,DSKOPT WAS DISK SPECIFIED? @V305065 02345000
  2347. BZ RSHEAD1 BRANCH IF NOT @V305065 02346000
  2348. LR R11,R8 GET NUMBER OF RECORDS @V305065 02347000
  2349. LA R11,ONE(,R11) ROUND OFF TO EVEN NO. @V305065 02348000
  2350. SRL R11,ONE DIVIDE BY TWO @V305065 02349000
  2351. STH R11,ACTLINES SAVE HALF OF NO. OF RECS. @V305065 02350000
  2352. LR R11,R8 GET NUMBER OF RECORDS @V305065 02351000
  2353. SRL R11,ONE AND DIVIDE BY TWO FOR 2ND COL@V305065 02352000
  2354. RSHEAD1 EQU * @V305065 02353000
  2355. MVC FORTY3(THIRTY4,R7),RSTW TITLE TO WORK AREA @V305096 02354000
  2356. RSDATE COMRG GET COMMUNICATION REGION@V305096 02355000
  2357. MVC EIGHTY1(EIGHT,R7),ZERO(R1) DATE TO PRINT AREA @V305096 02356000
  2358. TM SWD,SORT WAS 'DSPLYS' SPECIFIED @V305096 02357000
  2359. BZ RSZEROR1 NO @V305096 02358000
  2360. MVC NINETY6(FOUR,R7),RST5 MOVE 'PASS' TO PRINT AREA@V305096 02359000
  2361. MVC ONE03(ONE,R7),PASSCTR MOVE PASS NO. TO PRINT @V305096 02360000
  2362. RSZEROR1 SR R1,R1 ZERO REGISTER @V305096 02361000
  2363. IC R1,PAGECTR GET CURRENT PAGE NUMBER @V305096 02362000
  2364. CVD R1,RSDW CONVERT PAGE NO. TO DECIMAL @V305096 02363000
  2365. LA R1,ONE(R1) BUMP PAGE NO. BY 1 @V305096 02364000
  2366. STC R1,PAGECTR SAVE NEW PAGE NUMBER @V305096 02365000
  2367. UNPK ONE18(TWO,R7),RSDW+SIX(TWO) CONVERT PAGE NO. @V305096 02366000
  2368. OI ONE19(R7),HEXF0 TO PRINTABLE CHAR @V305096 02367000
  2369. CLI ONE18(R7),HEXF0 PAGE NO. LEADING ZERO @V305096 02368000
  2370. BNE MVCRST7 NO @V305096 02369000
  2371. MVI ONE18(R7),BLANK SUPPRESS LEADING ZERO @V305096 02370000
  2372. MVCRST7 MVC ONE11(FOUR,R7),RST7 MOVE 'PAGE' TO PRINT AREA@V305096 02371000
  2373. BALR R9,R2 PRINT TITLE,DATE,PAGE AND PASS @V305096 02372000
  2374. BALR R9,R2 SKIP ONE LINE @V305096 02373000
  2375. EJECT 02374000
  2376. MVC TWO(FIFTY2,R7),RSLINE2 HEADING LINE2 TO PRINT @V305096 02375000
  2377. LTR R11,R11 DO WE NEED TWO HEADERS @V305096 02376000
  2378. BNP PRSLINE2 NO @V305096 02377000
  2379. MVC SIXTY8(FIFTY2,R7),RSLINE2 HEADING LINE2 TO PRINT@V305096 02378000
  2380. PRSLINE2 BALR R9,R2 PRINT HEADING LINE2 @V305096 02379000
  2381. MVC TWO(FIFTY2,R7),RSLINE3 HEADING LINE3 TO PRTAREA@V305096 02380000
  2382. LTR R11,R11 DO WE NEED TWO HEADERS @V305096 02381000
  2383. BNP PRSLINE3 NO @V305096 02382000
  2384. MVC SIXTY8(FIFTY2,R7),RSLINE3 HEADING LINE3 TO PRT@V305096 02383000
  2385. PRSLINE3 BALR R9,R2 PRINT HEADING LINE3 @V305096 02384000
  2386. BALR R9,R2 SKIP A LINE @V305096 02385000
  2387. RSDASH MVI TWENTY2(R7),DASH DASH TO PRINT AREA @V305096 02386000
  2388. MVC TWENTY3(TWENTY5,R7),TWENTY2(R7) PROPAGATE DASH@V305096 02387000
  2389. MVC THIRTY4(THREE,R7),RSDEC 'DEC' TO PRINT AREA @V305096 02388000
  2390. TM SWD,SECOND ARE WE MOVING SECOND COL. @V305096 02389000
  2391. BO RSLINE4 YES @V305096 02390000
  2392. LTR R11,R11 DO WE NEED TWO HEADERS @V305096 02391000
  2393. BNP RSLINE4 NO @V305096 02392000
  2394. OI SWD,SECOND SET SECOND COLUMN IND. @V305096 02393000
  2395. LA R7,SIXTY6(R7) BUMP PRINT AREA POINTER @V305096 02394000
  2396. B RSDASH GO TO MOVE 2ND COLUMN @V305096 02395000
  2397. RSLINE4 BALR R9,R2 PRINT HEADING LINE4 @V305096 02396000
  2398. BALR R9,R2 SKIP ONE LINE @V305096 02397000
  2399. LA R7,PRINTB REINITIALIZE PRINT AREA POINTER @V305096 02398000
  2400. MVC TWENTY3(L'RST6,R7),RST6 'CHR' TO PRINT AREA @V305096 02399000
  2401. TM SWD,SECOND DO WE NEED TWO HEADERS @V305096 02400000
  2402. BZ RSLINE5 NO @V305096 02401000
  2403. MVC EIGHTY9(L'RST6,R7),RST6 'CHR' TO PRINT AREA @V305096 02402000
  2404. RSLINE5 BALR R9,R2 PRINT CHR LINE @V305096 02403000
  2405. NI SWD,HEXFF-SECOND RESET SECOND COLUMN IND @V305096 02404000
  2406. BR R4 RETURN TO CALLER @V305096 02405000
  2407. SPACE 2 02406000
  2408. RSONE MVC ZERO(THIRTY4,R7),RSTW TITLE TO PRINT AREA= @V305096 02407000
  2409. B RSDATE GO TO MOVE DATE @V305096 02408000
  2410. EJECT 02409000
  2411. *********************************************************************** 02410000
  2412. * DC'S * 02411000
  2413. *********************************************************************** 02412000
  2414. SPACE 2 02413000
  2415. SPACE 2 02415000
  2416. RST1 DC C'RELOCATABLE' @V305096 02416000
  2417. RST2 DC C'PRIVATE ' @V305096 02417000
  2418. RST3 DC C'SOURCE STATEMENT ' @V305096 02418000
  2419. RST4 DC C'DIRECTORY' @V305096 02419000
  2420. RST5 DC C'PASS' @V305096 02420000
  2421. RST6 DC C'C H R' @V305096 02421000
  2422. RST7 DC C'PAGE' @V305096 02422000
  2423. RST8 DC C'MODULE' @V305096 02423000
  2424. RST9 DC C'SYSTEM' @V305065 02424000
  2425. RSDEC DC C'DEC' @V305096 02425000
  2426. SPACE 2 02426000
  2427. RSLINE2 DC C' SUBLIB BOOK DISK NO. VER MOD ' 02427000
  2428. RSLINE2A DC C' LEV' @V305096 02428000
  2429. RSLINE3 DC C' PREFIX NAME ADDR RCDS LEV LEV ' 02429000
  2430. RSLINE3A DC C' CHK' @V305096 02430000
  2431. SPACE 2 02431000
  2432. ***** WORK AREA 02432000
  2433. SPACE 02433000
  2434. RSTW DC C'SYSTEM ' TITLE WKAR@V305096 02434000
  2435. RSCHR DC CL3' ' CONVERT DISK ADDR WORK AREA @V305096 02435000
  2436. RSZND DC CL6' ' CONVERT DISK ADDR WORK AREA @V305096 02436000
  2437. RSW DC CL7' ' FORMAT DIR ENTRY WORK AREA @V305096 02437000
  2438. RSFW DC F'0' FULLWORD WORK AREA @V305096 02438000
  2439. RSDW DC D'0' DOUBLE WORD WORK AREA @V305096 02439000
  2440. RSR5SAVE DC F'0' CURRENT SORT AREA PTR SAVE @V305096 02440000
  2441. EJECT 02441000
  2442. *********************************************************************** 02442000
  2443. * EQUATES * 02443000
  2444. *********************************************************************** 02444000
  2445. SPACE 2 02445000
  2446. ***** CONSTANT EQUATES 02446000
  2447. SPACE 2 02447000
  2448. SIXTY8 EQU 68 @V305096 02448000
  2449. SEVEN68 EQU 768 INCREMENT FACTOR FOR SECOND COL. @V305096 02449000
  2450. SPACE 02450000
  2451. CHGLEV EQU X'80' @V305096 02451000
  2452. C EQU C'C' @V305096 02452000
  2453. SPACE 2 02453000
  2454. ***** ADDRESS EQUATES 02454000
  2455. SPACE 2 02455000
  2456. RSLINE21 EQU RSLINE2+1 @V305096 02456000
  2457. RSLINE31 EQU RSLINE3+1 @V305096 02457000
  2458. RLINE2A1 EQU RSLINE2A+1 @V305096 02458000
  2459. RLINE3A1 EQU RSLINE3A+1 @V305096 02459000
  2460. RSZND1 EQU RSZND+1 @V305096 02460000
  2461. RSZND3 EQU RSZND+3 @V305096 02461000
  2462. RSZND4 EQU RSZND+4 @V305096 02462000
  2463. RSFW2 EQU RSFW+2 @V305096 02463000
  2464. RSFW3 EQU RSFW+3 @V305096 02464000
  2465. RSLINE2M EQU RSLINE2+11 @V305096 02465000
  2466. DSERV5 EQU * @V305065 02467000
  2467. USING *,R13 SPECIFY BASE REG TO ASSEMBLER @V305096 02468000
  2468. SPACE 2 02469000
  2469. ********************************************************************* 02470000
  2470. ***** INITIALIZE SORT AREA POINTER AND NUMBER OF RECORDS 02471000
  2471. ********************************************************************* 02472000
  2472. SPACE 2 02473000
  2473. BGSERV5 L R5,SORTSTRT POINT TO BEGINNING OF SO@V305096 02474000
  2474. LH R8,RECORDS GET NUMBER OF SORTED RECORDS @V305096 02475000
  2475. SPACE 2 02476000
  2476. ******************************************************************* 02477000
  2477. **** TEST DIRECTORY TO PRINT 02478000
  2478. ******************************************************************* 02479000
  2479. SPACE 2 02480000
  2480. TM SWB,SYSPL SYSTEM PROCEDURE DIRECTORY @V305096 02481000
  2481. BNO FTCH7A NO - @V305096 02482000
  2482. EJECT 02483000
  2483. ******************************************************************* 02484000
  2484. ***** MAIN ROUTINE 02485000
  2485. ******************************************************************* 02486000
  2486. SPACE 2 02487000
  2487. DS702 EQU * @V305096 02488000
  2488. BAL R4,PHEAD PRINT HEADER IF NEEDED @V305096 02489000
  2489. LA R7,PRINTB GET ADDR OF PRINTAREA @V305096 02490000
  2490. ST R5,PR5SAVE SAVE CURRENT SORT AREA VALUE @V305096 02491000
  2491. DS704 EQU * * @V305096 02492000
  2492. MVC TEN(EIGHT,R7),0(R5) PROC NAME TO PRINT AREA @V305096 02493000
  2493. MVC PSAV(EIGHT),EIGHT(R5) @V305096 02494000
  2494. BAL R10,PFORM FORMAT PROCEDURE DIRECTORY @V305096-02495000
  2495. ENTRY @V305096 02496000
  2496. TM SWD,SECOND DO WE NEED TO MOVE 2ND COL @V305096 02497000
  2497. BO DS704 YES - @V305096 02498000
  2498. BCT R8,DS702 ANY ENTRY IN SORT AREA @V305096 02499000
  2499. SPACE 2 02500000
  2500. TM SWC,FULLTBL FULL TABLE BIT POSTED @V305096 02501000
  2501. BO FTCH7A YES - @V305096 02502000
  2502. NI SWB,HEXFF-SYSPL RESET SYSPL FLAG @V305096 02503000
  2503. * DIRECTORY OUTPUT COMPLETE 02504000
  2504. FTCH7A MVI PHASENO,ONE INIT TO FETCH PHASE @V305096 02505000
  2505. B FETCH RETURN TO ROOT @V305096 02506000
  2506. SPACE 2 02507000
  2507. ******************************************************************* 02508000
  2508. EJECT 02509000
  2509. ******************************************************************* 02510000
  2510. ***** PFORM SUBROUTINE - 02511000
  2511. ***** FORMATS THE PROCEDURE DIRECTORY ENTRIES 02512000
  2512. ******************************************************************* 02513000
  2513. SPACE 2 02514000
  2514. PFORM DS 0H ENTRY POINT @V305096 02515000
  2515. TM PSAV+DFLAG,PDATA PROCEDURE WITH SYSIPT DATA @V305096 02516000
  2516. BZ PF02 NO - @V305096 02517000
  2517. MVI TWENTY2(R7),C'X' POST X INTO PRINT ARAE @V305096 02518000
  2518. PF02 EQU * @V305096 02519000
  2519. MVC PCHR(THREE),PSAV+TWO CHR TO WORK AREA @V305096 02520000
  2520. BAL R3,PCVTCHR CONVERT CHR AND POST IT @V305096 02521000
  2521. MVC PFW2(TWO),PSAV NO. OF BLOCKS @V305096 02522000
  2522. BALR R4,R2 CONVERT IT @V305096 02523000
  2523. MVC FORTY2(FIVE,R7),PZND1 NO OF BLOCKS TO PRINT AREA@V305096 02524000
  2524. MVC PFW3(ONE),PSAV+SIX VERSION LEVEL TO WORKAREA @V305096 02525000
  2525. BALR R4,R2 CONVERT IT @V305096 02526000
  2526. MVC FIFTY(THREE,R7),PZND3 VERSION LEVEL TO PRINTAREA@V305096 02527000
  2527. MVC PFW3(ONE),PSAV+SEVEN MOD. LEVEL TO WORK AREA @V305096 02528000
  2528. BALR R4,R2 CONVERT IT @V305096 02529000
  2529. MVC FIFTY5(THREE,R7),PZND3 MOD. LEVEL TO PRINT AREA@V305096 02530000
  2530. SPACE 2 02531000
  2531. TM SWD,SECOND ARE WE MOVING SECOND COLUMN @V305096 02532000
  2532. BO PF04 YES @V305096 02533000
  2533. LTR R11,R11 DO WE NEED TWO COLUMNS @V305096 02534000
  2534. BM PF04 NO @V305096 02535000
  2535. LA R4,SIXTEEN BUMP SORT @V305096 02536000
  2536. MH R4,ACTLINES AREA @V305096 02537000
  2537. AR R5,R4 POINTER @V305096 02538000
  2538. OI SWD,SECOND SET SECOND COLUMN INDICATOR @V305096 02539000
  2539. LA R7,SIXTY(R7) BUMP PRINT AREA POINTER @V305096 02540000
  2540. BCTR R11,R0 DUNK NO. OF RECORDS BY ONE @V305096 02541000
  2541. LTR R11,R11 ANY RECORD LEFT TO BE PRINTED @V305096 02542000
  2542. BM PF04 NO @V305096 02543000
  2543. BCTR R8,R0 DUNK NO. OF RECORDS BY ONE @V305096 02544000
  2544. BR R10 RETURN TO CALLER @V305096 02545000
  2545. SPACE 2 02546000
  2546. PF04 NI SWD,HEXFF-SECOND RESET SECOND COLUMN INDICATOR@V305096 02547000
  2547. BAL R9,PRINT PRINT A LINE @V305096 02548000
  2548. TM SWA,HEADIND END OF PAGE @V305096 02549000
  2549. BO PF05 YES @V305096 02550000
  2550. L R5,PR5SAVE RESTORE SORT AREA POINTER@V305096 02551000
  2551. PF05 LA R5,SIXTEEN(R5) BUMP SORT AREA POINTER @V305096 02552000
  2552. BR R10 RETURN TO CALLER @V305096 02553000
  2553. SPACE 2 02554000
  2554. ******************************************************************** 02555000
  2555. EJECT 02556000
  2556. ***************************************************************** 02557000
  2557. ***** SUBROUTINE FOR CONVERTING CHR FROM BINARY TO ZONED DECIMAL 02558000
  2558. ***** THE RESULT IS MOVED INTO THE PRINTAREA 02559000
  2559. ***************************************************************** 02560000
  2560. SPACE 2 02561000
  2561. PCVTCHR DS 0H ENTRY POINT @V305096 02562000
  2562. LA R2,PFULLA GET ADDRESS OF FULL ROUTINE @V305096 02563000
  2563. SR R4,R4 @V305096 02564000
  2564. IC R4,PCHR+ONE GET H BYTE OF CHR FIELD @V305096 02565000
  2565. SLL R4,TWO SEPARATE HIGH ORDER BITS@V305096 02566000
  2566. IC R4,PCHR GET C BYTE OF CHR FIELD @V305096 02567000
  2567. STH R4,PFW2 PASS CYLINDER NO. TO SUBR. @V305096 02568000
  2568. BALR R4,R2 CONVERT C TO ZONED @V305096 02569000
  2569. MVC TWENTY8(THREE,R7),PZND3 POST C INTO PRINT AREA @V305096 02570000
  2570. MVC PFW3(ONE),PCHR+ONE PASS H TO SUBROUTINE @V305096 02571000
  2571. NI PFW3,HEX3F CLEAR HIGH ORDER BITS @V305096 02572000
  2572. BALR R4,R2 CONVERT H TO ZONED @V305096 02573000
  2573. MVC THIRTY3(TWO,R7),PZND4 H TO PRINT AREA @V305096 02574000
  2574. MVC PFW3(ONE),PCHR+TWO PASS R TO SUBROUTINE @V305096 02575000
  2575. BALR R4,R2 CONVERT R TO ZONED @V305096 02576000
  2576. MVC THIRTY7(TWO,R7),PZND4 POST R TO PRINT AREA @V305096 02577000
  2577. BR R3 RETURN @V305096 02578000
  2578. SPACE 3 02579000
  2579. ***************************************************************** 02580000
  2580. ***** SUBROUTINE TO CONVERT FULLWORD BINARY TO 6 DIGITS ZONED 02581000
  2581. ***** IN 'PZND'. 02582000
  2582. ******************************************************************* 02583000
  2583. SPACE 2 02584000
  2584. PFULLA L R1,PFW PASS FULLWORD TO WORK AREA @V305096 02585000
  2585. CVD R1,PDW CONVERT IT TO PACKED FORM @V305096 02586000
  2586. UNPK PZND(SIX),PDW+FOUR(FOUR) CONVERT IT TO ZONED @V305096 02587000
  2587. OI PZND+FIVE,HEXF0 MODIFY LAST BYTE TO PRINTABLE@V305096 02588000
  2588. XC PFW(FOUR),PFW CLEAR FULLWORD @V305096 02589000
  2589. BR R4 RETURN TO CALLER @V305096 02590000
  2590. SPACE 2 02591000
  2591. ******************************************************************** 02592000
  2592. EJECT 02593000
  2593. ******************************************************************** 02594000
  2594. ***** SUBROUTINE TO PRINT HEADERS FOR DIRECTORY PRINTOUTS 02595000
  2595. ******************************************************************** 02596000
  2596. SPACE 2 02597000
  2597. PHEAD DS 0H ENTRY POINT @V305096 02598000
  2598. TM SWA,HEADIND HEADER REQUIRED @V305096 02599000
  2599. BCR EIGHT,R4 NO - RETURN TO CALLER @V305096 02600000
  2600. LA R2,PRINT GET ADDRESS OF PRINT ROUT @V305096 02601000
  2601. LA R7,PRINTB GET ADDRESS OF PRINT AREA @V305096 02602000
  2602. LR R11,R8 ) @V305096 02603000
  2603. TM CMSSWT,TYPOPT WAS TERM SPECIFIED? @V305065 02604000
  2604. BZ PHEAD1 BRANCH IF NOT @V305065 02605000
  2605. LNR R11,R4 SET R11 NEGATIVE @V305065 02606000
  2606. B PH100 @V305065 02607000
  2607. PHEAD1 EQU * @V305065 02608000
  2608. SH R11,ACTLINES ) TWO HEADERS REQUIRED @V305096 02609000
  2609. BNP PH100 ) NO - @V305096 02610000
  2610. TM CMSSWT,DSKOPT WAS DISK SPECIFIED? @V305065 02611000
  2611. BZ PHEAD2 BRANCH IF NOT @V305065 02612000
  2612. LR R11,R8 GET NUM OF RECORDS @V305065 02613000
  2613. LA R11,ONE(,R11) ROUND OFF TO EVEN NUMBER @V305065 02614000
  2614. SRL R11,ONE DIVIDE BY TWO @V305065 02615000
  2615. STH R11,ACTLINES SET FOR PRINTOUT @V305065 02616000
  2616. LR R11,R8 GET NUM OF RECORDS @V305065 02617000
  2617. SRL R11,ONE AND DIVIDE BY TWO FOR 2ND COL@V305065 02618000
  2618. PHEAD2 EQU * @V305065 02619000
  2619. MVC FORTY3(THIRTY4,R7),PTW TITLE TO PRINT AREA @V305096 02620000
  2620. PH010 EQU * @V305096 02621000
  2621. COMRG @V305096 02622000
  2622. MVC EIGHTY1(EIGHT,R7),0(R1) DATE TO PRINT AREA @V305096 02623000
  2623. TM SWD,SORT WAS 'DSPLYS' SPECIFIED @V305096 02624000
  2624. BZ PH020 NO - @V305096 02625000
  2625. MVC NINETY6(FOUR,R7),PT5 MOVE 'PASS' TO PRINTAREA@V305096 02626000
  2626. MVC ONE03(ONE,R7),PASSCTR MOVE PASS NO. TO PRINT @V305096 02627000
  2627. PH020 EQU * @V305096 02628000
  2628. SR R1,R1 @V305096 02629000
  2629. IC R1,PAGECTR GET CURRENT PAGE NUMBER @V305096 02630000
  2630. CVD R1,PDW CONVERT PAGE NUMBER TO DEC @V305096 02631000
  2631. LA R1,ONE(R1) UPDATE @V305096 02632000
  2632. STC R1,PAGECTR SAVE NEW VALUE @V305096 02633000
  2633. UNPK ONE18(TWO,R7),PDW+SIX(TWO) CONVERT PAGE NO. TO @V305096-02634000
  2634. PRINTABLE FORMAT @V305096 02635000
  2635. OI ONE19(R7),X'F0' =============== @V305096 02636000
  2636. SPACE 1 02637000
  2637. CLI ONE18(R7),X'F0' LEADING ZERO @V305096 02638000
  2638. BNE PH030 NO - @V305096 02639000
  2639. MVI ONE18(R7),BLANK SUPPRESS LEADING ZERO @V305096 02640000
  2640. PH030 EQU * @V305096 02641000
  2641. MVC ONE11(FOUR,R7),PT7 MOVE 'PAGE' INTO PRINT AREA @V305096 02642000
  2642. BALR R9,R2 PRINT HEADER LINE 1 @V305096 02643000
  2643. BALR R9,R2 SKIP ONE LINE @V305096 02644000
  2644. MVC NINE(L'PLINE2,R7),PLINE2 HEADER LINE2 TO PRINT @V305096 02645000
  2645. LTR R11,R11 TWO COLUMNS REQUIRED @V305096 02646000
  2646. BNP PH040 NO - @V305096 02647000
  2647. MVC SIXTY9(L'PLINE2,R7),PLINE2 HDR LINE2 TO PRT AREA@V305096 02648000
  2648. PH040 EQU * @V305096 02649000
  2649. BALR R9,R2 PRINT HEADING LINE 2 @V305096 02650000
  2650. MVC NINE(L'PLINE3,R7),PLINE3 HEADER LINE3 TO PRINT @V305096 02651000
  2651. LTR R11,R11 TWO COLUMNS REQUIRED @V305096 02652000
  2652. BNP PH050 NO - @V305096 02653000
  2653. MVC SIXTY9(L'PLINE3,R7),PLINE3 HEADER LINE3 TO PRINT@V305096 02654000
  2654. PH050 EQU * @V305096 02655000
  2655. BALR R9,R2 PRINT HEADING LINE 3 @V305096 02656000
  2656. BALR R9,R2 SKIP ONE LINE @V305096 02657000
  2657. SPACE 2 02658000
  2658. PH060 EQU * @V305096 02659000
  2659. MVI TWENTY1(R7),DASH ) BUILD @V305096 02660000
  2660. MVC TWENTY2(THIRTY5,R7),TWENTY1(R7) @V305096 02661000
  2661. MVC THIRTY9(THREE,R7),PDEC ) DASH LINE @V305096 02662000
  2662. TM SWD,SECOND ARE WE MOVING SECOND COL. @V305096 02663000
  2663. BO PH070 YES - @V305096 02664000
  2664. LTR R11,R11 TWO HEADERS REQUIRED @V305096 02665000
  2665. BNP PH070 NO - @V305096 02666000
  2666. OI SWD,SECOND SET SECOND COL. FLAG @V305096 02667000
  2667. LA R7,SIXTY(R7) UPDATE PRINT AREA POINTER @V305096 02668000
  2668. B PH060 @V305096 02669000
  2669. SPACE 2 02670000
  2670. PH070 EQU * @V305096 02671000
  2671. BALR R9,R2 PRINT HEADING LINE 4 @V305096 02672000
  2672. BALR R9,R2 SKIP 1 LINE @V305096 02673000
  2673. LA R7,PRINTB REINITIALIZE PRINT AREA POINT@V305096 02674000
  2674. MVC TWENTY8(L'PT6,R7),PT6 'CHR' TO PRINT AREA @V305096 02675000
  2675. TM SWD,SECOND TWO COLUMNS REQUIRED @V305096 02676000
  2676. BZ PH080 NO - @V305096 02677000
  2677. MVC EIGHTY8(L'PT6,R7),PT6 'CHR' TO PRINT AREA @V305096 02678000
  2678. PH080 EQU * @V305096 02679000
  2679. BALR R9,R2 PRINT LINE @V305096 02680000
  2680. NI SWD,HEXFF-SECOND RESET SECOND COLUMN FLAG@V305096 02681000
  2681. BR R4 RETURN TO CALLER @V305096 02682000
  2682. SPACE 3 02683000
  2683. PH100 EQU * @V305096 02684000
  2684. MVC ZERO(THIRTY4,R7),PTW TITLE TO PRINT AREA @V305096 02685000
  2685. B PH010 @V305096 02686000
  2686. SPACE 2 02687000
  2687. ******************************************************************** 02688000
  2688. EJECT 02689000
  2689. ******************************************************************* 02690000
  2690. ***** CONSTANTS AND SAVE AREAS 02691000
  2691. ******************************************************************* 02692000
  2692. SPACE 2 02693000
  2693. PDW DC D'0' @V305096 02694000
  2694. PFW DC F'0' @V305096 02695000
  2695. PR5SAVE DC F'0' @V305096 02696000
  2696. SPACE 3 02697000
  2697. PTW DC C' PROCEDURE DIRECTORY' @V305096 02698000
  2698. DC CL10' ' @V305096 02699000
  2699. PCHR DC CL3' ' @V305096 02700000
  2700. PZND DC CL6' ' @V305096 02701000
  2701. PSAV DC XL8'0' @V305096 02702000
  2702. PDEC DC C'DEC' @V305096 02703000
  2703. PT5 DC C'PASS' @V305096 02704000
  2704. PT6 DC C' C H R' @V305096 02705000
  2705. PT7 DC C'PAGE' @V305096 02706000
  2706. SPACE 3 02707000
  2707. PLINE2 DC C'PROCEDURE DATA DISK NO. VER MOD ' 02708000
  2708. PLINE3 DC C' NAME FLAG ADDR RECDS LEV LEV ' 02709000
  2709. ENDDSERV EQU * @V305065 02710000
  2710. EJECT 02711000
  2711. ******************************************************************* 02712000
  2712. ***** EQUATES 02713000
  2713. ******************************************************************* 02714000
  2714. SPACE 2 02715000
  2715. DFLAG EQU 5 @V305096 02716000
  2716. PZND1 EQU PZND+1 @V305096 02717000
  2717. PZND2 EQU PZND+2 @V305096 02718000
  2718. PZND3 EQU PZND+3 @V305096 02719000
  2719. PZND4 EQU PZND+4 @V305096 02720000
  2720. PFW2 EQU PFW+2 @V305096 02721000
  2721. PFW3 EQU PFW+3 @V305096 02722000
  2722. THIRTY7 EQU 37 @V305096 02723000
  2723. SIXTY EQU 60 @V305096 02724000
  2724. SIXTY9 EQU 69 @V305096 02725000
  2725. PDATA EQU X'80' @V305096 02726000
  2726. EJECT 02727000
  2727. SYSIR DSECT @V305096 02728000
  2728. BGCOM , @V305065 02729000
  2729. MAPPUB , @V305065 02730000
  2730. PUBWIT EQU *-PUBCUU @V305065 02731000
  2731. DOSCB , @V305065 02732000
  2732. EJECT 02733000
  2733. NUCON , @V305065 02734000
  2734. END STARTA 02735000