Table of Contents

DMTSIG Source

References

Source Listing

DMTSIG.ASSEMBLE.txt
  1. SIG TITLE 'DMTSIG (RSCS) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMTSIG 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. * PERFORM A TASK ALERT EXIT ON TASK REQUEST 00009000
  10. * 00010000
  11. * ATTRIBUTES - 00011000
  12. * 00012000
  13. * REUSABLE, NON-INTERRUPTABLE 00013000
  14. * 00014000
  15. * ENTRY POINTS - 00015000
  16. * 00016000
  17. * DMTSIG - ALERT A TASK 00017000
  18. * 00018000
  19. * ENTRY CONDITIONS - 00019000
  20. * 00020000
  21. * GPR0 = TASK NAME OF TASK TO BE ALERTED 00021000
  22. * GPR1 -> 12 = INFORMATION TO BE PASSED TRANSPARENTLY 00022000
  23. * TO THE ALERTED TASK'S ALERT EXIT ROUTINE 00023000
  24. * GPR14 = RETURN ADDRESS 00024000
  25. * GPR15 = ENTRY ADDRESS (LOADED FROM 'ALERTREQ') 00025000
  26. * 00026000
  27. * EXIT CONDITIONS - 00027000
  28. * 00028000
  29. * NORMAL - 00029000
  30. * 00030000
  31. * GPR15 = X'00' 00031000
  32. * 00032000
  33. * ALL OTHER REGISTERS UNMODIFIED BY DMTSIG, HOWEVER 00033000
  34. * CERTAIN REGISTERS MAY BE MODIFIED BY THE ALERTED 00034000
  35. * TASK'S ALERT ROUTINE 00035000
  36. * 00036000
  37. * ERROR - 00037000
  38. * 00038000
  39. * GPR15 = X'04' IF NAMED TASK DOES NOT EXIST, OR DOES 00039000
  40. * EXIST AND DOES NOT HAVE AN ACTIVE ALERT EXIT 00040000
  41. EJECT 00041000
  42. * 00042000
  43. * CALLS TO OTHER ROUTINES - 00043000
  44. * 00044000
  45. * ALERT EXIT ROUTINE FOR THE SPECIFIED TASK 00045000
  46. * 00046000
  47. * DMTDSP - TO RESUME DISPATCHED OPERATION 00047000
  48. * 00048000
  49. * EXTERNAL REFERENCES - 00049000
  50. * 00050000
  51. * NONE 00051000
  52. * 00052000
  53. * TABLES / WORKAREAS - 00053000
  54. * 00054000
  55. * DMTVEC - SUPERVISOR COMMON AREA 00055000
  56. * TASK ELEMENT 00056000
  57. * ASYNCH EXIT ELEMENT 00057000
  58. * 00058000
  59. * REGISTER USAGE - 00059000
  60. * 00060000
  61. * 00061000
  62. * GPR0 = TASK NAME 00062000
  63. * GPR1 = UNUSED 00063000
  64. * GPR2 = ASYNCH EXIT ELEMENT POINTER 00064000
  65. * GPR3 = TASK ELEMENT POINTER 00065000
  66. * GPR4 = UNUSED 00066000
  67. * GPR5 = UNUSED 00067000
  68. * GPR6 = UNUSED 00068000
  69. * GPR7 = UNUSED 00069000
  70. * GPR8 = UNUSED 00070000
  71. * GPR9 = UNUSED 00071000
  72. * GPR10 = UNUSED 00072000
  73. * GPR11 = UNUSED 00073000
  74. * GPR12 = UNUSED 00074000
  75. * GPR13 = UNUSED 00075000
  76. * GPR14 = TASK SAVE AREA POINTER 00076000
  77. * GPR15 = ENTRY ADDRESS, AND DMTSIG BASE REGISTER 00077000
  78. * 00078000
  79. * NOTES - 00079000
  80. * 00080000
  81. * ENTRY CONDITIONS TO THE ALERTED TASK'S ALERT EXIT 00081000
  82. * ROUTINE ARE (MASKED OFF, UNDISPATCHED, SUP STATE): 00082000
  83. * 00083000
  84. * GPR0 = NAME OF ALERTING TASK 00084000
  85. * GPR1 -> 12 AS SET BY ALERTING TASK 00085000
  86. * GPR13 = ADDR OF ALERTING TASK'S TASK ELEMENT 00086000
  87. * GPR14 = RETURN ADDRESS 00087000
  88. * GPR15 = ASYNCH EXIT ROUTINE ENTRY ADDRESS 00088000
  89. * 00089000
  90. * OPERATION - 00090000
  91. * 00091000
  92. * THE ALERT EXIT ELEMENT QUEUE IS SCANNED FOR AN ELEMENT 00092000
  93. * BELONGING TO THE TASK NAMED BY THE CALLING (ALERTING) 00093000
  94. * TASK. IF ONE IS FOUND, THE ALERT EXIT CALLING SEQUENCE 00094000
  95. * IS EXECUTED, AND EXIT IS MADE TO THE DISPATCHER WHEN 00095000
  96. * THE ALERT EXIT ROUTINE RETURNS CONTROL. 00096000
  97. * 00097000
  98. *. 00098000
  99. EJECT 00099000
  100. DMTSIG CSECT 00100000
  101. SPACE 00101000
  102. * ENTRY POINT FOR CALL TO DMTSIG ROUTINE 00102000
  103. SPACE 00103000
  104. FREEZE SAVE RESUME PSW AND GREGS FOR DISPATCH LATER 00104000
  105. SPACE 00105000
  106. USING TAREA,R14 DEFINE TASK SAVE AREA DSECT ADDRESSA 00106000
  107. USING DMTSIG,R15 USE ENTRY REGISTER AS BASE 00107000
  108. USING SVECTORS,0 GET SVECTORS ADDRESSABILTIY 00108000
  109. USING TASKE,R3 GET TASK ELEMENT ADDRESSABILITY 00109000
  110. USING ASYNE,R2 GET ASYN ELEMENT ADDRESSABILTIY 00110000
  111. SPACE 00111000
  112. XC TGREG15(4),TGREG15 CLEAR RETURN CODE FOR NOW 00112000
  113. LA R2,ALERTQ-(ASYNNEXT-ASYNE) INITIALIZE REQ EXIT ELEMENT 00113000
  114. ALSCAN EQU * 00114000
  115. ICM R2,B'1111',ASYNNEXT REG 2 = ADDRESS OF NEXT EXIT ELEM 00115000
  116. BZ ALNOGO YEP - RETURN WITH ERROR CODE 00116000
  117. L R3,ASYNTASK REG.3 = ADDR OF TASK ELEMENT OF EXIT OWN 00117000
  118. CL R0,TASKNAME IS THIS EXIT FOR THE REQUESTED TASK? 00118000
  119. BNE ALSCAN NOPE - KEEP LOOKING 00119000
  120. SPACE 00120000
  121. L R13,ASYNTASK REG.13 = ADDRESS OF EXIT'S TASK TABLE 00121000
  122. L R15,ASYNEXIT REG.15 = ADDRESS OF REQUESTED EXIT 00122000
  123. L R2,ACTIVE REG 2 = ADDRESS OF CALLING TASK'S TASK ELEMENT 00123000
  124. DROP R2,R3 00124000
  125. USING TASKE,R2 GET TASK ELEMENT ADDRESSABILITY 00125000
  126. L R0,TASKNAME REG.0 = TASK NAME OF CALLING TASK 00126000
  127. LM R2,R3,TGREG2 RESTORE CALLER'S REG.2 & 3 FOR ASYNCH EXIT 00127000
  128. BALR R14,R15 EXIT TO THE REQUESTED TASK ASYN ALERT ENTRY 00128000
  129. SPACE 00129000
  130. L R15,DISPATCH ON RETURN, SET REG.15 TO DISPATCHER ADDR 00130000
  131. BALR R14,R15 AND RESUME DISPATCHING TASKS 00131000
  132. SPACE 00132000
  133. ALNOGO EQU * 00133000
  134. MVI TGREG15+3,4 SET NOT FOUND CODE IN CALLER'S SAVE AREA 00134000
  135. L R15,DISPATCH REG.15 = ADDRESS OF DISPATCHER ENTRY 00135000
  136. BALR R14,R15 CALL THE DISPATCHER FOR EXIT 00136000
  137. EJECT 00137000
  138. COPY RSSEQU 00138000
  139. EJECT 00139000
  140. COPY SVECTORS 00140000
  141. EJECT 00141000
  142. COPY TAREA 00142000
  143. EJECT 00143000
  144. COPY TASKE 00144000
  145. EJECT 00145000
  146. COPY ASYNE 00146000
  147. END 00147000