User Tools

Site Tools


ibm:vm370-lib:cp:dmktrd.assemble_src

DMKTRD Source

References

Source Listing

DMKTRD.ASSEMBLE.txt
  1. TRD TITLE 'DMKTRD (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKTRD 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO PROVIDE A VIRTUAL MACHINE WITH THE FACILITY TO TRACE 00010000
  11. * I/O INSTRUCTIONS WITH OUTPUT ON THE PRINTER, TERMINAL, 00011000
  12. * OR BOTH. 00014000
  13. * 00015000
  14. * ATTRIBUTES - 00016000
  15. * 00017000
  16. * REENTRANT, PAGEABLE, CALLED VIA SVC 00018000
  17. * 00019000
  18. * ENTRY POINTS - 00020000
  19. * 00021000
  20. * DMKTRDSI - PROCESS AN I/O OPERATION (SIO, TIO, HIO, TCH) 00026000
  21. * 00027000
  22. * DMKTRDWT - SERIALIZATION ENTRY FOR I/O AND CCW TRACING 00028000
  23. * 00033000
  24. * ENTRY CONDITIONS - 00034000
  25. * 00035000
  26. * FOR ALL ENTRY POINTS: 00036000
  27. * 00037000
  28. * GPR 11 = ADDRESS OF VIRTUAL MACHINE VMBLOK 00038000
  29. * GPR 12 = ENTRY POINT ADDRESSABILITY 00039000
  30. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00040000
  31. * 00041000
  32. * FOR DMKTRDSI (SIO,TIO,HIO,TCH) ENTRY POINT: 00071000
  33. * 00072000
  34. * GPR 1 = VIRTUAL DEVICE ADDRESS 00073000
  35. * GPR 8 = ADDRESS OF VDEVBLOK 00074000
  36. * GPR 10 = ADDRESS OF IOBLOK (FOR 'SIO' WITH CC = 0) 00075000
  37. * 'VMINST' FIELD (IN VMBLOK) HOLDS THE INSTRUCTION 00076000
  38. * 00077000
  39. * 00078000
  40. * FOR DMKTRDWT ENTRY POINTS: 00079000
  41. * 00080000
  42. * (NO SPECIAL REGISTER REQUIREMENTS OTHER THAN GPR11-13) 00081000
  43. * 00082000
  44. * EXIT CONDITIONS - 00095000
  45. * 00096000
  46. * APPROPRIATE OUTPUT MESSAGES HAVE BEEN GIVEN ON THE USER'S 00102000
  47. * TERMINAL AND/OR VIRTUAL PRINTER; THE USER'S 00103000
  48. * VIRTUAL MACHINE IS IN THE SAME RUNNABLE (OR NON-RUNNABLE) 00106000
  49. * STATE AS IT WOULD BE IF TRACING WERE NOT IN EFFECT. 00107000
  50. EJECT 00108000
  51. * CALLS TO OTHER ROUTINES - 00109000
  52. * 00110000
  53. * DMKQCNWT - WRITE A MESSAGE TO USER TERMINAL 00111000
  54. * DMKVSPRT - WRITE A MESSAGE ON PRINTER 00112000
  55. * DMKCVTBH - CONVERT BINARY FIELDS TO HEXADECIMAL 00113000
  56. * DMKSCNRD - TO GET REAL DEVICE ADDRESS IN CCU FORM 00114000
  57. * DMKSCNVU - TO GET VIRTUAL DEVICE BLOCKS 00115000
  58. * DMKSCNVN - TO GET MNEMONIC NAME OF VIRTUAL DEVICE (E.G. DASD) 00116000
  59. * DMKSCNRN - TO GET MNEMONIC NAME OF REAL DEVICE 00117000
  60. * DMKDSPCH - TO DISPATCH USER 00118000
  61. * DMKNEMOP - TO GET MNEMONIC EQUIVALENT OF A 370 OP CODE 00119000
  62. * DMKFREE - TO GET FREE STORAGE FOR TRACE CONTROL BLOCK 00120000
  63. * DMKFRET - TO RETURN TRACE CONTROL BLOCK TO FREE STORAGE 00121000
  64. * DMKCFMBK - TO INITIATE A READ FROM A TERMINAL 00122000
  65. * DMKPTRAN - TO BRING A USER PAGE INTO MEMORY WHEN NEEDED 00123000
  66. * DMKCCWSB - TO OBTAIN SEEK ARGS FOR CCW TRACING 00128000
  67. * DMKVATRN - TO PERFORM VIRTUAL ADDRESS TRANSLATION AS NEEDED 00131000
  68. * DMKPSASP - TO CHECK FOR STORAGE PROTECTION 00132000
  69. * 00133000
  70. * EXTERNAL REFERENCES - 00134000
  71. * 00135000
  72. * NONE 00136000
  73. * 00137000
  74. * TABLES / WORK AREAS - 00138000
  75. * 00139000
  76. * TRACE CONTROL BLOCK 00140000
  77. * 00141000
  78. * REGISTER USAGE - 00142000
  79. * 00143000
  80. * GPR 9 = ADDRESS OF TRACE CONTROL BLOCK 00144000
  81. * GPR 10 = ADDRESS OF IOBLOK (WHERE APPLICABLE) 00145000
  82. * GPR 12 - BASE REGISTER 00146000
  83. * GPR 13 - ADDRESS OF STANDARD SAVE AREA 00147000
  84. * 00148000
  85. * OTHER REGISTERS = WORK REGISTERS 00149000
  86. EJECT 00150000
  87. * NOTES - 00151000
  88. * 00152000
  89. * SEE "RESTRICTIONS" (PRECEDING "ERROR MESSAGES") 00153000
  90. * 00154000
  91. * VARIOUS TRACE OPTIONS CAN BE SET CUMULATIVELY BY ISSUING 00155000
  92. * SUCCESSIVE TRACE COMMANDS; FOR EXAMPLE TO HAVE BRANCH 00156000
  93. * TRACING ON THE TERMINAL (WITH RUN ON) AND FULL INSTRUCTION 00157000
  94. * TRACING ON THE PRINTER THE FOLLOWING COULD BE ISSUED 00158000
  95. * (ASSUMING THE USER IS IN CP MODE): 00159000
  96. * 00160000
  97. * TRACE BRANCH TERMINAL RUN 00161000
  98. * TRACE INSTRUCT PRINTER 00162000
  99. * BEGIN (OR SIMILAR CP COMMAND) 00163000
  100. * 00164000
  101. * FOR FULL INSTRUCTION OR BRANCH TRACING, ANY INSTRUCTION 00165000
  102. * WHICH MODIFIES THE NEXT BYTE IN STORAGE (FOLLOWING THE 00166000
  103. * INSTRUCTION) WILL CAUSE ERRONEOUS RESULTS, USUALLY 00167000
  104. * RESULTING IN TRACING BEING TERMINATED UNTIL AN INTERRUPT 00168000
  105. * OCCURS. 00169000
  106. * 00170000
  107. * SIMILARLY, AN INSTRUCTION WHICH EXAMINES EITHER (OR BOTH) 00171000
  108. * OF THE NEXT TWO BYTES FOLLOWING THE INSTRUCTION (WHEN 00172000
  109. * RUNNING WITH FULL INSTRUCTION OR BRANCH TRACING) WILL 00173000
  110. * OBTAIN ERRONEOUS DATA. 00174000
  111. * 00175000
  112. * AN INSTRUCTION WHICH EXECUTES THE NEXT INSTRUCTION IN 00176000
  113. * SEQUENCE, ON THE OTHER HAND, WILL BE HANDLED SATISFACTORILY, 00177000
  114. * EXCEPT THAT ONLY THE FIRST EXECUTION OF THE INSTRUCTION WILL 00178000
  115. * WILL BE TRACED. (IF NO TRANSFER OCCURS, THE 'EX' DROPS THRU, 00179000
  116. * AND THE INSTRUCTION IS DONE AGAIN IN LINE, IT WILL NOT 00180000
  117. * BE TRACED THE SECOND TIME. TRACING WILL THEN RESUME WITH 00181000
  118. * THE NEXT INSTRUCTION FOLLOWING THE EXECUTED INSTRUCTION.) 00182000
  119. * 00183000
  120. * WHEN SEVERAL TRACE OPTIONS ARE IN EFFECT, THE SAME 00184000
  121. * INSTRUCTION CAN APPEAR IN THE TRACE OUTPUT MORE THAN 00185000
  122. * ONCE. FOR EXAMPLE, IF FULL INSTRUCTION TRACING WERE 00186000
  123. * IN EFFECT, A START I/O (SIO) INSTRUCTION WOULD BE TRACED 00187000
  124. * BEFORE IT IS EXECUTED; SUBSEQUENTLY, WHEN THE SIO HAS 00188000
  125. * BEEN HANDLED BY CP, AND THE CONDITION CODE IS READY 00189000
  126. * TO BE REFLECTED TO THE USER, THE SIO WOULD BE TRACED 00190000
  127. * AGAIN WITH THE USUAL PERTINENT INFORMATION GIVEN FOR 00191000
  128. * THE TRACING OF I/O OPERATIONS (SEE RESPONSES). 00192000
  129. EJECT 00193000
  130. * OPERATION - 00194000
  131. * 00195000
  132. * NOTE: DMKTRACE - INITIALIZE, MODIFY, OR TERMINATE THE TRACE 00196000
  133. * FUNCTION - IS LOCATED IN "DMKTRA" (A SEPARATE MODULE). 00197000
  134. * 00198000
  135. * DMKTRDSI - PROCESS AN I/O OPERATION (SIO, TIO, HIO, TCH) 00229000
  136. * 00230000
  137. * A TRACE OUTPUT LINE IS CONSTRUCTED CONTAINING THE 00231000
  138. * PERTINENT INFORMATION FOR A SIO, TIO, HIO, TCH AT THE POINT 00232000
  139. * AT WHICH THE CONDITION-CODE IS ABOUT TO BE REFLECTED TO THE 00233000
  140. * USER; THE OUTPUT LINE IS THEN PRESENTED TO THE USER IN THE 00234000
  141. * USUAL WAY, EXCEPT THAT IF 'CCW' WAS SPECIFIED, AND A 00235000
  142. * SUCCESSFUL SIO WAS TRACED, THE VIRTUAL MACHINE DOES NOT 00236000
  143. * PAUSE AS USUAL EVEN IF NORUN WAS SPECIFIED, BUT ALLOWS THE 00237000
  144. * CCW TRACING TO BE DONE AS SOON AS PRACTICAL. 00238000
  145. * 00239000
  146. * IF A SUCCESSFUL SIO HAS BEEN TRACED AND CCWS ARE ALSO 00240000
  147. * SPECIFIED, THEN A STRING OF OUTPUT LINES IS GIVEN SHOWING THE 00241000
  148. * VIRTUAL AND REAL CCWS; NO PAUSE IS MADE UNTIL ALL LINES ARE 00242000
  149. * GIVEN; ADDITIONAL LINES ARE GIVEN IF IDA WAS SET FOR 00243000
  150. * THE REAL CCWS (AND VIRTUAL CCWS), OR IF SEEK ARGUMENTS ARE 00244000
  151. * PRESENT. THE VIRTUAL INFORMATION IS GIVEN FIRST, THE REAL 00245000
  152. * INFORMATION ON THE RIGHT SIDE OF THE PRINTOUTS. 00246000
  153. * 00285000
  154. * NOTE: WHEN PRINTING TRACE OUTPUT LINES, IF A SEVERE ERROR 00286000
  155. * (R2 = 8 - FOR SPOOLING SPACE FULL) IS RETURNED BY DMKVSPRT, 00287000
  156. * THEN A FORCED 'TRACE END' IS TRIGGERED TO TERMINATE TRACING. 00288000
  157. EJECT 00289000
  158. * RESPONSES - 00290000
  159. * 00291000
  160. * TERMINAL RESPONSES FOR VARIOUS TRACING SITUATIONS: 00292000
  161. * (SEE KEYS BELOW) 00293000
  162. * 00294000
  163. * 1. I/O INSTRUCTION - SIO/SIOF, TIO, HIO/HDV, OR TCH: 00295000
  164. * 00296000
  165. * A. TCH: 00297000
  166. * 00298000
  167. * I/O VVVVVV TCH 240XXXXX TYPE VADD CC N 00299000
  168. * 00300000
  169. * B. TIO OR HIO/HDV: 00301000
  170. * 00302000
  171. * I/O VVVVVV MNEM 240XXXXX TYPE VADD CC N TYPE RADD CSW XXXX 00303000
  172. * 00304000
  173. * C. SIO/SIOF: 00305000
  174. * 00306000
  175. * I/O VVVVVV MNEM 240XXXXX TYPE VADD CC N TYPE RADD CSW XXXX CAW VV..VV 00307000
  176. * 00308000
  177. * 2. CCW ("IDAL" OR "SEEK" LINES INCLUDED ONLY IF APPLICABLE): 00308050
  178. * 00308100
  179. * CCW VVVVVV XXXXXXXX XXXXXXXX RRRRRR YYYYYYYY YYYYYYYY 00308150
  180. * " IDAL VVVVVVVV VVVVVVVV IDAL 00RRRRRR 00RRRRRR 00308200
  181. * " SEEK XXXXXXXX XXXXXX SEEK YYYYYYYY YYYY 00308250
  182. * 00308300
  183. * VVVVVV = VIRTUAL ADDRESS 00308350
  184. * RRRRRR = REAL ADDRESS 00308400
  185. * XXXXXXXX = VIRTUAL INSTRUCTION, COMMAND, ETC. 00308450
  186. * YYYYYYYY = REAL INSTRUCTION, COMMAND, ETC. 00308500
  187. * ERROR MESSAGES - 00382000
  188. * 00383000
  189. * NONE 00384000
  190. *. 00385000
  191. SPACE 2 00386000
  192. * REVISED "RELOC" MACRO - USES HALFWORDS (TO SAVE SPACE): 00387000
  193. MACRO 00388000
  194. &NAME RELOC 00389000
  195. ENTRY &NAME 00390000
  196. &NAME DS 0H 00391000
  197. USING *,R12 00392000
  198. ENTER 00393000
  199. SH R12,=AL2(&NAME-&SYSECT) 00394000
  200. USING &SYSECT,R12 00395000
  201. MEND 00396000
  202. EJECT 00397000
  203. COPY OPTIONS 00398000
  204. COPY LOCAL 00399000
  205. EJECT 00400000
  206. DMKTRD CSECT LOADER CONTROL 00401000
  207. SPACE 00402000
  208. DC CL8'DMKTRD' MODULE IDENTIFIER 00403000
  209. SPACE 00404000
  210. USING PSA,R0 00405000
  211. USING TREXT,R9 00406000
  212. USING VMBLOK,R11 00407000
  213. USING DMKTRD,R12 00408000
  214. USING SAVEAREA,R13 00409000
  215. * 00410000
  216. EXTRN DMKCVTBH 00411000
  217. EXTRN DMKSYSRM @VA03162 00412000
  218. EXTRN DMKSCNRD,DMKSCNVU,DMKSCNVN,DMKSCNRN 00413000
  219. EXTRN DMKVSPRT 00414000
  220. EXTRN DMKCFMBK 00416000
  221. EXTRN DMKNEMOP 00417000
  222. EXTRN DMKLOCKQ,DMKLOCKD @V200820 00419000
  223. EXTRN DMKPTRUL @V408246 00419100
  224. EXTRN DMKCCWSB 00420000
  225. EXTRN DMKSTKCP @VA07421 00420100
  226. EXTRN DMKVATRN 00421000
  227. * 00423000
  228. * 00426000
  229. SPACE 00455000
  230. DMKTRDSI RELOC PROCESS A SIO/TIO/TCH/HIO 00456000
  231. BAL R14,TRAINIT CALL INITIALIZER SUBROUTINE 00457000
  232. MVC TRLNSIO(3),PFXIO PUT IN PREFIX FOR SIO ETC. 00458000
  233. LH R0,VMINST 1ST 2 BYTES OF SIO (ETC.) INTO R0 00459000
  234. LA R1,TRLNSIO5 POINT TO WHERE TO PUT SIO MNEMONIC 00460000
  235. CALL DMKNEMOP GET 'SIO' 'SIOF' 'TIO' 'HIO' 'HDV' 'TCH' 00461000
  236. LA R5,VMTRSIO SIGNAL IN R5 - DMKTRDSI ENTRY 00462000
  237. L R1,VMPSW+4 VIRTUAL MACHINE PSW ADDRESS FIELD 00463000
  238. SL R1,F4 LESS 4 GIVES ADDRESS OF INSTRUCTION 00464000
  239. TRAJOIN2 STC R5,SAVEWRK1+2 STORE INPUT FLAG BITS 00478000
  240. SR R15,R15 SET TO ZERO @VA07715 00479100
  241. IC R15,TREXCTL1 GET CONTROL FLAG @VA07715 00479200
  242. NR R5,R15 DOES IT MATCH CONTROL FLAG @VA07715 00479300
  243. BNZ TRAJOIN3 IF YES WE HAVE NO PROBLEMS. 00480000
  244. MVC SAVEWRK1+3(1),TREXCTL2 IF NOT, THEN SET BRANCH AND/OR 00481000
  245. NI SAVEWRK1+3,(TREXBRAN+TREXINST) INSTRUCT CONTROL BITS 00482000
  246. TRAJOIN3 CALL DMKCVTBH OLD PSW ADDRESS TO HEX PLEASE 00483000
  247. STH R0,TRLNINT1 STORE 6-BYTE HEX ADDRESS 00484000
  248. STCM R1,B'1111',TRLNINT1+2 @VA07715 00485100
  249. B TRA120 HANDLE SIO/TIO/HIO/TCH @V4M0240 00486000
  250. EJECT 00487000
  251. TRA90 BAL R3,TROUSUB NOW GIVE THE OUTPUT MESSAGE 00555000
  252. * 00556000
  253. TRA92 DS 0H HERE WHEN WE'RE "ALL FINISHED" 00557000
  254. ICM R15,B'0011',TREXTERM PICK UP THE TERMINAL FLAGS @V408246 00558100
  255. BZ TRA94 NOPE, AIM FOR EXIT W/O STOP. @VA00782 00560000
  256. LH R15,TREXRUNF PICK UP STOP/RUN FLAG BITS 00561000
  257. N R15,SAVEWRK1 SHOULD WE STOP OR KEEP RUNNING ? 00562000
  258. BZ TRA96 IF "NORUN", GO CALL DMKCFMBK "BREAK" RTN 00563000
  259. TRA94 CLI SAVEWRK8+3,00 FOR "RUN", ANY ERRORS FROM DMKQCNWT ? 00564000
  260. BE TRA97 IF NOT (NO ATTN HIT BY USER), GO EXIT. 00565000
  261. * 00566000
  262. * TRIGGER A STOP AFTER TRACING THIS EVENT, EITHER BECAUSE 'RUN' FLAG 00567000
  263. * IS NOT SET, OR BECAUSE THE USER HIT ATTENTION DURING TERMINAL OUTPUT: 00568000
  264. TRA96 CLI SAVEWRK2,X'83' IS IT A DIAG ?? 00569000
  265. BNE TRA961 NO, OK 00570000
  266. CLC SAVEWRK2+2(2),F8+2 IS DIAG CONSOLE FUNCTION 00571000
  267. BE TRA97 YES, DONT CALL DMKCFMBK, DIAG WILL DO IT 00572000
  268. TRA961 CALL DMKCFMBK ENTER CONSOLE FUNCTION MODE 00573000
  269. OI SAVEWRK7,VMCFWAIT REMEMBER THAT DMKCFMBK SET VMCFWAIT 00574000
  270. TRA97 EQU * UNLOCK USER'S TREXT BLOCK @V200820 00575000
  271. ST R9,TRALOCK+4 SETUP LOCK "NAME" @V200820 00576000
  272. LA R1,TRALOCK POINT TO IT FOR DMKLOC @V200820 00577000
  273. CALL DMKLOCKD UNLOCK - TRACING FINISHED @V200820 00578000
  274. TRAEXIT DS 0H RESTORE VMRSTAT FLAGBITS (AS NEEDED) BEFORE EXIT: 00580000
  275. OI SAVEWRK7,255-(VMEXWAIT+VMCFWAIT) PRESERVE ALL OTHER BITS 00581000
  276. NC VMRSTAT(1),SAVEWRK7 RESTORE VMEXWAIT|VMCFWAIT AS NEEDED 00582000
  277. TRAEXITR LCTL C1,C1,VMSEG BE SURE CONTROL REG 1 IS CORRECTLY SET, 00583000
  278. TM SAVEWRK8,SETCC SET COND CODE 0 OR NONZERO 00584000
  279. EXIT AND REALLY EXIT. 00585000
  280. EJECT 00611000
  281. TRA120 DS 0H HANDLE SIO/TIO/HIO/TCH CASES: 00612000
  282. MVC TRLNSIO2(3),CLDEV DEFAULT DEVICE-NAME TO 'DEV' 00613000
  283. L R1,VMINST GET 4-BYTE INSTRUCTION 00614000
  284. CALL DMKCVTBH BINARY TO HEX, 00615000
  285. STCM R0,B'1111',TRLNSIO4 STORE IN MESSAGE @VA07715 00616100
  286. STCM R1,B'1111',TRLNSIO4+4 STORE IN MSG @VA07715 00616200
  287. L R1,SAVER1 CALLER'S R1 HOLDS THE VIRTUAL DEVICE ADDR 00617000
  288. CALL DMKCVTBH INTO HEX HE SHALL GO 00618000
  289. ST R1,TRLNSIO3 AND STORE IN MESSAGE 00619000
  290. L R1,SAVER1 PICK UP THAT VIRTUAL DEVICE ADDRESS AGAIN 00620000
  291. CALL DMKSCNVU DO WE HAVE A VIRTUAL DEVICE BLOCK ? 00621000
  292. BNZ TRA122 NOPE - DON'T TRY TO GET NAME, THEN. 00622000
  293. CALL DMKSCNVN YES - GET VIRTUAL DEVICE NAME (E.G. DASD) 00623000
  294. STCM R1,B'1111',TRLNSIO2 STORE IN MESSAGE @VA07715 00624100
  295. TRA122 MVC TRLNSIOB(2),CLCC NOW SET 'CC' IN MESSAGE 00625000
  296. IC R3,VMPSW+4 GET CC ETC. FOR "VANILLA" MACHINE 00626000
  297. TM VMESTAT,VMEXTCM EXTENDED CONTROL MODE NOW ? 00627000
  298. BZ TRA124 NOPE - SIMPLE. 00628000
  299. IC R3,VMPSW+2 GET CC FOR EXTENDED CONTROL MODE MACHINE 00629000
  300. TRA124 SRL R3,4 4 PLACES TO THE RIGHT, GENTLEMEN 00630000
  301. LTR R10,R10 DO WE HAVE AN IOBLOK FROM THE CALLER ? 00631000
  302. BZ TRA125 NOPE - USE R3 AS WE HAVE IT FROM VMPSW 00632000
  303. USING IOBLOK,R10 00633000
  304. IC R3,IOBSTAT YES - GET CONDITION-CODE FROM IOBLOK 00634000
  305. TRA125 N R3,F3 ISOLATE LOW-ORDER 2-BITS OF COND CODE 00636000
  306. LR R1,R3 PLACE IN R1 (REMEMBERING IT IN R3) 00637000
  307. AL R1,F240 + X'F0' = FAST BINARY-TO-DEC FOR 1 DIGIT 00638000
  308. STC R1,TRLNSIOC STORE IN OUTPUT MESSAGE 00639000
  309. CL R3,F3 CONDITION CODE 3 ? 00640000
  310. BE TRA90 IF YES THAT'S THE END. 00641000
  311. CLI VMINST,X'9F' OR A 'TCH' ? 00642000
  312. BE TRA90 IF YES WE'RE ALSO THRU. 00643000
  313. USING VDEVBLOK,R8 R8 STILL HOLDS A (VDEVBLOK) FROM CALLER 00644000
  314. * CHECK FOR POSSIBLE SIMULATED OR SPOOLED DEVICES 00645000
  315. TM VDEVTYPC,CLASTERM+CLASURI+CLASURO+CLASGRAF @VM01006 00646000
  316. BZ TRA126 NO .. 00647000
  317. TM VDEVSTAT,VDEVDED CONTINUE ONLY IF DEDICATED .. 00648000
  318. BZ TRA90 MUST BE SPOOLED OR SIMULATED 00649000
  319. TRA126 EQU * 00650000
  320. MVC SAVEWRK7+1(1),VDEVTYPC SAVE THE DEVICE CLASS 00651000
  321. CLI VDEVTYPC,CLASSPEC CHANNEL TO CHANNEL ADAPTER ? 00652000
  322. BNE TRA126C NO -- NORMAL DEVICE 00653000
  323. LA R4,TRLNSIOD CSW START IF VIRTUAL CTCA 00654000
  324. TM VDEVSTAT,VDEVDED IS THE CTCA DEDICATED ? 00655000
  325. BZ TRA126B NO -- LEAVE OUT REAL DEVICE DATA 00656000
  326. TRA126C EQU * 00657000
  327. L R8,VDEVREAL POINT TO REAL DEVICE BLOCK 00658000
  328. DROP R8 (R8 POINTS TO REAL DEVICE BLOCK NOW) 00659000
  329. LTR R10,R10 DID WE GET AN IOB WITH THIS ONE? @V407438 00659250
  330. BZ TRD126C2 NOPE, THEN GET FIRST PATH CCU @V407438 00659500
  331. LH R1,IOBRADD YA, GET CCU (PATH) THAT IOS USED @V407438 00659750
  332. B TRD126C3 AND CONTINUE @V407438 00660000
  333. SPACE 00660250
  334. TRD126C2 CALL DMKSCNRD GET FIRST PATH CCU @V407438 00660500
  335. TRD126C3 CALL DMKCVTBH CONVERT ADDR TO PRINTABLE HEX @V407438 00660750
  336. DROP R10 NO MORE IOB @V407438 00661000
  337. STCM R1,B'1111',TRLNSIOE STORE IN OUTPUT MSG @VA07715 00662100
  338. CALL DMKSCNRN GET REAL NAME OF DEVICE 00663000
  339. ST R1,TRLNSIOD STORE IN MESSAGE 00664000
  340. LA R4,TRLNSIOF R4 = WHERE TO PUT CAW IF CC = 0 FOR SIO 00665000
  341. TRA126B EQU * 00666000
  342. CL R3,F1 CHECK CONDITION CODE 00667000
  343. BL TRA127 IF CC=0, GO CHECK IF WAS AN SIO ETC. 00668000
  344. BH TRA90 IF CC > 1, THERE'S NO CSW TO HANDLE 00669000
  345. MVC 0(3,R4),CLCSW FOR CC = 1 SHOW THE CSW 00670000
  346. USING IOBLOK,R10 00671000
  347. LA R2,IOBCSW+4 LET R2 POINT TO IOBCSW+4 (IF ANY) 00672000
  348. DROP R10 00673000
  349. LTR R10,R10 DOES AN IOBLOK EXIST ? 00674000
  350. BNZ TRA126A YES - R2 ALL SET, CONVERT TO HEX 00675000
  351. LA R1,CSW+4 NO - GET CSW+4/5 FROM USER'S PAGE 0 00676000
  352. BAL R14,TRANBRNG ... 00677000
  353. TRA126A LH R1,0(,R2) GET ACTUAL CSW+4/5 (FROM THE RIGHT PLACE) 00678000
  354. CALL DMKCVTBH BINARY TO HEX PLEASE 00679000
  355. ST R1,TRLNSIOG-TRLNSIOF(,R4) STORE IN MESSAGE 00680000
  356. LA R4,TRLNSIO9-TRLNSIOF(,R4) R4 = WHERE TO PUT CAW NOW 00681000
  357. * 00682000
  358. TRA127 CLI VMINST,X'9C' IF CC = 0 OR 1, WAS IT AN SIO ? 00683000
  359. BNE TRA90 IF NOT, GIVE MESSAGE AND EXIT. 00684000
  360. MVC 0(3,R4),CLCAW FILL IN 'CAW', 00685000
  361. TRA127A LA R1,CAW FOR 'SIO' (X'9C'), FIND THE USER'S CAW 00686000
  362. BAL R14,TRANBRNG ... 00687000
  363. L R1,0(,R2) ... 00688000
  364. TRA127B CALL DMKCVTBH USER'S CAW BINARY TO HEX 00689000
  365. STM R0,R1,4(R4) AND STORE IN THE MESSAGE 00690000
  366. TM TREXCTL2,TREXCCW IF YES, WAS CCW TRACING WANTED ? 00691000
  367. BZ TRA90 IF NOT JUST GIVE MESSAGE & EXIT. 00692000
  368. LTR R10,R10 MAKE SURE WE HAVE AN IOBLOK 00693000
  369. BNP TRA90 IF NOT, FORGET IT - CAN'T TRACE CCWS. 00694000
  370. BAL R3,TROUSUB SIO, CC=0 OR 1, CCW TRACING - GIVE SIO 00695000
  371. * OUTPUT LINE, AND CONTINUE ... 00696000
  372. EJECT 00697000
  373. * GIVE TRACE OUTPUT FOR A CCW STRING: 00698000
  374. MVI SAVEWRK1+2,0 SHUT OFF SIO TO AVOID TROUSUB @VA00782 00699000
  375. * CONFUSING IMPLIED OPTIONS ABOUT 00700000
  376. * OUTPUT DEVICES. 00701000
  377. MVI SAVEWRK1+3,TREXCCW INDICATE TRACING CCWS 00702000
  378. USING IOBLOK,R10 00703000
  379. L R10,IOBCAW GET POINTER TO FIRST REAL CCW STRING 00704000
  380. DROP R10 (THRU WITH IOBLOK) 00705000
  381. SL R10,F16 BACK UP TO POINT TO BEG OF FIRST RCWTASK 00706000
  382. * 'SL' HANDLES HIGH-ORDER BYTE (IF ANY) IN IOBCAW 00707000
  383. * 00708000
  384. TRA129 BAL R14,BLANKBUF BLANK-FILL THE OUTPUT BUFFER, THEN ... 00709000
  385. USING RCWTASK,R10 R10 REFERENCES RCWTASK 00710000
  386. L R4,RCWVCAW R4 = ADDRESS OF VIRTUAL CCWS 00711000
  387. LH R5,RCWVCNT R5 = COUNT OF VIRTUAL CCWS 00712000
  388. LA R6,RCWCCW R6 = ADDRESS OF REAL CCWS 00713000
  389. LH R7,RCWRCNT R7 = COUNT OF REAL CCWS 00714000
  390. B TRA133 START WITH 1ST VIRTUAL AND REAL CCWS 00715000
  391. * 00716000
  392. * NOTE - SAVEWRK2-3 WILL HOLD THE VIRTUAL CCW 00717000
  393. * SAVEWRK4-5 WILL HOLD THE REAL CCW 00718000
  394. * 00719000
  395. TRA132 DS 0H LOOP TO OBTAIN & PRINT VIRTUAL & REAL CCWS: 00720000
  396. TM SAVEWRK4+5,RCWGEN WAS PREVIOUS REAL CCW CP-GENERATED ? 00721000
  397. BO TRA135 IF YES, DON'T TOUCH THIS VIRTUAL CCW. 00722000
  398. TRA133 MVC SAVEWRK2(8),ZEROES CLEAR VIRTUAL CCW (UNTIL WE GET IT) 00723000
  399. LTR R5,R5 ARE THERE ANY VIRTUAL CCWS LEFT ? 00724000
  400. BNP TRA135 NOPE - DON'T GET ANY NONEXISTENT ONES 00725000
  401. MVC TRLNCCW,PFXCCW HEADING 00726000
  402. LR R1,R4 GET ADDRESS OF VIRTUAL CCW, 00727000
  403. CALL DMKCVTBH BINARY TO HEX 00728000
  404. STH R0,TRLNCCW1 STORE IN OUTPUT MESSAGE (6 BYTES) 00729000
  405. STCM R1,B'1111',TRLNCCW1+2 @VA07715 00730100
  406. LR R1,R4 ADDRESS OF VIRTUAL CCW 00731000
  407. BAL R14,TRANBRNG GET THE CCW FROM SOMEWHERE IN USER CORE 00732000
  408. BNZ TRA134 IF BAD ADDRESS LEAVE IT OUT 00733000
  409. LM R1,R2,0(R2) GET THE VIRTUAL CCW IN R1-R2, 00734000
  410. STM R1,R2,SAVEWRK2 AND SAVE FOR GENERAL USE 00735000
  411. CALL DMKCVTBH 1ST HALF BINARY TO HEX 00736000
  412. STCM R0,B'1111',TRLNCCW2 STORE INTO OUTOUT MSG @VA07715 00737100
  413. STCM R1,B'1111',TRLNCCW2+4 STORE INTO OUTPUT MSG @VA07715 00737200
  414. LR R1,R2 NOW 2ND HALF BINARY TO HEX 00738000
  415. CALL DMKCVTBH ... 00739000
  416. STM R0,R1,TRLNCCW3 AND STORE 00740000
  417. TRA134 LA R4,8(,R4) ADVANCE TO NEXT VIRTUAL CCW FOR NEXT TIME 00741000
  418. BCT R5,TRA136 DECREMENT COUNT AND GO 00742000
  419. B TRA136 GET THE REAL CCW. 00743000
  420. * 00744000
  421. TRA135 MVI TRLNCCW+1,PFXDITTO INDICATE CONTINUATION OF PREVIOUS CCW 00745000
  422. * 00746000
  423. TRA136 LR R1,R6 ADDRESS OF REAL CCW 00747000
  424. CALL DMKCVTBH BINARY TO HEX 00748000
  425. STH R0,TRLNCCW4 STORE 00749000
  426. ST R1,TRLNCCW4+2 ... 00750000
  427. LM R1,R2,0(R6) GET THE REAL CCW IN R1-R2, 00751000
  428. STM R1,R2,SAVEWRK4 AND SAVE FOR GENERAL USE 00752000
  429. CALL DMKCVTBH 1ST HALF BINARY TO HEX 00753000
  430. STCM R0,B'1111',TRLNCCW5 STORE IN OUTPUT MSG @VA07715 00754100
  431. STCM R1,B'1111',TRLNCCW5+4 STORE INTO MSG @VA07715 00754200
  432. LR R1,R2 2ND HALF BINARY TO HEX 00755000
  433. CALL DMKCVTBH ... 00756000
  434. STCM R0,B'1111',TRLNCCW6 STORE INTO OUTPUT MSG @VA07715 00757100
  435. STCM R1,B'1111',TRLNCCW6+4 STORE INTO MESSAGE @VA07715 00757200
  436. BAL R3,TROUSUB OUTPUT THE FINISHED LINE 00758000
  437. BAL R14,BLANKBUF AND RE-INITIALIZE THE MESSAGE BUFFER 00759000
  438. L R3,SAVEWRK4 PICK UP ADDR @VA05047 00760000
  439. LA R3,0(,R3) CLEAR FIRST BYTE @VA05047 00760300
  440. L R14,=A(DMKSYSRM) GET ADDR OF REAL MACHINE SIZE @VA05047 00760600
  441. L R14,0(,R14) REAL MACHINE SIZE @VA05047 00760900
  442. CLR R3,R14 VALID ADDRESS? @VA05047 00761200
  443. BNL TRA138 NO--IGNORE IDA CHECK @VA05047 00761500
  444. TM SAVEWRK4+4,IDA REAL IDA SET IN REAL CCW ? 00762000
  445. BO TRA140 IF YES SHOW REAL IDAL (& VIRTUAL, IF ANY) 00763000
  446. TM SAVEWRK7+1,CLASDASD DASD CLASS ? 00764000
  447. BO TRA150 IF YES CHECK FOR SOME KIND OF SEEK 00765000
  448. TRA138 LA R6,8(,R6) ADVANCE TO NEXT REAL CCW (IF ANY) 00766000
  449. BCT R7,TRA132 ITERATE THRU THE RCWTASK. 00767000
  450. ICM R10,B'1111',RCWPNT GET POINTER TO NEXT RCWTASK @V408246 00768100
  451. BZ TRA139 IF 0, WE'RE ALL DONE (ALMOST) @VA00782 00770000
  452. MVC TRLNCCW,PFXBREAK FOR R10 NONZERO (ANOTHER RCWTASK THERE) 00771000
  453. BAL R3,TROUSUB SHOW A BREAK IN THE CCW STRINGS 00772000
  454. B TRA129 BLANK BUFFER & START THE NEXT RCWTASK. 00773000
  455. SPACE 00774000
  456. TRA139 MVI SAVEWRK1+2,VMTRSIO TELL RUN DETERMINATOR WE'VE @VA00782 00775000
  457. * DONE AN SIO DURING THIS LAP 00776000
  458. B TRA92 AND GO DO IT. @VA00782 00777000
  459. EJECT 00778000
  460. TRA140 DS 0H IDA WAS SET IN THE REAL CCW: 00779000
  461. TM SAVEWRK4,X'08' WAS THE COMMAND A TIC ? 00780000
  462. BZ TRA140C NOPE - CONTINUE. 00781000
  463. TM SAVEWRK4,X'07' MAYBE - CHECK FURTHER 00782000
  464. BZ TRA138 IF = TIC, FORGET THE IDA BIT. 00783000
  465. TRA140C EQU * CONTINUE: 00784000
  466. L R3,FFS R3 NEGATIVE MEANS NO VIRTUAL IDAL 00785000
  467. L R8,SAVEWRK4 GET ADDRESS OF REAL IDAL IN R8 00786000
  468. TM SAVEWRK2+4,IDA WAS VIRTUAL IDA SET ? 00787000
  469. BZ TRA141 IF NOT, USE REAL CCW FOR COUNT 00788000
  470. CLC SAVEWRK2(1),SAVEWRK4 VIRTUAL IDA SET - SAME OP CODE ? 00789000
  471. BNE TRA141 IF NOT, IGNORE VIRTUAL IDAL. 00790000
  472. CLC SAVEWRK2+6(2),SAVEWRK4+6 AND SAME BYTE-COUNT 00791000
  473. BNE TRA141 DON'T TRUST IT IF NOT THE SAME. 00792000
  474. L R1,SAVEWRK2 GET ADDRESS OF VIRTUAL IDAL 00793000
  475. BAL R14,TRANBRNG GET REAL ADDRESS 00794000
  476. BNZ TRA141 IF NO GOOD IGNORE IT. 00795000
  477. LA R3,0(,R1) IF OK, LET R3 POINT TO VIRTUAL IDAL 00796000
  478. L R14,0(,R2) GET FIRST IDAW IN VIRTUAL IDAL 00797000
  479. CL R14,VMSTOR IS ADDRESS IN USER'S STORAGE @V304635 00798000
  480. BL TRA142 IF YES, CONSIDER OK FOR DETERMINING COUNT 00799000
  481. * 00800000
  482. TRA141 L R14,0(,R8) USE FIRST IDAW IN REAL IDAL TO GET COUNT 00801000
  483. * 00802000
  484. TRA142 SLR R15,R15 GET THE BYTE-COUNT 00803000
  485. ICM R15,3,SAVEWRK4+6 ... 00804000
  486. BCTR R15,0 LESS 1 FOR HANDY USE 00805000
  487. IC R0,SAVEWRK4 GET THE OP-CODE 00806000
  488. N R0,F15 ISOLATE LOW-ORDER 4 BITS 00807000
  489. CLM R0,1,LOW12 IS IT '12' = X'0C' = READ BACKWARD ? 00808000
  490. BNE TRA144 NOT THIS TIME. 00809000
  491. LR R0,R15 BYTE-COUNT INTO R0, 00810000
  492. LR R15,R14 LET R15 = STARTING-ADDRESS OF RD/BACKWARD 00811000
  493. SR R14,R0 AND R14 = ENDING-ADDRESS (LAST BYTE READ) 00812000
  494. B TRA145 NOW COMPUTE HOW MANY IDAWS THERE WILL BE 00813000
  495. * 00814000
  496. TRA144 AR R15,R14 R15 = ENDING ADDRESS (FWD DIRECTION CCW) 00815000
  497. * 00816000
  498. TRA145 STH R7,SAVEWRK7+2 REMEMBER R7 REAL-CCW-COUNT 00817000
  499. N R14,X2048BND ISOLATE STARTING & ENDING ADDRESSES 00818000
  500. N R15,X2048BND TO 2048-BYTE BOUNDARIES 00819000
  501. SLR R15,R14 GET END ADDRESS MINUS STARTING ADDRESS 00820000
  502. LA R15,0(,R15) ALLOW STORAGE WRAP-AROUND, PREVENT 00821000
  503. * PROGRAM CHECK IF R14 > R15 ... 00822000
  504. SRL R15,11 SHIFTED RIGHT 11 = NO. OF CROSSOVERS 00823000
  505. LA R7,1(,R15) PLUS ONE = NUMBER OF IDAWS THERE MUST BE. 00824000
  506. * (WHEW - BUT WE'VE GOT THE NEEDED NUMBER.) 00825000
  507. * LOOP TO PRINT REAL (AND VIRTUAL, IF ANY) IDALS: 00826000
  508. * R3 = VIRTUAL ADDRESS OF FIRST VIRTUAL IDAW 00827000
  509. * R7 = COUNT OF IDAWS THERE MUST BE 00828000
  510. * R8 = REAL ADDRESS OF FIRST REAL IDAW 00829000
  511. * R4-R6 AS IN USE BY MAIN CCW-PRINTING ROUTINE 00830000
  512. * R7 FROM MAIN CCW-PRINTING ROUTINE SAVED IN SAVEWRK7+2 00831000
  513. * 00832000
  514. TRA146 MVI TRLNIDAL+1,PFXIDAL IDAL PREFIX INTO OUTPUT MESSAGE 00833000
  515. LTR R1,R3 ANY VIRTUAL IDAL AT ALL ? 00834000
  516. BM TRA147 IF R3 NEGATIVE, FORGET IT 00835000
  517. BAL R14,TRANBRNG GET REAL ADDRESS OF VIRTUAL IDAW 00836000
  518. BNZ TRA147 IF ADDRESSING ERROR, FORGET IT. 00837000
  519. L R1,0(,R2) OK, PICK UP THE IDAW 00838000
  520. CALL DMKCVTBH BINARY TO HEX PLEASE 00839000
  521. STCM R0,B'1111',TRLNIDA2 STORE INTO OUTOUT MSG @VA07715 00840100
  522. STCM R1,B'1111',TRLNIDA2+4 STORE INTO OUTPUT MSG @VA07715 00840200
  523. MVC TRLNIDA1,=CL4'IDAL' AND STORE IDENTIFIER IN MESSAGE 00841000
  524. LA R3,4(,R3) ADVANCE TO NEXT VIRTUAL IDAW (IF ANY) 00842000
  525. CL R7,F1 ANY IDAWS LEFT ? 00843000
  526. BNH TRA147 NOPE - JUST THE ONE WE JUST DID. 00844000
  527. LR R1,R3 SOME LEFT - GET THE NEXT ONE 00845000
  528. BAL R14,TRANBRNG ... 00846000
  529. BNZ TRA147 IF ADDRESSING ERROR, FORGET IT. 00847000
  530. L R1,0(,R2) OK, PICK UP THE IDAW 00848000
  531. CALL DMKCVTBH BINARY TO HEX 00849000
  532. STM R0,R1,TRLNIDA3 STORE IN MESSAGE 00850000
  533. LA R3,4(,R3) ADVANCE TO NEXT VIRTUAL IDAW 00851000
  534. * 00852000
  535. TRA147 MVC TRLNIDA4,=CL4'IDAL' IDENTIFIER TO MESSAGE 00853000
  536. L R1,0(,R8) FIRST REAL IDAW INTO R1, 00854000
  537. CALL DMKCVTBH BINARY TO HEX 00855000
  538. STCM R0,B'1111',TRLNIDA5 STORE IN OUTPUT MSG @VA07715 00856100
  539. STCM R1,B'1111',TRLNIDA5+4 STORE INTO MSG @VA07715 00856200
  540. CL R7,F1 ANY IDAWS LEFT ? 00857000
  541. BNH TRA148 NOPE - JUST THE ONE WE JUST DID. 00858000
  542. L R1,4(,R8) PICK UP NEXT IDAW 00859000
  543. CALL DMKCVTBH BINARY TO HEX 00860000
  544. STCM R0,B'1111',TRLNIDA6 STORE INTO OUTPUT MSG @VA07715 00861100
  545. STCM R1,B'1111',TRLNIDA6+4 STORE INTO MESSAGE @VA07715 00861200
  546. TRA148 LA R8,8(,R8) SET FOR NEXT PAIR OF IDAWS (IF ANY) 00862000
  547. ST R3,SAVEWRK6 REMEMBER R3, 00863000
  548. BAL R3,TROUSUB OUTPUT THE FINISHED LINE 00864000
  549. BAL R14,BLANKBUF AND REINITIALIZE THE MESSAGE BUFFER 00865000
  550. L R3,SAVEWRK6 RESTORE R3 00866000
  551. S R7,F2 TWO LESS IDAWS TO DO 00867000
  552. BP TRA146 IF > 0, STILL SOME LEFT TO DO. 00868000
  553. LH R7,SAVEWRK7+2 ALL DONE, RESTORE R7 00869000
  554. B TRA138 WHEN FINISHED, ADVANCE TO NEXT CCW. 00870000
  555. EJECT 00871000
  556. TRA150 DS 0H DASD CLASS, LOOK FOR SOME KIND OF SEEK: 00872000
  557. CLI SAVEWRK4,X'07' SEEK ? 00873000
  558. BE TRA151 YES 00874000
  559. CLI SAVEWRK4,X'0B' SEEK CYLINDER ? 00875000
  560. BE TRA151 YES 00876000
  561. CLI SAVEWRK4,X'1B' SEEK HEAD ? 00877000
  562. BNE TRA138 NO - FORGET IT. 00878000
  563. TRA151 L R8,SAVEWRK4 PICK UP ADDRESS @VA03162 00879000
  564. LA R8,0(,R8) CLEAR UNWANTED BITS @VA03162 00880000
  565. L R14,=A(DMKSYSRM) GET REAL MACHINE @VA03162 00881000
  566. L R14,0(,R14) SIZE @VA03162 00882000
  567. CLR R8,R14 VALID ADDRESS @VA03162 00883000
  568. BNL TRA138 NO..SKIP SEEK ARGUMENTS @VA03162 00884000
  569. MVI TRLNSEEK+1,PFXSEEK @VA03162 00885000
  570. MVC TRLNSK4,=CL4'SEEK' SET UP NAMES @VA03162 00886000
  571. L R1,0(,R8) FIRST 4 BYTES INTO R1, 00887000
  572. CALL DMKCVTBH BINARY TO HEX PLEASE, 00888000
  573. STCM R0,B'1111',TRLNSK5 STORE INTO OUTOUT MSG @VA07715 00889100
  574. STCM R1,B'1111',TRLNSK5+4 STORE INTO OUTPUT MSG @VA07715 00889200
  575. LH R1,4(,R8) NEXT 2 BYTES INTO R1, 00890000
  576. CALL DMKCVTBH BINARY TO HEX 00891000
  577. STCM R1,B'1111',TRLNSK6 STORE INTO MSG @VA07715 00892100
  578. CLC SAVEWRK2(1),SAVEWRK4 VIRTUAL COMMAND THE SAME ? 00893000
  579. BNE TRA159 IF NOT, IGNORE IT. 00894000
  580. LA R0,6 R0=6 MEANS 7 BYTES WANTED 00895000
  581. LA R1,SAVEWRK2 LET R1 POINT AT USER'S CCW 00896000
  582. LA R2,TRLNSK2 AND R2 POINTS TO 8-BYTE SCRATCH-AREA 00897000
  583. CALL DMKCCWSB LET DMKCCWSB FIND THE SEEK ARGS 00898000
  584. BNZ TRA159 IF CC NONZERO, FORGET IT (DATA NO GOOD) 00899000
  585. ICM R1,B'1111',TRLNSK2 PICK UP SEEK ARGUMENTS @VA07715 00900100
  586. ICM R2,B'1111',TRLNSK2+4 PICK UP ARGUMENTS FOR SEEK @VA07715 00900200
  587. CALL DMKCVTBH THE FIRST 4 BYTES BINARY TO HEX 00901000
  588. STCM R0,B'1111',TRLNSK2 STORE INTO OUTPUT MSG @VA07715 00902100
  589. STCM R1,B'1111',TRLNSK2+4 STORE INTO MESSAGE @VA07715 00902200
  590. LR R1,R2 NOW THE REST 00903000
  591. CALL DMKCVTBH BINARY TO HEX 00904000
  592. ST R0,TRLNSK3 STORE THE REMAINING CHARS 00905000
  593. STCM R1,12,TRLNSK3+4 (TOTAL OF 7 PRINTABLE CHARACTERS) 00906000
  594. MVC TRLNSK1,=CL4'SEEK' SIGNAL VIRTUAL SEEK GIVEN 00907000
  595. TRA159 BAL R3,TROUSUB OUTPUT THE FINISHED LINE, 00908000
  596. BAL R14,BLANKBUF REINITIALIZE THE MESSAGE BUFFER 00909000
  597. B TRA138 WHEN FINISHED, ADVANCE TO NEXT CCW. 00910000
  598. SPACE 00911000
  599. DROP R10 (THRU WITH RCWTASK) 00912000
  600. EJECT 00914000
  601. SPACE 3 00915000
  602. DMKTRDWT RELOC , SERIALIZATION FOR I/O TRACING @VA07229 00916000
  603. TM VMTRCTL,VMTRSIO SIO TRACING? @VA07421 00916100
  604. BZ NOIOSTK NO, DON'T WORRY @VA07421 00916150
  605. LA R0,CPEXSIZE GET A CPEXBLOK @VA07421 00916200
  606. CALL DMKFREE @VA07421 00916250
  607. USING CPEXBLOK,R1 TELL THE ASSEMBLER WHERE IT IS @VA07421 00916300
  608. LA R15,NOIOSTK INSERT RETURN ADDRESS @VA07421 00916350
  609. STM R15,R14,CPEXADD AND FILL IN THE BLOK @VA07421 00916400
  610. CALL DMKSTKCP NOW STACK IT @VA07421 00916450
  611. GOTO DMKDSPCH AND WAIT TO RETURN BELOW @VA07421 00916500
  612. DROP R1 ASSEMBLER DONE WITH CPEXBLOK @VA07421 00916550
  613. NOIOSTK EQU * @VA07421 00916600
  614. BAL R14,TRAINIT ENQUEUE FOR TRACING ACTIVITY @VA07229 00917000
  615. B TRA97 GO UNLOCK AGAIN AND EXIT @VA07229 00918000
  616. EJECT 00919000
  617. * TRAINIT = SUBROUTINE TO INITIALIZE VARIOUS STUFF AT ENTRY: 00953000
  618. * R14 = RETURN REGISTER 00954000
  619. * 00955000
  620. TRAINIT MVC SAVEWRK7(1),VMRSTAT SAVE VMRSTAT FLAG STATUS AT ENTRY 00956000
  621. OI VMRSTAT,VMEXWAIT+VMCFWAIT ENSURE THAT USER IS NOT RUN 00957000
  622. ICM R9,B'1111',VMTREXT POINT TO TRACE EXT BLOCK @V408246 00958100
  623. BZ TRAEXIT IF NOT, GO AWAY QUIETLY. 00960000
  624. SLR R15,R15 CLEAR SAVEWRK1 FLAG 00961000
  625. ST R15,SAVEWRK1 ... 00962000
  626. ST R15,SAVEWRK8 AND SAVEWRK8 FLAGS & "ERROR CODE" 00963000
  627. ST R9,TRALOCK+4 SETUP LOCK "NAME" @V200820 00964000
  628. LA R1,TRALOCK POINT TO IT FOR DMKLOC @V200820 00965000
  629. LR R9,R14 SAVE INTERNAL RETURN ADDRESS @V200820 00966000
  630. CALL DMKLOCKQ ENQUEUE FOR TRACING @V200820 00967000
  631. TM VMTRCTL,255-VMTRPER STILL TRACING? PER001 00968000
  632. BE TRAEXIT NO -- EXIT QUIETLY @V200820 00969000
  633. LR R14,R9 RESTORE RETURN REGISTER @V200820 00970000
  634. L R9,VMTREXT GR9 = VIRTUAL MACHINE TRACE BLOCK@V200820 00971000
  635. NI TREXFLAG,255-TREXNDSP RESET DSP INTERLOCK @VA04044 00971500
  636. LM R0,R1,SAVER0 RESTORE REGS @VM08544 00972000
  637. BLANKBUF MVC TREXBUFF(8),BLANKS BLANK THE OUTPUT BUFFER 00973000
  638. MVC TREXBUFF+8(72),TREXBUFF ... 00974000
  639. BR R14 AND RETURN. 00975000
  640. SPACE 2 00976000
  641. EJECT 00991000
  642. * SUBROUTINE TO PUT BACK ANY INSTRUCTIONS WHICH WERE ALTERED: 00992000
  643. * R3 = RETURN REGISTER 00993000
  644. PUTBACK L R0,FFS X'FFFFFFFF' INTO R0 00994000
  645. ST R0,TREXANSI STORE IN TREXANSI (UNTIL SET OTHERWISE) 00995000
  646. L R1,TREXIN1 GET ADDRESS OF 1ST REPLACED INSTRUCTION 00996000
  647. CLR R1,R0 ANYTHING THERE TO PUT BACK ? 00997000
  648. BE PUTBACK2 NO. 00998000
  649. ST R0,TREXIN1 SET ADDR AT TREXIN1 BACK TO X'FFFFFFFF' 00999000
  650. BAL R14,TRANPTBK GET REAL ADDRESS OF 1ST INSTRUCTION 01000000
  651. BNZ PUTBACK2 IF CAN'T GET IT, GIVE UP (SADLY). 01001000
  652. LH R15,TREXSVC1 GET FIRST TWO BYTES OF REAL INSTRUCTION 01002000
  653. CLI 0(R2),X'0A' IS THE SVC STILL THERE ? 01003000
  654. BNE PUTBACK1 IF NOT LEAVE FIRST BYTE ALONE 01004000
  655. STCM R15,2,0(R2) OK - PUT BACK FIRST BYTE OF REAL INSTR 01005000
  656. PUTBACK1 CLI 1(R2),X'B1' IS THE "B1" STILL THERE ? 01006000
  657. BNE PUTBACK2 IF NOT LEAVE THE SECOND BYTE ALONE 01007000
  658. STC R15,1(,R2) OK, PUT BACK 2ND BYTE OF INSTR 01008000
  659. * 01009000
  660. PUTBACK2 L R1,TREXIN2 GET ADDRESS OF 2ND REPLACED INSTRUCTION 01010000
  661. CLR R1,R0 ANYTHING THERE TO PUT BACK ? 01011000
  662. BCR 8,R3 <BE> NO - EXIT. 01012000
  663. ST R0,TREXIN2 SET ADDR AT TREXIN2 BACK TO X'FFFFFFFF' 01013000
  664. BAL R14,TRANPTBK GET REAL ADDRESS OF 2ND INSTRUCTION 01014000
  665. BCR 7,R3 <BNZ> IF CAN'T GET IT, GIVE UP (SADLY). 01015000
  666. CLC 0(2,R2),HSVCB2 IS THE SVC B2 STILL THERE ? 01016000
  667. BCR 7,R3 <BNE> NO (STRANGE) - LEAVE WELL ENOUGH ALONE. 01017000
  668. MVC 0(2,R2),TREXSVC2 PUT BACK 1ST 2 BYTES OF REAL INSTR 01018000
  669. BR R3 AND EXIT. 01019000
  670. EJECT 01020000
  671. * SUBROUTINE TO OUTPUT A TRACE LINE ON THE PRINTER AND/OR TERMINAL 01502000
  672. * R3 = RETURN REGISTER 01503000
  673. * TREXBUFF IS FILLED IN TO APPROPRIATE DATA 01504000
  674. * SAVEWRK1 ANDED WITH TREXPRNT SIGNALS OUTPUT ON PRINTER 01505000
  675. * SAVEWRK1 ANDED WITH TREXTERM SIGNALS OUTPUT ON TERMINAL 01506000
  676. * SAVEWRK8+2=HIGHEST ERROR-CODE "SO FAR" FROM DMKQCNWT/DMKDSPCH 01507000
  677. * I.E. 04 = SINGLE ATTENTION HIT BY USER 01508000
  678. * 08 = MORE THAN ONE ATTENTION HIT BY USER 01509000
  679. * 12 = USER'S TERMINAL HAS BEEN TURNED OFF 01510000
  680. * SAVEWRK9 = USED TO SAVE/RESTORE RETURN-REGISTER 01511000
  681. * R2 IS USED FOR SCRATCH (NOT PRESERVED) 01512000
  682. SPACE 01513000
  683. TROUSUB DS 0H OUTPUT LINE ON PRINTER AND/OR TERMINAL: 01514000
  684. LA R0,80 LENGTH = 80 BYTES 01515000
  685. LA R1,TREXBUFF ADDRESS = TREXBUFF 01516000
  686. SLR R2,R2 R2=0 FOR USE BY DMKVSPRT & DMKQCNWT 01517000
  687. LH R15,TREXPRNT GET PRINTER FLAG-BITS 01518000
  688. N R15,SAVEWRK1 OUTPUT ON PRINTER FOR THIS ONE ? 01519000
  689. BZ TROUSUB4 NOPE - MUST BE JUST THE TERMINAL. 01520000
  690. LH R0,TREXLCNT GET CURRENT LINE COUNT @V408246 01521100
  691. LTR R0,R0 NEED PAGE EJECT? @V408246 01521200
  692. BP TROUSUB2 NOPE - RESTORE R0 = 80 & PRINT. 01523000
  693. CALL DMKVSPRT YES - GIVE A PAGE EJECT (R0 = 0) 01524000
  694. TROUSUB2 LA R0,80 NOW RESTORE R0 = 80, 01525000
  695. CALL DMKVSPRT AND PRINT THE OUTPUT LINE 01526000
  696. CL R2,F8 *** SEVERE ERROR FROM DMKVSPRT ? *** 01527000
  697. BE TRAEND1 *** YES - FORCE A TRACE END. *** 01528000
  698. LH R14,TREXLCNT GET THE CURRENT LINE COUNT, 01529000
  699. LA R14,1(,R14) ADD ONE, 01530000
  700. CL R14,F60 CHECK AGAINST 60 LINES PER PAGE 01531000
  701. BL TROUSUB3 IF < 60 WE'RE OK 01532000
  702. SLR R14,R14 RESET TO 0 WHEN WE HIT 60 01533000
  703. TROUSUB3 STH R14,TREXLCNT STORE UPDATED LINE COUNT 01534000
  704. LH R15,TREXTERM GET TERMINAL FLAG-BITS 01535000
  705. N R15,SAVEWRK1 OUTPUT ALSO ON TERMINAL ? 01536000
  706. BCR 8,R3 <BZ> NOPE - EXIT FORTHWITH. 01537000
  707. TROUSUB4 DS 0H OUTPUT WILL <ALSO> BE ON THE TERMINAL: 01538000
  708. CLI SAVEWRK8+3,04 HAS MORE THAN ONE ATTENTION BEEN HIT ? 01539000
  709. BCR 2,R3 <BH> YES - EXIT (DON'T TYPE THE LINE) 01540000
  710. * (DMKQCNWT WILL REMOVE TRAILING BLANKS FROM COUNT) 01541000
  711. TROUSUB6 DS 0H NOW READY TO CALL DMKQCNWT: 01542000
  712. SLR R2,R2 R2=0 FOR PARM=0 FOR DMKQCNWT, AND ... 01543000
  713. CALL DMKQCNWT WRITE MESSAGE TO TERMINAL 01544000
  714. * 01545000
  715. TM VMTRCTL,255-VMTRPER STILL HAVE TRACE IN EFFECT? PER001 01546000
  716. BE TRAEXIT NO, GET OUT 01547000
  717. CH R2,SAVEWRK8+2 CHECK ERROR-CODE AGAINST "HIGHEST SO FAR" 01548000
  718. BCR 13,R3 <BNH> EXIT IF NO NEW ERROR RETURN CODE 01549000
  719. STH R2,SAVEWRK8+2 STORE NEW VALUE OF RETURN CODE 01550000
  720. BR R3 AND EXIT TO CALLER. 01551000
  721. SPACE 3 01552000
  722. * NECESSARY TO TERMINATE TRACING: 01559000
  723. TRAEND1 BAL R3,PUTBACK PUT BACK ANY INSTRUCTIONS WE ALTERED 01560000
  724. ST R9,TRALOCK+4 SETUP LOCK "NAME" @V200820 01561000
  725. LA R1,TRALOCK POINT TO THE NAME FIELD @V200820 01562000
  726. TRAEND2 EQU * DEQUEUE ALL PENDING REQUESTS @V200820 01563000
  727. CALL DMKLOCKD DEQUEUE THE TRACING LOCK @V200820 01564000
  728. BZ TRAEND2 CONTINUE UNTIL NOT LOCKED @V200820 01565000
  729. LA R0,TREXSIZE SIZE OF TREX BLOCK 01566000
  730. LR R1,R9 AND ITS ADDRESS 01567000
  731. SLR R15,R15 BEFORE CALLING DMKFRET, 01568000
  732. ST R15,VMTREXT CLEAR "VMTREXT" AND 01569000
  733. NI VMTRCTL,VMTRPER CLEAR TRACING PER001 01570000
  734. CALL DMKFRET GIVE IT BACK TO FREE STORAGE 01571000
  735. TM VMRSTAT,VMLOGOFF IN LOGOFF PROCESS ? @V200820 01572000
  736. BO TRAEXIT YES - SKIP THE MESSAGE @V200820 01573000
  737. MSG 'TRACE ENDED' 'TRACE ENDED' MESSAGE TO THE USER 01574000
  738. CALL DMKQCNWT,PARM=NORET ... 01575000
  739. B TRAEXIT AND GO EXIT. 01576000
  740. EJECT 01577000
  741. * SUBROUTINES TO PERFORM A "TRANS - BRING/DEFER" OR 01578000
  742. * A CALL TO DMKVATRN (IF NECESSARY) TO GET A REAL EQUIVALENT (IF 01579000
  743. * FEASIBLE) OF A VIRTUAL ADDRESS: 01580000
  744. * 01581000
  745. * AT ENTRY: 01582000
  746. * R1 = VIRTUAL ADDRESS TO BE TRANSLATED 01583000
  747. * R14 = RETURN REGISTER 01584000
  748. * 01585000
  749. * AT EXIT: 01586000
  750. * R1 = VIRTUAL ADDRESS 01587000
  751. * R2 = REAL ADDRESS 01588000
  752. * CONDITION-CODE SET FROM LRA, DMKPTRLK, OR DMKPTRAN 01589000
  753. * (CC = 0 IF VIRTUAL ADDRESS WAS LEGITIMATE, AND PAGE IS 01590000
  754. * IN CORE, OR HAS BEEN BROUGHT INTO CORE WITHOUT ERROR) 01591000
  755. * 01592000
  756. * ENTER AT "TRANVIRT" TO PERFORM VIRTUAL/VIRTUAL "TRANS", 01593000
  757. * OR AT "TRANBRNG" FOR SIMPLE ("VANILLA") TRANSLATIONS 01594000
  758. * (E.G. USER'S PAGE 0 STUFF, ETC.) 01595000
  759. SPACE 01596000
  760. TRANVIRT TM VMESTAT,VMEXTCM IN EC-MODE NOW ? 01597000
  761. BZ TRANBRNG NO - IT'S "VANILLA" - THAT'S EASY. 01598000
  762. TM VMPSW+1,EXTMODE STAYING IN EC-MODE? @VA04044 01598300
  763. BZ TRANBRNG NOPE - USE OUR CREG 1 @VA04044 01598600
  764. TM VMPSW,TRANMODE IN EC-MODE, IN TRANSLATE MODE ALSO ? 01599000
  765. BO TRANVAT YES - THAT'S A WORTHY CHALLENGE. 01600000
  766. * 01601000
  767. TRANBRNG LCTL C1,C1,VMSEG VANILLA - GET SEGMENT TABLE ORIGIN 01602000
  768. LRA R2,0(,R1) ATTEMPT TO GET REAL ADDRESS 01603000
  769. BCR 8,R14 EXIT FORTHWITH IF THE PAGE WAS IN 01604000
  770. LA R2,(BRING+DEFER) IF NOT, SET "BRING/DEFER" OPTIONS 01605000
  771. L R15,APTRAN SET R15 TO CALL "DMKPTRAN" 01606000
  772. TRANCALL ST R14,SAVEWRK9 SAVE R14 = RETURN-REGISTER, 01607000
  773. CALL 15 ATTEMPT TO BRING IN THE PAGE 01608000
  774. L R14,SAVEWRK9 RESTORE R14 RETURN REGISTER, 01609000
  775. BR R14 RETURN TO CALLER WITH CC FROM DMKPTRAN. 01610000
  776. EJECT 01611000
  777. * ENTER AT "TRANPTBK" TO INVOKE "TRANBRNG" OR "TRANVAT" 01612000
  778. * DEPENDING ON WHETHER "TRANBRNG" OR "TRANVAT" WAS 01613000
  779. * INVOKED TO REPLACE THE USER INSTRUCTION 01614000
  780. * (THIS BEING REMEMBERED IN "TREXVAT" FLAGBIT IN "TREXFLAG") 01615000
  781. SPACE 01616000
  782. TRANPTBK TM TREXFLAG,TREXVAT DID WE SET IT VIA "TRANVAT" ? 01617000
  783. BZ TRANBRNG NO - INVOKE "TRANBRNG". 01618000
  784. * YES - CONTINUE ... 01619000
  785. SPACE 01620000
  786. * IN EC-MODE & TRANSLATE MODE ALSO: 01621000
  787. TRANVAT L R15,VMECEXT GET THE USER'S CONTROL REGISTERS 01622000
  788. USING ECBLOK,R15 01623000
  789. TM VMESTAT,VMINVPAG TABLES VALID? @VM08636 01624000
  790. BNZ INTERLD PTR AT WORK... @VM01060 01625000
  791. PTBKLRA EQU * @VM08636 01626000
  792. LCTL C0,C1,EXTSHCR0 POINT TO THE SHADOW TABLES 01627000
  793. DROP R15 01628000
  794. LRA R2,0(,R1) MAKE THE ATTEMPT FIRST 01629000
  795. LCTL C0,C0,CPCREG0 RESTORE STAND C-REGS BEFORE 01630000
  796. LCTL C1,C1,VMSEG WE GO ANYPLACE 01631000
  797. BCR 8,R14 IF "LRA" SUCCEEDED, RETURN TO CALLER. 01632000
  798. INTERLD EQU * @VM08636 01633000
  799. L R15,=A(INTERVAT) SET R15 TO CALL INTERFACE TO DMKVATRN 01634000
  800. B TRANCALL GO SAVE R14 AND DO THE CALL. 01635000
  801. SPACE 2 01636000
  802. * INTERFACE ROUTINE TO CALL DMKVATRN: 01637000
  803. USING INTERVAT,R12 FOR THIS INTERFACE ROUTINE ONLY. 01638000
  804. INTERVAT ENTER ENTER HERE (SEE "TRANCALL" ABOVE) 01639000
  805. LR R3,R1 SET R3 AS NEEDED FOR DMKVAT 01640000
  806. CALL DMKVATRN ATTEMPT TO GET THE NEEDED ADDRESS 01641000
  807. LTR R0,R0 SET CC FROM RETURN INDICATOR FROM DMKVAT 01642000
  808. ST R2,SAVER2 RETURN R2 TO CALLER (IN CASE GOOD) 01643000
  809. EXIT RETURN TO DMKTRD (WITH COND CODE SET). 01644000
  810. SPACE 01645000
  811. USING DMKTRD,R12 RESTORE STANDARD ADDRESSABILITY. 01646000
  812. EJECT 01647000
  813. * CONSTANTS: 01648000
  814. HSVCB2 DC X'0AB2' SVC B2 INSTRUCTION @V4M0240 01649100
  815. DS 0F FULL-WORD ALIGNED CONSTANTS: 01650000
  816. CLDEV DC CL3'DEV' 'DEV' 01652000
  817. LOW12 DC AL1(12) LOW-ORDER 12 = X'0C' = READ-BACKWARD 01653000
  818. TRALOCK DC C'TREX',A(*-*) LOCK "NAME" FOR TRACING @V200820 01654000
  819. SPACE 01655000
  820. * MISCELLANEOUS FLAGBITS DEFINED IN FIRST BYTE OF SAVEWRK8: 01656000
  821. SETCC EQU X'80' MUST SET CONDITION-CODE NONZERO AT EXIT 01657000
  822. SPACE 01660000
  823. * NOTE: BYTE AT SAVEWRK8+1 IS AVAILABLE FOR FLAG IF NEEDED 01661000
  824. * HALFWORD AT SAVEWRK8+2 IS USED FOR ERROR RETURNS FROM DMKQCNWT 01662000
  825. SPACE 2 01663000
  826. LTORG 01667000
  827. EJECT 01668000
  828. * CONSTANTS (CONTINUED): 01669000
  829. * 01670000
  830. CLCAW DC C'CAW' 01671000
  831. CLIO DC C'I/O' 01673000
  832. CLCCW DC C'CCW' 01676000
  833. CLCC EQU CLCCW 'CC' 01677000
  834. CLCSW DC C'CSW' 01678000
  835. * 01679000
  836. * PREFIXES FOR THE VARIOUS RESPONSES: 01680000
  837. * (THESE MAY READILY BE REVISED PER INSTALLATION REQUIREMENTS) 01681000
  838. SPACE 01682000
  839. PFXIO EQU CLIO I/O INSTR (SIO/SIOF, TIO, HIO/HDV, TCH) 01685000
  840. PFXCCW EQU CLCCW CCW 01686000
  841. PFXBREAK DC CL3'---' TO INDICATE A BREAK IN CCW CHAINS 01687000
  842. PFXDITTO EQU C'"' INDICATES CONTINUATION OF ABOVE LINES 01688000
  843. PFXIDAL EQU C'"' IDAL 01689000
  844. PFXSEEK EQU C'"' SEEK 01690000
  845. PFXBRNCH DC CL3'==>' TO SHOW WE ARE AT A NEW LOCATION 01691000
  846. *PFXINST DC CL3' ' INSTRUCTION TRACING 01693000
  847. EJECT 01695000
  848. COPY VMBLOK 01696000
  849. VMTRALL EQU VMTRINT+VMTRSIO+VMTRBRIN FOR TRACE 'ALL' 01697000
  850. COPY TREXT 01698000
  851. ORG TREXBUFF OUTPUT LINE FOR TCH/TIO/HIO/SIO: 01699000
  852. SPACE 01700000
  853. TRLNSIO DC CL3'I/O' PREFIX FOR I/O INSTR (SET FROM PFXIO) 01701000
  854. DC C' ' 01702000
  855. TRLNSIO1 DS XL6'00' VIRT ADDR OF I/O INSTR (= TRLNINT1) 01703000
  856. DC C' ' 01704000
  857. TRLNSIO5 DS CL5' ' MNEMONIC OF IO INSTRUCTION 01705000
  858. DC C' ' 01706000
  859. TRLNSIO4 DS XL8'00' SIO, TIO, HIO, OR TCH INSTRUCTION (HEX) 01707000
  860. DC CL2' ' 01708000
  861. TRLNSIO2 DS CL4'DEV' MNEMONIC "NAME" OF VIRTUAL DEVICE 01709000
  862. DC C' ' 01710000
  863. TRLNSIO3 DS XL4'00' VADD (HEX) 01711000
  864. DC CL2' ' 01712000
  865. TRLNSIOB DC CL2'CC' CC 01713000
  866. DC C' ' 01714000
  867. TRLNSIOC DS AL1(0) CC NUMBER 01715000
  868. DC CL2' ' 01716000
  869. TRLNSIOD DS CL4'DEV ' REAL TYPE 01717000
  870. DC C' ' 01718000
  871. TRLNSIOE DS XL4'00' RADD (HEX) 01719000
  872. DC CL2' ' 01720000
  873. TRLNSIOF DC CL3'CSW' CSW 01721000
  874. DC C' ' 01722000
  875. TRLNSIOG DS XL4'00' CSW+4/CSW+5 BYTES 01723000
  876. DC CL2' ' 01724000
  877. TRLNSIO9 DC CL3'CAW' CAW (FOR SIO ONLY, CC = 0 OR 1) 01725000
  878. DC C' ' (FOR SIO ONLY, CC = 0 OR 1) 01726000
  879. DS XL8'00' VIRTUAL CAW (FOR SIO ONLY, CC = 0 OR 1) 01727000
  880. EJECT 01728000
  881. ORG TREXBUFF OUTPUT LINE FOR CCW: 01729000
  882. SPACE 01730000
  883. TRLNCCW DC CL3'CCW' PREFIX 01731000
  884. DC C' ' 01732000
  885. TRLNCCW1 DS XL6'00' VIRTUAL ADDRESS OF CCW 01733000
  886. DC C' ' 01734000
  887. TRLNCCW2 DS XL8'00' VIRTUAL CCW 1ST HALF 01735000
  888. DC C' ' 01736000
  889. TRLNCCW3 DS XL8'00' VIRTUAL CCW 2ND HALF 01737000
  890. DC CL2' ' 01738000
  891. TRLNCCW4 DS XL6'00' REAL ADDRESS OF CCW 01739000
  892. DC C' ' 01740000
  893. TRLNCCW5 DS XL8'00' REAL CCW 1ST HALF 01741000
  894. DC C' ' 01742000
  895. TRLNCCW6 DS XL8'00' REAL CCW 2ND HALF 01743000
  896. SPACE 01744000
  897. ORG TREXBUFF OUTPUT LINE FOR "IDAL" LINE OF CCW: 01745000
  898. TRLNIDAL DC CL3' " ' PREFIX (IF ANY) 01746000
  899. DC CL2' ' 01747000
  900. TRLNIDA1 DC CL4'IDAL' VIRTUAL IDAL 01748000
  901. DC CL2' ' 01749000
  902. TRLNIDA2 DS XL8'00' FIRST VIRTUAL IDAW 01750000
  903. DC C' ' 01751000
  904. TRLNIDA3 DS XL8'00' SECOND VIRTUAL IDAW 01752000
  905. DC CL3' ' 01753000
  906. TRLNIDA4 DC CL4'IDAL' REAL IDAL 01754000
  907. DC CL2' ' 01755000
  908. TRLNIDA5 DS XL8'00' FIRST REAL IDAW 01756000
  909. DC C' ' 01757000
  910. TRLNIDA6 DS XL8'00' SECOND REAL IDAW 01758000
  911. SPACE 01759000
  912. ORG TREXBUFF OUTPUT LINE FOR "SEEK" LINE OF CCW: 01760000
  913. TRLNSEEK DC CL3' " ' PREFIX (IF ANY) 01761000
  914. DC CL2' ' 01762000
  915. TRLNSK1 DC CL4'SEEK' VIRTUAL SEEK 01763000
  916. DC CL2' ' 01764000
  917. TRLNSK2 DS XL8'00' VIRTUAL SEEK ARG (1ST 4 BYTES) 01765000
  918. DC C' ' 01766000
  919. TRLNSK3 DS XL6'00' VIRTUAL SEEK ARG ETC. (NEXT 3 BYTES) 01767000
  920. DC CL5' ' 01768000
  921. TRLNSK4 DC CL4'SEEK' REAL SEEK 01769000
  922. DC CL2' ' 01770000
  923. TRLNSK5 DS XL8'00' REAL SEEK ARG (1ST 4 BYTES) 01771000
  924. DC C' ' 01772000
  925. TRLNSK6 DS XL4'00' REAL SEEK ARG (LAST 2 BYTES) 01773000
  926. EJECT 01774000
  927. ORG TREXBUFF OUTPUT LINE FOR INTERRUPT TRACING: 01775000
  928. SPACE 01776000
  929. TRLNINT DC CL3' ' PREFIX (IF ANY) 01777000
  930. DC C' ' 01778000
  931. TRLNINT1 DS XL6'00' VIRTUAL ADDRESS OF INSTRUCTION 01779000
  932. DC C' ' 01780000
  933. TRLNINT2 DS CL4' ' TYPE (SVC, PROG, EXT, OR I/O) 01781000
  934. DC CL2' ' 01782000
  935. TRLNINT3 DS XL4'00' INTERRUPT CODE OR VIRTUAL DEVICE ADDRESS 01783000
  936. DC C' ' 01784000
  937. TRLNINT4 DS C'==>' PFXARROW GOES IN HERE 01785000
  938. DC C' ' 01786000
  939. TRLNINT5 DS XL6'00' VIRTUAL TRANSFER-TO ADDRESS (FROM NEW PSW) 01787000
  940. DC CL2' ' 01788000
  941. TRLNINT6 DC CL3'CSW' CSW (FOR I/O INTERRUPTS ONLY) 01789000
  942. DC C' ' 01790000
  943. TRLNINT7 DS XL4'00' CSW+4/CSW+5 BYTES ONLY 01791000
  944. SPACE 1 01792000
  945. ORG TRLNINT2 RE-DEFINITION FOR INSTRUCTION TRACING 01793000
  946. TRLNINS2 DS CL5' ' MNEMONIC OF INSTRUCTION 01794000
  947. DC C' ' 01795000
  948. TRLNINS3 DS XL4'00' FIRST TWO BYTES OF INSTRUCTION 01796000
  949. TRLNINS4 DS XL4'00' NEXT TWO BYTES OF INSTRUCTION (IF ANY) 01797000
  950. TRLNINS5 DS XL4'00' LAST TWO BYTES OF INSTRUCTION (IF ANY) 01798000
  951. DC C' ' 01799000
  952. TRLNINS6 DS XL6'00' VIRTUAL XFER-TO-ADDRESS OR PSW (IF ANY) 01800000
  953. SPACE 2 01801000
  954. ORG TRLNINS5+1 RE-DEFINITION FOR EXECUTED INSTRUCTIONS 01802000
  955. * 01803000
  956. * NOTE: KEEP TRLNINS8 UP TO TRLNINS9 AT SAME RELATIVE DISPLACEMENTS 01804000
  957. * AS TRLNINT1 AND TRLNINS2 TO TRLNINS6 01805000
  958. * (BECAUSE FILLED IN BY INDEXED CODE). 01806000
  959. * 01807000
  960. TRLNINS7 DS XL2'00' LOW-ORDER BYTE OF EX "R1" REGISTER (IF ANY) 01808000
  961. * (OR SSM-BYTE FOR SSM, STNSM, OR STOSM) 01809000
  962. DC CL2' ' 01810000
  963. TRLNINS8 DS XL6'00' VIRTUAL ADDRESS OF EXECUTED INSTRUCTION 01811000
  964. DC C' ' 01812000
  965. TRLNINSM DS CL5' ' MNEMONIC OF EXECUTED INSTRUCTION 01813000
  966. DC C' ' 01814000
  967. DS XL12'00' TWO TO SIX BYTES OF EXECUTED INSTRUCTION 01815000
  968. DC C' ' 01816000
  969. TRLNINS9 DS XL6'00' TRANSFER-TO ADDRESS FOR EXECUTED BRANCH 01817000
  970. * 01818000
  971. DS XL11'00' WORST CASE (SPACE-WISE) = EXECUTED LPSW 01819000
  972. WORSCASE EQU *-TRLNINT LENGTH OF OUTPUT LINE FOR WORST CASE. 01820000
  973. SPACE 01821000
  974. TRLNBUMP EQU TRLNINS8-TRLNINT1 DISP. OF TRLNINS8 MSG FROM TRLNINT1 01822000
  975. EJECT 01823000
  976. ORG TREXBUFF OUTPUT LINE FOR CSW: 01824000
  977. SPACE 01825000
  978. TRLNCSW DC CL3'CSW' PREFIX 01826000
  979. DC C' ' 01827000
  980. TRLNCSWV DC C'V' 'V' 01828000
  981. DC C' ' 01829000
  982. TRLNCSW1 DS XL4'00' VADD 01830000
  983. DC C' ' 01831000
  984. TRLNCSW2 DS XL8'00' VIRTUAL CSW (1ST HALF) 01832000
  985. DC C' ' 01833000
  986. TRLNCSW3 DS XL8'00' VIRTUAL CSW (2ND HALF) 01834000
  987. DC CL2' ' 01835000
  988. TRLNCSWR DC C'R' 'R' 01836000
  989. DC C' ' 01837000
  990. TRLNCSW4 DS XL4'00' RADD 01838000
  991. DC C' ' 01839000
  992. TRLNCSW5 DS XL8'00' REAL CSW (1ST HALF) 01840000
  993. DC C' ' 01841000
  994. TRLNCSW6 DS XL8'00' REAL CSW (2ND HALF) 01842000
  995. EJECT 01843000
  996. PSA 01844000
  997. COPY SAVE 01845000
  998. COPY CORE @V304735 01846000
  999. COPY EQU 01847000
  1000. COPY IOBLOKS 01848000
  1001. COPY VBLOKS 01849000
  1002. COPY DEVTYPES 01850000
  1003. END DMKTRD 01851000
ibm/vm370-lib/cp/dmktrd.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator