Table of Contents

DMKISM Source

References

Source Listing

DMKISM.ASSEMBLE.txt
  1. ISM TITLE 'DMKISM (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKISM 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO LOCATE THE ISAM MODIFYING READ IN THE TRANSLATED CCW STRING 00010000
  11. * PASSED BY DMKCCW AND VERIFY THAT IT IS A TRUE ISAM READ. 00011000
  12. * THE REAL CCW STRING (IN RCWTASKS) IS THEN MODIFIED SO THAT 00012000
  13. * THE RESULTING CCW STRING RUNS WITH SELF MODIFYING I/O USING 00013000
  14. * DATA IN THE VIRTUAL MACHINE STORAGE AREA. 00014000
  15. * 00015000
  16. * ATTRIBUTES - 00016000
  17. * 00017000
  18. * RE-ENTRANT, PAGEABLE, CALLED VIA SVC 00018000
  19. * 00019000
  20. * ENTRY POINT - 00020000
  21. * 00021000
  22. * DMKISMTR - FIND AND MODIFY ISAM CCW STRING 00022000
  23. * 00023000
  24. * ENTRY CONDITIONS - 00024000
  25. * 00025000
  26. * R10 = ADDRESS OF IOBLOK 00026000
  27. * R11 = ADDRESS OF VMBLOK 00027000
  28. * R12 = ADDRESSABILITY FOR DMKISM 00028000
  29. * R13 = STANDARD SAVEAREA 00029000
  30. * 00030000
  31. * EXIT CONDITIONS - 00031000
  32. * 00032000
  33. * THE RCWTASK CCW'S HAVE BEEN MODIFIED TO REFERENCE THE 00033000
  34. * VIRTUAL CCW'S SO THAT A SELF MODIFYING SEQUENCE WILL RUN 00034000
  35. * THE IOBIRA HAS BEEN SET TO DMKUNTIS SO THAT UPON 00035000
  36. * COMPLETION OF THE I/O OPERATION CONTROL IS RECEIVED 00036000
  37. * TO UNDO THE MODIFICATIONS AND THEN PROCESS NORMALLY 00037000
  38. * 00038000
  39. * CALLS TO OTHER ROUTINES - 00039000
  40. * 00040000
  41. * DMKFREE - TO GET SAVE BLOCK 00041000
  42. * 00042000
  43. * EXTERNAL REFERENCES - 00043000
  44. * 00044000
  45. * DMKUNTIS - TO GET RETURN ADDRESS 00045000
  46. * 00046000
  47. * TABLES/WORK AREAS - 00047000
  48. * 00048000
  49. * RCWTASK - GET CCW STRINGS, MODIFY 00049000
  50. * SAVE BLOCK - SAVE DATA FOR RESTORE BY DMKUNTIS 00050000
  51. EJECT 00051000
  52. * REGISTER USAGE - 00052000
  53. * 00053000
  54. * R0 - SCRATCH 00054000
  55. * R1 - SCRATCH 00055000
  56. * R2 - REAL ADDRESS OF MODIFIED ISAM CCW 00056000
  57. * R3 - ADDRESS OF ISAM CONTROL WORD AT END OF RCWTASK 00057000
  58. * R4 - RCWTASK BEING EXAMINED FOR ISAM READ 00058000
  59. * R5 - SCRATCH, AND FIRST CCW IN NEXT RCWTASK 00059000
  60. * R6 - LAST CCW IN RCWTASK ( TIC), POINTED TO BY R4 00060000
  61. * R7 - NEXT RCWTASK, AND CCWS IN NEXT RCWTASK 00061000
  62. * R8 - REAL ADDRESS OF ISAM SEEK ARGUMENT 00062000
  63. * R9 - DATA ADDRESS OF ISAM READ CCW 00063000
  64. * R10 - IOBLOK ADDRESSING 00064000
  65. * R11 - VMBLOK ADDRESSING 00065000
  66. * R12 - BASE ADDRESSING 00066000
  67. * R13 - SAVEAREA ADDRESSING 00067000
  68. * R14 - SCRATCH 00068000
  69. * R15 - SCRATCH 00069000
  70. * 00070000
  71. * NOTES - 00071000
  72. * 00072000
  73. * ONLY VERY SPECIFIC ISAM CCWS ARE HANDLED BY THIS PROGRAM 00073000
  74. * THE CCW STRING IS EXAMINED VERY CAREFULLY AND MUST PASS 00074000
  75. * SEVERAL TESTS BEFORE BEING ACCEPTED AS AN ISAM SEQUENCE 00075000
  76. * ONLY THE FOLLOWING OS ISAM CCW STRINGS WILL BE ACCEPTED 00076000
  77. * ( REFER TO OS ISAM PLM FOR DETAILS) 00077000
  78. * 00078000
  79. * CHANNEL PROGRAMS: CP1, CP4/5, CP6, CP8, CP23, CP26 00079000
  80. EJECT 00080000
  81. * OPERATION - 00081000
  82. * 00082000
  83. * 1. EACH RCWTASK IS CHECKED TO FIND THE ISAM CONTROL 00083000
  84. * WORD AT THE END 00084000
  85. * 2. IF THE CONTROL WORD IS NON-ZERO IT CONTAINS THE 00085000
  86. * DISPLACEMENT FROM THE BEGINNING OF THE RCWTASK OF THE 00086000
  87. * ISAM MODIFYING READ. 00087000
  88. * 3. ONCE FOUND THE CCW STRINGS HAVE TO PASS A NUMBER 00088000
  89. * OF TESTS FOR VERIFICATION OF ISAM SEQUENCE. 00089000
  90. * THE FOLLOWING TEST ARE MADE 00090000
  91. * A. THE LAST CCW IN RCWTASK IS A TIC 00091000
  92. * B. THIS RCWTASK POINT TO ANOTHER (NEXT) RCWTASK 00092000
  93. * C. THE NEXT RCWTASK HAS AT LEAST 2 CCWS 00093000
  94. * E. THE FIRST CCW (MODIFIED) IS IN REAL STORAGE 00094000
  95. * F. THE LAST BYTE OF THE ISAM READ OVERLAYS THE 00095000
  96. * OP CODE OF THE FIRST CCW IN THE NEXT RCWTASK 00096000
  97. * G. THE TIC IN THE RCWTASK IS TO THE NEXT RCWTASK 00097000
  98. * FIRST CCW 00098000
  99. * H. THE DATA ADDRESS OF THE FIRST CCW IN THE NEXT RCWTASK 00099000
  100. * (USUALLY A SEEK) IS THE SAME AS THE DATA ADDRESS OF 00100000
  101. * THE ISAM READ PLUS 1, AND IS IN REAL STORAGE 00101000
  102. * 00102000
  103. * 4. IF ALL THE TESTS ARE SATISFIED THE RCWTASK IS ACCEPTED 00103000
  104. * AS AN ISAM MODIFYING SEQUENCE 00104000
  105. * 5. GET AN EIGHT DOUBLE-WORD WORK AREA FROM FREE STORAGE. 00105000
  106. * 6. COPY THE ISAM READ AND TIC CCW'S INTO THE WORK AREA. 00106000
  107. * 7. CHANGE THE READ TO READ INTO THE WORK AREA BLOCK. 00107000
  108. * 8. CHANGE THE TIC TO GO TO A COPY OF THE SEEK WHICH IS 00108000
  109. * BUILT INTO THE WORK AREA, ALSO. 00109000
  110. * 9. BUILD THE SEEK IN THE WORK AREA, USING THE WORK AREA 00110000
  111. * READ BUFFER AS A SEEK ARGUMENT. 00111000
  112. * 10. ADD A TIC FOLLOWING THE SEEK TO RE-JOIN THE ALREADY 00112000
  113. * TRANSLATED STRING (SECOND RCWTASK). 00113000
  114. * 13. SET THE IOBIRA TO DMKUNTIS 00114000
  115. * 14. REPEAT THE STEPS FOR ALL RCWTASKS 00115000
  116. * 15. EXIT TO DMKCCW WHEN COMPLETE 00116000
  117. *. 00117000
  118. EJECT 00118000
  119. DMKISM CSECT 00119000
  120. EXTRN DMKUNTIS 00120000
  121. EXTRN DMKPTRUL @VA02130 00121000
  122. USING PSA,R0 00122000
  123. USING VMBLOK,R11 00123000
  124. USING SAVEAREA,R13 00124000
  125. USING DMKISM,R12 00125000
  126. USING IOBLOK,R10 00126000
  127. USING RCWTASK,R4 00127000
  128. SPACE 00128000
  129. DC CL8'DMKISM' MODULE IDENTIFIER 00129000
  130. SPACE 00130000
  131. DMKISMTR RELOC 00131000
  132. L R4,IOBCAW GET CCW START 00132000
  133. LA R4,0(,R4) CLEAR HI BYTE 00133000
  134. SL R4,F16 BACKUP TO HEADER OF RCWTASK 00134000
  135. * R4 NOW POINTS TO FIRST RCWTASK 00135000
  136. * NOW FIND A NON-ZERO ISAM WORD IN THE RCWTASK 00136000
  137. * IF FOUND R3 POINTS TO THE WORD 00137000
  138. FINDISM LR R3,R4 RCWTASK ADDRESS IN R3 00138000
  139. LH R15,RCWCCNT GET RCWTASK SIZE 00139000
  140. SLL R15,3 SIZE IN BYTES 00140000
  141. ALR R3,R15 POINT R3 TO END OF RCWTASK 00141000
  142. SL R3,F4 BACK OFF 4 BYTES TO ISAM WORD 00142000
  143. L R0,0(,R3) LOAD THE ISAM WORD 00143000
  144. LTR R0,R0 TEST IF ANY ISAM READ IN THIS RCWTASK 00144000
  145. BNZ CHKRD YES, CHECK OUT AND MODIFY 00145000
  146. NXTASK L R4,RCWPNT GET NEXT TCWTASK 00146000
  147. LTR R4,R4 TEST FOR LAST ONE 00147000
  148. BNZ FINDISM NO, CHECK OUT THIS RCWTASK 00148000
  149. EXIT ALL DONE 00149000
  150. EJECT 00150000
  151. * NOW CHECK OUT THE ISAM READ TO SEE IF IT REALLY IS ONE 00151000
  152. CHKRD LR R6,R4 GET ADDRESS OF RCWTASK 00152000
  153. LH R15,RCWRCNT GET REAL CCW COUNT 00153000
  154. LA R15,1(,R15) ONE MORE FOR HEADER SKIP 00154000
  155. SLL R15,3 GET SIZE IN BYTES 00155000
  156. ALR R6,R15 POINT TO LAST CCW IN RCWTASK 00156000
  157. * R6 NOW POINTS TO LAST CCW IN RCWTASK (TIC) 00157000
  158. * LAST CCW IN RCWTASK MUST BE A TIC FOR ISAM 00158000
  159. CLI 0(R6),X'08' IS IT A TIC ?? 00159000
  160. BE CHKTSK YES, CHECK THE READ 00160000
  161. * THE CCW STRING IS NOT A TRUE ISAM SEQUENCE 00161000
  162. NOTISM SR R0,R0 CLEAR 00162000
  163. ST R0,0(,R3) ZERO ISAM WORD 00163000
  164. B NXTASK CHECK OUT NEXT RCWTASK 00164000
  165. SPACE 2 00165000
  166. * TEST FOR ANOTHER RCWTASK .... MUST BE FOR ISAM 00166000
  167. CHKTSK L R7,RCWPNT GET ADDRESS OF NEXT RCWTASK 00167000
  168. LTR R7,R7 TEST FOR MORE 00168000
  169. BZ NOTISM NO MORE, NOT ISAM CCW STRING 00169000
  170. * R7 NOW POINTS TO NEXT RCWTASK 00170000
  171. * NEXT RCWTASK MUST HAVE AT LEAST 2 CCW 00171000
  172. LH R15,RCWRCNT-RCWTASK(R7) GET CCW COUNT 00172000
  173. C R15,F2 IS IT AT LEAST 2 ?? 00173000
  174. BL NOTISM NO, NOT ISAM 00174000
  175. L R5,RCWVCAW-RCWTASK(R7) GET VIRTUAL CCW ADDRESS 00175000
  176. LA R1,0(0,R5) SAVE VIRTUAL ADDRESS IN GR1 @VA02334 00176000
  177. LA R8,4096-8 BOUNDARY DISPLACEMENT 00177000
  178. NR R5,R8 AND OUT ALL BUT DISPLACEMENT 00178000
  179. * TEST THAT VIRTUAL ADDRESS IS IN REAL STORAGE 00179000
  180. TRANS 2,1 GET REAL STORAGE ADDRESS OF ISAM MOD CCW 00180000
  181. BC 6,NOTISM NOT IN STORAGE, NOT ISAM 00181000
  182. * TEST THAT CCW DATA ADDRESS EQUALS CCW ADDRESS MINUS EIGHT 00182000
  183. SL R1,F8 VIRTUAL CCW ADDRESS IS IN GR1 @VA02334 00183000
  184. CLM R1,7,1(R2) IS THE DATA ADDRESS CORRECT ? @VA02334 00184000
  185. BNE NOTISM NO -- NOT AN ISAM CHANNEL PROGRAM@VA02334 00185000
  186. TRANS 8,1 GET THE SEEK ARGUMENT REAL ADDR @VA02334 00186000
  187. BC 6,NOTISM DATA AREA MUST BE IN CORE @VA02334 00187000
  188. * TEST ISAM READ LAST BYTE INTO ISAM MOD CCW 00188000
  189. LR R9,R4 GET ADDRESS OF RCWTASK 00189000
  190. AL R9,0(,R3) ADD DISPLACEMENT - POINT TO ISAM READ 00190000
  191. TM 4(R9),IDA IDA SET IN ISAM READ ? (REMEMBER C.C.) 00191000
  192. L R9,0(,R9) GET ADDRESS OF READ DATA (OR IDAL) 00192000
  193. BZ CHKTSK1 IF IDA NOT SET, JUST BUMP R9 BY 9. 00193000
  194. L R9,4(,R9) IDA SET, GET THE 2ND IDAW 00194000
  195. CL R5,F8 SEEK CCW SHOULD BE 1ST OR 2ND CCW IN PAGE 00195000
  196. BL CHKTSK2 IF R5 (DISP. ONLY) < 8, IT'S THE FIRST. 00196000
  197. BH NOTISM IF R5 > 8, IT CAN'T BE REAL ISAM. 00197000
  198. ALR R9,R5 R5=8, BUMP 2ND IDAW ADDR BY 8 TO CHECK 00198000
  199. B CHKTSK2 10TH BYTE, AND GO CHECK FOR MATCHING ADDR 00199000
  200. CHKTSK1 LA R9,9(,R9) IDA NOT SET - CLEAR HIGH BYTE & ADD NINE 00200000
  201. CHKTSK2 CLR R9,R2 REAL ADDRESSES SHOULD BE THE SAME 00201000
  202. BNE NOTISM NOT AN ISAM SEQUENCE 00202000
  203. * TEST TIC ADDRESS IS TO NEXT RCWTASK FIRST CCW 00203000
  204. L R5,0(,R6) GET TIC ADDRESS 00204000
  205. LA R5,0(,R5) CLEAR HI BYTE 00205000
  206. LA R7,16(,R7) POINT TO FIRST CCW IN NEXT RCWTASK 00206000
  207. CLR R5,R7 TIC MUST GO TO THIS CCW 00207000
  208. BNE NOTISM NOT ISAM SEQUENCE 00208000
  209. * R2 POINTS TO ISAM MODIFIED CCW 00209000
  210. * R3 POINTS TO ISAM WORD IN RCWTASK 00210000
  211. * R4 POINTS TO RCWTASK FOR ISAM READ 00211000
  212. * R5 = R7 POINTS TO FIRST CCW IN NEXT RCWTASK 00212000
  213. * R6 POINTS TO CP TIC IN RCWTASK 00213000
  214. * R8 POINTS TO ISAM SEEK ARGUMENT 00214000
  215. SPACE 2 00215000
  216. * FOR SURE THIS IS AN ISAM MODIFYING READ CCW SEQUENCE 00216000
  217. LA R0,ISMSIZE SIZE OF WORK-AREA BLOCK @VA02130 00217000
  218. CALL DMKFREE ALLOCATE SOME FREE STORAGE @VA02130 00218000
  219. XC 0(ISMSIZE*8,R1),0(R1) CLEAR IT TO ZEROES @VA02130 00219000
  220. USING ISMBLOK,R1 @VA02130 00220000
  221. L R7,0(0,R3) GR7 = DISPLACEMENT TO ISAM READ @VA02130 00221000
  222. ST R1,0(0,R3) SAVE ISMBLOK ADDR IN ISAM WORD @VA02130 00222000
  223. ALR R7,R4 GR7 = ADDR OF ACTUAL ISAM READ @VA02130 00223000
  224. ST R7,ISMRDAD SAVE ADDRESS OF ISAM READ @VA02130 00224000
  225. ST R6,ISMTCAD SAVE ADDRESS OF CP TIC @VA02130 00225000
  226. MVC ISMREAD(8),0(R7) SAVE THE TRANSLATED READ @VA02130 00226000
  227. MVC ISMRTIC(8),0(R6) SAVE THE TRANSLATED TIC @VA02130 00227000
  228. SR R9,R9 CLEAR ADDRESS REGISTER @VA05299 00228100
  229. ICM R9,7,ISMREAD+1 GET READ DATA ADDRESS @VA05299 00228200
  230. TM ISMREAD+4,IDA IS IT AN IDA LIST ? @VA05299 00228300
  231. BO ISMIDA YES,A BIT TRICKY @VA05299 00228400
  232. MVC ISMRBUF(10),0(R9) MOVE DATA TO ISMBLOK @VA05299 00228500
  233. B SETREAD SET ISAM READ @VA05299 00228600
  234. ISMIDA L R14,0(R9) GET FIRST IDA WORD @VA05299 00228700
  235. LA R15,10 TO MOVE 10 BYTES @VA05299 00228800
  236. LA R0,ISMRBUF BUFFER ADDRESS @VA05299 00228900
  237. LA R1,4095(R14) ROUND UP TO PAGE @VA05299 00229000
  238. N R1,XPAGNUM LEAVE ONLY PAGE NUMBER @VA05299 00229100
  239. SR R1,R14 COUNT IN FIRST PAGE @VA05299 00229200
  240. MVCL R0,R14 MOVE DATA TO BUFFER @VA05299 00229300
  241. LR R1,R15 SET REMAINING COUNT @VA05299 00229400
  242. L R14,4(R9) GET SECOND IDA WORD @VA05299 00229500
  243. MVCL R0,R14 REMAINING DATA TO BUFFER @VA05299 00229600
  244. L R1,0(R3) RESTORE ISMBLOK ADDRESS @VA05299 00229700
  245. SETREAD LA R0,ISMRBUF READ DATA ADDRESS @VA05299 00229800
  246. STCM R0,7,1(R7) REPLACE PREVIOUS ADDRESS IN CCW @VA02130 00232000
  247. NI 4(R7),255-(CD+IDA) NO CHAIN DATA OR IDAL @VA02130 00233000
  248. LA R0,ISMODSK NEW ADDRESS FOR TIC CCW @VA02130 00234000
  249. STCM R0,7,1(R6) . . . @VA02130 00235000
  250. MVC ISMODSK+4(4),4(R5) COPY SECOND HALF OF SEEK @VA02130 00236000
  251. LA R0,ISMVARG NEW ARGUMENT ADDR FOR THE SEEK @VA02130 00237000
  252. ST R0,ISMODSK NOTE -- VALID ISAM OPCODE X'00' @VA02130 00238000
  253. LA R5,8(0,R5) GR5 = ADDRESS TO RE-JOIN STRING @VA02130 00239000
  254. CLI 0(R5),X'08' TIC TO ANOTHER TIC ? @VA02130 00240000
  255. BNE *+8 NO -- O.K. AS IS @VA02130 00241000
  256. L R5,0(0,R5) USE THE NEXT TIC ADDRESS DIRECTLY@VA02130 00242000
  257. ST R5,ISMNTIC SETUP TO RE-JOIN OLD CCW STRING @VA02130 00243000
  258. MVI ISMNTIC,X'08' . . . VIA A TIC CCW @VA02130 00244000
  259. EJECT 00245000
  260. LA R9,2(0,R8) REAL ADDRESS OF SEEK ARG + 2 @VA02130 00246000
  261. L R7,IOBCAW GET CCW START @VA03618 00247000
  262. LA R7,0(,R7) CLEAR HI BYTE @VA03618 00248000
  263. SL R7,F16 BACKUP TO HEADER OF RCWTASK @VA03618 00249000
  264. * R7 NOW POINTS TO THE FIRST RCWTASK AND WE WILL 00250000
  265. * RE-EXAMINE THE ENTIRE STRING. 00251000
  266. ISMSRCH EQU * LOOK FOR SEARCH CCW'S ALSO @VA02130 00252000
  267. L R7,RCWPNT-RCWTASK(,R7) NEXT RCWTASK @VA02130 00253000
  268. LTR R7,R7 HAVE WE REACHED THE END ? @VA02130 00254000
  269. BNP FIXIRAD YES - FIX UP THE IRA AND GO @VA02130 00255000
  270. LH R8,RCWRCNT-RCWTASK(,R7) COUNT OF REAL CCW'S @VA02130 00256000
  271. LA R6,RCWCCW-RCWTASK(,R7) POINT TO FIRST CCW @VA02130 00257000
  272. ISMFIND EQU * LOOK FOR SEARCH POINTING TO SEEK @VA02130 00258000
  273. CLM R9,7,1(R6) SAME ARGUMENTS AS MOVED SEEK ? @VA02130 00259000
  274. BNE ISMCONT NO -- CONTINUE @VA02130 00260000
  275. LA R0,5(0) LENGTH MUST BE FIVE FOR SEARCH @VA02130 00261000
  276. CH R0,6(0,R6) ...OTHERWISE WE WON'T ALLOW IT @VA02130 00262000
  277. BL ISMCONT MORE THAN FIVE, HOWEVER WE @VA04002 00263000
  278. BCTR R0,R0 WILL ACCEPT A LENGTH OF @VA04002 00264000
  279. CH R0,6(0,R6) FOUR FOR A SEARCH @VA04002 00265000
  280. BH ISMCONT LESS THAN FOUR...JUST CONTINUE @VA04002 00266000
  281. TM 5(R6),RCWIO IS THE DATA PAGE LOCKED? @VA03169 00267000
  282. BZ ISMCONT NO - NO NEED TO UNLOCK IT @VA03169 00268000
  283. LA R0,ISMVARG+2 CORRESPONDING REAL ADDRESS @VA02130 00269000
  284. STCM R0,7,1(R6) CHANGE DATA ADDRESS IN THE CCW @VA02130 00270000
  285. LR R2,R9 REAL ADDRESS TO GR2 FOR DMKPTR @VA02130 00271000
  286. CALL DMKPTRUL UNLOCK IT ONCE @VA02130 00272000
  287. NI 5(R6),255-RCWIO NO UNLOCK IS NECESSARY @VA02130 00273000
  288. * N.B. - PAGE IS STILL LOCKED FROM ISAM READ @VA02130 00274000
  289. * - FIVE-BYTE AREA CANNOT CROSS PAGE BOUNDARY @VA02130 00275000
  290. ISMCONT EQU * SEARCH ALL CCW'S @VA02130 00276000
  291. LA R6,8(0,R6) NEXT REAL CCW @VA02130 00277000
  292. BCT R8,ISMFIND KEEP LOOKING @VA02130 00278000
  293. B ISMSRCH CHECK ALL THE RCWTASK'S @VA02130 00279000
  294. DROP R1 @VA02130 00280000
  295. SPACE 00281000
  296. FIXIRAD EQU * @VA02130 00282000
  297. * THE CCW STRING HAS BEEN MODIFIED 00283000
  298. * NOW CHANGE IRA TO GET CONTROL TO UNDO IT LATER 00284000
  299. L R0,IOBIRA GET RETURN ADDRESS 00285000
  300. CL R0,=A(DMKUNTIS) IOBIRA ALREADY = A(DMKUNTIS) ? 00286000
  301. BE NXTASK IF YES, LEAVE WELL ENOUGH ALONE. 00287000
  302. ICM R0,8,IOBCAW SAVE USER'S CAW PROT. KEY @VA02130 00288000
  303. ST R0,IOBMISC SAVE 00289000
  304. L R0,=A(DMKUNTIS) RETURN ADDRESS 00290000
  305. ST R0,IOBIRA SET RETURN ADDRESS IN IOBLOK 00291000
  306. MVI IOBCAW,X'00' ZERO KEY TO READ IN REAL CORE @VA02130 00292000
  307. B NXTASK CHECK NEXT RCWTASK 00293000
  308. SPACE 3 00294000
  309. LTORG 00295000
  310. EJECT 00296000
  311. ISMBLOK DSECT , WORK AREA FOR ISAM CCW STRINGS @VA02130 00297000
  312. SPACE 00298000
  313. ISMRDAD DS 1F ADDRESS OF THE ISAM READ CCW @VA02130 00299000
  314. ISMTCAD DS 1F ADDRESS OF TIC TO NEXT RCWTASK @VA02130 00300000
  315. DS XL7 (PADDING) @VA02130 00301000
  316. ISMRBUF DS 1X START OF 10-BYTE READ BUFFER @VA02130 00302000
  317. ISMVARG DS XL8 SEEK ARGUMENTS FOR FOLLOWING CCW @VA02130 00303000
  318. ISMODSK DS 1D CCW WHICH WILL BE MODIFIED @VA02130 00304000
  319. ISMNTIC DS 1D TIC TO RE-JOIN ORIGINAL STRING @VA02130 00305000
  320. ISMREAD DS 1D SAVE AREA FOR ORIGINAL READ CCW @VA02130 00306000
  321. ISMRTIC DS 1D SAVE AREA FOR ORIGINAL TIC CCW @VA02130 00307000
  322. SPACE 00308000
  323. ISMSIZE EQU (*-ISMBLOK)/8 BLOCK SIZE IN DOUBLE-WORDS @VA02130 00309000
  324. EJECT 00310000
  325. COPY IOBLOKS 00311000
  326. COPY VMBLOK 00312000
  327. COPY EQU 00313000
  328. COPY SAVE 00314000
  329. PSA 00315000
  330. END 00316000