User Tools

Site Tools


ibm:vm370-lib:cms:dmsovs.assemble_src

DMSOVS Source

References

Source Listing

DMSOVS.ASSEMBLE.txt
  1. OVS TITLE 'DMSOVS (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * MODULE NAME - 00008000
  5. * 00009000
  6. * DMSOVS (OVERSUB) 00010000
  7. * 00011000
  8. * FUNCTION - 00012000
  9. * 00013000
  10. * 00014000
  11. * PROVIDE TRACE INFORMATION REQUESTED BY 'SVCTRACE' COMMAND. 00015000
  12. * 00016000
  13. * ATTRIBUTES - 00017000
  14. * 00018000
  15. * DISK-RESIDENT, RE-USABLE 00019000
  16. * 00020000
  17. * ENTRY POINTS - 00021000
  18. * 00022000
  19. * DMSOVS 00023000
  20. * 00024000
  21. * ENTRY CONDITIONS - 00025000
  22. * 00026000
  23. * IT IS INTENDED THAT DMSOVS ONLY BE CALLED BY DMSITS, 00027000
  24. * TO PROVIDE TRACE INFORMATION REQUESTED BY 'SVCTRACE'. 00028000
  25. * AT ENTRY, CURRSAVE (IN NUCON) SHOULD POINT TO THE CURRENT 00029000
  26. * SYSTEM SAVE AREA. 00030000
  27. * IN ADDITION, DMSITS MUST HELP OUT DMSOVS BY PROVIDING THE 00031000
  28. * FOLLOWING INFORMATION: 00032000
  29. * THE ADDRESSES OF DMSERR AND DMSCWT MUST BE PASSED TO DMSOVS, 00033000
  30. * AND PLACED IN THE ROURTH AND FIFTH WORDS THEREOF. 00034000
  31. * ALSO, THE STARTUP PSW MUST BE PLACED IN LOCATIONS 0-8 OF 00035000
  32. * LOW CORE. 00036000
  33. * 00037000
  34. * EXIT CONDITIONS - 00038000
  35. * 00039000
  36. * NORMAL - 00040000
  37. * THE TRACE INFORMATION HAS BEEN PROVIDED. 00041000
  38. * 00042000
  39. * ERROR - 00043000
  40. * THERE IS NO ERROR RETURN POSSIBLE. 00044000
  41. * 00045000
  42. * CALLS TO OTHER ROUTINES - 00046000
  43. * 00047000
  44. * DMSERR -- TO PROVIDE THE TRACE INFORMATION. 00048000
  45. * DMSCWT (CONWAIT) -- TO WAIT FOR OUTPUT TO TERMINATE. 00049000
  46. * 00050000
  47. * EXTERNAL REFERENCES - 00051000
  48. * 00052000
  49. * NONE. (NOTE -- DMSITS MUST PASS THE ADDRESSES OF DMSERR 00053000
  50. * AND DMSCWT TO DMSOVS.) 00054000
  51. * 00055000
  52. * TABLES / WORKAREAS - 00056000
  53. * 00057000
  54. * USES WORKSPACE INTERNAL TO ROUTINE. (ROUTINE IS NOT 00058000
  55. * RE-ENTRANT.) 00059000
  56. * 00060000
  57. * REGISTER USAGE - 00061000
  58. * 00062000
  59. * R3 -> SVCSECT 00063000
  60. * R4 -> CURRENT SYSTEM SAVE AREA 00064000
  61. * R5, R6 = INTERNAL PARAMETER REGISTERS 00065000
  62. * RR = INTERNAL SUBROUTINE LINK REGISTER 00066000
  63. * R12 = BASE REGISTER 00067000
  64. * 00068000
  65. * NOTES - 00069000
  66. * 00070000
  67. * NONE. 00071000
  68. * 00072000
  69. * OPERATION - 00073000
  70. * 00074000
  71. * THE OVERRIDE FLAG BITS IN SVCSECT ARE INTERROGATED TO 00075000
  72. * DETERMINE WHICH SVCTRACE OPTIONS ARE IN EFFECT. AS EACH 00076000
  73. * 'ON' BIT IS FOUND, THE APPROPRIATE INFORMATION IS EITHER 00077000
  74. * TYPED OR PRINTED. 00078000
  75. * 00079000
  76. * IF THE 'STOP' OPTION HAS BEEN SPECIFIED, THEN THE CP 'ADSTOP' 00080000
  77. * FACILITY IS INVOKED TO ADDRESS STOP ON THE ADDRESS IN THE 00081000
  78. * PSW WITH WHICH DMSITS IS TO RESTART. 00082000
  79. * 00083000
  80. * 00084000
  81. * P3071 00085000
  82. * P3071 00086000
  83. * P3071 00087000
  84. *. P3071 00088000
  85. EJECT P3071 00089000
  86. MACRO 00091000
  87. TF &F,&B,&L 00092000
  88. LCLC &C 00093000
  89. &C SETC '&F'(1,1) 00094000
  90. TM FLAGS-1+&C,OVF&F 00095000
  91. B&B &L 00096000
  92. MEND 00097000
  93. SPACE 5 00098000
  94. MACRO 00099000
  95. TAFT &L 00100000
  96. TM OVSTAT,OVSAFT CHECK 'AFTER' FLAG 00101000
  97. BO &L GO IF IT'S ON 00102000
  98. MEND 00103000
  99. SPACE 2 00104000
  100. MACRO 00105000
  101. TBEF &L 00106000
  102. TM OVSTAT,OVSAFT CHECK 'AFTER' FLAG 00107000
  103. BZ &L GO IF OFF, MEANING 'BEFORE' 00108000
  104. MEND 00109000
  105. DMSOVS CSECT 00111000
  106. REGEQU 00112000
  107. SPACE 2 00113000
  108. BR EQU R12 BASE REGISTER 00114000
  109. SVCR EQU R3 POINTER TO SVCSECT 00115000
  110. SR EQU R4 POINTER TO SYSTEM SAVE AREA 00116000
  111. PR1 EQU R5 FIRST INTERNAL PARAMETER REG 00117000
  112. PR2 EQU R6 SECOND INTERNAL PARAMETER REG 00118000
  113. RR EQU R7 INTERNAL RETURN REGISTER 00119000
  114. XR EQU R8 SCRATCH REGISTER 00120000
  115. SPACE 5 00121000
  116. USING DMSOVS,BR 00122000
  117. USING SVCSECT,SVCR 00123000
  118. USING SSAVE,SR 00124000
  119. USING NUCON,R0 00125000
  120. * DMSOVS -- THIS ROUTINE IS LOADED INTO NUCLEUS FREE STORAGE BY 00127100
  121. * DMSOVR, AND SO MAY NOT CONTAIN ANY RELOCATABLE ADDRESS CONSTANTS 00129000
  122. * OR VCONS. WE ENTER HERE FROM DMSITS TO PROVIDE THE NECESSARY 00130000
  123. * TRACE INFORMATION. THE FIRST FEW WORDS OF THIS MODULE MUST BE THE 00131000
  124. * SAVE AS DESCRIBED IN THE OVSECT MACRO, WHICH IS REFERENCED BY OTHER 00132000
  125. * ROUTINES. 00133000
  126. DMSOVS CSECT 00134000
  127. USING *,R15 00135000
  128. B START ENTER HERE TO START TRACE 00136000
  129. ADMSERR DC A(0) ADDRESS OF DMSERR, AND OF ... 00137000
  130. ACONWAIT DC A(0) CONWAIT, ARE PASSED BY DMSITS 00138000
  131. LENOVS DC A(OVSLEN) LENGTH OF THIS ROUTINE IN DWORDS 00139000
  132. * THIS MARKS THE END OF THE AREA DESCRIBED BY THE OVSECT MACRO. 00140000
  133. SPACE 3 00141000
  134. START EQU * 00142000
  135. STM R0,R15,SAVEREGS SAVE ALL REGISTERS 00143000
  136. MVC LOWCORE(16),ITSPSW SAVE 4 WORDS OF LOW CORE 00144000
  137. LR BR,R15 COPY BASE REGISTER 00145000
  138. DROP R15 00146000
  139. L SVCR,ASVCSECT POINT TO SVCSECT 00147000
  140. L SR,CURRSAVE POINT TO SYSTEM SAVE AREA 00148000
  141. SPACE 00149000
  142. * IF THIS IS A 'BEFORE' CALL, THEN WE INITIALIZE SOME 00150000
  143. * SPECIAL THINGS IN THE SYSTEM SAVE AREA. 00151000
  144. TAFT START1 GO IF THIS IS AN 'AFTER' CALL 00152000
  145. MVC XGPR0(8),EGPR0 SET XGPR0, XGPR1 00153000
  146. MVC XGPR15,EGPR15 SET XGPR15 00154000
  147. MVC XCOUNT,SVCOUNT SET XCOUNT 00155000
  148. SPACE 00156000
  149. START1 EQU * 00157000
  150. TM OVSTAT,OVSSO 'SUSPEND OVERRIDES' IN EFFECT 00158000
  151. BO RT RETURN IMMEDIATELY, IF SO 00159000
  152. TM OVSTAT,OVSHO 'HALT OVERRIDES' FLAG SET 00160000
  153. BO HALTOVR GO HANDLE IT IF SO 00161000
  154. MVC FLAGS(4),OVBPF COPY 'BEFORE' FLAGS 00162000
  155. TBEF *+10 SKIP IF 'BEFORE' ENTRY 00163000
  156. MVC FLAGS(4),OVAPF COPY 'AFTER' FLAGS, IF 'AFTER' 00164000
  157. MVI STOPFLAG,0 TURN OFF STOPFLAG, FOR NOW 00165000
  158. MVI TYPEFLAG,0 WE ARE NOT YET TYPING 00166000
  159. SPACE 2 00167000
  160. * COME HERE EITHER BY DROPPING THROUGH FROM ABOVE, OR BY RETURNING 00168000
  161. * HERE AFTER THE PRINTING HAS BEEN COMPLETED TO CHECK FOR TYPING. 00169000
  162. PTLOOP EQU * 00170000
  163. TF 1ON,Z,NOWORK NOTHING TO DO IF NOT 'ON' 00171000
  164. TM TYPFLAG,TPFSVO IS THIS 'OS SVC'? 00172000
  165. BO PTOS GO IF IT IS 00173000
  166. TBEF PTB GO IF 'BEFORE' 00174000
  167. TF 2NR,O,PTB GO IF HE WANTS 'NORMAL' CMS SVCS 00175000
  168. SPACE 00176000
  169. * OTHERWISE, HE IS SUPPRESSING 'NORMAL CMS SVC' CALLS. WE CHECK TO 00177000
  170. * SEE IF THIS IS A NORMAL RETURN. 00178000
  171. CLC EGPR15,=F'0' IS THIS A NORMAL RETURN? 00179000
  172. BE NOWORK NOTHING TO DO IF SO 00180000
  173. SPACE 00181000
  174. * COME HERE TO CHECK IF HE IS SUPPRESSING ALL CMS SVC CALLS. 00182000
  175. PTB EQU * 00183000
  176. TF 2CM,Z,NOWORK GO IF HE IS SUPPRESSING THEM 00184000
  177. B PTE WE'RE OK IF HE'S NOT 00185000
  178. SPACE 2 00186000
  179. * COME HERE ON AN OS SVC CALL. WE MUST CHECK TO SEE IF HE WANTS THEM 00187000
  180. * TRACED. 00188000
  181. PTOS EQU * 00189000
  182. TF 2OS,Z,NOWORK GO IF HE DOESN'T 00190000
  183. SPACE 00191000
  184. * COME HERE IF HE WANTS THIS ONE TRACED. 00192000
  185. PTE EQU * 00193000
  186. * WE OUTPUT THE DESCRIPTION LINE, WHICH SUMMARIZES THE SVC CALL. 00195000
  187. DL EQU * 00196000
  188. SPACE 00197000
  189. LINEDIT TYPCALL=NONE,DOT=NO,BUFFA=LBUFF,DISP=NONE, *00198000
  190. COMP=NO,MF=(E,ERLIST),TEXT=' ' OUTPUT A NULL LINE 00199000
  191. BAL RR,OUTPUT 00200000
  192. MVC DLTEXTRC,RCOFF ASSUME NO RC WANTED 00201000
  193. MVI DLTEXTS,C'-' ASSUME '-' AS FIRST CHAR 00202000
  194. SPACE 00203000
  195. * IF THIS IS A 'BEFORE' CALL, THEN WE DON'T PRINT THE RC INFORMATION, 00204000
  196. * AND THE DESCRIPTION LINE BEGINS WITH A HYPHEN. 00205000
  197. TBEF DLL GO IF THIS IS 'BEFORE' 00206000
  198. SPACE 00207000
  199. * FOR 'AFTER' CALLS, THE DESCRIPTION LINE BEGINS WITH A PLUS SIGN 00208000
  200. * (FOR NORMAL RETURNS OR OS SVCS) OR WITH A STAR (FOR ERROR CMS 00209000
  201. * RETURNS). 00210000
  202. MVI DLTEXTS,C'+' ASSUME PLUS SIGN 00211000
  203. TM TYPFLAG,TPFSVO IS THIS AN OS SVC? 00212000
  204. BO DLL THEN NO MORE ALTERATIONS 00213000
  205. MVC DLTEXTRC,RCON INSERT 'RC' FIELD FOR CMS 00214000
  206. CLC EGPR15,=F'0' IS THIS A NORMAL RETURN? 00215000
  207. BE DLL NO ALTERATIONS, IF SO 00216000
  208. MVI DLTEXTS,C'*' USE STAR AS FIRST CHAR, IF NOT 00217000
  209. SPACE 00218000
  210. * AT THIS POINT, THE 'TEXT' OF THE LINEDIT MACRO HAS BEEN FORMED, AND 00219000
  211. * WE'RE READY TO MAKE THE CALL TO PERFORM THE SUBSTITUTIONS. 00220000
  212. DLL EQU * 00221000
  213. LINEDIT TYPCALL=NONE,DOT=NO,BUFFA=LBUFF,DISP=NONE, *00222000
  214. TEXTA=DLTEXT,MF=(E,ERLIST), *00223000
  215. SUB=(DECA,XCOUNT,DECA,DEPTH,CHARA,CALLEE,HEXA,CALLER, *00224000
  216. HEX4A,OLDPSW,HEX4A,LOWCORE,DECA,EGPR15) 00225000
  217. BAL RR,OUTPUT OUTPUT THE LINE 00226000
  218. B DLE 00227000
  219. SPACE 3 00228000
  220. DLTEXT EQU * 00229000
  221. DC AL1(DLTEXTL),C' ' 00230000
  222. DLTEXTS DC C'*' - = BEFORE, + = AFTER, * = ERROR 00231000
  223. DC C'N/D = ....../..,' 00232000
  224. DC C' ........ FROM ......,' CALLEE/CALLER 00233000
  225. DC C' OLDPSW = .................,' 00234000
  226. DC C' GOPSW = .................' 00235000
  227. DLTEXTRC DC C', RC = ..........' 00236000
  228. DLTEXTL EQU *-DLTEXT-1 TEXT LENGTH 00237000
  229. RCON DC C', RC = ..........' 00238000
  230. RCOFF DC (L'RCON)C' ' 00239000
  231. DS 0H 00240000
  232. DLE EQU * 00241000
  233. LINEDIT TYPCALL=NONE,DOT=NO,BUFFA=LBUFF,DISP=NONE, C00241250
  234. COMP=NO,MF=(E,ERLIST),TEXT=' ' NULL LINE @VA06251 00241500
  235. BAL RR,OUTPUT TO STOP OVERPRINTING @VA06251 00241750
  236. GB EQU * 00243000
  237. TF 1GB,Z,GBE GO IF GPRS BEFORE NOT WANTED 00244000
  238. MVC DUMPAREA,EGPRS COPY EGPRS INTO DUMPAREA 00245000
  239. MVC DUMPAREA(8),XGPR0 OVERLAY XGPR0, XGPR1 00246000
  240. MVC DUMPAREA+4*R15,XGPR15 OVERLAY XGPR15 00247000
  241. LA PR1,=C'GPRSB' TITLE = GPRSB 00248000
  242. LA PR2,DUMPAREA POINT TO REGS 0-7 00249000
  243. BAL RR,HEXDUMP DUMP THOSE 00250000
  244. LA PR1,=CL5' ' NO TITLE ON SECOND LINE 00251000
  245. LA PR2,DUMPAREA+32 POINT TO REGS 8-15 00252000
  246. BAL RR,HEXDUMP DUMP THOSE 00253000
  247. SPACE 00254000
  248. GBE EQU * 00255000
  249. GA EQU * 00257000
  250. TF 1GA,Z,GAE GO IF GPRS AFTER NOT WANTED 00258000
  251. TBEF GAE GO IF THIS IS 'BEFORE' DUMP 00259000
  252. TF 1GB,O,GA1 IF WE HAVE JUST DUMPED GPRS *00260000
  253. BEFORE, THEN USE DIFFERENT FORM 00261000
  254. LA PR1,=C'GPRSA' TITLE = GPRSB 00262000
  255. LA PR2,EGPRS POINT TO REGS 0-7 00263000
  256. BAL RR,HEXDUMP DUMP THEM 00264000
  257. LA PR1,=CL5' ' NO TITLE ON SECOND LINE 00265000
  258. LA PR2,EGPRS+32 POINT TO REGS 8-15 00266000
  259. BAL RR,HEXDUMP DUMP THEM 00267000
  260. B GAE FINISHED WITH REGS AFTER 00268000
  261. SPACE 00269000
  262. * IF WE ARE DUMPING REGS BEFORE AND REGS AFTER, WE USE A DIFFERENT 00270000
  263. * FORMAT -- WE DUMP JUST THE NEW VALUES OF REGS 0-1 AND 15. 00271000
  264. * (IF ANY OTHER REGS HAVE BEEN CHANGED IN SSAVE, WE HAVE NO WAY OF 00272000
  265. * KNOWLING ABOUT THEM, ANYWAY.) 00273000
  266. GA1 EQU * 00274000
  267. LINEDIT MF=(E,ERLIST),TYPCALL=NONE,DOT=NO,COMP=NO, *00275000
  268. TEXTA=GATEXT,BUFFA=LBUFF,DISP=NONE, *00276000
  269. SUB=(HEX4A,EGPR0,CHARA,EGPR0,HEX4A,EGPR15,CHARA,EGPR15) 00277000
  270. BAL RR,OUTPUT GO OUTPUT THE LINE 00278000
  271. B GAE 00279000
  272. SPACE 2 00280000
  273. GATEXT DC AL1(GATEXTL),C' ',X'00' 00281000
  274. DC C'GPRS AFTER : R0-R1 = ' 00282000
  275. DC (17)C'.',C' *',(8)C'.',C'*' 00283000
  276. DC C' R15 = ',(8)C'.',C' *....*' 00284000
  277. GATEXTL EQU *-GATEXT-1 00285000
  278. DS 0H 00286000
  279. GAE EQU * 00287000
  280. GS EQU * 00289000
  281. TF 1GS,Z,GSE GO IF GPRSS NOT WANTED 00290000
  282. TBEF GSE GO IF THIS IS 'BEFORE' CALL 00291000
  283. LA PR1,=C'GPRSS' TITLE = GPRSS 00292000
  284. LA PR2,RGPRS POINT TO RGPR0-RGPR7 00293000
  285. BAL RR,HEXDUMP DUMP THEM 00294000
  286. LA PR1,=CL5' ' NO TITLE ON SECOND LINE 00295000
  287. LA PR2,RGPR8 POINT TO RGPR8-RGPR15 00296000
  288. BAL RR,HEXDUMP DUMP THEM 00297000
  289. SPACE 00298000
  290. GSE EQU * 00299000
  291. F EQU * 00301000
  292. TF 1F,Z,FE GO IF FPRS NOT WANTED 00302000
  293. LA PR1,=C'FPRS ' TITLE = FPRS 00303000
  294. LA PR2,EFPRS POINT TO THEM 00304000
  295. BAL RR,HEXDUMP DUMP THEM 00305000
  296. SPACE 00306000
  297. FE EQU * 00307000
  298. FS EQU * 00309000
  299. TF 1FS,Z,FSE GO IF HE DOESN'T WANT THEM 00310000
  300. TBEF FSE GO IF THIS IS 'BEFORE' CALL 00311000
  301. LA PR1,=C'FPRSS' TITLE = FPRSS 00312000
  302. LA PR2,RFPRS POINT TO THE REGS 00313000
  303. BAL RR,HEXDUMP DUMP THEM 00314000
  304. FSE EQU * 00315000
  305. PL EQU * 00317000
  306. TF 1PA,Z,PLE GO IF PARAM LIST NOT WANTED 00318000
  307. LA PR1,=C'PARM ' TITLE = PARM 00319000
  308. L PR2,XGPR1 XGPR1 -> PARAMETER LIST 00320000
  309. SPACE 00321000
  310. * THE PLIST LIST POINTER MUST BE WITHIN 64 BYTES OF 00322000
  311. * THE END OF VIRTUAL MEMORY, TO PREVENT A PROGRAM CHECK. 00323000
  312. LA PR2,0(,PR2) ZERO OUT HIGH BYTE 00324000
  313. L XR,VMSIZE GET END OF VIRTUAL MEMORY 00325000
  314. SH XR,=H'64' SUBTRACE 64 00326000
  315. CLR PR2,XR COMPARE ADDRESSES 00327000
  316. BH PLE SKIP OUTPUT IF TOO HIGH 00328000
  317. BAL RR,HEXDUMP DUMP THE FIRST LINE 00329000
  318. LA PR1,=CL5' ' NO TITLE ON SECOND LINE 00330000
  319. LA PR2,32(,PR2) POINT TO NEXT GROUP OF TOKENS 00331000
  320. BAL RR,HEXDUMP DUMP THE SECOND LINE 00332000
  321. SPACE 00333000
  322. PLE EQU * 00334000
  323. TF 2ST,Z,*+8 SKIP IF 'STOP' NOT SPECIFIED 00336000
  324. MVI STOPFLAG,X'FF' WE'LL HAVE TO STOP 00337000
  325. SPACE 00338000
  326. NOWORK EQU * 00339000
  327. MVC FLAGS,FLAGS+2 COPY TYPE FLAGS TO FLAGS 00340000
  328. MVI FLAGS+2,0 ZERO OUT OLD TYPE FLAGS 00341000
  329. MVI TYPEFLAG,X'FF' WE ARE NOW TYPING 00342000
  330. TF 1ON,O,PTLOOP GO BACK IF TYPING WANTED 00343000
  331. * IF THE 'STOP' OPTION WAS SPECIFIED FOR EITHER TYPING OR PRINTING, 00345000
  332. * THEN WE DIAGNOSE TO CP AN ADSTOP, SPECIFYING THE ADDRESS IN THE 00346000
  333. * NEW PSW WHICH CMS WILL BE LOADING. 00347000
  334. CST EQU * 00348000
  335. CLI STOPFLAG,0 WAS 'STOP' SPECIFIED? 00349000
  336. BE CSTE NOTHING TO DO IF NOT 00350000
  337. STM R0,R15,DUMPAREA SAVE REGS TEMPORARILY 00351000
  338. LA R1,=CL16'CONWAIT CON1' POINT TO A CONWAIT PLIST 00352000
  339. LA R13,LBUFF PASS LBUFF AS A SAVE AREA 00353000
  340. L R15,ACONWAIT ADDRESS OF CONWAIT ROUTINE 00354000
  341. BALR R14,R15 CALL CONWAIT TO WAIT FOR TERM *00355000
  342. OUTPUT TO BE DRAINED. 00356000
  343. USING *,R14 00357000
  344. LM R0,R15,DUMPAREA RESTORE ALL OUT REGS 00358000
  345. DROP R14 00359000
  346. SPACE 00360000
  347. * FORM THE 'ADSTOP' LINE 00361000
  348. LINEDIT DISP=CPCOMM,TYPCALL=NONE,DOT=NO, *00362000
  349. TEXT='ADSTOP ......',SUB=(HEXA,LOWCORE+4) 00363000
  350. L R15,ADMSERR CALL DMSERR 00364000
  351. BALR R14,R15 00365000
  352. LTR R15,R15 ANY ERROR RETURN FROM CP? 00366000
  353. BZ CSTE GO IF NOT 00367000
  354. LINEDIT TYPCALL=NONE,TEXT='CAN''T STOP' 00368000
  355. L R15,ADMSERR 00369000
  356. BALR R14,R15 CALL DMSERR 00370000
  357. CSTE EQU * 00371000
  358. RT EQU * 00373000
  359. MVC ITSPSW(16),LOWCORE RESTORE LOW CORE 00374000
  360. MVC CODE203(2),CODE MAKE SURE CODE203 IS OK @VA13234 00374500
  361. LM R0,R15,SAVEREGS RESTORE DMSITS' REGS 00375000
  362. BR R14 AND RETURN THERE 00376000
  363. HALTOVR EQU * 00378000
  364. NI OVSTAT,X'FF'-(OVSON+OVSSO+OVSHO) TURN OFF FLAGS 00379000
  365. TM OVBPF,OVF1ON WAS 'BEFORE PRINT' ON? 00380000
  366. BO HOP PRINT IF SO 00381000
  367. TM OVAPF,OVF1ON WAS 'AFTER PRINT' ON? 00382000
  368. BNO HO1 DON'T PRINT IF NOT 00383000
  369. SPACE 00384000
  370. HOP EQU * 00385000
  371. LINEDIT DISP=PRINT,DOT=NO,COMP=NO,TYPCALL=NONE, *00386000
  372. TEXT='0 SVCTRACE OFF (HO)' 00387000
  373. L R15,ADMSERR 00388000
  374. BALR R14,R15 CALL DMSERR 00389000
  375. LINEDIT DISP=CPCOMM,DOT=NO,TYPCALL=NONE,TEXT='CLOSE PRT' 00390000
  376. L R15,ADMSERR 00391000
  377. BALR R14,R15 CALL DMSERR 00392000
  378. SPACE 00393000
  379. HO1 EQU * 00394000
  380. MVC ITSPSW(16),LOWCORE RESTORE LOW CORE 00395000
  381. MVC CODE203(2),CODE MAKE SURE CODE203 IS OK @VA13234 00395500
  382. LM R0,R15,SAVEREGS RESTORE REGISTERS 00396000
  383. SPACE 00397000
  384. * A 'JUMP' RETURN WILL CAUSE DMSOVS TO BE RELEASED. 00398000
  385. B 4(R14) JUMP RETURN TO DMSITS 00399000
  386. * HEXDUMP SUBROUTINE -- DUMPS 32 BYTES IN BOTH HEX AND CHARACTER, 00401000
  387. * IN STANDARD FORMAT. 00402000
  388. * AT ENTRY, REGS ARE AS FOLLOWS: 00403000
  389. * PR1 -| 5-BYTE TITLE FOR LINE 00404000
  390. * PR2 -| 32-BYTE AREA TO BE DUMPED 00405000
  391. * RR -| RETURN INSTRUCTION 00406000
  392. HEXDUMP EQU * 00407000
  393. LINEDIT MF=(E,ERLIST),TYPCALL=NONE,DOT=NO,COMP=NO,DISP=NONE, *00408000
  394. TEXTA=LTEXT,BUFFA=LBUFF, *00409000
  395. SUB=(CHARA,(PR1),HEX4A,(PR2),HEX4A,8(PR2),HEX4A,16(PR2),*00410000
  396. HEX4A,24(PR2),CHARA,(PR2)) 00411000
  397. B OUTPUT GO OUTPUT LINE AND RETURN 00412000
  398. SPACE 2 00413000
  399. LTEXT EQU * 00414000
  400. DC AL1(LTEXTL),C' ',X'00' 00415000
  401. DC C'..... = ' 00416000
  402. DC (4)C'................. ' 00417000
  403. DC C'*',(32)C'.',C'*' 00418000
  404. LTEXTL EQU *-LTEXT-1 LENGTH OF TEXT 00419000
  405. DS 0H 00420000
  406. EJECT 00421000
  407. * OUTPUT SUBROUTINE -- OUTPUT A LINE TO TERMINAL OR PRINTER. 00422000
  408. * AT ENTRY, LBUFF CONTAINS THE LINE IN THE FORMAT RETURNED BY 00423000
  409. * LINEDIT WITH 'BUFFA' OPTION, AND RR CONTAINS THE ADDRESS TO WHICH 00424000
  410. * WE'RE TO RETURN. 00425000
  411. OUTPUT EQU * 00426000
  412. L R15,ADMSERR GET ADDRESS OF DMSERR 00427000
  413. BALR R14,R15 FORM OUTPUT LINE 00428000
  414. CLI TYPEFLAG,0 ARE WE TYPING? 00429000
  415. BE OUTPRT GO PRINT IF NOT 00430000
  416. SPACE 00431000
  417. TR LBUFF+1(L'LBUFF-1),TYPTRT TRANSLATE LINE FOR TYPING 00432000
  418. LINEDIT DISP=TYPE,TYPCALL=NONE,DOT=NO,COMP=NO,TEXTA=LBUFF, *00433000
  419. MF=(E,ERLIST) 00434000
  420. L R15,ADMSERR CALL DMSERR 00435000
  421. BALR R14,R15 00436000
  422. BR RR RETURN TO CALLER 00437000
  423. SPACE 3 00438000
  424. OUTPRT EQU * 00439000
  425. TR LBUFF+1(L'LBUFF-1),PRTTRT TRANSLATE LINE FOR PRINTING 00440000
  426. LINEDIT DISP=PRINT,TYPCALL=NONE,DOT=NO,COMP=NO,TEXTA=LBUFF, *00441000
  427. MF=(E,ERLIST) 00442000
  428. L R15,ADMSERR CALL DMSERR 00443000
  429. BALR R14,R15 00444000
  430. BR RR RETURN TO CALLER 00445000
  431. EJECT 00446000
  432. * TYPOUT TRANSLATE TABLE 00447000
  433. TYPTRT EQU * 00448000
  434. DC 64C'.' UNPRINTABLE CHARACTERS 00449000
  435. DC C' ' BLANK 00450000
  436. DC 10C'.' 00451000
  437. DC C'.<(+|&&' 00452000
  438. DC 10C'.' 00453000
  439. DC C'$*);ยฌ-/' 00454000
  440. DC 9C'.' 00455000
  441. DC X'6B6C' 'COMMA' & 'PERCENT' SIGNS 00456000
  442. DC C'_>?' 00457000
  443. DC 10C'.' 00458000
  444. DC C':' 00459000
  445. DC X'7B7C' 'POUND' & 'AT' SIGNS 00460000
  446. DC C'''="' 00461000
  447. DC 64C'.' 00462000
  448. DC C'.ABCDEFGHI' 00463000
  449. DC 7C'.' 00464000
  450. DC C'JKLMNOPQR' 00465000
  451. DC 8C'.' 00466000
  452. DC C'STUVWXYZ' 00467000
  453. DC 6C'.' 00468000
  454. DC C'0123456789' 00469000
  455. DC 6C'.' 00470000
  456. SPACE 00471000
  457. ORG TYPTRT+X'81' SMALL LETTER A 00472000
  458. DC 9AL1(*-TYPTRT) SMALL LETTERS A THRU I 00473000
  459. ORG TYPTRT+X'91' SMALL LETTER J 00474000
  460. DC 9AL1(*-TYPTRT) SMALL LETTERS J THRU R 00475000
  461. ORG TYPTRT+X'A2' SMALL LETTER S 00476000
  462. DC 8AL1(*-TYPTRT) SMALL LETTERS S THRU Z 00477000
  463. ORG 00478000
  464. SPACE 00479000
  465. * PRINT TRANSLATE TABLE 00480000
  466. PRTTRT EQU * 00481000
  467. DMKDMPTR DC 64C'.' UNPRINTABLE CHARACTERS 00482000
  468. DC C' ' BLANK 00483000
  469. DC 10C'.' 00484000
  470. DC C'.<(+|&&' 00485000
  471. DC 10C'.' 00486000
  472. DC C'$*);ยฌ-/' 00487000
  473. DC 9C'.' 00488000
  474. DC X'6B6C' 'COMMA' & 'PERCENT' SIGNS 00489000
  475. DC C'_>?' 00490000
  476. DC 10C'.' 00491000
  477. DC C':' 00492000
  478. DC X'7B7C' 'POUND' & 'AT' SIGNS 00493000
  479. DC C'''="' 00494000
  480. DC 64C'.' 00495000
  481. DC C'.ABCDEFGHI' 00496000
  482. DC 7C'.' 00497000
  483. DC C'JKLMNOPQR' 00498000
  484. DC 8C'.' 00499000
  485. DC C'STUVWXYZ' 00500000
  486. DC 6C'.' 00501000
  487. DC C'0123456789' 00502000
  488. DC 6C'.' 00503000
  489. TYPEFLAG DS X 0 = PRINT, X'FF' = TYPE 00505000
  490. STOPFLAG DS X 0 = NO STOP, X'FF' = STOP 00506000
  491. FLAGS DS BL4 FLAGS COPIED FROM SVCSECT 00507000
  492. SAVEREGS DS 16F SAVE AREA FOR REGS 00508000
  493. LOWCORE DS 4F SAVE AREA FOR LOW CORE 00509000
  494. ITSPSW EQU 0 00510000
  495. DS 0D 00511000
  496. DUMPAREA DS CL64 00512000
  497. DS 0D 00513000
  498. LBUFF DS CL132 00514000
  499. ERLIST LINEDIT MF=L,MAXSUBS=8 SPACE FOR LINEDIT PLISTS 00515000
  500. SPACE 3 00516000
  501. LTORG 00517000
  502. DS 0D 00518000
  503. OVSLEN EQU (*-DMSOVS)/8 LENGTH OF DMSOVS IN DWORDS 00519000
  504. NUCON 00521000
  505. SVCSECT 00522000
  506. SVCSAVE 00523000
  507. END 00524000
ibm/vm370-lib/cms/dmsovs.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator