Table of Contents

DMSOVR Source

References

Source Listing

DMSOVR.ASSEMBLE.txt
  1. OVR TITLE 'DMSOVR (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * MODULE NAME - 00008000
  5. * 00009000
  6. * DMSOVR (OVERRIDE) 00010000
  7. * 00011000
  8. * FUNCTION - 00012000
  9. * 00013000
  10. * TO ANALYZE THE THE 'SVCTRACE' COMMAND PLIST, AND 00014000
  11. * TO BOOTSTRAP-LOAD THE DMSOVS (OVERSUB) TRACING ROUTINE. 00015000
  12. * 00016000
  13. * ATTRIBUTES - 00017000
  14. * 00018000
  15. * DISK-RESIDENT (TRANSIENT), RE-USABLE 00019000
  16. * NOTE: SVCTRACE MUST BE GENMOD'D WITH THE SYSTEM OPTION 00019100
  17. * 00020000
  18. * ENTRY POINTS - 00021000
  19. * 00022000
  20. * DMSOVR 00023000
  21. * 00024000
  22. * ENTRY CONDITIONS - 00025000
  23. * 00026000
  24. * R1 -> SVCTRACE PLIST 00027000
  25. * 00028000
  26. * EXIT CONDITIONS - 00029000
  27. * 00030000
  28. * NORMAL - 00031000
  29. * RETURN CODE = 0 00032000
  30. * 00033000
  31. * ERROR - 00034000
  32. * DMSOVS003E INVALID OPTION 'OPTION' (RC = 24) 00035000
  33. * DMSOVS047E NO FUNCTION SPECIFIED. (RC = 24) 00036000
  34. * DMSOVS104S ERROR READING FILE DMSOVR MODULE FROM DISK. (RC = 00037000
  35. * 100) 00038000
  36. * 00039000
  37. * CALLS TO OTHER ROUTINES - 00040000
  38. * 00041000
  39. * RDBUF -- TO READ FILE DMSOVR MODULE FROM DISK. 00042000
  40. * DMSERR -- TO TYPE OUT ERROR MESSAGES. 00043000
  41. * 00044000
  42. * EXTERNAL REFERENCES - 00045000
  43. * 00046000
  44. * NONE 00047000
  45. * 00048000
  46. * TABLES / WORKAREAS - 00049000
  47. * 00050000
  48. * SETS FLAG BITS IN SVCSECT, TO BE INTERROGATED BY 00051000
  49. * DMSOVS. 00052000
  50. * 00053000
  51. * REGISTER USAGE - 00054000
  52. * 00055000
  53. * R3 -> CURRENT PAIR OF FLAG BYTES 00056000
  54. * R4 = INTERNAL SUBROUTINE LINK REGISTER 00057000
  55. * R5 -> 'SVCTRACE' PLIST 00058000
  56. * R6 -> SVCSECT 00059000
  57. * 00060000
  58. * NOTES - 00061000
  59. * 00062000
  60. * NONE 00063000
  61. * 00064000
  62. * OPERATION - 00065000
  63. * 00066000
  64. * THE 'SVCTRACE' PLIST IS EXAMINED, AND BITS ARE SET IN SVCSECT 00067000
  65. * CORRESPONDING TO EACH OF THE OPTIONS SPECIFIED. 00068000
  66. * AFTER THE PLIST HAS BEEN PROCESSED, THEN DMSOVS MODULE IS 00069000
  67. * LOADED INTO FREE STORAGE IF TRACING IS 'ON', AND IT WAS NOT 00070000
  68. * ALREADY IN CORE; OR ELSE, FREE STORAGE USED BY DMSOVS IS 00071000
  69. * RELEASED, IF IT IS IN FREE STORAGE, AND TRACING IS 00072000
  70. * NOW 'OFF'. 00073000
  71. * 00074000
  72. * P3071 00075000
  73. * P3071 00076000
  74. * P3071 00077000
  75. *. P3071 00078000
  76. EJECT P3071 00079000
  77. MACRO 00083000
  78. CKBYTE &N,&B , .... 00084000
  79. LCLA &I 00085000
  80. LCLC &L 00086000
  81. .LOOP ANOP 00087000
  82. &I SETA &I+2 00088000
  83. AIF (&I GT N'&SYSLIST).MEND 00089000
  84. &L SETC 'CKB&SYSLIST(&I).E' 00090000
  85. CLC =CL8'&SYSLIST(&I-1)',0(PR) 00091000
  86. BNE &L 00092000
  87. LA FLR,OV&SYSLIST(&I).F 00093000
  88. OI 0(FLR),OVF1ON 00094000
  89. B PARMLOOP 00095000
  90. &L EQU * 00096000
  91. AGO .LOOP 00097000
  92. .MEND MEND 00098000
  93. EJECT 00099000
  94. MACRO 00100000
  95. TON &OP,&N,&BIT 00101000
  96. LCLC &S 00102000
  97. &S SETC '&SYSNDX' 00103000
  98. CLC =CL8'&OP',0(PR) 00104000
  99. BNE ON&S 00105000
  100. OI &N-1(FLR),OVF&N.&BIT 00106000
  101. B PARMLOOP GO FOR NEXT TOKEN 00107000
  102. ON&S EQU * 00108000
  103. MEND 00109000
  104. SPACE 5 00110000
  105. MACRO 00111000
  106. TOFF &OP,&N,&BIT 00112000
  107. LCLC &S 00113000
  108. &S SETC '&SYSNDX' 00114000
  109. CLC =CL8'&OP',0(PR) 00115000
  110. BNE OFF&S 00116000
  111. NI &N-1(FLR),X'FF'-(OVF&N.&BIT) 00117000
  112. B PARMLOOP 00118000
  113. OFF&S EQU * 00119000
  114. MEND 00120000
  115. EJECT 00121000
  116. MACRO 00122000
  117. TONOFF &OP,&N,&BIT 00123000
  118. LCLA &I 00124000
  119. .LOOP ANOP 00125000
  120. &I SETA &I+3 00126000
  121. AIF (&I GT N'&SYSLIST).MEND 00127000
  122. TON &SYSLIST(&I-2),&SYSLIST(&I-1),&SYSLIST(&I) 00128000
  123. TOFF NO&SYSLIST(&I-2),&SYSLIST(&I-1),&SYSLIST(&I) 00129000
  124. AGO .LOOP 00130000
  125. .MEND MEND 00131000
  126. * REGISTER DEFINITIONS 00133000
  127. DMSOVR START X'E000' 00134000
  128. REGEQU 00135000
  129. SPACE 5 00136000
  130. BR EQU R12 BASE REGISTER 00137000
  131. FLR EQU R3 FLAG BYTE PAIR POINTER 00138000
  132. RR EQU R4 SUBROUTINE RETURN REGISTER 00139000
  133. PR EQU R5 PLIST POINTER 00140000
  134. SVCR EQU R6 POINTER TO SVCSECT 00141000
  135. OVSR EQU R7 POINTER TO OVSECT 00142000
  136. XR EQU R8 SCRATCH REG 00143000
  137. SPACE 5 00144000
  138. USING DMSOVR,BR 00145000
  139. USING SVCSECT,SVCR 00146000
  140. USING NUCON,R0 00147000
  141. USING OVSECT,OVSR 00148000
  142. DMSOVR CSECT 00150000
  143. SAVE (14,12),,* SAVE REGISTERS 00151000
  144. LR BR,R15 COPY OVER BASE REGISTER 00152000
  145. L SVCR,ASVCSECT POINT TO SVCSECT 00153000
  146. LA PR,8(,R1) POINT TO FIRST PARM IN PLIST 00154000
  147. MVI RC,0 ZERO RETURN CODE SO FAR 00156000
  148. SR FLR,FLR NO FLAG BYTE POINTER YET 00157000
  149. CLI 0(PR),X'FF' ANY PARAMETERS?? 00158000
  150. BE ERNOPARM ERROR IF NONE 00159000
  151. CLC =CL8'OFF',0(PR) SVCTRACE OFF? 00160000
  152. BE OFF TURN OFF IF SO 00161000
  153. CLC =CL8'ON',0(PR) SVCTRACE ON SPECIFIED? 00162000
  154. BE ON GO HANDLE IT 00163000
  155. B ERPARM NOT A PROPER PARAMETER @VA02088 00165500
  156. EJECT 00206000
  157. * RELEASE DMSOVS, IF IT IS IN CORE. 00207000
  158. OFF EQU * 00208000
  159. NI OVSTAT,X'FF'-(OVSON+OVSHO+OVSSO) TURN OFF FLAGS 00209000
  160. CLC ADMSOVS,=F'0' DMSOVS IN STORAGE? 00210000
  161. BE OFFN NOTHING TO DO IF NOT 00211000
  162. L OVSR,ADMSOVS POINT TO DMSOVS 00212000
  163. L R0,LENOVS GET ITS LENGTH 00213000
  164. LR R1,OVSR R1 -> DMSOVS 00214000
  165. DMSFRET DWORDS=(0),LOC=(1) RELEASE IT 00215000
  166. MVC ADMSOVS,=F'0' ZERO OUT THE POINTER 00216000
  167. SPACE 00217000
  168. OFFE EQU * 00218000
  169. TM OVBPF,OVF1ON WAS 'BEFORE PRINT' FLAG ON? 00219000
  170. BO OFFP PRINT OFF MESSAGE IF IT WAS 00220000
  171. TM OVAPF,OVF1ON WAS 'AFTER PRINT' FLAG ON? 00221000
  172. BNO OFFN DON'T PRINT IF IT WASN'T 00222000
  173. SPACE 00223000
  174. OFFP EQU * 00224000
  175. LINEDIT DISP=PRINT,COMP=NO,DOT=NO, *00225000
  176. TEXT='0 SVCTRACE OFF' 00226000
  177. LINEDIT TEXT='CLOSE PRT',DISP=CPCOMM,DOT=NO 00227000
  178. SPACE 00228000
  179. OFFN EQU * 00229000
  180. CLI RC,0 ZERO RETURN CODE? 00230000
  181. BE RETURN CHECK FOR ERROR IF SO 00231000
  182. B RETOFF OTHERWISE, JUST RETURN 00232000
  183. EJECT 00233000
  184. * SVCTRACE ON 00234000
  185. ON EQU * 00235000
  186. MVC OVBPF(8),ONF SET 'ON' FLAGS 00236000
  187. B LOADOVS GO LOAD DMSOVS INTO MEMORY 00237000
  188. SPACE 00238000
  189. * FLAGS FOR 'ON' 00239000
  190. ONF DC AL1(OVF1ON,OVF2CM+OVF2NR+OVF2OS+OVF2WA) 00240000
  191. DC AL1(0,0) 00241000
  192. DC AL1(OVF1ON+OVF1GB+OVF1GA+OVF1GS+OVF1PA+OVF1F+OVF1FS) 00242000
  193. DC AL1(OVF2CM+OVF2NR+OVF2OS+OVF2WA) 00243000
  194. DC AL1(0,0) 00244000
  195. EJECT 00245000
  196. * LOAD DMSOVS INTO STORAGE 00246000
  197. LOADOVS EQU * 00247000
  198. TM OVBPF,OVF1ON 'BEFORE PRINT' FLAG ON? 00248000
  199. BO LOADMSG PRINT MESSAGE IF ON 00249000
  200. TM OVAPF,OVF1ON 'AFTER PRINT' FLAG ON? 00250000
  201. BNO LOADOVS1 DON'T PRINT IF NOT 00251000
  202. SPACE 00252000
  203. LOADMSG EQU * 00253000
  204. LINEDIT DISP=PRINT,COMP=NO,DOT=NO, *00254000
  205. TEXT='1 SVCTRACE ON' 00255000
  206. SPACE 00256000
  207. LOADOVS1 EQU * 00257000
  208. CLC ADMSOVS,=F'0' IS IT IN STORAGE? 00258000
  209. BNE RETURN NORMAL RETURN IF SO 00259000
  210. FSSTATE FSCB=OVFSCB,ERROR=ERREAD STATE 'DMSOVS MODULE *' 00260000
  211. L XR,32(R1) GET SIZE OF CORE IMAGE 00261000
  212. LA XR,7(,XR) ROUND IT UP 00262000
  213. SRL XR,3 AND CONVERT TO DOUBLEWORDS 00263000
  214. LR R0,XR PUT SIZE IN R0 00264000
  215. DMSFREE TYPE=NUCLEUS,DWORDS=(0),ERR=ERCORE ALLOCATE STORAGE 00265000
  216. LR OVSR,R1 OVSR -> DMSOVS 00266000
  217. LR R14,XR SIZE OF BUFFER IN DWORDS 00267000
  218. SLL R14,3 CONVERT TO BYTES 00268000
  219. FSREAD FSCB=OVFSCB,BUFFER=(OVSR),RECNO=2,ERROR=LOADFRET, *00269000
  220. BSIZE=(R14) READ IN DMSOVS 00270000
  221. ST XR,LENOVS SAVE LENGTH 00271000
  222. ST OVSR,ADMSOVS STORE POINTER TO DMSOVS 00272000
  223. OI OVSTAT,OVSON TURN ON FLAG AGAIN 00273000
  224. B RETURN NORMAL RETURN 00274000
  225. SPACE 3 00275000
  226. * COME HERE ON AN ERROR ON FSREAD. WE MUST FRET THE BUFFER THAT 00276000
  227. * WE ALLOCATED. 00277000
  228. LOADFRET EQU * 00278000
  229. LR R1,OVSR ADDRESS OF BUFFER 00279000
  230. LR R0,XR SIZE OF BUFFER 00280000
  231. DMSFRET LOC=(1),DWORDS=(0) FRET THE BUFFER 00281000
  232. B ERREAD GO TYPE AN ERROR MESSAGE 00282000
  233. SPACE 5 00283000
  234. OVFSCB FSCB 'DMSOVS MODULE *',RECFM=V 00284000
  235. EJECT 00285000
  236. * COME HERE TO RETURN TO CALLER. 00287000
  237. RETURN EQU * 00288000
  238. CLI RC,0 ERROR RETURN? 00289000
  239. BNE OFF RELEASE DMSOVS IF SO 00290000
  240. SPACE 00291000
  241. * IF THERE ARE ANY PARMS LEFT OVER, THEN THEY MUST BE ILLEGAL 00292000
  242. CLI 0(PR),X'FF' IS CURRENT PARM AT END? 00293000
  243. BE RETOFF WE'RE THRU IF SO 00294000
  244. LA PR,8(,PR) POINT TO NEXT PARM 00295000
  245. CLI 0(PR),X'FF' IS IT THE END? 00296000
  246. BNE ERPARM ILLEGAL IF NOT 00297000
  247. SPACE 00298000
  248. * OFF RETURNS HERE 00299000
  249. RETOFF EQU * 00300000
  250. SR R15,R15 CLEAR RETURN CODE REGISTER @V305614 00300100
  251. IC R15,RC GET CORRECT RETURN CODE 00302000
  252. RETURN (14,12),RC=(15) 00303000
  253. ERNOPARM EQU * 00305000
  254. DMSERR LET=E,NUM=47,TEXT='NO FUNCTION SPECIFIED' 00306000
  255. MVI RC,24 00307000
  256. B RETURN 00308000
  257. SPACE 5 00309000
  258. ERPARM EQU * 00310000
  259. DMSERR LET=E,NUM=14,TEXT='INVALID FUNCTION ''........''', *00311000
  260. SUB=(CHARA,(PR)) 00312000
  261. MVI RC,24 00313000
  262. B RETURN 00314000
  263. SPACE 5 00315000
  264. ERREAD EQU * 00316000
  265. LR R7,R15 SAVE ERROR CODE V0314 00316100
  266. DMSERR LET=S,NUM=104,SUB=(DEC,(R7)), *00317000
  267. TEXT='ERROR ''..'' READING ''DMSOVS MODULE'' FROM DISK' 00317100
  268. * V0314 00317200
  269. * V0314 00317300
  270. MVI RC,100 00319000
  271. B RETURN 00320000
  272. EJECT 00321000
  273. ERCORE EQU * 00322000
  274. DMSERR NUM=109,LET=S,TEXT='INSUFFICIENT FREE STORAGE AVAILABLE*00323000
  275. ' 00324000
  276. MVI RC,104 00325000
  277. B RETURN 00326000
  278. RC DS X RETURN CODE 00328000
  279. SPACE 2 00329000
  280. LTORG 00330000
  281. OVSECT 00332000
  282. NUCON 00333000
  283. SVCSECT 00334000
  284. END 00335000