Table of Contents

DMTMGX Source

References

Source Listing

DMTMGX.ASSEMBLE.txt
  1. MGX TITLE 'DMTMGX (RSCS) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMTMGX 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. * THIS ROUTINE TAKES AN MESSAGE REQUEST BUFFER AND 00009000
  10. * CONSTRUCTS THE MESSAGE FROM THE INFORMATION IN THAT 00010000
  11. * BUFFER AND THE MESSAGE TEXT FOUND IN DMTMSG. 00011000
  12. * 00012000
  13. * ATTRIBUTES - 00013000
  14. * 00014000
  15. * REUSABLE 00015000
  16. * 00016000
  17. * ENTRY POINTS - 00017000
  18. * 00018000
  19. * DMTMGX- TO WRITE A MESSAGE 00019000
  20. * 00020000
  21. * ENTRY CONDITIONS - 00021000
  22. * 00022000
  23. * R1 = ADDR OF MESSAGE ELEMENT 00023000
  24. * R14= RETURN ADDRESS 00024000
  25. * R15= ENTRY ADDRESS 00025000
  26. * 00026000
  27. * EXIT CONDITIONS - 00027000
  28. * 00028000
  29. * NORMAL - RETURN TO CALLER 00029000
  30. * 00030000
  31. * 00031000
  32. * ERROR - NONE 00032000
  33. * 00033000
  34. EJECT 00034000
  35. * 00035000
  36. * CALLS TO OTHER ROUTINES - 00036000
  37. * 00037000
  38. * PMSGREQ - TO STACK A MESSAGE FOR DMTREX 00038000
  39. * DMTREXHC - TO WRITE A MESSAGE TO CP 00039000
  40. * DMTSIG - TO ALERT A ANOTHER TASK WITH A MESSAGE ELEMENT 00040000
  41. * 00041000
  42. * EXTERNAL REFERENCES - 00042000
  43. * 00043000
  44. * TCOM - COMMON ROUTINE VECTOR TABLE 00044000
  45. * TLINKS - LINK TABLE CHAIN 00045000
  46. * DMTMSG - MESSAGE TABLE 00046000
  47. * 00047000
  48. * TABLES / WORKAREAS - 00048000
  49. * 00049000
  50. * NONE 00050000
  51. * 00051000
  52. * REGISTER USAGE - 00052000
  53. * 00053000
  54. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00054000
  55. * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00055000
  56. * COMMAND DESCRIPTION 00056000
  57. * 00057000
  58. * GPR0 = WORK 00058000
  59. * GPR1 = LINK TABLE ADDRESSABILITY 00059000
  60. * GPR2 = BUFFER LOAD POINTER 00060000
  61. * GPR3 = BUFFER LOAD LIMIT 00061000
  62. * GPR4 = VARIABLE FIELD POINTER 00062000
  63. * GPR5 = VARIABLE FIELD LIMIT 00063000
  64. * GPR6 = SOURCE MSG POINTER 00064000
  65. * GPR7 = SOURCE MSG LIMIT 00065000
  66. * GPR8 = WORK 00066000
  67. * GPR9 = WORK 00067000
  68. * GPR10 = WORK 00068000
  69. * GPR11 = WORK 00069000
  70. * GPR12 = BASE REGISTER 00070000
  71. * GPR13 = WORK 00071000
  72. * GPR14 = RETURN 00072000
  73. * GPR15 = COMMON ROUTINE VECTOR TABLE ADDRESSABILITY 00073000
  74. * 00074000
  75. * NOTES - 00075000
  76. * 00076000
  77. * NONE 00077000
  78. * 00078000
  79. EJECT 00079000
  80. * 00080000
  81. * OPERATION - 00081000
  82. * 00082000
  83. * 1. BUILD THE MESSAGE HEADER 00083000
  84. * 00084000
  85. * 2. FIND THE MESSAGE IN THE MESSAGE TABLE 00085000
  86. * 00086000
  87. * 3. MOVE MESSAGE FROM TABLE TO OUTPUT BUFFER 00087000
  88. * SUBSTITUTING THE VARIABLE FIELDS FOR EACH 00088000
  89. * $ ENCOUNTERED. 00089000
  90. * 00090000
  91. * 4. GIVE THE BUILT MESSAGE TO THE APPROPRIATE 00091000
  92. * HANDLER BASED ON THE ACTION CODE OF: 00092000
  93. * X'80' RSS OPERATOR 00093000
  94. * X'40' ORIGINATING LINKID 00094000
  95. * X'20' VIRTUAL MACHINE USERID 00095000
  96. * X'10' LOCAL CP OPERATOR 00096000
  97. * 00097000
  98. *. 00098000
  99. EJECT 00099000
  100. DMTMGX CSECT 00100000
  101. SPACE 2 00101000
  102. * MESSAGE ROUTING CODE EQUATES 00102000
  103. SPACE 00103000
  104. RSS EQU X'80' RSS OPERATOR CONSOLE 00104000
  105. ORIG EQU X'40' 'ORIGINATING' LINK ID 00105000
  106. VMID EQU X'20' VIRTUAL MACHINE USER ID 00106000
  107. CP EQU X'10' LOCAL CP OPERATOR 00107000
  108. SPACE 00108000
  109. USING DMTMGX,R15 GET TEMPORARY ADDRESSABILITY 00109000
  110. STM R0,R15,MGXSAVE SAVE REGISTERS 00110000
  111. DROP R15 00111000
  112. USING SVECTORS,0 GET SVECTORS ADDRESSABILITY 00112000
  113. USING DMTMGX,R12 GET THE RIGHT ADDRESSABILITY 00113000
  114. USING COMDSECT,R15 GET COMMON ROUTINE ADDR 00114000
  115. LR R12,R15 AND UPDATE R12 00115000
  116. LA R13,MGXCSAVE GET COMMON ROUTINE SAVE AREA ADDR 00116000
  117. * 00117000
  118. * BUILD THE MESSAGE 00118000
  119. * R2,R3 BUFFER LOAD POINTER AND LIMIT 00119000
  120. * R4,R5 VARIABLE FIELD POINTER AND LIMIT 00120000
  121. * R6,R7 SOURCE MSG POINTER AND LIMIT 00121000
  122. * 00122000
  123. CLI 0(R1),25 LONG ENOUGH? 00123000
  124. BL MGXERROR NO 00124000
  125. * 00125000
  126. * BUILD THE MESSAGE HEADER 00126000
  127. * 00127000
  128. MVC MGXBUFFR(3),MGXNAME DMT INITIALLY 00128000
  129. MVC MGXBUFFR+3(3),20(R1) MODULE NAME 00129000
  130. LH R0,24(R1) REQUESTED MSG NUMBER 00130000
  131. CVD R0,MGXWORK CONVERT TO DECIMAL 00131000
  132. UNPK MGXBUFFR+6(3),MGXWORK+6(2) TO OUTPUT 00132000
  133. OI MGXBUFFR+8,X'F0' SET CORRECT ZONE 00133000
  134. MVC MGXBUFFR+9(1),23(R1) ACTION CODE 00134000
  135. MVI MGXBUFFR+10,C' ' PREPARE TO CLEAR BUFFER 00135000
  136. MVC MGXBUFFR+11(L'MGXBUFFR-11),MGXBUFFR+10 CLEAR OUT 00136000
  137. * 00137000
  138. * INITIALIZE POINTERS 00138000
  139. * 00139000
  140. LA R2,MGXBUFFR+11 START BEYOND HEADER LEN (NO BLANK YET) 00140000
  141. LA R3,MGXBUFFR+L'MGXBUFFR OUTPUT LIMIT 00141000
  142. LA R4,28(R1) FIRST VARIABLE (IF PRESENT) 00142000
  143. SR R5,R5 CLEAR FOR IC 00143000
  144. IC R5,0(R1) LENGTH OF REQUEST -1 00144000
  145. LA R5,1(R5,R1) END OF MSG REQ ELEMENT 00145000
  146. LA R5,7(R5) LENGTH+7 TO FIND NEXT DWORD BDY @VA03482 00145100
  147. SRL R5,3 DIVIDE BY 8 00146000
  148. SLL R5,3 BUMP BACK TO LOWER DWORD BD 00147000
  149. * 00148000
  150. * SCAN MESSAGE TABLE 00149000
  151. * 00150000
  152. L R6,MGXMSGS TABLE OF MSGS 00151000
  153. MGXMSCAN EQU * 00152000
  154. CLC 4(2,R6),24(R1) NUM MATCH TO REQ? 00153000
  155. BE MGXMHIT YES 00154000
  156. ICM R6,B'1111',0(R6) GET THE NEXT MSG POINTER 00155000
  157. BZ MGXNOHIT LAST IF ZERO 00156000
  158. B MGXMSCAN AND CONTINUE 00157000
  159. EJECT 00158000
  160. * 00159000
  161. * R6 ADDR OF MSG ENTRY FOR NOW 00160000
  162. * 00161000
  163. MGXMHIT EQU * 00162000
  164. TM MGXBUFFR+9,X'3F' ANY ACTION CODE IN REQ? 00163000
  165. BNZ MGXGOTAC YES - USE IT 00164000
  166. MVC MGXBUFFR+9(1),9(R6) DEFAULT TO DEFINED AC CODE 00165000
  167. MGXGOTAC EQU * 00166000
  168. ICM R0,B'0010',2(R1) ROUTING CODE FROM REQ 00167000
  169. BNZ MGXGOTRC USE AS SPECIFIED 00168000
  170. ICM R0,B'0010',6(R6) DEFAULT DEFINED ROUT CODE 00169000
  171. MGXGOTRC EQU * 00170000
  172. ICM R0,B'0001',3(R1) SEV CODE FROM REQ 00171000
  173. BNZ MGXGOTSC USE AS SPECIFIED 00172000
  174. ICM R0,B'0001',7(R6) DEFAULT DEFINED SEV CODE 00173000
  175. MGXGOTSC EQU * 00174000
  176. STCM R0,B'0011',MGXMSGRC SAVE ROUT & SEV CODES 00175000
  177. SR R7,R7 CLEAR R7 FOR IC 00176000
  178. IC R7,8(R6) GET LENGTH OF MSG 00177000
  179. LA R7,9(R7,R6) ADDR OF END OF MSG TEXT 00178000
  180. LA R6,11(R6) ADDR OF START OF MSG TXT 00179000
  181. SPACE 1 00180000
  182. MGXMORE EQU * 00181000
  183. CLR R2,R3 IS IT FULL? 00182000
  184. BNL MGXBUILT YES - TRUNCATE IT 00183000
  185. CLR R6,R7 ANY MORE SPECIFIED? 00184000
  186. BNL MGXBUILT NO - DONE 00185000
  187. CLI 0(R6),C'$' SUB? 00186000
  188. BE MGXDOSUB YES - GO DO IT 00187000
  189. MVC 0(1,R2),0(R6) MOVE NON - $ CHARACTER 00188000
  190. LA R2,1(R2) BUMP BUFFER POINTER 00189000
  191. LA R6,1(R6) BUMP SOURCE PTR 00190000
  192. B MGXMORE NEXT 00191000
  193. SPACE 1 00192000
  194. MGXDOSUB EQU * 00193000
  195. SR R8,R8 INITIALIZE $ COUNTER 00194000
  196. MGXNXSUB EQU * 00195000
  197. LA R6,1(R6) BUMP SOURCE POINTER 00196000
  198. LA R8,1(R8) UPDATE $ COUNT 00197000
  199. CLR R6,R7 MORE TO GO? 00198000
  200. BNL MGXENSUB NO 00199000
  201. CLI 0(R6),C'$' ANOTHER $? 00200000
  202. BE MGXNXSUB YES - KEEP COUNTING 00201000
  203. MGXENSUB EQU * 00202000
  204. LR R0,R8 TOTAL NUMBER OF DOLLAR SIGNS 00203000
  205. BCT R0,MGXMVSUB GO PROCESS MULTIPLE $ SUBS 00204000
  206. MGXLASUB EQU * FINAL SUB PROCESSING 00205000
  207. CLR R4,R5 ANY MORE? 00206000
  208. BNL MGXLAZIP NOPE 00207000
  209. SPACE 00208000
  210. LA R9,7 START AT RIGHT 00209000
  211. MGXLASCN EQU * 00210000
  212. LA R10,0(R9,R4) NEXT CHAR TO LOOK AT 00211000
  213. CLI 0(R10),C' ' BLANK? 00212000
  214. BNE MGXSBFIN NO - QUIT 00213000
  215. BCT R9,MGXLASCN KEEP HUNTING 00214000
  216. CLI 0(R4),C' ' LAST BLANK? 00215000
  217. BNE MGXSBFIN NO - DO IT 00216000
  218. LA R4,8(R4) BUMP TO NEXT 00217000
  219. * 00218000
  220. * ALL BLANK LAST SPECIFICATION 00219000
  221. * 00220000
  222. MGXLAZIP EQU * 00221000
  223. LR R0,R8 COUNT 00222000
  224. BCTR R0,0 LESS ONE 00223000
  225. LTR R0,R0 ONLY ONE TO START? 00224000
  226. BZ MGXELIPS ONLY SINGLE $ 00225000
  227. MGXBKSET EQU * 00226000
  228. SLL R0,3 *8 - CHAR COUNT FOR BACK SCAN 00227000
  229. MGXBKSCN EQU * 00228000
  230. BCTR R2,0 BACK ONE 00229000
  231. CLI 0(R2),C' ' BLANK 00230000
  232. BNE MGXCHIT (MUST BUMP THERE) NO 00231000
  233. BCT R0,MGXBKSCN KEEP LOOKING 00232000
  234. MGXELIPS EQU * ALL BLANK INSERT ELIPSIS 00233000
  235. LR R9,R3 END OF BUFFER 00234000
  236. SR R9,R2 LEFT IN BUFFER 00235000
  237. BNP MGXBUILT TRUNCATE IF NONE 00236000
  238. LA R10,3 (L'ELIPSIS) MUST BE GREATER THAN ZERO 00237000
  239. CLR R10,R9 ENOUGH IN BUFFER? 00238000
  240. BNH MGXELFIT YES 00239000
  241. LR R10,R9 TRUNCATE 00240000
  242. MGXELFIT EQU * 00241000
  243. BCTR R10,0 DOWN BY ONE 00242000
  244. EX R10,MGXELMOV MOVE IN ELIPSIS 00243000
  245. LA R2,1(R10,R2) UPDATE LOAD POINT 00244000
  246. B MGXMORE DO MORE 00245000
  247. SPACE 00246000
  248. MGXCHIT EQU * 00247000
  249. LA R2,1(R2) AJUST BACK 00248000
  250. B MGXMORE DO MORE OUTPUT 00249000
  251. SPACE 1 00250000
  252. MGXSBFIN EQU * 00251000
  253. * 00252000
  254. * R9 COUNT OF NONBLANK -1 00253000
  255. * 00254000
  256. LA R9,1(R9) EXACT NONBLANK COUNT 00255000
  257. LR R10,R3 END OF BUFFER 00256000
  258. SR R10,R2 LEFT IN BUFFER 00257000
  259. BNP MGXBUILT NONE AT ALL 00258000
  260. CLR R9,R10 ENOUGH? 00259000
  261. BNH MGXLAFIT YES 00260000
  262. LR R9,R10 TRUNCATE 00261000
  263. MGXLAFIT EQU * 00262000
  264. BCTR R9,0 DOWN BY ONE 00263000
  265. EX R9,MGXSBMOV MOVE IN 00264000
  266. LA R4,8(R4) BUMP VARIABLE PTR 00265000
  267. LA R2,1(R9,R2) BUMP LOAD POINT 00266000
  268. B MGXMORE BACK FOR MORE 00267000
  269. SPACE 00268000
  270. MGXMVSUB EQU * 00269000
  271. CLR R4,R5 MORE SUBS TO BE HAD? 00270000
  272. BNL MGXDRY NOPE - SEE IF ANY NONBLANK 00271000
  273. LA R9,8(R2) ANOTHER SUB VARIABLE FOLLOWS 00272000
  274. CLR R9,R3 ENOUGH SPACE? 00273000
  275. BNH MGXSBFIT YES 00274000
  276. LR R9,R3 TRUNCATE 00275000
  277. MGXSBFIT EQU * 00276000
  278. SR R9,R2 COUNT TO MOVE 00277000
  279. BCTR R9,0 DOWN BY ONE 00278000
  280. EX R9,MGXSBMOV MOVE IN NEXT PIECE 00279000
  281. LA R2,1(R9,R2) BUMP LOAD POINT 00280000
  282. CLR R2,R3 AT END? 00281000
  283. BNL MGXBUILT YES 00282000
  284. LA R4,8(R4) BUMP VARIABLE POINTER 00283000
  285. BCT R0,MGXMVSUB DO NEXT SUB 00284000
  286. B MGXLASUB SPECIAL TREATMENT FOR LAST 00285000
  287. SPACE 1 00286000
  288. MGXDRY EQU * 00287000
  289. * 00288000
  290. * R0 CONTAINS TOTAL UNPROCESSED $ COUNT -1 00289000
  291. * 00290000
  292. LR R9,R8 TOTAL $ COUNT 00291000
  293. SR R9,R0 TOTAL PROCESSED $ +1 00292000
  294. BCTR R9,0 TOTAL PROCESSED $ COUNT 00293000
  295. LR R0,R9 SET FOR BACK SCAN 00294000
  296. B MGXBKSET GO DO IT 00295000
  297. SPACE 2 00296000
  298. MGXSBMOV MVC 0(0,R2),0(R4) TO BE EXECUTED FROM ABOVE 00297000
  299. MGXELMOV MVC 0(0,R2),=C'...' MOVE ELIPSIS FROM ABOVE 00298000
  300. EJECT 00299000
  301. * 00300000
  302. * UNDEFINED MESSAGE NUMBER 00301000
  303. * 00302000
  304. MGXNOHIT EQU * 00303000
  305. SR R5,R5 CLEAR R5 FOR INSERT @VA05951 00303300
  306. IC R5,0(R1) GET REAL LENGTH OF ELE. -1 @VA05951 00303600
  307. LA R5,1(R5,R1) GET REAL END OF ELEMENT @VA07411 00303910
  308. CLR R5,R4 ANY TEXT SUPPLIED? 00304000
  309. BNH MGXELIPS NOPE - JUST AN ELIPSIS 00305000
  310. LR R9,R5 00306000
  311. MGXDSCAN EQU * 00307000
  312. BCTR R9,0 LAST CHAR ADDR 00308000
  313. CLI 0(R9),C' ' IS IT BLANK? 00309000
  314. BNE MGXDHIT NO 00310000
  315. CLR R9,R4 AGAIN 00311000
  316. BH MGXDSCAN NOT DONE, GO AROUND AGAIN. @VA05476 00312000
  317. B MGXELIPS NOTHING NONBLANK 00313000
  318. SPACE 1 00314000
  319. MGXDHIT EQU * 00315000
  320. LA R9,1(R9) INCREMENT BY ONE TO CORRECT @VA05476 00315500
  321. * COUNT. 00315600
  322. SR R9,R4 COUNT OF NON BLANK SUPPLIED TEXT 00316000
  323. LR R10,R3 UPDATE R10 00317000
  324. SR R10,R2 COUNT OF BUFFER SPACE 00318000
  325. CLR R9,R10 ENOUGH SPACE IN BUFFER? 00319000
  326. BNH MGXDOK YES 00320000
  327. LR R9,R10 TRUNCATE OTHERWISE 00321000
  328. MGXDOK EQU * 00322000
  329. BCTR R9,0 DOWN BY ONE 00323000
  330. EX R9,MGXDMOVE MOVE IN SUPPLIED TEXT 00324000
  331. LA R2,1(R9,R2) UPDATE LOAD POINT 00325000
  332. MVC MGXMSGRC(2),2(R1) GET ROUTING AND SEV. CODES @VA05476 00325500
  333. B MGXBUILT FINISH UP 00326000
  334. SPACE 1 00327000
  335. MGXDMOVE MVC 0(0,R2),0(R4) TO BE EXECUTED FROM ABOVE 00328000
  336. EJECT 00329000
  337. MGXBUILT EQU * 00330000
  338. LA R3,MGXBUFFR GET START OF BUFFER 00331000
  339. SR R2,R3 CHAR COUNT OF VARIABLE OUTPUT 00332000
  340. LR R3,R2 MUST HAVE IN R3 00333000
  341. LR R4,R1 SAVE ELEMENT ADDR 00334000
  342. L R2,TLINKS GET LINKTABLE CHAIN 00335000
  343. LA R2,8(R2) ADDR OF LOCAL LINK TABLE 00336000
  344. TM MGXMSGRC,ORIG GIVE TO A LINK? 00337000
  345. BNO MGXNOLIN NO 00338000
  346. LA R0,8 GET THE LENGTH OF THE ENTRY 00339000
  347. LA R1,4(R4) LINKID TO GIVE MESSAGE TO 00340000
  348. L R15,TCOM COMMON ROUTINE ADDR LIST 00341000
  349. L R15,GLINKREQ GET LINK TABLE ENTRY ROUTINE 00342000
  350. BALR R14,R15 AND EXECUTE IT 00343000
  351. LTR R15,R15 FOUND? 00344000
  352. BNZ MGXNOLIN NO REJECT IT 00345000
  353. LA R1,0(R1) CLEAR OUT HIGH ORDER BYTE 00346000
  354. CLR R2,R1 SAME AS OUR LINK TABLE 00347000
  355. BE MGXTOLOC YES 00348000
  356. USING LINKTABL,R1 GET LINKTABL ADDRESSABILITY 00349000
  357. TM LFLAG,LACTIVE IS THE LINK ACTIVE? 00350000
  358. BNO MGXNOLIN SKIP IF NOT 00351000
  359. L R0,LACTTNME GET THE LINK TASKNAME 00352000
  360. LA R1,MGXBUFFR-12 GET START OF THIS PART OF BU @VA03279 00353010
  361. MVC 4(8,R1),4(R4) MOVE IN THE DEST LOCID @VA03279 00353020
  362. MVC 0(4,R1),MGXMSGEL MOVE IN HEADER 00354000
  363. LA R5,11(R3) UPDATE COUNT @VA03279 00355010
  364. STC R5,0(R1) STORE IN MSG ELEMENT 00356000
  365. MVC 3(1,R1),3(R4) SEVERITY CODE 00357000
  366. L R15,ALERTREQ GET SYSTEM ALERT PROCESSOR ADDR 00358000
  367. BALR R14,R15 GO ALERT THE TASK 00359000
  368. * 00360000
  369. * IGNORE REJECTS FOR NOW 00361000
  370. * 00362000
  371. MGXNOLIN EQU * 00363000
  372. TM MGXMSGRC,RSS ROUTE TO OUR OPERATOR CONSOLE? 00364000
  373. BNO MGXNOPR NO 00365000
  374. MGXTOLOC EQU * 00366000
  375. LA R1,MGXBUFFR-12 GET START OF MSG @VA03279 00367010
  376. MVC 4(8,R1),LINKID-LINKTABL(R2) MOVE IN OUR LINKID @VA03279 00367020
  377. LA R15,11(R3) GET THE MSG ELEMENT COUNT @VA03279 00367030
  378. STC R15,0(R1) STORE CHAR COUNT 00369000
  379. MVC 3(1,R1),3(R4) MOVE SEVERITY CODE 00370000
  380. * R2 CONTAINS LOCAL LINK TABLE ADDR 00371000
  381. L R15,TCOM GET COMMON ROUTINE ADDR 00372000
  382. L R15,PMSGREQ MESSAGE STACK ROUTINE 00373000
  383. BALR R14,R15 STACK THE MESSAGE 00374000
  384. * 00375000
  385. * IGNORE REJECTS FOR NOW 00376000
  386. * 00377000
  387. MGXNOPR EQU * 00378000
  388. LA R1,MGXBUFFR-L'MGXCMAND MOVE TO BUFFER 00379000
  389. MVC 0(L'MGXCMAND,R1),MGXCMAND MOVE 00380000
  390. LA R2,L'MGXCMAND(R3) GET COUNT 00381000
  391. TM MGXMSGRC,VMID GIVE TO A LOCAL V.M.? 00382000
  392. BNO MGXNOVM NO 00383000
  393. CLI 12(R4),C' ' IS A VM ID SPECIFIED? 00384000
  394. BE MGXNOVM SKIP IT IF NOT 00385000
  395. MVC 2(8,R1),12(R4) SET SPECIFIED ID 00386000
  396. L R15,HVCREQ GET CP WRITE ROUTINE ADDR 00387000
  397. BALR R14,R15 TO LOCAL VM 00388000
  398. * 00389000
  399. * IGNORE REJECTS FOR NOW 00390000
  400. * 00391000
  401. MGXNOVM EQU * 00392000
  402. TM MGXMSGRC,CP LOCAL OPERATOR? 00393000
  403. BNO MGXEXIT NO - QUIT 00394000
  404. MVC 2(8,R1),MGXCPID CP OPERATOR USERID 00395000
  405. LA R2,L'MGXCMAND(R3) RESTORE COUNT 00396000
  406. L R15,HVCREQ GET CP WRITE ROUTINE ADDR 00397000
  407. BALR R14,R15 SEND TO LOCAL OPERATOR 00398000
  408. * 00399000
  409. * IGNORE REJECTS FOR NOW 00400000
  410. * 00401000
  411. MGXEXIT EQU * 00402000
  412. SR R0,R0 CLEAR RETURN 00403000
  413. B MGXCOMX ENTER COMMON EXIT 00404000
  414. SPACE 00405000
  415. MGXERROR EQU * 00406000
  416. LA R15,16 SET ERROR RETURN 00407000
  417. MGXCOMX EQU * 00408000
  418. LM R0,R14,MGXSAVE RESTORE REGISTERS 00409000
  419. BR R14 RETURN TO CALLER 00410000
  420. EJECT 00411000
  421. *---------------------------------------------------------------------* 00412000
  422. * * 00413000
  423. * MESSAGE EXECUTOR CONTROL AREA * 00414000
  424. * * 00415000
  425. *---------------------------------------------------------------------* 00416000
  426. SPACE 2 00417000
  427. MGXNAME DC CL8'DMTMGX' NAME FOR ROUTINE 00418000
  428. HVCREQ DC V(DMTREXHC) CP WRITE ROUTINE ADDR 00419000
  429. SPACE 1 00420000
  430. MGXSAVE DC 16F'0' GENERAL REGISTER SAVE AREA 00421000
  431. MGXCSAVE DC 18F'0' GENERAL REGISTER SAVE AREA 00422000
  432. MGXWORK DC D'0' OBJECT OF A CVD INSTRUCTION 00423000
  433. MGXMSGS DC V(DMTMSG) STANDARD MSG TABLE ADDRESS 00424000
  434. REXREQ DC V(DMTREXHC) WRITE TO CP ENTRY 00425000
  435. SPACE 2 00426000
  436. * 00427000
  437. * MESSAGE OUTLINE ACCULULATOR 00428000
  438. * 00429000
  439. MGXPREFX DC CL12' ' @VA03279 00430010
  440. MGXBUFFR DC CL120' ' OUTPUT MESSAGE 00431000
  441. SPACE 00432000
  442. MGXCMAND DC C'M XXXXXXXX ' 00433000
  443. MGXCPID DC CL8'OP' CP OPERATOR USERID 00434000
  444. SPACE 00435000
  445. MGXMSGEL DC AL1(0),X'B1' ELMNT LENGTH, COMMAND CODE 00436000
  446. MGXMSGRC DC X'00' MESSAGE ROUTING CODE 00437000
  447. MGXMSGSC DC X'00' MESSAGE SEVERITY CODE 00438000
  448. EJECT 00439000
  449. COPY SVECTORS 00440000
  450. EJECT 00441000
  451. COPY LINKTABL 00442000
  452. EJECT 00443000
  453. COPY RSSEQU 00444000
  454. END 00445000