Table of Contents

DMKDDR Source

References

Source Listing

DMKDDR.ASSEMBLE.txt
  1. DDR TITLE 'DMKDDR (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * 00003000
  4. * MODULE NAME 00004000
  5. * 00005000
  6. * DMKDDR DASD DUMP RESTORE PROGRAM 00006000
  7. * 00007000
  8. * FUNCTION 00008000
  9. * 00009000
  10. * DUMP - TO SAVE DATA FROM A DIRECT ACCESS VOLUME ONTO 00010000
  11. * A MAGNETIC TAPE OR TAPES. THE DATA IS SAVED CYLINDER 00011000
  12. * BY CYLINDER. ANY NUMBER OF CYLINDERS MAY BE SAVED. 00012000
  13. * THE FORMAT OF THE TAPE WILL BE: 00013000
  14. * 00014000
  15. * RECORD (1) VOLUME HEADER RECORD: CONSISTING 00015000
  16. * OF DATA DESCRIBING THE VOLUME. 00016000
  17. * 00017000
  18. * RECORD (2) TRACK HEADER RECORD: CONSISTING OF 00018000
  19. * A LIST OF COUNT FIELDS TO RESTORE THE TRACK AND 00019000
  20. * THE NUMBER OF DATA RECORDS WRITTEN ON TAPE. 00020000
  21. * AFTER THE LAST COUNT FIELD THE RECORD WILL CONTAIN 00021000
  22. * KEY AND DATA RECORDS TO FILL THE 4K BUFFER. 00022000
  23. * 00023000
  24. * RECORD (3) TRACK DATA RECORDS: CONSISTING OF KEY 00024000
  25. * AND DATA RECORDS PACKED INTO 4K BLOCKS WITH THE 00025000
  26. * LAST RECORD TRUNCATED. 00026000
  27. * 00027000
  28. * RECORD (4) END OF VOLUME OR END OF JOB TRAILER 00028000
  29. * LABEL: IT WILL CONTAIN THE SAME INFORMATION 00029000
  30. * AS THE NEXT VOLUME HEADER RECORD. 00030000
  31. * 00031000
  32. * RESTORE - TO RETURN DATA WHICH HAS BEEN DUMPED BY THIS 00032000
  33. * PROGRAM. DATA WILL BE RESTORED ONLY TO A VOLUME 00033000
  34. * OF THE SAME DEVICE TYPE AS IT WAS DUMPED FROM. 00034000
  35. * 00035000
  36. * COPY - TO COPY DATA FROM ONE DEVICE TO ANOTHER 00036000
  37. * DEVICE OF THE SAME TYPE. DATA MAY BE REORDERED ON A 00037000
  38. * CYLINDER BASIS FROM INPUT DEVICE TO OUTPUT DEVICE. 00038000
  39. * TAPE TO TAPE COPY WILL WORK ONLY WITH DATA DUMPED 00039000
  40. * BY THIS PROGRAM. 00040000
  41. * 00041000
  42. * PRINT - TO PRINT A TRANSLATION OF EACH RECORD 00042000
  43. * SPECIFIED ONTO THE SYSPRINT DEVICE. 00043000
  44. * 00044000
  45. * TYPE - TO PRINT A TRANSLATION OF EACH RECORD 00045000
  46. * SPECIFIED ONTO THE CONSOLE. 00046000
  47. * 00047000
  48. EJECT 00048000
  49. * COMMAND LINE UNDER CMS 00049000
  50. * 00050000
  51. * +-----------------------------------------+ 00051000
  52. * | DDR <FILENAME FILETYPE <FILEMODE>> | 00052000
  53. * +-----------------------------------------+ 00053000
  54. * 00054000
  55. * THE DDR COMMAND WILL INVOKE THE PROGRAM UNDER 00055000
  56. * CMS. IF NO FILENAME AND FILETYPE ARE PROVDED THE 00056000
  57. * PROGRAM WILL SOLICIT CONTROL STATEMENTS FROM THE 00057000
  58. * CONSOLE. ELSE IT WILL READ THE CONTROL STATEMENTS 00058000
  59. * FROM THE CMS FILE. THE FILEMODE WILL DEFAULT 00059000
  60. * TO * IF NOT PROVIDED. 00060000
  61. * 00061000
  62. * CONTROL STATEMENTS 00062000
  63. * 00063000
  64. * ALL CONTROL STATEMENTS MAY BE ENTERED FROM THE CONSOLE 00064000
  65. * OR A CARD READER. ONLY COLUMN 1 TO 71 WILL BE 00065000
  66. * INSPECTED BY THE PROGRAM. ALL DATA AFTER THE LAST 00066000
  67. * POSSIBLE PARAMETER ,FOR THE STATEMENT, WILL BE IGNORED. 00067000
  68. * AN AT SIGN WILL BE TREATED AS A LOGICAL BACKSPACE AND 00068000
  69. * A CENT SIGN WILL CANCEL THE TOTAL LINE AND RESULT IN 00069000
  70. * A NEW READ TO THE CONSOLE OR CARD READER. BECAUSE A 00070000
  71. * TAPE MUST HAVE ITS CYLINDER HEADER RECOTDS WRITTEN 00071000
  72. * IN ASSENDING SEQUENCE, THE EXTENTS MUST BE ENTERED IN 00072000
  73. * SEQUENCE BY REORDED CYLINDERS. ONLY ONE TYPE OF 00073000
  74. * BACKUP FUNCTION MAY BE EXECUTED IN ONE STEP. BUT UP 00074000
  75. * TO 20 STATEMENTS DESCRIBING CYLINDER EXTENTS MAY BE 00075000
  76. * ENTERED. THE FUNCTION STATEMENTS WILL BE DELIMITED BY 00076000
  77. * DETECTION OF AN INPUT OR OUTPUT STATEMENT. ALSO A NULL 00077000
  78. * LINE IF THE CONSOLE IS USED FOR INPUT. IF ADDITIONAL 00078000
  79. * FUNCTIONS ARE TO BE PERFORMED, THAN THE SEQUENCE IS 00079000
  80. * REPEATED. ONLY THOSE STATEMENTS NEEDED TO REDEFINE 00080000
  81. * THE IO DEFINITIONS ARE NECESSARY FOR SUBSEQUENT STEPS. 00081000
  82. * ALL OTHER IO DEFINITIONS WILL REMAIN THE SAME. 00082000
  83. * THE PRINT AND TYPE STATEMENTS WORK SLIGHTLY DIFFERENT 00083000
  84. * IN THAT THAY WILL WORK WITH ONLY ONE DATA EXTENT 00084000
  85. * AT A TIME. IF THE INPUT IS FROM A TAPE CREATED BY 00085000
  86. * THE DUMP FUNCTION, IT MUST BE POSITIONED AT THE 00086000
  87. * HEADER RECORD FOR EACH STEP. ALSO THE PRINT AND TYPE 00087000
  88. * STATEMENT HAS AN INPLIED OUTPUT DEFINITION, DESCRIBING 00088000
  89. * THE CONSOLE OR SYSPRINT DEVICE. THEREFOR PRINT AND 00089000
  90. * TYPE STATEMENTS NEAD NOT BE DELIMITED BY AN INPUT 00090000
  91. * OR OUTPUT STATEMENT. 00091000
  92. * 00092000
  93. EJECT 00093000
  94. * IO DEFINITION STATEMENTS 00094000
  95. * 00095000
  96. * +--------+-----------------------------------------------------+ 00096000
  97. * | INPUT | CCU TYPE <VOLSER> | 00097000
  98. * | IN | <ALTAPE> ( SKIP XX MODE 6250 REWIND ) | 00098000
  99. * | OUTPUT | SK MO 62 RE | 00099000
  100. * | OUT | 1600 UNLOAD | 00100000
  101. * | | 16 UN | 00101000
  102. * | | 800 LEAVE | 00102000
  103. * | | 80 LE | 00103000
  104. * +--------+-----------------------------------------------------+ 00104000
  105. * 00105000
  106. * THE INPUT OR OUTPUT CARD IS USED TO DESCRIBE 00106000
  107. * ALL TAPE AND DASD UNITS USED. 00107000
  108. * 00108000
  109. * CCU = THE UNIT ADDRESS OF THE DEVICE 00109000
  110. * 00110000
  111. * TYPE = 2305-1,2305-2,2314,2319,3330,3330-11,3340-35,3340-70, 00111000
  112. * 3350, 3380 HRC012DK 00112490
  113. * 2400,2401,2415,2420,3410,3411,3420 (NO 7-TRK SUPPORT) 00113000
  114. * 2400,2420 OR 3420 (NO 7 TRACK SUPPORT) 00114000
  115. * 00115000
  116. * VOLSER = THE VOLUME SERIAL NUMBER OF A DASD DEVICE. 00116000
  117. * NOTE: IF THE KEYWORD 'SCRATCH' IS SPECIFIED, NO LABEL 00117000
  118. * VERIFICATION WILL BE PERFORMED. 00118000
  119. * 00119000
  120. * ALTAPE = THE ADDRESS OF AN ALTERNATE TAPE DRIVE. 00120000
  121. * 00121000
  122. * THE OPTIONS WILL BE DELIMITED BY A LEFT PARENTHESIS. 00122000
  123. * THE RIGHT PARENTHESIS IS OPTIONAL. THE OPTIONS ONLY 00123000
  124. * APPLY TO TAPE AND MAY BE ENTERED WITHOUT REDEFINING 00124000
  125. * THE INPUT OR OUTPUT UNIT DEFINITION. THE DEFAULT 00125000
  126. * OPTIONS WILL BE SKIP 0 AND UNLOAD. (NO MODE WILL BE SET) 00126000
  127. * NOTE: THE DEFAULTS ARE ASSIGNED WHEN THE DEVICE IS 00127000
  128. * DEFINED. ALL OPTIONS ENTERED WILL THEN OVERRIDE 00128000
  129. * ANY PREVIOUS DEFINITION. ALL OPTIONS ARE SELF DEFINING 00129000
  130. * AND NOT POSITIONAL. 00130000
  131. * 00131000
  132. * SKIP XX WILL FORWARD SPACE FILE THE NUMBER OF 00132000
  133. * TIMES SPECFIED. XX = ANY NUMBER UP TO 255 00133000
  134. * NOTE: THE SKIP OPTION IS RESET TO ZERO AFTER THE 00134000
  135. * TAPE HAS BEEN POSITIONED. 00135000
  136. * 00136000
  137. * THE MODE OPTION WILL CAUSE ALL OUTPUT TAPES, OPENED FOR 00137000
  138. * FIRST TIME AND AT LOAD POINT, TO BE SET TO THE SPECIFIED 00138000
  139. * MODE. ALL SUBSEQUENT TAPES MOUNTED WILL ALSO BE 00139000
  140. * SET TO THE SPECIFIED MODE. IF NO MODE OPTION IS 00140000
  141. * SPECFIED, THAN NO MODE SET IS PERFORMED. 00141000
  142. * 00142000
  143. * 1600 = 9 TRACK 1600 BPI X'C3' 00143000
  144. * 800 = 9 TRACK 800 BPI X'CB' 00144000
  145. * 00145000
  146. EJECT 00146000
  147. * REWIND WILL REWIND THE TAPE AT THE END OF A FUNCTION. 00147000
  148. * 00148000
  149. * UNLOAD WILL REWIND UNLOAD THE TAPE AT THE 00149000
  150. * END OF A FUNCTION. 00150000
  151. * 00151000
  152. * LEAVE WILL LEAVE THE TAPE POSITIONED AFTER THE TAPE 00152000
  153. * MARK AT THE COMPLETION OF A FUNCTION. 00153000
  154. * 00154000
  155. * +-----------------+ 00155000
  156. * | SYSPRINT CCU | 00156000
  157. * | SYS CONS | HRC012DK 00156500
  158. * | SY | 00157000
  159. * +-----------------+ 00158000
  160. * 00159000
  161. * THIS CARD IS USED TO DESCRIBE A PRINTER DEVICE. IT IS 00160000
  162. * USED TO PRINT DATA EXTENTS SPECIFIED BY THE PRINT 00161000
  163. * STATEMENT. IT IS ALSO USED TO PRINT A MAP OF THE 00162000
  164. * CYLINDER EXTENTS FROM THE DUMP, RESTORE OR COPY 00163000
  165. * STATEMENT. IF THE SYSPRINT STATEMENT IS NOT PROVIDED 00164000
  166. * THE DEFAULT DEVICE ADDRESS IS 00E. 00165000
  167. * 00166000
  168. * CCU = THE UNIT ADDRESS OF THE DEVICE 00167000
  169. * 00168000
  170. * FUNCTION STATEMENT 00169000
  171. * 00170000
  172. * +----------+--------------------------------------------+ 00171000
  173. * | DUMP | CCC <TO> <CCC <REORDER> <TO> <CCC>> | 00172000
  174. * | DU | CPVOL T R T | 00173000
  175. * | COPY | CP | 00174000
  176. * | CO | ALL | 00175000
  177. * | RESTORE | AL | 00176000
  178. * | RE | | 00177000
  179. * | | NUCLEUS | (NUC) 00178000
  180. * | | NU | (NUC) 00179000
  181. * +----------+--------------------------------------------+ 00180000
  182. * 00181000
  183. * THE FUNCTION COMMANDS WILL DESCRIBE THE EXTENTS TO BE 00182000
  184. * DUMPED,COPIED OR RESTORED. IF THE 'CCC' PARAMETER 00183000
  185. * IS USED, THAN ONLY THOSE CYLINDERS SPECIFIED WILL BE 00184000
  186. * MOVED STARTING WITH THE FIRST TRACK OF THE FIRCT 'CCC' 00185000
  187. * AND ENDING WITH THE LAST TRACK OF THE SECOND 'CCC'. THE 00186000
  188. * REORDER PARAMITER WILL CAUSE THE OUTPUT TO BE REORDERED 00187000
  189. * STARTING AT THE SPECIFIED CYLINDER. IF 'ALL' IS 00188000
  190. * SPECIFIED, THEN ALL PRIMARY DATA CYLINDERS ARE MOVED. 00189000
  191. * ALTERNATE CYLINDERS ARE NOT INCLUDED IN THE MOVE AS 00190000
  192. * CYLINDERS, HOWEVER THE CONTENTS OF ASSIGNED ALTERNATE 00191000
  193. * TRACKS ARE MOVED TO SUBSTITUTE FOR THE CORRESPONDING 00192000
  194. * DEFECTIVE TRACKS. (ALTERNATE CYLINDERS CAN ONLY 00193000
  195. * BE MOVED BY AN EXPLICITE 'CCC TO CCC' SPECIFICATION 00194000
  196. * AND THEN ONLY TO TAPE UNLESS THE 'REORDER' FUNCTION 00195000
  197. * IF SPECIFIED. IF 'CPVOL' IS 00196000
  198. * SPECIFIED THAN CYLINDER 0 AND ALL ALLOCATED 00197000
  199. * DIRECTORY AND PERMANENT SPACE WILL BE DUMPED OR COPIED 00198000
  200. * AS INDICATED BY THE 'VM/370' ALLOCATION RECORD FROM 00199000
  201. * THE INPUT DEVICE. IN THE CASE OF A TAPE INPUT FUNCTION 00200000
  202. * SPECIFYING CPVOL, ALL THE DATA IS RESTORED OR COPIED. 00201000
  203. * THE NUCLEUS PARAMITER WILL CAUSE RECORD 2 ON CYLINDER 0 (NUC) 00202000
  204. * TRACK 0 AND THE NUCLEUS CYLINDERS (INDICATED BY RECORD (NUC) 00203000
  205. * 2) TO BE DUMPED COPIED OR RESTORED. (NUC) 00204000
  206. * IT IS THE RESPONSIBILITY OF THE USER TO 00205000
  207. * INSURE THAT ALL THE DATA NOT RESTORED OR COPIED 00206000
  208. * IS IN THE PROPER FORMAT, AS DESCRIBED IN THE 'VM/370' 00207000
  209. * ALLOCATION RECORD. THE 'TO' AND 'REORDER' KEYWORD'S 00208000
  210. * ARE OPTIONAL. 00209000
  211. * 00210000
  212. * NOTE: IF THE CYLINDER EXTENTS ARE BEING EXPLICITY DEFINED 00211000
  213. * FROM THE CONSOLE, THE MESSAGE 'ENTER CYLINDER EXTENTS' 00212000
  214. * FOLLOWED BY THE ENTER: PROMPT WILL BE TYPED. THE USER MAY 00213000
  215. * RESPOND BY ENTERING ADDITIONAL EXTENTS, OR A NULL LINE 00214000
  216. * TO START THE JOB STEP. 00215000
  217. * 00216000
  218. * RESTRICTIONS: 00217000
  219. * 00218000
  220. * EACH TRACK MUST CONTAIN A VALID HOME ADDRESS, CONTAINING 00219000
  221. * THE REAL CYLINDER AND TRACK LOCATION. 00220000
  222. * 00221000
  223. * RECORD ZERO MUST NOT CONTAIN A TOTAL OF OVER 8 KEY 00222000
  224. * AND/OR DATA CHARACTERS. 00223000
  225. * 00224000
  226. * FLAGGED TRACKS WILL BE TREATED AS ANY OTHER TRACK FOR 00225000
  227. * 2305 (SEE NOTE BELOW), 2314, AND 2319. THAT IS, NO ATTEMPT 00226000
  228. * WILL BE MADE TO SUBSTITUTE THE ALTERNATE TRACK DATA WHEN A 00227000
  229. * DEFECTIVE PRIMARY TRACK IS READ. ALSO TRACK'S WILL NOT 00228000
  230. * BE INSPECTED, TO DETERMINE IF THAY WERE PREVIOUSLY FLAGGED, 00229000
  231. * WHEN WRITTEN. IT IS THEREFORE RECOMMENDED THAT VOLUMES 00230000
  232. * DUMPED, CONTAINING FLAGGED TRACKS, BE RESTORED TO THE 00231000
  233. * SAME VOLUME. MSG DMKDDR715E WILL BE TYPED EACH TIME 00232000
  234. * A DEFECTIVE TRACK IS DUMPED, COPIED OR RESTORED AND THE 00233000
  235. * OPERATION WILL CONTINUE. 00234000
  236. * NOTE: ON THE 2305, DEFECTIVE TRACKS ARE USUALLY REWIRED TO 00235000
  237. * AN ALTERNATE TRACK BY THE CE RATHER THAN BEING FLAGGED IN 00236000
  238. * THE USUAL MANNER. IN THIS CASE THE FACT THAT A TRACK IS 00237000
  239. * DEFECTIVE AND HAS AN ALTERNATE WIRED IN IS TRANSPARENT TO 00238000
  240. * ALL PROGRAMMING. 00239000
  241. * 00240000
  242. * FLAGGED TRACKS FOR A 3330/3350 ARE AUTOMATICALLY HANDLED BY 00241000
  243. * THE CONTROL UNIT AND SHOULD NEVER BE DETECTED BY THE 00242000
  244. * PROGRAM. HOWEVER IF A FLAGGED TRACK IS DETECTED 00243000
  245. * THE MSG DMKDDR715E WILL BE TYPED AND THE JOB STEP WILL 00244000
  246. * TERMINATE. 00245000
  247. * 00246000
  248. * FLAGGED TRACKS ON A 3340/3344 ARE HANDLED BY SOFTWARE ERROR 00247000
  249. * RECOVERY (AS OF RELEASE 5 PLC 5). THERE IS NO HARDWARE 00248000
  250. * ERROR RECOVERY FOR FLAGGED TRACKS ON A 3340/3344. 00249000
  251. * THE SOFTWARE SUPPORT IS SUCH THAT THE ALTERNATE TRACKS WILL 00250000
  252. * BE LOCATED IN THE TRUE ALTERNATE TRACK CYLINDER(S) AT THE 00251000
  253. * END OF THE REAL DISK, NOT WITHIN A CYLINDER OF THE AFFECTED 00252000
  254. * MINI-DISK AS HAS SOMETIMES BEEN THE PRACTICE WITH 2314 DISKS. 00253000
  255. * THE DDR PROGRAM HAS ERROR RECOVERY FOR FLAGGED TRACKS TO 00254000
  256. * ALLOW IT TO GO AND GET DATA FROM THE ASSIGNED ALTERNATE WHEN 00255000
  257. * A FLAGGED TRACK IS ENCOUNTERED. THE SAME APPLIES WHEN DATA 00256000
  258. * IS BEING WRITTEN TO A FLAGGED TRACK; THE DATA WILL GET 00257000
  259. * WRITTEN ON THE ALTERNATE. THE FORMAT OF THE DATA WRITTEN ON 00258000
  260. * TAPE IS INDEPENDENT OF WHICH TRACKS WERE FLAGGED, IT ALWAYS 00259000
  261. * LOOKS LIKE ALL TRACKS WERE GOOD TRACKS. THEREFORE, DATA CAN 00260000
  262. * BE DUMPED FROM ONE 3340/3344 PACK WITH FLAGGED TRACKS AND 00261000
  263. * CAN LATER BE RESTORED TO ANOTHER PACK HAVING DIFFERENT 00262000
  264. * TRACKS FLAGGED. 00263000
  265. * 00264000
  266. * COMPATABILITY OF THE NEW DDR WITH OLD TAPES: 00265000
  267. * 00266000
  268. * AS LONG AS ALL CYLINDERS DUMPED TO TAPE WITH THE OLD PROGRAM 00267000
  269. * WERE FREE OF FLAGGED TRACKS, THE CYLINDERS CAN BE RESTORED 00268000
  270. * TO DISK WITH THE NEW PROGRAM, EVEN TO CYLINDERS HAVING FLAGGED 00269000
  271. * TRACKS. EVEN IF SOME CYLINDERS DUMPED WITH THE OLD PROGRAM 00270000
  272. * DID HAVE FLAGGED TRACKS, IT SHOULD BE POSSIBLE TO RESTORE 00271000
  273. * THE OTHER CYLINDERS FROM THE OLD TAPE USING THE NEW PROGRAM. 00272000
  274. * 00273000
  275. * EITHER PROGRAM, OLD OR NEW, CAN DUMP FROM ALL CYLINDERS, 00274000
  276. * INCLUDING THE ALTERNATE TRACK CYLINDERS. THIS IS ALLOWED TO 00275000
  277. * PERMIT CONVERSION TO THE NEW SYSTEM FROM THE OLD WAY OF 00276000
  278. * DOING THINGS WHERE SOME USERS MAY HAVE USED THE ALTERNATE 00277000
  279. * TRACK CYLINDERS AS A PRIMARY DATA AREA SINCE AFTER ALL 00278000
  280. * THERE WAS NO SUPPORT FOR USING IT FOR ALTERNATE TRACKS. 00279000
  281. * 00280000
  282. * BUT WITH THE NEW PROGRAM YOU CANNOT EVER RESTORE A CYLINDER 00281000
  283. * TO THE ALTERNATE TRACK CYLINDER(S). ANY MINI-DISK THAT 00282000
  284. * EXTENDED INTO THE ALTERNATE TRACK CYLINDER(S) WILL HAVE TO 00283000
  285. * BE MOVED TO ANOTHER AREA OF THE DISK OR TO ANOTHER DISK. 00284000
  286. * THIS CAN BE DONE BY USING THE 'REORDER' FUNCTION TO COPY OR 00285000
  287. * RESTORE A MINI-DISK TO ANOTHER AREA. 00286000
  288. EJECT 00287000
  289. * EXAMPLE 00288000
  290. * 00289000
  291. * INPUT 191 3330 SYSRES 00290000
  292. * OUTPUT 180 2400 181 ( MODE 800 00291000
  293. * SYSPRINT 00F 00292000
  294. * DUMP CPVOL 00293000
  295. * INPUT 130 3330 MINI01 00294000
  296. * DUMP 1 TO 50 REORDER 51 00295000
  297. * 60 70 101 00296000
  298. * 00297000
  299. * THIS EXAMPLE WILL SET THE MODE TO 800 BPI AND THEN DUMP 00298000
  300. * ALL PERTINENT DATA FROM THE VOLUME LABELED 'SYSRES' 00299000
  301. * ONTO THE TAPE THAT IS MOUNTED ON UNIT 180. IF 00300000
  302. * THE PROGRAM RUNS OUT OF ROOM ON THE FIRST TAPE 00301000
  303. * IT WILL CONTINUE DUMPING ONTO THE ALTERNATE DEVICE 181. 00302000
  304. * WHILE DUMPING, A MAP OF THE CYLINDERS DUMPED WILL BE 00303000
  305. * PRINTED ON 00F. THEN THE VOLUME LABELED 'MINI01' WILL 00304000
  306. * BE DUMPED ONTO A NEW TAPE. ITS CYLINDERS 00305000
  307. * HEADER RECORDS WILL BE LABELED 51 TO 100. A MAP 00306000
  308. * OF THE CYLINDERS DUMPED WILL BE PRINTED ON 00307000
  309. * UNIT 00F. NEXT CYLINDERS 60 TO 70 WILL DUMPED 00308000
  310. * AND LABELED 101 TO 110. THIS EXTENT WILL BE 00309000
  311. * ADDED TO THE CYLINDER MAP ON THE SYSPRINT DEVICE, 00310000
  312. * UNIT 00F. TAPES MOUNTED WILL BE UNLODED AND 00311000
  313. * THE PROGRAM WILL GO TO TERMINATION. 00312000
  314. * 00313000
  315. * +--------+--------------------------------------------------------+ 00314000
  316. * | PRINT | CC1 <HH1 <RR1>> <TO CC2 <HH2 <RR2>>> (OPTIONS) | 00315000
  317. * | PR | T | 00316000
  318. * | TYPE | OPTIONS: ( HEX GRAPHIC COUNT ) | 00317000
  319. * | TY | H G C | 00318000
  320. * +--------+--------------------------------------------------------+ 00319000
  321. * 00320000
  322. * THIS FUNCTION WILL PRINT OR TYPE A HEXADECIMAL AND GRAPHIC 00321000
  323. * TRANSLATION OF EACH RECORD SPECIFIED DEPENDING ON THE 00322000
  324. * OPTIONS SPECIFIED. THE DEFAULT OPTIONS ARE HEX AND GRAPHIC. 00323000
  325. * THE INPUT DEVICE MUST BE DEFINED AS A DASD OR 00324000
  326. * TAPE DEVICE. THE OUTPUT WILL GO TO THE CONSOLE 00325000
  327. * FOR THE TYPE FUNCTION OR THE SYSPRINT DEVICE 00326000
  328. * FOR THE PRINT FUNCTION. THIS WILL NOT REDEFIN 00327000
  329. * THE OUTPUT UNIT DEFINITION. 00328000
  330. * 00329000
  331. * CC1 = THE STARTING CYLINDER. THIS MUST BE THE 00330000
  332. * FIRST PARAMETER AFTER THE PRINT PARAMETER. 00331000
  333. * 00332000
  334. * HH1 = THE STARTING TRACK. IF PRESENT IT MUST FOLLOW 00333000
  335. * THE CC1 PARAMETER. THE DEFAULT IS TRACK ZERO. 00334000
  336. * 00335000
  337. * RR1 = THE STARTING RECORD ID FROM THE DASD DEVICE 00336000
  338. * IF PRESENT IT MUST FOLLOW THE HH1 PRAMETER. 00337000
  339. * THE DEFAULT IS HOME ADDRESS AND RECORD ZERO. 00338000
  340. * 00339000
  341. EJECT 00340000
  342. * TO = A KEYWORD DELIMITING THE STARTING AND ENDING 00341000
  343. * ADDRESS. IF NOT PRESENT THAN ONLY ONE CYLINDER, 00342000
  344. * TRACK OR RECORD WILL BE PRINTED. DEPENDING 00343000
  345. * UPON THE EXTENT OF THE DEFINITION. 00344000
  346. * 00345000
  347. * CC2 = THE ENDING CYLINDER. THIS MUST BE THE FIRST 00346000
  348. * PARAMETER AFTER THE TO KEYWORD. 00347000
  349. * 00348000
  350. * HH2 = THE ENDING TRACK. IF PRESENT IT MUST FOLLOW 00349000
  351. * THE CC2 PARAMETER. THE DEFAULT IS THE LAST 00350000
  352. * TRACK ON THE ENDING CYLINDER. 00351000
  353. * 00352000
  354. * RR2 = THE RECORD ID OF THE LAST RECORD TO PRINT. 00353000
  355. * THE DEFAULT IS THE LAST RECORD ON THE 00354000
  356. * ENDING TRACK. 00355000
  357. * 00356000
  358. * OPTIONS: 00357000
  359. * 00358000
  360. * HEX PRINT OR TYPE A HEXADECIMAL TRANSLATION OF EACH 00359000
  361. * RECORD SPECIFIED. 00360000
  362. * 00361000
  363. * GRAPHIC PRINT OR TYPE A GRAPHIC TRANSLATION OF EACH 00362000
  364. * RECORD SPECIFIED. 00363000
  365. * 00364000
  366. * COUNT PRINT OR TYPE ONLY THE COUNT FIELD FOR EACH 00365000
  367. * RECORD SPECIFIED. 00366000
  368. * 00367000
  369. * EXAMPLE: 00368000
  370. * 00369000
  371. * PRINT 0 TO 3 00370000
  372. * THIS WILL PRINT ALL OF THE RECORDS ON CYLINDER 00371000
  373. * 0,1,2 AND 3. 00372000
  374. * 00373000
  375. * PRINT 0 1 3 00374000
  376. * THIS WILL PRINT ONLY ONE RECORD, RECORD 3 ON 00375000
  377. * CYLINDER 0 TRACK 1. 00376000
  378. * 00377000
  379. * PRINT 1 10 3 TO 1 15 4 00378000
  380. * THIS WILL PRINT ALL RECORDS STARTING WITH RECORD 3 00379000
  381. * ON CYLINDER 1 TRACK 10 AND ENDING WITH RECORD 4 00380000
  382. * ON CYLINDER 1 TRACK 15. 00381000
  383. * 00382000
  384. EJECT 00383000
  385. * ATTRIBUTES 00384000
  386. * 00385000
  387. * SERIALLY REUSABLE 00386000
  388. * 00387000
  389. * ENTRY POINTS 00388000
  390. * 00389000
  391. * DMKDDREP DASD DUMP RESTORE PROGRAM ENTRY POINT 00390000
  392. * 00391000
  393. * DMKDDRED END OF THE LOAD MODULE FOR CMS 00392000
  394. * 00393000
  395. * ENTRY CONDITIONS 00394000
  396. * 00395000
  397. * NONE IF ON THE BARE MACHINE 00396000
  398. * 00397000
  399. * UNDER CMS REG 1 WILL POINT TO A PARAMITER LIST 00398000
  400. * CONTAINING THE FILE NAME, TYPE NAD MODE OF A 00399000
  401. * CMS FILE CONTAINING THE CONTROL STATEMENTS. 00400000
  402. * IF NOT PROVIDED THAN THE CONSOLE WILL BE 00401000
  403. * AS INPUT. 00402000
  404. * 00403000
  405. * EXIT CONDITIONS 00404000
  406. * 00405000
  407. * NONE IF ON THE BARE MACHINE 00406000
  408. * 00407000
  409. * UNDER CMS REG 15 WILL CONTAIN A RETURN CODE: 00408000
  410. * 00409000
  411. * 1 = INVALED FILE NAME OR FILE NOT FOUND 00410000
  412. * 2 = ERROR RUNNING THE PROGRAM 00411000
  413. * 3 = FLAGGED DASD TRACK 00412000
  414. * 4 = PERMANENT TAPE OR DASD IO ERROR 00413000
  415. * 1XX = ERROR IN THE PRINTIO ROUTINE 00414000
  416. * 2XX = ERROR IN THE CONREAD ROUTINE 00415000
  417. * 3XX = ERROR IN THE RDBUF ROUTINE 00416000
  418. * 4XX = ERROR IN THE TYPLIN ROUTINE 00417000
  419. * XX = THE CMS ROUTINE RETURN CODE 00418000
  420. * 00419000
  421. * EXTERNAL REFERENCES 00420000
  422. * 00421000
  423. * DMSACF DMSCRD DMSCWR 00422000
  424. * 00423000
  425. * TABLES / WORK AREAS 00424000
  426. * 00425000
  427. * NAMETABLE LIST OF VALID KEYWORDS FROM INPUT 00426000
  428. * EXTABLE LIST OF EXTENTS TO BE DUMPED, RESTORED OR 00427000
  429. * COPIED 00428000
  430. * 00429000
  431. * 00430000
  432. EJECT 00431000
  433. * REGISTER USAGE 00432000
  434. * 00433000
  435. * 00434000
  436. * R0 = WORK 00435000
  437. * R1 = POINTER TO INPUT FIELD FROM SCANCONT 00436000
  438. * POINTER TO THE OUTPUT BUFFER (PRINT/TYPE) 00437000
  439. * WORK 00438000
  440. * R2 = INPUT COUNT FROM SCANCONT 00439000
  441. * UNIT ADDRESS FOR STARTIO 00440000
  442. * DATA BLOCK COUNT (PRINT/TYPE) 00441000
  443. * WORK 00442000
  444. * R3 = END OF CURRENT LINE (PRINT/TYPE) 00443000
  445. * WORK 00444000
  446. * R4 = LENGTH OF ONE LINE (PRINT/TYPE) 00445000
  447. * POINTER TO KEY (PRINT/TYPE) 00446000
  448. * WORK 00447000
  449. * R5 = TOTAL LENGTH OF DATA (PRINT/TYPE) 00448000
  450. * WORK 00449000
  451. * R6 = DATA COUNT (PRINT/TYPE) 00450000
  452. * NUMBER OF RECORDS ON THE TRACK (PRINT/TYPE) 00451000
  453. * WORK 00452000
  454. * R7 = POINTER TO THE EXTENT TABLE ENTEY 00453000
  455. * CURRENT LINE POINTER (PRINT/TYPE) 00454000
  456. * R8 = EXTENT TABLE ENTRY SIZE 00455000
  457. * LAST LINE POINTER (PRINT/TYPE) 00456000
  458. * R9 = BASE 5 00457000
  459. * R10 = BASE 1 00458000
  460. * R11 = BASE 2 00459000
  461. * R12 = BASE 3 00460000
  462. * R13 = BASE 4 00461000
  463. * R14 = RETURN ADDRESS 00462000
  464. * R15 = POINTER TO THE IOB 00463000
  465. * 00464000
  466. EJECT 00465000
  467. * MESSAGES 00466000
  468. * 00467000
  469. * DMKDDR700E INPUT UNIT IS NOT A CPVOL 00468000
  470. * 00469000
  471. * DMKDDR701E INVALID OPERAND - XXXXXX 00470000
  472. * XXXXXX = THE PARAMETER IN ERROR FROM THE 00471000
  473. * LAST INPUT LINE. 00472000
  474. * 00473000
  475. * DMKDDR702E CONTROL STATMENT SEQUENCE ERROR 00474000
  476. * 00475000
  477. * DMKDDR703E OPERAND MISSING 00476000
  478. * 00477000
  479. * DMKDDR704E DEV CCU NOT OPERATIONAL 00478000
  480. * CCU = THE ADDRESS OF THE UNIT 00479000
  481. * 00480000
  482. * DMKDDR705E IO ERROR CCU CSW XXXXXXXXXXXXXXXX SENSE XXXXXXXXXXX 00481000
  483. * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 00482000
  484. * INPUT XXXXXXXXXXXX OUTPUT XXXXXXXXXXXX CCW XXXXXXXXXXXXXXXX 00483000
  485. * CCU = THE UNIT ADDRESS OF THE DEVICE 00484000
  486. * SENSE XX = 2, 6 OR 24 SENSE BYTES 00485000
  487. * CSW = THE CSW FROM THE ERROR 00486000
  488. * NOTE: SECOND HALF OF MSG APPLIES ONLY TO DASD AND TAPE 00487000
  489. * INPUT XX = BB CC HH OF THE INPUT CYLINDER 00488000
  490. * OUTPUT XX = BB CC HH OF THE OUTPUT CYL 00489000
  491. * CCW XX = THE CCW IN ERROR 00490000
  492. * 00491000
  493. * 00492000
  494. * DMKDDR707E MACHINE CHECK RUN SEREP AND SAVE OUTPUT FOR CE 00493000
  495. * 00494000
  496. * DMKDDR708E INVALID INPUT OR OUTPUT DEFINITION 00495000
  497. * 00496000
  498. * DMKDDR709E WRONG INPUT TAPE MOUNTED 00497000
  499. * 00498000
  500. * DMKDDR710A DEV CCU INTERVENTION REQUIRED 00499000
  501. * CCU = THE UNIT ADDRESS OF THE DEVICE 00500000
  502. * 00501000
  503. * DMKDDR711R VOLID READ IS VOLSE1 NOT VOLSE2 00502000
  504. * DO YOU WISH TO CONTINUE? RESPOND YES NO OR REREAD: 00503000
  505. * VOLSE1 = THE VSN FROM THE 00504000
  506. * INPUT OR OUTPUT CARD. 00505000
  507. * VOLSE2 = THE VSN FROM THE 00506000
  508. * VOL1 LABEL ON THE DASD UNIT 00507000
  509. * 00508000
  510. * DMKDDR712E NUMBER OF EXTENTS EXCEEDES 20 00509000
  511. * 00510000
  512. * DMKDDR713E OVERLAPPING OR INVALID EXTENTS 00511000
  513. * 00512000
  514. * DMKDDR714E RECORD XXXXXXXXXXXX NOT FOUND ON TAPE 00513000
  515. * XXXX = BB CC HH CYLINDER ADDRESS OF 00514000
  516. * OF THE INPUT TAPE HEADER RECORD. 00515000
  517. * 00516000
  518. EJECT 00517000
  519. * DMKDDR715E LOCATION XXXXXXXXXXXX IS A FLAGGED TRACK 00518000
  520. * XXXX = BB CC HH OF THE FLAGGED TRACK 00519000
  521. * 00520000
  522. * DMKDDR716R NO VOL1 LABEL FOUND FOR XXXXXX 00521000
  523. * DO YOU WISH TO CONTINUE? RESPOND YES NO OR REREAD: 00522000
  524. * XXXXXX = THE VSN OF THE DASD DEVICE 00523000
  525. * FROM THE INPUT OR THE OUTPUT CARD. 00524000
  526. * 00525000
  527. * DMKDDR717R DATA DUMPED FROM VOL1 TO BE RESTORED TO VOL2 00526000
  528. * DO YOU WISH TO CONTINUE? RESPOND YES NO OR REREAD: 00527000
  529. * VOL1 = THE VSN FROM THE INPUT TAPE 00528000
  530. * HEADER RECORD. (VOLUME DUMPED) 00529000
  531. * VOL2 = THE VSN FROM THE OUTPUT 00530000
  532. * DASD DEVICE. 00531000
  533. * 00532000
  534. * DMKDDR718E OUTPUT UNIT IS FILE PROTECTED 00533000
  535. * 00534000
  536. * DMKDDR719E INVALID FILENAME OR FILE NOT FOUND 00535000
  537. * 00536000
  538. * DMKDDR720E ERROR IN XXXXXXXX 00537000
  539. * XXXXXXXX = THE NAME OF THE CMS 00538000
  540. * ROUTINE IN ERROR 00539000
  541. * 00540000
  542. * DMKDDR721E RECORD XXXXXXXXXX NOT FOUND 00541000
  543. * XXXXXXXXXX = THE CC HH R OF THE 00542000
  544. * RECORD NOT FOUND BY THE PRINT OR 00543000
  545. * TYPE ROUTINE. 00544000
  546. * 00545000
  547. * (NUC) 00546000
  548. * DMKDDR722E OUTPUT UNIT NOT PROPERLY FORMATED FOR THE (NUC) 00547000
  549. * CP NUCLEUS (NUC) 00548000
  550. * (NUC) 00549000
  551. * DMKDDR723E NO VALID CP NUCLEUS ON THE INPUT UNIT (NUC) 00550000
  552. * (NUC) 00551000
  553. * DMKDDR724E INPUT TAPE CONTAINS A CP NUCLEUS DUMP (NUC) 00552000
  554. * 00553000
  555. * DMKDDR756E PROGRAM CHECK PSW = XXXXXXXXXXXXXXXX 00554000
  556. * XXXX = THE PROGRAM CHECK OLD PSW 00555000
  557. * DMKDDR725R DASD INPUT DEVICE WAS(IS) LARGER THAN OUTPUT DEVICE 00556000
  558. * DO YOU WISH TO CONTINUE? RESPOND YES OR NO: 00557000
  559. * 00558000
  560. * DMKDDR726E MOVING DATA INTO THE ALTERNATE TRACK CYLINDER(S) 00559000
  561. * IS PROHIBITED. 00560000
  562. * 00561000
  563. * DMKDDR727E FLAGGED TRK XXXXXXXXXXXX HAS NO PROPER ALTERNATE; 00562000
  564. * SKIPPING THIS TRACK. 00563000
  565. EJECT 00564000
  566. * VM/370 DASD DUMP/RESTORE PROGRAM RELEASE 6 00565000
  567. * ENTER CARD READER ADDRESS OR CONTOL STATEMENTS 00566000
  568. * 00567000
  569. * ENTER CYLINDER EXTENTS 00568000
  570. * ENTER: 00569000
  571. * 00570000
  572. * ENTER NEXT EXTENT OR NULL LINE 00571000
  573. * ENTER: 00572000
  574. * 00573000
  575. * END OF CYL XXX HD XX, MOUNT NEXT TAPE 00574000
  576. * 00575000
  577. * RESTORING XXXXXX 00576000
  578. * XXXXXX = THE VOLUME SERIAL NUMBER 00577000
  579. * OF THE DISK DUMPED. 00578000
  580. * 00579000
  581. * COPYING XXXXXX 00580000
  582. * XXXXXX = THE VOLUME SERIAL NUMBER 00581000
  583. * DESCRIBED BY THE INPUT UNIT. 00582000
  584. * 00583000
  585. * DUMPING XXXXXX 00584000
  586. * XXXXXX = THE VOLUME SERIAL NUMBER 00585000
  587. * OF THE DISK BEING DUMPED. 00586000
  588. * 00587000
  589. * PRINTING XXXXXX 00588000
  590. * XXXXXX = THE VOLUME SERIAL NUMBER 00589000
  591. * DESCRIBED BY THE INPUT UNIT. 00590000
  592. * 00591000
  593. * 00592000
  594. * END OF DUMP 00593000
  595. * 00594000
  596. * END OF RESTORE 00595000
  597. * 00596000
  598. * END OF COPY 00597000
  599. * 00598000
  600. * END OF PRINT 00599000
  601. * 00600000
  602. * END OF JOB 00601000
  603. * 00602000
  604. * ENTER: 00603000
  605. * 00604000
  606. *. 00605000
  607. SPACE 3 00606000
  608. MACRO 00607000
  609. &SYMBOL TABLE &NAME,&MIN,&CLASS,&TYPE,&RECMAX,&CYLMAXP, X00608000
  610. &CYLMAXA,&TKMAX,&LAST 00609000
  611. LCLC &C,&SC 00610000
  612. AIF (K'&NAME LT 5).SHORT 00611000
  613. AIF ('&NAME'(5,1) NE '-').SHORT 00612000
  614. &C SETC '&NAME'(1,4).'M'.'&NAME'(6,2) 00613000
  615. AGO .SC 00614000
  616. .SHORT ANOP 00615000
  617. &C SETC '&NAME'(1,7) 00616000
  618. .SC ANOP 00617000
  619. &SC SETC '&NAME'(1,4) 00618000
  620. AIF (T'&TKMAX EQ 'O').POINT 00619000
  621. AIF ('&LAST' EQ 'LAST').LASTCON 00620000
  622. &SYMBOL DC XL.4'4',AL.4(&MIN-1) FLAG = CONSTENT+LENGTH 00621000
  623. AGO .CON 00622000
  624. .LASTCON ANOP 00623000
  625. &SYMBOL DC XL.4'C',AL.4(&MIN-1) FLAG = LAST CONSTANT+LENGTH 00624000
  626. .CON DC X'00' 00625000
  627. DC AL1(&CLASS) DEVICE CLASS @V2A2063 00626000
  628. DC AL1(&TYPE) DEVICE TYPE @V2A2063 00627000
  629. DC H'&RECMAX' MAX NUMBER OF RECORDS OR SKIP COUNT 00628000
  630. DC H'&CYLMAXP' MAX PRIM CYL OR MODE COMMAND CODE@V56BDA8 00629000
  631. DC H'&CYLMAXA' MAX ALT CYL ADDRESS (IF DASD). @V56BDA8 00630000
  632. DC H'&TKMAX' MAX TRACK OR DISPOSITION COMMAND CODE 00631000
  633. AGO .NAME 00632000
  634. .POINT AIF ('&CLASS' EQ 'LAST').LASTPT 00633000
  635. &SYMBOL DC AL1(&MIN-1) FLAG = POINTER TO ROUTINE+LENGTH 00634000
  636. AGO .PT 00635000
  637. .LASTPT ANOP 00636000
  638. &SYMBOL DC XL.4'8',AL.4(&MIN-1) FLAG = LAST POINTER+LENGTH 00637000
  639. .PT DC AL3(SCAN&SC) ADDRESS OF THE ROUTINE 00638000
  640. DC 8X'00' @V56BDA8 00639000
  641. .NAME ANOP 00640000
  642. C&C DC CL8'&NAME' NAME 00641000
  643. SPACE 00642000
  644. MEND 00643000
  645. SPACE 00644000
  646. MACRO 00645000
  647. &SYMBOL COMP &NAME 00646000
  648. &SYMBOL LA R3,&NAME 00647000
  649. BAL R14,COMPARE . GO COMPARE THE KEYWORD RETURN WITH CC SET 00648000
  650. MEND 00649000
  651. SPACE 00650000
  652. MACRO 00651000
  653. &SYMBOL MOVE &NAME 00652000
  654. &SYMBOL BCT R2,*+10 00653000
  655. MVC &NAME(1)(1),0(R1) 00654000
  656. EX R2,*-6 00655000
  657. MEND 00656000
  658. SPACE 00657000
  659. MACRO 00658000
  660. &SYMBOL MSG &MESSAGE,&RETURN 00659000
  661. AIF ( T'&RETURN EQ 'O').YES 00660000
  662. &SYMBOL LA R14,&RETURN 00661000
  663. BAL R2,MSGWRITE 00662000
  664. AGO .CONT 00663000
  665. .YES ANOP 00664000
  666. &SYMBOL BAL R2,MSGWRITE 00665000
  667. .CONT DC AL2(L&SYSNDX) 00666000
  668. M&SYSNDX DC C&MESSAGE 00667000
  669. L&SYSNDX EQU *-M&SYSNDX 00668000
  670. SPACE 00669000
  671. MEND 00670000
  672. EJECT 00671000
  673. * THIS DSECT MUST APPEAR AT THE FRONT OF THE LISTING BECAUSE 00672000
  674. * THE IOBSIZE LABEL EQUATED IN THE DSECT MUST BE A PREVIOUSLY 00673000
  675. * DEFINED SYMBOL FOR THE ASSEMBLER TO ACCEPT THE WAY IT IS 00674000
  676. * USED LATER IN THE CSECT. 00675000
  677. IOB DSECT @V56BDA8 00676000
  678. IOBSTAT DS X'80' STATUS OF IOB @V56BDA8 00677000
  679. IOBOPT DS 1X IOB FLAGS @V56BDA8 00678000
  680. IOBUADD DS 1H UNIT ADDRESS OF DEVICE @V56BDA8 00679000
  681. IOBCCW DS 1F POINTER TO CCW @V56BDA8 00680000
  682. IOBERROR DS A ADDRESS OF IO ERROR ROUTINE @V56BDA8 00681000
  683. IOBCSW DS 2F CSW OF IO ERROR STACKED @V56BDA8 00682000
  684. IOBCLASS DS X DEVICE CLASS @V56BDA8 00683000
  685. IOBTYPE DS X DEVICE TYPE @V56BDA8 00684000
  686. IOBSKIP EQU * IOB TAPE SKIP COUNT @V56BDA8 00685000
  687. IOBMREC DS H'0' MAX NUM OR RECORDS THAT WILL @V56BDA8 00686000
  688. * FIT A TRACK 00687000
  689. IOBCYLP DC H'0' MAX PRIMARY CYL ADDR OF DASD. @V56BDA8 00688000
  690. IOBCYLA DC H'0' MAX ALTERNATE CYL ADDR OF DASD. @V56BDA8 00689000
  691. IOBMTCK DC H'0' MAX NO. OF TRKS (NUMBERING 0-N). @V56BDA8 00690000
  692. IOBMODE DS X TAPE MODE COMMAND CODE. @V56BDA8 00691000
  693. IOBDISP DS X TAPE DISPOSITION COMMAND CODE. @V56BDA8 00692000
  694. IOBVSER DS CL6' ' VOL SER NO OF DASD UNIT @V56BDA8 00693000
  695. IOBATAPE DS X'0000' ADDRESS OF AN ALTERNATE TAPE UNIT@V56BDA8 00694000
  696. IOBFLAG DS X IOB FLAGS @V56BDA8 00695000
  697. DS 3X RESERVED @V56BDA8 00696000
  698. IOBSIZE EQU *-IOB @V56BDA8 00697000
  699. SPACE 2 00698000
  700. * BITS USED IN IOBOPT 00699000
  701. IOBDEW EQU X'80' WAIT FOR DEVICE END INTERRUPT @V56BDA8 00700000
  702. IOBERST EQU X'40' STOP ON IOERROR AND WAIT FOR @V56BDA8 00701000
  703. * NEXT INT 00702000
  704. IOBEEXIT EQU X'20' REPEAT CCW ON ERROR @V56BDA8 00703000
  705. IOBSIO EQU X'10' DO NOT USE DIAGNOSE I/O @V56BDA8 00704000
  706. SPACE 00705000
  707. * BITS USED IN IOBSTAT 00706000
  708. IOBST EQU X'80' IO UNIT IS TO BE STARTED @V56BDA8 00707000
  709. IOBSTACK EQU X'40' IOERROR HAS BEEN STACKED @V56BDA8 00708000
  710. IOBLAST EQU X'20' LAST IOB @V56BDA8 00709000
  711. IOBNOPER EQU X'10' DEVICE IS NOT OPERATIONAL @V56BDA8 00710000
  712. IOBCPVOL EQU X'08' UNIT IS A CPVOL @V56BDA8 00711000
  713. IOBOPEN EQU X'04' THE IOB IS OPEN @V56BDA8 00712000
  714. IOBSCRAT EQU X'02' THE DASD DEVICE IS A SCRATCH @V56BDA8 00713000
  715. * VOLUME 00714000
  716. IOBTPSWP EQU X'01' SWITCH TO ALT. TAPE IN PROGRESS @V56BDA8 00715000
  717. SPACE 3 00716000
  718. DMKDDR START 0 00717000
  719. USING *,R0 00718000
  720. USING CYLENTRY,R7 00719000
  721. USING IOB,R15 00720000
  722. USING NAMETABL,R4 00721000
  723. USING DMKDDREP+2,R10 00722000
  724. USING DMKDDREP+4096,R11 00723000
  725. USING DMKDDREP+8190,R12 00724000
  726. USING DMKDDREP+12284,R13 00725000
  727. USING DMKDDREP+16378,R9 @V200731 00726000
  728. IPLUSE DS 3D 00727000
  729. EXTOLD DC D'0' 00728000
  730. SUPOLD DC D'0' 00729000
  731. PROOLD DC D'0' 00730000
  732. MCOLD DC D'0' 00731000
  733. IOOLD DC D'0' 00732000
  734. CSW DS 1D 00733000
  735. CAW DS 1F 00734000
  736. DC F'0' 00735000
  737. TIMER DC X'7FFFFFFF' 00736000
  738. DC F'0' 00737000
  739. EXTNEW DC X'0104000000' 00738000
  740. DC AL3(EXTINT) 00739000
  741. SVCNEW DC X'0106000000000000' 00740000
  742. PRONEW DC X'0104000000' 00741000
  743. DC AL3(DDR756) @V305435 00742000
  744. MCNEW DC X'0000000000' 00743000
  745. DC AL3(DDR707) 00744000
  746. IONEW DC X'0104000000' 00745000
  747. DC AL3(IOINT) 00746000
  748. EJECT 00747000
  749. ****************************************************************** 00748000
  750. *. 00749000
  751. * 1. DMKDDR HOUSEKEEPING ROUTINE 00750000
  752. * 00751000
  753. * 1. IF UNDER CMS GO TO STEP 7, ELSE PRINT MSG002. 00752000
  754. * 00753000
  755. * 2. IF NULL LINE DEFAULT TO IPL UNIT ADDRESS AND GO 00754000
  756. * TO STEP 4. 00755000
  757. * 00756000
  758. * 3. LINK TO SCANNAME, RETURN ONLY IF NAME NOT FOUND. 00757000
  759. * 00758000
  760. * 4. SET UP CARD IOB AND TURN ON CARD IN FLAG. 00759000
  761. * 00760000
  762. * 5. LINK TO ROUTINE 25 TO GET THE NEXT STATEMENT. 00761000
  763. * 00762000
  764. * 6. IF A NULL LINE GO TO STEP 11, ELSE GO TO ROUTINE 2. 00763000
  765. * 00764000
  766. * 7. ERROR DDR701 IF RETURN FROM SCANNAME. 00765000
  767. * 00766000
  768. * 8. BUILD STATE P-LIST FROM THE COMMAND LINE P-LIST. 00767000
  769. * IF NO P-LIST GO TO STEP 5. 00768000
  770. * 00769000
  771. * 9. STATE THE FILE, IF NOT FOUND GO TO ERROR 00770000
  772. * DDR709. 00771000
  773. * 00772000
  774. * 10. TURN ON THE CARDIN FLAG, SET UP P-LIST FOR READBUF 00773000
  775. * AND GO TO STEP 5. 00774000
  776. * 00775000
  777. * 11. IF INPUT IS FROM THE CONCOLE GO TO ROUTINE 28. 00776000
  778. * 00777000
  779. * 12. IF THE CARD END OF FILE FLAG IS ON GO TO 00778000
  780. * ROUTINE 28, ELSE GO TO STEP 5. 00779000
  781. *. 00780000
  782. ****************************************************************** 00781000
  783. ENTRY DMKDDREP 00782000
  784. DMKDDREP BALR R10,0 SET UP BASE 1 00783000
  785. LA R10,0(,R10) CLEAR HIGH ORDER BYTE FOR BARE MAC COMP 00784000
  786. LA R11,4094(,R10) SET UP BASE 2 00785000
  787. LA R12,4094(,R11) SET UP BASE 3 00786000
  788. LA R13,4094(,R12) SET UP BASE 4 00787000
  789. LA R9,4094(,R13) SET UP BASE 5 @V200731 00788000
  790. STIDP CPUID STORE THE CPU ID 00789000
  791. ST R10,MACHINE SAVE FOR BAREMAC COMPARE HRC012DK 00789500
  792. CL R10,BAREMAC IS THIS A BARE MACHINE 00790000
  793. BNE CMS1 NO- GO TO CMS ROUTINE 00791000
  794. SSM =X'01' ENABLED TO ACCEPT EXT INTERRUPT 00792000
  795. B NEWADD 00793000
  796. EXTINT DS 0H 00794000
  797. MVI TIMER,X'7F' SET HI TIMER FOR ANY EXT INTERRUPT 00795000
  798. TM EXTOLD+3,X'40' WAS EXT INT KEY PUSHED 00796000
  799. BO NEWADD BRANCH IF SO 00797000
  800. LPSW EXTOLD IGNORE EXT INT IF NOT 00798000
  801. NEWADD LA R15,CONIOB POINT TO IOB @VA10621 00799100
  802. NI IOBSTAT,X'FF'-IOBNOPER ASSUME OPERATIONAL CONS HRC012DK 00801100
  803. BAL R14,MSG002 PRINT MSG 00804000
  804. BAL R14,MSG002A PRINT MSG HRC012DK 00804200
  805. MSGRET NI SENSECCW+4,255-CC RESET CHAINING FLAG @VA13103 00804500
  806. LA R3,CONERROR POINT TO ERROR ROUTINE @VA13103 00805000
  807. ST R3,IOBERROR * 00806000
  808. LA R15,PRINTIOB WE WILL DO AN INITIALIZE PRINTER @VA10621 00806200
  809. LA R1,INITCCW IN CASE THE PRINTER IS A 3800 @VA10621 00806400
  810. ST R1,IOBCCW SAVE THE CCW STRING @VA10621 00806600
  811. BAL R14,STARTIO GO DO IT @VA10621 00806800
  812. BAL R14,READCONT GET INPUT FROM USER 00807000
  813. BAL R14,SCANCONT GET CARD READER ADD OR CONT STATEMENT 00808000
  814. BC 4,DEFAULT DEFAULT TO IPL INPUT ADD 00809000
  815. BAL R14,SCANNAME GO LOOK FOR THE NAME IF NOT FOUND 00810000
  816. FIRSTIME BAL R14,HEXCONV THEN GO CONVERT THE UNIT ADD 00811000
  817. STOREADD OI DDRFLAG,CARDIN TURN ON CARD INPUT FLAG 00812000
  818. STH R2,CARDIOB+(IOBUADD-IOB) SAVE ADD 00813000
  819. STARTNEW NI DDRFLAG,255-RESTALL TURN OFF THE RESTALL FLAG 00814000
  820. MVI DDRFLAG2,0 RESET DDRFLAG2 00815000
  821. NI DDRFLAG,255-NUCLEUS NUCLEUS FLAG ALSO (NUC) 00816000
  822. XC TAPEERCT(4),TAPEERCT ZERO THE DASD AND TAPE ER COUNT 00817000
  823. LA R1,INOUTER * POINT THE INPUT AND OUTPUT 00818000
  824. ST R1,INIOB+(IOBERROR-IOB) * IOB'S TO THE ERROR ROUTINE 00819000
  825. ST R1,OUTIOB+(IOBERROR-IOB) * 00820000
  826. TM DDRFLAG,CARDIN CARD INPUT?? @VA04550 00821000
  827. BZ GTCARD NOPE @VA04550 00822000
  828. TM DDRFLAG,VLDRDR HAVE A VALID RDR ADDR YET? @VA04550 00823000
  829. BO GTCARD YES - CONTINUE NORMALLY @VA04550 00824000
  830. BAL R14,READCONT NO - TRY A READ @VA04550 00825000
  831. OI DDRFLAG,VLDRDR ADDR'S OK IF WE GET HERE @VA04550 00826000
  832. B GTSCAN JOIN REGULAR LOGIC @VA04550 00827000
  833. GTCARD BAL R14,READCONT GO GET THE FIRST CARD 00828000
  834. GTSCAN EQU * @VA04550 00829000
  835. BAL R14,SCANCONT GO GET THE FIRST FIELD 00830000
  836. BC 4,TESTEND ERROR IF NO INPUT 00831000
  837. BAL R14,SCANNAME GO TO ROUTINE 00832000
  838. B DDR701 ERROR IF RETURNING FROM SCANNAME 00833000
  839. CMS1 ST R14,CMSSAVE SAVE THE RETURN ADD 00834000
  840. LR R8,R1 SAVE THE PARAMETER LIST @V60B9BA 00835000
  841. LA R15,PRINTIOB WE WILL DO AN INITIALIZE PRINTER @V60B9BA 00836000
  842. LA R1,INITCCW IN CASE THE PRINTER IS A 3800 @V60B9BA 00837000
  843. ST R1,IOBCCW SAVE THE CCW STRING @V60B9BA 00838000
  844. BAL R14,STARTIO GO DO IT @V60B9BA 00839000
  845. LR R1,R8 RESTORE PARAMETER LIST @V60B9BA 00840000
  846. CLI 8(R1),X'FF' DID I GET A PARAMETER LIST @VM08604 00841000
  847. BNE GTFILE HRC012DK 00842190
  848. BAL R14,MSG002 HRC012DK 00842380
  849. B GTCARD NO- BRANCH AND GET THE FIRST STATHRC012DK 00842570
  850. GTFILE EQU * HRC012DK 00842760
  851. MVC INFCB+8(16),8(R1) SET UP FILE NAME AND TYPE 00843000
  852. CLI 16(R1),X'FF' DID I GET A FILE TYPE 00844000
  853. BE DDR719 NO- ERROR 00845000
  854. OI DDRFLAG,CARDIN TURN ON THE CARD IN SWITCH 00846000
  855. CLI 24(R1),X'FF' DO I HAVE A MODE 00847000
  856. BE *+10 NO- BRANCH 00848000
  857. MVC INFCB+24(2),24(R1) YES- MOVE IT IN 00849000
  858. LA R1,INFCB POINT TO THE INPUT FCB 00850000
  859. SVC 202 STATE THE FILE 00851000
  860. DC AL4(DDR719) ERROR RETURN 00852000
  861. MVC INFCB(8),=CL8'RDBUF' SET UP FOR FIRST READ 00853000
  862. LA R1,CONTBUFF POINT TO THE INPUT BUFFER 00854000
  863. ST R1,INFCBUF AND SAVE IT IN THE FCB 00855000
  864. B GTCARD GO READ THE CMS FILE OR CONSOLE 00856000
  865. DEFAULT LH R2,IPLUSE+2 USE IPL UNIT ADD 00857000
  866. B STOREADD 00858000
  867. SETUPERR TM IOBSTAT,IOBNOPER WAS THE UNIT NOT OPER 00859000
  868. BO CONPARM YES, GO TEST FOR CORRECT DEVICE @V200731 00860000
  869. TM IOBCSW+4,UC IS UNIT CHECK INDICATED ? @V200731 00861000
  870. BZ CONERROR NO, GO TO ERROR HANDLER @V200731 00862000
  871. CONPARM EQU * @V200731 00863000
  872. TM PARM,PARM321 IS THIS A 3215/3210/1052 @V200731 00864000
  873. BO DDRLPSW YES, GO WAIT FOR I/O INTERRUPT @V200731 00865000
  874. TM PARM,PARM01F IS THIS ADDRESS 01F ? @V200731 00866000
  875. BO TESTGRAP YES, GO CHECK FOR GRAPHIC @V200731 00867000
  876. * DEVICE ? 00868000
  877. OI PARM,PARM01F SET INDICATOR FOR 01F @V200731 00869000
  878. MVI CONIOB+((IOBUADD+1)-IOB),X'1F' SET DEVICE ADDR @V200731 00870000
  879. * TO 1F 00871000
  880. B NEWADD GO TRY THIS ADDRESS - 01F @V200731 00872000
  881. TESTGRAP EQU * @V200731 00873000
  882. TM PARM,PARMGRP IS THIS A GRAPHIC DEVICE ? @V200731 00874000
  883. BO TES3270T YES, GO TEST FOR 3270 DEVICE @V200731 00875000
  884. OI PARM,PARMGRP+PARMCLE SET GRAPHIC & ERASE @V200731 00876000
  885. * INDICATORS 00877000
  886. DDRLPSW EQU * @V200731 00878000
  887. LPSW CONWAIT WAIT FOR I/O INTERRUPT @V200731 00879000
  888. TES3270T EQU * @V200731 00880000
  889. TM PARM,PARMGRP+PARM327 IS THIS A 3270 DEVICE ? @V200731 00881000
  890. BO TEST3278 YES, GO TEST FOR 20 LINE DEVICE @V60A6B6 00882000
  891. OI PARM,PARM327 @V60A6B6 00883000
  892. ********************************************************************** 00884000
  893. *SINCE THIS IS A 3277. THE MAXIMUM ALLOW SCREEN SIZE IS 24 LINE* 00885000
  894. *WE MUST THEREFORE CHANGE THE DATA STREAM TO HANDLE THIS SCREEN SIZE * 00886000
  895. ********************************************************************** 00887000
  896. MVC LAB3270A+2(2),ADDR1 @V60A6B6 00888000
  897. MVC LAB3270A+8(2),ADDR2 @V60A6B6 00889000
  898. MVC LAB3270B+2(2),ADDR1 @V60A6B6 00890000
  899. MVC LAB3270B+8(2),ADDR2 @V60A6B6 00891000
  900. MVC LAB3270C+2(2),ADDR2 @V60A6B6 00892000
  901. MVC LAB3270D+2(2),ADDR1 @V60A6B6 00893000
  902. MVC LAB3270E+5(2),ADDR1 @V60A6B6 00894000
  903. MVC LAB3270E+12(2),ADDR2 @V60A6B6 00895000
  904. MVC ADDR5,ADDR6 EST. ADDR FOR CURSOR CK @V60A6B6 00896000
  905. MVC MAXLEN,LEN3270 @V60A6B6 00897000
  906. B NEWADD GO TRY THIS ADDR FOR @V60A6B6 00898000
  907. * GRAPHIC SUPPORT 00899000
  908. TEST3278 EQU * @V60A6B6 00900000
  909. CLC LAB3270A+2(2),ADDR3 HAVE WE TRIED IT AS 3278 @V60A6B6 00901000
  910. BE TEST3215 MUST BE 3210,3215,1052 @V60A6B6 00902000
  911. ********************************************************************** 00903000
  912. *SINCE THIS IS A 3278 MOD2A. THE MAXIMUM ALLOW SCREEN SIZE IS 20 LINE* 00904000
  913. *WE MUST THEREFORE CHANGE THE DATA STREAM TO HANDLE THIS SCREEN SIZE * 00905000
  914. ********************************************************************** 00906000
  915. MVC LAB3270A+2(2),ADDR3 @V60A6B6 00907000
  916. MVC LAB3270A+8(2),ADDR4 @V60A6B6 00908000
  917. MVC LAB3270B+2(2),ADDR3 @V60A6B6 00909000
  918. MVC LAB3270B+8(2),ADDR4 @V60A6B6 00910000
  919. MVC LAB3270C+2(2),ADDR4 @V60A6B6 00911000
  920. MVC LAB3270D+2(2),ADDR3 @V60A6B6 00912000
  921. MVC LAB3270E+5(2),ADDR3 @V60A6B6 00913000
  922. MVC LAB3270E+12(2),ADDR4 @V60A6B6 00914000
  923. MVC ADDR5,ADDR7 EST. CORRECT ADDR FOR CURSOR CK @V60A6B6 00915000
  924. MVC MAXLEN,LEN3278 @V60A6B6 00916000
  925. B NEWADD GO TRY THIS ADDRESS WITH @V200731 00917000
  926. * GRAPHIC SUPPORT 00918000
  927. TEST3215 EQU * @V200731 00919000
  928. MVI PARM,PARM321 SET THE 3210-3215-1052 FLAG @V200731 00920000
  929. B NEWADD GO TRY THIS ADDRESS WITH 3215 @V200731 00921000
  930. * SUPPORT 00922000
  931. CONRET EQU * @V200731 00923000
  932. MVC IOBUADD,IOOLD+2 GET DEVICE ADDRESS FROM PSW @V200731 00924000
  933. B NEWADD GO AND TRY THIS ADDRESS @V200731 00925000
  934. TESTEND TM DDRFLAG,CARDIN IS THIS CARD INPUT 00926000
  935. BZ EXIT NO- TERMINATE 00927000
  936. TM DDRFLAG,CARDEOF IS IT EOF 00928000
  937. BO EXIT YES- TERMINATE 00929000
  938. B GTCARD SKIP THE BLANK CARD 00930000
  939. EJECT 00931000
  940. *************************************************************** 00932000
  941. *. 00933000
  942. * 2. SUBROUTINE TO SCAN NAME AND UNIT TABLE 00934000
  943. * 00935000
  944. * 1. SCAN THE TABLE LOOKING FOR NAME. 00936000
  945. * 00937000
  946. * 2. IF NOT FOUND GO TO ERROR DDR701. 00938000
  947. * 00939000
  948. * 3. IF ADDRESS, GO TO THE ROUTINE, ELSE RETURN. 00940000
  949. *. 00941000
  950. *************************************************************** 00942000
  951. SCANUNIT STM R3,R5,REGSAVE1 SAVE REG 00943000
  952. LA R4,TABLE2 POINT TO THE UNIT TABLE 00944000
  953. B SCAN 00945000
  954. SCANNAME STM R3,R5,REGSAVE1 SAVE REG 00946000
  955. LA R4,TABLE1 POINT TO NAME TABLE 00947000
  956. SCAN BCTR R2,0 -1 00948000
  957. RESCAN L R3,NAMEFLAG GET THE FLAG AND POINTER TO THE ROUTINE 00949000
  958. EX R2,COMPNAME COMPARE THE NAME TO THE CON 00950000
  959. BE GOODNAME GET OUT IF EQ 00951000
  960. ADDSIZE LA R4,NAMESIZE(,R4) POINT TO NEXT NAME TABLE ENTRY 00952000
  961. LTR R3,R3 IS THIS THE LAST NAME 00953000
  962. BNM RESCAN LOOP 00954000
  963. LA R2,1(,R2) +1 00955000
  964. CLM R14,7,=AL3(FIRSTIME) FIRST TIME (SCAN FROM MSG002) 00956000
  965. BCR 8,R14 YES- RETURN TO CALLER 00957000
  966. B DDR701 ERROR IF NOT FOUND 00958000
  967. GOODNAME SLL R3,4 DROP THE FLAGS 00959000
  968. SRL R3,28 SET UP THE COUNT 00960000
  969. CR R2,R3 COMPARE THE MIN COUNT 00961000
  970. BL ADDSIZE IF COUNT IS LOW CONT SCAN 00962000
  971. TM NAMEFLAG,X'40' IS THIS AN ADD. 00963000
  972. BO RETURNCD NO RETURN DEVICE CODE 00964000
  973. ST R14,SAVERET SAVE RETURN REGISTER 00965000
  974. L R14,NAMEFLAG GET THE FLAG AND ROUTINE ADD 00966000
  975. LA R4,1(,R2) RESTORE REG 2 00967000
  976. RETURNCD LR R2,R4 POINT TO THE TABLE OR RESTORE THE REG 00968000
  977. LM R3,R5,REGSAVE1 RETURN REG 00969000
  978. BR R14 RETURN TO CALLER OR LINK TO SUBROUTINE 00970000
  979. COMPNAME CLC NAME-NAMETABL(0,R4),0(R1) COMP NAME TO INPUT 00971000
  980. SPACE 2 00972000
  981. DROP R4 00973000
  982. USING NAMETABL,R2 00974000
  983. SPACE 2 00975000
  984. ***** NAME TABLE 00976000
  985. SPACE 00977000
  986. DS 0F 00978000
  987. TABLE1 TABLE INPUT,2 00979000
  988. TABLE OUTPUT,3 00980000
  989. TABLE SYSPRINT,2 00981000
  990. TABLE PRINT,2 00982000
  991. TABLE TYPE,2 00983000
  992. TABLE DUMP,2 00984000
  993. TABLE RESTORE,2 00985000
  994. TABLE COPY,2,LAST 00986000
  995. SPACE 3 00987000
  996. * THE DASD TABLE ENTRIES HAVE THE FOLLOWING EFFECTS IN REGARD 00988000
  997. * TO THE TREATMENT OF ALTERNATE TRACK CYLINDERS: IN GENERAL, 00989000
  998. * &CYLMAXP SHOULD SPECIFY THE NUMBER (NUMBERING 0-N) OF THE 00990000
  999. * LAST (NTH) PRIMARY DATA CYLINDER WHILE &CYLMAXA SHOULD 00991000
  1000. * SPECIFY THE NUMBER OF THE LAST ALTERNATE CYLINDER. &CYLMAXA 00992000
  1001. * DETERMINES THE LAST CYLINDER THAT CAN BE DUMPED TO TAPE OR 00993000
  1002. * ACCESSED VIA TYPE/PRINT. &CYLMAXP DETERMINES THE LAST 00994000
  1003. * CYLINDER THAT CAN BE RESTORED TO OR COPIED TO. IT ALSO 00995000
  1004. * DETERMINES THE LAST CYLINDER MOVED WHEN 'DUMP ALL' OR 00996000
  1005. * 'COPY ALL' IS SPECIFIED. YOU CAN FALSIFY THE &CYLMAXP AND 00997000
  1006. * &CYLMAXA VALUES TO ACHIEVE THE RESULT YOU DESIRE. FOR 00998000
  1007. * EXAMPLE, SPECIFYING 202 FOR BOTH &CYLMAXP AND &CYLMAXA ON 00999000
  1008. * THE 2314 MEANS USERS CAN RESTORE DATA INTO THE ALTERNATE 01000000
  1009. * TRACK CYLINDERS. 01001000
  1010. SPACE 01002000
  1011. TABLE2 TABLE 2305-1,6,CLASDASD,TYP2305,34,47,47,7 @V56BDA8 01003000
  1012. TABLE 2305-2,6,CLASDASD,TYP2305,75,95,95,7 @V56BDA8 01004000
  1013. TABLE 2311,4,CLASDASD,TYP2311,62,202,202,9 @V56BDA8 01005000
  1014. TABLE 2314,4,CLASDASD,TYP2314,75,202,202,19 @V56BDA8 01006000
  1015. TABLE 2319,4,CLASDASD,TYP2319,75,202,202,19 @V56BDA8 01007000
  1016. TABLE 3330,4,CLASDASD,TYP3330,100,403,410,18 @V56BDA8 01008000
  1017. TABLE 3330-11,7,CLASDASD,TYP3330,100,807,814,18 @V56BDA8 01009000
  1018. TABLE 3350,4,CLASDASD,TYP3350,110,554,559,29 @V56BDA8 01010000
  1019. TABLE 3380,4,CLASDASD,TYP3380,100,884,885,14 HRC012DK 01010500
  1020. TABLE 3340-35,7,CLASDASD,TYP3340,55,347,348,11 @V56BDA8 01011000
  1021. TABLE 3340-70,7,CLASDASD,TYP3340,55,695,697,11 @V56BDA8 01012000
  1022. TABLE 2400,4,CLASTAPE,TYP2401,0,3,0,15 @V56BDA8 01013000
  1023. TABLE 2401,4,CLASTAPE,TYP2401,0,3,0,15 @V56BDA8 01014000
  1024. TABLE 2415,4,CLASTAPE,TYP2415,0,3,0,15 @V56BDA8 01015000
  1025. TABLE 2420,4,CLASTAPE,TYP2420,0,3,0,15 @V56BDA8 01016000
  1026. TABLE 3410,4,CLASTAPE,TYP3410,0,3,0,15 @V56BDA8 01017000
  1027. TABLE 3411,4,CLASTAPE,TYP3411,0,3,0,15 @V56BDA8 01018000
  1028. TABLE 3420,4,CLASTAPE,TYP3420,0,3,0,15,LAST @V56BDA8 01019000
  1029. EJECT 01020000
  1030. ***************************************************************** 01021000
  1031. *. 01022000
  1032. * 3. ROUTINE TO SCAN INPUT AND OUTPUT STATEMENTS 01023000
  1033. * 01024000
  1034. * 1. POINT TO INPUT IOB. 01025000
  1035. * 01026000
  1036. * 2. FILL IN THE DEVICE ADDRESS AND TYPE, IF LEFT 01027000
  1037. * PARENTHESIS GO TO STEP 5. 01028000
  1038. * 01029000
  1039. * 3. IF TAPE GO TO STEP 4 ELSE GET THE VOL SER NO 01030000
  1040. * AND GO TO ROUTINE 1 STEP 5. 01031000
  1041. * 01032000
  1042. * 4. FILL IN THE ALTERNATE TAPE ADDRESS, DEFAULTIND 01033000
  1043. * TO FIRST DEVICE ADDRESS. 01034000
  1044. * 01035000
  1045. * 5. FILL IN OPTIONS. 01036000
  1046. * 01037000
  1047. * 6. GO TO ROUTINE 1 STEP 5. 01038000
  1048. *. 01039000
  1049. ***************************************************************** 01040000
  1050. SCANINPU LA R15,INIOB POINT TO IOB 01041000
  1051. NI DDRFLAG3,X'FF'-INERROR TURN OFF FLAG @VA13582 01041010
  1052. B BUILDIOB 01042000
  1053. SCANOUTP LA R15,OUTIOB POINT TO IOB 01043000
  1054. NI DDRFLAG3,X'FF'-OUTERROR TURN OFF FLAG @VA13582 01043010
  1055. BUILDIOB NI IOBSTAT,255-(IOBSTACK+IOBNOPER+IOBCPVOL+IOBOPEN+IOBSCRAT*01044000
  1056. ) RESET THE IOB STAT FIELD 01045000
  1057. BAL R14,SCANCONT GET UNIT ADD 01046000
  1058. BC 4,DDR703 ERROR IF NO INPUT 01047000
  1059. BC 2,GETPARM BRANCH IF ( 01048000
  1060. CL R2,=F'3' IS IT OVER 3 01049000
  1061. BH DDR701 YES- ERROR 01050000
  1062. MVC CCU(8),BLANKS INITIALIZE FIELD FOR CMS RELEASE @VA04324 01051000
  1063. BCTR R2,0 SET UP LENGTH FOR NEXT @VA04324 01052000
  1064. * INSTRUCTION 01053000
  1065. EX R2,MOVECCU MOVE IN CCU FOR POSSIBLE CMS @VA04324 01054000
  1066. * RELEASE PROCESSING 01055000
  1067. LA R2,1(,R2) RESTORE LENGTH @VA04324 01056000
  1068. BAL R14,HEXCONV 01057000
  1069. STH R2,IOBUADD SAVE UNIT ADD OF DEVICE 01058000
  1070. STH R2,IOBATAPE SET UP DEFAULT 01059000
  1071. BAL R14,SCANCONT 01060000
  1072. BC 4,DDR703 ERROR IF NO INPUT 01061000
  1073. BAL R14,SCANUNIT GET DEVICE DATA 01062000
  1074. MVC IOBCLASS(L10),NAMECLAS MOVE IN DEV DATA. @V56BDA8 01063000
  1075. TM IOBTYPE,TYP3380 IS IT 3380 DEVICE HRC012DK 01063060
  1076. BZ CKTAPE HRC012DK 01063120
  1077. LA R1,SNSE4CCW GET ADDRESS OF SENSE ID X'E4' HRC012DK 01063180
  1078. ST R1,IOBCCW SAV ADDRESS OF SENSE ID X'E4' HRC012DK 01063240
  1079. XC SENSE,SENSE ZERO OUT SENSE HRC012DK 01063300
  1080. BAL R14,STARTIO GO ISSUE SENSE HRC012DK 01063360
  1081. TM SENSEB6,RDEVMD82 IS THIS A MODEL 2 OR 3 HRC012DK 01063420
  1082. BZ CONTINUE HRC012DK 01063480
  1083. MVC IOBCYLP(L4),PRIM3382 MOVE IN MAX & ALT CYL MDL2 HRC012DK 01063540
  1084. TM SENSEB6,RDEVMD83 IS THIS A MODEL 3 HRC012DK 01063600
  1085. BZ CONTINUE HRC012DK 01063660
  1086. MVC IOBCYLP(L4),PRIM3383 MOVE IN MAX & ALT CYL MDL3 HRC012DK 01063720
  1087. B CONTINUE HRC012DK 01063780
  1088. CKTAPE EQU * HRC012DK 01063840
  1089. TM IOBCLASS,CLASTAPE TAPE TYPE DEVICE @V56BDA8 01064000
  1090. BZ CONTINUE DON'T BOTHER WITH MODE + DISP HRC012DK 01065490
  1091. MVC IOBMODE(1),NAMECYLP+1 MOVE TAPE MODE @V56BDA8 01066000
  1092. MVC IOBDISP(1),NAMEMTCK+1 MOVE TAPE DISP CODE @V56BDA8 01067000
  1093. CONTINUE CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE @V56BDA8 01068000
  1094. BNE BLNKVSER NO @V2A2063 01069000
  1095. LH R5,IOBUADD YES - GET VIRT. DEV ADDR @V2A2063 01070000
  1096. DC X'83560024' SEE WHAT VM THINKS IT IS @V2A2063 01071000
  1097. STCM R6,B'0010',SVDSTAT SAVE VDEVSTAT HRC012DK 01071500
  1098. CLM R6,12,IOBCLASS DO USER AND VM AGREE? @V2A2063 01072000
  1099. BNE PREDR708 BRANCH IF TYPES INCOMPATIBLE @VA13582 01073000
  1100. TM IOBCLASS,CLASDASD DISK DEVICE HRC012DK 01073010
  1101. BNO CONTINUT HRC012DK 01073020
  1102. TM SVDSTAT,VDVDED HRC012DK 01073030
  1103. BO CONTINUT HRC012DK 01073040
  1104. STM R3,R8,MDSKREGS HRC012DK 01073050
  1105. MVC DEVCUU,CCU HRC012DK 01073060
  1106. CLI DEVCUU,C'0' HRC012DK 01073070
  1107. BNE ISSQUERY HRC012DK 01073080
  1108. MVI DEVCUU,C' ' HRC012DK 01073090
  1109. ISSQUERY EQU * HRC012DK 01073100
  1110. LA R3,QRYDEV HRC012DK 01073110
  1111. LA R4,QRYRESP HRC012DK 01073120
  1112. LA R5,L'QRYDEV+L'DEVCUU HRC012DK 01073130
  1113. ICM R5,B'1000',BUFFRET HRC012DK 01073140
  1114. LA R6,L'QRYRESP HRC012DK 01073150
  1115. * DIAG R3,R5,X'0008' HRC012DK 01073160
  1116. DC X'83350008' HRC012DK 01073170
  1117. BNZ CONTINUT HRC012DK 01073180
  1118. *----------------------------------------------------------* HRC012DK 01073190
  1119. * FIND THE CYLINDER FIELD BY SKIPPING OVER THE APPROPRIATE HRC012DK 01073200
  1120. * NUMBER OF BLANKS. HRC012DK 01073210
  1121. *----------------------------------------------------------* HRC012DK 01073220
  1122. LA R7,CYLPOS-1 HRC012DK 01073230
  1123. LA R8,QRYRESP HRC012DK 01073240
  1124. KPSRCH DS 0H HRC012DK 01073250
  1125. CLI 0(R8),C' ' HRC012DK 01073260
  1126. BE NXTBLANK HRC012DK 01073270
  1127. NEXTCHAR DS 0H HRC012DK 01073280
  1128. LA R8,1(R8) HRC012DK 01073290
  1129. B KPSRCH HRC012DK 01073300
  1130. NXTBLANK DS 0H HRC012DK 01073310
  1131. LA R8,1(R8) IF THERE ARE MORE THAN 1 HRC012DK 01073320
  1132. CLI 0(R8),C' ' BLANK IN BUFFER, THEN HRC012DK 01073330
  1133. BE NXTBLANK SKIP IT HRC012DK 01073340
  1134. BCT R7,NEXTCHAR HRC012DK 01073350
  1135. *----------------------------------------------------------* HRC012DK 01073360
  1136. * FIND THE FIRST EBCDIC CODED DECIMAL NUMBER IN THE HRC012DK 01073370
  1137. * CYLINDER FIELD AND CONVERT IT TO A BINARY VALUE. HRC012DK 01073380
  1138. *----------------------------------------------------------* HRC012DK 01073390
  1139. LR R1,R8 SAVE CYLINDER FIELD POSITION HRC012DK 01073400
  1140. LA R7,CYLPRMSZ MAXUMUM SIZE HRC012DK 01073410
  1141. SR R2,R2 ACTUAL SIZE IN R2 HRC012DK 01073420
  1142. NEXTNUM DS 0H HRC012DK 01073430
  1143. TM 0(R8),X'F0' HRC012DK 01073440
  1144. BNO MDSKBINC HRC012DK 01073450
  1145. LA R8,1(,R8) HRC012DK 01073460
  1146. LA R2,1(,R2) HRC012DK 01073470
  1147. BCT R7,NEXTNUM HRC012DK 01073480
  1148. MDSKBINC DS 0H HRC012DK 01073490
  1149. BAL R14,BINCONV HRC012DK 01073500
  1150. BCTR R2,0 -1 TO GET TOTAL NUM CYLINDERS HRC012DK 01073510
  1151. CLM R2,B'0011',IOBCYLP DO WE HAVE A FULLPACK MINI? HRC012DK 01073520
  1152. BNL CONTINUT YES, LEAVE SETTINGS HRC012DK 01073530
  1153. STH R2,IOBCYLP SAVE ADDR OF LAST PRIMARY CYL HRC012DK 01073540
  1154. STH R2,IOBCYLA LAST ALT CYL = LAST PRIM CYL HRC012DK 01073550
  1155. CONTINUT EQU * HRC012DK 01073560
  1156. CL R10,BAREMAC IS THIS UNDER CMS? @VA04324 01074000
  1157. BE BLNKVSER BRANCH, IF NOT @VA04324 01075000
  1158. CL R15,=A(OUTIOB) IS THIS AN OUTPUT DEFINITION @VA04324 01076000
  1159. BNE BLNKVSER BRANCH IF NOT @VA04324 01077000
  1160. CLI IOBCLASS,CLASDASD IS OUTPUT DEVICE A DASD @VA04324 01078000
  1161. * DEVICE? 01079000
  1162. BNE BLNKVSER BRANCH, IF NOT @VA04324 01080000
  1163. ST R15,SAVEREGS+8 SAVE R15 ACROSS CMS CALL @VA04324 01081000
  1164. LA R1,RELP SET UP R1 WITH PLIST ADDRESS @VA04324 01082000
  1165. SVC 202 @VA04324 01083000
  1166. DC AL4(*+4) NO ERROR RETURN @VA04324 01084000
  1167. L R15,SAVEREGS+8 RESTORE R15 @VA04324 01085000
  1168. BLNKVSER EQU * @VA04324 01086000
  1169. MVC IOBVSER(6),BLANKS BLANK OUT THE VOLUME SERIAL NO 01087000
  1170. BAL R14,SCANCONT 01088000
  1171. BC 4,GTCARD IF NO INPUT BRANCH 01089000
  1172. BC 2,GETPARM IF ( BRANCH 01090000
  1173. CLI IOBCLASS,CLASTAPE IS THIS A TAPE 01091000
  1174. BE TAPE 01092000
  1175. CL R2,=F'7' IS IT OVER 6 OR EQ TO 7 01093000
  1176. BE SCRATCH EQ- GO TEST FOR 'SCRATCH' 01094000
  1177. BH DDR701 YES- ERROR 01095000
  1178. BCTR R2,0 SET UP O-RING 01096000
  1179. EX R2,MOVEVSER MOVE IN VOLUME SERIAL NUMBER 01097000
  1180. B GTCARD GET NEXT CARD 01098000
  1181. SCRATCH CLC 0(7,R1),=C'SCRATCH' IS IT SCRATCH 01099000
  1182. BNE DDR701 NO- ERROR 01100000
  1183. OI IOBSTAT,IOBSCRAT TURN ON THE SCRATCH VOL BIT 01101000
  1184. B GTCARD GET THE NEXT CARD 01102000
  1185. MOVEVSER MVC IOBVSER(0),0(R1) MOVE VOL SER NO FROM CARD TO IOB 01103000
  1186. MOVECCU MVC CCU(0),0(R1) @VA04324 01104000
  1187. TAPE CL R2,=F'3' IS IT OVER 3 01105000
  1188. BH DDR701 YES- ERROR 01106000
  1189. BAL R14,HEXCONV 01107000
  1190. STH R2,IOBATAPE SAVE ALTERNATE TAPE ADD 01108000
  1191. BAL R14,SCANCONT GET THE NEXT PARM @VA00967 01109000
  1192. BC 2,GETPARM IF ( BRANCH @VA00967 01110000
  1193. B GTCARD GET NEXT CARD @VA00967 01111000
  1194. GETPARM TM IOBCLASS,CLASTAPE IS IT TAPE 01112000
  1195. BZ DDR703 NO- ERROR 01113000
  1196. BAL R14,SCANCONT GET THE NEXT PARM 01114000
  1197. BNZ GTCARD LAST PARM GO GET THE NEXT CARD 01115000
  1198. CL R2,=F'2' IS PARM 2 CHAR OR LARGER 01116000
  1199. BL DDR701 NO- ERROR 01117000
  1200. COMP =C'SKIP ' IS THE PARM SKIP 01118000
  1201. BE SCANSKIP YES- GO GET THE COUNT 01119000
  1202. COMP =C'MODE ' IS IT MODE 01120000
  1203. BE SCANMODE YES- GO GET THE MODE 01121000
  1204. COMP =C'REWIND ' IS IT REWIND 01122000
  1205. BNE SCANUNLO NO- BRANCH 01123000
  1206. MVI IOBDISP,X'07' SET UP THE REWIND COMMAND CODE 01124000
  1207. B GETPARM GO GET THE NEXT PARM 01125000
  1208. SCANUNLO COMP =C'UNLOAD ' IS THE PARM UNLOAD 01126000
  1209. BNE SCANLEAV NO- BRANCH 01127000
  1210. MVI IOBDISP,X'0F' SET UP THE REWIND UNLOAD COMMAND CODE 01128000
  1211. B GETPARM 01129000
  1212. SCANLEAV COMP =C'LEAVE ' IS IT LEAVE 01130000
  1213. BNE DDR701 NO- ERROR 01131000
  1214. MVI IOBDISP,X'03' SET UP A NOP 01132000
  1215. B GETPARM GO GET THE NEXT PARM 01133000
  1216. SCANSKIP BAL R14,SCANCONT GO GET THE COUNT 01134000
  1217. BNZ DDR703 ERROR IF NO INPUT 01135000
  1218. BAL R14,BINCONV CONVERT IT TO BINARY 01136000
  1219. CH R2,=H'255' IS IT TO BIG 01137000
  1220. BH DDR701 YES- ERROR 01138000
  1221. STH R2,IOBSKIP SET UP THE SKIP COUNT 01139000
  1222. B GETPARM 01140000
  1223. SCANMODE BAL R14,SCANCONT GET THE TAPE MODE 01141000
  1224. BNE DDR703 ERROR IF NO INPUT 01142000
  1225. CL R2,=F'2' IS PARM 2 CHAR OR GREATER? @V200438 01143000
  1226. BL DDR701 NOPE, SORRY ABOUT THAT. @V200438 01144000
  1227. COMP =C'6250 ' IS IT 6250? @V200438 01145000
  1228. BNE TEST1600 NOPE, GO TRY 1600... @V200438 01146000
  1229. MVI IOBMODE,X'D3' SET MODE TO 6250 BPI, 9 TRACK @V200438 01147000
  1230. B GETPARM NOW GO READ IN THE NEXT CARD @V200438 01148000
  1231. TEST1600 COMP =C'1600 ' IS IT 1600? @V200438 01149000
  1232. BNE TEST800 NO- BRANCH 01150000
  1233. MVI IOBMODE,X'C3' SET MODE TO 1600 BPI 9 TRACK 01151000
  1234. B GETPARM READ IN THE NEXT CARD 01152000
  1235. TEST800 COMP =C'800 ' IS IT 800 01153000
  1236. BNE DDR701 NO- ERROR 01154000
  1237. MVI IOBMODE,X'CB' SET MODE TO 800 BPI 9 TRACK 01155000
  1238. B GETPARM GO GET THE NEXT PARM 01156000
  1239. EJECT 01157000
  1240. ***************************************************************** 01158000
  1241. *. 01159000
  1242. * 4. ROUTINE TO SCAN SYSPRINT STATEMENT 01160000
  1243. * 01161000
  1244. * 1. FILL IN THE PRINTER IOB. 01162000
  1245. * 01163000
  1246. * 2. SET UP THE PRINTER ADDRESS FOR DIAG. 8 IN THE 01164000
  1247. * EXIT ROUTINE. 01165000
  1248. * 01166000
  1249. * 3. GO TO ROUTINE 1 STEP 5. 01167000
  1250. *. 01168000
  1251. ***************************************************************** 01169000
  1252. SCANSYSP LA R15,PRINTIOB POINT TO IOB 01170000
  1253. NI SPRNTDEV,X'00' CLEAR OPTION FLAG HRC012DK 01170300
  1254. MVC PRINTIOB+(IOBUADD-IOB)(2),=XL2'000E' RESET HRC012DK 01170600
  1255. BAL R14,SCANCONT GET THE NEXT PARM 01171000
  1256. BC 4,DDR703 ERROR IF NO INPUT 01172000
  1257. CL R2,=F'4' SEE IF LENGTH OF CONS SPEC HRC012DK 01173080
  1258. BNE NOTCONS1 NO, CANT BE CONS HRC012DK 01173160
  1259. CLC =C'CONS',0(R1) HRC012DK 01173240
  1260. BNE DDR701 NO, GIVE ERROR MESSAGE HRC012DK 01173320
  1261. OI SPRNTDEV,CONS INDICATE SYSPRINT=CONS OPTION HRC012DK 01173400
  1262. MVC PRINTIOB+(IOBUADD-IOB)(2),CONIOB+(IOBUADD-IOB) HRC012DK 01173480
  1263. NI IOBSTAT,X'FF'-IOBNOPER PRESUME CONS WORKS HRC012DK 01173560
  1264. B GTCARD HRC012DK 01173640
  1265. NOTCONS1 EQU * HRC012DK 01173720
  1266. CL R2,=F'3' IS IT OVER 3 HRC012DK 01173800
  1267. BH DDR701 YES- ERROR 01174000
  1268. CLC MACHINE,BAREMAC IS THIS UNDER CMS ? HRC012DK 01174300
  1269. BNE GTCARD YES, IGNORE THIS CARD HRC012DK 01174600
  1270. MVC CPADD(4),BLANKS BLANK OUT THE ADD 01175000
  1271. MOVE CPADD SET UP THE ADD 01176000
  1272. LA R2,1(,R2) +1 01177000
  1273. BAL R14,HEXCONV 01178000
  1274. STH R2,IOBUADD SAVE UNIT ADD 01179000
  1275. BAL R3,PRTINIT HRC012DK 01181990
  1276. B GTCARD READ IN THE NEXT CARD 01184000
  1277. SPACE 3 , HRC012DK 01184090
  1278. PRTINIT EQU * HRC012DK 01184180
  1279. LA R15,PRINTIOB DO AN INITIALIZE PRINTER IN CASE HRC012DK 01184270
  1280. NI IOBSTAT,255-IOBNOPER HRC012DK 01184360
  1281. LA R1,INITCCW THIS IS A 3800 PRINTER HRC012DK 01184450
  1282. ST R1,IOBCCW SAVE THE CCW STRING HRC012DK 01184540
  1283. BAL R14,STARTIO GO DO IT HRC012DK 01184630
  1284. NI SPRNTDEV,X'00' HRC012DK 01184720
  1285. OI SPRNTDEV,PRT HRC012DK 01184810
  1286. BR R3 HRC012DK 01184900
  1287. SPACE 3 01185000
  1288. ***************************************************************** 01186000
  1289. *. 01187000
  1290. * 5. ROUTINE TO SCAN PRINT AND TYPE STATEMENT 01188000
  1291. * 01189000
  1292. * 1. SET UP THE TRANSLATE TABLE, AND FUNCTION NAME. 01190000
  1293. * 01191000
  1294. * 2. IF INPUT IS NOT FROM TAPE OR DASD DEVICE GO TO 01192000
  1295. * ERROR DDR708. 01193000
  1296. * 01194000
  1297. * 3. SET UP THE START ADDRESS, DEFAULTING TO TRACK 0 01195000
  1298. * RECORD 0 IF NOT PROVIDED. 01196000
  1299. * 01197000
  1300. * 4. IF NO 'TO' KEYWORD GO TO STEP 6. 01198000
  1301. * 01199000
  1302. * 5. FILL IN THE STOP ADDRESS, DEFAULTING TO THE LAST 01200000
  1303. * TRACK AND THE LAST RECORD IF NOT PROVIDED. 01201000
  1304. * 01202000
  1305. * 6. SPACE ONE LINE ON THE CONSOLE OR SKIP TO CHANNEL 01203000
  1306. * ONE ON THE PRINTER. 01204000
  1307. * 01205000
  1308. * 7. GO TO ROUTINE 9. 01206000
  1309. *. 01207000
  1310. ***************************************************************** 01208000
  1311. SCANTYPE MVI DDRFLAG2,TYPE SET UP THE TYPE FLAG 01209000
  1312. MVC SAVENAME(8),CTYPE SET UP ROUTINE NAME 01210000
  1313. MVC LOWCASE(41),LOWERCAS SET TRAN TABLE TO LOWER CASE 01211000
  1314. MVC SPECIALC(55),SPECTYPE SET THE TABLE UP FOR TYPE 01212000
  1315. B TSTINPUT 01213000
  1316. SCANPRIN MVI DDRFLAG2,PRINT SET UP THE PRINT FLAG 01214000
  1317. TM SPRNTDEV,CONS+PRT HRC012DK 01214200
  1318. BNZ SETABLES HRC012DK 01214400
  1319. BAL R3,PRTINIT HRC012DK 01214600
  1320. SETABLES EQU * HRC012DK 01214800
  1321. MVC LOWCASE(41),UPPERCAS SET TRAN TABLE TO UPPER CASE 01215000
  1322. MVC SPECIALC(55),SPECPTR SET TRAN TABER SPECIAL CH IN 01216000
  1323. MVC SAVENAME(8),CPRINT SET UP ROUTINE NAME 01217000
  1324. TSTINPUT TM INIOB+(IOBCLASS-IOB),CLASDASD+CLASTAPE 01218000
  1325. BZ DDR708 ERROR IF NOT TAPE OR DASD 01219000
  1326. TM INIOB+(IOBSTAT-IOB),IOBOPEN IS THIS DEVICE OPEN 01220000
  1327. BZ OPENIN1 NO- OPEN THE INPUT UNIT AND RETURN TO *01221000
  1328. THE NEXT STATMENT 01222000
  1329. SPACE 01223000
  1330. CONTSCAN SR R0,R0 ZERO OUT R 0 01224000
  1331. LA R1,EXTABLE POINT TO THE EXTENT TABLE 01225000
  1332. ST R1,CUREXT POINT TO THE FIRST EXTENT 01226000
  1333. ST R1,LASTEXT POINT TO THE LAST EXTENT 01227000
  1334. BAL R14,SCANCONT GET THE START CYLINDER 01228000
  1335. BNE DDR703 ERROR 01229000
  1336. BAL R14,BINCONV CONVERT TO BINARY 01230000
  1337. CH R2,INIOB+(IOBCYLA-IOB) IS IT OVER THE MAX CYL? @V56BDA8 01231000
  1338. BH DDR701 YES- ERROR 01232000
  1339. STH R2,EXTABLE SET UP START EXT 01233000
  1340. STH R2,EXTABLE+2 SET UP STOP EXT 01234000
  1341. STH R2,EXTABLE+4 SET UP REORDER EXTENT 01235000
  1342. STH R2,PSTARTCC SET UP PRINTER START CYLINDER 01236000
  1343. ST R0,PSTARTHH SET UP DEFAULT START TRACK AND HEAD 01237000
  1344. STH R2,PSTOPCC SET UP DEFAULT STOP CYLINDER 01238000
  1345. MVC PSTOPHH,VHRMTCK SET UP DEFAULT STOP TRACK 01239000
  1346. MVC PSTOPRR(2),=4X'FF' SET UP THE DEFAULT REC STOP ID 01240000
  1347. BAL R14,SCANCONT GET THE TRACK ID 01241000
  1348. BNE SCANCOMP 01242000
  1349. COMP TO IS IT TO 01243000
  1350. BE SETSTOP YES- BRANCH 01244000
  1351. BAL R14,BINCONV CONVERT TO BINARY 01245000
  1352. CH R2,VHRMTCK IS IT OVER THE MAX 01246000
  1353. BH DDR701 YES- ERROR 01247000
  1354. STH R2,PSTARTHH SET UP THE START TRACK 01248000
  1355. STH R2,PSTOPHH SET UP THE DEFAULT STOP TRACK 01249000
  1356. BAL R14,SCANCONT GET THE RECORD ID 01250000
  1357. BNE SCANCOMP GET OUT IF NO INPUT 01251000
  1358. COMP TO IS IT TO 01252000
  1359. BE SETSTOP YES- BRANCH 01253000
  1360. BAL R14,BINCONV CONVERT TO BINARY 01254000
  1361. CH R2,=H'255' IS IT OVER 255 01255000
  1362. BH DDR701 YES- ERROR 01256000
  1363. STC R2,PSTARTRR SET UP THE RECORD ID 01257000
  1364. STC R2,PSTOPRR SET UP THE DEFAULT RECORD ID 01258000
  1365. STC R0,PSTOPRR+1 ZERO OUT THE RECORD FLAG 01259000
  1366. BAL R14,SCANCONT GET THE TO KEYWORD 01260000
  1367. BNZ SCANCOMP NO INPUT GET OUT 01261000
  1368. COMP TO IS THE INPUT EQ TO 01262000
  1369. BNE DDR701 NO- ERROR 01263000
  1370. SETSTOP BAL R14,SCANCONT GET THE STOP CYLINDER 01264000
  1371. BNZ DDR703 ERROR IF NO INPUT 01265000
  1372. BAL R14,BINCONV CONVERT TO BINARY 01266000
  1373. CH R2,INIOB+(IOBCYLA-IOB) IS IT OVER THE MAX? @V56BDA8 01267000
  1374. BH DDR701 YES- ERROR 01268000
  1375. CH R2,PSTARTCC IS IT SMALLER THAN THE START CYLINDER 01269000
  1376. BL DDR701 YES- ERROR 01270000
  1377. STH R2,PSTOPCC SET UP THE STOP CYLINDER 01271000
  1378. STH R2,EXTABLE+2 SET UP THE STOP EXTENT CYLINDER 01272000
  1379. MVC PSTOPHH(2),VHRMTCK SET UP DEFAULT TRACK SIZE 01273000
  1380. MVC PSTOPRR(2),=4X'FF' SET UP THE DEFAULT REC STOP ID 01274000
  1381. BAL R14,SCANCONT GET THE STOP TRACK 01275000
  1382. BNZ SCANCOMP IF NO INPUT GET OUT 01276000
  1383. BAL R14,BINCONV CONVERT TO BINARY 01277000
  1384. CH R2,VHRMTCK IS IT OVER THE MAX TRACK 01278000
  1385. BH DDR701 YES- ERROR 01279000
  1386. STH R2,PSTOPHH SET UP THE HEAD ADD 01280000
  1387. CLC PSTARTCC(4),PSTOPCC IS THE START ADD LARGER THAN X01281000
  1388. THE STOP ADD 01282000
  1389. BH DDR701 YES- ERROR 01283000
  1390. BAL R14,SCANCONT GET THE RECORD ID 01284000
  1391. BNZ SCANCOMP GET OUT IF NO INPUT 01285000
  1392. BAL R14,BINCONV CONVERT TO BINARY 01286000
  1393. CH R2,=H'255' IS IT TO BIG 01287000
  1394. BH DDR701 YES- ERROR 01288000
  1395. STC R2,PSTOPRR SET UP THE RECORD ID 01289000
  1396. STC R0,PSTOPRR+1 SET RECORD FLAG TO ZERO 01290000
  1397. CLC PSTARTCC(5),PSTOPCC IS THE START ID SMALLER THAN X01291000
  1398. THE STOP ID 01292000
  1399. BNH TESTOPT YES- BRANCH 01293000
  1400. BAL R14,DDR713 NO- ERROR 01294000
  1401. B GTCARD 01295000
  1402. TESTOPT BAL R14,SCANCONT GET THE OPTION IF ANY 01296000
  1403. SCANCOMP BC 13,DEFAULT5 BRANCH IF NOT LEFT PERENTHIESIS 01297000
  1404. BAL R14,SCANCONT GET THE FIRST OPTION 01298000
  1405. BNZ DDR703 ERROR IF NO OPTION 01299000
  1406. B COMPOPT 01300000
  1407. LOOP14 BAL R14,SCANCONT GET THE NEXT OPTION 01301000
  1408. BC 5,ALLSET GET OUT IF NONE OR RIGHT PERENTHIESIS 01302000
  1409. COMPOPT COMP =C'HEX ' IS THIS THE HEX OPTION 01303000
  1410. BNE COMPGRAP NO- BRANCH 01304000
  1411. OI DDRFLAG2,HEXOPT TURN ON THE HEX OPTION FLAG 01305000
  1412. B LOOP14 NEXT 01306000
  1413. COMPGRAP COMP =C'GRAPHIC ' IS IT THE GRAPHIC OPTION 01307000
  1414. BNE COMPCOUN NO- BRANCH 01308000
  1415. OI DDRFLAG2,GRAPHOPT TURN ON THE GRAPHIC OPTION 01309000
  1416. B LOOP14 NEXT 01310000
  1417. COMPCOUN COMP =C'COUNT ' IS IT THE COUNT OPTION 01311000
  1418. BNE DDR701 NO- ERROR 01312000
  1419. OI DDRFLAG2,COUNTOPT TURN ON THE COUNT OPTION FLAG 01313000
  1420. B LOOP14 01314000
  1421. DEFAULT5 OI DDRFLAG2,GRAPHOPT+HEXOPT DEFAULT TO HEX AND GRAPHIC 01315000
  1422. ALLSET XC INADD(16),INADD ZERO THE INPUT AND OUTPUT ADDRESS 01316000
  1423. MVC INADD+2(4),PSTARTCC SET UP THE SEEK ADDRESS FOR 01317000
  1424. MVC OUTADD+2(4),PSTARTCC THE FIRST TRACK TO PRINT. 01318000
  1425. STH R0,LINECT SET LINE COUNT TO ZERO 01319000
  1426. TM DDRFLAG2,PRINT IS THIS A PRINT OPERATION 01320000
  1427. BZ SPACEONE NO- BRANCH 01321000
  1428. CLC PRINTIOB+(IOBUADD-IOB)(2),CONIOB+(IOBUADD-IOB) HRC012DK 01321300
  1429. BE SPACEONE YES, GO PRINT A BLANK ONE HRC012DK 01321600
  1430. LA R15,PRINTIOB * SKIP TO THE FIRST PAGE 01322000
  1431. LA R1,SKTO1CCW * 01323000
  1432. BAL R14,CMS2 * 01324000
  1433. BAL R14,MSG004 * HRC012DK 01325290
  1434. B TESTIN GO START THE JOB STEP HRC012DK 01325580
  1435. SPACEONE LA R2,BLANKMSG POINT TO THE MSG 01326000
  1436. BAL R14,MSGWRITE GO PRINT ONE BLANK 01327000
  1437. B TESTIN GO START THE JOB STEP (NO MSG) 01328000
  1438. EJECT 01329000
  1439. ***************************************************************** 01330000
  1440. *. 01331000
  1441. * 6. ROUTINE TO SCAN DUMP STATEMENT 01332000
  1442. * 01333000
  1443. * 1. IF INPUT IS FROM DASD AND OUTPUT TO TAPE CONT, 01334000
  1444. * ELSE GO TO ERROR DDR708. 01335000
  1445. * 01336000
  1446. * 2. SET UP FUNCTION NAME AND GO TO ROUTINE 9. 01337000
  1447. *. 01338000
  1448. ***************************************************************** 01339000
  1449. SCANDUMP EQU * HRC012DK 01340090
  1450. TM SPRNTDEV,CONS+PRT HRC012DK 01340180
  1451. BNZ DEVTEST HRC012DK 01340270
  1452. BAL R3,PRTINIT HRC012DK 01340360
  1453. DEVTEST EQU * HRC012DK 01340450
  1454. TM INIOB+(IOBCLASS-IOB),CLASDASD IS IT A DASD DEVHRC012DK 01340540
  1455. BZ DDR708 NO- BRANCH 01341000
  1456. TM OUTIOB+(IOBCLASS-IOB),CLASTAPE IS IT A TAPE DEVICE 01342000
  1457. BZ DDR708 NO- BRANCH 01343000
  1458. TM DDRFLAG3,INERROR+OUTERROR TEST FOR I/O DEF ERROR@VA13582 01343010
  1459. BM DDR708 AGAIN ERROR MSG @VA13582 01343020
  1460. MVC OUTIOB+(IOBVSER-IOB)(6),INIOB+(IOBVSER-IOB) X01344000
  1461. SET UP THE VOL SER NO 01345000
  1462. MVC SAVENAME(8),CDUMP SAVE NAME 01346000
  1463. B OPENIN 01347000
  1464. SPACE 3 01348000
  1465. ***************************************************************** 01349000
  1466. *. 01350000
  1467. * 7. ROUTINE TO SCAN RESTORE STATEMENT 01351000
  1468. * 01352000
  1469. * 1. IF INPUT IS FROM TAPE AND OUTPUT IS TO DASD CONT, 01353000
  1470. * ELSE GO TO ERROR DDR708. 01354000
  1471. * 01355000
  1472. * 2. SET UP FUNCTION NAME AND GO TO ROUTINE 9. 01356000
  1473. *. 01357000
  1474. ***************************************************************** 01358000
  1475. SCANREST EQU * HRC012DK 01359090
  1476. TM SPRNTDEV,CONS+PRT SYSPRINT DEVICE PROCESSED? HRC012DK 01359180
  1477. BNZ DEVTST HRC012DK 01359270
  1478. BAL R3,PRTINIT HRC012DK 01359360
  1479. DEVTST EQU * HRC012DK 01359450
  1480. TM INIOB+(IOBCLASS-IOB),CLASTAPE IS THE INPUT A TAPHRC012DK 01359540
  1481. BZ DDR708 NO- ERROR 01360000
  1482. TM OUTIOB+(IOBCLASS-IOB),CLASDASD IS THE OUTPUT A DASD UNIT 01361000
  1483. BZ DDR708 NO- ERROR 01362000
  1484. TM DDRFLAG3,INERROR+OUTERROR TEST FOR I/O DEF ERROR@VA13582 01362010
  1485. BM DDR708 AGAIN ERROR MSG @VA13582 01362020
  1486. MVC INIOB+(IOBVSER-IOB)(6),OUTIOB+(IOBVSER-IOB) X01363000
  1487. SET UP THE VOL SER NO 01364000
  1488. MVC SAVENAME(8),CRESTORE SAVE THE NAME 01365000
  1489. B OPENIN OPEN THE INPUT UNITS 01366000
  1490. EJECT 01367000
  1491. ***************************************************************** 01368000
  1492. *. 01369000
  1493. * 8. ROUTINE TO SCAN COPY STATEMENT 01370000
  1494. * 01371000
  1495. * 1. IF INPUT AND OUTPUT ARE FROM THE SAME DEVICE TYPE 01372000
  1496. * CONT, ELSE GO TO ERROR DDR708. 01373000
  1497. * 01374000
  1498. * 2. SET UP FUNCTION NAME AND GO TO NEXT ROUTINE. 01375000
  1499. *. 01376000
  1500. ***************************************************************** 01377000
  1501. SCANCOPY EQU * HRC012DK 01378090
  1502. TM SPRNTDEV,CONS+PRT SYSPRINT DEVICE PROCESSED? HRC012DK 01378180
  1503. BNZ TSTDEV HRC012DK 01378270
  1504. BAL R3,PRTINIT HRC012DK 01378360
  1505. TSTDEV EQU * HRC012DK 01378450
  1506. TM INIOB+(IOBCLASS-IOB),255 IS THE CLASS = ZERO HRC012DK 01378540
  1507. BZ DDR708 YES- ERROR 01379000
  1508. * VERIFY THAT DEVICE CLASSES AND TYPES ARE THE SAME 01380000
  1509. CLC INIOB+(IOBCLASS-IOB)(2),OUTIOB+(IOBCLASS-IOB) @V2A2063 01381000
  1510. BNE DDR708 NO - THAT'S AN ERROR @V2A2063 01382000
  1511. TM INIOB+(IOBCLASS-IOB),CLASTAPE TAPES? @V2A2063 01383000
  1512. BO SETNAME YES @V2A2063 01384000
  1513. * COMPARE RELATIVE SIZES OF THE DASD DEVICES 01385000
  1514. CLC INIOB+(IOBCYLP-IOB)(L2),OUTIOB+(IOBCYLP-IOB) @V56BDA8 01386000
  1515. BNH SETNAME A<B OR A=B @V2A2063 01387000
  1516. BAL R14,DDR725 A>B - BETTER LET HIM KNOW @V2A2063 01388000
  1517. RSPCPY EQU * @V2A2063 01389000
  1518. BAL R14,RESPONS2 SEE WHAT TO DO @V2A2063 01390000
  1519. CLC =C'YES ',RESPDATA YES? @V2A2063 01391000
  1520. BE SETNAME OK - CONTINUE @V2A2063 01392000
  1521. CLC =C'NO ',RESPDATA PUNT?? @V2A2063 01393000
  1522. BE GTCARD DROP BACK 5 @V2A2063 01394000
  1523. B RSPCPY THAT'S YES OR NO GUY. @V2A2063 01395000
  1524. SETNAME MVC SAVENAME(8),CCOPY SET UP NAME OF THE CALLING ROUTINE 01396000
  1525. SPACE 3 01397000
  1526. ***************************************************************** 01398000
  1527. *. 01399000
  1528. * 9. SUBROUTINE TO OPEN THE INPUT UNITS 01400000
  1529. * 01401000
  1530. * 1. IF THE ERROR AND CARDIN FLAGS ARE ON GO TO THE 01402000
  1531. * NEXT ROUTINE. 01403000
  1532. * 01404000
  1533. * 2. IF DASD, LINK TO ROUTINE 21 TO 01405000
  1534. * OPEN THE DASD UNIT, ELSE GO TO STEP 4. 01406000
  1535. * 01407000
  1536. * 3. BUILD A VOLUME HEADER RECORD AND GO TO ROUTINE 10. 01408000
  1537. * 01409000
  1538. * 4. SKIP THE PROPER NUMBER OF FILES ON THE TAPE. 01410000
  1539. * 01411000
  1540. * 5. READ IN THE VOLUME HEADER RECORD. 01412000
  1541. * 01413000
  1542. * 6. MOVE THE VOL SER NO INTO THE PROPER IOB'S, 01414000
  1543. * AND GO TO THE NEXT ROUTINE. 01415000
  1544. *. 01416000
  1545. ***************************************************************** 01417000
  1546. OPENIN TM DDRFLAG,ERROR+CARDIN WAS THERE AN ERROR 01418000
  1547. BO GETEXT YES- SKIP THE OPEN AND CHECK THE CARD 01419000
  1548. OPENIN1 LA R15,INIOB POINT TO THE INPUT IOB 01420000
  1549. TM IOBCLASS,CLASTAPE IS INPUT TAPE 01421000
  1550. BO GETVHR YES- GO READ TAPE 01422000
  1551. BAL R14,OPENDASD OPEN THE INPUT DASD UNIT 01423000
  1552. MVC VHRVSER,IOBVSER MOVE IN INPUT VOL SER NO 01424000
  1553. STCK VHRCLOCK SET UP ID 01425000
  1554. MVC VHRMREC(L2),IOBMREC OUTPUT TAPE HDR, OTHER USES.@V56BDA8 01426000
  1555. MVC VHRCYLA(L2),IOBCYLA OUTPUT TAPE HDR. @V56BDA8 01427000
  1556. MVC VHRMTCK(L2),IOBMTCK OUTPUT TAPE HDR, OTHER USES.@V56BDA8 01428000
  1557. MVC VHR(4),=C'VHR ' SET UP ID 01429000
  1558. TM OUTIOB+(IOBCLASS-IOB),CLASTAPE OUTPUT IS TAPE? @V56BDA8 01430000
  1559. BZ MARKOPEN NO, DASD, SO OUTIOB HAS CYL @V56BDA8 01431000
  1560. * LIMITS ALREADY (FROM 'OUTPUT' CTL CARD 01432000
  1561. * PROCESSING). 01433000
  1562. MVC OUTIOB+(IOBCYLA-IOB)(L2),IOBCYLA OUTIOB GETS CYL@V56BDA8 01434000
  1563. * LIMIT OF INIOB. 01435000
  1564. MVC OUTIOB+(IOBCYLP-IOB)(L2),IOBCYLA OUT CYLP EQUAL @V56BDA8 01436000
  1565. * TO INPUT CYLA ALLOWS 01437000
  1566. * ALL CYL TO BE DUMPED. 01438000
  1567. B MARKOPEN 01439000
  1568. GETVHR LH R2,IOBSKIP GET THE SKIP COUNT 01440000
  1569. LTR R2,R2 IS IT ZERO 01441000
  1570. BZ NOFSR1 YES- BRANCH 01442000
  1571. NEXTFSF1 LA R1,FSFCCW POINT TO THE CCW 01443000
  1572. BAL R14,STARTIO SPACE 1 FILE 01444000
  1573. BCT R2,NEXTFSF1 DO IT FOR EACH FILE 01445000
  1574. STH R2,IOBSKIP SAVE THE COUNT 01446000
  1575. NOFSR1 LA R1,RVHRCCW POINT TO THE CCW 01447000
  1576. BAL R14,STARTIO READ IN THE RECORD 01448000
  1577. CLC =C'VHR ',VHR IS THIS A VOLUME HEADER RECORD 01449000
  1578. BE SETVSN YES- BRANCH *01450000
  1579. NO- BACK THE TAPE UP 1 FILE AND READ IT *01451000
  1580. ONE TIME TO ENSURE IT WAS AT THE HEADER 01452000
  1581. BSFILE LA R15,INIOB RESET THE IOB POINTER 01453000
  1582. LA R1,BSFCCW * POINT AT THE BSFILE CCW 01454000
  1583. BAL R14,STARTIO * AND BACK IT UP 01455000
  1584. LA R1,RVHRCCW SET UP TO READ THE VHR 01456000
  1585. BAL R14,STARTIO READ THE VHR 01457000
  1586. CLC =C'VHR ',VHR IS THIS A VOLUME HEADER RECORD 01458000
  1587. BNE ERRCLOSE NO- ERROR 01459000
  1588. SETVSN MVC INIOB+(IOBVSER-IOB)(6),VHRVSER SET UP VOL SER NO 01460000
  1589. MVC INIOB+(IOBCYLA-IOB)(L2),VHRCYLA FILL IN INPUT @V56BDA8 01461000
  1590. * IOB FROM TAPE HEADER. 01462000
  1591. MVC INIOB+(IOBCYLP-IOB)(L2),VHRCYLA FILL IN INPUT @V56BDA8 01463000
  1592. * IOB FROM TAPE HEADER. 01464000
  1593. TM OUTIOB+(IOBCLASS-IOB),CLASDASD IS THE OUTPUT DASD 01465000
  1594. BNZ SETDASD YES- BRANCH 01466000
  1595. MVC OUTIOB+(IOBVSER-IOB)(6),VHRVSER SET UP VOL SER NO 01467000
  1596. MVC OUTIOB+(IOBCYLA-IOB)(L2),INIOB+(IOBCYLA-IOB) @V56BDA8 01468000
  1597. * FILLS OUTPUT IOB WITH DATA FROM INPUT 01469000
  1598. * TAPE HEADER. 01470000
  1599. MVC OUTIOB+(IOBCYLP-IOB)(L2),INIOB+(IOBCYLP-IOB) @V56BDA8 01471000
  1600. * FILLS OUTPUT IOB WITH DATA FROM INPUT 01472000
  1601. * TAPE HEADER. 01473000
  1602. B MARKOPEN 01474000
  1603. SETDASD CLC IOBVSER(6),OUTIOB+(IOBVSER-IOB) IS THE V SER FROM *01475000
  1604. THE DUMPED DISK THE SAME AS THE OUTPUT *01476000
  1605. DISK'S VOLUME SERIAL NUMBER. 01477000
  1606. BE MARKOPEN YES- BRANCH 01478000
  1607. TM OUTIOB+(IOBSTAT-IOB),IOBSCRAT OUTPUT VOL A SCRETCH VOL 01479000
  1608. BO MARKOPEN YES- AOK 01480000
  1609. BAL R14,DDR717 NO- GO TO THE ERROR ROUTINE 01481000
  1610. OPNINRSP EQU * @V2A2063 01482000
  1611. BAL R14,RESPONSE ASK FOR YES NO OR REREAD 01483000
  1612. CLC =C'YES ',RESPDATA IS IT YES 01484000
  1613. BE MARKOPEN YES- CONTINUE 01485000
  1614. CLC =C'REREAD ',RESPDATA IS IT REREAD 01486000
  1615. BE BSFILE YES- GO BACK UP THE TAPE 01487000
  1616. CLC =C'NO ',RESPDATA IS IT NO 01488000
  1617. BNE OPNINRSP NONE OF THE ABOVE @V2A2063 01489000
  1618. OI DDRFLAG,ERROR TURN ON THE ERROR BIT 01490000
  1619. B GTCARD GO READ THE NEXT CARD 01491000
  1620. SPACE 01492000
  1621. MARKOPEN OI INIOB+(IOBSTAT-IOB),IOBOPEN MARK THE IOB OPEN @VA00735 01493000
  1622. MVC THRHADD+1(4),=4X'FF' AND MASK THE THR HOME ADD @VA00735 01494000
  1623. TM DDRFLAG2,VERIFY+REPLACE VER-REP OPERATION 01495000
  1624. * BNZ CONTVR YES- BRANCH 01496000
  1625. TM DDRFLAG2,PRINT+TYPE PRINT OR TYPE OPERATION 01497000
  1626. BNZ CONTSCAN 01498000
  1627. SPACE 3 01499000
  1628. * UPON EXITING FROM THE OPENING OF THE INPUT IOB, THE CYLINDER 01500000
  1629. * EXTENT LIMITS IN THE INIOB AND THE OUTIOB WILL HAVE BEEN SET 01501000
  1630. * AS FOLLOWS: 01502000
  1631. * 01503000
  1632. * | | | 01504000
  1633. * | INIOB | OUTIOB | 01505000
  1634. * | | | 01506000
  1635. *-----------------|------------|------------|------------|------------| 01507000
  1636. * TYPE OF | | | | | 01508000
  1637. * OPERATION | IOBCYLP | IOBCYLA | IOBCYLP | IOBCYLA | 01509000
  1638. *-----------------|------------|------------|------------|------------| 01510000
  1639. * | | | | | 01511000
  1640. * DASD IN,TAP OUT| | | | | 01512000
  1641. * (DUMP) | NAMECYLP | NAMECYLA | NAMECYLA(I)| NAMECYLA(I)| 01513000
  1642. * | | | | | 01514000
  1643. * TAP IN,DASD OUT| | | | | 01515000
  1644. * (RESTORE) | NAMECYLA(H)| NAMECYLA(H)| NAMECYLP | NAMECYLA | 01516000
  1645. * | | | | | 01517000
  1646. * DASD IN & OUT | | | | | 01518000
  1647. * (COPY) | NAMECYLP | NAMECYLA | NAMECYLP | NAMECYLA | 01519000
  1648. * | | | | | 01520000
  1649. * TAPE IN & OUT | | | | | 01521000
  1650. * (COPY) | NAMECYLA(H)| NAMECYLA(H)| NAMECYLA(H)| NAMECYLA(H)| 01522000
  1651. * | | | | | 01523000
  1652. * DASD IN, NO OUT| | | | | 01524000
  1653. * (TYPE/PRINT) | NAMECYLP | NAMECYLA | --- | --- | 01525000
  1654. * | | | | | 01526000
  1655. * TAPE IN, NO OUT| | | | | 01527000
  1656. * (TYPE/PRINT) | NAMECYLA(H)| NAMECYLA(H)| --- | --- | 01528000
  1657. * | | | | | 01529000
  1658. *---------------------------------------------------------------------- 01530000
  1659. * 01531000
  1660. * 01532000
  1661. * WHERE 'NAMECYLP' AND 'NAMECYLA' REPRESENT VALUES TAKEN FROM 01533000
  1662. * THE CORRESPONDING LOCATIONS IN THE DEVICE DESCRIPTION TABLE. 01534000
  1663. * 01535000
  1664. * (H) INDICATES VALUE CAME FROM INPUT TAPE HEADER. 01536000
  1665. * 01537000
  1666. * (I) INDICATES VALUE USED IN OUTIOB WAS COPIED FROM THE INIOB. 01538000
  1667. * 01539000
  1668. * WHERE NOT OTHERWISE NOTED (I.E., FOR DASD DEVICES) THE VALUE 01540000
  1669. * COMES DIRECTLY FROM THE CORRESPONDING DEVICE ENTRY IN THE 01541000
  1670. * DEVICE DESCRIPTION TABLE. 01542000
  1671. * 01543000
  1672. * THE SIGNIFICANCE OF ALL THIS IS THAT DASD EXTENT TESTING THAT 01544000
  1673. * COMES LATER WILL BE GREATLY SIMPLIFIED. 01545000
  1674. EJECT 01546000
  1675. ******************************************************************* 01547000
  1676. *. 01548000
  1677. * 10. SUBROUTINE TO BUILD THE EXTENT TABLE 01549000
  1678. * 01550000
  1679. * 1. IF FIRST KEYWORD IS CPVOL GO TO STEP 4. 01551000
  1680. * 01552000
  1681. * 1A. IF THE KEYWORD IS NUCLEUS READ THE DMKCKP 01553000
  1682. * RECORD (CYL 0 TRK 0 REC 2). THEN BUILD THE 01554000
  1683. * EXTENT TABLE FROM THE POINTERS IN THE RECORD 01555000
  1684. * AND GO TO THE NEXT ROUTINE. 01556000
  1685. * 01557000
  1686. * 2. IF THE KEYWORD IS ALL, SET UP THE EXTENT 01558000
  1687. * TABLE TO WORK WITH THE FULL DASD EXTENT, ELSE 01559000
  1688. * GO TO STEP 7. 01560000
  1689. * 01561000
  1690. * 3. TURN ON THE RESTALL FLAG AND GO TO STEP 9. 01562000
  1691. * 01563000
  1692. * 4. IF NOT DASD INPUT, GO TO STEP 2. ELSE TEST 01564000
  1693. * THE CPVOL FLAG. IF NOT ON GO TO ERROR DDR700. 01565000
  1694. * 01566000
  1695. * 5. READ IN ALLOCATION TABLE FROM DISK AND BUILD 01567000
  1696. * THE EXTENT TABLE TO DUMP OR COPY CYL 0 AND ALL 01568000
  1697. * DIRECTORY AND PERMANENT SPACE. 01569000
  1698. * 01570000
  1699. * 6. GO TO STEP 9. 01571000
  1700. * 01572000
  1701. * 7. BUILD EXTENT TABLE FROM EXTENT INFO. IN THE CARD 01573000
  1702. * 01574000
  1703. * 8. GET THE NEXT STATEMENT. IF NOT A NULL LINE, AN 01575000
  1704. * INPUT OR OUTPUT STATEMENT, GO TO STEP 7. 01576000
  1705. * OTHERWISE GO TO STEP 10. 01577000
  1706. * 01578000
  1707. * 9. READ THE NEXT STATEMENT. IF NOT A NULL LINE, AN 01579000
  1708. * INPUT OR OUTPUT STATEMENT, GO TO ERROR DDR702. 01580000
  1709. * 01581000
  1710. * 10. SAVE POINTER TO INPUT OR OUTPUT STATEMENT AND GO 01582000
  1711. * TO THE NEXT ROUTINE. 01583000
  1712. *. 01584000
  1713. * 01585000
  1714. ******************************************************************* 01586000
  1715. GETEXT SR R0,R0 01587000
  1716. MVC LASTREOR(4),=4X'FF' SET LAST STOP AND REOR TO -1 01588000
  1717. LA R7,EXTABLE POINT TO EXTENT TABLE 01589000
  1718. LA R8,EXTSIZE SET UP SIZE OF EXTENT TBL @V200731 01590000
  1719. BAL R14,SCANCONT GET FIRST PARM 01591000
  1720. BE GETOK OK, THERE IS ONE @VA07705 01592000
  1721. BAL R14,MSG003 GO GET EXTENTS @VA07705 01593000
  1722. BAL R14,SCANCONT GET FIRST PARM @VA07705 01594000
  1723. BNE ALL1 NO ONE, ASSUME ALL @VA07705 01595000
  1724. GETOK EQU * @VA07705 01596000
  1725. CL R2,=F'2' INPUT MUST BE 2 OR OVER 01597000
  1726. BL EXTENTIN GO CHECK FOR EXTENT 01598000
  1727. COMP SAVENAME IS THIS THE ROUTINE NAME 01599000
  1728. BE GETEXT YES- GET THE NEXT PARAMITER 01600000
  1729. COMP =C'CPVOL ' IS IT CPVOL 01601000
  1730. BE CPVOL YES- BRANCH 01602000
  1731. COMP =C'NUCLEUS ' EQUAL (NUC) 01603000
  1732. BNE NOTNUC NO- BRANCH (NUC) 01604000
  1733. LA R15,INIOB POINT TO THE INPUT IOB (NUC) 01605000
  1734. TM IOBCLASS,CLASDASD INPUT UNIT DASD (NUC) 01606000
  1735. BNZ GETDASD YES- BRANCH (NUC) 01607000
  1736. LA R1,RTHRCCW SET UP TO READ REC FROM TAPE (NUC) 01608000
  1737. BAL R14,STARTIO READ IN THE DMKCKP MODULE (NUC) 01609000
  1738. B CHECKCKP (NUC) 01610000
  1739. GETDASD TM IOBSTAT,IOBCPVOL INPUT A CPVOL (NUC) 01611000
  1740. BZ DDR700 NO- ERROR (NUC) 01612000
  1741. LA R1,RCKPDASD SET UP THE READ REC FROM DASD (NUC) 01613000
  1742. BAL R14,STARTIO READ IN THE DMKCKP MODULE (NUC) 01614000
  1743. CHECKCKP CLC =CL8'DMKCKP',THR+14 IS THIS THE DMKCKP MODULE (NUC) 01615000
  1744. BNE DDR723 NO- ERROR (NUC) 01616000
  1745. ICM R1,15,THR+22 GET THE CYL EXTENTS FOR THE NUCLEUS (NUC) 01617000
  1746. CLM R1,3,OUTIOB+(IOBCYLP-IOB) VERIFY THAT STOP CYL @V56BDA8 01618000
  1747. * WILL NOT GET PUT INTO AN 01619000
  1748. * ALTERNATE TRACK CYLINDER. 01620000
  1749. * (THIS WAS ALLOWED PRIOR TO 01621000
  1750. * REL 5.6, BUT NO LONGER.) IF 01622000
  1751. * OUTPUT IS TAPE, THIS TEST IS 01623000
  1752. * A NO-OP BECAUSE IOBCYLP WILL 01624000
  1753. * CONTAIN NAMECYLA,NOT NAMECYLP. 01625000
  1754. LA R14,GTCARD ERROR RETURN ADDR. @V56BDA8 01626000
  1755. BH DDR726 ERROR, OLD DISK HAD NUCLEUS ON @V56BDA8 01627000
  1756. * ALTERNATE TRACK CYLINDER. 01628000
  1757. ST R1,CYLSTART SAVE THE START AND STOP CYL ADD (NUC) 01629000
  1758. STCM R1,12,CYLREOR SET UP THE REORDER CYL ADD ALSO (NUC) 01630000
  1759. OI DDRFLAG,NUCLEUS TURN ON THE NUCLEUS FLAG (NUC) 01631000
  1760. B ENDLIST1 (NUC) 01632000
  1761. NOTNUC EQU * (NUC) 01633000
  1762. COMP =C'ALL ' IS INPUT EQ ALL 01634000
  1763. BNE EXTENTIN NO- BRANCH 01635000
  1764. ALL EQU * @VA01453 01636000
  1765. BAL R14,SCANCONT ANY MORE PARMS? @VA01453 01637000
  1766. BC 11,DDR701 YES - ERROR 701 PLEASE @VA01453 01638000
  1767. ALL1 EQU * @VA07705 01639000
  1768. STH R0,CYLSTART NO - POINT AT FIRST CYL @VA01453 01640000
  1769. STH R0,CYLREOR POINT TO REORDER CYL 01641000
  1770. LH R14,OUTIOB+(IOBCYLP-IOB) PREPARE TO USE IOBCYLP @V56BDA8 01642000
  1771. * OF OUTPUT DEVICE AS STOP LIMIT 01643000
  1772. TM OUTIOB+(IOBCLASS-IOB),CLASDASD PROVIDED OUTPUT @V56BDA8 01644000
  1773. * IS DASD. 01645000
  1774. BO ALLSTOP OKAY, OUTPUT IS DASD. @V56BDA8 01646000
  1775. LH R14,INIOB+(IOBCYLP-IOB) OUTPUT NOT DASD. GET @V56BDA8 01647000
  1776. * IOBCYLP OF INPUT DEVICE INSTEAD. 01648000
  1777. ALLSTOP STH R14,CYLSTOP USE IT AS STOP CYL FOR 'ALL' XTNT@V56BDA8 01649000
  1778. OI DDRFLAG,RESTALL TURN ON THE RESTORE ALL FLAG 01650000
  1779. ENDLIST1 TM DDRFLAG,CARDIN IS THE INPUT FROM CARD 01651000
  1780. BZ SETUPADD NO- BRANCH 01652000
  1781. ENDLIST BAL R14,READCONT GO GET NEXT CARD 01653000
  1782. BAL R14,SCANCONT GET FIRST PARM 01654000
  1783. BNE TESTCON BRANCH IF NO INPUT 01655000
  1784. COMP CINPUT IS IT AN INPUT CARD 01656000
  1785. BE SAVEPT YES- BRANCH 01657000
  1786. COMP COUTPUT IS IT AN OUTPUT CARD 01658000
  1787. BNE DDR702 CARDS OUT OF SEQUENCE 01659000
  1788. SAVEPT STM R1,R2,NEXTFILD 01660000
  1789. B SETUPADD GO SET UP DASD IO ADDRESS 01661000
  1790. CPVOL TM INIOB+(IOBCLASS-IOB),CLASTAPE IS INPUT A TAPE 01662000
  1791. BO ALL DEFAULT TO ALL IF INPUT IS A TAPE 01663000
  1792. TM INIOB+(IOBSTAT-IOB),IOBCPVOL IS THE INPUT UNIT A CPVOL 01664000
  1793. BNO DDR700 NO- GO TO ERROR ROUTINE 01665000
  1794. LA R15,INIOB POINT TO THE IOB 01666000
  1795. LA R1,ALLOCCW POINT TO THE CCW 01667000
  1796. BAL R14,STARTIO GO READ ALLOCATION TABLE 01668000
  1797. SR R1,R1 POINT TO THE FIRST BYTE 01669000
  1798. L R2,ALLOBUFA POINT TO THE ALLOCATION RECORD 01670000
  1799. SAVEST STH R1,CYLSTART POINT TO THE START CYL 01671000
  1800. STH R1,CYLREOR POINT TO REORDER CYL 01672000
  1801. POINT1 LA R2,1(,R2) POINT TO THE NEXT BYTE IN THE ALLO REC 01673000
  1802. CLI 0(R2),X'0C' IS IT A DIRECTORY ENTRY 01674000
  1803. BE ADD1 YES- BRANCH 01675000
  1804. CLI 0(R2),X'01' IS IT A PERMANENT 01676000
  1805. BE ADD1 YES- BRANCH 01677000
  1806. CLI 0(R2),X'FF' END OF LIST? 01678000
  1807. BE ENDSCAN 01679000
  1808. STH R1,CYLSTOP POINT TO THE STOP CYL 01680000
  1809. CH R1,OUTIOB+(IOBCYLP-IOB) VERIFY THAT STOP CYL @V56BDA8 01681000
  1810. * WILL NOT GET PUT INTO AN ALT 01682000
  1811. * TRK CYL. (THIS WAS ALLOWED 01683000
  1812. * PRIOR TO REL 5.6, BUT NO 01684000
  1813. * LONGER.) IF OUTPUT IS TAPE THIS 01685000
  1814. * TEST IS A NO-OP BECAUSE IOBCYLP 01686000
  1815. * WILL CONTAIN THE NAMECYLA VALUE, 01687000
  1816. * NOT THE NAMECYLP VALUE. 01688000
  1817. LA R14,GTCARD ERROR RETURN ADDR. @V56BDA8 01689000
  1818. BH DDR726 ERROR, OLD DISK HAD DATA ON @V56BDA8 01690000
  1819. * ALTERNATE CYLINDER(S). 01691000
  1820. LA R1,1(,R1) POINT TO THE NEXT CYLINDER 01692000
  1821. CL R7,ENDEXT IS THIS END OF THE EXTENT TABLE @V200731 01693000
  1822. BH DDR712 YES, GO TO ERROR MESSAGE @V200731 01694000
  1823. AR R7,R8 NO - POINT TO NEXT EXTRY @V200731 01695000
  1824. POINT2 LA R1,1(,R1) POINT TO THE NEXT CYLINDER 01696000
  1825. LA R2,1(,R2) POINT TO THE NEXT BYTE IN THE ALLO REC 01697000
  1826. CLI 0(R2),X'0C' IS IT A DIRECTORY ENTRY 01698000
  1827. BE SAVEST YES- BRANCH 01699000
  1828. CLI 0(R2),X'01' IS IT PERMENENT 01700000
  1829. BE SAVEST YES- BRANCH 01701000
  1830. CLI 0(R2),X'FF' END OF THE LIST ? 01702000
  1831. BNE POINT2 01703000
  1832. SR R7,R8 SUBTRACT ONE FROM THE CYL EXTENT TABLE 01704000
  1833. B ENDLIST1 01705000
  1834. ADD1 LA R1,1(,R1) POINT TO THE NEXT CYLINDER 01706000
  1835. B POINT1 01707000
  1836. ENDSCAN STH R1,CYLSTOP SAVE STOP CYLINDER 01708000
  1837. CH R1,OUTIOB+(IOBCYLP-IOB) VERIFY THAT STOP CYL @V56BDA8 01709000
  1838. * WILL NOT GET PUT INTO AN ALT 01710000
  1839. * TRK CYL. (THIS WAS ALLOWED 01711000
  1840. * PRIOR TO REL 5.6, BUT NO 01712000
  1841. * LONGER.) IF OUTPUT IS TAPE THIS 01713000
  1842. * TEST IS A NO-OP BECAUSE IOBCYLP 01714000
  1843. * WILL CONTAIN THE NAMECYLA VALUE, 01715000
  1844. * NOT THE NAMECYLP VALUE. 01716000
  1845. LA R14,GTCARD ERROR RETURN ADDR. @V56BDA8 01717000
  1846. BH DDR726 ERROR, OLD DISK HAD DATA ON @V56BDA8 01718000
  1847. * ALTERNATE CYLINDER(S). 01719000
  1848. B ENDLIST1 01720000
  1849. EXTENTIN CL R2,=F'3' IS IT OVER 3 01721000
  1850. BH DDR701 YES- ERROR 01722000
  1851. BAL R14,BINCONV 01723000
  1852. BAL R14,VALEXT VALIDATE CYLINDER NUMBER. @V2A2063 01724000
  1853. STH R2,CYLSTART SAVE THE START CYL NO 01725000
  1854. GETSTOP BAL R14,SCANCONT 01726000
  1855. BNE DEFAULT3 IF NO INPUT DEFAULT TO START 01727000
  1856. COMP TO IS THE INPUT EQ TO 01728000
  1857. BE GETSTOP YES- BRANCH 01729000
  1858. CL R2,=F'3' IS IT OVER 3 01730000
  1859. BH DDR701 YES- ERROR 01731000
  1860. BAL R14,BINCONV 01732000
  1861. BAL R14,VALEXT VALIDATE CYLINDER NUMBER. @V2A2063 01733000
  1862. STH R2,CYLSTOP SAVE THE STOP CYL 01734000
  1863. GETREOR BAL R14,SCANCONT 01735000
  1864. BNE DEFAULT4 IF NO REORDER CYL DEFAULT TO START CYL 01736000
  1865. COMP =C'REORDER ' IS IT REORDER 01737000
  1866. BE GETREOR YES- GET NEXT PARM 01738000
  1867. COMP TO IS IT TO 01739000
  1868. BE GETREOR YES- GET NEXT PARM 01740000
  1869. CL R2,=F'3' COUNT EQ 3 01741000
  1870. BH DDR701 NO ERROR 01742000
  1871. BAL R14,BINCONV 01743000
  1872. STH R2,CYLREOR SAVE REORDERED CYLINDER 01744000
  1873. * NO NEED TO VALIDATE REORDER STARTING 01745000
  1874. * ADDR NOW; LATER VALIDATION OF REORDER 01746000
  1875. * STOP ADDR (YES, STOP) WILL BE SUFFICIENT. 01747000
  1876. POINT3 DS 0H @V56BDA8 01748000
  1877. LA R14,NEWEXT SET UP RETURN ADD FOR ERROR DDR713 01749000
  1878. LH R1,CYLSTART PICK UP START CYL 01750000
  1879. CH R1,LASTSTOP WILL START OVERLAP LAST STOP CYL 01751000
  1880. BNH DDR713 YES- ERROR 01752000
  1881. LH R3,CYLSTOP GET STOP CYLINDER 01753000
  1882. SR R3,R1 IS START LESS THAN STOP (COMPUTE LENGTH) 01754000
  1883. BM DDR713 NO- ERROR 01755000
  1884. TM OUTIOB+(IOBCLASS-IOB),CLASTAPE IS THE OUTPUT TAPE 01756000
  1885. BZ CHKSAME NO, BYPASS NEXT CHECK IF DASD @VA04585 01757000
  1886. CH R2,LASTREOR WILL THIS EXT OVERLAP THE LAST EXT 01758000
  1887. BNH DDR713 YES- ERROR 01759000
  1888. B POINTEND @VA04585 01760000
  1889. CHKSAME EQU * @VA04585 01761000
  1890. CLC INIOB+(IOBUADD-IOB)(2),OUTIOB+(IOBUADD-IOB) @VA04585 01762000
  1891. * SAME DEVICE FOR OUTPUT AS WELL AS INPUT? 01763000
  1892. BNE POINTEND NO, DONT BOTHER CHECKING FOR @VA04585 01764000
  1893. * OVERLAPPING EXTENTS WHEN REORDERING 01765000
  1894. CH R2,CYLSTART FIRST REORDER CYL LESS THAN @VA04585 01766000
  1895. * STARTING CYL? 01767000
  1896. BL NEXTCHK YES, NOW CHECK FURTHER @VA04585 01768000
  1897. CH R2,CYLSTOP FIRST REORDER CYL GREATER THAN @VA04585 01769000
  1898. * STOP CYL? 01770000
  1899. BH POINTEND YES, EVERYTHING O.K. @VA04585 01771000
  1900. B DDR713 NO, CANT BE DONE @VA04585 01772000
  1901. NEXTCHK AR R3,R2 GET LAST REORDER CYL @VA04585 01773000
  1902. CLR R1,R3 LAST REORDER CYL LESS THAN @VA04585 01774000
  1903. * STARTING CYL 01775000
  1904. BH LARGECHK YES, EVERYTHING O.K. @VA04585 01776000
  1905. B DDR713 NO, CANT BE DONE @VA04585 01777000
  1906. POINTEND AR R3,R2 ADD THE LENGHT OF THE EXTENT TO REOR 01778000
  1907. LARGECHK DS 0H @V56BDA8 01779000
  1908. LR R2,R3 REORDER-STOP-CYL, INPUT TO VALEXT@V56BDA8 01780000
  1909. BAL R14,VALEXT CHECK FOR STOP CYL BEYOND END OF @V56BDA8 01781000
  1910. * DISK. 01782000
  1911. CH R3,OUTIOB+(IOBCYLP-IOB) STOP CYL IN ALT TRK CYL?@V56BDA8 01783000
  1912. LA R14,NEWEXT SET ERROR MSG RETURN ADDR. @V56BDA8 01784000
  1913. BH DDR726 USER TRIED TO REORDER TO ALT CYL.@V56BDA8 01785000
  1914. STH R3,LASTREOR SAVE THE REORDER EXTENT 01786000
  1915. MVC LASTSTOP,CYLSTOP SAVE LAST STOP ADD 01787000
  1916. CL R7,ENDEXT AT THE END OF THE TABLE @V200731 01788000
  1917. BH DDR712 YES - TELL USER ABOUT THE PROB @V200731 01789000
  1918. AR R7,R8 NO - POINT TO THE NEXT ENTRY @V200731 01790000
  1919. NEWEXT BAL R14,MSG003B PRINT THE MSG AND READ THE NEXT CARD 01791000
  1920. GETSTART BAL R14,SCANCONT GET START CYL 01792000
  1921. BNE TESTCON1 GET OUT IF NO INPUT 01793000
  1922. COMP SAVENAME IS INPUT THE SAME AS THE CALLING ROUTINE 01794000
  1923. BE GETSTART YES- GET START CYL 01795000
  1924. COMP CINPUT IS IT INPUT 01796000
  1925. BE SAVEPTR YES- BRANCH 01797000
  1926. COMP COUTPUT IS IT OUTPUT 01798000
  1927. BNE EXTENTIN NO- BRANCH 01799000
  1928. SAVEPTR SR R7,R8 BACK UP TO THE LAST EXTENT 01800000
  1929. STM R1,R2,NEXTFILD SAVE POINTERS TO THE NEXT FIELD 01801000
  1930. B SETUPADD 01802000
  1931. DEFAULT3 MVC CYLSTOP,CYLSTART DEFAULT TO START ADD 01803000
  1932. DEFAULT4 MVC CYLREOR,CYLSTART DEFAULT TO START ADDRESS 01804000
  1933. LH R2,CYLREOR SET UP TO CHECK EXTENT 01805000
  1934. B POINT3 GET NEXT INPUT LINE 01806000
  1935. TESTCON1 SR R7,R8 POINT TO LAST EXTENT ENTRY 01807000
  1936. TESTCON TM DDRFLAG,CARDIN IS IT CARD INPUT 01808000
  1937. BZ SETUPADD NO- BRANCH 01809000
  1938. TM DDRFLAG,CARDEOF END OF FILE ? 01810000
  1939. BZ NEWEXT NO- SKIP THE BLANK CARD 01811000
  1940. SETUPADD EQU * @V2A2063 01812000
  1941. C R7,=A(EXTABLE) AT LEAST ONE VALID EXTENT?? @V2A2063 01813000
  1942. BL GTCARD NO - LET HIM TRY NEW OPERATION @V2A2063 01814000
  1943. ST R7,LASTEXT YES - SET END OF TBL ADDR @V2A2063 01815000
  1944. LA R7,EXTABLE POINT TO EXTENT TABLE 01816000
  1945. ST R7,CUREXT POINT TO FIRST EXT 01817000
  1946. XC INADD(8),INADD * ZERO OUT DASD ADD 01818000
  1947. XC OUTADD(8),OUTADD * 01819000
  1948. MVC INADD+2(2),CYLSTART SET UP INPUT DASD ADDRESS 01820000
  1949. MVC OUTADD+2(2),CYLREOR SET UP OUTPUT DASD ADDRESS 01821000
  1950. B OPENOUT GO OPEN THE OUTPUT UNIT @V2A2063 01822000
  1951. SPACE 2 01823000
  1952. VALEXT EQU * @V2A2063 01824000
  1953. LA R15,INIOB @V56BDA8 01825000
  1954. CH R2,IOBCYLA IS CYLINDER LEGAL? @V56BDA8 01826000
  1955. BCR 12,R14 EQUAL OR LOW IS OK @V2A2063 01827000
  1956. LA R14,NEWEXT CYL INVALID - SET RETURN ADDR @V2A2063 01828000
  1957. B DDR713 GIVE HIM INVALID EXTENT MSG @V2A2063 01829000
  1958. EJECT 01830000
  1959. ***************************************************************** 01831000
  1960. *. 01832000
  1961. * 11. SUBROUTINE TO OPEN OUTPUT UNITS 01833000
  1962. * 01834000
  1963. * 1. IF THE ERROR AND CARDIN FLAGS ARE ON GO TO ROUTINE 1 01835000
  1964. * STEP 5 TO GET THE NEXT CARD. 01836000
  1965. * 01837000
  1966. * 2. IF OUTPUT UNIT IS DASD LINK TO ROUTINE 21 TO OPEN 01838000
  1967. * THE DASD UNIT, THEN GO TO STEP 4. 01839000
  1968. * 01840000
  1969. * 2A. IF A NUCLEUS FUNCTION CHECK FOR A VALID (NUC) 01841000
  1970. * VOLUME AND WRITE THE DMKCKP RECORD. THEN GO TO (NUC) 01842000
  1971. * STEP 4. (NUC) 01843000
  1972. * (NUC) 01844000
  1973. * 3. SKIP THE PROPER NUMBER OF FILES ON THE TAPE AND 01845000
  1974. * WRITE THE VOLUME HEADER RECORD IN THE PROPER MODE. 01846000
  1975. * 01847000
  1976. * 3A. IF A NUCLEUS FUNCTION WRITE OUT THE DMKCKP (NUC) 01848000
  1977. * RECORD. (NUC) 01849000
  1978. * (NUC) 01850000
  1979. * 4. IF THE INPUT UNIT IS DASD GO TO THE NEXT ROUTINE. 01851000
  1980. * 01852000
  1981. * 5. IF THE FIRST CYLINDER ON TAPE IS GREATER THEN THE 01853000
  1982. * THE START CYL THEN GO TO ROUTINE 20 STEP 1, 01854000
  1983. * ELSE GO TO THE NEXT ROUTINE. 01855000
  1984. *. 01856000
  1985. ***************************************************************** 01857000
  1986. OPENOUT TM DDRFLAG,ERROR+CARDIN WAS THERE AN ERROR 01858000
  1987. BO GTCARD YES- SKIP THE OPEN AND GO READ THE CARD 01859000
  1988. LA R15,OUTIOB POINT TO THE OUTPUT IOB 01860000
  1989. TM IOBCLASS,CLASTAPE IS THE OUTPUT A TAPE 01861000
  1990. BZ GETVSER NO- BRANCH 01862000
  1991. LH R2,IOBSKIP GET THE SKIP COUNT 01863000
  1992. LTR R2,R2 DO I HAVE FILES TO SKIP 01864000
  1993. BZ NOFSF2 NO- BRANCH 01865000
  1994. NEXTFSF2 LA R1,FSFCCW POINT TO THE FSF CCW 01866000
  1995. BAL R14,STARTIO SPACE 1 FILE 01867000
  1996. BCT R2,NEXTFSF2 DO IT FOR EACH FILE 01868000
  1997. STH R2,IOBSKIP SAVE THE SKIP COUNT (0) 01869000
  1998. NOFSF2 MVC VHRCYLNO,OUTADD SET UP OUTPUT CYLINDER ID 01870000
  1999. LA R1,WRITEVHR POINT TO THE WRITE CCW 01871000
  2000. MVC WRITEVHR(1),IOBMODE SET UP THE MODE 01872000
  2001. BAL R14,STARTIO 01873000
  2002. TM DDRFLAG,NUCLEUS NUCLEUS FLAG ON (NUC) 01874000
  2003. BNO TESTAPE NO- BRANCH (NUC) 01875000
  2004. LA R1,WCKPTAPE SET UP TO WRITE THE DMKCKP MODULE (NUC) 01876000
  2005. BAL R14,STARTIO AND WRITE IT TO TAPE (NUC) 01877000
  2006. TESTAPE TM INIOB+(IOBCLASS-IOB),CLASTAPE IS THE INPUT A TAPE 01878000
  2007. BZ PRINTH NO- BRANCH 01879000
  2008. TSTEXT EQU * @V2A2063 01880000
  2009. CLC EXTABLE(2),VHRCYLNO+2 IS THE INPUT CYLINDER GREATER X01881000
  2010. THAN THE FIRST EXTENT START CYLINDER? 01882000
  2011. BNL PRINTH NO- BRANCH 01883000
  2012. TM DDRFLAG,RESTALL IS THIS A RESTORE ALL FUNCTION 01884000
  2013. BO PRINTH YES- BRANCH 01885000
  2014. LA R15,INIOB POINT TO THE IOB 01886000
  2015. B ERRCLOSE YES- ERROR (NOT THE FIRST TAPE ) 01887000
  2016. GETVSER BAL R14,OPENDASD OPEN THE DASD UNIT 01888000
  2017. TM DDRFLAG,NUCLEUS NUCLEUS FLAG ON (NUC) 01889000
  2018. BZ CHKOPNSZ NO - CHK DASD SIZES @V2A2063 01890000
  2019. TM IOBSTAT,IOBCPVOL OUTPUT A CPVOL (NUC) 01891000
  2020. BNO DDR722 NO- ERROR (NUC) 01892000
  2021. CLC INIOB+(IOBVSER-IOB)(6),OUTIOB+(IOBVSER-IOB) (NUC)*01893000
  2022. INPUT AND OUTPUT VOLID THE SAME (NUC) 01894000
  2023. BNE DDR722 NO- ERROR (NUC) 01895000
  2024. LA R1,ALLOCCW SET UP TO READ IN THE ALLO REC (NUC) 01896000
  2025. BAL R14,STARTIO READ IT IN (NUC) 01897000
  2026. L R1,ALLOBUFA POINT TO THE ALLOCATION BUFFER (NUC) 01898000
  2027. LH R2,CYLSTART GET STARTING ADD OF NUC (NUC) 01899000
  2028. LA R2,0(R1,R2) AND POINT TO THE BYTE MAP (NUC) 01900000
  2029. LH R3,CYLSTOP GET THE END ADD OF THE NUCLEUS (NUC) 01901000
  2030. LA R3,0(R3,R1) AND POINT TO THE BYTE MAP (NUC) 01902000
  2031. TESTPERM CLI 0(R3),X'01' IS THE ALLO BYTE FOR PERM SPACE (NUC) 01903000
  2032. BNE DDR722 NO- ERROR (NUC) 01904000
  2033. CLR R3,R2 FIRST NUCLEUS CYLINDER (NUC) 01905000
  2034. BL DDR722 LOW- ERROR (DMKCPK MODULE BAD) (NUC) 01906000
  2035. BE WRITENUC EQU- ALL OK (NUC) 01907000
  2036. BCT R3,TESTPERM HIGH- GO TEST THE NEXT CYL (NUC) 01908000
  2037. WRITENUC LA R1,WCKPDASD SET UP TO WRITE THE DMKCKP MODULE (NUC) 01909000
  2038. BAL R14,STARTIO WRITE IT OUT (NUC) 01910000
  2039. B PRINTH (NUC) 01911000
  2040. SPACE 01912000
  2041. CHKOPNSZ EQU * @V2A2063 01913000
  2042. CLC SAVENAME,CRESTORE RESTORE OPERATION? @V2A2063 01914000
  2043. BNE PRINTH NO - NO CHK NEEDED HERE. @V56BDA8 01915000
  2044. CLC INIOB+(IOBCYLA-IOB)(L2),OUTIOB+(IOBCYLA-IOB) @V56BDA8 01916000
  2045. * CHECK THAT DUMPED DISK ALREADY ON TAPE IS 01917000
  2046. * NO LARGER THAN DISK TO BE RESTORED TO. 01918000
  2047. BNH TSTEXT LOW OR EQUAL - OK @V2A2063 01919000
  2048. BAL R14,DDR725 A>B - WARN HIM ABOUT IT @V2A2063 01920000
  2049. OPNOUTR EQU * @V2A2063 01921000
  2050. BAL R14,RESPONS2 SEE WHAT TO DO @V2A2063 01922000
  2051. CLC =C'YES ',RESPDATA CONTINUE? @V2A2063 01923000
  2052. BE TSTEXT OK @V2A2063 01924000
  2053. CLC =C'NO ',RESPDATA QUIT? @V2A2063 01925000
  2054. BE GTCARD OK - TRY A NEW OPER. @V2A2063 01926000
  2055. B OPNOUTR YES OR NO FELLA... @V2A2063 01927000
  2056. EJECT 01928000
  2057. ****************************************************************** 01929000
  2058. *. 01930000
  2059. * 12. ROUTINE TO PRINT THE CYLINDER MAP 01931000
  2060. * 01932000
  2061. * A PRINTH 01933000
  2062. * 01934000
  2063. * 1. COMPUTE THE TIME AND DATE FROM THE TOD CLOCK VALUE 01935000
  2064. * IN THE VOLUME HEADER RECORD. 01936000
  2065. * 01937000
  2066. * 2. BUILD THE HEADER RECORD AND ITS CCW STRING FOR THE 01938000
  2067. * CYLINDER MAP. 01939000
  2068. * 01940000
  2069. * 3. PRINT THE HEADER ON THE SYSPRINT DEVICE, AND GO 01941000
  2070. * MSG004 TO START THE JOB, RETURN AT STEP 7. 01942000
  2071. * 01943000
  2072. * B PRINTEXT 01944000
  2073. * 01945000
  2074. * 4. CONVERT THE INPUT AND OUTPUT CYLINDER EXTENR DATA. 01946000
  2075. * 01947000
  2076. * 5. PRINT THE EXTENT DATA ON THE SYSPRINT DEVICE. 01948000
  2077. * 01949000
  2078. * 6. RETURN TO CALLER. 01950000
  2079. * 01951000
  2080. * C TESTIN 01952000
  2081. * 01953000
  2082. * 7. IF THE INPUT IS FROM TAPE GO TO THE NEXT ROUTINE, 01954000
  2083. * ELSE GO TO ROUTINE 14. 01955000
  2084. *. 01956000
  2085. ****************************************************************** 01957000
  2086. PRINTH LM R0,R1,VHRCLOCK GET TOD CLOCK VALUE 01958000
  2087. SRDL R0,12 CONVERT TO MICROSECONDS 01959000
  2088. D R0,=F'8000000' GET NUMBER OF SECONDS BY THE FOLLOWING 01960000
  2089. LR R3,R0 DOUBLE PRECISION DIVISION: 01961000
  2090. SLR R2,R2 X/Y=8*(X/(8*Y))+MOD(X,8*Y)/Y 01962000
  2091. D R2,=F'1000000' WHERE X = NUMBER OF MICROSECONDS SINCE 01963000
  2092. SLR R0,R0 EPOCH 01964000
  2093. SLDL R0,3 Y = 1000000 01965000
  2094. ALR R1,R3 ... 01966000
  2095. BC 12,*+8 ... 01967000
  2096. A R0,=F'1' 01968000
  2097. D R0,=F'86400' R1 = NUMBER OF DAYS SINCE EPOCH *01969000
  2098. R0 = NUMBER OF SECONDS PAST MIDNIGHT 01970000
  2099. *. 01971000
  2100. * NOTE: CHANGE THE NEXT TWO STATEMENTS FOR LOCAL TIME 01972000
  2101. * 01973000
  2102. MVC ZONE(3),=C'GMT' SET UP THE ZONE ID 01974000
  2103. S R0,=F'0' ADD OR SUB THE TIME ZONE DIFERENTIAL 01975000
  2104. * TO GET THE LOCAL TIME CHANGE THE LITERALS IN THE ABOVE STATEMENTS 01976000
  2105. * EXAMPLE: EAST COAST USA STANDARD TIME USE -5 HOURS 01977000
  2106. * S R0,=F'18000' WILL GIVE THE TIME IN EST 01978000
  2107. * 18000 IS THE NUMBER OF SEC FROM GMT 01979000
  2108. * EXAMPLE: GERMANY STANDARD TIME USE +1 HOUR 01980000
  2109. * A R0,=F'3600' WILL GIVE THE TIME IN GERMANY 01981000
  2110. * 3600 = 1 HOUR IN SEC FROM GMT 01982000
  2111. *. 01983000
  2112. BNM *+10 BRANCH IF RESULT .GE. ZERO 01984000
  2113. A R0,=F'86400' ADD A DAYS WORTH OF SECONDS 01985000
  2114. BCTR R1,0 AND SUBTRACT A DAY 01986000
  2115. C R0,=F'86400' SEC .LT. 1 DAY ? 01987000
  2116. BL *+12 YES 01988000
  2117. S R0,=F'86400' SUBTRACT A DAYS WORTH OF SECONDS 01989000
  2118. A R1,=F'1' AND ADD A DAY 01990000
  2119. LR R5,R0 01991000
  2120. M R4,=F'1000000' MULTIPLY CORRECTED SECONDS BY 1000000 01992000
  2121. ALR R5,R2 ADD REMAINDER FROM FIRST DIVISION 01993000
  2122. BC 12,*+8 ... 01994000
  2123. A R4,=F'1' ... 01995000
  2124. SLDL R4,12 01996000
  2125. LM R14,R15,VHRCLOCK GET INITIAL TOD CLOCK VALUE 01997000
  2126. SLR R15,R5 - NUMBER OF SECONDS INTO THE DAY 01998000
  2127. BC 11,*+8 ... 01999000
  2128. SL R14,=F'1' ... 02000000
  2129. SLR R14,R4 ... 02001000
  2130. STM R14,R15,TODATE RESULT IS TOD CLOCK VALUE AT MIDNIGHT *02002000
  2131. TODAY LOCAL TIME 02003000
  2132. SPACE 02004000
  2133. LA R3,365 02005000
  2134. CR R1,R3 IS DAYS .LT. 365 ? 02006000
  2135. BNL NOT1900 NO 02007000
  2136. LR R6,R1 GET NUMBER OF DAYS HERE 02008000
  2137. SLR R1,R1 INDICATE YEAR = 00 02009000
  2138. B YEARSET 02010000
  2139. SPACE 02011000
  2140. NOT1900 EQU * HERE IF YEAR IS GREATER THAN 1900 02012000
  2141. SR R1,R3 SUBTRACT THE YEAR 1900 OUT 02013000
  2142. SLR R0,R0 CLEAR FOR DIVIDE 02014000
  2143. D R0,=A(4*365+1) DIVIDE BY THE NUMBER OF DAYS IN 4 YEARS 02015000
  2144. LR R7,R0 R7 = NUMBER OF DAYS SINCE LAST LEAP 02016000
  2145. SLR R6,R6 02017000
  2146. DR R6,R3 02018000
  2147. A R6,=F'1' R6 = NUMBER OF DAYS SINCE START OF YEAR 02019000
  2148. C R7,=F'3' TAKE MIN(TRUNC(NUMBER OF DAYS SINCE LAST 02020000
  2149. BNH *+8 LEAP/365),3) 02021000
  2150. L R7,=F'3' ... 02022000
  2151. ALR R1,R1 02023000
  2152. ALR R1,R1 02024000
  2153. A R1,=F'1' 02025000
  2154. AR R1,R7 02026000
  2155. SPACE 02027000
  2156. YEARSET EQU * HERE WHEN YEAR HAS BEEN DETERMINED 02028000
  2157. CVD R1,WORK1 CONVERT DATE TO DECIMAL 02029000
  2158. UNPK DATE+6(2),WORK1+6(2) UNPACK AND 02030000
  2159. OI DATE+7,X'F0' FORMAT IT 02031000
  2160. SPACE 1 02032000
  2161. * HERE TO CONVERT JULIAN DATE TO GREGORIAN 02033000
  2162. SLR R2,R2 CLEAR 02034000
  2163. N R1,=F'3' YEAR MOD 4 02035000
  2164. BNZ *+8 BRANCH IF NOT A LEAP YEAR 02036000
  2165. LA R2,1 GET GREGORIAN DATE FROM JULIAN 02037000
  2166. LA R1,59(,R2) BY THIS OBSCURE SERIES OF 02038000
  2167. CR R6,R1 WELL RESEARCHED INSTRUCTIONS 02039000
  2168. BNH *+10 ... 02040000
  2169. A R6,=F'2' ... 02041000
  2170. SR R6,R2 ... 02042000
  2171. A R6,=F'91' ... 02043000
  2172. LR R5,R6 ... @V200731 02044000
  2173. M R4,=F'100' ... @V200731 02045000
  2174. D R4,=F'3055' ... @V200731 02046000
  2175. LR R15,R5 ... @V200731 02047000
  2176. M R14,=F'3055' ... @V200731 02048000
  2177. D R14,=F'100' ... @V200731 02049000
  2178. SR R6,R15 ... @V200731 02050000
  2179. BCTR R5,R0 ... @V200731 02051000
  2180. BCTR R5,R0 ... @V200731 02052000
  2181. CVD R6,WORK1 CONVERT DAY TO DECIMAL 02053000
  2182. UNPK DATE+3(2),WORK1+6(2) UNPACK AND 02054000
  2183. OI DATE+4,X'F0' FORMAT IT 02055000
  2184. MVI DATE+5,C'/' 02056000
  2185. CVD R5,WORK1 CONVERT MONTH TO DECIMAL @V200731 02057000
  2186. UNPK DATE(2),WORK1+6(2) UNPACK AND 02058000
  2187. OI DATE+1,X'F0' FORMAT IT 02059000
  2188. MVI DATE+2,C'/' 02060000
  2189. SPACE 1 02061000
  2190. * SET UP TIME 02062000
  2191. LA R2,TIME POINT TO THE TIME IN MSG 02063000
  2192. LM R0,R1,VHRCLOCK GET TOD CLOCK VALUE IN R0 AND R1 02064000
  2193. SL R1,TODATE+4 SUBTRACT CORRECT TIME AT MIDNIGHT 02065000
  2194. BC 11,*+8 ... 02066000
  2195. SL R0,=F'1' ... 02067000
  2196. SL R0,TODATE ... 02068000
  2197. SRDL R0,12 GET NUMBER OF MICROSECONDS PAST MIDNIGHT 02069000
  2198. D R0,=F'1000000' GET NUMBER OF SECONDS PAST MIDNIGHT 02070000
  2199. SR R0,R0 IGNORE REMAINDER 02071000
  2200. D R0,=F'3600' GET NUMBER OF HOURS PAST MIDNIGHT 02072000
  2201. CVD R1,WORK1 CONVERT NUMBER OF HOURS TO DECIMAL 02073000
  2202. UNPK 0(4,R2),WORK1+6(3) UNPACK 02074000
  2203. MVI 2(R2),C'.' NEATEN UP @VA10358 02075100
  2204. LR R1,R0 GET REMAINDER FROM LAST DEVIDE 02076000
  2205. SR R0,R0 CLEAR 02077000
  2206. D R0,=F'60' GET NUMBER OF MINUTES PAST THIS HOUR 02078000
  2207. CVD R1,WORK1 CONVERT NUMBER OF MINUTES TO DECIMAL 02079000
  2208. UNPK 3(4,R2),WORK1+6(3) UNPACK 02080000
  2209. MVI 5(R2),C'.' NEATEN UP @VA10358 02081100
  2210. CVD R0,WORK1 CONVERT NUMBER OF SECONDS TO DECIMAL 02082000
  2211. UNPK 6(2,R2),WORK1+6(2) UNPACK 02083000
  2212. OI 7(R2),X'F0' MAKE UP FOR HARDWARE DEFICIENCIES 02084000
  2213. BAL R14,MSG004 PRINT THE STARTING MSG HRC012DK 02084500
  2214. SPACE 02085000
  2215. * MOVE MSG INTO THE BUFFER AND FILL IT IN 02086000
  2216. LA R15,PRINTIOB POINT TO THE IOB 02087000
  2217. LA R1,HEADCCW POINT TO THE CCW 02088000
  2218. LA R0,CONCCW1 POINT TO THE CCW HRC012DK 02088500
  2219. MVI SYSPTRBF,C' ' * BLANK OUT THE BUFFER 02089000
  2220. MVC SYSPTRBF+1(71),SYSPTRBF * 02090000
  2221. MVC SYSPTRBF(L'HEADER),HEADER MOVE IN THE HEADER 02091000
  2222. MVC SYSPTRBF+(L'HEADER+1)(6),VHRVSER MOVE IN VOL ID 02092000
  2223. TM INIOB+(IOBCLASS-IOB),CLASTAPE IS THE INPUT A TAPE 02093000
  2224. BZ TESTOUT1 NO- BRANCH 02094000
  2225. MVC SYSPTRBF(12),DATA SET UP 'DATA DUMPED ' 02095000
  2226. B TESTDASD GO PRINT IT 02096000
  2227. TESTOUT1 TM OUTIOB+(IOBCLASS-IOB),CLASTAPE IS THE OUTPUT A TAPE 02097000
  2228. BZ TESTDASD NO- BRANCH 02098000
  2229. MVC SYSPTRBF(4),CDUMP SET UP 'DUMPING DATA ' 02099000
  2230. TESTDASD TM OUTIOB+(IOBCLASS-IOB),CLASDASD IS IT DASD 02100000
  2231. BZ PRINTIT NO- BRANCH 02101000
  2232. MVC SYSPTRBF+(L'HEADER+8)(2),TO * SET UP OUTPUT 02102000
  2233. MVC SYSPTRBF+(L'HEADER+11)(6),OUTIOB+(IOBVSER-IOB) X02103000
  2234. * VOL SER NO 02104000
  2235. TM OUTIOB+(IOBSTAT-IOB),IOBSCRAT IS THE OUTPUT SCRATCH 02105000
  2236. BNO *+10 NO- BRANCH 02106000
  2237. MVC SYSPTRBF+(L'HEADER+11)(7),=C'SCRATCH' YES- MOVE IT IN 02107000
  2238. CLI SAVENAME,C'R' IS THIS A RESTORE 02108000
  2239. BNE PRINTIT NO- BRANCH 02109000
  2240. MVC SYSPTRBF+(L'HEADER+8)(11),RESTORED SET UP RESTORED TO 02110000
  2241. MVC SYSPTRBF+(L'HEADER+20)(6),OUTIOB+(IOBVSER-IOB) X02111000
  2242. SET UP VSN 02112000
  2243. TM OUTIOB+(IOBSTAT-IOB),IOBSCRAT IS THE OUTPUT SCRATCH 02113000
  2244. BNO *+10 NO- BRANCH 02114000
  2245. MVC SYSPTRBF+(L'HEADER+20)(7),=C'SCRATCH' YES- MOVE IT IN 02115000
  2246. SPACE 02116000
  2247. * PRINT THE HEADER MSG 02117000
  2248. PRINTIT BAL R14,CMSA GO TEST FOR BARE MAC HRC012DK 02118490
  2249. MVI SYSPTRBF,C' ' * BLANK OUT THE BUFFER 02119000
  2250. MVC SYSPTRBF+1(71),SYSPTRBF * 02120000
  2251. B TESTIN HRC012DK 02121490
  2252. SPACE 3 02122000
  2253. CMSA CLC PRINTIOB+(IOBUADD-IOB)(2),CONIOB+(IOBUADD-IOB) HRC012DK 02123090
  2254. BNE CMS2 HRC012DK 02123180
  2255. LR R1,R0 HRC012DK 02123270
  2256. LA R15,CONIOB HRC012DK 02123360
  2257. CLC MACHINE,BAREMAC HRC012DK 02123450
  2258. BNE SKIP1 HRC012DK 02123540
  2259. B GRAPHID HRC012DK 02123630
  2260. SPACE 3 HRC012DK 02123720
  2261. CMS2 CL R10,BAREMAC TEST FOR BARE MAC HRC012DK 02123810
  2262. BE STARTIO GO TO STARTIO IF ON THE BARE MACHINE 02124000
  2263. SKIP1 EQU * HRC012DK 02124500
  2264. STM R1,R4,REGSAVE1 SAVE THE REGS 02125000
  2265. LR R4,R1 POINT TO THE CCW 02126000
  2266. NEXT L R2,0(R4) GET THE FIRST HALF OF THE CCW 02127000
  2267. LH R3,6(R4) AND THE COUNT ALSO 02128000
  2268. CLC PRINTIOB+(IOBUADD-IOB)(2),CONIOB+(IOBUADD-IOB) HRC012DK 02128100
  2269. BNE NTCNS01 HRC012DK 02128200
  2270. STCM R2,B'0111',CONFCB+9 HRC012DK 02128300
  2271. STH R3,CONFCB+14 HRC012DK 02128400
  2272. LA R1,CONFCB HRC012DK 02128500
  2273. B ISCNS01 HRC012DK 02128600
  2274. NTCNS01 EQU * HRC012DK 02128700
  2275. CL R3,=F'1' IS THE COUNT EQ TO 1 02129000
  2276. BE STCCWOP YES GET OUT (CARRIAGE CONTROL) 02130000
  2277. BCTR R3,0 -1 02131000
  2278. EX R3,MOVEDATA MOVE THE DATA INTO THE BUFFER 02132000
  2279. LA R3,2(,R3) +2 02133000
  2280. STCCWOP STCM R2,8,CCBUFFER SET UP THE CCW OP CODE IN THE BUFFER 02134000
  2281. STH R3,PRINTL SET UP THE COUNT 02135000
  2282. LA R1,PRINTFCB POINT TO THE PLIST 02136000
  2283. ISCNS01 EQU * HRC012DK 02136500
  2284. SVC 202 CALL CMS 02137000
  2285. DC AL4(ERROR1) ERROR RETURN 02138000
  2286. NEXTCCW TM 4(R4),CC COMMAND CHAINING? @VA01298 02139000
  2287. LA R4,8(,R4) POINT TO THE NEXT CCW 02140000
  2288. BO NEXT YES- GO PRINT IT 02141000
  2289. LM R1,R4,REGSAVE1 RETURN REGS 02142000
  2290. BR R14 RETURN TO THE CALLER 02143000
  2291. MOVEDATA MVC SYSPTRBF(0),0(R2) 02144000
  2292. SPACE 3 02145000
  2293. PRINTEXT STM R14,R3,REGSAVE3 SAVE THE REGS 02146000
  2294. LA R15,PRINTIOB 02147000
  2295. LA R1,PTEXTCCW * POINT TO CCW 02148000
  2296. LR R0,R1 * SAVE FOR CONS OUTPUT HRC012DK 02148500
  2297. OI INSTART+3,X'F0' * SET ZONE TO F 02149000
  2298. OI INSTOP+3,X'F0' * 02150000
  2299. OI OUTSTART+3,X'F0' * 02151000
  2300. OI OUTSTOP+3,X'F0' * 02152000
  2301. BAL R14,CMSA GO TEST FOR CMS HRC012DK 02153490
  2302. LM R14,R3,REGSAVE3 RETURN REGS 02154000
  2303. BR R14 RETURN TO CALLER 02155000
  2304. PTRERROR TM SENSE,INTREQ IS IT INTERVENTION REQUIRED 02156000
  2305. BO DDR710 YES- BRANCH 02157000
  2306. CLC IOBCCW,=A(INITCCW) IS IT INITIALIZE PRINTER? @V60B9BA 02158000
  2307. BE SIORET XFER IF SO, IGNORE ERROR @V60B9BA 02159000
  2308. TM IOBSTAT,IOBNOPER IS THE PRINTER NOT OPERATIONAL 02160000
  2309. BO DDR704 YES- ERROR 02161000
  2310. TM SENSE,X'BE' IS IT COM REJ, BUS OUT CHECK, EQU CHECK, *02162000
  2311. DATA CHECK, UCS PARITY OR UNUSUAL COMMAND 02163000
  2312. BNZ DDR705 YES- BRANCH 02164000
  2313. TM IOBCSW+4,UE IS ERROR CH. 12? @VA13315 02164200
  2314. BO PTRESTRT YES, SEE IF MORE IN THE CHAIN @VA13315 02164400
  2315. TM SENSE,CH9 IS ERROR CH. 9? @VA13315 02164600
  2316. BO PTRESTRT YES, CHECK CHAIN FOR MORE @VA13315 02164800
  2317. B IORETURN RETURN TO THE START IO ROUTINE 02165000
  2318. SPACE 3 02165070
  2319. PTRESTRT EQU * HERE FOR CH9, CH12 TO DRIVE @VA13315 02165140
  2320. * REST OF CCW CHAIN 02165210
  2321. L R1,IOBCSW GET POINTER TO NEXT CCW @VA13315 02165280
  2322. LTR R1,R1 IS THERE ONE? @VA13315 02165350
  2323. BZ SIORET NOPE, ALL DONE @VA13315 02165420
  2324. S R1,=F'8' BACK UP TO LAST EXECUTED CCW @VA13315 02165490
  2325. TM 4(R1),CC COMMAND CHAIN? @VA13315 02165560
  2326. BZ SIORET NO,CH9 OR CH12 WAS LAST CCW IN @VA13315 02165630
  2327. * CHAIN 02165700
  2328. LA R1,8(,R1) GET NEXT CCW.... @VA13315 02165770
  2329. B RESTART AND 'REDRIVE' IT @VA13315 02165840
  2330. SPACE 3 02166000
  2331. TESTIN LA R15,INIOB POINT TO INPUT IOB 02167000
  2332. CLC INADD+2(4),THRHADD+1 * IF THE INPUT ADDRESS IS 02168000
  2333. BE REORCYL * EQ TO THE THR ADDRESS *02169000
  2334. * THEN SKIP THE READ. 02170000
  2335. TM IOBCLASS,CLASTAPE IS THE INPUT A TAPE 02171000
  2336. BZ BUILDTHR NO- BRANCH 02172000
  2337. SPACE 3 02173000
  2338. ******************************************************************* 02174000
  2339. *. 02175000
  2340. * 13. SUBROUTINE TO GET TRACK HEADER RECORD 02176000
  2341. * 02177000
  2342. * 1. READ THE TRACK HEADER RECORD FROM THE TRACK. 02178000
  2343. * 02179000
  2344. * 2. BUILD A CCW STRING TO READ IN THE DATA RECORDS 02180000
  2345. * FROM THE TAPE, AND READ THEM IN. 02181000
  2346. * 02182000
  2347. * 3. IF THE THR IS LOW GO TO STEP 1, ELSE GO TO 02183000
  2348. * ROUTINE 14 STEP 3. 02184000
  2349. *. 02185000
  2350. ******************************************************************* 02186000
  2351. GETTHR LA R1,RTHRCCW POINT TO THE CCW 02187000
  2352. BAL R14,STARTIO 02188000
  2353. CLC =C'THR ',THR IS THIS THE TRACK HEADER RECORD 02189000
  2354. BE GOTTHR YES- BRANCH 02190000
  2355. CLC =C'EOV ',THR IS IT EOV 02191000
  2356. BE CLOSE1 YES- BRANCH 02192000
  2357. CLC =C'EOJ ',THR IS IT EOJ 02193000
  2358. BE CLOSEJOB YES- BRANCH 02194000
  2359. CLC =CL8'DMKCKP',THR+14 IS THIS A NUCLEUS RECORD (NUC) 02195000
  2360. BE DDR724 YES- ERROR (NUC) 02196000
  2361. B DDR714 ERROR MUST BE ONE OF THE ABOVE 02197000
  2362. GOTTHR EQU * 02198000
  2363. LA R3,TAPRCCW POINT TO THE FIRST CCW 02199000
  2364. LH R0,THRDRL GET THE DATA LENGTH OF THE SHORT BLOCK 02200000
  2365. LH R1,THRNDRT GET THE NUMBER OF 4K DATA RECORDS 02201000
  2366. S R1,=F'1' ARE THERE ANY RECORDS TO READ IN 02202000
  2367. BM COMPCYL NO- BRANCH 02203000
  2368. BP SET4K YES GO READ THEM 02204000
  2369. LTR R0,R0 DO I HAVE A SHORT BLOCK 02205000
  2370. BP SETSHORT YES- GO GET IT 02206000
  2371. B COMPCYL 02207000
  2372. CLOSE1 LH R1,INADD+2 POINT TO THE CYLINDER ADD 02208000
  2373. LH R2,INADD+4 POINT TO THE HEAD ADDRESS 02209000
  2374. BAL R14,MSG005 AND TYPE THE END OF VOL MSG 02210000
  2375. LA R15,INIOB POINT TO THE IOB 02211000
  2376. BAL R14,CLOSE CLOSE TAPE AND GET THE NEXT ONE 02212000
  2377. CLC VHRCLOCK,THR+(VHRCLOCK-VHR) IS THE TIME EQ 02213000
  2378. BNE DDR709 NO- ERROR 02214000
  2379. B GETTHR GO READ THE TRACK HEADER RECORD 02215000
  2380. SET4K L R4,=X'40001000' GET THE SECOND HALF OF THE CCW 02216000
  2381. LOOP2 ST R4,4(,R3) SET UP THE SECOND HALF OF THE CCW 02217000
  2382. LA R3,8(,R3) POINT TO THE NEXT CCW 02218000
  2383. BCT R1,LOOP2 LOOP 02219000
  2384. LTR R0,R0 IS THE LAST RECORD ZERO 02220000
  2385. BZ NOCHAIN YES- BRANCH 02221000
  2386. SETSHORT ST R0,4(,R3) SET UP LENGTH 02222000
  2387. READTAPE LA R1,TAPRCCW POINT TO THE CCW 02223000
  2388. BAL R14,STARTIO 02224000
  2389. COMPCYL CLC THRHADD+1(4),INADD+2 IS THIS THE PROPER ADD 02225000
  2390. BH UPDTEXT NO- GO TEST FOR RESTORE ALL 02226000
  2391. BL GETTHR LOW- READ NEXT RECORD 02227000
  2392. B REORCYL GO REORDER THE CYLINDER ADD 02228000
  2393. NOCHAIN S R3,=F'8' BACK UP 8 02229000
  2394. MVI 4(R3),X'0' NO FLAG ON 02230000
  2395. B READTAPE 02231000
  2396. UPDTEXT TM DDRFLAG,RESTALL IS THIS A RESTORE ALL FUNCTION 02232000
  2397. BZ DDR714 NO- ERROR 02233000
  2398. LH R1,THRHADD+3 GET THE TRACK NUMBER FROM THE THR 02234000
  2399. LTR R1,R1 IS IT ZERO 02235000
  2400. BNZ DDR714 NO- ERROR 02236000
  2401. CH R1,INADD+4 IS THE INADD ON A CYL BOUNDRY ALSO X02237000
  2402. (TRACK = ZERO) 02238000
  2403. BNE DDR714 NO- ERROR 02239000
  2404. L R1,INADD+2 * IF THIS IS CYLINDER ZERO 02240000
  2405. LTR R1,R1 * THEN SET UP FOR THE NEXT 02241000
  2406. BP SETEXT * TIME AND RETURN 02242000
  2407. MVC INADD+2(4),THRHADD+1 * 02243000
  2408. MVC OUTADD+2(4),THRHADD+1 * 02244000
  2409. MVC EXTABLE(2),INADD+2 * 02245000
  2410. MVC EXTABLE+4(2),OUTADD+2 * 02246000
  2411. B REORCYL * 02247000
  2412. SETEXT LH R1,THRHADD+1 PICK UP THE CYLINDER NUMBER OF THE START X02248000
  2413. OF THE NEXT EXTENT. 02249000
  2414. LH R2,INADD+2 * SUB 1 FROM THE INPUT ADD TO 02250000
  2415. BCTR R2,0 * POINT AT THE STOP CYLINDER 02251000
  2416. CVD R2,WORK1 * 02252000
  2417. UNPK INSTOP(4),WORK1 * 02253000
  2418. UNPK OUTSTOP(4),WORK1 * 02254000
  2419. LH R3,EXTABLE * PICK UP THE START OF EXTENT ADD 02255000
  2420. CVD R3,WORK1 * AND SAVE IT 02256000
  2421. UNPK INSTART(4),WORK1 * 02257000
  2422. UNPK OUTSTART(4),WORK1 * 02258000
  2423. STH R1,EXTABLE * POINT TO THE START OF THE NEXT 02259000
  2424. STH R1,EXTABLE+4 * EXTENT 02260000
  2425. STH R1,INADD+2 * 02261000
  2426. STH R1,OUTADD+2 * 02262000
  2427. BAL R14,PRINTEXT PRINT OUT THE EXTENT INFORMATION 02263000
  2428. B REORCYL 02264000
  2429. EJECT 02265000
  2430. ******************************************************************* 02266000
  2431. *. 02267000
  2432. * 14. SUBROUTINE TO BUILD TRACK HEADER RECORD 02268000
  2433. * 02269000
  2434. * 1. BUILD A CHAIN OF CCWS TO READ THE HOME ADD, REC 02270000
  2435. * ZERO AND ALL THE COUNT FIELDS INTO THE THR, AND 02271000
  2436. * READ THEM IN. 02272000
  2437. * 02273000
  2438. * 2. BUILD A CCW STRING TO READ THE KEY-DATA FIELDS INTO 02274000
  2439. * THE THR AND DATA RECORDS, AND READ THEM IN. 02275000
  2440. * 02276000
  2441. * 3. IF THE OUTPUT IS TO THE PRINTER OR CONSOLE GO TO 02277000
  2442. * ROUTINE 17. 02278000
  2443. * 02279000
  2444. * 4. GO TO THE NEXT ROUTINE. 02280000
  2445. *. 02281000
  2446. *********************************************************************** 02282000
  2447. BUILDTHR XC THR+4(76),THR+4 ZERO OUT OLD THR 02283000
  2448. MVC THR(4),=C'THR ' SET UP ID 02284000
  2449. L R3,CCWWORKA POINT TO START OF CHAIN 02285000
  2450. LA R4,8 SET UP LENGTH OF A CCW 02286000
  2451. LH R5,VHRMREC SET UP THE MAX NUM OF RECORDS 02287000
  2452. TM IOBTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC012DK 02288490
  2453. BNZ LOOPCCW YES - DON'T MOVE REC 0 CCW @V2A2063 02289000
  2454. LM R1,R2,READR0 MOVE READ REC ZERO CCW IN @VA01049 02290000
  2455. STM R1,R2,0(R3) DYNAMIC CCW AREA @VA01049 02291000
  2456. LA R3,8(,R3) BUMP STARTING POINT BY 8 @VA01049 02292000
  2457. LOOPCCW LM R1,R2,COUNTCCW RESUME BUILDING COUNT CCWS @VA01049 02293000
  2458. STCCW STM R1,R2,0(R3) STORE THE CCW 02294000
  2459. LA R3,8(,R3) POINT TO THE NEXT CCW 02295000
  2460. AR R1,R4 ADD 8 TO FIRST HALF OF CCW 02296000
  2461. BCT R5,STCCW LOOP UNTIL MAX NUM OF CCW'S ARE BUILT 02297000
  2462. MVC 0(8,R3),NOOP MOVE IN NO OP 02298000
  2463. LA R1,READ231X * POINT TO THE READ DASD CCW'S 02299000
  2464. TM IOBTYPE,TYP2311+TYP2314 @V2A2063 02300000
  2465. BNZ READCT * @V2A2063 02301000
  2466. LA R1,READ333X * 02302000
  2467. * DEFAULT TO 3330/3340/3350/3380 DEFAULT TO 33XX DASD HRC012DK 02303490
  2468. READCT BAL R14,STARTIO READ IN COUNTS 02304000
  2469. LA R15,INIOB RESTORE POINTER TO THE INPUT IOB 02305000
  2470. L R1,KEYCCW * GET DUMMEY CCW TO BUILD READ 02306000
  2471. L R0,KEYCCW+4 * KEY-DATA CCW'S 02307000
  2472. L R3,CCWWORKA POINT TO START OF CHAIN 02308000
  2473. TM IOBTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC012DK 02309490
  2474. BNZ BYPASS YES - BYPASS @V2A2063 02310000
  2475. LA R3,8(,R3) SKIP OVER READ R0 CCW @VA01049 02311000
  2476. BYPASS LH R4,THRNDRD GET THE NUMBER OF DATD RECORDS @VA01049 02312000
  2477. LR R2,R4 WHICH IS ALSO THE NUMBER OF @V56BDA8 02313000
  2478. * COUNT FIELDS ALREADY READ. 02314000
  2479. SLL R2,3 MULTIPLY BY 8 02315000
  2480. LA R2,THR001(R2) COMPUTE THE SIZE OF THE THR 02316000
  2481. OR R1,R2 START READING DATA AFTER THE LAST KEY 02317000
  2482. LA R5,THR001 POINT TO THE FIRST COUNT FIELD 02318000
  2483. NI DDRFLAG,255-FIRSTEOF RESET E-O-F INDICATOR @VA02229 02319000
  2484. LTR R4,R4 FOUND DATA RECORDS ON TRACK? @V56BDA8 02320000
  2485. BZ FINALCCW NO. SKIP AHEAD,TACK ON FINAL CCWS@V56BDA8 02321000
  2486. BUILDCCW SR R2,R2 SET UP FOR WORK 02322000
  2487. IC R2,5(,R5) GET THE KEY COUNT 02323000
  2488. ICM R0,3,6(R5) GET THE DATA COUNT 02324000
  2489. BNZ NOEOF BRANCH IF NOT END-OF-FILE 02325000
  2490. TM DDRFLAG,FIRSTEOF FIRST E-O-F ENCOUNTERED? @VA02229 02326000
  2491. BO TESTKEY YES, GO SEE IF THERE'S A KEY @VA02229 02327000
  2492. OI DDRFLAG,FIRSTEOF NO, SET E-O-F INDICATOR ON @VA02229 02328000
  2493. MVC 0(8,R3),READEOF SET UP TO READ EOF NO UNIT EXCEPTION 02329000
  2494. LA R3,8(,R3) POINT TO THE NEXT CCW 02330000
  2495. TESTKEY LTR R2,R2 DO I HAVE A KEY @VA02229 02331000
  2496. BNZ NOEOF YES- BRANCH MUST READ IN KEY 02332000
  2497. MVC 0(8,R3),READEOF SET UP TO READ COUNT OF THE NEXT CCW 02333000
  2498. B SKIPCCW 02334000
  2499. NOEOF NI DDRFLAG,225-FIRSTEOF RESET E-O-F INDICATOR @VA02229 02335000
  2500. ALR R2,R0 SET UP CCW COUNT @VA02229 02336000
  2501. STM R1,R2,0(R3) STORE CCW 02337000
  2502. LA R2,0(,R2) ZERO OUT HIGH ORDER BYTE 02338000
  2503. ALR R1,R2 POINT TO THE NEXT DATA BUFFER 02339000
  2504. SKIPCCW LA R3,8(,R3) POINT TO THE NEXT CCW 02340000
  2505. LA R5,8(,R5) POINT TO THE NEXT COUNT 02341000
  2506. BCT R4,BUILDCCW LOOP UNTILL ALL CCW'S ARE BUILT 02342000
  2507. FINALCCW MVC 0(L8,R3),NOOP MOVE IN NO-OP. @V56BDA8 02343000
  2508. TM IOBTYPE,TYP3330+TYP3340+TYP3350+TYP3380 ? HRC012DK 02344490
  2509. BZ *+10 NO- BRANCH 02345000
  2510. MVC 0(16,R3),RR0CCW MOVE IN SET SECTOR AND READ R0 CCW 02346000
  2511. * INSTEAD OF NO-OP, BECAUSE: ONLY THE DATA 02347000
  2512. * PORTION OF RECORD R0 WAS READ EARLIER. 02348000
  2513. LA R1,0(,R1) ZERO OUT THE HIGH ORDER BYTE 02349000
  2514. LA R2,THR POINT TO THE START OF THE FIRST RECORD 02350000
  2515. SR R1,R2 GET THE TOTAL DATA LENGTH 02351000
  2516. SR R0,R0 SET UP FOR THE DEVIDE 02352000
  2517. D R0,=F'4096' DEVIDE BY BUFFER SIZE (4K) 02353000
  2518. CL R0,=F'80' IS THE RECORD SIZE LARGER THAN 80 02354000
  2519. BH OK YES- BRANCH 02355000
  2520. LTR R0,R0 IS IT ZERO 02356000
  2521. BZ OK YES- BRANCH 02357000
  2522. L R0,=F'80' MAKE THE RECORD BIG ENOUGH FOR X02358000
  2523. ERROR RECOVERY TO FIND. 02359000
  2524. OK STH R0,THRDRL R0 = THE SIZE OF THE LAST DATA RECORD 02360000
  2525. STH R1,THRNDRT R1 = THE NUMBER OF 4K DATA RECORDS 02361000
  2526. LA R1,READ231X * POINT TO THE READ DASD CCW'S 02362000
  2527. TM IOBTYPE,TYP2311+TYP2314 @V2A2063 02363000
  2528. BNZ READKEYD * @V2A2063 02364000
  2529. LA R1,READ333X * 02365000
  2530. TM IOBTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC012DK 02366490
  2531. BNZ READKEYD @V2A2063 02367000
  2532. LA R1,READ230X * 02368000
  2533. READKEYD BAL R14,STARTIO READ IN THE KEY AND DATA 02369000
  2534. REORCYL TM DDRFLAG2,PRINT+TYPE PRINT OR TYPE OPERATION 02370000
  2535. BNZ DISPLAY YES- BRANCH 02371000
  2536. LA R15,INIOB @V56BDA8 02372000
  2537. TM IOBTYPE,TYP2311+TYP2314+TYP2305 2311/2314/2305? @V56BDA8 02373000
  2538. BNZ KEEPFLAG YES, BRANCH. @V56BDA8 02374000
  2539. NI THRHADD,255-X'02' REMOVE FLAG FOR COPY/DUMP @V56BDA8 02375000
  2540. KEEPFLAG DS 0H @V56BDA8 02376000
  2541. MVC THRHADD+1(4),OUTADD+2 SET UP THE REORDED CYLINDER 02377000
  2542. SPACE 3 02378000
  2543. ****************************************************************** 02379000
  2544. *. 02380000
  2545. * 15. SUBROUTINE TO WRITE A TRACK HEADER RECORD 02381000
  2546. * 02382000
  2547. * 1. IF THE OUTPUT IS NOT TAPE GO TO STEP 3, ELSE 02383000
  2548. * BUILD A CCWSTRING TO WRITE OUT THE VHR AND DATA 02384000
  2549. * RECORDS. 02385000
  2550. * 02386000
  2551. * 2. WRITE OUT THE RECORDS, AND GO TO STEP 4. 02387000
  2552. * 02388000
  2553. * 3. BUILD A CCW STRING TO RECREATE THE DASD TRACK, 02389000
  2554. * AND WRITE IT OUT. 02390000
  2555. * 02391000
  2556. * 4. GO TO THE NEXT ROUTINE. 02392000
  2557. *. 02393000
  2558. ******************************************************************* 02394000
  2559. TESTOUT LA R15,OUTIOB POINT TO THE OUTPUT IOB 02395000
  2560. TM IOBCLASS,CLASTAPE IS THE OUTPUT TAPE 02396000
  2561. BZ DASDWRIT 02397000
  2562. LA R3,TAPWCCW-8 POINT TO THE TAPE WRITE CCW 02398000
  2563. LH R0,THRDRL GET THE SIZE OF THE LAST DATA RECORD 02399000
  2564. LH R1,THRNDRT GET THE NUMBER OF TAPE 4K DATA RECORDS 02400000
  2565. LTR R1,R1 IS IT ZERO 02401000
  2566. BZ STSHORT YES- BRANCH 02402000
  2567. L R4,=X'60001000' SET UP LEFT HALF OF CCW 02403000
  2568. LOOP LA R3,8(,R3) POINT TO THE NEXT CCW 02404000
  2569. ST R4,4(,R3) SET UP FOR A 4K READ WITH CC+SILI 02405000
  2570. BCT R1,LOOP DO IT FOR ALL 4K TAPE WRITES 02406000
  2571. LTR R0,R0 DO I HAVE A SHORT BLOCK TO WRITE 02407000
  2572. BZ ZEROFLAG NO- BRANCH 02408000
  2573. STSHORT LA R3,8(,R3) POINT TO THE NEXT CCW 02409000
  2574. ST R0,4(,R3) MOVE IN RECORD SIZE 02410000
  2575. ZEROFLAG MVI 4(R3),SILI TURN OFF THE CC BIT IN LAST CCW 02411000
  2576. LA R1,TAPWCCW POINT TO THE CCW CHAIN 02412000
  2577. BAL R14,STARTIO 02413000
  2578. B UPDTADD 02414000
  2579. SPACE 02415000
  2580. DASDWRIT LM R3,R5,DASDWCCW PICK UP FORMAT WRITE CCW'S 02416000
  2581. L R0,DASDWCCW+12 GET SECOND HALF OF SECOND CCW 02417000
  2582. L R2,CCWWORKA POINT TO WORK AREA FOR BUILDING CCW'S 02418000
  2583. LH R1,THRNDRD GET NUMBER OF RECORDS TO WRITE 02419000
  2584. LTR R6,R1 SAVE THE NUMBER OF DATA RECORDS IN R6 02420000
  2585. BZ DASDE BRANCH IF NO DATA RECORDS 02421000
  2586. SLL R6,3 MULTIPLY BY 8 02422000
  2587. LA R6,THR001(R6) COMPUTE THE SIZE OF THE THR 02423000
  2588. OR R5,R6 POINT TO THE FIRST DATA AREA 02424000
  2589. LA R7,8 SET UP LENGTH OF COUNT FIELD 02425000
  2590. LOOP1 SR R6,R6 ZERO OUT WORK AREA 02426000
  2591. IC R6,5(,R3) GET THE KEY LENGTH 02427000
  2592. ICM R0,3,6(R3) GET THE DATA LENGTH 02428000
  2593. BNZ NOTEOF BRANCH IF NOT ZERO DATA LENGTH 02429000
  2594. LTR R6,R6 IS THE KEY ALSO ZERO 02430000
  2595. BNZ NOTEOF NO- BRANCH 02431000
  2596. ST R3,0(,R2) FILL IN FIRST HALF OF CCW 02432000
  2597. MVC 4(4,R2),COUNTCCW+4 FILL IN SECOND HALF OF CCW 02433000
  2598. ALR R2,R7 POINT TO THE NEXT CCW IN THE CHAIN 02434000
  2599. B UPDATE 02435000
  2600. DASDE TM IOBTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC012DK 02436490
  2601. BZ DASDNOP NO- BRANCH 02437000
  2602. MVC 0(8,R2),DASDECCW SET UP ERASE CCW TO CLEAN UP THE X02438000
  2603. TRACK (HOME ADD AND R ZERO ONLY) 02439000
  2604. B WTDASD 02440000
  2605. NOTEOF ALR R6,R0 SET UP RIGHT HALF OF CCW 2 02441000
  2606. STM R3,R6,0(R2) STORE FORMAT WRITE CCW'S 02442000
  2607. LA R6,0(,R6) ZERO OUT HIGH ORDER BYTE (CC) 02443000
  2608. ALR R5,R6 ADD BYTE COUNT OF LAST CCW TO DATA X02444000
  2609. ADDRESS OF NEXT WRITE DATA CCW 02445000
  2610. LA R2,16(,R2) POINT TO THE NEXT CCW IN THE CHAIN 02446000
  2611. UPDATE ALR R3,R7 UPDATE POINTER TO NEXT COUNT FIELD 02447000
  2612. BCT R1,LOOP1 DO IT FOR EACH RECORD 02448000
  2613. DASDNOP DS 0H 02449000
  2614. MVC 0(8,R2),NOOP BRAKE CHAIN WITH A NO OP 02450000
  2615. TM THRFLAG,SPECIAL WAS THE LAST RECORD A SPECIAL WRITE 02451000
  2616. BZ WTDASD NO- OK GO WRITE IT OUT 02452000
  2617. SL R2,=F'16' BACK UP TO LAST FORMAT WRITE CCW 02453000
  2618. MVI 0(R2),X'01' CHANGE IT TO A WRITE SPECIAL C,K,D 02454000
  2619. WTDASD LA R1,WT333X POINT TO CCW CHAIN 02455000
  2620. TM IOBTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC012DK 02456490
  2621. BNZ WDSIO YES @V2A2063 02457000
  2622. MVC THRHADD+1(4),OUTADD+2 RELOCATE THE HOME ADDRESS 02458000
  2623. TM THRHADD,X'02' IS THIS A DEFECTIVE TRACK 02459000
  2624. BNO *+8 NO- BRANCH 02460000
  2625. BAL R14,DDR715 YES- TYPE THE MSG 02461000
  2626. LA R15,OUTIOB RESTORE POINTER TO THE OUTPUT IOB 02462000
  2627. LA R1,WT231X POINT TO CCW CHAIN 02463000
  2628. TM IOBTYPE,TYP2311+TYP2314 2311, 2314, OR 2319 @V2A2063 02464000
  2629. BNZ WDSIO YES- BRANCH @V2A2063 02465000
  2630. LA R1,WT230X SET UP FOR 230X TYPE DEVICE 02466000
  2631. WDSIO BAL R14,STARTIO 02467000
  2632. SPACE 3 02468000
  2633. ***************************************************************** 02469000
  2634. *. 02470000
  2635. * 16. SUBROUTINE TO UPDATE POINTERS TO THE NEXT TRACK OR CYLINDER 02471000
  2636. * 02472000
  2637. * 1. UPDATE THE INPUT AND OUTPUT DASD ADDRESS. 02473000
  2638. * 02474000
  2639. * 2. IF THE END OF A CYLINDER EXTENT LINK TO 02475000
  2640. * ROUTINE 12 STEP 4 TO PRINT THE CYLINDER MAP. 02476000
  2641. * 02477000
  2642. * 3. IF THE END OF THE LAST EXTENT GO TO ROUTINE 22 TO 02478000
  2643. * END THE JOB STEP. 02479000
  2644. * 02480000
  2645. * 4. IF THE INPUT UNIT IS TAPE GO TO ROUTINE 13, ELSE 02481000
  2646. * GO TO ROUTINE 14. 02482000
  2647. *. 02483000
  2648. ***************************************************************** 02484000
  2649. UPDTADD EQU * @V200731 02485000
  2650. L R7,CUREXT GET ADDR OF CURRENT EXTENT ENTRY @V200731 02486000
  2651. LA R8,EXTSIZE AND SIZE OF EACH ENTRY @V200731 02487000
  2652. LA R15,INIOB POINT TO INPUT IOB 02488000
  2653. XC TAPEERCT(4),TAPEERCT ZERO OUT THE TAPE AND DASD X02489000
  2654. ERROR COUNT 02490000
  2655. CLC VHRMTCK,INADD+4 IS THIS THE LAST TRACK ON THE CYL 02491000
  2656. BH NEXTTCK NO- BRANCH 02492000
  2657. CLC CYLSTOP,INADD+2 IS THIS THE LAST CYL IN THIS EXTENT 02493000
  2658. BH NEXTCYL NO- BRANCH 02494000
  2659. TM DDRFLAG2,PRINT+TYPE PRINT OR TYPE OPERATION 02495000
  2660. BNZ EOJ YES- GO TO END OF JOB 02496000
  2661. LH R1,CYLSTART * POINT TO THE START AND STOP 02497000
  2662. LH R2,CYLSTOP * CYLINDER EXTENTS FOR THE CYL 02498000
  2663. LH R3,CYLREOR * MAP ROUTINE. 02499000
  2664. CVD R1,WORK1 * 02500000
  2665. UNPK INSTART(4),WORK1 * 02501000
  2666. CVD R2,WORK1 * 02502000
  2667. UNPK INSTOP(4),WORK1 * 02503000
  2668. CVD R3,WORK1 * 02504000
  2669. UNPK OUTSTART(4),WORK1 * 02505000
  2670. SR R2,R1 * 02506000
  2671. AR R3,R2 * 02507000
  2672. CVD R3,WORK1 * 02508000
  2673. UNPK OUTSTOP(4),WORK1 * 02509000
  2674. BAL R14,PRINTEXT GO PRINT THE CYLINDER MAP 02510000
  2675. AR R7,R8 POINT TO THE NEXT EXTENT ENTRY @V200731 02511000
  2676. CL R7,LASTEXT WAS ENTRY JUST PROCESSED THE @V200731 02512000
  2677. * LAST ONE? 02513000
  2678. BH EOJ YES - GET NEW FUNCTION OR QUIT @V200731 02514000
  2679. ST R7,CUREXT SAVE THE POINTER TO THE EXTENT 02515000
  2680. XC INADD(16),INADD ZERO OUT THE IN AND OUT DASD ADD 02516000
  2681. MVC INADD+2(2),CYLSTART SET UP A NEW START CYLINDER 02517000
  2682. MVC OUTADD+2(2),CYLREOR SET UP A NEW REORDERED CYLINDER 02518000
  2683. B NEXTREC 02519000
  2684. NEXTTCK LH R1,INADD+4 SET UP TO ADD ONE 02520000
  2685. LA R1,1(,R1) ADD THE TRACK ADD 02521000
  2686. STH R1,OUTADD+4 * SAVE THE ADDRESS 02522000
  2687. STH R1,INADD+4 * 02523000
  2688. NEXTREC TM IOBCLASS,CLASTAPE IS THIS A TAPE DEVICE 02524000
  2689. BO GETTHR YES- GO READ TAPE 02525000
  2690. B BUILDTHR NO- GO BUILD A THR 02526000
  2691. NEXTCYL LH R1,INADD+2 PICK UP CYLINDER 02527000
  2692. LA R1,1(,R1) ADD ONE 02528000
  2693. STH R1,INADD+2 SAVE IT 02529000
  2694. LH R1,OUTADD+2 GET THE OUTPUT ADD 02530000
  2695. LA R1,1(,R1) ADD ONE 02531000
  2696. STH R1,OUTADD+2 SAVE IT 02532000
  2697. SR R1,R1 * ZERO OUT THE TRACK ADD 02533000
  2698. STH R1,INADD+4 * 02534000
  2699. STH R1,OUTADD+4 * 02535000
  2700. B NEXTREC 02536000
  2701. SPACE 3 02537000
  2702. ****************************************************************** 02538000
  2703. *. 02539000
  2704. * 17. SUBROUTINE TO DISPLAY A TRACK 02540000
  2705. * 02541000
  2706. * 1. DISPLAY HOME ADD AND RECORD ZERO IF THE START ADD 02542000
  2707. * IS NOT GREATER THAN THE THRHADD. 02543000
  2708. * 02544000
  2709. * 2. FIND THE START ADDRESS 02545000
  2710. * 02546000
  2711. * 3. IF RECORD HAS A KEY, LINK TO ROUTINE 18 TO DISPLAY 02547000
  2712. * THE KEY. 02548000
  2713. * 02549000
  2714. * 4. IF RECORD HAS DATA LINK TO ROUTINE 18 TO DISPLAY 02550000
  2715. * IT, ELSE DISPLAY THE END OF FILE RECORD MSG. 02551000
  2716. * 02552000
  2717. * 5. IF THE STOP RECORD IS FOUND GO TO ROUTINE 1 STEP 5. 02553000
  2718. * 02554000
  2719. * 6. IF THIS IS THE LAST RECORD ON THE TRACK CONT, ELSE 02555000
  2720. * GO TO STEP 3. 02556000
  2721. * 02557000
  2722. * 7. IF THE LAST RECORD WAS WRITTEN USING RECORD OVERFLOW 02558000
  2723. * DISPLAY THE RECORD OVERFLOW MSG. 02559000
  2724. * 02560000
  2725. * 8. GO TO ROUTINE 12 STEP 7. 02561000
  2726. *. 02562000
  2727. ****************************************************************** 02563000
  2728. DISPLAY LH R6,THRNDRD GET THE NUMBER OF DATA RECORDS ON TRACK 02564000
  2729. LR R7,R6 * POINT TO THE DATA (THRNDRD*8+THR001) 02565000
  2730. SLL R7,3 * 02566000
  2731. LA R7,THR001(R7) * 02567000
  2732. LA R4,THR001-8 POINT TO THE FIRST COUNT -8 02568000
  2733. CLC INADD+2(4),PSTARTCC DO I PRINT RECORD ZERO 02569000
  2734. BNE DISPR0 YES- NEW CYL SO PRINT REC ZERO 02570000
  2735. CLI PSTARTRR,X'00' DO I PRINT REC ZERO ON THE FIRST CYL 02571000
  2736. BNE GETR1 NO- BRANCH 02572000
  2737. DISPR0 LH R1,THR000 * CONVERT THE CYLINDER 02573000
  2738. CVD R1,WORK1 * ADDRESS TO DEC 02574000
  2739. UNPK PHADDMSG+6(3),WORK1 * 02575000
  2740. OI PHADDMSG+8,X'F0' * 02576000
  2741. LH R1,THR000+2 * CONVERT THE HEAD 02577000
  2742. CVD R1,WORK1 * ADDRESS TO DEC 02578000
  2743. UNPK PHADDMSG+13(2),WORK1 * 02579000
  2744. OI PHADDMSG+14,X'F0' * 02580000
  2745. LA R1,PHADDMSG+29 POINT TO THE MSG DATA 02581000
  2746. LA R2,5 SET UP THE SIZE OF HOME ADD 02582000
  2747. MVC 0(5,R1),THRHADD MOVE IN THE HOME ADD 02583000
  2748. BAL R14,DECCONV CONVERT IT 02584000
  2749. LA R1,PHADDMSG+52 POINT TO THE REC 0 FIELD 02585000
  2750. LA R2,5 SET UP THE SIZE 02586000
  2751. MVC 0(5,R1),THR000 MOVE IN THE ID OF THE COUNT 02587000
  2752. BAL R14,DECCONV 02588000
  2753. LA R1,11(,R1) POINT TO THE KEY LENGTH 02589000
  2754. LA R2,1 SET UP THE COUNT 02590000
  2755. MVC 0(1,R1),THR000+5 MOVE IT IN 02591000
  2756. BAL R14,DECCONV CONVERT IT 02592000
  2757. LA R1,3(,R1) POINT TO THE DATA LENGTH OF THE KEY 02593000
  2758. LA R2,2 SET UP THE LENGTH 02594000
  2759. MVC 0(2,R1),THR000+6 MOVE IT IN 02595000
  2760. BAL R14,DECCONV CONVERT IT 02596000
  2761. LA R1,5(,R1) POINT TO THE DATA 02597000
  2762. LA R2,4 SET UP THE COUNT 02598000
  2763. MVC 0(4,R1),THR000+8 POINT TO THE FIRST 4 DATA BYTES 02599000
  2764. BAL R14,DECCONV CONVERT IT 02600000
  2765. LA R1,9(,R1) POINT TO THE NEXT 4 DATA BYTES 02601000
  2766. MVC 0(4,R1),THR000+12 MOVE IN THE LAST OF THE DATA 02602000
  2767. BAL R14,DECCONV CONVERT IT 02603000
  2768. LA R2,PHADDMSG POINT TO THE MSG 02604000
  2769. BAL R14,PRINT2 GO DO IT 02605000
  2770. CLC INADD+2(5),PSTOPCC LAST RECORD ? 02606000
  2771. BE EOJ YES- BRANCH 02607000
  2772. LTR R6,R6 DO I HAVE ANY RECORDS TO PRINT 02608000
  2773. BZ SKIPMSG NO- BRANCH 02609000
  2774. B LOOP13 02610000
  2775. GETR1 LTR R6,R6 DO I HAVE ANY RECORDS TO PRINT 02611000
  2776. BZ NOSTART NO- BRANCH 02612000
  2777. LOOP12 LA R4,8(,R4) POINT TO THE NEXT COUNT 02613000
  2778. CLC 4(1,R4),PSTARTRR IS THIS COUNT EQ TO THE START @VA01816 02614000
  2779. BE PTCOUNT YES- GO PRINT IT 02615000
  2780. SR R5,R5 * POINT TO THE NEXT DATA 02616000
  2781. IC R5,5(R4) * FIELD FOR THE NEXT RECORD 02617000
  2782. AR R7,R5 * 02618000
  2783. ICM R5,3,6(R4) * 02619000
  2784. AR R7,R5 * 02620000
  2785. BCT R6,LOOP12 GO LOOK AT THE NEXT RECORD 02621000
  2786. NOSTART MVC DDR721A+28(5),PSTARTCC SET UP THE START ADD FOR DDR721 02622000
  2787. B DDR721+6 ERROR IF NOT FOUND 02623000
  2788. LOOP13 LA R4,8(,R4) POINT TO THE NEXT COUNT FIELD 02624000
  2789. PTCOUNT SR R5,5 ZERO OUT THE LENGTH REG 02625000
  2790. PCOUNT LH R1,0(R4) * CONVERT THE CYLINDER 02626000
  2791. CVD R1,WORK1 * ADDRESS TO DEC 02627000
  2792. UNPK PRECMSG+6(3),WORK1 * 02628000
  2793. OI PRECMSG+8,X'F0' * 02629000
  2794. LH R1,2(R4) * CONVERT THE HEAD 02630000
  2795. CVD R1,WORK1 * ADDRESS TO DEC 02631000
  2796. UNPK PRECMSG+13(2),WORK1 * 02632000
  2797. OI PRECMSG+14,X'F0' * 02633000
  2798. IC R5,4(R4) GET THR RECORD ID 02634000
  2799. CVD R5,WORK1 * CONVERT THE RECORD ID AND 02635000
  2800. UNPK PRECMSG+20(3),WORK1 MOVE IT INTO THE MSG 02636000
  2801. OI PRECMSG+22,X'F0' SET SINE TO NUM 02637000
  2802. LA R1,PRECMSG+30 POINT TO THE COUNT FIELD 02638000
  2803. LA R2,5 SET UP THE NUM OF BYTES 02639000
  2804. MVC 0(5,R1),0(R4) MOVE IN THE COUNT ID 02640000
  2805. BAL R14,DECCONV CONVERT IT 02641000
  2806. LA R1,11(,R1) POINT TO THE KEY LENGTH 02642000
  2807. LA R2,1 SET UP TH BYTE LENGTH 02643000
  2808. MVC 0(1,R1),5(R4) MOVE IN THE KEY LENGTH 02644000
  2809. BAL R14,DECCONV CONVERT IT 02645000
  2810. LA R1,3(,R1) POINT TO THE DATA LENGTH 02646000
  2811. LA R2,2 SET UP THE BYTE LENGTH 02647000
  2812. MVC 0(2,R1),6(R4) MOVE IT IN 02648000
  2813. BAL R14,DECCONV CONVERT IT 02649000
  2814. LA R2,PRECMSG POINT TO THE MSG 02650000
  2815. BAL R14,PRINT2 GO PRINT IT 02651000
  2816. ICM R5,1,5(R4) GET THE KEY 02652000
  2817. BZ PDATA IF NO KEY THAN GO GET THE DATA 02653000
  2818. MVC PLENMSG+15(4),=C'KEY ' SET KEY INTO THE LENGTH MSG 02654000
  2819. BAL R14,DISPIT GO PRINT THE KEY DATA 02655000
  2820. PDATA AR R7,R5 POINT TO THE DATA 02656000
  2821. ICM R5,3,6(R4) GET THE DATA LENGTH 02657000
  2822. BNZ PRINTDAT BRANCH IF NOT EOF 02658000
  2823. LA R2,PEOFMSG POINT TO THE EOF MSG 02659000
  2824. BAL R14,PRINT2 GO PRINT THE MSG 02660000
  2825. B TSTCOUNT GO GET THE NEXT RECORD 02661000
  2826. PRINTDAT MVC PLENMSG+15(4),DATA SET UP THE MSG 02662000
  2827. BAL R14,DISPIT GO PRINT THE DATA OUT 02663000
  2828. ADDIT AR R7,R5 POINT TO THE NEXT DATA 02664000
  2829. CLC INADD+2(4),PSTOPCC LAST TRACK? @VA01816 02665000
  2830. BNE GOSUB1 GO PRINT @VA01816 02666000
  2831. TSTCOUNT CLC 4(1,R4),PSTOPRR IS THIS LAST RECORD @VA01816 02667000
  2832. BNE GOSUB1 NO- BRANCH 02668000
  2833. TM PSTOPRR+1,X'FF' DO I PRINT TO THE END OF THE TRACK 02669000
  2834. BO GOSUB1 YES- GO DO IT 02670000
  2835. BCTR R6,0 -1 02671000
  2836. B LASTONE 02672000
  2837. GOSUB1 BCT R6,LOOP13 GET THE NEXT RECORD 02673000
  2838. LASTONE TM THRFLAG,SPECIAL WAS THE LAST RECORD WRITEN WITH 01 02674000
  2839. BNO SKIPMSG NO- BRANCH 02675000
  2840. LTR R6,R6 LAST RECORD ? 02676000
  2841. BNZ SKIPMSG NO- SKIP THE MSG 02677000
  2842. LA R2,POFMSG YES- SET UP TO PRINT MSG 02678000
  2843. BAL R14,PRINT2 GO PRINT IT 02679000
  2844. SKIPMSG CLC INADD+2(4),PSTOPCC IS THIS THE LAST TRACK 02680000
  2845. BL UPDTADD NO- GO GET THE NEXT TRACK 02681000
  2846. CLC 0(5,R4),PSTOPCC IS THIS COUNT EQ THE STOP 02682000
  2847. BE EOJ YES - ALL OK 02683000
  2848. TM PSTOPRR+1,X'FF' DO I DUMP THE FULL TRACK 02684000
  2849. BZ DDR721 NO- RECORD NOT FOUND 02685000
  2850. B EOJ GO TO END OF JOB 02686000
  2851. UPDATE1 IC R5,5(R4) GET THE KEY LENGTH 02687000
  2852. AR R7,R5 PIONT TO THE DATA 02688000
  2853. ICM R5,3,6(R4) GET THE DATA LENGTH 02689000
  2854. B ADDIT 02690000
  2855. SPACE 3 02691000
  2856. **************************************************************** 02692000
  2857. *. 02693000
  2858. * 18. SUBROUTINE TO DISP KEY OR DATA FIELD FROM A RECORD 02694000
  2859. * 02695000
  2860. * 1. DISPLAY THE KEY/DATA MSG, WITH A CALL TO ROUTINE 02696000
  2861. * 19 STEP 1. 02697000
  2862. * 02698000
  2863. * 2. POINT TO THE CURRENT AND LAST LINE. 02699000
  2864. * 02700000
  2865. * 3. IF THE LINE IS A DUPLICATE, TURN ON THE SUPLINE 02701000
  2866. * FLAG, AND GO TO STEP 2. 02702000
  2867. * 02703000
  2868. * 4. IF THE SUPLINE FLAG IS ON DISPLAY THE SUPPRESSED 02704000
  2869. * CHARECTOR MSG, WITH A CALL TO ROUTINE 19. 02705000
  2870. * 02706000
  2871. * 5. TRANSLATE THE LINE AND DISPLAY IT WITH A LINK TO 02707000
  2872. * ROUTINE 19. 02708000
  2873. * 02709000
  2874. * 6. IF THE LAST LINE, RETURN TO CALLER, ELSE GO TO 02710000
  2875. * STEP 2. 02711000
  2876. *. 02712000
  2877. *************************************************************** 02713000
  2878. DISPIT TM DDRFLAG2,COUNTOPT IS THE COUNT OPTION ON 02714000
  2879. BCR 1,R14 YES- RETURN TO CALLER 02715000
  2880. STM R4,R7,REGSAVE4 SAVE THE CALLERS REG'S 02716000
  2881. ST R14,SAVERET SAVE THE RETURN REG ALSO 02717000
  2882. CVD R5,WORK1 * SET UP THE LENGTH IN DECMAL 02718000
  2883. UNPK PLENMSG+2(5),WORK1 * 02719000
  2884. OI PLENMSG+6,X'F0' * 02720000
  2885. LA R1,PLENMSG+9 * SET UP THE LENGTH IN HEX 02721000
  2886. LA R2,2 * 02722000
  2887. STH R5,0(R1) * 02723000
  2888. BAL R14,DECCONV * 02724000
  2889. LA R2,PLENMSG POINT TO THE MSG 02725000
  2890. BAL R14,PRINT2 GO PRINT THE MSG 02726000
  2891. SR R6,R6 02727000
  2892. LR R8,R7 SET LAST LINE POINTER EQ TO CURRANT X02728000
  2893. LINE POINTER. 02729000
  2894. LA R4,32 SET UP LENGTH OF ONE LINE (TO PRINT) 02730000
  2895. ADDLINE BXH R6,R4,LASTIME ADD LINE COUNT TO DISPLACEMENT 02731000
  2896. CR R7,R8 IS THE CURRENT LINE THE SAME AS LAST LINE 02732000
  2897. BE SETUPBUF YES- SKIP THE COMP (FIRST TIME) 02733000
  2898. BCTR R4,0 -1 02734000
  2899. EX R4,COMPDAT DUP LINE ? 02735000
  2900. LA R4,1(,R4) +1 02736000
  2901. BNE SUPMSG NO- GO TEST FOR SUP MSG 02737000
  2902. OI DDRFLAG,SUPLINE TURN ON THE SUP LINE FLAG 02738000
  2903. AR R7,R4 POINT TO THE NEXT LINE 02739000
  2904. CR R6,R5 WAS THAT THE LAST LINE 02740000
  2905. BL ADDLINE NO- GO SET UP THE COUNT 02741000
  2906. NI DDRFLAG,255-SUPLINE TURN OFF THE SUPPRESSED LINE FLAG 02742000
  2907. LA R2,PSUPMSG POINT TO THE PRINT SUPPRESSED MSG 02743000
  2908. BAL R14,PRINT2 PRINT THE MSG 02744000
  2909. B NEXTONE RETURN 02745000
  2910. SUPMSG TM DDRFLAG,SUPLINE IS THE SUP LINE SWITCH ON 02746000
  2911. BZ SETUPBUF NO- GO PRINT THE LINE 02747000
  2912. NI DDRFLAG,255-SUPLINE TURN THE FLAG OFF 02748000
  2913. LA R2,PSUPMSG POINT TO THE PRINT SUP MSG 02749000
  2914. BAL R14,PRINT1 GO PRINT THE MSG 02750000
  2915. SETUPBUF MVI PTBUFFER,C' ' * SET UP AND CLEAR 02751000
  2916. MVC PTBUFFER+1(121),PTBUFFER * THE PRINTER BUFFER 02752000
  2917. MVI AST1,C'*' * 02753000
  2918. MVI AST2,C'*' * 02754000
  2919. LR R2,R6 SAVE THE DISPLACEMENT 02755000
  2920. SR R2,R4 BACK UP THE LENGTH 02756000
  2921. CVD R2,WORK1 * CONVERT THE DISPLACEMENT 02757000
  2922. UNPK DISPDEC(5),WORK1 * TO DECMAL 02758000
  2923. OI DISPDEC+4,X'F0' * 02759000
  2924. LA R1,DISPHEX POINT TO THE DISPLACEMENT COUNTER 02760000
  2925. STH R2,0(R1) SET IN DISPLACEMENT 02761000
  2926. LA R2,2 NUMBER OF BYTES TO CONVERT 02762000
  2927. BAL R14,DECCONV CONVERT THE DISPLACEMENT TO HEX 02763000
  2928. TRANS BCTR R4,0 -1 02764000
  2929. EX R4,MOVEDAT MOVE IN THE DATA 02765000
  2930. EX R4,TRANDAT TRANSLATE THE DATA 02766000
  2931. LA R3,0(R4,R7) POINT TO END OF THE BUFFER (NEXT LINE) 02767000
  2932. LA R4,1(,R4) +1 02768000
  2933. LA R2,4 SET UP BYTE COUNT 02769000
  2934. LA R1,HEXDATA POINT TO THE OUTPUT BUFFER 02770000
  2935. LR R8,R7 SET UP THE LAST LINE POINTER 02771000
  2936. LOOP11 MVC 0(4,R1),0(R7) MOVE IN THE DATA TO BE CONVERTED 02772000
  2937. BAL R14,DECCONV CONVERT IT 02773000
  2938. LA R1,9(,R1) POINT TO THE NEXT FIELD 02774000
  2939. CL R1,=A(MIDDLE) IS THIS THE MIDDLE OF THE BUFFER 02775000
  2940. BNE *+8 NO- BRANCH 02776000
  2941. LA R1,1(,R1) ADD 1 TO THE BUFFER 02777000
  2942. BXLE R7,R2,LOOP11 DO IT UP TO THE END OF THIS LINE 02778000
  2943. CR R6,R5 IS THIS THE LAST LINE 02779000
  2944. BL PBUFFER NO- BRANCH 02780000
  2945. LA R3,1(,R3) +1 02781000
  2946. SR R7,R3 DID I COME OUT EVEN ? 02782000
  2947. BZ PBUFFER YES- BRANCH 02783000
  2948. LA R7,1(R7,R7) *2+1 = NUMBER OF BYTES TO BACK UP 02784000
  2949. SR R1,R7 BACK UP 02785000
  2950. EX R7,BLANKIT BLANK OUT THE EXTRA BYTES 02786000
  2951. PBUFFER LA R2,PBUFLEN POINT TO THE PRINT BUFFER -2 02787000
  2952. LA R1,L'PTBUFFER SET UP THE BUFFER LENGTH 02788000
  2953. TM DDRFLAG2,HEXOPT+GRAPHOPT DEFAULT OPTIONS ON 02789000
  2954. BO SAVELEN BRANCH IF BOUTH ON 02790000
  2955. LA R1,AST1-(PTBUFFER+1) LENGTH OF THE HEX DATA 02791000
  2956. TM DDRFLAG2,HEXOPT HEX OPTION ON 02792000
  2957. BO SAVELEN YES- BRANCH 02793000
  2958. LA R1,((AST2+1)-AST1)+(HEXDATA-PTBUFFER) GET GRAPHIC LEN 02794000
  2959. MVC HEXDATA((AST2+1)-AST1),AST1 MOVE IN THE GRAPHIC DATA 02795000
  2960. SAVELEN STH R1,0(,R2) SAVE THE LENGTH COUNT 02796000
  2961. CR R6,R5 IS THIS THE LAST TIME 02797000
  2962. BNL *+12 YES- BRANCH 02798000
  2963. BAL R14,PRINT1 GO PRINT THE BUFFER 02799000
  2964. B ADDLINE GO PRINT NEXT LINE 02800000
  2965. BAL R14,PRINT2 GO PRINT THE LAST LINE 02801000
  2966. NEXTONE LM R4,R7,REGSAVE4 RETURN REGS 02802000
  2967. L R14,SAVERET AND R14 ALSO 02803000
  2968. BR R14 GO BACK 02804000
  2969. LASTIME SR R6,R4 -32 ( BACK UP THE DATA COUNT) 02805000
  2970. LR R4,R5 GET THE TOTAL DATA LENGTH 02806000
  2971. SR R4,R6 FIND THE REMAINING BYTES 02807000
  2972. B ADDLINE RETURN TO ROUTINE 02808000
  2973. COMPDAT CLC 0(0,R8),0(R7) 02809000
  2974. MOVEDAT MVC DATATRAN(0),0(R7) 02810000
  2975. TRANDAT TR DATATRAN(0),TRANTABL 02811000
  2976. BLANKIT MVC 0(0,R1),BLANKS 02812000
  2977. SPACE 3 02813000
  2978. ****************************************************************** 02814000
  2979. *. 02815000
  2980. * 19. SUBROUTINE TO PRINT OR TYPE THE DATA 02816000
  2981. * 02817000
  2982. * A PRINT2 02818000
  2983. * 02819000
  2984. * 1. IF THE OUTPUT IS TO THE PRINTER GO TO STEP 3. 02820000
  2985. * 02821000
  2986. * 2. TYPE THE MSG ON THE CONSOLE, THEN TYPE 1 BLANK LINE 02822000
  2987. * AND RETURN TO THE CALLER. 02823000
  2988. * 02824000
  2989. * 3. ADD 2 TO THE LINE COUNT. 02825000
  2990. * 02826000
  2991. * 4. BUILD A CCW TO PRINT SPACE 2. 02827000
  2992. * 02828000
  2993. * 5. GO TO STEP 10. 02829000
  2994. * 02830000
  2995. * B PRINT1 02831000
  2996. * 02832000
  2997. * 6. IF OUTPUT IS TO PRINTER GO TO STEP 8. 02833000
  2998. * 02834000
  2999. * 7. TYPE THE MSG ON THE CONSOLE, AND RETURN TO CALLER. 02835000
  3000. * 02836000
  3001. * 8. ADD 1 TO THE LINE COUNT. 02837000
  3002. * 02838000
  3003. * 9. BUILD A CCW TO PRINT SPACE 1. 02839000
  3004. * 02840000
  3005. * 10. IF THE LINE COUNT IS OVER THE MAX CHANGE THE CCW TO 02841000
  3006. * PRINT SKIP TO 1. 02842000
  3007. * 02843000
  3008. * 11. PRINT THE LINE AND RETURN TO THE CALLER. 02844000
  3009. *. 02845000
  3010. ***************************************************************** 02846000
  3011. PRINT2 EQU * HRC012DK 02847190
  3012. CLC PRINTIOB+(IOBUADD-IOB)(2),CONIOB+(IOBUADD-IOB) HRC012DK 02847380
  3013. BE CONSOUT1 HRC012DK 02847570
  3014. TM DDRFLAG2,TYPE TYPE OPERATION HRC012DK 02847760
  3015. BZ PRINTER2 NO- GO TO THE PRINTER ROUTINE 02848000
  3016. CONSOUT1 EQU * HRC012DK 02848500
  3017. ST R14,PRINTRET SAVE THE RETURN ADD 02849000
  3018. BAL R14,MSGWRITE GO PRINT THE MSG ON THE CON 02850000
  3019. L R14,PRINTRET GET THE RETURN REG 02851000
  3020. LA R2,BLANKMSG POINT TO THE BLANK MSG 02852000
  3021. B MSGWRITE GE TYPE A BLANK LINE (RETURN ON R14) 02853000
  3022. PRINTER2 LH R1,LINECT GET THE LINE COUNT 02854000
  3023. LA R1,2(,R1) ADD 2 TO THE LINE COUNT 02855000
  3024. MVI PRINTCCW,X'11' SET UP CCW TO PRINT SPACE 2 02856000
  3025. B TESTNPAG GO TEST FOR NEXT PAGE 02857000
  3026. PRINT1 TM DDRFLAG2,TYPE IS THIS A TYPE OPERATION 02858000
  3027. BZ PRINTER1 NO- GO TO THE PRINTER ROUTINE 02859000
  3028. B MSGWRITE GO TYPE THE MSG ON THE CONS (RET ON R14) 02860000
  3029. PRINTER1 LH R1,LINECT GET THE LINE COUNT 02861000
  3030. LA R1,1(,R1) ADD 1 TO THE COUNT 02862000
  3031. MVI PRINTCCW,X'09' SET UP THE CCW TO PRINT ONE LINE 02863000
  3032. TESTNPAG CH R1,MAXLINE IS IT TIME TO SKIP TO CH 1 02864000
  3033. BL SAVECT NO- GO SAVE THE COUNT 02865000
  3034. MVI PRINTCCW,X'89' PRINT ONE LINE AND SKIP TO 1 02866000
  3035. SR R1,R1 SET LINE COUNT TO 0 02867000
  3036. SAVECT STH R1,LINECT SAVE THE LINE COUNT 02868000
  3037. LA R15,PRINTIOB POINT TO THE PRINTER IOB 02869000
  3038. LH R1,0(R2) GET THE COUNT 02870000
  3039. LA R2,2(,R2) POINT TO THE MSG 02871000
  3040. STH R1,PRINTCCW+6 SET UP THE MSG LENGTH 02872000
  3041. STCM R2,7,PRINTCCW+1 SET IN THE DATA ADD 02873000
  3042. ST R14,PRINTRET SAVE THE RETURN ADD 02874000
  3043. LA R1,PRINTCCW POINT AT THE PRINTER CCW 02875000
  3044. BAL R14,CMS2 GO TEST IF RUNNING UNDER CMS 02876000
  3045. L R14,PRINTRET RETURN THE RETURN REG 02877000
  3046. BR R14 GO BACK 02878000
  3047. SPACE 3 02879000
  3048. ***************************************************************** 02880000
  3049. *. 02881000
  3050. * 20. SUBROUTINE TO CLOSE THE OLD TAPE AND OPEN THE NEXT TAPE 02882000
  3051. * 02883000
  3052. * 1. REWIND UNLOAD THE OLD TAPE. 02884000
  3053. * 02885000
  3054. * 2. REVERSE THE TAPE AND ALTERNATE TAPE UNIT ADDERSS. 02886000
  3055. * 02887000
  3056. * 3. READ THE NEW TAPE VOLUME HEADER RECORD. 02888000
  3057. * 02889000
  3058. * 4. RETURN TO THE CALLING ROUTINE. 02890000
  3059. *. 02891000
  3060. ***************************************************************** 02892000
  3061. ERRCLOSE STM R14,R1,REGSAVE3 SAVE REGS 02893000
  3062. B DDR709 PRINT ERROR (RETURN TO CLOSERET) 02894000
  3063. CLOSE STM R14,R1,REGSAVE3 SAVE REGS 02895000
  3064. CLOSERET CL R10,BAREMAC UNDER CMS ? 02896000
  3065. BE NOTCMS NO- BRANCH 02897000
  3066. WAITT WAIT FOR THE MSG TO GET OUT 02898000
  3067. NOTCMS L R15,REGSAVE3+4 RESTORE REG 15 (POINTER TO THE IOB ) 02899000
  3068. LA R1,RUNCCW * POINT IOB AT THE CCW 02900000
  3069. CLC IOBUADD,IOBATAPE PRIMARY & ALT. TAPE SAME? @VA01624 02901000
  3070. BE TPSWP YES - @VA01624 02902000
  3071. OI IOBSTAT,IOBTPSWP NO - FLAG SWAP IN PROGRESS @VA01624 02903000
  3072. TPSWP EQU * @VA01624 02904000
  3073. BAL R14,STARTIO 02905000
  3074. LH R1,IOBUADD * REVERSE POINTERS TO UNIT ADD 02906000
  3075. MVC IOBUADD,IOBATAPE * 02907000
  3076. STH R1,IOBATAPE * 02908000
  3077. LA R1,RVHRCCW * POINT IOB AT CCW 02909000
  3078. BAL R14,STARTIO 02910000
  3079. CLC =C'VHR ',VHR IS IT A VOLUME HEADER RECORD 02911000
  3080. BNE DDR709 NO- ERROR 02912000
  3081. LM R14,R1,REGSAVE3 RETURN REGS 02913000
  3082. BR R14 RETURN TO CALLER 02914000
  3083. EJECT 02915000
  3084. ***************************************************************** 02916000
  3085. *. 02917000
  3086. * 21. SUBROUTINE TO OPEN THE DASD UNITS 02918000
  3087. * 02919000
  3088. * 1. READ IN THE VOL1 LABLE. 02920000
  3089. * 02921000
  3090. * 2. IF IT IS A CPVOL TURN ON THE CPVOL FLAG. 02922000
  3091. * 02923000
  3092. * 3. IF THE VOL SER NO IS NOT EQ GO TO THE ERROR DDR711. 02924000
  3093. * 02925000
  3094. * 4. RETURN TO THE CALLING ROUTINE. 02926000
  3095. *. 02927000
  3096. ****************************************************************** 02928000
  3097. OPENDASD STM R14,R3,REGSAVE3 SAVE REGS 02929000
  3098. LA R1,DDR716 POINT TO THE ERROR ROUTINE 02930000
  3099. ST R1,IOBERROR FOR DASD OPEN 02931000
  3100. LA R1,VOL1CCW * SET UP TO READ THE VOL1 LABLE 02932000
  3101. BAL R14,STARTIO * SERIAL NUMBER 02933000
  3102. LA R1,INOUTER POINT TO THE ERROR ROUTINE 02934000
  3103. ST R1,IOBERROR AND SAVE IT 02935000
  3104. CLC VOL1BUFF+46(5),=C'CP370' IS THE UNIT A CPVOL 02936000
  3105. BNE TESTSCR NO- BRANCH 02937000
  3106. OI IOBSTAT,IOBCPVOL TURN ON CPVOL BIT 02938000
  3107. TESTSCR TM IOBSTAT,IOBSCRAT IS THIS A SCRATCH VOL 02939000
  3108. BNO TESTVSN NO- BRANCH 02940000
  3109. MVC IOBVSER(6),VOL1BUFF+4 MOVE THE VOLID INTO THE IOB 02941000
  3110. TESTVSN CLC VOL1BUFF+4(6),IOBVSER IS VOL SER EQ 02942000
  3111. BE OPENCOMP YES- BRANCH 02943000
  3112. CLC VOL1BUFF(6),IOBVSER IS IT A NSL 02944000
  3113. BNE DDR711 NO- ERROR 02945000
  3114. OPENCOMP LM R14,R3,REGSAVE3 RETURN REGS 02946000
  3115. BR R14 02947000
  3116. SPACE 3 02948000
  3117. OPENER BAL R14,RESPONSE @VA03507 02949000
  3118. LM R14,R3,REGSAVE3 RETURN REGS 02950000
  3119. CLC =C'YES ',RESPDATA IS IT YES 02951000
  3120. BNE TESTR NO- BRANCH 02952000
  3121. CLI MSGFLAG,X'F1' DMKDDR711 MSG ISSUED @VA03507 02953000
  3122. BNE OPENCOMP NO, DONT SET REAL VOLSER @VA03507 02954000
  3123. MVI MSGFLAG,X'00' RESET MESSAGE FLAG @VA03507 02955000
  3124. MVC IOBVSER,VOL1BUFF+4 SET IN THE REAL VOL SER NO 02956000
  3125. B OPENCOMP OK GET OUT 02957000
  3126. TESTR CLC =C'REREAD ',RESPDATA IS IT REREAD 02958000
  3127. BE OPENDASD+4 REOPEN THE UNIT (DO NOT SAVE RERS) 02959000
  3128. CLC =C'NO ',RESPDATA IS IT NO 02960000
  3129. BNE OPENER YES, NO, OR REREAD PLEASE @V2A2063 02961000
  3130. OI DDRFLAG,ERROR SET THE ERROR BIT ON 02962000
  3131. B GTCARD 02963000
  3132. EJECT 02964000
  3133. **************************************************************** 02965000
  3134. *. 02966000
  3135. * 22. ROUTINE TO END A JOB STEP 02967000
  3136. * 02968000
  3137. * 1. IF THE INPUT UNIT IS TAPE POSITION IT. 02969000
  3138. * 02970000
  3139. * 2. IF THIS IS A TYPE FUNCTION GO TO STEP 5. 02971000
  3140. * 02972000
  3141. * 3. PRINT AND TYPE THE END OF STEP MSG. 02973000
  3142. * 02974000
  3143. * 4. IF THE OUTPUT UNIT IS TAPE WRITE AN EOJ TRAILER 02975000
  3144. * RECORD AND POSITION THE TAPE. 02976000
  3145. * 02977000
  3146. * 5. IF THE CARD SWITCH IS ON CONT, ELSE GO TO ROUTINE 1 02978000
  3147. * STEP 5. 02979000
  3148. * 02980000
  3149. * 6. IF THE CARD END OF FILE SWITCH IS ON GO TO 02981000
  3150. * ROUTINE 28. 02982000
  3151. * 02983000
  3152. * 7. IF THIS IS A PRINT OR TYPE FUNCTION GO TO ROUTINE 1 02984000
  3153. * STEP 5. 02985000
  3154. * 02986000
  3155. * 8. RETURN THE POINTER TO THE INPUT/OUTPUT STATEMENT 02987000
  3156. * AND GO TO ROUTINE 2. 02988000
  3157. *. 02989000
  3158. ****************************************************************** 02990000
  3159. CLOSEJOB L R7,CUREXT POINT TO THE EXTENT TABLE 02991000
  3160. CLC CYLSTART(2),INADD+2 HAVE I STARTED ON THIS EXTENT? 02992000
  3161. BNL EOJ NO- BRANCH 02993000
  3162. LH R1,CYLSTART * SET UP THE CYLINDER 02994000
  3163. CVD R1,WORK1 * EXTENTS FOR THE 02995000
  3164. UNPK INSTART(4),WORK1 * CYLINDER MAP 02996000
  3165. LH R1,INADD+2 * 02997000
  3166. BCTR R1,0 * 02998000
  3167. CVD R1,WORK1 * 02999000
  3168. UNPK INSTOP(4),WORK1 * 03000000
  3169. LH R1,CYLREOR * 03001000
  3170. CVD R1,WORK1 * 03002000
  3171. UNPK OUTSTART(4),WORK1 * 03003000
  3172. LH R1,OUTADD+2 * 03004000
  3173. BCTR R1,0 * 03005000
  3174. CVD R1,WORK1 * 03006000
  3175. UNPK OUTSTOP(4),WORK1 * 03007000
  3176. BAL R14,PRINTEXT * 03008000
  3177. EOJ LA R15,INIOB POINT TO THE INPUT IOB 03009000
  3178. TM IOBCLASS,CLASTAPE IS THE INPUT A TAPE 03010000
  3179. BZ SETEND NO- BRANCH 03011000
  3180. CLI IOBDISP,X'03' LEAVE OPTION 03012000
  3181. BNE SETDISP NO, BRANCH @VA02383 03013000
  3182. CLC =C'EOJ',THR END-OF-FILE ON TAPE @VA02383 03014000
  3183. BE SETEND YES, BRANCH @VA02383 03015000
  3184. MVI DISPCCW,X'3F' CHANGE OP CODE TO FSF @VA02383 03016000
  3185. B MOVETAPE GO SET UP THE IOB @VA02383 03017000
  3186. SETDISP MVC DISPCCW(1),IOBDISP SET UP THE DISP CCW CODE @VA02383 03018000
  3187. MOVETAPE LA R1,DISPCCW SET UP CCW IN IOB @VA02383 03019000
  3188. CLC IOBUADD,IOBATAPE PRIMARY AND ALT. TAPE SAME? @VA01135 03020000
  3189. BE TPSWP1 YES - NO FLAG. @VA01135 03021000
  3190. OI IOBSTAT,IOBTPSWP NO - SET FLAG AS REMINDER. @VA01135 03022000
  3191. TPSWP1 EQU * @VA01135 03023000
  3192. BAL R14,STARTIO 03024000
  3193. LH R1,IOBUADD * SWAP UNIT ADDRESSES 03025000
  3194. MVC IOBUADD,IOBATAPE * 03026000
  3195. STH R1,IOBATAPE * 03027000
  3196. SETEND TM DDRFLAG2,TYPE IS THIS THE TYPE OPERATION 03028000
  3197. BO TESTCARD YES BRANCH (DO NOT PRINT MSG) 03029000
  3198. MVC MSG001+13(7),SAVENAME SET UP TO PRINT 'END OF DUMP' X03030000
  3199. RESTORE, COPY OR PRINT 03031000
  3200. CLC PRINTIOB+(IOBUADD-IOB)(2),CONIOB+(IOBUADD-IOB) HRC012DK 03031300
  3201. BE CONSOUT2 HRC012DK 03031600
  3202. LA R15,PRINTIOB POINT TO THE IOB 03032000
  3203. LA R1,PTENDCCW POINT TO THE CCW 03033000
  3204. BAL R14,CMS2 PRINT IT OUT ON THE CYLINDER MAP 03034000
  3205. CONSOUT2 EQU * HRC012DK 03034500
  3206. BAL R14,MSG001 PRINT MSG ON THE CONS ALSO 03035000
  3207. LA R15,OUTIOB POINT TO THE OUTPUT IOB 03036000
  3208. TM IOBCLASS,CLASTAPE IS THIS A TAPE 03037000
  3209. BZ TESTCARD NO- BRANCH 03038000
  3210. MVC VHR(4),=C'EOJ ' SET UP EOJ LABEL 03039000
  3211. MVC VHRCYLNO,OUTADD SET UP LAST CYLINDER NO 03040000
  3212. MVC DISPCCW(1),IOBDISP SET UP THE DISP CCW CODE 03041000
  3213. LA R1,BACKCCW6 * POINT IOB AT THE FIRCT CCW 03042000
  3214. CLC IOBUADD,IOBATAPE PRIMARY AND ALT. SAME? @VA01135 03043000
  3215. BE TPSWP2 YES - FORGET FLAG. @VA01135 03044000
  3216. OI IOBSTAT,IOBTPSWP NO - REMEMBER SWAP IN PROG. @VA01135 03045000
  3217. TPSWP2 EQU * @VA01135 03046000
  3218. BAL R14,STARTIO 03047000
  3219. MVC VHR(4),=C'VHR ' SET UP FOR NEXT TIME 03048000
  3220. CLI IOBDISP,X'03' LEAVE OPTION 03049000
  3221. BE TESTCARD YES- BRANCH 03050000
  3222. LH R7,IOBUADD * SWAP ADDRESSES 03051000
  3223. MVC IOBUADD,IOBATAPE * 03052000
  3224. STH R7,IOBATAPE * 03053000
  3225. TESTCARD MVC THRHADD+1(4),INADD+2 RESET THE THRADD TO THE IN ADD 03054000
  3226. XC INADD(16),INADD ZERO THE INPUT AND OUTPUT DASD ADD 03055000
  3227. NI DDRFLAG,255-(RESTALL) RESET BITS 03056000
  3228. NI DDRFLAG,255-NUCLEUS RESET THE BIT (NUC) 03057000
  3229. XC TAPEERCT(4),TAPEERCT ZERO OUT THE TAPE AND DASD X03058000
  3230. ERROR COUNT 03059000
  3231. TM DDRFLAG,CARDIN CARD INPUT ? 03060000
  3232. BZ CARDLP NO, GO GET NEXT PARM @VA02251 03061000
  3233. TM DDRFLAG,CARDEOF WAS EOF READ 03062000
  3234. BO EXIT YES- BRANCH 03063000
  3235. TM DDRFLAG2,PRINT+TYPE PRINT OR TYPE OPERATION 03064000
  3236. BNZ CARDLP YES, GO GET THE NEXT STATEMENT @VA02251 03065000
  3237. LM R1,R2,NEXTFILD RETURN POINTERS TO THE LAST PARM 03066000
  3238. B SCANNAME 03067000
  3239. SPACE 03068000
  3240. CARDLP MVI DDRFLAG2,0 RESET DDRFLAG2 @VA02251 03069000
  3241. B GTCARD GET NEXT CARD @VA02251 03070000
  3242. EJECT 03071000
  3243. ***************************************************************** 03072000
  3244. *. 03073000
  3245. * 23. INPUT AND OUTPUT UNIT ERROR ROUTINE 03074000
  3246. * 03075000
  3247. * 1. IF THE NOTOPER FLAG IS ON GO TO ERROR DDR704. 03076000
  3248. * 03077000
  3249. * 2. POINT TO THE ERROR CCW. 03078000
  3250. * 03079000
  3251. * 3. IF THE UNIT IS TAPE GO TO STEP 12. 03080000
  3252. * 03081000
  3253. * A DASD 03082000
  3254. * 03083000
  3255. * 4. IF UNIT EXCEPTION CHANGE THE CCW TO A READ READ 03084000
  3256. * COUNT AND RESTART THE CCW STRING. 03085000
  3257. * 03086000
  3258. * 5. IF INTERVENTION REQUIRED GO TO ERROR DDR710. 03087000
  3259. * 03088000
  3260. * 6. IF SEEK CHECK DO A RECALIBRATE AND RESTART THE CCW 03089000
  3261. * STRING. 03090000
  3262. * 03091000
  3263. * 7. IF A TRACK CONDITION CHECK, THEN: 03092000
  3264. * IF NOT 3330/3340/3350/3380 NOT USR WITH MEHRC012DK 03093490
  3265. * DMKDDR715E, THEN CONTINUE WITH NEXT TRACK. 03094000
  3266. * IF TRACK IS FLAGGED AND HAS NO ALTERNATE ASSIGNED, 03095000
  3267. * ISSUE MSG DMKDDR727E & CONTINUE WITH NEXT TRK. 03096000
  3268. * IF PRESENTLY WORKING ON THE DEFECTIVE TRACK, 03097000
  3269. * SWITCH TO ALTERNATE AND RESTART CHANNEL PROG. 03098000
  3270. * IF PRESENTLY WORKING ON THE ALTERNATE, THEN 03099000
  3271. * CHANNEL PROG TRIED TO RUN OFF END OF TRACK. 03100000
  3272. * THIS GETS TREATED SAME AS WHEN HE TRIES TO GET 03101000
  3273. * OFF OF A NORMAL TRACK AND CAUSES 'FILE PROTECT 03102000
  3274. * CHECK': DO NOT RESTART; THE CHANNEL PROG WAS 03103000
  3275. * INTENDED TO TERMINATE; GO TO STEP 9. 03104000
  3276. * 03105000
  3277. * 8. IF NOT A FILE PROTECT ERROR GO TO STEP 11. 03106000
  3278. * 03107000
  3279. * 9. IF CCW IS A READ COUNT MT COMPUTE THE NUMBER OF 03108000
  3280. * RECORDS ON THE TRACK AND RETURN TO CALLER. 03109000
  3281. * 03110000
  3282. * 10. IF CCW IS A READ KEY-DATA MT TURN ON THE SPECIAL 03111000
  3283. * FLAG AND RETURN TO THE CALLER. 03112000
  3284. * 03113000
  3285. * 11. RETRY THE ERROR UP TO 20 TIMES THEN GO TO ERROR 03114000
  3286. * DDR705. 03115000
  3287. * 03116000
  3288. * B TAPE 03117000
  3289. * 03118000
  3290. * 12. IF UNIT EXCEPTION GO TO STEP 17. 03119000
  3291. * 03120000
  3292. * 13. IF EQUIPMENT CHECK GO TO DDR710. 03121000
  3293. * 03122000
  3294. * 14. IF INTERVENTION REQUIRED GO TO ERROR DDR710. 03123000
  3295. * 03124000
  3296. * 15. IF FILE PROTECT GO TO ERROR DDR718. 03125000
  3297. * 03126000
  3298. * 16. REPOSITION THE TAPE AND RETRY UP TO 50 03127000
  3299. * TIMES. THEN GO TO ERROR DDR705. 03128000
  3300. * 03129000
  3301. * 17. IF UNIT EXCEPTION WAS FRON A READ REPEAT THE CCW 03130000
  3302. * STRING SKIPPING THE TAPE MARK. 03131000
  3303. * 03132000
  3304. * 18. IF WRITING AN EOV OR EOF TRAILER LABLE, FINISH THE 03133000
  3305. * WRITE AND RETURN TO CALLING ROUTINE. 03134000
  3306. * 03135000
  3307. * 19. IF WRITING A THR AND ITS DATA RECORDS, BACK THE 03136000
  3308. * TAPE UP TO THE THR AND WRITE AN EOV TRAILER LABLE. 03137000
  3309. * 03138000
  3310. * 20. REWIND UNLOAD THE TAPE AND SWAP TO THE ALTERNATE 03139000
  3311. * TAPE DRIVE. 03140000
  3312. * 03141000
  3313. * 21. WRITE A VOLUME HEADER RECORD ON THE NEW TAPE. 03142000
  3314. * 03143000
  3315. * 22. RESTART THE CCW STRING TO WRITE THE THR AND ITS 03144000
  3316. * DATA RECORDS. 03145000
  3317. * 03146000
  3318. * INPUTS: R15 = ADDR OF IOB. 03147000
  3319. * R14 = RETURN ADDR TO GET BACK TO CALLER OF 'STARTIO'. 03148000
  3320. *. 03149000
  3321. ***************************************************************** 03150000
  3322. INOUTER TM IOBSTAT,IOBNOPER IS THE DEVICE NOT OPERATIONAL 03151000
  3323. BO DDR704 YES- ERROR 03152000
  3324. L R5,IOBCSW PICK UP THE ERROR CSW COMMAND ADDRESS 03153000
  3325. LA R5,0(,R5) AND ZERO THE HIGH ORDER BYTE 03154000
  3326. S R5,=F'8' BACK UP BY 8 03155000
  3327. BP FOUNDIT OK IF + 03156000
  3328. L R5,IOBCCW GET START OF CCW CHAIN 03157000
  3329. FINDCCW TM 4(R5),CC+CD IS IT CHAINED 03158000
  3330. BZ FOUNDIT NO- BEANCH 03159000
  3331. TESTTIC CLI 8(R5),08 IS THE NEXT CCW A TIC 03160000
  3332. BNE POINT8 NO- POINT TO THAT CCW 03161000
  3333. CLM R5,7,9(R5) IS THE TIC *-8 03162000
  3334. BE POINT16 POINT TO THE CCW 03163000
  3335. L R5,8(R5) PICK UP TIC ADD 03164000
  3336. B FINDCCW GO FIND THE END OF THE CHAIN 03165000
  3337. POINT16 LA R5,8(,R5) ADD 8 TO THE CCW ADD (POINT TO THE TIC ) 03166000
  3338. B TESTTIC GO TEST IF THE NEXT CCW IS TIC 03167000
  3339. POINT8 LA R5,8(,R5) POINT TO THE NEXT CCW 03168000
  3340. B FINDCCW 03169000
  3341. FOUNDIT TM IOBCLASS,CLASTAPE IS THIS A TAPE 03170000
  3342. BO TAPEER YES- BRANCH 03171000
  3343. TM IOBCSW+4,UE WAS THE ERROR A UNIT EXCEPTION 03172000
  3344. BO UNITEXEC YES- BRANCH 03173000
  3345. TM SENSE,X'40' IS IT INTERVENTION REQUIRED 03174000
  3346. BO DDR710 YES- ERROR 03175000
  3347. TM SENSE,X'01' TEST FOR SEEK CHECK 03176000
  3348. BO RECAL BRANCH IF ON 03177000
  3349. TM SENSE,X'2C' TEST FOR BUS-OUT,DATA OR OVERRUN 03178000
  3350. BNZ REPEAT BRANCH IF ON 03179000
  3351. TM SENSE,X'02' TEST FOR TRACK CONDITION CHECK 03180000
  3352. BO TRKCOND BRANCH IF TRACK CONDITION CHECK. @V56BDA8 03181000
  3353. TM SENSE+1,X'04' FILE PROTECT CHECK? @V56BDA8 03182000
  3354. BO ALTXPROT YES, GO SEE WHAT CAUSED IT. @V56BDA8 03183000
  3355. TM SENSE+1,X'08' NO RECORD FOUND? @V56BDA8 03184000
  3356. BO NORECFND TRUE, GO SEE WHAT CAUSED IT. @V56BDA8 03185000
  3357. B DDR705 SOME UNKNOWN ERROR. @V56BDA8 03186000
  3358. SPACE 3 03187000
  3359. TRKCOND TM IOBTYPE,TYP2311+TYP2314+TYP2305 2311/2314/2305? @V56BDA8 03188000
  3360. BNZ DEFTRACK YES, IT IS ONE OF THEM. @V56BDA8 03189000
  3361. * IF 3340, GREAT, CONTINUE. NOTE THAT 3330 & 3350 WILL GENERATE 03190000
  3362. * TRK-COND-CHECK AND COME THRU HERE TOO IN THE CASE WHERE 03191000
  3363. * THE HARDWARE FINDS THE DEFECTIVE TRACK HAS NO ALTERNATE 03192000
  3364. * ASSIGNED. IF THE 3330/3350 HARDWARE FAILED WE CAN'T RECOVER 03193000
  3365. * WITH SOFTWARE EITHER, HOWEVER WE LET 3330/3350 GO THRU THE 03194000
  3366. * FIRST PART OF ERROR RECOVERY ANYWAY BECAUSE WE WANT ERROR 03195000
  3367. * RECOVERY TO READ RECORD R0 FROM THE DEFECTIVE TRACK FOR US; 03196000
  3368. * IN CASE OF TYPE/PRINT WE STILL WANT TO DISPLAY HA AND R0. 03197000
  3369. * 03198000
  3370. * FIRST DETERMINE CCHH OF CURRENT TRACK, 03199000
  3371. * THEN READ HA AND RECORD R0 FROM THIS CURRENT TRACK, THEN READ 03200000
  3372. * HA AND R0 OF TRACK POINTED TO BY CURRENT TRACK'S R0. 03201000
  3373. ST R14,ALTSAVE SAVE CALLER'S RETURN ADDRESS. @V56BDA8 03202000
  3374. BAL R14,GETCCHH RETURN CCHH OF CURRENT TRK IN R1.@V56BDA8 03203000
  3375. BAL R14,GETHAR0 PASS R1; READS HA/R0, RETURNS. @V56BDA8 03204000
  3376. MVC ALTHASAV(L5),ALTHA SAVE HA JUST READ. @V56BDA8 03205000
  3377. MVC ALTR0SAV(L16),ALTR0 SAVE RECORD R0 JUST READ. @V56BDA8 03206000
  3378. ICM R1,15,ALTR0 CCHH OF OTHER TRK (FROM R0). @V56BDA8 03207000
  3379. BAL R14,GETHAR0 PASS R1; READS HA/R0, RETURNS. @V56BDA8 03208000
  3380. L R14,ALTSAVE RESTORE CALLERS RETURN ADDRESS. @V56BDA8 03209000
  3381. ST R14,SIOSAVE RESTORE FOR 'STARTIO' ROUTINE. @V56BDA8 03210000
  3382. TM IOBTYPE,TYP3330+TYP3350+TYP3380 HRC012DK 03211490
  3383. * IS IT 3330/3350? 03212000
  3384. BNZ XDDR727 YES, 3330/3350 (DEF TRK & NO ALT)@V56BDA8 03213000
  3385. * DETERMINE WHETHER TRK-COND-CHECK OCCURRED WHILE TRYING TO 03214000
  3386. * BEGIN ON A DEFECTIVE TRACK OR WHILE TRYING TO RUN OFF THE 03215000
  3387. * END OF AN ALTERNATE TRACK. 03216000
  3388. TM ALTHASAV,X'03' TRK FLAGGED BOTH ALT & DEFECTIVE?@V56BDA8 03217000
  3389. BO ALTXDEF YES, BRANCH. @V56BDA8 03218000
  3390. TM ALTHASAV,X'02' HA FLAG SAYS TRK IS DEFECTIVE? @V56BDA8 03219000
  3391. BZ ALTXPROT NO,MUST BE ALT (& WE RAN OFF END)@V56BDA8 03220000
  3392. * TRACK-COND-CHECK OCCURRED WHILE BEGINNING ON A DEFECTIVE 03221000
  3393. * TRACK. NOW VERIFY THAT RECORD R0 OF DEFECTIVE TRACK POINTS 03222000
  3394. * TO A PROPER ALTERNATE TRACK. 03223000
  3395. TM ALTHA,X'03' TRK POINTED TO IS BOTH ALT & DEF?@V56BDA8 03224000
  3396. BO XDDR727 YES. NOT A PROPER ALTERNATE. @V56BDA8 03225000
  3397. TM ALTHA,X'01' TRK POINTED TO IS NOT AN ALT? @V56BDA8 03226000
  3398. BZ XDDR727 YES. NOT AN ALTERNATE. @V56BDA8 03227000
  3399. CLC ALTHASAV+1(L4),ALTR0 ALT POINTS BACK TO DEF? @V56BDA8 03228000
  3400. BNE XDDR727 NO. NOT A PROPER ALTERNATE. @V56BDA8 03229000
  3401. * FALLING THRU THE ABOVE TESTS MEANS DEFECTIVE TRK POINTS TO A 03230000
  3402. * PROPER ALTERNATE. SO WE NOW DO A RESTART TO THE ALTERNATE. 03231000
  3403. LA R1,ALTSEEK CCWS TO RESTART WITH. @V56BDA8 03232000
  3404. STCM R5,7,ALTTIC+1 FILL IN TIC TO CONNECT RESTART @V56BDA8 03233000
  3405. * CCWS TO FAILING CCW (POINTED TO BY R5). 03234000
  3406. MVC ALTSKADD+2(L4),ALTR0SAV SET SO RESTART CCWS @V56BDA8 03235000
  3407. * SEEK TO ALT TRACK. 03236000
  3408. B RETRYIO RESUME OPERATION (ON ALTERNATE). @V56BDA8 03237000
  3409. SPACE 03238000
  3410. * TRACK DOES NOT HAVE A PROPER ALTERNATE. WE'LL ISSUE MSG 727, 03239000
  3411. * BUT IF IT IS TYPE/DUMP WE STILL WANT TO BE ABLE TO DISPLAY 03240000
  3412. * HA AND R0 OF THIS TRACK. HA WAS READ SUCCESSFULLY PRIOR TO 03241000
  3413. * TRK-COND-CHECK. R0 WAS READ AFTERWARDS IN ERROR RECOVERY. 03242000
  3414. XDDR727 CL R15,=A(INIOB) FAILED I/O WAS INPUT, OR OUTPUT? @V56BDA8 03243000
  3415. BNE XDDR727A OUTPUT, CAN'T BE TYPE/PRINT. @V56BDA8 03244000
  3416. MVC THR000(L16),ALTR0SAV MVC R0, COMPLETES TRK HDR. @V56BDA8 03245000
  3417. XDDR727A B DDR727 ISSUE ERROR MSG, THEN RETURN TO @V56BDA8 03246000
  3418. * CALLER OF 'STARTIO'. 03247000
  3419. SPACE 03248000
  3420. * TRACK IS FLAGGED BOTH ALTERNATE & DEFECTIVE. IT MUST BE A 03249000
  3421. * DEFECTIVE TRACK IN THE ALTERNATE TRACK CYLINDER. WE WANT 03250000
  3422. * TYPE/PRINT TO BE ABLE TO DISPLAY HA AND R0 OF THIS TRACK. 03251000
  3423. * HA WAS READ SUCCESSFULLY PRIOR TO TRK-COND-CHECK. R0 WAS 03252000
  3424. * READ AFTERWARDS AS PART OF ERROR RECOVERY. 03253000
  3425. ALTXDEF CL R15,=A(INIOB) FAILED I/O WAS INPUT, OR OUTPUT? @V56BDA8 03254000
  3426. BNER R14 DOING OUTPUT, CAN'T BE TYPE/PRINT@V56BDA8 03255000
  3427. MVC THR000(L16),ALTR0SAV PUT R0 INTO TRACK HEADER. @V56BDA8 03256000
  3428. BR R14 RETURN TO CALLER OF 'STARTIO'. @V56BDA8 03257000
  3429. SPACE 03258000
  3430. * WE ARRIVE HERE FOR ONE OF TWO REASONS: 03259000
  3431. * (1) WE HAVE A GOOD ALTERNATE TRACK AND GOT TRACK 03260000
  3432. * CONDITION CHECK READING BEYOND LAST RECORD; OR, 03261000
  3433. * (2) WE GOT FILE PROTECTION CHECK ON AN ORDINARY TRACK WHEN TRYING 03262000
  3434. * TO READ BEYOND THE LAST RECORD. 03263000
  3435. ALTXPROT CLI 0(R5),146 RD COUNT CCW? @V56BDA8 03264000
  3436. BE ALTTRACK YES, WE WERE FINDING RECORDS @V56BDA8 03265000
  3437. CLI 0(R5),142 RD KEY/DATA CCW? @V56BDA8 03266000
  3438. BNE DDR705 NO. PERMANENT ERROR. @V56BDA8 03267000
  3439. * YES, WE MUST HAVE HIT AN OVERFLOW RECORD. 03268000
  3440. OI THRFLAG,SPECIAL RECORD WAS WRITTEN WITH A @V56BDA8 03269000
  3441. * WRITE SPECIAL COUNT KEY AND DATA. 03270000
  3442. TM IOBTYPE,TYP2311+TYP2314+TYP2305 2311/2314/2305? @V56BDA8 03271000
  3443. BNZR R14 YES, ONE OF THEM. FOR THESE @V56BDA8 03272000
  3444. * DEVICES THERE IS NO 'READ R0' AT THE END 03273000
  3445. * OF THE CHANNEL PROGRAM TO WORRY ABOUT. 03274000
  3446. * OTHERWISE, TERMINATION DUE TO OVERFLOW RECORD AT END OF TRACK 03275000
  3447. * PREVENTED LAST CCWS (SEE 'RR0CCW') FROM READING R0 COUNT. 03276000
  3448. * WE MUST THEREFORE READ R0 COUNT NOW. 03277000
  3449. ST R14,ALTSAVE SAVE CALLERS RETURN ADDRESS. @V56BDA8 03278000
  3450. BAL R14,GETCCHH RETURN CCHH OF CURRENT TRK IN R1.@V56BDA8 03279000
  3451. * (CURRENT TRK IS PROBABLY 'INADD', BUT 03280000
  3452. * COULD BE AN ALTERNATE INSTEAD.) 03281000
  3453. BAL R14,GETHAR0 PASS R1; READS HA/R0, RETURNS. @V56BDA8 03282000
  3454. MVC THR000(L8),ALTR0 PUT R0 COUNT IN TRK HEADER. @V56BDA8 03283000
  3455. L R14,ALTSAVE RESTORE RETURN ADDR. @V56BDA8 03284000
  3456. BR R14 RETURN TO CALLER OF 'STARTIO'. @V56BDA8 03285000
  3457. SPACE 03286000
  3458. DEFTRACK TM THRHADD,X'02' IS THIS A DEFECTIVE TRACK 03287000
  3459. BO DDR715 YES- TYPE THE MSG AND RETURN TO THE *03288000
  3460. CALLER USING THE CALLERS REG 14 03289000
  3461. CLI 0(R5),146 IS CCW A READ COUNT MT @VA01816 03290000
  3462. BNER R14 NO. RETURN TO THE CALLER. @V56BDA8 03291000
  3463. * NOTE: THE THRNDRD FIELD WAS INITIALIZED 03292000
  3464. * TO ZERO WHEN TRACK HEADER WAS CLEARED. 03293000
  3465. * FALL THRU IMPLIES ALT TRK ON 2314/2311/2305. IT IS ALLOWED. 03294000
  3466. ALTTRACK EQU * ENTRY FOR AN ALT. TRACK IN USE. @VA01816 03295000
  3467. * ENTRY ALSO FOR FILE PROTECT, TRYING TO 03296000
  3468. * RUN OFF END OF TRACK IN VIOLATION OF 03297000
  3469. * FILE MASK. 03298000
  3470. L R6,CCWWORKA * COMPUTE THE NUMBER OF COUNT FILES 03299000
  3471. TM IOBTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC012DK 03300490
  3472. BNZ *+8 NO @V2A2063 03301000
  3473. LA R6,8(,R6) SKIP OVER READ REC 0 CCW @VA01049 03302000
  3474. SLR R5,R6 * READ IN. NUMBER OF RECORDS ON TRACK 03303000
  3475. SRL R5,3 * 03304000
  3476. STH R5,THRNDRD SAVE THE NUMBER OF DATA RECORDS 03305000
  3477. BR R14 RETURN TO CALLER 03306000
  3478. SPACE 03307000
  3479. * HANDLE A 'NO-RECORD-FOUND' CHECK. 03308000
  3480. NORECFND TM D5(R5),ALTRDPRG FAILING CCW HAS FLAG @V56BDA8 03309000
  3481. * INDICATING IT IS ONE OF OUR 03310000
  3482. * 'SEARCH-FOR-RECORD-R0' CCWS? 03311000
  3483. BZ DDR705 DON'T KNOW WHY 'NO RECORD FOUND'.@V56BDA8 03312000
  3484. * FALL THRU MAY MEAN WE BEGAN ON AN ALTERNATE TRACK (PROBABLY 03313000
  3485. * THE USER IS USING TYPE/PRINT TO ACCESS IT DIRECTLY). 03314000
  3486. * ANOTHER POSSIBILITY IS THAT WE ARE ON A NORMAL, UNFLAGGED, 03315000
  3487. * TRACK HAVING INVALID DATA IN THE COUNT FIELD OF RECORD R0. 03316000
  3488. * IN EITHER CASE WE WANT TO CONTINUE. BUT OUR USUAL CHANNEL 03317000
  3489. * PROGRAM (WHICH JUST FAILED) CANNOT READ THE TRACK BECAUSE THE 03318000
  3490. * CONTENTS OF RECORD R0 DO NOT MATCH OUR INITIAL SEEK ADDRESS. 03319000
  3491. * WE RECOVER BY RESTARTING THE CHANNEL PROGRAM WITH INITIAL CCWS 03320000
  3492. * THAT OMIT THE 'SEARCH-FOR-RECORD-R0' AND DO A READ R0 INSTEAD. 03321000
  3493. LA R1,READ333Y ADDR OF 'READ' RESTART CCWS. @V56BDA8 03322000
  3494. B RETRYIO GO RESTART THE READ. @V56BDA8 03323000
  3495. SPACE 03324000
  3496. RECAL LA R4,RECALCCW * CHAIN A RECALABRATE TO THE 03325000
  3497. CL R4,IOBCCW * CCW STRING THAT WAS BEING 03326000
  3498. BE REPEAT * EXECUTED, IF IT IS NOT 03327000
  3499. MVC RECALTIC+1(3),IOBCCW+1 * ALREADY CHAINED IN. 03328000
  3500. LR R1,R4 * 03329000
  3501. REPEAT LA R3,1 03330000
  3502. AH R3,DASDERCT ADD ONE TO ERROR COUNT 03331000
  3503. STH R3,DASDERCT SAVE COUNT 03332000
  3504. CLI DASDERCT+1,20 DID I DO IT 20 TIMES 03333000
  3505. BH DDR705 YES- ERROR 03334000
  3506. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE 03335000
  3507. BE DDR705 YES, GET OUT 03336000
  3508. B RETRYIO REPEAT THE CCW STRING. @V56BDA8 03337000
  3509. UNITEXEC CLI 0(R5),142 IS IT A READ KEY-DATA MT 03338000
  3510. BE MOVECCW YES CHANGE CCW TO READ COUNT SO @VA01049 03339000
  3511. * NO EOF 03340000
  3512. CLI 0(R5),X'16' IS IT READ REC ZERO/ @VA01049 03341000
  3513. BNE DDR705 TO... BAD...ERROR @VA01049 03342000
  3514. MVI 0(R5),X'03' MOVE IN NO-OP @VA01049 03343000
  3515. B RETRYIO REPEAT THE CCW STRING. @V56BDA8 03344000
  3516. MOVECCW MVC 0(8,R5),READEOF CHANGE THE CCW TO A READ @VA01049 03345000
  3517. * COUNT SO THAT NEXT TIME I 03346000
  3518. * WILL NOT GET A UNIT EXCEPTION 03347000
  3519. * (THE KEY IS ALREADY READ) 03348000
  3520. B RETRYIO REPEAT THE CCW STRING. @V56BDA8 03349000
  3521. SPACE 3 03350000
  3522. *********************************************************************** 03351000
  3523. * 03352000
  3524. * GETCCHH: SUBROUTINE RETURNS CCHH ADDRESS FROM SENSE DATA. 03353000
  3525. * 03354000
  3526. *********************************************************************** 03355000
  3527. * INPUTS: R14 = RETURN ADDRESS. 03356000
  3528. * OUTPUTS: R1 = CCHH ADDRESS OF LAST TRACK SEEKED TO PRIOR TO LAST 03357000
  3529. * UNIT CHECK. 03358000
  3530. *********************************************************************** 03359000
  3531. GETCCHH CLI CPUID,X'FF' RUNNING REAL MACHINE OR VIRTUAL? @V56BDA8 03360000
  3532. BE GETCCHHV BRANCH IF VIRTUAL MACHINE. @V56BDA8 03361000
  3533. * DIAGNOSE I/O DOES NOT RETURN SUFFICIENT 03362000
  3534. * SENSE DATA TO COMPUTE THE SEEK ADDRESS. 03363000
  3535. TM IOBTYPE,TYP3340 IS IT A 3340/3344? @V56BDA8 03364000
  3536. BZ GETCCHHV NO. @V56BDA8 03365000
  3537. IC R1,SENSE+6 HIGH C AND GARBAGE. @V56BDA8 03366000
  3538. SRL R1,5 ISOLATE 512 + 256. @V56BDA8 03367000
  3539. STC R1,GETCCWRK STORE HIGH C AND GARBAGE. @V56BDA8 03368000
  3540. NI GETCCWRK,X'03' GET RID OF GARBAGE. @V56BDA8 03369000
  3541. MVC GETCCWRK+1(1),SENSE+5 LOW C. @V56BDA8 03370000
  3542. MVN GETCCWRK+3(L1),SENSE+6 LOW H. @V56BDA8 03371000
  3543. L R1,GETCCWRK LOAD CCHH FOR RETURN. @V56BDA8 03372000
  3544. BR R14 @V56BDA8 03373000
  3545. SPACE 03374000
  3546. * LOOK AT THE CHANNEL PROGRAM TO FIND THE SEEK ADDRESS. 03375000
  3547. * (THIS IS PERHAPS NOT AS RELIABLE AS USING SENSE DATA?) 03376000
  3548. GETCCHHV L R1,IOBCCW ADDR OF CHNL PROG (& SEEK CCW). @V56BDA8 03377000
  3549. L R1,0(0,R1) ADDR OF BBCCHH. @V56BDA8 03378000
  3550. ICM R1,15,D2(R1) LOAD CCHH. @V56BDA8 03379000
  3551. BR R14 @V56BDA8 03380000
  3552. SPACE 03381000
  3553. *********************************************************************** 03382000
  3554. * 03383000
  3555. * GETHAR0: SUBROUTINE READS HA AND RECORD R0 FROM TRACK WHOSE 03384000
  3556. * CCHH ADDRESS IS RECEIVED IN R1. 03385000
  3557. * 03386000
  3558. *********************************************************************** 03387000
  3559. * INPUTS: R14 = RETURN ADDRESS. 03388000
  3560. * R1 = CCHH OF TRACK TO BE READ. 03389000
  3561. * OUTPUTS: ALTHA DS XL5 = CONTENTS OF HA OF SPECIFIED TRACK. 03390000
  3562. * ALTR0 DS XL16 = CONTENTS OF RECORD R0 OF SPECIFIED TRACK. 03391000
  3563. *********************************************************************** 03392000
  3564. GETHAR0 STCM R1,15,ALTSKADD+2 FOR SEEK TO SPECIFIED TRACK. @V56BDA8 03393000
  3565. ST R14,SIOSAVE FORCE 'STARTIO' TO RETURN TO OUR @V56BDA8 03394000
  3566. * CALLER. 03395000
  3567. LA R1,READHAR0 READ HA/R0 CHANNEL PROGRAM. @V56BDA8 03396000
  3568. B RETRYIO GO EXECUTE CHNL PROG. @V56BDA8 03397000
  3569. SPACE 3 03398000
  3570. TAPEER TM IOBCSW+4,UE IS IT UNIT EXCEPTION 03399000
  3571. BO ENDOFVOL YES- BRANCH 03400000
  3572. TM SENSE,X'10' IS IT EQU CHECK 03401000
  3573. BZ TSTBUSO NO - TEST FOR BUSOUT @VA11415 03402200
  3574. TM SENSE,X'40' TEST FOR DEV NOT READY @VA08827 03402400
  3575. BZ DDR705 NO - WRITE ERROR MESSAGE @VA08827 03402600
  3576. B DDR710 YES - THATS INTV. REQUIRED @VA08827 03402800
  3577. TSTBUSO TM SENSE,X'20' IS IT A BUS-OUT CHECK? @VA08827 03403100
  3578. BZ TSTINREQ NO- BRANCH 03404000
  3579. TM IOBCSW+4,DE IS IT DEVICE END 03405000
  3580. BZ RETRY NO- BRANCH 03406000
  3581. CLI 0(R5),X'01' IS IT A WRITE CCW 03407000
  3582. BNE RETRY NO- BRANCH 03408000
  3583. LA R1,BACKCCW POINT TO THE BSR CCW 03409000
  3584. B REPOTAPE 03410000
  3585. TSTINREQ TM SENSE,X'40' IS IT INTERVENTION REQUIRED 03411000
  3586. BZ TESTCOMR NO- BRANCH 03412000
  3587. TM IOBCSW+4,DE IS IT DEVICE END 03413000
  3588. BO RETRYIO YES- RETURN @V56BDA8 03414000
  3589. B DDR710 PRINT ERROR MSG 03415000
  3590. TESTCOMR TM SENSE,X'80' IS IT COMMAND REJECT 03416000
  3591. BNO TESTORUN NO- BRANCH 03417000
  3592. CLI 0(R5),X'01' IS IT A WRITE? @VA10205 03417300
  3593. BNE NOFPTST NO - DON'T TEST FOR FILE PROTECT @VA10205 03417600
  3594. TM SENSE+1,X'02' IS THE UNIT FILE PROTECTED 03418000
  3595. BO DDR718 YES- BRANCH 03419000
  3596. B DDR705 NO- ERROR 03420000
  3597. NOFPTST EQU * @VA10205 03420500
  3598. TESTORUN TM SENSE,X'04' IS IT OVERRUN 03421000
  3599. BZ TESTLP NO- BRANCH 03422000
  3600. TESTCONT TM 0(R5),X'03' IS IT A CONTROL CCW 03423000
  3601. BO RETRY YES- BRANCH 03424000
  3602. B NOISE GO AND REPOSITION THE TAPE 03425000
  3603. TESTLP TM SENSE+1,X'08' IS IT AT LOAD POINT 03426000
  3604. BZ TESTDACK NO- BRANCH 03427000
  3605. CLI 0(R5),X'2F' IS THIS A BACK SPACE FILE 03428000
  3606. BE SIORET RETURN TO THE CALLER 03429000
  3607. CLI 0(R5),X'0F' WAS IT REWIND UNLOAD ??? @VA04901 03430000
  3608. BE RETRYIO YES, JUST RESTART I/O @V56BDA8 03431000
  3609. CLI 0(R5),X'27' IS IT A BSR CCW 03432000
  3610. BNE TESTDACK NO- BRANCH 03433000
  3611. SR R6,R6 03434000
  3612. LOOP10 CLI 0(R5),X'27' IS IT A BSR CCW 03435000
  3613. BNE SETFSR NO- BRANCH 03436000
  3614. LA R6,8(,R6) ADD 8 TO R6(COUNT THE BSR CCW'S) 03437000
  3615. SL R5,=F'8' BACK UP 8 03438000
  3616. B LOOP10 03439000
  3617. SETFSR LA R1,FSR1CCW+8 POINT TO THE END OF THE FSR CCW 03440000
  3618. SR R1,R6 POINT TO THE PROPER NUMBER OF FSR CCW'S 03441000
  3619. B GO 03442000
  3620. TESTDACK TM SENSE,X'08' IS IT A DATA CHECK 03443000
  3621. BZ TESTCHDC NO- BRANCH 03444000
  3622. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE 03445000
  3623. BE DDR705 YES, GET OUT 03446000
  3624. CLI 0(R5),X'01' IS IT A WRITE CCW 03447000
  3625. BE BACKERG YES- BRANCH 03448000
  3626. CLI 0(R5),X'1F' IS IT A WTM 03449000
  3627. BE BACKERG YES- BRANCH 03450000
  3628. CLI 0(R5),X'02' IS IT A READ 03451000
  3629. BNE RETRY NO- BRANCH 03452000
  3630. TM SENSE+1,X'80' IS THE NOISE BIT ON 03453000
  3631. BO NOISE YES- BRANCH 03454000
  3632. LA R6,12 SET UP TO TEST FOR NOISE RECORD 03455000
  3633. AH R6,IOBCSW+6 ADD THE RESIDUAL COUNT FROM THE CSW 03456000
  3634. CH R6,6(R5) IS IT GREATER THAN THE CCW COUNT 03457000
  3635. BH RETRY YES- BRANCH (DO NOT REPOSITION THE TAPE) 03458000
  3636. NOISE LA R1,BACKCCW SET UP FOR READ REPOSITION 03459000
  3637. B REPOTAPE 03460000
  3638. TESTCHDC TM IOBCSW+5,X'09' IS IT A CHANNEL DATA, OR CHAINING CHECK 03461000
  3639. BNZ TESTCONT YES- BRANCH 03462000
  3640. TM IOBCSW+5,X'70' IS IT A PRO, PROT OR INCORRECT LENGTH 03463000
  3641. BNZ DDR705 YES- ERROR 03464000
  3642. B RETRY 03465000
  3643. BACKERG LA R1,BACKECCW SET UP FOR WRITE REPOSITION 03466000
  3644. REPOTAPE MVC ERSAVE(28),SIOSAVE SAVE STARTIO REGS 03467000
  3645. ST R5,R5SAVE SAVE THE CCW RESTART POINTER 03468000
  3646. GO BAL R14,STARTIO REPOSITION THE TAPE 03469000
  3647. LM R14,R4,ERSAVE RETURN THE START IO REGS @VM01075 03470000
  3648. L R5,R5SAVE RESTORE CCW RESTART POINTER @VM01075 03471000
  3649. STM R14,R4,SIOSAVE RETURN THE START IO REGS 03472000
  3650. RETRY LR R1,R5 POINT TO THE NEW CCW CHAIN 03473000
  3651. LA R3,1 * ADD ONE TO ERROR COUNT. IF OVER 03474000
  3652. AH R3,TAPEERCT * 50 GO TO ERROR. IF NOT THAN RETRY 03475000
  3653. STH R3,TAPEERCT * THE FAILING CCW. EVERY 4 READS 03476000
  3654. CLI TAPEERCT+1,50 * CLEAN THE TAPE. IF UNDER VM/370 03477000
  3655. BH DDR705 * DO NOT RETRY. 03478000
  3656. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE ? 03479000
  3657. BE DDR705 YES, GET OUT 03480000
  3658. TM TAPEERCT+1,3 * 03481000
  3659. BNZ RETRYIO * @V56BDA8 03482000
  3660. CLI 0(R5),X'02' * 03483000
  3661. BNE RETRYIO * @V56BDA8 03484000
  3662. LA R1,BSR4CCW * 03485000
  3663. B REPOTAPE * 03486000
  3664. ENDOFVOL TM 0(R5),X'01' WAS THE LAST CCW A WRITE OR CONTROL 03487000
  3665. BNO RETRYIO NO- MUST HAVE READ A TAPE MARK *03488000
  3666. SKIP IT AND GO READ THE NEXT RECORD 03489000
  3667. CLC =C'VHR ',VHR * IF WRITING AN EOV OR AN EOF 03490000
  3668. BNE LABELRST * LABLE EVERYTHING IS OK. 03491000
  3669. SR R6,R6 SET UP TO COUNT THE WRITE CCW'S 03492000
  3670. LOOP3 CLI 0(R5),X'01' IS THIS A WRITE CCW 03493000
  3671. BNE BACKUP1 NO- BRANCH END OF STRING 03494000
  3672. LA R6,8(R6) ADD 8 TO CCW COUNT 03495000
  3673. SL R5,=F'8' BACK UP 8 03496000
  3674. B LOOP3 LOOP COUNTING WRITE CCW'S 03497000
  3675. BACKUP1 LA R1,BACKCCW6 POINT TO THE LAST CCW IN THE CHAIN 03498000
  3676. SR R1,R6 * POINT TO THE PROPER NO. OF *03499000
  3677. * BSR CCW'S AND CHAIN THEM IN. 03500000
  3678. MVC VHR(4),=C'EOV ' MAKE THE VHR RECORD AN EOV RECORD 03501000
  3679. MVC VHRCYLNO,OUTADD SET UP CYLINDER ID 03502000
  3680. MVI DISPCCW,X'0F' SET UP THE DISP COMMAND CODE TO UNLOAD 03503000
  3681. CLC IOBUADD,IOBATAPE SAME TAPE?? @VA01624 03504000
  3682. BE TPSWP3 YEP @VA01624 03505000
  3683. OI IOBSTAT,IOBTPSWP NO - SET FLAG @VA01624 03506000
  3684. TPSWP3 EQU * @VA01624 03507000
  3685. BAL R14,STARTIO BACK UP AND WRITE IT OUT 03508000
  3686. LABELOK MVC VHR(4),=C'VHR ' CHANGE THE EOV RECORD BACK TO A VHR 03509000
  3687. LH R7,IOBUADD * SET UP THE ALTERNATE TAPE 03510000
  3688. MVC IOBUADD,IOBATAPE * UNIT ADDRESS 03511000
  3689. STH R7,IOBATAPE * 03512000
  3690. LH R1,OUTADD+2 POINT TO THE CYLINDER ADD 03513000
  3691. LH R2,OUTADD+4 AND THE TRACK ADDRESS 03514000
  3692. BAL R14,MSG005 GO PRINT THE END OF VOL MSG 03515000
  3693. L R7,CUREXT POINT TO THE CURRENT EXTENT 03516000
  3694. LH R1,CYLSTART * SET UP THE CYLINDER 03517000
  3695. CVD R1,WORK1 * EXTENTS FOR THE 03518000
  3696. UNPK INSTART(4),WORK1 * CYLINDER MAP AND RESET THE 03519000
  3697. LH R1,INADD+2 * EXTENT TABLE FOR THE NEXT 03520000
  3698. STH R1,CYLSTART * TIME 03521000
  3699. CVD R1,WORK1 * 03522000
  3700. UNPK INSTOP(4),WORK1 * 03523000
  3701. LH R1,CYLREOR * 03524000
  3702. CVD R1,WORK1 * 03525000
  3703. UNPK OUTSTART(4),WORK1 * 03526000
  3704. LH R1,OUTADD+2 * 03527000
  3705. STH R1,CYLREOR * 03528000
  3706. CVD R1,WORK1 * 03529000
  3707. UNPK OUTSTOP(4),WORK1 * 03530000
  3708. BAL R14,PRINTEXT * 03531000
  3709. CL R10,BAREMAC UNDER CMS ? 03532000
  3710. BE NOTCMS1 NO- BRANCH 03533000
  3711. WAITT WAIT FOR THE MSG TO GET OUT 03534000
  3712. NOTCMS1 EQU * 03535000
  3713. LA R1,WRITEVHR SET UP TO WRITE VHR 03536000
  3714. LA R15,OUTIOB RESET THE IOB POINTER 03537000
  3715. BAL R14,STARTIO DO IT 03538000
  3716. B TESTOUT GO WRITE THE SAME DATA ON A NEW TAPE 03539000
  3717. LABELRST TM 4(R5),CC IS THIS CCW CHAINED 03540000
  3718. BZ IORETURN NO- RETURN TO CALLER 03541000
  3719. ICM R1,7,IOBCSW+1 POINT TO THE NEXT CCW 03542000
  3720. B RETRYIO RESTART THE CHAIN. 03543000
  3721. EJECT 03544000
  3722. ****************************************************************** 03545000
  3723. *. 03546000
  3724. * 24. START IO ROUTINE 03547000
  3725. * 03548000
  3726. * 1. IF RUNNING UNDER VM/370 GO TO STEP 10. 03549000
  3727. * 03550000
  3728. * 2. IF AN ERROR IS STACKED, UNSTACK IT AND GO TO 03551000
  3729. * STEP 5. 03552000
  3730. * 03553000
  3731. * 3. START THE DEVICE. 03554000
  3732. * 03555000
  3733. * 4. IF CHANNEL STATUS IS ZERO AND IF NO UC, UE OR 03556000
  3734. * ATTN IS IN THE UNIT STATUS GO TO STEP 7. 03557000
  3735. * 03558000
  3736. * 5. IF THIS IS THE DEVICE I STARTED GO TO DO A SENSE, 03559000
  3737. * ELSE STACK THE ERROR IN THE IOB. 03560000
  3738. * 03561000
  3739. * 6. GO TO THE ERROR ROUTINE IF PROVIDED, ELSE CHECK 03562000
  3740. * THE OPTION SWITCHES TO STOP, REPEAT OR RETURN. 03563000
  3741. * 03564000
  3742. * 7. IF THIS IS THE DEVICE I STARTED CONTINUE, ELSE WAIT 03565000
  3743. * FOR THE NEXT IO INTERRUPT. (RENTER AT STEP 4) 03566000
  3744. * 03567000
  3745. * 8. IF PROPER ENDING STATUS, CE AND/OR DE, RETURN TO 03568000
  3746. * CALLER. ELSE RETURN TO CALLER. 03569000
  3747. * 03570000
  3748. * 9. IF THIS IS A DASD DEVICE CONTINUE, ELSE GO TO 03571000
  3749. * STEP 2. 03572000
  3750. * 03573000
  3751. * 10. DO A DIAGNOSE CALL TO VM/370 AND LET CP DO THE 03574000
  3752. * WORK. 03575000
  3753. * 03576000
  3754. * 11. IF ERROR GO TO THE ERROR ROUTINE, ELSE RETURN 03577000
  3755. * TO THE CALLER. 03578000
  3756. *. 03579000
  3757. ****************************************************************** 03580000
  3758. STARTIO STM R14,R4,SIOSAVE SAVE REGS 03581000
  3759. RETRYIO L R2,IOB GET IOB FROM CALLER @V56BDA8 03582000
  3760. TM IOBOPT,IOBSIO DO SIO'S FOR THIS DEVICE ? @V2A2063 03583000
  3761. BO RETSIO YES - BRANCH @V2A2063 03584000
  3762. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE ? 03585000
  3763. BE DIAGNOSE YES - LET CP DO THE WORK 03586000
  3764. RETSIO TM IOBSTAT,IOBSTACK IS AN IO ERROR STACKED FOR THIS UNIT 03587000
  3765. BO UNSTACK YES- BRANCH TO UNSTACK IT 03588000
  3766. RESTART ST R1,CAW SET UP CAW 03589000
  3767. XC CSW,CSW ZERO THE CSW 03590000
  3768. L R4,TRACEPT * TRACE ROUTINE 03591000
  3769. STM R1,R2,0(R4) * 03592000
  3770. STM R14,R15,8(R4) * 03593000
  3771. MVI 0(R4),C'S' * 03594000
  3772. LA R4,16(R4) * 03595000
  3773. CL R4,TRACEEND * 03596000
  3774. BL *+8 * 03597000
  3775. L R4,TRACEST * 03598000
  3776. ST R4,TRACEPT * 03599000
  3777. SIO 0(R2) 03600000
  3778. BC 4,CSWSTORE GO AND TEST STATUS 03601000
  3779. BC 2,IOWAIT BUSY -- WAIT FOR INTERRUPT. @VA01135 03602000
  3780. BC 1,NOTOPER GO TO THE NOT OPER ERROR ROUTINE 03603000
  3781. LA R2,0(,R2) INDICATE IO STARTED 03604000
  3782. ST R1,IOBCCW SAVE POINTER TO THE CCW STRING 03605000
  3783. IOWAIT LPSW IOWPSW INABLE IO INTERRUPTIONS 03606000
  3784. IOINT MVI IOOLD,X'01' TURN OFF ALL BUT EXTERNAL INTERRUPT 03607000
  3785. NI IOOLD+1,X'FD' TURN OFF WAIT BIT 03608000
  3786. LPSW IOOLD LOAD IO OLD PSW 03609000
  3787. CSWSTORE EQU * 03610000
  3788. TM CSW+4,BUSY IS THE UNIT BUSY 03611000
  3789. BZ LOOKATCE NO- GO LOOK AT CE 03612000
  3790. TM CSW+4,DE+ATTN+CUE+CE IS THIS ENDING STATUS 03613000
  3791. BNZ STUADD YES- BRANCH 03614000
  3792. LPSW IOWPSW WAIT FOR ENDING STATUS 03615000
  3793. LOOKATCE TM CSW+4,CE IS THIS CHANNEL END 03616000
  3794. BZ STUADD NO- BRANCH 03617000
  3795. LA R2,0(,R2) INDICATE IO STARTED 03618000
  3796. ST R1,IOBCCW POINT TO THE CCW STRING 03619000
  3797. LA R4,8(,R1) POINT TO THE FIRST CCW + 8 03620000
  3798. ST R4,CSW AND SAVE IT IN THE CSW 03621000
  3799. STUADD STH R2,IOOLD+2 POINT TO THE INTERRUPTING DEVICE 03622000
  3800. TESTATTN EQU * 03623000
  3801. L R4,TRACEPT * TRACE ROUTINE 03624000
  3802. MVC 0(16,R4),IOOLD * 03625000
  3803. MVI 0(R4),C'I' * 03626000
  3804. LA R4,16(,R4) * 03627000
  3805. CL R4,TRACEEND * 03628000
  3806. BL *+8 * 03629000
  3807. L R4,TRACEST * 03630000
  3808. ST R4,TRACEPT * 03631000
  3809. TESTSTAT TM CSW+5,X'FF' TEST ALL CHANNEL STATUS. IS IT ZERO? 03632000
  3810. BNZ IOERROR NO- ERROR 03633000
  3811. TM CSW+4,UC+UE+ATTN TEST UNIT STATUS, IS IT BAD? 03634000
  3812. BNZ IOERROR YES- ERROR 03635000
  3813. TESTDEV LR R4,R2 GET THE ADDRESS OF THE DEVICE WAITING FOR 03636000
  3814. TM CSW+4,X'20' IS THIS A CU END INT 03637000
  3815. BZ TESTADD NO- GO TEST THE ADD 03638000
  3816. LTR R2,R2 WAS THE UNIT STARTED @VA01134 03639000
  3817. BM RESTART NO-RESTART @VA01134 03640000
  3818. B IOWAIT GO WAIT FOR NEXT INTERRUPT @VA01134 03641000
  3819. TESTADD CLM R4,3,IOOLD+2 IS THIS THE DEVICE WAITING FOR 03642000
  3820. BNE IOWAIT NO- GO WAIT FOR THE NEXT INT 03643000
  3821. LTR R2,R2 WAS THE UNIT STARTED 03644000
  3822. BM RESTART NO- RESTART THE UNIT 03645000
  3823. TM IOBOPT,IOBDEW MUST I WAIT FOR DEVICE END 03646000
  3824. BZ TESTCE NO- BRANCH 03647000
  3825. TM CSW+4,DE IS IT DEVICE END 03648000
  3826. BC 1,SIORET YES- RETURN TO CALLER 03649000
  3827. LPSW IOWPSW WAIT FOR THE NEXT IO INTERRUPT 03650000
  3828. TESTCE TM CSW+4,CE+DE IS IT CHANEL END OR DEVICE END 03651000
  3829. BNZ SIORET YES- RETURN 03652000
  3830. LPSW IOWPSW WAIT 03653000
  3831. IOERROR CLC IOBUADD,IOOLD+2 IS THIS THE DEVICE I AM WORKING WITH 03654000
  3832. BNE STACK NO- BRANCH TO STACK THE IO ERROR 03655000
  3833. MVC IOBCSW(8),CSW MOVE IN CSW 03656000
  3834. UNSTACK NI IOBSTAT,255-IOBSTACK TURN IOBSTACK BIT OFF 03657000
  3835. LA R4,SENSECCW POINT TO SENSE CCW 03658000
  3836. ST R4,CAW SET UP CAW 03659000
  3837. XC SENSE,SENSE ZERO OUT SENSE 03660000
  3838. SIO 0(R2) DO A SENSE 03661000
  3839. TIO TIO 0(R2) CLEAR ANY INTERRUPT 03662000
  3840. BC 2,TIO LOOP IF CHANNEL IS BUSY 03663000
  3841. L R4,TRACEPT * TRACE ROUTINE 03664000
  3842. STM R1,R2,0(R4) * 03665000
  3843. MVC 8(8,R4),SENSE * 03666000
  3844. MVI 0(R4),C'E' * 03667000
  3845. LA R4,16(,R4) * 03668000
  3846. CL R4,TRACEEND * 03669000
  3847. BL *+8 * 03670000
  3848. L R4,TRACEST * 03671000
  3849. ST R4,TRACEPT * 03672000
  3850. LA R4,24 CALULATE NUMBER OF SENSE BYTES @V2B3729 03673000
  3851. SH R4,CSW+6 .. @V2B3729 03674000
  3852. STC R4,SNSCNT READ AND SAVE @V2B3729 03675000
  3853. L R4,IOBERROR GET THE ADDRESS OF THE ERROR ROUTINE 03676000
  3854. LTR R4,R4 DO I HAVE AN IO ERROR ROUTINE 03677000
  3855. BCR 7,R4 YES- GO TO IT 03678000
  3856. IORETURN TM IOBOPT,IOBEEXIT DO I REPEAT THE CCW STRING 03679000
  3857. BNO TESTSTOP NO- BRANCH 03680000
  3858. L R2,IOB SET UP TO REPEAT CCW STRING 03681000
  3859. TESTSTOP TM IOBOPT,IOBERST DO I STOP ON ERROR 03682000
  3860. BNO TESTST NO- BRANCH 03683000
  3861. LPSW IOWPSW 03684000
  3862. TESTST LTR R2,R2 IS DEVICE STARTED 03685000
  3863. BM RESTART NO- BRANCH TO START DEVICE 03686000
  3864. SIORET LM R14,R4,SIOSAVE RETURN REGS 03687000
  3865. BR R14 RETURN TO CALLER 03688000
  3866. DROP R15 03689000
  3867. USING IOB,R4 03690000
  3868. * REMEMBER - R15 STILL POINTS TO ACTIVE IOB. 03691000
  3869. STACK LA R4,INIOB 03692000
  3870. SCANIOBS CLC IOBUADD,IOOLD+2 IS THIS THE ERROR IOB 03693000
  3871. BNE UPDATE2 NO- BRANCH 03694000
  3872. MVC IOBCSW(8),CSW MOVE ERROR CSW INTO IOB 03695000
  3873. OI IOBSTAT,IOBSTACK TURN ON ERROR STACKED BIT 03696000
  3874. LPSW IOWPSW NOW WAIT FOR MY INTERRUP 03697000
  3875. UPDATE2 TM IOBSTAT,IOBLAST IS THIS THE LAST IOB 03698000
  3876. LA R4,IOBSIZE(,R4) POINT TO THE NEXT IOB 03699000
  3877. BNO SCANIOBS NO- BRANCH IF THIS IS NOT THE LAST IOB 03700000
  3878. * 1ST PASS => NO DEV. ADDR. MATCHED 'IOBUADD'. CHK POSSIBLE ENDING 03701000
  3879. * INT. ON TAPE 'REWIND-UNLOAD' OPERATION ON 'ALTERNATE' TAPE. 03702000
  3880. CLI CSW+4,CUE+DE+UC POSSIBILITY?? @VA01135 03703000
  3881. BNE IOWAIT NO - WAIT FOR INTERRUPT @VA01135 03704000
  3882. TM IOBSTAT-IOB(R15),IOBTPSWP YES - THIS IOB? @VA01135 03705000
  3883. BZ IOBSCN2 NO - LOCATE IOB @VA01135 03706000
  3884. CLC IOBATAPE-IOB(2,R15),IOOLD+2 THIS THE ONE?? @VA01624 03707000
  3885. BNE IOBSCN2 NO - FIND THE DEVICE @VA01135 03708000
  3886. NI IOBSTAT-IOB(R15),255-IOBTPSWP RESET FLAG. @VA01135 03709000
  3887. B RESTART RESTART I/O @VA01135 03710000
  3888. IOBSCN2 EQU * @VA01135 03711000
  3889. LA R4,INIOB START AT THE TOP @VA01135 03712000
  3890. TSTSWP EQU * @VA01135 03713000
  3891. TM IOBSTAT,IOBTPSWP THIS THE ONE MAYBE? @VA01135 03714000
  3892. BZ UPDATE5 NO - TRY NEXT @VA01135 03715000
  3893. CLC IOBATAPE,IOOLD+2 THIS THE ONE? @VA01135 03716000
  3894. BNE UPDATE5 NO @VA01135 03717000
  3895. NI IOBSTAT,255-IOBTPSWP YES - RESET THE FLAG @VA01135 03718000
  3896. LPSW IOWPSW AND WAIT FOR INT. ON ACT. IOB @VA01135 03719000
  3897. UPDATE5 EQU * @VA01135 03720000
  3898. TM IOBSTAT,IOBLAST THIS THE LAST IOB? @VA01135 03721000
  3899. LA R4,IOBSIZE(,R4) POINT TO NEXT IOB @VA01135 03722000
  3900. BNO TSTSWP NOT LAST - ANALYZE @VA01135 03723000
  3901. LPSW IOWPSW INTERRUP WAS NOT FROM A UNIT I X03724000
  3902. STARTED SO IGNORE IT AND WAIT FOR MINE 03725000
  3903. DROP R4 03726000
  3904. USING IOB,R15 03727000
  3905. NOTOPER L R15,SIOSAVE+4 RETURN THE IOB POINTER 03728000
  3906. OI IOBSTAT,IOBNOPER TURN ON THE NOT OPER BIT 03729000
  3907. L R4,IOBERROR GET THE ADDRESS OF THE IO ERROR ROUTINE 03730000
  3908. LTR R4,R4 IS THERE AN ERROR ROUTINE 03731000
  3909. BCR 2,R4 YES- GO TO IT 03732000
  3910. B DDR704 03733000
  3911. DIAGNOSE TM IOBCLASS,CLASTAPE+CLASDASD IS IT TAPE OR DASD 03734000
  3912. BZ RETSIO NO- RETURN TO SIO 03735000
  3913. MVI DEVBUCT+1,X'00' CLEAR BUSY COUNTER @VA10042 03735300
  3914. BUSYRTRY EQU * @VA10042 03735600
  3915. LR R3,R1 SET UP R3 FOR DIAG 03736000
  3916. L R4,TRACEPT * TRACE ROUTINE 03737000
  3917. STM R1,R2,0(R4) * 03738000
  3918. STM R14,R15,8(R4) * 03739000
  3919. MVI 0(R4),C'S' * 03740000
  3920. LA R4,16(R4) * 03741000
  3921. CL R4,TRACEEND * 03742000
  3922. BL *+8 * 03743000
  3923. L R4,TRACEST * 03744000
  3924. ST R4,TRACEPT * 03745000
  3925. SSM *+1 LOCK OUT CMS 03746000
  3926. ST R1,IOBCCW POINT TO THE CCW STRING 03747000
  3927. LA R2,0(,R2) INDICATE IO STARTED 03748000
  3928. DC X'83230020' DIAGNOSE CALL TO VM/370 03749000
  3929. BE SIORET IF CC = 0 ALL OK (RETURN TO CALLER) 03750000
  3930. L R4,TRACEPT * TRACE ROUTINE 03751000
  3931. ST R3,0(R4) * 03752000
  3932. ST R15,4(R4) * 03753000
  3933. MVC 8(8,R4),CSW * 03754000
  3934. MVI 0(R4),C'I' * 03755000
  3935. LA R4,16(,R4) * 03756000
  3936. CL R4,TRACEEND * 03757000
  3937. BL *+8 * 03758000
  3938. L R4,TRACEST * 03759000
  3939. ST R4,TRACEPT * 03760000
  3940. XC SENSE,SENSE CLEAN UP SENSE @VA12739 03760500
  3941. CL R15,=F'1' IS THE RETURN CODE 1 03761000
  3942. BE NOTOPER YES- THE UNIT IS NOT OPERATIONAL 03762000
  3943. CL R15,=F'5' BUSY OR INTPT. PENDING? @VA10042 03762100
  3944. BNE CKMOR NO-CONTINUE CHECK @VA10042 03762200
  3945. LA R4,1 @VA10042 03762300
  3946. AH R4,DEVBUCT ADD ONE TO BUSY COUNT @VA10042 03762400
  3947. STH R4,DEVBUCT STORE COUNT @VA10042 03762500
  3948. CLI DEVBUCT+1,20 HAVE WE GONE 20 TIMES? @VA10042 03762600
  3949. BH DDR705 YES-BUSY TOO LONG @VA10042 03762700
  3950. B BUSYRTRY @VA10042 03762800
  3951. CKMOR EQU * @VA10042 03762900
  3952. CL R15,=F'13' IS THE RETURN CODE 13 03763000
  3953. BNE RET NO- BRANCH 03764000
  3954. STH R3,SENSE SAVE THE SENSE 03766000
  3955. MVI SNSCNT,X'02' INDICATE 2 SENSE BYTES PRESENT @V2B3729 03767000
  3956. RET L R15,SIOSAVE+4 RETURN THE IOB POINTER 03768000
  3957. MVC IOBCSW(8),CSW MOVE IN THE CSW FROM CMS 03769000
  3958. L R4,IOBERROR GET THE ERROR ROUTINE POINTER 03770000
  3959. LTR R4,R4 DO I HAVE AN ERROR ROUTINE 03771000
  3960. BCR 2,R4 YES- GO TO IT 03772000
  3961. B SIORET NO- RETURN TO THE CALLER 03773000
  3962. EJECT 03774000
  3963. ******************************************************************** 03775000
  3964. GRAPHID EQU * @V200731 03776000
  3965. TM PARM,PARMGRP IS THE GRAPHIC INDICATOR ACTIVE ?@V200731 03777000
  3966. BZ STARTIO NO, GO START THE I/O REQUEST @V200731 03778000
  3967. STM R14,R5,GRAPHSAV SAVE THE REGISTERS @V200731 03779000
  3968. LR R4,R1 GET THE ADDRESS OF THE CCW STRING@V200731 03780000
  3969. GETCCW EQU * @V200731 03781000
  3970. LH R3,6(R4) GET THE DATA COUNT FROM THE CCW @V200731 03782000
  3971. STM R3,R4,SAVEAREA SAVE THE DATA REGISTERS @V200731 03783000
  3972. NI PARM,X'FF'-(PARMREA+PARMNDA) CLEAR THE READ @V200731 03784000
  3973. * REQUEST 03785000
  3974. * AND NO DATA INDICATOR 03786000
  3975. LA R2,5 SET THE LOOP COUNT @V200731 03787000
  3976. LA R1,TABLGRAP GET THE ADDRESS OF THE COMMAND @V200731 03788000
  3977. * OP TABLE 03789000
  3978. ICM R5,1,0(R4) GET THE OP CODE @V200731 03790000
  3979. CCWEXEC EQU * @V200731 03791000
  3980. EX R5,CLIP TEST THE COMMAND OP CODE WITH @V200731 03792000
  3981. * TABLE CODE 03793000
  3982. BE GRAPHADD YES, FOUND THE COMMAND OP CODE @V200731 03794000
  3983. LA R1,4(R1) UPDATE THE ADDRESS IN THE TABLE @V200731 03795000
  3984. BCT R2,CCWEXEC GO TEST THE NEXT OP CODE @V200731 03796000
  3985. B EXIT INVALID OP CODE - GO EXIT @V200731 03797000
  3986. CLIP CLI 0(R1),X'00' TEST THE OP CODE IN THE TABLE @V200731 03798000
  3987. GRAPHADD EQU * @V200731 03799000
  3988. ICM R2,7,1(R1) GET THE ADDRESS OF THE OP CODE @V200731 03800000
  3989. * ROUTINE 03801000
  3990. BR R2 GO TO THE ROUTINE @V200731 03802000
  3991. SPACE 2 03803000
  3992. READ66 EQU * @V200731 03804000
  3993. OI PARM,PARMREA+PARMATT INDICATE READ AND ATTENTION@V200731 03805000
  3994. * REQUESTS 03806000
  3995. LA R14,GRAPHIC0 RETURN ADDRESS FROM I/O HANDLER @V200731 03807000
  3996. XC BLNKLINE(140),BLNKLINE CLEAR THE READ AREA @VM08604 03808000
  3997. MVI IOBCSW+4,X'00' CLEAR THE CSW STATUS @V200731 03809000
  3998. XC RDMIDATA(6),RDMIDATA CLEAR THE READ DATA FIELD @V200731 03810000
  3999. MVC CPXYSTAT(20),REALABEL @V200731 03811000
  4000. LA R1,REQREAD GET THE ADDRESS OF THE CHANNEL @V200731 03812000
  4001. * PROGRAM 03813000
  4002. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 03814000
  4003. BZ STARTIO NO, GO ISSUE SIO @V200731 03815000
  4004. LA R1,REQREAD1 GET THE ADDRESS OF THE CHANNEL @V200731 03816000
  4005. * PROGRAM 03817000
  4006. B STARTIO GO TO THE I/O HANDLER @V200731 03818000
  4007. SPACE 2 03819000
  4008. WRT66 EQU * @V200731 03820000
  4009. MVC CPXYSTAT(20),RUNLABEL @V200731 03821000
  4010. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 03822000
  4011. BO YES3270 YES, GO TO 3270 SUPPORT @V200731 03823000
  4012. MVC WRT3066+1(3),1(R4) GET THE MESSAGE ADDRESS @V200731 03824000
  4013. STH R3,WRT3066+6 SAVE THE DATA COUNT IN THE CCW @V200731 03825000
  4014. LA R1,WRTCRTXY GET THE ADDRESS OF THE CHANNEL @V200731 03826000
  4015. * PROGRAM 03827000
  4016. TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 03828000
  4017. BZ GRAPWRT NO, GO TO SIO SECTION @V200731 03829000
  4018. LA R1,ERSE3066 GET THE ADDRESS OF THE CHANNEL @V200731 03830000
  4019. * PROGRAM 03831000
  4020. MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 03832000
  4021. GRAPWRT EQU * @V200731 03833000
  4022. LA R14,GRAPHIC1 RETURN ADDRESS FROM I/O HANDLER @V200731 03834000
  4023. B STARTIO GO TO THE I/O HANDLER @V200731 03835000
  4024. YES3270 EQU * @V200731 03836000
  4025. SR R14,R14 CLEAR REGISTER 14 @V200731 03837000
  4026. LA R1,WRTCRT70 GET THE ADDRESS OF THE CHANNEL @V200731 03838000
  4027. * PROGRAM 03839000
  4028. TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 03840000
  4029. BZ NOCL3270 NO, DON'T CLEAR SCREEN @V200731 03841000
  4030. MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 03842000
  4031. LA R1,ERSE3270 GET THE ADDRESS OF THE CHANNEL @V200731 03843000
  4032. * PROGRAM 03844000
  4033. NOCL3270 EQU * @V200731 03845000
  4034. IC R14,SBADDR GET THE CURRENT LINE POINTER @V200731 03846000
  4035. SLL R14,1 SETUP THE INDEX INTO THE TABLE @V200731 03847000
  4036. LH R14,TABLE70(R14) GET THE LINE ADDRESS @V200731 03848000
  4037. STCM R14,3,LAB3270+2 SAVE THE CURRENT LINE POINTER @V200731 03849000
  4038. MVC WRTCR70+1(3),1(R4) GET THE MESSAGE ADDRESS @V200731 03850000
  4039. STH R3,WRTCR70+6 SAVE THE BYTE COUNT IN THE CCW @V200731 03851000
  4040. B GRAPWRT GO GET THE RETURN ADDRESS @V200731 03852000
  4041. SPACE 2 03853000
  4042. GRAPHIC1 EQU * @V200731 03854000
  4043. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 03855000
  4044. NI PARM,X'FF'-PARMCLE CLEAR THE ERASE INDICATOR @V200731 03856000
  4045. SR R2,R2 CLEAR REGISTER 2 @V200731 03857000
  4046. IC R2,SBADDR GET THE Y COORDINATE @V200731 03858000
  4047. LA R2,1(R2) UPDATE THE Y COORDINATE @V200731 03859000
  4048. CH R3,=H'80' IS THE DATA COUNT LONGER THAN 1 @V200731 03860000
  4049. * LINE 03861000
  4050. BNH *+8 NO, GO SAVE Y COORDINATE @V200731 03862000
  4051. LA R2,1(R2) UPDATE THE Y COORDINATE AGAIN @V200731 03863000
  4052. STC R2,SBADDR SAVE THE Y COORDINATE @V200731 03864000
  4053. MH R2,=H'80' GET THE BYTE LENGTH @V200731 03865000
  4054. L R1,=F'2640' GET THE MAX. LENGTH @V200731 03866000
  4055. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 03867000
  4056. BZ TEST3066 NO, GO TEST FOR END OF CRT @V200731 03868000
  4057. L R1,MAXLEN GET THE MAX. LEN FOR 3270=1760 @V60A6B6 03869000
  4058. * MAXLEN FOR 3278 MOD2A=1440 03870000
  4059. TEST3066 EQU * @V200731 03871000
  4060. CR R2,R1 IS THE Y COORDINATE AT THE END @V200731 03872000
  4061. * OF THE 03873000
  4062. * CRT 03874000
  4063. BL RETWORD NO, CHECK FOR CMD CHAINING @VA08599 03875000
  4064. OI PARM,PARMATT SET THE ATTENTION REQUEST @V200731 03876000
  4065. MVI IOBCSW+4,X'00' CLEAR THE CSW STATUS @V200731 03877000
  4066. MVC CPXYSTAT(20),MORLABEL @V200731 03878000
  4067. LA R14,GRAPHIC3 RETURN ADDRESS FROM I/O HANDLER @V200731 03879000
  4068. LA R1,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 03880000
  4069. * PROGRAM 03881000
  4070. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 03882000
  4071. BZ STARTIO NO, GO ISSUE SIO @V200731 03883000
  4072. LA R1,MORECCW1 GET THE ADDRESS OF THE CHANNEL @V200731 03884000
  4073. * PROGRAM 03885000
  4074. B STARTIO GO ISSUE SIO @V200731 03886000
  4075. GRAPHIC3 EQU * @V200731 03887000
  4076. TM IOBCSW+4,ATTN IS THE ATTENTION FLAG ACTIVE ? @V200731 03888000
  4077. BZ GRAPPSW NO, GO WAIT FOR AN ATTENTION @V200731 03889000
  4078. * INTERRUPT 03890000
  4079. NI PARM,X'FF'-PARMATT CLEAR THE ATTENTION INDICATOR@V200731 03891000
  4080. CANCEL1 EQU * @V200731 03892000
  4081. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 03893000
  4082. MVI SBADDR,X'00' SET THE Y COORDINATE TO ZERO @V200731 03894000
  4083. MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 03895000
  4084. LA R1,CNCL3066 GET THE ADDRESS OF THE CHANNEL @V200731 03896000
  4085. * PROGRAM 03897000
  4086. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 03898000
  4087. BZ RETURNCN NO, GO GET RETURN ADDRESS @V200731 03899000
  4088. LA R1,CNCL3270 GET THE ADDRESS OF THE CHANNEL @V200731 03900000
  4089. * PROGRAM 03901000
  4090. RETURNCN EQU * @V200731 03902000
  4091. LA R14,READ66 GET THE ADDRESS OF THE READ @V200731 03903000
  4092. * SECTION 03904000
  4093. TM PARM,PARMREA IS THIS A READ REQUEST ? @V200731 03905000
  4094. BO STARTIO YES, GO TO THE I/O HANDLER @V200731 03906000
  4095. LA R14,RETWORD RETURN ADDRESS FROM I/O HANDLER @V200731 03907000
  4096. B STARTIO GO TO THE I/O HANDLER @V200731 03908000
  4097. SPACE 1 03909000
  4098. GRAPHIC0 EQU * @V200731 03910000
  4099. TM IOBCSW+4,ATTN IS THE ATTENTION FLAG ACTIVE ? @V200731 03911000
  4100. BO GRAPATTN YES, GO SETUP CCW FOR READ @V200731 03912000
  4101. * MANUAL INPUT 03913000
  4102. GRAPPSW EQU * @V200731 03914000
  4103. LPSW IOWPSW GO WAIT FOR INTERRUPT @V200731 03915000
  4104. SPACE 1 03916000
  4105. GRAPATTN EQU * @V200731 03917000
  4106. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 03918000
  4107. NI PARM,X'FF'-PARMATT CLEAR ATTENTION REQUEST @V200731 03919000
  4108. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 03920000
  4109. BO YES3270A YES, GO TO 3270 SUPPORT @V200731 03921000
  4110. STH R3,RD3066DA+6 STORE THE COUNT IN THE CCW @V200731 03922000
  4111. MVC RD3066DA+1(3),1(R4) MOVE THE ADDRESS OF THE READ@V200731 03923000
  4112. * BUFFER INTO THE CCW 03924000
  4113. LA R1,RDMI3066 GET THE ADDRESS OF THE CHANNEL @V200731 03925000
  4114. * PROGRAM 03926000
  4115. RETURNAD EQU * @V200731 03927000
  4116. LA R14,RET66MI RETURN ADDRESS FROM I/O HANDLER @V200731 03928000
  4117. B STARTIO GO TO THE I/O HANDLER @V200731 03929000
  4118. YES3270A EQU * @V200731 03930000
  4119. LA R1,6(R3) ADD 6 T0 THE TOTAL COUNT @V200731 03931000
  4120. STH R1,RD3270DA+6 STORE THE COUNT IN THE CCW @V200731 03932000
  4121. LA R1,BLNKLINE GET THE ADDRESS OF THE BUFFER @V200731 03933000
  4122. STCM R1,7,RD3270DA+1 MOVE THE ADDRESS OF THE READ @V200731 03934000
  4123. * BUFFER INTO THE CCW 03935000
  4124. LA R1,RDMI3270 GET THE ADDRESS OF THE CHANNEL @V200731 03936000
  4125. * PROGRAM 03937000
  4126. B RETURNAD GO GET THE RETURN ADDRESS @V200731 03938000
  4127. SPACE 2 03939000
  4128. RET66MI EQU * @V200731 03940000
  4129. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 03941000
  4130. MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 03942000
  4131. LA R1,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 03943000
  4132. * PROGRAM 03944000
  4133. LA R14,RETINPUT RETURN ADDRESS FROM I/O HANDLER @V200731 03945000
  4134. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 03946000
  4135. BO YES3270B YES, GO CHECK 3270 SUPPORT @V200731 03947000
  4136. TM RDMIDATA+2,X'40' DID THE OPERATOR HIT THE @V200731 03948000
  4137. * CANCEL KEY 03949000
  4138. BO CANCEL1 YES, GO CLEAR SCREEN @V200731 03950000
  4139. CLC RDMIDATA(2),SBAREAD DID THE CURSOR MOVE ? @V200731 03951000
  4140. BNE STARTIO YES, GO WRITE STATUS @V200731 03952000
  4141. OI PARM,PARMNDA SET INDICATOR FOR NO DATA @V200731 03953000
  4142. B STARTIO GO WRITE OUT STATUS @V200731 03954000
  4143. YES3270B EQU * @V200731 03955000
  4144. CLI BLNKLINE,X'6E' DID THE OPERATOR HIT THE CANCEL @V200731 03956000
  4145. * KEY 03957000
  4146. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 03958000
  4147. CLI BLNKLINE,X'6D' DID THE OPERATOR HIT THE CLEAR @V200731 03959000
  4148. * KEY 03960000
  4149. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 03961000
  4150. CLI BLNKLINE,X'6C' DID OPERATOR HIT PA1 KEY @V200731 03962000
  4151. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 03963000
  4152. OI PARM,PARMNDA SET INDICATOR FOR NO DATA @V200731 03964000
  4153. CLI BLNKLINE,X'01' DID OPERATOR HIT TEST REQ. KEY @VM08604 03965000
  4154. BE ENT3270 YES, GO WRITE STATUS @VM08604 03966000
  4155. CLI BLNKLINE,X'E6' IS THIS THE CARD READER @VM08604 03967000
  4156. BE ENT3270 YES, GO WRITE STATUS @VM08604 03968000
  4157. CLI BLNKLINE+6,X'00' DATA IN INPUT AREA ? @VM08604 03969000
  4158. BNE DATA3270 YES, GO DISPLAY DATA @VM08604 03970000
  4159. CLC BLNKLINE+1(2),ADDR5 DID CURSOR MOVE @V60A6B6 03971000
  4160. BE ENT3270 NO, GO WRITE STATUS @VM08604 03972000
  4161. DATA3270 EQU * @VM08604 03973000
  4162. NI PARM,X'FF'-PARMNDA SET INDICATOR FOR NO DATA @VM08604 03974000
  4163. ICM R1,7,1(R4) GET ADDRESS OF USER'S BUFFER 03975000
  4164. BCTR R3,R0 SUBTRACT ONE FROM COUNT 03976000
  4165. EX R3,MOV3270 MOVE DATA INTO USER'S BUFFER @VM08921 03977000
  4166. LA R3,1(,R3) UPDATE THE DATA COUNT @VM08921 03978000
  4167. MOVEBLNK EQU * @VM08921 03979000
  4168. OI 0(R1),X'40' SET UP FOR UPPERCASE LETTER @VM08921 03980000
  4169. LA R1,1(,R1) UPDATE THE BUFFER ADDRESS BY ONE @VM08921 03981000
  4170. BCT R3,MOVEBLNK GO SET CHARACTERS TO UPPERCASE @VM08921 03982000
  4171. ENT3270 EQU * @VM08921 03983000
  4172. LA R1,CRTWORD1 GET ADDR OF CHANNEL PROGRAM @VM08921 03984000
  4173. B STARTIO GO ISSUE SIO @VM08921 03985000
  4174. ********************************************************************** 03986000
  4175. MOV3270 MVC 0(0,R1),BLNKLINE+6 MOVE THE DATA INTO THE @V200731 03987000
  4176. * USER'S BUFFER 03988000
  4177. ********************************************************************* 03989000
  4178. SPACE 2 03990000
  4179. RETINPUT EQU * @V200731 03991000
  4180. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @VM08531 03992000
  4181. NI PARM,X'FF'-PARMREA TURN OFF READ REQUEST @VA12548 03992100
  4182. TM PARM,PARMNDA IS NO DATA INDICATED ? @VM08531 03993000
  4183. BZ WRT66 NO, GO DISPLAY INPUT ON CRT @VM08531 03994000
  4184. RETWORD EQU * @VM08531 03995000
  4185. TM 4(R4),CC IS COMMAND CHAINING ON ? @VM08531 03996000
  4186. LA R4,8(R4) UPDATE THE CCW ADDRESS TO NEXT @VM08531 03997000
  4187. * CCW 03998000
  4188. BO GETCCW YES, GET DATA COUNT FROM CCW @VM08531 03999000
  4189. LM R14,R5,GRAPHSAV GET CALLER'S REGISTERS @VM08531 04000000
  4190. BR R14 RETURN TO CALLER @VM08531 04001000
  4191. EJECT 04002000
  4192. ****************************************************************** 04003000
  4193. *. 04004000
  4194. * 25. INPUT CONTROL STATEMENT READ ROUTINE 04005000
  4195. * 04006000
  4196. * 1. IF THE INPUT IS FROM CARD OR A CMS FILE READ IT, 04007000
  4197. * ELSE READ FROM THE CONSOLE. 04008000
  4198. * 04009000
  4199. * 2. SCAN THE INPUT FOR AN AT SIGN, IF FOUND SHIFT THE 04010000
  4200. * BUFFER LEFT 2 BYTES FROM THE AT SIGN. 04011000
  4201. * 04012000
  4202. * 3. IF A CENT SIGN IS FOUND GO TO STEP 1. 04013000
  4203. * 04014000
  4204. * 4. RETURN TO THE CALLING ROUTINE. 04015000
  4205. *. 04016000
  4206. ****************************************************************** 04017000
  4207. READCONT STM R14,R2,REGSAVE2 SAVE REG'S 04018000
  4208. REREAD MVI CONTBUFF,C' ' * CLEAR CONTROL BUFFER 04019000
  4209. MVC CONTBUFF+1(71),CONTBUFF * TO BLANKS 04020000
  4210. TM DDRFLAG,CARDIN IS INPUT FROM CARD 04021000
  4211. BZ CONIN NO- BRANCH 04022000
  4212. CL R10,BAREMAC IS THIS CMS 04023000
  4213. BNE CMS3 YES- GO TO IT 04024000
  4214. LA R15,CARDIOB POINT TO THE CARD READER IOB 04025000
  4215. LA R1,CARDCCW POINT TO THE CCW 04026000
  4216. BAL R14,STARTIO READ IN CARD 04027000
  4217. B SCANDATA 04028000
  4218. CMS3 LA R1,INFCB POINT TO THE FCB 04029000
  4219. SVC 202 GO TO CMS 04030000
  4220. DC AL4(TESTEOF) POINTER TO THE ERROR ROUTINE 04031000
  4221. B SCANDATA RETURN IF NO ERROR 04032000
  4222. CONIN LA R15,CONIOB POINT TO THE CONSOLE IOB 04033000
  4223. LA R1,CONINCCW * POINT TO THE CCW STRING 04034000
  4224. CL R10,BAREMAC IS THIS CMS 04035000
  4225. BNE CMS4 YES- GO TO IT 04036000
  4226. BAL R14,GRAPHID READ IN CONTROL STATEMENT @V200731 04037000
  4227. SCANDATA LA R1,CONTBUFF * SET UP POINTERS TO CONTROL BUFFER 04038000
  4228. LA R2,72 * 04039000
  4229. STM R1,R2,CURPOINT * 04040000
  4230. NEXTBYTE CLI 0(R1),X'7C' TEST FOR CHARACTER DELEAT 04041000
  4231. BE BACKUP2 BRANCH IF EQ 04042000
  4232. CLI 0(R1),X'4A' TEST FOR LINE DELEAT 04043000
  4233. BE REREAD BRANCH IF EQ 04044000
  4234. LA R1,1(,R1) POINT TO THE NEXT BYTE 04045000
  4235. BCT R2,NEXTBYTE TEST EACH BYTE 04046000
  4236. LM R14,R2,REGSAVE2 RETURN REGS 04047000
  4237. BR R14 RETURN TO CALLER 04048000
  4238. BACKUP2 S R1,=F'1' SUB 1 04049000
  4239. C R1,CURPOINT DID I BACK UP PAST THE START 04050000
  4240. BL BACK1 YES- BRANCH 04051000
  4241. EX R2,MOVEBACK DELEAT THIS AND THE LAST CHARECTER 04052000
  4242. MVC CONTBUFF+70(2),BLANKS CLEAN UP THE LAST TWO BYTES 04053000
  4243. B NEXTBYTE GO CHECK IT OUT 04054000
  4244. BACK1 MVC CONTBUFF(71),CONTBUFF+1 SHIFT LEFT ONE BYTE 04055000
  4245. MVI CONTBUFF+71,C' ' CLEAN UP THE LAST BYTE 04056000
  4246. B SCANDATA RESET THE POINTERS 04057000
  4247. MOVEBACK MVC 0(0,R1),2(R1) SHIFT DATA LEFT TWO BYTES 04058000
  4248. READERR TM IOBSTAT,IOBNOPER IS THE NOT OPER BIT ON 04059000
  4249. BO DDR704 YES- BRANCH 04060000
  4250. TM IOBCSW+4,UE IS ERROR UNIT EXCEPTION 04061000
  4251. BO EOF YES- BRANCH 04062000
  4252. TM DDRFLAG,CARDEOF IS THE EOF BIT ON 04063000
  4253. BO EXIT YES- GO TO EOJ 04064000
  4254. TM SENSE,INTREQ IS IT INTERVENTION REQ 04065000
  4255. BO DDR710 YES- BRANCH 04066000
  4256. B DDR705 NO- GO PRINT ERROR 04067000
  4257. CMS4 LA R1,ENTERFCB POINT TO THE FCB 04068000
  4258. SVC 202 CALL CMS 04069000
  4259. DC AL4(ERROR4) ERROR RETURN 04070000
  4260. LA R1,CONRDFCB POINT TO THE FCB 04071000
  4261. SVC 202 GO TO CMS 04072000
  4262. DC AL4(ERROR2) POINTER TO THE ERROR ROUTINE 04073000
  4263. B SCANDATA 04074000
  4264. TESTEOF CL R15,=F'12' IS IT EOF 04075000
  4265. BNE ERROR3 NO- ERROR 04076000
  4266. EOF OI DDRFLAG,CARDEOF TURN ON END OF FILE BIT 04077000
  4267. BR R14 04078000
  4268. SPACE 3 04079000
  4269. ***************************************************************** 04080000
  4270. *. 04081000
  4271. * 26. ROUTINE TO SCAN CONTROL STATEMENT BUFFER FOR NEXT FIELD 04082000
  4272. * 04083000
  4273. * 1. IF END OF CARD, COL NUMBER 71, RETURN CC = 1. 04084000
  4274. * 04085000
  4275. * 2. FIND NEXT COLUMN NOT A COMMA OR BLANK, 04086000
  4276. * IF NONE RETURN CC = 1. 04087000
  4277. * 04088000
  4278. * 3. IF LEFT PERENTHIESIS RETURN CC = 2. 04089000
  4279. * 04090000
  4280. * 4. IF RIGHT PERENTHESIS RETURN CC = 3. 04091000
  4281. * 04092000
  4282. * 5. COUNT THE NUMBER OF CHARACTERS UNTIL THE NEXT 04093000
  4283. * BLANK, COMMA OR PERENTHESIS. 04094000
  4284. * 04095000
  4285. * 6. RETURN CC = 0. 04096000
  4286. *. 04097000
  4287. ****************************************************************** 04098000
  4288. SCANCONT STM R3,R4,SAVEREGS SAVE REG 04099000
  4289. L R1,CURPOINT 04100000
  4290. SR R2,R2 SET COUNT TO ZERO 04101000
  4291. L R3,CURCOUNT GET COUNT OF BYTES LEFT IN BUFFER 04102000
  4292. LTR R3,R3 IS IT ZERO 04103000
  4293. BZ SETCC1 YES END OF INPUT 04104000
  4294. LOOP5 CLI 0(R1),C' ' IS INPUT EQ BLANK 04105000
  4295. BE UPDATE3 YES- BRANCH 04106000
  4296. CLI 0(R1),C'(' IS IT EQU ( 04107000
  4297. BE SETCC2 YES- GO SET THE PARM CC 04108000
  4298. CLI 0(R1),C')' IS IT EQ TO ) 04109000
  4299. BE SETCC3 YES- BRANCH TO SET CONT CODE 04110000
  4300. CLI 0(R1),C',' IS INPUT EQ , 04111000
  4301. BNE UPDATE4 NO- BRANCH 04112000
  4302. UPDATE3 LA R1,1(,R1) UPDATE POINTER TO INPUT 04113000
  4303. BCT R3,LOOP5 BRANCH IF END OF CARD 04114000
  4304. B SETCC1 DO IT AGAIN 04115000
  4305. UPDATE4 OI 0(R1),C' ' SET TO UPPER CASE 04116000
  4306. LA R2,1(,R1) POINT TO INPUT 04117000
  4307. BCTR R3,0 SET UP COUNT 04118000
  4308. LOOP6 CLI 0(R2),C' ' IS INPUT A BLANK 04119000
  4309. BE SETCC0 YES- BRANCH 04120000
  4310. CLI 0(R2),C',' IS INPUT A , 04121000
  4311. BE SETCC0 YES- BRANCH 04122000
  4312. CLI 0(R2),C')' IS IT EQ TO ) 04123000
  4313. BE SETCC0 YES- BRANCH 04124000
  4314. OI 0(R2),C' ' CONVERT TO UPPER CASE 04125000
  4315. LA R2,1(,R2) POINT TO NEXT INPUT BYTE 04126000
  4316. BCT R3,LOOP6 DO IT AGAIN 04127000
  4317. SETCC0 ST R2,CURPOINT SET UP CURRENT POINTER 04128000
  4318. SR R2,R1 SET UP COUNT 04129000
  4319. TM *,X'00' SET CC = 0 04130000
  4320. RETURNCT ST R3,CURCOUNT SET UP REMAINING COUNT 04131000
  4321. LM R3,R4,SAVEREGS RETURN REG 04132000
  4322. STM R1,R2,OPADDCNT REMEMBER OPERAND ADDRESS & COUNT @VM01159 04133000
  4323. BR R14 RETURN TO CALLER 04134000
  4324. SETCC1 TM *,X'FF' SET CC = 1 (NO INPUT) 04135000
  4325. ST R1,CURPOINT SET UP CURRENT POINTER 04136000
  4326. B RETURNCT 04137000
  4327. SETCC2 CLI *,X'00' SET CC = 2 04138000
  4328. B UPOINT 04139000
  4329. SETCC3 TM *,X'91' SET CC = 3 04140000
  4330. UPOINT LA R1,1(,R1) ADD ONE TO THE POINTER 04141000
  4331. BCTR R3,0 -1 FROM THE COUNT 04142000
  4332. ST R1,CURPOINT SAVE THE POINTER 04143000
  4333. B RETURNCT 04144000
  4334. SPACE 04145000
  4335. OPADDCNT DC 2F'0' REMEMBER OPERAND ADDRESS & COUNT @VM01159 04146000
  4336. EJECT 04147000
  4337. ****************************************************************** 04148000
  4338. *. 04149000
  4339. * 27. MESSAGE WRITER SUBROUTINE 04150000
  4340. * 04151000
  4341. * 1. IF UNDER CMS USE SVC 202 ELSE SET 04152000
  4342. * UP THE CCW AND CALL STARTIO. 04153000
  4343. * 04154000
  4344. * 2. RETURN USING R5. 04155000
  4345. *. 04156000
  4346. ****************************************************************** 04157000
  4347. MSGWRITE CL R10,BAREMAC IS THIS A BARE MACHINE 04158000
  4348. BNE CMS5 04159000
  4349. LH R1,0(,R2) MSG LENGTH INTO R1 @VA01388 04160000
  4350. LA R2,2(,R2) MSG TEXT ADDR INTO R2 @VA01388 04161000
  4351. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE? @VA01388 04162000
  4352. BNE NODIAG NO, DON'T EDIT THE MSG @VA01388 04163000
  4353. CLC 0(3,R2),=C'DMK' IS THIS AN ERROR MSG? @VA01388 04164000
  4354. BNE NODIAG NO, DON'T EDIT THE MSG @VA01388 04165000
  4355. DC X'83',X'21',XL2'005C' YES, DO DIAGNOSE TO EDIT @VA01388 04166000
  4356. * MSG ACCORDING TO USER'S EMSG SETTING 04167000
  4357. LTR R1,R1 LENGTH OF 0 (I.E., EMSG OFF)? @VA01388 04168000
  4358. BCR 8,R14 YES, NO MSG TO SEND. JUST RETURN.@VA01388 04169000
  4359. NODIAG STH R1,CONCCW+6 BUILD CCWS: LENGTH @VA01388 04170000
  4360. ICM R2,8,=X'09' WRITE OP CODE @VA01388 04171000
  4361. ST R2,CONCCW * 04172000
  4362. LA R15,CONIOB POINT TO THE IOB 04173000
  4363. LA R1,CONCCW POINT AT OUTPUT CCW 04174000
  4364. B GRAPHID GO TO START I/O ROUTINE (RETURN @V200731 04175000
  4365. * ON R14) 04176000
  4366. CMS5 SSM =4X'FF' LET CMS CLEAR THE LAST INT 04177000
  4367. CLC 2(3,R2),=C'DMK' IS THIS AN ERROR MSG 04178000
  4368. BE CMSERMSG YES- GO TO ERROR MSG ROUTINE 04179000
  4369. LA R1,2(,R2) POINT TO THE MSG TEXT 04180000
  4370. LH R2,0(R2) GET THE LENGTH 04181000
  4371. CMS6 STCM R1,7,CONFCB+9 SET UP POINTER TO MSG IN FCB 04182000
  4372. STH R2,CONFCB+14 SET UP THE MSG LENGTH ALSO 04183000
  4373. LA R1,CONFCB POINT TO THE FCB 04184000
  4374. SVC 202 GO TO CMS 04185000
  4375. DC AL4(ERROR4) ERROR RETURN 04186000
  4376. BR R14 RETURN TO CALLER 04187000
  4377. CMSERMSG LA R2,1(,R2) POINT TO A ONE BYTE COUNT AND THE TEXT 04188000
  4378. LINEDIT DISP=ERRMSG,TEXTA=(R2),RENT=NO,DOT=NO 04189000
  4379. BR R14 RETURN TO THE CALLER 04190000
  4380. PRINTBUF OI DDRFLAG,ERROR TURN ON THE ERROR SWITCH 04191000
  4381. TM DDRFLAG,CARDIN IS THIS CARD INPUT 04192000
  4382. BCR 8,R14 NO- RETURN (DO NOT PRINT INPUT LINE) 04193000
  4383. LA R2,CONTBUFF+71 * BUILD CCW, DO NOT PRINT 04194000
  4384. LOOP7 CLI 0(R2),C' ' * TRAILING BLANKS. IF BUFFER 04195000
  4385. BNE SETCOUNT * IS ALL BLANKS RETURN TO 04196000
  4386. BCT R2,LOOP7 * CALLER. (USING R14) 04197000
  4387. SETCOUNT S R2,=A(CONTBUFF-1) * 04198000
  4388. BCR 13,R14 * 04199000
  4389. LA R1,CONTBUFF * 04200000
  4390. CL R10,BAREMAC * 04201000
  4391. BNE CMS6 * 04202000
  4392. STCM R1,7,CONCCW+1 * 04203000
  4393. STH R2,CONCCW+6 * 04204000
  4394. LA R15,CONIOB POINT TO THE IOB 04205000
  4395. LA R1,CONCCW * POINT TO THE IOB 04206000
  4396. B GRAPHID GO TO START I/O ROUTINE (RETURN @V200731 04207000
  4397. * ON R14) 04208000
  4398. CONERROR EQU * @V200731 04209000
  4399. TM IOBCSW+4,ATTN IS THIS AN ATTENTION INTERRUPT ? @V200731 04210000
  4400. BNO CONUNITE NO, GO CHECK FOR UNIT EXECPTION @V200731 04211000
  4401. TM PARM,PARMGRP IS THE GRAPHIC SUPPORT ACTIVE ? @V200731 04212000
  4402. BZ DDRCARD NO, GO CLEAR CARD FLAG @V200731 04213000
  4403. TM PARM,PARMATT IS THIS A ATTENTION REQUEST ? @V200731 04214000
  4404. BCR 1,R14 YES, GO CHECK FOR ATTENTION @V200731 04215000
  4405. * INTERRUPT 04216000
  4406. B CONUNITE GO CHECK FOR UNIT CHECK @V200731 04217000
  4407. DDRCARD EQU * @V200731 04218000
  4408. NI DDRFLAG,255-CARDIN CLEAR CARD FLAG @V200731 04219000
  4409. B STARTNEW GO READ THE CONSOLE INPUT @V200731 04220000
  4410. CONUNITE EQU * @V200731 04221000
  4411. TM IOBCSW+4,UE IS THIS A UNIT EXECPTION ? @V200731 04222000
  4412. BZ CKCMDR NO - CHK FURTHER @VM01077 04223000
  4413. MVI CONTBUFF,C' ' YES - 'CANCEL' HIT - CLEAR @VM01077 04224000
  4414. MVC CONTBUFF+1(71),CONTBUFF THE BUFFER @VM01077 04225000
  4415. B NOERROR & RETURN TO DO THE I/O @VM01077 04226000
  4416. CKCMDR EQU * @VM01077 04227000
  4417. TM SENSE,X'80' COMMAND REJECT 04228000
  4418. BNO ERRORCT NO- BRANCH 04229000
  4419. B EXIT YES - BAD @VA01388 04230000
  4420. NOERROR LM R14,R4,SIOSAVE RETURN THE STARTIO REG'S 04231000
  4421. B STARTIO GO RESTART 04232000
  4422. ERRORCT ICM R4,3,CONERCT GET THE ERROR COUNT 04233000
  4423. BM EXIT IF OVER 20 ERRORS GO TO EXIT 04234000
  4424. BCT R4,RETCON IS IT ZERO 04235000
  4425. STH R4,CONERCT SAVE THE ERROR COUNT 04236000
  4426. OI DDRFLAG,ERROR TURN ON THE ERROR FLAG 04237000
  4427. B DDR705 PRINT OUT ERROR 04238000
  4428. RETCON STH R4,CONERCT SAVE COUNT 04239000
  4429. B IORETURN RETURN TO START IO ROUTINE 04240000
  4430. SPACE 04241000
  4431. ***** MESSAGE TABLE 04242000
  4432. SPACE 04243000
  4433. DDR700 OI DDRFLAG,ERROR TURN ON THE ERROR FLAG 04244000
  4434. MSG 'DMKDDR700E INPUT UNIT IS NOT A CPVOL',DDR700A 04245000
  4435. DDR700A LA R14,GETEXT SET UP RETURN ADDRESS 04246000
  4436. B MSG003 GO TO MSG003 04247000
  4437. DDR701 MVI DDR701A+39,C' ' * BLANK IT OUT 04248000
  4438. MVC DDR701A+40(11),DDR701A+39 * 04249000
  4439. LM R1,R2,OPADDCNT RECOVER OPERAND ADDRESS & COUNT @VM01159 04250000
  4440. LTR R2,R2 ENSURE COUNT NOT ZERO (OR MINUS) @VM01159 04251000
  4441. BNP DDR701AA IF NOT > 0, DON'T DO ANY MOVING. @VM01159 04252000
  4442. CL R2,=F'12' IS IT OVER 12 04253000
  4443. BNH MOVE NO- BRANCH 04254000
  4444. LA R2,12 SET COUNT TO 12 04255000
  4445. MOVE MOVE DDR701A+39 MOVE IN ERROR WORD 04256000
  4446. DDR701AA BAL R14,PRINTBUF PRINT OUT CARD-IMAGE @VM01159 04257000
  4447. DDR701A MSG 'DMKDDR701E INVALID OPERAND - XXXXXXXXXXXX',GTCARD 04258000
  4448. DDR702 BAL R14,PRINTBUF PRINT OUT ERROR CARD 04259000
  4449. MSG 'DMKDDR702E CONTROL STATEMENT SEQUENCE ERROR', @VM08514X04260000
  4450. GTCARD @VM08514 04261000
  4451. DDR703 BAL R14,PRINTBUF PRINT OUT ERROR CARD 04262000
  4452. MSG 'DMKDDR703E OPERAND MISSING',GTCARD 04263000
  4453. DDR704 NI IOBSTAT,255-IOBNOPER TURN OFF NOT OPERATIONAL BIT 04264000
  4454. LA R1,DDR704A+21 SET UP POINTER TO FIELD @VA04550 04265000
  4455. STH R2,0(,R1) SAVE DATA TO BE CONVERTED 04266000
  4456. LA R2,2 SET UP COUNT 04267000
  4457. BAL R14,DECCONV 04268000
  4458. OI DDRFLAG,ERROR TURN ON THE ERROR SWITCH 04269000
  4459. LA R14,STARTNEW NORMAL RESUME POINT @VA04550 04270000
  4460. C R15,=A(CARDIOB) WE WORKING WITH THE RDR?? @VA04550 04271000
  4461. BNE DDR704A NOPE - @VA04550 04272000
  4462. LA R14,MSG002A YES - WILL ASK FOR A NEW ADDR @VA04550 04273000
  4463. * RESET ERROR, CARDIN, AND VLDRDR FLAGS SO WE CAN TRY FOR 04274000
  4464. NI DDRFLAG,255-(VLDRDR+CARDIN+ERROR) A NEW ADDR. @VA04550 04275000
  4465. DDR704A MSG 'DMKDDR704E DEV XXXX NOT OPERATIONAL' @VA04550 04276000
  4466. DDR705 LA R1,DDR705A1+26 MOVE IN CONVERTED IO ADDRESS @V2B3729 04277000
  4467. MVC 0(2,R1),IOBUADD * 04278000
  4468. LA R2,2 * 04279000
  4469. BAL R14,DECCONV * 04280000
  4470. LA R1,DDR705A1+35 CONVERT CSW @V2B3729 04281000
  4471. MVC 0(8,R1),IOBCSW .. @V2B3729 04282000
  4472. LA R2,8 .. @V2B3729 04283000
  4473. BAL R14,DECCONV @V2B3729 04284000
  4474. LA R1,SENSE CONVERT SENSE @V2B3729 04285000
  4475. LA R2,24 .. @V2B3729 04286000
  4476. BAL R14,DECCONV .. @V2B3729 04287000
  4477. MVC DDR705A1+58(12),SENSE MOVE SENSE BYTES TO MSG @V2B3729 04288000
  4478. MVC DDR705AA+6(36),SENSE+12 .. @V2B3729 04289000
  4479. TM IOBCLASS,CLASDASD+CLASTAPE+CLASTERM RDR OR PUN? @V2A2063 04290000
  4480. BNZ NOTUR NOPE @V2A2063 04291000
  4481. MVC ERSAVE(28),SIOSAVE SAVE THE STARTIO REGS 04292000
  4482. BAL R14,DDR705A1 TYPE THE MSG 04293000
  4483. TM DDRFLAG,CARDIN CARD INPUT?? @VA04550 04294000
  4484. BZ RST705 NO - GO RETRY THE TASK @VA04550 04295000
  4485. L R15,ERSAVE+4 RETRIEVE ORIG. IOB POINTER @VA04550 04296000
  4486. C R15,=A(CARDIOB) THIS A RDR ERROR? @VA04550 04297000
  4487. BNE RST705 NOPE @VA04550 04298000
  4488. TM DDRFLAG,VLDRDR VALID RDR ADDR YET?? @VA04550 04299000
  4489. BO RST705 YES - RETRY THE OPERATION @VA04550 04300000
  4490. NI DDRFLAG,255-CARDIN RESET THE CARD INPUT FLAG @VA04550 04301000
  4491. B MSG002A ASK FOR A NEW RDR ADDR @VA04550 04302000
  4492. RST705 EQU * @VA04550 04303000
  4493. LM R14,R4,ERSAVE RETURN THE STARTIO REGS 04304000
  4494. B STARTIO RESTART THE IO OPERATION 04305000
  4495. NOTUR LA R1,DDR705B+16 * CONVERT INADD 04306000
  4496. MVC 0(6,R1),INADD * 04307000
  4497. LA R2,6 * 04308000
  4498. BAL R14,DECCONV * 04309000
  4499. LA R1,DDR705B+36 * CONVERT OUTADD 04310000
  4500. MVC 0(6,R1),OUTADD * 04311000
  4501. LA R2,6 * 04312000
  4502. BAL R14,DECCONV * 04313000
  4503. LA R1,DDR705B+53 * CONVERT CCW 04314000
  4504. MVC 0(8,R1),0(R5) * 04315000
  4505. LA R2,8 * 04316000
  4506. BAL R14,DECCONV * 04317000
  4507. MVC ERRORRET,=F'4' SET THE CMS RETURN CODE TO 4 04318000
  4508. CLI SNSCNT,2 DIAGNOSE I/O ? @V2B3729 04319000
  4509. BNE WRBAL NO, @V2B3729 04320000
  4510. MVC DDR705A1+62(8),BLANKS BLANK LAST 4 BYTES @V2B3729 04321000
  4511. WRBAL BAL R14,DDR705A1 WRITE ERROR MSG @V2B3729 04322000
  4512. CLI SNSCNT,X'06' SENSE BYTE > 6 ?? @V2B3729 04323000
  4513. BNH DDR705B NO, WRITE ONE MESSAGE @V2B3729 04324000
  4514. BAL R14,DDR705AA WRITE SENSE MSG @V2B3729 04325000
  4515. B DDR705B WRITE MSG @V2B3729 04326000
  4516. DDR705A1 MSG 'DMKDDR705E IO ERROR XXXX CSW XXXXXXXXXXXXXXXX SENSE XXX*04327000
  4517. XXXXXXXXX' 04328000
  4518. DDR705AA MSG 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' @V2B3729 04329000
  4519. DDR705B MSG 'INPUT XXXXXXXXXXXX OUTPUT XXXXXXXXXXXX CCW XXXXXXXXXXXXX04330000
  4520. XXXX',CLOSEJOB 04331000
  4521. DDR756 MVC DDR756A+41(8),PROOLD MOVE IN OLD PSW AND CONVERT@V305435 04332000
  4522. LA R1,DDR756A+41 * IT TO DECIMAL @V305435 04333000
  4523. LA R2,8 * 04334000
  4524. BAL R14,DECCONV * 04335000
  4525. OI DDRFLAG,ERROR TURN ON THE ERROR SWITCH 04336000
  4526. DDR756A MSG 'DMKDDR756E PROGRAM CHECK PSW = XXXXXXXXXXXXXXXX' 04337000
  4527. DDR707 OI DDRFLAG,ERROR TURN ON THE ERROR SWITCH 04338000
  4528. MSG 'DMKDDR707E MACHINE CHECK RUN SEREP AND SAVE OUTPUT FOR X04339000
  4529. CE',EXIT 04340000
  4530. PREDR708 DS 0H @VA13582 04341010
  4531. CL R15,=A(OUTIOB) IS AN OUT DEF. ERROR @VA13582 04341020
  4532. BNE ERINMSG IF NOT BRANCH @VA13582 04341030
  4533. OI DDRFLAG3,OUTERROR SET OUT ERROR FLAG @VA13582 04341040
  4534. DDR708 DS 0H @VA13582 04341050
  4535. OI DDRFLAG,ERROR TURN ON THE ERROR SWITCH 04341060
  4536. MSG 'DMKDDR708E INVALID INPUT OR OUTPUT DEFINITION',STRGAIN 04341070
  4537. ERINMSG DS 0H @VA13582 04341080
  4538. OI DDRFLAG3,INERROR SET IN ERROR FLAG @VA13582 04341090
  4539. B DDR708 GO WRITE MSG @VA13582 04341100
  4540. STRGAIN DS 0H @VA13582 04341110
  4541. TM DDRFLAG,CARDIN IS THIS A CARD INPUT @VA13582 04341120
  4542. BO GTCARD GO TO SCAN OTHER @VA13582 04341130
  4543. B STARTNEW BEGIN AGAIN @VA13582 04341140
  4544. DDR709 MSG 'DMKDDR709E WRONG INPUT TAPE MOUNTED',CLOSERET 04343000
  4545. DDR710 STM R2,R3,IOBSAVE SAVE IOB REGS 04344000
  4546. MVC IRSAVE(28),SIOSAVE SAVE START IO REGS @VA12496 04345010
  4547. WAITINT LA R1,DDR710A+22 POINT AT DATA TO BE CONVERTED 04346000
  4548. MVC 0(2,R1),IOBSAVE+2 MOVE IN THE UNIT ADD 04347000
  4549. LA R2,2 SET UP COUNT 04348000
  4550. BAL R14,DECCONV CONVERT DATA 04349000
  4551. BAL R14,DDR710A SET UP RETURN ADDRESS 04350000
  4552. LM R14,R4,IRSAVE RETURN STARTIO REGS 04351000
  4553. STM R14,R4,SIOSAVE * FAKE A START IO AND WAIT FOR THE 04352000
  4554. LM R2,R3,IOBSAVE * IO INTERRUPT FROM THE IO UNIT 04353000
  4555. B IOWAIT * REQUIRING INTERVENTION 04354000
  4556. DDR710A MSG 'DMKDDR710A DEV XXXX INTERVENTION REQUIRED' 04355000
  4557. DDR711 MVC DDR711A+35(6),VOL1BUFF+4 MOVE IN LABLE 04356000
  4558. MVC DDR711A+46(6),IOBVSER IOB LABEL ALSO 04357000
  4559. LA R2,42 SET UP TO TYPE FULL MSG 04358000
  4560. CLC DDR711A+46(6),BLANKS VOLID = BLANKS 04359000
  4561. BNE *+8 NO- TYPE THE FULL MSG 04360000
  4562. LA R2,31 SET COUNT TO SHORT MSG (DROP THE NOT) 04361000
  4563. STH R2,DDR711A+8 SET UP THE COUNT 04362000
  4564. MVI MSGFLAG,X'F1' INDICATE DMKDDR711 ISSUED @VA03507 04363000
  4565. DDR711A MSG 'DMKDDR711R VOLID READ IS XXXXXX NOT XXXXXX',OPENER 04364000
  4566. * @VA03507 04365000
  4567. DDR712 OI DDRFLAG,ERROR TURN ON THE ERROR SWITCH 04366000
  4568. MSG 'DMKDDR712E NUMBER OF EXTENTS EXCEEDS 20', @VM08514X04367000
  4569. CLOSEJOB @VM08514 04368000
  4570. DDR713 ST R14,SAVERET SAVE THE RETURN ADD 04369000
  4571. BAL R14,PRINTBUF GO PRINT THE CARD 04370000
  4572. L R14,SAVERET RETURN THE RETURN ADD 04371000
  4573. MSG 'DMKDDR713E OVERLAPPING OR INVALID EXTENTS' 04372000
  4574. DDR714 MVC DDR714A+28(6),INADD SET UP RECORD ID 04373000
  4575. LA R1,DDR714A+28 POINT TO DATA TO BE CONVERTED 04374000
  4576. LA R2,6 SET UP COUNT 04375000
  4577. BAL R14,DECCONV CONVERT TO DECIMAL 04376000
  4578. OI DDRFLAG,ERROR TURN ON THE ERROR SWITCH 04377000
  4579. DDR714A MSG 'DMKDDR714E RECORD XXXXXXXXXXXX NOT FOUND ON INPUT TAPE'X04378000
  4580. ,CLOSEJOB 04379000
  4581. DDR715 ST R14,SAVERET SAVE THE RETURN ADDRESS 04380000
  4582. LA R1,DDR715A+26 POINT TO THE DASD ADDRESS 'BBCCHH' 04381000
  4583. MVC 0(2,R1),INADD SET UP THE 'BB' OF THE ADDRESS 04382000
  4584. MVC 2(4,R1),THRHADD+1 SET UP THE 'CCHH' OF THE ADDRESS 04383000
  4585. LA R2,6 SET UP LENGTH 04384000
  4586. BAL R14,DECCONV CONVERT IT TO DECIMAL 04385000
  4587. MVC ERRORRET,=F'3' SET UP AN ERROR RETURN OF 3 04386000
  4588. L R14,SAVERET RETURN THE RETURN ADDRESS 04387000
  4589. DDR715A MSG 'DMKDDR715E LOCATION XXXXXXXXXXXX IS A FLAGGED TRACK' 04388000
  4590. DDR716 CLI DASDERCT+1,10 HAVE I HAD 10 ERRRORS 04389000
  4591. BH BADPACK YES- ERROR 04390000
  4592. TM SENSE+1,X'08' IS IT NO RECORD FOUND 04391000
  4593. BZ INOUTER NO- BRANCH TO THE ERROR ROUTINE 04392000
  4594. LA R1,R3CCW POINT TO THE READ RECORD 3 CCW STRING 04393000
  4595. CL R1,IOBCCW WAS I WORKING WITH R3 04394000
  4596. BE BADPACK YES- BRANCH LOOPING 04395000
  4597. B RETRYIO NO VOL1 REC SO LOOK FOR REC3 AND @V56BDA8 04396000
  4598. * READ IT. 04397000
  4599. BADPACK LA R1,INOUTER POINT TO THE ERROR ROUTINE 04398000
  4600. ST R1,IOBERROR AND SAVE IT 04399000
  4601. TM IOBSTAT,IOBSCRAT IS THIS A SCRATCH VOL 04400000
  4602. BO OPENCOMP YES- ALL SET 04401000
  4603. MVC DDR716A+45(6),IOBVSER MOVE IN THE VOL SER NO 04402000
  4604. LA R2,41 SET UP TO TYPE FULL MSG 04403000
  4605. CLC DDR716A+45(6),BLANKS VOLID = BLANKS 04404000
  4606. BNE *+8 NO- TYPE THE FULL MSG 04405000
  4607. LA R2,30 SET COUNT TO SHORT MSG (DROP THE FOR) 04406000
  4608. STH R2,DDR716A+8 SET UP THE COUNT 04407000
  4609. DDR716A MSG 'DMKDDR716R NO VOL1 LABEL FOUND FOR XXXXXX',OPENER 04408000
  4610. DDR717 MVC DDR717A+34(6),VHRVSER MOVE IN THE FROM V SER 04409000
  4611. MVC DDR717A+59(6),OUTIOB+(IOBVSER-IOB) MOVE IN TO V SER 04410000
  4612. DDR717A MSG 'DMKDDR717R DATA DUMPED FROM XXXXXX TO BE RESTORED TO XXX04411000
  4613. XXXX' 04412000
  4614. DDR718 STM R1,R2,IOBSAVE SAVE IOB REGS 04413000
  4615. MVC IRSAVE(28),SIOSAVE SAVE STARTIO REGS 04414000
  4616. LA R1,RUNCCW POINT TO THE RUN CCW 04415000
  4617. BAL R14,STARTIO REWIND UNLOAD THE TAPE 04416000
  4618. BAL R14,DDR718A PRINT MSG 04417000
  4619. LM R14,R4,IRSAVE RETURN START IO REGS 04418000
  4620. LM R1,R2,IOBSAVE RETURN THE CCW POINTER 04419000
  4621. B STARTIO RESTART (DO NOT CHANGE R14) 04420000
  4622. DDR718A MSG 'DMKDDR718E OUTPUT UNIT IS FILE PROTECTED' 04421000
  4623. DDR719 MVC ERRORRET,=F'1' SET THE RETURN CODE TO 1 04422000
  4624. MSG 'DMKDDR719E INVALID FILENAME OR FILE NOT FOUND',EXIT 04423000
  4625. ERROR4 LA R15,100(,R15) ADD 100 TO THE ERROR RETURN CODE 04424000
  4626. ERROR3 LA R15,100(,R15) ADD 100 TO THE ERROR RETURN CODE 04425000
  4627. ERROR2 LA R15,100(,R15) ADD 100 TO THE ERROR RETURN CODE 04426000
  4628. ERROR1 LA R15,100(,R15) ADD 100 TO THE ERROR RETURN CODE 04427000
  4629. CL R15,=F'102' CH 12 ON V3211 OR V3203?? @V386298 04428000
  4630. BE NEXTCCW YES - GET NEXT CCW @VA01298 04429000
  4631. CL R15,=F'103' CH 9 ON V3211 OR V3203?? @V386298 04430000
  4632. BE NEXTCCW YES - GET NEXT CCW @VA01298 04431000
  4633. ST R15,ERRORRET 04432000
  4634. MVC DDR720+30(8),0(R1) MOVE IN THE CMS ROUTINE NAME 04433000
  4635. DDR720 MSG 'DMKDDR720E ERROR IN XXXXXXXX',EXIT 04434000
  4636. DDR721 MVC DDR721A+28(5),PSTOPCC MOVE IN THE STOP ADD 04435000
  4637. LA R1,DDR721A+28 POINT TO THE DATA 04436000
  4638. LA R2,5 SET UP THE COUNT 04437000
  4639. BAL R14,DECCONV GO CONVERT THE ADD 04438000
  4640. DDR721A MSG 'DMKDDR721E RECORD XXXXXXXXXX NOT FOUND',EOJ 04439000
  4641. DDR722 OI DDRFLAG,ERROR TURN ON THE ERROR BIT (NUC) 04440000
  4642. MSG 'DMKDDR722E OUTPUT UNIT NOT PROPERLY FORMATED FOR THE CP*04441000
  4643. NUCLEUS',STARTNEW (NUC) 04442000
  4644. DDR723 OI DDRFLAG,ERROR TURN ON THE ERROR BIT (NUC) 04443000
  4645. MSG 'DMKDDR723E NO VALID CP NUCLEUS ON THE INPUT UNIT',START*04444000
  4646. NEW (NUC) 04445000
  4647. DDR724 OI DDRFLAG,ERROR TURN ON THE ERROR BIT (NUC) 04446000
  4648. MSG 'DMKDDR724E INPUT TAPE CONTAINS A CP NUCLEUS DUMP',CLOSE*04447000
  4649. JOB (NUC) 04448000
  4650. DDR725 EQU * @V2A2063 04449000
  4651. MSG 'DMKDDR725R DASD INPUT DEVICE WAS(IS) LARGER THAN OUTPUTX04450000
  4652. DEVICE' @VA03326 04451000
  4653. DDR726 ST R14,SAVERET SAVE THE RETURN ADDR. @V56BDA8 04452000
  4654. BAL R14,PRINTBUF PRINT OUT ERROR CARD. @V56BDA8 04453000
  4655. L R14,SAVERET RESTORE RETURN ADDR. @V56BDA8 04454000
  4656. MSG 'DMKDDR726E MOVING DATA INTO THE ALTERNATE TRACK CYLINDE*04455000
  4657. R(S) IS PROHIBITED.' 04456000
  4658. DDR727 DS 0H @V56BDA8 04457000
  4659. ST R14,SAVERET SAVE THE RETURN ADDRESS. @V56BDA8 04458000
  4660. LA R1,DDR727A+29 POINT TO DASD 'BBCCHH' ADDRESS. @V56BDA8 04459000
  4661. XC 0(L2,R1),0(R1) BB IS ZEROES. @V56BDA8 04460000
  4662. MVC 2(L4,R1),THRHADD+1 GET CCHH. @V56BDA8 04461000
  4663. LA R2,6 LENGTH OF DATA TO CONVERT. @V56BDA8 04462000
  4664. BAL R14,DECCONV CONVERT TO PRINTABLE HEX. @V56BDA8 04463000
  4665. MVC ERRORRET,=F'16' SET UP AN ERROR RETURN OF 16. @V56BDA8 04464000
  4666. L R14,SAVERET RE-LOAD RETURN ADDRESS. @V56BDA8 04465000
  4667. DDR727A MSG 'DMKDDR727E FLAGGED TRK XXXXXXXXXXXX HAS NO PROPER ALTER*04466000
  4668. NATE; SKIPPING THIS TRK.' 04467000
  4669. MSG001 MSG 'END OF XXXXXXX' 04468000
  4670. MSG002 MSG 'VM/370 DASD DUMP/RESTORE PROGRAM RELEASE 6' HRC012DK 04469490
  4671. MSG002A MSG 'ENTER CARD READER ADDRESS OR CONTROL STATEMENTS',MSGRET 04470000
  4672. MSG003 ST R14,SAVERET SAVE THE RETURN ADD 04471000
  4673. TM DDRFLAG,CARDIN IS THE INPUT FROM CARD 04472000
  4674. BO MSG003A YES- DO NOT PRINT THE MSG 04473000
  4675. MSG 'ENTER CYLINDER EXTENTS',MSG003A 04474000
  4676. MSG003A L R14,SAVERET SET UP RETURN ADD 04475000
  4677. B READCONT 04476000
  4678. SPACE 04477000
  4679. MSG003B ST R14,SAVERET SAVE THE RETURN ADD 04478000
  4680. TM DDRFLAG,CARDIN IS THE INPUT FROM CARD 04479000
  4681. BO MSG003A YES- DO NOT PRINT THE MSG 04480000
  4682. MSG 'ENTER NEXT EXTENT OR NULL LINE',MSG003A 04481000
  4683. MSG004 EQU * HRC012DK 04482290
  4684. ST R14,MSG00414 HRC012DK 04482580
  4685. MVC MSG4AOTL,=CL10' ' HRC012DK 04482870
  4686. MVC MSG4AALL,=CL10' ' HRC012DK 04483160
  4687. MVC MSG4AMOD,=CL9'PRINTING' HRC012DK 04483450
  4688. CLI SAVENAME,C'P' IS THIS A PRINT HRC012DK 04483740
  4689. BE VSNMOVE HRC012DK 04484030
  4690. MVC MSG4AMOD,=CL9'COPYING' HRC012DK 04484320
  4691. CLI SAVENAME,C'C' IS THIS A COPY HRC012DK 04484610
  4692. BE OUTCUUMV HRC012DK 04484900
  4693. MVC MSG4AMOD,=CL9'DUMPING' SET UP DUMPING HRC012DK 04485190
  4694. CLI SAVENAME,C'D' IS THIS A DUMP HRC012DK 04485480
  4695. BNE MSG4RSTR NO, MUST BE RESTORING HRC012DK 04485770
  4696. LH R1,OUTIOB+(IOBATAPE-IOB) HRC012DK 04486060
  4697. CHKALTAD EQU * HRC012DK 04486350
  4698. LTR R1,R1 HRC012DK 04486640
  4699. BZ OUTCUUMV HRC012DK 04486930
  4700. MVC MSG4AALL,=CL10'ALT(CUU' HRC012DK 04487220
  4701. STH R1,MSG4AALA HRC012DK 04487510
  4702. LA R1,MSG4AALA HRC012DK 04487800
  4703. LA R2,2 LENGTH HRC012DK 04488090
  4704. BAL R14,DECCONV CONVERT IT HRC012DK 04488380
  4705. MVC MSG4AALA,MSG4AALA+1 HRC012DK 04488670
  4706. MVI MSG4AALA+L'MSG4AALA,C')' HRC012DK 04488960
  4707. B OUTCUUMV HRC012DK 04489250
  4708. MSG4RSTR EQU * HRC012DK 04489540
  4709. MVC MSG4AMOD,=CL9'RESTORING' HRC012DK 04489830
  4710. LH R1,INIOB+(IOBATAPE-IOB) HRC012DK 04490120
  4711. B CHKALTAD HRC012DK 04490410
  4712. OUTCUUMV EQU * HRC012DK 04490700
  4713. MVC MSG4AOTL,=CL10'OUT(CUU' HRC012DK 04490990
  4714. LH R1,OUTIOB+(IOBUADD-IOB) HRC012DK 04491280
  4715. STH R1,MSG4AOTA HRC012DK 04491570
  4716. LA R1,MSG4AOTA HRC012DK 04491860
  4717. LA R2,2 LENGTH HRC012DK 04492150
  4718. BAL R14,DECCONV CONVERT IT HRC012DK 04492440
  4719. MVC MSG4AOTA,MSG4AOTA+1 HRC012DK 04492730
  4720. MVI MSG4AOTA+L'MSG4AOTA,C')' HRC012DK 04493020
  4721. VSNMOVE EQU * HRC012DK 04493310
  4722. MVC MSG4AINL,=CL9'IN(CUU' HRC012DK 04493600
  4723. LH R1,INIOB+(IOBUADD-IOB) HRC012DK 04493890
  4724. STH R1,MSG4AINA HRC012DK 04494180
  4725. LA R1,MSG4AINA HRC012DK 04494470
  4726. LA R2,2 LENGTH HRC012DK 04494760
  4727. BAL R14,DECCONV CONVERT IT HRC012DK 04495050
  4728. MVC MSG4AINA,MSG4AINA+1 HRC012DK 04495340
  4729. MVI MSG4AINA+L'MSG4AINA,C')' HRC012DK 04495630
  4730. MVC MSG004A+16(6),INIOB+(IOBVSER-IOB) SET UP VSN HRC012DK 04495920
  4731. L R14,MSG00414 HRC012DK 04496210
  4732. * MSG 'PRINTING XXXXXX IN(CUU) ' HRC012DK 04496500
  4733. * MSG 'DUMPING XXXXXX IN(CUU) OUT(CUU) ALT(CUU)' HRC012DK 04496790
  4734. * MSG 'COPYING XXXXXX IN(CUU) OUT(CUU) ' HRC012DK 04497080
  4735. MSG004A MSG 'RESTORING XXXXXX IN(CUU) OUT(CUU) ALT(CUU)' HRC012DK 04497370
  4736. MSG4ABNK EQU MSG004A+13,3 HRC012DK 04497660
  4737. MSG4AMOD EQU MSG004A+06,9 HRC012DK 04497950
  4738. MSG4AVSN EQU MSG004A+16,6 HRC012DK 04498240
  4739. MSG4AINL EQU MSG004A+23,9 HRC012DK 04498530
  4740. MSG4AINA EQU MSG004A+26,3 HRC012DK 04498820
  4741. MSG4AOTL EQU MSG004A+32,10 HRC012DK 04499110
  4742. MSG4AOTA EQU MSG004A+36,3 HRC012DK 04499400
  4743. MSG4AALL EQU MSG004A+42,10 HRC012DK 04499690
  4744. MSG4AALA EQU MSG004A+46,3 HRC012DK 04499980
  4745. MSG00414 DC F'0' HRC012DK 04500270
  4746. MSG005 CVD R2,WORK1 * CONVERT THE HEAD 04503000
  4747. OI WORK1+7,X'0F' * 04504000
  4748. UNPK MSG005A+31(2),WORK1 * 04505000
  4749. CVD R1,WORK1 * CONVERT THE CYLINDER 04506000
  4750. OI WORK1+7,X'0F' * 04507000
  4751. UNPK MSG005A+24(3),WORK1 * 04508000
  4752. MSG005A MSG 'END OF VOLUME CYL XXX HD XX, MOUNT NEXT TAPE' 04509000
  4753. RESPONSE STM R14,R2,REGSAVE2 04510000
  4754. CL R10,BAREMAC IS THIS CMS 04511000
  4755. BNE CMS7 YES- BRANCH 04512000
  4756. XC RESPDATA(8),RESPDATA ZERO OUT THE OLD DATA 04513000
  4757. LA R15,CONIOB * POINT TO THE IOB 04514000
  4758. LA R1,RESPCCW * AND THE CCW. 04515000
  4759. BAL R14,GRAPHID GO TO I/O HANDLER @V200731 04516000
  4760. SHFTUP EQU * @V2A2063 04517000
  4761. OC RESPDATA(8),BLANKS SHIFT TO UPPER CASE 04518000
  4762. RETREGS LM R14,R2,REGSAVE2 RETUR REGS 04519000
  4763. BR R14 04520000
  4764. CMS7 LA R1,TYPEFCB 04521000
  4765. SVC 202 GO TO CMS 04522000
  4766. DC AL4(ERROR4) ERROR RETURN 04523000
  4767. LA R1,CONINFCB POINT TO THE FCB 04524000
  4768. SVC 202 READ THE CON 04525000
  4769. DC AL4(ERROR2) ERROR RETURN 04526000
  4770. B RETREGS 04527000
  4771. RESPMSG DC C'DO YOU WISH TO CONTINUE? RESPOND YES NO OR REREAD: ' 04528000
  4772. SPACE 3 04529000
  4773. RESPONS2 EQU * @V2A2063 04530000
  4774. STM R14,R2,REGSAVE2 @V2A2063 04531000
  4775. CL R10,BAREMAC UNDER CMS?? @V2A2063 04532000
  4776. BNE CMS9 YES @V2A2063 04533000
  4777. XC RESPDATA(8),RESPDATA CLEAR RESPONSE AREA @V2A2063 04534000
  4778. LA R15,CONIOB POINT AT CONSOLE IOB @V2A2063 04535000
  4779. LA R1,RESPCCW2 CCW'S @V2A2063 04536000
  4780. LA R14,SHFTUP RETURN ADDRESS @V2A2063 04537000
  4781. B GRAPHID DO THE I/O @V2A2063 04538000
  4782. CMS9 EQU * @V2A2063 04539000
  4783. LA R1,TYPEFCB2 @V2A2063 04540000
  4784. B CMS7+4 @V2A2063 04541000
  4785. RESPMSG2 DC C'DO YOU WISH TO CONTINUE? RESPOND YES OR NO:' 04542000
  4786. MSGFLAG DC X'00' FLAG FOR DDR711 OR DDR716 MSG @VA03507 04543000
  4787. EJECT 04544000
  4788. ****************************************************************** 04545000
  4789. * 04546000
  4790. * SUBROUTINE TO CONVERT HEXADECIMAL DIGTS TO DECIMAL 04547000
  4791. * 04548000
  4792. ***************************************************************** 04549000
  4793. HEXCONV STM R3,R5,REGSAVE1 SAVE REG 04550000
  4794. SR R3,R3 04551000
  4795. LA R5,15 SET UP FOR AND 04552000
  4796. CONVERTH TM 0(R1),X'F0' IS IT NUMERIC 04553000
  4797. BO NUMERIC YES- BRANCH 04554000
  4798. BZ DDR701 NO- ERROR IF ALL BITS OFF 04555000
  4799. TM 0(R1),X'38' IS IT ALPHA 04556000
  4800. BNZ DDR701 NO- ERROR IF BITS ON 04557000
  4801. TM 0(R1),X'07' IS IT G 04558000
  4802. BO DDR701 YES- ERROR IF BITS ON 04559000
  4803. IC R4,0(R1) PICK UP ALPHA INPUT BYTE 04560000
  4804. LA R4,9(,R4) ADD 9 TO CONVERT FROM ALPHA INPUT 04561000
  4805. B SAVEIT 04562000
  4806. NUMERIC IC R4,0(,R1) PICK UP NUMERIC INPUT 04563000
  4807. SAVEIT NR R4,R5 ZERO OUT ZONE 04564000
  4808. SLL R3,4 SHIFT TO MAKE ROOM FOR INPUT 04565000
  4809. OR R3,R4 MOVE IN NUMERICS 04566000
  4810. LA R1,1(,R1) POINT AT THE NEXT INPUT BYTE 04567000
  4811. BCT R2,CONVERTH DO IT TO EVERY INPUT BYTE 04568000
  4812. LR R2,R3 PLACE CONVERTED DATA INTO R2 04569000
  4813. LM R3,R5,REGSAVE1 RETURN REG 04570000
  4814. BR R14 RETURN TO CALLER 04571000
  4815. SPACE 3 04572000
  4816. ***************************************************************** 04573000
  4817. * 04574000
  4818. * SUBROUTINE TO CONVERT DECIMAL DIGITS TO HEXADECIMAL 04575000
  4819. * 04576000
  4820. ***************************************************************** 04577000
  4821. DECCONV STM R1,R5,REGSAVE1 SAVE REGS 04578000
  4822. BCTR R1,0 SET UP INPUT AND OUTPUT ADD 04579000
  4823. LA R3,0(R2,R2) DOBBLE THE COUNT 04580000
  4824. LA R3,0(R3,R1) ADD COUNT TO INPUT ADDRESS (ALSO OUTPUT) 04581000
  4825. SR R4,R4 04582000
  4826. LOOP4 IC R4,0(R2,R1) GET BYTE (INPUT + COUNT) 04583000
  4827. N R4,=F'15' ZERO OUT ALL BUT LAST 4 BITS 04584000
  4828. LA R5,DECTABLE(R4) POINT TO BYTE TO BE MOVED 04585000
  4829. MVC 0(1,R3),0(R5) MOVE IN BYTE 04586000
  4830. BCTR R3,0 POINT TO NEXT OUTPUT BYTE 04587000
  4831. IC R4,0(R2,R1) GET BYTE (INPUT + COUNT) 04588000
  4832. SRL R4,4 SET UP ZONE 04589000
  4833. LA R5,DECTABLE(R4) POINT AT BYTE TO BE MOVED 04590000
  4834. MVC 0(1,R3),0(R5) MOVE IN BYTE 04591000
  4835. BCTR R3,0 POINT TO NEXT OUTPUT BYTE 04592000
  4836. BCT R2,LOOP4 DO IT FOR ALL INPUT BYTES 04593000
  4837. LM R1,R5,REGSAVE1 RETURN REG 04594000
  4838. BR R14 RETURN TO CALLER 04595000
  4839. EJECT 04596000
  4840. **************************************************************** 04597000
  4841. * 04598000
  4842. * SUBROUTINE TO CONVERT DECIMAL DIGITS TO BINARY 04599000
  4843. * 04600000
  4844. **************************************************************** 04601000
  4845. BINCONV STM R1,R3,REGSAVE1 SAVE REGS 04602000
  4846. CL R2,=F'8' IS IT OVER 8 04603000
  4847. BH DDR701 YES- ERROR 04604000
  4848. LOOP9 TM 0(R1),X'F0' IS IT NUM 04605000
  4849. BNO DDR701 NO- ERROR 04606000
  4850. LA R1,1(,R1) POINT TO THE NEXT BYTE 04607000
  4851. BCT R2,LOOP9 DO IT TO ALL INPUT 04608000
  4852. LM R1,R3,REGSAVE1 RETURN REGS 04609000
  4853. BCTR R2,0 SUB 1 FROM COUNT 04610000
  4854. EX R2,PACK PACK DATA INTO WORK1 04611000
  4855. CVB R2,WORK1 SET UP DATA IN R2 04612000
  4856. BR R14 04613000
  4857. PACK PACK WORK1,0(1,R1) 04614000
  4858. SPACE 3 04615000
  4859. ***************************************************************** 04616000
  4860. * 04617000
  4861. * SUBROUTINE TO COMPARE KEYWORDS 04618000
  4862. * 04619000
  4863. ***************************************************************** 04620000
  4864. COMPARE BCTR R2,0 -1 04621000
  4865. EX R2,EXECOMP DO THE COMPARE 04622000
  4866. LA R2,1(,R2) +1 04623000
  4867. BR R14 RETURN WITH THE CC SET 04624000
  4868. EXECOMP CLC 0(0,R3),0(R1) COMPARE R1 TO R3 USING R2 04625000
  4869. EJECT 04626000
  4870. ****************************************************************** 04627000
  4871. *. 04628000
  4872. * 28. EXIT ROUTINE 04629000
  4873. * 04630000
  4874. * 1. LINK TO MSG001 TO TYPE THE END OF JOB MSG. 04631000
  4875. * 04632000
  4876. * 2. IF UNDER VM/370 CLOSE THE SYSPRINT DEVICE WITH A 04633000
  4877. * DIAGNOSE 8. 04634000
  4878. * 04635000
  4879. * 3. IF NOT UNDER CMS LOAD A DISABLED PSW. 04636000
  4880. * 04637000
  4881. * 4. SET UP THE CMS RETURN ADDRESS AND RETURN CODE. 04638000
  4882. * 04639000
  4883. * 5. RETURN TO CMS USING R14, R15 = RETURN CODE. 04640000
  4884. *. 04641000
  4885. ****************************************************************** 04642000
  4886. EXIT MVC MSG001+13(7),BLANKS 04643000
  4887. MVC MSG001+13(3),=C'JOB ' SET UP EOJ MSG 04644000
  4888. BAL R14,MSG001 PRINT MSG 04645000
  4889. CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE ? 04646000
  4890. BNE TESTCMS NO, GO TEST FOR CMS 04647000
  4891. TM SPRNTDEV,CONS WAS CONS SPECIFIED HRC012DK 04647200
  4892. BO TESTCMS UES DON'T CLOSE 00E HRC012DK 04647400
  4893. TM SPRNTDEV,PRT WAS PRINTER INITIALIZED ? HRC012DK 04647600
  4894. BNO TESTCMS NO, DON'T CLOSE 00E HRC012DK 04647800
  4895. SSM *+1 LOCK OUT CMS 04648000
  4896. LA R1,CPCLOSE POINT TO LIST 04649000
  4897. LA R2,L'CPCLOSE+L'CPADD SET UP THE LENGTH 04650000
  4898. DC X'83120008' DIAG CALL TO VM/370 TO CLOSE THE SYSPRINT*04651000
  4899. DEVICE 04652000
  4900. TESTCMS CL R10,BAREMAC IS THIS UNDER CMS 04653000
  4901. BNE CMS8 YES- BRANCH 04654000
  4902. LPSW SVCNEW STOP!!! 04655000
  4903. CMS8 EQU * 04656000
  4904. TM DDRFLAG,CARDIN IS THE INPUT FROM A CMS FILE 04657000
  4905. BZ NOCLOSE NO- BRANCH SKIP THE CLOSE 04658000
  4906. LA R1,INFCB POINT TO THE FCB 04659000
  4907. MVC 0(8,R1),=CL8'FINIS' SET UP THE FCB TO CLOSE FILE 04660000
  4908. SVC 202 CALL CMS TO CLOSE THE FILE 04661000
  4909. DC AL4(*+4) NO ERROR RETURN 04662000
  4910. NOCLOSE EQU * 04663000
  4911. BAL R1,CMSREL THE FOLLOWING ROUTINE IS A @VA08841 04664000
  4912. DC X'962005E107F1' SIMULATION OF THE DMSEXS @VA08841 04665000
  4913. CMSREL SVC 203 MACRO TO SET CMS RELPAGES BIT @VA08841 04666000
  4914. DC H'-9' @VA08841 04667000
  4915. LM R14,R15,CMSSAVE GET THE RETURN ADDRESS AND CODE 04668000
  4916. LTR R15,R15 DO I HAVE A RETURN CODE 04669000
  4917. BCR 7,R14 YES- RETURN WITH IT 04670000
  4918. TM DDRFLAG,CARDIN+ERROR DID I HAVE AN ERROR IN THE CMS X04671000
  4919. INPUT FILE 04672000
  4920. BCR 14,R14 NO- RETURN TO CMS 04673000
  4921. LA R15,2 SET RETURN CODE TO 2 04674000
  4922. BR R14 RETURN TO CMS 04675000
  4923. EJECT 04676000
  4924. LTORG 04677000
  4925. SPACE 3 04678000
  4926. ***** CHARACTER CONSTANTS 04679000
  4927. CPCLOSE DC C'CLOSE ' 04680000
  4928. CPADD DC C'00E ' 04681000
  4929. ENTER DC C'ENTER: ' 04682000
  4930. DDRFLAG DC X'0' 04683000
  4931. VLDRDR EQU X'80' RDR ADDRESS IS REALLY A RDR @VA04550 04684000
  4932. CARDIN EQU X'40' INPUT IS FROM CARD 04685000
  4933. CARDEOF EQU X'20' END OF FILE ON CARD READER 04686000
  4934. RESTALL EQU X'10' RESTORE ALL SWITCH 04687000
  4935. SPACE , HRC012DK 04687005
  4936. DDRFLAG3 DC X'0' INPUT OR OUTPUT ERROR FLAG @VA13582 04687010
  4937. OUTERROR EQU X'04' FOR FLAG OUT DEF. ERROR @VA13582 04687020
  4938. INERROR EQU X'02' FOR FLAG IN DEF. ERROR @VA13582 04687030
  4939. ERROR EQU X'08' ERROR SWITCH 04688000
  4940. SUPLINE EQU X'04' SUPPRES LINE SWITCH 04689000
  4941. NUCLEUS EQU X'02' (NUC) 04690000
  4942. FIRSTEOF EQU X'01' E-O-F INDICATOR @VA02229 04691000
  4943. SPACE , HRC012DK 04691500
  4944. DDRFLAG2 DC X'0' 04692000
  4945. PRINT EQU X'80' PRINT FUNCTION 04693000
  4946. TYPE EQU X'40' TYPE FUNCTION 04694000
  4947. VERIFY EQU X'20' VERIFY FUNCTION 04695000
  4948. REPLACE EQU X'10' REPLACE FUNCTION 04696000
  4949. HEXOPT EQU X'08' HEX OPTION 04697000
  4950. GRAPHOPT EQU X'04' GRAPHIC OPTION 04698000
  4951. COUNTOPT EQU X'02' COUNT OPTION 04699000
  4952. DECDATA EQU X'01' 1= DEC DATA INPUT 0= HEX DATA INPUT 04700000
  4953. SPACE , HRC012DK 04700100
  4954. SPRNTDEV DC X'00' FLAG FOR SYSPRINT OPTION HRC012DK 04700200
  4955. PRT EQU X'02' PRINTER HRC012DK 04700300
  4956. CONS EQU X'01' CONSOLE HRC012DK 04700400
  4957. SPACE , HRC012DK 04700500
  4958. NOSKMASK DC X'D8' READ ONLY ONE TRACK 04701000
  4959. SVDSTAT DC X'00' VDEVSTAT ON DIAG X'24' HRC012DK 04702290
  4960. VDVDED EQU X'01' DED DEVICE HRC012DK 04702580
  4961. HEADER DC C'COPYING DATA XX/XX/XX AT XX.XX.XX GMT FROM' @VA10358 04703100
  4962. DATE EQU HEADER+14 04704000
  4963. TIME EQU HEADER+26 04705000
  4964. ZONE EQU HEADER+36 04706000
  4965. DATA DC C'DATA ' 04707000
  4966. DUMPED DC C'DUMPED ' 04708000
  4967. RESTORED DC C'RESTORED ' 04709000
  4968. TO DC C'TO ' 04710000
  4969. HEADER2 DC C'INPUT CYLINDER EXTENTS OUTPUT CYLINDER EXTENTS' 04713000
  4970. HEADER3 DC C' START STOP START STOP' 04714000
  4971. BLANKS EQU HEADER3 04715000
  4972. PHADDMSG DC AL2(L'X1) 04716000
  4973. X1 DC C'CYL XXX HD XX HOME ADDRESS XXXXXXXXXX RECORD ZERO XXXX*04717000
  4974. XXXXXX XX XXXX XXXXXXXX XXXXXXXX' 04718000
  4975. PRECMSG DC AL2(L'X2) 04719000
  4976. X2 DC C'CYL XXX HD XX REC XXX COUNT XXXXXXXXXX XX XXXX' 04720000
  4977. PLENMSG DC AL2(L'X3) 04721000
  4978. X3 DC C'XXXXX XXXX DATA LENGTH' 04722000
  4979. * C'XXXXX XXXX KEY LENGTH' 04723000
  4980. PEOFMSG DC AL2(L'X4) 04724000
  4981. X4 DC C'END OF FILE RECORD' 04725000
  4982. POFMSG DC AL2(L'X5) 04726000
  4983. X5 DC C'ABOVE RECORD WRITTEN USING RECORD OVERFLOW' 04727000
  4984. PSUPMSG DC AL2(L'X6) 04728000
  4985. X6 DC C'SUPPRESSED CHARACTERS SAME AS ABOVE ...' 04729000
  4986. BLANKMSG DC AL2(1),C' ' PRINT A BLANK 04730000
  4987. DECTABLE DC C'0123456789ABCDEF' 04731000
  4988. CONTBUFF DC CL132' ' 04732000
  4989. RESPDATA DC CL130' ' 04733000
  4990. SPACE 04734000
  4991. * TRANSLATE TABLE 04735000
  4992. TRANTABL DC 64C'.' UNPRINTABLE CHARACTERS 04736000
  4993. DC C' ' BLANK 04737000
  4994. DC 9C'.' 04738000
  4995. SPECIALC DC X'4A' CENT SIGN 04739000
  4996. DC C'.<(+|&&' 04740000
  4997. DC 9C'.' 04741000
  4998. DC C'!$*);¬-/' 04742000
  4999. DC 9C'.' 04743000
  5000. DC X'6B6C' 'COMMA' & 'PERCENT' SIGNS 04744000
  5001. DC C'_>?' 04745000
  5002. DC 10C'.' 04746000
  5003. DC C':' 04747000
  5004. DC X'7B7C' 'POUND' & 'AT' SIGNS 04748000
  5005. DC C'''=".' 04749000
  5006. LOWCASE DC C'ABCDEFGHI' LOWER CASE CHARACTERS 04750000
  5007. DC 7C'.' 04751000
  5008. DC C'JKLMNOPQR' LOWER CASE CHARACTERS 04752000
  5009. DC 8C'.' 04753000
  5010. DC C'STUVWXYZ' LOWER CASE CHARACTERS 04754000
  5011. DC 23C'.' 04755000
  5012. UPPERCAS DC C'ABCDEFGHI' 04756000
  5013. DC 7C'.' 04757000
  5014. DC C'JKLMNOPQR' 04758000
  5015. DC 8C'.' 04759000
  5016. DC C'STUVWXYZ' 04760000
  5017. DC 6C'.' 04761000
  5018. DC C'0123456789' 04762000
  5019. DC 6C'.' 04763000
  5020. SPACE 04764000
  5021. SPECTYPE DC X'4A' CENT SIGN 04765000
  5022. DC C'.<(+|&&' 04766000
  5023. DC 9C'.' 04767000
  5024. DC C'!$*);¬-/' 04768000
  5025. DC 9C'.' 04769000
  5026. DC X'6B6C' 'COMMA' & 'PERCENT' SIGNS 04770000
  5027. DC C'_>?' 04771000
  5028. DC 10C'.' 04772000
  5029. DC C':' 04773000
  5030. DC X'7B7C' 'POUND' & 'AT' SIGNS 04774000
  5031. DC C'''=".' 04775000
  5032. SPACE 04776000
  5033. SPECPTR DC C'.' CENT SIGN 04777000
  5034. DC C'..(+.&&' 04778000
  5035. DC 9C'.' 04779000
  5036. DC C'.$*)..-/' 04780000
  5037. DC 9C'.' 04781000
  5038. DC C'..' 'COMMA' & 'PERCENT' SIGNS 04782000
  5039. DC C'...' 04783000
  5040. DC 10C'.' 04784000
  5041. DC C'.' 04785000
  5042. DC C'..' 'POUND' & 'AT' SIGNS 04786000
  5043. DC C'....' 04787000
  5044. SPACE 04788000
  5045. LOWERCAS DC C'abcdefghi' LOWER CASE CHARACTERS 04789000
  5046. DC 7C'.' 04790000
  5047. DC C'jklmnopqr' 04791000
  5048. DC 8C'.' 04792000
  5049. DC C'stuvwxyz' 04793000
  5050. SPACE 04794000
  5051. DS 0H 04795000
  5052. ***** HALF WORD CONSTANTS 04796000
  5053. LINECT DC H'0' LINE COUNT 04797000
  5054. MAXLINE DC H'60' MAX LINE COUNT 04798000
  5055. CONERCT DC H'20' SET UP FOR TWENTY ERRORS 04799000
  5056. EXTSIZE EQU 6 @V200731 04800000
  5057. EXTABLE DC (20*EXTSIZE)X'00' @V200731 04801000
  5058. PBUFLEN DC XL1'0' 04802000
  5059. CCBUFFER DC XL1'0' 04803000
  5060. SYSPTRBF DC CL72' ' 04804000
  5061. INSTART EQU SYSPTRBF+8 04805000
  5062. INSTOP EQU SYSPTRBF+18 04806000
  5063. OUTSTART EQU SYSPTRBF+28 04807000
  5064. OUTSTOP EQU SYSPTRBF+38 04808000
  5065. ORG SYSPTRBF 04809000
  5066. PTBUFFER DC CL122' ' 04810000
  5067. DISPDEC EQU PTBUFFER 04811000
  5068. DISPHEX EQU PTBUFFER+7 04812000
  5069. HEXDATA EQU PTBUFFER+13 04813000
  5070. MIDDLE EQU HEXDATA+36 04814000
  5071. AST1 EQU HEXDATA+74 04815000
  5072. DATATRAN EQU AST1+1 04816000
  5073. AST2 EQU AST1+33 04817000
  5074. SPACE 04818000
  5075. DS 0F 04819000
  5076. ***** FULL WORD CONSTANTS 04820000
  5077. PRINTRET DC A(0) REG 14 SAVE AREA FOR PRINT ROUTINE 04821000
  5078. ENDEXT DC A(EXTABLE+EXTSIZE*19) @V200731 04822000
  5079. CMSSAVE DC 1F'0' 04823000
  5080. ERRORRET DC A(0) ERROR RETURN 04824000
  5081. ERSAVE DC 7F'0' 04825000
  5082. CHKSV DC 3F'0' @V2A2063 04826000
  5083. R5SAVE DC 1F'0' 04827000
  5084. SAVEREGS DC 3F'0' SAVE AREA FOR SCANCONT 04828000
  5085. CURPOINT DC A(0) POINTER TO CURRENT SCAN LINE 04829000
  5086. CURCOUNT DC A(72) COUNT OF BYTES NOT SCANNNED IN CONTROL BU 04830000
  5087. TAPEERCT DC H'0' TAPE ERROR COUNT 04831000
  5088. DASDERCT DC H'0' DASD ERROR COUNT 04832000
  5089. LASTREOR DC X'FFFF' CYL ADD OF THE END OF THE LAST REOR EXT 04833000
  5090. LASTSTOP DC X'FFFF' CYL ADD OF THE LAST STOP EXT 04834000
  5091. SENSE DC XL48'0' SENSE DATA FROM LAST IO ERROR @V2B3729 04835000
  5092. SPACE , HRC012DK 04835040
  5093. SENSEB0 EQU SENSE HRC012DK 04835080
  5094. SENSEB1 EQU SENSE+1 HRC012DK 04835120
  5095. SENSEB2 EQU SENSE+2 HRC012DK 04835160
  5096. SENSEB3 EQU SENSE+3 HRC012DK 04835200
  5097. SENSEB6 EQU SENSE+6 HRC012DK 04835240
  5098. SPACE , HRC012DK 04835280
  5099. RDEVMD82 EQU X'08' 3380-2 HRC012DK 04835320
  5100. RDEVMD83 EQU X'0C' 3380-3 HRC012DK 04835360
  5101. DS 0H HRC012DK 04835400
  5102. PRIM3383 DS 0CL4 PARM FOR 3380-3 HRC012DK 04835440
  5103. MCYL3383 DC H'2654' HRC012DK 04835480
  5104. ALT3383 DC H'2655' HRC012DK 04835520
  5105. SPACE , HRC012DK 04835560
  5106. PRIM3382 DS 0CL4 PARM FOR 3380-2 HRC012DK 04835600
  5107. MCYL3382 DC H'1769' HRC012DK 04835640
  5108. ALT3382 DC H'1770' HRC012DK 04835680
  5109. SPACE , HRC012DK 04835720
  5110. PRIM3380 DS 0CL4 PARM FOR 3380-1 HRC012DK 04835760
  5111. MCYL3380 DC H'0884' HRC012DK 04835800
  5112. ALT3380 DC H'0885' HRC012DK 04835840
  5113. SPACE , HRC012DK 04835880
  5114. MHD3380 DC H'14' MAX HEAD NUMBER FOR 3380 HRC012DK 04835920
  5115. SPACE , HRC012DK 04835960
  5116. SNSCNT DC X'00' @V2B3729 04836000
  5117. DEVBUCT DC H'0' DEVICE BUSY COUNT @VA10042 04836500
  5118. SIOSAVE DC 7F'0' 04837000
  5119. IRSAVE DC 7F'0' 04838000
  5120. IOBSAVE DC 2F'0' 04839000
  5121. NEXTFILD DC 2F'0' SAVE AREA 04840000
  5122. CUREXT DC A(0) ADDRESS OF THE CURRENT EXTENT TABLE ENTRY 04841000
  5123. LASTEXT DC A(0) ADDRESS OF THE LAST EXTENT TABLE ENTRY 04842000
  5124. BAREMAC DC A(DMKDDREP+2-DMKDDR) 04843000
  5125. SAVENAME DC CL8' ' 04844000
  5126. REGSAVE1 DC 5F'0' 04845000
  5127. REGSAVE2 DC 5F'0' 04846000
  5128. REGSAVE3 DC 6F'0' 04847000
  5129. REGSAVE4 DC 4F'0' 04848000
  5130. SAVERET DC 1F'0' 04849000
  5131. ADDR1 DC X'5B5F' LOCATION LINE 22 COL 80 @V60A6B6 04850000
  5132. ADDR2 DC X'5D6B' LOCATION LINE 24 COL 60 @V60A6B6 04851000
  5133. ADDR3 DC X'D65F' LOCATION LINE 18 COL 80 @V60A6B6 04852000
  5134. ADDR4 DC X'D86B' LOCATION LINE 20 COL 60 @V60A6B6 04853000
  5135. ADDR5 DC X'4040' INITIAL AREA FOR CURSOR CHECK @V60A6B6 04854000
  5136. ADDR6 DC X'5B60' LOCATION LINE 23 COL 01 @V60A6B6 04855000
  5137. ADDR7 DC X'D660' LOCATION LINE 19 COL 01 @V60A6B6 04856000
  5138. MAXLEN DC F'0000' INITIALIZED MAX LENGTH ON CONS. @V60A6B6 04857000
  5139. LEN3270 DC F'1760' 24 LINE CONSOLE SCREEN @V60A6B6 04858000
  5140. LEN3278 DC F'1440' 20 LINE CONSOLE FOR 3278 MOD2A @V60A6B6 04859000
  5141. INIOB DC X'80000000' 04860000
  5142. DC A(0) POINTER TO THE CCW 04861000
  5143. DC A(INOUTER) POINTER TO THE ERROR ROUTINE 04862000
  5144. DC (IOBSIZE-(*-INIOB))X'00' @V56BDA8 04863000
  5145. DS 0F @V56BDA8 04864000
  5146. OUTIOB DC X'80000000' 04865000
  5147. DC A(0) POINTER TO THE CCW 04866000
  5148. DC A(INOUTER) POINTER TO THE ERROR ROUTINE 04867000
  5149. DC (IOBSIZE-(*-OUTIOB))X'00' @V56BDA8 04868000
  5150. DS 0F @V56BDA8 04869000
  5151. PRINTIOB DC X'8000000E' 04870000
  5152. DC A(HEADCCW) POINTER TO CCW 04871000
  5153. DC A(PTRERROR) ERROR ROUTINE 04872000
  5154. DC (IOBSIZE-(*-PRINTIOB))X'00' @V56BDA8 04873000
  5155. DS 0F @V56BDA8 04874000
  5156. CONIOB DC X'80200009' 04875000
  5157. DC A(CONCCW) POINTER TO CCW 04876000
  5158. DC A(SETUPERR) POINTER TO THE ERROR ROUTINE 04877000
  5159. DC 2F'0' ERROR CSW 04878000
  5160. DC AL1(CLASTERM,0) @V2A2063 04879000
  5161. DC (IOBSIZE-(*-CONIOB))X'00' @V56BDA8 04880000
  5162. DS 0F @V56BDA8 04881000
  5163. CARDIOB DC X'A060FFFF' 04882000
  5164. DC A(CARDCCW) POINTER TO THE CCW 04883000
  5165. DC A(READERR) POINTER TO THE ERROR ROUTINE 04884000
  5166. DC (IOBSIZE-(*-CARDIOB))X'00' @V56BDA8 04885000
  5167. SPACE 04886000
  5168. DS 0D 04887000
  5169. ***** DOUBLE WORD CONSTANTS 04888000
  5170. TODATE DC D'0' 04889000
  5171. TYPEFCB DC CL8'TYPLIN' 04890000
  5172. DC AL1(1) 04891000
  5173. DC AL3(RESPMSG) 04892000
  5174. DC CL1'B' 04893000
  5175. DC X'80' 04894000
  5176. DC AL2(L'RESPMSG) 04895000
  5177. TYPEFCB2 DC CL8'TYPLIN' @V2A2063 04896000
  5178. DC AL1(1) @V2A2063 04897000
  5179. DC AL3(RESPMSG2) @V2A2063 04898000
  5180. DC C'B' @V2A2063 04899000
  5181. DC X'80' @V2A2063 04900000
  5182. DC AL2(L'RESPMSG2) @V2A2063 04901000
  5183. CONINFCB DC CL8'CONREAD' 04902000
  5184. DC AL1(1) 04903000
  5185. DC AL3(RESPDATA) 04904000
  5186. DC CL1'U' 04905000
  5187. DC AL3(130) 04906000
  5188. CONFCB DC CL8'TYPLIN' 04907000
  5189. DC AL1(1) 04908000
  5190. DC AL3(0) 04909000
  5191. DC C'B' 04910000
  5192. DC X'00' 04911000
  5193. DC AL2(0) 04912000
  5194. ENTERFCB DC CL8'TYPLIN' 04913000
  5195. DC AL1(1) 04914000
  5196. DC AL3(ENTER) 04915000
  5197. DC C'B' 04916000
  5198. DC X'80' 04917000
  5199. DC AL2(L'ENTER) 04918000
  5200. CONRDFCB DC CL8'CONREAD' 04919000
  5201. DC AL1(1) 04920000
  5202. DC AL3(CONTBUFF) 04921000
  5203. DC CL1'U' 04922000
  5204. DC AL3(130) 04923000
  5205. PRINTFCB DC CL8'PRINTIO' 04924000
  5206. DC A(CCBUFFER) 04925000
  5207. DC H'1' 04926000
  5208. PRINTL DC H'0' 04927000
  5209. CPUID DC 1F'0' 04928000
  5210. CPUMODEL DC 1F'0' 04929000
  5211. INFCB DC CL8'STATE' 04930000
  5212. DC CL16' ' 04931000
  5213. DC CL2'* ' 04932000
  5214. DC H'0' 04933000
  5215. INFCBUF DC F'0' 04934000
  5216. DC F'80' 04935000
  5217. DC CL2'F' 04936000
  5218. DC H'1' 04937000
  5219. DC F'0' 04938000
  5220. RELP DS 0D @VA04324 04939000
  5221. DC CL8'REL' @VA04324 04940000
  5222. CCU DC CL8' ' @VA04324 04941000
  5223. DC 8X'FF' @VA04324 04942000
  5224. SPACE , HRC012DK 04942100
  5225. CYLPRMSZ EQU 6 CYLINDER PARAMETER SIZE HRC012DK 04942200
  5226. CYLPOS EQU 6 CYLINDER PARAMETER POSITION HRC012DK 04942300
  5227. MDSKREGS DC 6F'0' REGISTER SAVE AREA HRC012DK 04942400
  5228. BUFFRET DC X'40' INDICATE BUFFER RETURN. HRC012DK 04942500
  5229. QRYDEV DC CL15'QUERY VIRTUAL' QUERY VIRTUAL COMMAND HRC012DK 04942600
  5230. DEVCUU DC CL4' ' DEVICE ADDRESS FOR QUERY HRC012DK 04942700
  5231. QRYRESP DC CL80' ' QUERY RESPONSE BUFFER HRC012DK 04942800
  5232. SPACE , HRC012DK 04942900
  5233. WORK1 DS 1D 04943000
  5234. IOWPSW DC X'FF060000' 04944000
  5235. DC A(TESTATTN) 04945000
  5236. CONWAIT DC X'FF060000' 04946000
  5237. DC A(CONRET) 04947000
  5238. MACHINE DS F USED FOR BARE MACHINE COMP HRC012DK 04947500
  5239. SPACE 3 04948000
  5240. ****************************************************************** 04949000
  5241. * 04950000
  5242. * CCW'S AND SEEK SEARCH ADDRESSES 04951000
  5243. * 04952000
  5244. ****************************************************************** 04953000
  5245. SPACE 04954000
  5246. VOL1ID DC C'VOL1' 04955000
  5247. ALLOADD DC X'00000000000004' ALLOCATION RECORD DASD ADDRESS 04956000
  5248. REC3VOL1 DC XL5'0000000003' 04957000
  5249. CNOP 2,4 04958000
  5250. INADD DC 4H'0' BBCCHHR OF CURRENT INPUT TRACK 04959000
  5251. OUTADD DC 4H'0' BBCCHHR OF CURRENT OUTPUT TRACK 04960000
  5252. PSTARTCC DC H'0' STARTING CYLINDER FOR THE PRINT ROUTINE 04961000
  5253. PSTARTHH DC H'0' STARTING TRACK FOR THE PRINT ROUTINE 04962000
  5254. PSTARTRR DC H'0' STARTING RECORD FOR THE PRINT ROUTINE 04963000
  5255. PSTOPCC DC H'0' ENDING CYLINDER FOR THE PRINT ROUTINE 04964000
  5256. PSTOPHH DC H'0' ENDING TRACK FOR THE PRINT ROUTINE 04965000
  5257. PSTOPRR DC H'0' ENDING RECORD FOR THE PRINT ROUTINE 04966000
  5258. SPACE 04967000
  5259. IPLADD DC XL5'0000000001' (NUC) 04968000
  5260. CKPMOD DC XL5'0000000002' (NUC) 04969000
  5261. SPACE 04970000
  5262. RCKPDASD CCW 07,ALLOADD,CC,6 (NUC) 04971000
  5263. CCW 49,CKPMOD,CC+SILI,5 (NUC) 04972000
  5264. CCW 08,*-8,0,0 (NUC) 04973000
  5265. CCW 06,THR,0,4096 (NUC) 04974000
  5266. WCKPDASD CCW 07,ALLOADD,CC,6 (NUC) 04975000
  5267. CCW 49,IPLADD,CC+SILI,5 (NUC) 04976000
  5268. CCW 08,*-8,0,0 (NUC) 04977000
  5269. CCW 05,IPLDATA,CC,24 (NUC) 04978000
  5270. CCW 49,CKPMOD,CC+SILI,5 (NUC) 04979000
  5271. CCW 08,*-8,0,0 04980000
  5272. CCW 05,THR,0,4096 (NUC) 04981000
  5273. SPACE 04982000
  5274. IPLDATA DC X'000C000000000800' EXTENDED PSW FOR IPL (NUC) 04983000
  5275. CCW 6,X'800',0,4096 CCW TO READ IN DMKCKPT (NUC) 04984000
  5276. DC A(0,0) UNUSED (NUC) 04985000
  5277. SPACE 04986000
  5278. WCKPTAPE CCW 01,THR,SILI,4096 (NUC) 04987000
  5279. SPACE 04988000
  5280. PRINTCCW CCW 09,*,SILI,1 PRINTER CCW 04989000
  5281. INITCCW CCW X'37',0,SILI,1 'INITIALIZE PRINTER' CCW @V60B9BA 04990000
  5282. FSFCCW CCW 63,*,SILI,1 04991000
  5283. SKTO1CCW CCW X'8B',*,SILI,1 04992000
  5284. RESPCCW CCW 01,RESPMSG,CC+SILI,52 04993000
  5285. CCW 10,RESPDATA,SILI,72 04994000
  5286. RESPCCW2 CCW 01,RESPMSG2,CC+SILI,45 @V2A2063 04995000
  5287. CCW 10,RESPDATA,SILI,72 @V2A2063 04996000
  5288. PTENDCCW CCW 19,*,CC+SILI,1 04997000
  5289. CCW 09,MSG001+6,SILI,14 04998000
  5290. CARDCCW CCW 02,CONTBUFF,SILI,72 04999000
  5291. HEADCCW CCW X'8B',*,CC+SILI,1 05000000
  5292. CCW 25,SYSPTRBF,CC+SILI,L'SYSPTRBF HRC012DK 05001390
  5293. CCW 17,HEADER2,CC+SILI,L'HEADER2 HRC012DK 05001780
  5294. CCW 09,HEADER3,SILI,L'HEADER3 HRC012DK 05002170
  5295. CONCCW1 CCW 09,SYSPTRBF,CC+SILI,L'SYSPTRBF HRC012DK 05002560
  5296. CCW 09,HEADER2,CC+SILI,L'HEADER2 HRC012DK 05002950
  5297. CCW 09,HEADER3,SILI,L'HEADER3 HRC012DK 05003340
  5298. PTEXTCCW CCW 09,SYSPTRBF,SILI,42 05004000
  5299. CONCCW CCW 09,MSG002+6,SILI,46 05005000
  5300. CONINCCW CCW 01,ENTER,CC+SILI,7 05006000
  5301. CCW 10,CONTBUFF,SILI,72 05007000
  5302. RVHRCCW CCW 02,VHR,SILI,80 05008000
  5303. BSR4CCW CCW 39,*,SILI+CC,1 05009000
  5304. CCW 39,*,SILI+CC,1 05010000
  5305. CCW 39,*,SILI+CC,1 05011000
  5306. CCW 39,*,SILI+CC,1 05012000
  5307. CCW 55,*,SILI+CC,1 @VA01466 05013000
  5308. CCW 55,*,SILI+CC,1 @VA01466 05014000
  5309. CCW 55,*,SILI+CC,1 @VA01466 05015000
  5310. FSR1CCW CCW 55,*,SILI+CC,1 @VA01466 05016000
  5311. CCW 03,*,SILI,1 05017000
  5312. BACKECCW CCW 39,*,SILI+CC,1 05018000
  5313. CCW 23,*,SILI+CC,1 05019000
  5314. CCW 03,*,SILI,1 05020000
  5315. BACKCCW CCW 39,*,SILI+CC,1 05021000
  5316. NOOP CCW 03,*,SILI,1 05022000
  5317. RR0CCW CCW 35,*+6,CC,1 SET SECTOR TO ZERO 05023000
  5318. CCW 22,THR000,SILI,8 READ RECORD ZERO 05024000
  5319. BSFCCW CCW 47,*,SILI,1 05025000
  5320. BACKCCW1 CCW 39,*,CC+SILI,1 05026000
  5321. BACKCCW2 CCW 39,*,CC+SILI,1 05027000
  5322. BACKCCW3 CCW 39,*,CC+SILI,1 05028000
  5323. BACKCCW4 CCW 39,*,CC+SILI,1 05029000
  5324. BACKCCW5 CCW 39,*,CC+SILI,1 05030000
  5325. BACKCCW6 CCW 01,VHR,CC+SILI,80 05031000
  5326. CCW 31,*,CC+SILI,1 05032000
  5327. DISPCCW CCW 15,*,SILI,1 05033000
  5328. RUNCCW CCW 15,*,SILI,1 05034000
  5329. WRITEVHR CCW 03,*,CC+SILI,1 05035000
  5330. WVHRCCW CCW 01,VHR,SILI,80 05036000
  5331. RTHRCCW CCW 02,THR,SILI,4096 05037000
  5332. TAPRCCW CCW 02,DB1,CC,0 05038000
  5333. CCW 02,DB2,CC,0 05039000
  5334. CCW 02,DB3,CC,0 05040000
  5335. CCW 02,DB4,CC,0 @V304498 05041000
  5336. CCW 02,DB5,CC,0 HRC012DK 05041070
  5337. CCW 02,DB6,CC,0 HRC012DK 05041140
  5338. CCW 02,DB7,CC,0 HRC012DK 05041210
  5339. CCW 02,DB8,CC,0 HRC012DK 05041280
  5340. CCW 02,DB9,CC,0 HRC012DK 05041350
  5341. CCW 02,DB10,CC,0 HRC012DK 05041420
  5342. CCW 02,DB11,CC,0 HRC012DK 05041490
  5343. CCW 02,DB12,CC,0 HRC012DK 05041560
  5344. CCW 02,DB13,CC,0 HRC012DK 05041630
  5345. CCW 02,DB14,CC,0 HRC012DK 05041700
  5346. CCW 02,DB15,CC,0 HRC012DK 05041770
  5347. CCW 02,DB16,CC,0 HRC012DK 05041840
  5348. ALLOCCW CCW 07,ALLOADD,CC,6 05042000
  5349. CCW 49,ALLOADD+2,CC,5 05043000
  5350. CCW 08,*-8,CC,0 05044000
  5351. ALLOBUFA CCW 06,ALLOBUFF,0,1024 05045000
  5352. VOL1CCW CCW 07,ALLOADD,CC,6 05046000
  5353. CCW 41,VOL1ID,CC+SILI,4 05047000
  5354. CCW 08,*-8,0,0 05048000
  5355. VOL1BUFA CCW 06,VOL1BUFF,SILI,80 05049000
  5356. R3CCW CCW 07,ALLOADD,CC,6 05050000
  5357. CCW 49,REC3VOL1,CC+SILI,5 05051000
  5358. CCW 08,*-8,0,0 05052000
  5359. CCW 06,VOL1BUFF,SILI,80 05053000
  5360. READ333X CCW 07,INADD,CC,6 05054000
  5361. CCW 31,NOSKMASK,CC,1 05055000
  5362. CCW 35,*+6,CC,1 SET SECTOR TO ZERO 05056000
  5363. CCW 26,THRHADD,CC+SILI,5 05057000
  5364. CCW 49,INADD+2,CC+SILI,5 SEARCH ID EQ LOOKS FOR @V56BDA8 05058000
  5365. * RECORD R0 AND CAUSES TRK-COND-CHK 05059000
  5366. * IF WE ARE ON A DEF TRK. THIS PUTS 05060000
  5367. * US THRU ERROR RECOVERY AND GETS US 05061000
  5368. * TO ALT TRK BEFORE WE READ R0. 05062000
  5369. ORG *-3 @V56BDA8 05063000
  5370. DC AL1(ALTRDPRG) FLAG SEARCH CCW @V56BDA8 05064000
  5371. ORG *+2 @V56BDA8 05065000
  5372. CCW 08,*-8,0,0 05066000
  5373. CCW 14,THR000+8,CC+SILI,8 05067000
  5374. CCW 08,CCWWORK,0,0 05068000
  5375. READ333Y CCW 07,INADD,CC,6 SEEK @V56BDA8 05069000
  5376. CCW 31,NOSKMASK,CC,1 SET FILE MASK @V56BDA8 05070000
  5377. CCW 35,*+6,CC,1 SET SECTOR TO ZERO. @V56BDA8 05071000
  5378. CCW 22,THR000,CC+SILI,16 READ RECORD R0 @V56BDA8 05072000
  5379. CCW 08,CCWWORK,0,0 TIC TO THE READ CCWS. @V56BDA8 05073000
  5380. READ231X CCW 07,INADD,CC,6 05074000
  5381. CCW 31,NOSKMASK,CC,1 05075000
  5382. CCW 08,RDCONT,0,0 05076000
  5383. READ230X CCW 07,INADD,CC,6 05077000
  5384. CCW 31,NOSKMASK,CC,1 05078000
  5385. CCW 35,*+6,CC,1 SET SECTOR TO ZERO 05079000
  5386. RDCONT EQU * 05080000
  5387. CCW 26,THRHADD,CC+SILI,5 05081000
  5388. CCWWORKA CCW 08,CCWWORK,CC,1 @VA01049 05082000
  5389. READR0 CCW 22,THR000,CC+SILI,16 @VA01049 05083000
  5390. COUNTCCW CCW 146,THR001,CC,8 05084000
  5391. KEYCCW CCW 142,0,CC,0 05085000
  5392. SNSE4CCW CCW E4,SENSE,SILI,L7 E4 SENSE ID CCW HRC012DK 05086110
  5393. E4 EQU X'E4' HRC012DK 05086120
  5394. SENSECCW CCW 04,SENSE,SILI+CC,24 HRC012DK 05086130
  5395. CCW 08,CURS3066,SILI+CC,1 @VA11504 05086200
  5396. RECALCCW CCW 19,*,CC+SILI,1 05087000
  5397. RECALTIC CCW 08,*,CC+SILI,1 05088000
  5398. TAPWCCW CCW 01,THR,CC+SILI,0 05089000
  5399. CCW 01,DB1,CC+SILI,0 05090000
  5400. CCW 01,DB2,CC+SILI,0 05091000
  5401. CCW 01,DB3,CC+SILI,0 05092000
  5402. CCW 01,DB4,CC+SILI,0 @V304498 05093000
  5403. CCW 01,DB5,CC+SILI,0 HRC012DK 05093070
  5404. CCW 01,DB6,CC+SILI,0 HRC012DK 05093140
  5405. CCW 01,DB7,CC+SILI,0 HRC012DK 05093210
  5406. CCW 01,DB8,CC+SILI,0 HRC012DK 05093280
  5407. CCW 01,DB9,CC+SILI,0 HRC012DK 05093350
  5408. CCW 01,DB10,CC+SILI,0 HRC012DK 05093420
  5409. CCW 01,DB11,CC+SILI,0 HRC012DK 05093490
  5410. CCW 01,DB12,CC+SILI,0 HRC012DK 05093560
  5411. CCW 01,DB13,CC+SILI,0 HRC012DK 05093630
  5412. CCW 01,DB14,CC+SILI,0 HRC012DK 05093700
  5413. CCW 01,DB15,CC+SILI,0 HRC012DK 05093770
  5414. CCW 01,DB16,CC+SILI,0 HRC012DK 05093840
  5415. WT231X CCW 07,OUTADD,CC,6 05094000
  5416. CCW 31,NOSKMASK,CC,1 05095000
  5417. CCW 08,WTCONT,0,0 05096000
  5418. WT230X CCW 07,OUTADD,CC,6 05097000
  5419. CCW 31,NOSKMASK,CC,1 05098000
  5420. CCW 35,*+6,CC,1 SET SECTOR TO ZERO 05099000
  5421. WTCONT EQU * 05100000
  5422. CCW 57,OUTADD+2,CC+SILI,4 05101000
  5423. CCW 08,*-8,0,0 05102000
  5424. CCW 25,THRHADD,CC,5 05103000
  5425. CCW 21,THR000,CC+SILI,16 05104000
  5426. CCW 08,CCWWORK,0,0 05105000
  5427. WT333X CCW 07,OUTADD,CC,6 05106000
  5428. CCW 31,NOSKMASK,CC,1 05107000
  5429. CCW 49,OUTADD+2,CC+SILI,5 SEARCH ID EQ LOOKS FOR @V56BDA8 05108000
  5430. * RECORD R0 AND CAUSES TRK-COND-CHK 05109000
  5431. * IF WE ARE ON A DEF TRK. THIS PUTS 05110000
  5432. * US THRU ERROR RECOVERY AND GETS US 05111000
  5433. * TO THE ALT TRK BEFORE WE READ R0. 05112000
  5434. ORG *-3 @V56BDA8 05113000
  5435. DC AL1(ALTWRPRG) FLAG SEARCH CCW @V56BDA8 05114000
  5436. ORG *+2 @V56BDA8 05115000
  5437. CCW 08,*-8,0,0 05116000
  5438. CCW 05,THR000+8,CC+SILI,8 05117000
  5439. CCW 49,OUTADD+2,CC+SILI,5 05118000
  5440. CCW 08,*-8,0,0 05119000
  5441. CCW 08,CCWWORK,0,0 05120000
  5442. DASDWCCW CCW 29,THR001,CD,8 05121000
  5443. CCW 29,0,CC,0 05122000
  5444. READEOF CCW 18,*,CC+SKIP,8 05123000
  5445. DASDECCW CCW 17,INADD+2,SILI,8 05124000
  5446. READHAR0 CCW 7,ALTSKADD,CC,6 SEEK @V56BDA8 05125000
  5447. CCW 35,*+6,CC,1 SET SECTOR TO 0. @V56BDA8 05126000
  5448. CCW 26,ALTHA,CC+SILI,5 READ HA @V56BDA8 05127000
  5449. CCW 22,ALTR0,SILI,16 READ R0 @V56BDA8 05128000
  5450. ALTSEEK CCW 7,ALTSKADD,CC,6 SEEK @V56BDA8 05129000
  5451. CCW 31,NOSKMASK,CC,1 SET FILE MASK @V56BDA8 05130000
  5452. CCW 35,*+6,CC,1 SET SECTOR TO 0. @V56BDA8 05131000
  5453. CCW 26,0,CC+SILI+SKIP,5 READ HA @V56BDA8 05132000
  5454. ALTTIC CCW 8,*-*,0,0 TIC @V56BDA8 05133000
  5455. EJECT 05134000
  5456. ********************************************************************** 05135000
  5457. * GRAPHIC SUPPORT CCWS 05136000
  5458. ********************************************************************** 05137000
  5459. CRTWORD CCW X'27',SBACP,SILI+CC,2 SET BAR TO (STATUS WORD) @V200731 05138000
  5460. CCW X'01',CPXYSTAT,SILI+CC,20 WRITE 'RUNNING' ON @V200731 05139000
  5461. * SCREEN 05140000
  5462. CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR @V200731 05141000
  5463. * WRITE 05142000
  5464. CCW X'01',BLNKZERO,SILI+CC,140 CLEAR INPUT LINE @VM08604 05143000
  5465. CURS3066 CCW X'0F',SBAREAD,SILI+CC,2 REPOSITION CURSOR @V200731 05144000
  5466. CCW X'03',*-*,SILI,3 END OF READ CCW STRING @V200731 05145000
  5467. SPACE 2 05146000
  5468. CRTWORD1 CCW X'01',LAB3270A,SILI+CC,LEN THE CONTROL DATA @VM08630 05147000
  5469. CCW X'03',*-*,SILI,2 @V200731 05148000
  5470. SPACE 2 05149000
  5471. REQREAD CCW X'27',SBACP,SILI+CC,2 SET BUFFER ADDR TO CP X-Y @V200731 05150000
  5472. CCW X'01',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 05151000
  5473. CCW X'08',CURS3066,SILI,1 RESET CURSOR POSITION @V200731 05152000
  5474. SPACE 2 05153000
  5475. REQREAD1 CCW X'01',LAB3270B,SILI+CC,LEN1 THE CONTROL DATA @VM08630 05154000
  5476. CCW X'03',*-*,SILI,2 @V200731 05155000
  5477. SPACE 2 05156000
  5478. ERSE3066 CCW X'07',*-*,SILI+CC,1 ERASE ENTIRE SCREEN @V200731 05157000
  5479. WRTCRTXY CCW X'27',SBADDR,SILI+CC,2 SET CORRECT LINE IN @V200731 05158000
  5480. * BUFFER 05159000
  5481. WRT3066 CCW X'01',*-*,SILI+CC,140 WRITE OUT USER DATA @V200731 05160000
  5482. CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 05161000
  5483. SPACE 2 05162000
  5484. ERSE3270 CCW X'05',LAB3270E,SILI+CD,LEN3 ERASE THE SCREEN @V200731 05163000
  5485. CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 05164000
  5486. WRTCRT70 CCW X'01',LAB3270,SILI+CD,4 THE CONTROL DATA @V200731 05165000
  5487. WRTCR70 CCW X'00',*-*,SILI+CD,0 THE WRITE CCW @V200731 05166000
  5488. CCW X'00',LAB3270A+1,SILI+CC,LEN-1 WRITE SCREEN @V200731 05167000
  5489. * STATUS 05168000
  5490. CCW X'03',*-*,SILI,2 @V200731 05169000
  5491. SPACE 2 05170000
  5492. RDMI3066 CCW X'0E',RDMIDATA,SILI+CC,3 READ CCW FOR MI COMMAND@V200731 05171000
  5493. RD3066 CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR READ@V200731 05172000
  5494. RD3066DA CCW X'06',*-*,SILI+CC,140 READ INPUT DATA @V200731 05173000
  5495. CCW X'08',CURS3066,SILI,1 REPOSITION CURSOR @V200731 05174000
  5496. SPACE 2 05175000
  5497. RDMI3270 CCW X'01',LAB3270D,SILI+CC,4 @V200731 05176000
  5498. RD3270DA CCW X'06',*-*,SILI+CC,0 THE CCW FOR READ @V200731 05177000
  5499. CCW X'03',*-*,SILI,2 @V200731 05178000
  5500. SPACE 2 05179000
  5501. CNCL3270 CCW X'01',LAB3270E,SILI+CD,LEN3 THE CONTROL DATA @V200731 05180000
  5502. CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 05181000
  5503. CCW X'03',*-*,SILI,2 @V200731 05182000
  5504. SPACE 2 05183000
  5505. CNCL3066 CCW X'07',*-*,SILI+CC,1 ERASE SCREEN @V200731 05184000
  5506. CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 05185000
  5507. SPACE 2 05186000
  5508. MORECCW1 CCW X'01',LAB3270C,SILI+CC,LEN2 THE CONTROL DATA @V200731 05187000
  5509. CCW X'03',*-*,SILI,2 @V200731 05188000
  5510. SPACE 2 05189000
  5511. ********************************************************************** 05190000
  5512. ********************************************************************* 05191000
  5513. * FIRST DC ARE ADDRESSES FOR LINES 1 -6 05192000
  5514. * SECOND DC ARE ADDRESSES FOR LINES 7 - 12 05193000
  5515. * THIRD DC ARE ADDRESSES FOR LINES 13 - 18 05194000
  5516. * FOURTH DC ARE ADDRESSES FOR LINES 19 - 24 05195000
  5517. ********************************************************************* 05196000
  5518. SPACE 2 05197000
  5519. TABLE70 DS 0D @V200731 05198000
  5520. DC X'4040C150C260C3F0C540C650' @V200731 05199000
  5521. DC X'C760C8F04A404B504C604DF0' @V200731 05200000
  5522. DC X'4F405050D160D2F0D440D550' @V200731 05201000
  5523. DC X'D660D7F0D9405A505B605CF0' @V200731 05202000
  5524. SPACE 2 05203000
  5525. TABLGRAP EQU * @V200731 05204000
  5526. DC X'0A',AL3(READ66) ADDRESS OF THE READ SECTION @V200731 05205000
  5527. DC X'01',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 05206000
  5528. DC X'09',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 05207000
  5529. DC X'05',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 05208000
  5530. DC X'03',AL3(RETWORD) ADDRESS OF THE RETURN SECTION@V200731 05209000
  5531. SPACE 2 05210000
  5532. * X'5B60' - LINE 23, COL. 1 05211000
  5533. * X'5D6A' - LINE 24, COL. 59 05212000
  5534. SPACE 2 05213000
  5535. ********************************************************************** 05214000
  5536. WC6 EQU X'C2' WRITE CONTROL BIT 6 @V200731 05215000
  5537. AT7 EQU X'C1' ATTRIBUTE BIT 7 @V200731 05216000
  5538. AT2 EQU X'E0' ATTRIBUTE BIT 2 @V200731 05217000
  5539. LAC EQU X'C0' @V200731 05218000
  5540. SF EQU X'1D' START OF FIELD CONTROL @V200731 05219000
  5541. SBA EQU X'11' SET BUFFER ADDRESS @V200731 05220000
  5542. IC EQU X'13' INSERT CURSOR @V200731 05221000
  5543. EUA EQU X'12' ERASE UNPROTECTED @V200731 05222000
  5544. RA EQU X'3C' REPEAT TO ADDRESS @V200731 05223000
  5545. SPACE 2 05224000
  5546. LAB3270A DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 05225000
  5547. DC AL1(IC),AL1(EUA),X'5D6B',AL1(SF),AL1(AT2) @V200731 05226000
  5548. RUNLABEL DC CL20'RUNNING' @V200731 05227000
  5549. LEN EQU *-LAB3270A @V200731 05228000
  5550. LAB3270B DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 05229000
  5551. DC AL1(IC),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 05230000
  5552. REALABEL DC CL20'CP READ' @VM08531 05231000
  5553. LEN1 EQU *-LAB3270B @V200731 05232000
  5554. LAB3270C DC AL1(WC6),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 05233000
  5555. MORLABEL DC CL20'HOLDING' @V200731 05234000
  5556. LEN2 EQU *-LAB3270C @V200731 05235000
  5557. LAB3270D DC AL1(LAC),AL1(SBA),X'5B60' @V200731 05236000
  5558. LAB3270 DC AL1(WC6),AL1(SBA),X'0000' @V200731 05237000
  5559. LAB3270E DC AL1(WC6),AL1(SBA),X'4040',AL1(RA),X'5B60',X'00' @V200731 05238000
  5560. DC AL1(SF),AL1(AT7),AL1(IC),AL1(SBA) @V200731 05239000
  5561. DC X'5D6B',AL1(SF),AL1(AT2) @V200731 05240000
  5562. LEN3 EQU *-LAB3270E @V200731 05241000
  5563. SPACE 2 05242000
  5564. ********************************************************************* 05243000
  5565. PARM DC X'00' THE GRAPHIC FLAG BYTE @V200731 05244000
  5566. PARMATT EQU X'80' ATTENTION REQUEST @V200731 05245000
  5567. PARMGRP EQU X'40' GRAPHIC SUPPORT @V200731 05246000
  5568. PARMREA EQU X'20' READ REQUEST @V200731 05247000
  5569. PARMCLE EQU X'10' CLEAR/ERASE REQUEST @V200731 05248000
  5570. PARM327 EQU X'08' 3270 GRAPHIC @V200731 05249000
  5571. PARMNDA EQU X'04' NO DATA INDICATED @V200731 05250000
  5572. PARM01F EQU X'02' 01F REQUESTED @V200731 05251000
  5573. PARM321 EQU X'01' 3215/3210/1052 @V200731 05252000
  5574. ********************************************************************** 05253000
  5575. SPACE 2 05254000
  5576. ********************************************************************* 05255000
  5577. SBADDR DC AL1(00,00) CURRENT OUTPUT LINE COORDINATES @V200731 05256000
  5578. * FOR THE 05257000
  5579. * 3066 05258000
  5580. SBACP DC AL1(34,60) COORDINATES FOR SCREEN 'STATUS' @V200731 05259000
  5581. * WORD 05260000
  5582. SBAREAD DC AL1(33,00) COORDINATES FOR CURSOR POSITION @V200731 05261000
  5583. RDMIDATA DC XL6'00' READ DATA FROM 'MI' COMMAND @V200731 05262000
  5584. CPXYSTAT DC CL20' ' SCREEN 'STATUS' WORD @V200731 05263000
  5585. BLNKLINE DC XL140'00' CLEAR INPUT AREA FOR DATA @VM08604 05264000
  5586. BLNKZERO DC CL140' ' BLANKS FOR READ AREA @VM08604 05265000
  5587. GRAPHSAV DC 8F'00' SAVE AREA FOR GRAPHIC SUPPORT @V200731 05266000
  5588. SAVEAREA DC 2F'00' SAVE AREA FOR GRAPHIC DATA @V200731 05267000
  5589. * REGISTERS 05268000
  5590. ********************************************************************* 05269000
  5591. SPACE 2 05270000
  5592. ********************************************************************** 05271000
  5593. * 05272000
  5594. * WORKAREAS FOR 3340/3344 ALTERNATE TRACK SUPPORT 05273000
  5595. * 05274000
  5596. ALTSAVE DS F SAVEAREA FOR SIO RETURN ADDRESS @V56BDA8 05275000
  5597. GETCCWRK DC F'0' CCHH WORK AREA. @V56BDA8 05276000
  5598. ALTSKADD DC XL6'0' BBCCHH ADDR FOR ALT TRK RESTARTS.@V56BDA8 05277000
  5599. ALTHA DS XL5 HA (FCCHH) READ FROM DEF OR ALT. @V56BDA8 05278000
  5600. ALTHASAV DS XL5 SAV 1 HA OF PAIR WHILE READ OTHER@V56BDA8 05279000
  5601. ALTR0 DS XL16 R0 READ FROM DEF TRK OR ALT TRK. @V56BDA8 05280000
  5602. ALTR0SAV DS XL16 SAV 1 R0 OF PAIR WHILE READ OTHER@V56BDA8 05281000
  5603. ALTRDPRG EQU 128 THIS IS THE FIRST READ333X SEARCH@V56BDA8 05282000
  5604. ALTWRPRG EQU 64 THIS IS THE FIRST WR333X SEARCH @V56BDA8 05283000
  5605. ********************************************************************** 05284000
  5606. SPACE 05285000
  5607. VOL1BUFF DC 80C' ' VOL1 BUFFER 05286000
  5608. SPACE 05287000
  5609. TRACEST DC A(TRACETBL) START OF THE TRACE TABLE 05288000
  5610. TRACEEND DC A(TRACETBL+4080) END OF TRACE TABLE @V2A2063 05289000
  5611. TRACEPT DC A(TRACETBL) NEXT ENTRY IN THE TABLE 05290000
  5612. ORGCHK1 EQU * @V56BDA8 05291000
  5613. ORG DMKDDR+20480-80 @VM01076 05292000
  5614. ORGCHK2 EQU *-ORGCHK1 IF ASSEMBLER FLAGS THIS, WE HAVE @V56BDA8 05293000
  5615. * A PROGRAM THAT HAS GROWN TO BIG TO FIT 05294000
  5616. * ABOVE THE PRECEEDING ORG STATEMENT. 05295000
  5617. DS 0D @V56BDA8 05296000
  5618. VHR DC CL80'VHR ' CYLINDER HEADER RECORD 05297000
  5619. ORG *-76 05298000
  5620. SPACE 1 05299000
  5621. VHRCYLNO DS CL6'0' BBCCHH OF INPUT DASD UNIT 05300000
  5622. DS CL6 NOT USED. AVAILABLE. @V56BDA8 05301000
  5623. VHRCLOCK DS D'0' TIME OF DAY CLOCK VALUE 05302000
  5624. VHRMREC DS H 05303000
  5625. VHRCYLA DS H @V56BDA8 05304000
  5626. VHRMTCK DS H 05305000
  5627. VHRVSER DS CL6'VOLSER' VOLUME SERIAL NUMBER OF INPUT DASD UNIT 05306000
  5628. ORG VHR+80 05307000
  5629. SPACE 1 05308000
  5630. THR DC CL4'THR ' ID OF THE TRACK HEADER RECORD 05309000
  5631. THRNDRD DC H'0' THE NUMBER OF COUNT FIELDS IN THE THR 05310000
  5632. THRNDRT DC H'0' THE NUMBER OF 4K DATA RECORDS ON TAPE 05311000
  5633. THRDRL DC H'0' LENGTH OF THE SHORT (LAST) DATA RECORD 05312000
  5634. THRFLAG DC XL1'0' FLAG 05313000
  5635. SPECIAL EQU X'01' 05314000
  5636. THRHADD DC XL5'0' THE HOME ADDRESS REORDERED 05315000
  5637. THR000 DC XL16'0' RECORD ZERO FROM THE DASD UNIT 05316000
  5638. THR001 DC XL8'0' COUNT FIELD OF THE FIRST RECORD 05317000
  5639. SPACE 1 05318000
  5640. DS 0D 05319000
  5641. ENTRY DMKDDRED END OF CMS MODULE 05320000
  5642. DMKDDRED EQU * 05321000
  5643. SPACE 1 05322000
  5644. ORG THR+4096 4K TRACK HEADER RECORD @VM01076 05323000
  5645. SPACE 1 05324000
  5646. DB1 DS 4096X DATA BUFFER 1 05325000
  5647. DB2 DS 4096X DATA BUFFER 2 05326000
  5648. DB3 DS 4096X DATA BUFFER 3 05327000
  5649. DB4 DS 4096X DATA BUFFER 4 @V304498 05328000
  5650. DB5 DS 4096X DATA BUFFER 5 HRC012DK 05328070
  5651. DB6 DS 4096X DATA BUFFER 6 HRC012DK 05328140
  5652. DB7 DS 4096X DATA BUFFER 7 HRC012DK 05328210
  5653. DB8 DS 4096X DATA BUFFER 8 HRC012DK 05328280
  5654. DB9 DS 4096X DATA BUFFER 9 HRC012DK 05328350
  5655. DB10 DS 4096X DATA BUFFER 10 HRC012DK 05328420
  5656. DB11 DS 4096X DATA BUFFER 11 HRC012DK 05328490
  5657. DB12 DS 4096X DATA BUFFER 12 HRC012DK 05328560
  5658. DB13 DS 4096X DATA BUFFER 13 HRC012DK 05328630
  5659. DB14 DS 4096X DATA BUFFER 14 HRC012DK 05328700
  5660. DB15 DS 4096X DATA BUFFER 15 HRC012DK 05328770
  5661. DB16 DS 4096X DATA BUFFER 16 HRC012DK 05328840
  5662. TRACETBL DS 4096X 1 PAGE TRACE TABLE @V2A2063 05329000
  5663. SPACE 05330000
  5664. ALLOBUFF EQU * ALLOCATION TABLE BUFFER 05331000
  5665. CCWWORK DS 214D ROOM TO BUILD CCW'S FOR 106 @V304498 05332000
  5666. * RECORDS 05333000
  5667. SPACE 05334000
  5668. BUFFSIZE EQU (*-DMKDDRED)/8 SIZE OF THE BUFFER/WORK AREA FOR CMS 05335000
  5669. SPACE 3 05336000
  5670. NAMETABL DSECT 05337000
  5671. NAMEFLAG DS X'00' FLAGS + MIN COUNT 05338000
  5672. DS X @V2A2063 05339000
  5673. NAMECLAS DS X @V2A2063 05340000
  5674. NAMETYPE DS X @V2A2063 05341000
  5675. NAMEMREC DS H MAX NUM OF RECORDS THAT WILL FIT A TRACK 05342000
  5676. NAMECYLP DS H MAX PRIM CYL ADDR OF A DASD DVC. @V56BDA8 05343000
  5677. NAMECYLA DS H MAX ALT CYL ADDR OF A DASD DVC. @V56BDA8 05344000
  5678. NAMEMTCK DS H MAX HEAD ADDRESS OF A DASD DEVICE 05345000
  5679. NAME DS CL8 NAME OF DEVICE OR ROUTINE 05346000
  5680. NAMESIZE EQU *-NAMETABL 05347000
  5681. ORG NAMEFLAG+1 @V2A2063 05348000
  5682. NAMEROUT DS AL3 ADDRESS OF ROUTINE 05349000
  5683. SPACE 05350000
  5684. * BITS USED IN NAMEFLAG 05351000
  5685. NAMELAST EQU X'80' LAST ENTRY IN TABLE 05352000
  5686. NAMECON EQU X'40' ENTRY IS A CONSTANT 05353000
  5687. SPACE 2 05354000
  5688. CYLENTRY DSECT USED TO DEFINE THE EXTENT TABLE 05355000
  5689. CYLSTART DS X'0000' 05356000
  5690. CYLSTOP DS X'0000' 05357000
  5691. CYLREOR DS X'0000' 05358000
  5692. SPACE 6 05359000
  5693. CH9 EQU X'01' CH9 SENSE BIT ON PRINTER @VA13315 05369500
  5694. EJECT 05370000
  5695. L1 EQU 1 HRC012DK 05370090
  5696. L2 EQU 2 HRC012DK 05370180
  5697. L4 EQU 4 HRC012DK 05370270
  5698. L5 EQU 5 HRC012DK 05370360
  5699. L7 EQU 7 HRC012DK 05370450
  5700. L8 EQU 8 HRC012DK 05370540
  5701. L10 EQU 10 HRC012DK 05370630
  5702. L16 EQU 16 HRC012DK 05370720
  5703. D2 EQU 2 HRC012DK 05370810
  5704. D5 EQU 5 HRC012DK 05370900
  5705. COPY EQU 05371000
  5706. SPACE 3 05372000
  5707. COPY DEVTYPES @V2A2063 05373000
  5708. END DMKDDREP 05374000