Table of Contents

DMSARX Source

References

Source Listing

DMSARX.ASSEMBLE.txt
  1. ARX TITLE 'DMSARX (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME: 00005000
  6. * 00006000
  7. * DMSARX (ASM3705) 00007000
  8. * 00008000
  9. * FUNCTION: 00009000
  10. * 00010000
  11. * ASM3705 COMMAND. TO PROVIDE THE INTERFACE BETWEEN 00011000
  12. * THE USER AND THE 3705 XF ASSEMBLER. 00012000
  13. * 00013000
  14. * ATTRIBUTES: 00014000
  15. * 00015000
  16. * DISK RESIDENT 00016000
  17. * 00017000
  18. * ENTRY POINTS: 00018000
  19. * 00019000
  20. * DMSARX - SEE FUNCTION DESCRIPTION 00020000
  21. * ASMPROC - SYSUT1 PROCESSING ROUTINE (CALLED FROM DMSSOB) 00021000
  22. * TERMPROC - PROCESS ASSEMBLER MESSAGES TO TERMINAL 00022000
  23. * 00023000
  24. * ENTRY CONDITIONS: 00024000
  25. * 00025000
  26. * ASM3705 - 00026000
  27. * GPR1 = A(PLIST) 00027000
  28. * GPR14 = RETURN ADDRESS 00028000
  29. * GPR15 = A(CALLED ROUTINE) 00029000
  30. * PLIST = FILENAME 00030000
  31. * 00031000
  32. * OPTIONAL AND IN ANY ORDER - 00032000
  33. * ( - START OF OPTIONS (DEFAULTS APPEAR FIRST) 00033000
  34. * 00034000
  35. * ALOGIC | NOALOGIC 00035000
  36. * BUFSIZE (STD) | BUFSIZE (MIN) 00036000
  37. * DISK,DI | PRINT,PR | NOPRINT,NOPR 00037000
  38. * ESD | NOESD 00038000
  39. * FLAG (0) | FLAG (N) 00039000
  40. * NOLIBMAC | LIBMAC 00040000
  41. * LINECNT (55) | LINECNT (NN) 00041000
  42. * LIST | NOLIST 00042000
  43. * NODECK | DECK 00043000
  44. * NOMCALL | MCALL 00044000
  45. * NOMLOGIC | MLOGIC 00045000
  46. * NORENT | RENT 00046000
  47. * NUMBER,NUM | NONUMBER,NONUM 00047000
  48. * OBJECT,OBJ | NOOBJECT,NOOBJ 00048000
  49. * RLD | NORLD 00049000
  50. * STMT | NOSTMT 00050000
  51. * SYSPARM () | SYSPARM (STRING) 00051000
  52. * TERMINAL,TERM | NOTERMIN,NOTERM 00052000
  53. * XREF (FULL) | XREF (SHORT) | NOXREF 00053000
  54. * 00054000
  55. * XL8'FF' - FENCE 00055000
  56. * 00056000
  57. EJECT 00057000
  58. * 00058000
  59. * EXIT CONDITONS: 00059000
  60. * 00060000
  61. * NORMAL - 00061000
  62. * GPR15 = 0 NO ERROR 00062000
  63. * 00063000
  64. * ERROR - 00064000
  65. * GPR15 = 24 INVALID OPTION, NO FILENAME SPECIFIED 00065000
  66. * GPR15 = 28 FILE NOT FOUND 00066000
  67. * GPR15 = 32 FILE NOT FIXED 80 CHARS 00067000
  68. * GPR15 = 36 NO READ/WRITE DISKS ACCESSED 00068000
  69. * GPR15 = 40 FILEID CONFLICT,DEVICE ILLEGAL FOR INPUT 00069000
  70. * 00070000
  71. * CALLS TO OTHER ROUTINES: 00071000
  72. * 00072000
  73. * DMSCRD - READ SYSPARM FROM CONSOLE 00073000
  74. * DMSCWR - TYPE SYSPARM MESSAGE TO CONSOLE 00074000
  75. * DMSFLD - FILEDEF ALL ASSEMBLER FILES 00075000
  76. * DMSFNS - CLOSE ALL ASSEMBLER FILES 00076000
  77. * DMSKEY - CONTROL NUCLEUS PROTECT KEY 00077000
  78. * DMSERR - TYPE ALL ERROR MESSAGES 00078000
  79. * DMSERS - ERASE OLD ASSEMBLER FILES 00079000
  80. * DMSSLN - LOAD THE ASSEMBLER PHASES 00080000
  81. * DMSSMN - CONTROL STORAGE POINTERS (GETMAIN/FREEMAIN) 00081000
  82. * DMSSTT - VERIFY DISK FILE EXISTENCE 00082000
  83. * DMSLADAD - SET/RESET THE FST CHAIN FOR AUXILIARY 00083000
  84. * DIRECTORY. 00084000
  85. * CWAX00 - 3705 ASSEMBLER (XF) ROOT SEGMENT 00085000
  86. * 00086000
  87. * EXTERNAL REFERENCES: 00087000
  88. * 00088000
  89. * ADT 00089000
  90. * CMSCB 00090000
  91. * DMSARD 00091000
  92. * FSTB 00092000
  93. * IO 00093000
  94. * NUCON 00094000
  95. * 00095000
  96. * 00096000
  97. * TABLES/WORKAREAS: 00097000
  98. * 00098000
  99. * DDNAME - NAMES OF CMS DDNAMES FOR ASSEMBLER 00099000
  100. * OPTLIST - OPTION LIST PASSED TO THE ASSEMBLER 00100000
  101. * OPDEF - (MACRO LABEL) NAMES & ABBREVIATIONS OF ALL OPTIONS 00101000
  102. * PARAMLST - PARAMETER LIST FOR ASSEMBLER 00102000
  103. * UTENTRY - INCORE SYSUT1 RECORD AREA 00103000
  104. * UTHEAD - HEADER AREA FOR INCORE RECORDS 00104000
  105. * OPTAB$ - LIST OF POINTERS TO OPTION TABLE ENTRIES 00105000
  106. * SAVEAREA - SAVEAREA 00106000
  107. * 00107000
  108. EJECT 00108000
  109. * 00109000
  110. * REGISTER USAGE: 00110000
  111. * 00111000
  112. * GPR0 = NUCON ADDRESSABILITY 00112000
  113. * GPR1 = ADDRESS OF ALL PLISTS 00113000
  114. * GPR2 = WORK REGISTER 00114000
  115. * GPR3 = WORK REGISTER 00115000
  116. * GPR4 = GETMAIN/FREEMAIN AMOUNT 00116000
  117. * GPR5 = WORK REGISTER 00117000
  118. * GPR6 = GETMAIN/FREEMAIN ADDRESS 00118000
  119. * GPR7 = ASMPROC BASE REGISTER 00119000
  120. * GPR8 = WORK REGISTER 00120000
  121. * GPR9 = WORK REGISTER 00121000
  122. * GPR10 = LINKAGE REGISTER 00122000
  123. * GPR11 = FCB ADDRESS DURING ASMPROC 00123000
  124. * GPR12 = DMSARX BASE REGISTER 00124000
  125. * GPR13 = SAVE AREA ADDRESS 00125000
  126. * GPR14 = RETURN REGISTER FROM CALLS 00126000
  127. * GPR15 = ASSEMBLER ROOT ADDR. AND ERROR CODE ON RETURN. 00127000
  128. * 00128000
  129. * NOTES - 00129000
  130. * 00130000
  131. * NONE 00131000
  132. * 00132000
  133. * OPERATION: 00133000
  134. * 00134000
  135. * ASM3705 FIRST SETS A BIT (COMPSWT,X'80') IN OSSFLAGS 00135000
  136. * TO INDICATE THE ASSEMBLER IS RUNNING, AND THEN CALLS 00136000
  137. * DMSLADAD TO MODIFY THE FILE STATUS TABLE (FST) CHAIN 00137000
  138. * TO INCLUDE A NUCLEUS COPY OF THE AUXILIARY DIRECTORY 00138000
  139. * FOR THE DISK SPECIFIED AT AUXILIARY GENERATION TIME. 00139000
  140. * IF THAT DISK IS NOT ACCESSED, PROCESSING TERMINATES 00140000
  141. * WITH AN ERROR CODE OF 40. 00141000
  142. * 00142000
  143. * ASM3705 NEXT SCANS THE OPTIONS SPECIFIED AND USES 00143000
  144. * THE INFORMATION THEREBY OBTAINED TO SET UP THE OPTION 00144000
  145. * LIST FOR THE ASSEMBLER AND THE FILEDEF PLISTS FOR THE 00145000
  146. * CALLS TO FILEDEF. 00146000
  147. * 00147000
  148. * ASM3705 THEN 00148000
  149. * CALLS STATE TO VERIFY THE EXISTENCE OF THIS FILE. IF 00149000
  150. * IT DOES NOT EXIST, ASM3705 VERIFIES THAT THE FILE 00150000
  151. * HAS BEEN FILEDEF'D TO ANOTHER VALID INPUT DEVICE, IF 00151000
  152. * NOT,THE ASSEMBLER ISSUES AN ERROR MESSAGE AND RETURNS 00152000
  153. * TO THE CALLER. IF THE FILE DOES EXIST IN DISK, THEN 00153000
  154. * ASM3705 CHECKS THE ITEM LENGTH, ISSUES AN ERROR 00154000
  155. * MESSAGE IF ITEM LENGTH IS INCORRECT AND RETURNS TO 00155000
  156. * THE CALLER. 00156000
  157. * 00157000
  158. * IF THE LENGTH IS CORRECT, ASM3705 CALLS ERASE TO 00158000
  159. * DELETE ANY EXISTING TEXT, LISTING, AND UTILITY FILES 00159000
  160. * FOR THE CURRENT ASM3705 FILE, AND SETS UP STORAGE BY 00160000
  161. * CALLING GETMAIN. 00161000
  162. * 00162000
  163. EJECT 00163000
  164. * 00164000
  165. * IT THEN CALLS ADTLKW TO OBTAIN THE MODE OF THE 00165000
  166. * READ-WRITE DISK WITH MOST AVAILABLE SPACE AND USES IT 00166000
  167. * TO SET UP THE FILEDEF PLIST FOR THE SYSUT'S FILES AND 00167000
  168. * CHECKS IF THE DISK WITH THE MOST SPACE IS THE SOURCE 00168000
  169. * DISK. IF IT IS DIFFERENT, THE SYSUT FILES ARE ERASED 00169000
  170. * FROM IT (SYSUT FILES ALREADY ERASED FROM SOURCE). IF 00170000
  171. * NOT SPECIFIED BY THE USER, THE TEXT AND LISTING FILES 00171000
  172. * ARE WRITTEN ON THE 1) DISK FROM WHICH THE ASM3705 00172000
  173. * SOURCE IS READ; 2) ON THE "PARENT" DISK, IF THE 00173000
  174. * FIRST DISK IS A READ-ONLY EXTENSION; OR 3) THE 00174000
  175. * PRIMARY A-DISK. IF NONE OF THESE CHOICES IS 00175000
  176. * AVAILABLE, THE COMMAND WILL BE TERMINATED. CMS 00176000
  177. * CONTROL BLOCKS (CMSCB'S), WHICH REFLECT THE SELECTED 00177000
  178. * OPTION, ARE SET UP FOR THE TEXT, LISTING, ASM3705 & 00178000
  179. * UTILITY FILES. AFTER EACH SUCCESSFUL RETURN FROM 00179000
  180. * FILEDEF, ASM3705 SETS A CLEAR SWITCH TO INDICATE 00180000
  181. * WHICH CMSCB'S ARE TO BE CLEARED AT THE END OF 00181000
  182. * THE ASSEMBLY. ASM3705 FINALLY BRANCHES TO CWAX00. 00182000
  183. * 00183000
  184. * ON RETURN FROM THE ASSEMBLER, ASM3705 ERASES ALL THE 00184000
  185. * UTILITY FILES AND CLEARS THE CMSCBS WHICH IT HAD SET. 00185000
  186. * ASM3705 THEN CALLS FINIS TO CLOSE ALL FILES XF USED, 00186000
  187. * TURNS ON THE RELEASE PAGE BIT, CALLS DMSLADAD TO RESET 00187000
  188. * THE FST CHAIN MODIFIED EARLIER, CLEAR OSSFLAGS, PLACES 00188000
  189. * THE ERROR CODE IN REGISTER 15 AND RETURNS TO THE USER. 00189000
  190. * 00190000
  191. * 00191000
  192. * SPECIAL OUTPUT PROCESSING ROUTINE: ASMHAND 00192000
  193. * 00193000
  194. * THE SYSTEM ROUTINE SOEOB INTERFACES WITH ASMPROC 00194000
  195. * WHENEVER ANY I/O ACTIVITY PERTAINS TO THE SYSUT1 FILE 00195000
  196. * DURING THE ASSEMBLY. 00196000
  197. * 00197000
  198. * SYSUT1 - IF THE FILE IS BEING READ IN BY THE ASSMBLER 00198000
  199. * THEN ASMPROC ACCESSES THE UTILITY CONTROL TABLE TO 00199000
  200. * ASCERTAIN THE LENGTH AND LOCATION OF THE RECORDS TO 00200000
  201. * BE MOVED AND MOVES IT TO THE SPECIFIED INPUT BUFFER. 00201000
  202. * 00202000
  203. * IF THE FILE IS BEING WRITTEN BY THE ASSEMBLER THE 00203000
  204. * UTILITY CONTROL TABLE IS FIRST SET UP BY A CALL TO 00204000
  205. * GETMAIN AND THEN UPDATED TO REFLECT THE NUMBERS OF 00205000
  206. * RECORDS TO BE WRITTEN, THEN THE RECORD IS MOVED TO 00206000
  207. * THE GETMAIN'D AREA. 00207000
  208. * 00208000
  209. * 00209000
  210. *. 00210000
  211. EJECT 00211000
  212. MACRO 00212000
  213. OPTDEF 00213000
  214. LCLA &I,&J,&K,&N,&TEMP1,&TEMP2,&Q1,&Q2,&Q3,&Q4 00214000
  215. LCLA &TABLE1(200),&TABLE2(200) 00215000
  216. LCLB &FLAG1,&FLAG2 00216000
  217. LCLC &S 00217000
  218. ACTR 6000 00218000
  219. &I SETA 1 00219000
  220. OPTNULL DC AL2(0),8X'FF' 00220000
  221. SPACE 00221000
  222. .ILOOP ANOP 00222000
  223. &S SETC 'O&I.$' 00223000
  224. &FLAG1 SETB 0 00224000
  225. &N SETA 1 00225000
  226. &J SETA 0 00226000
  227. .NLOOP ANOP 00227000
  228. &K SETA 0 00228000
  229. AIF (N'&SYSLIST(&N) NE 1).XLOOP **AIF** 00229000
  230. AIF (K'&SYSLIST(&N) NE &I).NL1 **AIF** 00230000
  231. AGO .CWO2 00231000
  232. .XLOOP ANOP 00232000
  233. &K SETA &K+1 00233000
  234. AIF (K'&SYSLIST(&N,&K) NE &I).CWO1 **AIF** 00234000
  235. .CWO2 ANOP 00235000
  236. &FLAG1 SETB 1 00236000
  237. &J SETA &J+1 00237000
  238. &TABLE1(&J) SETA &N 00238000
  239. &TABLE2(&J) SETA &K 00239000
  240. .CWO1 AIF ((&K NE 0) AND (&K LT N'&SYSLIST(&N))).XLOOP **AIF** 00240000
  241. .NL1 ANOP 00241000
  242. &N SETA &N+2 00242000
  243. AIF (&N LE N'&SYSLIST).NLOOP **AIF** 00243000
  244. AIF (NOT &FLAG1).NL2 **AIF** 00244000
  245. AIF (&J EQ 1).SORTDNE **AIF** 00245000
  246. &N SETA &J+1 00246000
  247. .SORT1 ANOP 00247000
  248. &FLAG2 SETB 0 00248000
  249. &K SETA 1 00249000
  250. &N SETA &N-1 00250000
  251. .SORT2 ANOP 00251000
  252. &Q1 SETA &TABLE1(&K) 00252000
  253. &Q2 SETA &TABLE1(&K+1) 00253000
  254. &Q3 SETA &TABLE2(&K) 00254000
  255. &Q4 SETA &TABLE2(&K+1) 00255000
  256. AIF ((&Q3 EQ 0) AND (&Q4 EQ 0)).SORT4 **AIF** 00256000
  257. AIF (&Q3 EQ 0).SORT5 **AIF** 00257000
  258. AIF (&Q4 EQ 0).SORT6 **AIF** 00258000
  259. AIF ('&SYSLIST(&Q1,&Q3)' LE '&SYSLIST(&Q2,&Q4)').NEXT 00259000
  260. AGO .SORT3 00260000
  261. .SORT5 AIF ('&SYSLIST(&Q1)' LE '&SYSLIST(&Q2,&Q4)').NEXT **AIF** 00261000
  262. AGO .SORT3 00262000
  263. .SORT6 AIF ('&SYSLIST(&Q1,&Q3)' LE '&SYSLIST(&Q2)').NEXT **AIF** 00263000
  264. AGO .SORT3 00264000
  265. .SORT4 AIF ('&SYSLIST(&Q1)' LE '&SYSLIST(&Q2)').NEXT **AIF** 00265000
  266. .SORT3 ANOP 00266000
  267. &FLAG2 SETB 1 00267000
  268. &TEMP1 SETA &TABLE1(&K) 00268000
  269. &TEMP2 SETA &TABLE2(&K) 00269000
  270. &TABLE1(&K) SETA &TABLE1(&K+1) 00270000
  271. &TABLE2(&K) SETA &TABLE2(&K+1) 00271000
  272. &TABLE1(&K+1) SETA &TEMP1 00272000
  273. &TABLE2(&K+1) SETA &TEMP2 00273000
  274. .NEXT ANOP 00274000
  275. &K SETA &K+1 00275000
  276. AIF (&K LT &N).SORT2 **AIF** 00276000
  277. AIF (&FLAG2).SORT1 **AIF** 00277000
  278. .SORTDNE ANOP 00278000
  279. &K SETA 1 00279000
  280. .OLOOP ANOP 00280000
  281. &Q1 SETA &TABLE1(&K)+1 00281000
  282. &Q2 SETA &TABLE1(&K) 00282000
  283. &Q3 SETA &TABLE2(&K) 00283000
  284. AIF ('&SYSLIST(&Q1)' EQ '').NL4 **AIF** 00284000
  285. AIF (N'&SYSLIST(&Q1) EQ 1).NL5 **AIF** 00285000
  286. AIF (&Q3 NE 0).NL8 **AIF** 00286000
  287. AIF ('&SYSLIST(&Q1,1)' EQ '').NL10 **AIF** 00287000
  288. &S DC AL1(&SYSLIST(&Q1,1)),AL1(&SYSLIST(&Q1,2)),CL&I'&SYSLIST(*00288000
  289. &Q2)' 00289000
  290. AGO .NL6 00290000
  291. .NL10 ANOP 00291000
  292. &S DC AL1(0),AL1(&SYSLIST(&Q1,2)),CL&I'&SYSLIST(&Q2)' 00292000
  293. AGO .NL6 00293000
  294. .NL8 ANOP 00294000
  295. AIF ('&SYSLIST(&Q1,1)' EQ '').NL11 **AIF** 00295000
  296. &S DC AL1(&SYSLIST(&Q1,1)),AL1(&SYSLIST(&Q1,2)),CL&I'&SYSLIST(*00296000
  297. &Q2,&Q3)' 00297000
  298. AGO .NL6 00298000
  299. .NL11 ANOP 00299000
  300. &S DC AL1(0),AL1(&SYSLIST(&Q1,2)),CL&I'&SYSLIST(&Q2,&Q3)' 00300000
  301. AGO .NL6 00301000
  302. .NL5 ANOP 00302000
  303. AIF (&Q3 NE 0).NL9 **AIF** 00303000
  304. &S DC AL1(&SYSLIST(&Q1)),AL1(0),CL&I'&SYSLIST(&Q2)' 00304000
  305. AGO .NL6 00305000
  306. .NL9 ANOP 00306000
  307. &S DC AL1(&SYSLIST(&Q1)),AL1(0),CL&I'&SYSLIST(&Q2,&Q3)' 00307000
  308. AGO .NL6 00308000
  309. .NL4 ANOP 00309000
  310. AIF (&Q3 NE 0).NL7 **AIF** 00310000
  311. &S DC AL2(0),CL&I'&SYSLIST(&Q2)' 00311000
  312. AGO .NL6 00312000
  313. .NL7 ANOP 00313000
  314. &S DC AL2(0),CL&I'&SYSLIST(&Q2,&Q3)' 00314000
  315. .NL6 ANOP 00315000
  316. &S SETC '' 00316000
  317. &K SETA &K+1 00317000
  318. AIF (&K LE &J).OLOOP **AIF** 00318000
  319. DC AL2(0),&I.X'FF' 00319000
  320. AGO .NL3 00320000
  321. .NL2 ANOP 00321000
  322. &S EQU OPTNULL 00322000
  323. .NL3 ANOP 00323000
  324. SPACE 3 00324000
  325. &I SETA &I+1 00325000
  326. AIF (&I LE 8).ILOOP **AIF** 00326000
  327. MEND 00327000
  328. EJECT 00328000
  329. DMSARX CSECT @V305238 00329000
  330. USING NUCON,R0 NUCON ADDRESSABILITY @V305238 00330000
  331. USING DMSARX,R12,R11 ASSEMBLER ADDRESSABILITY @V305238 00331000
  332. * 00332000
  333. LR R12,R15 USE REG 12 AS BASE REG @V305238 00333000
  334. LA R11,2048(,R12) USE REG 11 AS 2ND. BASE REG @V305238 00334000
  335. LA R11,2048(,R11) ... @V305238 00335000
  336. ST R14,SAVREG14 SAVE RETURN REGISTER @V305238 00336000
  337. * 00337000
  338. LA R1,8(,R1) POINT TO THE FNAME IN COMBUF @V305238 00338000
  339. CLI 0(R1),STAR VALID FILENAME ? @V305238 00339000
  340. BE ERR70 NO..ERROR @V305238 00340000
  341. ST R1,FILEPTR SAVE THIS ADDR IN FILEPTR @V305238 00341000
  342. * 00342000
  343. DMSKEY NUCLEUS DISABLE NUCLEUS PROTECT @V305238 00343000
  344. * 00344000
  345. OI OSSFLAGS,COMPSWT INDICATE ASSEMBLER RUNNING @V305238 00345000
  346. LA R1,SETAUX SET PLIST FOR AUX CALL @V305238 00346000
  347. SVC 202 ... @V305238 00347000
  348. DC AL4(ERR74E1) ERROR EXIT @V305238 00348000
  349. L R1,FILEPTR RESTORE FILENAME ADDR. @V305238 00349000
  350. * 00350000
  351. DMSKEY RESET ENABLE NUCLEUS PROTECT @V305238 00351000
  352. * 00352000
  353. EJECT 00353000
  354. * 00354000
  355. ********************************************************************** 00355000
  356. * 00356000
  357. * THE TYPED INPUT LINE, INVOKING THE 3705 ASSEMBLER IS DECODED, 00357000
  358. * CONTROLLED (ERROR MESSAGES ARE ISSUED), AND THE DIFFERENT CLASSES 00358000
  359. * OF PARAMETERS ARE STORED IN THE APPROPRIATE STORAGE AREAS. 00359000
  360. * 00360000
  361. ********************************************************************** 00361000
  362. * 00362000
  363. OPTSCN EQU * @V305238 00363000
  364. CLI 0(R1),HXFF IS THIS END OF LINE @V305238 00364000
  365. BE ERR1 YES..NO FILENAME OR ANYTHING @V305238 00365000
  366. CLI 0(R1),LEFTPAR IS THIS A LEFT PARENS @V305238 00366000
  367. BE ERR1 YES..NO FILENAME SPECIFIED @V305238 00367000
  368. LA R1,8(,R1) INCREMENT PAST FILENAME @V305238 00368000
  369. CLI 0(R1),HXFF END OF SCANNED LINE ? @V305238 00369000
  370. BE OPTEND ... @V305238 00370000
  371. CLI 0(R1),LEFTPAR START OF OPTION LIST ? @V305238 00371000
  372. BNE ERR70 MUST BE INVALID PARAMETER @V305238 00372000
  373. LA R1,8(,R1) SKIP PAST LEFT PAREN @V305238 00373000
  374. NXTOPTN EQU * @V305238 00374000
  375. BAL R14,KEYSCN SCAN OFF KEYWORD @V305238 00375000
  376. B OPTEND END OF SCANNED LINE @V305238 00376000
  377. LR R3,R2 GET KEYWORD LENGTH @V305238 00377000
  378. SLL R3,2 GET 4*LENGTH @V305238 00378000
  379. L R3,OPTAB$-4(R3) GET TABLE @V305238 00379000
  380. BCTR R2,0 GET LENGTH-1 @V305238 00380000
  381. SEEKARG EQU * @V305238 00381000
  382. EX R2,KEYCOMP COMPARE FOR KEYWORD @V305238 00382000
  383. BE FOUND EQUAL..KEYWORD FOUND @V305238 00383000
  384. BH NOTFOUND KEYWORD HAS BEEN PASSED @V305238 00384000
  385. LA R3,3(R3,R2) SKIP TO NEXT ENTRY IN TABLE @V305238 00385000
  386. B SEEKARG LOOP THROUGH TABLE @V305238 00386000
  387. FOUND EQU * @V305238 00387000
  388. TM 0(R3),HXFF IS THERE AN OPTION BIT? @V305238 00388000
  389. BZ NOBITS NO @V305238 00389000
  390. IC R4,0(,R3) GET OPTION BIT @V305238 00390000
  391. EX R4,OROPT 'OR' IN OPTION BIT @V305238 00391000
  392. TM 1(R3),HXFF IS THERE A BYTE TO 'NI' @V305238 00392000
  393. BZ NOBITS NO @V305238 00393000
  394. IC R4,1(,R3) GET SECOND OPTION BYTE @V305238 00394000
  395. EX R4,NIOPT 'NI' SECOND OPTION BYTE @V305238 00395000
  396. B GETNEXT BRANCH..THIS IS A CMS OPT. @V305238 00396000
  397. EJECT 00397000
  398. * 00398000
  399. NOBITS EQU * @V305238 00399000
  400. LH R4,OPTLIST GET CURRENT OPTION LIST LEN @V305238 00400000
  401. LA R5,OPTBYTES(R4) GET END OF OPTIONS @V305238 00401000
  402. MVI 0(R5),COMMA MOVE COMMA AFTER LAST OPTION @V305238 00402000
  403. LA R4,1(,R4) BUMP COUNT @V305238 00403000
  404. LA R5,1(,R5) AND POINTER @V305238 00404000
  405. BAL R10,MOVEKEY MOVE OPTION TO LIST @V305238 00405000
  406. TM ASMSW,PARENS MAY OPTION HAVE PARENS ? @V305238 00406000
  407. BZ RESTCNT NO @V305238 00407000
  408. CLI 8(R6),LEFTPAR THIS THE LEFT PAREN ? @V305238 00408000
  409. BE INSRTLFT YES @V305238 00409000
  410. NI ASMSW,255-PARENS-NUMERIC-SYSPARM-LINEC-XREF ... @V305238 00410000
  411. BAL R10,ERR3 INVALID OPTION ERROR @V305238 00411000
  412. B GETNEXT KEEP SCANNING.. @V305238 00412000
  413. * 00413000
  414. MOVEKEY EQU * @V305238 00414000
  415. LA R4,1(R4,R2) LIST LENGTH PLUS NEW COUNT @V305238 00415000
  416. CL R4,HX100 EXCEEDS MAX OF 100 CHARS ? @V305238 00416000
  417. BH ERR52 YES..ERROR @V305238 00417000
  418. EX R2,KEYMOVE MOVE KEYWORD TO OPTION LIST @V305238 00418000
  419. LA R5,1(R5,R2) BUMP OPTION LIST POINTER @V305238 00419000
  420. BR R10 RETURN TO CALLER @V305238 00420000
  421. EJECT 00421000
  422. * 00422000
  423. INSRTLFT EQU * @V305238 00423000
  424. TM ASMSW,LINEC LINECOUNT OPTION ? @V305238 00424000
  425. BZ MVELPAR NO..JUST MOVE LEFT PAR @V305238 00425000
  426. MVI 0(R5),C'T' MOVE T TO LINECOUN @V305238 00426000
  427. LA R4,1(,R4) BUMP COUNT @V305238 00427000
  428. LA R5,1(,R5) AND POINTER @V305238 00428000
  429. MVELPAR MVI 0(R5),LEFTPAR MOVE A LEFT PAR TO LIST @V305238 00429000
  430. LA R4,1(,R4) BUMP COUNT @V305238 00430000
  431. LA R5,1(,R5) AND POINTER @V305238 00431000
  432. LA R1,16(,R6) SKIP TO NEXT PART OF OPTION @V305238 00432000
  433. BAL R14,KEYSCN SCAN OFF KEYWORD @V305238 00433000
  434. BAL R10,ERR3B END OF OPTION NO LIST FOUND @V305238 00434000
  435. TM ASMSW,SYSPARM PROCESSING SYSPARM OPTION ? @V305238 00435000
  436. BO TSTKWRD YES..SEE IF CON INPUT REQ. @V305238 00436000
  437. MVEKWRD EQU * @V305238 00437000
  438. BCTR R2,0 GET LENGTH-1 @V305238 00438000
  439. BAL R10,MOVEKEY MOVE KEYWORD TO LIST @V305238 00439000
  440. TM ASMSW,NUMERIC IS SUBOPTION NUMERIC ? @V305238 00440000
  441. BO TESTNUM YES..TEST VALIDITY @V305238 00441000
  442. B TESTSUB TEST SUBOPTION VALIDITY @V305238 00442000
  443. TSTRPAR EQU * @V305238 00443000
  444. LA R6,8(,R6) POINT TO NEXT TOKEN @V305238 00444000
  445. CLI 0(R6),HXFF IS IT END OF INPUT LINE ? @V305238 00445000
  446. BE SUBCLEAN YES..CLEAN SUBOPTION @V305238 00446000
  447. CLI 0(R6),RIGHTPAR NEXT A RIGHT PARENS ? @V305238 00447000
  448. BNE NOTFOUND NO..INVALID OPTION @V305238 00448000
  449. SUBOPTEN EQU * @V305238 00449000
  450. MVI 0(R5),RIGHTPAR MOVE RIGHT PARENS TO LIST @V305238 00450000
  451. LA R4,1(,R4) BUMP COUNT @V305238 00451000
  452. LA R5,1(,R5) AND POINTER @V305238 00452000
  453. RESTCNT EQU * @V305238 00453000
  454. NI ASMSW,255-PARENS-NUMERIC-SYSPARM-LINEC-XREF ... @V305238 00454000
  455. STH R4,OPTLIST RESTORE COUNT IN OPTION LIST @V305238 00455000
  456. GETNEXT EQU * @V305238 00456000
  457. LA R1,8(,R6) SKIP TO NEXT OPTION @V305238 00457000
  458. B NXTOPTN ... @V305238 00458000
  459. NOTFOUND EQU * @V305238 00459000
  460. BAL R10,ERR3 GIVE INVALID OPTION MSG @V305238 00460000
  461. B GETNEXT CONTINUE OPTION SCAN @V305238 00461000
  462. EJECT 00462000
  463. * 00463000
  464. TESTNUM EQU * @V305238 00464000
  465. LA R2,1(,R2) GET REAL LENGTH OF SUBOPTION @V305238 00465000
  466. LR R7,R6 USE R7 INSTEAD OF R6 @V305238 00466000
  467. CH R2,H3 EXCEEDS MAX SUB LENGTH ? @V305238 00467000
  468. BH NOTNUM YES..GIVE ERROR @V305238 00468000
  469. TM ASMSW,LINEC LINECOUNT OPTION ? @V305238 00469000
  470. BZ NUMLOOP NO..BRANCH @V305238 00470000
  471. CH R2,H2 MAX LINECOUNT LENGTH ? @V305238 00471000
  472. BH NOTNUM YES..GIVE ERROR @V305238 00472000
  473. NUMLOOP EQU * @V305238 00473000
  474. TM 0(R7),X'F0' IS CHARACTER NUMERIC @V305238 00474000
  475. BNO NOTNUM NO..NO MORE..ERROR @V305238 00475000
  476. LA R7,1(,R7) GET NEXT CHARACTER @V305238 00476000
  477. BCT R2,NUMLOOP LOOP TO TEST NEXT CHARACTER @V305238 00477000
  478. B TSTRPAR THAT IS IT..GO BACK @V305238 00478000
  479. NOTNUM EQU * @V305238 00479000
  480. BAL R10,ERR3 GIVE INVALID OPTION MSG @V305238 00480000
  481. B TSTRPAR CONTINUE OPTION SCAN @V305238 00481000
  482. * 00482000
  483. TESTSUB TM ASMSW,SYSPARM SYSPARM OPTION ? @V305238 00483000
  484. BO TSTRPAR YES..DON'T SUB CHECK @V305238 00484000
  485. TM ASMSW,XREF XREF OPTION ? @V305238 00485000
  486. BO XREFSUB YES..CHECK XREF SUBOPT. @V305238 00486000
  487. CH R2,H2 CHECKING POSS LEN OF SUB @V305238 00487000
  488. BNE NOTNUM ERROR IF NOT EQUAL @V305238 00488000
  489. LA R7,MIN GET 1ST. SUBOPTION @V305238 00489000
  490. EX R2,SUBCOMP COMPARE WITH FOUND @V305238 00490000
  491. BE TSTRPAR MATCH..BRANCH @V305238 00491000
  492. LA R7,STD GET 2ND. SUBOPTION @V305238 00492000
  493. EX R2,SUBCOMP COMPARE WITH FOUND @V305238 00493000
  494. BE TSTRPAR MATCH..BRANCH @V305238 00494000
  495. B NOTNUM IF NONE..ERROR @V305238 00495000
  496. XREFSUB LA R7,FULL GET 1ST. SUBOPTION @V305238 00496000
  497. CH R2,H3 CHECKING POSS LEN OF SUB @V305238 00497000
  498. BL NOTNUM ERROR IF LOW @V305238 00498000
  499. EX R2,SUBCOMP COMPARE WITH FOUND @V305238 00499000
  500. BE TSTRPAR MATCH..BRANCH @V305238 00500000
  501. LA R7,SHORT GET 2ND. SUBOPTION @V305238 00501000
  502. CH R2,H4 CHECKING POSS LEN OF SUB @V305238 00502000
  503. BL NOTNUM ERROR IF LOW @V305238 00503000
  504. EX R2,SUBCOMP COMPARE WITH FOUND @V305238 00504000
  505. BE TSTRPAR MATCH..BRANCH @V305238 00505000
  506. B NOTNUM IF NONE..ERROR @V305238 00506000
  507. EJECT 00507000
  508. * 00508000
  509. TSTKWRD EQU * @V305238 00509000
  510. CLC 0(2,R6),=C'? ' KEYWORD FROM CONSOLE ? @V305238 00510000
  511. BNE MVEKWRD NO..USE KEYWORD FOUND @V305238 00511000
  512. * 00512000
  513. LA R1,CONWR ASK FOR SYSPARM SUBOPTION @V305238 00513000
  514. SVC 202 ... @V305238 00514000
  515. DC AL4(MVEKWRD) BAD RETURN..USE FOUND KWRD @V305238 00515000
  516. * 00516000
  517. LA R1,CMNDLINE GET CONSOLE BUFFER ADDR. @V305238 00517000
  518. STCM R1,B'0111',CONBUF+1 STORE IN LIST @V305238 00518000
  519. LA R1,CONRD READY TO RECEIVE @V305238 00519000
  520. SVC 202 ... @V305238 00520000
  521. DC AL4(MVEKWRD) BAD RETURN..USE FOUND KWRD @V305238 00521000
  522. * 00522000
  523. LH R2,CONCNT+2 GET BYTES READ @V305238 00523000
  524. LTR R2,R2 ... @V305238 00524000
  525. BZ TSTRPAR IF ZERO..NULL PARM @V305238 00525000
  526. LR R1,R6 SAVE REG. 6 @V305238 00526000
  527. ICM R6,B'0111',CONBUF+1 GET BUFFER ADDRESS @V305238 00527000
  528. BCTR R2,0 GET LENGTH-1 @V305238 00528000
  529. CHKBLNK LA R10,0(R6,R2) GET END OF BUFFER ADDR @V305238 00529000
  530. CLI 0(R10),BLANK IS CHAR. BLANK ? @V305238 00530000
  531. BNE MOVESUB NO..MUST BE END @V305238 00531000
  532. BCT R2,CHKBLNK KEEP LOOKING FOR NON-BLANK @V305238 00532000
  533. MOVESUB BAL R10,MOVEKEY MOVE SUBLIST TO OPTION LIST @V305238 00533000
  534. LR R6,R1 RESTORE REG. 6 @V305238 00534000
  535. B TSTRPAR CONTINUE PROCESSING @V305238 00535000
  536. * 00536000
  537. * 00537000
  538. SUBCOMP CLC 0(0,R6),0(R7) EXECUTED COMPARE @V305238 00538000
  539. KEYCOMP CLC 2(0,R3),0(R6) EXECUTED COMPARE @V305238 00539000
  540. KEYMOVE MVC 0(0,R5),0(R6) EXECUTED MOVE @V305238 00540000
  541. OROPT OI ASMSW,0 EXECUTED OR @V305238 00541000
  542. NIOPT NI ASMSW,0 EXECUTED AND @V305238 00542000
  543. * 00543000
  544. * 00544000
  545. EJECT 00545000
  546. KEYSCN EQU * @V305238 00546000
  547. LR R6,R1 GET KEYWORD START @V305238 00547000
  548. LA R2,8(,R1) GET END OF MAX KEYWORD @V305238 00548000
  549. CLI 0(R1),RIGHTPAR RIGHT PAREN? @V305238 00549000
  550. BCR 8,R14 YES, RETURN @V305238 00550000
  551. CLI 0(R1),HXFF AT END OF PARAM. LIST? @V305238 00551000
  552. BE SUBCLEAN YES, GO CLEAN UP SUBOPTION @V305238 00552000
  553. EOPNSCN EQU * @V305238 00553000
  554. CLI 0(R1),BLANK BLANK? @V305238 00554000
  555. BE KEYEND YES @V305238 00555000
  556. CR R1,R2 END OF OPTION @V305238 00556000
  557. BE KEYEND YES @V305238 00557000
  558. LA R1,1(,R1) BUMP POINTER AND @V305238 00558000
  559. B EOPNSCN LOOP THROUGH OPTION @V305238 00559000
  560. KEYEND EQU * @V305238 00560000
  561. LR R2,R1 GET END OF OPTION @V305238 00561000
  562. SR R2,R6 GET LENGTH @V305238 00562000
  563. BC 2,4(,R14) RETURN IF > ZERO @V305238 00563000
  564. LA R2,1 SET TO LENGHT OF ONE @V305238 00564000
  565. B 4(,R14) AND RETURN @V305238 00565000
  566. SUBCLEAN EQU * @V305238 00566000
  567. TM ASMSW,PARENS ARE WE PROCESSING SUBS ? @V305238 00567000
  568. BCR 8,R14 NO, GO TO OPTEND @V305238 00568000
  569. NI ASMSW,255-PARENS-NUMERIC-SYSPARM-LINEC-XREF ... @V305238 00569000
  570. MVI 0(R5),RIGHTPAR MAKE SURE SUBS ARE ENCLOSED @V305238 00570000
  571. LA R4,1(,R4) INCREMENT LIST LENGHT @V305238 00571000
  572. STH R4,OPTLIST STORE IT @V305238 00572000
  573. OPTEND EQU * @V305238 00573000
  574. TM ASMSW2,OPTERR HAVE WE HAD ANY INVALID OPT @V305238 00574000
  575. BO END YES..RETURN TO CMS @V305238 00575000
  576. EJECT 00576000
  577. * 00577000
  578. ********************************************************************** 00578000
  579. * 00579000
  580. * ASSUME 'ALPHA' IS A FILE TO COMPILE. WE CHECK THAT 'ALPHA ASM3705' 00580000
  581. * EXISTS AND GETS LOGICAL RECORDS OF 80 BYTES.IF THIS IS THE CASE, 00581000
  582. * LET US CALL 'M' THE MODE OF THIS FILE,WE ERASE THE TWO FILES,IF 00582000
  583. * THEY EXIST,'ALPHA LISTING M' AND 'ALPHA TEXT M'. 00583000
  584. * 00584000
  585. ********************************************************************** 00585000
  586. * 00586000
  587. VERIFY EQU * @V305238 00587000
  588. USING ADTSECT,R1 @V305238 00588000
  589. USING FCBSECT,R6 @V305238 00589000
  590. USING FSTSECT,R7 @V305238 00590000
  591. * 00591000
  592. L R3,FILEPTR GET FILENAME ADDRESS @V305238 00592000
  593. STATASM MVC STATNAME(8),0(R3) MOVE THE FNAME FOR STATE @V305238 00593000
  594. LA R1,STATELST GET THE ADDR OF STATE LIST @V305238 00594000
  595. SVC 202 ISSUE STATE @V305238 00595000
  596. DC AL4(NOFILE) FILE NOT FOUND EXIT @V305238 00596000
  597. L R7,STATCOPY GET THE ADDR OF THE FST COPY @V305238 00597000
  598. MVC ADTCOPY(4),FSTL(R7) SAVE THE ADDR OF ADT @V305238 00598000
  599. * 00599000
  600. MVC INPTMODE(2),FSTM GET THE DISK MODE @V305238 00600000
  601. CLC FSTIL(4),HX80 ARE THE RECS 80 CHAR. LONG ? @V305238 00601000
  602. BNE ERR7 NO...GIVE ERROR @V305238 00602000
  603. CLI FSTFV,C'F' ARE THE RECS OF FIXED FORM ? @V305238 00603000
  604. BNE ERR7 NO...GIVE ERROR @V305238 00604000
  605. B DOFDEF FILEDEF THE ASM3705 DDNAME @V305238 00605000
  606. * 00606000
  607. EJECT 00607000
  608. * 00608000
  609. NOFILE OI ASMSW2,NOTFND IF NOT FOUND, SET SWITCH @V305238 00609000
  610. CH R15,H20 INVALID FILEID FOUND ? @V305238 00610000
  611. BNE DOFDEF NO..BRANCH @V305238 00611000
  612. ST R15,CC SAVE ERROR CODE @V305238 00612000
  613. B END GET OUT..ERROR MSG TYPED @V305238 00613000
  614. DOFDEF LA R1,INPTDEF GET ASM3705 FILEDEF LIST @V305238 00614000
  615. MVC INPTNAME(8),0(R3) GET FILENAME FOR THE FILEDEF @V305238 00615000
  616. BAL R10,SVC202 ISSUE FILEDEF @V305238 00616000
  617. LTR R6,R0 TEST IF FILE OLD OR NEW @V305238 00617000
  618. BM NEWFILE BRANCH IF FILE IS NEW @V305238 00618000
  619. CLI FCBDEV,FCBDSK IS DEVICE DSK IN USER FCB? @V305238 00619000
  620. BNE NOTDSK BRANCH IF NOT DISK @V305238 00620000
  621. CLC FCBDSNAM(16),INPTNAME MATCHING FILEID'S ? @V305238 00621000
  622. BNE ERR38 NO..CONFLICTING ID ERROR @V305238 00622000
  623. B NEWFILE SEE IF FILE FOUND BY STATE @V305238 00623000
  624. * 00624000
  625. NOTDSK TM ASMSW2,NOTFND IS THERE DUP FILE ON DSK ? @V305238 00625000
  626. BZ ERR38 YES..CONFLICTING ID ERROR @V305238 00626000
  627. CLI FCBDEV,FCBRDR IS INPUT FILE ON READER ? @V305238 00627000
  628. BE CHKADSK YES...USE IT @V305238 00628000
  629. CLI FCBDEV,FCBTAP IS THE INPUT FILE ON TAPE? @V305238 00629000
  630. BE CHKADSK YES...USE IT @V305238 00630000
  631. * 00631000
  632. SR R2,R2 READY... @V305238 00632000
  633. IC R2,FCBDEV GET DEVICE CODE @V305238 00633000
  634. L R2,DEVTYPE(R2) GET DEVICE TYPE @V305238 00634000
  635. B ERR75 GIVE ERROR @V305238 00635000
  636. * 00636000
  637. DEVTYPE DC A(DUMMY) ... @V305238 00637000
  638. DC A(PRINTER) ... @V305238 00638000
  639. DC A(0) ... @V305238 00639000
  640. DC A(TERMINAL) ... @V305238 00640000
  641. DC A(0) ... @V305238 00641000
  642. DC A(0) ... @V305238 00642000
  643. DC A(PUNCH) ... @V305238 00643000
  644. DC A(CRT) ... @V305238 00644000
  645. * 00645000
  646. NEWFILE TM ASMSW2,NOTFND IS THE INPUT FILE ON DISK ? @V305238 00646000
  647. BO ERR2 NO...GIVE ERROR @V305238 00647000
  648. EJECT 00648000
  649. * 00649000
  650. ********************************************************************** 00650000
  651. * 00651000
  652. * FIND A R/W DISK FOR WRITING THE TEXT AND THE LISTING FILE ... 00652000
  653. * 00653000
  654. ********************************************************************** 00654000
  655. * 00655000
  656. FINDRW EQU * @V305238 00656000
  657. L R1,ADTCOPY GET A(ADT) FROM SAVED COPY @V305238 00657000
  658. * 00658000
  659. TM ADTFLG1,ADTFRW INPUT FILE ON R/W DISK ? @V305238 00659000
  660. BO USEIT YES...WRITE BACK TO IT @V305238 00660000
  661. CLI ADTMX,BLANK IS IT AN EXTENSION? @V305238 00661000
  662. BE CHKADSK NO...CHECK A-DISK FOR R/W @V305238 00662000
  663. MVC ADTPARM(1),ADTMX SAVE THE EXTENSION FILE MODE @V305238 00663000
  664. LA R1,ADTPARM-24 GET THE LIST FOR ADTLKW @V305238 00664000
  665. L R15,AADTLKW GET THE ADDRESS OF ADTLKW @V305238 00665000
  666. BALR R14,R15 CALL ADTLKW FOR PARENT DISK @V305238 00666000
  667. BC 2,CHKADSK IF NONE FOUND..CHECK A-DISK @V305238 00667000
  668. USEIT MVC WMODE(1),ADTM SAVE THE FOUND DISK MODE @V305238 00668000
  669. B ERASE GO ERASE OLD FILES.. @V305238 00669000
  670. * 00670000
  671. CHKADSK LA R1,WMODE-24 GET A-DISK LIST @V305238 00671000
  672. L R15,AADTLKW GET ADDRESS OF ADTLKW @V305238 00672000
  673. BALR R14,R15 GET ADT FOR A-DISK @V305238 00673000
  674. BC 2,ERR6 NO A-DISK..ERROR @V305238 00674000
  675. TM ADTFLG1,ADTFRW IS IT R/W DISK ? @V305238 00675000
  676. BZ ERR6 NO..THAT IS ALL THEN... @V305238 00676000
  677. * 00677000
  678. ERASE EQU * @V305238 00678000
  679. LA R10,FILEDEF AFTER ERASE GO TO FILEDEF @V305238 00679000
  680. MVC ERASNAME(8),0(R3) SET FILENAME IN ERASE LIST @V305238 00680000
  681. MVC ERASMODE(2),WMODE SET FILEMODE IN ERASE LIST @V305238 00681000
  682. LA R1,ERASELST GET ADDRESS OF ERASE LIST @V305238 00682000
  683. LA R8,8 GET TOKEN LENGTH FOR BXLE @V305238 00683000
  684. LA R9,DDTERM GET ENDING ADDRESS @V305238 00684000
  685. LA R7,DDLIST GET BEGINNING ADDRESS @V305238 00685000
  686. * 00686000
  687. ERASLUP MVC ERASTYPE(8),0(R7) MOVE FILETYPE TO BE ERASED @V305238 00687000
  688. SVC 202 ISSUE ERASE @V305238 00688000
  689. DC AL4(*+4) NO-OP IN CASE NO FILE EXISTS @V305238 00689000
  690. BXLE R7,R8,ERASLUP LOOP TILL ALL FILES ERASED @V305238 00690000
  691. BR R10 RETURN TO CALLER @V305238 00691000
  692. EJECT 00692000
  693. * 00693000
  694. ********************************************************************** 00694000
  695. * 00695000
  696. * FILEDEF(S) ARE ISSUED FOR EACH OUTPUT FILE THAT THE 3705 ASSEMBLER 00696000
  697. * PROCESSOR MAY USE. THE ROOT MODULE CWAX00 IS LOADED INTO CORE 00697000
  698. * AND THE PARAMTER LISTS ARE PASSED TO THE PROCESSOR. 00698000
  699. * 00699000
  700. ********************************************************************** 00700000
  701. * 00701000
  702. FILEDEF EQU * @V305238 00702000
  703. LH R4,WMODE GET FILEMODE FOR FILEDEFS @V305238 00703000
  704. MVC TEXTNAME(8),0(R3) SAVE FNAME IN TEXT FDEF @V305238 00704000
  705. STH R4,TEXTMODE SAVE FMODE IN TEXT FDEF @V305238 00705000
  706. MVC LISTNAME(8),0(R3) SAVE FNAME IN LISTING FDEF @V305238 00706000
  707. STH R4,LISTMODE SAVE FMODE IN LISTING FDEF @V305238 00707000
  708. * 00708000
  709. LA R1,TEXTDEF GET ADDR OF TEXT FDEF LIST @V305238 00709000
  710. BAL R10,SVC202 ISSUE FILEDEF @V305238 00710000
  711. * 00711000
  712. LA R1,PUNFDEF GET ADDR OF PUNCH FDEF LIST @V305238 00712000
  713. BAL R10,SVC202 ISSUE FILEDEF @V305238 00713000
  714. * 00714000
  715. LA R1,SYSTERM GET ADD OF SYSTERM FDEF LIST @V305238 00715000
  716. BAL R10,SVC202 ISSUE FILEDEF @V305238 00716000
  717. * 00717000
  718. LA R1,LISTDEF GET ADDR OF LSTING FDEF LIST @V305238 00718000
  719. TM ASMSW,NOPRINT WAS NOPRINT SPECIFIED? @V305238 00719000
  720. BZ LIST1 NO...GO TO TEST FOR PRINT @V305238 00720000
  721. MVC LISTDEV(8),DUMMY MOVE DUMMY AS LISTING DEV @V305238 00721000
  722. B LIST2 BRANCH TO ISSUE FILEDEF @V305238 00722000
  723. * 00723000
  724. LIST1 TM ASMSW,PRINT WAS PRINT SPECIFIED? @V305238 00724000
  725. BZ DOSVC NO...GO TO ISSUE FILEDEF @V305238 00725000
  726. MVC LISTDEV(8),PRINTER MOVE PRINTER AS LISTING DEV @V305238 00726000
  727. LIST2 MVC LISTNAME(24),OVER OVERLAY THE FILEID @V305238 00727000
  728. * 00728000
  729. DOSVC BAL R10,SVC202 ISSUE FILEDEF @V305238 00729000
  730. * 00730000
  731. L R15,AADTLKW SET UP CALL TO ADTLKW @V305238 00731000
  732. MVC ADTPARM,=C'??' TO FIND DISK WITH MOST AVAIL @V305238 00732000
  733. LA R1,ADTPARM-24 SPACE TO USE FOR THE UTILITY @V305238 00733000
  734. BALR R14,R15 FILES... @V305238 00734000
  735. * 00735000
  736. MVC UTSFMODE(1),ADTM MODE OF MOST AVAIL SPACE DSK @V305238 00736000
  737. EJECT 00737000
  738. * 00738000
  739. CLC UTSFMODE(1),WMODE IS DISK SAME AS INPUT DISK? @V305238 00739000
  740. BE NOERASE IF SO, SYSUTS ALREADY ERASED @V305238 00740000
  741. MVC ERASMODE(2),UTSFMODE MOVE FMODE TO ERASE PLIST @V305238 00741000
  742. BAL R10,ERASUTS ERASE SYSUT FILES @V305238 00742000
  743. NOERASE EQU * @V305238 00743000
  744. MVC UTSFNAME(8),0(R3) INITIALIZE SYSUT FILENAME @V305238 00744000
  745. OI ASMSW2,FRSTCALL SET FIRST CALL TO SYSUT1 @V305238 00745000
  746. * 00746000
  747. LA R1,UTSFDEF FILEDEF LIST FOR SYSUT'S @V305238 00747000
  748. BAL R10,SVC202 ISSUE FILEDEF @V305238 00748000
  749. * 00749000
  750. MVI UTSDDNME+5,C'1' CHANGE TO SYSUT1 DDNAME @V305238 00750000
  751. MVI UTSFTYPE+5,C'1' CHANGE TO SYSUT1 FILENAME @V305238 00751000
  752. BAL R10,SVC202 ISSUE FILEDEF @V305238 00752000
  753. LPR R6,R0 GET FCB ADDRESS @V305238 00753000
  754. OI FCBIOSW,FCBPROCC AUXPROC DURING CLOSE ALSO.. @V305238 00754000
  755. * 00755000
  756. MVI UTSDDNME+5,C'3' CHANGE TO SYSUT3 DDNAME @V305238 00756000
  757. MVI UTSFTYPE+5,C'3' CHANGE TO SYSUT3 FILENAME @V305238 00757000
  758. BAL R10,SVC202 ISSUE FILEDEF @V305238 00758000
  759. * 00759000
  760. LA R1,MACLDEF FILEDEF LIST FOR CMSLIB @V305238 00760000
  761. BAL R10,SVC202 ISSUE FILEDEF @V305238 00761000
  762. LPR R6,R0 GET FCB ADDRESS @V305238 00762000
  763. OI FCBINIT,FCBCATML SET CONCAT FLAG @V305238 00763000
  764. * 00764000
  765. LA R1,DUMFDEF DUMMY CLRPRINT & UNIDATA @V305238 00765000
  766. BAL R10,SVC202 ISSUE FILEDEF @V305238 00766000
  767. * 00767000
  768. MVC DUMNAME,UNIDATA FILENAME FOR UNIDATA @V305238 00768000
  769. BAL R10,SVC202 ISSUE FILEDEF @V305238 00769000
  770. EJECT 00770000
  771. * 00771000
  772. LOADASM EQU * @V305238 00772000
  773. LOAD EP=CWAX00 LOAD THE 370X ASSEM ROOT @V305238 00773000
  774. ST R0,VASSEM SAVE ITS ADDRESS @V305238 00774000
  775. * 00775000
  776. L R0,GETNO GET AREA FOR XF LONGEST PATH @V305238 00776000
  777. GETMAIN R,LV=(0) @V305238 00777000
  778. * 00778000
  779. L R1,MAINHIGH GET USER AREA HIGH @V305238 00779000
  780. L R0,FREELOWE GET SYSTEM HIGHEST @V305238 00780000
  781. SR R0,R1 GET AMOUNT FREE STORAGE @V305238 00781000
  782. SRL R0,1 GET 50 % OF AREA @V305238 00782000
  783. C R0,COMPWORK ENOUGH FOR PROCESSOR ? @V305238 00783000
  784. BNL DWORDS YES..SPLIT 50 - 50 @V305238 00784000
  785. SRL R0,1 NO..SO GET 25 % FOR INCORES @V305238 00785000
  786. DWORDS GETMAIN R,LV=(0) SAVE BLOCK OF CORE @VM08910 00786000
  787. STM R0,R1,FAKENOS SAVE AMOUNT AND ADDRESS @V305238 00787000
  788. * 00788000
  789. LM R13,R1,LINK GET THE ASSEMBLER REGISTERS @V305238 00789000
  790. BR R15 GO AND ...GOOD LUCK... @V305238 00790000
  791. SPACE 2 00791000
  792. * 00792000
  793. * COMING BACK FROM THE 3705 XF ASSEMBLER PROCESSOR. 00793000
  794. * 00794000
  795. RETURN EQU * @V305238 00795000
  796. ST R15,CC SAVE THE RETURN CODE @V305238 00796000
  797. * 00797000
  798. BAL R10,ERASUTS ERASE SYSUT FILES @V305238 00798000
  799. * 00799000
  800. RETCMS EQU * @V305238 00800000
  801. LA R1,CLEARFIL CLEAR ALL NON-PERM FCB'S @V305238 00801000
  802. BAL R10,SVC202 ISSUE CLEAR @V305238 00802000
  803. EJECT 00803000
  804. * 00804000
  805. END EQU * @V305238 00805000
  806. SR R0,R0 ZERO REGISTER ZERO @V305238 00806000
  807. DMSKEY NUCLEUS @V305238 00807000
  808. NI OSSFLAGS,255-COMPSWT @V305238 00808000
  809. OI MISFLAGS,RELPAGES @V305238 00809000
  810. LA R1,SETAUX SET PLIST FOR AUX CLEAR CALL @V305238 00810000
  811. SVC 202 ... @V305238 00811000
  812. DC AL4(ERR74E2) ERROR EXIT @V305238 00812000
  813. ERR74RET EQU * @V305238 00813000
  814. DMSKEY RESET @V305238 00814000
  815. L R15,CC GET CONDITION CODE @V305238 00815000
  816. L R14,SAVREG14 GET CMS RETURN ADDRESS @V305238 00816000
  817. BR R14 RETURN TO CMS @V305238 00817000
  818. * 00818000
  819. SVC202 SVC 202 ISSUE CMS FILEDEF @V305238 00819000
  820. DC AL4(*+4) NO-OP ERROR EXIT @V305238 00820000
  821. BR R10 RETURN TO CALLER @V305238 00821000
  822. * 00822000
  823. ERASUTS ST R10,VASSEM+4 SAVE LINKAGE REGISTER @V305238 00823000
  824. LA R1,ERASELST GET ERASE PLIST ADDRESS @V305238 00824000
  825. LA R8,8 GET TOKEN LENGTH FOR BXLE @V305238 00825000
  826. LA R9,DDSYS3 GET ENDING ADDRESS @V305238 00826000
  827. LA R7,DDSYS1 GET BEGINNING ADDRESS @V305238 00827000
  828. BAL R10,ERASLUP GO AND ERASE SYSUTS @V305238 00828000
  829. L R10,VASSEM+4 RESTORE RETURN REGISTER @V305238 00829000
  830. BR R10 RETURN TO CALLER @V305238 00830000
  831. * 00831000
  832. EJECT 00832000
  833. ASMPROC DS 0H @V305238 00833000
  834. USING ASMPROC,R15 @V305238 00834000
  835. STM R1,R7,SAVEREGS SAVE REGISTERS @V305238 00835000
  836. LR R7,R15 GET ADDRESSABILITY @V305238 00836000
  837. DROP R15 @V305238 00837000
  838. USING UTENTRY,R2 @V305238 00838000
  839. USING UTHEAD,R5 @V305238 00839000
  840. USING OPSECT,R3 @V305238 00840000
  841. USING FCBSECT,R11 @V305238 00841000
  842. USING ASMPROC,R7 @V305238 00842000
  843. * 00843000
  844. CLC FCBDD(8),DDSYS1 PROCESSING SYSUT1 ? @V305238 00844000
  845. BE SYSUT1 YES..BRANCH @V305238 00845000
  846. * 00846000
  847. SYSUTX MVI FCBFORM,C'F' FORCE RECFM OF FIXED @V305238 00847000
  848. TM IOBIOFLG,IOBIN ARE WE DOING INPUT ? @V305238 00848000
  849. BO RETURN1 YES..RETURN @V305238 00849000
  850. MVC FCBBYTE+2(2),H8000 FORCE 8000 FOR FAST I/O @V305238 00850000
  851. B RETURN1 RETURN TO O/S SIMULATION @V305238 00851000
  852. * 00852000
  853. SYSUT1 TM ASMSW2,NOCORE ARE THERE CORE PROBLEMS ? @V305238 00853000
  854. BO SYSUTX YES..RETURN @V305238 00854000
  855. TM ASMSW2,FRSTCALL IS THIS FIRST CALL ? @V305238 00855000
  856. BO UTSETUP YES..GO AND SETUP CORE @V305238 00856000
  857. L R5,UTSAV GET ADDRESS OF ENTRIES TABLE @V305238 00857000
  858. LTR R5,R5 ANY CORE OBTAINED ? @V305238 00858000
  859. BZ SYSUTX NO..JUST RETURN @V305238 00859000
  860. TM FCBIOSW,FCBCLOSE ARE WE IN CLOSE EXIT ? @V305238 00860000
  861. BO UTFIN YES..CHECK NOT TCLOSE @V305238 00861000
  862. * 00862000
  863. UTCOMM LH R6,FCBITEM GET ITEM NUMBER @V305238 00863000
  864. N R6,HALFWORD MASK IT FOR NEXT COMPARE @V305238 00864000
  865. CH R6,UTCORENT IS IT HIGHER THAN OUR LAST ? @V305238 00865000
  866. BH UTEOF YES..IS EOF OR WE NEED CORE @V305238 00866000
  867. SLL R6,3 ADJUST ENTRY INDEX @V305238 00867000
  868. LA R2,0(R5,R6) GET PROPER RECORD ENTRY @V305238 00868000
  869. UTSET LH R6,FCBBYTE+2 GET NUMBER OF BYTES TO MOVE @V305238 00869000
  870. TM UTRECAD,ONDISK IS THIS RECORD IN CORE? @V305238 00870000
  871. BO SYSUTX BRANCH IF NOT @V305238 00871000
  872. TM IOBIOFLG,IOBIN ARE WE DOING INPUT ? @V305238 00872000
  873. BZ UTWRITE NO..THEN GO TO WRITE @V305238 00873000
  874. CH R6,UTRECLN IS NO OF BYTES > THAN OURS ? @V305238 00874000
  875. BH UTEOF2 YES..DEFINITELY EOF @V305238 00875000
  876. L R5,UTRECAD GET INCORE RECORD ADDRESS @V305238 00876000
  877. L R4,FCBBUFF GET USERS BUFFER ADDRESS @V305238 00877000
  878. B PREMOVE GO TO MOVE ROUTINE @V305238 00878000
  879. * 00879000
  880. UTWRITE CH R6,UTRECLN REC LEN SAME AS INCORE ? @V305238 00880000
  881. BNH UTWRITE2 YES..IT IS OK THEN @V305238 00881000
  882. LH R0,UTRECLN GET INCORE RECORD LENGTH @V305238 00882000
  883. L R1,UTRECAD GET INCORE RECORD ADDRESS @V305238 00883000
  884. FREEMAIN R,LV=(0),A=(1) @V305238 00884000
  885. LH R6,FCBITEM GET ITEM NUMBER @V305238 00885000
  886. N R6,HALFWORD MASK HIGH ORDER BYTES @V305238 00886000
  887. B UTGET2 GET CORE FOR THIS RECORD @V305238 00887000
  888. EJECT 00888000
  889. * 00889000
  890. UTWRITE2 STH R6,UTRECLN SAVE INCORE RECORD LENGHT @V305238 00890000
  891. L R5,FCBBUFF GET USERS BUFFER ADDRESS @V305238 00891000
  892. L R4,UTRECAD GET INCORE RECORD ADDRESS @V305238 00892000
  893. * 00893000
  894. PREMOVE ST R6,FCBREAD FCBREAD = NO. BYTES MOVED @V305238 00894000
  895. * 00895000
  896. UTMOVE SH R6,H256 IS LRECL GREATER THAN 256 ? @V305238 00896000
  897. BM LT256 NO..JUST DO ONE PASS @V305238 00897000
  898. MVC 0(256,R4),0(R5) MOVE 256 BYTES @V305238 00898000
  899. BE RETURN2 IF NO MORE..RETURN @V305238 00899000
  900. LA R4,256(,R4) UP MOVE REGISTER BY 256 @V305238 00900000
  901. LA R5,256(,R5) UP MOVE REGISTER BY 256 @V305238 00901000
  902. B UTMOVE GO AND MOVE SOME MORE @V305238 00902000
  903. LT256 AH R6,H256 RESET LENGTH @V305238 00903000
  904. BCTR R6,0 LESS ONE FOR DOMINOE EFFECT @V305238 00904000
  905. EX R6,MOVEIT EXECUTE LAST MOVE @V305238 00905000
  906. B RETURN2 RETURN WITH COUNT IN R15 @V305238 00906000
  907. * 00907000
  908. MOVEIT MVC 0(*-*,R4),0(R5) MOVE RECORD FROM/TO CORE @V305238 00908000
  909. * 00909000
  910. UTSETUP LM R0,R1,FAKENOS GET FAKE AREA LENGTH & ADDR @V305238 00910000
  911. FREEMAIN R,LV=(0),A=(1) FREE SAVED CORE @VM08910 00911000
  912. * 00912000
  913. LA R4,800 100 ENTRIES (1 HEAD,99 RECS) @V305238 00913000
  914. LA R6,UTSAV ADDRESS OF GETMAINED AREA @V305238 00914000
  915. BAL R3,GETCORE GET CORE FOR ENTRIES @V305238 00915000
  916. BZ UTCOREOK IF ZERO..CORE OBTAINED.. @V305238 00916000
  917. OI ASMSW2,NOCORE SET NOCORE SWITCH @V305238 00917000
  918. B SYSUTX RETURN EMPTY HANDED @V305238 00918000
  919. * 00919000
  920. UTCOREOK LA R4,1 SET REG 4 TO ONE @V305238 00920000
  921. L R5,UTSAV GET ADDRESS OF ENTRIES @V305238 00921000
  922. ST R4,UTCORENT INIT UTCORENT & UTNXTENT @V305238 00922000
  923. XC UTTOTENT(2),UTTOTENT ZERO TOTAL ENTRIES @V305238 00923000
  924. NI ASMSW2,255-FRSTCALL TURN OFF FIRST CALL SWITCH @V305238 00924000
  925. B UTCOMM GO SATISFY I/O REQUEST @V305238 00925000
  926. EJECT 00926000
  927. * 00927000
  928. UTEOF TM IOBIOFLG,IOBIN ARE WE DOING INPUT ? @V305238 00928000
  929. BZ UTGETCOR NO..THEN GET CORE @V305238 00929000
  930. CH R6,UTTOTENT IS ITEM > THAN TOT ENTS ? @V305238 00930000
  931. BNH SYSUTX NO..SOME RECS POSS. ON DISK @V305238 00931000
  932. UTEOF2 LA R15,12 GET EOF CODE @V305238 00932000
  933. LNR R15,R15 NEGATIVE OF 12 @V305238 00933000
  934. B UTRETURN GIVE CODE TO I/O SIM @V305238 00934000
  935. * 00935000
  936. UTGETCOR TM ASMSW2,TODISK THIS RECORD TO DISK ? @V305238 00936000
  937. BO UTTODSK YES..DON'T BOTHER @V305238 00937000
  938. LH R2,UTCORENT GET LAST IN CORE REC NUM @V305238 00938000
  939. CH R2,H99 EQUAL OR GREATER THAN 99 ? @V305238 00939000
  940. BNL UTTODSK YES..BRANCH TO SPILL @V305238 00940000
  941. CH R6,UTNXTENT FCBITEM SAME AS NEXT ENTRY ? @V305238 00941000
  942. BNE UTTODSK NO..BRANCH TO SPILL @V305238 00942000
  943. STH R6,UTCORENT MAKE FCBITEM OUR LAST ENTRY @V305238 00943000
  944. STH R6,UTTOTENT ALSO OUR TOTAL ENTRIES @V305238 00944000
  945. LA R2,1(,R6) UP FCBITEM BY ONE..AND @V305238 00945000
  946. STH R2,UTNXTENT THIS MUST BE OUR NEXT ENTRY @V305238 00946000
  947. UTGET2 SLL R6,3 SET INDEX TO PROPER ENTRY @V305238 00947000
  948. LA R2,0(R5,R6) GET PROPER INCORE REC ENTRY @V305238 00948000
  949. LH R4,FCBBYTE+2 GET LENGTH OF RECORD @V305238 00949000
  950. STH R4,UTRECLN SAVE AS OUR INCORE REC LEN @V305238 00950000
  951. LA R6,UTRECAD GET RECORD ADDRESS @V305238 00951000
  952. BAL R3,GETCORE GET CORE FOR THIS RECORD @V305238 00952000
  953. BZ UTSET IF OBTAINED..GO TO MOVE REC @V305238 00953000
  954. LH R6,FCBITEM GET ITEM NUMBER @V305238 00954000
  955. CH R6,UTCORENT WAS RECORD IN CORE? @V305238 00955000
  956. BH UTGET3 BRANCH IF NOT @V305238 00956000
  957. OI UTRECAD,ONDISK INDICATE ON DISK @V305238 00957000
  958. NI ASMSW2,255-TODISK TURN OFF SWITCH @V305238 00958000
  959. B SYSUTX @V305238 00959000
  960. UTGET3 EQU * @V305238 00960000
  961. LH R2,UTCORENT GET UPDATED LAST REC NO @V305238 00961000
  962. BCTR R2,0 LESS ONE @V305238 00962000
  963. STH R2,UTCORENT REAL LAST INCORE RECORD @V305238 00963000
  964. LH R2,UTNXTENT GET UPDATED NEXT REC NO @V305238 00964000
  965. BCTR R2,0 LESS ONE @V305238 00965000
  966. STH R2,UTNXTENT REAL NEXT INCORE RECORD @V305238 00966000
  967. OI ASMSW2,TODISK REMAINING RECS TO DISK.. @V305238 00967000
  968. * 00968000
  969. UTTODSK STH R6,UTTOTENT FCBITEM IS NUMBER TOTAL RECS @V305238 00969000
  970. B SYSUTX RETURN @V305238 00970000
  971. EJECT 00971000
  972. * 00972000
  973. UTFIN CLI OSIOTYPE,C'T' IS THIS A TCLOSE ? @V305238 00973000
  974. BE RETURN1 YES..IGNORE @V305238 00974000
  975. XC UTSAV(4),UTSAV CLEAR ENTRIES ADDRESS @V305238 00975000
  976. * 00976000
  977. RETURN1 SR R15,R15 RETURN NOTHING TO I/O SIM @V305238 00977000
  978. B UTRETURN FINAL RETURN @V305238 00978000
  979. * 00979000
  980. RETURN2 L R15,FCBREAD GET BYTES MOVED FOR I/O SIM @V305238 00980000
  981. SLL R15,16 SET RESIDUAL COUNT TO ZERO @V305238 00981000
  982. UTRETURN LM R1,R6,SAVEREGS RESTORE REGS USED @V305238 00982000
  983. BR R14 RETURN TO I/O SIMULATION @V305238 00983000
  984. * 00984000
  985. GETCORE EQU * @V305238 00985000
  986. GETMAIN EC,LV=(R4),A=(R6) @V305238 00986000
  987. ST R15,CC SAVE RETURN CODE @V305238 00987000
  988. LTR R15,R15 CORE OBTAINED ? @V305238 00988000
  989. BZ GETDONE YES, JUST RETURN @VM08910 00989000
  990. OI ASMSW2,TODISK REMAINING RECORDS TO DISK @VM08910 00990000
  991. GETDONE L R15,CC GET RETURN CODE @V305238 00991000
  992. LTR R15,R15 SET CONDITION CODE @V305238 00992000
  993. BR R3 RETURN TO CALLER.. @V305238 00993000
  994. DROP R7 @V305238 00994000
  995. EJECT 00995000
  996. * 00996000
  997. * 00997000
  998. TERMPROC DS 0H @V305238 00998000
  999. USING TERMPROC,R15 @V305238 00999000
  1000. * 01000000
  1001. TM ASMSW2,NOTERM SHOULD THIS LINE BE TYPED ? @V305238 01001000
  1002. BO 0(,R14) NO..JUST RETURN @V305238 01002000
  1003. * 01003000
  1004. ST R1,SAVEREGS SAVE OUR WORK REG. @V305238 01004000
  1005. L R1,FCBBUFF GET BUFFER TO BE TYPED @V305238 01005000
  1006. CLC 0(8,R1),=C' HIGHEST' IS THIS THEEEE LINE ? @V305238 01006000
  1007. L R1,SAVEREGS ... @V305238 01007000
  1008. BE TERMEND YES..GO SET GOOD OL'SWITCH @V305238 01008000
  1009. SR R15,R15 LET O/S SIMULATION TYPE LINE @V305238 01009000
  1010. BR R14 RETURN @V305238 01010000
  1011. * 01011000
  1012. TERMEND OI ASMSW2,NOTERM NO MORE LINES TO BE TYPED @V305238 01012000
  1013. BR R14 RETURN @V305238 01013000
  1014. DROP R15 @V305238 01014000
  1015. * 01015000
  1016. EJECT 01016000
  1017. ********************************************************************** 01017000
  1018. * 01018000
  1019. * DATA 01019000
  1020. * 01020000
  1021. ********************************************************************** 01021000
  1022. * 01022000
  1023. OPTAB$ DC A(O1$,O2$,O3$,O4$,O5$,O6$,O7$,O8$) @V305238 01023000
  1024. SAVEREGS DC 7F'0' SAVEAREA FOR AUXPROCS REGS. @V305238 01024000
  1025. ADTCOPY DC F'0' ADDRESS OF ADT FROM FSTCOPY @V305238 01025000
  1026. CC DC F'0' RETURN CODE FROM PROCESSOR @V305238 01026000
  1027. FILEPTR DC F'0' POINTS TO THE FILE NAME. @V305238 01027000
  1028. HALFWORD DC F'65535' MASKS HI ORDER TWO BYTES OF REG. @V305238 01028000
  1029. GETNO DC X'00009700' GETMAIN AMNT. FOR LONGEST PATH @V305238 01029000
  1030. COMPWORK DC X'00020000' MINIMUN AREA FOR ASSEM WORK FILE @V305238 01030000
  1031. FAKENOS DC 2F'0' AMNT & ADDR OF AREA RESERVED @V305238 01031000
  1032. HX100 DC F'105' FULLWORD TO CONTROL OPTION AREA @V305238 01032000
  1033. HX80 DC F'80' RECORD LENGTH FOR INPUT FILE. @V305238 01033000
  1034. H8000 DC H'8000' SYSUTS BLOCK FOR FAST I/O @V305238 01034000
  1035. H256 DC H'256' MAX LENGTH FOR MVC. @V305238 01035000
  1036. H99 DC H'99' MAX NUMBER OF UT ENTRIES. @V305238 01036000
  1037. H20 DC H'20' INVALID FILEID RET. CODE @V305238 01037000
  1038. H4 DC H'4' ... @V305238 01038000
  1039. H3 DC H'3' MAX SUBOPTION LEN FOR XREF @V305238 01039000
  1040. H2 DC H'2' MAX SUBOPTION LEN FOR LINECNT @V305238 01040000
  1041. H16 DC H'16' JUST A TOKEN LENGTH. @V305238 01041000
  1042. RIGHTPAR EQU C')' RIGHT PARENTHESIS CODE. @V305238 01042000
  1043. LEFTPAR EQU C'(' LEFT PARENTHESIS CODE. @V305238 01043000
  1044. COMMA EQU C',' COMMA CODE. @V305238 01044000
  1045. STAR EQU C'*' ASTERICK CODE. @V305238 01045000
  1046. BLANK EQU X'40' BLANK CODE. @V305238 01046000
  1047. HXFF EQU X'FF' FENCE CODE. @V305238 01047000
  1048. WMODE DC CL2'A1' MODE IN CASE NONE FOUND @V305238 01048000
  1049. PRINTER DC CL8'PRINTER' DEVICE USED IF PRINT SPECIFIED @V305238 01049000
  1050. CRT DC CL6'CRT' CATHODE RAY TUBE DEVICE @V305238 01050000
  1051. * 01051000
  1052. ASMSW DC X'0' ASSEMBLER OPTIONS FLAG BITS @V305238 01052000
  1053. PRINT EQU X'40' PRINT OPTION SPECIFIED @V305238 01053000
  1054. NOPRINT EQU X'20' NOPRINT OPTION SPECIFIED @V305238 01054000
  1055. SYSPARM EQU X'10' OPTION IS SYSPARM @V305238 01055000
  1056. XREF EQU X'08' OPTION IS XREF @V305238 01056000
  1057. NUMERIC EQU X'04' SUB-OPTION IS NUMERIC @V305238 01057000
  1058. PARENS EQU X'02' OPTION HAS SUB-OPTION @V305238 01058000
  1059. LINEC EQU X'01' OPTION IS LINECOUNT @V305238 01059000
  1060. * 01060000
  1061. ASMSW2 DC X'0' ASSEMBLER INTERNAL FLAG @V305238 01061000
  1062. OPTERR EQU X'80' OPTION ERROR FOUND @V305238 01062000
  1063. NOTFND EQU X'40' FILE NOT FOUND ON DISK @V305238 01063000
  1064. FRSTCALL EQU X'20' FIRST CALL TO SYSUT1 @V305238 01064000
  1065. NOCORE EQU X'10' NO CORE FOR SYSUT1 @V305238 01065000
  1066. TODISK EQU X'08' FURTHER RECORDS TO DISK @V305238 01066000
  1067. NOTERM EQU X'04' DON'T TYPE THIS LINE @V305238 01067000
  1068. * 01068000
  1069. EJECT 01069000
  1070. * 01070000
  1071. SAVREG14 DC F'0' CMS RETURN ADDRESS @V305238 01071000
  1072. SAVEAREA DC 18F'0' SAVE AREA FOR THE PROCESSOR @V305238 01072000
  1073. LINK DC A(SAVEAREA) R13 @V305238 01073000
  1074. DC A(RETURN) R14 @V305238 01074000
  1075. VASSEM DC A(0) R15 @V305238 01075000
  1076. DC F'0' R0 @V305238 01076000
  1077. DC A(PARAMLST) R1 @V305238 01077000
  1078. * 01078000
  1079. * 01079000
  1080. PARAMLST DC A(OPTLIST) PARAMETER LIST FOR 370X ASSEM XF @V305238 01080000
  1081. DC X'80',AL3(DDNAME) @V305238 01081000
  1082. * 01082000
  1083. * 01083000
  1084. DS 0F @V305238 01084000
  1085. OPTLIST EQU * OPTION LIST @V305238 01085000
  1086. DC AL2(OPTLEN-OPTLIST-2) @V305238 01086000
  1087. OPTBYTES EQU * @V305238 01087000
  1088. DC C'TERM,NODECK,LOAD' @V305238 01088000
  1089. OPTLEN DS XL104 @V305238 01089000
  1090. * 01090000
  1091. * 01091000
  1092. DS 0H @V305238 01092000
  1093. DDNAME DC AL2(DDLAST-*),24X'00' DDNAMES LIST @V305238 01093000
  1094. DDCMSLIB DC CL8'CMSLIB' MACLIB CMS DDNAME @V305238 01094000
  1095. DDASSEM DC CL8'ASM3705' SYSIN CMS DDNAME @V305238 01095000
  1096. DDLIST DC CL8'LISTING' SYSPRINT CMS DDNAME @V305238 01096000
  1097. DDPUNCH DC CL8'PUNCH' SYSPUNCH CMS DDNAME @V305238 01097000
  1098. DDSYS1 DC CL8'SYSUT1' SYSUT1 CMS DDNAME @V305238 01098000
  1099. DDSYS2 DC CL8'SYSUT2' SYSUT2 CMS DDNAME @V305238 01099000
  1100. DDSYS3 DC CL8'SYSUT3' SYSUT3 CMS DDNAME @V305238 01100000
  1101. DDTEXT DC CL8'TEXT' SYSLIN CMS DDNAME @V305238 01101000
  1102. DDTERM DC CL8'SYSTERM' SYSTERM CMS DDNAME @V305238 01102000
  1103. DDLAST EQU * @V305238 01103000
  1104. * 01104000
  1105. * 01105000
  1106. EJECT 01106000
  1107. * 01107000
  1108. DS 0F @V305238 01108000
  1109. SETAUX DC CL8'DMSLADAD' AUXILIARY DIRECTORY LIST @V305238 01109000
  1110. ASMDIRT DC V(DMSARD) @V305238 01110000
  1111. DC F'0' @V305238 01111000
  1112. * 01112000
  1113. * 01113000
  1114. DS 0D @V305238 01114000
  1115. ERASELST DC CL8'ERASE' ERASE LIST @V305238 01115000
  1116. ERASNAME DC CL8' ' @V305238 01116000
  1117. ERASTYPE DC CL8' ' @V305238 01117000
  1118. ERASMODE DC CL2' ' @V305238 01118000
  1119. * 01119000
  1120. * 01120000
  1121. DS 0D @V305238 01121000
  1122. STATELST DC CL8'STATE' STATE LIST @V305238 01122000
  1123. STATNAME DC CL8' ' @V305238 01123000
  1124. DC CL8'ASM3705' @V305238 01124000
  1125. STATMODE DC CL2'*' @V305238 01125000
  1126. DC CL2' ' @V305238 01126000
  1127. STATCOPY DC A(0) ADDRESS OF FST COPY @V305238 01127000
  1128. * 01128000
  1129. ADTPARM DC CL2' ' @V305238 01129000
  1130. * 01130000
  1131. * 01131000
  1132. CLEARFIL DS 0D FILEDEF CALL TO CLEAR FCB'S @V305238 01132000
  1133. DC CL8'FILEDEF' @V305238 01133000
  1134. DC CL8'*' @V305238 01134000
  1135. DC CL8'CLEAR' @V305238 01135000
  1136. DC 8X'FF' @V305238 01136000
  1137. * 01137000
  1138. * 01138000
  1139. DS 0D @V305238 01139000
  1140. CONWR DC CL8'TYPLIN' CONSOLE WRITE LIST @V305238 01140000
  1141. DC AL1(1),AL3(SYSMSG) @V305238 01141000
  1142. DC CL1'B',AL3(L'SYSMSG) @V305238 01142000
  1143. * 01143000
  1144. * 01144000
  1145. DS 0D @V305238 01145000
  1146. CONRD DC CL8'CONREAD' CONSOLE READ LIST @V305238 01146000
  1147. CONBUF DC AL1(1),AL3(0) @V305238 01147000
  1148. CONCNT DC CL1'V',AL3(0) @V305238 01148000
  1149. * 01149000
  1150. * 01150000
  1151. SYSMSG DC C' ENTER SYSPARM: ' @V305238 01151000
  1152. * 01152000
  1153. * 01153000
  1154. SETTING DC C'SETTING ' @V305238 01154000
  1155. RESETING DC C'RESETTING' @V305238 01155000
  1156. * 01156000
  1157. MIN DC CL4'MIN' BUFF SUBOPTION @V305238 01157000
  1158. STD DC CL4'STD' BUFF SUBOPTION @V305238 01158000
  1159. FULL DC CL5'FULL' XREF SUBOPTION @V305238 01159000
  1160. SHORT DC CL6'SHORT' XREF SUBOPTION @V305238 01160000
  1161. EJECT 01161000
  1162. * 01162000
  1163. LISTDEF DS 0D FILEDEF LIST: LISTING DDNAME @V305238 01163000
  1164. DC CL8'FILEDEF' @V305238 01164000
  1165. DC CL8'LISTING' @V305238 01165000
  1166. LISTDEV DC CL8'DISK' @V305238 01166000
  1167. LISTNAME DC CL8' ' @V305238 01167000
  1168. DC CL8'LISTING' @V305238 01168000
  1169. LISTMODE DC CL8' ' @V305238 01169000
  1170. DC CL8'(RECFM' @V305238 01170000
  1171. DC CL8'FBA' @V305238 01171000
  1172. DC CL8'BLOCK' @V305238 01172000
  1173. DC CL8'1210' @V305238 01173000
  1174. DC CL8'NOCHANGE' @V305238 01174000
  1175. DC 8X'FF' @V305238 01175000
  1176. * 01176000
  1177. INPTDEF DS 0D FILEDEF LIST: ASM3705 DDNAME @V305238 01177000
  1178. DC CL8'FILEDEF' @V305238 01178000
  1179. DC CL8'ASM3705' @V305238 01179000
  1180. DC CL8'DISK' @V305238 01180000
  1181. INPTNAME DC CL8' ' @V305238 01181000
  1182. DC CL8'ASM3705' @V305238 01182000
  1183. INPTMODE DC CL8'*' @V305238 01183000
  1184. DC CL8'(RECFM' @V305238 01184000
  1185. DC CL8'FB' @V305238 01185000
  1186. DC CL8'LRECL' @V305238 01186000
  1187. DC CL8'80' @V305238 01187000
  1188. DC CL8'BLOCK' @V305238 01188000
  1189. DC CL8'800' @V305238 01189000
  1190. DC CL8'NOCHANGE' @V305238 01190000
  1191. DC 8X'FF' @V305238 01191000
  1192. * 01192000
  1193. TEXTDEF DS 0D FILEDEF LIST: TEXT DDNAME @V305238 01193000
  1194. DC CL8'FILEDEF' @V305238 01194000
  1195. DC CL8'TEXT' @V305238 01195000
  1196. DC CL8'DISK' @V305238 01196000
  1197. TEXTNAME DC CL8' ' @V305238 01197000
  1198. DC CL8'TEXT' @V305238 01198000
  1199. TEXTMODE DC CL8' ' @V305238 01199000
  1200. DC CL8'(' @V305238 01200000
  1201. DC CL8'NOCHANGE' @V305238 01201000
  1202. DC 8X'FF' @V305238 01202000
  1203. * 01203000
  1204. SYSTERM DS 0D FILEDEF LIST: SYSTERM DDNAME @V305238 01204000
  1205. DC CL8'FILEDEF' @V305238 01205000
  1206. DC CL8'SYSTERM' @V305238 01206000
  1207. TERMINAL DC CL8'TERMINAL' @V305238 01207000
  1208. DC CL8'(' @V305238 01208000
  1209. DC CL8'AUXPROC' @V305238 01209000
  1210. DC AL4(TERMPROC) @V305238 01210000
  1211. DC AL4(0) @V305238 01211000
  1212. DC CL8'NOCHANGE' @V305238 01212000
  1213. DC 8X'FF' @V305238 01213000
  1214. EJECT 01214000
  1215. * 01215000
  1216. PUNFDEF DS 0D FILEDEF LIST: PUNCH DDNAME @V305238 01216000
  1217. DC CL8'FILEDEF' @V305238 01217000
  1218. DC CL8'PUNCH' @V305238 01218000
  1219. PUNCH DC CL8'PUNCH' @V305238 01219000
  1220. OVER DC CL8'(' @V305238 01220000
  1221. DC CL8'NOCHANGE' @V305238 01221000
  1222. DC 8X'FF' @V305238 01222000
  1223. * 01223000
  1224. UTSFDEF DS 0D FILEDEF LIST: SYSUT DDNAME @V305238 01224000
  1225. DC CL8'FILEDEF' @V305238 01225000
  1226. UTSDDNME DC CL8'SYSUT2' @V305238 01226000
  1227. DC CL8'DISK' @V305238 01227000
  1228. UTSFNAME DC CL8' ' @V305238 01228000
  1229. UTSFTYPE DC CL8'SYSUT2' @V305238 01229000
  1230. UTSFMODE DC CL8' 4' @V305238 01230000
  1231. DC CL8'(BLOCK' @V305238 01231000
  1232. DC CL8'7294' @V305238 01232000
  1233. DC CL8'AUXPROC' @V305238 01233000
  1234. DC AL4(ASMPROC) @V305238 01234000
  1235. DC AL4(0) @V305238 01235000
  1236. DC CL8'NOCHANGE' @V305238 01236000
  1237. DC 8X'FF' @V305238 01237000
  1238. * 01238000
  1239. MACLDEF DS 0D FILEDEF LIST: CMSLIB DDNAME @V305238 01239000
  1240. DC CL8'FILEDEF' @V305238 01240000
  1241. DC CL8'CMSLIB' @V305238 01241000
  1242. DC CL8'DISK' @V305238 01242000
  1243. DC CL8'CMSLIB' @V305238 01243000
  1244. DC CL8'MACLIB' @V305238 01244000
  1245. DC CL8'*' @V305238 01245000
  1246. DC CL8'(RECFM' @V305238 01246000
  1247. DC CL8'FB' @V305238 01247000
  1248. DC CL8'LRECL' @V305238 01248000
  1249. DC CL8'80' @V305238 01249000
  1250. DC CL8'BLOCK' @V305238 01250000
  1251. DC CL8'800' @V305238 01251000
  1252. DC CL8'NOCHANGE' @V305238 01252000
  1253. DC 8X'FF' @V305238 01253000
  1254. * 01254000
  1255. DUMFDEF DS 0D FILEDEF LIST: CLRPRNT DDNAME @V305238 01255000
  1256. DC CL8'FILEDEF' @V305238 01256000
  1257. DUMNAME DC CL8'CLRPRINT' @V305238 01257000
  1258. DUMMY DC CL8'DUMMY' @V305238 01258000
  1259. DC 8X'FF' @V305238 01259000
  1260. * 01260000
  1261. UNIDATA DC CL8'UNIDATA' FILENAME FOR UNIDATA DDNAME @V305238 01261000
  1262. EJECT 01262000
  1263. * 01263000
  1264. OPTIONS EQU * @V305238 01264000
  1265. * 01265000
  1266. * THE FOLLOWING MACRO CONTAINS THE NAMES AND ABBREVIATIONS OF 01266000
  1267. * ALL THE 3705 XF ASSEMBLER CMS OPTIONS. THE FIRST POSITIONAL 01267000
  1268. * PARAMETER IN EACH ENTRY CONTAINS THE NAME OF THE OPTION. IF 01268000
  1269. * AN ABBREVIATION EXISTS, IT IS ADDED TO THE FIRST PARAMETER IN 01269000
  1270. * SUBLIST NOTATION. THE SECOND POSITIONAL PARAMETER IS USED TO 01270000
  1271. * CONTAIN TWO FLAGS DESCRIBING THE NATURE OF THE OPTION. 01271000
  1272. * 01272000
  1273. * THE FIRST FLAG IS 'ORED' TO A FLAG CALLED "ASMSW" SO THAT IT 01273000
  1274. * CAN BE TESTED LATER. 01274000
  1275. * 01275000
  1276. * THE SECOND FLAG IS 'ANDED' TO "ASMSW" TO TURN OFF ANY PREVIOUS 01276000
  1277. * CONFLICTING OPTIONS SPECIFIED. 01277000
  1278. * 01278000
  1279. * THE FLAG 'PARENS' MEANS THAT THE OPTION IS IN TWO PARTS AND THAT 01279000
  1280. * PARENTHESIS ARE TO SURROUND THE SECOND PART. THE FLAG 'NUMERIC' 01280000
  1281. * MEANS THAT THE SECOND PART OF THE OPTION MUST BE NUMERIC. 01281000
  1282. * 01282000
  1283. OPTDEF *01283000
  1284. ALOGIC,, @V305238*01284000
  1285. BUFSIZE,PARENS, @V305238*01285000
  1286. DECK,, @V305238*01286000
  1287. (DISK,DI),(PRINT,255-PRINT-NOPRINT), @V305238*01287000
  1288. ESD,, @V305238*01288000
  1289. FLAG,(PARENS+NUMERIC), @V305238*01289000
  1290. LIBMAC,, @V305238*01290000
  1291. LINECOUN,(PARENS+NUMERIC+LINEC), @V305238*01291000
  1292. LIST,, @V305238*01292000
  1293. LOAD,, @V305238*01293000
  1294. MCALL,, @V305238*01294000
  1295. MLOGIC,, @V305238*01295000
  1296. NOALOGIC,, @V305238*01296000
  1297. NODECK,, @V305238*01297000
  1298. NOESD,, @V305238*01298000
  1299. NOLIBMAC,, @V305238*01299000
  1300. NOLIST,, @V305238*01300000
  1301. NOLOAD,, @V305238*01301000
  1302. NOMCALL,, @V305238*01302000
  1303. NOMLOGIC,, @V305238*01303000
  1304. (NONUMBER,NONUM),, @V305238*01304000
  1305. (NOOBJECT,NOOBJ),, @V305238*01305000
  1306. (NOPRINT,NOPR),(NOPRINT,255-PRINT), @V305238*01306000
  1307. NORENT,, @V305238*01307000
  1308. NORLD,, @V305238*01308000
  1309. NOSTMT,, @V305238*01309000
  1310. NOTERM,, @V305238*01310000
  1311. NOXREF,, @V305238*01311000
  1312. (NUMBER,NUM),, @V305238*01312000
  1313. (OBJECT,OBJ),, @V305238*01313000
  1314. (PRINT,PR),(PRINT,255-NOPRINT), @V305238*01314000
  1315. RENT,, @V305238*01315000
  1316. RLD,, @V305238*01316000
  1317. STMT,, @V305238*01317000
  1318. SYSPARM,(PARENS+SYSPARM), @V305238*01318000
  1319. (TERMINAL,TERM),, @V305238*01319000
  1320. XREF,(PARENS+XREF) @V305238 01320000
  1321. DS 0H @V305238 01321000
  1322. EJECT 01322000
  1323. USING DMSARX,R12,R11 @V305238 01323000
  1324. ERR1 EQU * @V305238 01324000
  1325. DMSERR TEXT='NO FILENAME SPECIFIED',NUM=001,LET=E @V305238 01325000
  1326. MVI CC+3,X'18' SET RETURN CODE @V305238 01326000
  1327. B END EXIT @V305238 01327000
  1328. ERR2 EQU * @V305238 01328000
  1329. DMSERR TEXT='FILE ''........ ASM3705'' NOT FOUND',NUM=002, *01329000
  1330. LET=E,SUB=(CHARA,(R3)) @V305238 01330000
  1331. MVI CC+3,X'1C' SET RETURN CODE @V305238 01331000
  1332. B RETCMS EXIT @V305238 01332000
  1333. ERR3 LR R2,R6 ... @V305238 01333000
  1334. ERR3A ST R1,VASSEM+4 SAVE REGISTER 1 @V305238 01334000
  1335. DMSERR TEXT='INVALID OPTION ''........''',NUM=003,LET=E, *01335000
  1336. SUB=(CHARA,(R2)) @V305238 01336000
  1337. OI ASMSW2,OPTERR SIGNAL OPTION ERROR @V305238 01337000
  1338. MVI CC+3,X'18' SET RETURN CODE @V305238 01338000
  1339. L R1,VASSEM+4 RESTORE REGISTER 1 @V305238 01339000
  1340. BR R10 RETURN TO CALLER @V305238 01340000
  1341. EJECT 01341000
  1342. * 01342000
  1343. ERR3B TM ASMSW,SYSPARM SYSPARM OPTION ? @V305238 01343000
  1344. BO SUBOPTEN YES..HANDLE SPECIAL @V305238 01344000
  1345. LR R2,R6 SAVE OPTION POINTER @V305238 01345000
  1346. SH R2,H16 POINT TO OPTION @V305238 01346000
  1347. LA R10,GETNEXT GET RETURN ADDRESS @V305238 01347000
  1348. B ERR3A GIVE ERROR... @V305238 01348000
  1349. ERR6 EQU * @V305238 01349000
  1350. DMSERR TEXT='NO READ/WRITE DISK ACCESSED',NUM=006,LET=E 01350000
  1351. MVI CC+3,X'24' SET RETURN CODE @V305238 01351000
  1352. B RETCMS EXIT @V305238 01352000
  1353. ERR7 EQU * @V305238 01353000
  1354. DMSERR TEXT='FILE ''........ ASM3705'' IS NOT FIXED, 80 CHAR. *01354000
  1355. RECORDS',NUM=007,LET=E,SUB=(CHARA,(R3)) @V305238 01355000
  1356. MVI CC+3,X'20' SET RETURN CODE @V305238 01356000
  1357. B RETCMS EXIT @V305238 01357000
  1358. EJECT 01358000
  1359. * 01359000
  1360. ERR38 EQU * @V305238 01360000
  1361. DMSERR TEXT='FILEID CONFLICT FOR DDNAME ''ASM3705''', @V305238*01361000
  1362. NUM=038,LET=E @V305238 01362000
  1363. MVI CC+3,X'28' SET RETURN CODE @V305238 01363000
  1364. B RETCMS EXIT @V305238 01364000
  1365. ERR52 EQU * @V305238 01365000
  1366. DMSERR TEXT='MORE THAN 100 CHARS. OF OPTIONS SPECIFIED', *01366000
  1367. NUM=052,LET=E @V305238 01367000
  1368. MVI CC+3,X'18' SET RETURN CODE @V305238 01368000
  1369. B END EXIT @V305238 01369000
  1370. ERR70 LR R2,R1 POINT TO PARAMETER @V305238 01370000
  1371. DMSERR TEXT='INVALID PARAMETER ''........''',NUM=070,LET=E, *01371000
  1372. SUB=(CHARA,(R2)) @V305238 01372000
  1373. MVI CC+3,X'18' SET RETURN CODE @V305238 01373000
  1374. B END EXIT @V305238 01374000
  1375. EJECT 01375000
  1376. * 01376000
  1377. ERR74E1 LA R2,SETTING GET MSG FUNCTION @V305238 01377000
  1378. B ERR74GO GO GIVE ERROR MSG @V305238 01378000
  1379. ERR74E2 LA R2,RESETING GET MSG FUNCTION @V305238 01379000
  1380. ERR74GO EQU * @V305238 01380000
  1381. DMSERR NUM=074,TEXT='ERROR ......... AUXILIARY DIRECTORY', *01381000
  1382. LET=E,SUB=(CHARA,(R2)) @V305238 01382000
  1383. MVI CC+3,X'28' SET RETURN CODE @V305238 01383000
  1384. B ERR74RET @V305238 01384000
  1385. ERR75 EQU * @V305238 01385000
  1386. DMSERR TEXT='DEVICE ''........'' ILLEGAL FOR INPUT', @V305238*01386000
  1387. NUM=075,LET=E,SUB=(CHARA,(R2)) @V305238 01387000
  1388. MVI CC+3,X'28' SET RETURN CODE @V305238 01388000
  1389. B RETCMS EXIT @V305238 01389000
  1390. EJECT 01390000
  1391. NUCON @V305238 01391000
  1392. ADT @V305238 01392000
  1393. FSTB @V305238 01393000
  1394. REGEQU @V305238 01394000
  1395. CMSCB @V305238 01395000
  1396. IO @V305238 01396000
  1397. * 01397000
  1398. * 01398000
  1399. UTSAV EQU IOBCSW ADDRESS OF ENTRIES TABLE @V305238 01399000
  1400. * 01400000
  1401. * 01401000
  1402. UTHEAD DSECT @V305238 01402000
  1403. UTCORENT DS H LAST INCORE RECORD NUMBER @V305238 01403000
  1404. UTNXTENT DS H NEXT INCORE RECORD NUMBER @V305238 01404000
  1405. UTTOTENT DS H TOTAL NO. RECS (INCORE AND DISK) @V305238 01405000
  1406. DS H @V305238 01406000
  1407. * 01407000
  1408. * 01408000
  1409. UTENTRY DSECT @V305238 01409000
  1410. DS H @V305238 01410000
  1411. UTRECLN DS H INCORE RECORD LENGTH @V305238 01411000
  1412. UTRECAD DS A INCORE RECORD ADDRESS @V305238 01412000
  1413. ONDISK EQU X'80' RECORD ON DISK IND. @V305238 01413000
  1414. * 01414000
  1415. * 01415000
  1416. EJECT 01416000
  1417. DMSARX CSECT @V305238 01417000
  1418. LTORG @V305238 01418000
  1419. ORG DMSARX+X'1D70' @V305238 01419000
  1420. END 01420000