User Tools

Site Tools


ibm:vm370-lib:cms:dmsllu.assemble_src

DMSLLU Source

References

Source Listing

DMSLLU.ASSEMBLE.txt
  1. LLU TITLE 'DMSLLU (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * MODULE NAME 00004000
  5. * 00005000
  6. * DMSLLU ( LISTIO ) 00006000
  7. * 00007000
  8. * FUNCTION 00008000
  9. * 00009000
  10. * PROVIDE THE FACILITY TO LIST I/O ASSIGNMENTS OF ONE, 00010000
  11. * SOME, OR ALL LOGICAL UNITS IN THE CMS/DOS SUPPORT. 00011000
  12. * OUTPUT OF THE COMMAND WILL BE DIRECTED TO THE USER'S 00012000
  13. * CONSOLE, OR TO A CMS DISK FILE (EXEC) IF THE 'EXEC' 00013000
  14. * OR 'APPEND' OPTION IS SPECIFIED. 00014000
  15. * 00015000
  16. * ATTRIBUTES 00016000
  17. * 00017000
  18. * DISK RESIDENT MODULE 00018000
  19. * SERIALLY REUSABLE 00019000
  20. * EXECUTES IN TRANSIENT AREA 00020000
  21. * NOTE: LISTIO MUST BE GENMOD'D WITH THE SYSTEM OPTION 00021000
  22. * 00022000
  23. * ENTRY POINTS 00023000
  24. * 00024000
  25. * DMSLLU 00025000
  26. * 00026000
  27. * ENTRY CONDITIONS 00027000
  28. * 00028000
  29. * R1 = PARAMETER LIST 00029000
  30. * 00030000
  31. * DC CL8'LISTIO' COMMAND 00031000
  32. * ONLY ONE MAY BE SPECIFIED... 00032000
  33. * DC CL8'SYSNNN' LIST ONLY ONE LOGICAL UNIT 00033000
  34. * DC CL8'SYS'|'PROG' LIST EITHER SYSTEM OR PROGMRS 00034000
  35. * DC CL8'ALL'|' ' LIST ALL LOGICAL UNITS 00035000
  36. * NONE SPECIFIED MEANS 'ALL' 00036000
  37. * DC CL8'A'|'UA' LIST LOGICAL UNITS WHICH HAVE 00036100
  38. * BEEN ASSIGNED (A) OR UNASSIGNED (UA) 00036200
  39. * DC CL8'(' BEGIN OF OPTIONS IF ANY 00037000
  40. * DC CL8'EXEC' OR 'APPEND' LAST ONE SPECIFIED IS USED 00038000
  41. * DC CL8'STAT' IF DISK, SHOW IF R/O OR R/W 00039000
  42. * 00040000
  43. * OPTIONS 00041000
  44. * 00042000
  45. * EXEC - DIRECT OUTPUT TO CMS DISK WITH FILEID 00043000
  46. * '$LISTIO EXEC A1'. THIS FILE REPLACES 00044000
  47. * ANY OLD FILE BY THAT SAME NAME. 00045000
  48. * 00046000
  49. * THE CONTENTS OF THIS FILE ARE ALMOST 00047000
  50. * THE SAME AS THE OUTPUT TO THE USER'S 00048000
  51. * CONSOLE, EXCEPT THAT THE OUTPUT BUFFER 00049000
  52. * WILL CONTAIN THE DUMMY ARGUMENTS '&1 &2' 00050000
  53. * PRECEDING THE ORIGINAL CONTENTS OF THE 00051000
  54. * BUFFER. 00052000
  55. * 00053000
  56. * APPEND - DIRECT OUTPUT TO AN EXISTING '$LISTIO 00054000
  57. * EXEC A1' IF IT EXISTS, OR CREATES A NEW 00055000
  58. * ONE IF IT DOES NOT EXIST. 00056000
  59. * 00057000
  60. * STAT - IF THE LOGICAL UNIT IS ASSIGNED TO DISK, 00058000
  61. * SHOW IN THE OUTPUT BUFFER IF THE DISK IS 00059000
  62. * ACCESSED R/O OR R/W. 00060000
  63. * 00061000
  64. * EXIT CONDITIONS 00062000
  65. * 00063000
  66. * RETURN TO CALLER WITH RETURN CODE IN R15 00064000
  67. * 00065000
  68. * RETURN CODES AND MESSAGES: 00066000
  69. * 00067000
  70. * 24 - INVALID OPTION SPECIFIED 00068000
  71. * 24 - INVALID PARAMETER SPECIFIED 00069000
  72. * 32 - CMS/DOS ENVIRONMENT NOT ACTIVE 00070000
  73. * 36 - NO READ/WRITE 'A' DISK ACCESSED 00071000
  74. * 100 - ERROR WRITING FILE '$LISTIO EXEC A1' TO DISK 00072000
  75. * 00073000
  76. * CALLS TO OTHER ROUTINES 00074000
  77. * 00075000
  78. * DMSLAD, DMSERR, DMSERS, DMSKEY 00076000
  79. * DMSBWR, DMSCWR, DMSFNS 00077000
  80. * 00078000
  81. * EXTERNAL REFERENCES 00079000
  82. * 00080000
  83. * NUCON, BGCOM, ADT, MAPPUB 00081000
  84. * 00082000
  85. * TABLES/WORK AREAS 00083000
  86. * 00084000
  87. * NONE 00085000
  88. * 00086000
  89. * REGISTER USAGE 00087000
  90. * 00088000
  91. * R0 NUCON ADDRESSABILITY 00089000
  92. * R1 BGCOM, ADT ADDRESSABILITY & PLIST(S) POINTER 00090000
  93. * R2 COMMAND LINE POINTER & WORK 00091000
  94. * R3 POINTER TO NICL TABLE 00092000
  95. * R4 POINTER TO CURRENT UNIT TO BE LISTED 00093000
  96. * R5 COUNTER OF NUMBER SYSTEM UNITS TO LIST 00094000
  97. * R6 COUNTER OF NUMBER PROGMR UNITS TO LIST 00095000
  98. * R7 WORK 00096000
  99. * R8 WORK 00097000
  100. * R9 NOT USED 00098000
  101. * R10 INTERNAL LINKAGE 00099000
  102. * R11 TEMPORARY RETURN CODE 00100000
  103. * R12 DMSLLU ADDRESSABILITY 00101000
  104. * R13 NOT USED 00102000
  105. * R14 EXTERNAL LINKAGE 00103000
  106. * R15 ADDRESS LINKING ROUTINE & RETURN CODE 00104000
  107. * 00105000
  108. * OPERATION 00106000
  109. * 00107000
  110. * 1. SET UP NECESSARY ADDRESSABILITIES AND SAVE 00108000
  111. * THE RETURN REGISTER. ACQUIRE SUPERVISOR KEY 00109000
  112. * AND INITIALIZE REUSABILITY FIELDS. VERIFY IF 00110000
  113. * IN CMS/DOS ENVIRONMENT. 00111000
  114. * 00112000
  115. * 2. CHECK THE COMMAND LINE FOR VALID ARGUMENTS 00113000
  116. * AND OPTIONS. ENSURE THAT IF AN ARGUMENT WAS 00114000
  117. * SPECIFIED, IT IS EITHER 'SYS', 'PROG', 'ALL', 00115000
  118. * OR 'SYSXXX'. IF NO ARGUMENT SPECIFIED, ASSUME 00116000
  119. * 'ALL'. VERIFY THAT IF ANY OPTION IS SPECIFIED 00117000
  120. * IT IS 'EXEC' OR 'APPEND'. 00118000
  121. * 00119000
  122. * 3. IF EITHER 'EXEC' OR 'APPEND' WAS SPECIFIED, CHECK 00120000
  123. * THAT THE 'A' DISK IS READ/WRITE. IF 'EXEC' WAS 00121000
  124. * SPECIFIED, AN ERASE OF ANY OLD '$LISTIO EXEC' ON 00122000
  125. * THE 'A' DISK IS ATTEMPTED. 00123000
  126. * 00124000
  127. * 4. IF EITHER 'SYS' OR 'PROG' WAS SPECIFIED, THE NO. 00125000
  128. * OF LOGICAL UNITS (SYSTEM OR PROGRMR) IS ACQUIRED 00126000
  129. * FROM THE NICL TABLE. THEN, USING THE INFORMATION 00127000
  130. * ON THE LUB AND PUB TABLES, THE OUTPUT BUFFER IS 00128000
  131. * BUILT AND WRITTEN OUT. 00129000
  132. * 00130000
  133. * IF 'ALL' WAS SPECIFIED, THE TOTAL NUMBER OF UNITS 00131000
  134. * (SYSTEM + PROGRMR) IS COMPUTED . 00132000
  135. * 00133000
  136. * IF 'SYSXXX' WAS SPECIFIED, ONLY THAT PARTICULAR 00134000
  137. * LOGICAL UNIT IS LISTED. 00135000
  138. * 00136000
  139. * 5. WHEN ALL PROCESSING HAS BEEN DONE, THE '$LISTIO 00137000
  140. * EXEC' FILE IS CLOSED (IF 'DISK' OR 'APPEND' WAS 00138000
  141. * SPECIFIED. 00139000
  142. * 00140000
  143. * 6. A SWITCH TO PROBLEM PROGRAM KEY IS DONE, AND A 00141000
  144. * RETURN TO THE CALLER IS MADE PASSING IN REG. 15 00142000
  145. * THE RETURN CODE OF THE COMMAND. 00143000
  146. *. 00144000
  147. EJECT 00145000
  148. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00146000
  149. * * 00147000
  150. * INITIALIZATION - ESTABLISH BASE REG., SET UP NUCLEUS * 00148000
  151. * ENVIRONMENT AND VERIFY CMS IS IN DOS ENVIRONMENT. * 00149000
  152. * * 00150000
  153. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00151000
  154. SPACE 2 00152000
  155. DMSLLU CSECT @V305001 00153000
  156. USING DMSLLU,R12 @V305001 00154000
  157. USING NUCON,R0 @V305001 00155000
  158. LR R12,R15 SET UP BASE REGISTER @V305001 00156000
  159. ST R14,SAVE14 SAVE RETURN REGISTER @V305001 00157000
  160. TM DOSFLAGS,DOSMODE ARE WE IN DOS MODE ? @V305001 00158000
  161. BZ ERR099 NO, ERROR @V305001 00159000
  162. XC REQSW(2),REQSW CLEAR REQSW AND LIOSW @VA04410 00160000
  163. EJECT 00161000
  164. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00162000
  165. * * 00163000
  166. * SCAN THE COMMAND LINE FOR ERRORS. SET PROPER FLAGS TO * 00164000
  167. * DETERMINE IS 'SYS', 'PROG', 'EXEC', OR 'APPEND' WHERE * 00165000
  168. * SPECIFIED. 'EXEC' AND 'APPEND' ARE MUTUALLY EXCLUSIVE. * 00166000
  169. * * 00167000
  170. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00168000
  171. SPACE 2 00169000
  172. LA R2,8(,R1) POINT TO 1ST. PARAM @V305001 00170000
  173. CLI 0(R2),FENCE LISTIO WITH NO PARAMETERS ? @V305001 00171000
  174. BE LIOALL YES, GO PROCESS ALL @V305001 00172000
  175. CLI 0(R2),LPAR LISTIO WITH OPTIONS ONLY ? @V305001 00173000
  176. BE CHKOPTS2 YES, GO PROCESS OPTIONS @V305001 00174000
  177. ST R2,SAVEPTR SAVE PTR TO 1ST. PARAMETER @V305001 00175000
  178. CLC ALL,0(R2) LISTIO ALL ? @V305001 00176000
  179. BE CHKOPTS YES, BRANCH @V305001 00177000
  180. CLC A,0(R2) LISTIO A (ASSIGNED) @VA04310 00177100
  181. BE ASSIGNED YES, JUST LIST ASSIGNED LOG UNITS@VA04310 00177200
  182. CLC UA,0(R2) LISTIO UA (UNASSIGNED) @VA04310 00177300
  183. BE UNASGN YES, LIST UNASSIGNED LOG UNITS @VA04310 00177400
  184. CLC SYS,0(R2) LISTIO SYS ? @V305001 00178000
  185. BE LIOSYS YES, BRANCH @V305001 00179000
  186. CLC PROG,0(R2) LISTIO PROG ? @V305001 00180000
  187. BNE ERR070 NO, INVALID PARAMETER @V305001 00181000
  188. OI LIOSW,PROGF SET PROG FLAG @V305001 00182000
  189. B CHKOPTS GO CHECK OPTIONS @V305001 00183000
  190. ASSIGNED OI LIOSW,ASSGN ASSIGNED @VA04310 00183100
  191. B CHKOPTS CHECK IF ANY OPTIONS @VA04310 00183200
  192. UNASGN OI LIOSW,NOTASGN UNASSIGNED @VA04310 00183300
  193. B CHKOPTS CHECK IF ANY OPTIONS @VA04310 00183400
  194. LIOSYS OI LIOSW,SYSF SET SYS FLAG @V305001 00184000
  195. CHKOPTS LA R2,8(,R2) BUMP TO NEXT PARAM @V305001 00185000
  196. CLI 0(R2),FENCE NO OPTIONS ? @V305001 00186000
  197. BE LIOALL NO, DON'T CHECK ANYMORE @V305001 00187000
  198. CLI 0(R2),LPAR IS IT LEFT PARENS ? @V305001 00188000
  199. BNE ERR070 NO, ERROR @V305001 00189000
  200. CHKOPTS2 LA R2,8(,R2) BUMP TO NEXT PARAM @V305001 00190000
  201. CLC EXEC,0(R2) IS IT EXEC OPTION ? @V305001 00191000
  202. BNE LIOAPPND NO, CHECK FOR APPEND @V305001 00192000
  203. NI LIOSW,255-APPENDF CLEAR APPENDF IF ON @VM03227 00193000
  204. OI LIOSW,EXECF SET EXEC FLAG @V305001 00194000
  205. B LIONXT DO ONE MORE CHECK @V305001 00195000
  206. LIOAPPND CLC APPEND,0(R2) IT IT APPEND OPTION ? @V305001 00196000
  207. BNE LIOSTAT NO, CHECK FOR STAT @VM03227 00197000
  208. NI LIOSW,255-EXECF CLEAR EXECF IF ON @VM03227 00198000
  209. OI LIOSW,APPENDF SET APPEND FLAG @V305001 00199000
  210. B LIONXT GO CHECK FOR MORE OPTIONS @VM03227 00200000
  211. LIOSTAT CLC STAT,0(R2) IS IT STAT OPTION ? @VM03227 00201000
  212. BNE ERR003 NO, INVALID OPTION @VM03227 00202000
  213. OI LIOSW,STATF SET STAT FLAG @VM03227 00203000
  214. LIONXT CLI 8(R2),RPAR IS IT RIGHT PARENS ? @VM03227 00204000
  215. BE LIOALL YES, ALL DONE WITH LINE @VM03227 00205000
  216. CLI 8(R2),FENCE IS IT FENCE THEN ? @VM03227 00206000
  217. BNE CHKOPTS2 NO, CHECK AS OPTION @VM03227 00207000
  218. EJECT 00208000
  219. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00209000
  220. * * 00210000
  221. * DETERMINE IF USER WANTS ALL SYSTEM UNITS, OR ALL PRO- * 00211000
  222. * GRAMMER UNITS, OR A SPECIFIED SYSTEM OR PRGMR UNIT, OR * 00212000
  223. * HE WANTS ALL UNITS. SET UP PROPER REGISTERS FOR USE BY * 00213000
  224. * LIOCOM1 OR LIOCOM2 TO FIND LUB/PUB FOR UNIT AND THE * 00214000
  225. * NUMBER OF UNITS THE USER WANTS LISTED. * 00215000
  226. * * 00216000
  227. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00217000
  228. SPACE 2 00218000
  229. USING BGCOM,R1 @V305001 00219000
  230. LIOALL L R1,ASYSREF GET COMM. REGION ADDR. @V305001 00220000
  231. LH R2,LUBPT GET LUB TABLE ADDR. @V305001 00221000
  232. LH R3,NICLPT POINT TO NICL TABLE @V305001 00222000
  233. SR R4,R4 START FROM FIRST UNIT @V305001 00223000
  234. SR R5,R5 ... @V305001 00224000
  235. SR R6,R6 ... @V305001 00225000
  236. TM LIOSW,PROGF+SYSF USER WANTS ALL UNITS ? @V305001 00226000
  237. BNZ LIOPROG NO, BRANCH @V305001 00227000
  238. IC R5,0(,R3) GET NUMBER SYSTEM UNITS @V305001 00228000
  239. IC R6,1(,R3) GET NUMBER PROGMR UNITS @V305001 00229000
  240. B LIOCOM1 START WITH SYSTEM UNITS @V305001 00230000
  241. LIOPROG TM LIOSW,PROGF USER WANTS PROG UNITS ? @V305001 00231000
  242. BNO LIOSYSU NO, BRANCH @V305001 00232000
  243. IC R6,1(,R3) GET NUMBER PROGMR UNITS @V305001 00233000
  244. B LIOCOM2 START WITH PROGMR UNITS @V305001 00234000
  245. LIOSYSU L R8,SAVEPTR RESTORE PNTR 1ST. ARG @V305001 00235000
  246. CLI 3(R8),BLANK SPECIFIED SYSXXX ? @V305001 00236000
  247. BNE LIOSYSX YES, BRANCH @V305001 00237000
  248. IC R5,0(,R3) GET NUMBER SYSTEM UNITS @V305001 00238000
  249. B LIOCOM1 START WITH SYSTEM UNITS @V305001 00239000
  250. EJECT 00240000
  251. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00241000
  252. * * 00242000
  253. * PROCESS A SPECIFIED SYSTEM OR PROGRAMMER LOGICAL UNIT. * 00243000
  254. * USER MUST SPECIFY WHICH SYSXXX HE WANTS LISTED. * 00244000
  255. * * 00245000
  256. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00246000
  257. SPACE 2 00247000
  258. LIOSYSX CLC 3(3,R8),=CL3'000' IS IT SYSTEM UNIT ? @V305001 00248000
  259. BL SYSUNIT LOOKS LIKE IT, BRANCH @V305001 00249000
  260. CLC 3(3,R8),=CL3'241' EXCEEDS MAX PROG UNIT ? @V305066 00250000
  261. BNH PROGOK NO, BRANCH @V305001 00251000
  262. LR R2,R8 MSG SUBSTITUTION REG @V305001 00252000
  263. B ERR070 INVALID PARAMETER @V305001 00253000
  264. PROGOK PACK WORK(8),3(3,R8) PACK THE UNIT NO. @V305001 00254000
  265. CVB R4,WORK NOW CONVERT TO BINARY @V305001 00255000
  266. LA R6,ONE JUST LIST THIS UNIT @V305066 00256000
  267. B LIOCOM2 GO LIST PROG UNIT @V305001 00257000
  268. SYSUNIT CLC SIN,3(R8) IS UNIT SYSIN ? @V305001 00258000
  269. BE SYSIN YES, BRANCH @V305001 00259000
  270. CLC SOUT,3(R8) IS UNIT SYSOUT ? @V305001 00260000
  271. BNE SYSCOMM NO, BRANCH @V305001 00261000
  272. LA R4,TWO POINT TO SYSPCH UNIT @V305066 00262000
  273. SYSIN LA R5,TWO JUST LIST 2 UNITS @V305066 00263000
  274. B LIOCOM1 GO LIST UNITS @V305001 00264000
  275. SYSCOMM LA R7,SYSTAB POINT TO SYS UNITS @V305001 00265000
  276. LA R5,LSYSTAB GET NUMBER ENTRIES @V305001 00266000
  277. SYSLUP CLC 3(4,R8),0(R7) FOUND A MATCH ? @V305001 00267000
  278. BE SYSOK YES, GET OUT OF LOOP @V305001 00268000
  279. LA R4,1(,R4) POINT TO NEXT UNIT @V305001 00269000
  280. LA R7,4(,R7) DITTO.... @V305001 00270000
  281. BCT R5,SYSLUP KEEP LOOKING @V305001 00271000
  282. LR R2,R8 IF HERE MUST BE NO MATCH @V305001 00272000
  283. B ERR070 GO GIVE ERROR @V305001 00273000
  284. SYSOK LA R5,ONE JUST LIST THIS UNIT @V305066 00274000
  285. EJECT 00275000
  286. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00276000
  287. * * 00277000
  288. * PROCESS SYSTEM LOGICAL UNITS FROM LABEL LIOCOM1, OR PRO- * 00278000
  289. * GRAMMER LOGICAL UNITS FROM LABEL LIOCOM2. BOTH ROUTINES * 00279000
  290. * USE LIOCOM3 TO FIND THE PUB AND LIST THE SPECIFIED UNIT. * 00280000
  291. * WHEN THE SPECIFIED UNITS ARE LISTED, THE $LISTIO EXEC * 00281000
  292. * FILE IS CLOSED, AND LISTIO RETURNS TO ITS CALLER. * 00282000
  293. * * 00283000
  294. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00284000
  295. SPACE 2 00285000
  296. LIOCOM1 LR R7,R4 SAVE STARTING UNIT @V305001 00286000
  297. SLL R7,2 MULTIPLY BY 4 @V305001 00287000
  298. LA R8,SYSTAB(R7) POINT TO PROPER SYS UNIT @V305001 00288000
  299. MVC UNIT,0(R8) MOVE UNIT TO BUFFER @V305001 00289000
  300. SRL R7,1 SET FOR LUB INDEX @V305001 00290000
  301. BAL R10,LIOCOM3 GO FIND DEVICE AND DO I/O @V305001 00291000
  302. LA R4,1(,R4) POINT TO NEXT UNIT @V305001 00292000
  303. BCT R5,LIOCOM1 LOOP IF MORE UNITS @V305001 00293000
  304. SR R4,R4 PREPARE JUST IN CASE ALL @V305001 00294000
  305. SPACE 1 00295000
  306. LIOCOM2 LTR R6,R6 ANY PROGMR UNITS @V305001 00296000
  307. BZ LIODONE NO, ALL DONE @V305001 00297000
  308. LIOCOM2A LR R7,R4 SAVE START UNIT @V305001 00298000
  309. CVD R7,WORK CONVERT TO DECIMAL @V305001 00299000
  310. UNPK UNIT(3),WORK(8) UNPACK TO BUFFER @V305001 00300000
  311. OI UNIT+2,ZONE SET LAST ZONE @V305066 00301000
  312. SR R8,R8 ... @V305001 00302000
  313. IC R8,0(,R3) GET NUMBER SYS UNITS @V305001 00303000
  314. AR R7,R8 PREPARE LUB INDEX @V305001 00304000
  315. SLL R7,1 FOR PUB FIND @V305001 00305000
  316. BAL R10,LIOCOM3 GO FIND DEVICE AND DO I/O @V305001 00306000
  317. LA R4,1(,R4) POINT TO NEXT UNIT @V305001 00307000
  318. BCT R6,LIOCOM2A LOOP IF MORE UNITS @V305001 00308000
  319. LIODONE SR R11,R11 ZERO RETURN CODE @V305001 00309000
  320. LIOEXIT TM LIOSW,EXECF+APPENDF EXEC OR APPEND SPECIFIED ? @V305001 00310000
  321. BZ LIOOUT NO, JUST RETURN @V305001 00311000
  322. TM LIOSW,ASSGN REQ FOR ASSIGN @VA04410 00312000
  323. BO CHKSW YES, SEE IF 'EXEC' OPTION @VA04410 00312100
  324. TM LIOSW,NOTASGN REQUEST FOR UNASSIGN? @VA04410 00312200
  325. BO CHKSW YES, SEE IF 'EXEC' OPTION @VA04410 00312300
  326. FINIS LA R1,DSKLST PREPARE TO CLOSE '$LISTIO EXEC' @VA04410 00312400
  327. L R15,AFINIS GET DMSFNS ADDRESS @V305001 00313000
  328. BALR R14,R15 GO FINIS OUR FILE @V305001 00314000
  329. LIOOUT TM LIOSW,ASSGN+NOTASGN REQ FOR 'A' OR 'UA'? @VA04410 00315000
  330. BZ LIOOUT2 CONTINUE EXIT @VA04410 00315100
  331. TM REQSW,REQON ANY SYSXXX SATISFIED REQUEST? @VA04410 00315200
  332. BO LIOOUT2 YES, GET OUT @VA04410 00315300
  333. B ERR303 NO, INDICATE ERROR @VA04410 00315400
  334. LIOOUT2 LR R15,R11 RETURN CODE TO R15 @VA04410 00315500
  335. RETURN L R14,SAVE14 RESTORE R14 FOR EXIT @VA04410 00316000
  336. BR R14 RETURN TO CALLER @V305001 00317000
  337. CHKSW TM REQSW,REQON '$LISTIO EXEC' WRITTEN TO YET? @VA04410 00317100
  338. BO FINIS YES, CLOSE EXEC FILE @VA04410 00317200
  339. B ERR303 GO PRINT ERROR MSG @VA04410 00317300
  340. EJECT 00318000
  341. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00319000
  342. * * 00320000
  343. * FIND PUB FOR SPECIFIED UNIT, PREPARE BUFFER FOR OUTPUT * 00321000
  344. * AND EITHER CALL CMS'S TYPLIN OR WRBUF ROUTINES TO PERFORM * 00322000
  345. * PROPER I/O. WRBUF IS CALLED IF EXEC OR APPEND HAVE BEEN * 00323000
  346. * SPECIFIED BY THE USER. * 00324000
  347. * * 00325000
  348. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00326000
  349. SPACE 2 00327000
  350. USING PUBADR,R7 @V305001 00328000
  351. LIOCOM3 MVC DEVTYP(20),BLANKS BLANK SOME OF BUFFER @V305001 00329000
  352. AH R7,LUBPT POINT TO PROPER LUB ENTRY @V305001 00330000
  353. LA R8,UA JUST IN CASE UNASSIGNED @V305001 00331000
  354. TM 0(R7),UNASSGN UNIT UNASSIGNED ? @V305066 00332000
  355. BO LIOCOM4A UNASSIGNED @VA04310 00333000
  356. LA R8,IGN JUST IN CASE IGN @V305001 00334000
  357. TM 0(R7),IGNORE INIT ASSIGNED TO IGNORE ? @V305066 00335000
  358. BO LIOCOM4 YES, BRANCH @V305001 00336000
  359. TM LIOSW,NOTASGN UNASSGN REQUEST? @VA04410 00336100
  360. BO CHKEXEC SEE IF 'EXEC' OPTION @VA04410 00336200
  361. CONTINUE LH R7,0(,R7) LUB ENTRY TO R7 @VA04410 00337000
  362. SRL R7,8 MOVE OUT LAST BYTE @V305001 00338000
  363. SLL R7,3 MULTIPLY INDEX BY 8 @V305001 00339000
  364. AH R7,PUBPT POINT TO PROPER LUB @V305001 00340000
  365. SR R8,R8 CLEAR REG. @V305001 00341000
  366. IC R8,PUBDEVT GET DEVICE TYPE CODE @V305001 00342000
  367. SRL R8,4 SHIFT OUT LAST 4 BITS @V305001 00343000
  368. CH R8,=H'6' WITHIN RANGE SUPPORTED ? @V305001 00344000
  369. BH LIOUNK OUT OF RANGE, UNKNOWN UNIT @V305001 00345000
  370. SLL R8,3 SET INDEX TO DEVICE TABLE @V305001 00346000
  371. LA R8,DEVTAB(R8) POINT TO CORRECT DEVICE @V305001 00347000
  372. LIOCOM4 MVC DEVTYP,0(R8) MOVE DEVICE TO BUFFER @V305001 00348000
  373. CLC DEVTYP,DISK IS DEVICE DISK ? @V305001 00349000
  374. BNE LIOTAP NO, BRANCH @V305001 00350000
  375. MVC DEVTYP(1),PUBDSKM MOVE DISK MODE TO BUFFER @VM03227 00351000
  376. MVC DEVTYP+1(3),BLANKS AND BLANK OUT REST OF DEVTYP@VM03227 00352000
  377. TM LIOSW,STATF WAS STAT OPTION SPECIFIED ? @VM03227 00353000
  378. BZ LIOCOM5 NO, GO PERFORM I/O @VM03227 00354000
  379. MVC DEVID,=CL4'R/W' INITIALIZE DISK MODE TO R/W @VM03227 00355000
  380. LA R1,DEVTYP-24 GET ADTLKP PLIST @VM03227 00356000
  381. L R15,VCADTLKP GET DMSLAD ADDRESS @VM03227 00357000
  382. BALR R14,R15 GET DISK ADT @VM03227 00358000
  383. USING ADTSECT,R1 @VM03227 00359000
  384. TM ADTFLG1,ADTFRW IS IT CMS DISK R/W ? @VM03227 00360000
  385. BO LIOCOM5 YES, GO PERFORM I/O @VM03227 00361000
  386. TM ADTFLG3,ADTFRWOS IS IT DOS/OS DISK R/W ? @VM03227 00362000
  387. BO LIOCOM5 YES, GO PERFORM I/O @VM03227 00363000
  388. MVC DEVID,=CL4'R/O' THEN INITIALIZE TO R/O @VM03227 00364000
  389. B LIOCOM5 GO PERFORM I/O @V305001 00365000
  390. LIOCOM4A MVC DEVTYP,0(R8) DEVTYPE TO BUFFER @VA04410 00365050
  391. TM LIOSW,EXECF EXEC OPTION SPECIFIED? @VA04410 00365100
  392. BO LIOCOM5 YES, KEEP GOING @VA04410 00365150
  393. TM LIOSW,ASSGN REQUEST FOR ASSIGNED? @VA04410 00365200
  394. BCR 1,R10 YES, RETURN TO CALLER @VA04410 00365250
  395. B LIOCOM5 KEEP GOING @VA04410 00365300
  396. CHKEXEC TM LIOSW,EXECF EXEC OPTION SPECIFIED? @VA04410 00365350
  397. BO CONTINUE YES, KEEP GOING @VA04410 00365400
  398. BR R10 RETURN TO CALLER @VA04410 00365450
  399. LIOUNK LA R8,UNKNOWN SET UNKNOWN DEVICE @V305001 00366000
  400. B LIOCOM4 BRANCH ABOVE @V305001 00367000
  401. LIOTAP CLC DEVTYP,TAPE IS DEVICE TAPE ? @V305001 00368000
  402. BNE LIOCOM5 NO, BRANCH @V305001 00369000
  403. XC WORK,WORK ZERO WORK AREA @V305001 00370000
  404. LH R8,PUBCUU GET DEVICE ADDRESS @V305001 00371000
  405. SLL R8,4 MOVE ONE BYTE LEFT @V305001 00372000
  406. ST R8,WORK+4 SAVE IN WORK AREA @V305001 00373000
  407. OI WORK+7,SIGN SUPPLY A SIGN TO UNPACK @V305066 00374000
  408. UNPK DEVTYP+3(1),WORK+7(1) UNPACK LAST BYTE CUU @VM03227 00375000
  409. OI DEVTYP+3,ZONE AND ZONE THE DIGIT @VM03227 00376000
  410. DROP R1,R7 @V305001 00377000
  411. EJECT 00378000
  412. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00379000
  413. * * 00380000
  414. * DETRMINES IF TYPLIN OR WRBUF ROUTINE SHOULD BE CALLED. * 00381000
  415. * IF EXEC OPTION SPECIFIED, ANY OLD $LISTIO EXEC FILE IS * 00382000
  416. * ERASED FROM THE USER'S A DISK (USER'S A DISK MUST BE R/W). * 00383000
  417. * IF APPEND OPTION SPECIFIED, ANY NEW RECORDS ARE APPENDED * 00384000
  418. * TO THE END OF AN EXISTING $LISTIO EXEC. IF NO $LISTIO * 00385000
  419. * EXEC EXISTS, A NEW $LISTIO EXEC IS CREATED. * 00386000
  420. * * 00387000
  421. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00388000
  422. SPACE 2 00389000
  423. LIOCOM5 L R7,ASYSREF GET COMM. REGION ADDR. @VM03227 00390000
  424. TM LIOSW,EXECF+APPENDF EXEC OR APPEND SPECIFIED ? @V305001 00391000
  425. BNZ DISKIO YES, DO I/O TO DISK @V305001 00392000
  426. TM LIOSW,ASSGN+NOTASGN REQ FOR 'A' OR 'UA'? @VA04410 00393100
  427. BZ TYPELINE TYPE TO CONSOLE @VA04410 00393200
  428. OI REQSW,REQON IND. REQUEST SATISFIED @VA04410 00393300
  429. TYPELINE LA R1,TYPLST GET TYPLIN PLIST @VA04410 00393400
  430. SVC 202 TYPE LINE TO CONSOLE @V305001 00394000
  431. DC AL4(*+4) ... @V305001 00395000
  432. LR R1,R7 RESTORE REG. 1 @V305001 00396000
  433. BR R10 RETURN TO CALLER @V305001 00397000
  434. SPACE 1 00398000
  435. DISKIO TM LIOSW,PASS1 PAST INITIALIZATION ? @V305001 00399000
  436. BO AORUA YES, BRANCH @VA04410 00400000
  437. LA R1,MODE-24 GET ADTLKP PLIST @V305001 00401000
  438. L R15,VCADTLKP GET DMSLAD ADDRESS @VM03093 00402000
  439. BALR R14,R15 GET A-DISK ADT @V305001 00403000
  440. USING ADTSECT,R1 @V305001 00404000
  441. TM ADTFLG1,ADTFRW IS A-DISK R/W ? @V305001 00405000
  442. BNO ERR006 NO, ERROR @V305001 00406000
  443. DROP R1 @V305001 00407000
  444. TM LIOSW,APPENDF APPEND SPECIFIED ? @V305001 00408000
  445. BO SETPASS1 YES, BRANCH @V305001 00409000
  446. LA R1,DSKLST GET ERASE PLIST @V305001 00410000
  447. L R15,AERASE GET DMSERS ADDRESS @V305001 00411000
  448. BALR R14,R15 ERASE ANY OLD FILE @V305001 00412000
  449. SETPASS1 OI LIOSW,PASS1 SET 1ST. PASS FLAG @V305001 00413000
  450. SPACE 1 00414000
  451. AORUA TM LIOSW,ASSGN REQ FOR ASSIGNED? @VA04410 00415000
  452. BO UAORIGN YES, MAKE SURE NOT UA OR IGN @VA04410 00415100
  453. TM LIOSW,NOTASGN REQUEST FOR UNASSIGNED? @VA04410 00415200
  454. BO CHKUA MAKE SURE LOG UNIT UA @VA04410 00415300
  455. WRITEIT LA R1,DSKLST GET WRBUF PLIST @VA04410 00415400
  456. L R15,AWRBUF GET DMSBWR ADDRESS @V305001 00416000
  457. BALR R14,R15 GO WRITE BUFFER @V305001 00417000
  458. LTR R15,R15 ANY ERRORS ? @V305001 00418000
  459. BNZ ERR105 YES, BRANCH TO ERROR @V305001 00419000
  460. LR R1,R7 RESTORE REG. 1 @V305001 00420000
  461. BR R10 RETURN TO CALLER @V305001 00421000
  462. UAORIGN CLC DEVTYP,UA LOG UNIT UNASSIGNED? @VA04410 00421050
  463. BE NOPRINT DO NOT PUT TO '$LISTIO EXEC' @VA04410 00421100
  464. CLC DEVTYP,IGN LOG UNIT 'IGN'? @VA04410 00421150
  465. BE NOPRINT DO NOT PUT TO '$LISTIO EXEC' @VA04410 00421200
  466. OI REQSW,REQON IND. WRITTEN TO '$LISTIO EXEC' @VA04410 00421250
  467. B WRITEIT BRANCH TO WRITE TO '$LISTIO EXEC'@VA04410 00421300
  468. NOPRINT LR R1,R7 RESTORE REG 1 @VA04410 00421350
  469. BR R10 RETURN TO CALLER @VA04410 00421400
  470. CHKUA CLC DEVTYP,UA LOG UNIT UNASSIGNED? @VA04410 00421450
  471. BNE NOPRINT DO NOT PUT TO '$LISTIO EXEC' @VA04410 00421500
  472. OI REQSW,REQON IND. WRITTEN TO '$LISTIO EXEC' @VA04410 00421550
  473. B WRITEIT WRITE TO '$LISTIO EXEC' @VA04410 00421600
  474. EJECT 00422000
  475. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00423000
  476. * * 00424000
  477. * EQUATES, SAVE AREAS, AND ARGUMENT/OPTIONS CONSTANTS. * 00425000
  478. * * 00426000
  479. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00427000
  480. SPACE 2 00428000
  481. FENCE EQU X'FF' CMS PLIST FENCE @V305001 00429000
  482. LPAR EQU C'(' LEFT PARENS @V305001 00430000
  483. RPAR EQU C')' RIGHT PARENS @V305001 00431000
  484. BLANK EQU C' ' BLANK CODE @V305001 00432000
  485. UNASSGN EQU X'FF' UNIT UNASSIGNED @V305066 00433000
  486. IGNORE EQU X'FE' UNIT ASSIGNED TO IGNORE @V305066 00434000
  487. ZONE EQU X'F0' ZONE CODE @V305066 00435000
  488. SIGN EQU X'0C' SIGN CODE @V305066 00436000
  489. ONE EQU 1 CONSTANT @V305066 00437000
  490. TWO EQU 2 CONSTANT @V305066 00438000
  491. RC24 EQU 24 RETURN CODE @V305066 00439000
  492. RC36 EQU 36 RETURN CODE @V305066 00440000
  493. RC40 EQU 40 RETURN CODE @V305066 00441000
  494. RC100 EQU 100 RETURN CODE @V305066 00442000
  495. TWENTY8 EQU 28 @VA04410 00442100
  496. * 00443000
  497. WORK DS D CVD/UNPK WORK AREA @V305001 00444000
  498. SAVE14 DS F SAVE RETURN REGISTER @V305001 00445000
  499. SAVEPTR DS F SAVE PNTR 1ST. ARGUMENT @V305001 00446000
  500. * 00446100
  501. REQSW DS X INTERNAL SWITCH @VA04410 00446200
  502. REQON EQU X'80' SOMETHG WRITTEN TO '$LISTIO EXEC'@V305001 00446300
  503. * 00447000
  504. LIOSW DS X INTERNAL SWITCH @V305001 00448000
  505. * 00449000
  506. * LIOSW FLAG SETTINGS 00450000
  507. * 00451000
  508. PROGF EQU X'80' PROG FLAG @V305001 00452000
  509. SYSF EQU X'40' SYS FLAG @V305001 00453000
  510. EXECF EQU X'20' EXEC FLAG @V305001 00454000
  511. APPENDF EQU X'10' APPEND FLAG @V305001 00455000
  512. PASS1 EQU X'08' @V305001 00456000
  513. STATF EQU X'04' STAT FLAG @VM03227 00457000
  514. ASSGN EQU X'02' ASSIGN FLAG @VA04310 00457100
  515. NOTASGN EQU X'01' UNASSIGN FLAG @VA04310 00457200
  516. * 00458000
  517. SYS DC CL3'SYS' FUNCTION @V305001 00459000
  518. ALL DC CL8'ALL' FUNCTION @V305001 00460000
  519. PROG DC CL8'PROG' FUNCTION @V305001 00461000
  520. EXEC DC CL8'EXEC' OPTION @V305001 00462000
  521. APPEND DC CL8'APPEND' OPTION @V305001 00463000
  522. STAT DC CL8'STAT' OPTION @VM03227 00464000
  523. A DC CL8'A' FUNCTION @VA04310 00464100
  524. EJECT 00465000
  525. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00466000
  526. * * 00467000
  527. * TABLES FOR SYSTEM LOGICAL UNITS (SYSTAB) AND FOR VALID * 00468000
  528. * DEVICE TYPES (DEVTAB). * 00469000
  529. * * 00470000
  530. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00471000
  531. SPACE 2 00472000
  532. SYSTAB DS 0H @V305001 00473000
  533. DC CL4'RDR' ... @V305001 00474000
  534. DC CL4'IPT' ... @V305001 00475000
  535. DC CL4'PCH' ... @V305001 00476000
  536. DC CL4'LST' ... @V305001 00477000
  537. DC CL4'LOG' ... @V305001 00478000
  538. DC CL4'LNK' ... @V305001 00479000
  539. DC CL4'RES' ... @V305001 00480000
  540. DC CL4'SLB' ... @V305001 00481000
  541. DC CL4'RLB' ... @V305001 00482000
  542. DC CL4'USE' ... @V305001 00483000
  543. DC CL4'REC' ... @V305001 00484000
  544. DC CL4'CLB' ... @V305001 00485000
  545. DC CL4'VIS' ... @V305001 00486000
  546. DC CL4'CAT' ... @V305001 00487000
  547. LSYSTAB EQU (*-SYSTAB)/4 NUMBER ITEM IN SYSTAB @V305001 00488000
  548. SPACE 1 00489000
  549. SIN DC CL4'IN' ... @V305001 00490000
  550. SOUT DC CL4'OUT' ... @V305001 00491000
  551. SPACE 1 00492000
  552. DEVTAB DS 0H @V305001 00493000
  553. DC CL8'TERMINAL' ... @V305001 00494000
  554. DC CL8'READER' ... @V305001 00495000
  555. DC CL8'PUNCH' ... @V305001 00496000
  556. UNKNOWN DC CL8'UNKNOWN' ... @V305001 00497000
  557. DC CL8'PRINTER' ... @V305001 00498000
  558. TAPE DC CL8'TAPE' ... @V305001 00499000
  559. DISK DC CL8'DISK' ... @V305001 00500000
  560. SPACE 1 00501000
  561. UA DC CL8'UA' ... @V305001 00502000
  562. IGN DC CL8'IGN' ... @V305001 00503000
  563. EJECT 00504000
  564. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00505000
  565. * * 00506000
  566. * OUTPUT BUFFER, TYPLIN PLIST AND WRBUF PLIST * 00507000
  567. * * 00508000
  568. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00509000
  569. SPACE 2 00510000
  570. DS 0D @V305001 00511000
  571. BUFF1 DC CL6' &&1 &&2' ONLY USED FOR EXEC/APPEND @V305001 00512000
  572. BUFF2 DC CL4' SYS' SYS PREFIX OF LOGICAL UNIT @V305001 00513000
  573. UNIT DC CL4' ' XXX PREFIX OF LOGICAL UNIT @V305001 00514000
  574. DC CL1' ' ... @V305001 00515000
  575. DEVTYP DC CL8' ' DEVICE TYPE IN EBCDIC @V305001 00516000
  576. DC CL2' ' ... @V305001 00517000
  577. DEVID DC CL4' ' R/O OR R/W (AS DISK ACCESSED) @VM03227 00518000
  578. BLANKS DC CL57' ' BUFFER PAD @V305001 00519000
  579. SPACE 1 00520000
  580. DS 0D @V305001 00521000
  581. TYPLST DC CL8'TYPLIN' COMMAND @V305001 00522000
  582. DC AL1(1),AL3(BUFF2) FLAG AND BUFFER ADDR @V305001 00523000
  583. DC CL1'B',AL3(80) FLAG AND BUFFER LEN @V305001 00524000
  584. SPACE 1 00525000
  585. DS 0D @V305001 00526000
  586. DSKLST DC CL8' ' COMMAND @V305001 00527000
  587. DC CL8'$LISTIO' FILE NAME @V305001 00528000
  588. DC CL8'EXEC' FILE TYPE @V305001 00529000
  589. MODE DC CL2'A1' FILE MODE @V305001 00530000
  590. DC H'0' ITEM NUMBER @V305001 00531000
  591. DC A(BUFF1) BUFFER ADDRESS @V305001 00532000
  592. DC F'80' ITEM LENGTH @V305001 00533000
  593. DC CL2'F' FIXED FORMAT CODE @V305001 00534000
  594. DC H'1' NUMBER OF ITEMS @V305001 00535000
  595. EJECT 00536000
  596. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00537000
  597. * * 00538000
  598. * ERROR MESSAGES * 00539000
  599. * * 00540000
  600. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00541000
  601. SPACE 2 00542000
  602. ERR003 EQU * @V305001 00543000
  603. DMSERR TEXT='INVALID OPTION ''........''',LET=E,NUM=003, *00544000
  604. SUB=(CHARA,(R2)) @V305001 00545000
  605. LA R11,RC24 RETURN CODE = 24 @V305066 00546000
  606. B LIOOUT2 GET OUT @VA04410 00547000
  607. SPACE 1 00548000
  608. ERR006 EQU * @V305001 00549000
  609. DMSERR TEXT='NO READ/WRITE ''A'' DISK ACCESSED',LET=E,NUM=006 00550000
  610. LA R11,RC36 RETURN CODE = 36 @V305066 00551000
  611. B LIOOUT2 GET OUT @VA04410 00552000
  612. EJECT 00553000
  613. ERR070 EQU * @V305001 00554000
  614. DMSERR TEXT='INVALID PARAMETER ''........''',LET=E,NUM=070, *00555000
  615. SUB=(CHARA,(R2)) @V305001 00556000
  616. LA R11,RC24 RETURN CODE = 24 @V305066 00557000
  617. B LIOOUT2 GET OUT @VA04410 00558000
  618. SPACE 1 00559000
  619. ERR105 LR R2,R15 ERROR CODE TO R2 @V305001 00560000
  620. DMSERR TEXT='ERROR ''..'' WRITING FILE ''$LISTIO EXEC A1'' ON *00561000
  621. DISK',LET=S,NUM=105,SUB=(DEC,(R2)) @V305001 00562000
  622. LA R11,RC100 RETURN CODE = 100 @V305066 00563000
  623. TM LIOSW,EXECF+APPENDF EXEC OR APPEND SPECIFIED? @VA04410 00564000
  624. BZ LIOOUT2 GET OUT @VA04410 00564100
  625. LA R1,DSKLST PREPARE TO FINIS FILE @VA04410 00564200
  626. L R15,AFINIS CALL FINIS @VA04410 00564300
  627. BALR R14,R15 BRANCH @VA04410 00564400
  628. B LIOOUT2 GET OUT @VA04410 00564500
  629. SPACE 1 00565000
  630. ERR099 EQU * @V305001 00566000
  631. DMSERR TEXT='CMS/DOS ENVIRONMENT NOT ACTIVE',LET=E,NUM=099 00567000
  632. LA R11,RC40 RETURN CODE = 40 @V305066 00568000
  633. B LIOOUT2 GET OUT @VA04410 00569000
  634. ERR303 EQU * @VA04410 00569100
  635. DMSERR TEXT='NO SYSXXX SATISFIES REQUEST', @VA04410*00569200
  636. NUM=303,LET=E @VA04410 00569300
  637. LA R15,TWENTY8 RC = 28 @VA04410 00569400
  638. B RETURN EXIT @VA04410 00569500
  639. EJECT 00570000
  640. NUCON @V305001 00571000
  641. BGCOM @V305001 00572000
  642. ADT @V305001 00573000
  643. MAPPUB @V305001 00574000
  644. REGEQU @V305001 00575000
  645. END 00576000
ibm/vm370-lib/cms/dmsllu.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator