Table of Contents

DMSOR1 Source

References

Source Listing

DMSOR1.ASSEMBLE.txt
  1. OR1 TITLE 'DMSOR1 (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00003000
  4. * * 00004000
  5. * MODULE NAME: * 00005000
  6. * DMSOR1 * 00006000
  7. * * 00007000
  8. * FUNCTION: * 00008000
  9. * THE FUNCTION OF DMSOR1 IS TO RELOCATE ALL DTF TABLE * 00009000
  10. * ADDRESS CONSTANTS FROM THE ASSEMBLED ADDRESSES TO * 00010000
  11. * EXECUTABLE STORAGE ADDRESSES. THIS IS ACCOMPLISHED BY * 00011000
  12. * SUBTRACTING FROM THE BAL ADDRESS PROVIDED BY THE * 00012000
  13. * OPENR MACRO IN REGISTER 0 A FOUR BYTE ASSEMBLED * 00013000
  14. * ADDRESS CONSTANT OF THE BAL ADDRESS. ANY DIFFERENCE * 00014000
  15. * INDICATES THAT THE PROGRAM HAS BEEN RELOCATED. * 00015000
  16. * * 00016000
  17. * ATTRIBUTES: * 00017000
  18. * DISCONTIGUOUS SHARED SEGMENT * 00018000
  19. * REENTRANT * 00019000
  20. * * 00020000
  21. * ENTRY POINTS: * 00021000
  22. * DMSOR1 * 00022000
  23. * * 00023000
  24. * ENTRY CONDITIONS: * 00024000
  25. * DMSOR1 IS INVOKED IN RESPONSE TO AN SVC 2 (FETCH) * 00025000
  26. * FROM A PROBLEM PROGRAM. AT ENTRY TO DMSOR1, R0 POINTS * 00026000
  27. * TO AN ASSEMBLED ADDRESS CONSTANT FOLLOWED BY A LIST OF * 00027000
  28. * DTF TABLES THAT REQUIRE ADDRESS MODIFICATION. * 00028000
  29. * * 00029000
  30. * EXIT CONDITIONS: * 00030000
  31. * * 00031000
  32. * NORMAL EXITS: * 00032000
  33. * SVC 2 TO $$BOPEN TO OPEN THE DTFS * 00033000
  34. * AFTER THE ADCONS HAVE BEEN MODIFIED. * 00034000
  35. * * 00035000
  36. * SVC 2 TO $$BOPNR3(DMSOR3) IF MORE * 00036000
  37. * ADCONS REMAIN TO BE MODIFIED. * 00037000
  38. * * 00038000
  39. * ABNORMAL EXITS: * 00039000
  40. * * 00040000
  41. * SVC 6 (CANCEL) ON ERROR CONDITION * 00041000
  42. * THAT DTF IS UNSUPPORTED DTF TYPE. * 00042000
  43. * * 00043000
  44. * ERROR MESSAGES ISSUED BY THIS PROGRAM: * 00044000
  45. * * 00045000
  46. * DMSOR1088E UNSUPPORTED DTF TYPE 'DTF TYPE' * 00046000
  47. * * 00047000
  48. * EXPLANATION: CMS/DOS SUPPORTS ONLY * 00048000
  49. * THOSE DTF TYPES INDICATED IN THE * 00049000
  50. * SPECIFICATION. * 00050000
  51. * * 00051000
  52. * SYSTEM ACTION: * 00052000
  53. * SVC 6 (CANCEL) * 00053000
  54. * * 00054000
  55. * USER ACTION: SPECIFY A VALID DTF * 00055000
  56. * TYPE AS THE OBJECT OF YOUR OPENR * 00056000
  57. * MACRO. * 00057000
  58. * * 00058000
  59. * CALLS TO OTHER ROUTINES: * 00059000
  60. * DMSOR3 (SVC 2) * 00060000
  61. * DMSBOP (SVC 2) * 00061000
  62. * DMSFREB * 00062000
  63. * * 00063000
  64. * EXTERNAL REFERENCES: * 00064000
  65. * REGEQU, NUCON * 00065000
  66. * * 00066000
  67. * CALLED BY: * 00067000
  68. * INVOKED IN RESPONSE TO SVC 2 (FETCH FOR $$BOPENR * 00068000
  69. * (DMSOR1)) * 00069000
  70. * * 00070000
  71. * TABLES AND WORK AREAS: * 00071000
  72. * ADCON TABLE - A TABLE CONSISTING OF INDIVIDUAL TABLES * 00072000
  73. * USED TO MODIFY DIFFERENT DTF TYPES. EACH* 00073000
  74. * HAS A UNIQUE NAME TO IDENTIFY IT. * 00074000
  75. * EACH TABLE HAS THE FOLLOWING LAYOUT: * 00075000
  76. * * 00076000
  77. * BYTE 1 CONTAINS THE COUNT OF ADCONS * 00077000
  78. * TO BE MODIFIED. * 00078000
  79. * * 00079000
  80. * BYTE 2 CONTAINS THE BYTE COUNT FROM * 00080000
  81. * THE LOGIC MODULE ADDRESS TO * 00081000
  82. * THE FIRST ADCON. * 00082000
  83. * * 00083000
  84. * SUBSEQUENT BYTES CONTAIN THE BYTE * 00084000
  85. * COUNT NEEDED TO ADDRESS THE NEXT * 00085000
  86. * ADCON. * 00086000
  87. * * 00087000
  88. * REGISTER USAGE: * 00088000
  89. * * 00089000
  90. * TABLEREG - 0 TABLE PARAMETER - INPUT * 00090000
  91. * BASEREG - 3 DTF TABLE ADDRESS * 00091000
  92. * MODREG - 4 DTF TABLE ADDRESS CONSTANT DISP. TABLE* 00092000
  93. * R5 - 5 FREE STORAGE POINTER * 00093000
  94. * COUNTREG - 6 COUNT OF DTF ADCONS TO BE CHANGED * 00094000
  95. * LINKREG - 7 LINK REGISTER TO ADDRESS MOD. RTN. * 00095000
  96. * TYPEREG - 8 USED TO DETERMINE DTF TYPE * 00096000
  97. * DTFREG - 9 DTF TYPE TABLE * 00097000
  98. * CCWREG - 10 POINTER TO START OF EACH DTF TABLE * 00098000
  99. * WORKREG1 - 11 TABLE PARAMETER WORK REGISTER * 00099000
  100. * R12 - BASE REGISTER * 00100000
  101. * RELOCREG - 13 RELOCATION FACTOR * 00101000
  102. * R14 - UNUSED * 00102000
  103. * ADDRREG - 15 ADDRESS CONSTANT RELOCATE REGISTER * 00103000
  104. * * 00104000
  105. * OPERATION: * 00105000
  106. * DMSOR1 PERFORMS THE FOLLOWING FUNCTIONS: * 00106000
  107. * 1. DETERMINES IF RELOCATION IS RE- * 00107000
  108. * QUIRED. IF NOT EXIT IS MADE TO * 00108000
  109. * $$BOPEN TO OPEN THE FILE. * 00109000
  110. * * 00110000
  111. * 2. IF ADDRESS MODIFICATION IS RE- * 00111000
  112. * QUIRED, THE CCB AND LOGIC MODULE* 00112000
  113. * ADDRESSES WHICH ARE COMMON TO * 00113000
  114. * ALL DTFS ARE MODIFIED. * 00114000
  115. * * 00115000
  116. * * 00116000
  117. * 3. DETERMINES WHAT DTF TYPE IS THE * 00117000
  118. * OBJECT OF THE OPENR MACRO. * 00118000
  119. * * 00119000
  120. * IF UNIT RECORD DTF TYPE, ISSUES * 00120000
  121. * SVC 2 TO FETCH $$BOPNR3 TO * 00121000
  122. * CONTINUE ADDRESS MODIFICATION. * 00122000
  123. * * 00123000
  124. * IF DTFCP OR DTFDI, ISSUES SVC 2 * 00124000
  125. * TO FETCH $$BOPNR3 TO CONTINUE * 00125000
  126. * ADDRESS MODIFICATION. * 00126000
  127. * * 00127000
  128. * ALL OTHER DTF TYPES - INCLUDING* 00128000
  129. * DTFMT AND DTFSD - ADDRESS * 00129000
  130. * MODIFICATION IS PERFORMED IN * 00130000
  131. * THIS ROUTINE. * 00131000
  132. * * 00132000
  133. * 4. A CHECK IS MADE TO SEE IF MORE * 00133000
  134. * FILES REMAIN TO BE OPENED. IF * 00134000
  135. * SO, ADDRESS MODIFICATION IS PER-* 00135000
  136. * FORMED ON THOSE DTFS AND THEN AN* 00136000
  137. * SVC 2 IS ISSUED TO FETCH $$BOPEN* 00137000
  138. * TO PERFORM THE ACTUAL OPEN. * 00138000
  139. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00139000
  140. DMSOR1 CSECT @V305066 00140000
  141. TABLEREG EQU 0 POINTER TO TABLE SUPPLIED BY OPENR MACRO @V305066 00141000
  142. GR1 EQU 1 WORK REGISTER @V305066 00142000
  143. GR2 EQU 2 WORK REGISTER @V305066 00143000
  144. TYPEREG EQU 2 @V305066 00144000
  145. BASEREG EQU 3 CONTAINS ADDRESS OF THE ACTIVE DTF TABLE @V305066 00145000
  146. MODREG EQU 4 CONTAINS ADDRESS OF DTF DISPLACEMENT TABLE @V305066 00146000
  147. ADDRREG EQU 15 REGISTER USED TO RELOCATE ADDRESS CONSTANTS@V305066 00147000
  148. COUNTREG EQU 6 CONTAINS COUNT OF ADDRESSES TO BE MODIFIED @V305066 00148000
  149. LINKREG EQU 7 LINK REGISTER @V305066 00149000
  150. LINKREG2 EQU 8 INTERNAL BRANCH REGISTER @V305066 00150000
  151. DTFREG EQU 9 DTF TYPE TABLE @V305066 00151000
  152. CCBREG EQU 10 POINT TO DTFDA BUILDING ROUTINE @V305066 00152000
  153. WORKREG1 EQU 11 POINTER TO DTF TABLE LIST @V305066 00153000
  154. RELOCREG EQU 13 REGISTER CONTAINS THE RELOCATION FACTOR @V305066 00154000
  155. RGE EQU 14 WORK REGISTER @V305066 00155000
  156. CCWREG EQU CCBREG @V305066 00156000
  157. DC CL8'$$BOPENR' @V305066 00157000
  158. USING NUCON,R0 NUCON ADDRESSABILITY @V305066 00158000
  159. USING FREE,R5 ESTABLISH FREE STOR ADD @V305066 00159000
  160. BALR R12,0 ESTABLISH OWN ADDRESSABILITY@V305066 00160000
  161. USING *,R12 @V305066 00161000
  162. LR R2,R0 SAVE R0 TEMPORARILY @V305066 00162000
  163. LA R0,5 5 DBLEWDS FREE STORAGE @V305066 00163000
  164. DMSFREE DWORDS=(0),TYPE=NUCLEUS,TYPCALL=BALR @V305066 00164000
  165. LR R5,R1 FREE STOR ADD IN R5 @V305066 00165000
  166. MVC SEQIN(23),SEQINA MVE DTFSD TABLES TO FREE @V305066 00166000
  167. XC ADRSW(6),ADRSW ZERO TWO SWITCH BYTES @V305066 00167000
  168. MVC BOPEN(8),OPENMON OPEN MONITOR @V305066 00168000
  169. LR R0,R2 RESTORE R0 @V305066 00169000
  170. EJECT 00170000
  171. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00171000
  172. * THE ADDRESS OF THE DTF TABLE ADDRESSES IS PASSED IN REGISTER 0. * 00172000
  173. * THE RELOCATION FACTOR IS DETERMINED BY SUBTRACTING THE ASSEMBLED * 00173000
  174. * DTF TABLE ADDRESS FROM THE RELOCATED DTF TABLE ADDRESS. IF THE * 00174000
  175. * DIFFERENCE IS ZERO, NO RELOCATION IS NECESSARY, THEREFORE THE OPEN * 00175000
  176. * TRANSIENT IS CALLED IMMEDIATELY. * 00176000
  177. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00177000
  178. SPACE 2 00178000
  179. LR WORKREG1,TABLEREG PTR TO ASSEMBLE ADCON @V305066 00179000
  180. LA TABLEREG,0(WORKREG1) CLEAR CONDITION CODE @V305066 00180000
  181. LR RELOCREG,TABLEREG @V305066 00181000
  182. LR BASEREG,TABLEREG LOAD BAL ADDRESS @V305066 00182000
  183. LA WORKREG1,4(WORKREG1) ADD 4 TO PT DTF TABLE ADDR @V305066 00183000
  184. LR TABLEREG,WORKREG1 RESTORE TABLEREG @V305066 00184000
  185. S RELOCREG,0(RELOCREG) DETERMINE RELOCATION FACTOR@V305066 00185000
  186. BZ EXIT NO RELOC., GO TO OPEN @V305066 00186000
  187. EJECT 00187000
  188. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00188000
  189. * THE FOLLOWING CODE MODIFIES THE CCB AND LOGIC MODULE ADDRESS WHICH * 00189000
  190. * IS COMMON TO ALL DTF TABLES. THIS CAUSES THE POINTER --BASEREG-- * 00190000
  191. * TO BE POINTING AT THE LOGIC MODULE ADDRESS WITHIN THE DESIRED DTF * 00191000
  192. * TABLE. * 00192000
  193. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00193000
  194. SPACE 2 00194000
  195. NEXT LA LINKREG2,MODEXIT LOAD BRANCH REGISTER @V305066 00195000
  196. L BASEREG,0(WORKREG1) LOAD DTF ADDRESS @V305066 00196000
  197. TM 16(BASEREG),RELOC HAS TABLE BEEN RELOCATED ? @V305066 00197000
  198. BO RETURN BRANCH IF RELOCATED @V305066 00198000
  199. LA MODREG,COMMON LOAD ADDRESS OF COMMON TABLE@V305066 00199000
  200. LR CCWREG,BASEREG PT CCW REG TO BEG OF TABLE @V305066 00200000
  201. OI ADRSW,ON SET SW TO BYPASS ZERO TEST @V305066 00201000
  202. IC RGE,16(CCWREG) SAVE OPEN ,CLOSE INDICATOR @V305066 00202000
  203. BAL LINKREG,MODLOOP BR TO MOD SUBROUTINE @V305066 00203000
  204. STC RGE,16(CCWREG) RESTORE OPEN,CLOSE INDICATOR@V305066 00204000
  205. OI 16(CCWREG),RELOC TURN ON RELOC. BIT IN DTF @V305066 00205000
  206. NI ADRSW,255-ON SET SWITCH TO ALLOW ZERO TES@V305066 00206000
  207. EJECT 00207000
  208. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00208000
  209. * EACH DTF TYPE HAS IN ITS TABLE A UNIQUE CODE LOCATED IN DECIMAL * 00209000
  210. * BYTE 20. THIS CODE IS USE TO DETERMINE WHICH DTF TYPE IS TO BE * 00210000
  211. * RELOCATED. * 00211000
  212. * SOME EXITS FROM THIS DECODE ARE TO ROUTINES THAT FURTHER DECODE THE * 00212000
  213. * DTF TYPE. TWO EXAMPLES OF THIS ARE TO THE UNIT RECORD AND MAGNETIC * 00213000
  214. * TAPE DECODES. * 00214000
  215. * AFTER THE DTF TYPE IS ESTABLISHED EXITS TO THE ADDRESS MODIFICATION * 00215000
  216. * SUBROUTINE ARE IN ONE OF TWO FORMS. * 00216000
  217. * THE FIRST FORM IS A BRANCH INSTRUCTION. THIS WILL CAUSE THE ADDRESS* 00217000
  218. * MODIFICATION SUBROUTINE TO EXIT TO THE ENDING ROUTINE. THE ENDING * 00218000
  219. * ROUTINE WILL DETERMINE IF ADDITIONAL DTF TABLES NEED MODIFICATION. * 00219000
  220. * THE SECOND FORM IS A BRANCH AND LINK. THIS WILL CAUSE THE ADDRESS * 00220000
  221. * MODIFICATION SUBROUTINE TO RETURN TO THE NEXT SEQUENTIAL INSTRUCTION* 00221000
  222. * THIS IS NEEDED BECAUSE OF ADDITIONAL CHECKS WITHIN THE TABLE TO * 00222000
  223. * DETERMINE IF FURTHER ADDRESS MODIFICATION IS NEEDED. FOLLOWING THE * 00223000
  224. * LAST BAL WILL BE A BRANCH TO THE ENDING ROUTINE. * 00224000
  225. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00225000
  226. SPACE 2 00226000
  227. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00227000
  228. * DTF TYPES X'02' - READER, X'03' - CONSOLE, X'04' - PUNCH, AND 00228000
  229. * X'08' - PRINTER 00229000
  230. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00230000
  231. SPACE 2 00231000
  232. CLI 4(BASEREG),DTFCDR CARD READER? @V305066 00232000
  233. BE NOTFOUND DTF TYPE IS CARD READER @V305066 00233000
  234. CLI 4(BASEREG),DTFCN CONSOLE ? @V305066 00234000
  235. BE NOTFOUND DTF TYPE IS CONSOLE @V305066 00235000
  236. CLI 4(BASEREG),DTFCDP PUNCH ? @V305066 00236000
  237. BE NOTFOUND DTF TYPE IS PUNCH @V305066 00237000
  238. CLI 4(BASEREG),DTFPR PRINTER ? @V305066 00238000
  239. BE NOTFOUND DTF TYPE IS PRINTER @V305066 00239000
  240. SPACE 2 00240000
  241. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00241000
  242. * DTF TYPE 10 TO 11 IS MAGNETIC TAPE * 00242000
  243. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00243000
  244. SPACE 2 00244000
  245. CLI 4(BASEREG),DTFMTW DTF TYPE IS TAPE WORK FILE @V305066 00245000
  246. BE MAGTAPE NOLAB/NSTD @V305066 00246000
  247. CLI 4(BASEREG),DTFMTNO DTF TYPE IS TAPE DATA FILE @V305066 00247000
  248. BE MAGTAPE YES @V305066 00248000
  249. CLI 4(BASEREG),DTFMTSO STD LABEL OUTPUT @V305066 00249000
  250. BE MAGTAPE YES @V305066 00250000
  251. CLI 4(BASEREG),DTFMTSI STD LABEL INPUT @V305066 00251000
  252. BE MAGTAPE YES @V305066 00252000
  253. SPACE 2 00253000
  254. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00254000
  255. * DTF TYPE 20 IS DTFSD * 00255000
  256. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00256000
  257. SPACE 2 00257000
  258. CLI 4(BASEREG),DTFSD DISK? @V305066 00258000
  259. BE SEQDISK DTF TYPE IS DTFSD @V305066 00259000
  260. SPACE 2 00260000
  261. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00261000
  262. * DTF TYPE 31 TO 33 DTFCP AND DTFDI * 00262000
  263. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00263000
  264. SPACE 2 00264000
  265. CLI 4(BASEREG),DTFCPT DTFCP TAPE FILE @V305066 00265000
  266. BL BADDTF INVALID DTF TYPE @V305066 00266000
  267. CLI 4(BASEREG),DTFDI DTFDI @V305066 00267000
  268. BNH NOTFOUND GO TO NEXT ROUTINE @V305066 00268000
  269. BADDTF EQU * INVALID DTF TYPE @VA10248 00269000
  270. B ERR88E PRINT INVALID DTF MSG @V305066 00270000
  271. EJECT 00271000
  272. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00272000
  273. * MAGNETIC TAPE DECODE DTFMT * 00273000
  274. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00274000
  275. SPACE 2 00275000
  276. MAGTAPE CLI 4(BASEREG),DTFMTW DTFMT - WORK FILES ? @V305066 00276000
  277. LA MODREG,MAGWORK ADDR OF DTFMT WORK TABLE @V305066 00277000
  278. BCR 8,LINKREG2 BRANCH IF WORK FILE @V305066 00278000
  279. LA MODREG,MAGDATA ADDR. OF DTFMT DATA TABLE @V305066 00279000
  280. BAL LINKREG,MODLOOP MOD ADDRS. RETURN TO NSI @V305066 00280000
  281. TM 0(BASEREG),FIXED TEST DTFMT REC TYPE FOR FIX @V305066 00281000
  282. BM MAGTAPE1 BR IF NOT FIXED @V305066 00282000
  283. BAL LINKREG,MODLOOP BR TO MODIFY ADDRESSES @V305066 00283000
  284. TM 21(CCWREG),INPUT TEST IF INPUT FILE @V305066 00284000
  285. BZ MAGTAPE5 BRANCH IF OUTPUT FILE @V305066 00285000
  286. CLI 12(BASEREG),BRINST TEST IF BR. INSTRUCTION @V305066 00286000
  287. BE RETURN YES, BRANCH @V305066 00287000
  288. BAL LINKREG,MODLOOP MODIFY WLR ADDRESS @V305066 00288000
  289. CLI 4(BASEREG),BRINST TEST FOR BRANCH INSTRUCTION @V305066 00289000
  290. BE RETURN YES, BRANCH @V305066 00290000
  291. BR LINKREG2 MODIFY ERROPT ADDRESS @V305066 00291000
  292. MAGTAPE5 LA MODREG,MAGFIX3 POINT TO TABLE @V305066 00292000
  293. TM 2(CCWREG),ERROPT ERROPT ROUTINE @V305066 00293000
  294. BZ RETURN BRANCH IF NO @V305066 00294000
  295. TM 32(CCWREG),STDLAB STANDARD LABELS @V305066 00295000
  296. BCR 8,LINKREG2 NO, RELOCATE ERROPT ADDRESS @V305066 00296000
  297. LA MODREG,MAGFIX4 YES, POINT TO TABLE @V305066 00297000
  298. BR LINKREG2 RELOCATE ERROPT ADDRESS @V305066 00298000
  299. MAGTAPE1 LA MODREG,MAGVAR PROCESS VAR REL TABLE @V305066 00299000
  300. TM 0(BASEREG),VAR TES VAR RECORD BIT @V305066 00300000
  301. BZ MAGTAPE2 BRANCH IF RECORDS ARE UNDEF @V305066 00301000
  302. BAL LINKREG,MODLOOP BR TO MODIFY ADDRESSES @V305066 00302000
  303. LA BASEREG,16(BASEREG) ADD TEN TO BASE REG @V305066 00303000
  304. TM 21(CCWREG),INPUT TEST IF INPUT FILE @V305066 00304000
  305. BZ MAGTAPE6 BRANCH IF OUTPUT FILE @V305066 00305000
  306. CLI 0(BASEREG),BRINST TEST FOR BRANCH INSTRUCTION @V305066 00306000
  307. BE RETURN YES, BRANCH @V305066 00307000
  308. BAL LINKREG,MODLOOP MODIFY WLR ADDRESS @V305066 00308000
  309. CLI 4(BASEREG),BRINST TEST FOR BRANCH INSTRUCTION @V305066 00309000
  310. BE RETURN YES, BRANCH @V305066 00310000
  311. BR LINKREG2 MODIFY ERROPT ADDRESS @V305066 00311000
  312. MAGTAPE6 LA MODREG,MAGVAR2 POINT TO TABLE @V305066 00312000
  313. TM 2(CCWREG),ERROPT ERROPT ROUTINE @V305066 00313000
  314. BZ RETURN BRANCH IF NO @V305066 00314000
  315. TM 32(CCWREG),STDLAB STANDARD LABELS @V305066 00315000
  316. BCR 8,LINKREG2 NO, RELOCATE ERROPT ADDRESS @V305066 00316000
  317. LA MODREG,MAGVAR3 YES, POINT TO TABLE @V305066 00317000
  318. BR LINKREG2 RELOCATE ERROPT ADDRESS @V305066 00318000
  319. MAGTAPE2 LA MODREG,MAGUND UNDEF TAPE RECORD TABLE @V305066 00319000
  320. BAL LINKREG,MODLOOP BR TO MODIFY ADDRESSES @V305066 00320000
  321. TM 21(CCWREG),INPUT TEST IF INPUT FILE @V305066 00321000
  322. BZ MAGTAPE7 BRANCH IF OUTPUT FILE @V305066 00322000
  323. TM 16(BASEREG),BRINST ADDR OR INST. ? @V305066 00323000
  324. BZ MAGTAPE3 ADDRESS, GO TO MODIFY IT @V305066 00324000
  325. LA BASEREG,16(BASEREG) INSTRUCTION, UPDATE POINTER @V305066 00325000
  326. LA MODREG,MAGUND2 SET UP TO PROCESS WLR ADDR @V305066 00326000
  327. B MAGTAPE4 WLR OPTION IS ADDRESS @V305066 00327000
  328. MAGTAPE3 BAL LINKREG,MODLOOP MODIFY ERROPT ADDRESS @V305066 00328000
  329. MAGTAPE4 CLI 4(BASEREG),BRINST IS THIS AN INSTRUCTION @V305066 00329000
  330. BE RETURN YES, PROCESS NEXT DTF TBL @V305066 00330000
  331. BR LINKREG2 MODIFY WLR ADDR, LAST MOD @V305066 00331000
  332. MAGTAPE7 TM 2(CCWREG),ERROPT ERROPT ROUTINE @V305066 00332000
  333. BZ RETURN BRANCH IF NO @V305066 00333000
  334. TM 32(CCWREG),STDLAB STANDARD LABELS @V305066 00334000
  335. BCR 8,LINKREG2 NO, RELOCATE ERROPT ADDRESS @V305066 00335000
  336. LA MODREG,MAGUND3 YES, POINT TO TABLE @V305066 00336000
  337. BR LINKREG2 RELOCATE ERROPT ADDRESS @V305066 00337000
  338. EJECT 00338000
  339. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00339000
  340. * SEQUENTIAL DISK * 00340000
  341. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00341000
  342. SPACE 2 00342000
  343. SEQDISK LA MODREG,SEQWORK @V305066 00343000
  344. TM 5(BASEREG),DTFSDW CHECK DTFSD FOR WORK FILES @V305066 00344000
  345. BCR 1,LINKREG2 BRANCH IF DTFSD WORKFILE @V305066 00345000
  346. TM 5(BASEREG),OUTPUT CHECK DTFSD FOR OUTPUT FILE @V305066 00346000
  347. BZ SEQWRITE BRANCH IF OUTPUT @V305066 00347000
  348. LA MODREG,SEQIN ADCON TABLE @V305066 00348000
  349. TM 100(CCWREG),FIX FIXED LENGTH RECORDS @V305066 00349000
  350. BZ TRUNC NO @V305066 00350000
  351. TM 73(CCWREG),TRUN TEST FOR TRUNC @V305066 00351000
  352. BZ TRUNC YES,BRANCH @V305066 00352000
  353. MVI SEQIN,HEX0B MODIFY TABLE LENGTH @V305066 00353000
  354. TRUNC BAL LINKREG,MODLOOP BR TO MODIFY ADDRESS @V305066 00354000
  355. MVI SEQIN,HEX0C RESTORE TABLE LENGTH @V305066 00355000
  356. TM 100(CCWREG),VERIFY TEST IF VERIFY @V305066 00356000
  357. BZ INCTRL NO VERIFY, TEST FOR CONTROL @V305066 00357000
  358. LA MODREG,SEQIN1 ADCON TABLE @V305066 00358000
  359. BAL LINKREG,MODLOOP BR TO MODIFY ADDRESS @V305066 00359000
  360. INCTRL TM 100(CCWREG),CON TEST FOR CONTROL @V305066 00360000
  361. BZ RETURN BRANCH IF NO CONTROL @V305066 00361000
  362. LA MODREG,SEQIN2 ADCON TABLE @V305066 00362000
  363. TM 100(CCWREG),FIX TEST FOR FIXED RECORDS @V305066 00363000
  364. BCR 8,LINKREG2 BRANCH IF VAR OR UNDEFINED @V305066 00364000
  365. CONTROL LA MODREG,SEQIN3 FIXED RECORDS @V305066 00365000
  366. BR LINKREG2 VAR OR UNDEF @V305066 00366000
  367. SEQWRITE LA MODREG,SEQOUT ADCON TABLE @V305066 00367000
  368. BAL LINKREG,MODLOOP BR TO MODIFY ADDRESS @V305066 00368000
  369. TM 100(CCWREG),CON TEST FOR CONTROL @V305066 00369000
  370. BZ RETURN NO CONTROL @V305066 00370000
  371. TM 100(CCWREG),FIX TEST FOR FIXED RECORDS @V305066 00371000
  372. BO CONTROL BRANCH IF FIXED RECORDS @V305066 00372000
  373. TM 100(CCWREG),VARIABLE VARIABLE @V305066 00373000
  374. BZ VAROUT YES @V305066 00374000
  375. BR LINKREG2 NO @V305066 00375000
  376. VAROUT LA MODREG,SEQOUTV ADCON TABLE FOR VAR O/P @V305066 00376000
  377. BR LINKREG2 @V305066 00377000
  378. EJECT 00378000
  379. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00379000
  380. * E N D I N G R O U T I N E * 00380000
  381. * * 00381000
  382. * A CHECK IS MADE TO DETERMINE IF MORE DTF TABLES REQUIRE ADDRESS * 00382000
  383. * MODIFICATION. IF SO, RETURN IS MADE TO THE START OF THIS TRANSIENT.* 00383000
  384. * IF NOT, A SUPERVISOR CALL 2 IS MADE TO CALL IN THE OPEN TRANSIENT. * 00384000
  385. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00385000
  386. SPACE 2 00386000
  387. NOTFOUND OI SWITCH,ON @V305066 00387000
  388. NI 16(CCWREG),255-RELOC TURN OFF RELOCATION BIT @V305066 00388000
  389. RETURN LA WORKREG1,4(WORKREG1) BUMP TO NEXT DTF TABLE @V305066 00389000
  390. CLI 0(WORKREG1),ENDTAB IS THIS THE END OF DTF TABLE@V305066 00390000
  391. BNE NEXT RETURN TO PROCESS NEXT TABLE@V305066 00391000
  392. EXIT ST R0,SAVE0 SAVE R0 TEMPORARILY @V305066 00392000
  393. BAL R6,FREESTOR RELEASE ACQUIRED STORAGE @V305066 00393000
  394. L R0,SAVE0 RESTORE R0 @V305066 00394000
  395. TM SWITCH,ON @V305066 00395000
  396. BZ CALLNEXT @V305066 00396000
  397. MVC BOPEN+5(3),BOPNR3 TO CALL $$BOPNR3 @V305066 00397000
  398. CALLNEXT LA R1,BOPEN PHASE NAME @V305066 00398000
  399. SVC SVC2 @V305066 00399000
  400. SPACE 2 00400000
  401. FREESTOR LR R1,R5 RESTORE FREE STORAGE PTR @V305066 00401000
  402. DMSFRET DWORDS=5,LOC=(1),TYPCALL=BALR @V305066 00402000
  403. BR R6 @V305066 00403000
  404. EJECT 00404000
  405. ********************************************************************** 00405000
  406. * A D D R E S S M O D I F I C A T I O N S U B R O U T I N E * 00406000
  407. * * 00407000
  408. * BASEREG CONTAINS ADDRESS OF THE ADCON TO BE MODIFIED * 00408000
  409. * COUNTREG CONTAINS NUMBER OF ADDRESSES TO BE MODIFIED * 00409000
  410. * DTFREG CONTAINS THE DIFFERENCE FROM ONE ADDRESS TO NEXT ADDRESS * 00410000
  411. * RELOCREG CONTAINS THE RELOCATION FACTOR * 00411000
  412. * MODREG POINTS TO OR WITHIN DISPLACEMENT TABLE * 00412000
  413. * ADDRREG IS THE WORK REGISTER * 00413000
  414. * THE ORIGINAL CONTENTS OF MODREG POINTS TO THE START OF THE CURRENT * 00414000
  415. * ADCON TABLE. THE FIRST BYTE OF EACH TABLE CONTAINS THE COUNT OF * 00415000
  416. * ADDRESSES TO BE MODIFIED. THIS COUNT IS PLACED IN COUNTREG. THE * 00416000
  417. * SECOND BYTE IS THE DISPLACEMENT BYTE COUNT OF THE FIRST ADCON FROM * 00417000
  418. * THE LOGIC MODULE ADDRESS IN THE DTF TABLE. EACH TABLE BYTE THERE- * 00418000
  419. * AFTER IS THE BYTE COUNT BETWEEN SUBSEQUENT ADCONS. EACH BYTE COUNT* 00419000
  420. * IS ADDED TO BASEREG TO ADDRESS EACH ADCON. THE ADCON TO BE * 00420000
  421. * MODIFIED IS LOADED INTO ADDRREG. THE RELOCATION FACTOR IN RELOCREG * 00421000
  422. * IS ADDED TO THE ADCON WITH THE RESULTANT EXECUTABLE ADDRESS STORED * 00422000
  423. * BACK INTO THE ASSEMBLED ADCON LOCATION. * 00423000
  424. *********************************************************************** 00424000
  425. SPACE 5 00425000
  426. MODEXIT LA LINKREG,RETURN LAST MODIF. TO TABLE ENTRY @V305066 00426000
  427. MODLOOP SR DTFREG,DTFREG CLEAR DISPLACEMENT REG @V305066 00427000
  428. SR COUNTREG,COUNTREG CLEAR BCT REG @V305066 00428000
  429. IC COUNTREG,0(MODREG) INSERT COUNT @V305066 00429000
  430. LR GR1,CCWREG PT TO START OF DTF TABLE @V305066 00430000
  431. LR GR2,GR1 LOAD MAX ADDRESS REGISTER @V305066 00431000
  432. SR R15,R15 ZERO REGISTER @V305066 00432000
  433. VALIDATE IC R15,0(COUNTREG,MODREG) INSERT ADDR DISPLACEMENT@V305066 00433000
  434. AR GR2,R15 ADD TO START OF TABLE @V305066 00434000
  435. BCT COUNTREG,VALIDATE DECREM COUNT AND VALID ADDR @V305066 00435000
  436. SVC SVC26 DO ADDRESS VALIDATION @V305066 00436000
  437. IC COUNTREG,0(MODREG) RESTORE COUNT @V305066 00437000
  438. MODLOOP1 LA MODREG,1(MODREG) POINT TO DISPLACEMENT @V305066 00438000
  439. IC DTFREG,0(MODREG) INSERT DISPLACEMENT FACTOR @V305066 00439000
  440. AR BASEREG,DTFREG ADD DISPLACE TO BASE @V305066 00440000
  441. CLI ADRSW,ON HAS SWITCH BEEN SET @V305066 00441000
  442. BE BYPASS YES, GO TO BYPASS @V305066 00442000
  443. CLC 1(3,BASEREG),ZEROES COMPARE ADDRESS TO ZERO @V305066 00443000
  444. BE MODLOOP2 ZERO ADDRESS, BYPASS UPDATE @V305066 00444000
  445. BYPASS L R15,0(BASEREG) LOAD ADCON TO BE MODIFIED @V305066 00445000
  446. AR R15,RELOCREG ADD RELOCATION FACTOR @V305066 00446000
  447. ST R15,0(BASEREG) STORE RELOCATED ADCON @V305066 00447000
  448. MODLOOP2 BCT COUNTREG,MODLOOP1 RELOCATE NEXT ADDRESS @V305066 00448000
  449. LA MODREG,1(MODREG) ADD ONE TO PT TO NEXT TABLE @V305066 00449000
  450. BR LINKREG RETURN TO ASKING ROUTINE @V305066 00450000
  451. CON3 DC H'40' @V305066 00451000
  452. EJECT 00452000
  453. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00453000
  454. * ERROR MESSAGES * 00454000
  455. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00455000
  456. SPACE 2 00456000
  457. ERR88E EQU * UNSUPPORTED DTF TYPE @VA10248 00456500
  458. BAL R6,FREESTOR FREE ACQUIRED STORAGE @V305066 00457000
  459. LA R5,4(BASEREG) POINT TO DTF TYPE @VA10248 00457500
  460. DMSERR NUM=88,LET=E,SUB=(HEX4A,(5)),TEXT='UNSUPPORTED DTF TYPE*00458000
  461. ''..''',CSECT=BOP @V305066 00459000
  462. SVC SVC6 @V305066 00460000
  463. EJECT 00461000
  464. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00462000
  465. * * 00463000
  466. * CONSTANTS * 00464000
  467. * * 00465000
  468. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00466000
  469. SPACE 2 00467000
  470. OPENMON DC CL8'$$BOPEN' OPEN MONITOR @V305066 00468000
  471. EJECT 00469000
  472. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00470000
  473. * * 00471000
  474. * EQUATES * 00472000
  475. * * 00473000
  476. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00474000
  477. SPACE 2 00475000
  478. DTFCDR EQU X'02' DTFCD - READER @V305066 00476000
  479. DTFCN EQU X'03' DTFCN - CONSOLE @V305066 00477000
  480. DTFCDP EQU X'04' DTFCD - PUNCH @V305066 00478000
  481. DTFPR EQU X'08' DTFPR - PRINTER @V305066 00479000
  482. DTFMTW EQU X'10' DTFMT - WORKFILE @V305066 00480000
  483. DTFMTNO EQU X'11' DTFMT - NOLABEL/NONSTD @V305066 00481000
  484. DTFMTSO EQU X'12' DTFMT - STD. LABEL OUTPUT @V305066 00482000
  485. DTFMTSI EQU X'14' DTFMT - STD. LABEL INPUT @V305066 00483000
  486. DTFSD EQU X'20' DTFSD - DISK @V305066 00484000
  487. DTFCPT EQU X'31' DTFCP - TAPE @V305066 00485000
  488. DTFDI EQU X'33' DTFDI - ALL TYPES @V305066 00486000
  489. FIXED EQU X'03' FIXED LENGTH RECORDS @V305066 00487000
  490. INPUT EQU X'08' INPUT FILE @V305066 00488000
  491. BRINST EQU X'47' BRANCH INSTRUCTION @V305066 00489000
  492. ERROPT EQU X'10' ERROPT SPECIFIED ON DTF @V305066 00490000
  493. STDLAB EQU X'80' STD. LABEL TAPE @V305066 00491000
  494. VAR EQU X'02' VARIABLE LENGTH RECORDS @V305066 00492000
  495. DTFSDW EQU X'20' DTFSD - WORKFILE @V305066 00493000
  496. OUTPUT EQU X'02' OUTPUT FILE @V305066 00494000
  497. FIX EQU X'02' FIXED LENGTH RECORDS @V305066 00495000
  498. TRUN EQU X'04' TRUNCS = YES @V305066 00496000
  499. HEX0B EQU X'0B' @V305066 00497000
  500. HEX0C EQU X'0C' @V305066 00498000
  501. VERIFY EQU X'10' VERIFY = YES @V305066 00499000
  502. CON EQU X'01' CONTROL = YES @V305066 00500000
  503. VARIABLE EQU X'04' VARIABLE LENGTH RECORDS @V305066 00501000
  504. ENDTAB EQU X'0A' END OF DTF TABLE @V305066 00502000
  505. SVC2 EQU 2 SVC 2 @V305066 00503000
  506. SVC26 EQU 26 SVC 26 @V305066 00504000
  507. SVC6 EQU 6 SVC 6 @V305066 00505000
  508. RELOC EQU X'08' RELOCATION BIT @V305066 00506000
  509. ON EQU X'01' SW ON CONDITION @V305066 00507000
  510. EJECT 00508000
  511. *********************************************************************** 00509000
  512. * * 00510000
  513. * A D C O N T A B L E * 00511000
  514. * THE FOLLOWING TABLE CONSISTS OF INDIVIDUAL TABLES USED TO MODIFY * 00512000
  515. * DIFFERENT DTF TYPES. EACH INDIVIDUAL TABLE HAS A UNIQUE NAME TO * 00513000
  516. * IDENTIFY IT. * 00514000
  517. * THE TABLE LAYOUT IS AS FOLLOWS- * 00515000
  518. * BYTE 1 CONTAINS THE COUNT OF ADCONS TO BE MODIFIED. * 00516000
  519. * BYTE 2 CONTAINS THE BYTE COUNT FROM THE LOGIC MODULE ADDRESS TO * 00517000
  520. * THE FIRST ADCON * 00518000
  521. * SUBSEQUENT BYTES CONTAIN THE BYTE COUNT NEEDED TO ADDRESS THE NEXT * 00519000
  522. * ADCON. * 00520000
  523. *********************************************************************** 00521000
  524. SPACE 5 00522000
  525. COMMON DC X'020808' CCB-CCW ADDR, LOG MOD ADDR @V305066 00523000
  526. PRINTST DC X'03081008' @V305066 00524000
  527. MAGWORK DC X'030C040C' EOF, CCW, ERROR ROUTINE @V305066 00525000
  528. MAGDATA DC X'021004' USER LABEL,EOF @V305066 00526000
  529. MAGFIX DC X'0414080408' CCW,IOAREA @V305066 00527000
  530. MAGFIX1 DC X'010C' WLR ADDRESS - INPUT ONLY @V305066 00528000
  531. MAGFIX2 DC X'0104' ERROPT ADDRESS - INPUT ONLY @V305066 00529000
  532. MAGFIX3 DC X'0110' FIX OUTPUT, NO LABELS, @V305066 00530000
  533. MAGFIX4 DC X'011C' FIX OUTPUT, LABELS @V305066 00531000
  534. MAGVAR DC X'041408080C' VARIABLE TAPE RECORDS @V305066 00532000
  535. MAGVAR1 DC X'0100' WLR ADDRESS - INPUT ONLY @V305066 00533000
  536. MAGVAR2 DC X'0104' ERROPT ADDRESS - OUTPUT WITH@V305066 00534000
  537. * LABELS AND INPUT 00535000
  538. MAGVAR3 DC X'0110' VAR OUTPUT, LABS, ERROPT ADD@V305066 00536000
  539. MAGUND DC X'03140804' UNDEFINED TAPE RECORDS @V305066 00537000
  540. MAGUND1 DC X'0110' UNDEFINED TAPE RECORDS @V305066 00538000
  541. MAGUND2 DC X'0104' MOD WLR ADDR FOR UNDEF @V305066 00539000
  542. MAGUND3 DC X'0120' UNDEF OUTPUT ERROPT @V305066 00540000
  543. SEQWORK DC X'0B30040408080808' TABLE FOR DTFSD-WORKFILE @V305066 00541000
  544. DC X'08080808' @V305066 00542000
  545. SEQINA DC X'0C18041410080804' DTFSD INPUT FILE @V305066 00543000
  546. DC X'0408080808' @V305066 00544000
  547. DC X'03080808' DTFSD VERIFY INPUT @V305066 00545000
  548. DC X'021808' VARIBLE OR UNDEFINED CONTROL@V305066 00546000
  549. DC X'021008' CONTROL - FIXED RECORDS @V305066 00547000
  550. SEQOUT DC X'0C18042C08040408' DTFSD-OUTPUT @V305066 00548000
  551. DC X'0808080808' @V305066 00549000
  552. SEQOUTC DC X'021808' DTFSD - OUTPUT CONTROL @V305066 00550000
  553. SEQOUTV DC X'022008' @V305066 00551000
  554. BOPNR3 DC C'NR3' OPEN-RELOC PHASE FOR UNIT REC @V305066 00552000
  555. ZEROES DC X'000000' @V305066 00553000
  556. EJECT 00554000
  557. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00555000
  558. * DSECTS * 00556000
  559. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00557000
  560. SPACE 2 00558000
  561. FREE DSECT @V305066 00559000
  562. SEQIN DS XL8 DTFSD INPUT FILE @V305066 00560000
  563. DS XL5 @V305066 00561000
  564. SEQIN1 DS XL4 DTFSD VERIFY INPUT @V305066 00562000
  565. SEQIN2 DS XL3 VARIABLE OR UNDEFINED CONTROL @V305066 00563000
  566. SEQIN3 DS XL3 CONTROL FIXED RECORDS @V305066 00564000
  567. BOPEN DS CL8 @V305066 00565000
  568. ADRSW DS CL1 @V305066 00566000
  569. SAVE0 DS CL4 @V305066 00567000
  570. SWITCH DS CL1 @V305066 00568000
  571. EJECT 00569000
  572. NUCON @V305066 00570000
  573. REGEQU @V305066 00571000
  574. DMSOR1 CSECT @V305066 00572000
  575. LTORG @V305066 00573000
  576. END 00575000