Table of Contents

DMKIOE Source

References

Source Listing

DMKIOE.ASSEMBLE.txt
  1. IOE TITLE 'DMKIOE (CP) VM/370 - RELEASE 6' 00001000
  2. ******************************************************************* 00002000
  3. * 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKIOE 00006000
  7. * 00007000
  8. * CONTENTS - 00008000
  9. * 00009000
  10. * DMKIOERR - FORMAT UNIT CHECKS AND CHANNEL ERRORS 00010000
  11. * DMKIOESD - FORMAT HARDWARE ENVIRONMENTAL COUNTERS 00011000
  12. * DMKIOERN - FORMAT 3270 REMOTE AND 3705 STATION ERRORS 00012000
  13. * DMKIOEVR - HANDLE SVC 76 REQUEST FROM THE VIRTUAL MACHINE 00013000
  14. * DMKIOECC - HANDLE CHANNEL CHECK RECORDS PASS FROM CCH HANDLER 00014000
  15. * DMKIOEMC - HANDLE MACHINE CHECK RECORDS PASS FROM MCH HANDLER 00015000
  16. * DMKIOEFM - CLEAR AND FORMAT THE RECORDING CYLINDERS 00016000
  17. * DMKIOEFL - FORMAT PAGES ON THE RECORDING CYLINDERS 00017000
  18. * DMKIOESR - HANDLE OBR RECORD REQUESTS SYNCHRONOUSLY 00018000
  19. * DMKIOEST - TO CAUSE THE UPDATE OF STATISTICAL COUNTERS 00019000
  20. * 00020000
  21. * FUNCTION - 00021000
  22. * 00022000
  23. * THIS MODULE WILL BUILD AN ERRBLOK TO PASS TO THE PAGEABLE 00023000
  24. * RECORDER. THE ERRBLOK WILL CONTAIN THE INFORMATION NEEDED 00024000
  25. * BY THE PAGEABLE RECORDER TO BUILD AND FORMAT THE OBR/MDR 00025000
  26. * RECORD. CONTROL WILL BE PASSED TO THE PAGEABLE RECORDER IF 00026000
  27. * RECORDING IS NOT IN PROGRESS. IF A PREVIOUS REQUEST FOR ERROR 00027000
  28. * RECORDING IS IN PROGRESS, THE CURRENT REQUEST IS QUED ON 00028000
  29. * THE APPROPRIATE QUE, FOR RECORDING AT A LATER TIME. 00029000
  30. * THE MODULE ALSO INITIALIZES AND FORMAT THE ERROR RECORDING 00030000
  31. * CYLINDERS. 00031000
  32. * 00032000
  33. SPACE 2 00033000
  34. DMKIOE CSECT @VA03358 00034000
  35. SPACE 1 00035000
  36. ENTRY DMKIOENQ,DMKIOEVQ,DMKIOERR,DMKIOEIR @VA03358 00036000
  37. ENTRY DMKIOEMQ,DMKIOECQ,DMKIOERQ,DMKIOEIQ @VA03358 00037000
  38. ENTRY DMKIOEES,DMKIOERP,DMKIOEMX @V5088AA 00038000
  39. ENTRY DMKIOESQ,DMKIOENI,DMKIOETY @V5088AA 00039000
  40. ENTRY DMKIOEHS,DMKIOEFR,DMKIOEEP,DMKIOECT @V5088AA 00040000
  41. ENTRY DMKIOECE,DMKIOEIF @VA10241 00040100
  42. EXTRN DMKIOFOB,DMKIOFVR,DMKIOFM1,DMKIOFIN @VA03358 00041000
  43. EXTRN DMKIOFC1,DMKCCHRT,DMKCFMBK,DMKCFPRR @VA03358 00042000
  44. EXTRN DMKDSPCH,DMKSTKCP,DMKIOGF1,DMKIOGF2 @VA03358 00043000
  45. EXTRN DMKSYSTZ,DMKIOFST @VA03757 00044000
  46. EXTRN DMKCVTAB @VA04301 00045000
  47. SPACE 2 00046000
  48. USING VMBLOK,R11 SETUP ADDRESSABILITY FOR VMBLOK @VA03358 00047000
  49. USING IOBLOK,R10 SETUP ADDRESSABILITY FOR IOBLOK @VA03358 00048000
  50. USING IOERBLOK,R4 SETUP ADDRESSABILITY FOR IOERBLOK@VA03358 00049000
  51. USING RDEVBLOK,R8 SETUP ADDRESSABILITY FOR RDEVBLOK@VA03358 00050000
  52. USING SAVEAREA,R13 SETUP ADDRESSABILITY FOR SAVEAREA@VA03358 00051000
  53. USING PSA,R0 SETUP ADDRESSABILITY FOR LOWCORE @VA03358 00052000
  54. EJECT 00053000
  55. ********************************************************************** 00054000
  56. * 00055000
  57. * SUBROUTINE NAME - 00056000
  58. * 00057000
  59. * DMKIOERR 00058000
  60. * 00059000
  61. * FUNCTION - 00060000
  62. * 00061000
  63. * BUILD AN ERRBLOK AND GIVE CONTROL TO THE RECORDER FOR 00062000
  64. * RECORDING OUTBOARD (OBR), INBOARD (CCH) AND MISCELLANEOUS 00063000
  65. * DATA (MDR) RECORDS. RECORDING IS HANDLED ASYNCHRONOUS TO 00064000
  66. * ERROR CONDITION. 00065000
  67. * 00066000
  68. * ATTRIBUTES - 00067000
  69. * 00068000
  70. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 00069000
  71. * 00070000
  72. * ENTRY CONDITIONS - 00071000
  73. * 00072000
  74. * GR 8 = ADDRESS OF RDEVBLOK 00073000
  75. * GR 10 = ADDRESS OF IOBLOK 00074000
  76. * GR 11 = ADDRESS OF VMBLOK 00075000
  77. * GR 12 = ADDRESS OF DMKIOERR 00076000
  78. * GR 13 = ADDRESS OF SAVE AREA 00077000
  79. * 00078000
  80. * EXIT CONDITIONS - 00079000
  81. * 00080000
  82. * IF NO RECORDING IS IN PROGRESS, ACTIVATE RECORDER AND 00081000
  83. * RETURN TO CALLER. IF RECORDING IS IN PROGRESS, QUE REQUEST 00082000
  84. * AND RETURN TO CALLER. 00083000
  85. * 00084000
  86. * REGISTER CONTENTS 00085000
  87. * GR 6 = ADDRESS OF OBR/MDR/CCH RECORD 00086000
  88. * GR 7 = SIZE OF RECORD IN DOUBLEWORDS 00087000
  89. * 00088000
  90. * CALL TO OTHER ROUTINES - 00089000
  91. * 00090000
  92. * DMKFREE - TO ALLOCATE FREE STORAGE FOR RECORD 00091000
  93. * DMKFRET - TO RETURN ALLOCATED STORAGE FOR RECORD/IOERBLOK 00092000
  94. * DMKQCNWT - WRITE ERROR MESSAGE TO OPERATOR FOR CHANNEL ERROR 00093000
  95. * DMKCCHRT - ISSUE ERROR MESSAGE FOR CHANNEL ERROR 00094000
  96. * DMKCFPRR - RESET THE VIRTUAL MACHINE ON CHANNEL ERROR 00095000
  97. * DMKCFMBK - PUT THE VIRTUAL MACHINE IN CONSOLE FUNCTION 00096000
  98. * DMKDSPCH - EXIT TO DISPATCHER AFTER RETURNING FROM RECORDER 00097000
  99. * DMKSTKCP - STACK CPEXBLOK TO ACTIVATE RECORDER 00098000
  100. * DMKIOFOB - GO RECORD OBR/MDR RECORDS 00099000
  101. * DMKIOFC1 - GO RECORD CCH RECORD 00100000
  102. * 00101000
  103. * EXTERNAL REFERENCES - 00102000
  104. * 00103000
  105. * DMKSYSTZ - GET ADDRESS OF GMT DIFFERENCE 00104000
  106. * DMKIOERP - RECORDING IN PROGRESS FLAG 00105000
  107. * DMKIOEMX - NUMBER OF PAGES (MAXIMUM) ON A CYLINDER 00106000
  108. * DMKIOEES - OBR/MDR RECORD CYLINDER FULL FLAG 00107000
  109. * DMKIOEMS - MCH/CCH RECORD CYLINDER FULL FLAG 00108000
  110. * 00109000
  111. * TABLES /WORK AREAS - 00110000
  112. * 00111000
  113. * DMKIOEIQ FIELD IS USED TO QUE OBR/MDR RECORD REQUESTS. 00112000
  114. * DMKIOESQ FIELD IS USED TO QUE UPDATE REQUESTS. 00113000
  115. * DMKIOECQ IS USED TO QUE CCH RECORDS. 00114000
  116. * BITABL - THE MASK TABLE IS USE FOR INTENSIVE RECORDING. 00115000
  117. * 00116000
  118. * NOTES - 00117000
  119. * 00118000
  120. * THE ONLY TIME THIS SUBROUTINE GETS CONTROL IS WHEN 00119000
  121. * A UNIT CHECK OR CHANNEL ERROR HAS OCCURRED. THE FOLLOWING 00120000
  122. * MODULES GIVE CONTROL TO THIS SUBROUTINE: 00121000
  123. * 00122000
  124. * DMKIOS - ON A UNIT CHECK OR CHANNEL ERROR 00123000
  125. * DMKCNS - WHEN AN I/O ERROR OCCURS AT A TERMINAL 00124000
  126. * DMKGRF - WHEN AN I/O ERROR OCCURS AT A GRAPHIC DEVICE 00125000
  127. * 00126000
  128. * REGISTER USAGE - 00127000
  129. * 00128000
  130. * GR14,15 LINKAGE REGISTERS 00129000
  131. * GR12 = MODULE BASE REGISTER 00130000
  132. * GR11 = VMBLOK ADDRESSABILITY 00131000
  133. * GR10 = IOBLOK ADDRESSABILITY 00132000
  134. * GR 9 = WORK REGISTER 00133000
  135. * GR 8 = RDEVBLOK ADDRESSABILITY 00134000
  136. * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00135000
  137. * GR 6 = ADDRESS OF THE RECORD 00136000
  138. * GR 5 = SUBROUTINE BAL REGISTER 00137000
  139. * GR 4 = IOERBLOK ADDRESSABILITY 00138000
  140. * GR0-3= WORK REGISTERS 00139000
  141. * 00140000
  142. * OPERATION - 00141000
  143. * 00142000
  144. * I. BUILD AN ERRBLOK FOR THE ERROR CONDITION 00143000
  145. * 00144000
  146. * 1. IF THE IOERBLOK ADDRESS DOESN'T EXIST, RETURN 00145000
  147. * TO CALLER. 00146000
  148. * 00147000
  149. * 2. IF A CHANNEL ERROR IS INDICATED IN THE CSW, DO 00148000
  150. * THE FOLLOWING: 00149000
  151. * 00150000
  152. * . WRITE A CHANNEL ERROR MESSAGE TO THE OPERATOR 00151000
  153. * (DMKCCH604I) AND RELEASE THE IOERBLOK. 00152000
  154. * . IF THIS IS AN UNCORRECTABLE CHANNEL ERROR, WRITE 00153000
  155. * A PERMANENT ERROR MSG. TO THE OPERATOR (DMKCCH606I) 00154000
  156. * AND RESET THE VIRTUAL MACHINE BEFORE GOING TO THE 00155000
  157. * RECORDER. 00156000
  158. * . PUT THE DATE AND TIME IN THE CCH RECORD. 00157000
  159. * . ANALYSE THE MCH/CCH CYLINDER AND THE RECORDING 00158000
  160. * IN PROGRESS FLAG. 00159000
  161. * 00160000
  162. * * IF CYLINDER IS FULL OR NOT INITIALIZED, 00161000
  163. * RELEASE THE CCH RECORD AND RETURN TO 00162000
  164. * CALLER WITH A NON-ZERO RETURN CODE. 00163000
  165. * * IF RECORDING IS IN PROGRESS, QUE CCH 00164000
  166. * REQUEST AND RETURN TO CALLER. 00165000
  167. * * IF RECORDING IS NOT IN PROGRESS, CALL 00166000
  168. * THE RECORDER (DMKIOFC1) AND RECORD 00167000
  169. * CCH RECORD. 00168000
  170. * 00169000
  171. * 3. DETERMINE IF INTENSIVE RECORDING IS ACTIVATED FOR A 00170000
  172. * CLASS 'F' USER. 00171000
  173. * 00172000
  174. * 4. IF THIS IS NOT A CP OR DIAGNOSE GENERATED REQUEST, 00173000
  175. * RETURN TO CALLER. 00174000
  176. * 00175000
  177. * 5. DETERMINE IF ENVIRONMENTAL DATA IS PRESENT 00176000
  178. * IN THE SENSE DATA FOR A DASD DEVICE. IF PRESENT, 00177000
  179. * BUILD AND FORMAT A MISCELLANEOUS DATA RECORD (MDR) 00178000
  180. * FOR THE DASD'S HARDWARE COUNTERS BEFORE GOING TO 00179000
  181. * STEP 8. 00180000
  182. * 00181000
  183. * 6. IF THIS IS NOT A PERMANENT I/O ERROR, RELEASE THE 00182000
  184. * IOERBLOK AND RETURN TO THE CALLER. 00183000
  185. * 00184000
  186. * 7. BUILD AND FORMAT OUTBOARD RECORD (OBR) FOR UNIT 00185000
  187. * CHECK CONDITION. 00186000
  188. * 00187000
  189. * 8. RELEASE THE IOERBLOK AND SETUP THE INTERFACE TO 00188000
  190. * THE RECORDER. 00189000
  191. * 00190000
  192. * 9. ANALYSE THE ERROR RECORDING CYLINDERS AND 00191000
  193. * THE RECORDING IN PROGRESS FLAG. 00192000
  194. * 00193000
  195. * . IF THE CYLINDERS ARE FULL OR NOT INITIALIZED, 00194000
  196. * RELEASE THE OBR/MDR RECORD AND RETURN TO CALLER. 00195000
  197. * . IF RECORDING IS IN PROGRESS, QUE REQUEST AND 00196000
  198. * RETURN TO CALLER. 00197000
  199. * . IF RECORDING IS NOT IN PROGRESS, QUE CPEXBLOK TO 00198000
  200. * ACTIVATE RECORDER AND RETURN TO CALLER. 00199000
  201. * 00200000
  202. * ERROR MESSAGES - NONE 00201000
  203. * 00202000
  204. ********************************************************************** 00203000
  205. COPY OPTIONS @V407510 00204000
  206. EJECT 00205000
  207. DMKIOERR EQU * HANDLE ASYNCHRONOUS RECORDING @VA03358 00206000
  208. USING *,R12 SETUP ADDRESSABILITY @VA03358 00207000
  209. STM R0,R11,SAVEREGS SAVE CALLER'S REGISTERS @VA03358 00208000
  210. ICM R4,15,IOBIOER GET IOERBLOK POINTER FROM IOBLOK @VA03358 00209000
  211. BZ COMEXIT IF ZERO, RETURN TO CALLER @VA03358 00210000
  212. TM IOERCSW+5,CDC+CCC+IFCC IS THIS A CHANNEL ERROR @VA03358 00211000
  213. BNZ CCHIOENT YES, GO TO CHANNEL ERROR SECTION @VA03358 00212000
  214. BAL R5,INTREC CHECK INTENSIVE RECORDING FLAG @VA03358 00213000
  215. TM IOERFLG2,IOERCEMD HAS ERROR BEEN RECORDED @VA03358 00214000
  216. BO NREXIT YES, GO FRET IOERBLOK AND EXIT @VA03358 00215000
  217. TM IOERDATA+1,X'04' FILE PROTECT ERROR? @VA14795 00215100
  218. BO NREXIT DO NOT RECORD, GO FRET IOERBLOK @VA14795 00215400
  219. * AND EXIT 00215700
  220. TM IOBFLAG,IOBCP CP I/O ? @VA03186 00216000
  221. BNZ OBRDAS OK..CONTINUE... @VA03186 00217000
  222. TM IOBFLAG,IOBHVC DIAGNOSED I/O ? @VA03186 00218000
  223. BZ COMEXIT NO..SHOULDN'T BE HERE.. @VA03186 00219000
  224. TM IOERCSW+4,UC UNIT CHECK ? @VA03186 00220000
  225. BZ COMEXIT NO..SKIP ERROR RECORDING @VA03186 00221000
  226. OBRDAS EQU * @VA03186 00222000
  227. BAL R5,DASDSEN CHECK DASD SENSE INFORMATION @VA03358 00223000
  228. TM IOBSTAT,IOBFATAL IS THIS A PERMANENT I/O ERROR @VA03358 00224000
  229. BO OBRRECD YES, NEED TO BUILD ERRBLOK @VA03757 00225000
  230. BAL R5,CKTEMP GO CHECK DASD TEMPORARY ERRORS @VA03757 00226000
  231. OBRRECD EQU * BUILD ERRBLOK FOR OBR PROCESSING @VA03757 00227000
  232. BAL R5,ERRBLD BUILD ERRBLOK RECORD @VA03757 00228000
  233. OBRSECT EQU * ANALYZE ERROR RECORDING CYLS @V5088AA 00229000
  234. LR R6,R1 GET ADDRESS OF OBR RECORD @VA03358 00230000
  235. LR R7,R0 LENGTH OF RECORD IN DOUBLEWORDS @VA03358 00231000
  236. BAL R5,FRETIOER RELEASE IOERBLOK FOR CP REQUEST @VA03358 00232000
  237. OBRANAL EQU * SET UP TO RECORD OBR/MDR RECORD @VA03358 00233000
  238. BAL R5,ANALRECD ANALYZE ERROR RECORDING CYLS @V5088AA 00234000
  239. B FRETRECD RELEASE THE OBR RECORD SPACE @VA03358 00235000
  240. B QUEOBR QUE OBR OFF RECORDING QUE @VA03358 00236000
  241. * NO RECORDING IS IN PROGESS 00237000
  242. LA R4,IOFR1 SET UP RETURN ADDR FOR CPEXBLOK @VA03358 00238000
  243. BAL R5,STKCPEX STACK CPEXBLOK OFF CPEXBLOK QUE @VA03358 00239000
  244. SPACE 1 00240000
  245. IOFR1 EQU * RETURN HERE WHEN CPEX IS UNSTACK @VA03358 00241000
  246. CALL DMKIOFOB GO RECORD OBR/MDR RECORDS @VA03358 00242000
  247. GOTO DMKDSPCH GO TO THE DISPATCHER @VA03358 00243000
  248. SPACE 1 00244000
  249. QUEOBR EQU * QUE OBR RECORD OFF RECORDING QUE @VA03358 00245000
  250. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03358 00246000
  251. LA R3,DMKIOEIQ GET POINTER TO OBR/MDR QUE @VA03358 00247000
  252. LA R5,COMEXIT RETURN TO CALLER @VA03358 00248000
  253. BAL R4,QUECPEX STACK REQUEST OFF RECORDING QUE @VA03358 00249000
  254. SPACE 4 00250000
  255. * SUBROUTINE TO DETERMINE WHETHER OR NOT ENVIRONMENTAL DATA 00251000
  256. * IS INDICATED IN THE SENSE BYTE FOR DASD ERROR. 00252000
  257. SPACE 1 00253000
  258. DASDSEN EQU * ANALYSE SENSE INFORM. FOR DASD @VA03358 00254000
  259. CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE CLASS @VA03358 00255000
  260. BNER R5 NO, RETURN TO IN LINE CODE @VA03358 00256000
  261. TM RDEVTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC011DK 00257590
  262. * DASD TYP 3330, 3340, 3350 OR 3380 ? HRC011DK 00258180
  263. BZ DASD2305 NO, CHECK FOR 2305 DEVICE @VA03358 00259000
  264. TM IOERDATA+2,X'10' IS ENVIRONMENTAL DATA PRESENT @VA03358 00260000
  265. BNO NODATA RETURN TO INLINE CODE @VA10527 00260100
  266. TM IOERDATA+7,X'60' IS THIS A FORMAT 6 RECORD? @VA10527 00260200
  267. BO MDRRECD YES, GO BUILD MDR RECORD @VA03358 00261000
  268. NODATA BR R5 RETURN TO INLINE CODE @VA10527 00262000
  269. DASD2305 EQU * ANALYSE SENSE INFORM. FOR 2305 @VA03358 00263000
  270. CLI RDEVTYPE,TYP2305 IS THIS A 2305 DEVICE TYPE @VA03358 00264000
  271. BNER R5 NO, RETURN TO IN LINE CODE @VA03358 00265000
  272. *********************************************************************** 00266100
  273. * DMKDAS WILL ALLOW US TO COME HERE WITH TWO IOERBLOKS.. THE FIRST ONE 00266150
  274. * HAS THE BUFFER OVERFLOW SENSE DATA IN IT AND THE SECOND ONE WILL HAVE 00266200
  275. * THE UNLOADED BUFFER DATA. SO WE WANT TO SKIP THE FIRST AND FOOL WITH 00266250
  276. * THE SECOND ONE. DMKDSB AT SHUTDOWN ALSO DOES UNLOADS BUT IT COMES 00266300
  277. * HERE WITH ONLY THE IOERBLOK WITH THE UNLOADED BUFFER. ONLY WAY T'KEEP 00266350
  278. * THEM STRAIGHT IS TO CHECK THE IOERBLOK WE GOT NOW AND SEE IF SENSE 00266400
  279. * DATA FOR THE OVERFLOW UNIT CHECK EXISTS IF SO GET THE CHAINED IOERBLK 00266450
  280. * THE BUFFERED DATA WILL START AT IOERDATA AND THE FIRST BYTE OF EACH 00266500
  281. * DOUBLE WORD OF INFO IS THE CONTROL BYTE AND WONT BE ZERO IF WE CAME 00266550
  282. * FROM THE UNIT CHECK THOUGH DMKDAS, BUT IF WE COME FROM DMKDSB 00266600
  283. * NEAR ALL OF THE BUFFER COULD BE ZERO (I.E. BUFFER EMPTY)...BUT THEN 00266650
  284. * IOERDATA + 2 WONT HAVE THE 80 IN IT EITHER SO WE SHOULD BE ALL SET 00266700
  285. *********************************************************************** 00266750
  286. CLC IOERDATA-IOERBLOK(3,R4),=X'000080' IS THIS THE @VA09736 00266800
  287. BNER R5 IOERBLOK FOR THE BUFF FULL? NO CONTINUE... @VA09736 00266850
  288. ICM R4,15,IOERPNT-IOERBLOK(R4) IF SO GET THE NEXT @VA09736 00266900
  289. BNZ MDRRECD IF THERE ISNT ONE... WE GOT JUNK-A-HO @VA09736 00266950
  290. L R4,IOBIOER IF THERE IS ONE ITS THE ONE WE @VA09736 00267000
  291. BR R5 WANT TO LOG OUT.. IT HAS THE BUFFER @VA09736 00267050
  292. MDRRECD EQU * FORMAT MISCELLANEOUS DATA RECORD @VA03358 00268000
  293. BAL R5,MDRBLD GO BUILD ERRBLOK RECORD @VA03757 00269000
  294. BAL R5,OBRSECT GO TO OBR RECORD SECTION @VA03358 00270000
  295. SPACE 2 00271000
  296. * SUBROUTINE TO DETERMINE IF A TEMPORARY OBR RECORD IS TO 00272000
  297. * BE CREATED FOR SELECTED TEMPORARY DASD ERRORS ..... 00273000
  298. SPACE 00274000
  299. CKTEMP EQU * TEST SPECIFIED TEMPORARY ERRORS @VA03757 00275000
  300. CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE ??? @VA03757 00276000
  301. BNE NREXIT NO, GO FRET IOERBLOK AND EXIT. @VA03757 00277000
  302. TM RDEVFTR,FTREXTSN EXTENED SENSE TYPE DASD ?? @VA03757 00278000
  303. BZ NREXIT NO, GO FRET IOERBLOK AND EXIT @VA03757 00279000
  304. TM IOERDATA,X'3D' TEMPORARY ERROR TO BE LOGGED ?? @VA03757 00280000
  305. BZ NREXIT NO, GO FRET IOERBLOK AND EXIT @VA03757 00281000
  306. TM IOERDATA,X'08' LOOK CLOSER, IS IT A DATA CHECK ?@VA03757 00282000
  307. BZR R5 NO, GO SET UP FOR TEMPORARY ERROR@VA03757 00283000
  308. TM IOERDATA+2,X'40' IS ERROR CORRECTABLE? @VA13854 00283025
  309. BZ NREXIT NOT RIGHT TYPE OF ERROR-EXIT @VA13854 00283050
  310. CLI RDEVTYPE,TYP2305 IS THIS A 2305 @VA12432 00283100
  311. BER R5 YES-RECORD TEMPORARY ERRORS @VA12432 00283200
  312. CLI RDEVTYPE,TYP3340 IS THIS A 3340 ?? @VA03757 00284000
  313. BER R5 YES, SET UP FOR TEMP ERROR RECORD@VA03757 00285000
  314. CLI RDEVTYPE,TYP3350 IS THIS A 3350 @VA11958 00287100
  315. BER R5 YES-RECORD TEMPORARY ERRORS @VA11958 00287200
  316. CLI RDEVTYPE,TYP3380 IS THIS A 3380 HRC011DK 00288100
  317. BER R5 YES-RECORD TEMPORARY ERRORS HRC011DK 00289000
  318. B NREXIT DON'T RECORD TEMP DATA CHECK @VA13854 00290100
  319. EJECT 00291000
  320. ********************************************************************** 00292000
  321. * 00293000
  322. * SUBROUTINE NAME - 00294000
  323. * 00295000
  324. * DMKIOESD 00296000
  325. * 00297000
  326. * FUNCTION - 00298000
  327. * 00299000
  328. * BUILD, FORMAT AND GIVE CONTROL TO THE RECORDER FOR RECORDING 00300000
  329. * MISCELLANEOUS DATA RECORD (MDR) FOR HARDWARE COUNTERS. 00301000
  330. * RECORDING IS HANDLE SYNCHRONOUS FOR HARDWARE STATISTICAL 00302000
  331. * COUNTERS. 00303000
  332. * 00304000
  333. * ATTRIBUTES - 00305000
  334. * 00306000
  335. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 00307000
  336. * 00308000
  337. * ENTRY CONDITIONS - 00309000
  338. * 00310000
  339. * GR 8 = ADDRESS OF RDEVBLOK 00311000
  340. * GR 10 = ADDRESS OF IOBLOK 00312000
  341. * GR 11 = ADDRESS OF VMBLOK 00313000
  342. * GR 12 = ADDRESS OF DMKIOESD 00314000
  343. * GR 13 = ADDRESS OF SAVE AREA 00315000
  344. * 00316000
  345. * EXIT CONDITIONS - 00317000
  346. * 00318000
  347. * IF NO RECORDING IS IN PROGRESS, GIVE CONTROL TO THE RECORDER 00319000
  348. * AND RETURN TO THE CALLER UPON COMPLETION. IF RECORDING IS IN 00320000
  349. * PROGRESS, QUE RECORDING REQUEST AND EXIT TO DISPATCHER UNTIL 00321000
  350. * RECORD IS RECORDED. 00322000
  351. * 00323000
  352. * REGISTER CONTENTS 00324000
  353. * GR 6 = ADDRESS OF MDR RECORD 00325000
  354. * GR 7 = SIZE OF RECORD IN DOUBLEWORDS 00326000
  355. * 00327000
  356. * CALL TO OTHER ROUTINES - 00328000
  357. * 00329000
  358. * DMKFREE - TO ALLOCATE FREE STORAGE FOR RECORD 00330000
  359. * DMKFRET - TO RETURN ALLOCATED STORAGE FOR RECORD/IOERBLOK 00331000
  360. * DMKDSPCH - EXIT TO DISPATCHER IF RECORDING IS ACTIVE 00332000
  361. * DMKSTKCP - STACK CPEXBLOK FOR RECORDER 00333000
  362. * DMKIOFOB - GO RECORD MDR RECORDS 00334000
  363. * 00335000
  364. * EXTERNAL REFERENCES - 00336000
  365. * 00337000
  366. * DMKSYSTZ - GET ADDRESS OF GMT DIFFERENCE 00338000
  367. * DMKIOERP - RECORDING IN PROGRESS FLAG 00339000
  368. * DMKIOEMX - NUMBER OF PAGES (MAXIMUM) ON A CYLINDER 00340000
  369. * DMKIOEES - OBR/MDR RECORD CYLINDER FULL FLAG 00341000
  370. * 00342000
  371. * TABLES /WORK AREAS - 00343000
  372. * 00344000
  373. * DMKIOENQ FIELD IS USED TO QUE MDR RECORDS. 00345000
  374. * 00346000
  375. * NOTES - 00347000
  376. * 00348000
  377. * THE ONLY TIME THIS SUBROUTINE GETS CONTROL IS WHEN THE 00349000
  378. * SHUTDOWN COMMAND IS ISSUED OR WHEN A BUFFER LOGGED DEVICE 00350000
  379. * IS BEING MOUNTED OR DEMOUNTED OR WHEN A BUFFER LOGGED 00351000
  380. * DEVICE GETS THE ERROR LOG FULL CONDITION. 00352000
  381. * THE FOLLOWING MODULES GIVE CONTROL TO THIS ROUTINE: 00353000
  382. * 00354000
  383. * DMKDAS - WHEN THE BUFFER LOG IS UNLOADED FROM THE DEVICE 00355000
  384. * DMKRSE - WHEN THE BUFFER LOG IS UNLOADED FROM A 3800 00356000
  385. * 00357000
  386. * REGISTER USAGE - 00358000
  387. * 00359000
  388. * GR14,15 LINKAGE REGISTERS 00360000
  389. * GR12 = MODULE BASE REGISTER 00361000
  390. * GR11 = VMBLOK ADDRESSABILITY 00362000
  391. * GR10 = IOBLOK ADDRESSABILITY 00363000
  392. * GR 9 = WORK REGISTER 00364000
  393. * GR 8 = RDEVBLOK ADDRESSABILITY 00365000
  394. * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00366000
  395. * GR 6 = ADDRESS OF THE RECORD 00367000
  396. * GR 5 = SUBROUTINE BAL REGISTER 00368000
  397. * GR 4 = IOERBLOK ADDRESSABILITY 00369000
  398. * GR0-3= WORK REGISTERS 00370000
  399. * 00371000
  400. * OPERATION - 00372000
  401. * 00373000
  402. * I. BUILD AND FORMAT A MISCELLANEOUS DATA RECORD FOR COUNTERS 00374000
  403. * 00375000
  404. * 1. IF THE IOERBLOK ADDRESS DOESN'T EXIST, RETURN 00376000
  405. * TO CALLER. 00377000
  406. * 00378000
  407. * 2. BUILD AND FORMAT A MISCELLANEOUS DATA RECORD (MDR) 00379000
  408. * FOR THE DASD'S HARDWARE COUNTERS. 00380000
  409. * 00381000
  410. * 3. RELEASE THE IOERBLOK AND SETUP INTERFACE TO 00382000
  411. * THE RECORDER. 00383000
  412. * 00384000
  413. * 4. ANALYSE THE OBR/MDR RECORDING CYLINDER AND 00385000
  414. * THE RECORDING IN PROGRESS FLAG. 00386000
  415. * 00387000
  416. * . IF THE CYLINDER IS FULL OR NOT INITIALIZED, RELEASE 00388000
  417. * THE OBR/MDR RECORD AND RETURN TO CALLER. 00389000
  418. * . IF RECORDING IS IN PROGRESS, QUE REQUEST AND 00390000
  419. * EXIT TO THE DISPATCHER UNTIL THE RECORDER STACKS 00391000
  420. * THE CPEXBLOK FOR THIS REQUEST. 00392000
  421. * . IF RECORDING IS NOT IN PROGRESS, GIVE CONTROL 00393000
  422. * TO THE RECORDER TO RECORD THE MDR RECORD. 00394000
  423. * 00395000
  424. ********************************************************************** 00396000
  425. EJECT 00397000
  426. DMKIOESD RELOC HANDLE SYNCHRONOUS RECORDING @VA03358 00398000
  427. ICM R4,15,IOBIOER GET POINTER TO IOERBLOK @VA03358 00399000
  428. BNP COMEXIT IF ZERO, RETURN TO CALLER @VA03358 00400000
  429. BAL R5,MDRBLD GO BUILD ERRBLOK RECORD @VA03757 00401000
  430. LR R6,R1 GET ADDRESS OF MDR RECORD @VA03358 00402000
  431. LR R7,R0 LENGTH OF RECORD IN DOUBLEWORDS @VA03358 00403000
  432. BAL R5,FRETIOER RELEASE IOERBLOK FOR CP GENERATED@VA03358 00404000
  433. BAL R5,ANALRECD ANALYZE THE ERROR RECORDING CYLS @V5088AA 00405000
  434. B FRETRECD RELEASE THE MDR RECORD SPACE @VA03358 00406000
  435. B QUEMDR QUE MDR RECORD OFF RECORDING QUE @VA03358 00407000
  436. * NO RECORDING IS IN PROGRESS 00408000
  437. IOFE1 EQU * SET UP TO CALL RECORDER FOR MDR @VA03358 00409000
  438. CALL DMKIOFOB GO RECORD MDR RECORDS @VA03358 00410000
  439. BAL R5,COMEXIT RETURN TO CALLER @VA03358 00411000
  440. SPACE 1 00412000
  441. QUEMDR EQU * QUE MDR RECORD OFF RECORDING QUE @VA03358 00413000
  442. LA R4,IOFE1 SET UP RETURN ADDR FOR CPEXBLOK @VA03358 00414000
  443. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03358 00415000
  444. LA R3,DMKIOENQ GET POINTER TO MDR QUE @VA03358 00416000
  445. LA R5,DISPTH RETURN TO THE DISPATCHER @VA03358 00417000
  446. BAL R4,QUECPEX STACK REQUEST OFF RECORDING QUE @VA03358 00418000
  447. EJECT 00419000
  448. ********************************************************************** 00420000
  449. * 00421000
  450. * SUBROUTINE NAME - 00422000
  451. * 00423000
  452. * DMKIOESR 00424000
  453. * 00425000
  454. * FUNCTION - 00426000
  455. * 00427000
  456. * BUILD ERRBLOK AND GIVE CONTROL TO THE RECORDER TO BUILD AND 00428000
  457. * FORMAT OUTBOARD RECORDS. THE OBR RECORD WILL BE WRITTEN 00429000
  458. * SYNCHRONOUSLY... 00430000
  459. * 00431000
  460. * ATTRIBUTES _ 00432000
  461. * 00433000
  462. * SERIALLY REUSABLE, RESIDENT, ENTERED VIA SVC 00434000
  463. * 00435000
  464. * ENTRY CONDITIONS _ 00436000
  465. * 00437000
  466. * GR 8 = ADDRESS OF RDEVBLOK 00438000
  467. * 00439000
  468. * EXIT CONDITIONS - 00440000
  469. * 00441000
  470. * IF NO RECORDING IS IN PROGRESS, GIVE CONTROL TO THE RECORDER 00442000
  471. * AND RETURN TO THE CALLER UPON COMPLETION. IF RECORDING IS IN 00443000
  472. * PROGRESS, QUE RECORDING REQUEST AND EXIT TO DISPATCHER UNTIL 00444000
  473. * RECORD IS RECORDED. IF THE ERROR CYLINDER IS FULL OR NOT 00445000
  474. * INITIALIZED, RELEASE THE RECORD AND RETURN TO THE CALLER ... 00446000
  475. * 00447000
  476. * CALLS TO OTHER ROUTINES - 00448000
  477. * 00449000
  478. * DMKFREE - TO ALLOCATE FREE STORAGE FOR ERRBLOK 00450000
  479. * DMKFRET - TO RETURN ALLOCATED STORAGE FOR THE 00451000
  480. * ERRBLOK/SDRBLOK 00452000
  481. * DMKDSPCH - EXIT TO DISPATCHER IF RECORDING IS ACTIVE 00453000
  482. * DMKSTKCP - STACK CPEXBLOK FOR RECORDER 00454000
  483. * DMKIOFOB - GO RECORD OBR RECORD 00455000
  484. * 00456000
  485. * EXTERNAL REFERENCES - 00457000
  486. * 00458000
  487. * DMKSYSTZ - GET ADDRESS OF GMT DIFFERENCE 00459000
  488. * DMKIOERP - RECORDING IN PROGRESS FLAG 00460000
  489. * DMKIOEMX - NUMBER OF PAGES (MAXIMUM) ON A CYLINDER 00461000
  490. * DMKIOEES - OBR/MDR RECORD CYLINDER FULL FLAG 00462000
  491. * 00463000
  492. * TABLES/WORK AREAS - 00464000
  493. * 00465000
  494. * DMKIOENQ FIELD IS USED TO QUE OBR RECORDS 00466000
  495. * 00467000
  496. * NOTES - 00468000
  497. * 00469000
  498. * THIS SUBROUTINE GETS CONTROL WHEN THE SHUTDOWN, VARY OFFLINE, 00470000
  499. * NETWORK SHUTDOWN OR NETWORK VARY OFFLINE COMMANDS ARE ISSUED 00471000
  500. * AND IF SDR COUNTERS EXIST FOR THE DEVICE OR DEVICES ADDRESSED. 00472000
  501. * THE FOLLOWING MODULES GIVE CONTROL TO THIS SUBROUTINE... 00473000
  502. * 00474000
  503. * DMKCPV 00475000
  504. * DMKNET 00476000
  505. * DMKNES 00477000
  506. * 00478000
  507. * REGISTER USAGE - 00479000
  508. * 00480000
  509. * GR 0-3 WORK REGS 00481000
  510. * GR 5 SUBROUTINE BAL REG 00482000
  511. * GR 6 ADDRESS OF RECORD 00483000
  512. * GR 7 SIZE OF RECORD 00484000
  513. * GR 8 RDEVBLOK 00485000
  514. * GR 9 SDRBLOK 00486000
  515. * 00487000
  516. * OPERATION - 00488000
  517. * 00489000
  518. * BUILD AN ERRBLOK, WHICH WILL BE USED TO BUILD AND FORMAT AN 00490000
  519. * OUTBOARD RECORD FOR STATISTICAL COUNTERS... 00491000
  520. * 00492000
  521. * 1. IF THE SDRBLOK DOESNT EXIST,RETURN TO CALLER 00493000
  522. * 00494000
  523. * 2. IF THE SDR COUNTERS ARE ALL ZERO, FRET THE SDRBLOK 00495000
  524. * AND RETURN TO THE CALLER.. 00496000
  525. * 00497000
  526. * 3. BUILD AN ERRBLOK 00498000
  527. * 00499000
  528. * 00500000
  529. * 4. ANALYZE THE ERROR RECORDING CYLINDER AND THE 00501000
  530. * RECORDING IN PROGRESS FLAG. 00502000
  531. * 00503000
  532. * . IF THE CYLINDER IS FULL OR NOT INITIALIZED, RELEASE 00504000
  533. * THE ERRBLOK AND RETURN TO CALLER .. 00505000
  534. * . IF RECORDING IS IN PROGRESS, QUE THE REQUEST AND 00506000
  535. * EXIT TO THE DISPATCHER UNTIL THE RECORDER STACKS 00507000
  536. * THE CPEXBLOK FOR THIS REQUEST.. 00508000
  537. * . IF RECORDING IS NOT IN PROGRESS, GIVE CONTROL TO 00509000
  538. * THE RECORDER TO FORMAT AND WRITE THE OBR RECORD.. 00510000
  539. * 00511000
  540. * 5. RELEASE THE STORAGE USED BY THE SDRBLOK 00512000
  541. * 00513000
  542. * 00514000
  543. *********************************************************************** 00515000
  544. EJECT 00516000
  545. DMKIOESR RELOC HANDLE @VA03757 00517000
  546. USING SDRBLOK,R9 ADDRESSABILITY FOR SDRBLOK @VA03757 00518000
  547. ICM R9,15,RDEVCTRS GET SDRBLOK ADDRESS @VA03757 00519000
  548. BZ COMEXIT NO SDRBLOK, GO BACK TO CALLER @VA03757 00520000
  549. TM RDEVTYPE,TYP3410+TYP3420 3400 TAPE SERIES? @VA14701 00520100
  550. BNZ *+8 YES, FORMAT LONG OBR @VA14701 00520200
  551. OI SDRFLAGS,SDRSHRT TURN ON SHORT OBR FLAG @VA08550 00521000
  552. SLR R1,R1 CLEAR WORK REG @VA08550 00521100
  553. IC R1,SDRLNGTH GET LENGTH OF SDR COUNTERS @VA03757 00529000
  554. BCTR R1,R0 SUBTRACT ONE FOR EXECUTE INST. @VA03757 00530000
  555. EX R1,CHKCOUNT GO CHECK THE COUNTERS @VA03757 00531000
  556. BNE GETOBR BR IF NOT ZERO TO BUILD RECORD @VA03757 00532000
  557. BAL R5,FRETSDR COUNTERS ARE ZERO,FORGET @VA03757 00533000
  558. B COMEXIT RECORDING, FRET SDRBLOK AND EXIT @VA03757 00534000
  559. SPACE 1 00535000
  560. CHKCOUNT CLC SDRCTRS(0),ZEROES @VA03757 00536000
  561. SPACE 2 00537000
  562. GETOBR EQU * @VA03757 00538000
  563. TM SDRFLAGS,SDRSHRT IS IT A SHORT OBR? @VA14701 00538050
  564. BO BYBUILD YES, BYPASS BUILDING DUMMY @VA14701 00538100
  565. * IOBLOK AND IOERBLOK 00538150
  566. LA R0,IOERSIZE DEFINE STORAGE FOR IOERBLOK @VA14701 00538200
  567. CALL DMKFREE AND GET IT @VA14701 00538250
  568. LR R4,R1 USE GPR4 FOR ADDRESSABILITY @VA14701 00538300
  569. XC IOERBLOK(IOERSIZE*8),IOERBLOK CLEAR IOERBLOK @VA14701 00538350
  570. LA R0,IOBSIZE DEFINE ITS STORAGE @VA14701 00538400
  571. CALL DMKFREE AND GET IT @VA14701 00538450
  572. LR R10,R1 USE GPR10 FOR ADDRESSABILITY @VA14701 00538500
  573. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IOBLOK @VA14701 00538550
  574. MVC IOBRADD,SDRCUA+1 MOVE IN ADDRESS @VA14701 00538600
  575. CLI RDEVTYPE,TYP3420 3420 TAPE? @VA14701 00538650
  576. BNE BYBUILD NO,BRANCH @VA14701 00538700
  577. MVI IOERLEN+1,24 INDICATE IT IS A 3420 TAPE @VA14701 00538750
  578. BYBUILD EQU * @VA14701 00538800
  579. BAL R5,ERRBLD GO BUILD ERRBLOK RECORD @VA03757 00539000
  580. LR R6,R1 SAVE ADDRESS OF RECORD @VA03757 00540000
  581. LR R7,R0 SAVE LENGTH, IN DOUBLEWORDS @VA03757 00541000
  582. TM SDRFLAGS,SDRSHRT SHORT OBR? @VA14701 00541100
  583. BO NOFRET YES, NO DUMMY BLOKS TO FRET @VA14701 00541200
  584. SR R3,R3 CLEAR R3 @VA14701 00541300
  585. BAL R5,NOCHAN FRET DUMMY IOBLOK @VA14701 00541400
  586. LR R1,R10 GET ADDRESS OF IOBLOK @VA14701 00541500
  587. LA R0,IOBSIZE GET SIZE OF IOBLOK @VA14701 00541600
  588. CALL DMKFRET RETURN DUMMY IOBLOK STORAGE @VA14701 00541700
  589. NOFRET EQU * @VA14701 00541800
  590. BAL R5,ANALRECD ANALYZE THE ERROR RECORDING CYLS @V5088AA 00542000
  591. B FRETRECD RELEASE THE OBR RECORD SPACE @VA03757 00543000
  592. B QUEOBR1 QUE OBR RECORD OFF RECORDING QUE @VA03757 00544000
  593. SPACE 1 00545000
  594. **** NO RECORDING IS IN PROGRESS **** 00546000
  595. SPACE 1 00547000
  596. IOFE2 EQU * @VA03757 00548000
  597. CALL DMKIOFOB GO BUILD AND RECORD OBR RECORD @VA03757 00549000
  598. BAL R5,FRETSDR FRET SDRBLOK @VA03757 00550000
  599. B COMEXIT RETURN TO CALLER @VA03757 00551000
  600. SPACE 1 00552000
  601. **** QUE OBR RECORD OFF RECORDING QUEUE **** 00553000
  602. SPACE 1 00554000
  603. QUEOBR1 EQU * @VA03757 00555000
  604. LA R4,IOFE2 SET UP RETURN ADDR FOR CPEXBLOK @VA03757 00556000
  605. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03757 00557000
  606. LA R3,DMKIOENQ GET POINTER TO QUEUE @VA03757 00558000
  607. LA R5,DISPTH RETURN TO THE DISPATCHER @VA03757 00559000
  608. BAL R4,QUECPEX STACK REQUEST OFF RECORDING QUEUE@VA03757 00560000
  609. EJECT 00561000
  610. ********************************************************************** 00562000
  611. * 00563000
  612. * SUBROUTINE NAME - 00564000
  613. * 00565000
  614. * DMKIOERN 00566000
  615. * 00567000
  616. * FUNCTION - 00568000
  617. * 00569000
  618. * BUILD, FORMAT AND GIVE CONTROL TO THE RECORDER FOR RECORDING 00570000
  619. * MISCELLANEOUS DATA RECORDS (MDR) FOR 3270 REMOTE AND 3705 00571000
  620. * STATIONS. RECORDING IS HANDLED ASYNCHRONOUS TO THE ERROR 00572000
  621. * CONDITION. 00573000
  622. * 00574000
  623. * ATTRIBUTES - 00575000
  624. * 00576000
  625. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 00577000
  626. * 00578000
  627. * ENTRY CONDITIONS - 00579000
  628. * 00580000
  629. * GR 1 = ADDRESS OF CONTASK 00581000
  630. * GR 8 = ADDRESS OF RDEVBLOK 00582000
  631. * GR 11 = ADDRESS OF VMBLOK 00583000
  632. * GR 12 = ADDRESS OF DMKIOERN 00584000
  633. * GR 13 = ADDRESS OF SAVE AREA 00585000
  634. * 00586000
  635. * EXIT CONDITIONS - 00587000
  636. * 00588000
  637. * IF NO RECORDING IS IN PROGRESS, ACTIVATE RECORDER AND 00589000
  638. * RETURN TO CALLER. IF RECORDING IS IN PROGRESS, QUE REQUEST 00590000
  639. * AND RETURN TO CALLER. 00591000
  640. * 00592000
  641. * REGISTER CONTENTS 00593000
  642. * GR 6 = ADDRESS OF MDR RECORD 00594000
  643. * GR 7 = SIZE OF RECORD IN DOUBLEWORDS 00595000
  644. * 00596000
  645. * CALL TO OTHER ROUTINES - 00597000
  646. * 00598000
  647. * DMKFREE - TO ALLOCATE FREE STORAGE FOR RECORD 00599000
  648. * DMKFRET - TO RETURN ALLOCATED STORAGE FOR RECORD/CONTASK 00600000
  649. * DMKDSPCH - EXIT TO DISPATCHER AFTER RETURNING FROM RECORDER 00601000
  650. * DMKSTKCP - STACK CPEXBLOK TO ACTIVATE RECORDER 00602000
  651. * DMKIOFOB - GO RECORD OBR/MDR RECORDS 00603000
  652. * 00604000
  653. * EXTERNAL REFERENCES - 00605000
  654. * 00606000
  655. * DMKSYSTZ - GET ADDRESS OF GMT DIFFERENCE 00607000
  656. * DMKIOERP - RECORDING IN PROGRESS FLAG 00608000
  657. * DMKIOEMX - NUMBER OF PAGES (MAXIMUM) ON A CYLINDER 00609000
  658. * DMKIOEES - OBR/MDR RECORD CYLINDER FULL FLAG 00610000
  659. * 00611000
  660. * TABLES /WORK AREAS - 00612000
  661. * 00613000
  662. * DMKIOEIQ FIELD IS USED TO QUE MDR RECORDS. 00614000
  663. * 00615000
  664. * NOTES - 00616000
  665. * 00617000
  666. * THIS SUBROUTINE IS CALL ONLY FOR 3270 REMOTE AND 3705 00618000
  667. * STATION ERRORS. THE FOLLOWING MODULES GIVE CONTROL TO THIS 00619000
  668. * SUBROUTINE: 00620000
  669. * 00621000
  670. * DMKRGF - WHEN A 3270 REMOTE STATION ERROR OCCURS 00622000
  671. * DMKRNH - WHEN A 3705 STATION ERROR OCCURS 00623000
  672. * 00624000
  673. * REGISTER USAGE - 00625000
  674. * 00626000
  675. * GR14,15 LINKAGE REGISTERS 00627000
  676. * GR12 = MODULE BASE REGISTER 00628000
  677. * GR11 = VMBLOK ADDRESSABILITY 00629000
  678. * GR10 = IOBLOK ADDRESSABILITY 00630000
  679. * GR 9 = CONTASK ADDRESSABILITY 00631000
  680. * GR 8 = RDEVBLOK ADDRESSABILITY 00632000
  681. * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00633000
  682. * GR 6 = ADDRESS OF THE RECORD 00634000
  683. * GR 5 = SUBROUTINE BAL REGISTER 00635000
  684. * GR0-4= WORK REGISTERS 00636000
  685. * 00637000
  686. * OPERATION - 00638000
  687. * 00639000
  688. * I. BUILDING AND FORMATTING OF ERROR CONDITION 00640000
  689. * 00641000
  690. * 1. BUILD AND FORMAT A MISCELLANEOUS DATA RECORD (MDR) 00642000
  691. * FOR THE 3270 REMOTE AND 3705 STATION ERROR. 00643000
  692. * 00644000
  693. * 2. RELEASE THE CONTASK AND SETUP THE INTERFACE TO 00645000
  694. * THE RECORDER. 00646000
  695. * 00647000
  696. * 3. ANALYSE THE OBR/MDR RECORDING CYLINDER AND 00648000
  697. * THE RECORDING IN PROGRESS FLAG. 00649000
  698. * 00650000
  699. * . IF THE CYLINDER IS FULL OR NOT INITIALIZED, RELEASE 00651000
  700. * THE OBR/MDR RECORD AND RETURN TO CALLER. 00652000
  701. * . IF RECORDING IS IN PROGRESS, QUE REQUEST AND 00653000
  702. * RETURN TO CALLER. 00654000
  703. * . IF RECORDING IS NOT IN PROGRESS, QUE CPEXBLOK TO 00655000
  704. * ACTIVATE RECORDER AND RETURN TO CALLER. 00656000
  705. * 00657000
  706. ********************************************************************** 00658000
  707. EJECT 00659000
  708. ENTRY DMKIOERN @VA03358 00660000
  709. USING DMKIOERN,R12 SETUP ADDRESSABILITY @VA03358 00661000
  710. DMKIOERN DS 0H HANDLE ASYNCHRONOUS RECORDING @VA03358 00662000
  711. ENTER @VA03358 00663000
  712. L R12,=A(DMKIOE) SETUP ADDRESSABILITY FOR MODULE @VA03358 00664000
  713. USING DMKIOE,R12 ... @VA03358 00665000
  714. BAL R5,MDRBLD GO BUILD ERRBLOK RECORD @VA03757 00666000
  715. LR R7,R0 LENGTH OF RECORD IN DOUBLEWORDS @VA03358 00667000
  716. LR R6,R1 GET ADDRESS OF MDR RECORD @VA03358 00668000
  717. BAL R5,FRETCON RELEASE THE CONTASK @VA03358 00669000
  718. BAL R5,OBRANAL GO ANALYZE ERROR RECORDING CYLS @V5088AA 00670000
  719. EJECT 00671000
  720. ********************************************************************** 00672000
  721. * 00673000
  722. * SUBROUTINE NAME - 00674000
  723. * 00675000
  724. * DMKIOEVR 00676000
  725. * 00677000
  726. * FUNCTION - 00678000
  727. * 00679000
  728. * GIVE CONTROL TO THE RECORDER FOR RECORDING SVC 76 REQUESTS. 00680000
  729. * RECORDING IS HANDLED ASYNCHRONOUS TO THE REQUEST. 00681000
  730. * 00682000
  731. * ATTRIBUTES - 00683000
  732. * 00684000
  733. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 00685000
  734. * 00686000
  735. * ENTRY CONDITIONS - 00687000
  736. * 00688000
  737. * GR 0 = SIZE OF SVC 76 RECORD IN DOUBLEWORDS 00689000
  738. * GR 1 = ADDRESS OF SVC 76 RECORD 00690000
  739. * GR 11 = ADDRESS OF VMBLOK 00691000
  740. * GR 12 = ADDRESS OF DMKIOEVR 00692000
  741. * GR 13 = ADDRESS OF SAVE AREA 00693000
  742. * 00694000
  743. * EXIT CONDITIONS - 00695000
  744. * 00696000
  745. * IF NO RECORDING IS IN PROGRESS, ACTIVATE RECORDER AND 00697000
  746. * RETURN TO CALLER. IF RECORDING IS IN PROGRESS, QUE REQUEST 00698000
  747. * AND RETURN TO CALLER. 00699000
  748. * 00700000
  749. * REGISTER CONTENTS 00701000
  750. * GR 6 = ADDRESS OF SVC 76 RECORD 00702000
  751. * GR 7 = SIZE OF RECORD IN DOUBLEWORDS 00703000
  752. * 00704000
  753. * CALL TO OTHER ROUTINES - 00705000
  754. * 00706000
  755. * DMKFREE - TO ALLOCATE FREE STORAGE FOR CPEXBLOK 00707000
  756. * DMKFRET - TO RETURN ALLOCATED STORAGE FOR RECORD 00708000
  757. * DMKDSPCH - EXIT TO DISPATCHER AFTER RETURNING FROM RECORDER 00709000
  758. * DMKSTKCP - STACK CPEXBLOK TO ACTIVATE RECORDER 00710000
  759. * DMKIOFVR - GO RECORD SVC 76 RECORDS 00711000
  760. * 00712000
  761. * EXTERNAL REFERENCES - 00713000
  762. * 00714000
  763. * DMKSYSTZ - GET ADDRESS OF GMT DIFFERENCE 00715000
  764. * DMKIOERP - RECORDING IN PROGRESS FLAG 00716000
  765. * DMKIOEMX - NUMBER OF PAGES (MAXIMUM) ON A CYLINDER 00717000
  766. * DMKIOEES - OBR/MDR RECORD CYLINDER FULL FLAG 00718000
  767. * 00719000
  768. * TABLES /WORK AREAS - 00720000
  769. * 00721000
  770. * DMKIOEVQ FIELD IS USED TO QUE SVC 76 REQUESTS. 00722000
  771. * 00723000
  772. * NOTES - 00724000
  773. * 00725000
  774. * THE ONLY TIME THIS SUBROUTINE GETS CONTROL IS WHEN A 00726000
  775. * VITUAL MACHINE REQUESTS THAT A RECORD BE RECORDED. THE 00727000
  776. * FOLLOWING MODULE GIVE CONTROL TO THIS SUBROUTINE: 00728000
  777. * 00729000
  778. * DMKVER - WHEN A VIRTUAL ERROR RECORD IS CONVERTED TO A 00730000
  779. * REAL ERROR RECORD. 00731000
  780. * 00732000
  781. * REGISTER USAGE - 00733000
  782. * 00734000
  783. * GR14,15 LINKAGE REGISTERS 00735000
  784. * GR12 = MODULE BASE REGISTER 00736000
  785. * GR11 = VMBLOK ADDRESSABILITY 00737000
  786. * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00738000
  787. * GR 6 = ADDRESS OF THE RECORD 00739000
  788. * GR 5 = SUBROUTINE BAL REGISTER 00740000
  789. * GR0-4= WORK REGISTERS 00741000
  790. * 00742000
  791. * OPERATION - 00743000
  792. * 00744000
  793. * I. FORMAT SVC 76 RECORD 00745000
  794. * 00746000
  795. * 1. MOVE THE DATE AND TIME RECORD WAS CREATED IN THE 00747000
  796. * SVC 76 RECORD. 00748000
  797. * 00749000
  798. * 2. SET UP THE INTERFACE REGISTERS FOR THE RECORDER. 00750000
  799. * 00751000
  800. * 3. ANALYSE THE OBR/MDR RECORDING CYLINDER AND 00752000
  801. * THE RECORDING IN PROGRESS FLAG. 00753000
  802. * 00754000
  803. * . IF THE CYLINDER IS FULL OR NOT INITIALIZED, RELEASE 00755000
  804. * THE SVC 76 RECORD AND RETURN TO CALLER. 00756000
  805. * . IF RECORDING IS IN PROGRESS, QUE REQUEST AND 00757000
  806. * RETURN TO CALLER. 00758000
  807. * . IF RECORDING IS NOT IN PROGRESS, QUE CPEXBLOK TO 00759000
  808. * ACTIVATE RECORDER AND RETURN TO CALLER. 00760000
  809. * 00761000
  810. ********************************************************************** 00762000
  811. EJECT 00763000
  812. DMKIOEVR RELOC HANDLE ASYNCHRONOUS RECORDING @VA03358 00764000
  813. LA R6,4(,R1) GET ADDRESS OF RECORD AREA @VA03358 00765000
  814. LR R7,R0 GET LENGTH OF RECORD @VA03358 00766000
  815. BAL R9,GETDATE GET DATE & TIME RECORD WAS MADE @VA03358 00767000
  816. S R6,F4 ADDR. OF LENGTH FIELD & RECORD @VA03358 00768000
  817. BAL R5,ANALRECD ANALYZE THE ERROR RECORDING CYLS @V5088AA 00769000
  818. B FRETRECD RELEASE OBR/MDR RECORD @VA03358 00770000
  819. B QUEVRM QUE OBR/MDR RECORD OFF REC QUE @VA03358 00771000
  820. * NO RECORDING IN PROGRESS 00772000
  821. LA R4,IOFVR SET UP RETURN ADDR FOR CPEXBLOK @VA03358 00773000
  822. BAL R5,STKCPEX STACK CPEXBLOK OFF CPEXBLOK QUE @VA03358 00774000
  823. SPACE 1 00775000
  824. IOFVR EQU * CALL RECORDER FOR OBR/MDR RECORD @VA03358 00776000
  825. CALL DMKIOFVR GO RECORD OBR/MDR RECORDS @VA03358 00777000
  826. GOTO DMKDSPCH GO TO THE DISPATCHER @VA03358 00778000
  827. SPACE 1 00779000
  828. QUEVRM EQU * QUE OBR/MDR RECORD OFF REC. QUE @VA03358 00780000
  829. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03358 00781000
  830. LA R3,DMKIOEVQ GET POINTER TO SVC 76 QUE @VA03358 00782000
  831. LA R5,COMEXIT RETURN TO CALLER AFTER STACK @VA03358 00783000
  832. BAL R4,QUECPEX STACK REQUEST OFF RECORDING QUE @VA03358 00784000
  833. EJECT 00785000
  834. ********************************************************************** 00786000
  835. * 00787000
  836. * SUBROUTINE NAME - 00788000
  837. * 00789000
  838. * DMKIOECC 00790000
  839. * 00791000
  840. * FUNCTION - 00792000
  841. * 00793000
  842. * GIVE CONTROL TO THE RECORDER FOR RECORDING CHANNEL CHECK (CCH) 00794000
  843. * RECORDS. RECORDING IS HANDLED ASYNCHRONOUS TO THE CHANNEL 00795000
  844. * ERROR. 00796000
  845. * 00797000
  846. * ATTRIBUTES - 00798000
  847. * 00799000
  848. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 00800000
  849. * 00801000
  850. * ENTRY CONDITIONS - 00802000
  851. * 00803000
  852. * GR 6 = ADDRESS OF CHANNEL CHECK RECORD 00804000
  853. * GR 7 = SIZE OF CHANNEL CHECK RECORD IN DOUBLEWORDS 00805000
  854. * GR 8 = ADDRESS OF RDEVBLOK 00806000
  855. * GR 10 = ADDRESS OF IOBLOK 00807000
  856. * GR 11 = ADDRESS OF VMBLOK 00808000
  857. * GR 12 = ADDRESS OF DMKIOECC 00809000
  858. * GR 13 = ADDRESS OF SAVE AREA 00810000
  859. * 00811000
  860. * EXIT CONDITIONS - 00812000
  861. * 00813000
  862. * IF NO RECORDING IS IN PROGRESS, ACTIVATE RECORDER AND 00814000
  863. * RETURN TO CALLER. IF RECORDING IS IN PROGRESS, QUE REQUEST 00815000
  864. * AND RETURN TO CALLER. 00816000
  865. * 00817000
  866. * REGISTER CONTENTS 00818000
  867. * GR 6 = ADDRESS OF OBR/MDR/CCH RECORD 00819000
  868. * GR 7 = SIZE OF RECORD IN DOUBLEWORDS 00820000
  869. * 00821000
  870. * CALL TO OTHER ROUTINES - 00822000
  871. * 00823000
  872. * DMKFREE - TO ALLOCATE FREE STORAGE FOR CPEXBLOK 00824000
  873. * DMKFRET - TO RETURN ALLOCATED STORAGE FOR RECORD 00825000
  874. * DMKDSPCH - EXIT TO DISPATCHER AFTER RETURNING FROM RECORDER 00826000
  875. * DMKSTKCP - STACK CPEXBLOK TO ACTIVATE RECORDER 00827000
  876. * DMKIOFC1 - GO RECORD CCH RECORD 00828000
  877. * 00829000
  878. * EXTERNAL REFERENCES - 00830000
  879. * 00831000
  880. * DMKSYSTZ - GET ADDRESS OF GMT DIFFERENCE 00832000
  881. * DMKIOERP - RECORDING IN PROGRESS FLAG 00833000
  882. * DMKIOEMX - NUMBER OF PAGES (MAXIMUM) ON A CYLINDER 00834000
  883. * DMKIOEMS - MCH/CCH RECORD CYLINDER FULL FLAG 00835000
  884. * 00836000
  885. * TABLES /WORK AREAS - 00837000
  886. * 00838000
  887. * DMKIOECQ FIELD IS USED TO QUE CCH RECORDS. 00839000
  888. * 00840000
  889. * NOTES - 00841000
  890. * 00842000
  891. * THE ONLY TIME THIS SUBROUTINE GETS CONTROL IS WHEN 00843000
  892. * A CHANNEL ERROR HAS OCCURRED. THE FOLLOWING 00844000
  893. * MODULE GIVE CONTROL TO THIS SUBROUTINE: 00845000
  894. * 00846000
  895. * DMKCCH - ON A CHANNEL ERROR 00847000
  896. * 00848000
  897. * REGISTER USAGE - 00849000
  898. * 00850000
  899. * GR14,15 LINKAGE REGISTERS 00851000
  900. * GR12 = MODULE BASE REGISTER 00852000
  901. * GR11 = VMBLOK ADDRESSABILITY 00853000
  902. * GR10 = IOBLOK ADDRESSABILITY 00854000
  903. * GR 9 = WORK REGISTER 00855000
  904. * GR 8 = RDEVBLOK ADDRESSABILITY 00856000
  905. * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00857000
  906. * GR 6 = ADDRESS OF THE RECORD 00858000
  907. * GR 5 = SUBROUTINE BAL REGISTER 00859000
  908. * GR0-4= WORK REGISTERS 00860000
  909. * 00861000
  910. * OPERATION - 00862000
  911. * 00863000
  912. * I. FORMAT CHANNEL CHECK RECORD 00864000
  913. * 00865000
  914. * 1. MOVE THE DATE AND TIME RECORD WAS CREATED IN THE 00866000
  915. * CHANNEL CHECK RECORD. 00867000
  916. * 00868000
  917. * 2. SET UP THE INTERFACE'S REGISTERS FOR THE RECORDER. 00869000
  918. * 00870000
  919. * 3. ANALYSE THE MCH/CCH RECORDING CYLINDER AND 00871000
  920. * THE RECORDING IN PROGRESS FLAG. 00872000
  921. * 00873000
  922. * . IF THE CYLINDER IS FULL OR NOT INITIALIZED, SET A 00874000
  923. * NON-ZERO RETURN CODE, RELEASE THE CCH RECORD AND 00875000
  924. * RETURN TO CALLER. 00876000
  925. * . IF RECORDING IS IN PROGRESS, QUE REQUEST AND 00877000
  926. * RETURN TO CALLER. 00878000
  927. * . IF RECORDING IS NOT IN PROGRESS, QUE CPEXBLOK TO 00879000
  928. * ACTIVATE RECORDER AND RETURN TO CALLER. 00880000
  929. * 00881000
  930. ********************************************************************** 00882000
  931. EJECT 00883000
  932. DMKIOECC RELOC HANDLE ASYNCHRONOUS RECORDING @VA03358 00884000
  933. CCHIOS EQU * ENTRY FROM I/O SUPERVICOR @VA03358 00885000
  934. BAL R9,GETDATE GET DATE & TIME RECORD WAS MADE @VA03358 00886000
  935. BAL R5,ANALRECD ANALYZE THE ERROR RECORDING CYLS @V5088AA 00887000
  936. B CCHFRECD RELEASE CCH RECORD SPACE @VA03358 00888000
  937. B QUECCH QUE CCH RECORD OFF RECORDING QUE @VA03358 00889000
  938. * NO RECORDING IN PROGRESS 00890000
  939. LA R4,IOFC1 SET UP RETURN ADDR FOR CPEXBLOK @VA03358 00891000
  940. BAL R5,STKCPEX STACK CPEXBLOK OFF CPEXBLOK QUE @VA03358 00892000
  941. SPACE 1 00893000
  942. IOFC1 EQU * CALL RECORDER FOR CCH RECORD @VA03358 00894000
  943. CALL DMKIOFC1 GO RECORD CCH RECORDS @VA03358 00895000
  944. GOTO DMKDSPCH GO TO THE DISPATCHER @VA03358 00896000
  945. SPACE 1 00897000
  946. QUECCH EQU * QUE CCH RECORD OFF RECORDING QUE @VA03358 00898000
  947. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03358 00899000
  948. LA R3,DMKIOECQ GET POINTER TO CCH QUE @VA03358 00900000
  949. LA R5,COMEXIT RETURN TO CALLER AFTER STACK @VA03358 00901000
  950. BAL R4,QUECPEX STACK REQUEST OFF RECORDING QUE @VA03358 00902000
  951. SPACE 2 00903000
  952. CCHIOENT EQU * HANDLE CCH ERROR FROM I/O SUPVER.@VA03358 00904000
  953. CALL DMKCCHRT WRITE ERROR MESSAGE TO OPERATOR @VA03358 00905000
  954. L R7,IOERCCRL LENG OF CCH REC IN DOUBLEWORDS @V508690 00906000
  955. L R6,IOERCCRA ADDR OF THE CCH RECORD @V508690 00907000
  956. SR R5,R5 CLEAR WORK REGISTER @VA03358 00908000
  957. ST R5,IOERCCRA CLEAR ADDRESS OD CCH RECORD @V508690 00909000
  958. BAL R5,FRETIOER RELEASE STORAGE FOR IOERBLOK @VA03358 00910000
  959. B CCHIOS GO SET UP FOR RECORDING @V508690 00911000
  960. SPACE 2 00912000
  961. DISPTH EQU * RETURN TO DISPATCHER @VA03358 00913000
  962. GOTO DMKDSPCH GO TO THE DISPATCHER @VA03358 00914000
  963. EJECT 00915000
  964. ********************************************************************** 00916000
  965. * 00917000
  966. * SUBROUTINE NAME - 00918000
  967. * 00919000
  968. * DMKIOEMC 00920000
  969. * 00921000
  970. * FUNCTION - 00922000
  971. * 00923000
  972. * GIVE CONTROL TO THE RECORDER FOR RECORDING MACHINE CHECK (MCH) 00924000
  973. * RECORDS. RECORDING IS HANDLE SYNCHRONOUS FOR MACHINE CHECK 00925000
  974. * CONDITIONS. 00926000
  975. * 00927000
  976. * ATTRIBUTES - 00928000
  977. * 00929000
  978. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 00930000
  979. * 00931000
  980. * ENTRY CONDITIONS - 00932000
  981. * 00933000
  982. * GR 6 = ADDRESS OF MACHINE CHECK RECORD 00934000
  983. * GR 7 = SIZE OF MACHINE CHECK RECORD IN DOUBLEWORDS 00935000
  984. * GR 11 = ADDRESS OF VMBLOK 00936000
  985. * GR 12 = ADDRESS OF DMKIOEMC 00937000
  986. * GR 13 = ADDRESS OF SAVE AREA 00938000
  987. * 00939000
  988. * EXIT CONDITIONS - 00940000
  989. * 00941000
  990. * IF NO RECORDING IS IN PROGRESS, ACTIVATE RECORDER AND 00942000
  991. * RETURN TO CALLER. IF RECORDING IS IN PROGRESS, QUE REQUEST 00943000
  992. * AND RETURN TO CALLER. 00944000
  993. * 00945000
  994. * REGISTER CONTENTS 00946000
  995. * GR 6 = ADDRESS OF OBR/MDR/CCH RECORD 00947000
  996. * GR 7 = SIZE OF RECORD IN DOUBLEWORDS 00948000
  997. * 00949000
  998. * CALL TO OTHER ROUTINES - 00950000
  999. * 00951000
  1000. * DMKFREE - TO ALLOCATE FREE STORAGE FOR CPEXBLOK 00952000
  1001. * DMKDSPCH - EXIT TO DISPATCHER UNTIL RECORD IS RECORDED 00953000
  1002. * DMKSTKCP - STACK CPEXBLOK WHEN THE RECORDER IS ACTIVE 00954000
  1003. * DMKIOFM1 - GO RECORD MCH RECORD 00955000
  1004. * 00956000
  1005. * EXTERNAL REFERENCES - 00957000
  1006. * 00958000
  1007. * DMKSYSTZ - GET ADDRESS OF GMT DIFFERENCE 00959000
  1008. * DMKIOERP - RECORDING IN PROGRESS FLAG 00960000
  1009. * DMKIOEMX - NUMBER OF PAGES (MAXIMUM) ON A CYLINDER 00961000
  1010. * DMKIOEMS - MCH/CCH RECORD CYLINDER FULL FLAG 00962000
  1011. * 00963000
  1012. * TABLES /WORK AREAS - 00964000
  1013. * 00965000
  1014. * DMKIOEMQ FIELD IS USED TO QUE MCH RECORDS. 00966000
  1015. * 00967000
  1016. * NOTES - 00968000
  1017. * 00969000
  1018. * THE ONLY TIME THIS SUBROUTINE GETS CONTROL, IS WHEN 00970000
  1019. * A MACHINE CHECK HAS OCCURRED. THE FOLLOWING 00971000
  1020. * MODULE GIVE CONTROL TO THIS SUBROUTINE: 00972000
  1021. * 00973000
  1022. * DMKMCH - ON A MACHINE CHECK CONDITION 00974000
  1023. * 00975000
  1024. * REGISTER USAGE - 00976000
  1025. * 00977000
  1026. * GR14,15 LINKAGE REGISTERS 00978000
  1027. * GR12 = MODULE BASE REGISTER 00979000
  1028. * GR11 = VMBLOK ADDRESSABILITY 00980000
  1029. * GR10 = IOBLOK ADDRESSABILITY 00981000
  1030. * GR 9 = WORK REGISTER 00982000
  1031. * GR 7 = SIZE OF THE RECORD IN DOUBLEWORDS 00983000
  1032. * GR 6 = ADDRESS OF THE RECORD 00984000
  1033. * GR 5 = SUBROUTINE BAL REGISTER 00985000
  1034. * GR0-4= WORK REGISTERS 00986000
  1035. * 00987000
  1036. * OPERATION - 00988000
  1037. * 00989000
  1038. * I. FORMAT MACHINE CHECK RECORD 00990000
  1039. * 00991000
  1040. * 1. MOVE DATE AND TIME RECORD WAS CREATED IN THE 00992000
  1041. * MACHINE CHECK RECORD. 00993000
  1042. * 00994000
  1043. * 2. SET UP THE INTERFACE'S REGISTERS FOR THE RECORDER. 00995000
  1044. * 00996000
  1045. * 3. ANALYSE THE MCH/CCH RECORDING CYLINDER AND 00997000
  1046. * THE RECORDING IN PROGRESS FLAG. 00998000
  1047. * 00999000
  1048. * . IF THE CYLINDER IS FULL OR NOT INITIALIZED, SET A 01000000
  1049. * NON-ZERO RETURN CODE AND RETURN TO CALLER. 01001000
  1050. * . IF RECORDING IS IN PROGRESS, QUE REQUEST AND 01002000
  1051. * EXIT TO THE DISPATCHER, UNTIL THE RECORDER STACKS 01003000
  1052. * THE CPEXBLOK FOR THIS REQUEST. 01004000
  1053. * . IF RECORDING IS NOT IN PROGRESS, GIVE CONTROL 01005000
  1054. * TO THE RECORDER TO RECORD THE MCH RECORD. 01006000
  1055. * 01007000
  1056. ********************************************************************** 01008000
  1057. EJECT 01009000
  1058. DMKIOEMC RELOC HANDLE SYNCHRONOUS RECORDING @VA03358 01010000
  1059. BAL R9,GETDATE GET DATE & TIME RECORD WAS MADE @VA03358 01011000
  1060. BAL R5,ANALRECD ANALYZE THE ERROR RECORDING CYLS @V5088AA 01012000
  1061. B MCHCCH SET A NON-ZERO RETURN CODE @VA03358 01013000
  1062. B QUEMCH QUE MCH RECORD OFF RECORDING QUE @VA03358 01014000
  1063. * NO RECORDING IN PROGRESS 01015000
  1064. IOFM1 EQU * PROCESS MCH REQUEST -SYNCHRONOUS @VA03358 01016000
  1065. CALL DMKIOFM1 GO RECORD MCH RECORDS @VA03358 01017000
  1066. BAL R5,COMEXIT RETURN TO CALLER @VA03358 01018000
  1067. SPACE 1 01019000
  1068. QUEMCH EQU * QUE MCH RECORD OFF RECORDING QUE @VA03358 01020000
  1069. LA R4,IOFM1 RETURN ADDRESS FOR CPEXBLOK @VA03358 01021000
  1070. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03358 01022000
  1071. LA R3,DMKIOEMQ GET POINTER TO MCH QUE @VA03358 01023000
  1072. LA R5,DISPTH RETURN TO THE DISPATCHER @VA03358 01024000
  1073. BAL R4,QUECPEX STACK REQUEST OFF RECORDING QUE @VA03358 01025000
  1074. SPACE 1 01026000
  1075. CCHFRECD EQU * HANDLE 'NOT INITIALIZE'/FULL CYL @VA03358 01027000
  1076. SR R5,R5 CLEAR FLAG REGISTER @VA03358 01028000
  1077. BAL R4,FRETRECD RELEASE SPACE FOR CCH RECORD @VA03358 01029000
  1078. MCHCCH EQU * SET RETURN CODE FOR CALLER @VA03358 01030000
  1079. LA R0,255 SET NON-ZERO RETURN CODE @VA03358 01031000
  1080. LM R1,R11,SAVEREGS+4 RESTORE CALLER'S REGISTERS @VA03358 01032000
  1081. SVC 12 RETURN TO USER @VA03358 01033000
  1082. EJECT 01034000
  1083. ********************************************************************** 01035000
  1084. * 01036000
  1085. * SUBROUTINE NAME - 01037000
  1086. * 01038000
  1087. * DMKIOEFM 01039000
  1088. * 01040000
  1089. * FUNCTION - 01041000
  1090. * 01042000
  1091. * THIS SUBROUTINE IS GIVEN CONTROL TO RESET OR CLEAR THE 01043000
  1092. * ERROR RECORDING CYLINDERS AND UPDATE THE INCORE POINTERS 01044000
  1093. * TO THE START OF THE RECORDING AREA. 01045000
  1094. * 01046000
  1095. * ATTRIBUTES - 01047000
  1096. * 01048000
  1097. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 01049000
  1098. * 01050000
  1099. * ENTRY CONDITIONS - 01051000
  1100. * 01052000
  1101. * GR 2 = PARAMETER REGISTER 01053000
  1102. * 01054000
  1103. * PARAMETER 01055000
  1104. * GR2 = 01 - CLEAR OBR/MDR RECORDING CYLINDER 01056000
  1105. * GR2 = 02 - CLEAR MCH/CCH RECORDING CYLINDER 01057000
  1106. * GR2 = 03 - CLEAR BOTH RECORDING CYLINDERS 01058000
  1107. * 01059000
  1108. * GR 11 = ADDRESS OF VMBLOK 01060000
  1109. * GR 12 = ADDRESS OF DMKIOEFM 01061000
  1110. * GR 13 = ADDRESS OF SAVE AREA 01062000
  1111. * 01063000
  1112. * EXIT CONDITIONS - 01064000
  1113. * 01065000
  1114. * IF NO RECORDING IS IN PROGRESS, CLEAR THE ERROR RECORDING 01066000
  1115. * CYLINDERS AND INITIALIZE THE INCORE POINTERS. IF RECORDING IS 01067000
  1116. * IN PROGRESS, QUE ERASE REQUEST AND EXIT TO THE DISPATCHER. 01068000
  1117. * 01069000
  1118. * CALL TO OTHER ROUTINES - 01070000
  1119. * 01071000
  1120. * DMKFREE - TO ALLOCATE FREE STORAGE FOR CPEXBLOK 01072000
  1121. * DMKDSPCH - EXIT TO DISPATCHER AFTER STACKING CPEXBLOK 01073000
  1122. * DMKSTKCP - STACK CPEXBLOK FOR RECORDER 01074000
  1123. * DMKIOFIN - GO INITIALIZE THE INCORE POINTERS 01075000
  1124. * DMKIOGF2 - ERASE THE ERROR RECORDING CYLINDERS 01076000
  1125. * 01077000
  1126. * EXTERNAL REFERENCES - 01078000
  1127. * 01079000
  1128. * DMKIOERP - RECORDING IN PROGRESS FLAG 01080000
  1129. * 01081000
  1130. * TABLES /WORK AREAS - 01082000
  1131. * 01083000
  1132. * DMKIOERQ FIELD IS USED TO QUE ERASE REQUESTS. 01084000
  1133. * 01085000
  1134. * NOTES - 01086000
  1135. * 01087000
  1136. * THE ONLY TIME THIS SUBROUTINE GETS CONTROL IS WHEN 01088000
  1137. * THE CPEREP COMMAND IS ISSUE TO CLEAR OR RESET ERROR 01089000
  1138. * RECORDING CYLINDERS. THE FOLLOWING MODULE GIVE CONTROL 01090000
  1139. * TO THIS SUBROUTINE: 01091000
  1140. * 01092000
  1141. * DMKHVC - TO CLEAR ERROR RECORDING CYLINDERS 01093000
  1142. * 01094000
  1143. * REGISTER USAGE - 01095000
  1144. * 01096000
  1145. * GR14,15 LINKAGE REGISTERS 01097000
  1146. * GR12 = MODULE BASE REGISTER 01098000
  1147. * GR11 = VMBLOK ADDRESSABILITY 01099000
  1148. * GR 9 = WORK REGISTER 01100000
  1149. * GR 5 = SUBROUTINE BAL REGISTER 01101000
  1150. * GR0-4= WORK REGISTERS 01102000
  1151. * 01103000
  1152. * OPERATION - 01104000
  1153. * 01105000
  1154. * I. CLEAR AND FORMAT THE RECORDING AREA ON DISK 01106000
  1155. * 01107000
  1156. * 1. ANALYSE THE RECORDING IN PROGRESS FLAG. 01108000
  1157. * 01109000
  1158. * . IF RECORDING IS IN PROGRESS, QUE REQUEST AND 01110000
  1159. * EXIT TO DISPATCHER. 01111000
  1160. * . IF RECORDING IS NOT IN PROGRESS, GIVE CONTROL TO 01112000
  1161. * DMKIOGF2 TO CLEAR RECORDING CYLINDERS AND 01113000
  1162. * AFTERWARD, GIVE CONTROL TO THE RECORDER TO 01114000
  1163. * INITIALIZE THE INCORE POINTERS. 01115000
  1164. * 01116000
  1165. ********************************************************************** 01117000
  1166. EJECT 01118000
  1167. DMKIOEFM RELOC PROVIDE SYNCHRONOUS HANDLING @VA03358 01119000
  1168. BAL R5,ANALRECD CHECK RECORDING IN PROGRESS FLAG @VA03358 01120000
  1169. B *+8 IGNORE FULL/NOT INITIALIZE BRANCH@VA03358 01121000
  1170. B QUERASE QUE ERASE REQUEST OFF REC. QUE @VA03358 01122000
  1171. * NO RECORDING IN PROGRESS 01123000
  1172. IOFIN EQU * PROCESS ERASE REQUEST SYNCH. @VA03358 01124000
  1173. MVI DMKIOERP,X'FF' SET RECORDING IN PROGRESS FLAG @VA03358 01125000
  1174. CALL DMKIOGF2 @VA03358 01126000
  1175. CALL DMKIOFIN INITIALIZE OBR/MDR & MCH/CCH CYL @VA03358 01127000
  1176. BAL R5,COMEXIT RETURN TO CALLER @VA03358 01128000
  1177. SPACE 1 01129000
  1178. QUERASE EQU * QUE ERASE REQUEST OFF REC. QUE @VA03358 01130000
  1179. LA R4,IOFIN SET UP RETURN ADDRESS @VA03358 01131000
  1180. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03358 01132000
  1181. LA R3,DMKIOERQ GET POINTER TO ERASE REQUEST QUE @VA03358 01133000
  1182. LA R5,DISPTH RETURN TO THE DISPATCHER @VA03358 01134000
  1183. BAL R4,QUECPEX STACK REQUEST OFF RECORDING QUE @VA03358 01135000
  1184. EJECT 01136000
  1185. ********************************************************************** 01137000
  1186. * 01138000
  1187. * SUBROUTINE NAME - 01139000
  1188. * 01140000
  1189. * DMKIOEFL 01141000
  1190. * 01142000
  1191. * FUNCTION - 01143000
  1192. * 01144000
  1193. * THIS SUBROUTINE FORMAT EVERY PAGE ON THE ERROR RECORDING 01145000
  1194. * CYLINDERS AND INITIALIZE THE INCORE POINTERS. 01146000
  1195. * 01147000
  1196. * ATTRIBUTES - 01148000
  1197. * 01149000
  1198. * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 01150000
  1199. * 01151000
  1200. * ENTRY CONDITIONS - 01152000
  1201. * 01153000
  1202. * GR 12 = ADDRESS OF DMKIOEFL 01154000
  1203. * GR 13 = ADDRESS OF SAVE AREA 01155000
  1204. * 01156000
  1205. * EXIT CONDITIONS - 01157000
  1206. * 01158000
  1207. * NONE 01159000
  1208. * 01160000
  1209. * CALL TO OTHER ROUTINES - 01161000
  1210. * 01162000
  1211. * DMKIOFIN - TO INITIALIZE INCORE POINTERS AFTER IPL OR CLEAR 01163000
  1212. * DMKIOGF1 - FORMAT PAGES IN THE ERROR RECORDING CYLINDERS 01164000
  1213. * 01165000
  1214. * EXTERNAL REFERENCES - 01166000
  1215. * 01167000
  1216. * DMKIOERP - RECORDING IN PROGRESS FLAG 01168000
  1217. * 01169000
  1218. * TABLES /WORK AREAS - 01170000
  1219. * 01171000
  1220. * NONE 01172000
  1221. * 01173000
  1222. * NOTES - 01174000
  1223. * 01175000
  1224. * THE ONLY TIME THIS SUBROUTINE GETS CONTROL IS WHEN 01176000
  1225. * THE SYSTEM IS IPL. THE FOLLOWING MODULE GIVE CONTROL 01177000
  1226. * TO THIS SUBROUTINE: 01178000
  1227. * 01179000
  1228. * DMKCPI - WHEN THE SYSTEM IS IPL 01180000
  1229. * 01181000
  1230. * REGISTER USAGE - 01182000
  1231. * 01183000
  1232. * GR14,15 LINKAGE REGISTERS 01184000
  1233. * GR12 = MODULE BASE REGISTER 01185000
  1234. * GR0-11= WORK REGISTERS 01186000
  1235. * 01187000
  1236. * OPERATION - 01188000
  1237. * 01189000
  1238. * I. FORMAT AND INITIALIZE PAGES ON RECORDING CYLINDERS 01190000
  1239. * 01191000
  1240. * 1. FORMAT AND INITIALIZE PAGES ON ERROR RECORDING 01192000
  1241. * CYLINDERS. 01193000
  1242. * 01194000
  1243. * 2. INITIALIZE THE INCORE POINTERS IN THE RECORDER. 01195000
  1244. * 01196000
  1245. ********************************************************************** 01197000
  1246. EJECT 01198000
  1247. DMKIOEFL RELOC INITIALIZE RECORDING CYLINDERS @VA03358 01199000
  1248. MVI DMKIOERP,X'FF' SET RECORDING IN PROGRESS FLAG @VA03358 01200000
  1249. CALL DMKIOGF1 FORMAT ERROR RECORDING CYLINDERS @VA03358 01201000
  1250. CALL DMKIOFIN INITIALIZE INCORE POINTERS @VA03358 01202000
  1251. BAL R5,COMEXIT RETURN TO CALLER @VA03358 01203000
  1252. EJECT 01204000
  1253. ******************************************************************* 01205000
  1254. * 01206000
  1255. * SUBROUTINE NAME 01207000
  1256. * 01208000
  1257. * DMKIOEST 01209000
  1258. * 01210000
  1259. * FUNCTION 01211000
  1260. * 01212000
  1261. * GET STORAGE AND BUILD ERRBLOK. QUEUE THE ERRBLOK 01213000
  1262. * FOR ASYNCHRONOUS PROCESSING. 01214000
  1263. * 01215000
  1264. * ATTRIBUTES 01216000
  1265. * 01217000
  1266. * SERIALLY REUSABLE, RESIDENT, ENTERED VIA SVC 01218000
  1267. * 01219000
  1268. * ENTRY CONDITIONS 01220000
  1269. * 01221000
  1270. * GR 8 = ADDRESS OF RDEVBLOK 01222000
  1271. * GR 10 = ADDRESS OF IOBLOK 01223000
  1272. * 01224000
  1273. * EXIT CONDITIONS 01225000
  1274. * 01226000
  1275. * RETURN TO THE CALLING ERP 01227000
  1276. * 01228000
  1277. * 01229000
  1278. * CALLS TO OTHER ROUTINES 01230000
  1279. * DMKFREE _ TO ALLOCATE FREE STORAGE FOR ERRBLOK 01231000
  1280. * 01232000
  1281. * NOTES: 01233000
  1282. * 01234000
  1283. * THIS MODULE GETS CONTROL FOR THE PURPOSE OF UPDATING 01235000
  1284. * THE SDR COUNTERS. THE FOLLOWING MODULES CALL THIS 01236000
  1285. * SUBROUTINE. 01237000
  1286. * 01238000
  1287. * DMKBSC 01239000
  1288. * DMKCNS 01240000
  1289. * DMKDAS 01241000
  1290. * DMKGRF 01242000
  1291. * DMKTAP 01243000
  1292. * DMKRSE 01244000
  1293. * 01245000
  1294. * TABLES/WORK AREAS 01246000
  1295. * 01247000
  1296. * ERRBLOK _ CONTAINS INFORMATION NEEDED TO UPDATE COUNTERS 01248000
  1297. * 01249000
  1298. * OPERATION 01250000
  1299. * 01251000
  1300. * 01252000
  1301. * 01253000
  1302. * 01254000
  1303. * 01255000
  1304. ******************************************************************* 01256000
  1305. EJECT 01257000
  1306. DMKIOEST RELOC HANDLE @VA03757 01258000
  1307. USING ERRBLOK,R6 SET UP ADDRESSABILITY FOR ERRBLOK@VA03757 01259000
  1308. ICM R4,15,RDEVIOER GET IOERBLOK ADDRESS @VA03757 01260000
  1309. BZ COMEXIT MUST HAVE IOERBLOK @VA03757 01261000
  1310. TM RDEVCTRS,X'FF' COUNTING SUSPENDED??? @VA03757 01262000
  1311. BO COMEXIT YES, EXIT @VA03757 01263000
  1312. BAL R5,ERRBLD GO BUILD THE ERRBLOK @VA03757 01264000
  1313. LR R6,R1 GET THE ADDRESS OF THE BLOCK @VA03757 01265000
  1314. LR R7,R0 GET THE SIZE IN DOUBLEWORDS @VA03757 01266000
  1315. ICM R5,15,SAVER1 GET PASSED REG 1 @VA03757 01267000
  1316. BZ SDRANAL IF ZERO, NO PARM STRING PASSED @VA03757 01268000
  1317. MVC ERRPARM+4(16),0(R5) MOVE IN THE PARM STRING @VA03757 01269000
  1318. SPACE 01270000
  1319. SDRANAL EQU * @VA03757 01271000
  1320. BAL R5,ANALRECD ANALYZE THE ERROR RECORDING CYLS @V5088AA 01272000
  1321. B FRETRECD RELEASE ERROR BLOCK @VA03757 01273000
  1322. B QUESDR UPDATE IN PROGRESS, QUEUE IT @VA03757 01274000
  1323. *** NO UPDATE IN PROGRESS 01275000
  1324. LA R4,IOFST SET UP RETURN ADDR FOR CPEXBLOK @VA03757 01276000
  1325. BAL R5,STKCPEX STACK CPEXBLOK OFF CPEXBLOK QUE @VA03757 01277000
  1326. SPACE 01278000
  1327. IOFST EQU * @VA03757 01279000
  1328. CALL DMKIOFST GO UPDATE SDR COUNTERS @VA03757 01280000
  1329. SPACE 01281000
  1330. GOTO DMKDSPCH GO TO DISPATCHER @VA03757 01282000
  1331. SPACE 2 01283000
  1332. QUESDR EQU * QUEUE ERRBLOK OFF UPDATE QUEUE @VA03757 01284000
  1333. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03757 01285000
  1334. LA R3,DMKIOESQ GET ADDRESS OF UPDATE QUEUE @VA03757 01286000
  1335. LA R5,COMEXIT SET UP RETURN @VA03757 01287000
  1336. BAL R4,QUECPEX GO QUEUE IT @VA03757 01288000
  1337. DROP R6 @VA03757 01289000
  1338. EJECT 01290000
  1339. * 01291000
  1340. * SUBROUTINES FOR BUILDING AND FORMATTING ERROR RECORDS. 01292000
  1341. * 01293000
  1342. SPACE 2 01294000
  1343. ANALRECD EQU * ANALYSE THE OBR/MDR ERROR CYL. @VA03358 01295000
  1344. CLI DMKIOEES,X'FF' IS ERROR RECORDING AREA FULL? @V5088AA 01296000
  1345. BER R5 YES, RETURN TO IN LINE CODE @VA03358 01297000
  1346. ANINLINE EQU * CHECK FOR RECORDING IN PROGRESS @VA03358 01298000
  1347. CLI DMKIOEMX,X'00' IS ERROR REC. CYL. INITIALIZE @VA03358 01299000
  1348. BER R5 NO, RETURN TO IN LINE CODE @VA03358 01300000
  1349. CLI DMKIOERP,X'FF' IS RECORDING IN PROGRESS @VA03358 01301000
  1350. BE 4(R5) YES, RETURN TO IN LINE CODE @VA03358 01302000
  1351. MVI DMKIOERP,X'FF' SET RECORDING IN PROGRESS FLAG @VA03358 01303000
  1352. B 8(R5) GO CALL THE RECORDER @VA03358 01304000
  1353. SPACE 2 01305000
  1354. STKCPEX EQU * STACK THE CPEXBLOK OFF THE QUE @VA03358 01306000
  1355. CHARGE SWITCH,ASYSVM SWITCH TIMING TO SYSTEM @V407510 01307000
  1356. BAL R5,GETCPEX GET SPACE FOR CPEXBLOK @VA03358 01308000
  1357. CHARGE SWITCH,SAVER11 SWITCH BACK TO USER @V407510 01309000
  1358. CALL DMKSTKCP STACK THE CPEXBLOK FOR RETURN @VA03358 01310000
  1359. BAL R5,COMEXIT GO RETURN TO CALLER @VA03358 01311000
  1360. SPACE 2 01312000
  1361. SPACE 2 01313000
  1362. FRETSDR EQU * RELEASE STORAGE USED BY SDRBLOK @VA03757 01314000
  1363. ICM R9,15,RDEVCTRS IS THERE A SDRBLOK ?? @VA03757 01315000
  1364. BZR R5 NO, RETURN @VA03757 01316000
  1365. SR R1,R1 CLEAR WORK REG @VA03757 01317000
  1366. IC R1,SDRLNGTH GET LENGTH OF SDRWORK AREA @VA03757 01318000
  1367. LA R1,SDRBSIZE(,R1) ADD SDRBLOK BASE SIZE @VA03757 01319000
  1368. A R1,F7 ROUND UP TO NEXT DOUBLEWORD @VA03757 01320000
  1369. SRL R1,3 GET NUMBER OF DOUBLEWORDS @VA03757 01321000
  1370. LR R0,R1 SET UP FOR CALL @VA03757 01322000
  1371. LR R1,R9 GET ADDRESS OF SDRBLOK @VA03757 01323000
  1372. LA R1,0(,R1) CLEAR HI-ORDER BYTE @VA03757 01324000
  1373. CALL DMKFRET RELEASE STORAGE USED BY SDRBLOK @VA03757 01325000
  1374. XC RDEVCTRS,RDEVCTRS CLEAR POINTER TO SDRBLOK @VA03757 01326000
  1375. BR R5 RETURN TO IN LINE CODE @VA03757 01327000
  1376. SPACE 01328000
  1377. EJECT 01329000
  1378. *** ROUTINES USED TO BUILD THE ERRBLOK TO PASS TO MODULE 01330000
  1379. *** DMKIOF WHO WILL BUILD AND RECORD THE OBR/MDR RECORD 01331000
  1380. SPACE 01332000
  1381. *** BUILD ERRBLOK FOR OBR PROCESSING 01333000
  1382. SPACE 2 01334000
  1383. USING ERRBLOK,R6 SETUP ADDRESSABILITY FOR ERRBLOK @VA03757 01335000
  1384. USING SDRBLOK,R9 SETUP ADDRESSABILITY FOR SDRBLOK @VA03757 01336000
  1385. ERRBLD EQU * GET SPACE AND BUILD ERRBLOK @VA03757 01337000
  1386. SPACE 01338000
  1387. BAL R3,SPACE GO GET THE SPACE @VA03757 01339000
  1388. BAL R3,OBRMDRCL GO CLEAR THE ERRBLOK @VA03757 01340000
  1389. MVC ERRKEY(3),OBRKEY SET FOR OBR PROCESSING @VA03757 01341000
  1390. BAL R9,GETDATE GET TIME AND DATE @VA03757 01342000
  1391. ICM R9,15,RDEVCTRS PICK UP SDRBLOK ADDRESS @VA03757 01343000
  1392. BZ BYPASS01 BRANCH IF NO SDRBLOK @VA03757 01344000
  1393. MVC ERRSDR,SDRFLAGS MOVE SDR FLAGS TO ERRBLOK @VA03757 01345000
  1394. TM SDRFLAGS,SDRSHRT SHORT OBR TO BE WRITTEN ?? @VA03757 01346000
  1395. BOR R5 YES, RETURN TO IN LINE CODE @VA03757 01347000
  1396. SPACE 2 01348000
  1397. BYPASS01 EQU * GET THE FAILING CCW @VA03757 01349000
  1398. SPACE 01350000
  1399. SR R2,R2 CLEAR WORK REG @VA03757 01351000
  1400. ICM R2,7,IOERCSW+1 GET FAILING CCW ADDRESS PLUS 8 @VA03757 01352000
  1401. S R2,F8 GET FAILING CCW ADDRESS @VA03757 01353000
  1402. LTR R2,R2 IS THIS A VALID FAILING CCW ADDR @VA03757 01354000
  1403. BNP BYPASS02 NO, FORGET ABOUT CCW @VA03757 01355000
  1404. MVC ERRCCW(8),0(R2) MOVE IN FAILING CCW @VA03757 01356000
  1405. SPACE 2 01357000
  1406. BYPASS02 EQU * MOVE IN THE VOLID FROM RDEVBLOK @VA03757 01358000
  1407. MVC ERRVOLID(6),RDEVSER GET THE VOLID LABEL @VA03757 01359000
  1408. SPACE 2 01360000
  1409. OBRIOB EQU * MOVE IN THE IOBLOK @VA03757 01361000
  1410. MVC ERRIOB(64),IOBLOK MOVE IOBLOK TO ERRBLOK @VA03757 01362000
  1411. SPACE 2 01363000
  1412. SR R3,R3 CLEAR LENGTH WORK REG @VA11856 01364010
  1413. LH R3,IOEREXT GET EXTENSION @VA11856 01364020
  1414. LA R3,IOERSIZE(,R3) ADD THE IOERBLOK LENGTH @VA11856 01364030
  1415. SLL R3,3 MULT BY 8 @VA11856 01364040
  1416. N R3,=X'00000FFF' DONT GO CRAZY @VA11856 01364050
  1417. LA R2,ERRIOER POINT TO WHERE @VA11856 01364060
  1418. LA R14,IOERBLOK AND FROM WHERE @VA11856 01364070
  1419. LTR R15,R3 SET UP THE LENGTHS @VA11856 01364080
  1420. BZR R5 NOBYTES ALREADY DONE @VA11856 01364090
  1421. MVCL R2,R14 HANDLE BIG STUFF @VA11856 01364100
  1422. CLC RDEVTYPC(2),P3203 IS IT A 3203 PRINTER?? @V386298 01370000
  1423. BE CLRREG YES--GO CLEAR REGISTERS @V386298 01371000
  1424. CLC RDEVTYPC(2),P3211 IS THIS A 3211 (PRINTER) @VA03757 01372000
  1425. BNER R5 NO, RETURN TO IN LINE CODE @VA03757 01373000
  1426. CLRREG EQU * @V386298 01374000
  1427. SR R2,R2 CLEAR THE WORK REG @VA03757 01375000
  1428. IC R2,CORRCNT GET THE CORRELATION COUNT @VA03757 01376000
  1429. A R2,F1 ADD ONE TO IT @VA03757 01377000
  1430. STC R2,CORRCNT SAVE NEW COUNT @VA03757 01378000
  1431. STC R2,ERRCORR MOVE UPDATED COUNT TO ERRBLOK @VA03757 01379000
  1432. BR R5 RETURN TO IN LINE CODE @VA03757 01380000
  1433. SPACE 01381000
  1434. SPACE 5 01383000
  1435. *** 01384000
  1436. *** BUILD ERRBLOK FOR MDR PROCESSING 01385000
  1437. SPACE 01386000
  1438. MDRBLD EQU * GET SPACE AND BUILD ERRBLOK @VA03757 01387000
  1439. SPACE 01388000
  1440. BAL R3,GETSPACE GO GET SPACE FOR THE ERRBLOK @VA03757 01389000
  1441. USING ERRBLOK,R6 SETUP ADDRESSABILITY FOR ERRBLOK @VA03757 01390000
  1442. BAL R3,OBRMDRCL CLEAR ERRBLOK TO ZEROES @VA03757 01391000
  1443. MVC ERRKEY(3),MDRKEY MARK FOR MDR PROCESSING @VA03757 01392000
  1444. LR R7,R9 GET ADDR OF CONTASK FOR 3270/3705@VA03757 01393000
  1445. BAL R9,GETDATE GET DATE AND TIME RECORD WAS MADE@VA03757 01394000
  1446. LR R9,R7 RESTORE CONTASK ADDRESS @VA03757 01395000
  1447. CLI RDEVTYPC,CLASURO IS IT A 3800 ? @V60B9BA 01396000
  1448. BE CONTURO XFER IF SO @V60B9BA 01397000
  1449. CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE CLASS @VA03757 01398000
  1450. BNE MDRCONTK NO, MOVE 3705 DEPENDENT DATA @VA03757 01399000
  1451. CONTURO MVC ERRMIOB(64),IOBLOK MOVE IOBLOK INTO ERRBLOK @V60B9BA 01400000
  1452. SPACE 2 01401000
  1453. MDRVIOER EQU * MOVE IN IOERBLOKS @VA03757 01402000
  1454. LA R3,ERRMIOER GET ADDRESS INTO ERRBLOK @VA03757 01403000
  1455. LR R2,R4 GET ADDRESS OF IOERBLOK @VA03757 01404000
  1456. MDRMOVE LA R15,IOERSIZE LENGTH OF IOERBLOK @VA03757 01405000
  1457. AH R15,IOEREXT-IOERBLOK(R2) ADD EXTENTION SIZE @VA03757 01406000
  1458. SLL R15,3 CONVERT TO BYTES @VA03757 01407000
  1459. BCTR R15,R0 DECREMENT COUNT BY ONE @VA03757 01408000
  1460. EX R15,MDRIOER GO MOVE IOERBLOK INTO ERRBLOK @VA03757 01409000
  1461. CLI RDEVTYPC,CLASURO IS IT A 3800 ? @V60B9BA 01410000
  1462. BER R5 YES, ERRBLOK BUILT @V60B9BA 01411000
  1463. CLI RDEVTYPE,TYP2305 2305 ???? @VA03757 01412000
  1464. BER R5 YES, ERRBLOK BUILT @VA03757 01413000
  1465. LA R3,1(R15,R3) UPDATE ERRBLOK POINTER @VA03757 01414000
  1466. ICM R2,15,IOERPNT-IOERBLOK(R2) GET NEXT IOERBLOK @VA03757 01415000
  1467. BNZ MDRMOVE IF ANOTHER IOERBLOK, GO MOVE IT @VA03757 01416000
  1468. BR R5 ALL DONE, RETURN TO IN LINE CODE @VA03757 01417000
  1469. SPACE 01418000
  1470. MDRIOER MVC 0(0,R3),0(R2) MOVE IOERBLOK TO ERRBLOK @VA03757 01419000
  1471. SPACE 1 01420000
  1472. MDRCONTK EQU * MOVE DEPENDENT DATA FROM CONTASK @VA03757 01421000
  1473. USING CONCCW3,R9 SETUP ADRESSABILITY FOR CONTASK @VA03757 01422000
  1474. SR R2,R2 CLEAR WORK REG @VA03757 01423000
  1475. LH R2,CONDCNT GET BUFFER LENGTH @VA03757 01424000
  1476. STH R2,ERRCCNT SAVE BUFFER LENGTH IN ERRBLOK @VA03757 01425000
  1477. BCTR R2,R0 SUBTRACT ONE - EXECUTE INST. @VA03757 01426000
  1478. EX R2,MOVCONT MOVE BUFFER INTO MDR RECORD @VA03757 01427000
  1479. BR R5 RETURN TO IN LINE CODE @VA03757 01428000
  1480. SPACE 1 01429000
  1481. MOVCONT MVC 18(0,R6),CONDATA MOVE BUFFER INTO ERRBLOK @VA03757 01430000
  1482. DROP R9 DROP BASE REGISTER FOR CONTASK @VA03757 01431000
  1483. SPACE 3 01432000
  1484. USING SDRBLOK,R9 ADDRESSABILITY FOR SDRBLOK @VA03757 01433000
  1485. SPACE 01434000
  1486. SPACE EQU * GET STORAGE FOR ERRBLOK (OBR) @VA03757 01435000
  1487. LA R1,ERRHEADR+20 ERRBLOK HEADER SIZE + LENGTH FLD @VA03757 01436000
  1488. ICM R9,15,RDEVCTRS GET ADDRESS OF SDRBLOK @VA03757 01437000
  1489. BZ BYPASS03 BR IF IT DOESNT EXIST @VA03757 01438000
  1490. TM SDRFLAGS,SDRSHRT CREATE SHORT OBR ?? @VA03757 01439000
  1491. BNO BYPASS03 NO, THEN NEED EXTENSION @VA07931 01440000
  1492. ICM R0,15,SAVER1 IS THERE A PARMLIST? @VA07931 01441000
  1493. BZ CONVDWD NO, THEN GET REGULAR SIZE BLOK @VA07931 01442000
  1494. LA R1,16(,R1) YES, MAKE ROOM FOR PARMLIST @VA07931 01443000
  1495. B CONVDWD GO GET IT @VA07931 01444000
  1496. BYPASS03 EQU * @VA03757 01445000
  1497. LH R1,IOEREXT GET IOERBLOK EXT SIZE @VA07816 01446000
  1498. LA R1,ERRSIZE+1(0,R1) ADD SIZE OF ERRBLOK+ LENGTH @VA03757 01447000
  1499. B CALLFRE GET STORAGE FOR ERRBLOK @VA03757 01448000
  1500. SPACE 2 01449000
  1501. GETSPACE EQU * GET SPACE FOR ERRBLOK (MDR) @VA03757 01450000
  1502. CLI RDEVTYPC,CLASURO IS IT A 3800 ? @V60B9BA 01451000
  1503. BE STGDASD YES, GET SPACE FOR RECD @V60B9BA 01452000
  1504. CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE CLASS @VA03757 01453000
  1505. BE STGDASD YES, GET SPACE FOR DASD RECORD @VA03757 01454000
  1506. LR R9,R1 GET ADDRESS OF CONTASK @VA03757 01455000
  1507. LA R1,ERRHEADR+6 LENGTH OF HEADER & LENGTH FIELD @VA03757 01456000
  1508. USING CONCCW3,R9 SETUP ADDRESSABILTY FOR CONTASK @VA03757 01457000
  1509. AH R1,CONDCNT ADD BUFFER LENGTH TO HEADER @VA03757 01458000
  1510. B CONVDWD GO CONVERT LENGTH TO DOUBLEWORDS @VA03757 01459000
  1511. DROP R9 DROP CONTASK BASE REGISTER @VA03757 01460000
  1512. SPACE 1 01461000
  1513. STGDASD EQU * GET SPACE FOR DASD ERRBLOK @VA03757 01462000
  1514. LR R7,R4 GET CURRENT IOERBLOK POINTER @VA03757 01463000
  1515. LA R1,ERRMSIZE-IOERSIZE+1 ERRBLOK SIZE MINUS THE @VA03757 01464000
  1516. * IOERBLOK SIZE PLUS LENGTH FIELD 01465000
  1517. DEPSTG EQU * GET LENGTH OF DEPENDENT AREA @VA03757 01466000
  1518. LA R1,IOERSIZE(R1) NOW ADD IOERBLOK SIZE @VA03757 01467000
  1519. AH R1,IOEREXT-IOERBLOK(R7) ADD EXTENTION SIZE @VA03757 01468000
  1520. CLI RDEVTYPC,CLASURO IS IT A 3800 ? @V60B9BA 01469000
  1521. BE CALLFRE XFER IF SO @V60B9BA 01470000
  1522. CLI RDEVTYPE,TYP2305 IS THIS A 2305 ??? @VA03757 01471000
  1523. BE CALLFRE YES, GO GET ERRBLOK @VA03757 01472000
  1524. ICM R7,15,IOERPNT-IOERBLOK(R7) GET NEXT IOERBLOK @VA03757 01473000
  1525. BNZ DEPSTG THERE IS ANOTHER IOERBLOK @VA03757 01474000
  1526. B CALLFRE NOW GO GET STORAGE FOR THE @VA03757 01475000
  1527. * ERRBLOK 01476000
  1528. SPACE 01477000
  1529. CONVDWD EQU * CONVERT LENGTH TO DOUBLEWORDS @VA03757 01478000
  1530. A R1,F7 UPDATE BY ONE DOUBLEWORD @VA03757 01479000
  1531. SRL R1,3 GET NUMBER OF DOUBLEWORDS @VA03757 01480000
  1532. CALLFRE EQU * @VA03757 01481000
  1533. LR R0,R1 ... @VA03757 01482000
  1534. CALL DMKFREE GET STORAGE FOR ERRBLOK @VA03757 01483000
  1535. BR R3 RETURN TO IN LINE CODE @VA03757 01484000
  1536. SPACE 2 01485000
  1537. SPACE 2 01486000
  1538. OBRMDRCL EQU * CLEAR OBR/MDR RECORD AREA @VA03358 01487000
  1539. LR R7,R0 LENGTH IN DOUBLEWORDS OF RECORD @VA03358 01488000
  1540. SLL R7,3 GET ACTUAL LENGTH OF RECORD @VA03358 01489000
  1541. S R7,F4 SUBTRACT LENGTH FIELD FROM SIZE @VA03358 01490000
  1542. ST R7,0(,R1) SAVE LENGTH OF RECORD IN RECORD @VA03358 01491000
  1543. LA R6,4(,R1) GET ADDRESS OF RECORD BUILD AREA @VA03358 01492000
  1544. BCTR R7,R0 SUBTRACT TWO BYTES FROM SIZE, @VA03358 01493000
  1545. BCTR R7,R0 BECAUSE OF EXECUTE INSTRUCTION @VA03358 01494000
  1546. MVI 0(R6),X'00' SET FIRST BYTE IN RECORD TO ZERO @VA03358 01495000
  1547. C R7,F255 DOES COUNT EXCEEDS 255 @VA03358 01496000
  1548. BNH *+8 NO, BYPASS SETTING COUNT TO 255 @VA03358 01497000
  1549. LA R7,255 SET COUNT VALUE TO MAXIMUM @VA03358 01498000
  1550. EX R7,OBMDRCLR CLEAR OBR/MDR RECORD AREA @VA03358 01499000
  1551. BR R3 RETURN TO IN LINE CODE @VA03358 01500000
  1552. SPACE 1 01501000
  1553. OBMDRCLR MVC 1(0,R6),0(R6) CLEAR OBR/MDR RECORD AREA @VA03358 01502000
  1554. SPACE 2 01503000
  1555. FRETRECD EQU * RELEASE THE ERROR RECORD @VA03358 01504000
  1556. LR R1,R6 GET ADDRESS OF ERROR RECORD @VA03358 01505000
  1557. LR R0,R7 LENGTH OF RECORD IN DOUBLEWORDS @VA03358 01506000
  1558. CALL DMKFRET RELEASE THE ERROR RECORD STORAGE @VA03358 01507000
  1559. LTR R5,R5 IS THE FLAG REGISTER SET TO ZERO @VA03358 01508000
  1560. BZR R4 YES, RETURN TO IN LINE CODE @VA03358 01509000
  1561. BAL R5,COMEXIT RETURN TO CALLER @VA03358 01510000
  1562. SPACE 2 01511000
  1563. GETCPEX EQU * GET SPACE FOR CPEXBLOK @VA03358 01512000
  1564. LA R0,CPEXSIZE GET SIZE IN DOUBLEWORDS @VA03358 01513000
  1565. CALL DMKFREE GET STORAGE FOR CPEXBLOK @VA03358 01514000
  1566. USING CPEXBLOK,R1 SET UP ADDRESSABILITY FOR CPEXBLK@VA03358 01515000
  1567. STM R0,R15,CPEXREGS SAVE ALL REGISTERS IN CPEXBLOK @VA03358 01516000
  1568. ST R4,CPEXADD SET UP RETURN ADDR AFTER UNSTACK @VA03358 01517000
  1569. SLR R4,R4 CLEAR REGISTER R4 @VA03358 01518000
  1570. ST R4,CPEXFPNT CLEAR POINTER TO NEXT CPEXBLOK @VA03358 01519000
  1571. BR R5 RETURN TO IN LINE CODE @VA03358 01520000
  1572. DROP R1 DROP CPEXBLOK BASE REGISTER @VA03358 01521000
  1573. SPACE 2 01522000
  1574. QUECPEX EQU * QUE CPEXBLOK OFF RECORDING QUE @VA03358 01523000
  1575. LR R4,R3 GET POINTER TO RECORDING QUE @VA03358 01524000
  1576. ICM R3,15,0(R3) GET POINTER TO NEXT CPEXBLOK @VA03358 01525000
  1577. BNZ QUECPEX YES, GET POINTER TO NEXT CPEXBLOK@VA03358 01526000
  1578. ST R1,0(,R4) QUE CPEXBLOK AT THE END OF CHAIN @VA03358 01527000
  1579. BR R5 RETURN TO IN LINE CODE @VA03358 01528000
  1580. SPACE 2 01529000
  1581. INTREC EQU * HANDLE INTENSIVE RECORDING @VA03358 01530000
  1582. TM VMCLEVEL,VMCLASSF IS THIS A CLASS 'F' USER @VA03358 01531000
  1583. BZR R5 NO, RETURN TO IN LINE CODE @VA03358 01532000
  1584. TM IOBFLAG,IOBCP WAS REQUEST INITIATED BY CP @VA03358 01533000
  1585. BOR R5 YES, RETURN TO IN LINE CODE @VA03358 01534000
  1586. TM RDEVSTAT,RDEVIRM IS INTENSIVE RECORDING ON @VA03358 01535000
  1587. BZ COMEXIT NO, RETURN TO CALLER @VA03358 01536000
  1588. L R7,DMKIOEIR ADDR OF INTENSIVE RECORDING BLOCK@VA03358 01537000
  1589. USING IRMBLOK,R7 @VA03358 01538000
  1590. CLC IOBRADD(2),IRMRLADD REC. REQ. FOR DEV. ADDR @VA03358 01539000
  1591. BNE COMEXIT NO, RETURN TO CALLER @VA03358 01540000
  1592. SR R3,R3 CLEAR REG 3 @VA03358 01541000
  1593. IC R3,IRMBYT1 PICK UP FIRST SENSE BYTE PARM @VA03358 01542000
  1594. IC R3,IOERDATA(R3) PICK UP PROPER SENSE BYTE @VA03358 01543000
  1595. STC R3,CHECKER SAVE SENSE BYTE @VA03358 01544000
  1596. IC R3,IRMBIT1 PICK UP FIRST SENSE BIT PARM @VA03358 01545000
  1597. IC R3,BITABL(R3) PICK UP EQUIVALENT MASK @VA03358 01546000
  1598. EX R3,SNSTEST STORE AND TEST ERROR BITS @VA03358 01547000
  1599. BO SNSERFND YES, CHECK FOR 'AND' PARAMETER @VA03358 01548000
  1600. TM IRMFLG,IRMOR NO - WAS THE 'OR' PARM SPECIFIED @VA03358 01549000
  1601. BZ COMEXIT NO, DON'T RECORD THIS ERROR @VA03358 01550000
  1602. B PARM2CHK YES - CHECK THE SECOND PARM @VA03358 01551000
  1603. SNSERFND EQU * HANDLE CORRECT SENSE BYTE @VA03358 01552000
  1604. TM IRMFLG,IRMAND WAS THE 'AND' PARM SPECIFIED ? @VA03358 01553000
  1605. BZ OCCURCHK NO, CHECK THE USER LIMIT VALUE @VA03358 01554000
  1606. PARM2CHK EQU * CHECK THE SECOND PARMETER @VA03358 01555000
  1607. IC R3,IRMBYT2 PICK UP 2ND BYTE PARM @VA03358 01556000
  1608. IC R3,IOERDATA(R3) PICK UP SENSE BYTE @VA03358 01557000
  1609. STC R3,CHECKER SAVE SENSE BYTE @VA03358 01558000
  1610. IC R3,IRMBIT2 PICK UP 2ND SENSE BIT PARM @VA03358 01559000
  1611. IC R3,BITABL(R3) PICK UP MASK FOR TEST @VA03358 01560000
  1612. EX R3,SNSTEST IS THERE AN ERROR PRESENT @VA03358 01561000
  1613. BNO COMEXIT NO, RETURN TO CALLER @VA03358 01562000
  1614. OCCURCHK EQU * CHECK THE USER'S LIMIT VALUE @VA03358 01563000
  1615. LH R5,IRMLMTCT GET LIMIT COUNT @VA03358 01564000
  1616. LA R5,1(,R5) ADD 1 TO COUNT @VA03358 01565000
  1617. STH R5,IRMLMTCT PUT UPDATED COUNT BACK. @VA03358 01566000
  1618. CLI IRMMAXCT,X'00' IS THIS THE FIRST TIME? @VA03816 01567000
  1619. BE RECSTRT @VA03816 01568000
  1620. CH R5,IRMLMT COMPARE CTR TO LIMIT SET BY USER @VA03358 01569000
  1621. BL COMEXIT IF LOW, EXIT @VA03816 01570000
  1622. SR R3,R3 ZERO R3 @VA03816 01571000
  1623. STH R3,IRMLMTCT CLEAR LIMIT COUNTER @VA03358 01572000
  1624. IC R5,IRMMAXCT PICK UP TOTAL RECORDS RECORDED @VA03358 01573000
  1625. LA R5,1(,R5) ADD 1 @VA03358 01574000
  1626. STC R5,IRMMAXCT SAVE COUNT @VA03358 01575000
  1627. CLI IRMMAXCT,10 HAVE WE RECORDED 10 ERRORS ? @VA03358 01576000
  1628. BNE OBRRECD NO, CONTINUE RECORDING OBR RECORD@VA03358 01577000
  1629. SWITCH SWITCH TO MAIN PROCESSOR @V407510 01578000
  1630. NI RDEVSTAT,255-RDEVIRM TURN INTENS. REC. OFF @VA03816 01579000
  1631. LA R0,IRMSIZE GET SIZE OF IRMBLOK @VA03816 01580000
  1632. LR R1,R7 GET ADDRESS OF IRMBLOK @VA03816 01581000
  1633. CALL DMKFRET FRET IRMBLOK @VA03816 01582000
  1634. SR R1,R1 @VA03816 01583000
  1635. ST R1,DMKIOEIR ZERO IRMBLOK POINTER @VA03816 01584000
  1636. BAL R5,OBRRECD GO FORMAT AND BUILD OBR RECORD @VA03358 01585000
  1637. SPACE 1 01586000
  1638. RECSTRT EQU * @VA03358 01587000
  1639. STC R5,IRMMAXCT SAVE IT @VA03358 01588000
  1640. BAL R5,OBRRECD GO FORMAT AND BUILD OBR RECORD @VA03358 01589000
  1641. SPACE 1 01590000
  1642. SNSTEST TM CHECKER,X'00' CHECK FOR ERROR PRESENT @VA03358 01591000
  1643. SPACE 2 01592000
  1644. GETDATE EQU * GET DATE AND TIME VALUE @VA03358 01593000
  1645. STCK OSDATE STORE PRESENT TOD CLOCK @VA03358 01594000
  1646. BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 01595000
  1647. GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 01596000
  1648. CLOCKOK EQU * @VA04301 01597000
  1649. LM R2,R3,OSDATE GET THE CLOCK VALUE @VA03358 01598000
  1650. SRDL R2,12 SHIFT DOWN FOR ADJUST @VA03358 01599000
  1651. L R14,=A(DMKSYSTZ) ADDRESS OF GMT DIFFERENCE @VA03358 01600000
  1652. L R15,0(,R14) GET GMT DIFFERENCE @VA03358 01601000
  1653. LCR R15,R15 MAKE VALUE POSITIVE @VA03358 01602000
  1654. SR R14,R14 CLEAR WORK REGISTER @VA03358 01603000
  1655. M R14,=F'1000000' CONVERT GMT DIFF. TO MICROSEC @VA03358 01604000
  1656. SLR R3,R15 ADJUST TIME VALUE @VA03358 01605000
  1657. BC 11,*+8 ... @VA03358 01606000
  1658. SL R2,F1 ... @VA03358 01607000
  1659. SLR R2,R14 GET TIME VALUE @VA03358 01608000
  1660. SLDL R2,12 SHIFT IT BACK @VA03358 01609000
  1661. STM R2,R3,8(R6) SAVE TOD CLOCK VALUE IN RECORD @VA03358 01610000
  1662. BR R9 RETURN TO IN LINE CODE @VA03358 01611000
  1663. SPACE 2 01612000
  1664. FRETIOER EQU * RELEASE THE IOERBLOK @VA03358 01613000
  1665. LTR R10,R10 IS THERE AN IOBLOK POINTER @VA03358 01614000
  1666. BZR R5 NO, RETURN TO IN LINE CODE @VA03358 01615000
  1667. TM IOBFLAG,IOBCP IS THIS A CP GENERATED REQUEST @VA03358 01616000
  1668. BZR R5 NO, RETURN TO IN LINE CODE @VA03358 01617000
  1669. ICM R4,15,IOBIOER GET ADDRESS OF IOERBLOK @VA03358 01618000
  1670. BZR R5 NO PTR, RETURN TO IN LINE CODE @VA03358 01619000
  1671. FRETNXT EQU * RELEASE IOERBLOK @VA03358 01620000
  1672. L R3,IOERPNT GET POINTER TO NEXT IOERBLOK @VA03358 01621000
  1673. TM IOERCSW+5,CCC+CDC+IFCC IS THIS CHANNEL ERROR @VA03358 01622000
  1674. BZ NOCHAN NO, GO RELEASE IOERBLOK @VA03358 01623000
  1675. L R0,IOERCCRL PICK UP SIZE OF CCH RECORD @V508690 01624000
  1676. ICM R1,15,IOERCCRA GET ADDR OF CCH RECORD @V508690 01625000
  1677. BZ NOCHAN IF ZERO, BYPASS RELEASING STORAGE@VA03358 01626000
  1678. CALL DMKFRET FRET THE CCH RECORD @VA03358 01627000
  1679. NOCHAN EQU * @VA03358 01628000
  1680. LR R1,R4 GET ADDRESS OF IOERBLOK @VA03358 01629000
  1681. LA R0,IOERSIZE FRET THE IOERBLOK @VA03358 01630000
  1682. AH R0,IOEREXT ADD SIZE OF EXTENSION @VA03358 01631000
  1683. CALL DMKFRET FRET THE IOERBLOK @VA03358 01632000
  1684. LTR R4,R3 POINT TO THE NEXT IOERBLOK @VA03358 01633000
  1685. BNZ FRETNXT YES, GO FRET IOERBLOK @VA03358 01634000
  1686. XC IOBIOER(4),IOBIOER CLEAR IOERBLOK POINTER @VA03358 01635000
  1687. BR R5 RETURN TO IN LINE CODE @VA03358 01636000
  1688. SPACE 2 01637000
  1689. FRETCON EQU * RELEASE CONTASK BUFFER @VA03358 01638000
  1690. LR R1,R9 GET ADDRESS OF CONTASK @VA03358 01639000
  1691. LH R0,0(,R1) SIZE IN DOUBLEWORDS OF CONTASK @VA03358 01640000
  1692. CALL DMKFRET RELEASE BUFFER SPACE @VA03358 01641000
  1693. BR R5 RETURN TO IN LINE CODE @VA03358 01642000
  1694. SPACE 2 01643000
  1695. NREXIT EQU * RELEASE IOERBLOK FOR CP GENERATED@VA03358 01644000
  1696. BAL R5,FRETIOER RELEASE IOERBLOK @VA03358 01645000
  1697. COMEXIT EQU * RETURN TO CALLER @VA03358 01646000
  1698. EXIT @VA03358 01647000
  1699. EJECT 01648000
  1700. * THE DCS MUST REMAIN IN THE ORDERS BELOW. DMKIOFIN DEPENDENTS 01649000
  1701. * ON THE CYLINDER, PAGE AND DEVICE TYPE FIELDS (CCPD) BEING 01650000
  1702. * CONTINUOUS IN STORAGE. 01651000
  1703. SPACE 1 01652000
  1704. DS 0D @VA03358 01653000
  1705. OSDATE DC XL4'00000000',XL2'0006',PL2'1' USE FOR TOD CLK @VA03358 01654000
  1706. DMKIOEIQ DC F'00' REC. QUE CHAIN FOR OBR/MDR RECS. @VA03358 01655000
  1707. DMKIOENQ DC F'00' REC. QUE CHAIN FOR ENVIR. RECORDS@VA03358 01656000
  1708. DMKIOEMQ DC F'00' REC. QUE CHAIN FOR MCH RECORDS @VA03358 01657000
  1709. DMKIOECQ DC F'00' REC. QUE CHAIN FOR CCH RECORDS @VA03358 01658000
  1710. DMKIOERQ DC F'00' QUE CHAIN FOR ERASE REQUESTS @VA03358 01659000
  1711. DMKIOESQ DC F'00' QUEUE CHAIN FOR UPDATE REQUESTS @VA03757 01660000
  1712. DMKIOEVQ DC F'00' REC. QUE CHAIN FOR SVC76 RECORDS @VA03358 01661000
  1713. DMKIOEIR DC F'00' PTR. TO INTENSIVE RECORDING BLOCK@VA03358 01662000
  1714. DMKIOEEP DC X'000000' ERROR RECORDING CCP (CYL+PAGE) @V5088AA 01663000
  1715. DMKIOETY DC X'00' SYSRES DEV TYPE (USED FOR PAGING)@VA03358 01664000
  1716. DMKIOEHS DC X'00000000' ADDR OF 1ST ERROR RECORD (CCPD)@V5088AA 01665000
  1717. * OR PLACE WHERE IT SHOULD BE @V5088AA 01666000
  1718. * WRITTEN IF NONE IS THERE NOW @V5088AA 01667000
  1719. * (LOGREC HDRSTART VALUE) @V5088AA 01668000
  1720. DMKIOECT DC X'0000' NUMBER OF ERROR RECORDING CYLS @V5088AA 01669000
  1721. DMKIOEFR DC X'00' INDICATION OF WHETHER FRAMES @V5088AA 01670000
  1722. * EXIST ON ERROR RECORDING CYLS 01671000
  1723. DMKIOEMX DC X'00' NO. OF PAGES (MAX) ON A CYLINDER @VA03358 01672000
  1724. DMKIOENI DC X'00' NO. OF PAGES (90% FULL) ON A CYL.@VA03358 01673000
  1725. DMKIOERP DC X'00' RECORDING IN PROGRESS FLAG @VA03358 01674000
  1726. DMKIOEES DC X'00' RECORDING AREA FULL FLAG @V5088AA 01675000
  1727. DMKIOEIF DC X'00' INFOFLAG @VA10241 01675100
  1728. DMKIOECE DC H'00' CECYL @VA10241 01675200
  1729. DC X'01' CEPAGE @VA10241 01675300
  1730. CHECKER DC X'00' USE FOR INTENSIVE RECORDING @VA03358 01676000
  1731. CORRCNT DC X'00' CORRELATION NO. FOR 3211 RECORDS @VA03358 01677000
  1732. * AND 3203 RECORDS 01678000
  1733. P3211 DC X'1042' 3211 PRINTER @VA03358 01679000
  1734. P3203 DC X'1043' 3203 PRINTER @V386298 01680000
  1735. OBRKEY DC X'306640' OBR-CLASS/SYSTEM/REL. NUMBER @VA09371 01681000
  1736. MDRKEY DC X'916640' MDR-CLASS/SYSTEM/REL. NUMBER @VA09371 01682000
  1737. BITABL DC X'8040201008040201' MASK TABLE FOR INTENSIVE REC@VA03358 01683000
  1738. SPACE 1 01684000
  1739. EJECT 01685000
  1740. LTORG @VA03358 01686000
  1741. EJECT 01687000
  1742. COPY OBRRECN @VA03358 01688000
  1743. COPY SDRBLOK @VA03757 01689000
  1744. COPY TNSREC @VA03358 01690000
  1745. COPY EQU @VA03358 01691000
  1746. COPY RBLOKS @VA03358 01692000
  1747. COPY SAVE @VA03358 01693000
  1748. COPY IOBLOKS @VA03358 01694000
  1749. COPY IOER @VA03757 01695000
  1750. SPACE 01696000
  1751. COPY ERRBLOK @VA03757 01697000
  1752. SPACE 01698000
  1753. COPY VMBLOK @VA03358 01699000
  1754. COPY DEVTYPES @VA03358 01700000
  1755. PSA @VA03358 01701000
  1756. END 01702000