Table of Contents

DMSFOR Source

References

Source Listing

DMSFOR.ASSEMBLE.txt
  1. FOR TITLE 'DMSFOR (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00003000
  3. *. 00004000
  4. * 00005000
  5. * 00006000
  6. * 00007000
  7. * 00008000
  8. * MODULE NAME: 00009000
  9. * 00010000
  10. * DMSFOR (FORMAT) 00011000
  11. * 00012000
  12. * FUNCTION: 00013000
  13. * 00014000
  14. * TO PHYSICALLY INITIALIZE A DISK SPACE FOR THE CMS 00015000
  15. * DATA MANAGEMENT ROUTINES. FOR AN EXISTING DISK, IT 00016000
  16. * MAY IN EFFECT BE CLEARED; A LABEL MODIFIED; RECOMPUTE 00017000
  17. * THE NUMBER OF CYLINDERS THAT ARE ALLOWED TO BE USED. 00018000
  18. * 00019000
  19. * ATTRIBUTES: 00020000
  20. * 00021000
  21. * DISK RESIDENT; SERIALLY REUSABLE. 00022000
  22. * 00023000
  23. * ENTRY POINTS: 00024000
  24. * 00025000
  25. * DMSFOR-(FORMAT) 00026000
  26. * 00027000
  27. * ENTRY CONDITIONS: 00028000
  28. * 00029000
  29. * R1 MUST POINT TO FORMAT PARAMETER LIST: 00030000
  30. * DS 0F 00031000
  31. * PLIST DC CL8'FORMAT' 00032000
  32. * DC CL8'CCU' 00033000
  33. * DC CL8'MODE' 00034000
  34. * <DC CL8'NN'> 00035000
  35. * <DC CL8'(RECOMP)'> 00036000
  36. * <DC CL8'(LABEL)'> 00037000
  37. * DC CL8'FENCE' 00038000
  38. * 00039000
  39. * EXIT CONDITIONS: 00040000
  40. * 00041000
  41. * NORMAL RETURN 00042000
  42. * R15=0 00043000
  43. * ERROR RETURNS 00044000
  44. * R15 NONZERO (SEE "ERROR RETURNS") 00045000
  45. * 00046000
  46. * CALLS TO OTHER ROUTINES: 00047000
  47. * 00048000
  48. * DMSLAD, DMSFRE, DMSFRET, DMSDIOR, DMSALU, DMSSTD, 00049000
  49. * DMSAUD, DMSDIOW, DMSCRD, DMSCRW, DMSERR 00050000
  50. * 00051000
  51. * CALLED BY: 00052000
  52. * 00053000
  53. * DMSINT, OR USER FROM TERMINAL 00054000
  54. * 00055000
  55. * EXTERNAL REFERENCES: 00056000
  56. * 00057000
  57. * ADTSECT, FVSECT 00058000
  58. * 00059000
  59. * EXIT CONDITIONS: 00060000
  60. * 00061000
  61. * NORMAL: GPR15 = 0 00062000
  62. * 00063000
  63. * ERROR: GPR15 HAS ERROR CODE AS FOLLOWS 00064000
  64. * 00065000
  65. * 8 RECOMPUTE WOULD CAUSE DATA-LOSS 00066000
  66. * 24 PARAMETER LIST ERROR 00067000
  67. * 36 DISK IS READ-ONLY 00068000
  68. * 88 UNSUPPORTED DEVICE TYPE 00069000
  69. * 100 DEVICE NOT ATTACHED 00070000
  70. * OR 00071000
  71. * I/O ERROR DURING FORMAT 00072000
  72. * 00073000
  73. * 00074000
  74. * REGISTER USAGE 00075000
  75. * 00076000
  76. * R12 BASE 00077000
  77. * R13 FVSECT 00078000
  78. * REST WORK 00079000
  79. * 00080000
  80. * OPERATION: 00081000
  81. * 00082000
  82. * INITIALIZATION PHASE 00083000
  83. * 00084000
  84. * DMSFOR VALIDATES THE PARAMETER LIST. A CHECK IS 00085000
  85. * MADE TO VERIFY THAT THE SPECIFIED CCU IS VALID (NONZERO) 00086000
  86. * AND NOT GREATER THAN X'FFF'. FURTHER, THE MODE 00087000
  87. * IS CHECKED FOR VALIDITY AND A SPECIFICATION OF 'S' 00088000
  88. * FOR THE SYSTEM DISK WILL, OF COURSE, NOT BE 00089000
  89. * ALLOWED. THE SPECIFIED DEVICE IS THEN VERIFIED TO 00090000
  90. * BE A READ/WRITE DASD DEVICE. A CP DIAGNOSE IS 00091000
  91. * THEN ISSUED TO DETERMINE IF THE DEVICE IS 00092000
  92. * ATTACHED AND READY AND TO DETERMINE THE ACTUAL 00093000
  93. * DEVICE TYPE. IF ANY CONDITION IS NOT MET OR THE 00094000
  94. * DEVICE TYPE IS NOT RECOGNIZABLE AN ERROR CODE AND 00095000
  95. * SUITABLE MESSAGE IS PRODUCED. 00096000
  96. * 00097000
  97. * DMSFOR CONTINUES AS DESCRIBED IN THE FOLLOWING 00098000
  98. * SECTIONS. 00099000
  99. * 00100000
  100. * REAL FORMAT (FORMAT CCU MODE <NN>) 00101000
  101. * 00102000
  102. * IF THE DISK IS REALLY TO BE FORMATTED (NONE OF THE 00103000
  103. * SPECIAL OPTIONS R, OR L WAS SPECIFIED), THE PROCEDURE 00104000
  104. * USED IS AS FOLLOWS. THE GENERAL DESCRIPTION WILL BE 00105000
  105. * THAT OF THE PROCEDURE FOLLOWED FOR THE A-DISK; 00106000
  106. * FORMATTING OF THE OTHER DISKS IS IDENTICAL IN 00107000
  107. * OPERATION. WHERE THERE ARE DIFFERENCES FOR A 00108000
  108. * DYNAMICALY CREATED DISK SPACE, THEY ARE NOTED AND 00109000
  109. * ALSO SUMMARIZED IN A LATER SECTION. A DYNAMICALLY 00110000
  110. * CREATED DISK SPACE IS CARVED OUT OF A POOL OF 00111000
  111. * AVAILABLE CYLINDERS BY CP. THE USER HAS A VIRTUAL 00112000
  112. * MACHINE DIRECTORY ENTRY WHICH SPECIFIES A TEMP DISK 00113000
  113. * AT ADDRESS 192 IS TO BE NN CYLINDERS. AT LOGON TIME, 00114000
  114. * CP PRESENTS TO CMS A DISK SPACE AT 192 OF NN 00115000
  115. * CYLINDERS WITH RELATIVE TRACK 00 00 ZEROED OUT. 00116000
  116. * THEREFORE, AFTER USING A DYNAMICALLY CREATED DISK 00117000
  117. * SPACE (HEREAFTER TO BE REFERRED TO AS THE DY- DISK) AND 00118000
  118. * LOGOUT FROM CP, THE INFORMATION THAT WAS PLACED ON 00119000
  119. * THAT DISK IS LOST. ALTHOUGH, DURING A TERMINAL 00120000
  120. * SESSION, THE DISK AND INFORMATION THEREUPON IS KEPT 00121000
  121. * ALIVE ACROSS THE RE-IPLING OF THE CMS NUCLEUS. 00122000
  122. * 00123000
  123. * 1. TO GUARD AGAINST ACCIDENTAL OR INCORRECT CALL OF 00124000
  124. * DMSFOR, WHICH CAN CAUSE THE ERADICATION OF 00125000
  125. * ALL FILES ON A DISK, A MESSAGE IS TYPED ON THE 00126000
  126. * USER'S TERMINAL BEFORE ANY TABLES ARE CLEARED OR 00127000
  127. * ANYTHING IS WRITTEN ON TO DISK. THIS MESSAGE 00128000
  128. * (WITH DISK-MODE AND DEVICE-ADDRESS FILLED IN TO 00129000
  129. * THEIR CORRECT VALUES) REQUIRES A REPLY OF 'YES' 00130000
  130. * OR 'NO' BEFORE THE PROGRAM WILL RESUME. 00131000
  131. * 00132000
  132. * THE USER MUST TYPE IN YES FOR FORMATTING TO BE 00133000
  133. * UNDERTAKEN. ANY OTHER INPUT AT ALL FROM THE 00134000
  134. * TERMINAL WILL RESULT IN AN ERROR-CODE 11 BEING 00135000
  135. * RETURNED, NOTHING AT ALL IN THE NUCON OR ACTIVE 00136000
  136. * DISK TABLE BEING AFFECTED, AND A MESSAGE 00137000
  137. * INDICATING THAT FORMAT WILL NOT BE EXECUTED 00138000
  138. * IS TYPED AT THE VIRTUAL CONSOLE. 00139000
  139. * 00140000
  140. * FOR THE DY-DISK, DURING CMS INITIALIZATION 00141000
  141. * THIS ENTIRE STEP IS OMITTED; FORMATTING 00142000
  142. * PROCEEDS WITH NO MESSAGE TO THE TERMINAL OR 00143000
  143. * FURTHER INPUT FROM THE USER. 00144000
  144. * 00145000
  145. * 2. DMSCRD IS THEN CALLED TO OBTAIN THE LABEL TYPED 00146000
  146. * BY THE USER IN RESPONCE TO THE LABEL REQUEST 00147000
  147. * MESSAGE THAT IS PART OF THE FORMAT PROCEDURE. 00148000
  148. * 00149000
  149. * THE TYPED-IN LABEL (BLANK-FILLED IF LESS THAN 00150000
  150. * SIX BYTES, TRUNCATED IF MORE) IS WRITTEN ON THE 00151000
  151. * FIRST TEN BYTES OF RECORD 3 WHEN THE FORMATTING 00152000
  152. * IS DONE. 00153000
  153. * (FOR EXAMPLE, IF THE USER TYPED IN MYDISK, THE 00154000
  154. * LABEL WOULD BE: VOL1MYDISK). FOR THE DY-DISK, NO 00155000
  155. * MESSAGE IS GIVEN, NO USER REPLY, AND A LABEL OF 00156000
  156. * VOL1DYDISK IS ALWAYS USED. 00157000
  157. * 00158000
  158. * 3. AT THIS POINT, DMSALU IS CALLED TO RELEASE AND 00159000
  159. * CLEAR ALL APPROPRIATE 00160000
  160. * RESIDENT TABLES FOR THIS DISK, AND THE R/O AND 00161000
  161. * R/W FLAG-BITS IN THE ADTFLG1 FLAG-BYTE IN THE 00162000
  162. * ACTIVE DISK TABLE ARE CLEARED. 00163000
  163. * 00164000
  164. * 4. JUST BEFORE FORMATTING STARTS, A MESSAGE IS TYPED, 00165000
  165. * OF THE FOLLOWING FORM: 00166000
  166. * 00167000
  167. * FORMATTING CCU DISK'MODE' (2314|3330). 00168000
  168. * 00169000
  169. * THIS MESSAGE CONFIRMS TO THE USER THAT THE 00170000
  170. * FORMAT PROGRAM IS FORMATTING THE DESIRED DISK, 00171000
  171. * AND INDICATES THE DISK TYPE. 00172000
  172. * 00173000
  173. * FORMATTING OF THE DISK THEN COMMENCES. A 3330 00174000
  174. * IS FORMATTED BY WRITING 14 800-BYTE RECORDS PER 00175000
  175. * HEAD, 19 HEADS PER CYLINDER. A 3340 IS FORMATTED 00176000
  176. * BY WRITING 8 800-BYTE RECORDS PER HEAD, 12 HEADS 00177000
  177. * PER CYLINDER. A 3350 IS FORMATED BY WRITING 19 00178000
  178. * 800-BYTE RECORDS PER HEAD, 30 HEADS PER CYLINDER. 00179000
  179. * A 3380 IS FORMATTED WITH 36 800-BYTE RECORDS PER HRC004DS 00179300
  180. * HEAD AND 15 HEADS PER CYLINDER. HRC004DS 00179600
  181. * A 2314 OR 2319 IS FORMATTED WITH 00180000
  182. * 15 800-BYTE RECORDS PER TWO HEADS, FOR TEN PAIRS 00181000
  183. * OF HEADS PER CYLINDER. THE DATA WRITTEN (EXCEPT 00182000
  184. * FOR THE LABEL) CONSISTS OF BINARY ZEROES. A 00183000
  185. * READ-AFTER-WRITE CHECK IS INCLUDED IN THE CCW 00184000
  186. * CHAIN FOR THE DISK, WHERE THE DATA WRITTEN ON 00185000
  187. * THE DISK IS IMMEDIATELY READ (IN NON-TRANSMIT 00186000
  188. * MODE) TO CHECK THAT THE FORMATTING WAS 00187000
  189. * SUCCESSFUL. FOR PURPOSE OF SPEED, THE 00188000
  190. * READ-AFTER-WRITE CHECK IS NOT PERFORMED ON THE 00189000
  191. * DY-DISK, AS THE DY-DISK MAY BE FORMATTED ONCE 00190000
  192. * FOR EACH TERMINAL SESSION, WHILE THE OTHER DISKS 00191000
  193. * ARE USUALLY FORMATTED ONLY ONCE IN A GREAT 00192000
  194. * WHILE. 00193000
  195. * 00194000
  196. * IF ERRORS DO OCCUR, REPEATED EFFORTS TO RECOVER 00195000
  197. * ARE MADE BY CP AND IF AN ERROR RETURN FROM THE 00196000
  198. * CP DIAGNOSE IS RECEIVED, THE ERROR IS CONSIDERED 00197000
  199. * TO BE PERMANENT. A MESSAGE INDICTING THE POINT 00198000
  200. * AT WHICH FORMATTING WAS TRUNCATED AND AN 00199000
  201. * ANNOUNCEMENT OF THE ERROR CONDITION IS MADE TO 00200000
  202. * USER THAT HE MIGHT TAKE THE APPROPRIATE ACTION. 00201000
  203. * 00202000
  204. * 5. FORMATTING OF THE DISK CONCLUDES WHEN THE END OF 00203000
  205. * DISK IS REACH (DETERMINED BY A UNIT CHECK 00204000
  206. * COUPLED WITH A SENSE BYTE OF X'81'), OR IF A 00205000
  207. * SPECIFIED LIMIT BY THE USER IS REACHED (FOR 00206000
  208. * EXAMPLE, 50 CYLINDERS FOR FORMAT A 50), OR IF A 00207000
  209. * PERMANENT ERROR OCCURS, WHICHEVER HAPPENS FIRST. 00208000
  210. * 00209000
  211. * IF THE NUMBER OF CYLINDERS FORMATTED IS ZERO, 00210000
  212. * THEN DMSFOR EXITS WITH AN ERROR 00211000
  213. * MESSAGE, AND NO FURTHER ACTION IS TAKEN. 00212000
  214. * 00213000
  215. * 6. IF AT LEAST ONE CYLINDER WAS SUCCESSFULLY 00214000
  216. * FORMATTED, THEN DMSFOR CONCLUDES AS 00215000
  217. * FOLLOWS: 00216000
  218. * 00217000
  219. * A. STORES THE NUMBER OF CYLINDERS ADTCYL IN THE 00218000
  220. * ACTIVE DISK TABLE. 00219000
  221. * 00220000
  222. * B. TYPES A MESSAGE INDICATING HOW MANY CYLINDERS 00221000
  223. * WERE FORMATTED. 00222000
  224. * 00223000
  225. * C. STORES THE DEVICE DEPENDANT UNIT-TYPE-BYTE 00224000
  226. * IN THE APPROPRIATE SLOT IN THE NUCON TABLE. 00225000
  227. * 00226000
  228. * D. OBTAINS A 816-BYTE BLOCK FROM FREE STORAGE, 00227000
  229. * IF NECESSARY, FOR THE FIRST FST HYPERBLOCK, 00228000
  230. * CLEARS IT, AND PLACES ITS ADDRESS IN THE 00229000
  231. * ACTIVE DISK TABLE. 00230000
  232. * 00231000
  233. * E. OBTAINS A 200-BYTE BLOCK FROM FREE STORAGE, 00232000
  234. * IF NECESSARY, FOR THE QQMSK TABLE, CLEARS 00233000
  235. * IT, AND PLACES ITS ADDRESS IN THE ADT 00234000
  236. * TABLE. 00235000
  237. * 00236000
  238. * F. OBTAINS FREE STORAGE FOR THE QMSK BIT-MASK 00237000
  239. * TABLE, THE SIZE DEPENDING ON THE NUMBER OF 00238000
  240. * CYLINDERS, SETS THE FIRST WORD TO ITS 00239000
  241. * DEFAULT VALUE OF X'F00000000', CLEARS THE 00240000
  242. * REMAINDER OF THE TABLE, AND PLACES ITS 00241000
  243. * ADDRESS IN THE ADT TABLE. 00242000
  244. * 00243000
  245. * G. INITIALIZES ALL OTHER COUNTS IN THE ADT TABLE 00244000
  246. * AS NEEDED (ADTNUM, ETC.), AND FLAGS THE 00245000
  247. * DISK AS LOGGED IN AND READ-WRITE. 00246000
  248. * 00247000
  249. * H. CALLS DMSAUD TO WRITE THE FINISHED FILE 00248000
  250. * DIRECTORY ON DISK. 00249000
  251. * 00250000
  252. * 7. FINALLY, DMSFOR RETURNS TO THE CALLER WITH THE 00251000
  253. * APPROPRIATE ERROR-CODE IN R15. 00252000
  254. * WAS SUCCESSFUL) IN R15. 00253000
  255. * 00254000
  256. * CORRECT VALUE OF ADTNUM. THE ACTUAL BITS IN THE 00255000
  257. * QMSK BIT-MASK ARE THEN COUNTED 00256000
  258. * 00257000
  259. * RECOMPUTING FORMAT (FORMAT CUU MODE <NN> (R)) 00258000
  260. * 00259000
  261. * RECOMPUTING FORMAT (WITH NO CYLINDER AMOUNT 00260000
  262. * SPECIFIED), IS USED TO ASCERTAIN THE NUMBER OF 00261000
  263. * CYLINDERS AND RECOMPUTE THE DISK COUNTS, BUT ALSO HAS 00262000
  264. * THE CAPABILITY OF REVISING THE DISK COUNT UPWARD IF 00263000
  265. * ADTNUM IS GREATER THAN IT WAS PREVIOUSLY. 00264000
  266. * 00265000
  267. * FORMAT MODE RECOMP NN (WHERE NN IS A DECIMAL NUMBER 00266000
  268. * OF CYLINDERS DESIRED) WORKS LIKE RECOMP WITH NO 00267000
  269. * OPTIONS, EXCEPT THAT THE NUMBER OF CYLINDERS IS 00268000
  270. * LIMITED TO THE 'NN' GIVEN BY THE USER. 00269000
  271. * 00270000
  272. * THE ACTION TAKEN FOR FORMAT RECOMP (WITH OR WITHOUT 00271000
  273. * OPTIONS) IS AS FOLLOWS: 00272000
  274. * 00273000
  275. * 1. DMSLAD IS CALLED AND THE DISK CHECKED TO MAKE SURE 00274000
  276. * IT IS ACCESSED IN READ/WRITE MODE. 00275000
  277. * IN AND IN READ-WRITE FORM. 00276000
  278. * 00277000
  279. * 2. SUCCESSIVE SEEKS TO THE DISK ARE PERFORMED TO 00278000
  280. * DETERMINE THE ACTUAL NUMBER OF CYLINDERS ON THE 00279000
  281. * DISK. 00280000
  282. * 00281000
  283. * 3. THE NUMBER OF RECORDS ON DISK ADTNUM IS COMPUTED 00282000
  284. * FROM THE ACTUAL NUMBER OF CYLINDERS, IF NO 00283000
  285. * OPTIONS WERE GIVEN. IF "NN" WAS SPECIFIED, THE 00284000
  286. * "NN" COUNT OR THE ACTUAL NUMBER OF CYLINDERS IS 00285000
  287. * USED, WHICHEVER IS LESS. THE REVISED DISK COUNTS 00286000
  288. * ARE THEN COMPUTED. THE ACTUAL BITS IN THE QMSK 00287000
  289. * BIT-MASK ARE THEN COUNTED TO COMPUTE THE VALUE 00288000
  290. * OF ADTUSED (NUMBER OF RECORDS IN USE), ADTLEFT 00289000
  291. * (NUMBER LEFT), AND ADTLAST. ADTLAST IS CLEARED, 00290000
  292. * AND THE NUMBER OF CYLINDERS ADTCYL IS STORED. 00291000
  293. * "ADTLAST" (PLUS A SAFETY FACTOR IN THE ADTRES 00292000
  294. * RESERVE COUNT) IS LESS THAN THE OLD ADTLAST, A 00293000
  295. * LOSS OF DATA WOULD RESULT; IN THIS CASE, A 00294000
  296. * WARNING MESSAGE IS GIVEN TO THE USER, THE OLD 00295000
  297. * DISK COUNTS ARE LEFT INTACT, AND ERROR 13 IS 00296000
  298. * RETURNED TO THE CALLER. IF THE NEW ADTNUM IS 00297000
  299. * THE SAME AS THE OLD, FORMATTING TERMINATES 00298000
  300. * AFTER A CALL TO DMSAUD AND DMSQRY. 00299000
  301. * 00300000
  302. * DMSAUD IS THEN CALLED TO ENSURE THAT THE 00301000
  303. * RECOMPUTED COUNTS ARE STORED ON DISK. 00302000
  304. * FINALLY, DMSQRY IS CALLED TO DISPLAY THE DISK 00303000
  305. * COUNTS TO THE USER. 00304000
  306. * 4. IF THE TOTAL NUMBER OF RECORDS INDICATED IN ADTNUM 00305000
  307. * FOR THE DISK TO BE RECOMPUTED IS NOT THE SAME AS 00306000
  308. * PREVIOUSLY (AND NO DATA-LOSS WILL OCCUR), RECOMP 00307000
  309. * OBTAINS A NEW QMSK BIK-MASK CORRESPONDS TO THE 00308000
  310. * NEW DISK COUNTS, MOVES THE OLD QMSK BIT-MASK 00309000
  311. * THERETO, TRUNCATING OR ZERO FILLING AS 00310000
  312. * APPROPRIATE, AND GIVES BACK THE OLD BIT-MASK TO 00311000
  313. * FREE STORAGE. THEN ALL NEW COUNTS ARE STORED IN 00312000
  314. * THE ACTIVE DISK TABLE 00313000
  315. * (INCLUDING THE REVISED ADTCYL CYLINDER COUNT), 00314000
  316. * DMSAUD IS CALLED, AND FINALLY DMSQRY. 00315000
  317. * 00316000
  318. * RECOMP MAKES IT POSSIBLE TO REVISE DISKS WHENEVER 00317000
  319. * FEASIBLE, TO LARGER OR SMALLER SIZES, WITHOUT THE 00318000
  320. * NECESSITY OF DUMPING FILES OUT ON TAPE, FORMATTING 00319000
  321. * THE DISK, AND LOADING THEM BACK IN AGAIN. THE ONLY 00320000
  322. * REQUIREMENT, OTHER THAN THOSE DISCUSSED ABOVE, IS 00321000
  323. * THAT WHEN A DISK IS ENLARGED VIA RECOMP IT WAS 00322000
  324. * PREVIOUSLY FORMATTED AT SOME TIME TO ITS FULL SIZE. 00323000
  325. * 00324000
  326. * CMS DISK-LABEL 00325000
  327. * 00326000
  328. * RECORD 3 (CYLINDER 0, HEAD 0, RECORD 3) OF A CMS DISK 00327000
  329. * INCLUDES A TEN-BYTE LABEL, CONSISTING OF THE 00328000
  330. * FOLLOWING: 00329000
  331. * 00330000
  332. * 1. FOUR CHARACTERS: VOLI 00331000
  333. * 00332000
  334. * 2. SIX CHARACTERS: DESIRED LABEL 00333000
  335. * (BLANK-FILLED IF LESS THAN 6; 00334000
  336. * TRUNCATED IF MORE THAN 6 CHARACTERS) 00335000
  337. * 00336000
  338. * 3. REMAINING 790 BYTES OF RECORD=00 (BINARY ZEROES) 00337000
  339. * 00338000
  340. * OPTION TO WRITE A LABEL ON DISK 00339000
  341. * 00340000
  342. * AS MENTIONED EARLIER, THE OPTION TO FORMAT A 00341000
  343. * CMS DISK CAUSES THE DISK TO BE FORMATTED INCLUDING A 00342000
  344. * LABEL ON RECORD 3. 00343000
  345. * 00344000
  346. * A LABEL CAN ALSO BE ENTERED ON A DISK THAT HAS BEEN 00345000
  347. * FORMATTED PREVIOUSLY TO CHANGE AN EXISTING LABEL 00346000
  348. * WITHOUT AFFECTING ANY OTHER INFORMATION ON DISK. 00347000
  349. * 00348000
  350. * LABEL FORMAT (FORMAT CCU MODE (LABEL)) 00349000
  351. * 00350000
  352. * THE LOGIC PERFORMED FOR A LABEL-ONLY FORMAT IS AS 00351000
  353. * FOLLOWS: 00352000
  354. * 00353000
  355. * 1. DMSLAD IS CALLED TO MAKE SURE A DISK EXISTS FOR 00354000
  356. * THE PLIST SPECIFICATION. (OTHER VERIFICATION IS 00355000
  357. * ACCOMPLISHED AS PART OF THE GENERAL INITIALIZING 00356000
  358. * PROCESS.) THE DISK MUST, OF COURSE, BE 00357000
  359. * ATTACHED, READY, AND BE A READ-WRITE DISK, FOR 00358000
  360. * THE COMMAND TO SUCCEED. 00359000
  361. * 00360000
  362. * 2. DMSDIOR IS CALLED TO READ THE OLD LABEL FROM DISK 00361000
  363. * INTO AN 800-BYTE I/O BUFFER. (IF DMSDIOR SHOULD 00362000
  364. * FAIL, A DESCRIPTIVE ERROR MESSAGE IS GIVEN.) 00363000
  365. * 00364000
  366. * 3. A MESSAGE IS TYPED ON THE USER TERMINAL ASKING FOR 00365000
  367. * A 6-BYTE LABEL TO BE ENTERED. 00366000
  368. * 00367000
  369. * 4. DMSCRD IS CALLED TO OBTAIN THE LABEL TYPED IN BY 00368000
  370. * THE USER. 00369000
  371. * 00370000
  372. * 5. VOLI (FOUR BYTES) AND THE FIRST SIX BYTES OF THE 00371000
  373. * ENTERED LABEL 00372000
  374. * (BLANK-FILLED, IF LESS THAN 6 WERE INPUTTED) ARE 00373000
  375. * MOVED TO THE FIRST TEN BYTES OF THE 800-BYTE I/O 00374000
  376. * BUFFER. 00375000
  377. * 00376000
  378. * 6. DMSDIOW IS THEN CALLED TO WRITE THE NEW LABEL BACK 00377000
  379. * ON THE DISK. (IF DMSDIOW SHOULD FAIL, A 00378000
  380. * DESCRIPTIVE ERROR MESSAGE IS GIVEN, AND THE 00379000
  381. * ERROR-CODE FROM DMSDIOW IS RETURNED TO THE 00380000
  382. * CALLER. 00381000
  383. * 00382000
  384. * SUMMARY OF DIFFERENCES IN FORMATTING A DYNAMIC-DISK 00383000
  385. * 00384000
  386. * AS MENTIONED ABOVE, THERE ARE SEVERAL DIFFERENCES IN 00385000
  387. * THE WAY A DY-DISK IS FORMATTED FROM THE PROCEDURE 00386000
  388. * USED FOR OTHER READ-WRITE DISK. THESE ARE SUMMARIZED 00387000
  389. * AS FOLLOWS: 00388000
  390. * 00389000
  391. * 1. A LABEL OF VOL1DYDISK IS AUTOMATICALLY WRITTEN ON 00390000
  392. * RECORD 3. (SEE NOTE BELOW) 00391000
  393. * 00392000
  394. * 2. THE READ-AFTER-WRITE CHECK IN THE CCW CHAIN TO 00393000
  395. * FORMAT THE DISK IS OMITTED, IN THE INTERESTS OF 00394000
  396. * MAKING THE FORMATTING OF A TEMPORARY DISK AS 00395000
  397. * FAST AS POSSIBLE. 00396000
  398. * 00397000
  399. * 3. THE REQUIREMENT FOR THE USER TO TYPE IN YES BEFORE 00398000
  400. * FORMATTING BEGINS IS WAIVED. 00399000
  401. * 00400000
  402. * 4. NO INFORMATION MESSAGES ARE TYPED DURING 00401000
  403. * CMS INITIALIZATION. 00402000
  404. * APPROPRIATE) IS OMITTED (AS WELL AS THE NORMAL 00403000
  405. * FORMATTING MESSAGES) IF THE (NOTYPE) PARAMETER 00404000
  406. * WAS GIVEN. 00405000
  407. * 00406000
  408. * NOTE: IF DESIRED TO CHANGE THE LABEL ON A DY-DISK 00407000
  409. * AFTER IT HAS BEEN FORMATTED, THE COMMAND 00408000
  410. * 00409000
  411. * FORMAT 192 D (LABEL) 00410000
  412. * 00411000
  413. * CAN BE ISSUED, AND THE REPLACEMENT LABEL WRITTEN. 00412000
  414. * 00413000
  415. *. 00414000
  416. EJECT 00415000
  417. DMSFOR START X'20000' (DISK-RESIDENT) 00416000
  418. SPACE 00417000
  419. USING NUCON,R0 00418000
  420. USING ADTSECT,R13 00419000
  421. EXTRN RELUFD 00420000
  422. SPACE 00421000
  423. BALR R11,0 ESTABLISH ADDRESSABILITY 00422000
  424. USING *,R11 00423000
  425. LA R12,4094(,R11) SET UP ANOTHER BASE REGISTER 00424000
  426. BCTR R11,0 DECREMENT IT FOR BETTER 00425000
  427. BCTR R11,0 ... READABILITY 00426000
  428. USING DMSFOR,R11 00427000
  429. USING DMSFOR+4096,R12 00428000
  430. LR R6,R1 PRESERVE POINTER TO P-LIST @VA03452 00429000
  431. SR R15,R15 CLEAR R15 , @VA03452 00430000
  432. STM R14,R15,SAVE14 SAVE RETURN-REG & ERRCODE = 0 @VA03452 00431000
  433. ST R15,LIMCYL CLEAR LIMCYL (UNTIL FILLED IN) @VA03452 00432000
  434. ST R15,FLAG CLEAR VARIOUS FLAGS @VA03452 00433000
  435. * 00434000
  436. * SET CCWS WHICH CAN BE MODIFIED TO THEIR INITIAL (DEFAULT) VALUES: 00435000
  437. MVC TIC3330(8),JTIC3330 @VA03452 00436000
  438. MVC NOSPEC(8),JNOSPEC @VA03452 00437000
  439. MVC TICR8(8),JTICR8 @VA03452 00438000
  440. MVC TIC30(8),JTIC30 @VA03452 00439000
  441. MVC CHECKIT(8),JCHECKIT @VA03452 00440000
  442. MVI SSECT,X'23' SET-SECTOR OP-CODE IS ENOUGH @VA03452 00441000
  443. MVC OTHERS(8),JOTHERS @VA03452 00442000
  444. MVC END3330(8),JEND3330 @VA03452 00443000
  445. MVC CCWWR16(8),JCCWWR16 ... @V304498 00444000
  446. MVC CCWRD16(8),JCCWRD16 ... @V304498 00445000
  447. * 00446000
  448. SSM OK81 ALLOW ONLY CHANNEL 0 & EXT INTS @VA03452 00447000
  449. DMSKEY NUCLEUS BUT WE NEED SYSTEM PRIVILEGES. @VA03452 00448000
  450. LM R7,R10,ADDRS PICK UP INITIAL VECTORS 00449000
  451. CLI 8(R1),X'FE' SPECIAL INITIALIZATION ENTRY? 00450000
  452. BNE SCANNER NO 00451000
  453. LA R1,LETTERD-24 POINT TO MODE LETTER 00452000
  454. L R15,VCADTLKP GET THE ADDRESS OF ADTLKP @VM03093 00453000
  455. BALR R14,R15 GO THERE 00454000
  456. LR R13,R1 PUT A(ADT) INTO PROPER REGISTER 00455000
  457. ST R1,ADTADDR GET DEVICE TABLE ADDRESS 00456000
  458. L R1,ADTDTA GET THE DEVICE TABLE ADDRESS 00457000
  459. LH R1,DTAD(,R1) GET THE DEVICE ADDRESS 00458000
  460. STH R1,DEVADDR SALT IT AWAY FOR LATER 00459000
  461. MVC INBUF(6),DUMTDISK MOVE IN THE DEFAULT LABEL 00460000
  462. OI FLAG,TDK+LAB SIGNAL THAT WE CAME THIS WAY 00461000
  463. B START GET COMMON 00462000
  464. SCANNER LA R1,8(,R1) POINT TO NEXT ARGUMENT IN PLIST 00463000
  465. CLI 0(R1),X'FF' IS IT A FENCE? 00464000
  466. BCR 8,R7 IF NOT, KEEP ON. 00465000
  467. CLI 0(R1),C'(' IS IT THE START OF THE OPTIONS? 00466000
  468. BCR 8,R8 IF SO, GO PROCESS. 00467000
  469. BR R9 GO SOMEWHERE. 00468000
  470. SPACE 00469000
  471. SCANUNIT LA R9,SCANMODE SET NEXT SCAN ADDRESS 00470000
  472. LA R7,ERR3 PICK A CONVENIENT ERROR MESSAGE 00471000
  473. LR R3,R1 SAVE THE PLIST POINTER 00472000
  474. CLI 3(R3),C' ' MORE THAN 3 DIGITS SPECIFIED? 00473000
  475. BNE ERR2 ERROR IF SO. 00474000
  476. SR R4,R4 EMPTY A WORK REGISTER. 00475000
  477. SR R5,R5 AND ANOTHER. 00476000
  478. B CKBYTE NOW CONVERT ADDRESS TO BINARY 00477000
  479. TESTIT CLI 0(R3),C'A' COMPARE WITH 'A' 00478000
  480. BL ERR2 ERROR IF LESS 00479000
  481. CLI 0(R3),C'F' COMPARE WITH 'F' 00480000
  482. BH ERR2 HIGHER IS ERROR 00481000
  483. IC R5,0(,R3) SAVE IT 00482000
  484. SH R5,=XL2'00B7' REDUCE IT 00483000
  485. R5OK SLL R4,4 MOVE OVER ANY PREVIOUS DIGITS 00484000
  486. OR R4,R5 APPEND THE NEW 00485000
  487. LA R3,1(,R3) POINT TO THE NEXT CHARACTER 00486000
  488. CKBYTE CLI 0(R3),C'0' IS IT NUMERIC 00487000
  489. BL TESTA NO. CHECK ALPHABETIC 00488000
  490. IC R5,0(,R3) PUT IT INTO A REGISTER 00489000
  491. SH R5,=XL2'00F0' TURN OFF THE FIRST 4 BITS 00490000
  492. CLI 0(R3),C'9' HIGHER THAN 9? 00491000
  493. BNH R5OK NO. CONTINUE 00492000
  494. B ERR2 ERROR IF IT IS 00493000
  495. TESTA CLI 0(R3),C' ' IS IT A BLANK? 00494000
  496. BNE TESTIT IF SO, WE'RE DONE 00495000
  497. C R4,MAXPOSS > X'FFF'? @VA04296 00496000
  498. BH ERR2 ERROR IF SO 00497000
  499. LTR R4,R4 =X'000'? @VA01991 00498000
  500. BZ ERR2 ERROR IF SO @VA01991 00499000
  501. STH R4,DEVADDR SAVE CONSTRUCTED DEVADDR 00500000
  502. BR R10 CONTINUE 00501000
  503. SPACE 00502000
  504. SCANMODE LA R9,SCANCYL POINT TO NEXT SCAN ROUTINE 00503000
  505. CLI 1(R1),C' ' MORE THAN 1 CHARACTER? 00504000
  506. BNER R7 ERROR HRC004DS 00505490
  507. CLI 0(R1),C'A' < C'A'? 00506000
  508. BLR R7 ERROR HRC004DS 00507290
  509. CLI 0(R1),C'I' IS IT IN THE A-I RANGE? HRC004DS 00507580
  510. BNH MODEOK HRC004DS 00507870
  511. CLI 0(R1),C'J' < C'J'? HRC004DS 00508160
  512. BLR R7 ERROR HRC004DS 00508450
  513. CLI 0(R1),C'R' IS IT IN THE J-R RANGE? HRC004DS 00508740
  514. BNH MODEOK HRC004DS 00509030
  515. CLI 0(R1),C'S' NOT > 'S' ? HRC004DS 00509320
  516. BNHR R7 ERROR HRC004DS 00509610
  517. CLI 0(R1),C'Z' IS IT IN THE T-Z RANGE? HRC004DS 00509900
  518. BHR R7 NO - ERROR HRC004DS 00510190
  519. MODEOK EQU * HRC004DS 00510480
  520. LR R3,R1 SAVE PLIST POINTER 00512000
  521. SH R1,=H'24' SET UP ADTLKP PLIST 00513000
  522. L R15,VCADTLKP GET ADDRESS OF ADTLKP @VM03093 00514000
  523. BALR R14,R15 GO THERE 00515000
  524. LR R13,R1 SAVE A(ADT) 00516000
  525. LR R1,R3 RESTORE CMNDLINE POINTER 00517000
  526. BCR 7,R7 ERROR IF NOT FOUND 00518000
  527. ST R1,ADTADDR SAVE ADT ADDRESS 00519000
  528. LA R7,START INDICATE ALTERNATE PROCESS PATH 00520000
  529. BR R10 CONTINUE 00521000
  530. SPACE 00522000
  531. SCANCYL LA R9,ERR4 LOAD ERROR VECTOR 00523000
  532. CLI 0(R1),C'0' < 0? 00524000
  533. BCR 4,R9 ERROR 00525000
  534. CLI 0(R1),C'9' > 9? 00526000
  535. BCR 2,R9 ERROR 00527000
  536. SR R2,R2 EMPTY A REGISTER 00528000
  537. SR R3,R3 AND ANOTHER 00529000
  538. LR R4,R1 SAVE PLIST POINTER 00530000
  539. LA R15,8 SET MAXIMUM ARGUMENT LENGTH 00531000
  540. NUMLOOP CLI 0(R4),C' ' CHECK FOR BLANK 00532000
  541. BE NUMDONE DONE IF THIS IS ONE 00533000
  542. IC R3,0(,R4) PICK UP CHARACTER 00534000
  543. SH R3,=XL2'00F0' MAKE IT BINARY 00535000
  544. BCR 4,R9 ERROR IF NOT NUMERIC 00536000
  545. MH R2,TEN ADJUST 00537000
  546. AR R2,R3 SAVE IT AWAY 00538000
  547. LA R4,1(,R4) POINT TO THE NEXT POSITION 00539000
  548. BCT R15,NUMLOOP DECREMENT THE ARGUMENT LENGTH 00540000
  549. NUMDONE LTR R2,R2 CHECK THE SAVED PORTION 00541000
  550. BCR 13,R9 POSITIVE REQUIREMENT 00542000
  551. ST R2,LIMCYL SAVE THIS FINAL RESULT 00543000
  552. BR R10 CONTINUE 00544000
  553. SPACE 00545000
  554. SCANOPT LR R5,R6 GET ORIGINAL PLIST POINTER 00546000
  555. LA R5,8(,R5) UP IT BY ONE PARAMETER POSITION 00547000
  556. CR R1,R5 SHOULD BE FURTHER THAN THIS 00548000
  557. BE ERR1 ERROR IF WE'RE NOT 00549000
  558. LA R5,8(,R5) UP IT BY ANOTHER PARAMETER POSITION 00550000
  559. CR R1,R5 SHOULD ALSO BE FURTHER THAN THIS 00551000
  560. BE ERR3 ERROR IF WE'RE NOT YET 00552000
  561. CLI 8(R1),X'FF' WAS THIS A NAKED PARENTHESIS 00553000
  562. BE ERR4 ALSO AN ERROR 00554000
  563. LA R6,7 LOAD COUNT 00555000
  564. LA R1,8(,R1) POINT TO THE NEXT ARGUMENT 00556000
  565. LA R4,OPTIONS-8 POINT TO START OF OPTION TABLE 00557000
  566. LA R5,NUMOPTS GET THE TOTAL OF ACCEPTABLE OPTIONS 00558000
  567. LR R2,R1 PROPAGATE ARGUMENT POINTER 00559000
  568. CKBLANK LA R2,1(,R2) POINT TO THE NEXT POSITION 00560000
  569. CLI 0(R2),C' ' CHECK FOR BLANK 00561000
  570. BE GOTLN NOW WE HAVE THE LENGTH 00562000
  571. BCT R6,CKBLANK DECREMENT MAXIMUM COUNT 00563000
  572. GOTLN SR R2,R1 START-CURRENT=LENGTH 00564000
  573. BCTR R2,0 LESS 1 FOR EXECUTE 00565000
  574. CKNXT LA R4,8(,R4) POINT TO OPTION LIST 00566000
  575. EX R2,CKMATCH COMPARE 00567000
  576. BE OPTFND PROCESS IF EQUAL 00568000
  577. BCT R5,CKNXT ELSE CONTINUE 00569000
  578. B ERR5 UNLESS WE RUN OUT OF OPTIONS 00570000
  579. SPACE 00571000
  580. CKMATCH CLC 0(*-*,R4),0(R1) 00572000
  581. SPACE 00573000
  582. OPTFND MVC OPTFLAG(1),0(R1) MOVE IN THE OPTION INDICATOR 00574000
  583. LA R1,8(,R1) POINT TO THE NEXT ARGUMENT 00575000
  584. CLI 0(R1),X'FF' IS THIS THE END 00576000
  585. BCR 8,R7 DONE IF SO 00577000
  586. CLI 0(R1),C')' OR ARE THE PARENTHESES BALANCED 00578000
  587. BNE ERR5 BAD IF ANYTHING ELSE 00579000
  588. LA R1,8(,R1) POINT BEYOND THE RIGHT PARENTHESIS 00580000
  589. CLI 0(R1),X'FF' IS THIS FINALLY THE END 00581000
  590. BNE ERR4 HAS TO BE, OTHERWISE ERROR 00582000
  591. BR R7 CONTINUE 00583000
  592. SPACE 00584000
  593. START LH R2,DEVADDR GET THE CONSTRUCTED DEVICE ADDRESS 00585000
  594. DC X'83230024' ASK CP ABOUT IT 00586000
  595. BC 1,ERR6 ERROR IF NOT ATTACHED 00587000
  596. CLM R3,B'1000',MDASD IS IT AT LEAST DASD 00588000
  597. BNE ERR7 MUST BE 00589000
  598. CLM R3,B'0001',MWR IS IT R/W? V0149 00590000
  599. BNL ERR12 ERROR IF NOT V0149 00591000
  600. LA R4,MASKS POINT TO DASD MASKS FOR CP INFO 00592000
  601. LA R5,NUMDEVS PICK UP COUNT OF SUPPORTED DASD 00593000
  602. CKDEV CLM R3,B'0100',0(R4) CHECK WHAT WE GOT BACK 00594000
  603. BE DEVFND CONTINUE IF MATCH 00595000
  604. LA R4,1(,R4) POINT TO THE NEXT MASK 00596000
  605. BCT R5,CKDEV TRY AGAIN 00597000
  606. B ERR7 UNLESS WE RUN OUT 00598000
  607. DEVFND LH DISK,DEVADDR GET THE DEVIC ADDRESS 00599000
  608. IC R4,NUMDEVS(,R4) PICK UP THE DEVICE TYPE BYTE 00600000
  609. STC R4,DEVADDR+3 PUT IT INTO THE DEVICE TABLE 00601000
  610. SR R15,R15 WAS THERE A CYLINDER SPEC. ? @VA03452 00602000
  611. C R15,LIMCYL ??? @VA03452 00603000
  612. BNE CKFLAG YES - BE CAREFUL. @VA03452 00604000
  613. CLI DEVADDR+3,T3350 3350 ? @V304498 00605000
  614. BNE NOT3350 NO..BR @V304498 00606000
  615. MVC LIMCYL+2(2),MAX3350 MAX 115 FOR 3350 @V304498 00607000
  616. B CKFLAG CONTINUE @V304498 00608000
  617. NOT3350 EQU * HRC004DS 00609090
  618. CLI DEVADDR+3,T3380 3380 ? HRC004DS 00609180
  619. BNE NOT3380 NO..BR HRC004DS 00609270
  620. MVC LIMCYL+2(2),MAX3380 MAX 121 FOR 3380 HRC004DS 00609360
  621. B CKFLAG CONTINUE HRC004DS 00609450
  622. NOT3380 EQU * HRC004DS 00609540
  623. CLI DEVADDR+3,X'09' ELSE, WAS THIS A 3330 00610000
  624. BNE NOT3330 IF NOT TAKE THE STANDARD CYL COUNT 00611000
  625. MVI LIMCYL+3,X'F6' MOVE IN THE LARGER COUNT 00612000
  626. B CKFLAG CONTINUE 00613000
  627. NOT3330 CLI DEVADDR+3,T3340 3340 ? @V2A2014 00614000
  628. BNE SETMIN NO..BR @V2A2014 00615000
  629. MVC LIMCYL+2(2),MAX3340 MAX 682 FOR 3340 @V2A2014 00616000
  630. B CKFLAG CONTINUE @V2A2014 00617000
  631. SETMIN MVI LIMCYL+3,203 SET MINIMUM FOR 2314 @VA03452 00618000
  632. CKFLAG TM FLAG,TDK WAS THIS A SPECIAL D-DISK ENTRY 00619000
  633. BO NORELUFD IF SO SKIP NEXT 00620000
  634. CLI OPTFLAG,C'R' WAS RECOMPUTE SPECIFIED 00621000
  635. BE DONTASK NO QUESTIONS IF IT WAS 00622000
  636. CLI OPTFLAG,C'L' WAS IT STRICTLY A LABELLING REQUEST 00623000
  637. BE GETLAB IF SO SKIP ONE QUESTION 00624000
  638. BAL R7,ASK CHANGE OF HEART ? 00625000
  639. LA R1,WAITRD POINT TO WAITRD LIST 00626000
  640. SVC X'CA' DO IT 00627000
  641. CLC =C'YES',INBUF STILL WANT TO ? 00628000
  642. BNE ERR8 NO.. 00629000
  643. OI FLAG,LAB SIGNAL LABEL REQUIRED 00630000
  644. L R1,ADEVTAB IF THIS DISK LOGGED IN @VA01151 00631000
  645. LA R15,10 WE MUST RELEASE BY NUMBER @VA01151 00632000
  646. LH R7,DEVADDR BEFORE ANY FANCY STUFF @VA01151 00633000
  647. CKDISK LA R1,DTENTLEN(R1) BUMP TO NEXT ENTRY OR 1ST DISK @VA01151 00634000
  648. CH R7,0(R1) MATCH TO-BE-FORMATTED ADDR @VA01151 00635000
  649. BE RELDSK AGAINST THOSE LOGGED IN @VA01151 00636000
  650. BCT R15,CKDISK AND RELEASE IF FOUND @VA01151 00637000
  651. B GETLAB NO MATCH, SKIP RELEASE @VA01151 00638000
  652. RELDSK MVC RELNO,8(R6) PUT EBCDIC ADDR IN PLIST @VA01151 00639000
  653. LA R1,RELIST PLIST FOR RELEASE @VA01151 00640000
  654. SVC 202 @VA01151 00641000
  655. DC AL4(*+4) @VA01151 00642000
  656. GETLAB BAL R7,ASKAGAIN NEXT QUESTION 00643000
  657. LA R1,WAITRD POINT TO WAITRD PLIST 00644000
  658. SVC X'CA' DO IT 00645000
  659. LH R15,INPCNT+2 GET REPLY LENGTH 00646000
  660. LTR R15,R15 SHOULD BE POSITIVE 00647000
  661. BNP ERR8 ERROR IF NOT 00648000
  662. LA R1,=CL8'CONWAIT' WAIT FOR CONSOLE MESSAGES @VA03452 00649000
  663. SVC 202 GIVEN UP TO THIS POINT TO FINISH @VA03452 00650000
  664. CLI OPTFLAG,C'L' ONLY LABELLING? 00651000
  665. BE LABONLY YES. GET ON WITH IT 00652000
  666. BAL R7,HANDHOLD SEND REASSURANCE MESSAGE 00653000
  667. DONTASK TM ADTFLG2,ADTFROS+ADTFDOS PREV OS DISK LOGGED IN? @VA04337 00654000
  668. BNZ RELDOD @VA04337 00654500
  669. TM ADTFLG1,ADTFRO+ADTFRW DISK LOGGED IN AT ALL? @VA04337 00655000
  670. BZ NORELUFD NO, SKIP RELEASE UFD @VA04337 00655500
  671. RELDOD CLI OPTFLAG,C'R' RECOMPUTE? @VA04337 00656000
  672. BE NORELUFD SKIP RELUFD 00657000
  673. * CLOSE ANY CMS FILES ON THIS DISK WHICH MIGHT BE OPEN: 00658000
  674. IC R1,ADTM PICK UP MODE LETTER, @VA04015 00659000
  675. STC R1,THISDISK STORE IN 'FINISALL' P-LIST @VA04015 00660000
  676. LA R1,FINISALL POINT TO 'FINIS * * X' PLIST @VA04015 00661000
  677. L R15,AFINIS CLOSE ALL/ANY OPEN CMS FILES @VA04015 00662000
  678. BALR R14,R15 ... @VA04015 00663000
  679. LR R0,R13 GET A(ADT) @VA04015 00664000
  680. L R15,=A(RELUFD) GET A(DMSALU) 00665000
  681. BALR R14,R15 GO THERE 00666000
  682. NORELUFD CLI DEVADDR+3,X'09' WAS THIS A 3330 00667000
  683. BE HNDL3330 YES 00668000
  684. CLI DEVADDR+3,T3340 3340 ? @V2A2014 00669000
  685. BE HNDL3340 YES..BR @V2A2014 00670000
  686. CLI DEVADDR+3,T3350 3350 ? @V304498 00671000
  687. BE HNDL3350 YES..BR @V304498 00672000
  688. CLI DEVADDR+3,T3380 3380 ? HRC004DS 00672300
  689. BE HNDL3380 YES..BR HRC004DS 00672600
  690. CLI DEVADDR+3,X'08' IS IT A 2314? 00673000
  691. BE HNDL2314 YES 00674000
  692. B ERR7 ERROR IF UNSUPPORTED DASD DEVICE @VA03452 00675000
  693. SPACE 00676000
  694. DS 0F @VA04015 00677000
  695. FINISALL DC CL8'FINIS' CLOSE ALL... @VA04015 00678000
  696. DC CL8'*' FILENAMES, @VA04015 00679000
  697. DC CL8'*' FILETYPES, @VA04015 00680000
  698. THISDISK DC CL2'X ' ON "THIS" DISK. @VA04015 00681000
  699. * 00682000
  700. ******************** 00683000
  701. LETTERD DC C'D' P0586 00684000
  702. ADDRS DC A(ERR1) P0586 00685000
  703. DC A(SCANOPT) 00686000
  704. DC A(SCANUNIT) 00687000
  705. DC A(SCANNER) 00688000
  706. DEVADDR DC F'0' 00689000
  707. ADTADDR DC F'0' 00690000
  708. MAXPOSS DC XL4'FFF' MAXIMUM VIRTUAL DEVICE ADDRESS @VA04296 00691000
  709. OPTIONS EQU * 00692000
  710. DC CL8'RECOMP' 00693000
  711. DC CL8'LABEL' 00694000
  712. NUMOPTS EQU (*-OPTIONS)/8 00695000
  713. MDASD DC X'04' 00696000
  714. MASKS DC X'104080010820' 08 FOR 3350, 20 FOR 3380 HRC004DS 00697490
  715. NUMDEVS EQU *-MASKS 00698000
  716. TYPBYTES DC X'090801070B0E' 0B FOR 3350, 0E FOR 3380 HRC004DS 00699490
  717. MWR DC X'80' READ-ONLY FLAG IN VDEVBLOK V0149 00700000
  718. DATAL EQU 800 00701000
  719. ******************** 00702000
  720. SPACE 00703000
  721. DS 0F 00704000
  722. WAITRD DC CL8'WAITRD' 00705000
  723. DC AL1(1),AL3(INBUF) 00706000
  724. INPCNT DC C'U',AL3(*-*) 00707000
  725. SPACE 1 00708000
  726. RELIST DS 0F @VA01151 00709000
  727. DC CL8'RELEASE' @VA01151 00710000
  728. RELNO DC CL8' ' @VA01151 00711000
  729. DC 8X'FF' @VA01151 00712000
  730. DTENTLEN EQU 16 LENGTH OF A DEVICE TABLE ENTRY @VA01151 00713000
  731. EJECT 00714000
  732. HNDL3330 CLI OPTFLAG,C'R' IS IT FORMAT "R" ? 00715000
  733. BE CHEK3330 YES. 00716000
  734. HNDL3340 CLI OPTFLAG,C'R' IS IT FORMAT 'R' ? @V2A2014 00717000
  735. BE CHEK3340 YES..BR @V2A2014 00718000
  736. HNDL3350 CLI OPTFLAG,C'R' IS IT FORMAT 'R' ? @V304498 00719000
  737. BE CHEK3350 YES..BR @V304498 00720000
  738. HNDL3380 CLI OPTFLAG,C'R' IS IT FORMAT 'R' ? HRC004DS 00720300
  739. BE CHEK3380 YES..BR HRC004DS 00720600
  740. ST3330 EQU * NOW FORMAT A 3330 00721000
  741. MVC TIC3330(8),DUM3330 DON'T WRITE RECORD 0 OR HOME ADDRESS 00722000
  742. MVC R8ASTUFX(4),ADJUST8 SET PROPER DATA LENGTH. 00723000
  743. CLI DEVADDR+3,T3380 3380 ? HRC004DS 00723200
  744. BE CONT3330 YES...BR HRC004DS 00723400
  745. MVC TIC50(8),DUM2311 NO RECORD 20 IS NEEDED EITHER. HRC004DS 00723600
  746. MVC END3350(8),CCWNOOP MARK THE END OF THE CCW'S HRC004DS 00723800
  747. CLI DEVADDR+3,T3350 3350 ? @V304498 00724000
  748. BE CONT3330 YES...BR @V304498 00725000
  749. MVC TIC30(8),DUM2311 NO RECORD 15 IS NEEDED EITHER. @V304498 00726000
  750. MVC END3330(8),CCWNOOP MARK THE END OF THE CCW'S 00727000
  751. CONT3330 EQU * @V304498 00728000
  752. MVC NOSPEC(8),NOSEEK SKIP THE OVERFLOW CCW'S 00729000
  753. CLI DEVADDR+3,T3340 3340 ? @V2A2014 00730000
  754. BNE ST2314 NO...BR @V2A2014 00731000
  755. MVC TICR8(8),DUM2311 TIC TO READ CHECK @V2A2014 00732000
  756. MVC OTHERS(8),CCWNOOP END OF STRING @V2A2014 00733000
  757. B ST2314 JOIN COMMON CODE. 00734000
  758. HNDL2314 CLI OPTFLAG,C'R' FORMAT R ? 00735000
  759. BE CHEK2314 BZ IF YES, GO CHECK CYL., ETC. 00736000
  760. MVC OTHERS(8),NXTSEEK SET UP TO READ RECORDS 9-15 00737000
  761. MVC CCWWR16(8),DUM2311 SET TIC TO READ CHECK @V304498 00738000
  762. MVC CCWRD16(8),CCWNOOP SET END OF CHANNEL PROGRAM @V304498 00739000
  763. MVI SSECT,03 AND NO-OP THE SET-SECTOR. @V304498 00740000
  764. ST2314 EQU * COMMON CODE FOR 2314 & OTHERS: @V304498 00741000
  765. TM FLAG,TDK IS IT A "TEMPORARY" DISK ? @V304498 00742000
  766. BZ FRSTCYL BZ IF NOT. 00743000
  767. MVC CHECKIT(8),CCWNOOP BYPASS READ-AFTER-WRITE CHECK IF YES 00744000
  768. FRSTCYL SR R7,R7 IMPLY THAT FIRST CYLINDER ADDRESS IS ZERO 00745000
  769. HNXTCYL BAL R15,STRCYL STORE CYLINDER NUMBER WHERE NEEDED 00746000
  770. SSM OK81 PERMIT INTERRUPTS BRIEFLY; @VA03452 00747000
  771. * (TO ALLOW MESSAGES TO FINISH ETC) 00748000
  772. SSM NOINTS AND THEN INHIBIT AGAIN @VA03452 00749000
  773. SR R2,R2 CLEAR HEAD NUMBER, 00750000
  774. LA R3,10 SET FOR 10 00751000
  775. CLI DEVADDR+3,X'09' IS IT A 3330? 00752000
  776. BE CYL3330 YES..SET HEAD COUNT @V2A2014 00753000
  777. CLI DEVADDR+3,T3350 3350 ? @V304498 00754000
  778. BE CYL3350 YES..BR @V304498 00755000
  779. CLI DEVADDR+3,T3380 3380 ? HRC004DS 00755300
  780. BE CYL3380 YES..BR HRC004DS 00755600
  781. CLI DEVADDR+3,T3340 3340 ? @V2A2014 00756000
  782. BE CYL3340 YES..BR @V2A2014 00757000
  783. B HNXTHED CONTINUE @V2A2014 00758000
  784. CYL3340 LA R3,12 SET NO. OF HEADS FOR 3340 @V2A2014 00759000
  785. B HNXTHED CONTINUE @V2A2014 00760000
  786. CYL3350 LA R3,30 SET NO. OF HEADS FOR 3350 @V304498 00761000
  787. B HNXTHED CONTINUE @V304498 00762000
  788. CYL3380 LA R3,15 SET NO. OF HEADS FOR 3380 HRC004DS 00762300
  789. B HNXTHED CONTINUE HRC004DS 00762600
  790. CYL3330 LA R3,19 SET NO. OF HEADS FOR 3330 @V2A2014 00763000
  791. HNXTHED LA R14,FMT SET UP CCW-STRING IN R14, 00764000
  792. BAL R15,STRHEAD STORE HEAD NUMBERS WHERE NEEDED 00765000
  793. LAR410 L R4,ERRLIM ALLOW FOR 10 POSSIBLE ERRORS 00766000
  794. * R5 HOLDS DEVICE ADDRESS; 00767000
  795. * R14 POINTS TO CCW-STRING; 00768000
  796. DC X'835E0020' LET 'CP' DO ALL THE HARD WORK. @VA03452 00769000
  797. BNZ IOERROR 00770000
  798. LA R2,1(,R2) INCREMENT FOR NEXT (FULL) TRACK... 00771000
  799. CLI DEVADDR+3,X'08' IS IT A 2314? 00772000
  800. BNE HNDLNXT NOPE. 00773000
  801. LA R2,1(,R2) INDEX BY HEAD-PAIRS. 00774000
  802. HNDLNXT BCT R3,HNXTHED GO HANDLE NEXT HEAD 00775000
  803. LA R7,1(,R7) INCREMENT NUMBER OF CYLINDERS 00776000
  804. C R7,LIMCYL HAVE WE REACHED MAXIMUM ? 00777000
  805. BL HNXTCYL IF NOT, GO HANDLE NEXT CYLINDER. 00778000
  806. B YESEND WE'RE DONE IF MAXIMUM IS REACHED. 00779000
  807. SPACE 00780000
  808. IOERROR ST R14,SCRATCH 00781000
  809. CLI SENSE,X'81' 00782000
  810. BE YESEND 00783000
  811. CLI SENSE,X'80' SEEK CHECK 3330 OR 3340 ? @V2A2014 00784000
  812. BNE ERR10X NO..ERROR @V2A2014 00785000
  813. CLI DEVADDR+3,T2314 IS THISA 2314 ? @V2A2014 00786000
  814. BNE YESEND NO..OK, MUST BE 3330 OR 3340 @V2A2014 00787000
  815. ERR10X BAL R3,ERR10 00788000
  816. B YESEND 00789000
  817. SPACE 00790000
  818. SCRATCH DC F'0' 00791000
  819. SENSE EQU SCRATCH+2 00792000
  820. EJECT 00793000
  821. * CCW STRING FOR FORMATTING DISK 00794000
  822. * NOTE: PLEASE KEEP CODE SERIALLY RE-USABLE. 00795000
  823. * 00796000
  824. FMT CCW 07,SEEKA,CC,6 SEEK 00797000
  825. CCW 31,FILEMSK,CC+SILI,1 SET FILE MASK 00798000
  826. TIC3330 DS 0D 00799000
  827. CCW 25,SEEKA+1,CC+SILI,5 WRITE HOME ADDRESS 00800000
  828. CCW 21,SEEKA2,CC+SILI,16 WRITE "RECORD R0" 00801000
  829. CCW 08,CONT14,0,1 00802000
  830. SCHA CCW 35,INDXPT,CC+SILI,1 SET SECTOR FOR INDEX POINT @VA03452 00803000
  831. CCW 49,SEEKA2,CC+SILI,5 @VA03452 00804000
  832. CCW 08,*-8,0,0 00805000
  833. CONT14 CCW 29,R1STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 1 00806000
  834. CCW 29,R2STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 2 00807000
  835. CCW 29,R3STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 3 00808000
  836. CCW 29,R4STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 4 00809000
  837. CCW 29,R5STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 5 00810000
  838. CCW 29,R6STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 6 00811000
  839. CCW 29,R7STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 7 00812000
  840. NOSPEC DS 0D 00813000
  841. CCW 01,R8STUF,CC+SILI,8 SPECIAL WRITE CNT KEY & DATA REC 8 00814000
  842. CCW 07,SEEKB,CC+SILI,6 NEW SEEK, 00815000
  843. CCW 25,SEEKB+1,CC+SILI,5 WRITE NEW HOME ADDRESS, 00816000
  844. CCW 21,SEEKB2,CC+SILI,16 WRITE NEW "RECORD R0" 00817000
  845. CONT30 CCW 29,R8ASTUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 8 00818000
  846. TICR8 CCW 29,R9STUF,CC+SILI,8 WRITE CKD RECORD 9 @V2A2014 00819000
  847. CCW 29,R10STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 10 00820000
  848. CCW 29,R11STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 11 00821000
  849. CCW 29,R12STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 12 00822000
  850. CCW 29,R13STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 13 00823000
  851. CCW 29,R14STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 14 00824000
  852. TIC30 DS 0D 00825000
  853. CCW 29,R15STUF,CC+SILI,8 WRITE COUNT, KEY, & DATA, RECORD 15 00826000
  854. CCWWR16 CCW 29,R16STUF,CC+SILI,8 WRITE CKD RECORD 16 @V304498 00827000
  855. CCW 29,R17STUF,CC+SILI,8 WRITE CKD RECORD 17 @V304498 00828000
  856. CCW 29,R18STUF,CC+SILI,8 WRITE CKD RECORD 18 @V304498 00829000
  857. CCW 29,R19STUF,CC+SILI,8 WRITE CKD RECORD 19 HRC004DS 00830040
  858. TIC50 DS 0D HRC004DS 00830080
  859. CCW 29,R20STUF,CC+SILI,8 WRITE CKD RECORD 20 HRC004DS 00830120
  860. CCW 29,R21STUF,CC+SILI,8 WRITE CKD RECORD 21 HRC004DS 00830160
  861. CCW 29,R22STUF,CC+SILI,8 WRITE CKD RECORD 22 HRC004DS 00830200
  862. CCW 29,R23STUF,CC+SILI,8 WRITE CKD RECORD 23 HRC004DS 00830240
  863. CCW 29,R24STUF,CC+SILI,8 WRITE CKD RECORD 24 HRC004DS 00830280
  864. CCW 29,R25STUF,CC+SILI,8 WRITE CKD RECORD 25 HRC004DS 00830320
  865. CCW 29,R26STUF,CC+SILI,8 WRITE CKD RECORD 26 HRC004DS 00830360
  866. CCW 29,R27STUF,CC+SILI,8 WRITE CKD RECORD 27 HRC004DS 00830400
  867. CCW 29,R28STUF,CC+SILI,8 WRITE CKD RECORD 28 HRC004DS 00830440
  868. CCW 29,R29STUF,CC+SILI,8 WRITE CKD RECORD 29 HRC004DS 00830480
  869. CCW 29,R30STUF,CC+SILI,8 WRITE CKD RECORD 30 HRC004DS 00830520
  870. CCW 29,R31STUF,CC+SILI,8 WRITE CKD RECORD 31 HRC004DS 00830560
  871. CCW 29,R32STUF,CC+SILI,8 WRITE CKD RECORD 32 HRC004DS 00830600
  872. CCW 29,R33STUF,CC+SILI,8 WRITE CKD RECORD 33 HRC004DS 00830640
  873. CCW 29,R34STUF,CC+SILI,8 WRITE CKD RECORD 34 HRC004DS 00830680
  874. CCW 29,R35STUF,CC+SILI,8 WRITE CKD RECORD 35 HRC004DS 00830720
  875. CCW 29,R36STUF,CC+SILI,8 WRITE CKD RECORD 36 HRC004DS 00830760
  876. CHECKIT CCW 07,SEEKA,CC,6 SEEK CYLINDER & HEAD 0, 2, ETC. 00831000
  877. SSECT CCW 35,INDXPT,CC+SILI,1 SET SECTOR FOR INDEX POINT @VA03452 00832000
  878. CCW 49,SEEKA2,CC,5 SEARCH FOR RECORD 0 00833000
  879. CCW 08,*-8,0,1 ... 00834000
  880. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 1 00835000
  881. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 2 00836000
  882. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 3 00837000
  883. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 4 00838000
  884. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 5 00839000
  885. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 6 00840000
  886. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 7 00841000
  887. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 8 00842000
  888. OTHERS CCW 08,*+8,0,1 00843000
  889. NXTRK CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 9 00844000
  890. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 10 00845000
  891. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 11 00846000
  892. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 12 00847000
  893. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 13 00848000
  894. CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 14 00849000
  895. END3330 CCW 30,0,CC+SILI+NO,1 READ COUNT, KEY & DATA RECORD 15 00850000
  896. CCWRD16 CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 16 @V304498 00851000
  897. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 17 @V304498 00852000
  898. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 18 @V304498 00853000
  899. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 19 HRC004DS 00854040
  900. END3350 CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 20 HRC004DS 00854080
  901. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 21 HRC004DS 00854120
  902. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 22 HRC004DS 00854160
  903. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 23 HRC004DS 00854200
  904. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 24 HRC004DS 00854240
  905. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 25 HRC004DS 00854280
  906. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 26 HRC004DS 00854320
  907. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 27 HRC004DS 00854360
  908. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 28 HRC004DS 00854400
  909. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 29 HRC004DS 00854440
  910. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 30 HRC004DS 00854480
  911. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 31 HRC004DS 00854520
  912. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 32 HRC004DS 00854560
  913. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 33 HRC004DS 00854600
  914. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 34 HRC004DS 00854640
  915. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 35 HRC004DS 00854680
  916. CCW 30,0,CC+SILI+NO,1 READ CKD RECORD 36 HRC004DS 00854720
  917. CCWNOOP CCW 03,0,SILI,1 NO-OP = END OF CCW STRING. 00855000
  918. * 00856000
  919. BSEEK CCW 07,SEEKB,CC,6 SEEK NEXT HEAD 00857000
  920. CCW 49,SEEKB2,CC,5 SEARCH RECORD 0 00858000
  921. CCW 08,NXTRK,0,1 00859000
  922. * 00860000
  923. NXTSEEK CCW 08,BSEEK,0,1 00861000
  924. DUM2311 CCW 08,CHECKIT,0,1 "TIC CHECKIT" (WHERE NEEDED) @VA03452 00862000
  925. DUM3330 CCW 08,SCHA,0,1 00863000
  926. NOSEEK CCW 08,CONT30,0,1 00864000
  927. * 00865000
  928. * INITIAL (DEFAULT) VALUES FOR CCWS IN ABOVE STRING WHICH ARE MODIFIED: 00866000
  929. JTIC3330 CCW 25,SEEKA+1,CC+SILI,5 @VA03452 00867000
  930. JNOSPEC CCW 01,R8STUF,CC+SILI,8 @VA03452 00868000
  931. JTICR8 CCW 29,R9STUF,CC+SILI,8 @VA03452 00869000
  932. JTIC30 CCW 29,R15STUF,CC+SILI,8 @VA03452 00870000
  933. JCHECKIT CCW 07,SEEKA,CC,6 @VA03452 00871000
  934. JOTHERS CCW 08,OTHERS+8,0,1 @VA03452 00872000
  935. JEND3330 CCW 30,0,CC+SILI+NO,1 @VA03452 00873000
  936. JCCWWR16 CCW 29,R16STUF,CC+SILI,8 @V304498 00874000
  937. JCCWRD16 CCW 30,0,CC+SILI+NO,1 @V304498 00875000
  938. EJECT 00876000
  939. CNOP 2,4 00877000
  940. SEEKA DC H'0' ("BIN" - ALWAYS 0) 00878000
  941. SEEKA2 DC AL2(*-*) CYLINDER NO. FOR SEEK, HOME-ADDRESS, & R0 00879000
  942. SEEKA4 DC AL2(*-*) START WITH HEAD (TRACK) 0 00880000
  943. DC X'00000008',8X'00' LAST 12 BYTES OF "RECORD R0" 00881000
  944. SEEKB DC H'0' ("BIN" - ALWAYS 0) 00882000
  945. SEEKB2 DC AL2(*-*) CYLINDER NO. FOR SEEK, HOME-ADDRESS, & R0 00883000
  946. SEEKB4 DC AL2(*-*) START WITH HEAD (TRACK) 1 00884000
  947. DC X'00000008',8X'00' LAST 12 BYTES OF "RECORD R0" 00885000
  948. DS 0D FIRST 8 BYTES FOR EACH RECORD (1-15) ... 00886000
  949. R1STUF DC AL2(*-*) CYLINDER 00887000
  950. DC AL2(*-*) HEAD (0,2,4, ..., 18) 00888000
  951. DC AL1(01),AL3(DATAL) RECORD NO. 01 00889000
  952. * 00890000
  953. R2STUF DC AL2(*-*) CYLINDER 00891000
  954. DC AL2(*-*) HEAD (0,2,4, ..., 18) 00892000
  955. DC AL1(02),AL3(DATAL) RECORD NO. 02 00893000
  956. * 00894000
  957. R3STUF DC AL2(*-*) CYLINDER 00895000
  958. DC AL2(*-*) HEAD (0,2,4, ..., 18) 00896000
  959. DC AL1(03),AL3(DATAL) RECORD NO. 03 00897000
  960. * 00898000
  961. R4STUF DC AL2(*-*) CYLINDER 00899000
  962. DC AL2(*-*) HEAD (0,2,4, ..., 18) 00900000
  963. DC AL1(04),AL3(DATAL) RECORD NO. 04 00901000
  964. * 00902000
  965. R5STUF DC AL2(*-*) CYLINDER 00903000
  966. DC AL2(*-*) HEAD (0,2,4, ..., 18) 00904000
  967. DC AL1(05),AL3(DATAL) RECORD NO. 05 00905000
  968. * 00906000
  969. R6STUF DC AL2(*-*) CYLINDER 00907000
  970. DC AL2(*-*) HEAD (0,2,4, ..., 18) 00908000
  971. DC AL1(06),AL3(DATAL) RECORD NO. 06 00909000
  972. * 00910000
  973. R7STUF DC AL2(*-*) CYLINDER 00911000
  974. DC AL2(*-*) HEAD (0,2,4, ..., 18) 00912000
  975. DC AL1(07),AL3(DATAL) RECORD NO. 07 00913000
  976. * 00914000
  977. R8STUF DC AL2(*-*) CYLINDER 00915000
  978. DC AL2(*-*) HEAD (0,2,4, ..., 18) 00916000
  979. DC AL1(08),AL3(DATAL-400) RECORD NO. 08 (FIRST HALF) 00917000
  980. * 00918000
  981. R8ASTUF DC AL2(*-*) CYLINDER 00919000
  982. DC AL2(*-*) HEAD (1,3,5, ..., 19) 00920000
  983. R8ASTUFX DC AL1(08),AL3(400) RECORD NO. 08 (SECOND HALF) 00921000
  984. * 00922000
  985. R9STUF DC AL2(*-*) CYLINDER 00923000
  986. DC AL2(*-*) HEAD (1,3,5, ..., 19) 00924000
  987. DC AL1(09),AL3(DATAL) RECORD NO. 09 00925000
  988. * 00926000
  989. R10STUF DC AL2(*-*) CYLINDER 00927000
  990. DC AL2(*-*) HEAD (1,3,5, ..., 19) 00928000
  991. DC AL1(10),AL3(DATAL) RECORD NO. 10 00929000
  992. * 00930000
  993. R11STUF DC AL2(*-*) CYLINDER 00931000
  994. DC AL2(*-*) HEAD (1,3,5, ..., 19) 00932000
  995. DC AL1(11),AL3(DATAL) RECORD NO. 11 00933000
  996. * 00934000
  997. R12STUF DC AL2(*-*) CYLINDER 00935000
  998. DC AL2(*-*) HEAD (1,3,5, ..., 19) 00936000
  999. DC AL1(12),AL3(DATAL) RECORD NO. 12 00937000
  1000. * 00938000
  1001. R13STUF DC AL2(*-*) CYLINDER 00939000
  1002. DC AL2(*-*) HEAD (1,3,5, ..., 19) 00940000
  1003. DC AL1(13),AL3(DATAL) RECORD NO. 13 00941000
  1004. * 00942000
  1005. R14STUF DC AL2(*-*) CYLINDER 00943000
  1006. DC AL2(*-*) HEAD (1,3,5, ..., 19) 00944000
  1007. DC AL1(14),AL3(DATAL) RECORD NO. 14 00945000
  1008. * 00946000
  1009. R15STUF DC AL2(*-*) CYLINDER 00947000
  1010. DC AL2(*-*) HEAD (1,3,5, ..., 19) 00948000
  1011. DC AL1(15),AL3(DATAL) RECORD NO. 15 00949000
  1012. * 00950000
  1013. R16STUF DC AL2(*-*) CYLINDER @V304498 00951000
  1014. DC AL2(*-*) HEAD (1,3,5, ..., 19) @V304498 00952000
  1015. DC AL1(16),AL3(DATAL) RECORD NO. 16 @V304498 00953000
  1016. * 00954000
  1017. R17STUF DC AL2(*-*) CYLINDER @V304498 00955000
  1018. DC AL2(*-*) HEAD (1,3,5, ..., 19) @V304498 00956000
  1019. DC AL1(17),AL3(DATAL) RECORD NO. 17 @V304498 00957000
  1020. * 00958000
  1021. R18STUF DC AL2(*-*) CYLINDER @V304498 00959000
  1022. DC AL2(*-*) HEAD (1,3,5, ..., 19) @V304498 00960000
  1023. DC AL1(18),AL3(DATAL) RECORD NO. 18 @V304498 00961000
  1024. * 00962000
  1025. R19STUF DC AL2(*-*) CYLINDER @V304498 00963000
  1026. DC AL2(*-*) HEAD (1,3,5, ..., 19) @V304498 00964000
  1027. DC AL1(19),AL3(DATAL) RECORD NO. 19 @V304498 00965000
  1028. * HRC004DS 00965010
  1029. R20STUF DC AL2(*-*) CYLINDER HRC004DS 00965020
  1030. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965030
  1031. DC AL1(20),AL3(DATAL) RECORD NO. 20 HRC004DS 00965040
  1032. * HRC004DS 00965050
  1033. R21STUF DC AL2(*-*) CYLINDER HRC004DS 00965060
  1034. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965070
  1035. DC AL1(21),AL3(DATAL) RECORD NO. 21 HRC004DS 00965080
  1036. * HRC004DS 00965090
  1037. R22STUF DC AL2(*-*) CYLINDER HRC004DS 00965100
  1038. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965110
  1039. DC AL1(22),AL3(DATAL) RECORD NO. 22 HRC004DS 00965120
  1040. * HRC004DS 00965130
  1041. R23STUF DC AL2(*-*) CYLINDER HRC004DS 00965140
  1042. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965150
  1043. DC AL1(23),AL3(DATAL) RECORD NO. 23 HRC004DS 00965160
  1044. * HRC004DS 00965170
  1045. R24STUF DC AL2(*-*) CYLINDER HRC004DS 00965180
  1046. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965190
  1047. DC AL1(24),AL3(DATAL) RECORD NO. 24 HRC004DS 00965200
  1048. * HRC004DS 00965210
  1049. R25STUF DC AL2(*-*) CYLINDER HRC004DS 00965220
  1050. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965230
  1051. DC AL1(25),AL3(DATAL) RECORD NO. 25 HRC004DS 00965240
  1052. * HRC004DS 00965250
  1053. R26STUF DC AL2(*-*) CYLINDER HRC004DS 00965260
  1054. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965270
  1055. DC AL1(26),AL3(DATAL) RECORD NO. 26 HRC004DS 00965280
  1056. * HRC004DS 00965290
  1057. R27STUF DC AL2(*-*) CYLINDER HRC004DS 00965300
  1058. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965310
  1059. DC AL1(27),AL3(DATAL) RECORD NO. 27 HRC004DS 00965320
  1060. * HRC004DS 00965330
  1061. R28STUF DC AL2(*-*) CYLINDER HRC004DS 00965340
  1062. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965350
  1063. DC AL1(28),AL3(DATAL) RECORD NO. 28 HRC004DS 00965360
  1064. * HRC004DS 00965370
  1065. R29STUF DC AL2(*-*) CYLINDER HRC004DS 00965380
  1066. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965390
  1067. DC AL1(29),AL3(DATAL) RECORD NO. 29 HRC004DS 00965400
  1068. * HRC004DS 00965410
  1069. R30STUF DC AL2(*-*) CYLINDER HRC004DS 00965420
  1070. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965430
  1071. DC AL1(30),AL3(DATAL) RECORD NO. 30 HRC004DS 00965440
  1072. * HRC004DS 00965450
  1073. R31STUF DC AL2(*-*) CYLINDER HRC004DS 00965460
  1074. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965470
  1075. DC AL1(31),AL3(DATAL) RECORD NO. 31 HRC004DS 00965480
  1076. * HRC004DS 00965490
  1077. R32STUF DC AL2(*-*) CYLINDER HRC004DS 00965500
  1078. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965510
  1079. DC AL1(32),AL3(DATAL) RECORD NO. 32 HRC004DS 00965520
  1080. * HRC004DS 00965530
  1081. R33STUF DC AL2(*-*) CYLINDER HRC004DS 00965540
  1082. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965550
  1083. DC AL1(33),AL3(DATAL) RECORD NO. 33 HRC004DS 00965560
  1084. * HRC004DS 00965570
  1085. R34STUF DC AL2(*-*) CYLINDER HRC004DS 00965580
  1086. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965590
  1087. DC AL1(34),AL3(DATAL) RECORD NO. 34 HRC004DS 00965600
  1088. * HRC004DS 00965610
  1089. R35STUF DC AL2(*-*) CYLINDER HRC004DS 00965620
  1090. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965630
  1091. DC AL1(35),AL3(DATAL) RECORD NO. 35 HRC004DS 00965640
  1092. * HRC004DS 00965650
  1093. R36STUF DC AL2(*-*) CYLINDER HRC004DS 00965660
  1094. DC AL2(*-*) HEAD (1,3,5, ..., 19) HRC004DS 00965670
  1095. DC AL1(36),AL3(DATAL) RECORD NO. 36 HRC004DS 00965680
  1096. * 00966000
  1097. NOINTS DC X'00' 00967000
  1098. OK81 DC X'81' 00968000
  1099. ADJUST8 DC AL1(08),AL3(DATAL) 00969000
  1100. FILEMSK DC X'C0' PERMIT WRITES 00970000
  1101. EJECT 00971000
  1102. * SUBROUTINE TO STORE CYLINDER NUMBER (IN R7) WHEREVER NEEDED 00972000
  1103. STRCYL STH R7,SEEKA2 SET UP THE CYLINDER NUMBER. 00973000
  1104. STH R7,SEEKB2 ... 00974000
  1105. STM R3,R5,SAVE36 SAVE REGISTERS TO MAKE SOME AVAILABLE 00975000
  1106. LM R3,R5,BXLEAD8 SET UP REGS FOR BXLE, HRC013DS 00976000
  1107. STRCYLP STH R7,0(,R3) STORE CYLINDER NUMBER WHERE NEEDED 00977000
  1108. BXLE R3,R4,STRCYLP ITERATE FOR MANY PLACES 00978000
  1109. LM R3,R5,SAVE36 RESTORE NECESSARY REGISTERS 00979000
  1110. BR R15 RETURN TO CALLER. 00980000
  1111. * SUBROUTINE TO STORE HEAD NUMBER WHEREVER NEEDED 00981000
  1112. STRHEAD STM R3,R6,SAVE36 SAVE REGISTERS TO MAKE SOME AVAILABLE 00982000
  1113. CLI DEVADDR+3,X'09' IS IT A 3330? 00983000
  1114. BE STRHEDX YES. GET INTO THE PROPER LOOP. 00984000
  1115. CLI DEVADDR+3,T3380 3380 ? HRC004DS 00985390
  1116. BE STRHED88 GET IN 3380 LOOP HRC004DS 00985780
  1117. CLI DEVADDR+3,T3350 3350 ? HRC004DS 00986170
  1118. BE STRHEDZ GET IN 3350 LOOP HRC004DS 00986560
  1119. CLI DEVADDR+3,T3340 3340 ? @V2A2014 00987000
  1120. BE STRHEDY GET IN 3340 LOOP @V2A2014 00988000
  1121. LM R3,R5,BXLEAD2 SET UP REGS FOR 1ST 8 HEADS TO SET UP, 00989000
  1122. STH R2,SEEKA4 STORE FOR SEEK, ETC. 00990000
  1123. STRHED1 STH R2,2(,R3) STORE HEAD NUMBER (0, 2, 4, ETC.) 00991000
  1124. BXLE R3,R4,STRHED1 ITERATE FOR THE FIRST EIGHT. 00992000
  1125. LM R3,R5,BXLEAD3 NOW SET UP FOR THE LAST EIGHT, 00993000
  1126. LA R6,1(,R2) HEAD NUMBER PLUS 1 INTO R6, 00994000
  1127. STH R6,SEEKB4 STORE FOR SEEK, ETC. 00995000
  1128. STRHED2 STH R6,2(,R3) STORE NEAD NUMBER (1, 3, 5, ETC.) 00996000
  1129. BXLE R3,R4,STRHED2 ITERATE FOR THE LAST 8 PLACES WE NEED IT 00997000
  1130. LM R3,R6,SAVE36 RESTORE NECESSARY REGISTERS 00998000
  1131. BR R15 THEN RETURN TO CALLER. 00999000
  1132. STRHEDX LM R3,R5,BXLEAD4 GET RANGE/INDEX VALUES. 01000000
  1133. STH R2,SEEKA4 STORE FOR SEEK ETC. 01001000
  1134. STRHEDX1 STH R2,2(,R3) STORE HEAD NUMBER. 01002000
  1135. BXLE R3,R4,STRHEDX1 ITERATE FOR A FULL TRACK. 01003000
  1136. LM R3,R6,SAVE36 THEN, RETURN TO THE CALLER. 01004000
  1137. BR R15 01005000
  1138. STRHEDY LM R3,R5,BXLEAD1 GET RANGE/INDEX VALUES @V2A2014 01006000
  1139. STH R2,SEEKA4 STORE FOR SEEK ETC. @V2A2014 01007000
  1140. STRHEDY1 STH R2,2(,R3) STORE HEAD NUMBER @V2A2014 01008000
  1141. BXLE R3,R4,STRHEDY1 ITEERATE FOR FULL 3340 TRACK @V2A2014 01009000
  1142. LM R3,R6,SAVE36 THEN RETURN @V2A2014 01010000
  1143. BR R15 TO CALLER @V2A2014 01011000
  1144. * HRC004DS 01012490
  1145. STRHEDZ LM R3,R5,BXLEAD5 GET RANGE/INDEX VALUES @V304498 01013000
  1146. STH R2,SEEKA4 STORE FOR SEEK ETC. @V304498 01014000
  1147. STRHEDZ1 STH R2,2(,R3) STORE HEAD NUMBER @V304498 01015000
  1148. BXLE R3,R4,STRHEDZ1 ITEERATE FOR FULL 3350 TRACK @V304498 01016000
  1149. LM R3,R6,SAVE36 THEN RETURN @V304498 01017000
  1150. BR R15 TO CALLER @V304498 01018000
  1151. * 01019000
  1152. STRHED88 LM R3,R5,BXLEAD8 GET RANGE/INDEX VALUES HRC004DS 01019100
  1153. STH R2,SEEKA4 STORE FOR SEEK ETC. HRC004DS 01019200
  1154. STRHED89 STH R2,2(,R3) STORE HEAD NUMBER HRC004DS 01019300
  1155. BXLE R3,R4,STRHED89 ITEERATE FOR FULL 3350 TRACK HRC004DS 01019400
  1156. LM R3,R6,SAVE36 THEN RETURN HRC004DS 01019500
  1157. BR R15 TO CALLER HRC004DS 01019600
  1158. * HRC004DS 01019700
  1159. SAVE36 DS 4F R3 THRU R6 SAVED HERE 01020000
  1160. BXLEAD1 DC A(R1STUF),F'8',A(R19STUF) FOR STORING CYL NO'S @V304498 01021000
  1161. BXLEAD2 DC A(R1STUF),F'8',A(R8STUF) FOR STORING HEAD NUMBERS 0, 2, 01022000
  1162. BXLEAD3 DC A(R8ASTUF),F'8',A(R15STUF) FOR STORING HEAD NUMBERS 1, 3 01023000
  1163. BXLEAD4 DC A(R1STUF),F'8',A(R14STUF) 01024000
  1164. BXLEAD5 DC A(R1STUF),F'8',A(R19STUF) @V304498 01025000
  1165. BXLEAD8 DC A(R1STUF),F'8',A(R36STUF) HRC004DS 01025500
  1166. EJECT 01026000
  1167. * 01027000
  1168. CMSEQ DC C'CMS=' MUST PRECEDE 'INBUF' ... 01028000
  1169. INBUF DC CL6'SCRTCH' LABEL TYPED IN HERE (SCRTCH VALUE SHOWN) 01029000
  1170. DISKBUF DC 800X'00' REMAINDER OF 130-BYTE BUFFER FOR WAITRD. 01030000
  1171. * 01031000
  1172. DUMTDISK DC CL6'SCRTCH' SCRTCH LABEL. 01032000
  1173. SAVE14 DC 2F'0' R14 SAVED HERE FOR EXITING WHEN THRU. 01033000
  1174. ERRKODE EQU *-1 RETURN- (ERROR-) CODE BYTE 01034000
  1175. * 01035000
  1176. LIMCYL DC F'203' LIMIT FOR NUMBER OF CYLINDERS (CAN BE FILLED IN) 01036000
  1177. * 01037000
  1178. ERRLIM DC F'10' ... 01038000
  1179. TEN EQU *-2 01039000
  1180. * 01040000
  1181. FLAG DC F'0' SWITCHES 01041000
  1182. TDK EQU X'40' 01042000
  1183. LAB EQU X'02' LABEL IS WANTED 01043000
  1184. STAT EQU X'01' CALL TO 'STAT' WANTED BEFORE EXITING. 01044000
  1185. * 01045000
  1186. OPTFLAG EQU FLAG+1 01046000
  1187. * 01047000
  1188. INDXPT DC X'00' SECTOR NO. OF 00 FOR INDEX POINT @VA03452 01048000
  1189. LTORG 01049000
  1190. EJECT 01050000
  1191. * COMES HERE WHEN END-OF-DISK REACHED ... 01051000
  1192. * 01052000
  1193. YESEND LTR R7,R7 IF ZERO CYLINDERS FORMATTED.. @VA01447 01053000
  1194. BZ ERR10 ..MUST BE A DISK ERROR @VA01447 01054000
  1195. YESEND1 ST R7,ADTCYL STORE CYLINDER COUNT IN ADT @VA01447 01055000
  1196. BAL R3,TYPECYL 01056000
  1197. LTR R7,R7 BUT 1ST CHECK NO. CYLINDERS FORMATTED 01057000
  1198. BZ LM1415 BZ IF 0, OMIT STORING UNIT-TYPE-BYTE. 01058000
  1199. MVC ADTID(6),INBUF STORE DISK-LABEL IN ACTIVE DISK TABLE 01059000
  1200. L R6,ADTDTA R6 AGAIN POINTS TO NUCON DEVICE-TABLE, 01060000
  1201. L R15,DEVADDR GET THE DEVICE INFO WE CONSTRUCTED. 01061000
  1202. ST R15,DTAD(,R6) AND PUT IT INTO THE DEVICE TABLE. 01062000
  1203. * 01063000
  1204. L R3,ADTFDA R3 = A(PSTAT) 01064000
  1205. LTR R3,R3 (IF ANY) 01065000
  1206. BP CHEKQQ BP IF WE'VE ALREADY GOT ONE. 01066000
  1207. * (NOTE - ALREADY CLEARED BY 'RELUFD') 01067000
  1208. * ALLOCATE 102 DOUBLE-WORDS FOR PSTAT 01068000
  1209. DMSFREE DWORDS=(102),TYPE=NUCLEUS,TYPCALL=BALR @VM03083 01069000
  1210. ST R1,ADTFDA STORE ADDRESS IN ACTIVE DISK TABLE. 01070000
  1211. OI ADTFLG1,ADTFFSTF FLAG 'PSTAT' IN FREE STORAGE 01071000
  1212. LR R3,R1 PLACE IN R3 AS ABOVE 01072000
  1213. LA R0,40 40 BYTES AND 01073000
  1214. LA R1,800 800 BYTES 01074000
  1215. STM R0,R1,0(R3) INTO FIRST 8 BYTES OF NEW 'PSTAT'. 01075000
  1216. LA R3,8(,R3) SPACE OVER PRELIMINARY COUNTERS, 01076000
  1217. XC 0(208,R3),0(R3) CLEAR 1ST 208 BYTES OF 'PSTAT', 01077000
  1218. MVC 208(200,R3),0(R3) NEXT 200 BYTES, 01078000
  1219. MVC 408(200,R3),0(R3) NEXT 200 BYTES, 01079000
  1220. MVC 608(200,R3),0(R3) AND LAST 200 BYTES INCLUDING POINTERS 01080000
  1221. CHEKQQ CLI DEVADDR+3,T2314 2314 ? @V2A2014 01081000
  1222. BNE FINCOMP NO..BR @V2A2014 01082000
  1223. L R4,ADTQQM R4 = A(PQQMSK) 01083000
  1224. LTR R4,R4 DO WE HAVE A PQQMSK ? 01084000
  1225. BP FINCOMP BP IF YES (NOTE - ALREADY CLEAR) 01085000
  1226. * ALLOCATE 25 DOUBLE-WORDS FOR PQMASK 01086000
  1227. DMSFREE DWORDS=25,TYPE=NUCLEUS,TYPCALL=BALR @VM03083 01087000
  1228. LR R4,R1 PLACE IN R4 AS ABOVE 01088000
  1229. ST R4,ADTQQM STORE WHERE NEEDED, 01089000
  1230. OI ADTFLG1,ADTFQQF FLAG 'PQQMSK' IN FREE STORAGE 01090000
  1231. XC 0(200,R4),0(R4) CLEAR 200-BYTE 'PQQMSK' 01091000
  1232. * 'PSTAT' AND 'PQQMSK' BOTH INITIALIZED AND CLEAR, 01092000
  1233. * NOW CONTINUE TO 'FINCOMP' ... 01093000
  1234. FINCOMP EQU * COMPUTE CURRENT NO. TRACKS, ETC... 01094000
  1235. * NOTE -- R7 STILL CONTAINS 'NUMCYLP' OR 'NUMCYLT' 01095000
  1236. LTR R7,R7 CHECK NO. CYL. FORMATTED, 01096000
  1237. BNP LM1415 EXIT FORTHWITH IF NO SUCCESS AT ALL. 01097000
  1238. LA R4,TAB3330 POINT TO TABLE OF 3330 STATS. 01098000
  1239. CLI DEVADDR+3,X'09' IS IT A 3330? 01099000
  1240. BE JCON2 YUP. GO DO. 01100000
  1241. LA R4,TAB3340 GET 3340 STATS TABLE @V2A2014 01101000
  1242. CLI DEVADDR+3,T3340 3340 ? @V2A2014 01102000
  1243. BE JCON2 YES..BR @V2A2014 01103000
  1244. LA R4,TAB3350 GET 3350 STATS TABLE @V304498 01104000
  1245. CLI DEVADDR+3,T3350 3350 ? @V304498 01105000
  1246. BE JCON2 YES..BR @V304498 01106000
  1247. LA R4,TAB3380 GET 3380 STATS TABLE HRC004DS 01106200
  1248. CLI DEVADDR+3,T3380 3380 ? HRC004DS 01106400
  1249. BE JCON2 YES..BR HRC004DS 01106600
  1250. LA R4,TAB2314 POINT TO TABLE OF 2314 VALS. 01107000
  1251. CLI DEVADDR+3,X'08' IS IT A 2314? 01108000
  1252. BE JCON2 BO IF YES. 01109000
  1253. B ERR7 ERROR IF UNSUPPORTED DASD DEVICE @VA03452 01110000
  1254. USING JTABLE,R4 (FROM NOW ON) 01111000
  1255. JCON2 L R5,ADTMSK R5 = ADDRESS OLD 'PQMSK' 01112000
  1256. LM R14,R15,PQMSKDUM INITIAL VALUES AND COUNT FOR P-DISK, 01113000
  1257. MH R7,RECCYL+2 OBTAIN TOTAL NO. OF RECORDS 01114000
  1258. CL R7,LIMFILST EXCEED CMS FILE SYSTEM LIMIT ? @VA03452 01115000
  1259. BNH *+8 NOPE - OK. @VA03452 01116000
  1260. L R7,LIMFILST YES - LIMIT TO WHAT IT CAN DO. @VA03452 01117000
  1261. SPACE 01118000
  1262. * NOTE: LEAVE TOTAL NUMBER OF RECORDS (BITS IN BIT-MAP) "AS IS" 01119000
  1263. * (NOT NECESSARY TO TRUNCATE TO AN EVEN NUMBER OF BYTES). 01120000
  1264. SPACE 01121000
  1265. CLI OPTFLAG,C'R' WAS IT FORMAT R? 01122000
  1266. BNE REALFMT FLAG SAYS REAL FORMAT. 01123000
  1267. * FOR FORMAT WITH "RECOMP" OPTION, RECOMPUTE DISK-STATISTICS: 01124000
  1268. LR R3,R7 REMEMBER SIZE OF NEW BIT-MASK, 01125000
  1269. MVC ZADTPQM3,ADTPQM3 SAVE 'OLD' ADTPQM3 (R0NUM), 01126000
  1270. MVC ZADTMSK,ADTMSK SAVE ADDRESS OF 'OLD' PQMSK, 01127000
  1271. C R7,ADTNUM COMPARE NEW BIT-MASK WITH OLD ONE, 01128000
  1272. BNH R7OK NO PROBLEM IF = OLD ONE (OR LESS) 01129000
  1273. L R7,ADTNUM SUBSTITUTE 'OLD' NUMTRKS IF IT WAS LESS. 01130000
  1274. R7OK ST R7,ADTNUM STORE 'NEW' NUMTRKS (OR NOTRKST) 01131000
  1275. LR R14,R5 SAVE STARTING ADDRESS FOR LATER USE, 01132000
  1276. LR R10,R5 NEED IN R10 FOR INITIAL VALUE OF LASTRK. 01133000
  1277. LA R6,1 INCREMENTER (ONE BYTE) 01134000
  1278. LR R9,R7 SAVE TOTAL NUMTRKS FOR LATER IN R9, 01135000
  1279. LA R7,7(,R7) ROUND BEFORE CONVERTING TO BYTES @VA03452 01136000
  1280. SRA R7,3 OBTAIN NO. IN BYTES, 01137000
  1281. AR R7,R5 PLUS STARTING-ADDRESS, 01138000
  1282. SR R7,R6 LESS 1 FOR BXLE LOOP. 01139000
  1283. * NOTE -- THIS COMPUTATION PERFORMED VERY SELDOM, SO DON'T CARE 01140000
  1284. * ABOUT THE SPEED OR ELEGANCE OF THE CODE, AS LONG AS IT WORKS. 01141000
  1285. SR R8,R8 LET R8 = QTUSEDP 01142000
  1286. * NOTE -- R9 WILL BE 'QTLEFTP' LATER 01143000
  1287. JSLOOP TM 0(R5),X'FF' CHECK A BYTE OF PQMSK, 01144000
  1288. BZ JBXLE IF =00, GO TO BXLE 01145000
  1289. LR R10,R5 NEW 'LASTRK' IF BYTE NONZERO 01146000
  1290. BO INC8 IF BYTE = ALL ONES, INCREMENT BY 8 01147000
  1291. * CHECK EACH BIT OF THIS BYTE IF BYTE NOT ALL 0 OR ONES... 01148000
  1292. TM 0(R5),X'80' CHECK FIRST BIT, 01149000
  1293. BZ *+6 BZ IF THIS BIT = 0, 01150000
  1294. AR R8,R6 INCREMENT 'QTUSEDP' BY 1 IF NONZERO 01151000
  1295. TM 0(R5),X'40' CHECK SECOND BIT, 01152000
  1296. BZ *+6 BZ IF THIS BIT = 0, 01153000
  1297. AR R8,R6 INCREMENT 'QTUSEDP' BY 1 IF NONZERO 01154000
  1298. TM 0(R5),X'20' CHECK THIRD BIT 01155000
  1299. BZ *+6 BZ IF THIS BIT = 0, 01156000
  1300. AR R8,R6 INCREMENT 'QTUSEDP' BY 1 IF NONZERO 01157000
  1301. TM 0(R5),X'10' CHECK FOURTH BIT, 01158000
  1302. BZ *+6 BZ IF THIS BIT = 0, 01159000
  1303. AR R8,R6 INCREMENT 'QTUSEDP' BY 1 IF NONZERO 01160000
  1304. TM 0(R5),X'08' CHECK FIFTH BIT, 01161000
  1305. BZ *+6 BZ IF THIS BIT = 0, 01162000
  1306. AR R8,R6 INCREMENT 'QTUSEDP' BY 1 IF NONZERO 01163000
  1307. TM 0(R5),X'04' CHECK SIXTH BIT, 01164000
  1308. BZ *+6 BZ IF THIS BIT = 0, 01165000
  1309. AR R8,R6 INCREMENT 'QTUSEDP' BY 1 IF NONZERO 01166000
  1310. TM 0(R5),X'02' CHECK SEVENTH BIT 01167000
  1311. BZ *+6 BZ IF THIS BIT = 0, 01168000
  1312. AR R8,R6 INCREMENT 'QTUSEDP' BY 1 IF NONZERO 01169000
  1313. TM 0(R5),X'01' CHECK EIGHTH BIT 01170000
  1314. BZ *+6 BZ IF THIS BIT = 0, 01171000
  1315. AR R8,R6 INCREMENT 'QTUSEDP' BY 1 IF NONZERO 01172000
  1316. BXLE R5,R6,JSLOOP ITERATE SCANNING LOOP. 01173000
  1317. B JTHRU JOIN BELOW IF/WHEN THRU HERE. 01174000
  1318. * 01175000
  1319. INC8 LA R8,8(,R8) INCREMENT QTUSEDP BY 8 IF THIS BYTE ALL 1 01176000
  1320. JBXLE BXLE R5,R6,JSLOOP ITERATE FOR AS MANY BYTES AS IN PQMSK 01177000
  1321. JTHRU SR R9,R8 R9 NOW = NUMBER OF BITS LEFT IN PQMSK 01178000
  1322. SR R10,R14 SUBTRACT 'BASE' OF PQMSK OR TQMSK, 01179000
  1323. STM R8,R10,ADTUSED STORE THE REMAINING THREE COUNTERS. 01180000
  1324. XC ADT1ST(4),ADT1ST CLEAR 'ADT1ST' TO BE ON SAFE SIDE 01181000
  1325. L R8,LIMCYL DESIRED NO. OF CYLINDERS INTO R8, 01182000
  1326. C R8,NUMCYL LESS THAN NUMBER ACTUALLY THERE ? 01183000
  1327. BL JCON6A BL IF YES, MAKE SPECIAL CHECK. 01184000
  1328. C R3,ADTNUM 'NEW' NUMTRKS BIGGER THAN 'OLD' ? 01185000
  1329. BNH STNEWCYL BNH IF NOT, STORE ADTCYL & EXIT. 01186000
  1330. JCON6 LR R7,R3 NEW 'NUMTRKS' INTO R7, 01187000
  1331. L R9,PQMSKDUM FIRST WORD FOR BIT-MASK INTO R9 (NEEDED) 01188000
  1332. LA R2,JCON7 SET R2 'SWITCH' TO RETURN BELOW, 01189000
  1333. B JCON8 AND GO GET 'NEW' PQMSK. 01190000
  1334. * UPON RETURN, MOVE OLD PQMSK INTO THE NEW ONE, 01191000
  1335. * RE-COMPUTE DISK-COUNTS AS NECESSARY, 01192000
  1336. * AND 'FRET' THE OLD PQMSK; THEN GO UPDATE DIRECTORY. 01193000
  1337. JCON7 L R0,ZADTPQM3+4 STARTING-ADDRESS OF OLD BIT-MAP @VA03452 01194000
  1338. L R2,ADTMSK STARTING-ADDRESS OF NEW BIT-MAP @VA03452 01195000
  1339. * (WHICH HAS ALREADY BEEN CLEARED) 01196000
  1340. LA R1,1 ONE + NEW "ADTLAST" = @VA03452 01197000
  1341. A R1,ADTLAST NUMBER OF BYTES TO BE MOVED @VA03452 01198000
  1342. LR R3,R1 IN R1 AND R3 @VA03452 01199000
  1343. MVCL R2,R0 OUR PAL "MVCL" DOES ALL THE WORK @VA03452 01200000
  1344. L R1,ADTPQM2 GET NO. OF PQMSK EXTENSION(S), 01201000
  1345. L R15,ADTLAST CHECK OLD 'ADTLAST' 01202000
  1346. CH R15,=H'215' COMPARE WITH 215 01203000
  1347. BNL JCON9B IF 215 OR MORE, R1 IS OK 01204000
  1348. AR R1,R1 DOUBLE ADTPQM2 FOR WORST CASE LOGIC 01205000
  1349. JCON9B A R1,ADTHBCT ADD HYPERBLOCK COUNT, 01206000
  1350. LA R1,1(,R1) PLUS 1 = RESERVE-COUNT 01207000
  1351. STH R1,ADTRES STORE CORRECT RESERVE-COUNT. 01208000
  1352. LM R0,R1,ZADTPQM3 SIZE & STARTING-ADDRESS OF OLD PQMSK, 01209000
  1353. * RELEASE STORAGE FROM OLD BIT-MASK 01210000
  1354. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @VM03083 01211000
  1355. STNEWCYL OI FLAG,STAT SET 'STAT' FLAG, 01212000
  1356. JCON9A MVC ADTCYL(4),NUMCYL STORE CORRECT NO. OF CYLINDERS, 01213000
  1357. B UPDIR AND GO UPDATE DIRECTORY. 01214000
  1358. * 01215000
  1359. JCON6A MH R8,RECCYL+2 DESIRED NO. OF CYL. TO 'NUMTRKS' FORM, 01216000
  1360. CL R8,LIMFILST EXCEED CMS FILE SYSTEM LIMIT ? @VA03452 01217000
  1361. BNH *+8 NOPE - OK. @VA03452 01218000
  1362. L R8,LIMFILST YES - LIMIT TO WHAT IT CAN DO. @VA03452 01219000
  1363. LR R15,R8 REMEMBER "NEW" ADTNUM IN R15 @VA03452 01220000
  1364. LA R8,7(,R8) ROUND BEFORE CONVERTING TO BYTES @VA03452 01221000
  1365. SRL R8,3 CONVERT BIT-COUNT TO BYTE-COUNT @VA03452 01222000
  1366. C R8,ADTLAST WILL WE LOSE ANY DATA THIS WAY ? 01223000
  1367. BL DATALOSS BL IF YES (WE CAN'T DO IT). 01224000
  1368. LR R8,R15 "NEW" ADTNUM IN R8 AND R15 @VA03452 01225000
  1369. S R15,ADTUSED COMPUTE TENTATIVE 'ADTLEFT' 01226000
  1370. CH R15,ADTRES MUST EXCEED (OR EQUAL) 'RESERVE-COUNT' 01227000
  1371. BL DATALOSS DON'T ALLOW IT IF IT DOESN'T. 01228000
  1372. LR R15,R8 IF OK, RELOAD R15 AGAIN, 01229000
  1373. SR R14,R14 CLEAR R14, AND 01230000
  1374. D R14,RECCYL NUMTRKS/40 OR /150 GIVES NEW 'NUMCYL' 01231000
  1375. LTR R14,R14 CHECK REMAINDER, 01232000
  1376. BZ NEWCYLOK BZ IF 0, 01233000
  1377. LA R15,1(,R15) ADJUST R15 OTHERWISE 01234000
  1378. NEWCYLOK ST R15,NUMCYL STORE RECOMPUTED NO. OF CYLINDERS. 01235000
  1379. LR R3,R8 'NEW' NUMTRKS INTO R3, 01236000
  1380. C R3,ADTNUM COMPARE WITH 'OLD' VALUE, 01237000
  1381. BH JCON6 WE MUST EXPAND IT IF GREATER. 01238000
  1382. BE STNEWCYL IF = NOTHING TO DO AT ALL. 01239000
  1383. ST R3,ADTNUM STORE NEW VALUE IF LESS, 01240000
  1384. S R3,ADTUSED COMPUTE NUMBER LEFT, 01241000
  1385. ST R3,ADTLEFT AND STORE IT. 01242000
  1386. B STNEWCYL GO EXIT (OTHER COUNTS SHOULD BE OK). 01243000
  1387. * 01244000
  1388. ZADTPQM3 DC F'0' (1) OLD ADTPQM3 (R0NUM) SAVED HERE 01245000
  1389. ZADTMSK DC F'0' (2) OLD ADTMSK = A(PQMSK) SAVED HERE 01246000
  1390. * 01247000
  1391. NUMCYL DC F'0' NUMBER OF CYLINDERS FOUND BY "FORMAT - C/R" 01248000
  1392. * (STORED HERE TEMPORARILY) 01249000
  1393. EJECT 01250000
  1394. * INITIALIZE BIT-MASK ("PQMSK") FOR REAL FORMAT ... 01251000
  1395. * 01252000
  1396. REALFMT LR R9,R14 SAVE 1ST WORD OF PQMSK (WILL STORE LATER) 01253000
  1397. ST R15,ADTUSED STORE NO. OF BYTES IN USE (E.G. 4) 01254000
  1398. LA R2,JCON10 SET R2 'SWITCH' TO CONTINUE IN LINE BELOW 01255000
  1399. JCON8 XC ADTPQM1(8),ADTPQM1 CLEAR PQMSIZ & PQMNUM (TENTATIVELY) 01256000
  1400. LR R1,R7 NEW 'NUMTRKS' INTO R1, 01257000
  1401. LA R1,7(,R1) ROUND BEFORE CONVERTING TO BYTES @VA03452 01258000
  1402. SRA R1,3 CHANGE FROM BITS TO BYTES, 01259000
  1403. LR R15,R1 SAVE IN R1,PUT IN R15 ALSO 01260000
  1404. SH R15,=H'215' SUBTRACT MINIMUM OF 215 BYTES, 01261000
  1405. BNP FREPQ TRANSFER IF 215 OR LESS. 01262000
  1406. ST R15,ADTPQM1 STORE SIZE FOR READ OR WRITE, 01263000
  1407. SR R14,R14 DIVIDE 01264000
  1408. D R14,=F'800' BY 800, 01265000
  1409. LTR R14,R14 CHECK FOR ZERO-REMAINDER 01266000
  1410. BZ STR15P (POSSIBLE ALBEIT UNLIKELY) 01267000
  1411. LA R15,1(,R15) ADJUST QUOTIENT (UNLESS REM=0) 01268000
  1412. STR15P ST R15,ADTPQM2 STORE NUMBER OF TRACKS NEEDED 01269000
  1413. FREPQ LA R0,7(,R1) NOW GET TOTAL SIZE OF 01270000
  1414. SRA R0,3 PQMSK ROUNDED UP TO DBL-WORDS, 01271000
  1415. * OBTAIN FREE STORAGE FOR PQMASK 01272000
  1416. DMSFREE DWORDS=(0),TYPE=NUCLEUS,TYPCALL=BALR @VM03083 01273000
  1417. ST R0,ADTPQM3 SAVE NO. DBL-WORDS OF FREE STORAGE 01274000
  1418. LR R5,R1 PLACE IN R5, 01275000
  1419. ST R5,ADTMSK STORE ADDRESS OF NEW PQMSK (OR TQMSK) 01276000
  1420. ST R7,ADTNUM STORE NEW VALUE OF 'NUMTRKS' 01277000
  1421. USING PTQSECT,R5 FOR A WHILE ... 01278000
  1422. ST R9,PQMSK INITIALIZE FIRST FULL-WORD OF PQMSK, 01279000
  1423. LR R8,R7 NO OF RECORDS INTO R8 BRIEFLY, 01280000
  1424. S R8,ADTUSED SUBTRACT NO. IN USE (E.G. 4) 01281000
  1425. BP STR8 OK IF PLUS. 01282000
  1426. SR R8,R8 DON'T STORE A NEGATIVE NUMBER, 01283000
  1427. STR8 ST R8,ADTLEFT STORE THE NUMBER LEFT. 01284000
  1428. SR R9,R9 CLEAR R9, 01285000
  1429. ST R9,PQMSK+4 CLEAR 2ND FULL WORD OF PQMSK 01286000
  1430. LR R7,R0 NUMBER OF DOUBLE WORDS, 01287000
  1431. SH R7,=H'1' LESS 1 FOR THAT ALREADY DONE, 01288000
  1432. BNP BRR2 DON'T CLEAR ANY MORE IF NONE THERE. 01289000
  1433. SR R10,R10 CLEAR R10 FOR USE BELOW, 01290000
  1434. LA R15,8 R15 = INCREMENTER FOR NEXT DBL-WORD, 01291000
  1435. LA R14,CLRMSK R14 = A(CLRMSK), 01292000
  1436. CLRMSK STM R9,R10,PQMSK+8 CLEAR ONE DBL-WORD, 01293000
  1437. AR R5,R15 INCREMENT FOR NEXT ONE, 01294000
  1438. BCTR R7,R14 ITERATE FOR NUMBER OF BYTES IN PQMSK. 01295000
  1439. DROP R5 01296000
  1440. BRR2 BR R2 CONTINUE OR BRANCH TO 'JCON7' ... 01297000
  1441. * 01298000
  1442. JCON10 ST R9,ADTLAST CLEAR ADTLAST ('LASTRK') 01299000
  1443. ST R9,ADT1ST AND 'ADT1ST'. 01300000
  1444. L R15,ADTFDA GET A(PSTAT) 01301000
  1445. LA R15,8(,R15) SPACE OVER PRELIMINARY COUNTERS, 01302000
  1446. ST R15,ADTLHBA STORE NEEDED ADCON "ADTLHBA" 01303000
  1447. LA R9,1 R9 = 1, 01304000
  1448. ST R9,ADTHBCT SET HYPERBLOCK COUNT = 1, 01305000
  1449. AR R9,R9 R9 = 2 NOW, 01306000
  1450. A R9,ADTPQM2 ADD NO. 800-BYTE RECORDS NEEDED FOR PQMSK 01307000
  1451. A R9,ADTPQM2 ADD ADTPQM2 AGAIN FOR WORST CASE LOGIC 01308000
  1452. STH R9,ADTRES AND STORE VALUE OF 'RESERVE COUNT' 01309000
  1453. OI ADTFLG1,ADTFRW SET READ-WRITE FLAG IN ADTFLG1, 01310000
  1454. OI ADTFLG2,ADTFALUF FLAG 'ALL UFD IN CORE' (THOUGH NULL) 01311000
  1455. * 01312000
  1456. * NOTE: ALL OTHER QUANTITIES IN ACTIVE-DISK-TABLE ALREADY 01313000
  1457. * = 0 (THEIR CORRECT VALUE) FROM EARLIER CALL TO "RELUFD". 01314000
  1458. * 01315000
  1459. UPDIR LR R0,R13 SET UP R0, 01316000
  1460. LA R1,1 R1 = PLUS (ANYTHING), 01317000
  1461. SSM NOINTS NO INTERRUPTS NOW, 01318000
  1462. L R15,AUPDISK UPDATE USER-FILE-DIRECTORY 01319000
  1463. BALR R14,R15 ... 01320000
  1464. * 01321000
  1465. TM FLAG,LAB ARE WE GOING TO LABEL THIS DISK ? 01322000
  1466. BO LABONLY YES. 01323000
  1467. LM1415 TM FLAG,STAT IF NOT, IS CALL TO 'STAT' WANTED ? 01324000
  1468. BZ FMTEXIT BZ IF NOT. 01325000
  1469. MVC STATLTR(1),ADTM 01326000
  1470. LA R1,STATLST IF YES, CALL 'STAT' 01327000
  1471. SVC X'CA' (PARAMETER-LIST ALL SET) 01328000
  1472. DC AL4(*+4) IGNORE POSSIBLE IF UNLIKELY ERROR 01329000
  1473. FMTEXIT DMSKEY RESET 01330000
  1474. LM R14,R15,SAVE14 RESTORE R14, RETURN-CODE INTO R15, 01331000
  1475. BR R14 AND RETURN TO CALLER. 01332000
  1476. EJECT 01333000
  1477. DS 0F 01334000
  1478. STATLST DC CL8'QUERY' TO CALL 'STAT' ROUTINE ... 01335000
  1479. DC CL8'DISK' 01336000
  1480. STATLTR DC CL8'Z ' (FILLED IN) 01337000
  1481. DC X'FFFFFFFF' 01338000
  1482. * 01339000
  1483. DS 0F 01340000
  1484. PQMSKDUM DC X'F0000000' DEFAULT FOR FIRST WORD OF PQMSK 01341000
  1485. DC F'4' (MUST FOLLOW) - NO. OF ONE'S IN ABOVE. 01342000
  1486. EJECT 01343000
  1487. CHEK3330 LA R10,TAB3330 USE 3330 SPECS. 01344000
  1488. B CHEKJOIN 01345000
  1489. CHEK3340 LA R10,TAB3340 USE 3340 SPECS @V2A2014 01346000
  1490. B CHEKJOIN @V2A2014 01347000
  1491. CHEK3350 LA R10,TAB3350 USE 3350 SPECS @V304498 01348000
  1492. B CHEKJOIN @V304498 01349000
  1493. CHEK3380 LA R10,TAB3380 USE 3380 SPECS HRC004DS 01349300
  1494. B CHEKJOIN HRC004DS 01349600
  1495. CHEK2314 LA R10,TAB2314 USE 2314 SPECS. 01350000
  1496. B CHEKJOIN 01351000
  1497. USING JTABLE,R10 ... 01352000
  1498. CHEKJOIN BAL R15,VERIFY 01353000
  1499. SR R7,R7 01354000
  1500. * NOTE --R7 = NUMBER OF CYLINDERS FORMATTED SO FAR 01355000
  1501. JSIO ST R7,SEEKC STORE CYLINDER-NUMBER IN CCW'S 01356000
  1502. LA R14,JCCWS GET ADDRESS OF CCWS 01357000
  1503. SSM NOINTS NO INTERRUPTS WHILE SIO, PLEASE... 01358000
  1504. ST R14,ZCAW PUT IN CAW 01359000
  1505. DC X'835E0020' 01360000
  1506. BNZ CKERROR 01361000
  1507. LA R7,1(,R7) INCREMENT NUMBER OF CYLINDERS CHECKED 01362000
  1508. CH R7,MAXCYL HAVE WE REACHED THE MAXIMUM? 01363000
  1509. BL JSIO BL IF NOT, KEEP TRYING. 01364000
  1510. JYESEND ST R7,NUMCYL STORE NUMBER OF CYLINDERS FORMATTED 01365000
  1511. B FINCOMP GO MAKE FINAL COMPUTATIONS 01366000
  1512. * 01367000
  1513. JCCWS CCW 7,SEEKC,CC+SILI,6 SEEK A CYLINDER (FROM 0 UP) 01368000
  1514. CCW 3,*,SILI,1 NO-OP (CE & DE TOGETHER) 01369000
  1515. SEEKC DC F'0',H'0' CYLINDER-ADDRESS, ETC. 01370000
  1516. * 01371000
  1517. CKERROR ST R14,SCRATCH 01372000
  1518. CLI SENSE,X'81' 01373000
  1519. BE JYESEND 01374000
  1520. CLI DEVADDR+3,T2314 IS THIS A 2314 ? @V2A2014 01375000
  1521. BNE CKSNS NO.. OK, MUST BE 3330 OR 3340 @V2A2014 01376000
  1522. B ERR10XX @V2A2014 01377000
  1523. CKSNS CLI SENSE,X'80' VALID SENSE 3330/3340 @V2A2014 01378000
  1524. BE JYESEND 01379000
  1525. ERR10XX BAL R3,ERR10 01380000
  1526. B JYESEND 01381000
  1527. EJECT 01382000
  1528. LABONLY CLI OPTFLAG,C'L' 01383000
  1529. BNE GOAHEAD 01384000
  1530. BAL R15,VERIFY 01385000
  1531. GOAHEAD ST R13,LABACT STORE A(ACTIVE-DISK-TABLE) WHERE NEEDED, 01386000
  1532. L R15,ARDTK POINT TO RDTK, 01387000
  1533. LA R1,LABLIST SET UP R1 TO P-LIST, 01388000
  1534. SSM NOINTS 01389000
  1535. BALR R14,R15 READ IN OLD LABEL WITH RDTK 01390000
  1536. SSM OK81 01391000
  1537. LTR R15,R15 CHECK ERROR-CODE 01392000
  1538. LA R15,=CL4'READ' 01393000
  1539. BNZ ERR9 BAD SHOW IF ERROR. 01394000
  1540. MVC DISKBUF(10),CMSEQ "CMS=" TO DISK-BUFFER, 01395000
  1541. MVC ADTID(6),INBUF STORE DISK-LABEL IN ACTIVE DISK TABLE 01396000
  1542. L R15,AWRTK POINT TO WRTK, 01397000
  1543. LA R1,LABLIST SET UP R1 TO P-LIST AGAIN, 01398000
  1544. SSM NOINTS 01399000
  1545. BALR R14,R15 WRITE BACK ON DISK WITH NEW LABEL, 01400000
  1546. SSM OK81 01401000
  1547. LTR R15,R15 CHECK ERROR-CODE 01402000
  1548. BZ LM1415 GOOD SHOW IF NO ERRORS, WE'RE DONE. 01403000
  1549. LA R15,=CL4'WRIT' 01404000
  1550. B ERR9 01405000
  1551. SPACE 01406000
  1552. DS 0F 01407000
  1553. LABLIST DC A(DISKBUF) CORE-BUFFER FOR READ/WRITE LABEL 01408000
  1554. DC F'800' 800 BYTES 01409000
  1555. DC A(THREE) CORE-ADDRESS OF DISK-ADDRESS 01410000
  1556. LABACT DC A(*-*) A (ACTIVE-DISK-TABLE) FILLED IN HERE 01411000
  1557. THREE DC H'0003' 01412000
  1558. SPACE 01413000
  1559. VERIFY TM ADTFLG1,ADTFRO+ADTFRW 01414000
  1560. L R6,ADTDTA GET ADDRESS OF DEVICE TABLE ENTRY. V0419 01415000
  1561. CLC DTAD(2,R6),DEVADDR COMPARE WITH DEVICE SPECIFIED. V0419 01416000
  1562. BNE ERR13 CAN'T ALLOW A FAST ONE. V0419 01417000
  1563. TM ADTFLG1,ADTFRW 01418000
  1564. BNO ERR12 01419000
  1565. BR R15 01420000
  1566. EJECT 01421000
  1567. ERR1 DMSERR NUM=28,LET=E,TEXT='NO DEVICE SPECIFIED' 01422000
  1568. MVI ERRKODE,24 01423000
  1569. B LM1415 01424000
  1570. SPACE 01425000
  1571. ERR2 LR R3,R1 01426000
  1572. DMSERR NUM=17,LET=E,SUB=(CHARA,(3)), X01427000
  1573. TEXT='INVALID DEVICE ADDRESS ''........''' 01428000
  1574. MVI ERRKODE,24 01429000
  1575. B LM1415 01430000
  1576. SPACE 01431000
  1577. ERR3 LR R3,R1 01432000
  1578. DMSERR NUM=48,LET=E,SUB=(CHARA,(3)), X01433000
  1579. TEXT='INVALID MODE ''........''' 01434000
  1580. MVI ERRKODE,24 01435000
  1581. B LM1415 01436000
  1582. SPACE 01437000
  1583. ERR4 LR R3,R1 01438000
  1584. DMSERR NUM=70,LET=E,SUB=(CHARA,(3)), X01439000
  1585. TEXT='INVALID PARAMETER ''........''' 01440000
  1586. MVI ERRKODE,24 01441000
  1587. B LM1415 01442000
  1588. SPACE 01443000
  1589. ERR5 LR R3,R1 01444000
  1590. DMSERR NUM=3,LET=E,SUB=(CHARA,(3)), X01445000
  1591. TEXT='INVALID OPTION ''........''' 01446000
  1592. MVI ERRKODE,24 01447000
  1593. B LM1415 01448000
  1594. SPACE 01449000
  1595. ERR6 DMSERR NUM=113,LET=S,SUB=(HEXA,DEVADDR-2), P0801X01450000
  1596. TEXT='DEVICE ''...'' NOT ATTACHED' P0801 01451000
  1597. MVI ERRKODE,100 01452000
  1598. B LM1415 01453000
  1599. SPACE 01454000
  1600. ERR7 DMSERR NUM=114,LET=S,SUB=(HEXA,DEVADDR-2), *01455000
  1601. TEXT='''...'' IS AN UNSUPPORTED DEVICE TYPE' @VA02853 01456000
  1602. MVI ERRKODE,88 01457000
  1603. B LM1415 01458000
  1604. SPACE 01459000
  1605. ERR8 DMSERR NUM=705,LET=I,TEXT='DISK REMAINS UNCHANGED' 01460000
  1606. MVI ERRKODE,00 01461000
  1607. B LM1415 01462000
  1608. SPACE 01463000
  1609. ERR9 DMSERR NUM=126,LET=S,SUB=(CHARA,((15),4),CHARA,(ADTM,1), P0801X01464000
  1610. HEXA,DEVADDR-2),TEXT='ERROR ....ING LABEL ON DISK ''..(.X01465000
  1611. ..)''',RENT=NO 01466000
  1612. MVI ERRKODE,100 01467000
  1613. B LM1415 01468000
  1614. SPACE 01469000
  1615. ERR10 DMSERR NUM=125,LET=S,SUB=(CHARA,(ADTM,1),HEXA,DEVADDR-2),TEXT=X01470000
  1616. 'PERMANENT UNIT CHECK ON DISK ''..(...)''',RENT=NO 01471000
  1617. MVI ERRKODE,100 01472000
  1618. B YESEND1 @VA01447 01473000
  1619. SPACE 01474000
  1620. ERR11 DMSERR NUM=69,LET=E,SUB=(CHARA,(ADTM,1)),TEXT='DISK ''..'' NOTX01475000
  1621. ACCESSED' 01476000
  1622. MVI ERRKODE,36 01477000
  1623. B FMTEXIT 01478000
  1624. SPACE 01479000
  1625. ERR12 DMSERR NUM=37,LET=E,SUB=(HEXA,DEVADDR-2), X01480000
  1626. TEXT='DISK ''...'' IS READ/ONLY' 01481000
  1627. MVI ERRKODE,36 01482000
  1628. B FMTEXIT 01483000
  1629. SPACE 1 01484000
  1630. ERR13 DMSERR NUM=69,LET=E,SUB=(CHARA,(ADTM,1),HEXA,DEVADDR-2), X01485000
  1631. TEXT='DISK ''..(...)'' NOT ACCESSED',RENT=NO 01486000
  1632. MVI ERRKODE,36 V0419 01487000
  1633. B FMTEXIT V0419 01488000
  1634. SPACE 1 01489000
  1635. ASK LA R2,8(,R6) 01490000
  1636. LA R3,8(,R2) 01491000
  1637. DMSERR NUM=603,LET=R,DOT=NO,SUB=(CHARA,((3),1),CHARA,((2),3)),X01492000
  1638. TEXT='FORMAT WILL ERASE ALL FILES ON DISK ''..(...)''. X01493000
  1639. DO YOU WISH TO CONTINUE? (YES|NO):',RENT=NO 01494000
  1640. BR R7 01495000
  1641. * 01496000
  1642. ASKAGAIN DMSERR NUM=605,LET=R,DOT=NO,TEXT='ENTER DISK LABEL:' 01497000
  1643. BR R7 01498000
  1644. * 01499000
  1645. DATALOSS DMSERR NUM=214,LET=W,TEXT='CANNOT RECOMPUTE WITHOUT LOSS OF DAX01500000
  1646. TA. NO CHANGE' 01501000
  1647. MVI ERRKODE,8 @VA02851 01502000
  1648. B UPDIR LEAVE ADTCYL AS IS & UPDATE DIR. @VA03452 01503000
  1649. TYPECYL TM FLAG,TDK P0586 01504000
  1650. BCR 1,R3 P0586 01505000
  1651. DMSERR NUM=732,LET=I,SUB=(DECA,ADTCYL,CHARA,(ADTM,1),HEXA, X01506000
  1652. DEVADDR-2),TEXT='''...'' CYLINDERS FORMATTED ON ''..(...X01507000
  1653. )''',RENT=NO 01508000
  1654. BR R3 01509000
  1655. * 01510000
  1656. HANDHOLD DMSERR NUM=733,LET=I,SUB=(CHARA,(ADTM,1)),TEXT='FORMATTING DISX01511000
  1657. K ''..''' 01512000
  1658. BR R7 01513000
  1659. EJECT 01514000
  1660. LTORG 01515000
  1661. * 01516000
  1662. ZCAW EQU X'48' 01517000
  1663. ZIONP EQU X'78' 01518000
  1664. CC EQU X'40' 01519000
  1665. SILI EQU X'20' 01520000
  1666. NO EQU X'10' 01521000
  1667. CE EQU X'08' 01522000
  1668. DE EQU X'04' 01523000
  1669. UC EQU X'02' UNIT CHECK BIT OF CSW 01524000
  1670. * 01525000
  1671. T3340 EQU X'07' @V2A2014 01526000
  1672. T2314 EQU X'08' @V2A2014 01527000
  1673. T3330 EQU X'09' @V2A2014 01528000
  1674. T3350 EQU X'0B' CMS' 3350 DEVICE TYPE @V304498 01529000
  1675. T3380 EQU X'0E' CMS' 3350 DEVICE TYPE HRC004DS 01529500
  1676. * 01530000
  1677. * 01531000
  1678. TAB2314 DS 0F 01532000
  1679. DC F'150' 01533000
  1680. DC F'15' 01534000
  1681. DC H'2' 01535000
  1682. DC H'8' 01536000
  1683. DC H'20' 01537000
  1684. DC H'203' 01538000
  1685. DC F'30450' MAX. NO. OF RECORDS = 150 X 203 @VA03452 01539000
  1686. * 01540000
  1687. TAB3350 DS 0F 3350 STATS TABLE @V304498 01541000
  1688. DC F'570' NUMBER OF RECORDS PER CYLINDER @V304498 01542000
  1689. DC F'19' NUMBER OF RECORDS PER ... @V304498 01543000
  1690. DC H'1' PER ONE HEAD. @V304498 01544000
  1691. DC H'20' OVERFLOW-NUMBER NUMBER @V304498 01545000
  1692. DC H'30' NUMBER OF TRACKS PER CYLINDER @V304498 01546000
  1693. MAX3350 DC H'115' 114 CYL + 29 TRACKS ON 115TH CYL @V304498 01547000
  1694. DC F'65531' MAX. NO OF RECORDS FOR 3350 ... @V304498 01548000
  1695. * = 64980 (570 X 114) + 551 (19 X 2HRC004DS 01549070
  1696. * HRC004DS 01549140
  1697. TAB3380 DS 0F 3380 STATS TABLE HRC004DS 01549210
  1698. DC F'540' NUMBER OF RECORDS PER CYLINDER HRC004DS 01549280
  1699. DC F'36' NUMBER OF RECORDS PER ... HRC004DS 01549350
  1700. DC H'1' PER ONE HEAD. HRC004DS 01549420
  1701. DC H'37' OVERFLOW-NUMBER NUMBER HRC004DS 01549490
  1702. DC H'15' NUMBER OF TRACKS PER CYLINDER HRC004DS 01549560
  1703. MAX3380 DC H'121' 121 CYL HRC004DS 01549630
  1704. DC F'65340' MAX. NO OF RECORDS FOR 3380 ... HRC004DS 01549700
  1705. * = 65340 (540 X 121) HRC004DS 01549770
  1706. TAB3330 DS 0F 01550000
  1707. DC F'266' 01551000
  1708. DC F'14' 01552000
  1709. DC H'1' 01553000
  1710. DC H'15' 01554000
  1711. DC H'19' 01555000
  1712. DC H'246' 01556000
  1713. DC F'65436' MAX. NO. OF RECORDS = 266 X 246 @VA03452 01557000
  1714. * 01558000
  1715. TAB3340 DS 0F 3340 STATS TABLE @V2A2014 01559000
  1716. DC F'96' @V2A2014 01560000
  1717. DC F'8' @V2A2014 01561000
  1718. DC H'1' @V2A2014 01562000
  1719. DC H'9' @V2A2014 01563000
  1720. DC H'12' @V2A2014 01564000
  1721. MAX3340 DC H'682' @V2A2014 01565000
  1722. DC F'65472' MAX. NO. OF RECORDS = 96 X 682 @VA03452 01566000
  1723. * 01567000
  1724. JTABLE DSECT 01568000
  1725. * DEFAULT VALUES FOR 2314 ARE SHOWN ... 01569000
  1726. RECCYL DS F'150' NUMBER OF RECORDS PER CYLINDER 01570000
  1727. RECHED DS F'15' NUMBER OF RECORDS PER ... 01571000
  1728. NUMHED DS H'2' PER ONE OR TWO HEADS. 01572000
  1729. OVEREC DS H'8' OVERFLOW-RECORD NUMBER 01573000
  1730. HEDCYL DS H'20' NUMBER OF HEADS (TRACKS) PER CYLINDER 01574000
  1731. MAXCYL DS H'203' MAXIMUM NUMBER OF CYLINDERS 01575000
  1732. LIMFILST DS F'65532' LIMIT CMS FILE SYSTEM CAN HANDLE @VA03452 01576000
  1733. EJECT 01577000
  1734. * 01578000
  1735. NUCON 01579000
  1736. FVS 01580000
  1737. ADT 01581000
  1738. SPACE 2 01582000
  1739. PTQSECT DSECT DSECT FOR "PQMSK" ITSELF 01583000
  1740. * 01584000
  1741. PQMSK DC X'F0000000' FIRST 4 BYTES 01585000
  1742. * (REMAINDER IS OF VARIABLE LENGTH) 01586000
  1743. * 01587000
  1744. DIOSECT 01588000
  1745. EJECT 01589000
  1746. REGEQU 01590000
  1747. DISK EQU R5 01591000
  1748. END 01592000