User Tools

Site Tools


ibm:vm370-lib:cms:dmsasm.assemble_src

DMSASM Source

References

Source Listing

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