Table of Contents

DMSRRV Source

References

Source Listing

DMSRRV.ASSEMBLE.txt
  1. RRV TITLE 'DMSRRV (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * MODULE NAME 00004000
  5. * 00005000
  6. * DMSRRV ( RSERV ) 00006000
  7. * 00007000
  8. * FUNCTION 00008000
  9. * 00009000
  10. * PROVIDE THE FACILITY TO COPY MODULES IN THE DOS/VS 00010000
  11. * SYSTEM OR PRIVATE RELOCATABLE LIBRARY TO A SPECIFIED 00011000
  12. * OUTPUT DEVICE. VALID OUTPUT DEVICES ARE CMS DISK FILE, 00012000
  13. * VIRTUAL PRINTER, VIRTUAL PUNCH, AND/OR USER'S CONSOLE. 00013000
  14. * 00014000
  15. * ATTRIBUTES 00015000
  16. * 00016000
  17. * DISK RESIDENT MODULE 00017000
  18. * EXECUTES IN USER AREA 00018000
  19. * 00019000
  20. * ENTRY POINTS 00020000
  21. * 00021000
  22. * DMSRRV 00022000
  23. * 00023000
  24. * ENTRY CONDITIONS 00024000
  25. * 00025000
  26. * R1 = PARAMETER LIST 00026000
  27. * 00027000
  28. * DC CL8'RSERV' COMMAND 00028000
  29. * DC CL8'FNAME' NAME OF MODULE TO COPY 00029000
  30. * DC CL8'FTYPE' FILETYPE OF CMS DISK FILE 00030000
  31. * ... ( ONLY APPLICABLE FOR DISK ) 00031000
  32. * ... ( DEFAULTS TO TEXT ) 00032000
  33. * DC CL8'(' BEGIN OF OPTIONS IF ANY 00033000
  34. * DC CL8'TERM'|'DISK'|'PRINT'|'PUNCH' ..OPTIONS.. 00034000
  35. * 00035000
  36. * OPTIONS 00036000
  37. * 00037000
  38. * TERM - DIRECT MODULE FILE TO USER'S CONSOLE 00038000
  39. * DISK - DIRECT MODULE FILE TO USER'S 'A' DISK 00039000
  40. * - DISK IS DEFAULT ('FN' TEXT A1) 00040000
  41. * PRINT - DIRECT MODULE FILE TO SPOOLED PRINTER 00041000
  42. * PUNCH - DIRECT MODULE FILE TO SPOOLED PUNCH 00042000
  43. * 00043000
  44. * EXIT CONDITIONS 00044000
  45. * 00045000
  46. * RETURN TO CALLER WITH RETURN CODE IN R15 00046000
  47. * 00047000
  48. * RETURN CODES AND MESSAGES: 00048000
  49. * 00049000
  50. * 24 - NO MODULE NAME SPECIFIED 00050000
  51. * 24 - INVALID OPTION SPECIFIED 00051000
  52. * 24 - INVALID PARAMETER SPECIFIED 00052000
  53. * 28 - SPECIFIED MODULE FILE NOT FOUND 00053000
  54. * 32 - CMS/DOS ENVIRONMENT NOT ACTIVE 00054000
  55. * 36 - NO READ/WRITE 'A' DISK ACCESSED 00055000
  56. * 36 - NO SYSRES VOLUME ACTIVE 00056000
  57. * 100 - SPECIFIED DISK IS NOT ATTACHED 00057000
  58. * 100 - INPUT ERROR ON SYSRES OR SYSRLB 00058000
  59. * 100 - ERROR WRITING FILE TO DISK 00059000
  60. * 00060000
  61. * CALLS TO OTHER ROUTINES 00061000
  62. * 00062000
  63. * DMSSTT, DMSERR, DMSERS, DMSKEY, DMKGIO, DMSPIO 00063000
  64. * DMSBWR, DMSCWR, DMSCIO, DMSCPF, DMSFNS 00064000
  65. * 00065000
  66. * EXTERNAL REFERENCES 00066000
  67. * 00067000
  68. * NUCON, BGCOM, DOSCB, OSFST 00068000
  69. * 00069000
  70. * TABLES/WORK AREAS 00070000
  71. * 00071000
  72. * NONE 00072000
  73. * 00073000
  74. * REGISTER USAGE 00074000
  75. * 00075000
  76. * R0 NUCON ADDRESSABILITY 00076000
  77. * R1 COMMAND LINE POINTER & PLIST(S) POINTER 00077000
  78. * R2 INPUT BUFFER POINTER & WORK 00078000
  79. * R3 WORK 00079000
  80. * R4 OUTPUT BUFFER POINTER 00080000
  81. * R5 ESID POINTER & WORK 00081000
  82. * R6 ESID COUNT & WORK 00082000
  83. * R7 WORK 00083000
  84. * R8 WORK 00084000
  85. * R9 DOSCB & OSFST POINTER 00085000
  86. * R10 INTERNAL LINKAGE 00086000
  87. * R11 BCT COUNTER 00087000
  88. * R12 DMSRRV ADDRESSABILITY 00088000
  89. * R13 NOT USED 00089000
  90. * R14 EXTERNAL LINKAGE 00090000
  91. * R15 ADDRESS LINKING ROUTINE & RETURN CODE 00091000
  92. * 00092000
  93. * OPERATION 00093000
  94. * 00094000
  95. * 1. SET UP NECESSARY ADDRESSABILITIES AND SAVE 00095000
  96. * THE RETURN REGISTER. ACQUIRE SUPERVISOR KEY 00096000
  97. * AND INITIALIZE REUSABILITY FIELDS. VERIFY IF 00097000
  98. * IN CMS/DOS ENVIRONMENT. 00098000
  99. * 00099000
  100. * 2. CHECK THE COMMAND LINE FOR VALID ARGUMENTS 00100000
  101. * AND OPTIONS. ENSURE THAT A MODULE NAME WAS 00101000
  102. * SPECIFIED. SET APPROPIATE SWITCHES FOR EACH 00102000
  103. * OPTION SPECIFIED. IF THE 'DISK' OPTION IS 00103000
  104. * SPECIFIED OR IMPLIED, ERASE ANY OLD FILE ON 00104000
  105. * THE 'A' DISK. IF ERASE RETURNS A CODE OF 36, 00105000
  106. * EITHER THE 'A' DISK IS R/O OR IS NOT ATTACHED. 00106000
  107. * 00107000
  108. * 3. DETERMINE IF READING FROM THE SYSTEM OR PRIVATE 00108000
  109. * RELOCATABLE LIBRARY (PRIVATE IS SEARCHED FIRST) 00109000
  110. * & START READING THE APPROPIATE LIBRARY DIRECTORY 00110000
  111. * RECORDS TO LOCATE THE SPECIFIED MODULE. ONCE THE 00111000
  112. * MODULE ENTRY IS FOUND, COMPUTE THE DISK ADDRESS 00112000
  113. * OF THE MODULE DATA BLOCKS. 00113000
  114. * 00114000
  115. * 4. READ THE MODULE DATA BLOCKS ONE AT A TIME. DECODE 00115000
  116. * EACH DATA BLOCK INTO CARD IMAGES. 'ESD', 'RLD', 00116000
  117. * AND 'TXT' CARD IMAGES ARE PROCESSED INDIVIDUALLY. 00117000
  118. * ALL OTHER TYPE OF CARDS ARE JUST WRITTEN TO THE 00118000
  119. * OUTPUT DEVICE. 00119000
  120. * 00120000
  121. * 5. WHEN ALL PROCESSING HAS BEEN DONE, ALL OUTPUT 00121000
  122. * DEVICES ARE CLOSED. 00122000
  123. * 00123000
  124. * 6. A SWITCH TO PROBLEM PROGRAM KEY IS DONE, AND A 00124000
  125. * RETURN TO THE CALLER IS MADE PASSING IN REG. 15 00125000
  126. * THE RETURN CODE OF THE COMMAND. 00126000
  127. *. 00127000
  128. EJECT 00128000
  129. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00129000
  130. * * 00130000
  131. * INITIALIZATION... ESTABLISH BASE REG. AND SAVE RETURN. * 00131000
  132. * VERIFY CMS/DOS ENVIRONMENT ACTIVE * 00132000
  133. * * 00133000
  134. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00134000
  135. SPACE 2 00135000
  136. DMSRRV CSECT @V305001 00136000
  137. USING DMSRRV,R12 @V305001 00137000
  138. USING NUCON,R0 @V305001 00138000
  139. LR R12,R15 ESTABLISH BASE @V305001 00139000
  140. ST R14,SAVE14 SAVE RETURN REGISTER @V305001 00140000
  141. DMSKEY NUCLEUS @V305001 00141000
  142. TM DOSFLAGS,DOSMODE IN CMS/DOS MODE ? @V305001 00142000
  143. BZ ERR099 NO, ERROR @V305001 00143000
  144. XC SSW,SSW CLEAR INTERNAL SWITCH @V305001 00144000
  145. XC PCHNO,PCHNO ZERO CARD SERIAL NUMBER @V305001 00145000
  146. MVC FTYPE,TEXT SET DEFAULT FILE TYPE @V305001 00146000
  147. EJECT 00147000
  148. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00148000
  149. * * 00149000
  150. * CHECK COMMAND LINE FOR VALID ARGUMENTS AND OPTIONS. * 00150000
  151. * SET APROPIATE SWITCHES FOR EACH OPTION SPECIFIED. * 00151000
  152. * IF NO OPTIONS SPECIFIED, 'DISK' IS DEFAULT. * 00152000
  153. * * 00153000
  154. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00154000
  155. SPACE 2 00155000
  156. LA R1,8(,R1) BUMP TO MODULE NAME @V305001 00156000
  157. CLI 0(R1),FENCE ANY SPECIFIED ? @V305001 00157000
  158. BE ERR001 NO, ERROR @V305001 00158000
  159. CLI 0(R1),LPAR DITTO ? @V305001 00159000
  160. BE ERR001 NO, ERROR @V305001 00160000
  161. MVC MDNAME,0(R1) SAVE MODULE NAME @V305001 00161000
  162. LA R1,8(,R1) BUMP TO POSS. OPTIONS @V305001 00162000
  163. CLI 0(R1),FENCE ANY MORE ON LINE ? @V305001 00163000
  164. BE OPTSOK NO, BRANCH @V305001 00164000
  165. CLI 0(R1),LPAR LEFT PARENS ? @V305001 00165000
  166. BE OPTLUP YES, PROCESS OPTIONS @V305001 00166000
  167. MVC FTYPE,0(R1) SET USER'S FILE TYPE @V305001 00167000
  168. LA R1,8(,R1) BUMP TO POSS. OPTIONS @V305001 00168000
  169. CLI 0(R1),FENCE ANY MORE ? @V305001 00169000
  170. BE OPTSOK NO, BRANCH @V305001 00170000
  171. CLI 0(R1),LPAR LEFT PARENS ? @V305001 00171000
  172. BNE ERR070 NO, ERROR @V305001 00172000
  173. OPTLUP LA R1,8(,R1) BUMP TO OPTION @V305001 00173000
  174. CLI 0(R1),FENCE ANY SPECIFIED ? @V305001 00174000
  175. BE OPTSOK NO, ALL DONE WITH OPTIONS @V305001 00175000
  176. CLI 0(R1),RPAR END OF OPTIONS ? @V305001 00176000
  177. BE OPTSOK YES, ALL DONE WITH OPTIONS @V305001 00177000
  178. CLC CDISK,0(R1) DISK OPTION ? @V305001 00178000
  179. BNE CKPUN NO, CHECK PUNCH @V305001 00179000
  180. OI SSW,DISK SET DISK FLAG @V305001 00180000
  181. B OPTLUP KEEP LOOKING @V305001 00181000
  182. CKPUN CLC CPUNCH,0(R1) PUNCH OPTION ? @V305001 00182000
  183. BNE CKPRT NO, CHECK PRINT @V305001 00183000
  184. OI SSW,PUNCH SET PUNCH FLAG @V305001 00184000
  185. B OPTLUP KEEP LOOKING @V305001 00185000
  186. CKPRT CLC CPRINT,0(R1) PRINT OPTION ? @V305001 00186000
  187. BNE CKTRM NO, CHECK TERM @V305001 00187000
  188. OI SSW,PRINT SET PRINT FLAG @V305001 00188000
  189. B OPTLUP KEEP LOOKING @V305001 00189000
  190. CKTRM CLC CTERM,0(R1) TERM OPTION ? @V305001 00190000
  191. BNE ERR003 NO, ERROR @V305001 00191000
  192. OI SSW,TERM SET TERM FLAG @V305001 00192000
  193. B OPTLUP KEEP LOOKING @V305001 00193000
  194. EJECT 00194000
  195. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00195000
  196. * * 00196000
  197. * IF 'DISK' OPTION SPECIFIED OR IMPLIED, ERASE ANY OLD * 00197000
  198. * FILE ON THE 'A' DISK WITH THE SAME FILEID. IF ERASE * 00198000
  199. * RETURNS A CODE OF 36, EITHER THE 'A' DISK IS R/O OR IS * 00199000
  200. * NOT ATTACHED. IN EITHER CASE A MESSAGE IS ISSUED. * 00200000
  201. * * 00201000
  202. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00202000
  203. SPACE 2 00203000
  204. OPTSOK CLI SSW,ZERO ANY OPTIONS SPECIFIED? @VA08978 00203600
  205. BNE READDIR NOT DEFAULT - GO CHECK DIRECTORY @VA08978 00204200
  206. OI SSW,DISK TURN ON DISK OPTION @VA08978 00204800
  207. B READDIR GO CHECK DIRECTORY @VA08978 00205400
  208. CHKDSK EQU * @VA08978 00206000
  209. TM SSW,DISK WAS DISK SPECIFIED? @VA08978 00206600
  210. BZ FNDMOD NOT DISK - DON'T BOTHER TO ERASE @VA08978 00207200
  211. ERSOLD MVC FNAME,MDNAME SET UP FILE NAME @VA08978 00207800
  212. LA R1,DSKLST GET ERASE PLIST @V305001 00209000
  213. L R15,AERASE GET DMSERS ADDRESS @V305001 00210000
  214. BALR R14,R15 ERASE OLD FILE @V305001 00211000
  215. CH R15,=H'36' ANY DISK PROBLEM ? @V305001 00212000
  216. BE ERR006 YES,GIVE ERROR @VA08978 00212800
  217. B FNDMOD CONTINUE @VA08978 00213600
  218. EJECT 00214400
  219. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00215200
  220. * * 00216000
  221. * DETERMINE IF READING FROM SYSTEM RELO. OR FROM PRIVATE * 00217000
  222. * RELO., READ APPROPIATE LIBRARY DIRECTORY AND INITIATE * 00218000
  223. * SEARCH FOR SPECIFIED MODULE. ONCE THE MODULE ENTRY IS * 00219000
  224. * FOUND, COMPUTE THE DISK ADDRESS OF THE MODULE DATA BLOCKS. * 00220000
  225. * * 00221000
  226. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00222000
  227. SPACE 2 00223000
  228. READDIR BAL R10,CKPRLL CHECK IF PRIV. RELO. ACTIVE @V305001 00224000
  229. TM SSW,PRLLA IS LIBRARY ACTIVE ? @V305001 00225000
  230. BO SETLEN YES, BRANCH @V305001 00226000
  231. READSYS NI SSW,255-PRLLA NO MORE PRIVATE LIBRARY @V305001 00227000
  232. LA R3,SYSRES GET SYSRES LUB INDEX @V305001 00228000
  233. BAL R10,TSTUNIT SEE IF SYSRES ACTIVE @V305001 00229000
  234. BZ ERR002 BRANCH IF NOT ACTIVE @V305001 00230000
  235. OI SSW,RLLA SET SYSRES ACTIVE @V305001 00231000
  236. MVC CUU(2),0(R3) SAVE SYSRES DEVICE ADDRESS @V305001 00232000
  237. LA R3,DIRPL SRL DIRECTORY POINTER LENGTH @V305001 00233000
  238. STH R3,READCCW+6 TO SAVE IN READ CCW @V305001 00234000
  239. MVC CCHHR(5),SRLDIR SET TO FIND SRL DIRECTORY @V305001 00235000
  240. BAL R10,DISKIO GO READ POINTER TO SRL @V305001 00236000
  241. MVC SRLADR(5),INBUF+2 GET SRL DIRECTORY ADDR. @V305001 00237000
  242. MVC CCHHR(5),SRLADR SET UP SEEK/SEARCH ADDRESS @V305001 00238000
  243. SETLEN LA R3,DIRBL DIRECTORY BLOCK LENGTH @V305001 00239000
  244. STH R3,READCCW+6 TO SAVE IN READ CCW @V305001 00240000
  245. NXTBLK BAL R10,DISKIO READ DIRECTORY @V305001 00241000
  246. LA R2,INBUF POINT TO BUFFER @V305001 00242000
  247. TSTEND CLI 0(R2),DIREND END OF DIRECTORY ? @V305001 00243000
  248. BE ERR002 YES, MODULE NOT FOUND @V305001 00244000
  249. C R2,ENDDIR END OF BLOCK ? @V305001 00245000
  250. BNL NXTBLK YES, GET ANOTHER BLOCK @V305001 00246000
  251. CLC MDNAME,0(R2) MODULE NAME MATCH? @VA08978 00247000
  252. BE CHKDSK FOUND - GO CHECK FOR ERASE @VA08978 00248000
  253. LA R2,16(,R2) BUMP TO NEXT ENTRY @VA08978 00249000
  254. B TSTEND KEEP LOOKING @V305001 00250000
  255. SPACE 1 00251000
  256. FNDMOD MVC CHHR(4),10(R2) INITIALIZE ADDRESS @V305001 00252000
  257. MVC CCHHR(1),HHR MOVE H1 TO C1 @V305001 00253000
  258. MVI HHR,ZERO SET H1 TO ZERO @V305001 00254000
  259. LA R3,DATABL DATA BLOCKS LENGTH @V305001 00255000
  260. STH R3,READCCW+6 TO SAVE IN READ CCW @V305001 00256000
  261. EJECT 00257000
  262. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00258000
  263. * * 00259000
  264. * DECODE EACH BLOCK READ INTO CARD IMAGES RECORDS. * 00260000
  265. * * 00261000
  266. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00262000
  267. SPACE 2 00263000
  268. NXTBUF BAL R10,DISKIO READ 1ST DATA BLOCK @V305001 00264000
  269. LA R1,INBUF+2 POINT TO INPUT BUFFER @V305001 00265000
  270. NXTREC MVC BLOCK,0(R1) MOVE RECORD TO BLOCK AREA @V305001 00266000
  271. IC R2,INBUF GET RECORD COUNT @V305001 00267000
  272. BCTR R2,0 LESS ONE @V305001 00268000
  273. STC R2,INBUF RESTORE NEW COUNT @V305001 00269000
  274. LA R1,160(,R1) POINT TO NEXT RECORD @V305001 00270000
  275. B ENDTST GO TEST FOR END CARD @V305001 00271000
  276. TSTEOM TM SSW,EOM END CARD READ ? @V305001 00272000
  277. BO ALLDONE YES, ALL DONE THEN @V305001 00273000
  278. CLI INBUF,ZERO ANY MORE LEFT IN THIS BUFFER ? @V305001 00274000
  279. BNE NXTREC YES, KEEP LOOKING @V305001 00275000
  280. B NXTBUF GO READ NEXT DATA BLOCK @V305001 00276000
  281. SPACE 1 00277000
  282. ENDTST CLC BLOCK(4),END IS THIS END CARD ? @V305001 00278000
  283. BNE NOEND NO, BRANCH @V305001 00279000
  284. OI SSW,EOM SET END CARD READ @V305001 00280000
  285. NOEND EQU * @VA08978 00280500
  286. LA R4,OUTBUF POINT TO CARD COLUMN 1 @VA08978 00281000
  287. MVI OUTBUF,BLANK PUT BLANK IN FIRST BYTE @VA08978 00281500
  288. MVC 1(79,R4),0(R4) BLANK 80 BYTES FOR RECORD @VA08978 00282000
  289. BCTR R4,0 ADJUST POINTER TO BUFFER @VA08978 00282500
  290. MVC 1(16,R4),BLOCK INITIAL HEADER @V305001 00283000
  291. MVC BYTECNT,BLOCK+10 SAVE BLOCK BYTE COUNT @V305001 00284000
  292. CLC BLOCK(4),ESD ESD CARD ? @V305001 00285000
  293. BE ESDREC YES, BRANCH @V305001 00286000
  294. CLC BLOCK(4),TXT TXT CARD ? @V305001 00287000
  295. BE TXTREC YES, BRANCH @V305001 00288000
  296. CLC BLOCK(4),RLD RLD CARD ? @V305001 00289000
  297. BE RLDREC YES, BRANCH @V305001 00290000
  298. MVC 1(80,R4),BLOCK SET UP CARD IMAGE @V305001 00291000
  299. BAL R10,OUTLINE GO OUTPUT THIS LINE @V305001 00292000
  300. B TSTEOM GO SEE IF MORE... @V305001 00293000
  301. EJECT 00294000
  302. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00295000
  303. * * 00296000
  304. * PROCESS 'ESD' RECORDS INTO CARD IMAGES * 00297000
  305. * * 00298000
  306. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00299000
  307. SPACE 2 00300000
  308. ESDREC CLC BLOCK+14(2),BLANKS IS ESID NO. BLANK ? @V305001 00301000
  309. BNE EDPCLA NO, BRANCH @V305001 00302000
  310. MVI AREA,BLANK BLANK OUT ESID AREA @V305001 00303000
  311. MVC AREA+1(5),AREA ... @V305001 00304000
  312. EDPCAI LA R5,AREA INITIALIZE ADDRESSES @V305001 00305000
  313. LA R8,BLOCK+16 ... @V305001 00306000
  314. EDPCBA SR R3,R3 CLEAR @V305001 00307000
  315. MVC 15(2,R4),0(R5) MOVE ESID NO. TO BUFFER @V305001 00308000
  316. LA R5,2(,R5) BUMP @V305001 00309000
  317. EDPCCS CLC BLOCK+10(2),=H'48' BYTE COUNT LESS THAN 48 ? @V305001 00310000
  318. BH EDPCIR NO, INITIALIZE REGISTER @V305001 00311000
  319. CLC BLOCK+10(2),=H'0' IS BYTE COUNT ZERO ? @V305001 00312000
  320. BE REINT1 YES, BRANCH @V305001 00313000
  321. * 00314000
  322. LH R3,BLOCK+10 MOVE ESD BYTES TO BUFFER @V305001 00315000
  323. SH R3,=H'1' LESS ON FOR EXECUTE @V305001 00316000
  324. EX R3,MVPCH MOVE IT @V305001 00317000
  325. MVC 11(2,R4),BLOCK+10 MOVE BYTE COUNT TO BUFFER @V305001 00318000
  326. EDCPGP BAL R10,OUTLINE OUTPUT THIS LINE @V305001 00319000
  327. * 00320000
  328. REINT1 MVC BLOCK+10(2),BYTECNT RESTORE BLOCK BYTE COUNT @V305001 00321000
  329. B TSTEOM CHECK FOR END OF MODULE @V305001 00322000
  330. EJECT 00323000
  331. EDPCIR LA R3,BYTECNT1-1 BYTE COUNT - 1 @V305001 00324000
  332. EX R3,MVPCH MOVE IT @V305001 00325000
  333. LA R8,BYTECNT1(,R8) UPDATE BLOCK ADDRESS @V305001 00326000
  334. MVC 11(2,R4),=H'48' MOVE BYTE COUNT TO BUFFER @V305001 00327000
  335. BAL R10,OUTLINE OUTPUT THIS LINE @V305001 00328000
  336. LH R3,BLOCK+10 REDUCE BYTE COUNT BY 48 @V305001 00329000
  337. SH R3,=H'48' ... @V305001 00330000
  338. STH R3,BLOCK+10 SAVE NEW BYTE COUNT @V305001 00331000
  339. B EDPCBA GO TO BRANCH ADDRESS @V305001 00332000
  340. * 00333000
  341. EDPCLA LA R5,AREA LOAD ADDRESS @V305001 00334000
  342. MVC 0(2,R5),BLOCK+14 MOVE ESID NUMBER @V305001 00335000
  343. LH R9,BLOCK+10 DIVIDE NO OF BYTES BY 16 @V305001 00336000
  344. SRL R9,4 ... @V305001 00337000
  345. LA R7,BLOCK+24 LOAD ESD TYPE ADDRESS @V305001 00338000
  346. EDPCLI LA R11,THREE GET MAX ENTRIES IN BLOCK @V305001 00339000
  347. LA R6,ZERO ... @V305001 00340000
  348. EDPCLT CLI 0(R7),LDTYPE TEST FOR LD TYPE @V305001 00341000
  349. BE EDPCNA YES, GO TO INCREMENT ADDR @V305001 00342000
  350. LA R6,1(,R6) INCREMENT ESD COUNT @V305001 00343000
  351. EDPCNA LA R7,16(,R7) INCREMENT ADDRESS @V305001 00344000
  352. BCT R9,EDPCRT LOOP THRU REGISTER TEST @V305001 00345000
  353. * 00346000
  354. CH R6,=H'0' TEST FOR ZERO @V305001 00347000
  355. BNE EDPCAI ZERO, GO TO ADDRESS INIT @V305001 00348000
  356. MVC 0(2,R5),BLANKS BLANK OUT AREA @V305001 00349000
  357. B EDPCAI GO TO ADDRESS INIT @V305001 00350000
  358. * 00351000
  359. EDPCRT BCT R11,EDPCLT LOOP TEST @V305001 00352000
  360. CH R6,=H'0' IS ESID COUNT ZERO ? @V305001 00353000
  361. BNE EDPCSC NO, GO TO STORE COUNT @V305001 00354000
  362. MVC 2(2,R5),0(R5) MOVE ESID OF AREA TO AREA2 @V305001 00355000
  363. MVC 0(2,R5),BLANKS MOVE BLANKS TO AREA @V305001 00356000
  364. B EDPCSI GO TO STORE INDEX INCREMENT @V305001 00357000
  365. * 00358000
  366. EDPCSC AH R6,0(,R5) COMPUTE ESID COUNT @V305001 00359000
  367. STH R6,2(,R5) STORE IN AREA+2 @V305001 00360000
  368. EDPCSI LA R5,2(,R5) ... @V305001 00361000
  369. B EDPCLI GO TO LOOP INITIALIZATION @V305001 00362000
  370. EJECT 00363000
  371. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00364000
  372. * * 00365000
  373. * PROCESS 'TXT' RECORDS INTO CARD IMAGES * 00366000
  374. * * 00367000
  375. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00368000
  376. SPACE 2 00369000
  377. TXTREC LA R7,BLOCK+16 INITIALIZE BLOCK ADDRESS @V305001 00370000
  378. MVC BYTECNT+2(3),BLOCK+5 @V305001 00371000
  379. TXPCIM SR R8,R8 INITIALIZE REGISTER @V305001 00372000
  380. MVC 1(16,R4),BLOCK INITIAL HEADER @V305001 00373000
  381. CLC BLOCK+10(2),=H'56' IS BYTE COUNT OVER 56 ? @V305001 00374000
  382. BH TXPCSC YES, GO TO SPLIT CARD @V305001 00375000
  383. CLC BLOCK+10(2),=H'0' IS BYTE COUNT ZERO ? @V305001 00376000
  384. BE REINT1 YES, GO TO NEXT CARD @V305001 00377000
  385. * 00378000
  386. LH R8,BLOCK+10 MOVE TEXT TO BUFFER @V305001 00379000
  387. SH R8,=H'1' LESS ONE FOR EXECUTE @V305001 00380000
  388. EX R8,MVPCH2 MOVE IT @V305001 00381000
  389. MVC BLOCK+5(3),BYTECNT+2 RESTORE ORIGIN @V305001 00382000
  390. B EDCPGP PUT THIS CARD OUT @V305001 00383000
  391. * 00384000
  392. TXPCSC MVC 11(2,R4),=H'56' MOVE 56 BYTES TO BUFFER @V305001 00385000
  393. LA R8,BYTECNT2-1 56 - 1 = 55 @V305001 00386000
  394. EX R8,MVPCH2 MOVE IT @V305001 00387000
  395. LA R7,BYTECNT2(,R7) UPDATE BLOCK ADDRESS @V305001 00388000
  396. BAL R10,OUTLINE OUTPUT THIS LINE @V305001 00389000
  397. L R8,BLOCK+4 UPDATE ORIGIN @V305001 00390000
  398. AH R8,=H'56' UPDATE BYTE COUNT @V305001 00391000
  399. ST R8,BLOCK+4 SAVE IT @V305001 00392000
  400. LH R8,BLOCK+10 UPDATE BYTE COUNT @V305001 00393000
  401. SH R8,=H'56' SUBTRACT 56 @V305001 00394000
  402. STH R8,BLOCK+10 SAVE IT @V305001 00395000
  403. B TXPCIM GO TO INITIALIZE AND MOVE @V305001 00396000
  404. EJECT 00397000
  405. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00398000
  406. * * 00399000
  407. * PROCESS 'RLD' RECORDS INTO CARD IMAGES * 00400000
  408. * * 00401000
  409. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00402000
  410. SPACE 2 00403000
  411. RLDREC LA R7,BLOCK+24 INITIALIZE ADDRESSES @V305001 00404000
  412. LA R8,BLOCK+20 ... @V305001 00405000
  413. MVC SAVERP(4),BLOCK+16 SAVE RP @V305001 00406000
  414. MVC 17(8,R4),BLOCK+16 MOVE 8 BYTES TO BUFFER @V305001 00407000
  415. RDPCAI LA R6,EIGHT ADDRESS INITIALIZATION @V305001 00408000
  416. LA R5,25(,R4) ... @V305001 00409000
  417. CLC BLOCK+10(2),=H'56' BLOCK COUNT OVER 56 ? @V305001 00410000
  418. BH RDPCBB YES, GO TO BREAK BLOCK @V305001 00411000
  419. CLC BLOCK+10(2),=H'0' IS BYTE COUNT ZERO @V305001 00412000
  420. BE REINT1 YES, GET NEXT CARD @V305001 00413000
  421. * 00414000
  422. LH R3,BLOCK+10 GET REMAINING BYTES @V305001 00415000
  423. SH R3,=H'9' ... @V305001 00416000
  424. BM RDPCAJ IF NOT POSITIVE, BRANCH @V305001 00417000
  425. EX R3,MVPCH1 MOVE THEM TO BUFFER @V305001 00418000
  426. RDPCAJ MVC 11(2,R4),BLOCK+10 MOVE BYTE COUNT TO BUFFER @V305001 00419000
  427. B EDCPGP PUT THIS LINE OUT @V305001 00420000
  428. * 00421000
  429. RDPCBB LH R3,BLOCK+10 GET BYTE COUNT OF BLOCK @V305001 00422000
  430. SH R3,=H'56' SUBTRACT 56 BYTES @V305001 00423000
  431. STH R3,BLOCK+10 SAVE NEW COUNT @V305001 00424000
  432. RDPCCT TM 0(R8),ONE IS CONTINUATION BIT ON ? @V305001 00425000
  433. BO RDPCTS YES, GO TO TEST @V305001 00426000
  434. MVC SAVERP(4),0(R7) SAVE NEW RP @V305001 00427000
  435. CH R6,=H'48' COMP TO BUFFER BYTE COUNT @V305001 00428000
  436. BH RDPCS8 IF HIGH, STORE 8 BYTES @V305001 00429000
  437. LA R3,EIGHT-1 MOVE 8 BYTES TO BUFFER @V305001 00430000
  438. EX R3,MVPCH1 MOVE IT @V305001 00431000
  439. LA R7,8(,R7) UPDATE ADDRESSES @V305001 00432000
  440. LA R8,8(,R8) UPDATE FLAG POINTER @V305001 00433000
  441. LA R5,8(,R5) ... @V305001 00434000
  442. LA R6,8(,R6) ... @V305001 00435000
  443. B RDPCCT GO TO CONTINUATION TEST @V305001 00436000
  444. EJECT 00437000
  445. RDPCS4 STC R6,12(,R4) STORE BUFFER BYTE COUNT @V305001 00438000
  446. LR R3,R5 BACKSPACE TO LAST @V305001 00439000
  447. SH R3,=H'4' FLAG AND DELETE @V305001 00440000
  448. NI 0(R3),255-ONE CONTINUATION BIT @V305001 00441000
  449. BAL R10,OUTLINE OUTPUT THIS CARD @V305001 00442000
  450. MVC 17(4,R4),SAVERP MOVE SAVED RP TO BUFFER @V305001 00443000
  451. MVC 21(4,R4),0(R7) MOVE FOUR BYTES TO BUFFER @V305001 00444000
  452. LA R7,4(,R7) UPDATE ADDRESSES @V305001 00445000
  453. LA R8,4(,R8) ... @V305001 00446000
  454. INCRIT LH R3,BLOCK+10 INCREASE COUNT @V305001 00447000
  455. LA R3,4(,R3) FOR ADDED @V305001 00448000
  456. STH R3,BLOCK+10 R AND P POINTERS @V305001 00449000
  457. B RDPCAI GO TO ADDR INITIALIZATION @V305001 00450000
  458. * 00451000
  459. RDPCS8 STC R6,12(,R4) STORE BYTE COUNT IN BUFFER @V305001 00452000
  460. BAL R10,OUTLINE OUTPUT THIS CARD @V305001 00453000
  461. MVC 17(8,R4),0(R7) MOVE 8 BYTES TO BUFFER @V305001 00454000
  462. LA R7,8(,R7) UPDATE ADDRESSES @V305001 00455000
  463. LA R8,8(,R8) ... @V305001 00456000
  464. CH R6,=H'52' IF COUNT NOT 56, INCREASE @V305001 00457000
  465. BE INCRIT REMAINING RECORD COUNT. @V305001 00458000
  466. B RDPCAI GO TO ADDR INITIALIZATION @V305001 00459000
  467. * 00460000
  468. RDPCTS CH R6,=H'52' COMPARE BUFFER COUNT TO 5 @V305001 00461000
  469. BH RDPCS4 IF HIGH GO TO SAVE 4 @V305001 00462000
  470. LA R3,FOUR-1 4 - 1 = 3 @V305001 00463000
  471. EX R3,MVPCH1 MOVE 4 BYTES TO BUFFER @V305001 00464000
  472. LA R5,4(,R5) UPDATE ADDRESSES @V305001 00465000
  473. LA R7,4(,R7) ... @V305001 00466000
  474. LA R8,4(,R8) ... @V305001 00467000
  475. LA R6,4(,R6) ... @V305001 00468000
  476. B RDPCCT GO TO CONTINUATION TEST @V305001 00469000
  477. EJECT 00470000
  478. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00471000
  479. * * 00472000
  480. * ROUTINE TO READ EITHER FROM SYSRES OR SYSRLB. * 00473000
  481. * THE I/O IS DIAGNOSED TO CP AND UPON RETURN ONLY * 00474000
  482. * END-OF-CYLINDER IS ACCEPTED. ANY OTHER ERROR WILL * 00475000
  483. * TERMINATE THIS COMMAND. * 00476000
  484. * * 00477000
  485. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00478000
  486. SPACE 2 00479000
  487. DISKIO LA R0,SEEKCCW GET CHANNEL PGM ADDR @V305001 00480000
  488. LH R1,CUU GET DISK DEVICE ADDR @V305001 00481000
  489. DC X'83100020' DIAGNOSE I/O TO CP @V305001 00482000
  490. BZR R10 RETURN WITH GOOD I/O @V305001 00483000
  491. BM ERR113 DISK NOT ATTACHED EXIT @V305001 00484000
  492. BP ERR411 I/O ERROR @V305001 00485000
  493. STH R0,SENSE SAVE SENSE INFO. @V305001 00486000
  494. TM SENSE+1,EOC IS IT END-OF-CYLINDER @V305001 00487000
  495. BZ ERR411 NO, UNRECOVERABLE ERROR @V305001 00488000
  496. LH R1,CCHHR GET CURRENT CYLINDER @V305001 00489000
  497. LA R1,1(,R1) UP BY ONE @V305001 00490000
  498. STH R1,CCHHR SAVE NEW CYLINDER @V305001 00491000
  499. LA R1,ONE GET HEAD 0, REC 1 CONSTANT @V305001 00492000
  500. STCM R1,M7,HHR SAVE NEW HEAD AND REC @V305001 00493000
  501. BR R10 RETURN TO CALLER @V305001 00494000
  502. EJECT 00495000
  503. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00496000
  504. * * 00497000
  505. * ROUTINE TO DETERMINE TO WHAT DEVICE OR DEVICES THE * 00498000
  506. * OUTPUT SHOULD GO. SWITCH 'SSW' CONTAINS INFORMATION * 00499000
  507. * TO DETERMINE THIS. ALL I/O IS DONE THROUGH CMS FUNCTIONS. * 00500000
  508. * * 00501000
  509. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00502000
  510. SPACE 2 00503000
  511. OUTLINE ST R1,SAVE1 SAVE REG. 1 @V305001 00504000
  512. L R1,PCHNO GET LAST SERIAL NO. @V305001 00505000
  513. LA R1,1(,R1) UP BY ONE @V305001 00506000
  514. ST R1,PCHNO SAVE FOR NEXT CARD @V305001 00507000
  515. CVD R1,WORK CONVERT TO DECIMAL @V305001 00508000
  516. UNPK 77(4,R4),WORK UNPACK NO. TO BUFFER @V305001 00509000
  517. MVZ 80(1,R4),79(R4) SET ZONE @V305001 00510000
  518. TM SSW,DISK+PUNCH+PRINT+TERM ANY OPTIONS ? @V305001 00511000
  519. BZ OUTDSK NO, DEFAULT TO DISK @V305001 00512000
  520. TM SSW,PUNCH PUNCH SPECIFIED ? @V305001 00513000
  521. BZ TSTPRT NO, CHECK PRINT @V305001 00514000
  522. LA R1,PUNLST POINT TO PUNCH PLIST @V305001 00515000
  523. SVC 202 PUNCH THIS CARD @V305001 00516000
  524. DC AL4(*+4) ... @V305001 00517000
  525. CH R15,=H'100' NOT ATT OR INT REQ ? @V305001 00518000
  526. BE EXIT YES, GET OUT @V305001 00519000
  527. SPACE 1 00520000
  528. TSTPRT TM SSW,PRINT PRINT SPECIFIED ? @V305001 00521000
  529. BZ TSTCON NO, CHECK TERM @V305001 00522000
  530. PRT LA R1,PRTLST POINT TO PRINT PLIST @V305066 00523000
  531. SVC 202 PRINT THIS LINE @V305001 00524000
  532. DC AL4(*+4) ... @V305001 00525000
  533. CH R15,=H'100' NOT ATT OR INT REQ ? @V305001 00526000
  534. BE EXIT YES, GET OUT @V305001 00527000
  535. TM SSW,FIRST FIRST TIME THROUGH? @V305066 00528000
  536. BO TSTCON NO, NOT FIRST PRINT @V305066 00529000
  537. OI SSW,FIRST FIRST TIME INDICATOR @V305066 00530000
  538. MVI CHAR,BLANK PRINT AND SPACE @V305066 00531000
  539. B PRT GO PRINT FIRST RECORD @V305066 00532000
  540. SPACE 1 00533000
  541. TSTCON TM SSW,TERM TERM SPECIFIED ? @V305001 00534000
  542. BZ TSTDSK NO, CHECK DISK @V305001 00535000
  543. LA R1,TYPLST POINT TO TERM PLIST @V305001 00536000
  544. SVC 202 DISPLAY THIS LINE @V305001 00537000
  545. SPACE 1 00538000
  546. TSTDSK TM SSW,DISK DISK SPECIFIED ? @V305001 00539000
  547. BZ OUTXIT NO, RETURN @V305001 00540000
  548. OUTDSK LA R1,DSKLST POINT TO DISK PLIST @V305001 00541000
  549. L R15,AWRBUF GET DMSBWR ADDRESS @V305001 00542000
  550. BALR R14,R15 WRITE THIS RECORD @V305001 00543000
  551. LTR R15,R15 ANY ERRORS ? @V305001 00544000
  552. BNZ ERR105 YES, BRANCH @V305001 00545000
  553. OUTXIT L R1,SAVE1 RESTORE REG. 1 @V305001 00546000
  554. MVI 17(R4),BLANK BLANK PUNCH AREA @V305001 00547000
  555. MVC 18(63,R4),17(R4) ... @V305001 00548000
  556. BR R10 @V305001 00549000
  557. EJECT 00550000
  558. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00551000
  559. * * 00552000
  560. * VERIFY IF PRIVATE RELO. IS ASSIGNED, AND IF SO, ISSUE * 00553000
  561. * DUMMY DLBL FOR IJSYSRL TO ACQUIRE USER ISSUED DLBL. * 00554000
  562. * VERIFY THAT AN OSFST EXIST TO GET THE STARTING CCHHR OF * 00555000
  563. * THE DATA SET AND THE VIRTUAL DEVICE ADDRESS. * 00556000
  564. * * 00557000
  565. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00558000
  566. SPACE 2 00559000
  567. CKPRLL ST R10,SAVE10 SAVE RETURN REGISTER @V305001 00560000
  568. LA R3,SYSRLB GET SYSRLB LUB INDEX NO. @V305001 00561000
  569. BAL R10,TSTUNIT SEE IF UNIT ASSIGNED @V305001 00562000
  570. BZ NOPRLL BRANCH IF NOT ASSIGNED @V305001 00563000
  571. SR R9,R9 ... @V305001 00564000
  572. ICM R9,M7,DOSFIRST+1 GET DOSCB CHAIN ADDRESS @V305001 00565000
  573. USING DOSSECT,R9 @V305001 00566000
  574. PRLL1 BZ NOPRLL IF ZERO, NO MORE DOSCB @V305001 00567000
  575. CLC IJSYSRL,DOSDD MATCHING DDNAME ? @V305001 00568000
  576. BE PRLL2 YES, BRANCH @V305001 00569000
  577. ICM R9,M7,1(R9) GET NEXT DOSCB ADDRESS @V305001 00570000
  578. B PRLL1 BRANCH @V305001 00571000
  579. PRLL2 CLI DOSDEV,DOSDSK IS DEVICE DISK ? @V305001 00572000
  580. BNE NOPRLL NO, BRANCH @V305001 00573000
  581. LA R1,DOSOP USE DOSCB FOR STATE PLIST @V305001 00574000
  582. MVC DOSOP,=CL8'STATE' MOVE STATE COMMAND TO PLIST @V305001 00575000
  583. L R15,ASTATE GET STATE ADDRESS @V305001 00576000
  584. BALR R14,R15 SEE IF FILE EXISTS @V305001 00577000
  585. LTR R15,R15 FILE FOUND ? @V305001 00578000
  586. BNZ NOPRLL BRANCH IF NOT FOUND @V305001 00579000
  587. L R9,DOSOSFST GET OSFST FOR PRIV RELO @V305001 00580000
  588. DROP R9 @V305001 00581000
  589. LTR R9,R9 ANY AVAILABLE ? @V305001 00582000
  590. BZ NOPRLL NO, BRANCH @V305001 00583000
  591. USING OSFST,R9 @V305001 00584000
  592. MVC CCHHR(4),OSFSTXTN+2 SAVE PRIV. RELO. CCHHR @V305001 00585000
  593. MVI R,ONE RECORD ONE @V305001 00586000
  594. MVC CUU(2),OSFSTDSK SAVE PRIV. RELO. CUU @V305001 00587000
  595. DROP R9 @V305001 00588000
  596. OI SSW,PRLLA SET PRLLA FLAG IN SSW @V305001 00589000
  597. NOPRLL L R10,SAVE10 RESTORE RETURN REG. @V305001 00590000
  598. BR R10 RETURN @V305001 00591000
  599. EJECT 00592000
  600. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00593000
  601. * * 00594000
  602. * CHECK IF SYSRLB OR SYSRES HAS BEEN ASSIGNED. * 00595000
  603. * REG 3 = 0 MEANS UNIT NOT ASSIGNED, OTHERWISE REG 3 * 00596000
  604. * CONTAINS THE POINTER TO THE CORRECT PUB ENTRY. * 00597000
  605. * * 00598000
  606. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00599000
  607. SPACE 2 00600000
  608. TSTUNIT EQU * @V305001 00601000
  609. USING BGCOM,R1 @V305001 00602000
  610. L R1,ASYSREF GET BGCOM ADDRESS @V305001 00603000
  611. AH R3,LUBPT POINT TO CORRECT LUB ENTRY @V305001 00604000
  612. TM 0(R3),UNASSGN UNIT ASSIGNED ? @V305001 00605000
  613. BO NOTASSGN NO, BRANCH @V305001 00606000
  614. LH R3,0(,R3) LUB ENTRY TO REG 3 @V305001 00607000
  615. SRL R3,8 ISOLATE PUB POINTER @V305001 00608000
  616. SLL R3,3 MULTIPLY BY 8 @V305001 00609000
  617. AH R3,PUBPT POINT TO CORRECT PUB ENTRY @V305001 00610000
  618. LTR R3,R3 SET CONDITION CODE @V305001 00611000
  619. BR R10 RETURN TO CALLER @V305001 00612000
  620. NOTASSGN SR R3,R3 ZERO REG 3 @V305001 00613000
  621. LTR R3,R3 SET CONDITION CODE @V305001 00614000
  622. BR R10 RETURN TO CALLER @V305001 00615000
  623. DROP R1 @V305001 00616000
  624. EJECT 00617000
  625. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00618000
  626. * * 00619000
  627. * CLOSE ANY OUTPUT FILE USED BY THIS COMMAND, THEN * 00620000
  628. * RETURN BACK TO CALLER PASSING IN REGISTER 15 THE * 00621000
  629. * RETURN CODE OF THIS COMMAND. * 00622000
  630. * * 00623000
  631. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00624000
  632. SPACE 2 00625000
  633. ALLDONE SR R15,R15 ZERO RETURN CODE @V305001 00626000
  634. EXIT LR R10,R15 TEMP SAVE RETURN CODE @V305001 00627000
  635. TM SSW,DISK+PUNCH+PRINT+TERM ANY OPTIONS ? @V305001 00628000
  636. BZ CLDSK2 NO, CLOSE DISK FILE @V305001 00629000
  637. TM SSW,PUNCH PUNCH OPTION ? @V305001 00630000
  638. BZ CLPRT NO, CHECK PRINT @V305001 00631000
  639. MVC CLDEV,CPUNCH SET UP DEVICE @V305001 00632000
  640. LA R1,CLOSE GET CLOSE PLIST @V305001 00633000
  641. SVC 202 CLOSE PUNCH @V305001 00634000
  642. DC AL4(*+4) NO-OP @V305001 00635000
  643. CLPRT TM SSW,PRINT PRINT OPTION ? @V305001 00636000
  644. BZ CLDSK NO, CHECK DISK @V305001 00637000
  645. MVC CLDEV,CPRINT SET UP DEVICE @V305001 00638000
  646. LA R1,CLOSE GET CLOSE PLIST @V305001 00639000
  647. SVC 202 CLOSE PRINTER @V305001 00640000
  648. DC AL4(*+4) NO-OP @V305001 00641000
  649. CLDSK TM SSW,DISK DISK OPTION ? @V305001 00642000
  650. BZ EXIT2 NO, RETURN @V305001 00643000
  651. CLDSK2 LA R1,DSKLST GET FINIS PLIST @V305001 00644000
  652. L R15,AFINIS GET DMSFNS ADDRESS @V305001 00645000
  653. BALR R14,R15 CLOSE OUTPUT FILE @V305001 00646000
  654. EXIT2 L R14,SAVE14 LOAD RETURN REGISTER @V305001 00647000
  655. DMSKEY RESET @V305001 00648000
  656. LR R15,R10 RESTORE RETURN CODE @V305001 00649000
  657. BR R14 RETURN TO CALLER @V305001 00650000
  658. EJECT 00651000
  659. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00652000
  660. * * 00653000
  661. * STORAGE AND CONSTANT AREAS * 00654000
  662. * * 00655000
  663. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00656000
  664. SPACE 2 00657000
  665. WORK DS D CVD/UNPK AREA @V305001 00658000
  666. SAVE14 DS F SAVE FOR RETURN REGISTER @V305001 00659000
  667. SAVE10 DS F TEMP. SAVE FOR REG 10 @V305001 00660000
  668. SAVE1 DS F TEMP. SAVE FOR REG 1 @V305001 00661000
  669. PCHNO DS F CARD SERIAL NUMBER @V305001 00662000
  670. SAVERP DS F SAVE FOR RP @V305001 00663000
  671. ENDDIR DC A(INBUF+320) END ADDRESS OF DIR. BLOCK @V305001 00664000
  672. ENDBUF DC A(INBUF+322) END ADDRESS OF DATA BLOCK @V305001 00665000
  673. SRLADR DC 3H'0' ADDRESS OF SYS RELO DIRECTORY @V305001 00666000
  674. SRLDIR DC H'0',H'1',X'2' POINTER TO SYS RELO DIRECTORY @V305001 00667000
  675. SSW DS X INTERNAL SWITCH @V305001 00668000
  676. CUU DS H DISK VIRTUAL ADDRESS @V305001 00669000
  677. BYTECNT DS 3H LOGICAL REC. BYTE COUNT @V305001 00670000
  678. AREA DS 3H ... @V305001 00671000
  679. SENSE DS H SENSE INFO. FROM BAD DIAGNOSE @V305001 00672000
  680. ESD DC X'02',C'ESD' ESD CARD @V305001 00673000
  681. TXT DC X'02',C'TXT' TXT CARD @V305001 00674000
  682. RLD DC X'02',C'RLD' RLD CARD @V305001 00675000
  683. END DC X'02',C'END' END CARD @V305001 00676000
  684. MVPCH MVC 17(0,R4),0(R8) @V305001 00677000
  685. MVPCH1 MVC 0(0,R5),0(R7) @V305001 00678000
  686. MVPCH2 MVC 17(0,R4),0(R7) @V305001 00679000
  687. CDISK DC CL8'DISK' DISK OPTION @V305001 00680000
  688. CPUNCH DC CL8'PUNCH' PUNCH OPTION @V305001 00681000
  689. CPRINT DC CL8'PRINT' PRINT OPTION @V305001 00682000
  690. CTERM DC CL8'TERM' TERM OPTION @V305001 00683000
  691. TEXT DC CL8'TEXT' DEFAULT FILE TYPE @V305001 00684000
  692. IJSYSRL DC CL8'IJSYSRL' PRIV. RELO. DDNAME @V305001 00685000
  693. MDNAME DC CL8' ' MODULE NAME @V305001 00686000
  694. DS 0H @V305001 00687000
  695. BBCCHHR DC H'0' SEEK ADDRESS @V305001 00688000
  696. CCHHR DS X SEARCH ADDRESS @V305001 00689000
  697. CHHR DS X ... @V305001 00690000
  698. HHR DS X ... @V305001 00691000
  699. HR DS X ... @V305001 00692000
  700. R DS X ... @V305001 00693000
  701. DS XL3 ... @V305001 00694000
  702. EJECT 00695000
  703. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00696000
  704. * * 00697000
  705. * CHANNEL PROGRAMS AND COMMON EQUATES * 00698000
  706. * * 00699000
  707. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00700000
  708. SPACE 2 00701000
  709. SEEKCCW CCW SEEK,BBCCHHR,CC+SLI,6 @V305001 00702000
  710. SRCHCCW CCW SEARCH,CCHHR,CC+SLI,5 @V305001 00703000
  711. CCW TIC,SRCHCCW,0,1 @V305001 00704000
  712. READCCW CCW RDDATA,INBUF,CC,80 @V305001 00705000
  713. CCW RDCOUNT,CCHHR,SLI,8 @V305001 00706000
  714. * 00707000
  715. SEEK EQU X'07' SEEK CCW CODE @V305001 00708000
  716. SEARCH EQU X'31' SEARCH CCW CODE @V305001 00709000
  717. TIC EQU X'08' TIC CCW CODE @V305001 00710000
  718. RDDATA EQU X'06' READ DATA CCW CODE @V305001 00711000
  719. RDCOUNT EQU X'92' READ COUNT MT CCW CODE @V305001 00712000
  720. CC EQU X'40' COMMAND CHAIN FLAG @V305001 00713000
  721. SLI EQU X'20' SUPPRESS I.L. FLAG @V305001 00714000
  722. FENCE EQU X'FF' PLIST FENCE CODE @V305001 00715000
  723. LPAR EQU C'(' LEFT PARENS CODE @V305001 00716000
  724. RPAR EQU C')' RIGHT PARENS CODE @V305001 00717000
  725. BLANK EQU C' ' BLANK CHARACTER CODE @V305001 00718000
  726. SYSRES EQU 12 SYSRES LUB INDEX @V305001 00719000
  727. SYSRLB EQU 16 SYSRLB LUB INDEX @V305001 00720000
  728. DIRPL EQU 80 DIRECTORY POINTER LENGHT @V305001 00721000
  729. DIRBL EQU 320 DIRECTORY BLOCK LENGTH @V305001 00722000
  730. DIREND EQU C'*' DIRECTORY END CODE @V305001 00723000
  731. DATABL EQU 322 RELO. LIB. DATA BLOCK LENGHT @V305001 00724000
  732. BYTECNT1 EQU 48 BYTE COUNT 1 @V305001 00725000
  733. BYTECNT2 EQU 56 BYTE COUNT 2 @V305001 00726000
  734. EOC EQU X'20' END OF CYLINDER @V305001 00727000
  735. UNASSGN EQU X'FE' LOGICAL UNIT UNASSIGNED @V305001 00728000
  736. LDTYPE EQU C'1' LD CARD TYPE CODE @V305001 00729000
  737. M7 EQU B'0111' ICM/STCM MASK @V305001 00730000
  738. ZERO EQU 0 CONSTANT @V305001 00731000
  739. ONE EQU 1 CONSTANT @V305001 00732000
  740. THREE EQU 3 CONSTANT @V305001 00733000
  741. FOUR EQU 4 CONSTANT @V305001 00734000
  742. SEVEN EQU 7 CONSTANT @V305001 00735000
  743. EIGHT EQU 8 CONSTANT @V305001 00736000
  744. RC24 EQU 24 RETURN CODE @V305001 00737000
  745. RC28 EQU 28 RETURN CODE @V305001 00738000
  746. RC36 EQU 36 RETURN CODE @V305001 00739000
  747. RC40 EQU 40 RETURN CODE @V305001 00740000
  748. RC100 EQU 100 RETURN CODE @V305001 00741000
  749. EJECT 00742000
  750. * 00743000
  751. * FLAGS FOR INTERNAL SWITCH 'SSW' 00744000
  752. * 00745000
  753. DISK EQU X'80' DISK OUTPUT @V305001 00746000
  754. PUNCH EQU X'40' PUNCH OUTPUT @V305001 00747000
  755. PRINT EQU X'20' PRINT OUTPUT @V305001 00748000
  756. TERM EQU X'10' TERM OUTPUT @V305001 00749000
  757. EOM EQU X'08' END CARD READ @V305001 00750000
  758. PRLLA EQU X'04' SYSRLB VOLUME ACTIVE @V305001 00751000
  759. RLLA EQU X'02' SYSRES VOLUME ACTIVE @V305001 00752000
  760. FIRST EQU X'01' FIRST PRINT INDICATOR @V305066 00753000
  761. EJECT 00754000
  762. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00755000
  763. * * 00756000
  764. * BUFFERS AND CMS FUNCTION'S PLISTS * 00757000
  765. * * 00758000
  766. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00759000
  767. SPACE 2 00760000
  768. DS 0F @V305001 00761000
  769. BLANKS DC CL3' ' CONSTANT @V305066 00762000
  770. CHAR DC X'8B' EJECT ON FIRST PRINT @V305066 00763000
  771. OUTBUF DS CL80 OUTPUT BUFFER @V305001 00764000
  772. BLOCK DS CL160 LOGICAL RECORDS BLOCK @V305001 00765000
  773. INBUF DS CL320 INPUT BUFFER @V305001 00766000
  774. SPACE 2 00767000
  775. DS 0D @V305001 00768000
  776. PUNLST DC CL8'CARDPH' COMMAND NAME @V305001 00769000
  777. DC AL4(OUTBUF) BUFFER ADDRESS @V305001 00770000
  778. DC AL4(80) BUFFER LENGTH @V305001 00771000
  779. SPACE 1 00772000
  780. DS 0D @V305001 00773000
  781. PRTLST DC CL8'PRINTR' COMMAND NAME @V305001 00774000
  782. DC AL4(OUTBUF-1) BUFFER ADDRESS @V305001 00775000
  783. FLAG DC H'1',H'81' FLAG AND BUFFER LENGTH @V305066 00776000
  784. DC 8X'FF' PLIST FENCE @V305001 00777000
  785. SPACE 1 00778000
  786. DS 0D @V305001 00779000
  787. TYPLST DC CL8'TYPLIN' COMMAND NAME @V305001 00780000
  788. DC AL1(1) FLAG @V305001 00781000
  789. DC AL3(OUTBUF) BUFFER ADDRESS @V305001 00782000
  790. DC CL1'B' FLAG @V305001 00783000
  791. DC AL3(80) BUFFER LENGTH @V305001 00784000
  792. SPACE 1 00785000
  793. DS 0D @V305001 00786000
  794. DSKLST DC CL8' ' COMMAND NAME @V305001 00787000
  795. FNAME DC CL8' ' FILE NAME @V305001 00788000
  796. FTYPE DC CL8' ' FILE TYPE @V305001 00789000
  797. DC CL2'A1' FILE MODE @V305001 00790000
  798. DC H'0' ITEM NUMBER @V305001 00791000
  799. DC A(OUTBUF) BUFFER ADDRESS @V305001 00792000
  800. DC A(80) BUFFER LENGTH @V305001 00793000
  801. DC CL2'F' F/V FLAG @V305001 00794000
  802. DC H'1' NUMBER OF ITEMS @V305001 00795000
  803. SPACE 1 00796000
  804. DS 0D @V305001 00797000
  805. CLOSE DC CL8'CP' COMMAND NAME @V305001 00798000
  806. DC CL8'CLOSE' ACTION @V305001 00799000
  807. CLDEV DC CL8' ' DEVICE TO CLOSE @V305001 00800000
  808. DC 8X'FF' PLIST FENCE @V305001 00801000
  809. EJECT 00802000
  810. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00803000
  811. * * 00804000
  812. * ERROR MESSAGES * 00805000
  813. * * 00806000
  814. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00807000
  815. SPACE 2 00808000
  816. ERR001 EQU * @V305001 00809000
  817. DMSERR TEXT='NO MODULE NAME SPECIFIED',NUM=98,LET=E @V305001 00810000
  818. LA R15,RC24 RETURN CODE @V305001 00811000
  819. B EXIT GET OUT @V305001 00812000
  820. SPACE 1 00813000
  821. ERR002 TM SSW,PRLLA PRIV. RELO. ACTIVE ? @V305001 00814000
  822. BO READSYS YES, READ SYSRES THEN... @V305001 00815000
  823. TM SSW,RLLA SYSRES VOLUME ACTIVE ? @V305001 00816000
  824. BZ ERR097 NO, ANOTHER ERROR @V305001 00817000
  825. LA R2,MDNAME POINT TO MODULE NAME @V305001 00818000
  826. DMSERR TEXT='MODULE ''........'' NOT FOUND',NUM=4,LET=E, *00819000
  827. SUB=(CHARA,(R2)) @V305001 00820000
  828. LA R15,RC28 RETURN CODE @V305001 00821000
  829. B EXIT GET OUT @V305001 00822000
  830. EJECT 00823000
  831. ERR003 LR R2,R1 POINT TO OPTION @V305001 00824000
  832. DMSERR TEXT='INVALID OPTION ''........''',NUM=3,LET=E, *00825000
  833. SUB=(CHARA,(R2)) @V305001 00826000
  834. LA R15,RC24 RETURN CODE @V305001 00827000
  835. B EXIT GET OUT @V305001 00828000
  836. SPACE 1 00829000
  837. ERR006 EQU * @V305001 00830000
  838. DMSERR TEXT='NO READ/WRITE ''A'' DISK ACCESSED',NUM=6,LET=E 00831000
  839. LA R15,RC36 RETURN CODE @V305001 00832000
  840. B EXIT GET OUT @V305001 00833000
  841. EJECT 00834000
  842. ERR070 LR R2,R1 POINT TO PARAMETER @V305001 00835000
  843. DMSERR TEXT='INVALID PARAMETER ''........''',NUM=70,LET=E, *00836000
  844. SUB=(CHARA,(R2)) @V305001 00837000
  845. LA R15,RC24 RETURN CODE @V305001 00838000
  846. B EXIT GET OUT @V305001 00839000
  847. SPACE 1 00840000
  848. ERR113 LH R2,CUU GET DISK ADDRESS @V305001 00841000
  849. DMSERR TEXT='DISK (....) NOT ATTACHED',NUM=113,LET=S, @V305001*00842000
  850. SUB=(HEX,(R2)) @V305001 00843000
  851. LA R15,RC100 RETURN CODE @V305001 00844000
  852. B EXIT GET OUT @V305001 00845000
  853. EJECT 00846000
  854. ERR411 LA R3,=CL8'SYSRES' SYSRES TO MSG. @V305001 00847000
  855. TM SSW,PRLLA SYSRLB ACTIVE ? @V305001 00848000
  856. BZ ERR411B NO, BRANCH @V305001 00849000
  857. LA R3,=CL8'SYSRLB' SYSRLB TO MSG. @V305001 00850000
  858. ERR411B LR R2,R15 I/O ERROR CODE @V305001 00851000
  859. DMSERR TEXT='INPUT ERROR CODE ''..'' ON ''........''',NUM=411,*00852000
  860. LET=S,SUB=(DEC,(R2),CHARA,(R3)),RENT=NO @V305001 00853000
  861. LA R15,RC100 RETURN CODE @V305001 00854000
  862. B EXIT GET OUT @V305001 00855000
  863. SPACE 1 00856000
  864. ERR099 EQU * @V305001 00857000
  865. DMSERR TEXT='CMS/DOS ENVIRONMENT NOT ACTIVE',NUM=99,LET=E 00858000
  866. LA R15,RC40 RETURN CODE = 40 @V305066 00859000
  867. B EXIT GET OUT @V305001 00860000
  868. EJECT 00861000
  869. ERR105 LR R2,R15 WRBUF ERROR CODE @V305001 00862000
  870. DMSERR TEXT='ERROR ''..'' WRITING FILE ''....................'*00863000
  871. ' TO DISK',NUM=105,LET=S,SUB=(DEC,(R2),CHAR8A,FNAME), *00864000
  872. RENT=NO @V305001 00865000
  873. LA R15,RC100 RETURN CODE @V305001 00866000
  874. B EXIT GET OUT @V305001 00867000
  875. SPACE 1 00868000
  876. ERR097 EQU * @V305001 00869000
  877. DMSERR TEXT='NO ''SYSRES'' VOLUME ACTIVE',NUM=97,LET=E 00870000
  878. LA R15,RC36 RETURN CODE @V305001 00871000
  879. B EXIT GET OUT @V305001 00872000
  880. EJECT 00873000
  881. NUCON @V305001 00874000
  882. BGCOM @V305001 00875000
  883. DOSCB @V305001 00876000
  884. OSFST @V305001 00877000
  885. REGEQU @V305001 00878000
  886. END 00879000