Table of Contents

DMKIOG Source

References

Source Listing

DMKIOG.ASSEMBLE.txt
  1. IOG TITLE 'DMKIOG (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 00002000
  3. *. 00003000
  4. * MODULE NAME - DMKIOG 00004000
  5. * 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * PAGABLE ERROR RECORDING MODULE. CALLED AT INITIALIZATION 00008000
  9. * TIME TO LOCATE THE ERROR RECORDING DEVICE,LOCATE THE 00009000
  10. * LAST RECORDINGS MADE ON THE CYLINDERS, 00010000
  11. * AND SET THE IN-CORE POINTERS TO THE PROPER VALUES. 00011000
  12. * INITIALIZATION FOR 'RMS' FUNCTIONS IS PERFORMED 00012000
  13. * AFTER FIRST MAKING A TEST TO DETERMINE IF WE ARE 00013000
  14. * CP RUNNING UNDER CP. RMS FUNCTIONS WILL NOT BE 00014000
  15. * ACTIVATED FOR A VIRTUAL CP ENVIRONMENT. 00015000
  16. * THE MODULE IS ALSO USED TO ERASE THE RECORDING AREAS. 00016000
  17. * 00017000
  18. * ATTRIBUTES - 00018000
  19. * PAGABLE,SERIAL-REUSABLE,CALLED VIA SVC. 00019000
  20. * 00020000
  21. * 00021000
  22. * ENTRY POINTS - 00022000
  23. * 00023000
  24. * DMKIOGF1 - INITIALIZATION ENTRY, RMS INIT AND 00024000
  25. * LOCATOR FOR STARTING PAGE ON RECORDING 00025000
  26. * DMKIOGAP - INITIALIZATION ENTRY, RMS INIT 00026000
  27. * FOR ATTACHED PROCESSOR 00027000
  28. * DMKIOGF2 - TO ERASE EITHER THE ERROR RECORDS OR 00028000
  29. * BOTH THE ERROR AND FRAME RECORDS FROM 00029000
  30. * THE ERROR RECORDING AREA. 00030000
  31. * 00034000
  32. * ENTRY CONDITIONS - 00035000
  33. * DMKIOGF1 -NONE 00036000
  34. * DMKIOGAP -NONE 00037000
  35. * DMKIOGF2 - GPR2 = ERASE REQ PARAMATER. 00038000
  36. * 00040000
  37. * EXIT CONDITIONS - RETURN TO CALLER. 00041000
  38. * 00042000
  39. * CALLS TO OTHER ROUTINES - 00043000
  40. * DMKPGTVG - TO GET VIRTUAL PAGES. 00044000
  41. * DMKPGTVR - TO RELEASE VIRTUAL PAGES. 00045000
  42. * DMKSCNRU - TO GET IPL DEV. RDEVBLOK ADDRESS. 00046000
  43. * DMKQCNWT - TO WRITE MSGS. TO THE OPERATOR. 00047000
  44. * DMKRPAGT - TO READ A PAGE INTO CORE. 00048000
  45. * DMKRPAPT - TO WRITE A PAGE TO RECORDING CYLINDER. 00049000
  46. * DMKERMSG - TO WRITE OUT ERROR MESSAGES 00050000
  47. * DMKPTRLK - TO LOCK A PAGE. 00051000
  48. * DMKPTRUL - TO UNLOCK A PAGE. 00052000
  49. * DMKIOHFR - TO INITIALIZE FRAME RECORDS ON A 303X. 00052100
  50. * 00053000
  51. * EXTERNAL REFERENCES - 00054000
  52. * DMKIOERP - 'RECORDING IN PROCESS' SWITCH. 00055000
  53. * DMKIOEEP - RECORDING AREA IN-CORE POINTER (CCP). 00056000
  54. * DMKIOEMX - MAXIMUM NO. OF PAGES PER CYL . 00057000
  55. * DMKIOENI - 90 FULL PAGE CNT ON IPL DEV TYP. 00058000
  56. * DMKIOEES - 'RECORDING AREA FULL' FLAG. 00059000
  57. * DMKIOEHS - DASD START OF ERROR RECORDS ON 00060000
  58. * RECORDING CYLINDERS (CCPD FORMAT). 00061000
  59. * DMKIOEFR - 'FRAME RECORDS ON CYLINDERS' FLAG. 00062000
  60. * DMKIOHIF - DMKIOH'S INFOFLAG. 00062100
  61. * 00063000
  62. * REGISTER USAGE - 00064000
  63. * GPR0-1 SCRATCH 00065000
  64. * GPR2 ERASE PARAMATERS 00066000
  65. * GPR3-9 SCRATCH 00067000
  66. * GPR 10 IOBLOK POINTER 00068000
  67. * GPR11 VMBLOK POINTER 00069000
  68. * GPR12 BASE 00070000
  69. * GPR13 SAVE AREA POINTER 00071000
  70. * GPR14-15 LINK REGS 00072000
  71. * 00073000
  72. * NOTES - 00074000
  73. * IF THE ERROR RECORDING CYLINDERS ARE FOUND TO BE 00075000
  74. * UNFORMATTED AT IPL TIME, A MSG IS SENT TO THE 00076000
  75. * OPERATOR AND THE CYLINDERS ARE FORMATTED . 00077000
  76. * 00077100
  77. * IF THE PROCESSOR IS A 4331 OR 4341, THEN THERE ARE 00077200
  78. * NO EXTENDED LOGOUT AREAS OR REGION CODE. 00077300
  79. * 00078000
  80. * OPERATION - DMKIOGF1 00079000
  81. * 1. DETERMINE IF WE ARE RUNNING AS A VIRTUAL CP, IF WE 00080000
  82. * ARE PUT 'WAIT' BIT ON IN THE MCH NEW PSW AND SKIP 00081000
  83. * TO STEP 4. 00082000
  84. * 2. CALL DMKFREE TO RESERVE CORE STORAGE FOR LOGOUT, 00083000
  85. * MCHAREA, AND CPEXBLOK FOR EACH PROCESSOR. 00084000
  86. * 3. INITIALIZE THE MCH LOGOUT POINTERS AND CONTROL 00085000
  87. * REGISTERS 14 AND 15. 00086000
  88. * 4. FIND STARTING CYL FOR ERROR RECORDING SPECIFIED 00087000
  89. * AT SYSGEN IN DMKSYSER. 00088000
  90. * 5. DETERMINE THE IPL DEVICE (SYSIPLDV). 00089000
  91. * 6. CALL DMKSCNRU TO GET RDEVBLOK ADDRESS FOR IPL DEVICE 00090000
  92. * 7. SET THE VALUES FOR 'MAXPAGES' AND 'NINETY PRCNT FULL' 00091000
  93. * AS DETERMINED FROM RDEVTYPE. 00092000
  94. * 8. CALL DMKPGTVG TO GET A VIRTUAL PAGE. 00093000
  95. * 9. CALL DMKRPAGT TO READ A PAGE INTO CORE. 00094000
  96. * 10.IF THE FORMAT OF THE PAGE IS NOT VALID, GO TO 00095000
  97. * STEP 14. 00096000
  98. * 11. IF THE PAGE IS NOT FULL, GO TO THE NEXT STEP. IF 00097000
  99. * IT IS FULL, BUMP THE PAGE NUMBER IN THE CCPD TO 00098000
  100. * THE NEXT PAGE. IF END OF THE RECORDING CYLS 00099000
  101. * IS REACHED, GO TO STEP 19. IF NOT, READ IN 00100000
  102. * THE PAGE & REPEAT THIS STEP UNTIL A USABLE 00101000
  103. * PAGE IS FOUND OR END OF REC. AREA IS REACHED 00102000
  104. * 12. SET THE PAGE IN USE FLAG AND WRITE THE PAGE BACK 00103000
  105. * OUT TO THE DASD. 00104000
  106. * SET UP THE IN-STORAGE POINTERS AND EXIT. 00105000
  107. * 14. SET UP THE FLAGS IN THE FIRST PAGE TO INDICATE A 00106000
  108. * FORMAT IS IN PROCESS AND WRITE THE FIRST PAGE 00107000
  109. * BACK TO THE DASD. 00108000
  110. * 15. READ IN THE REST OF THE PAGES FROM REC. CYLS 00109000
  111. * INITIALIZE, AND WRITE BACK OUT. 00110000
  112. * 16. READ THE FIRST PAGE BACK IN AND INITIALIZE WITH THE 00111000
  113. * NORMAL FORMAT, AND WRITE BACK OUT TO THE DASD. 00112000
  114. * 17. IF THIS IS A 'CLEARF' OPERATION, OR IF THIS 00113000
  115. * IS INITIAL FORMATTING WHEN INITIALIZING A 00114000
  116. * 3033/3032/3031 PROCESSOR, CALL DMKIOGFR TO 00115000
  117. * FORMAT FRAME RECORDS. 00116000
  118. * 18. IF THIS IS A CLEAR OPERATION, GO TO STEP 3 00117000
  119. * IN THE DESCRIPTION FOR DMKIOGF2. IF NOT, 00118000
  120. * SET UP THE IN STORAGE POINTERS AND EXIT. 00119000
  121. * AND EXIT. 00120000
  122. * 19. SET UP RECORDING AREA FULL MSG;CALL DMKQCNWT 00121000
  123. * TO SEND THE MSG. SET THE AREA FULL FLAG 00122000
  124. * IN DMKIOE. EXIT. 00123000
  125. * 00124000
  126. * OPERATION - DMKIOGAP 00125000
  127. * 1. CALL DMKFREE TO RESERVE CORE STORAGE FOR LOGOUT, 00126000
  128. * MCHAREA, AND CPEXBLOK FOR EACH PROCESSOR. 00127000
  129. * 2. INITIALIZE THE MCH LOGOUT POINTERS AND CONTROL 00128000
  130. * REGISTERS 14 AND 15. 00129000
  131. * 00130000
  132. * 00131000
  133. * OPERATION - DMKIOGF2 00132000
  134. * 00133000
  135. * 1. CHECK THE PARAMETERS. IF THEY ARE NOT VALID, EXIT. 00134000
  136. * 2. SET UP THE CCPD FOR THE 1ST PAGE OF RECORDING 00135000
  137. * AREA AND READ IT IN. FLAG THE PAGE TO 00136000
  138. * INDICATE A FORMAT IN PROCESS AND WRITE IT 00137000
  139. * BACK OUT. IF 'CLEAR' WAS SPECIFIED, USER 00138000
  140. * MEANS TO CLEAR ONLY ERROR RECORDS FROM THE 00139000
  141. * RECORDING CYLINDERS. CHECK FOR FRAME RECORDS 00140000
  142. * ON THE CYLS; IF SO, READ PAGES LOOKING FOR 00141000
  143. * 1ST RECORDING PAGE WHICH DOES NOT CONTAIN 00142000
  144. * FRAME RECORDS. WHEN SUCH A PAGE IS FOUND, 00143000
  145. * OR IF 'CLEARF' HAD BEEN SPECIFIED, 00144000
  146. * GO TO STEP 15 OF THE DESCRIPTION OF DMKIOGF1 TO 00145000
  147. * FORMAT THE REST OF THE CYLINDER. 00146000
  148. * 3. TURN OFF 'FORMATTING' FLAG IN 1ST RECORDING 00147000
  149. * PAGE; SET UP IN-STORAGE POINTERS AND EXIT. 00148000
  150. * 00149000
  151. * 00150000
  152. * 00229000
  153. * MESSAGES - 00230000
  154. * 00231000
  155. * DMKIOG551E ERROR RECORDING AREA FULL; RUN CPEREP 00232000
  156. * 00233000
  157. * DMKIOG552I FORMATTING ERROR RECORDING AREA 00234000
  158. * 00235000
  159. * DMKIOG553I ERROR RECORDING AREA CLEARED; USER 'USER' 00236000
  160. * 00237000
  161. * DMKIOG558I FATAL I/O ERROR; ERROR RECORDING DISABLED 00238000
  162. * 00239000
  163. * DMKIOG550I ERROR RECORDING AREA 90 PERCENT FULL; RUN CPEREP 00240000
  164. * 00241000
  165. *. 00250000
  166. COPY OPTIONS @V407510 00251000
  167. EJECT 00252000
  168. DMKIOG CSECT 00253000
  169. MODULEID DC CL8'DMKIOG' 00254000
  170. EXTRN DMKSCNRU,DMKPGTVG 00255000
  171. EXTRN DMKPGTVR,DMKRPAPT,DMKRPAGT 00256000
  172. EXTRN DMKIOERP 00257000
  173. EXTRN DMKERMSG @V305435 00258000
  174. EXTRN DMKIOEFR @V5088AA 00259000
  175. EXTRN DMKIOECT @V5088AA 00260000
  176. EXTRN DMKIOEES @V5088AA 00261000
  177. EXTRN DMKIOEHS @V5088AA 00262000
  178. EXTRN DMKIOEEP @V5088AA 00263000
  179. EXTRN DMKIOECE @VA10241 00263100
  180. EXTRN DMKIOEIF @VA10241 00263200
  181. EXTRN DMKSYSCT @V5088AA 00264000
  182. EXTRN DMKPTRLK @V5088AA 00267000
  183. EXTRN DMKIOETY 00268000
  184. EXTRN DMKIOEMX 00269000
  185. EXTRN DMKIOENI 00270000
  186. EXTRN DMKSIX60 00271000
  187. EXTRN DMKSEV70 00272000
  188. EXTRN DMKEIG80 00273000
  189. EXTRN DMKCCHCF 00274000
  190. EXTRN DMKCCH60 00275000
  191. EXTRN DMKCCHSZ 00276000
  192. EXTRN DMKCCHMX 00277000
  193. EXTRN DMKPTRAN @V407510 00278000
  194. EXTRN DMKIOSQR @V5088AA 00279000
  195. EXTRN DMKPTRUL @V5088AA 00280000
  196. EXTRN DMKCVTAB @V5088AA 00281000
  197. EXTRN DMKIOHFR @V60B7AA 00281100
  198. USING VMBLOK,R11 00282000
  199. USING PSA,R0 00283000
  200. USING SAVEAREA,R13 00284000
  201. USING *,R12 00285000
  202. SPACE 3 00286000
  203. ********************************************************************** 00287000
  204. * * 00288000
  205. * ROUTINE TO LOCATE LAST RECORDING ON CE CYLINDER * 00289000
  206. * AND SET THE IN-CORE POINTERS TO PROPER VALUES. * 00290000
  207. * IF THE ERROR RECORDING AREA IS NOT PROPERLY FORMATTED@V5088AA 00291000
  208. * A MSG. WILL BE SENT TO THE OPERATOR AND THE AREA WILL @V5088AA 00292000
  209. * BE FORMATTED. THE FIRST EIGHT BYTES OF EACH BLOCK CONTAIN * 00293000
  210. * THE CONTROL INFO AND ARE THE ONLY BYTES FORMATTED. * 00294000
  211. * RECORDING IS DONE IN 4096 BYTE BLOCKS. RECORDS ARE VARIABLE * 00295000
  212. * LENGTH WITHIN THE BLOCK. * 00296000
  213. * * 00297000
  214. * CALLED BY DMKCPI * 00298000
  215. * * 00299000
  216. * * 00300000
  217. ********************************************************************** 00301000
  218. SPACE 2 00302000
  219. DMKIOGF1 RELOC 00303000
  220. STIDP CPUID SAVE THE CPU MODEL AND SERIAL NO. 00304000
  221. CLI CPUVERSN,X'FF' IS THIS A VIRTUAL MACHINE ? 00305000
  222. BNE NOTVIRT NO, LETS GET ON WITH IT @V508690 00306000
  223. OI MCNPSW+1,WAIT TURN ON THE WAIT BIT IN @V508690 00307000
  224. * MACHINE CHECK NEW PSW. 00308000
  225. NOTVIRT EQU * @V508690 00309000
  226. LA R5,16 SETUP TO EXERCISE 15 CHANNELS 00310000
  227. ISSUEINS EQU * 00311000
  228. LR R4,R5 R5 IS CHANNEL NUMBER PLUS 1 ... @VMD0103 00312000
  229. BCTR R4,0 AND R4 IS CHANNEL NUMBER. @VMD0103 00313000
  230. LA R7,0(R4,R4) CHANNEL NUMBER * 2. @VMD0103 00314000
  231. A R7,ARIOCT R7 IS INDEX INTO CHANNEL TABLE. @VMD0103 00315000
  232. LH R7,0(0,R7) PICK UP HALFWD OFFSET TO RCHBLOK.@VMD0103 00316000
  233. LTR R7,R7 OFFSET INDICATES NO RCHBLOK? @VMD0103 00317000
  234. BM NORCH1 NO RCHBLOK. @VMD0103 00318000
  235. A R7,ARIOCH OFFSET + ORIGIN = RCHBLOK ADDR. @VMD0103 00319000
  236. NORCH1 EQU * FROM HERE ON, R7 IS ADDR OF @VMD0103 00320000
  237. * RCHBLOK OR IS -1. 00321000
  238. LA R6,CONF(R4) GET THE PTR TO THE CHANNEL TABLE.@VMD0103 00322000
  239. MVI 0(R6),X'FF' TENTATIVELY SET NO CHANL SUPPORT.@VMD0103 00323000
  240. L R0,FFS TENTATIVELY SET FLAG INDICATING @VMD0103 00324000
  241. * STIDC FAILS. 00325000
  242. SLL R4,8 ADJUST CHANL NUMBER FOR STIDC. @VMD0103 00326000
  243. STIDC 0(R4) STORE CHANNEL IDENTIFICATION. @VMD0103 00327000
  244. SRL R4,8 CHANNEL AGAIN IN LOW ORDER BYTE. @VMD0103 00328000
  245. BNZ STIDCSAV STIDC FAILED, LEAVE FFS IN R0. @VMD0103 00329000
  246. L R0,CHANID GET CHANNEL ID LEFT BY STIDC. @VMD0103 00330000
  247. IC R8,CHANID GET THE CHANNEL TYPE 00331000
  248. IC R9,CHANID+1 GET THE CHANNEL MODEL 00332000
  249. N R8,=X'000000F0' CLEAR ALL BITS EXCEPT TYPE 00333000
  250. N R9,=X'0000000F' CLEAR ALL BITS EXCEPT MODEL 00334000
  251. AR R8,R9 GET THE INDEX VALUE FOR TABLE 00335000
  252. LA R8,CHAN(R8) GET CHANNEL TYPE ID. 00336000
  253. MVC 0(1,R6),0(R8) SAVE THE CHANNEL TYPE ID. 00337000
  254. CLI 0(R8),X'F5' IS THIS A 2860 SELECTOR ? 00338000
  255. BNE TEST2880 NO, GO TEST FOR 2880 00339000
  256. OI TYPEM,X'40' INDICATE 2860 SUPPORT 00340000
  257. B RESET370 GO RESET 370 CHANNEL FLAG 00341000
  258. TEST2880 EQU * 00342000
  259. CLI 0(R8),X'F8' IS THIS A 2880 SELECTOR ? 00343000
  260. BNE TEST2881 NO, GO TEST FOR 2880 00344000
  261. OI TYPEM,X'80' INDICATE 2880 SUPPORT 00345000
  262. TEST2881 EQU * 00346000
  263. CLI 0(R8),X'F7' IS THIS A 2880 BLOCK MULTIPLEX ? 00347000
  264. BNE TEST2870 NO, GO TEST FOR 2870 00348000
  265. OI TYPEM,X'80' INDICATE 2880 SUPPORT 00349000
  266. TEST2870 EQU * 00350000
  267. CLI 0(R8),X'F6' IS THIS A 2870 BYTE MULTIPLEX ? 00351000
  268. BNE STIDCSAV NO. @VMD0103 00352000
  269. OI TYPEM,X'20' INDICATE 2870 SUPPORT 00353000
  270. RESET370 LTR R7,R7 DOES THE RCHBLOK EXIST? @VMD0103 00354000
  271. BM NORCH2 NO, NO RCHBLOK. @VMD0103 00355000
  272. USING RCHBLOK,R7 @VMD0103 00356000
  273. NI RCHTYPE,X'FF'-RCH370 RESET THE CHANNEL'S 370 @VMD0103 00357000
  274. * INSTRUCTION FLAG. 00358000
  275. STIDCSAV LTR R7,R7 DOES THE RCHBLOK EXIST? @VMD0103 00359000
  276. BM NORCH2 NO, NO RCHBLOK. @VMD0103 00360000
  277. ST R0,RCHSTIDC PUT ID FROM STIDC OR F'S INTO @VMD0103 00361000
  278. * RCHBLOK. 00362000
  279. DROP R7 @VMD0103 00363000
  280. NORCH2 EQU * @VMD0103 00364000
  281. CHANGEID EQU * 00365000
  282. BCT R5,ISSUEINS GO GET NEXT CHANNEL 00366000
  283. MVZ CONF(16),CONF-1 CHANGE THE HIGH ORDER FOUR BITS 00367000
  284. L R4,=V(DMKCCHCF) GET THE POINTER TO THE CONFIGURATION 00368000
  285. * TABLE POINTER 00369000
  286. MVC 0(16,R4),CONF SAVE THE CHANNEL ID. TYPES IN 00370000
  287. * CCH CONTROL PROGRAM 00371000
  288. MVI PARMSAVE,X'00' WILL BE USED TO INDICATE WHETHER @V5088AA 00372000
  289. * FRAME RECORDS REQUIRE INIT'ZATION@V5088AA 00373000
  290. BAL R7,IOGMCHIN INITIALIZE MACHINE CHECK AREA @V407510 00374000
  291. * FOR MAIN PROCESSOR @V407510 00375000
  292. * CHECK HANDLER COMMUNICATION AREA 00376000
  293. L R6,=V(DMKCCHMX) GET THE ADDRESS OF THE CCH RECORD LENGTH 00377000
  294. * SAVE AREA 00378000
  295. B MCH004(R3) GO TO MODEL DEPENDED CODE 00379000
  296. B PASTDAVE GO INITIALIZE CP 00380000
  297. MCH004 EQU * 00381000
  298. B MC158155 GO GET SPACE FOR CCH RECORD @V407510 00382000
  299. B MC135138 GO TO THE 135/138 SUPPORT @V386298 00383000
  300. B MC145148 GO TO THE 145/148 SUPPORT @V386298 00384000
  301. B MC158155 GO TO THE 155 & 158 SUPPORT 00385000
  302. B MC168165 GO TO THE 165 & 168 SUPPORT 00386000
  303. B MC303X GOTO THE COMMON 3033/3032/3031 @V5088AA 00387000
  304. * SUPPORT ROUTINE @V5088AA 00388000
  305. B MC331341 GO TO 4331/4341 PROCESSING @V60A6B6 00388100
  306. MC135138 EQU * SUPPORT FOR 135/138 @V386298 00389000
  307. LA R0,X'6C' LENGTH OF THE CCH RECORD @V5088AA 00390000
  308. STH R0,0(R6) SAVE LENGTH @V5088AA 00391000
  309. * AND I/O EXTENDED LOGOUT AREA 00392000
  310. LA R1,X'100' GET THE ADDRESS OF THE I/O EXTENDED 00393000
  311. * LOGOUT AREA 00394000
  312. LA R4,22 GET THE LENGTH OF THE I/O LOGOUT AREA 00395000
  313. B INTECSW GO INITIALIZE THE ECSW 00396000
  314. MC145148 EQU * SUPPORT FOR THE 145/148 @V386298 00397000
  315. LA R0,X'B4' LENGTH OF THE CCH RECORD @V5088AA 00398000
  316. STH R0,0(R6) SAVE LENGTH @V5088AA 00399000
  317. * AND I/O EXTENDED LOGOUT AREA 00400000
  318. LA R0,96 GET THE LENGTH OF THE EXTENDED LOGOUT 00401000
  319. BAL R3,FREE GO GET THE SPACE FOR THE LOGOUT 00402000
  320. B INTECSW GO INITIALIZE THE ECSW 00403000
  321. MC158155 EQU * 00404000
  322. LA R0,X'54' LENGTH OF THE CCH RECORD @V5088AA 00405000
  323. STH R0,0(R6) SAVE LENGTH @V5088AA 00406000
  324. SR R1,R1 CLEAR THE I/O EXTENDED LOGOUT POINTER 00407000
  325. B INTECSW GO INITIALIZE THE ECSW @V5088AA 00408000
  326. MC303X EQU * COMMON 3033/3032/3031 SUPPORT @V5088AA 00409000
  327. LA R0,X'2D4' LENGTH OF THE CCH RECORD @V5088AA 00410000
  328. STH R0,0(R6) SAVE LENGTH @V5088AA 00411000
  329. LA R0,640 GET LENGTH OF EXTENDED LOGOUT @V5088AA 00412000
  330. BAL R3,FREE GO GET SPACE FOR LOGOUT AREA @V5088AA 00413000
  331. OI PARMSAVE,INITYES FRAMES NEED TO BE INITIALIZED @V5088AA 00414000
  332. INTECSW EQU * 00415000
  333. MVI ECSWLOG,X'FF' INITIALIZE THE ECSW 00416000
  334. B PASTDAV1 GO SAVE THE I/O EXTENDED LOGOUT POINTER 00417000
  335. MC168165 EQU * 00418000
  336. TM TYPEM,X'80' IS THIS A 2880 CHANNEL ? 00419000
  337. BZ C287060 NO, GO TO 2870 &2860 SUPPORT 00420000
  338. LA R0,X'C0' LENGTH OF THE CCH RECORD + IOEL@V5088AA 00421000
  339. STH R0,0(R6) SAVE LENGTH @V5088AA 00422000
  340. LA R0,112 GET THE LENGTH OF THE I/O EXTENDED 00423000
  341. * LOGOUT AREA 00424000
  342. BAL R3,FREE GO GET THE SPACE THE THE I/O EXTENDED 00425000
  343. * LOGOUT 00426000
  344. B PASTDAV1 GO SAVE THE I/O EXTENDED LOGOUT POINTER 00427000
  345. MC331341 EQU * PROCESS 4331/4341 @V60A6B6 00427100
  346. LA R0,X'54' LENGTH OF THE CCH RECORD @VA10477 00427110
  347. STH R0,0(R6) SAVE LENGTH @VA10477 00427130
  348. SR R1,R1 CLEAR I/O EXTENDED LOGOUT PTR. @VA10477 00427150
  349. MVI ECSWLOG,X'FF' INITIALIZE THE ECSW @V60A6B6 00427200
  350. B PASTDAVE GO SETUP RECORDING CYLINDERS @V60A6B6 00427300
  351. SPACE 2 00428000
  352. ********************************************************************** 00429000
  353. FREE EQU * 00430000
  354. LR R4,R0 SAVE THE LENGTH OF THE AREA 00431000
  355. A R0,F7 PUT LENGTH ON A DOUBLEWORD @VA00881 00432000
  356. * BOUNDARY 00433000
  357. SRL R0,3 DIVIDE BY 8 00434000
  358. CALL DMKFREE GO GET THE STORAGE 00435000
  359. BR R3 RETURN TO IN LINE CODE 00436000
  360. ********************************************************************** 00437000
  361. EJECT 00438000
  362. ***************************************************************@V407510 00439000
  363. * @V407510 00440000
  364. * ROUTINE TO OBTAIN STORAGE FOR MACHINE CHECK @V407510 00441000
  365. * RECORD, EXTENDED LOGOUT AREA, AND CPEXBLOK. @V407510 00442000
  366. * THE MACHINE CHECK COMMUNICATION AREA IS ALSO @V407510 00443000
  367. * INITIALIZED. @V407510 00444000
  368. * @V407510 00445000
  369. ***************************************************************@V407510 00446000
  370. IOGMCHIN DS 0H MACHINE CHECK INITIALIZATION @V407510 00447000
  371. USING MCHAREA,R5 SETUP ADDRESSABILITY FOR MACHINE @V407510 00448000
  372. * CHECK HANDLER COMMUNICATION AREA @V407510 00449000
  373. LH R9,CPUMCELL GET THE LENGTH OF THE EXTENDED @V407510 00450000
  374. * LOGOUT AREA @V407510 00451000
  375. LA R6,MCHLEN1 GET LN OF DAMAGE ASSESSMENT AREA @V407510 00452000
  376. LA R0,MCHFIX(R9,R6) CALCULATE THE TOTAL LENGTH @V407510 00453000
  377. BAL R3,FREE GO GET THE SPACE FOR THE RECORD @V407510 00454000
  378. SLL R0,X8 MULTIPLY LENGTH BY 8 @V407510 00455000
  379. LR R2,R1 SET UP STARTING ADDRESS @V407510 00456000
  380. LR R3,R0 SET UP LENGTH @V407510 00457000
  381. LR R4,R2 SET UP FOR OVERLAP @V407510 00458000
  382. SR R5,R5 SET UP TO ZERO STORAGE @V407510 00459000
  383. MVCL R2,R4 CLEAR STORAGE JUST OBTAINED @V407510 00460000
  384. LA R5,MCHFIX(R9,R1) GET ADDRESS OF DAMAGE @V407510 00461000
  385. * ASSESSMENT AREA @V407510 00462000
  386. ST R5,AMCHAREA SAVE ADDRESS OF DAMAGE @V407510 00463000
  387. * ASSESSMENT AREA @V407510 00464000
  388. STH R6,MCHDAMLN SAVE LENGTH OF DAMAGE @V407510 00465000
  389. * ASSESSMENT AREA @V407510 00466000
  390. MVC MCHPROCA,IPUADDR SAVE PROCESSOR ADDRESS @V407510 00467000
  391. LTR R9,R9 ANY EXTENDED LOGOUT AREA? @V407510 00468000
  392. BZ LOGOUT NO, SET ADDRESS TO ZERO @V407510 00469000
  393. LA R9,MCHFIX(R1) GET THE BEGINNING ADDRESS OF @V407510 00470000
  394. * THE EXTENDED LOGOUT AREA WILL @V407510 00471000
  395. LOGOUT DS 0H @V407510 00472000
  396. ST R9,SAVEWRK7 SAVE THE BEGINNING ADDRESS @V407510 00473000
  397. LCTL R15,R15,SAVEWRK7 RESTORE CONTROL REGISTER 15 @V407510 00474000
  398. ST R1,MCHREC SAVE THE POINTER TO THE MACHINE C@V407510 00475000
  399. * RECORD @V407510 00476000
  400. LA R0,8*CPEXSIZE GET THE SIZE OF THE CPEXBLOK @V407510 00477000
  401. BAL R3,FREE GO GET THE SPACE FOR THE CPEXBLOK@V407510 00478000
  402. SLL R0,X8 MULTIPLY LENGTH BY 8 @V407510 00479000
  403. LR R2,R0 GET LENGTH @V407510 00480000
  404. BCTR R2,0 SUBTRACT ONE FROM LENGTH @V407510 00481000
  405. EX R2,CLEAR CLEAR CPEXBLOK @V407510 00482000
  406. ST R1,MCHCPEX SAVE THE CPEXBLOK POINTER @V407510 00483000
  407. LH R2,CPUMODEL GET THE MODEL NUMBER @V407510 00484000
  408. SR R3,R3 CLEAR REGISTER 3 @V407510 00485000
  409. LH R4,NOTSUPPD GET THE ID STOPPER @V407510 00486000
  410. MCH002 EQU * @V407510 00487000
  411. CH R2,MODMODEL(R3) COMPARE MODEL NUMBER WITH @V407510 00488000
  412. BE MCH003 YES, GO SAVE MODEL ID @V407510 00489000
  413. LA R3,TABSZ(R3) UPDATE MODEL NUMBER TABLE PTR @V407510 00490000
  414. CH R4,MODMODEL(R3) COMPARE MODEL NO. WITH STOPPER @V407510 00491000
  415. BNE MCH002 NO, GO COMPARE NEXT MODEL NO. @V407510 00492000
  416. MCH003 EQU * @V407510 00493000
  417. LH R3,MODMODID(R3) GET THE MODEL ID. @V407510 00494000
  418. STC R3,MCHMODEL SAVE THE MODEL ID IN THE MACHINE @V407510 00495000
  419. * CHECK HANDLER COMMUNICATION AREA @V407510 00496000
  420. CH R2,MO155 IS THIS MODEL 155? @V407510 00497000
  421. BE SETMODE YES, RECORD SOFT ERRORS @V407510 00498000
  422. CH R2,MO165 IS THIS MODEL 165? @V407510 00499000
  423. BNE IOGMCHEX NO, DO NOT RECORD SOFT ERRORS @V407510 00500000
  424. SETMODE DS 0H RECORD SOFT ERRORS @V407510 00501000
  425. OI APSTAT4,RECMODE SET RECORDING INDICATOR FOR REC.@VA09862 00502100
  426. IOGMCHEX DS 0H @V407510 00503000
  427. BR R7 RETURN TO CALLER @V407510 00504000
  428. CLEAR XC ZERO(ZERO,R1),ZERO(R1) CLEAR STORAGE @V407510 00505000
  429. ZERO EQU 0 CONSTANT OF 0 @V407510 00506000
  430. TABSZ EQU 4 SIZE OF MODEL NO. ENTRIES @V407510 00507000
  431. X8 EQU 3 SHIFT VALUE TO MULTIPLY BY 8 @V407510 00508000
  432. ***************************************************************@V407510 00509000
  433. SPACE 00510000
  434. ***************************************************************@V407510 00511000
  435. * @V407510 00512000
  436. * THIS ENTRY POINT IS INVOKED TO INITIALIZE @V407510 00513000
  437. * THE MACHINE CHECK RECORD, EXTENDED LOGOUT AREA, @V407510 00514000
  438. * CPEXBLOK, AND MCHAREA FOR THE ATTACHED PROCESSOR. @V407510 00515000
  439. * @V407510 00516000
  440. ***************************************************************@V407510 00517000
  441. DMKIOGAP RELOC @V407510 00518000
  442. STIDP CPUID SAVE THE CPU MODEL & SERIAL NO. @V407510 00519000
  443. BAL R7,IOGMCHIN INITIALIZE MACHINE CHECK AREA @V407510 00520000
  444. * FOR ATTACHED PROCESSOR @V407510 00521000
  445. LM R0,R11,SAVEREGS RESTORE CALLERS REGS @V407510 00522000
  446. SVC RETURN EXIT @V407510 00523000
  447. RETURN EQU 12 RETURN SVC NUMBER @V407510 00524000
  448. SPACE 00525000
  449. C287060 EQU * 00526000
  450. SR R1,R1 CLEAR THE I/O EXTENDED LOGOUT POINTER 00527000
  451. TM TYPEM,X'60' IS THIS A 2860 OR 2870 CHANNEL ? 00528000
  452. BZ PASTDAV1 NO, GO SAVE I/O EXTENDED LOGOUT POINTER 00529000
  453. MVI 0(R6),X'68' SAVE THE LENGTH OF THE CCH RECORD AND 00530000
  454. * I/O EXTENDED LOGOUT AREA 00531000
  455. LA R1,X'130' GET THE POINTER TO THE I/O EXTENDED 00532000
  456. * LOGOUT 00533000
  457. LA R4,22 GET THE LENGTH OF THE I/O LOGOUT AREA 00534000
  458. PASTDAV1 EQU * 00535000
  459. ST R1,IOELPNTR SAVE THE POINTER TO THE I/O EXTENDED 00536000
  460. LTR R1,R1 IS THE ADDRESS ZERO ? 00537000
  461. BZ PASTDAV2 YES, GO GET DEPENDENT MODULE 00538000
  462. L R15,=V(DMKCCHSZ) GET ADDRESS OF IOEL SIZE FIELD @V5088AA 00539000
  463. STH R4,0(,R15) SAVE I/O EXTENDED LOGOUT LENGTH @V5088AA 00540000
  464. LR R2,R1 'TO' ADDRESS (IOEL) @V5088AA 00541000
  465. LR R3,R4 LENGTH TO MOVE @V5088AA 00542000
  466. LR R4,R2 'FROM' ADDRESS FOR MOVE @V5088AA 00543000
  467. L R5,F255 PAD CHARACTER @V5088AA 00544000
  468. SLL R5,24 PAD CHAR. = X'FF'; LENGTH=0 @V5088AA 00545000
  469. MVCL R2,R4 PROPAGATE X'FF'S THRUOUT IOEL @V5088AA 00546000
  470. L R5,AMCHAREA RESTORE MCH AREA BASE @V5088AA 00547000
  471. PASTDAV2 EQU * 00548000
  472. CLI MCHMODEL,MODEL165 IS THIS A 165 OR 168 ? 00549000
  473. BNE PASTDAVE NO, GO FIND STARTING CYL FOR RECORDING 00550000
  474. L R3,=V(DMKCCH60) GET THE ADDRESS OF THE SAVE AREA FOR 00551000
  475. * CHANNEL ADDRESSES 00552000
  476. LA R6,3 SETUP COUNT VALUE 00553000
  477. SR R4,R4 CLEAR WORK REGISTER 00554000
  478. INTERG EQU * 00555000
  479. L R1,MOD1658C(R4) GET ADDRESS OF CHANNEL MODULE 00556000
  480. LTR R1,R1 IS THERE AN ADDRESS FOR CHANNEL MODULE ? 00557000
  481. BZ CCHCHAN NO, GO GET NEXT ADDRESS 00558000
  482. * GET CHANNEL SUPPORT MODULE @V407510 00559000
  483. TRANS 2,1,OPT=(BRING,LOCK,DEFER,SYSTEM),AFFINITY @V407510 00560000
  484. ST R2,0(R4,R3) SAVE THE ADDRESS IN CCH CONTROL 00561000
  485. * ROUTINE 00562000
  486. CCHCHAN EQU * 00563000
  487. LA R4,4(R4) UPDATE THE SAVE AREA 00564000
  488. BCT R6,INTERG GO GET NEXT MODULE 00565000
  489. DROP R5 DROP THE BASE REGISTER FOR MCH 00566000
  490. B PASTDAVE GO SET UP RECORDING CYLINDERS 00567000
  491. SPACE 00568000
  492. PASTDAVE L R15,=V(DMKSYSER) FIND STARTING CYL FOR RECORDING 00569000
  493. LH R1,4(,R15) Get CUU of ERR area HRC075DK 00569500
  494. LH R15,0(R15) ERRORS. 00570000
  495. STH R15,CECYL SET RECORDING AREA IN-CORE PTR @V5088AA 00571000
  496. CALL DMKSCNRU CALLSCANNER TO GET RDEVBLOK PTR 00573000
  497. ********************************************************************** 00574000
  498. * SCANNER RETURNS PTR TO RDEVBLOK IN GPR8 * 00575000
  499. ********************************************************************** 00576000
  500. USING RDEVBLOK,R8 00577000
  501. LH R15,RDEVCODE R8 POINTS TO RDEVBLOK-PICK UP RDEVCODE 00578000
  502. STC R15,CECYLTYP ONLY 1 BYTE IS USED AT PRESENT. 00579000
  503. STC R15,WORKTYP 00580000
  504. L R4,=V(DMKIOETY) ADDRESS OF 'D' PART OF ERROR @VMV0030 00580100
  505. * RECORDING AREA CCPD 00580200
  506. STC R15,0(R4) SAVE DEVICE TYPE @VMV0030 00580300
  507. CLI RDEVTYPE,TYP3330 IS IT A 3330 ? 00581000
  508. BE SET3330 YES 00582000
  509. CLI RDEVTYPE,TYP3350 IS IT A 3350 ? @V304498 00583000
  510. BE SET3350 YES - @V304498 00584000
  511. CLI RDEVTYPE,TYP3375 Is it a 3375 ? HRC106DK 00584100
  512. BE SET3375 Yes - HRC106DK 00584200
  513. CLI RDEVTYPE,TYP3380 Is it a 3380 ? HRC106DK 00584300
  514. BE SET3380 Yes - HRC106DK 00584400
  515. CLI RDEVTYPE,TYP2305 IS IT A 2305 ? 00585000
  516. BE SET2305 YES 00586000
  517. CLI RDEVTYPE,TYP3340 IS IT A 3340 ? @V2A2029 00587000
  518. BE SET3340 YES - @V2A2029 00588000
  519. MVI MAXPAGE,MAX2314 SET MAX NO. PAGES PER CYL 2314/2319 00589000
  520. B NINETYPC @V5088AA 00590000
  521. SET3350 MVI MAXPAGE,MAX3350 SET MAX NO. PAGES PER CYL 3350 @V304498 00591000
  522. B NINETYPC @V5088AA 00592000
  523. SET3375 MVI MAXPAGE,MAX3375 Set max no. pages per cyl 3375 HRC106DK 00592100
  524. B NINETYPC HRC106DK 00592200
  525. SET3380 MVI MAXPAGE,MAX3380 Set max no. pages per cyl 3380 HRC106DK 00592300
  526. B NINETYPC HRC106DK 00592400
  527. SET3330 MVI MAXPAGE,MAX3330 SET MAX NO. PAGES PER CYL 3330 00593000
  528. B NINETYPC @V5088AA 00594000
  529. SET3340 EQU * SET MAX NO. PAGES PER CYL 3340 @V2A2029 00595000
  530. SET2305 MVI MAXPAGE,MAX2305 SET MAX NO. PAGES PER CYL 2305 00596000
  531. EJECT 00597000
  532. NINETYPC EQU * @V5088AA 00598000
  533. L R2,=V(DMKSYSCT) COUNT OF RECORDING CYLINDERS @V5088AA 00599000
  534. LH R2,0(R2) RETRIEVE COUNT OF RECORDING CYLS @V5088AA 00600000
  535. L R4,=V(DMKIOECT) ADDRESS TO SAVE CYL COUNT @V5088AA 00601000
  536. STH R2,0(R4) SAVE CYLINDER COUNT @V5088AA 00602000
  537. LR R4,R2 MOVE COUNT FOR MANIPULATION @V5088AA 00603000
  538. AH R4,CECYL ADD START CYL OF RECORDING AREA @V5088AA 00604000
  539. BCTR R4,0 SUBTRACT ONE FOR END ADDRESS @V5088AA 00605000
  540. STH R4,MAXCYL SAVE END 'CC' OF RECORDING AREA @V5088AA 00606000
  541. STH R4,LASTCYL SAVE ENDING 'CC' FOR 90% CHECK @V5088AA 00607000
  542. SRDL R2,32 PREPARE FOR MULTIPLICATION @V5088AA 00608000
  543. SLR R4,R4 CLEAR THE REGISTER @V5088AA 00609000
  544. IC R4,MAXPAGE NUMBER OF PAGES PER CYLINDER +1 @V5088AA 00610000
  545. BCTR R4,0 SUBTRACT 1 FOR NO. PAGES PER CYL @V5088AA 00611000
  546. MR R2,R4 MULTIPLY PAGES/CYL BY NO. OF CYLS@V5088AA 00612000
  547. LA R4,10 FIND 10% OF TOTAL NO. OF PAGES @V5088AA 00613000
  548. DR R2,R4 DIVIDE TOTAL NUMBER OF PAGES IN @V5088AA 00614000
  549. * RECORDING AREA BY 10 @V5088AA 00615000
  550. LTR R2,R2 IS REMAINDER ZERO? @V5088AA 00616000
  551. BZ *+8 IF YES, OK @V5088AA 00617000
  552. LA R3,1(R3) IF NOT, ROUND UP THE 10% VALUE @V5088AA 00618000
  553. IC R4,MAXPAGE NO. OF PAGES ON ONE CYLINDER @V5088AA 00619000
  554. SR R4,R3 SUBTRACT IN ORDER TO GET THE @V5088AA 00620000
  555. * PAGE WHICH, ON THE LAST RECORDING@V5088AA 00621000
  556. * CYL, WILL MEAN AREA IS 90% FULL. @V5088AA 00622000
  557. STC R4,PAGE90PC SAVE FOR USE BY RECORDING RTNS @V5088AA 00623000
  558. L R4,=V(DMKIOEMX) PICK UP MAX PAGE PTR IN RES CODE@V60B7AA 00623100
  559. MVC 0(1,R4),MAXPAGE MOVE IN MAX NO. OF PAGES FOR @V60B7AA 00623200
  560. * DEVICE 00623300
  561. L R4,=V(DMKIOENI) PICK UP ADDRESS OF 90% FULL LIM.@V60B7AA 00623400
  562. MVC 0(1,R4),PAGE90PC MOVE IN CORRECT COUNT @V60B7AA 00623500
  563. FINDIOR LA R4,SETOBRS ADDRESS OF 'FIND' RETURN POINT @V5088AA 00624000
  564. ST R4,FINDRET SET RETURN POINT FROM SEARCH 00625000
  565. MVC WORKCYL(3),CECYL PUT IO-OBR PARMS IN WORK AREA 00626000
  566. DROP R8 00627000
  567. SPACE 2 00628000
  568. ********************************************************************** 00629000
  569. * LOCATE THE FIRST RECORD ON DESIGNATED RECORDING CYLINDER * 00630000
  570. * AND CHECK THAT IT IS IN THE CORRECT FORMAT * 00631000
  571. ********************************************************************** 00632000
  572. SPACE 1 00633000
  573. FINDREC EQU * 00634000
  574. CALL DMKPGTVG GET A VIRTUAL MEMORY PAGE ADDRESS 00635000
  575. ********************************************************************** 00636000
  576. * ADDRESS WILL BE RETURNED IN REG 1 * 00637000
  577. ********************************************************************** 00638000
  578. ST R1,IOEVMPAD SAVE VIRT MEM PAGE ADDRESS 00639000
  579. FIND2 EQU * 00640000
  580. BAL R14,FMTREAD GO READ A 4096 BYTE RECORD 00641000
  581. ********************************************************************** 00642000
  582. * * 00643000
  583. * ON RETURN REGISTER 2 CONTAINS REAL ADDRESS OF BUFFER * 00644000
  584. * * 00645000
  585. ********************************************************************** 00646000
  586. ST R2,IOEREALA SAVE REAL ADDRESS OF BUFFER 00647000
  587. USING RECPAG,R2 00648000
  588. CLC WORKCYL(4),RECCCPD CORRECT CCPD FOR PAGE ?? 00649000
  589. BNE FORMAT IF NOT - GO FORMAT 00650000
  590. TM RECFLAG2,RECPAGFM IN A FORMAT OPERATION 00651000
  591. BO FORMAT YES - DO IT ALL OVER AGAIN 00652000
  592. TM RECFLAG1,RECPAGIU+RECPAGFR+RECPAGFL SHOULD HAVE ONE 00653000
  593. BZ FORMAT CAUSE IF WE DON'T , WE FORMAT 00654000
  594. MVI INFOFLAG,X'00' CLEAR OUT FLAG BYTE @VD00160 00655000
  595. TM RECFLAG1,RECPAGFA ARE FRAME RECORDS ON THIS PAGE@VD00160 00656000
  596. BZ FINDLOOP OK IF NOT @VD00160 00657000
  597. OI INFOFLAG,YESFRAME REMEMBER FRAMES ARE PRESENT @VD00160 00658000
  598. MVC SAVELAST,WORKCYL SAVE THIS FIRST CCPD VALUE @VA07861 00658100
  599. SPACE 00659000
  600. FINDLOOP EQU * 00660000
  601. TM INFOFLAG,YESFRAME WERE FRAME RECORDS FOUND ON @VD00160 00665000
  602. * THE RECORDING CYLINDERS? 00666000
  603. BZ FIND3 NO --CONTINUE @VD00160 00667000
  604. TM RECFLAG1,RECPAGFA ARE THERE FRAMES ON THIS PAGE?@VD00160 00668000
  605. * (WE ARE LOOKING FOR THE FIRST 00669000
  606. * NON-FRAME RECORD IN ORDER TO FILL 00670000
  607. * IN DMKIOEHS.) 00671000
  608. BNZ FIND3 YES -- THEN THIS IS NOT A PAGE @VD00160 00672000
  609. * THAT CONTAINS ERROR RECORDS. 00673000
  610. L R2,=V(DMKIOEFR) ADDRESS OF FRAME INDICATOR @VD00160 00674000
  611. MVI 0(R2),YESFRAME INDICATE FRAMES ARE ON REC. CYLS @VD00160 00675000
  612. L R2,=V(DMKIOEHS) ADDRESS OF CCPD OF 1ST ERROR REC@VD00160 00676000
  613. MVC 0(4,R2),SAVELAST SAVE CCPD OF LAST FRAME RECORD @VA07861 00677100
  614. * (EREP WILL USE THIS TO READ THE 1ST 00678100
  615. * ERROR RECORD.) 00678125
  616. MVI INFOFLAG,X'00' TURN OFF FLAG SO THAT WE DON'T @VD00160 00679000
  617. * COME THROUGH HERE AGAIN. 00680000
  618. L R2,IOEREALA LOAD REAL PAGE ADDRESS @VA08278 00680050
  619. FIND3 TM RECFLAG1,RECPAGFR CLEARED PAGE? @VA07861 00680100
  620. BO FINDEXIT YES - LET'S USE IT @VA07861 00680120
  621. TM RECFLAG1,RECPAGFL IN USE BUT NOT FULL? @VA07861 00680140
  622. BZ FINDEXIT YES - OK TO USE THIS ONE @VA07861 00680160
  623. SLR R2,R2 ZERO REGISTER 2 @VA07861 00681100
  624. ICM R2,B'0111',WORKCYL LOAD LAST CYL & PAGE NUMBER @V5088AA 00682000
  625. STCM R2,B'0111',SAVELAST SAVE THIS CCPD - IT MAY BE @VA07861 00682100
  626. * THE LAST PAGE TO CONTAIN FRAME RECORDS. 00682125
  627. LA R2,1(R2) BUMP PAGE NUMBER BY ONE @V5088AA 00683000
  628. STC R2,WORKPAGE AND STORE IT 00684000
  629. CLC WORKPAGE(1),MAXPAGE HAVE WE REACHED THE END 00685000
  630. BL FINDREAD OK--NOT AT END OF CYLINDER @V5088AA 00686000
  631. CLC WORKCYL(3),MAXCYL ARE WE AT END OF LAST CYL? @V5088AA 00687000
  632. BNL CYLFULL YES, RECORDING AREA IS FULL @V5088AA 00688000
  633. SRL R2,8 ISOLATE 'CC' PART OF CURRENT ADDR@V5088AA 00689000
  634. LA R2,1(R2) INCREMENT CYL NUMBER @V5088AA 00690000
  635. STH R2,WORKCYL STORE UPDATED WORK ADDRESS @V5088AA 00691000
  636. MVI WORKPAGE,X'01' RESET 'P' TO 1ST PAGE ON NEW CYL @V5088AA 00692000
  637. FINDREAD BAL R14,FMTREAD READ PAGE IN @V5088AA 00693000
  638. B FINDLOOP GO BACK AND LOOK AT THIS ONE 00694000
  639. SPACE 00695000
  640. FINDEXIT EQU * 00696000
  641. MVI RECFLAG1,RECPAGIU SET PAGE IN USE 00697000
  642. BAL R3,FMTWRITE OUTPUT THE PAGE 00698000
  643. L R3,FINDRET LOAD RETURN ADDRESS 00699000
  644. BR R3 AND GO BACK 00700000
  645. SPACE 00701000
  646. ********************************************************************** 00702000
  647. * * 00703000
  648. * SET RECORDING AREA STARTING CYLINDER AND PAGE @V5088AA 00704000
  649. * CECYL POINTS TO FIRST AVAILABLE ERROR RECORD 'CCP' @V5088AA 00705000
  650. * * 00706000
  651. ********************************************************************** 00707000
  652. SPACE 2 00708000
  653. SETOBRS MVC CECYL(3),WORKCYL LET IT BE DONE 00709000
  654. L R15,=V(DMKIOECE) ADD. OF CECYL @VA10241 00709100
  655. MVC 0(3,R15),CECYL MOVE IN CECYL @VA10241 00709200
  656. B IOEXIT ALL DONE 00710000
  657. EJECT 00711000
  658. ********************************************************************** 00712000
  659. * * 00713000
  660. * FORMAT WILL WRITE A 12 BYTE CONTROL FIELD AS THE FIRST 12 * 00714000
  661. * BYTES IN EVERY 4096 BYTE BLOCK. * 00715000
  662. * BYTES 1-2=CYLINDER * 00716000
  663. * BYTE 3 =PAGE NO. (BLOCK OR PHYSICAL RECORD NUMBER) * 00717000
  664. * BYTE 4 =DEVICE CODE * 00718000
  665. * BYTE 5-6=NEXT AVAIL. SPACE THAT CAN BE USED IN BLOCK * 00719000
  666. * BYTE 7 =PAGE 'IN-USE' IND (00=EMPTY, 80=IN-USE@V5088AA 00720000
  667. * BYTE 8 = PAGE SKIPPED INDICATOR. * 00721000
  668. * BYTES 9-12=LAST RECORD IND OR SIZE OF VARIABLE RECORD * 00722000
  669. * * 00723000
  670. * * 00724000
  671. ********************************************************************** 00725000
  672. SPACE 2 00726000
  673. FORMAT EQU * 00727000
  674. MVI RECFLAG2,RECPAGFM SET FORMATTING FLAG 00728000
  675. MVC RECCCPD(4),WORKCYL SET CCPD 00729000
  676. MVC RECNXT(2),INITFMT PAGE ONE STUFF 00730000
  677. MVI RECFLAG1,0 ZIP USE FLAGS 00731000
  678. SLR R0,R0 NO VARIABLE MESSAGE TEXT @V5088AA 00732000
  679. SLR R1,R1 NO VARIABLE MESSAGE TEXT @V5088AA 00733000
  680. LA R2,552 MESSAGE DMKIOG552I @V305435 00734000
  681. ICM R2,B'0100',=C'I' INFORMATION MESSAGE @V305435 00735000
  682. FORMSGOK BAL R3,CALLERM CALL MESSAGE WRITTER @V305435 00736000
  683. LA R14,FMTFINI GET RETURN ADDRESS @V305435 00737000
  684. ST R14,FMTEXIT SAVE IT @V305435 00738000
  685. B FMTWRTPG OUTPUT FIRST PAGE @V305435 00739000
  686. SPACE 3 00740000
  687. ********************************************************************** 00741000
  688. * * 00742000
  689. * ROUTINE TO FORMAT ERROR RECORDING AREA @V5088AA 00743000
  690. * * 00744000
  691. ********************************************************************** 00745000
  692. SPACE 2 00746000
  693. FMTLOOP MVC 0(4,R2),WORKCYL MOVE IN CCPD 00747000
  694. MVC 4(8,R2),INITFMT MOVE IN THE GOODIES 00748000
  695. BAL R3,FMTWRITE WRITE IT OUT 00749000
  696. FMTPGINC EQU * 00750000
  697. ICM R2,B'0111',WORKCYL PICK UP CYL AND PAGE POINTER @V5088AA 00751000
  698. LA R2,1(R2) BUMP IT BY 1 00752000
  699. STC R2,WORKPAGE SAVE PTR 00753000
  700. CLC WORKPAGE(1),MAXPAGE DID WE HIT END OF CYL ? 00754000
  701. BNE FMTRD NOT AT END OF A CYLINDER @V5088AA 00755000
  702. CLC WORKCYL(3),MAXCYL AT END OF LAST CYLINDER? @V5088AA 00756000
  703. BE FMTOUT YES, AT END OF RECORDING AREA @V5088AA 00757000
  704. SRL R2,8 ISOLATE 'CC' PART OF CURRENT ADDR@V5088AA 00758000
  705. LA R2,1(R2) INCREMENT CYLINDER TO NEXT ONE @V5088AA 00759000
  706. STH R2,WORKCYL STORE UPDATED CYLINDER NUMBER @V5088AA 00760000
  707. MVI WORKPAGE,X'01' UPDATE 'P' TO 1ST PAGE ON NEW CYL@V5088AA 00761000
  708. FMTRD BAL R14,FMTREAD GO READ ANOTHER PAGE @V5088AA 00762000
  709. B FMTLOOP FORMAT THIS PAGE 00763000
  710. SPACE 5 00764000
  711. ********************************************************************** 00765000
  712. * * 00766000
  713. * RETURN HERE WHEN FORMAT OF AREA IS COMPLETE @V5088AA 00767000
  714. * * 00768000
  715. ********************************************************************** 00769000
  716. FMTOUT L R2,=V(DMKIOEFR) ADDR. OF FRAME RECORD INDICATOR @V5088AA 00770000
  717. MVI 0(R2),NOFRAMES NO FRAME RECS ARE IN REC. AREA @V5088AA 00771000
  718. TM PARMSAVE,INITYES MUST WE INITIALIZE FRAME RECS? @V5088AA 00772000
  719. BZ EXITFMT NO, DONE WITH FORMATTING @V5088AA 00773000
  720. L R15,=V(DMKIOEHS) ADDRESS OF HDRSTART FIELD -- @V5088AA 00774000
  721. * SLOT FOR FIRST ERROR RECORD TO GO@V5088AA 00775000
  722. MVC 0(4,R15),F0 ZERO THIS FIELD--WILL BE UPDATED @V5088AA 00776000
  723. * BY DMKIOGFR AS APPROPRIATE @V5088AA 00777000
  724. CALL DMKIOHFR GO INITIALIZE FRAME RECORDS @V60B7AA 00778100
  725. EXITFMT L R14,FMTEXIT CALLER'S RETURN ADDRESS @V5088AA 00779000
  726. BR R14 00780000
  727. * 00781000
  728. FMTFINI EQU * 00782000
  729. L R3,=V(DMKSYSER) ADDR. OF START OF REC. AREA @V5088AA 00783000
  730. * NOTE: MUST USE DMKSYSER VALUE @V5088AA 00784000
  731. * SINCE CECYL MAY HAVE BEEN UPDATED@V5088AA 00785000
  732. * BY DMKIOGFR AND IF WE CHANGE IT @V5088AA 00786000
  733. * THEN DMKIOEEP WILL BE WRONG. @V5088AA 00787000
  734. LH R3,0(R3) RETRIEVE 'CC' PART OF ADDRESS @V5088AA 00788000
  735. STH R3,WORKCYL UPDATE CURRENT 'CC' ADDRESS @V5088AA 00789000
  736. MVI WORKPAGE,X'01' RESET PAGE NUMBER TO ONE 00790000
  737. BAL R14,FMTREAD READ PAGE ONE IN 00791000
  738. TM RECFLAG1,RECPAGFA ARE FRAME RECS ON THIS PAGE? @V5088AA 00792000
  739. BZ FMTPAGDN NO, GO INITIALIZE PAGE HDR @V5088AA 00793000
  740. MVI RECFLAG2,RECPAGDN TURN OFF 'FORMATTING' FLAG. @V5088AA 00794000
  741. * THE REST OF THE HDR WAS INIT. @V5088AA 00795000
  742. * BY DMKIOGFR. @V5088AA 00796000
  743. B *+10 @V5088AA 00797000
  744. FMTPAGDN MVC RECNXT(8),INITFMT SET FLAGS AND FENCE @V5088AA 00798000
  745. BAL R3,FMTWRITE WRITE IT BACK OUT 00799000
  746. DROP R2 00800000
  747. IOEXIT SR R0,R0 00801000
  748. ST R0,IOEREALA 00802000
  749. ST R0,IOEVMPAD 00803000
  750. SR R2,R2 CLEAR PARM REG 00804000
  751. CALL DMKRPAGT,PARM=SYSTEM CLEAR PAGE REF 00805000
  752. CALL DMKPGTVR RELEASE THE VIRTUAL MEMORY SPACE 00806000
  753. L R4,=V(DMKIOEEP) GET RECORDING ADDRESS CCPD @V5088AA 00807000
  754. MVC 0(3,R4),CECYL MOVE CYL, PAGE, AND TYPE FOR @V60B7AA 00808100
  755. * RECORDING AREA 1ST AVAIL. SPACE @V5088AA 00809000
  756. EXIT RETURN TO CALLER @V305435 00814000
  757. SPACE 1 00815000
  758. FMTREAD ST R14,SAVE14 00816000
  759. L R0,WORKCYL SET RECORD CCPD 00817000
  760. CALL DMKRPAGT,PARM=SYSTEM+BRING,AFFINITY @V407510 00818000
  761. L R14,SAVE14 00819000
  762. BC 8,0(R14) RETURN IF OK 00820000
  763. GIVENEWS SLR R0,R0 INDICATE NO VARIBLE DATA @V305435 00821000
  764. SLR R1,R1 ... @V305435 00822000
  765. LA R2,558 MESSAGE DMKIOG558I @V305435 00823000
  766. ICM R2,B'0100',=C'I' INFORMATION MESSAGE @V305435 00824000
  767. BAL R3,CALLERM OUTPUT THE ERROR MESSAGE @V305435 00825000
  768. B LIGHTOUT TURN OFF RECORDING AND EXIT. 00826000
  769. * DMKFREE - TO OBTAIN A BLOCK OF STORAGE 00827000
  770. FMTWRITE EQU * 00828000
  771. L R1,IOEVMPAD 00829000
  772. L R0,WORKCYL 00830000
  773. CALL DMKRPAPT,PARM=SYSTEM,AFFINITY @V407510 00831000
  774. BC 8,0(R3) RETURN IF NO ERRORS 00832000
  775. B GIVENEWS GO SEND ERROR MSG 00833000
  776. * 00834000
  777. CYLFULL SLR R0,R0 NO VARIABLE MESSAGE TEXT @V5088AA 00835000
  778. SLR R1,R1 NO VARIABLE MESSAGE TEXT @V5088AA 00836000
  779. LA R2,551 MESSAGE DMKIOG551E @V305435 00837000
  780. ICM R2,B'0100',=C'E' ERROR MESSAGE @V5088AA 00838000
  781. L R4,=V(DMKIOEES) I/O SWITCH @V305435 00839000
  782. CYLMSGOK BAL R3,CALLERM CALL MESSAGE WRITTER @V305435 00840000
  783. MVI 0(R4),X'FF' TURN OFF (OBR|MCH) SWITCH @V305435 00841000
  784. B IOEXIT NO - RETURN TO CALLER @V305435 00842000
  785. SPACE 00843000
  786. FMTWRTPG EQU * 00844000
  787. BAL R3,FMTWRITE OUTPUT PAGE ONE 00845000
  788. B FMTPGINC NOW GO DO THE REST 00846000
  789. EJECT 00847000
  790. ********************************************************************** 00848000
  791. * * 00849000
  792. * THIS ENTRY POINT IS INVOKED TO RESET OR CLEAR THE ERROR * 00850000
  793. * RECORDING CYLINDERS TO CONTAIN BYTE COUNTS OF RESET VALUES. * 00851000
  794. * AN IN-CORE POINTER IS THEN UPDATED TO POINT TO THE * 00852000
  795. * START OF THE RECORDING AREAS. * 00853000
  796. * * 00854000
  797. * PARAMETER IS PASSED TO THIS ROUTINE IN REGISTER 2. * 00855000
  798. * R2=01 ERROR RECORDS ONLY @V5088AA 00856000
  799. * R2=02 ERROR RECORDS AND FRAME RECORDS @V5088AA 00857000
  800. * * 00858000
  801. ********************************************************************** 00859000
  802. SPACE 2 00860000
  803. DMKIOGF2 RELOC 00861000
  804. SWITCH @V407510 00862000
  805. STC R2,PARMSAVE SAVE ERASE PARAMETERS @V60B7AA 00863100
  806. TM PARMSAVE,CLR+CLEARF VALID ERASE PARAMETER? @V5088AA 00864000
  807. BNZ ERASE YES @V5088AA 00865000
  808. LM R0,R11,SAVEREGS RESTORE CALLERS REGS 00866000
  809. SVC 12 EXIT 00867000
  810. SPACE 1 00868000
  811. ********************************************************************** 00869000
  812. * SET SWITCH 'RECORDING IN PROCESS' IS ON WHILE ERASE IS * 00870000
  813. * BEING DONE TO ELIMINATE LOST RECORDINGS. * 00871000
  814. * THIS WILL ALLOW ERRORS TO BE QUED UNTIL ERASE IS COMPLETE * 00872000
  815. ********************************************************************** 00873000
  816. ERASE L R10,=V(DMKIOEFR) ADDRESS OF FRAME INDICATOR @V5088AA 00874000
  817. IC R10,0(R10) PICK UP THE IOEFR VALUE @V5088AA 00875000
  818. STC R10,IOEFRSAV SAVE THE PRESENT INDICATION @V5088AA 00876000
  819. L R10,=V(DMKSYSER) ADDR. OF START OF REC. AREA @V5088AA 00877000
  820. LH R10,0(R10) RETRIEVE 'CC' PART OF ADDRESS @V5088AA 00878000
  821. STH R10,CECYL START OF ERROR RECORDING AREA @V5088AA 00879000
  822. L R15,=V(DMKIOECE) ADD. OF CECYL @VA10241 00879100
  823. MVC 0(3,R15),CECYL MOVE IN CECYL @VA10241 00879200
  824. MVI CEPAGE,X'01' INITIALIZE THE CURRENT 'P' @V5088AA 00880000
  825. MVC WORKCYL(3),CECYL INITIALIZE THE CURRENT 'CC' @V5088AA 00881000
  826. BAL R10,ERASINIT 00882000
  827. LA R14,ERASDONE PICK UP RETURN ADDRESS @V5088AA 00883000
  828. ST R14,FMTEXIT STOW IT 00884000
  829. B FMTLOOP 00885000
  830. ********************************************************************** 00886000
  831. * * 00887000
  832. * * 00888000
  833. * RECORDING CYLINDERS ARE FORMATTED AT THIS POINT @V5088AA 00889000
  834. * * 00890000
  835. * * 00891000
  836. ********************************************************************** 00892000
  837. ERASDONE L R4,=V(DMKIOEIF) ADD. OF INFOFLAG @VA10241 00893120
  838. TM 0(R4),FULLNOW IS AREA NOW FILLED WITH FRAME @V60B7AA 00893300
  839. * RECORDS? 00893400
  840. BO FMTFINI DON'T CLEAR 'FULL' FLAG IF SO @V5088AA 00894000
  841. TM PARMSAVE,CLR WAS THIS A 'CLEAR' OPERATION? @V5088AA 00895000
  842. BZ CLRIOEES 00896000
  843. L R4,=V(DMKIOEFR) ADDRESS OF FRAME INDICATOR @V5088AA 00897000
  844. MVC 0(1,R4),IOEFRSAV IF THIS IS A 'CLEAR' OPERATION,@V5088AA 00898000
  845. * THEN THERE MAY STILL BE FRAMES @V5088AA 00899000
  846. * ON THE REC. CYLS. RESTORE FRAME @V5088AA 00900000
  847. * INDICATOR TO ITS VALUE AT ENTRY @V5088AA 00901000
  848. * TO 'CLEAR' FUNCTION. @V5088AA 00902000
  849. CLRIOEES EQU * @V5088AA 00903000
  850. L R4,=V(DMKIOEES) PICK UP SWITCH 00904000
  851. MVI 0(R4),X'00' CLEAR CYL FULL INDICATOR 00905000
  852. XC SAVEWRK2(L'SAVEWRK2*2),SAVEWRK2 CLEAR MSG. AREA @VMD0156 00906000
  853. LA R0,L'SAVEWRK2*2 LENGTH OF VARIABLE MSG. TEXT @V5088AA 00907000
  854. LA R1,SAVEWRK2 AND ITS ADDRESS @V305435 00908000
  855. LA R2,553 MESSAGE DMKIOG553I @V305435 00909000
  856. ICM R2,B'0100',=C'I' INFORMATION MESSAGE @V305435 00910000
  857. MVC SAVEWRK2(L'SAVEWRK2*2),VMUSER SHOW WHO CLEARED @V5088AA 00911000
  858. BAL R3,CALLERM WRITE OUT MESSAGE @V305435 00912000
  859. B FMTFINI FINISH UP FORMATTING @V5088AA 00913000
  860. SPACE 3 00914000
  861. SPACE 4 00915000
  862. ERASINIT CALL DMKPGTVG GET A VIRTUAL MEMORY PAGE ADDRESS. 00916000
  863. ********************************************************************** 00917000
  864. * * 00918000
  865. * ADDRESS RETURNED IN REGISTER 1 * 00919000
  866. * * 00920000
  867. ********************************************************************** 00921000
  868. ST R1,IOEVMPAD SAVE IT 00922000
  869. BAL R14,FMTREAD 00923000
  870. ********************************************************************** 00924000
  871. * * 00925000
  872. * REGISTER 2 CONTAINS ADDRESS OF BUFFER ON RETURN FROM READ. * 00926000
  873. * * 00927000
  874. ********************************************************************** 00928000
  875. ST R2,IOEREALA SAVE IT 00929000
  876. USING RECPAG,R2 BASE ADDRESS FOR RECORDING PAGE @V5088AA 00930000
  877. MVC RECCCPD(4),WORKCYL PAGE ONE CCPD 00931000
  878. MVI RECFLAG2,RECPAGFM FLAG CYLINDER FORMATTING 00932000
  879. TM PARMSAVE,CLR CLEAR ONLY ERROR RECORDS? @V5088AA 00933000
  880. BNO ERASFRMS NO, CLEAR ALL RECORDS @V5088AA 00934000
  881. TM RECFLAG1,RECPAGFA REQUEST IS TO CLR ERR. RECS-- @V5088AA 00935000
  882. * ARE FRAMES IN THIS 1ST PAGE? @V5088AA 00936000
  883. BO ERASWRT YES, DON'T DESTROY RECFLAG1 @V5088AA 00937000
  884. ERASFRMS MVI RECFLAG1,X'00' ZIP THE USE FLAGS. EITHER WE ARE @V5088AA 00938000
  885. * CLEARING ALL RECORDS OR THERE @V5088AA 00939000
  886. * WERE NO FRAME RECS. ON CYL ANYWAY@V5088AA 00940000
  887. MVC RECNXT(2),INITFMT AND INITIALIZE THE REST 00941000
  888. ERASWRT BAL R3,FMTWRITE NOW WRITE IT OUT @V5088AA 00942000
  889. MVI WORKPAGE,X'02' POINT TO PAGE TWO 00943000
  890. BAL R14,FMTREAD AND READ IT IN 00944000
  891. TM PARMSAVE,CLEARF CLEARF SPECIFIED? @V5088AA 00945000
  892. BOR R10 YES, START FORMAT WITH 2ND PAGE @V5088AA 00946000
  893. * @V5088AA 00947000
  894. * WE ARE HERE IF 'CLEAR' WAS SPECIFIED. LEAVE ANY FRAME @V5088AA 00948000
  895. * RECORDS ON RECORDING CYLINDERS INTACT. ANY PAGES WHICH @V5088AA 00949000
  896. * CONTAIN FRAME RECORDS WILL NOT CONTAIN ERROR RECORDS-- @V5088AA 00950000
  897. * DMKIOEFR SEES TO THAT. SO FIND 1ST PAGE WHICH DOESN'T @V5088AA 00951000
  898. * CONTAIN FRAME RECORDS AND START FORMAT THERE. @V5088AA 00952000
  899. ERASLOOP TM RECFLAG1,RECPAGFA ANY FRAMES ON THIS 1ST PAGE? @V5088AA 00953000
  900. * (IF NOT, NONE ON RECORDING CYLS.)@V5088AA 00954000
  901. BZR R10 START FORMATTING WITH THIS PAGE @V5088AA 00955000
  902. ICM R0,B'0111',WORKCYL GET CURRENT 'CCP' VALUE @V5088AA 00956000
  903. A R0,F1 INCREMENT 'P' NUMBER @V5088AA 00957000
  904. STC R0,WORKPAGE SAVE IN CURRENT PAGE VALUE @V5088AA 00958000
  905. CLC WORKPAGE(1),MAXPAGE ON LAST PAGE OF A CYLINDER? @V5088AA 00959000
  906. BL ERASRD NO, OK GO READ THIS CURRENT PAGE @V5088AA 00960000
  907. CLC WORKCYL(3),MAXCYL ON LAST PAGE OF LAST CYLINDER?@V5088AA 00961000
  908. BE CYLFULL PUT OUT AREA FULL MESSAGE @V5088AA 00962000
  909. SRL R0,8 ISOLATE 'CC' PART OF ADDRESS @V5088AA 00963000
  910. A R0,F1 INCREMENT TO NEXT CYLINDER @V5088AA 00964000
  911. STH R0,WORKCYL SAVE IN CURRENT 'CC' VALUE @V5088AA 00965000
  912. MVI WORKPAGE,X'01' SET CURRENT 'P' TO 1ST PG. OF CYL@V5088AA 00966000
  913. ERASRD BAL R14,FMTREAD GO READ THIS CURRENT PAGE @V5088AA 00967000
  914. MVC CECYL(3),WORKCYL UPDATE CECYL VALUE TO POINT TO @V5088AA 00968000
  915. * PAST THE FRAME RECORDS @V5088AA 00969000
  916. L R14,=V(DMKIOECE) ADD. OF CECYL @VA10241 00969100
  917. MVC 0(3,R14),CECYL @VA10241 00969200
  918. B ERASLOOP CHECK FOR FRAMES ON THIS PAGE @V5088AA 00970000
  919. DROP R2 @V5088AA 00971000
  920. SPACE 1 00972000
  921. CALLERM ICM R2,B'1000',ERMPARMS PARMS=OPERATOR+ALARM+RETURN @V305435 00973000
  922. ICM R0,B'1110',MODULEID+3 MODULE IDENTIFIER @V305435 00974000
  923. CALL DMKERMSG,AFFINITY CALL MESSAGE WRITTER @V407510 00975000
  924. L R2,IOEREALA RESTORE REAL PAGE ADDRESS @V305435 00976000
  925. L R1,IOEVMPAD RESTORE VIRTUAL PAGE ADDRESS @V305435 00977000
  926. BR R3 RETURN TO LINE CODE @V305435 00978000
  927. SPACE 1 00979000
  928. LIGHTOUT L R4,=V(DMKIOEES) ADDR. OF RECORDING AREA FULL FLG@V5088AA 00980000
  929. MVI 0(R4),X'FF' TURN OFF OBR RECORDING 00981000
  930. B IOEXIT 00982000
  931. EJECT 00983000
  932. DS 0F 01475000
  933. INITFMT DC X'00084000FFFFFFFF' COUNT OF 8 AND PAGE FREE 01476000
  934. FMTEXIT DS 1F 01477000
  935. FINDRET DS 1F 01478000
  936. IOEVMPAD DS 1F 01479000
  937. IOEREALA DS 1F 01480000
  938. CECYL DC H'00' 01481000
  939. CEPAGE DC X'01' 01482000
  940. CECYLTYP DC X'00' 01483000
  941. WORKCYL DC H'00' 01484000
  942. WORKPAGE DC X'01' 01485000
  943. WORKTYP DC X'00' 01486000
  944. SAVE14 DS 1F 01487000
  945. SAVELAST DC F'0' SAVE AREA FOR LAST CCPD-USED TO DETERMINE@VA07861 01487100
  946. * CCPD OF LAST FRAME RECORD 01487150
  947. MAXREC DC H'126' 01488000
  948. MODMODEL DS H 01489000
  949. MODMODID DS H 01490000
  950. ORG MODMODEL 01491000
  951. MO135 DC X'0135',AL2(MODEL135) MODEL NUMBER AND ID FOR 135 01492000
  952. MO138 DC X'0138',AL2(MODEL138) MOD NUMBER AND ID FOR 138 @V386298 01493000
  953. MO145 DC X'0145',AL2(MODEL145) MODEL NUMBER AND ID FOR 145 01494000
  954. MO148 DC X'0148',AL2(MODEL148) MOD NO. AND ID FOR 148 @V386298 01495000
  955. MO155 DC X'0155',AL2(MODEL155) MODEL NUMBER AND ID FOR 155 01496000
  956. MO158 DC X'0158',AL2(MODEL158) MODEL NUMBER AND ID FOR 158 01497000
  957. MO165 DC X'0165',AL2(MODEL165) MODEL NUMBER AND ID FOR 165 01498000
  958. MO168 DC X'0168',AL2(MODEL168) MODEL NUMBER AND ID FOR 168 01499000
  959. MO3031 DC X'3031',AL2(MOD3031) MODEL NO. AND ID FOR 3031 @V5088AA 01500000
  960. MO3032 DC X'3032',AL2(MOD3032) MODEL NO. AND ID FOR 3032 @V5088AA 01501000
  961. MO3033 DC X'3033',AL2(MOD3033) MODEL NO. AND ID FOR 3033 @V5088AA 01502000
  962. MO4331 DC X'4331',AL2(MOD4331) MOD NO AND ID FOR 4331 @V60A6B6 01502200
  963. MO4341 DC X'4341',AL2(MOD4341) MOD NO. AND ID FOR 4341 @V60A6B6 01502300
  964. NOTSUPPD DC H'-1',AL2(NOMODEL) NO MACHINE SUPPORT 01503000
  965. * NOTE: LASTCYL AND PAGE90PC MUST REMAIN CONTIGUOUS @V5088AA 01504000
  966. * AS THEY ARE REFERENCED AS A UNIT @V5088AA 01505000
  967. AREA90PC DS 0X @V5088AA 01506000
  968. LASTCYL DC H'0000' ENDING 'CC' OF RECORDING AREA @V5088AA 01507000
  969. PAGE90PC DC X'00' 01508000
  970. * NOTE: MAXCYL AND MAXPAGE MUST REMAIN CONTIGUOUS AS @V5088AA 01509000
  971. * THEY ARE REFERENCED AS A UNIT @V5088AA 01510000
  972. MAXCYL DC H'0000' ENDING 'CC' OF RECORDING AREA @V5088AA 01511000
  973. MAXPAGE DC X'00' 01512000
  974. PARMSAVE DC X'00' 01513000
  975. TYPEM DC X'00' INDICATE DEPENDENT CHANNEL MODULES 01514000
  976. MVZINST DC X'00' ONLY USE FOR THE MVZ INSTR. 01515000
  977. CONF DC XL17'0' SAVE CHANNEL IDENTIFICATION 01516000
  978. SPACE 2 01517000
  979. ********************************************************************** 01518000
  980. CHAN DC X'F2F5FFF8FFFFFFFFFFFFFAFFFFFFFFFF' 01519000
  981. DC X'F1FFF6FFFFFFFFFFFFFFFFFFFFFFFFFF' 01520000
  982. DC X'F3FFFFF7FFFFFFFFFFFFFFFFFFFFFFFF' 01521000
  983. DC X'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' 01522000
  984. ********************************************************************** 01523000
  985. SPACE 2 01524000
  986. ********************************************************************** 01525000
  987. MOD1658C DC A(DMKSIX60) GET THE ADDRESS OF THE 2860 CHANNEL 01526000
  988. * MODULE 01527000
  989. DC A(DMKSEV70) GET THE ADDRESS OF THE 2870 CHANNEL 01528000
  990. * MODULE 01529000
  991. DC A(DMKEIG80) GET THE ADDRESS OF THE 2880 CHANNEL 01530000
  992. * MODULE 01531000
  993. ********************************************************************** 01532000
  994. * DMKIOHFR 01532200
  995. IOEFRSAV DS XL1 SAVE AREA FOR DMKIOEFR VALUE @V5088AA 01536000
  996. INFOFLAG DC X'00' AREA FILLED WITH FRAME RECORDS @V5088AA 01537000
  997. FULLNOW EQU X'80' INDICATES AREA FILLED WITH FRAMES@V5088AA 01538000
  998. INITYES EQU X'02' INITIALIZE FRAME RECORDS @V5088AA 01540000
  999. CLR EQU X'01' 'CLEAR' SPECIFIED @V5088AA 01541000
  1000. CLEARF EQU X'02' 'CLEARF' SPECIFIED @V5088AA 01542000
  1001. NOFRAMES EQU X'00' NO FRAME RECS. ON RECORDING CYLS @V5088AA 01543000
  1002. YESFRAME EQU X'20' FRAME RECORDS ARE ON REC. CYLS @V5088AA 01544000
  1003. ERMPARMS DC X'B0' PARMS= OPERATOR+ALARM+RETURN @V305435 01545000
  1004. MAX2314 EQU X'21' 01546000
  1005. MAX2305 EQU X'19' 01547000
  1006. MAX3330 EQU X'3A' 01548000
  1007. MAX3350 EQU X'79' 3350 MAX PAGES (PLUS 1) = 121 @V304498 01549000
  1008. MAX3375 EQU X'61' 3375 max pages (plus 1) = 97 HRC106DK 01549100
  1009. MAX3380 EQU X'97' 3380 max pages (plus 1) = 151 HRC106DK 01549200
  1010. NIN2314 EQU X'1C' 01550000
  1011. NIN2305 EQU X'15' 01551000
  1012. NIN3330 EQU X'33' 01552000
  1013. SPACE 1 01577000
  1014. LTORG 01578000
  1015. EJECT 01579000
  1016. COPY MCHAREA 01580000
  1017. COPY EQU 01581000
  1018. COPY RBLOKS 01582000
  1019. PSA 01583000
  1020. COPY SAVE 01584000
  1021. COPY IOBLOKS @V306638 01585000
  1022. COPY VMBLOK 01586000
  1023. COPY DEVTYPES 01587000
  1024. COPY IOER 01588000
  1025. COPY RECPAG 01589000
  1026. END 01622000