Table of Contents

DMKFMT Source

References

Source Listing

DMKFMT.ASSEMBLE.txt
  1. FMT TITLE 'DMKFMT (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMKFMT 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. * TO ACCEPT PARAMETERS FROM THE 1052 CONSOLE OR IPL 00009000
  10. * DEVICE (CARD READER) AND PERFORM PARTIAL OR COMPLETE 00010000
  11. * FORMATTING,ALLOCATION AND LABELING OF 2314,2319,3330, 00011000
  12. * 3340, 3350 AND 2305 DASD TYPE DEVICES. 00012000
  13. * THE FORMAT PROGRAM WILL ALSO DO WRITE CHECKING 00013000
  14. * TO VERIFY PAGES ARE FORMATTED CORRECTLY. A COUNT OF "ERROR" 00014000
  15. * PAGES WILL BE MAINTAINED. NO ALTERNATES WILL BE ASSIGNED. 00015000
  16. * OS LABELS WILL WRITTEN TO BE COMPATIABLE WITH OS 00016000
  17. * SYSTEM BUT LABELS WILL INDICATE TO OS THAT THERE IS 00017000
  18. * NO SPACE LEFT ON DASD STORAGE DEVICE. 00018000
  19. * ALL PARAMETER INPUT WILL BE VERIFIED FOR CORRECTNESS 00019000
  20. * 00020000
  21. * ATTRIBUTES - 00021000
  22. * 00022000
  23. * STAND-ALONE PROGRAM 00023000
  24. * 00024000
  25. * ENTRY POINTS - 00025000
  26. * 00026000
  27. * DMKFMT 00027000
  28. * 00028000
  29. * ENTRY CONDITIONS - 00029000
  30. * 00030000
  31. * NONE 00031000
  32. * 00032000
  33. * EXIT CONDITONS - 00033000
  34. * 00034000
  35. * NONE 00035000
  36. * 00036000
  37. * CALLS TO OTHER ROUTINES - 00037000
  38. * 00038000
  39. * NONE 00039000
  40. * 00040000
  41. * EXTERNAL REFERENCES - 00041000
  42. * 00042000
  43. * NONE 00043000
  44. * 00044000
  45. * TABLES/WORKAREAS - 00045000
  46. * 00046000
  47. * NONE 00047000
  48. * 00048000
  49. * REGISTER USAGE - 00049000
  50. * 00050000
  51. * GPR 0 TO 10 -SCRATCH 00051000
  52. * GPR 11 -3RD BASE 00052000
  53. * GPR 12 -2ND BASE 00053000
  54. * GPR 13 -4TH BASE 00054000
  55. * GPR 14 -LINK REG 00055000
  56. * GPR 15 -1ST BASE 00056000
  57. * 00057000
  58. * NOTES - NONE 00058000
  59. * 00059000
  60. * OPERATION -DMKFMT 00060000
  61. * 00061000
  62. * 1. AFTER IPL SAVE IPL DEVICE ADDRESS. 00062000
  63. * 00063000
  64. * 2. ASSUME CONSOLE ADDRESS 009 OR 01F. 00064000
  65. * 00065000
  66. * 3. IF ASSUMED CONSOLES ARE NOT THERE GO TO 00066000
  67. * WAIT STATE AND WAIT FOR ATTENTION INTERRUPT. 00067000
  68. * 00068000
  69. * 4. AFTER CONSOLE IS FOUND CHECK TO SEE IF 00069000
  70. * THERE IS ANY PARAMETER INPUT ON IPL DEVICE 00070000
  71. * 00071000
  72. * 5. IF PARAMETER INPUT IS IN IPL DEVICE,READ IN 00072000
  73. * ONE FUNCTION TO BE DONE AND USE CONSOLE TO 00073000
  74. * PRINT FUNCTIONS TO BE EXECUTED. 00074000
  75. * 00075000
  76. * 6. IF NO IPL DEVICE INPUT,USE CONSOLE TO PROMPT 00076000
  77. * FOR FUNCTION TO BE PERFORMED AND ALLOW 00077000
  78. * OPERATOR TO RETYPE INPUT IF FOUND INVALID 00078000
  79. * BY THE PROGRAM. 00079000
  80. * 00080000
  81. * 7. IF IPL DEVICE INPUT IS USED, SCAN CARD FOR PROPER 00081000
  82. * FORMAT, IF FOUND INVALID ISSUE A MESSAGE TO THE 00082000
  83. * OPERATOR AND FLUSH TO NEXT FORMAT OR ALLOCATE CARD. 00083000
  84. * 00084000
  85. * 8. ALLOW ABBREVIATIONS OF WORDS;FORMAT;ALLOCATE; & LABEL 00085000
  86. * ALLOW DEFAULTS FOR STARTING AND ENDING CYLINDERS UNDER 00086000
  87. * FORMAT FROM CONSOLE OR IPL DEVICE INPUT. 00087000
  88. * 00088000
  89. * 9. REPEAT PROMPTING FOR NEW FUNCTION TO 00089000
  90. * PERFORM WHEN USING CONSOLE AS INPUT 00090000
  91. * OR READ NEXT FUNCTION FROM THE IPL 00091000
  92. * DEVICE. 00092000
  93. * 00093000
  94. * 10.START 'FORMAT','ALLOCATION',OR 'LABEL ONLY' OPERATION 00094000
  95. * AS REQUESTED. 00095000
  96. * 00096000
  97. * **FORMAT** 00097000
  98. * 00098000
  99. * FORMAT FROM THE STARTING CYLINDER UP TO AND 00099000
  100. * INCLUDING THE ENDING CYLINDER OF THE DASD DEVICE 00100000
  101. * AS REQUESTED BY CONSOLE OR IPL DEVICE INPUT. 00101000
  102. * 00102000
  103. * FORMATTED RECORDS ARE (PAGE SIZE) IN 4096 BYTES. 00103000
  104. * 00104000
  105. * FORMAT CYLINDER 0 AS FOLLOWS: 00105000
  106. * 00106000
  107. * R0 PAGE BIT MAP - FLAGS BAD OR INUSE PAGES. 00107000
  108. * R1 IPL REC. - PUTS STSTEM INTO WAIT STATE, CODE = 00C. 00108000
  109. * R2 CHECK POINT RECORD - USED BY CHECK POINT ROUTINE. 00109000
  110. * R3 OS VOL1 LABEL - CONTAINS CP VOLUME LABEL 00110000
  111. * R4 ALLOCATION BIT MAP - ALLOCATION TYPE FOR EACH CYL. 00111000
  112. * R5 OS FORMAT 4 LABEL 00112000
  113. * R6 OS FORMAT 5 LABEL. 00113000
  114. * RF3 PAGE SIZE FILLER RECORD FOR FUTURE CP USE. 00114000
  115. * RF4 FILLER RECORD FOR 2314 AND 2319 DEVICE. 00115000
  116. * 00116000
  117. * WRITE CP VOLUME LABEL WHEN CYLINDER 0 IS FORMATTED, 00117000
  118. * OTHER WISE READ AND COMPARE CP VOLUME LABEL TO INPUT. 00118000
  119. * 00119000
  120. * WRITE PAGE SIZE RECORDS ON THE REST OF CYLINDER 0 00120000
  121. * AND ALL OTHER CYLINDERS REQUESTED. 00121000
  122. * 00122000
  123. * WRITE VERIFY THAT EACH PAGE RECORD WAS WRITTEN 00123000
  124. * CORRECTLY. 00124000
  125. * 00125000
  126. * RECORD ANY BAD PAGE RECORD IN THE "PAGE BIT MAP" 00126000
  127. * LOCATED ON TRACK 0 RECORD 0 OF EACH CYLINDER. 00127000
  128. * 00128000
  129. * PRINT BAD PAGE ADDRESSES AS THEY FOUND. 00129000
  130. * 00130000
  131. * PRINT TOTAL OF BAD PAGES WHEN FORMAT IS COMPLETE. 00131000
  132. * 00132000
  133. * GET ANOTHER TASK FROM CONSOLE OR IPL DEVICE WHEN 00133000
  134. * FORMAT IS COMPLETE. 00134000
  135. * 00135000
  136. * **ALLOCATION** 00136000
  137. * 00137000
  138. * READ AND VERIFY THE CP VOLUME LABEL. 00138000
  139. * 00139000
  140. * UPDATE ALLOCATION TABLE IN CORE FROM CONSOLE 00140000
  141. * OR IPL DEVICE INPUT. 00141000
  142. * 00142000
  143. * WRITE CYLINDER ALLOCATION INTO "CYL BYTE MAP" 00143000
  144. * LOCATED IN RECORD 4 OF CYL 0 HEAD 0. 00144000
  145. * 00145000
  146. * SCAN "CYL BYTE MAP" AFTER ALLOCATION IS COMPLETE 00146000
  147. * AND PRINT VOLUME ALLOCATE ON CONSOLE. 00147000
  148. * 00148000
  149. * GET ANOTHER TASK FROM CONSOLE OR IPL DEVICE WHEN 00149000
  150. * ALLOCATION IS COMPLETE. 00150000
  151. * 00151000
  152. * **LABEL ONLY OPERATION** 00152000
  153. * 00153000
  154. * CHECK FOR SIX CHARACTERS ENTERED FOR LABEL. 00154000
  155. * 00155000
  156. * WRITE NEW CP VOLUME LABEL IN CYLINDER 0 HD 0 RECORD 3 00156000
  157. * 00157000
  158. * GET ANOTHER TASK FROM CONSOLE OR IPL DEVICE WHEN 00158000
  159. * LABELING IS COMPLETE. 00159000
  160. * 00160000
  161. * 11.DEPRESSING THE REQUEST KEY ON THE CONSOLE 00161000
  162. * WILL CAUSE AN ATTENTION INTERRUPT TO THE PROGRAM 00162000
  163. * AND PROCESSING WILL STOP AND PROGRAM RESTARTED AT 00163000
  164. * BEGINNING. 00164000
  165. * 00165000
  166. * 12.MACHINE CHECKS AND PROGRAM CHECKS WILL PRINT 00166000
  167. * MESSAGE AND PUT SYSTEM INTO WAIT STATE. 00167000
  168. * 00168000
  169. * 13.FATAL DASD ERRORS WILL PRINT A MESSAGE WITH SENSE 00169000
  170. * DATA. 00170000
  171. * 00171000
  172. * 14.CARD FORMATS. 00172000
  173. * 00173000
  174. * FORMAT EXAMPLES: 00174000
  175. * 00175000
  176. * FORMAT,ADDRESS,TYPE,VOLUME LABEL,START CYL,END CYL, 00176000
  177. * 00177000
  178. * FORMAT,232,3330,MYDISK,000,006, 00178000
  179. * OR 00179000
  180. * FORMAT,232,3330,MYDISK,000,006 LAST , MAY BE DROPPED 00180000
  181. * F,232,3330,MYDISK,,, DEFAULTS START & END CYL 00181000
  182. * F,232,3330,MYDISK,,007 DEFAULTS START CYL 00182000
  183. * F,232,3330,MYDISK,001,, DEFAULTS END CYL 00183000
  184. * 00184000
  185. * ALLOCATE EXAMPLES: 00185000
  186. * 00186000
  187. * ALLOCATE,232,3330,MYDISK 00187000
  188. * TEMP,000,050 ALLOCATE CYL 0 TO 50 AS TEMPORARY 00188000
  189. * PERM,055,060 00189000
  190. * TDSK,100,108 00190000
  191. * DRCT,110,120 00191000
  192. * END 00192000
  193. * 00193000
  194. * A,232,3330,MYDISK 00194000
  195. * ALLO,232,3330,MYDISK ABBEVIATE ALLOCATE 00195000
  196. * 00196000
  197. * LABEL ONLY EXAMPLES: 00197000
  198. * 00198000
  199. * FO,232,3330,MYDISK,LABEL WORD LABEL IN PLACE OF CYL 00199000
  200. * F,232,3330,MYDISK,LA WORD LABEL ABBEVIATED. 00200000
  201. * 00201000
  202. * 15.DETECT IPL DEVICE ERRORS AND ALLOW RESTARTING 00202000
  203. * CONSOLE OR IPL DEVICE. 00203000
  204. * 00204000
  205. * 16.ALLOW CONSOLE TO BE USED WHEN IPL DEVICE IS 00205000
  206. * NOT READY OR HAS NO MORE INPUT 00206000
  207. * 00207000
  208. * MESSAGES 00208000
  209. * 00209000
  210. * DMKFMT730E DEV XXX NOT OPERATIONAL OR NOT READY. 00210000
  211. * 00211000
  212. * DMKFMT732E MACHINE CHECK RUN SEREP AND SAVE OUTPUT FOR CE 00212000
  213. * 00213000
  214. * DMKFMT733E VOLID READ IS VOLID1 NOT VOLID2 00214000
  215. * VOLID1 = THE VOLUNE SERIAL NUMBER FROM THE 00215000
  216. * DASD DEVICE. 00216000
  217. * VOLID2 = THE VOLUME SERIAL NUMBER FROM THE 00217000
  218. * CONTROL STATEMENT. 00218000
  219. * 00219000
  220. * DMKFMT734E TYPE OR CYL INVALID 00220000
  221. * 00221000
  222. * DMKFMT735E FATAL DASD IO ERROR. CSW=XXXXXXXXXXXXXXXX 00222000
  223. * 00223000
  224. * DMKFMT736E IO ERROR CCU CCHHR = XXXXXXXXXX SENSE = XXXXXXXXXXX 00224000
  225. * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 00225000
  226. * 00226000
  227. * DMKFMT737E INVALID OPERAND 00227000
  228. * 00228000
  229. * DMKFMT738A DEV CCU INTERVENTION REQUIRED 00229000
  230. * 00230000
  231. * DMKFMT739E FLAGGED PRIMARY TRACK HAS NO ALTERNATE ASSIGNED, 00231000
  232. * IO ERROR FOLLOWS. 00232000
  233. * 00233000
  234. * DMKFMT740E PACK MOUNTED IS 3340-35, NOT 3340-70. MOUNT 00234000
  235. * ANOTHER OR RESPECIFY. 00235000
  236. * 00236000
  237. * DMKFMT756E PROGRAM CHECK PSW = XXXXXXXXXXXXXXXX 00237000
  238. * 00238000
  239. * VM/370 FORMAT/ALLOCATE PROGRAM RELEASE 6 00239000
  240. * 00240000
  241. * ENTER FORMAT OR ALLOCATE: 00241000
  242. * 00242000
  243. * FORMAT FUNCTION SELECTED 00243000
  244. * 00244000
  245. * ALLOCATE FUNCTION SELECTED 00245000
  246. * 00246000
  247. * ENTER DEVICE ADDRESS (CCU): 00247000
  248. * 00248000
  249. * ENTER DEVICE TYPE: 00249000
  250. * 00250000
  251. * ENTER ALLOCATION DATA FOR VOLUME XXXXXX 00251000
  252. * TYPE CYL CYL 00252000
  253. * .... ... ... 00253000
  254. * 00254000
  255. * DEVICE XXX VOLUME XXXXXX ALLOCATION ENDED 00255000
  256. * 00256000
  257. * ENTER START CYLINDER (XXX) OR LABEL: 00257000
  258. * 00258000
  259. * ENTER END CYLINDER (XXX): 00259000
  260. * 00260000
  261. * FORMAT STARTED 00261000
  262. * 00262000
  263. * ENTER DEVICE LABEL: 00263000
  264. * 00264000
  265. * FORMAT DONE 00265000
  266. * 00266000
  267. * XXX PAGE RECORDS FLAGGED 00267000
  268. * 00268000
  269. * ALLOCATION RESULTS 00269000
  270. * 00270000
  271. * TEMP XXX XXX 00271000
  272. * 00272000
  273. * PERM XXX XXX 00273000
  274. * 00274000
  275. * TDSK XXX XXX 00275000
  276. * 00276000
  277. * DRCT XXX XXX 00277000
  278. * 00278000
  279. * 00279000
  280. *. 00280000
  281. *********************************************************************** 00281000
  282. *THIS PROGRAM WILL FORMAT (FULL OR PARTIAL);ALLOCATE;AND LABEL;2314 * 00282000
  283. *2319,3330,3340,3350 AND 2305 DASD UNITS, USING CONSOLE OR CARD INPUT.* 00283000
  284. *THE DEVICES WILL BE FORMATTED WITH 4096 BYTE SIZE RECORDS. * 00284000
  285. *THE CARD DEVICE WILL BE SELECTED IF INPUT FOLLOWS THE IPL DECK AT IPL* 00285000
  286. *TIME. IF NO INPUT FOLLOWS IPL DECK THE CONSOLE WILL BE SELECTED * 00286000
  287. *VOLUME LABEL WILL BE CHECKED FOR ALL OPERATIONS EXCEPT, FORMAT OF * 00287000
  288. *CYLINDER ZERO AND LABEL OPERATIONS ONLY. * 00288000
  289. *CERTAIN ERRORS DURING I/O ARE CONSIDERED FATAL AND * 00289000
  290. *THE FORMAT FUNCTION IS ABORTED. OTHER I/O ERRORS ARE TREATED AS SOFT * 00290000
  291. *ERRORS; AT THE END OF A RUN THE NUMBER OF "SOFT ERROR" RECORDS 00291000
  292. *IS PRINTED OUT. 00292000
  293. *FOR LABELLING VOLUME LABELS MUST BE SIX CHARACTERS IN LENGTH. * 00293000
  294. *THE ALLOCATION FUNCTION OF THIS PROGRAM SIMPLY PROMPTS FOR THE TYPE * 00294000
  295. *OF ALLOCATION AND UPDATES RECORD FOUR ON CYL 0 HEAD 0. * 00295000
  296. *********************************************************************** 00296000
  297. DMKFMT START 1536 00297000
  298. BALR R15,0 FIRST BASE REG 15 00298000
  299. USING PSA,R0 00299000
  300. USING *,R15,R12,R11,R13 @V2A2029 00300000
  301. LA R12,2048(R15) LOAD R12 00301000
  302. LA R12,2048(R12) 00302000
  303. LA R11,2048(R12) 00303000
  304. LA R11,2048(R11) 00304000
  305. LA R13,2048(R11) @V2A2029 00305000
  306. LA R13,2048(R13) @V2A2029 00306000
  307. MVC 120(8),=A(0,IRA) SET UP IO NEW PSW 00307000
  308. LH R14,2 GET IPL DEVICE FROM I/O OLD PSW 00308000
  309. TIO 0(R14) CLEAR PENDING STATUS 00309000
  310. BC 2,*-4 LOOP IF BUSY @VA03149 00310000
  311. STH R14,IPLDEV SAVE IPL DEVICE 00311000
  312. MVC 104(8),PRNUPSW PROG NEW PSW 00312000
  313. MVC 112(8),MCNUPSW MACH CK NEW PSW 00313000
  314. MVC SAVEVOL1(96),OSLABEL SAVE OSLABEL INFORMATION D 00314000
  315. MVC SAVEFMT4(96),FMT4DATA SAVE CP'S FMT4 CONTENTS @V56BDA8 00315000
  316. MVC WKSEEK(118),SEEKA SAVE SEEK FIELDS @V2A2029 00316000
  317. MVC RNSTUF(96),R1STUF SAVE 2314 RECORD FIELDS 00317000
  318. MVC RNDATA(184),REC1 SAVE DASD RECORD FIELDS @V304498 00318000
  319. STMSG EQU * @V200731 00319000
  320. XC SAVE14(4),SAVE14 ZERO OUT FIELD @VA08188 00320000
  321. LA R4,TITLE PRINT TITLE 00321000
  322. BAL R14,WMSG PRINT TITLE MSG 00322000
  323. GETCARD MVC CAW(4),=A(CARDCCW) SET CAW 00323000
  324. MVC 120(8),CONSIRA SET UP NEW IO PSW 00324000
  325. TM CDSW2,X'FF' CARD SWITCH ON 00325000
  326. BZ NOCARD NO- BRANCH 00326000
  327. LH R10,IPLDEV IPL ADDRESS IN R10 @V2A2029 00327000
  328. TIO 0(R10) CLEAR STATUS @V2A2029 00328000
  329. BC 2,*-4 BRANCH BACK IF BUSY 00329000
  330. SIO 0(R10) START IPL DEVICE @V2A2029 00330000
  331. BC 8,XWAIT IF STARTED WAIT 00331000
  332. NOCARD MVC CDSW(2),=X'0000' CLEAR CARD SWITCHES 00332000
  333. XC ALLOSW,ALLOSW CLEAR ALLOCATION SW USED IN CARD MOD 00333000
  334. XC ALLOERR,ALLOERR CLEAR ALLOCATION ERROR SW -CARD MODE 00334000
  335. B SELECT NO, USE CONSOLE 00335000
  336. IRA EQU * @V200731 00336000
  337. TM PARM2,X'80' IS NOT OPERATIONAL INDICATED @V200731 00337000
  338. BO CONPARM YES, GO TEST FOR CORRECT DEVICE @V200731 00338000
  339. TM CSW+4,UC IS UNIT CHECK INDICATED ? @V200731 00339000
  340. BZ CONSINT NO, GO TO ERROR HANDLER @V200731 00340000
  341. CONPARM EQU * @V200731 00341000
  342. NI PARM2,X'FF'-X'80' MASK OFF DEVICE NOT @V200731 00342000
  343. * OPERATIONAL 00343000
  344. TM PARM,PARM321 IS THIS A 3215/3210/1052 @V200731 00344000
  345. BO DDRLPSW YES, GO WAIT FOR I/O INTERRUPT @V200731 00345000
  346. TM PARM,PARM01F IS THIS ADDRESS 01F ? @V200731 00346000
  347. BO TESTGRAP YES, GO CHECK FOR GRAPHIC @V200731 00347000
  348. * DEVICE ? 00348000
  349. OI PARM,PARM01F SET INDICATOR FOR 01F @V200731 00349000
  350. MVI CONSOL+1,X'1F' SET THE ADDRESS TO 01F @V200731 00350000
  351. B STMSG GO TRY THIS ADDRESS - 01F @V200731 00351000
  352. TESTGRAP EQU * @V200731 00352000
  353. TM PARM,PARMGRP IS THIS A GRAPHIC DEVICE ? @V200731 00353000
  354. BO TES3270T YES, GO TEST FOR 3270 DEVICE @V200731 00354000
  355. OI PARM,PARMGRP+PARMCLE SET GRAPHIC & ERASE @V200731 00355000
  356. * INDICATORS 00356000
  357. MVC 120(8),=A(0,CONRET) CHANGE THE I/O NEW PSW @V200731 00357000
  358. DDRLPSW EQU * @V200731 00358000
  359. LPSW WAITCON WAIT FOR I/O INTERRUPT @V200731 00359000
  360. TES3270T EQU * @V200731 00360000
  361. TM PARM,PARMGRP+PARM327 IS THIS A 3270 DEVICE ? @V200731 00361000
  362. BO TEST3278 YES, GO CHECK IF 3278 @V60A6B6 00362000
  363. OI PARM,PARM327 SET THE 3270 INDICATOR @V60A6B6 00363000
  364. *********************************************************************** 00364000
  365. * THE FOLLOWING WILL ENSURE THE CORRECT LINE/COL LOCATIONS FOR 3277 * 00365000
  366. * DATA STREAMS. THIS IS A 24 LINE OPERATOR CONSOLE SCREEN. * 00366000
  367. *********************************************************************** 00367000
  368. MVC LAB3270A+2(2),ADDR1 @V60A6B6 00368000
  369. MVC LAB3270A+8(2),ADDR2 @V60A6B6 00369000
  370. MVC LAB3270B+2(2),ADDR1 @V60A6B6 00370000
  371. MVC LAB3270B+8(2),ADDR2 @V60A6B6 00371000
  372. MVC LAB3270C+2(2),ADDR2 @V60A6B6 00372000
  373. MVC LAB3270D+2(2),ADDR1 @V60A6B6 00373000
  374. MVC LAB3270E+5(2),ADDR1 @V60A6B6 00374000
  375. MVC LAB3270E+12(2),ADDR2 @V60A6B6 00375000
  376. MVC ADDR5,ADDR6 @V60A6B6 00376000
  377. MVC MAXLEN,LEN3270 @V60A6B6 00377000
  378. B STMSG GO TRY THIS ADDRESS WITH @V60A6B6 00378000
  379. * GRAPHIC SUPPORT 00379000
  380. TEST3278 EQU * @V60A6B6 00380000
  381. CLC LAB3270A+2(2),ADDR3 HAVE WE TRIED 3278 LOGIC @V60A6B6 00381000
  382. BE TEST3215 MUST BE 3210-3215-1052 @V60A6B6 00382000
  383. *********************************************************************** 00383000
  384. * THE FOLLOWING WILL ENSURE THE CORRECT LINE/COL LOCATIONS FOR 3278 * 00384000
  385. * MOD2A DATA STREAMS. THIS IS A 20 LINE OPERATOR CONSOLE SCREEN. * 00385000
  386. *********************************************************************** 00386000
  387. MVC LAB3270A+2(2),ADDR3 @V60A6B6 00387000
  388. MVC LAB3270A+8(2),ADDR4 @V60A6B6 00388000
  389. MVC LAB3270B+2(2),ADDR3 @V60A6B6 00389000
  390. MVC LAB3270B+8(2),ADDR4 @V60A6B6 00390000
  391. MVC LAB3270C+2(2),ADDR4 @V60A6B6 00391000
  392. MVC LAB3270D+2(2),ADDR3 @V60A6B6 00392000
  393. MVC LAB3270E+5(2),ADDR3 @V60A6B6 00393000
  394. MVC LAB3270E+12(2),ADDR4 @V60A6B6 00394000
  395. MVC ADDR5,ADDR7 @V60A6B6 00395000
  396. MVC MAXLEN,LEN3278 @V60A6B6 00396000
  397. B STMSG GO TRY THIS ADDRESS WITH @V200731 00397000
  398. * GRAPHIC SUPPORT 00398000
  399. TEST3215 EQU * @V200731 00399000
  400. MVI PARM,PARM321 SET THE 3210-3215-1052 FLAG @V200731 00400000
  401. B STMSG GO TRY THIS ADDRESS WITH 3215 @V200731 00401000
  402. * SUPPORT 00402000
  403. CONRET EQU * @V200731 00403000
  404. MVC CONSOL(2),58 GET THE DEVICE ADDRESS @V200731 00404000
  405. MVC 120(8),=A(0,IRA) CHANGE THE I/O NEW PSW @V200731 00405000
  406. B STMSG GO TRY THIS ADDRESS @V200731 00406000
  407. EJECT 00407000
  408. *********************************************************************** 00408000
  409. * * * 00409000
  410. * * START PROMPTING HERE * 00410000
  411. * * * 00411000
  412. *********************************************************************** 00412000
  413. SPACE 1 00413000
  414. SPACE 1 00414000
  415. *********************************************************************** 00415000
  416. * * FORMAT OR ALLOCATE ? * 00416000
  417. *********************************************************************** 00417000
  418. SPACE 1 00418000
  419. SELECT LA R4,FORA SET UP TO PRINT FORMAT OR ALLO 00419000
  420. BAL R14,WMSG FORMAT OR ALLOCATE MSG 00420000
  421. MVI FLAG,X'00' CLEAR FLAG BTYE 00421000
  422. BAL R14,RMSG GO READ RESPONSE 00422000
  423. TM CSW+4,UE UNIT EXCEPTION OR UNIT CK 00423000
  424. BO SELECT YES,BRANCH 00424000
  425. XC FIELDA,FIELDA CLEAR FIELDA 00425000
  426. XC FIELDB,FIELDB CLEAR FIELDB 00426000
  427. BAL R14,LNGCALC GET WORD LENGTH @VA05542 00427000
  428. BNZ SELECT BR IF LENGTH = 0 OR GT 8 @VA05542 00428000
  429. EX R4,TSTALLOC HOW ABOUT ALLOCATE ? @VA05542 00429000
  430. BE ALLOC IF SO, HANDLE IT .... @VA05542 00430000
  431. EX R4,TSTFRMT IS IT FORMAT ? @VA05542 00431000
  432. BNE SELECT IF NOT, TRY AGAIN @VA05542 00432000
  433. FORM MVC FLAG(1),COMWOK SET FLAG TO 'F' 00433000
  434. LA R4,FMTMSG SET UP MESSAGE 00434000
  435. BAL R14,WMSG WRITE MESSAGE 00435000
  436. B DEVICEAD GO GET DEVICE ADDRESS 00436000
  437. ALLOC MVC FLAG(1),COMWOK SET FLAG TO 'A' 00437000
  438. LA R4,ALLOCMSG SET UP ALLOCATE MESSAGE 00438000
  439. BAL R14,WMSG WRITE MESSAGE 00439000
  440. EJECT 00440000
  441. *********************************************************************** 00441000
  442. * * GET DEVICE ADDRESS * 00442000
  443. *********************************************************************** 00443000
  444. SPACE 1 00444000
  445. DEVICEAD LA R4,ADDRESS REQUEST DEVICE ADDRESS 00445000
  446. BAL R14,WMSG WRITE MESSAGE 00446000
  447. BAL R14,RMSG READ RESPONSE 00447000
  448. TM CSW+4,UE CANCEL KEY OR UNIT CHECK 00448000
  449. *********************************************************************** 00449000
  450. * NOTE-UNIT EXCEPTION WAS OR'ED ON IF UNIT CK OCCURRED DURING RD 00450000
  451. *********************************************************************** 00451000
  452. BO DEVICEAD TRY AGAN IF CANCEL 00452000
  453. OC INDATA(4),BLANKS8 CONVERT TO UPPER CASE @VM08604 00453000
  454. CLI INDATA+3,X'40' ANYTHING EXTRA ? @VM08604 00454000
  455. BNE DEVICEAD YES, GO ISSUE DEVICE MESSAGE @VM08604 00455000
  456. MVC WR1+16(3),INDATA MOVE IN THE DEV ADD 00456000
  457. MVC ALLEND+8(3),INDATA MOVE DEVICE ADD INTO MESSAGES 00457000
  458. MVC IOERR+21(3),INDATA MOVE DEVICE ADD INTO MESSAGES 00458000
  459. MVC IPLERROR+17(3),INDATA MOVE DEVICE ADD INTO MESSAGE 00459000
  460. LA R9,3 PUT MESSAGE LENGTH IN REG9 00460000
  461. LA R8,INDATA ADDRESS OF INPUT IN R8 00461000
  462. BAL R7,XBIN GO TO HEX CONVERTION RTN 00462000
  463. LTR R10,R10 WAS IT BAD HEX ADDRESS 00463000
  464. BM DEVICEAD YES, TRY AGAN 00464000
  465. STH R10,DSKADD SAVE HEX DEVICE ADDRESS 00465000
  466. MVC CAW(4),=A(CCWSENSE) SET THE CAW. @VM08604 00466000
  467. SIO 0(R10) IS IT THERE?? @VM08604 00467000
  468. BC 1,NOTHERE NOPE - ARGH. @VM08604 00468000
  469. TIO 0(R10) YES - DRAIN THE INT. @VM08604 00469000
  470. BC 2,*-4 . . . @VM08604 00470000
  471. TM SENSE,X'40' INTERVENTION REQD (DISK NOT @V56BDA8 00471000
  472. * READY OR PACK NOT MOUNTED)? 00472000
  473. BZ DEVTYPE NO, IT'S READY. @V56BDA8 00473000
  474. NOTHERE EQU * @VM08604 00474000
  475. LA R4,WR1 NO,SET UP NOT AVAILABLE MESSAGE 00475000
  476. BAL R14,WMSG WRITE MESSAGE 00476000
  477. DVCAGAIN TM CDSW2,X'FF' IS SW ON? @V56BDA8 00477000
  478. BO BADINPUT IF ON BRANCH 00478000
  479. B DEVICEAD GIVE HIM A CHANCE TO ENTER @V56BDA8 00479000
  480. * CORRECTED ADDRESS OR TO READY THE 00480000
  481. * DEVICE AND RE-ENTER SAME ADDRESS. 00481000
  482. EJECT 00482000
  483. *********************************************************************** 00483000
  484. * * GET DEVICE TYPE * 00484000
  485. *********************************************************************** 00485000
  486. SPACE 1 00486000
  487. DEVTYPE LA R4,TYPMSG SET UP TO TYPE MESSAGE 00487000
  488. BAL R14,WMSG WRITE MESSAGE 00488000
  489. BAL R14,RMSG READ RESPONSE 00489000
  490. TM CSW+4,UE CANCEL KEY OR UNIT CHECK? 00490000
  491. BO DEVTYPE YES, TRY AGAN 00491000
  492. OC INDATA(8),BLANKS8 CONVERT TO UPPERCASE @VM08604 00492000
  493. CLC INDATA(5),=C'2314 ' WAS DEVICE 2314 ? @VM08604 00493000
  494. BE SAME YES,GO TO DISK 00494000
  495. CLC INDATA(5),=C'2319 ' IS THIS A 2319 ? @VM08604 00495000
  496. SAME MVC HIVALUE,=H'202' HI CYL ADDRESS 00496000
  497. MVI RECVALUE,X'20' HIGHER RECORD 00497000
  498. MVC GO(8),OFF3330 CHANGE CCW'S FOR 2314 00498000
  499. MVI TYPE,X'14' SAVE TYPE 00499000
  500. BE DISK YES, GO DISK 00500000
  501. CLC INDATA(5),=C'3350 ' IS THIS A 3350 ? @V304498 00501000
  502. MVC HIVALUE,=H'554' HI CYL ADDRESS @V304498 00502000
  503. MVI RECVALUE,X'78' HIGHEST RECORD NUMBER @V304498 00503000
  504. MVI TYPE,TYP3350 ASSIGN 3350 TYPE CODE @V304498 00504000
  505. BE DISK YES, FORMAT 3350 @V304498 00505000
  506. CLC INDATA(8),=C'3330-11 ' IS IT A 3330 MOD 11 ? @VM08604 00506000
  507. MVC HIVALUE,=H'807' HIGH CYLINDER ADD FOR A 3330 @V200528 00507000
  508. * MOD 11 00508000
  509. MVI RECVALUE,X'3C' HIGHEST RECORD IS 60 FOR TEST 00509000
  510. MVC WR57,OFF57WRT SET WRITE CCW'S TO READ 12 RECORDS 00510000
  511. MVC RD57,OFF57RD SET READ CCW'S 12 RECORD 00511000
  512. MVC GO(8),ON3330 CHANGE CCW FOR 3330 2305 00512000
  513. MVI TYPE,X'30' SAVE TYPE 00513000
  514. BE DISK YES,GO DISK 00514000
  515. CLC INDATA(5),=C'3330 ' @VM08604 00515000
  516. MVC HIVALUE,=H'403' HI CYL ADDRESS @V200528 00516000
  517. BE DISK YES,GO TO DISK @V200528 00517000
  518. MVI RECVALUE,X'18' HIGHEST RECORD NUMBER @V2A2029 00518000
  519. MVC GO(8),ON3340 CHANGE CCW'S FOR 3340 @V2A2029 00519000
  520. MVI TYPE,TYP334X SAVE TYPE FOR 3340/3344. @V56BDA8 00520000
  521. CLC INDATA(L8),=C'3340-35 ' IS IT 3340 (35MB) PACK? @V56BDA8 00521000
  522. MVC HIVALUE,=H'347' HIGH ADDRESS FOR 35MB. @V56BDA8 00522000
  523. BE DISK YES, 3340-35. @V56BDA8 00523000
  524. CLC INDATA(L8),=C'3340-70 ' 3340 (70MB) OR 3344? @V56BDA8 00524000
  525. BNE NOT3340 NOT 3340/3344. TRY SOMETHING ELSE@V56BDA8 00525000
  526. * 00526000
  527. * USER SAYS 70MB PACK. SEE IF SENSE AGREES; WE WOULD NOT WANT 00527000
  528. * TO STUMBLE INTO THE ALTERNATE CYLINDER OF A 35MB PACK WHILE 00528000
  529. * THINKING WE ARE ON A 70MB PACK. WE WOULD ALSO NOT WANT TO 00529000
  530. * WRITE A 70MB ALLOCATION RECORD ON A 35MB PACK. 00530000
  531. * 00531000
  532. MVC HIVALUE,=H'695' HIGH ADDRESS FOR 70MB. @V56BDA8 00532000
  533. TM SENSE+2,X'01' IS IT A 35MB? @V56BDA8 00533000
  534. BZ DISK NO, SO IT MUST BE 70MB. @V56BDA8 00534000
  535. LA R4,MSG35MB SET UP FOR WRONG PACK MESSAGE. @V56BDA8 00535000
  536. BAL R14,WMSG WRITE MESSAGE. @V56BDA8 00536000
  537. B DVCAGAIN GO ASK HIM TO ENTER UNIT ADDRESS @V56BDA8 00537000
  538. * AGAIN, MAYBE HE GOOFED THERE. THAT 00538000
  539. * ALSO GIVES HIM A CHANCE TO SWITCH PACKS. 00539000
  540. * THEN WE RE-READ THE SENSE, THEN COME 00540000
  541. * HERE TO READ DEVTYPE AGAIN. 00541000
  542. SPACE 00542000
  543. NOT3340 DS 0H @V56BDA8 00543000
  544. MVC GO(8),ON3330 CHANGE CCW'S FOR 2305 @V2A2029 00544000
  545. CLC INDATA(7),=C'2305-1 ' IS IT 2305 MODEL 1 ? @VM08604 00545000
  546. MVC HIVALUE,=H'47' HI CYL ADDRESS 00546000
  547. MVI RECVALUE,X'18' HIGHEST RECORD 00547000
  548. MVI TYPE,X'51' MAKE TYPE 2305 M1 00548000
  549. BE DISK YES, BRANCH 00549000
  550. CLC INDATA(7),=C'2305-2 ' IS IT 2305 MODEL 2 ? @VM08604 00550000
  551. MVC HIVALUE,=H'95' HI CYL ADDRESS 00551000
  552. MVI RECVALUE,X'18' HIGHEST RECORD 00552000
  553. MVI TYPE,X'52' MAKE TYPE 2305 MODEL 2 00553000
  554. BNE DEVTYPE NONE-GET TYPE AGAN 00554000
  555. DISK CLI FLAG,C'F' IS IT FORMAT 00555000
  556. BE FORMALL YES,GET STARTING CYLINDER 00556000
  557. B LAB 00557000
  558. EJECT 00558000
  559. *********************************************************************** 00559000
  560. * * * 00560000
  561. * * PROGRAM CHECK ROUTINE * 00561000
  562. * * * 00562000
  563. *********************************************************************** 00563000
  564. SPACE 1 00564000
  565. PRCHK STM R0,R15,PCREGS SAVE REGRISTERS 0 TO 15 00565000
  566. UNPK WORK(9),PROPSW(5) * FILL IN THE PROGRAM 00566000
  567. UNPK WORK+8(9),PROPSW+4(5) * OLD PSW. 00567000
  568. TR WORK(16),TTAB-240 * 00568000
  569. MVC PCMSG+32(16),WORK * 00569000
  570. LA R4,PCMSG SET PROG CK MESSAGE 00570000
  571. BAL R14,WMSG WRITE MESSAGE 00571000
  572. LPSW WTPSW HARD WAIT 00572000
  573. SPACE 1 00573000
  574. *********************************************************************** 00574000
  575. * * * 00575000
  576. * * MACHINE CHECK ROUTINE * 00576000
  577. * * * 00577000
  578. *********************************************************************** 00578000
  579. SPACE 1 00579000
  580. MCRTN LA R4,MCMSG SET UP MACH CK MESSAGE 00580000
  581. BAL R14,WMSG WRITE MESSAGE 00581000
  582. LPSW WTPSW HARD WAIT 00582000
  583. SPACE 2 00583000
  584. LTORG 00584000
  585. EJECT 00585000
  586. * LNGCALC - CALCULATES LENGTH OF WORD IN FIELD "INDATA" 00586000
  587. * CC SET TO 0 IF 0< L'WORD <= 8 00587000
  588. * AND R4 = LENGTH -1 00588000
  589. * 00589000
  590. * ELSE CC ¬=0 AND R4 IS UNPREDICTABLE 00590000
  591. SPACE 00591000
  592. LNGCALC EQU * @VA05542 00592000
  593. ST R14,REGSAV SAVE CALLERS RETURN ADDRESS @VA05542 00593000
  594. OC INDATA(8),BLANKS8 SET TO UPPER CASE OR BLANKS @VA05542 00594000
  595. OC INDATA+8(2),BLANKS8 ..... @VA05542 00595000
  596. LA R14,INDATA SCAN FOR L'INPUT-DATA @VA05542 00596000
  597. LA R4,9 MAX LENGTH +1 @VA05542 00597000
  598. SCNWRD CLI 0(R14),X'40' BLANK ? @VA05542 00598000
  599. BE ENDSCN IF SO, END OF WORD @VA05542 00599000
  600. LA R14,1(,R14) NEXT BYTE PLEASE ..... @VA05542 00600000
  601. BCT R4,SCNWRD CONTINUE SCAN ..... @VA05542 00601000
  602. B EXCC1 GT 8, EXIT CC ¬= 0 @VA05542 00602000
  603. ENDSCN LR R14,R4 SAVE RESIDUAL LENGTH @VA05542 00603000
  604. LA R4,8 CALC LENGTH (-1) @VA05542 00604000
  605. SR R4,R14 LENGTH (-1) @VA05542 00605000
  606. BM EXCC1 BR IF NOTHING THERE @VA05542 00606000
  607. EX R4,MVCCOMW MOVE TO WORK AREA @VA05542 00607000
  608. TM *,X'00' SET CC = 0 @VA05542 00608000
  609. B LNGEXIT AND RETURN TO CALLER @VA05542 00609000
  610. EXCC1 TM *,X'FF' SET CC ¬= 0 @VA05542 00610000
  611. LNGEXIT L R14,REGSAV RESTORE CALLERS REGS @VA05542 00611000
  612. BR R14 AND RETURN ........... @VA05542 00612000
  613. EJECT 00613000
  614. *********************************************************************** 00614000
  615. * * * 00615000
  616. * * WRITE TO CONSOLE ROUTINE -R4 IS COUNT AND DATA POINTER * 00616000
  617. * * * 00617000
  618. *********************************************************************** 00618000
  619. SPACE 1 00619000
  620. WMSG CLI CDSW2,X'00' CARD SWITCH OFF? 00620000
  621. BE WMSG2 YES,BRANCH 00621000
  622. LA R14,0(,R14) CLEAR HIGH ORDER BYTE ....... @VA05542 00622000
  623. CL R14,SAVE14 IS R14 THE SAME? 00623000
  624. BE BADINPUT THE SAME BRANCH 00624000
  625. ST R14,SAVE14 STORE NEW R14 00625000
  626. ST R4,SAVE4 SAVE R4 00626000
  627. WMSG2 LH R10,CONSOL WRITE MESSAGE @V2A2029 00627000
  628. MVC WCCW+7(1),0(R4) SET DATA LENGTH IN CCW 00628000
  629. SR R9,R9 ZERO IT 00629000
  630. IC R9,0(,R4) PICK UP THE LENGTH 00630000
  631. LA R9,0(R9,R4) AND ADD IT TO THE MSG POINTER 00631000
  632. LA R4,1(R4) R4 NOW POINTS TO CCW DATA AREA 00632000
  633. ST R4,WCCW PUT ADDRESS OF DATA AREA IN CCW 00633000
  634. MVI WCCW,X'09' SET UP TO WRITE WITH CARR RETURN 00634000
  635. CLI 0(R9),C':' DO I WANT A REPLY 00635000
  636. BNE *+8 NO- WRITE WITH CARR RETURN 00636000
  637. MVI WCCW,X'01' SET UP TO WRITE WITHOUT CARR RETURN 00637000
  638. LA R9,WCCW R9 CONTAINS CCW ADDRESS 00638000
  639. STARTIO EQU * @V200731 00639000
  640. BAL R1,GRAPHID GO CHECK FOR GRAPHIC SUPPORT @V200731 00640000
  641. STARTIO1 EQU * @VM08604 00641000
  642. XC CSW,CSW CLEAR CSW FIELD @V200731 00642000
  643. ST R9,CAW SAVE CCW STRING ADDRESS IN CAW @V200731 00643000
  644. SIO 0(R10) START DEVICE @V2A2029 00644000
  645. BC 2,WAITIN GO START LOOP AGAIN @V200731 00645000
  646. BC 4,CSWSTOR GO TEST STATUS @V200731 00646000
  647. BC 1,NOTOPER GO INDICATE NOT OPERATIONAL @V200731 00647000
  648. WAITIN EQU * @V200731 00648000
  649. LPSW WAITCON WAIT FOR CONSOLE TO GIVE @V200731 00649000
  650. * INTERRUPT 00650000
  651. NOTOPER EQU * @V200731 00651000
  652. OI PARM2,X'80' SET NOT OPERATIONAL INDICATOR @V200731 00652000
  653. B IRA GO GET DEVICE ADDRESS @V200731 00653000
  654. CSWSTOR EQU * @V200731 00654000
  655. TM CSW+4,BUSY IS THE UNIT BUSY @V200731 00655000
  656. BZ LOOKATCE NO, GO LOOK AT CE @V200731 00656000
  657. TM CSW+4,DE+ATTN+CUE+CE IS THIS ENDING STATUS @V200731 00657000
  658. BNZ STUADD YES, GO STORE ADDRESS @V200731 00658000
  659. LPSW WAITCON WAIT FOR I/O INTERRUPT @V200731 00659000
  660. LOOKATCE EQU * @V200731 00660000
  661. TM CSW+4,CE IS THIS CHANNEL END @V200731 00661000
  662. BZ STUADD NO, GO STORE ADDRESS @V200731 00662000
  663. LA R1,8(,R9) GET THE ADDRESS OF THE FIRST @V200731 00663000
  664. * CCW +8 00664000
  665. ST R1,CSW SAVE ADDRESS IN CSW @V200731 00665000
  666. STUADD EQU * @V200731 00666000
  667. TM CSW+4,CUE IS THIS A CONTROL UNIT END ? @VM08604 00667000
  668. BO STARTIO1 YES, GO RESTART I/O OPERATION @VM08604 00668000
  669. STH R10,58 SAVE THE INTERRUPT DEVICE @V2A2029 00669000
  670. B IRA GO TO INTERRUPT HANDLER @V200731 00670000
  671. WCCW CCW 1,TITLE,CC+SILI,1 CCW FOR WRITING TO CONSOLE 00671000
  672. CCW 3,0,SILI,1 NOP TO ASSURE COMPLETION 00672000
  673. EJECT 00673000
  674. *********************************************************************** 00674000
  675. * * * 00675000
  676. * * READ CONSOLE INPUT R5 CONTAINS COUNT * 00676000
  677. * * * 00677000
  678. *********************************************************************** 00678000
  679. SPACE 1 00679000
  680. RMSG TM CDSW2,X'FF' IS CARD SWITCH ON ? 00680000
  681. BO GETDATA YES, BRANCH 00681000
  682. LH R10,CONSOL R10 CONTAINS CONSOLE ADDRESS @V2A2029 00682000
  683. XC INDATA(80),INDATA CLEAR ROOM ENOUGH TO WORK @VM08604 00683000
  684. LA R9,RCCW PUT CCW ADDRESS INTO CAW 00684000
  685. B STARTIO GO ISSUE SIO @V200731 00685000
  686. GETDATA XC INDATA+1(12),INDATA+1 CLEAR BUT 1ST POSITION 00686000
  687. CLC SAVE4,=A(FORA) IS IT FORMAT OR ALLOCATE? 00687000
  688. MVC INDATA(8),CDFORA MOVE IN FORMAT OR ALLOCATE 00688000
  689. BE GETBACK YES,BRANCH 00689000
  690. CLC SAVE4,=A(ADDRESS) DEVICE ADDRESS 00690000
  691. MVC INDATA(8),CDADD PASS DATA CONSOLE READ 00691000
  692. BE GETBACK YES,BRANCH 00692000
  693. CLC SAVE4,=A(TYPMSG) IS IT DEV TYPE 00693000
  694. MVC INDATA(8),CDTYPE PASS DATA CONSOLE READ 00694000
  695. BE GETBACK YES,BRANCH 00695000
  696. CLC SAVE4,=A(RDLAB) IS IT LABEL 00696000
  697. MVC INDATA(8),CDLABEL PASS DATA CONSOLE READ 00697000
  698. BE GETBACK YES,BRANCH 00698000
  699. CLC SAVE4,=A(STCYL) IS IT START CYL? 00699000
  700. MVC INDATA(8),CDSTART PASS DATA CONSOLE READ 00700000
  701. BE GETBACK YES,BRANCH 00701000
  702. CLC SAVE4,=A(ENDCYL) IS IT END CYL? 00702000
  703. MVC INDATA(8),CDLAST PASS DATA CONSOLE READ 00703000
  704. BE GETBACK YES,BRANCH 00704000
  705. CLC SAVE4,=A(ALMSG1) IS IT ALLOCATION? 00705000
  706. MVC INDATA(4),CDFORA MOVE ALLOCATION TYPE 00706000
  707. MVC INDATA+5(3),CDADD MOVE IN ALLO START CYL 00707000
  708. MVC INDATA+9(3),CDTYPE MOVE IN ALLOCATION END CYL 00708000
  709. BE GETBACK YES,BRANCH 00709000
  710. B BY NO RESPONSE NEEDED 00710000
  711. GETBACK ST R14,REGSAV SAVE R14 00711000
  712. MVC ANSWER,INDATA SET UP INDATA TO PRINT 00712000
  713. LA R4,RESPONSE ADDRESS OF MESSAGE INTO R4 00713000
  714. BAL R14,WMSG2 WRITE MESSAGE 00714000
  715. L R14,REGSAV RESTORE R14 00715000
  716. BY LA R14,8(R14) UP R14 TO BYPASS TEST FOR UE 00716000
  717. BR R14 BRANCH BACK 00717000
  718. EJECT 00718000
  719. ******************************************************************** 00719000
  720. GRAPHID EQU * @V200731 00720000
  721. TM PARM,PARMGRP IS THE GRAPHIC INDICATOR ACTIVE ?@V200731 00721000
  722. BCR 8,R1 NO, GO START THE I/O REQUEST @V200731 00722000
  723. STM R14,R5,GRAPHSAV SAVE THE REGISTERS @V200731 00723000
  724. LR R4,R9 GET THE ADDRESS OF THE CCW STRING@V200731 00724000
  725. GETCCW EQU * @V200731 00725000
  726. LH R3,6(R4) GET THE DATA COUNT FROM THE CCW @V200731 00726000
  727. STM R3,R4,SAVEAREA SAVE THE DATA REGISTERS @V200731 00727000
  728. NI PARM,X'FF'-(PARMREA+PARMNDA) CLEAR THE READ @V200731 00728000
  729. * REQUEST 00729000
  730. * AND NO DATA INDICATOR 00730000
  731. LA R2,5 SET THE LOOP COUNT @V200731 00731000
  732. LA R14,TABLGRAP GET THE ADDRESS OF THE COMMAND @V200731 00732000
  733. * OP TABLE 00733000
  734. ICM R5,1,0(R4) GET THE OP CODE @V200731 00734000
  735. CCWEXEC EQU * @V200731 00735000
  736. EX R5,CLIP TEST THE COMMAND OP CODE WITH @V200731 00736000
  737. * TABLE CODE 00737000
  738. BE GRAPHADD YES, FOUND THE COMMAND OP CODE @V200731 00738000
  739. LA R14,4(R14) UPDATE THE ADDRESS IN THE TABLE @V200731 00739000
  740. BCT R2,CCWEXEC GO TEST THE NEXT OP CODE @V200731 00740000
  741. B STMSG INVALID OP CODE - GO EXIT @V200731 00741000
  742. CLIP CLI 0(R14),X'00' TEST THE OP CODE IN THE TABLE @V200731 00742000
  743. GRAPHADD EQU * @V200731 00743000
  744. ICM R2,7,1(R14) GET THE ADDRESS OF THE OP CODE @V200731 00744000
  745. * ROUTINE 00745000
  746. BR R2 GO TO THE ROUTINE @V200731 00746000
  747. SPACE 2 00747000
  748. READ66 EQU * @V200731 00748000
  749. OI PARM,PARMREA+PARMATT INDICATE READ AND ATTENTION@V200731 00749000
  750. * REQUESTS 00750000
  751. LA R14,GRAPHIC0 RETURN ADDRESS FROM I/O HANDLER @V200731 00751000
  752. XC BLNKLINE(140),BLNKLINE CLEAR THE READ AREA @VM08604 00752000
  753. MVI CSW+4,X'00' CLEAR THE CSW STATUS @V200731 00753000
  754. XC RDMIDATA(6),RDMIDATA CLEAR THE READ DATA FIELD @V200731 00754000
  755. MVC CPXYSTAT(20),REALABEL @V200731 00755000
  756. LA R9,REQREAD GET THE ADDRESS OF THE CHANNEL @V200731 00756000
  757. * PROGRAM 00757000
  758. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00758000
  759. BCR 8,R1 NO, GO ISSUE SIO @V200731 00759000
  760. LA R9,REQREAD1 GET THE ADDRESS OF THE CHANNEL @V200731 00760000
  761. * PROGRAM 00761000
  762. BR R1 GO TO THE I/O HANDLER @V200731 00762000
  763. SPACE 2 00763000
  764. WRT66 EQU * @V200731 00764000
  765. MVC CPXYSTAT(20),RUNLABEL @V200731 00765000
  766. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00766000
  767. BO YES3270 YES, GO TO 3270 SUPPORT @V200731 00767000
  768. MVC WRT3066+1(3),1(R4) GET THE MESSAGE ADDRESS @V200731 00768000
  769. STH R3,WRT3066+6 SAVE THE DATA COUNT IN THE CCW @V200731 00769000
  770. LA R9,WRTCRTXY GET THE ADDRESS OF THE CHANNEL @V200731 00770000
  771. * PROGRAM 00771000
  772. TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 00772000
  773. BZ GRAPWRT NO, GO TO SIO SECTION @V200731 00773000
  774. LA R9,ERSE3066 GET THE ADDRESS OF THE CHANNEL @V200731 00774000
  775. * PROGRAM 00775000
  776. MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 00776000
  777. GRAPWRT EQU * @V200731 00777000
  778. LA R14,GRAPHIC1 RETURN ADDRESS FROM I/O HANDLER @V200731 00778000
  779. BR R1 GO TO THE I/O HANDLER @V200731 00779000
  780. YES3270 EQU * @V200731 00780000
  781. SR R14,R14 CLEAR REGISTER 14 @V200731 00781000
  782. LA R9,WRTCRT70 GET THE ADDRESS OF THE CHANNEL @V200731 00782000
  783. * PROGRAM 00783000
  784. TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 00784000
  785. BZ NOCL3270 NO, DON'T CLEAR SCREEN @V200731 00785000
  786. MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 00786000
  787. LA R9,ERSE3270 GET THE ADDRESS OF THE CHANNEL @V200731 00787000
  788. * PROGRAM 00788000
  789. NOCL3270 EQU * @V200731 00789000
  790. IC R14,SBADDR GET THE CURRENT LINE POINTER @V200731 00790000
  791. SLL R14,1 SETUP THE INDEX INTO THE TABLE @V200731 00791000
  792. LH R14,TABLE70(R14) GET THE LINE ADDRESS @V200731 00792000
  793. STCM R14,3,LAB3270+2 SAVE THE CURRENT LINE POINTER @V200731 00793000
  794. MVC WRTCR70+1(3),1(R4) GET THE MESSAGE ADDRESS @V200731 00794000
  795. STH R3,WRTCR70+6 SAVE THE BYTE COUNT IN THE CCW @V200731 00795000
  796. B GRAPWRT GO GET THE RETURN ADDRESS @V200731 00796000
  797. SPACE 2 00797000
  798. GRAPHIC1 EQU * @V200731 00798000
  799. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 00799000
  800. NI PARM,X'FF'-PARMCLE CLEAR THE ERASE INDICATOR @V200731 00800000
  801. SR R2,R2 CLEAR REGISTER 2 @V200731 00801000
  802. IC R2,SBADDR GET THE Y COORDINATE @V200731 00802000
  803. LA R2,1(R2) UPDATE THE Y COORDINATE @V200731 00803000
  804. CH R3,=H'80' IS THE DATA COUNT LONGER THAN 1 @V200731 00804000
  805. * LINE 00805000
  806. BNH *+8 NO, GO SAVE Y COORDINATE @V200731 00806000
  807. LA R2,1(R2) UPDATE THE Y COORDINATE AGAIN @V200731 00807000
  808. STC R2,SBADDR SAVE THE Y COORDINATE @V200731 00808000
  809. MH R2,=H'80' GET THE BYTE LENGTH @V200731 00809000
  810. L R14,=F'2640' GET THE MAX. LENGTH @V200731 00810000
  811. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00811000
  812. BZ TEST3066 NO, GO TEST FOR END OF CRT @V200731 00812000
  813. L R14,MAXLEN GET THE MAX. LEN FOR 3270/3278 @V60A6B6 00813000
  814. TEST3066 EQU * @V200731 00814000
  815. CR R2,R14 IS THE Y COORDINATE AT THE END @V200731 00815000
  816. * OF THE 00816000
  817. * CRT 00817000
  818. BL RETWORD NO, CHECK FOR CMD CHAINING @VA08599 00818000
  819. OI PARM,PARMATT SET THE ATTENTION REQUEST @V200731 00819000
  820. MVI CSW+4,X'00' CLEAR THE CSW STATUS @V200731 00820000
  821. MVC CPXYSTAT(20),MORLABEL @V200731 00821000
  822. LA R14,GRAPHIC3 RETURN ADDRESS FROM I/O HANDLER @V200731 00822000
  823. LA R9,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 00823000
  824. * PROGRAM 00824000
  825. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00825000
  826. BCR 8,R1 NO, GO ISSUE SIO @V200731 00826000
  827. LA R9,MORECCW1 GET THE ADDRESS OF THE CHANNEL @V200731 00827000
  828. * PROGRAM 00828000
  829. BR R1 GO ISSUE SIO @V200731 00829000
  830. GRAPHIC3 EQU * @V200731 00830000
  831. TM STAT,ATTN IS THE ATTENTION FLAG ACTIVE ? @VM08604 00831000
  832. BZ GRAPPSW NO, GO WAIT FOR AN ATTENTION @V200731 00832000
  833. * INTERRUPT 00833000
  834. NI PARM,X'FF'-PARMATT CLEAR THE ATTENTION INDICATOR@V200731 00834000
  835. CANCEL1 EQU * @V200731 00835000
  836. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 00836000
  837. MVI SBADDR,X'00' SET THE Y COORDINATE TO ZERO @V200731 00837000
  838. MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 00838000
  839. LA R9,CNCL3066 GET THE ADDRESS OF THE CHANNEL @V200731 00839000
  840. * PROGRAM 00840000
  841. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00841000
  842. BZ RETURNCN NO, GO GET RETURN ADDRESS @V200731 00842000
  843. LA R9,CNCL3270 GET THE ADDRESS OF THE CHANNEL @V200731 00843000
  844. * PROGRAM 00844000
  845. RETURNCN EQU * @V200731 00845000
  846. LA R14,READ66 GET THE ADDRESS OF THE READ @V200731 00846000
  847. * SECTION 00847000
  848. TM PARM,PARMREA IS THIS A READ REQUEST ? @V200731 00848000
  849. BCR 1,R1 YES, GO TO THE I/O HANDLER @V200731 00849000
  850. LA R14,RETWORD RETURN ADDRESS FROM I/O HANDLER @V200731 00850000
  851. BR R1 GO TO THE I/O HANDLER @V200731 00851000
  852. SPACE 1 00852000
  853. GRAPHIC0 EQU * @V200731 00853000
  854. TM STAT,ATTN IS THE ATTENTION FLAG ACTIVE ? @VM08604 00854000
  855. BO GRAPATTN YES, GO SETUP CCW FOR READ @V200731 00855000
  856. * MANUAL INPUT 00856000
  857. GRAPPSW EQU * @V200731 00857000
  858. LPSW WAITCON GO WAIT FOR INTERRUPT @V200731 00858000
  859. SPACE 1 00859000
  860. GRAPATTN EQU * @V200731 00860000
  861. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 00861000
  862. NI PARM,X'FF'-PARMATT CLEAR ATTENTION REQUEST @V200731 00862000
  863. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00863000
  864. BO YES3270A YES, GO TO 3270 SUPPORT @V200731 00864000
  865. STH R3,RD3066DA+6 STORE THE COUNT IN THE CCW @V200731 00865000
  866. MVC RD3066DA+1(3),1(R4) MOVE THE ADDRESS OF THE READ@V200731 00866000
  867. * BUFFER INTO THE CCW 00867000
  868. LA R9,RDMI3066 GET THE ADDRESS OF THE CHANNEL @V200731 00868000
  869. * PROGRAM 00869000
  870. RETURNAD EQU * @V200731 00870000
  871. LA R14,RET66MI RETURN ADDRESS FROM I/O HANDLER @V200731 00871000
  872. BR R1 GO TO THE I/O HANDLER @V200731 00872000
  873. YES3270A EQU * @V200731 00873000
  874. LA R14,6(R3) ADD 6 T0 THE TOTAL COUNT @V200731 00874000
  875. STH R14,RD3270DA+6 STORE THE COUNT IN THE CCW @V200731 00875000
  876. LA R14,BLNKLINE GET THE ADDRESS OF THE BUFFER @V200731 00876000
  877. STCM R14,7,RD3270DA+1 MOVE THE ADDRESS OF THE READ @V200731 00877000
  878. * BUFFER INTO THE CCW 00878000
  879. LA R9,RDMI3270 GET THE ADDRESS OF THE CHANNEL @V200731 00879000
  880. * PROGRAM 00880000
  881. B RETURNAD GO GET THE RETURN ADDRESS @V200731 00881000
  882. SPACE 2 00882000
  883. RET66MI EQU * @V200731 00883000
  884. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 00884000
  885. MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 00885000
  886. LA R9,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 00886000
  887. * PROGRAM 00887000
  888. LA R14,RETINPUT RETURN ADDRESS FROM I/O HANDLER @V200731 00888000
  889. TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00889000
  890. BO YES3270B YES, GO CHECK 3270 SUPPORT @V200731 00890000
  891. TM RDMIDATA+2,X'40' DID THE OPERATOR HIT THE @V200731 00891000
  892. * CANCEL KEY 00892000
  893. BO CANCEL1 YES, GO CLEAR SCREEN @V200731 00893000
  894. CLC RDMIDATA(2),SBAREAD DID THE CURSOR MOVE ? @V200731 00894000
  895. BCR 7,R1 YES, GO WRITE STATUS @V200731 00895000
  896. OI PARM,PARMNDA SET INDICATOR FOR NO DATA @V200731 00896000
  897. BR R1 GO WRITE OUT STATUS @V200731 00897000
  898. YES3270B EQU * @V200731 00898000
  899. CLI BLNKLINE,X'6E' DID THE OPERATOR HIT THE CANCEL @V200731 00899000
  900. * KEY 00900000
  901. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00901000
  902. CLI BLNKLINE,X'6D' DID THE OPERATOR HIT THE CLEAR @V200731 00902000
  903. * KEY 00903000
  904. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00904000
  905. CLI BLNKLINE,X'6C' DID OPERATOR HIT PA1 KEY @V200731 00905000
  906. BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00906000
  907. OI PARM,PARMNDA SET INDICATOR FOR NO DATA @V200731 00907000
  908. CLI BLNKLINE,X'01' DID OPERATOR HIT TEST REQ. KEY @VM08604 00908000
  909. BE ENT3270 YES, GO WRITE STATUS @VM08604 00909000
  910. CLI BLNKLINE,X'E6' IS THIS THE CARD READER @VM08604 00910000
  911. BE ENT3270 YES, GO WRITE STATUS @VM08604 00911000
  912. CLI BLNKLINE+6,X'00' DATA IN INPUT AREA ? @VM08604 00912000
  913. BNE DATA3270 YES, GO DISPLAY DATA @VM08604 00913000
  914. CLC BLNKLINE+1(2),ADDR5 DID CURSOR MOVE? @V60A6B6 00914000
  915. BE ENT3270 NO @V60A6B6 00915000
  916. DATA3270 EQU * @VM08604 00916000
  917. NI PARM,X'FF'-PARMNDA SET INDICATOR FOR NO DATA @V200731 00917000
  918. ICM R9,7,1(R4) GET ADDRESS OF USER'S BUFFER @V200731 00918000
  919. BCTR R3,R0 SUBTRACT ONE FROM COUNT (EX @V200731 00919000
  920. * INSTR.) 00920000
  921. EX R3,MOV3270 MOVE DATA INTO USER'S BUFFER @V200731 00921000
  922. ENT3270 EQU * @V200731 00922000
  923. LA R9,CRTWORD1 GET THE ADDRESS OF THE CHANNEL @V200731 00923000
  924. * PROGRAM 00924000
  925. BR R1 GO ISSUE SIO @V200731 00925000
  926. SPACE 2 00926000
  927. ********************************************************************* 00927000
  928. MOV3270 MVC 0(0,R9),BLNKLINE+6 MOVE THE DATA INTO THE @V200731 00928000
  929. * USER'S BUFFER 00929000
  930. ********************************************************************* 00930000
  931. SPACE 2 00931000
  932. RETINPUT EQU * @V200731 00932000
  933. LM R3,R4,SAVEAREA GET THE DATA REGISTERS @VM08531 00933000
  934. TM PARM,PARMNDA IS NO DATA INDICATED ? @VM08531 00934000
  935. BZ WRT66 NO, GO DISPLAY INPUT ON CRT @VM08531 00935000
  936. RETWORD EQU * @VM08531 00936000
  937. TM 4(R4),CC IS COMMAND CHAINING ON ? @VM08531 00937000
  938. LA R4,8(R4) UPDATE THE CCW ADDRESS TO NEXT @VM08531 00938000
  939. * CCW 00939000
  940. BO GETCCW YES, GET DATA COUNT FROM CCW @VM08531 00940000
  941. LM R14,R5,GRAPHSAV GET CALLER'S REGISTERS @VM08531 00941000
  942. BR R14 RETURN TO CALLER @VM08531 00942000
  943. EJECT 00943000
  944. *********************************************************************** 00944000
  945. * * * 00945000
  946. * * CARD AND CONSOLE I/O INTERRUPT ROUTINE 00946000
  947. * * * 00947000
  948. *********************************************************************** 00948000
  949. SPACE 1 00949000
  950. CONSINT CLC CONSOL(2),58 WAS A CONSOLE DEVICE 00950000
  951. BNE SELREAD IF NOT CONSOLE BRANCH 00951000
  952. MVC STAT(2),CSW+4 SAVE STATUS 00952000
  953. TIO 0(R10) CLEAR PENDING STATUS @V2A2029 00953000
  954. BC 2,*-4 LOOP IF BUSY @VA03149 00954000
  955. OC STAT(2),CSW+4 SAVE ANY STATUS 00955000
  956. TM STAT,ATTN IS THIS AN ATTENTION INTERRUPT ? @V200731 00956000
  957. BNO CONUNITE NO, GO CHECK FOR UNIT EXECPTION @V200731 00957000
  958. TM PARM,PARMGRP IS THE GRAPHIC SUPPORT ACTIVE ? @V200731 00958000
  959. BZ STMSG NO, GO CLEAR CARD FLAG @V200731 00959000
  960. TM PARM,PARMATT IS THIS A ATTENTION REQUEST ? @V200731 00960000
  961. BCR 1,R14 YES, GO CHECK FOR ATTENTION @V200731 00961000
  962. * INTERRUPT 00962000
  963. CONUNITE EQU * @V200731 00963000
  964. TM STAT,UC WAS THERE A UNIT CHECK 00964000
  965. BNO GOODSTA NO,BRANCH REG 14 00965000
  966. OI STAT,UE OR IN UNIT EXCEPTION TOO 00966000
  967. GOODSTA TIO 0(R10) WAIT FOR DEVICE END @V2A2029 00967000
  968. BC 7,*-4 LOOP UNTIL CLEAR 00968000
  969. OC CSW+4(2),STAT PUT BACK ALL THE STATUS 00969000
  970. TM CSW+4,CUE IS THIS CONTROL UNIT END @VM08604 00970000
  971. BO STARTIO1 GO RESTART I/O OPERATION @VM08604 00971000
  972. BR R14 BRANCH BACK 00972000
  973. SELREAD CLC IPLDEV(2),58 IS IT IPL DEV 00973000
  974. BNE XWAIT NO,WAIT 00974000
  975. TM CSW+5,X'BF' CHANNEL ERROR? 00975000
  976. BNZ ERRORMSG PRINT ERROR MSG 00976000
  977. TM CSW+4,UC IS IT UNIT CHECK? 00977000
  978. BO DETEST GO CHECK FOR CHAN END 00978000
  979. TM CSW+4,UE UNIT EXCEPTION? 00979000
  980. BO TESTDEV YES,BRANCH 00980000
  981. CLI CSW+4,CE+DE CH END DEV END? 00981000
  982. BE VALIDATE YES VALIDATE CARD 00982000
  983. TM CSW+4,CE IS IT CHANNEL END ONLY? 00983000
  984. BO DRAINDE GO DRAIN DEV END 00984000
  985. TM CSW+4,DE DEVICE END ONLY? 00985000
  986. BO GETCARD YES MUST BE DEV MADE READY 00986000
  987. B ERRORMSG PRINT ERROR MESSAGE 00987000
  988. DETEST TM CSW+4,CE IS IT CHAN END 00988000
  989. BO DRAINDE DRAIN DEVICE END 00989000
  990. B ERRORMSG PRINT ERROR MESSAGE 00990000
  991. DRAINDE TIO 0(R10) CLEAR DEVICE END @V2A2029 00991000
  992. BC 7,*-4 LOOP UNTIL CLEAR 00992000
  993. B ERRORMSG PRINT ERROR MESSAGE 00993000
  994. EJECT 00994000
  995. *********************************************************************** 00995000
  996. * * 00996000
  997. * VALIDATE CARD INPUT ROUTINE * 00997000
  998. * * 00998000
  999. *********************************************************************** 00999000
  1000. SPACE 1 01000000
  1001. VALIDATE MVI CDSW2,X'FF' TURN ON CARD SW 01001000
  1002. CLI CDINPUT,C'F' FORMAT? 01002000
  1003. BE ALLSCAN YES BRANCH 01003000
  1004. CLI CDINPUT,C'A' ALLOCATE? 01004000
  1005. BE ALLSCAN YES,BRANCH 01005000
  1006. CLI ALLOERR,X'FF' ALLOCATE ERROR? 01006000
  1007. BE GETCARD YES,GET NEXT CARD 01007000
  1008. CLI ALLOSW,X'FF' IS ALLOCATE SW ON? 01008000
  1009. BE ALLSCAN1 YES,BRANCH 01009000
  1010. B BADINPUT BAD INPUT 01010000
  1011. ALLSCAN CLI ALLOSW,X'FF' ALLOCATE OPERATION 01011000
  1012. BNE NOPRINT NO,NO PRINT 01012000
  1013. LA R4,TYPERR PRINT NO END CARD 01013000
  1014. BAL R14,WMSG WRITE MESSAGE 01014000
  1015. NOPRINT MVI ALLOSW,X'00' TURN ALLOCATE SW OFF 01015000
  1016. ALLSCAN1 MVI ALLOERR,X'00' TURN OFF ALLOCATE ERROR SW 01016000
  1017. LA R1,CDFORA-8 R1 ADDRESS OF OUTPUT AREA-8 01017000
  1018. LA R3,CDINPUT R3 POINTS TO CARD INPUT 01018000
  1019. XC CDFORA(56),CDFORA CLEAR OUTPUT AREA 01019000
  1020. NEWFIELD XR R2,R2 R2 TO ZERO 01020000
  1021. MVC DATA,0(R3) SAVE FIRST FIELD 01021000
  1022. CL R1,=A(CDLAST) IS R1 AT LAST FIELD? 01022000
  1023. BE ENDUP YES,BRANCH 01023000
  1024. SCAN CLI 0(R3),C' ' IS IT BLANK? 01024000
  1025. BE FIELD YES,BRANCH 01025000
  1026. CLI 0(R3),C',' IS IT A COMMA? 01026000
  1027. BE FIELD YES,BRANCH 01027000
  1028. LA R2,1(R2) ADD 1 01028000
  1029. LA R3,1(R3) ADD 1 01029000
  1030. B SCAN BRANCH 01030000
  1031. FIELD LA R1,8(R1) POINT TO NEXT FIELD 01031000
  1032. NR R2,R2 IS R2 ZERO? 01032000
  1033. BM NODEFALT BRANCH IF NOT DEFAULT 01033000
  1034. XC DATA,DATA CLEAR DATA 01034000
  1035. LA R2,8(R2) UP LENGTH TO 8 01035000
  1036. NODEFALT BCTR R2,0 SUBTRACT 1 R2 01036000
  1037. EX R2,MOVE PUT DATA IN OUTPUT FIELD 01037000
  1038. CLI 0(R3),C' ' BLANK MEANS END OF INPUT 01038000
  1039. BE ENDUP YES,GO END 01039000
  1040. LA R3,1(R3) ADD 1 TO R3 01040000
  1041. CLI 0(R3),C' ' NEXT POSITION BLANK? 01041000
  1042. BE ENDUP YES,NO MORE DATA 01042000
  1043. B NEWFIELD BRANCH 01043000
  1044. MOVE MVC 0(1,R1),DATA PUT DATA IN OUTPUT 01044000
  1045. ENDUP EQU * @VM08604 01045000
  1046. CLC 0(3,R3),BLANKS8 NEXT 3 POSITION BLANKS ? @VM08604 01046000
  1047. BNE BADINPUT NO,THAT'S BAD INPUT 01047000
  1048. CL R1,=A(CDSTART) IS LABEL ONLY OPERATION? 01048000
  1049. BE LCHECK GO CHECK INPUT 01049000
  1050. CL R1,=A(CDLAST) DID WE FILL LAST FIELD? 01050000
  1051. BE FCHECK YES,CHECK FOR FORMAT 01051000
  1052. CL R1,=A(CDLABEL) IS IT ALLOCATE OPERATOR 01052000
  1053. BE ACHECK CHECK FOR ALLOCATE 01053000
  1054. CLI ALLOSW,X'FF' IS SWITCH ON? 01054000
  1055. BNE BADINPUT NO,BAD 01055000
  1056. CL R1,=A(CDTYPE) LAST FIELD ALLOCATE END 01056000
  1057. BE REREAD YES,ALLOCATE 01057000
  1058. CL R1,=A(CDFORA) IS IT END CARD? 01058000
  1059. BE REREAD YES,BRANCH 01059000
  1060. B BADINPUT NONE OF ABOVE BADINPUT 01060000
  1061. LCHECK CLI CDSTART,C'L' IS LABEL ONLY? 01061000
  1062. BNE BADINPUT NO,BAD INPUT 01062000
  1063. FCHECK CLI CDFORA,C'F' IS IT FORMAT? 01063000
  1064. BE SELECT YES, DO THE TASK 01064000
  1065. B BADINPUT NO,BAD 01065000
  1066. ACHECK CLI CDFORA,C'A' IS IT ALLOCATE? 01066000
  1067. BNE BADINPUT NO,BAD 01067000
  1068. MVI ALLOSW,X'FF' TURN ON ALLOCATE SWITCH 01068000
  1069. B SELECT DO ALLOCATE 01069000
  1070. SPACE 3 01070000
  1071. *********************************************************************** 01071000
  1072. * * 01072000
  1073. * CARD ERROR ROUTINE * 01073000
  1074. * * 01074000
  1075. *********************************************************************** 01075000
  1076. SPACE 1 01076000
  1077. ERRORMSG XC ALLOSW,ALLOSW CLEAR ALLOCATE SWITCH 01077000
  1078. XC CDSW(2),CDSW " CARD " 01078000
  1079. XC ALLOERR,ALLOERR CLEAR ALLOCATE ERROR SWITCH 01079000
  1080. LA R4,IPLERROR IPL ERROR MESSAGE 01080000
  1081. BAL R14,WMSG PRINT MESSAGE 01081000
  1082. B XWAIT WAIT FOR CARD DEVICE INTERRUPT 01082000
  1083. TESTDEV CLI CDSW2,X'FF' IS SW ON? 01083000
  1084. BNE SELECT NO,USE CONSOLE 01084000
  1085. XC CDSW(2),CDSW TURN OFF 2 SWITCHES 01085000
  1086. B NOCARD BRANCH 01086000
  1087. BADINPUT MVC CDSW(2),=X'0000' TURN OFF 2 SWITCHS 01087000
  1088. MVI ALLOERR,X'FF' TURN ON TO FLUSH NEXT GOOD CARD 01088000
  1089. XC ALLOSW,ALLOSW CLEAR ALLOCATE SWITCH 01089000
  1090. LA R4,BAD MSG ADDRESS IN R4 01090000
  1091. BAL R14,WMSG PRINT MSG 01091000
  1092. LA R4,CARDMESS PRINT BAD CARD 01092000
  1093. BAL R14,WMSG PRINT MSG 01093000
  1094. B STMSG BRANCH 01094000
  1095. SPACE 3 01095000
  1096. SPACE 1 01096000
  1097. CONSIRA DS 0D 01097000
  1098. DC X'00040000' 01098000
  1099. DC A(CONSINT) 01099000
  1100. CDFORA DC D'0' FOR OR ALLO 01100000
  1101. CDADD DC D'0' DEV ADDRESS 01101000
  1102. CDTYPE DC D'0' DEV TYPE 01102000
  1103. CDLABEL DC D'0' LABEL 01103000
  1104. CDSTART DC XL8'00' START CYL 01104000
  1105. CDLAST DC XL8'00' END CYL 01105000
  1106. DATA DC D'0' USED TO SAVE FIELD 01106000
  1107. DS 0D 01107000
  1108. CARDCCW CCW 02,CDINPUT,CC+SILI,80 IPL UNIT READ CCW 01108000
  1109. CCW 03,0,SILI,1 NOP 01109000
  1110. SAVE14 DC F'0' 01110000
  1111. SAVE4 DC F'0' SAVE R4 01111000
  1112. STAT DC H'0' 01112000
  1113. SAVSHIFT DC H'0' 01113000
  1114. LOSW DC X'00' 01114000
  1115. CDSW DC X'00' CARD SELECTION SW 01115000
  1116. CDSW2 DC X'FF' SECOND SEL SW 01116000
  1117. ALLOSW DC X'00' ALLOCATION ONLY INDICATOR 01117000
  1118. ALLOERR DC X'00' ALLOCATE ERROR INDIC. 01118000
  1119. CCHHR DC CL5'X' CCHHR DATA FOR MSG 01119000
  1120. HIVALUE DC H'00' 01120000
  1121. BEGIN DC H'00' 01121000
  1122. ENDING DC H'00' 01122000
  1123. PGCOUNT DC F'0' 01123000
  1124. SAVEIT DC 5F'0' 01124000
  1125. SAVFATAL DC 5F'0' 01125000
  1126. WORK DC 10F'0' WORK AREA @V2B3729 01126000
  1127. SAVEBIT DC X'0' 01127000
  1128. DS 0F 01128000
  1129. SEEK0 DC XL7'00' BBCCHHR 01129000
  1130. PCREGS DC 16F'0' 01130000
  1131. SENSE DC CL24' ' SENSE AREA @V2B3729 01131000
  1132. SPACE 1 01132000
  1133. * * CONSOLE READ CCW * 01133000
  1134. SPACE 1 01134000
  1135. RCCW CCW 10,INDATA,CC+SILI,80 READ CCW FOR CONSOLE @VM08604 01135000
  1136. CCW 3,0,SILI,1 NOP 01136000
  1137. CCWSENSE CCW 4,SENSE,SILI,24 SENSE CCW @V2B3729 01137000
  1138. EJECT 01138000
  1139. *********************************************************************** 01139000
  1140. * HEX TO BINARY ROUTINE R9=COUNT R10=OUTPUT R8=INPUT * 01140000
  1141. *********************************************************************** 01141000
  1142. SPACE 1 01142000
  1143. XBIN SR R10,R10 CLEAR REG 10 01143000
  1144. NEWNUM IC R4,0(R8) PUT CHAR INTO R4 01144000
  1145. N R4,=F'15' KEEP ONLY BITS 4TO7 OF 4TH BTYE 01145000
  1146. CLI 0(R8),X'F0' LOWER THAN F0 01146000
  1147. BC 4,ALPHA COULD BE ALPHA 01147000
  1148. CLI 0(R8),X'F9' IS IT GREATER THAN 9 01148000
  1149. BC 2,ERRORX IF GREATER ,ERROR 01149000
  1150. COMMON2 SLL R10,4 SHIFT LEFT 4 BITS 01150000
  1151. OR R10,R4 OR R4 INTO R10 01151000
  1152. LA R8,1(R8) ADD 1 TO REG 11 01152000
  1153. BCT R9,NEWNUM LOOP IF MORE TO CHECK 01153000
  1154. BR R7 GO WHENCE CAME YOU 01154000
  1155. ALPHA CLI 0(R8),X'C1' LOWER THAN A 01155000
  1156. BC 4,ERRORX IF LOWER THAT'S ERROR 01156000
  1157. CLI 0(R8),X'C6' IS NUMBER HIGHER THAN F 01157000
  1158. BC 2,ERRORX IF HIGHER ERROR 01158000
  1159. LA R4,9(R4) CHANGE 1 TO 6 INTO A TO F 01159000
  1160. B COMMON2 BRANCH 01160000
  1161. ERRORX ICM R10,8,FFS8 MAKES R10 NEGATIVE TO SHOW ERROR @VM08884 01161000
  1162. BR R7 GO WHENCE CAME YOU 01162000
  1163. SPACE 1 01163000
  1164. SPACE 1 01164000
  1165. *********************************************************************** 01165000
  1166. * * * 01166000
  1167. * * COME HERE IF FORMAT 2314,2319,3340,3330,3350,2305-1 AND 2305-2 01167000
  1168. * * * 01168000
  1169. *********************************************************************** 01169000
  1170. SPACE 1 01170000
  1171. *********************************************************************** 01171000
  1172. * * STARTING CYLINDER OR LABEL MESSAGE * 01172000
  1173. *********************************************************************** 01173000
  1174. SPACE 1 01174000
  1175. FORMALL MVI LOSW,X'00' INITIAL LABEL ONLY FLAG 01175000
  1176. LA R4,STCYL PUT CYLINDER IN MESSAGE 01176000
  1177. BAL R14,WMSG WRITE MESSAGE 01177000
  1178. BAL R14,RMSG READ RESPONSE 01178000
  1179. TM CSW+4,UE CANCEL OR UNIT CHECK 01179000
  1180. BO FORMALL YES,TRY AGAN 01180000
  1181. CLI INDATA,X'00' WAS IT EOB 01181000
  1182. MVC BEGIN,=X'0000' SET UP DEFAULT 01182000
  1183. BE NEXT IF DEFAULT GO ON 01183000
  1184. BAL R14,LNGCALC GET WORD LENGTH @VA05542 01184000
  1185. BNZ FORMALL IF LENGTH = 0 OR GT 8, TRY AGAIN @VA05542 01185000
  1186. EX R4,TSTLABL IS IT LABEL ? @VA05542 01186000
  1187. BE LAB YES,GO TO LABEL 01187000
  1188. MVC MASKB(3),MASKA SET UP F0'S IN MASKB 01188000
  1189. NC MASKB(3),INDATA AND F0'S WITH INDATA 01189000
  1190. CLC MASKB(3),MASKA IS MASK ALL NUMERIC 01190000
  1191. BNE FORMALL NO,TRY AGAN 01191000
  1192. CLI INDATA+3,X'40' ANYTHING EXTRA? @VM08604 01192000
  1193. BNE FORMALL YES - DO IT OVER AGAIN. @VM08604 01193000
  1194. PACK FIELDA+6(2),INDATA(3) IF ALL NUMERIC PACK INDATA 01194000
  1195. CVB R7,FIELDA CONVERT TO BINARY 01195000
  1196. CH R7,HIVALUE IS START CYL HIGHER THAN LAST 01196000
  1197. BH FORMALL YES,ERROR 01197000
  1198. STH R7,BEGIN BEGIN=CYL START ADDRESS 01198000
  1199. SPACE 3 01199000
  1200. *********************************************************************** 01200000
  1201. * END OF CYLINDER MESSAGE ROUTINE * 01201000
  1202. *********************************************************************** 01202000
  1203. SPACE 1 01203000
  1204. NEXT LA R4,ENDCYL USE END CYL MESSAGE 01204000
  1205. BAL R14,WMSG PRINT MESSAGE 01205000
  1206. BAL R14,RMSG READ RESPONSE 01206000
  1207. TM CSW+4,UE CANCEL KEY OR UNIT CHECK 01207000
  1208. BO NEXT YES,TRY AGAN 01208000
  1209. CLI INDATA,X'00' WAS DEFAULT SET 01209000
  1210. MVC ENDING,HIVALUE SAVE HIGHEST DEFAULT VALUE 01210000
  1211. BE LIMITS BRANCH IF DEFAULT 01211000
  1212. MVC MASKB(3),MASKA PUT F0'S INTO MASKB 01212000
  1213. NC MASKB(3),INDATA AND INDATA WITH F0'S 01213000
  1214. CLC MASKB(3),MASKA IS INDATA ALL NUMREIC 01214000
  1215. BNE NEXT NO, TRY AGAN 01215000
  1216. OC INDATA(4),BLANKS8 CONVERT TO UPPER CASE @VM08604 01216000
  1217. CLI INDATA+3,X'40' ANYTHING EXTRA? @VM08604 01217000
  1218. BNE NEXT YES - WE DON'T WANT IT... @VM08604 01218000
  1219. PACK FIELDA+6(2),INDATA(3) PACK INDATA 01219000
  1220. CVB R7,FIELDA CONVERT INDATA INTO BINARY 01220000
  1221. CH R7,HIVALUE END BEYOND LAST CYL? 01221000
  1222. BH NEXT YES,TRY AGAN 01222000
  1223. STH R7,ENDING SAVE ENDING ADRESS 01223000
  1224. LIMITS CLC BEGIN,ENDING IS BEGINING HIGHER THAN END 01224000
  1225. BH NEXT YES,-ERROR- TRY AGAN 01225000
  1226. SPACE 1 01226000
  1227. *********************************************************************** 01227000
  1228. * * ASK FOR LABEL INFORMATION * 01228000
  1229. *********************************************************************** 01229000
  1230. SPACE 1 01230000
  1231. LAB MVC LOSW(1),INDATA CHECK FIRST BYTE INDATA SAVED 01231000
  1232. LAB2 LA R4,RDLAB REQUEST VOLUME LABEL 01232000
  1233. BAL R14,WMSG WRITE MESSAGE 01233000
  1234. BAL R14,RMSG READ RESPONSE 01234000
  1235. TM CSW+4,UE CANCEL OR UNIT CHECK 01235000
  1236. BO LAB2 YES,TRY AGAN 01236000
  1237. OC INDATA(7),BLANKS8 CONVER TO UPPER CASE @VM08604 01237000
  1238. CLI INDATA+6,X'40' TOO MUCH DATA ENTER ? @VM08604 01238000
  1239. BNE LAB2 YES,BRANCH 01239000
  1240. CLI INDATA,C' ' FIRST BYTE BLANK 01240000
  1241. BE LAB2 YES- ERROR GO DO IT AGAN 01241000
  1242. EJECT 01242000
  1243. *********************************************************************** 01243000
  1244. * * LABEL ONLY ROUTINE * 01244000
  1245. * * PRINT LABELING COMPLETE * 01245000
  1246. *********************************************************************** 01246000
  1247. SPACE 1 01247000
  1248. XC SEEKA(6),SEEKA CLEAR CCW DATA AREA FOR R3 @V56BDA8 01248000
  1249. MVC CPLABEL,=X'009596958500' PLUG IN LOWER CASE LABEL 'NONE' 01249000
  1250. LA R9,LBLREC PUT LABEL CCW ADDRESS INTO R9 01250000
  1251. ST R9,CAW LABEL CCW ADDRESS INTO CAW 01251000
  1252. LH R5,DSKADD DEVICE ADDRESS INTO R5 01252000
  1253. TIO 0(R5) CLEAR STATUS OF DEVICE 01253000
  1254. BNZ *-4 IF NOT CLEAR TRY AGAN 01254000
  1255. SIO 0(R5) START DEVICE 01255000
  1256. TIO 0(R5) IS DEVICE DONE 01256000
  1257. BNZ *-4 NO,TRY AGAN 01257000
  1258. CLI LOSW,C'L' LABEL ONLY? 01258000
  1259. BE LABONLY YES BRANCH 01259000
  1260. CLI FLAG,C'A' IS IT ALLOCATE? @V56BDA8 01260000
  1261. BE LABMATCH VERIFY LABELS IF ALLOCATE @V56BDA8 01261000
  1262. CLC BEGIN,=X'0000' IS IT REGULAR FORMAT? @V56BDA8 01262000
  1263. BE FMT YES...CONTINUE @V56BDA8 01263000
  1264. LABMATCH CLC CPLABEL,INDATA DO LABELS MATCH @V56BDA8 01264000
  1265. BNE LABELBAD NO,BRANCH 01265000
  1266. CLI FLAG,C'F' FORMAT? 01266000
  1267. BE REGFORM1 YES,BRANCH 01267000
  1268. B ALLOCATE MUST BE ALLOCATE 01268000
  1269. LABELBAD MVC WRONG+37(6),INDATA SET UP LABEL 01269000
  1270. MVC WRONG+26(6),CPLABEL SET UP LABEL 01270000
  1271. LA R4,WRONG PRINT WRONG LABEL 01271000
  1272. BAL R14,WMSG PRINT MESSAGE 01272000
  1273. CLI CDSW2,X'FF' CARD SWITCH ON? 01273000
  1274. BE BADINPUT YES,BRANCH 01274000
  1275. B LAB2 BRANCH 01275000
  1276. LABONLY MVC CPLABEL(6),INDATA MOVE IN NEW LABEL NAME 01276000
  1277. CLC =C'CMS=',OSLABEL IS THIS A CMS DISK 01277000
  1278. BE *+10 YES- BRANCH 01278000
  1279. MVC OSLABEL(4),VOL1 NO- MAKE IT A VOL1 LABLE 01279000
  1280. LH R5,DSKADD DEVICE ADDRESS INTO R5 01280000
  1281. LA R9,LABWRITE LABEL CCW CHAIN INTO R9 01281000
  1282. ST R9,CAW CAW POINTS TO LABEL CCW'S 01282000
  1283. SSM =4X'00' DISABLE I/O INTERRUPTS @VA10831 01282500
  1284. TIO 0(R5) IS DEVICE AVAILABLE? 01283000
  1285. BC 2,*-4 LOOP IF BUSY 01284000
  1286. SIO 0(R5) WRITE OUT THE LABEL 01285000
  1287. TIO TIO 0(R5) DRAIN THE INT 01286000
  1288. BC 2,*-4 LOOP UNTIL DONE 01287000
  1289. BC 8,*-8 LOOP FOR CSW @VA10831 01287500
  1290. BC 1,TIOCC3 CC=3 - HELP . . . @VA00923 01288000
  1291. TM CSW+5,X'FF' ANY BAD CHANNEL STATUS 01289000
  1292. BNZ VOL1ERR YES- FATAL 01290000
  1293. TM CSW+4,UC UNIT CHECK 01291000
  1294. BO VOL1ERR YES- BRANCH 01292000
  1295. TM CSW+4,CE CHANNEL END 01293000
  1296. BO VOL1OK YES- BRANCH ALL OK 01294000
  1297. SSM =4X'FF' ALLOW I/O INTERRUPTS @VA10831 01295100
  1298. VOL1ERR BAL R7,SENSIT GET THE SENSE DATA 01296000
  1299. MVC CCHHR(5),R3VOL1 MOVE IN THE CCHHR DATA 01297000
  1300. BAL R7,SENSIT2 TYPE THE MSG 01298000
  1301. B FATAL 01299000
  1302. VOL1OK MVC LABELOK+14(6),CPLABEL MOVE THE LABEL INTO THE MSG 01300000
  1303. LA R4,LABELOK POINT TO THE MSG 01301000
  1304. BAL R14,WMSG AND GO TYPE IT 01302000
  1305. B GETCARD GO PROMPT FOR ANOTHER TASK 01303000
  1306. SPACE 01304000
  1307. TIOCC3 EQU * @VA00923 01305000
  1308. LA R4,WR1 TELL HIM ABOUT PROBLEMS @VA00923 01306000
  1309. BAL R14,WMSG . . . @VA00923 01307000
  1310. B GETCARD SEE IF THERE'S ANY MORE WORK. @VA00923 01308000
  1311. EJECT 01309000
  1312. *********************************************************************** 01310000
  1313. * * CCW'S FOR READING LABEL * 01311000
  1314. *********************************************************************** 01312000
  1315. DS 0D 01313000
  1316. LBLREC CCW 7,SEEKA,CC,6 01314000
  1317. CCW 31,FILEMASK,CC,1 01315000
  1318. CCW 49,R3VOL1,CC+SILI,5 FIND REC 3 VOL1 LABEL RECO 01316000
  1319. CCW 8,*-8,0,0 01317000
  1320. CCW 6,OSLABEL,SILI+CC,80 READ LABELS 01318000
  1321. CCW 49,R4ALLOC,CC+SILI,5 SEARCH ID EQUAL 01319000
  1322. CCW 08,*-8,0,0 TIC 01320000
  1323. CCW 06,TABLE,SILI,1024 READ ALLOCATION TABLE 01321000
  1324. LABWRITE CCW 7,SEEKA,CC,6 SEEK 01322000
  1325. CCW 31,FILEMASK,CC,1 SET FILE MASK 01323000
  1326. CCW 49,R3VOL1,CC+SILI,5 FIND VOL1 LABEL RECORD 01324000
  1327. CCW 8,*-8,0,0 TIC 01325000
  1328. CCW 5,OSLABEL,SILI,80 WRITE LABEL 01326000
  1329. SPACE 01327000
  1330. FMT CLC CPLABEL,=X'009596958500' PROB. READING R3? @V56BDA8 01328000
  1331. BE REGFORM YES, DON'T SAVE ALT. TRK INFO @V56BDA8 01329000
  1332. CLC OSLABEL(3),=CL3'VOL' STD. LABEL @V56BDA8 01330000
  1333. BNE REGFORM NO, SKIP CMS LABEL @V56BDA8 01331000
  1334. SPACE 01332000
  1335. * IBCDASDI UTILITY KEEPS THE CCHH FOR THE NEXT AVAILABLE 01333000
  1336. * ALT. TRK. AND THE NUMBER OF ALT. TRKS IN THE FMT4 DSCB 01334000
  1337. * WE DON'T WANT TO DESTROY THIS INFORMATION WHEN CP WRITES 01335000
  1338. * ITS FORMAT4 DSCB; THE INFO WILL BE SAVED AND INCLUDED IN 01336000
  1339. * THE FORMAT4 DSCB WRITTEN BY DMKFMT. IBCDASDI AND DMKFMT 01337000
  1340. * WRITE R3 WITH "VOL1". CMS FORMAT WRITES NO FMT4 DSCB 01338000
  1341. * AND THEREFORE THERE IS NO POINT IN LOOKING FOR THE INFO. 01339000
  1342. SPACE 01340000
  1343. TM TYPE,TYP3330+TYP334X+TYP3350 3330,334X,3350 ? @VA13248 01341500
  1344. BZ REGFORM NO, THEN REG FORMAT @VA13248 01342500
  1345. CLC VTOCBEG,=F'0' VERIFY VTOC ADDRESS @V56BDA8 01343000
  1346. * IF ZEROS OR BELOW CCHHR = 0000000005, DON'T READ 01344000
  1347. * IBCDASDI DOES NOT PERMIT VTOC ON TRACK 0. 01345000
  1348. * CP'S DMKFMT PLACES VTOC ON CCHHR = 0000000005 01346000
  1349. BNE READFMT4 GO AHEAD AND READ @V56BDA8 01347000
  1350. CLI VTOCR,X'05' CANNOT BE LESS THAN R5 @V56BDA8 01348000
  1351. BL REGFORM NO POINT IN READING FMT4 @V56BDA8 01349000
  1352. READFMT4 LA R9,RDFMT4 CH. PGM. TO RD FMT4 @V56BDA8 01350000
  1353. MVC SEEKA+2(4),VTOCBEG SETUP THE SEEK ADDRESS @V56BDA8 01351000
  1354. ST R9,CAW SETUP FOR THE CHANNEL PROGRAM @V56BDA8 01352000
  1355. TIO 0(R5) MAKE SURE DEVICE IS READY @V56BDA8 01353000
  1356. BNZ *-4 ... @V56BDA8 01354000
  1357. SIO 0(R5) READ FMT4 @V56BDA8 01355000
  1358. TIO 0(R5) ... @V56BDA8 01356000
  1359. BNZ *-4 ... @V56BDA8 01357000
  1360. CLC NEXTCCHH(20),HIVALUE NEXT AVAILABLE ALT TRK @VA13248 01358500
  1361. * BETTER BE IN ALT CYL 01359500
  1362. BL REGFORM NO, DON'T SAVE INFO @V56BDA8 01365000
  1363. SAVEALT MVC ALTCCHH,NEXTCCHH SAVE NEXT AVAIL. ALT TRK & @V56BDA8 01366000
  1364. * NO. OF ALT. TRKS FOR CP'S FMT4 01367000
  1365. *********************************************************************** 01368000
  1366. * * COME HERE WHEN FORMAT * 01369000
  1367. * * PRINT MSG FORMATING STARTED * 01370000
  1368. *********************************************************************** 01371000
  1369. SPACE 1 01372000
  1370. REGFORM MVC OSLABEL(96),SAVEVOL1 RESTORE TO IPL'ED DATA 01373000
  1371. MVC FMT4DATA(96),SAVEFMT4 RESTORE TO CP'S FMT4 @V56BDA8 01374000
  1372. MVC NEXTCCHH(6),ALTCCHH MOVE NEXT AVAIL ALT TRK & @V56BDA8 01375000
  1373. * NO. OF ALT. TRKS TO CP'S FMT4 01376000
  1374. XC ALTCCHH(6),ALTCCHH CLEAR IN CASE SECOND PASS @V56BDA8 01377000
  1375. XC TABLE(256),TABLE CLEAR ALLOCATION TABLE 01378000
  1376. XC TABLE1(256),TABLE1 " 01379000
  1377. XC TABLE2(256),TABLE2 " 01380000
  1378. XC TABLE3(256),TABLE3 " 01381000
  1379. LH R4,HIVALUE POINT TO THE END OF ALLOCATION TABLE 01382000
  1380. LA R4,TABLE+1(R4) * 01383000
  1381. MVI 0(R4),X'FF' TURN ON THE END OF TABLE FLAG 01384000
  1382. REGFORM1 MVC CPLABEL(6),INDATA MOVE IN LABEL 01385000
  1383. LA R4,PROGFOR SET UP MESSAGE FORMAT STARTED 01386000
  1384. BAL R14,WMSG WRITE MESSAGE 01387000
  1385. MVI ONETIME+1,X'80' SET UP FOR EQUAL COMPARE 01388000
  1386. MVI ALTFLAG,0 INIT FLAG FOR DASD I/O INT. HNDLR@V56BDA8 01389000
  1387. MVC IONPSW(8),NEWPSW CHANGE NEW IO PSW 01390000
  1388. XC PGCOUNT(4),PGCOUNT CLEAR FIELD 01391000
  1389. GOA1 XC ERCOUNT(4),ERCOUNT CLEAR ERROR COUNT 01392000
  1390. MVC SEEKA(118),WKSEEK RESTORE TO STARTING SEEKS @V2A2029 01393000
  1391. MVC REC1(184),RNDATA RESTORE DASD RECORD FIELDS @V304498 01394000
  1392. CLI TYPE,TYP3350 MODIFY FOR 3350 FILLER LENGTH @V304498 01395000
  1393. BNE GOTST40 NO, BYPASS FILLER MODIFICATIONS @V304498 01396000
  1394. LA R7,11 NUMBER OF FILLER CCW'S @V304498 01397000
  1395. LA R5,RECX1+6 FIRST FILLER CCW @V304498 01398000
  1396. LA R4,300 ACTUAL FILLER LENGTH @V304498 01399000
  1397. FILL3350 STH R4,0(0,R5) MODIFY FILLER CCW @V304498 01400000
  1398. LA R5,16(R5) UPDATE FILLER CCW ADDRESS @V304498 01401000
  1399. BCT R7,FILL3350 PROCESS ALL FILLER CCW'S @V304498 01402000
  1400. MVI REC4+3,RECN0 INITIALIZE HEAD NO'S FOR 3350 @V304498 01403000
  1401. MVI RECX4+3,RECN0 . . . @V304498 01404000
  1402. MVI REC7+3,RECN1 . . . @V304498 01405000
  1403. MVI RECX7+3,RECN1 . . . @V304498 01406000
  1404. MVI REC8+3,RECN1 . . . @V304498 01407000
  1405. MVI RECX8+3,RECN1 . . . @V304498 01408000
  1406. MVI REC10+3,RECN2 . . . @V304498 01409000
  1407. MVI RECX10+3,RECN2 . . . @V304498 01410000
  1408. MVI REC11+3,RECN2 . . . @V304498 01411000
  1409. MVI RECX11+3,RECN2 . . . @V304498 01412000
  1410. MVI REC12+3,RECN2 . . . @V304498 01413000
  1411. B GOA2 INITIALIZE SEEK FIELDS @V304498 01414000
  1412. GOTST40 EQU * @V304498 01415000
  1413. CLI TYPE,X'40' 3340 DEVICE TYPE ? @V2A2029 01416000
  1414. BNE GOA2 NO - BRANCH @V2A2029 01417000
  1415. MVI REC3+3,X'01' SET UP HEAD NUMBER FOR 3340 @V2A2029 01418000
  1416. MVI REC4+3,X'01' .. @V2A2029 01419000
  1417. MVI REC5+3,X'02' .. @V2A2029 01420000
  1418. MVI REC6+3,X'02' .. @V2A2029 01421000
  1419. MVI REC7+3,X'03' .. @V2A2029 01422000
  1420. MVI REC8+3,X'03' .. @V2A2029 01423000
  1421. MVI REC9+3,X'04' .. @V2A2029 01424000
  1422. MVI REC10+3,X'04' .. @V2A2029 01425000
  1423. MVI REC11+3,X'05' .. @V2A2029 01426000
  1424. MVI REC12+3,X'05' .. @V2A2029 01427000
  1425. GOA2 MVC R1STUF(96),RNSTUF RESTORE 2314 RECORD FIELDS @V2A2029 01428000
  1426. XC R0STUF,R0STUF CLEAR FIELD 01429000
  1427. LA R7,4 NUMBER OF SEEK FIELDS 3330 @V2A2029 01430000
  1428. CLI TYPE,X'30' IS IT 3330? 01431000
  1429. BE MAIN YES BRANCH 01432000
  1430. LA R7,3 NUMBER OF 3350 SEEK FIELDS @V304498 01433000
  1431. CLI TYPE,TYP3350 IS IT 3350 ? @V304498 01434000
  1432. BE MAIN YES, INITIALIZE SEEK FIELDS @V304498 01435000
  1433. CLI TYPE,X'14' IS IT 2314 2319? 01436000
  1434. LA R7,5 NUMBER OF SEEK FIELDS 2314 2319 @V2A2029 01437000
  1435. BE MAIN YES BRANCH 01438000
  1436. LA R7,4 NUMBER OF SEEK FIELDS 2305 @V2A2029 01439000
  1437. TM TYPE,X'50' 2305 TYPE ? @V2A2029 01440000
  1438. BO MAIN YES - BRANCH @V2A2029 01441000
  1439. LA R7,6 NUMBER OF SEEK FIELDS 3340 @V2A2029 01442000
  1440. MAIN SR R4,R4 CLEAR R4 @V2A2029 01443000
  1441. LH R4,BEGIN GET BEGINNING OR NEW CYL TO SEEK 01444000
  1442. STH R4,SEEK0+2 BEGINNING CYLINDER INTO SEEK0 01445000
  1443. LA R5,SEEKA+2 GET CCHH FIELD ADDRESS 01446000
  1444. *********************************************************************** 01447000
  1445. * * THIS ROUTINE PLUGS CYLINDER OF SEEK FIELD * 01448000
  1446. * * R4=BEGINNING SEEK ADDRESS * 01449000
  1447. *********************************************************************** 01450000
  1448. STORE STH R4,0(R5) FILL IN CYL FOR SEEKA,B,C,D,E 01451000
  1449. LA R5,20(R5) BUMP TO NEXT SEEK FIELD 01452000
  1450. BCT R7,STORE LOOP THRU VALUE IN R7 01453000
  1451. *********************************************************************** 01454000
  1452. * * LOADS RECORD AREA WITH DASD ADDRESS * 01455000
  1453. * * R4 = BEGINNING ADDRESS * 01456000
  1454. *********************************************************************** 01457000
  1455. CLI TYPE,X'14' IS IT 2314 01458000
  1456. BNE REC30 NO,BRANCH 01459000
  1457. LA R5,R1STUF R5 POINTS TO RECORD 1 01460000
  1458. LA R7,12 R7 CONTAINS 12 01461000
  1459. LA R9,FMT2314 R9 POINTS TO 2314 CCWS 01462000
  1460. STR STH R4,0(R5) FILL IN RXSTUF WITH SEEK ADDRESS 01463000
  1461. LA R5,8(R5) R5 POINTS TO NEXT RECORD 01464000
  1462. BCT R7,STR GO THRU 12 TIMES 01465000
  1463. LH R5,DSKADD R5 CONTAINS DEVICE ADDRESS 01466000
  1464. ST R9,CAW CAW POINTS TO CCW CHAIN 01467000
  1465. B STIO START DEVICE 01468000
  1466. REC30 LA R5,REC1 R5 =RECORD FIELDS 01469000
  1467. LA R7,23 SET UP NO. CCW FIELDS TO UPDATE @V304498 01470000
  1468. LA R9,FMT3340 R9 = ADDRESS OF CCWS @V2A2029 01471000
  1469. CLI TYPE,X'40' 3340-35 OR 3340-70 DEVICE ? @V2A2029 01472000
  1470. BE STR YES - BRANCH @V2A2029 01473000
  1471. LA R9,FMT3350 3350 FORMAT CHANNEL PROGRAMS @V304498 01474000
  1472. CLI TYPE,TYP3350 3350 DEVICE ? @V304498 01475000
  1473. BE STR YES, INITIALIZE SEEK ADDRESS @V304498 01476000
  1474. LA R9,FMT3330 R9 = ADRESS OF CCWS 01477000
  1475. TM TYPE,X'50' IS THIS A 2305 1 OR 2 01478000
  1476. BNO STR NO- BRANCH 01479000
  1477. LA R9,FMT2305 YES- POINT TO THE CCW'S 01480000
  1478. B STR BRANCH 01481000
  1479. SPACE 3 01482000
  1480. *********************************************************************** 01483000
  1481. * * * 01484000
  1482. * * COME HERE FROM INTERRUPT ROUTINE IF CORRECT OPERATION * 01485000
  1483. * * * 01486000
  1484. *********************************************************************** 01487000
  1485. SPACE 1 01488000
  1486. RESUMP CLI TYPE,X'14' IS IT 2314 01489000
  1487. BE TEST14 YES,BRANCH 01490000
  1488. CLC REC12+4(1),RECVALUE WAS LAST RECORD WRITTEN? 01491000
  1489. MVC WR57(8),OFF57WRT WRITE 12REC AT A TIME 01492000
  1490. MVC RD57(8),OFF57RD DO NORMAL READ CK IN CCW 01493000
  1491. BE NEWCYL YES,BRANCH 01494000
  1492. CLI TYPE,TYP3330 3330 DEVICE ? @V304498 01495000
  1493. BNE MAIN2 NO, BYPASS 3330 REC 57 TRK CHANGE@V304498 01496000
  1494. CLI REC12+4,X'30' DID I JUST WRITE 48TH REC. 01497000
  1495. BNE MAIN2 NO,BRANCH 01498000
  1496. MVC WR57(8),ON57WRT DO NOT WRITE REC 58 TO 60 01499000
  1497. MVC RD57(8),ON57RD ALTER NOT TO READ CK 58 TO 60 01500000
  1498. MAIN2 LA R4,SEEKA+2 CCHH OF 1ST SEEK IN R4 01501000
  1499. XC ERCOUNT,ERCOUNT CLEAR 01502000
  1500. SPACE 1 01503000
  1501. * UPDATE HEAD NUMBERS IN SEEK CCW'S 01504000
  1502. SPACE 1 01505000
  1503. LA R7,3 LOOP 3 TIMES (3 3350 TRK'S/PASS) @V304498 01506000
  1504. CLI TYPE,TYP3350 3350 DEVICE ? @V304498 01507000
  1505. BE HDUPDATE YES, PROCESS 3350 CCW'S @V304498 01508000
  1506. LA R7,4 LOOP 4 TIMES(4 3330 TRK'S/PASS) @V304498 01509000
  1507. CLI TYPE,X'40' 3340 TYPE ? @V2A2029 01510000
  1508. BNE HDUPDATE NO - BRANCH @V2A2029 01511000
  1509. LA R7,6 LOOP 6 TIMES @V2A2029 01512000
  1510. HDUPDATE L R5,0(R4) CCHH DATA IN R5 01513000
  1511. LA R5,3(,R5) INCREASE HEAD NO. BY 3 (3350) @V304498 01514000
  1512. CLI TYPE,TYP3350 3350 DEVICE ? @V304498 01515000
  1513. BE HEAD3350 YES, INITIALIZE SEEK (3350) @V304498 01516000
  1514. LA R5,1(,R5) INCREASE HEAD NO. TO 4 (3330) @V304498 01517000
  1515. CLI TYPE,X'40' 3340 TYPE ? @V2A2029 01518000
  1516. BNE *+8 NO - BRANCH @V2A2029 01519000
  1517. LA R5,2(R5) UPDATE HD NUMBER BY A TOTAL OF 6 @V2A2029 01520000
  1518. HEAD3350 EQU * @V304498 01521000
  1519. STH R5,2(R4) PUT HEAD NUMBER ONLY 01522000
  1520. LA R4,20(R4) GET NEXT CCHH 01523000
  1521. BCT R7,HDUPDATE LOOP UNTIL 4 HEADS ARE UPDATED 01524000
  1522. LA R4,REC1 ADDESS OF REC FIELDS IN R4 01525000
  1523. LA R7,23 SET UP NO. CCW FIELDS TO MODIFY @V304498 01526000
  1524. B FILLRN 01527000
  1525. TEST14 CLC R8STUF+4(1),RECVALUE WAS IT LAST RECORD WRITTEN 01528000
  1526. BE NEWCYL YES,GO FOR NEW CYLINDER 01529000
  1527. LA R4,SEEKA+2 NO,ADDRESS OF CCHH INTO R4 01530000
  1528. XC ERCOUNT,ERCOUNT CLEAR ERROR COUNT 01531000
  1529. LA R7,5 SET FOR 5 SEEKS 01532000
  1530. FILLSEEK L R5,0(R4) CCHH OF SEEK INTO R5 01533000
  1531. LA R5,5(R5) BUMP HEAD NUMBER BY 5 01534000
  1532. STH R5,2(R4) PUT BACK HEAD NUMBER ONLY 01535000
  1533. LA R4,20(R4) R4 NOW POINTS TO NEXT CCHH 01536000
  1534. BCT R7,FILLSEEK R7=5, LOOP BACK 4 MORE TIMES 01537000
  1535. SPACE 1 01538000
  1536. *********************************************************************** 01539000
  1537. * * UPDATE RECORD NUMBERS -HEAD NUMBERS * 01540000
  1538. *********************************************************************** 01541000
  1539. SPACE 1 01542000
  1540. LA R4,R1STUF PUT ADDRESS OF RECORD 1 INTO R4 01543000
  1541. RECUPDAT LA R7,12 PUT 12 INTO R7 FOR LOOPING 01544000
  1542. FILLRN L R5,0(R4) R5 CONTAINS CCHH 01545000
  1543. SR R6,6 CLEAR R6 01546000
  1544. IC R6,4(R4) PUT RECORD NUMBER INTO R6 01547000
  1545. CLI TYPE,X'14' IS IT 2314 01548000
  1546. BNE NEWCOUNT NO,BRANCH 01549000
  1547. LA R6,8(R6) UP RECORD NUMBER BY 8 01550000
  1548. STC R6,4(R4) PUT NEW RECORD NUMBER BACK 01551000
  1549. LA R5,5(R5) BUMP HEAD NUMBER BY 5 01552000
  1550. MVC CAW(4),=A(FMT2314) SET UP CAW 01553000
  1551. MAIN3 STH R5,2(R4) PUT BACK NEW HEAD NUMBER 01554000
  1552. LA R4,8(R4) UP R4 TO POINT TO NEXT CCHHR 01555000
  1553. BCT R7,FILLRN LOOP BACK MORE TIMES 01556000
  1554. LH R5,DSKADD DEVICE ADDRESS INTO R5 01557000
  1555. B STIO START DEVICE 01558000
  1556. NEWCOUNT LA R6,12(R6) UPDATE REC NUMBER BY 12 01559000
  1557. STC R6,4(R4) PUT NEW RECORD NUMBER BACK 01560000
  1558. LA R5,6(5) INCREASE HEAD NUMBER BY 6 (3340) @V2A2029 01561000
  1559. MVC CAW(4),=A(FMT3340) SET UP CAW (3340) @V2A2029 01562000
  1560. CLI TYPE,X'40' 3340-35 OR 3340-70 DEVICE ? @V2A2029 01563000
  1561. BE MAIN3 YES - BRANCH @V2A2029 01564000
  1562. BCTR R5,0 INCREASE HEAD NUMBER BY 4 @V2A2029 01565000
  1563. BCTR R5,0 6-2=4 @V2A2029 01566000
  1564. MVC CAW(4),=A(FMT3330) SET UP CAW 01567000
  1565. CLI TYPE,TYP3330 3330 DEVICE ? @V304498 01568000
  1566. BE MAIN3 PROCESS NEXT GROUP OF TRACKS @V304498 01569000
  1567. TM TYPE,X'50' IS THIS A 2305 MOD 1 OR 2 01570000
  1568. BNO TST3350 NO, TRY 3350 DEVICE @V304498 01571000
  1569. MVC CAW(4),=A(FMT2305) YES- SET UP CAW 01572000
  1570. B MAIN3 BRANCH 01573000
  1571. TST3350 BCTR R5,0 INCREASE HEAD NUMBER BY 3 @V304498 01574000
  1572. MVC CAW(4),=A(FMT3350) INITIALIZE FOR 3350 CCW'S @V304498 01575000
  1573. B MAIN3 EXECUTE 3350 CCW'S @V304498 01576000
  1574. SPACE 3 01577000
  1575. SPACE 1 01578000
  1576. *********************************************************************** 01579000
  1577. * * * 01580000
  1578. * * ROUTINE TO GO TO NEXT CYLINDER 01581000
  1579. * * * 01582000
  1580. *********************************************************************** 01583000
  1581. SPACE 1 01584000
  1582. NEWCYL CLC SEEKA+2(2),=X'0000' IS IT CYLINDER 0 01585000
  1583. ONETIME BE CHECK0 YES,BRANCH AND NOP THIS BRANCH 01586000
  1584. CLC SEEKA+2(2),ENDING IS IT THE LAST CYLINDER? 01587000
  1585. BE CLEANUP YES,BRANCH 01588000
  1586. SR R4,R4 CLEAR R4 01589000
  1587. LH R4,SEEKA+2 PUT CYL NUMBER INTO R4 01590000
  1588. LA R4,1(R4) INCREASE CYL BY 1 01591000
  1589. STH R4,BEGIN SAVE NEW STARTING CYLINDER 01592000
  1590. B GOA1 GO SEEK NEXT CYLINDER 01593000
  1591. SPACE 1 01594000
  1592. SPACE 1 01595000
  1593. *********************************************************************** 01596000
  1594. * * CHECK FIRST 3 RECORDS OF CYLINDER FOR NO ERROR * 01597000
  1595. * * IF NO ERROR WRITE SPECIAL SYSTEM RECORDS * 01598000
  1596. *********************************************************************** 01599000
  1597. SPACE 1 01600000
  1598. CHECK0 MVI ONETIME+1,X'00' NOP BRANCH AT ONETIME 01601000
  1599. BAL R1,*+4 R1 POINTS TO NEXT INSTRUCTION 01602000
  1600. CLI TYPE,TYP3350 IS DEVICE A 3350 ? @V304498 01603000
  1601. BE CYL03350 YES, TEST FOR ERR REC CYL0 HD0 @V304498 01604000
  1602. TM R0STUF,X'E0' ERR IN REC 1,2,3 ON CYL0 HD0 01605000
  1603. CHECK5 EQU * @V304498 01606000
  1604. BZ OKCYL0 NO - CONTINUE @VA00923 01607000
  1605. BAL R7,SENSIT YES - GET SENSE INFO. @VA00923 01608000
  1606. BAL R7,SENSIT2 PRINT SENSE, CCHHR FOR HIM @VA00923 01609000
  1607. B FATAL AND TELL HIM THE CONDITION'S @VA00923 01610000
  1608. * FATAL 01611000
  1609. CYL03350 TM R0STUF,X'F0' TEST ERR REC 1,2,3,4 ON CYL0 HD0 @V304498 01612000
  1610. B CHECK5 CONTINUE CYL0 HD0 ERROR TEST @V304498 01613000
  1611. OKCYL0 EQU * @VA00923 01614000
  1612. MVI R0STUF,X'E0' SET REC 1,2,3 IN USE @V304498 01615000
  1613. CLI TYPE,TYP3350 IS DEVICE A 3350 ? @V304498 01616000
  1614. BNE CYL0CONT NO, CONTINUE CYL0 PROCESSING @V304498 01617000
  1615. MVI R0STUF,X'F0' SET REC 1,2,3,4 IN USE @V304498 01618000
  1616. CYL0CONT EQU * WRITE CYL0 HD0 SYSTEM RECORDS @V304498 01619000
  1617. LA R9,SPEC2314 R9 CONTAINS ADDRESS OF SPEC CCWS 01620000
  1618. ST R9,CAW CAW CONTAINS ADDRESS OF CCWS 01621000
  1619. CLI TYPE,X'14' IS IT 2314? 01622000
  1620. BE MAIN4 YES, BRANCH 01623000
  1621. MVC CAW(4),=A(SPEC3330) SET CAW FOR CYL 0 TK 0 CCW'S 01624000
  1622. MVI NOP3340,X'1D' WRITE RF3 RECORD CCW OP CODE @VA03284 01625000
  1623. CLI TYPE,TYP334X 3340-35 OR 3340-70 DEVICE? @V56BDA8 01626000
  1624. BNE MAIN4 BRANCH IF NOT @V2A2029 01627000
  1625. MVI NOP3340,X'03' SET RF3 CCW OP-CODE TO NOP @V2A2029 01628000
  1626. MAIN4 MVI SEEKA+5,X'00' SET TO SEK HEAD 0 01629000
  1627. MVI SEEKB+5,X'01' SET TO SEEK HEAD 1 01630000
  1628. LH R5,DSKADD DEVICE ADDRESS INTO R5 01631000
  1629. B STIO START DEVICE 01632000
  1630. SPACE 1 01633000
  1631. SPACE 1 01634000
  1632. *********************************************************************** 01635000
  1633. * * FATAL ROUTINE PRINTS MESSAGE AND STARTS PROMPTING * 01636000
  1634. *********************************************************************** 01637000
  1635. FATAL STM R0,R15,PCREGS SAVE R0 TO R15 01638000
  1636. MVC SAVFATAL(20),IOOPSW SAVE IOOLDPSW,CSW,CAW 01639000
  1637. UNPK WORK(9),SAVFATAL+8(5) UNPK THE CSW @VA00923 01640000
  1638. UNPK WORK+8(9),SAVFATAL+12(5) . . . @VA00923 01641000
  1639. TR WORK(16),TTAB-240 MAKE IT ALL READABLE @VA00923 01642000
  1640. MVC FATLMSG+37(16),WORK MOVE INTO MSG @VA00923 01643000
  1641. LA R4,FATLMSG SET UP FATAL MSG 01644000
  1642. BAL R14,WMSG WRITE MESSAGE 01645000
  1643. B GETCARD YES,BRANCH 01646000
  1644. EJECT 01647000
  1645. *********************************************************************** 01648000
  1646. * * * 01649000
  1647. * * PRINT PAGE ERROR COUNTS ON CONSOLE * 01650000
  1648. * * * 01651000
  1649. *********************************************************************** 01652000
  1650. SPACE 1 01653000
  1651. CLEANUP LA R4,ENDFOR SET UP FOR END OF FORMAT MSG 01654000
  1652. BAL R14,WMSG WRITE MESSAGE 01655000
  1653. L R3,PGCOUNT GET ERROR PAGE COUNT 01656000
  1654. CVD R3,FIELDA CONVERT ERROR COUNT TO DECIMAL 01657000
  1655. OI FIELDA+7,X'0F' MAKE GOOD SIGN 01658000
  1656. UNPK FIELDB+5(3),FIELDA+6(2) UNPACK TO PRINTABLE CHARS 01659000
  1657. MVC PAGE+1(3),FIELDB+5 PUT ERROR COUNT INTO MSG 01660000
  1658. LA R4,PAGE SET UP ERROR PAGE MSG 01661000
  1659. BAL R14,WMSG WRITE MESSAGE 01662000
  1660. B GETCARD YES,BRANCH 01663000
  1661. SPACE 2 01664000
  1662. *********************************************************************** 01665000
  1663. * * * 01666000
  1664. * * START DASD DEVICE ROUTINE * 01667000
  1665. * * * 01668000
  1666. *********************************************************************** 01669000
  1667. SPACE 1 01670000
  1668. STIO MVC CCHHR(5),FFS8 PUT F'S IN HEADER. @VMG0004 01671000
  1669. STIO2 LA R7,100 ERROR RETRY COUNT. @VMG0004 01672000
  1670. START SIO 0(R5) START DEVICE 01673000
  1671. BC 8,XWAIT IF STARTED OK GO WAIT 01674000
  1672. BC 1,TIOCC3 CC = 3, NOTIFY USER @VM01069 01675000
  1673. BC 2,TIORT BUSY @VM01069 01676000
  1674. TM CSW+4,SM+BUSY STATUS MODIFIER AND BUSY @VM01069 01677000
  1675. BO START YES, RETRY @VM01069 01678000
  1676. CLI CSW+4,BUSY DEVICE BUSY (RESERVED) @VA03955 01679000
  1677. BE START LOOP UNTIL RELEASE @VA03955 01680000
  1678. TIORT TIO 0(R5) IF NO START CLEAR STATUS @VM01069 01681000
  1679. BCT R7,START TRY A TOTAL OF 100 TIMES @V2A2029 01682000
  1680. BC 3,TIOCC3 SERIOUS PROBLEMS - LET HIM KNOW @VA00923 01683000
  1681. TM CSW+4,UC DID DEVICE HAVE UNIT CHECK 01684000
  1682. BO STARTER1 NO, ERROR SET UP MSG @VM01069 01685000
  1683. XC SENSE,SENSE CLEAR SENSE AREA @VM01069 01686000
  1684. XC SENSTA(8),SENSTA CLEAR SENSE CSW @VM01069 01687000
  1685. MVI SENSTA+7,X'12' INDICATE 6 SENSE BYTES @VM01069 01688000
  1686. MVC SAVEIT(20),IOOPSW SAVE CSW,CAW, AND IO OLD PSW @VM01069 01689000
  1687. B STARTER2 GO SET UP BOTH ERROR MSG @VM01069 01690000
  1688. STARTER1 BAL R7,SENSIT GET SENSE DATA @VM01069 01691000
  1689. STARTER2 BAL R7,SENSIT2 PRINT SENSE MESSAGE @VM01069 01692000
  1690. B FATAL GO FATAL 01693000
  1691. SPACE 1 01694000
  1692. SPACE 1 01695000
  1693. *********************************************************************** 01696000
  1694. * * WAIT PSW * 01697000
  1695. *********************************************************************** 01698000
  1696. CNOP 4,8 01699000
  1697. XWAIT LPSW WAITCON 01700000
  1698. WAITCON DC X'FE02' 01701000
  1699. DC A(255) 01702000
  1700. EJECT 01703000
  1701. *********************************************************************** 01704000
  1702. * * GET SENSE INFORMATION * 01705000
  1703. *********************************************************************** 01706000
  1704. SENSIT LA R1,CCWSENSE ADDRESS OF SENSE CCW INTO R1 01707000
  1705. XC SENSE,SENSE CLEAR SENSE AREA @V2B3729 01708000
  1706. MVC SAVEIT(20),IOOPSW SAVE CSW,CAW,AND IO OLD PSW 01709000
  1707. ST R1,CAW PUT ADDRESS OF CCW INTO CAW 01710000
  1708. TIO 0(R5) CLEAR STATUS 01711000
  1709. BC 2,*-4 LOOP IF BUSY @VA03149 01712000
  1710. SIO 0(R5) START DEVICE 01713000
  1711. TIO 0(R5) DEVICE DONE? 01714000
  1712. BC 2,*-4 LOOP IF BUSY @VA03149 01715000
  1713. MVC SENSTA(8),CSW SAVE CSW 01716000
  1714. MVC IOOPSW(20),SAVEIT RESTORE CSW,CAW,AND IO OLD PSW 01717000
  1715. BR R7 GO-WHENCE CAME YOU- 01718000
  1716. SPACE 3 01719000
  1717. SPACE 1 01720000
  1718. *********************************************************************** 01721000
  1719. * * PRINT SENSE AND CCHH ERROR INFORMATION * 01722000
  1720. *********************************************************************** 01723000
  1721. SENSIT2 UNPK WORK(13),SENSE(7) CHANGE SENSE DATA TO ZONED 01724000
  1722. UNPK WORK+12(11),CCHHR(6) CHANGE CCHHR DATA TO ZONED 01725000
  1723. TR WORK(22),TTAB-240 TRANSLATE TO PRINTABLE CHAR @V2B3729 01726000
  1724. MVC IOERR+33(10),WORK+12 PUT CCHHR INTO THE MSG 01727000
  1725. MVC IOERR+52(12),WORK PUT SENSE INTO ERROR MSG 01728000
  1726. LA R4,IOERR ADDRESS OF ERROR MESSAGE INTO R4 01729000
  1727. BAL R14,WMSG WRITE MESSAGE 01730000
  1728. CLI SENSTA+7,X'12' MORE THAN 6 SENSE BYTES ? @V2B3729 01731000
  1729. BNL SENSIT3 NO- @V2B3729 01732000
  1730. UNPK WORK(13),SENSE+6(7) CHANGE AND TRANSLATE @V2B3729 01733000
  1731. UNPK WORK+12(13),SENSE+12(7) .. @V2B3729 01734000
  1732. UNPK WORK+24(13),SENSE+18(7) .. @V2B3729 01735000
  1733. TR WORK(36),TTAB-240 18 SENSE BYTES @V2B3729 01736000
  1734. MVC IOERR2+1(36),WORK PUT SENSE INTO THE MSG @V2B3729 01737000
  1735. LA R4,IOERR2 ADDRESS OF 2ND LINE OF ERROR MSG @V2B3729 01738000
  1736. BAL R14,WMSG WRITE MESSAGE @V2B3729 01739000
  1737. SENSIT3 MVC IOOPSW(20),SAVEIT RESTORE CSW,CAW,AND IO OLD PSW@V2B3729 01740000
  1738. BR R7 GO-WHENCE CAME YOU- 01741000
  1739. SPACE 3 01742000
  1740. SPACE 1 01743000
  1741. *********************************************************************** 01744000
  1742. * * * 01745000
  1743. * * DASD IO INTERRUPT ROUTINE * 01746000
  1744. * * * 01747000
  1745. *********************************************************************** 01748000
  1746. SPACE 1 01749000
  1747. IOINT LH R4,IOOPSW+2 GET DEVICE ADDRESS 01750000
  1748. CH R4,CONSOL WAS IT CONSOLE DEVICE? 01751000
  1749. BE ATNTST YES,CHECK FOR ATTENTION 01752000
  1750. CH R5,IOOPSW+2 WAS IT DEVICE STARTED? 01753000
  1751. BNE XWAIT NO,WAIT FOR CORRECT ONE 01754000
  1752. TM CSW+5,X'BF' ANYTHING BUT INCORRECT LENGHT? 01755000
  1753. BM FATAL IF MIXED ERRORS,GO FATAL 01756000
  1754. TM CSW+4,UC UNIT CHECK? 01757000
  1755. BO ERRECOV YES,GO TO ERROR RECOVERY 01758000
  1756. CLI CSW+4,CE+DE WAS IT CHANNEL END OR DEVICE END 01759000
  1757. BE CLEANEND YES, CHECK FOR ALTERNATE TRACK @V56BDA8 01760000
  1758. CLI CSW+4,CUE+CE+DE DID CUE SNEAK IN TOO? @VA04270 01761000
  1759. BNE FATAL NOT UC & NOT CLEAN END. @V56BDA8 01762000
  1760. CLEANEND XC ERCOUNT,ERCOUNT RESET. THIS SUCCESSFUL CMPLETN @V56BDA8 01763000
  1761. * COULD BE THE END OF AN ERROR RETRY. 01764000
  1762. TM ALTFLAG,HAR0READ ALTERNATE TRACK RECOVERY IN @V56BDA8 01765000
  1763. * PROGRESS? 01766000
  1764. BZ RESUMP NO, CONTINUE WITH MAIN LOGIC. @V56BDA8 01767000
  1765. L R6,CONTINAD ADDR OF CODE WHERE ALT TRACK @V56BDA8 01768000
  1766. * RECOVERY PROCESSING IS TO CONTINUE. 01769000
  1767. BR R6 @V56BDA8 01770000
  1768. SPACE 01771000
  1769. ERRECOV BAL R7,SENSIT READ SENSE DATA, THEN RESTORE @V56BDA8 01772000
  1770. * CSW, CAW, IOOPSW. 01773000
  1771. TM SENSE,X'02' TRACK CONDITION CHECK? @V56BDA8 01774000
  1772. BNO NOSWTCH NO, TRACK NOT FLAGGED. @V56BDA8 01775000
  1773. CLI TYPE,TYP334X DEVICE IS 3340/3344? @V56BDA8 01776000
  1774. BE ALTTRACK YES. GO SWITCH TRACKS. @V56BDA8 01777000
  1775. NOSWTCH DS 0H @V56BDA8 01778000
  1776. CLC CSW(L8),SAVEDCSW SAME ERROR (AT SAME CCW) AS @V56BDA8 01779000
  1777. * BEFORE? 01780000
  1778. MVC SAVEDCSW(L8),CSW SAVE FOR COMPARE NEXT TIME. @V56BDA8 01781000
  1779. BE COUNT IF SAME ERROR,BRANCH 01782000
  1780. XC ERCOUNT(4),ERCOUNT CLEAR ERROR COUNT 01783000
  1781. B STIO START DEVICE 01784000
  1782. SPACE 01785000
  1783. COUNT L R4,ERCOUNT PUT ERROR COUNT INTO R4 01786000
  1784. LA R4,1(4) UP ERROR COUNT BY 1 01787000
  1785. ST R4,ERCOUNT SAVE ERROR COUNT 01788000
  1786. C R4,=F'1' IS IT FIRST ERROR? 01789000
  1787. BE RECAL YES,RECALIBRATE DEVICE 01790000
  1788. C R4,=F'2' IS IT SECOND ERROR 01791000
  1789. BE RESET YES,RETRY CCW'S 01792000
  1790. RSTRTN C R4,ERLIMIT IS ERROR LIMIT OF 9 REACHED? 01793000
  1791. BL STIO IF NO,TRY AGAN 01794000
  1792. XC ERCOUNT,ERCOUNT IF YES,CLEAR ERROR COUNT 01795000
  1793. XC SAVEDCSW(8),SAVEDCSW CLEAR SAVED CSW 01796000
  1794. L R4,CSW PUT NEXT CCW ADDRESS INTO R4 01797000
  1795. SUB S R4,=F'8' GET PREVIOUS CCW ADDRESS 01798000
  1796. SUB2 CLI 0(4),X'07' IS IT A SEEK? 01799000
  1797. BNE SUB NO,GET PREVIOUS CCW 01800000
  1798. L R4,0(R4) ADDRESS OF CCW DATA AREA IN R4 01801000
  1799. LA R4,0(R4) CLEARS COMMAND CODE FROM R4 01802000
  1800. MVC CCHHR(5),2(R4) SAVE THE CCHHR THAT FAILED 01803000
  1801. BAL R7,SENSIT2 PRINT SENSE AND CCHH MESSAGE 01804000
  1802. L R4,CSW PUT NEXT CCW ADDRESS INTO R4 01805000
  1803. S R4,=F'8' R4 NOW POINTS TO FAILING CCW 01806000
  1804. CLI 0(4),X'07' WAS IT SEEK ERROR? 01807000
  1805. BE FATAL YES,GO PRINT FATAL MESSAGE 01808000
  1806. CLI 0(4),X'19' WAS IT WRITE HOME ADDRESS? 01809000
  1807. BE FATAL YES,GO,PRINT FATAL MESSAGE 01810000
  1808. CLI 0(4),X'15' WAS IT WRITE REC 0? 01811000
  1809. BE FATAL YES,GO PRINT FATAL MESSAGE 01812000
  1810. CLI 0(R4),X'05' WRITE DATA ? @V2B3729 01813000
  1811. BE FATAL YES, GO PRINT FATAL MESSAGE @V2B3729 01814000
  1812. CLI 0(4),X'1F' WAS IT SET FILE MASK? 01815000
  1813. BE FATAL YES,GO PRINT FATAL MESSAGE 01816000
  1814. CLI 0(4),X'1A' IS IT READ HOME ADDRESS 01817000
  1815. BE FATAL YES,GO PRINT FATAL MESSAGE 01818000
  1816. CLI 0(4),X'16' IS IT READ REC 0? 01819000
  1817. BE FATAL FAILED TO WRITE CYL 0 TK 0 AND 1 CORRECT 01820000
  1818. CLI 0(4),X'1E' IS IT READ CT KEY DATA? 01821000
  1819. BE FATAL YES,GO PRINT FATAL MESSAGE 01822000
  1820. CLI 0(4),X'06' WAS IT READ? 01823000
  1821. BE READER06 YES,BRANCH 01824000
  1822. CLI 0(4),X'31' WAS IT SEARCH ID? 01825000
  1823. BE READER31 YES,BRANCH 01826000
  1824. CCWSRCH1 TM 4(R4),CC COMMAND CHAINING ?? @V2B3729 01827000
  1825. BZ FATAL NO, FATAL ERROR @V2B3729 01828000
  1826. CCWSRCH LA R4,8(R4) R4 POINTS TO NEXT CCW 01829000
  1827. CLI 0(R4),8 IS THIS A TIC CCW ? @V2B3729 01830000
  1828. BE CCWTIC YES, GO PROCESS @V2B3729 01831000
  1829. CLI 0(4),X'07' WAS IT SEEK? 01832000
  1830. BE FOUND YES,GO FOUND 01833000
  1831. B CCWSRCH1 NO, TRY AGAIN @V2B3729 01834000
  1832. CCWTIC CLM (R4),B'0111',1(R4) TIC BACK OR FORWARD ? @V2B3729 01835000
  1833. BNH CCWSRCH BRANCH IF FORWARD @V2B3729 01836000
  1834. L R4,0(,R4) GET TIC TO ADDRESS @V2B3729 01837000
  1835. LA R4,0(,R4) CLEAR COMMAND CODE @V2B3729 01838000
  1836. B CCWSRCH1 KEEP LOOKING FOR 07 @V2B3729 01839000
  1837. EJECT 01840000
  1838. *********************************************************************** 01841000
  1839. * * COME HERE TO HANDLE TRACK CONDITION CHECK. 01842000
  1840. * * RESTART WITH A SEEK TO THE ALTERNATE OR RESTART WITH A SEEK 01843000
  1841. * * BACK TO THE DEFECTIVE TRACK PLUS ONE. 01844000
  1842. *********************************************************************** 01845000
  1843. SPACE 01846000
  1844. ALTTRACK L R1,CSW GET FAILED CCW + 8. @V56BDA8 01847000
  1845. SH R1,=H'8' POINT TO FAILING CCW. @V56BDA8 01848000
  1846. STCM R1,B'0111',ALTTIC+1 SAVE ITS ADDR IN TIC FOR @V56BDA8 01849000
  1847. * RESTART LATER. 01850000
  1848. L R8,=A(ALTCHK) @V56BDA8 01851000
  1849. BALR R7,R8 CALL ROUTINE TO DETERMINE WHETHER@V56BDA8 01852000
  1850. * OR NOT FLAGGED TRACK POINTS TO AN 01853000
  1851. * ALTERNATE WITH ALTERNATE POINTING BACK. 01854000
  1852. * IF POINTERS ARE BAD, R1=-1 IS RETURNED. 01855000
  1853. * IF POINTERS ARE GOOD, R1=CCHH IS 01856000
  1854. * RETURNED, WITH CCHH BEING THE SEEK ADDR 01857000
  1855. * OF THE OTHER TRACK (NOT THE ONE THAT 01858000
  1856. * GAVE THE TRACK CONDITION CHECK, BUT THE 01859000
  1857. * ONE THAT THAT ONE POINTS TO). 01860000
  1858. * R0=0 IF CCHH IN R1 IS THE ASSIGNED 01861000
  1859. * ALTERNATE TRACK OR R0=1 IF CCHH IN R1 IS 01862000
  1860. * THE PRIMARY TRACK. 01863000
  1861. LTR R1,R1 DOES FLAGGED TRK HAVE ALTERNATE? @V56BDA8 01864000
  1862. BM ALTBAD NO. FATAL ERROR. ISSUE MSGS. @V56BDA8 01865000
  1863. AR R1,R0 IF CCHH IN R1 IS PRIMARY, THEN @V56BDA8 01866000
  1864. * ADDS 1 FROM R0 TO CAUSE SEEK BACK TO 01867000
  1865. * PRIMARY PLUS ONE. (NOTE: DUE TO NATURE 01868000
  1866. * OF CHNL PRGS USED TO FORMAT, THIS WILL 01869000
  1867. * NEVER GO BEYOND LAST TRACK IN CYL. IF 01870000
  1868. * LAST TRK IN CYL IS FLAGGED, THAT IS WHERE 01871000
  1869. * CHNL PRG ENDS ANYWAY, THERE IS NO 01872000
  1870. * SUBSEQUENT SEEK OFF OF ALTERNATE TO CAUSE 01873000
  1871. * TRACK CONDITION CHECK FROM THERE.) 01874000
  1872. STCM R1,15,ALTSKADD+2 STORE FOR SEEK CCW. @V56BDA8 01875000
  1873. LA R1,ALTSEEK RESTART CCWS APPENDED TO FAILED @V56BDA8 01876000
  1874. * CCW. 01877000
  1875. ST R1,CAW SET FOR SIO. @V56BDA8 01878000
  1876. B STIO RESTART THE CHANNEL PROGRAM. @V56BDA8 01879000
  1877. SPACE 01880000
  1878. ALTBAD LA R4,MSGATRK MSG SAYS FLAGGED TRACK HAS NO @V56BDA8 01881000
  1879. * ALTERNATE ASSIGNED. 01882000
  1880. BAL R14,WMSG @V56BDA8 01883000
  1881. BAL R7,SENSIT2 PRT MSG GIVING CCHH OF BAD TRACK.@V56BDA8 01884000
  1882. B FATAL GIVE FATAL MSG, THEN RESTART. @V56BDA8 01885000
  1883. SPACE 2 01886000
  1884. *********************************************************************** 01887000
  1885. * * THIS ROUTINE RESTARTS BROKEN CCW CHAIN AT NEXT SEEK * 01888000
  1886. * * R4 POINTS TO NEXT SEEK CCW * 01889000
  1887. *********************************************************************** 01890000
  1888. SPACE 1 01891000
  1889. FOUND ST R4,RESUMCCW+8 ADDRESS OF SEEK CCW INTO TIC 01892000
  1890. MVI RESUMCCW+8,X'08' RESTORE TO TIC COMMAND 01893000
  1891. LA R9,RESUMCCW CCW ADDRESS INTO R9 01894000
  1892. ST R9,CAW CCW ADDRESS INTO CAW 01895000
  1893. LH R5,DSKADD DEVICE INTO R5 01896000
  1894. B STIO START DEVICE 01897000
  1895. SPACE 1 01898000
  1896. SPACE 1 01899000
  1897. *********************************************************************** 01900000
  1898. * * COME HERE IF READ OR SEARCH ID FAILURE * 01901000
  1899. *********************************************************************** 01902000
  1900. SPACE 1 01903000
  1901. READER06 S R4,=F'16' R4 POINTS TO SEARCH ID CCW 01904000
  1902. READER31 L R5,0(R4) R5 CONTAINS DATA ADDRESS 01905000
  1903. SR R3,R3 CLEAR R3 01906000
  1904. ICM R3,1,4(R5) PUT REC NUMBER INTO R3 01907000
  1905. BM READTRY BRANCH IF FILLER RECORD 01908000
  1906. BZ FATAL BRANCH IF RECORD ZERO 01909000
  1907. CLC SEEKA+2(2),=X'0000' IS IT CYLINDER 0 @V304498 01910000
  1908. BNE PAGECT NO, BYPASS CYLINDER BIT MAP @V304498 01911000
  1909. CLM R3,1,RECN4 IS PAGE COUNT GREATER THAN 4 @V304498 01912000
  1910. BH PAGECT YES, BYPASS CYLINDER BIT MAP @V304498 01913000
  1911. BCTR R3,0 DECREASE RECORD NUMBER BY 1 01914000
  1912. STC R3,SHIFT+3 CAUSE SHIFT OF VALUE IN R3 01915000
  1913. L R7,SHIFTMSK PUT 80 00 00 00 INTO R7 01916000
  1914. SHIFT SRL R7,0 SHIFT RIGHT BY VALUE IN R3 01917000
  1915. O R7,R0STUF OR IN R0 CYLINDER BIT MAP 01918000
  1916. ST R7,R0STUF PUT RESULT BACK 01919000
  1917. PAGECT EQU * COUNT PAGE ERRORS @V304498 01920000
  1918. L R3,PGCOUNT PUT PGCOUNT INTO R3 01921000
  1919. LA R3,1(R3) UP PAGE COUNT BY 1 01922000
  1920. ST R3,PGCOUNT SAVE UPDATED PGCOUNT 01923000
  1921. SPACE 1 01924000
  1922. *********************************************************************** 01925000
  1923. * * USE TO RESTART CCW CHAIN AFTER ERROR * 01926000
  1924. *********************************************************************** 01927000
  1925. SPACE 1 01928000
  1926. READTRY LA R4,24(R4) POINT TO NEXT SEARCH ID 01929000
  1927. ST R4,PICKUP BUILD TIC TO NEXT SEARCH ID 01930000
  1928. MVI PICKUP,X'08' PUT TIC COMMAND IN CCW 01931000
  1929. CLI 0(R4),X'07' IS NEXT SEARCH ID REALLY A SEEK? 01932000
  1930. BE SKFOUND YES,BRANCH 01933000
  1931. SEEKSEEK S R4,=F'8' NO,BACK UP 1 CCW 01934000
  1932. CLI 0(R4),X'07' IS IT A SEEK? 01935000
  1933. BNE SEEKSEEK NO,BACK UP AGAN 01936000
  1934. SKFOUND MVC RDRTRY(8),0(R4) BUILD SEEK CCW 01937000
  1935. LA R9,RDRTRY ADDRESS OF CCW INTO R9 01938000
  1936. ST R9,CAW ADDRESS OF CCW INTO CAW 01939000
  1937. LH R5,DSKADD DEVICE ADDRESS INTO R5 01940000
  1938. B STIO GO TO START DEVICE 01941000
  1939. EJECT 01942000
  1940. SPACE 1 01943000
  1941. *********************************************************************** 01944000
  1942. * * * 01945000
  1943. * * RESTART CCW CHAIN AFTER ERROR 2305,2314,3330,3340, OR 3350 * 01946000
  1944. * * * 01947000
  1945. *********************************************************************** 01948000
  1946. SPACE 1 01949000
  1947. DS 0D 01950000
  1948. RDRTRY CCW 07,SEEKA,CC,6 RHONY SEEKA 01951000
  1949. CCW 31,FILEMASK,CC+SILI,1 01952000
  1950. PICKUP CCW 08,0,0,0 01953000
  1951. SHIFTMSK DC X'80',3X'00' 01954000
  1952. SPACE 1 01955000
  1953. SPACE 1 01956000
  1954. *********************************************************************** 01957000
  1955. * * THIS ROUTINE DOES A RECALIBRATE ON FAILING DEVICE * 01958000
  1956. * * THEN TIC'S TO NORMAL 2314 CCW CHAIN * 01959000
  1957. *********************************************************************** 01960000
  1958. SPACE 1 01961000
  1959. RECAL EQU * HERE TO SET UP FOR RECALIBRATE @VA07045 01962000
  1960. LA R9,CALIBRAT ADDRESS OF RECAL. CCW @VA07045 01963000
  1961. C R9,CAW CAW ALREADY POINTING TO IT ?? @VA07045 01964000
  1962. BE RECAL1 YES, PREVENT TIC TO RECAL LOOP @VA07045 01965000
  1963. MVC CALIBRAT+9(3),CAW+1 CAUSE TIC TO FORMAT CCWS @VA07045 01966000
  1964. RECAL1 EQU * BR HERE MEANS TIC ALREADY SET @VA07045 01967000
  1965. ST R9,CAW CAW POINTS TO CALBRATE CCWS 01968000
  1966. LH R5,DSKADD DEVICE ADDRESS INTO R5 01969000
  1967. B STIO START DEVICE 01970000
  1968. SPACE 1 01971000
  1969. SPACE 1 01972000
  1970. *********************************************************************** 01973000
  1971. * * SECOND ERROR-RESET TO NORMAL 2314 CCW CHAIN * 01974000
  1972. *********************************************************************** 01975000
  1973. SPACE 1 01976000
  1974. RESET MVC CAW+1(3),CALIBRAT+9 CAW POINTS TO NORMAL 2314 CCWS 01977000
  1975. B RSTRTN GO CHECK ERROR COUNT 01978000
  1976. CALIBRAT CCW 19,0,CC+SILI,1 RECALIBRATE 01979000
  1977. CALTIC CCW 08,FMT2314,0,0 TIC TO NORMAL CCW'S 01980000
  1978. SAVEDCSW DC 2F'0' 01981000
  1979. CONTINAD DC F'0' ADDR OF CODE WHERE ALT TRACK @V56BDA8 01982000
  1980. * PROCESSING IS TO RESUME. 01983000
  1981. ERCOUNT DC F'0' 01984000
  1982. ERLIMIT DC F'9' 01985000
  1983. SENSTA DC 2F'0' 01986000
  1984. NEWPSW DC X'00040000' 01987000
  1985. DC A(IOINT) 01988000
  1986. RNSTUF DS 24F 01989000
  1987. WKSEEK DS 30F @V2A2029 01990000
  1988. RNDATA DS 46F NUMBER ENTRIES IN RECORD TABLE @V304498 01991000
  1989. SAVEVOL1 DC 24F'0' 01992000
  1990. SAVEFMT4 DC 24F'0' SAVE CONTENTS OF CP'S FMT4 @V56BDA8 01993000
  1991. ALTCCHH DC XL6'0' CCHH OF NEXT AVAIL. ALT TRK @V56BDA8 01994000
  1992. * PLUS COUNT OF NO. OF ALT. TRKS 01995000
  1993. SPACE 1 01996000
  1994. ALTSEEK CCW 07,ALTSKADD,CC+SILI,6 @V56BDA8 01997000
  1995. CCW 31,FILEMASK,CC+SILI,1 @V56BDA8 01998000
  1996. ALTTIC CCW 08,*-*,0,0 @V56BDA8 01999000
  1997. ALTSKADD DC XL6'0' SEEK ADDRESS NEXT TRACK @V56BDA8 02000000
  1998. ALTFLAG DC AL1(0) FLAG FOR 3340/3344 ALT TRACK @V56BDA8 02001000
  1999. HAR0READ EQU 128 HA/R0 READ IN PROGRESS @V56BDA8 02002000
  2000. SPACE 1 02003000
  2001. SPACE 1 02004000
  2002. *********************************************************************** 02005000
  2003. * * CONSOLE INTERRUPT FOUND BY DASD IO INTERRUPT ROUTINE * 02006000
  2004. *********************************************************************** 02007000
  2005. SPACE 1 02008000
  2006. ATNTST TM 68,X'80' WAS IT ATTENTION? 02009000
  2007. BCR 8,R14 NO,MUST BE FOR CONSOLE WRITE 02010000
  2008. B STMSG START OVER 02011000
  2009. EJECT 02012000
  2010. SPACE 1 02013000
  2011. *********************************************************************** 02014000
  2012. * * * 02015000
  2013. * * ALLOCATION ROUTINE * 02016000
  2014. * * * 02017000
  2015. *********************************************************************** 02018000
  2016. SPACE 1 02019000
  2017. ALLOCATE MVC DATAMSG+34(6),CPLABEL PUT LABEL INTO CONSOLE MSG 02020000
  2018. MVC ALLEND+19(6),CPLABEL PUT LABEL INTO CONSOLE MSG 02021000
  2019. LA R4,DATAMSG SET UP DATA MSG 02022000
  2020. BAL R14,WMSG WRITE MESSAGE 02023000
  2021. LA R4,ALMSG SET UP CYLINDER ALLOCATION MSG 02024000
  2022. BAL R14,WMSG WRITE MESSAGE 02025000
  2023. LA R4,ALMSG1 POINT TO MSG 02026000
  2024. BAL R14,WMSG GO WRITE MSG 02027000
  2025. MVI CHECKEND,X'FF' INITIALIZE END ONLY FLAG @VA09594 02027500
  2026. CLI CDSW2,X'FF' IS CARD SW SET? 02028000
  2027. BE GETCARD YES GET ANOTHER CARD 02029000
  2028. REREAD EQU * @VM08604 02030000
  2029. BAL R14,RMSG READ RESPONSE 02031000
  2030. TM CSW+4,UE WAS IT UNIT CK OR UNIT EXCEPTION 02032000
  2031. BO REREAD YES,TRY AGAN 02033000
  2032. CLI CDSW2,X'FF' IS IT CARD INPUT? @VA01930 02034000
  2033. BE CHECKCDS YES....GO CHECK THEM @VA01930 02035000
  2034. OC INDATA(5),BLANKS8 CONVERT TO UPPER CASE @VM08604 02036000
  2035. CLC INDATA(5),=C'TEMP ' IS IT TEMPARY @VM08604 02037000
  2036. MVI ATYPE,X'00' CLEAR TYPE TO 00 02038000
  2037. BE AOKALL BRANCH IF TEMP 02039000
  2038. CLC INDATA(5),=C'PERM ' IS IT PERMANENT ? @VM08604 02040000
  2039. MVI ATYPE,X'01' TYPE IS 01 02041000
  2040. BE AOKALL BRANCH IF PERMANENT 02042000
  2041. CLC INDATA(5),=C'TDSK ' IS IT TEMP DISK ? @VM08604 02043000
  2042. MVI ATYPE,X'02' TYPE IS 02 02044000
  2043. BE AOKALL IF TEMP DISK BRANCH 02045000
  2044. CLC INDATA(5),=C'DRCT ' IS IT DIRECTORY ? @VM08604 02046000
  2045. MVI ATYPE,X'04' TYPE IS 04 02047000
  2046. BE AOKALL IF DECTORY BRANCH 02048000
  2047. B CKEND NOW GO CHECK FOR AN END @VA01930 02049000
  2048. CHECKCDS MVC INDATA(80),CDINPUT GET THE CARD INPUT @VA01930 02050000
  2049. OC INDATA(5),BLANKS8 CONVERT TO UPPER CASE @VA01930 02051000
  2050. CLC INDATA(5),=C'TEMP,' IS IT TEMPORARY? @VA01930 02052000
  2051. MVI ATYPE,X'00' CLEAR TYPE TO 00 @VA01930 02053000
  2052. BE AOKALL BRANCH IF TEMPORARY @VA01930 02054000
  2053. CLC INDATA(5),=C'PERM,' IS IT PERMANENT? @VA01930 02055000
  2054. MVI ATYPE,X'01' TYPE IS 01 @VA01930 02056000
  2055. BE AOKALL BRANCH IF PERMANENT @VA01930 02057000
  2056. CLC INDATA(5),=C'TDSK,' IS IT TEMP DISK? @VA01930 02058000
  2057. MVI ATYPE,X'02' TYPE IS 02 @VA01930 02059000
  2058. BE AOKALL BRANCH IF TEMP DISK @VA01930 02060000
  2059. CLC INDATA(5),=C'DRCT,' IS IT DIRECTORY? @VA01930 02061000
  2060. MVI ATYPE,X'04' TYPE IS 04 @VA01930 02062000
  2061. BE AOKALL BRANCH IF DIRECTORY @VA01930 02063000
  2062. CKEND EQU * @VA01930 02064000
  2063. CLC INDATA(4),=C'END ' WAS 'END' TYPED? @VM08604 02065000
  2064. BE FINI IF END GO WRITE ALLOCATION TABLE 02066000
  2065. LA R4,TYPERR SET UP TO PRINT ERROR 02067000
  2066. BAL R14,WMSG WRITE MESSAGE 02068000
  2067. TM CDSW2,X'FF' CARD INPUT? 02069000
  2068. BNO REREAD NO,BRANCH 02070000
  2069. LA R4,CARDMESS SET UP ERROR MSG 02071000
  2070. BAL R14,WMSG WRITE MESSAGE 02072000
  2071. MVI ALLOERR,X'FF' ALLOCATE ERROR TURNED ON 02073000
  2072. B VALIDATE BRANCH 02074000
  2073. AOKALL MVC MASKB(3),MASKA PUT FO'S INTO MASKB 02075000
  2074. MVI CHECKEND,X'00' CLEAR END ONLY FLAG @VA09594 02075500
  2075. NC MASKB(3),INDATA+5 AND F0'S WITH INDATA 02076000
  2076. CLC MASKA(3),MASKB WAS IT ALL NUMERIC?? 02077000
  2077. BNE ERRCYL NO,ERROR IN INDATA 02078000
  2078. CLI CDSW2,X'FF' CARD INPUT? @VA01930 02079000
  2079. BNE CONSDATA NO, MUST BE FROM THE CONSOLE @VA01930 02080000
  2080. CLI INDATA+8,C',' 3 CHARS FOLLOWED BY COMMA? @VA01930 02081000
  2081. BNE ERRCYL NO...HE GOOFED. @VA01930 02082000
  2082. B CKREST GO CHECK THE REST OF IT @VA01930 02083000
  2083. CONSDATA EQU * @VA01930 02084000
  2084. CLI INDATA+8,X'40' ONLY 3 DIGITS (I HOPE)? @VM08604 02085000
  2085. BNE ERRCYL NOPE - REPEAT IT PLEASE @VM08604 02086000
  2086. CKREST NC MASKB(3),INDATA+9 AND F0'S WITH INDATA @VA01930 02087000
  2087. CLC MASKA(3),MASKB IS END CYLINDER NUMERIC? 02088000
  2088. BNE ERRCYL NO,ERROR IN INDATA 02089000
  2089. OI INDATA+12,X'40' CONVERT TO UPPER CASE @VM08604 02090000
  2090. CLI INDATA+12,X'40' MORE THAN 3 CHARS?? @VM08604 02091000
  2091. BNE ERRCYL YEP - DO IT AGAIN. @VM08604 02092000
  2092. PACK FIELDA+6(2),INDATA+5(3) PACK START CYLINDER DATA 02093000
  2093. PACK FIELDB+6(2),INDATA+9(3) PACK END CYLINDER DATA 02094000
  2094. CVB R7,FIELDA CONVERT TO BINARY START CYL 02095000
  2095. ST R7,FIELDA+4 SAVE BINARY RESULTS 02096000
  2096. CVB R7,FIELDB CONVERT TO BINARY END CYL 02097000
  2097. LH R5,HIVALUE MAX END CYLINDER 02098000
  2098. LA R5,1(R5) ADD ONE TO HI VALUE 02099000
  2099. CH R7,HIVALUE HIGHER THAN LAST CYLINDER 02100000
  2100. BH ERRCYL YES,ERROR 02101000
  2101. STORE2 ST R7,FIELDB+4 SAVE END CYLINDER 02102000
  2102. CLC FIELDA+4(4),FIELDB+4 IS START GREATER THAN END? 02103000
  2103. BH ERRCYL YES,THAT'S ERROR 02104000
  2104. LA R9,TABLE ADDRESS OF CYL BYTE MAP INTO R9 02105000
  2105. A R9,FIELDA+4 ADD START CYL TO BYTE MAP ADDRES 02106000
  2106. L R8,FIELDB+4 LOAD END CYL INTO R8 02107000
  2107. S R8,FIELDA+4 SUBTRACT START FROM END 02108000
  2108. LA R8,1(R8) ADD 1 TO NUMBER OF CYL'S 02109000
  2109. MVC INDIC+1(1),ATYPE ALTER INSTR TO CORRECT TYPE 02110000
  2110. INDIC MVI 0(R9),X'00' PUT TYPE INTO CYL BYTE MAP 02111000
  2111. LA R9,1(R9) ADD 1 TO BYTE MAP ADDRESS 02112000
  2112. BCT R8,INDIC REPEAT FOF THE NUMBER OF CYL'S 02113000
  2113. TM CDSW2,X'FF' IS CD SWITCH2 ON 02114000
  2114. BO GETCARD YES,BRANCH 02115000
  2115. B REREAD GET ANOTHER ENTRY 02116000
  2116. ERRCYL LA R4,TYPERR SET UP CYL ERROR MSG 02117000
  2117. BAL R14,WMSG WRITE MESSAGE 02118000
  2118. TM CDSW2,X'FF' IS CD SWITCH2 ON 02119000
  2119. BO BADINPUT YES,BRANCH 02120000
  2120. B REREAD GET ANOTHER ENTRY 02121000
  2121. SPACE 3 02122000
  2122. *********************************************************************** 02123000
  2123. * * WRITE ALLOCATION TABLE TO DASD * 02124000
  2124. *********************************************************************** 02125000
  2125. FINI LH R2,HIVALUE GET MAX CYL NO 02126000
  2126. LA R2,TABLE+1(R2) POINT TO LAST ENTRY IN ALLOCATION TABLE+1 02127000
  2127. MVI 0(R2),X'FF' SET END OF TABLE TO FF 02128000
  2128. CLI CHECKEND,X'FF' IS END THE ONLY COMMAND? @VA09594 02128100
  2129. BE PRINTALL YES, NO CHANGE SO JUST DISPLAY @VA09594 02128200
  2130. LH R5,DSKADD GET DEVICE ADD INTO R5 02129000
  2131. LA R1,ALLOREC ALLOCATE TABLE CCWS 02130000
  2132. ST R1,CAW LABEL CCW'S INTO CAW 02131000
  2133. TIO 0(R5) DRAIN IT 02132000
  2134. BC 2,*-4 LOOP IF BUSY 02133000
  2135. SIO 0(R5) WRITE OUT THE ALLO TABLE 02134000
  2136. TIO1 TIO 0(R5) DRAIN THE INT 02135000
  2137. BC 2,*-4 LOOP UNTIL DONE 02136000
  2138. BC 1,TIOCC3 DEVICE INOPER. - SAY SO @VA00923 02137000
  2139. TM CSW+5,X'FF' ANY BAD CHANNEL STATUS 02138000
  2140. BNZ ERROR YES- BRANCH 02139000
  2141. TM CSW+4,UC UNIT CHECK 02140000
  2142. BO ERROR YES- BRANCH 02141000
  2143. TM CSW+4,CE CHANNEL END 02142000
  2144. BO PRINTALL YES- BRANCH ALL OK 02143000
  2145. B TIO1 NO- GO GET IT 02144000
  2146. ERROR BAL R7,SENSIT GET THE SENSE DATA 02145000
  2147. MVC CCHHR(5),R4ALLOC MOVE IN THE CCHHR DATA 02146000
  2148. BAL R7,SENSIT2 TYPE THE MSG 02147000
  2149. B FATAL 02148000
  2150. *********************************************************************** 02149000
  2151. * * WRITE OUT ALLOCATION TABLE TO CONSOLE * 02150000
  2152. *********************************************************************** 02151000
  2153. PRINTALL DS 0H PRINT THE ALLOCATION DATA 02152000
  2154. LA R4,RESULTS PRINT ALLOCATION RESULTS 02153000
  2155. BAL R14,WMSG2 PRINT MESSAGE 02154000
  2156. LA R8,TABLE POINT TO TABLE 02155000
  2157. LR R6,R8 PUT TABLE ADDRESS INTO R6 02156000
  2158. SR R7,R7 CLEAR R7 02157000
  2159. * R6 POINTS TO BYTE IN BYTE TABLE 02158000
  2160. REENTER CLI 0(R6),X'00' IS FIRST BYTE 00? 02159000
  2161. MVC MAP+1(4),=C'TEMP' MOVE IN TEMP 02160000
  2162. BE CYLINDER YES,BRANCH 02161000
  2163. CLI 0(R6),X'01' IS BYTE 01? 02162000
  2164. MVC MAP+1(4),=C'PERM' MOVE IN PERM 02163000
  2165. BE CYLINDER YES,BRANCH 02164000
  2166. CLI 0(R6),X'02' IS BTYE 02? 02165000
  2167. MVC MAP+1(4),=C'TDSK' MOVE IN TDSK 02166000
  2168. BE CYLINDER YES,BRANCH 02167000
  2169. MVC MAP+1(4),=C'BAD ' SET UP FOR A BAD ENTRY 02168000
  2170. DIRECT TM 0(R6),X'F3' IS THIS CYL INVALID AS A DIRECTORY CYL 02169000
  2171. LA R7,1(,R7) BUMP CYL COUNT 02170000
  2172. LA R6,1(,R6) TABLE ADD ALSO 02171000
  2173. BNZ CONT YES- CONT 02172000
  2174. MVC MAP+1(4),=C'DRCT' MOVE IN DRCT 02173000
  2175. CLI 0(R6),X'0C' IS THIS AN IN USE DRCT CYL @VA10365 02174100
  2176. BH CONT NO - THATS ALL FOR THIS DRCT @VA10365 02174600
  2177. CLI 0(R6),X'04' IS IT A DRCT CYL @VA10365 02175100
  2178. BNL DIRECT YES - COUNT IT @VA10365 02175600
  2179. B CONT NO- BRANCH 02176000
  2180. CYLINDER CLC 0(1,R6),1(R6) NEXT CYLINDER THE SAME? 02177000
  2181. LA R7,1(R7) BUMP CYL COUNT BY 1 02178000
  2182. LA R6,1(R6) BUMP BYTE TABLE ADDRESS BY 1 02179000
  2183. BE CYLINDER IF SAME CYL LOOK AT NEXT BYTE 02180000
  2184. CONT LR R10,R6 PUT BYTE LOCATION INTO R10 02181000
  2185. SR R10,R8 PRESENT MINUS START ADDRESS 02182000
  2186. SR R10,R7 GET START CYLINDER 02183000
  2187. CVD R10,FIELDA CONVERT START TO DECIMAL 02184000
  2188. AR R10,R7 GET END ADDRESS 02185000
  2189. BCTR R10,0 REDUCE BY 1 02186000
  2190. CVD R10,FIELDB CONVERT END TO DECIMAL 02187000
  2191. OI FIELDA+7,X'0F' PLUG IN SIGN 02188000
  2192. OI FIELDB+7,X'0F' PLUG IN SIGN 02189000
  2193. UNPK MAP+6(3),FIELDA+6(2) UNPACK TO MAKE PRINTABLE 02190000
  2194. UNPK MAP+10(3),FIELDB+6(2) '' '' '' 02191000
  2195. LA R4,MAP SET UP PRINT MAP 02192000
  2196. BAL R14,WMSG2 WRITE MESSAGE 02193000
  2197. SR R7,R7 CLEAR R7 02194000
  2198. CR R6,R2 IS R6 AT HIVALUE 02195000
  2199. BL REENTER NO- BRANCH 02196000
  2200. LA R4,ALLEND SET UP TO ALLOCATION END 02197000
  2201. BAL R14,WMSG WRITE MESSAGE 02198000
  2202. MVI ALLOSW,X'00' TURN OFF ALLOCATE SWITCH 02199000
  2203. B GETCARD YES,BRANCH 02200000
  2204. SPACE 2 02201000
  2205. *********************************************************************** 02202000
  2206. * EXECUTED INSTRUCTIONS 02203000
  2207. *********************************************************************** 02204000
  2208. TSTFRMT CLC COMWOK(*-*),=CL8'FORMAT' @VA05542 02205000
  2209. TSTALLOC CLC COMWOK(*-*),=CL8'ALLOCATE' @VA05542 02206000
  2210. TSTLABL CLC COMWOK(*-*),=CL8'LABEL ' @VA05542 02207000
  2211. MVCCOMW MVC COMWOK(*-*),INDATA @VA05542 02208000
  2212. SPACE 02209000
  2213. EJECT 02210000
  2214. *********************************************************************** 02211000
  2215. * CONSOL MESSAGES 02212000
  2216. *********************************************************************** 02213000
  2217. LABELOK DC AL1(TITLE-*-1) 02214000
  2218. DC C'LABEL IS NOW XXXXXX' 02215000
  2219. TITLE DC AL1(FORA-*-1) 02216000
  2220. DC C'VM/370 FORMAT/ALLOCATE PROGRAM RELEASE 6' 02217000
  2221. FORA DC AL1(FMTMSG-*-1) 02218000
  2222. DC C'ENTER FORMAT OR ALLOCATE:' @V200731 02219000
  2223. FMTMSG DC AL1(ALLOCMSG-*-1) 02220000
  2224. DC C'FORMAT FUNCTION SELECTED' 02221000
  2225. ALLOCMSG DC AL1(ADDRESS-*-1) 02222000
  2226. DC C'ALLOCATE FUNCTION SELECTED' 02223000
  2227. ADDRESS DC AL1(WR1-*-1) 02224000
  2228. DC C'ENTER DEVICE ADDRESS (CCU):' 02225000
  2229. WR1 DC AL1(TYPMSG-*-1) 02226000
  2230. DC C'DMKFMT730E DEV XXX NOT OPERATIONAL OR ' @V56BDA8 02227000
  2231. DC C'NOT READY.' @V56BDA8 02228000
  2232. TYPMSG DC AL1(PCMSG-*-1) 02229000
  2233. DC C'ENTER DEVICE TYPE:' 02230000
  2234. PCMSG DC AL1(MCMSG-*-1) 02231000
  2235. DC C'DMKFMT756E PROGRAM CHECK PSW = ' @V305435 02232000
  2236. DC C'XXXXXXXXXXXXXXXX' @V200528 02233000
  2237. MCMSG DC AL1(ALMSG-*-1) 02234000
  2238. DC C'DMKFMT732E MACHINE CHECK RUN SEREP AND SAVE ' @V200528 02235000
  2239. DC C'OUTPUT FOR CE' @V200528 02236000
  2240. ALMSG DC AL1(ALMSG1-*-1) 02237000
  2241. DC C'TYPE CYL CYL' 02238000
  2242. ALMSG1 DC AL1(WRONG-*-1) 02239000
  2243. DC C'.... ... ...' 02240000
  2244. WRONG DC AL1(DATAMSG-*-1) 02241000
  2245. DC C'DMKFMT733E VOLID READ IS XXXXXX NOT XXXXXX' 02242000
  2246. DATAMSG DC AL1(TYPERR-*-1) 02243000
  2247. DC C'ENTER ALLOCATION DATA FOR VOLUME XXXXXX' 02244000
  2248. TYPERR DC AL1(MAP-*-1) 02245000
  2249. DC C'DMKFMT734E TYPE OR CYL INVALID' 02246000
  2250. MAP DC AL1(ALLEND-*-1) 02247000
  2251. DC C'TEMP 000 000' 02248000
  2252. ALLEND DC AL1(STCYL-*-1) 02249000
  2253. DC C'DEVICE XXX VOLUME XXXXXX ALLOCATION ENDED' 02250000
  2254. STCYL DC AL1(ENDCYL-*-1) 02251000
  2255. DC C'ENTER START CYLINDER (XXX) OR "LABEL":' 02252000
  2256. ENDCYL DC AL1(PROGFOR-*-1) 02253000
  2257. DC C'ENTER END CYLINDER (XXX):' 02254000
  2258. PROGFOR DC AL1(RDLAB-*-1) 02255000
  2259. DC C'FORMAT STARTED' 02256000
  2260. RDLAB DC AL1(ENDFOR-*-1) 02257000
  2261. DC C'ENTER DEVICE LABEL:' 02258000
  2262. ENDFOR DC AL1(FATLMSG-*-1) 02259000
  2263. DC C'FORMAT DONE' 02260000
  2264. FATLMSG DC AL1(PAGE-*-1) 02261000
  2265. DC C'DMKFMT735E FATAL DASD IO ERROR.' @VA00923 02262000
  2266. DC C' CSW=XXXXXXXXXXXXXXXX' @VA00923 02263000
  2267. PAGE DC AL1(IOERR-*-1) 02264000
  2268. DC C'XXX NO. PAGE RECORDS WITH READ-CHECK ERRORS' @V304498 02265000
  2269. IOERR DC AL1(M736L) @V2B3729 02266000
  2270. DC C'DMKFMT736E IO ERROR XXX CCHHR = 0000000000 SENSE = XXX*02267000
  2271. XXXXXXXXX' 02268000
  2272. M736L EQU *-IOERR-1 @V2B3729 02269000
  2273. IOERR2 DC AL1(M736L2) @V2B3729 02270000
  2274. DC CL36'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' @V2B3729 02271000
  2275. M736L2 EQU *-IOERR2-1 @V2B3729 02272000
  2276. BAD DC AL1(IPLERROR-*-1) 02273000
  2277. BADMSG DC C'DMKFMT737E INVALID OPERAND' 02274000
  2278. IPLERROR DC AL1(IPLERRL) @V56BDA8 02275000
  2279. DC C'DMKFMT738A DEV XXX INTERVENTION REQUIRED' 02276000
  2280. IPLERRL EQU *-IPLERROR-1 @V56BDA8 02277000
  2281. MSGATRK DC AL1(MSGATRKL) @V56BDA8 02278000
  2282. DC C'DMKFMT739E FLAGGED PRIMARY TRACK HAS NO ' @V56BDA8 02279000
  2283. DC C'ALTERNATE ASSIGNED, IO ERROR FOLLOWS.' @V56BDA8 02280000
  2284. MSGATRKL EQU *-MSGATRK-1 @V56BDA8 02281000
  2285. MSG35MB DC AL1(MSG35MBL) @V56BDA8 02282000
  2286. DC C'DMKFMT740E PACK MOUNTED IS 3340-35, NOT ' @V56BDA8 02283000
  2287. DC C'3340-70. MOUNT ANOTHER OR RESPECIFY.' @V56BDA8 02284000
  2288. MSG35MBL EQU *-MSG35MB-1 @V56BDA8 02285000
  2289. CARDMESS DC AL1(RESPONSE-*-1) 02286000
  2290. CDINPUT DC 80C' ' 02287000
  2291. RESPONSE DC AL1(RESULTS-*-1) 02288000
  2292. ANSWER DC C' ' 02289000
  2293. RESULTS DC AL1(END-*-1) 02290000
  2294. DC C'ALLOCATION RESULTS' 02291000
  2295. END EQU * 02292000
  2296. REGSAV DC F'0' 02293000
  2297. ZERO DC XL8'00' 02294000
  2298. ATYPE DC X'00' 02295000
  2299. RECVALUE DC X'00' 02296000
  2300. CHECKEND DC X'FF' USED TO INDICATE END AS ONLY @VA09594 02296500
  2301. * COMMAND 02296600
  2302. COMWOK DC XL9'00' 02297000
  2303. DS 0D 02298000
  2304. IPLDEV DC X'0000' 02299000
  2305. SPACE 2 02300000
  2306. *********************************************************************** 02301000
  2307. * NORMAL DATA RECORDS FOR 3330 AND 2305 * 02302000
  2308. *********************************************************************** 02303000
  2309. REC1 DC F'0' CCHH 02304000
  2310. DC AL1(1),AL3(4096) REC NUMBER KL DL DL 02305000
  2311. RECX1 DC F'0' CCHH 02306000
  2312. DC AL1(128+01),AL3(50) REC NUMBER KL DL DL 02307000
  2313. REC2 DC F'0' CCHH 02308000
  2314. DC AL1(2),AL3(4096) REC NUMBER KL DL DL 02309000
  2315. RECX2 DC F'0' CCHH 02310000
  2316. DC AL1(128+02),AL3(50) REC NUMBER KL DL DL 02311000
  2317. REC3 DC F'0' CCHH 02312000
  2318. DC AL1(3),AL3(4096) REC NUMBER KL DL DL 02313000
  2319. RECX3 DC F'0' CCHH @V304498 02314000
  2320. DC AL1(128+03),AL3(50) REC NUMBER KL DL DL @V304498 02315000
  2321. REC4 DC F'1' CCHH 02316000
  2322. DC AL1(4),AL3(4096) REC NUMBER KL DL DL 02317000
  2323. RECX4 DC F'1' CCHH 02318000
  2324. DC AL1(128+04),AL3(50) REC NUMBER KL DL DL 02319000
  2325. REC5 DC F'1' CCHH 02320000
  2326. DC AL1(5),AL3(4096) REC NUMBER KL DL DL 02321000
  2327. RECX5 DC F'1' CCHH 02322000
  2328. DC AL1(128+05),AL3(50) REC NUMBER KL DL DL 02323000
  2329. REC6 DC F'1' CCHH 02324000
  2330. DC AL1(6),AL3(4096) REC NUMBER KL DL DL 02325000
  2331. RECX6 DC F'1' CCHH @V304498 02326000
  2332. DC AL1(128+06),AL3(50) REC NUMBER KL DL DL @V304498 02327000
  2333. REC7 DC F'2' CCHH 02328000
  2334. DC AL1(7),AL3(4096) REC NUMBER KL DL DL 02329000
  2335. RECX7 DC F'2' CCHH 02330000
  2336. DC AL1(128+07),AL3(50) REC NUMBER KL DL DL 02331000
  2337. REC8 DC F'2' CCHH 02332000
  2338. DC AL1(8),AL3(4096) REC NUMBER KL DL DL 02333000
  2339. RECX8 DC F'2' CCHH 02334000
  2340. DC AL1(128+08),AL3(50) REC NUMBER KL DL DL 02335000
  2341. REC9 DC F'2' CCHH 02336000
  2342. DC AL1(9),AL3(4096) REC NUMBER KL DL DL 02337000
  2343. RECX9 DC F'2' CCHH @V304498 02338000
  2344. DC AL1(128+09),AL3(50) REC NUMBER KL DL DL @V304498 02339000
  2345. REC10 DC F'3' CCHH 02340000
  2346. DC AL1(10),AL3(4096) REC NUMBER KL DL DL 02341000
  2347. RECX10 DC F'3' CCHH 02342000
  2348. DC AL1(128+10),AL3(50) REC NUMBER KL DL DL 02343000
  2349. REC11 DC F'3' CCHH 02344000
  2350. DC AL1(11),AL3(4096) REC NUMBER KL DL DL 02345000
  2351. RECX11 DC F'3' CCHH 02346000
  2352. DC AL1(128+11),AL3(50) REC NUMBER KL DL DL 02347000
  2353. REC12 DC F'3' CCHH 02348000
  2354. DC AL1(12),AL3(4096) REC NUMBER KL DL DL 02349000
  2355. SPACE 1 02350000
  2356. *********************************************************************** 02351000
  2357. * CCW TO WRITE ALLOCATION TABLE * 02352000
  2358. *********************************************************************** 02353000
  2359. SPACE 1 02354000
  2360. ALLOREC CCW 07,R4SEEK,CC+SILI,6 SEEK TO WRITE ALLOCATION 02355000
  2361. CCW 31,FILEMASK,CC+SILI,1 SET FILEMASK 02356000
  2362. CCW 49,R4ALLOC,CC+SILI,5 SEARCH ID 02357000
  2363. CCW 08,*-8,0,0 TIC BACK 02358000
  2364. CCW 05,TABLE,CC+SILI,1024 WRITE DATA 02359000
  2365. CCW 49,R4ALLOC,CC+SILI,5 SEARCH ID EQ 02360000
  2366. CCW 08,*-8,0,0 02361000
  2367. CCW 06,TABLE,0,1024 READ DATA 02362000
  2368. SPACE 1 02363000
  2369. *********************************************************************** 02364000
  2370. * WRITE CCW FOR 3330 * 02365000
  2371. ********************************************************************* 02366000
  2372. SPACE 1 02367000
  2373. SPACE 2 02368000
  2374. DS 0D 02369000
  2375. FMT3330 CCW 07,SEEKA,CC+SILI,6 SEEK 02370000
  2376. CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK 02371000
  2377. CCW 49,SEEKA+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02372000
  2378. CCW 08,*-8,0,0 TIC BACK 02373000
  2379. CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO 02374000
  2380. CCW 49,SEEKA+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02375000
  2381. CCW 08,*-8,0,0 TIC 02376000
  2382. CCW 29,REC1,CC+SILI,8 WRITE 4096 PAGE 02377000
  2383. CCW 29,RECX1,CC+SILI,8 02378000
  2384. CCW 29,REC2,CC+SILI,8 WRITE 4096 PAGE 02379000
  2385. CCW 29,RECX2,CC+SILI,8 02380000
  2386. CCW 29,REC3,CC+SILI,8 WRITE 4096 PAGE 02381000
  2387. CCW 07,SEEKB,CC+SILI,6 SEEK 02382000
  2388. CCW 49,SEEKB+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02383000
  2389. CCW 08,*-8,0,0 TIC BACK 02384000
  2390. CCW 05,ZERO,CC+SILI,8 02385000
  2391. CCW 49,SEEKB+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02386000
  2392. CCW 08,*-8,0,0 TIC 02387000
  2393. CCW 29,REC4,CC+SILI,8 WRITE 4096 PAGE 02388000
  2394. CCW 29,RECX4,CC+SILI,8 02389000
  2395. CCW 29,REC5,CC+SILI,8 WRITE 4096 PAGE 02390000
  2396. CCW 29,RECX5,CC+SILI,8 02391000
  2397. CCW 29,REC6,CC+SILI,8 WRITE 4096 PAGE 02392000
  2398. CCW 07,SEEKC,CC+SILI,6 SEEK 02393000
  2399. CCW 49,SEEKC+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02394000
  2400. CCW 08,*-8,0,0 TIC BACK 02395000
  2401. CCW 05,ZERO,CC+SILI,8 02396000
  2402. CCW 49,SEEKC+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02397000
  2403. CCW 08,*-8,0,0 TIC 02398000
  2404. CCW 29,REC7,CC+SILI,8 WRITE 4096 PAGE 02399000
  2405. CCW 29,RECX7,CC+SILI,8 02400000
  2406. CCW 29,REC8,CC+SILI,8 WRITE 4096 PAGE 02401000
  2407. CCW 29,RECX8,CC+SILI,8 02402000
  2408. CCW 29,REC9,CC+SILI,8 WRITE 4096 PAGE 02403000
  2409. WR57 CCW 08,NEXTWRT,0,0 USED ON 57 TH REC 02404000
  2410. NEXTWRT CCW 07,SEEKD,CC+SILI,6 SEEK 02405000
  2411. CCW 49,SEEKD+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02406000
  2412. CCW 08,*-8,0,0 TIC BACK 02407000
  2413. CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO 02408000
  2414. CCW 49,SEEKD+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02409000
  2415. CCW 08,*-8,0,0 TIC 02410000
  2416. CCW 29,REC10,CC+SILI,8 WRITE 4096 PAGE 02411000
  2417. CCW 29,RECX10,CC+SILI,8 02412000
  2418. CCW 29,REC11,CC+SILI,8 WRITE 4096 PAGE 02413000
  2419. CCW 29,RECX11,CC+SILI,8 02414000
  2420. CCW 29,REC12,CC+SILI,8 WRITE 4096 PAGE 02415000
  2421. CCW 8,READCCW,0,0 GO READ THE TRACK'S 02416000
  2422. SPACE 3 02417000
  2423. *********************************************************************** 02418000
  2424. * WRITE CCWS FOR 3340-35 AND 3340-70 * 02419000
  2425. *********************************************************************** 02420000
  2426. SPACE 2 02421000
  2427. DS 0D @V2A2029 02422000
  2428. FMT3340 CCW 07,SEEKA,CC+SILI,6 SEEK @V2A2029 02423000
  2429. CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK @V2A2029 02424000
  2430. CCW 49,SEEKA+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02425000
  2431. CCW 08,*-8,0,0 TIC BACK @V2A2029 02426000
  2432. CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO @V2A2029 02427000
  2433. CCW 49,SEEKA+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02428000
  2434. CCW 08,*-8,0,0 TIC @V2A2029 02429000
  2435. CCW 29,REC1,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02430000
  2436. CCW 29,REC2,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02431000
  2437. CCW 07,SEEKB,CC+SILI,6 SEEK @V2A2029 02432000
  2438. CCW 49,SEEKB+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02433000
  2439. CCW 08,*-8,0,0 TIC BACK @V2A2029 02434000
  2440. CCW 05,ZERO,CC+SILI,8 @V2A2029 02435000
  2441. CCW 49,SEEKB+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02436000
  2442. CCW 08,*-8,0,0 TIC @V2A2029 02437000
  2443. CCW 29,REC3,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02438000
  2444. CCW 29,REC4,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02439000
  2445. CCW 07,SEEKC,CC+SILI,6 SEEK @V2A2029 02440000
  2446. CCW 49,SEEKC+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02441000
  2447. CCW 08,*-8,0,0 TIC BACK @V2A2029 02442000
  2448. CCW 05,ZERO,CC+SILI,8 @V2A2029 02443000
  2449. CCW 49,SEEKC+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02444000
  2450. CCW 08,*-8,0,0 TIC @V2A2029 02445000
  2451. CCW 29,REC5,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02446000
  2452. CCW 29,REC6,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02447000
  2453. CCW 07,SEEKD,CC+SILI,6 SEEK @V2A2029 02448000
  2454. CCW 49,SEEKD+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02449000
  2455. CCW 08,*-8,0,0 TIC BACK @V2A2029 02450000
  2456. CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO @V2A2029 02451000
  2457. CCW 49,SEEKD+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02452000
  2458. CCW 08,*-8,0,0 TIC @V2A2029 02453000
  2459. CCW 29,REC7,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02454000
  2460. CCW 29,REC8,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02455000
  2461. CCW 07,SEEKE,CC+SILI,6 SEEK @V2A2029 02456000
  2462. CCW 49,SEEKE+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02457000
  2463. CCW 08,*-8,0,0 TIC BACK @V2A2029 02458000
  2464. CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO @V2A2029 02459000
  2465. CCW 49,SEEKE+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02460000
  2466. CCW 08,*-8,0,0 TIC @V2A2029 02461000
  2467. CCW 29,REC9,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02462000
  2468. CCW 29,REC10,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02463000
  2469. CCW 07,SEEKF,CC+SILI,6 SEEK @V2A2029 02464000
  2470. CCW 49,SEEKF+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02465000
  2471. CCW 08,*-8,0,0 TIC BACK @V2A2029 02466000
  2472. CCW 05,ZERO,CC+SILI,8 @V2A2029 02467000
  2473. CCW 49,SEEKF+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02468000
  2474. CCW 08,*-8,0,0 TIC @V2A2029 02469000
  2475. CCW 29,REC11,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02470000
  2476. CCW 29,REC12,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02471000
  2477. SPACE 3 02472000
  2478. * 02473000
  2479. * READ CCWS FOR 3340-35 AND 3340-70 02474000
  2480. * 02475000
  2481. CCW 07,SEEKA,CC+SILI,6 SEEK @V2A2029 02476000
  2482. CCW 49,REC1,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02477000
  2483. CCW 08,*-8,0,0 TIC BACK @V2A2029 02478000
  2484. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02479000
  2485. CCW 49,REC2,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02480000
  2486. CCW 08,*-8,0,0 TIC BACK @V2A2029 02481000
  2487. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02482000
  2488. CCW 07,SEEKB,CC+SILI,6 SEEK @V2A2029 02483000
  2489. CCW 49,REC3,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02484000
  2490. CCW 08,*-8,0,0 TIC BACK @V2A2029 02485000
  2491. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02486000
  2492. CCW 49,REC4,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02487000
  2493. CCW 08,*-8,0,0 TIC BACK @V2A2029 02488000
  2494. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02489000
  2495. CCW 07,SEEKC,CC+SILI,6 SEEK @V2A2029 02490000
  2496. CCW 49,REC5,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02491000
  2497. CCW 08,*-8,0,0 TIC BACK @V2A2029 02492000
  2498. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02493000
  2499. CCW 49,REC6,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02494000
  2500. CCW 08,*-8,0,0 TIC BACK @V2A2029 02495000
  2501. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02496000
  2502. CCW 07,SEEKD,CC+SILI,6 SEEK @V2A2029 02497000
  2503. CCW 49,REC7,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02498000
  2504. CCW 08,*-8,0,0 TIC BACK @V2A2029 02499000
  2505. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02500000
  2506. CCW 49,REC8,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02501000
  2507. CCW 08,*-8,0,0 TIC BACK @V2A2029 02502000
  2508. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02503000
  2509. CCW 07,SEEKE,CC+SILI,6 SEEK @V2A2029 02504000
  2510. CCW 49,REC9,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02505000
  2511. CCW 08,*-8,0,0 TIC BACK @V2A2029 02506000
  2512. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02507000
  2513. CCW 49,REC10,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02508000
  2514. CCW 08,*-8,0,0 TIC BACK @V2A2029 02509000
  2515. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02510000
  2516. CCW 07,SEEKF,CC+SILI,6 SEEK @V2A2029 02511000
  2517. CCW 49,REC11,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02512000
  2518. CCW 08,*-8,0,0 TIC BACK @V2A2029 02513000
  2519. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02514000
  2520. CCW 49,REC12,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02515000
  2521. CCW 08,*-8,0,0 TIC BACK @V2A2029 02516000
  2522. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02517000
  2523. CCW 08,BITMAP,0,0 TIC TO WRITE REC 0 BIT MAP @V2A2029 02518000
  2524. SPACE 3 02519000
  2525. *********************************************************************** 02520000
  2526. * WRITE CCW FOR 2305S 02521000
  2527. ********************************************************************** 02522000
  2528. SPACE 1 02523000
  2529. SPACE 2 02524000
  2530. DS 0D 02525000
  2531. FMT2305 CCW 07,SEEKA,CC+SILI,6 SEEK 02526000
  2532. CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK 02527000
  2533. CCW 21,SEEKA+2,CC+SILI,16 WRITE RECORD ZERO 02528000
  2534. CCW 29,REC1,CC+SILI,8 WRITE 4096 PAGE 02529000
  2535. CCW 29,RECX1,CC+SILI,8 02530000
  2536. CCW 29,REC2,CC+SILI,8 WRITE 4096 PAGE 02531000
  2537. CCW 29,RECX2,CC+SILI,8 02532000
  2538. CCW 29,REC3,CC+SILI,8 WRITE 4096 PAGE 02533000
  2539. CCW 07,SEEKB,CC+SILI,6 SEEK 02534000
  2540. CCW 21,SEEKB+2,CC+SILI,16 WRITE RECORD ZERO 02535000
  2541. CCW 29,REC4,CC+SILI,8 WRITE 4096 PAGE 02536000
  2542. CCW 29,RECX4,CC+SILI,8 02537000
  2543. CCW 29,REC5,CC+SILI,8 WRITE 4096 PAGE 02538000
  2544. CCW 29,RECX5,CC+SILI,8 02539000
  2545. CCW 29,REC6,CC+SILI,8 WRITE 4096 PAGE 02540000
  2546. CCW 07,SEEKC,CC+SILI,6 SEEK 02541000
  2547. CCW 21,SEEKC+2,CC+SILI,16 WRITE RECORD ZERO 02542000
  2548. CCW 29,REC7,CC+SILI,8 WRITE 4096 PAGE 02543000
  2549. CCW 29,RECX7,CC+SILI,8 02544000
  2550. CCW 29,REC8,CC+SILI,8 WRITE 4096 PAGE 02545000
  2551. CCW 29,RECX8,CC+SILI,8 02546000
  2552. CCW 29,REC9,CC+SILI,8 WRITE 4096 PAGE 02547000
  2553. CCW 07,SEEKD,CC+SILI,6 SEEK 02548000
  2554. CCW 21,SEEKD+2,CC+SILI,16 WRITE RECORD ZERO 02549000
  2555. CCW 29,REC10,CC+SILI,8 WRITE 4096 PAGE 02550000
  2556. CCW 29,RECX10,CC+SILI,8 02551000
  2557. CCW 29,REC11,CC+SILI,8 WRITE 4096 PAGE 02552000
  2558. CCW 29,RECX11,CC+SILI,8 02553000
  2559. CCW 29,REC12,CC+SILI,8 WRITE 4096 PAGE 02554000
  2560. SPACE 2 02555000
  2561. ****"****************************************************************** 02556000
  2562. * READ CCW FOR NORMAL RECORDS 3340, 3330 AND 2305S * 02557000
  2563. *********************************************************************** 02558000
  2564. SPACE 1 02559000
  2565. READCCW CCW 07,SEEKA,CC+SILI,6 SEEK 02560000
  2566. CCW 49,REC1,CC+SILI,5 SEARCH ID EQUAL 02561000
  2567. CCW 08,*-8,0,0 TIC BACK 02562000
  2568. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02563000
  2569. CCW 49,REC2,CC+SILI,5 SEARCH ID EQUAL 02564000
  2570. CCW 08,*-8,0,0 TIC BACK 02565000
  2571. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02566000
  2572. CCW 49,REC3,CC+SILI,5 SEARCH ID EQUAL 02567000
  2573. CCW 08,*-8,0,0 TIC BACK 02568000
  2574. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02569000
  2575. CCW 07,SEEKB,CC+SILI,6 SEEK 02570000
  2576. CCW 49,REC4,CC+SILI,5 SEARCH ID EQUAL 02571000
  2577. CCW 08,*-8,0,0 TIC BACK 02572000
  2578. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02573000
  2579. CCW 49,REC5,CC+SILI,5 SEARCH ID EQUAL 02574000
  2580. CCW 08,*-8,0,0 TIC BACK 02575000
  2581. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02576000
  2582. CCW 49,REC6,CC+SILI,5 SEARCH ID EQUAL 02577000
  2583. CCW 08,*-8,0,0 TIC BACK 02578000
  2584. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02579000
  2585. CCW 07,SEEKC,CC+SILI,6 SEEK 02580000
  2586. CCW 49,REC7,CC+SILI,5 SEARCH ID EQUAL 02581000
  2587. CCW 08,*-8,0,0 TIC BACK 02582000
  2588. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02583000
  2589. CCW 49,REC8,CC+SILI,5 SEARCH ID EQUAL 02584000
  2590. CCW 08,*-8,0,0 TIC BACK 02585000
  2591. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02586000
  2592. CCW 49,REC9,CC+SILI,5 SEARCH ID EQUAL 02587000
  2593. CCW 08,*-8,0,0 TIC BACK 02588000
  2594. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02589000
  2595. RD57 CCW 08,NEXTREAD,0,0 USED ON 57TH REC 02590000
  2596. NEXTREAD CCW 07,SEEKD,CC+SILI,6 SEEK 02591000
  2597. CCW 49,REC10,CC+SILI,5 SEARCH ID EQUAL 02592000
  2598. CCW 08,*-8,0,0 TIC BACK 02593000
  2599. CCW 06,0,CC+SKIP,4096 READ DATA 1 PAGE 02594000
  2600. CCW 49,REC11,CC+SILI,5 SEARCH ID EQUAL 02595000
  2601. CCW 08,*-8,0,0 TIC BACK 02596000
  2602. CCW 06,0,CC+SKIP,4096 READ DATA 1 PAGE 02597000
  2603. CCW 49,REC12,CC+SILI,5 SEARCH ID EQUAL 02598000
  2604. CCW 08,*-8,0,0 TIC BACK 02599000
  2605. CCW 06,0,CC+SKIP,4096 READ DATA 1 PAGE 02600000
  2606. CCW 08,BITMAP,0,0 TIC TO WRITE REC 0 BIT MAP 02601000
  2607. SPACE 1 02602000
  2608. *********************************************************************** 02603000
  2609. * WRITE CCW FOR 3350 * 02604000
  2610. *********************************************************************** 02605000
  2611. SPACE 1 02606000
  2612. DS 0D @V304498 02607000
  2613. FMT3350 CCW 07,SEEKA,CC+SILI,6 SEEK @V304498 02608000
  2614. CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK @V304498 02609000
  2615. CCW 49,SEEKA+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02610000
  2616. CCW 08,*-8,0,0 TIC BACK @V304498 02611000
  2617. CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO @V304498 02612000
  2618. CCW 49,SEEKA+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02613000
  2619. CCW 08,*-8,0,0 TIC @V304498 02614000
  2620. CCW 29,REC1,CC+SILI,8 WRITE 4096 PAGE @V304498 02615000
  2621. CCW 29,RECX1,CC+SILI,8 @V304498 02616000
  2622. CCW 29,REC2,CC+SILI,8 WRITE 4096 PAGE @V304498 02617000
  2623. CCW 29,RECX2,CC+SILI,8 @V304498 02618000
  2624. CCW 29,REC3,CC+SILI,8 WRITE 4096 PAGE @V304498 02619000
  2625. CCW 29,RECX3,CC+SILI,8 @V304498 02620000
  2626. CCW 29,REC4,CC+SILI,8 WRITE 4096 PAGE @V304498 02621000
  2627. CCW 07,SEEKB,CC+SILI,6 SEEK @V304498 02622000
  2628. CCW 49,SEEKB+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02623000
  2629. CCW 08,*-8,0,0 TIC BACK @V304498 02624000
  2630. CCW 05,ZERO,CC+SILI,8 @V304498 02625000
  2631. CCW 49,SEEKB+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02626000
  2632. CCW 08,*-8,0,0 TIC @V304498 02627000
  2633. CCW 29,REC5,CC+SILI,8 WRITE 4096 PAGE @V304498 02628000
  2634. CCW 29,RECX5,CC+SILI,8 @V304498 02629000
  2635. CCW 29,REC6,CC+SILI,8 WRITE 4096 PAGE @V304498 02630000
  2636. CCW 29,RECX6,CC+SILI,8 @V304498 02631000
  2637. CCW 29,REC7,CC+SILI,8 WRITE 4096 PAGE @V304498 02632000
  2638. CCW 29,RECX7,CC+SILI,8 @V304498 02633000
  2639. CCW 29,REC8,CC+SILI,8 WRITE 4096 PAGE @V304498 02634000
  2640. CCW 07,SEEKC,CC+SILI,6 SEEK @V304498 02635000
  2641. CCW 49,SEEKC+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02636000
  2642. CCW 08,*-8,0,0 TIC BACK @V304498 02637000
  2643. CCW 05,ZERO,CC+SILI,8 @V304498 02638000
  2644. CCW 49,SEEKC+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02639000
  2645. CCW 08,*-8,0,0 TIC @V304498 02640000
  2646. CCW 29,REC9,CC+SILI,8 WRITE 4096 PAGE @V304498 02641000
  2647. CCW 29,RECX9,CC+SILI,8 @V304498 02642000
  2648. CCW 29,REC10,CC+SILI,8 WRITE 4096 PAGE @V304498 02643000
  2649. CCW 29,RECX10,CC+SILI,8 @V304498 02644000
  2650. CCW 29,REC11,CC+SILI,8 WRITE 4096 PAGE @V304498 02645000
  2651. CCW 29,RECX11,CC+SILI,8 @V304498 02646000
  2652. CCW 29,REC12,CC+SILI,8 WRITE 4096 PAGE @V304498 02647000
  2653. SPACE 1 02648000
  2654. *********************************************************************** 02649000
  2655. * READ CCWS FOR 3350 * 02650000
  2656. *********************************************************************** 02651000
  2657. SPACE 1 02652000
  2658. CCW 07,SEEKA,CC+SILI,6 SEEK @V304498 02653000
  2659. CCW 49,REC1,CC+SILI,5 SEARCH ID EQUAL @V304498 02654000
  2660. CCW 08,*-8,0,0 TIC BACK @V304498 02655000
  2661. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02656000
  2662. CCW 49,REC2,CC+SILI,5 SEARCH ID EQUAL @V304498 02657000
  2663. CCW 08,*-8,0,0 TIC BACK @V304498 02658000
  2664. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02659000
  2665. CCW 49,REC3,CC+SILI,5 SEARCH ID EQUAL @V304498 02660000
  2666. CCW 08,*-8,0,0 TIC BACK @V304498 02661000
  2667. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02662000
  2668. CCW 49,REC4,CC+SILI,5 SEARCH ID EQUAL @V304498 02663000
  2669. CCW 08,*-8,0,0 TIC BACK @V304498 02664000
  2670. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02665000
  2671. CCW 07,SEEKB,CC+SILI,6 SEEK @V304498 02666000
  2672. CCW 49,REC5,CC+SILI,5 SEARCH ID EQUAL @V304498 02667000
  2673. CCW 08,*-8,0,0 TIC BACK @V304498 02668000
  2674. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02669000
  2675. CCW 49,REC6,CC+SILI,5 SEARCH ID EQUAL @V304498 02670000
  2676. CCW 08,*-8,0,0 TIC BACK @V304498 02671000
  2677. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02672000
  2678. CCW 49,REC7,CC+SILI,5 SEARCH ID EQUAL @V304498 02673000
  2679. CCW 08,*-8,0,0 TIC BACK @V304498 02674000
  2680. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02675000
  2681. CCW 49,REC8,CC+SILI,5 SEARCH ID EQUAL @V304498 02676000
  2682. CCW 08,*-8,0,0 TIC BACK @V304498 02677000
  2683. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02678000
  2684. CCW 07,SEEKC,CC+SILI,6 SEEK @V304498 02679000
  2685. CCW 49,REC9,CC+SILI,5 SEARCH ID EQUAL @V304498 02680000
  2686. CCW 08,*-8,0,0 TIC BACK @V304498 02681000
  2687. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02682000
  2688. CCW 49,REC10,CC+SILI,5 SEARCH ID EQUAL @V304498 02683000
  2689. CCW 08,*-8,0,0 TIC BACK @V304498 02684000
  2690. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02685000
  2691. CCW 49,REC11,CC+SILI,5 SEARCH ID EQUAL @V304498 02686000
  2692. CCW 08,*-8,0,0 TIC BACK @V304498 02687000
  2693. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02688000
  2694. CCW 49,REC12,CC+SILI,5 SEARCH ID EQUAL @V304498 02689000
  2695. CCW 08,*-8,0,0 TIC BACK @V304498 02690000
  2696. CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02691000
  2697. CCW 08,BITMAP,0,0 TIC TO WRITE REC 0 BIT MAP @V304498 02692000
  2698. SPACE 1 02693000
  2699. ********************************************************************** 02694000
  2700. * * NORMAL FORMAT CCW * 02695000
  2701. *********************************************************************** 02696000
  2702. FMT2314 CCW 7,SEEKA,CC+SILI,6 SEEK 02697000
  2703. CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK 02698000
  2704. CCW 25,SEEKA+1,CC+SILI,5 WHA WRITE HOME ADDRESS 02699000
  2705. CCW 21,SEEKA+2,CC+SILI,16 WRITE RECORD 0 02700000
  2706. CCW 29,R1STUF,CC+SILI,8 WCKD WRITE COUNT KEY DATA 02701000
  2707. CCW 01,R2STUF,CC+SILI,8 SPCKD WR SPECIAL COUNT KEY DATA 02702000
  2708. CCW 07,SEEKB,CC+SILI,6 02703000
  2709. CCW 25,SEEKB+1,CC+SILI,5 02704000
  2710. CCW 21,SEEKB+2,CC+SILI,16 02705000
  2711. CCW 29,R2ASTUF,CC+SILI,8 02706000
  2712. CCW 29,R3STUF,CC+SILI,8 02707000
  2713. CCW 01,R4STUF,CC+SILI,8 02708000
  2714. CCW 07,SEEKC,CC+SILI,6 02709000
  2715. CCW 25,SEEKC+1,CC+SILI,5 02710000
  2716. CCW 21,SEEKC+2,CC+SILI,16 02711000
  2717. CCW 29,R4ASTUF,CC+SILI,8 02712000
  2718. CCW 01,R5STUF,CC+SILI,8 02713000
  2719. CCW 07,SEEKD,CC+SILI,6 02714000
  2720. CCW 25,SEEKD+1,CC+SILI,5 02715000
  2721. CCW 21,SEEKD+2,CC+SILI,16 02716000
  2722. CCW 29,R5ASTUF,CC+SILI,8 02717000
  2723. CCW 29,R6STUF,CC+SILI,8 02718000
  2724. CCW 01,R7STUF,CC+SILI,8 02719000
  2725. CCW 07,SEEKE,CC+SILI,6 02720000
  2726. CCW 25,SEEKE+1,CC+SILI,5 02721000
  2727. CCW 21,SEEKE+2,CC+SILI,16 02722000
  2728. CCW 29,R7ASTUF,CC+SILI,8 02723000
  2729. CCW 29,R8STUF,CC+SILI,8 02724000
  2730. SPACE 1 02725000
  2731. *********************************************************************** 02726000
  2732. * * READ CCW'S 2314 2319 02727000
  2733. *********************************************************************** 02728000
  2734. CCW 07,SEEKA,CC+SILI,6 02729000
  2735. CCW 49,R1STUF,CC+SILI,5 02730000
  2736. CCW 08,*-8,0,0 02731000
  2737. CCW 06,0,CC+SKIP,4096 02732000
  2738. CCW 49,R2STUF,CC+SILI,5 02733000
  2739. CCW 08,*-8,0,0 02734000
  2740. CCW 06,0,CC+SKIP,4096 02735000
  2741. CCW 07,SEEKB,CC,6 02736000
  2742. CCW 49,R3STUF,CC,5 02737000
  2743. CCW 08,*-8,0,0 02738000
  2744. CCW 06,0,CC+SKIP,4096 02739000
  2745. CCW 49,R4STUF,CC,5 02740000
  2746. CCW 08,*-8,0,0 02741000
  2747. CCW 06,0,CC+SKIP,4096 02742000
  2748. CCW 07,SEEKC,CC,6 02743000
  2749. CCW 49,R5STUF,CC,5 02744000
  2750. CCW 08,*-8,0,0 02745000
  2751. CCW 06,0,CC+SKIP,4096 02746000
  2752. CCW 07,SEEKD,CC,6 02747000
  2753. CCW 49,R6STUF,CC,5 02748000
  2754. CCW 08,*-8,0,0 02749000
  2755. CCW 06,0,CC+SKIP,4096 02750000
  2756. CCW 49,R7STUF,CC,5 02751000
  2757. CCW 08,*-8,0,0 02752000
  2758. CCW 06,0,CC+SKIP,4096 02753000
  2759. CCW 07,SEEKE,CC,6 02754000
  2760. CCW 49,R8STUF,CC,5 02755000
  2761. CCW 08,*-8,0,0 02756000
  2762. CCW 06,01,CC+SKIP,4096 02757000
  2763. SPACE 1 02758000
  2764. *********************************************************************** 02759000
  2765. * WRITE REC 0 BIT MAP FOR 2314,3330,3340,3350 OR 2305 * 02760000
  2766. *********************************************************************** 02761000
  2767. BITMAP CCW 07,SEEK0,CC,6 02762000
  2768. CCW 49,SEEK0+2,CC,5 02763000
  2769. CCW 08,*-8,0,0 02764000
  2770. CCW 05,R0STUF,CC+SILI,8 REWRITE BIT MAP 02765000
  2771. CCW 22,0,SKIP,16 READ REC 0 02766000
  2772. SPACE 1 02767000
  2773. SPACE 1 02768000
  2774. *********************************************************************** 02769000
  2775. * * * CCW'S FOR SPECIAL INFOR ON CYL 0 * 02770000
  2776. *********************************************************************** 02771000
  2777. SPEC2314 CCW 07,SEEKA,CC+SILI,6 CYL 0 HEAD 0 02772000
  2778. CCW 31,FILEMASK,CC+SILI,1 02773000
  2779. CCW 25,SEEKA+1,CC+SILI,5 02774000
  2780. CCW 21,SEEKA+2,CC+SILI,16 R0 02775000
  2781. CCW 29,R1SPEC,CC+SILI,8+24 IPL RECORD 02776000
  2782. CCW 29,R2SPEC,CC+SILI,8 02777000
  2783. CCW 29,R3VOL1,CC+SILI,8+84 VOL1 OS LABEL 02778000
  2784. CCW 29,R4ALLOC,CC+SILI,8+1024 ALLOCATION MAP 02779000
  2785. CCW 29,FORMAT4,CC+SILI,8+140 FORMAT4 RECORD 02780000
  2786. CCW 29,FORMAT5,CC+SILI,8+140 FORMAT5 RECORD 02781000
  2787. CCW 07,SEEKB,CC+SILI,6 02782000
  2788. CCW 25,SEEKB+1,CC+SILI,5 02783000
  2789. CCW 21,SEEKB+2,CC+SILI,16 02784000
  2790. CCW 29,RF3,CC+SILI,8 ONE PAGE RECORD 02785000
  2791. CCW 29,RF4SPEC,CC+SILI,8 02786000
  2792. CCW 01,R4SPEC,CC+SILI,8 02787000
  2793. VERIFY CCW 07,SEEKA,CC+SILI,6 SEEK 02788000
  2794. CCW 26,0,CC+SKIP,5 READ HOME ADDRESS 02789000
  2795. CCW 22,0,CC+SKIP,16 READ REC. ZERO 02790000
  2796. CCW 30,0,CC+SKIP,8+24 READ COUNT KEY DATA IPL REC. 02791000
  2797. CCW 30,0,CC+SKIP,8+4096 READ COUNT KEY DATA PAGE REC. 02792000
  2798. CCW 30,0,CC+SKIP,8+84 READ COUNT KEY DATA VOL1 LABEL 02793000
  2799. CCW 30,0,CC+SKIP,8+1024 READ COUNT KEY DATA ALLOC MAP 02794000
  2800. CCW 30,0,CC+SKIP,8+140 READ COUNT KEY DATA FORMAT4 REC 02795000
  2801. CCW 30,0,CC+SKIP,8+140 READ COUNT KEY DATA FORMAT5 REC. 02796000
  2802. GO CCW 08,GO2314,0,0 GO 2314 OR 3330 DEPENDS ON DEV. 02797000
  2803. GO2314 CCW 07,SEEKB,CC+SILI,6 SEEK TRACK 1 02798000
  2804. CCW 26,0,CC+SKIP,5 READ HOME ADDRESS 02799000
  2805. CCW 22,0,CC+SKIP,16 READ REC. ZERO 02800000
  2806. CCW 30,0,CC+SKIP,8+4096 READ COUNT KEY DATA F3 PAGE 02801000
  2807. CCW 30,0,CC+SKIP,8+1624 READ COUNT KEY DATA FILLER 02802000
  2808. CCW 49,R4SPEC,CC+SILI,5 SEARCH ID EQUAL REC 4 02803000
  2809. CCW 08,*-8,0,0 TIC BACK 02804000
  2810. CCW 06,0,SKIP,4096 READ RECORD 4 FULLY 02805000
  2811. GO3330 CCW 30,0,SKIP+SILI,8+4096 READ F3 PAGE RECORD @V2A2029 02806000
  2812. ON3330 CCW 08,GO3330,0,0 USED TO ALTER OTHER TIC'S 02807000
  2813. OFF3330 CCW 08,GO2314,0,0 USED TO ALTER OTHER TIC'S 02808000
  2814. ON3340 CCW 04,0,SKIP+SILI,1 USED TO ALTER OTHER TIC'S @V2A2029 02809000
  2815. ON57WRT CCW 08,READCCW,0,0 USED TO ALTER OTHER TIC'S 02810000
  2816. OFF57WRT CCW 08,NEXTWRT,0,0 USED TO ALTER OTHER TIC'S 02811000
  2817. ON57RD CCW 08,BITMAP,0,0 USED TO ALTER OTHER TIC'S 02812000
  2818. OFF57RD CCW 08,NEXTREAD,0,0 USED TO ALTER OTHER TIC'S 02813000
  2819. EJECT 02814000
  2820. ********************************************************************** 02815000
  2821. * GRAPHIC SUPPORT CCWS 02816000
  2822. ********************************************************************** 02817000
  2823. CRTWORD CCW X'27',SBACP,SILI+CC,2 SET BAR TO (STATUS WORD) @V200731 02818000
  2824. CCW X'01',CPXYSTAT,SILI+CC,20 WRITE 'RUNNING' ON @V200731 02819000
  2825. * SCREEN 02820000
  2826. CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR @V200731 02821000
  2827. * WRITE 02822000
  2828. CCW X'01',BLNKZERO,SILI+CC,140 CLEAR INPUT AREA @VM08604 02823000
  2829. CURS3066 CCW X'0F',SBAREAD,SILI+CC,2 REPOSITION CURSOR @V200731 02824000
  2830. CCW X'03',*-*,SILI,3 END OF READ CCW STRING @V200731 02825000
  2831. SPACE 2 02826000
  2832. CRTWORD1 CCW X'01',LAB3270A,SILI+CC,LEN THE CONTROL DATA @VM08630 02827000
  2833. CCW X'03',*-*,SILI,2 @V200731 02828000
  2834. SPACE 2 02829000
  2835. REQREAD CCW X'27',SBACP,SILI+CC,2 SET BUFFER ADDR TO CP X-Y @V200731 02830000
  2836. CCW X'01',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02831000
  2837. CCW X'08',CURS3066,SILI,1 RESET CURSOR POSITION @V200731 02832000
  2838. SPACE 2 02833000
  2839. REQREAD1 CCW X'01',LAB3270B,SILI+CC,LEN1 THE CONTROL DATA @VM08630 02834000
  2840. CCW X'03',*-*,SILI,2 @V200731 02835000
  2841. SPACE 2 02836000
  2842. ERSE3066 CCW X'07',*-*,SILI+CC,1 ERASE ENTIRE SCREEN @V200731 02837000
  2843. WRTCRTXY CCW X'27',SBADDR,SILI+CC,2 SET CORRECT LINE IN @V200731 02838000
  2844. * BUFFER 02839000
  2845. WRT3066 CCW X'01',*-*,SILI+CC,140 WRITE OUT USER DATA @V200731 02840000
  2846. CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 02841000
  2847. SPACE 2 02842000
  2848. ERSE3270 CCW X'05',LAB3270E,SILI+CD,LEN3 ERASE THE SCREEN @V200731 02843000
  2849. CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02844000
  2850. WRTCRT70 CCW X'01',LAB3270,SILI+CD,4 THE CONTROL DATA @V200731 02845000
  2851. WRTCR70 CCW X'00',*-*,SILI+CD,0 THE WRITE CCW @V200731 02846000
  2852. CCW X'00',LAB3270A+1,SILI+CC,LEN-1 WRITE SCREEN @V200731 02847000
  2853. * STATUS 02848000
  2854. CCW X'03',*-*,SILI,2 @V200731 02849000
  2855. SPACE 2 02850000
  2856. RDMI3066 CCW X'0E',RDMIDATA,SILI+CC,3 READ CCW FOR MI COMMAND@V200731 02851000
  2857. RD3066 CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR READ@V200731 02852000
  2858. RD3066DA CCW X'06',*-*,SILI+CC,140 READ INPUT DATA @V200731 02853000
  2859. CCW X'08',CURS3066,SILI,1 REPOSITION CURSOR @V200731 02854000
  2860. SPACE 2 02855000
  2861. RDMI3270 CCW X'01',LAB3270D,SILI+CC,4 @V200731 02856000
  2862. RD3270DA CCW X'06',*-*,SILI+CC,0 THE CCW FOR READ @V200731 02857000
  2863. CCW X'03',*-*,SILI,2 @V200731 02858000
  2864. SPACE 2 02859000
  2865. CNCL3270 CCW X'01',LAB3270E,SILI+CD,LEN3 THE CONTROL DATA @V200731 02860000
  2866. CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02861000
  2867. CCW X'03',*-*,SILI,2 @V200731 02862000
  2868. SPACE 2 02863000
  2869. CNCL3066 CCW X'07',*-*,SILI+CC,1 ERASE SCREEN @V200731 02864000
  2870. CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 02865000
  2871. SPACE 2 02866000
  2872. MORECCW1 CCW X'01',LAB3270C,SILI+CC,LEN2 THE CONTROL DATA @V200731 02867000
  2873. CCW X'03',*-*,SILI,2 @V200731 02868000
  2874. SPACE 2 02869000
  2875. ********************************************************************** 02870000
  2876. * FIRST DC ARE ADDRESSES FOR LINES 1 -6 02871000
  2877. * SECOND DC ARE ADDRESSES FOR LINES 7 - 12 02872000
  2878. * THIRD DC ARE ADDRESSES FOR LINES 13 - 18 02873000
  2879. * FOURTH DC ARE ADDRESSES FOR LINES 19 - 24 02874000
  2880. ********************************************************************* 02875000
  2881. SPACE 2 02876000
  2882. TABLE70 DS 0D @V200731 02877000
  2883. DC X'4040C150C260C3F0C540C650' @V200731 02878000
  2884. DC X'C760C8F04A404B504C604DF0' @V200731 02879000
  2885. DC X'4F405050D160D2F0D440D550' @V200731 02880000
  2886. DC X'D660D7F0D9405A505B605CF0' @V200731 02881000
  2887. SPACE 2 02882000
  2888. TABLGRAP EQU * @V200731 02883000
  2889. DC X'0A',AL3(READ66) ADDRESS OF THE READ SECTION @V200731 02884000
  2890. DC X'01',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 02885000
  2891. DC X'09',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 02886000
  2892. DC X'05',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 02887000
  2893. DC X'03',AL3(RETWORD) ADDRESS OF THE RETURN SECTION@V200731 02888000
  2894. SPACE 2 02889000
  2895. * X'5B60' - LINE 23, COL. 1 02890000
  2896. * X'5D6A' - LINE 24, COL. 59 02891000
  2897. SPACE 2 02892000
  2898. ********************************************************************** 02893000
  2899. WC6 EQU X'C2' WRITE CONTROL BIT 6 @V200731 02894000
  2900. AT7 EQU X'C1' ATTRIBUTE BIT 7 @V200731 02895000
  2901. AT2 EQU X'E0' ATTRIBUTE BIT 2 @V200731 02896000
  2902. LAC EQU X'C0' @V200731 02897000
  2903. SF EQU X'1D' START OF FIELD CONTROL @V200731 02898000
  2904. SBA EQU X'11' SET BUFFER ADDRESS @V200731 02899000
  2905. IC EQU X'13' INSERT CURSOR @V200731 02900000
  2906. EUA EQU X'12' ERASE UNPROTECTED @V200731 02901000
  2907. RA EQU X'3C' REPEAT TO ADDRESS @V200731 02902000
  2908. SPACE 2 02903000
  2909. LAB3270A DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 02904000
  2910. DC AL1(IC),AL1(EUA),X'5D6B',AL1(SF),AL1(AT2) @V200731 02905000
  2911. RUNLABEL DC CL20'RUNNING' @V200731 02906000
  2912. LEN EQU *-LAB3270A @V200731 02907000
  2913. LAB3270B DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 02908000
  2914. DC AL1(IC),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 02909000
  2915. REALABEL DC CL20'CP READ' @VM08531 02910000
  2916. LEN1 EQU *-LAB3270B @V200731 02911000
  2917. LAB3270C DC AL1(WC6),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 02912000
  2918. MORLABEL DC CL20'HOLDING' @V200731 02913000
  2919. LEN2 EQU *-LAB3270C @V200731 02914000
  2920. LAB3270D DC AL1(LAC),AL1(SBA),X'5B60' @V200731 02915000
  2921. LAB3270 DC AL1(WC6),AL1(SBA),X'0000' @V200731 02916000
  2922. LAB3270E DC AL1(WC6),AL1(SBA),X'4040',AL1(RA),X'5B60',X'00' @V200731 02917000
  2923. DC AL1(SF),AL1(AT7),AL1(IC),AL1(SBA) @V200731 02918000
  2924. DC X'5D6B',AL1(SF),AL1(AT2) @V200731 02919000
  2925. LEN3 EQU *-LAB3270E @V200731 02920000
  2926. SPACE 2 02921000
  2927. ********************************************************************* 02922000
  2928. PARM DC X'00' THE GRAPHIC FLAG BYTE @V200731 02923000
  2929. PARMATT EQU X'80' ATTENTION REQUEST @V200731 02924000
  2930. PARMGRP EQU X'40' GRAPHIC SUPPORT @V200731 02925000
  2931. PARMREA EQU X'20' READ REQUEST @V200731 02926000
  2932. PARMCLE EQU X'10' CLEAR/ERASE REQUEST @V200731 02927000
  2933. PARM327 EQU X'08' 3270 GRAPHIC @V200731 02928000
  2934. PARMNDA EQU X'04' NO DATA INDICATED @V200731 02929000
  2935. PARM01F EQU X'02' 01F REQUESTED @V200731 02930000
  2936. PARM321 EQU X'01' 3215/3210/1052 @V200731 02931000
  2937. PARM2 DC X'00' SIO SWITCHES @V200731 02932000
  2938. SIONOP EQU X'80' DEVICE NOT OPERATIONAL @V200731 02933000
  2939. ********************************************************************** 02934000
  2940. SPACE 2 02935000
  2941. ********************************************************************* 02936000
  2942. SBADDR DC AL1(00,00) CURRENT OUTPUT LINE COORDINATES @V200731 02937000
  2943. * FOR THE 02938000
  2944. * 3066 02939000
  2945. SBACP DC AL1(34,60) COORDINATES FOR SCREEN 'STATUS' @V200731 02940000
  2946. * WORD 02941000
  2947. SBAREAD DC AL1(33,00) COORDINATES FOR CURSOR POSITION @V200731 02942000
  2948. RDMIDATA DC XL6'00' READ DATA FROM 'MI' COMMAND @V200731 02943000
  2949. CPXYSTAT DC CL20' ' SCREEN 'STATUS' WORD @V200731 02944000
  2950. BLNKLINE DC XL140'00' CLEAR INPUT AREA FOR DATA @VM08604 02945000
  2951. BLNKZERO DC CL140' ' BLANKS FOR READ AREA @VM08604 02946000
  2952. GRAPHSAV DC 8F'00' SAVE AREA FOR GRAPHIC SUPPORT @V200731 02947000
  2953. SAVEAREA DC 2F'00' SAVE AREA FOR GRAPHIC DATA @V200731 02948000
  2954. * REGISTERS 02949000
  2955. ********************************************************************* 02950000
  2956. SPACE 1 02951000
  2957. SPACE 1 02952000
  2958. *********************************************************************** 02953000
  2959. * * CCW TO PICKUP BROKEN CCW CHAIN * 02954000
  2960. *********************************************************************** 02955000
  2961. RESUMCCW CCW 31,FILEMASK,CC+SILI,1 02956000
  2962. CCW 08,0,0,0 02957000
  2963. DS 0F 02958000
  2964. DS 1H 02959000
  2965. SEEKA DC H'0' BB 02960000
  2966. DC F'0' CCHH 02961000
  2967. DC F'8' REC NO. AND DL OR R0 02962000
  2968. R0STUF DC 2F'0' DATA FIELD OF R0 CYL BIT MAP 02963000
  2969. DS 1H 02964000
  2970. SEEKB DC H'0' 02965000
  2971. DC F'1' 02966000
  2972. DC F'8' 02967000
  2973. DC 2F'0' 02968000
  2974. DS 1H 02969000
  2975. SEEKC DC H'0' 02970000
  2976. DC F'2' 02971000
  2977. DC F'8' 02972000
  2978. DC 2F'0' 02973000
  2979. DS 1H 02974000
  2980. SEEKD DC H'0' 02975000
  2981. DC F'3' 02976000
  2982. DC F'8' 02977000
  2983. DC 2F'0' 02978000
  2984. DS 1H 02979000
  2985. SEEKE DC H'0' 02980000
  2986. DC F'4' 02981000
  2987. DC F'8' 02982000
  2988. DC 2F'0' 02983000
  2989. DS 1H @V2A2029 02984000
  2990. SEEKF DC H'0' @V2A2029 02985000
  2991. DC F'5' @V2A2029 02986000
  2992. DC F'8' @V2A2029 02987000
  2993. DC 2F'0' @V2A2029 02988000
  2994. SPACE 1 02989000
  2995. *********************************************************************** 02990000
  2996. * * 2314 DATA ADDRESS CYL 0 HD 0 * 02991000
  2997. *********************************************************************** 02992000
  2998. R1SPEC DC F'0' 02993000
  2999. DC AL1(1),AL3(24) 02994000
  3000. DC X'000200000000000C' WAIT PSW 02995000
  3001. DC X'0300',H'0' 02996000
  3002. DC X'2000',H'0' 02997000
  3003. DC 2F'0' 02998000
  3004. R2SPEC DC F'0' 02999000
  3005. DC AL1(2),AL3(4096) 03000000
  3006. R3VOL1 DC F'0' VOL1 COUNT 03001000
  3007. DC AL1(3),AL1(4),AL2(80) REC KL DL DL 03002000
  3008. VOL1 DC C'VOL1' KEY 03003000
  3009. OSLABEL DC C'VOL1' 03004000
  3010. CPLABEL DC C' NONE ' LABEL PLACED HERE 03005000
  3011. DC X'F0' 03006000
  3012. VTOCBEG DC XL4'0' PTR TO VTOC IN R3 (CCHH) @V56BDA8 03007000
  3013. VTOCR DC X'05' ... (R) @V56BDA8 03008000
  3014. DC XL5'0' 03009000
  3015. DC 20XL1'40' 03010000
  3016. DC XL5'00',C'CP370' VOLUME OWNER 03011000
  3017. DC 29XL1'40' 03012000
  3018. R4SEEK DC H'0' 03013000
  3019. R4ALLOC DC F'0' CCHH 03014000
  3020. DC AL1(4),AL3(1024) REC KL DL DL 03015000
  3021. TABLE DC 256XL1'00' ALLOCATE TABLE 03016000
  3022. TABLE1 DC 256XL1'00' 03017000
  3023. TABLE2 DC 256XL1'00' 03018000
  3024. TABLE3 DC 256XL1'00' 03019000
  3025. FORMAT4 DC F'00' CCHH 03020000
  3026. DC AL1(5),AL1(44),AL2(96) REC KL DL DL 03021000
  3027. DC 44XL1'04' KEY OF HEX 04 03022000
  3028. FMT4DATA DC X'F4' FMT4 DSCB IDENTIFIER @V56BDA8 03023000
  3029. DC X'0000000000' CCHHR 03024000
  3030. DC X'0000' 03025000
  3031. NEXTCCHH DC XL4'0' CCHH OF NEXT AVAIL. ALT TRK @V56BDA8 03026000
  3032. DC X'0000' 03027000
  3033. DC X'00' VTOG INDICATORS 03028000
  3034. DC X'01003C00140014' 03029000
  3035. DC X'1C7E922D2D' 03030000
  3036. DC X'0102160202' 03031000
  3037. DC XL29'00' 03032000
  3038. DC X'00' TRACK ZERO 03033000
  3039. DC XL8'00' 03034000
  3040. DC X'00' TRACK ZERO 03035000
  3041. DC XL25'00' 03036000
  3042. FORMAT5 DC F'0' CCHH 03037000
  3043. DC AL1(6),AL1(44),AL2(96) REC KL DL DL 03038000
  3044. DC 4XL1'05' 03039000
  3045. DC X'0001000000' TRACK ZERO NO CYLINDERS NO TRACKS 03040000
  3046. DC XL35'00' 03041000
  3047. DC X'F5' 03042000
  3048. DC XL90'00' 03043000
  3049. DC XL5'00' 03044000
  3050. RF3 DC F'1' 03045000
  3051. DC X'F3',AL3(4096) 03046000
  3052. RF4SPEC DC F'1' 03047000
  3053. DC X'F4',AL3(1624) 03048000
  3054. R4SPEC DC F'1' 03049000
  3055. DC AL1(4),AL3(824) 03050000
  3056. RF33330 DC F'0' FOR 3330 , 2305 03051000
  3057. DC X'F3',AL3(4096) 03052000
  3058. SPACE 1 03053000
  3059. *********************************************************************** 03054000
  3060. * * NORMAL DATA RECORDS * 03055000
  3061. *********************************************************************** 03056000
  3062. R1STUF DC F'0' 03057000
  3063. DC AL1(1),AL3(4096) 03058000
  3064. R2STUF DC F'0' 03059000
  3065. DC AL1(2),AL3(2472) 03060000
  3066. R2ASTUF DC F'1' 03061000
  3067. DC AL1(2),AL3(1624) 03062000
  3068. R3STUF DC F'1' 03063000
  3069. DC AL1(3),AL3(4096) 03064000
  3070. R4STUF DC F'1' 03065000
  3071. DC AL1(4),AL3(824) 03066000
  3072. R4ASTUF DC F'2' 03067000
  3073. DC AL1(4),AL3(3272) 03068000
  3074. R5STUF DC F'2' 03069000
  3075. DC AL1(5),AL3(3296) 03070000
  3076. R5ASTUF DC F'3' 03071000
  3077. DC AL1(5),AL3(800) 03072000
  3078. R6STUF DC F'3' 03073000
  3079. DC AL1(6),AL3(4096) 03074000
  3080. R7STUF DC F'3' 03075000
  3081. DC AL1(7),AL3(1648) 03076000
  3082. R7ASTUF DC F'4' 03077000
  3083. DC AL1(7),AL3(2448) 03078000
  3084. R8STUF DC F'4' 03079000
  3085. DC AL1(8),AL3(4096) 03080000
  3086. *********************************************************************** 03081000
  3087. * * CONSTANTS * 03082000
  3088. *********************************************************************** 03083000
  3089. LTORG 03084000
  3090. FLAG DC X'00' A OR F 03085000
  3091. TYPE DC X'00' 14,03 OR 01 03086000
  3092. TYP3350 EQU X'60' 3350 DEVICE CODE @V304498 03087000
  3093. TYP334X EQU X'40' 3340/3344 DEVICE CODE @V56BDA8 03088000
  3094. TYP3330 EQU X'30' 3330 DEVICE CODE @V304498 03089000
  3095. RECN0 EQU X'00' RECORD NUMBER 0 @V304498 03090000
  3096. RECN1 EQU X'01' RECORD NUMBER 1 @V304498 03091000
  3097. RECN2 EQU X'02' RECORD NUMBER 2 @V304498 03092000
  3098. RECN4 DC X'04' RECORD NUMBER 4 @V304498 03093000
  3099. DSKADD DC H'0' DEVICE ADDRESS 03094000
  3100. CONSOL DC H'9' 03095000
  3101. ADDR1 DC X'5B5F' LOCATION LINE 22 COL 80 @V60A6B6 03096000
  3102. ADDR2 DC X'5D6B' LOCATION LINE 24 COL 60 @V60A6B6 03097000
  3103. ADDR3 DC X'D65F' LOCATION LINE 18 COL 80 @V60A6B6 03098000
  3104. ADDR4 DC X'D86B' LOCATION LINE 20 COL 60 @V60A6B6 03099000
  3105. ADDR5 DC X'4040' INITIALIZED ADDR @V60A6B6 03100000
  3106. ADDR6 DC X'5B60' LOCATION LINE 23 COL 01 @V60A6B6 03101000
  3107. ADDR7 DC X'D660' LOCATION LINE 19 COL 01 @V60A6B6 03102000
  3108. DS 0F @V60A6B6 03103000
  3109. MAXLEN DC F'0000' @V60A6B6 03104000
  3110. LEN3270 DC F'1760' 3270 MOD2 24 LINE CONSOLE/TERM @V60A6B6 03105000
  3111. LEN3278 DC F'1440' 3278 MOD2A 20 LINE CONSOLE @V60A6B6 03106000
  3112. DS 0D 03107000
  3113. WTPSW DC X'00020000' 03108000
  3114. DC F'0' 03109000
  3115. PRNUPSW DC F'0',A(PRCHK) 03110000
  3116. MCNUPSW DC F'0',A(MCRTN) 03111000
  3117. INDATA DC 132X'00' 03112000
  3118. RECORD3 DC XL5'3' 03113000
  3119. FILEMASK DC X'C0' 03114000
  3120. MASKA DC X'F0F0F0' 03115000
  3121. MASKB DC X'F0F0F0' 03116000
  3122. FIELDA DC D'0' 03117000
  3123. FIELDB DC D'0' 03118000
  3124. BLANKS8 DC X'4040404040404040' BLANKS @VM08604 03119000
  3125. FFS8 DC X'FFFFFFFFFFFFFFFF' FFS @VM08604 03120000
  3126. TTAB DC C'0123456789ABCDEF' TRANSLATE TABLE 03121000
  3127. SPACE 1 03122000
  3128. SPEC3330 CCW 07,SEEKA,CC+SILI,6 CYL 0 HEAD 0 03123000
  3129. CCW 31,FILEMASK,CC+SILI,1 03124000
  3130. CCW 49,SEEKA+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 03125000
  3131. CCW 08,*-8,0,0 TIC BACK 03126000
  3132. CCW 05,R0STUF,CC+SILI,8 R0 03127000
  3133. CCW 49,SEEKA+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 03128000
  3134. CCW 08,*-8,0,0 TIC 03129000
  3135. CCW 29,R1SPEC,CC+SILI,8+24 IPL RECORD 03130000
  3136. CCW 29,R2SPEC,CC+SILI,8 03131000
  3137. CCW 29,R3VOL1,CC+SILI,8+84 VOL1 OS LABEL 03132000
  3138. CCW 29,R4ALLOC,CC+SILI,8+1024 ALLOCATION MAP 03133000
  3139. CCW 29,FORMAT4,CC+SILI,8+140 FORMAT4 RECORD 03134000
  3140. CCW 29,FORMAT5,CC+SILI,8+140 FORMAT5 RECORD 03135000
  3141. NOP3340 CCW 29,RF33330,CC+SILI,8 ONE PAGE RECORD @VA05293 03136000
  3142. CCW 08,VERIFY,0,0 VERIFY WHAT WAS WRITTEN 03137000
  3143. SPACE 03138000
  3144. DS 0D @V56BDA8 03139000
  3145. RDFMT4 CCW 7,SEEKA,CC,6 RD FMT4 AS SPECIFIED IN VTOC @V56BDA8 03140000
  3146. CCW 31,FILEMASK,CC,1 SFM @V56BDA8 03141000
  3147. CCW 49,VTOCBEG,CC+SILI,5 SRCH ID @V56BDA8 03142000
  3148. CCW 8,*-8,0,0 TIC @V56BDA8 03143000
  3149. CCW 6,FMT4DATA,SILI,96 READ FMT4 LABEL @V56BDA8 03144000
  3150. SPACE 03145000
  3151. L1 EQU 1 FOR USE AS SYMBLOIC LENGTH. @V56BDA8 03146000
  3152. L4 EQU 4 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 03147000
  3153. L8 EQU 8 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 03148000
  3154. EJECT 03149000
  3155. *********************************************************************** 03150000
  3156. * 03151000
  3157. * ALTCHK: CHECKS POINTERS IN FLAGGED PRIMARY TRACK AND ALTERNATE 03152000
  3158. * TRACK TO SEE THAT EACH POINTS TO THE OTHER. AND RETURNS 03153000
  3159. * CCHH ADDRESS OF WHICHEVER WE ARE CURRENTLY NOT AT. 03154000
  3160. * 03155000
  3161. *********************************************************************** 03156000
  3162. * 03157000
  3163. * INPUTS: R8 = ADDRESS OF THIS ROUTINE (REQUIRED FOR INITIAL 03158000
  3164. * ADDRESSABILITY). 03159000
  3165. * R7 = RETURN ADDRESS. 03160000
  3166. * OUTPUTS: R1 = -1 IF TRACKS DO NOT POINT TO EACH OTHER CORRECTLY, 03161000
  3167. * OTHERWISE... 03162000
  3168. * R1 = CCHH ADDRESS OF WHICHEVER OF THE TWO TRACKS WE 03163000
  3169. * WERE NOT AT WHEN THE TRACK CONDITION CHECK WAS 03164000
  3170. * DETECTED. 03165000
  3171. * R0 = 0 IF CCHH IN R1 POINTS TO THE ASSIGNED ALTERNATE. 03166000
  3172. * R0 = 1 IF CCHH IN R1 POINTS TO THE DEFECTIVE PRIMARY. 03167000
  3173. * 03168000
  3174. * OPERATION: TWO I/O OPERATIONS HAVE TO BE SCHEDULED FROM HERE WHICH 03169000
  3175. * MEANS THAT TWICE, CONTROL WILL HAVE TO LEAVE THIS 03170000
  3176. * SUBROUTINE AND COME BACK IN BEFORE WE CAN RETURN TO 03171000
  3177. * OUR CALLER. THIS IS ACCOMPLISHED BY BRANCHING OUT TO 03172000
  3178. * 'STIO' TO INITIATE I/O AND BY SETTING A SPECIAL FLAG 03173000
  3179. * THAT THE I/O INTERRUPT HANDLER RECOGNIZES AS A SIGNAL 03174000
  3180. * TO RE-ENTER THIS ROUTINE. THE I/O HANDLER CHECKS FOR 03175000
  3181. * ERRORS BEFORE CHECKING OUR FLAG, SO ERROR RECOVERY 03176000
  3182. * CAN BE TRIED ON OUR I/O IF NECESSARY. 03177000
  3183. * 03178000
  3184. *********************************************************************** 03179000
  3185. USING ALTCHK,R8 @V56BDA8 03180000
  3186. ALTCHK STM R2,R7,ALTCHKSV @V56BDA8 03181000
  3187. LR R6,R8 @V56BDA8 03182000
  3188. DROP R8 @V56BDA8 03183000
  3189. USING ALTCHK,R6 @V56BDA8 03184000
  3190. L R8,=A(SENSCCHH) SUBROUTINE TO BE CALLED. @V56BDA8 03185000
  3191. BALR R7,R8 CALL ROUTINE TO RETURN IN R1 THE @V56BDA8 03186000
  3192. * CCHH ADDRESS OF TRACK WE ARE CURRENTLY 03187000
  3193. * ON. (FROM SENSE DATA, READ AT THE TIME 03188000
  3194. * OF THE TRACK CONDITION CHECK.) 03189000
  3195. STCM R1,15,CCHHR SAVE CCHH FOR POSSIBLE CALL TO @VMG0004 03190000
  3196. * SENSIT2. 03191000
  3197. MVI CCHHR+4,X'00' SET R OF CCHHR TO 0 FOR SENSIT2. @VMG0004 03192000
  3198. ST R1,CCHHSV SAVE CURRENT TRK FOR COMPARISON @V56BDA8 03193000
  3199. * WITH 03194000
  3200. * BACKWARD POINTER FURTHER ON. 03195000
  3201. STCM R1,15,HAR0SKAD+2 STORE CCHH FOR SEEK CCW TO @V56BDA8 03196000
  3202. * ACCESS 03197000
  3203. LA R1,READHAR0 ADDR OF CHNL PRG TO READ HA, R0. @V56BDA8 03198000
  3204. ST R1,CAW SET FOR SIO. @V56BDA8 03199000
  3205. MVI ALTFLAG,HAR0READ FLAG TELLS INTERRUPT HANDLER @V56BDA8 03200000
  3206. * THAT ALT TRK RECOVERY IS IN PROGRESS 03201000
  3207. * AND THAT CONTROL IS TO BE RETURNED 03202000
  3208. * TO THIS ROUTINE. 03203000
  3209. LA R1,ALTCHK2 POINT TO GET CONTROL UPON @V56BDA8 03204000
  3210. * RETURN HERE AFTER I/O COMPLETES. 03205000
  3211. ST R1,CONTINAD SAVE FOR INTERRUPT HANDLER. @V56BDA8 03206000
  3212. B STIO2 START CHNL PRG TO READ HA, R0. @VMG0004 03207000
  3213. SPACE 03208000
  3214. USING ALTCHK2,R6 @V56BDA8 03209000
  3215. ALTCHK2 MVC HAFLAGSV(L1),HADATA SAVE FLAG BYTE FROM HA. @V56BDA8 03210000
  3216. MVC HAR0SKAD+2(L4),R0DATA USE CCHH POINTER TO OTHER @V56BDA8 03211000
  3217. * TRK AS NEXT SEEK ADDR. 03212000
  3218. LA R1,ALTCHK3 POINT TO GET CONTROL AFTER IO END@V56BDA8 03213000
  3219. ST R1,CONTINAD SAVE FOR INTERRUPT HANDLER. @V56BDA8 03214000
  3220. B STIO2 START SAME CHNL PRG TO READ HA, @VMG0004 03215000
  3221. * R0, BUT FROM THE OTHER TRACK THIS TIME. 03216000
  3222. SPACE 03217000
  3223. USING ALTCHK3,R6 @V56BDA8 03218000
  3224. ALTCHK3 SR R0,R0 @V56BDA8 03219000
  3225. SR R1,R1 0 IN R1. @V56BDA8 03220000
  3226. BCTR R1,0 -1 IN R1 IN CASE OF ERROR EXIT. @V56BDA8 03221000
  3227. TM HADATA,X'03' TEST TRACK USAGE BITS IN HA FLAG @V56BDA8 03222000
  3228. * BYTE (NOTE: REMEMBER THIS FLAG CAN BE 03223000
  3229. * FROM EITHER THE PRIMARY OR THE ALTERNATE 03224000
  3230. * DEPENDING UPON WHERE WE WERE WHEN THIS 03225000
  3231. * ROUTINE WAS CALLED.) 03226000
  3232. BNM ALTCHKEX IF NOT MIXED, EXIT WITH ERROR @V56BDA8 03227000
  3233. * FLAG IN R1. BOTH BITS 0 OR BOTH BITS 1 03228000
  3234. * IS FORBIDDEN. 03229000
  3235. CLC CCHHSV(L4),R0DATA DOES 2ND TRK POINT BACK TO 1ST@V56BDA8 03230000
  3236. BNE ALTCHKEX NO, EXIT WITH -1 IN R1. @V56BDA8 03231000
  3237. * 03232000
  3238. * YES, BUT IT STILL MIGHT BE A SINGLE TRK POINTING TO ITSELF. 03233000
  3239. * SO CHECK FLAG BYTES, SEE IF ONE AND ONLY ONE OF THEM IS 03234000
  3240. * AN ASSIGNED ALTERNATE. 03235000
  3241. * 03236000
  3242. XC HADATA(L1),HAFLAGSV XC OLD FLAG BYTE INTO NEW @V56BDA8 03237000
  3243. * FLAG BYTE. 03238000
  3244. TM HADATA,X'01' BIT REMAINING ON IN FLAG BYTE @V56BDA8 03239000
  3245. * MEANS ONE AND ONLY ONE WAS ALTERNATE. 03240000
  3246. BNO ALTCHKEX ERROR, NEITHER WAS ALTERNATE. @V56BDA8 03241000
  3247. ICM R1,15,HAR0SKAD+2 RETURN CCHH OF 2ND TRACK. @V56BDA8 03242000
  3248. NI HAFLAGSV,X'01' CLEAR 1ST BYTE OF ALL BUT 'TRACK @V56BDA8 03243000
  3249. * USAGE' BIT. 03244000
  3250. IC R0,HAFLAGSV 'TRACK USAGE' BIT IN 1ST FLAG @V56BDA8 03245000
  3251. * BYTE IS INVERSE OF BIT IN 2ND FLAG BYTE 03246000
  3252. * THAT CCHH IN R1 POINTS TO. 03247000
  3253. ALTCHKEX MVI ALTFLAG,0 TURN OFF SIGNAL TO INTERRUPT HDLR@V56BDA8 03248000
  3254. LM R2,R7,ALTCHKSV @V56BDA8 03249000
  3255. BR R7 RETURN @V56BDA8 03250000
  3256. DROP R6 @V56BDA8 03251000
  3257. *********************************************************************** 03252000
  3258. READHAR0 CCW X'07',HAR0SKAD,CC+SILI,6 SEEK @V56BDA8 03253000
  3259. CCW X'1A',HADATA,CC+SILI,5 READ HA @V56BDA8 03254000
  3260. CCW X'16',R0DATA,SILI,4 READ R0 @V56BDA8 03255000
  3261. HAR0SKAD DC XL6'0' 00CCHH SEEK ADDRESS @V56BDA8 03256000
  3262. HADATA DS XL5 FLAG BYTE + CCHH READ FROM HA. @V56BDA8 03257000
  3263. HAFLAGSV DS XL1 FLAG BYTE FROM 1ST OF 2 READS @V56BDA8 03258000
  3264. * SAVED HERE. 03259000
  3265. CCHHSV DS XL4 @V56BDA8 03260000
  3266. R0DATA DS XL4 CCHH DATA FROM COUNT FLD OF R0. @V56BDA8 03261000
  3267. ALTCHKSV DS 6F REGISTER SAVE AREA. @V56BDA8 03262000
  3268. EJECT 03263000
  3269. *********************************************************************** 03264000
  3270. * 03265000
  3271. * SENSCCHH: COMPUTES CCHH FROM SENSE DATA READ PREVIOUSLY AND 03266000
  3272. * RETURNS IT IN R1. 03267000
  3273. * 03268000
  3274. *********************************************************************** 03269000
  3275. * 03270000
  3276. * INPUTS: R8 = ADDRESS OF THIS ROUTINE (REQUIRED FOR INITIAL 03271000
  3277. * ADDRESSABILITY). 03272000
  3278. * R7 = RETURN ADDRESS. 03273000
  3279. * OUTPUTS: R1 = CCHH DATA TAKEN FROM SENSE DATA BUFFER. 03274000
  3280. * 03275000
  3281. *********************************************************************** 03276000
  3282. USING SENSCCHH,R8 @V56BDA8 03277000
  3283. SENSCCHH IC R1,SENSE+6 @V56BDA8 03278000
  3284. SRL R1,5 CYL BITS 512, 256 RIGHT JUSTIFIED@V56BDA8 03279000
  3285. STC R1,SENSWORK @V56BDA8 03280000
  3286. NI SENSWORK,X'03' CLEAR ALL BUT BITS 512, 256. @V56BDA8 03281000
  3287. MVC SENSWORK+1(L1),SENSE+5 LOW ORDER CYL ADDR. @V56BDA8 03282000
  3288. MVN SENSWORK+3(L1),SENSE+6 HEAD ADDRESS. @V56BDA8 03283000
  3289. L R1,SENSWORK @V56BDA8 03284000
  3290. BR R7 @V56BDA8 03285000
  3291. DROP R8 @V56BDA8 03286000
  3292. *********************************************************************** 03287000
  3293. SENSWORK DC F'0' @V56BDA8 03288000
  3294. SPACE 6 03289000
  3295. LTORG @V56BDA8 03290000
  3296. EJECT 03291000
  3297. COPY EQU 03292000
  3298. PSA 03293000
  3299. END DMKFMT 03294000