Table of Contents

DMSPRT Source

References

Source Listing

DMSPRT.ASSEMBLE.txt
  1. PRT TITLE 'DMSPRT (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * MODULE NAME: DMSPRT 00004000
  5. * 00005000
  6. * FUNCTION: TO PRINT CMS FILES 00006000
  7. * 00007000
  8. * ATTRIBUTES: DISK RESIDENT, TRANSIENT, SERIALLY REUSABLE 00008000
  9. * NOTE: PRINT MUST BE GENMOD'D WITH THE SYSTEM OPTION 00008100
  10. * 00009000
  11. * ENTRY POINT: DMSPRT(PRINT) 00010000
  12. * 00011000
  13. * ENTRY CONDITIONS: UPON ENTRY, R13 POINTS TO A 24-FULLWORD SAVE 00012000
  14. * AREA PROVIDED BY DMSITS, AND R1 POINTS TO A PARAMETER LIST 00013000
  15. * IN THE FOLLOWING FORMAT: 00014000
  16. * DS 0F 00015000
  17. * PLIST DC CL8'PRINT' 00016000
  18. * DC CL8'FILENAME' MUST BE GIVEN 00017000
  19. * DC CL8'FILETYPE' MUST BE GIVEN 00018000
  20. * <DC CL8'FILEMODE'> IF NOT GIVEN, 'A ' IS USED 00019000
  21. * <DC CL8'('> NEEDED IF OPTIONS GIVEN 00020000
  22. * <DC CL8'OPTION1'> (OPTIONS IN SUCCESSIVE 00021000
  23. * <DC CL8'OPTION N'> 'CL8' GROUPS) 00022000
  24. * <DC CL8')'> OPTION END - NOT REQUIRED 00023000
  25. * DC 8X'FF' 00024000
  26. * 00025000
  27. * THE VALID OPTIONS ARE: 00026000
  28. * CC - THE FIRST BYTE OF EACH RECORD IS USED FOR CCW 00027000
  29. * COMMAND BUILDING 00028000
  30. * NOCC - X'09' IS USED AS THE FIRST BYTE OF THE LINE 00029000
  31. * MEMBER OR MEM - A 'MACLIB' OR 'TXTLIB' IS TO BE 00030000
  32. * SEARCHED, AND ONE OR ALL MEMBERS ARE 00031000
  33. * TO BE PRINTED. (MUST BE FOLLOWED BY 00032000
  34. * THE MEMBER NAME OR '*') 00033000
  35. * HEX - EACH RECORD IS TO BE PRINTED IN EBCDIC FORM 00034000
  36. * UPCASE OR UP - EACH LOWER CASE ALPHABETIC 00035000
  37. * CHARACTER IS CHANGED 00035500
  38. * TO UPPERCASE. 00036000
  39. * LINECOUN OR LI - THE NUMBER OF LINES TO BE @V2D4921 00036150
  40. * PRINTED ON EACH PAGE. IF ZERO @V2D4921 00036300
  41. * IS SPECIFIED, NO PAGE EJECTS @V2D4921 00036450
  42. * WILL BE PERFORMED FOR THE @V2D4921 00036600
  43. * DURATION OF THE COMMAND. @V2D4921 00036750
  44. * 00037000
  45. * OVERRIDING OPTIONS: 00038000
  46. * IF THE FILETYPE IS 'LISTING', THE CC OPTION IS THE 00039000
  47. * DEFAULT. OTHERWISE, NOCC IS THE DEFAULT. 00040000
  48. * IF NOCC OR HEX IS SPECIFIED, THE CC OPTION IS 00041000
  49. * OVERRIDDEN, EVEN IF CC WAS SPECIFIED 00042000
  50. * OR THE FILETYPE IS 'LISTING' 00043000
  51. * IF HEX IS SPECIFIED, UPCASE IS IGNORED 00044000
  52. * IF LINECOUN IS NOT SPECIFIED, 55 IS THE @V2D4921 00044150
  53. * DEFAULT. IF CC IS IN EFFECT, @V2D4921 00044300
  54. * THE OPTION HAS NO EFFECT, SINCE @V2D4921 00044450
  55. * FORMATTING IS UNDER CONTROL OF @V2D4921 00044600
  56. * CARRIAGE CONTROL IN THE FILE. @V2D4921 00044750
  57. * 00045000
  58. * EXIT CONDITIONS: AT EXIT R15 CONTAINS ONE OF THE FOLLOWING CODES: 00046000
  59. * CODE: MEANING: 00047000
  60. * 0 NO ERRORS - NORMAL COMPLETION 00048000
  61. * 20 ILLEGAL * IN FILEID (FN AND FT MUST BE GIVEN) 00049000
  62. * 24 OPTION ERROR, INCOMPLETE FILEID 00050000
  63. * 28 FILE NOT FOUND 00051000
  64. * 32 LIBRARY ERROR, RECORD TOO LONG 00052000
  65. * 36 PRINTER DEVICE NONEXISTENT OR NOT SUPPORTED 00053000
  66. * 36 TARGET DISK NOT ACCESSED @VA12416 00053500
  67. * 100 DISK ERROR, PRINT ERROR 00054000
  68. * 00055000
  69. EJECT 00056000
  70. * CALLS TO OTHER ROUTINES: DMSSTT - GET FST COPY 00057000
  71. * DMSBRD - READ NEXT RECORD FROM FILE 00058000
  72. * DMSCPF - CLOSE PRINTER 00059000
  73. * DMSFNS - CLOSE FILE 00060000
  74. * DMSFRE - GET, RELEASE FREE STORAGE 00061000
  75. * DMSPIOCC - BUILD CCWS, FILL BUFFER 00062000
  76. * DMSPIOSI - PRINT BUFFER 00063000
  77. * DMSERR - PROCESS ERROR MESSAGES 00064000
  78. * 00065000
  79. * EXTERNAL REFERENCES: NUCON 00066000
  80. * 00067000
  81. * TABLES/WORKAREAS: R13 AREA PROVIDED BY DMSITS 00068000
  82. * (USED WITH UIOSECT DSECT) 00069000
  83. * 00070000
  84. * REGISTER USAGE: 00071000
  85. * R1 PLIST POINTER AT ENTRY 00072000
  86. * R2 PLIST POINTER SAVE 00073000
  87. * R5 INTERNAL RETURN REGISTER 00074000
  88. * R6 ADDRESS OF RECORD BEING PROCESSED 00075000
  89. * R7 LENGTH OF RECORD BEING PROCESSED 00076000
  90. * R11 BASE REG IN BUFFER 00077000
  91. * R12 BASE REG IN CODE 00078000
  92. * R13 BASE REG IN UIOSECT 00079000
  93. * R14 RETURN REG AT ENTRY, INTERNAL RETURN REG 00080000
  94. * R15 RETURN CODE 00081000
  95. * 00082000
  96. * NOTES: DMSPRT PROVIDES A 4096-BYTE BUFFER ON A PAGE BOUNDARY FOR 00083000
  97. * PRINTING. DMSPIOCC IS CALLED TO FILL THIS BUFFER WITH 00084000
  98. * CHAINED CCWS, TIC CCWS, AND DATA. DMSPIOSI IS CALLED TO 00085000
  99. * ISSUE A START I/O AGAINST THE CCW CHAIN IN THE BUFFER. 00086000
  100. * THIS PROCEDURE IS MUCH MORE EFFICIENT THAN ISSUING A 00087000
  101. * SEPARATE START I/O FOR EACH LINE BEING PRINTED. 00088000
  102. * DMSPRT EXECUTES IN THE TRANSIENT AREA, WHICH IS TWO PAGES 00089000
  103. * LONG. THE EXECUTABLE CODE OCCUPIES THE FIRST PAGE, AND 00090000
  104. * THE BUFFER OCCUPIES THE SECOND PAGE. 00091000
  105. * 00092000
  106. * OPERATION: 00093000
  107. * SET UP - 00094000
  108. * 1) CHECK TO INSURE A VIRTUAL 1403, 3211, OR 3203 IS 00095000
  109. * AVAILABLE. IF A 3211 OR 3203, LOAD VIRTUAL FORMS 00096000
  110. * CONTROL BUFFER TO SUIT THIS COMMAND. (THIS FORMS CONTROL 00097000
  111. * BUFFER CONFIGURATION WILL MINIMIZE BREAKING THE CCW CHAIN 00098000
  112. * FOR 'CHAN 9' OR 'CHAN 12', WHILE ALLOWING ALL FUNCTIONS 00099000
  113. * THAT ARE ALLOWED WITH THE DEFAULT CONFIGURATION). 00100000
  114. * 2) SCAN OPTIONS AND SET SWITCHES. 00101000
  115. * 3) CALL DMSSTT(STATE) TO VERIFY EXISTENCE OF FILE. 00102000
  116. * 4) CHECK LARGEST REC LEN AGT ALLOWABLE MAX (132 FOR A 00103000
  117. * 1403 OR 3203 AND 150 FOR A 3211. IF CC IS IN EFFECT 00104000
  118. * LENGTH CAN BE ONE GREATER TO ALLOW FOR CC CHARACTER. 00105000
  119. * IF HEX IS SPECIFIED, RECORD CAN BE UP TO 65,535, THE 00106000
  120. * CMS MAXIMUM). 00107000
  121. * 5) CALL DMSFRE TO GET STORAGE AREA EQUAL TO LARGEST RECORD. 00108000
  122. * 6) SET UP PAGE HEADING, DO INITIAL PAGE EJECT. 00109000
  123. EJECT 00110000
  124. * 7) IF MEMBER OPTION, GO TO ROUTINE 'MEMBS', WHICH READS THE 00111000
  125. * LIBRARY DICTIONARY AND LOCATES THE FIRST, OR ONLY, 00112000
  126. * MEMBER TO BE PRINTED. 00113000
  127. * 00114000
  128. * MAIN LOOP - 00115000
  129. * 8) CALL DMSBRD(RDBUF) TO READ A RECORD FROM THE FILE INTO 00116000
  130. * THE FREE STORAGE AREA PREVIOUSLY OBTAINED. IF 'END OF 00117000
  131. * FILE' RETURNED, GO TO 18. 00118000
  132. * 9) PREPARE THE RECORD FOR PRINTING AS DETERMINED BY THE 00119000
  133. * OPTIONS IN EFFECT: 00120000
  134. * A) HEX - IF HEX PRINT IS WANTED, GO TO 15. 00121000
  135. * B) UP OR UPCASE - TRANSLATE LOWER CASE ALPHA- 00122000
  136. * BETIC CHARACTERS TO UPPER CASE. ALL OTHER 00122500
  137. * CHARACTERS REMAIN UNCHANGED. TRANSLATE 00123000
  138. * TABLE (UPTRTBL) IS USED. 00123500
  139. * C) CC - THE CARRIAGE CONTROL OPTION MEANS THAT THE 00124000
  140. * FIRST CHARACTER OF THE RECORD IS USED TO DETERMINE 00125000
  141. * WHAT PRINT, SPACE, AND SKIP CCWS WILL BE GENERATED. 00126000
  142. * IF CC IS NOT IN EFFECT, USE A X'09' TO PRINT AND 00127000
  143. * SPACE 1 AS THE FIRST BYTE OF THE RECORD, AND ADJUST 00128000
  144. * THE POINTER TO THE RECORD AND THE LENGTH OF THE 00129000
  145. * RECORD TO INCLUDE IT. 00130000
  146. * 10) GO TO 11, AND RETURN TO 8. 00131000
  147. * 00132000
  148. * FILBUF ROUTINE - 00133000
  149. * 11) CALL DMSPIOCC TO GENERATE CCWS FOR THE LINE, AND PUT 00134000
  150. * THE CCWS AND DATA INTO THE BUFFER. 00135000
  151. * 12) IF THE BUFFER IS FULL, CALL DMSPIOSI TO PRINT IT. 00136000
  152. * 13) IF LINECOUN HAS BEEN SATISFIED OR 55 LINES @V2D4921 00136600
  153. * HAVE BEEN PROCESSED, AND CC IS NOT IN @V2D4921 00137200
  154. * EFFECT, DO PAGE EJECT. 00138000
  155. * 14) RETURN TO THE MAIN LOOP (8) OR THE HEX ROUTINE (15) 00139000
  156. * TO PREPARE THE NEXT LINE. 00140000
  157. * 00141000
  158. * HEX ROUTINE - 00142000
  159. * 15) UNPACK 10 GROUPS OF 4 BYTES FROM THE RECORD INTO A 00143000
  160. * LOCAL BUFFER. 00144000
  161. * 16) IF RECORD IS EXHAUSTED, GO TO 11 AND RETURN TO 8. 00145000
  162. * 17) IF MORE OF THE RECORD TO BE TRANSLATED, 00146000
  163. * GO TO 11 AND RETURN TO 15. 00147000
  164. * 00148000
  165. * RETURNS - 00149000
  166. * 18) IF BUFFER NOT EMPTY, CALL DMSPIOSI TO PRINT IT. 00150000
  167. * 19) CALL CP CLOSE TO CLOSE THE PRINTER. 00151000
  168. * 20) CALL DMSFNS TO CLOSE THE FILE. 00152000
  169. * 21) CALL DMSFRE TO RELEASE FREE STORAGE. 00153000
  170. * 22) RETURN TO CMS. 00154000
  171. * 00155000
  172. * NOTE: IF AN ERROR IS DETECTED, DMSERR IS CALLED TO PROCESS 00156000
  173. * AN ERROR MESSAGE, AND THEN THE 'RETURNS' SECTION IS 00157000
  174. * ENTERED AT AN APPROPRIATE POINT TO CLOSE ONLY 00158000
  175. * THOSE THINGS THAT HAD BEEN OPENED AT THE TIME OF 00159000
  176. * THE ERROR. 00160000
  177. * 00161000
  178. *. 00162000
  179. ********************************************************************** 00163000
  180. EJECT 00164000
  181. ********************************************************************** 00165000
  182. * 00166000
  183. * SETUP 00167000
  184. * 00168000
  185. ********************************************************************** 00169000
  186. SPACE 1 00170000
  187. DMSPRT START X'E000' 00171000
  188. PRINT EQU DMSPRT 00172000
  189. ENTRY PRINT 00173000
  190. USING *,R12,R11 00174000
  191. LR R12,R15 ESTABLISH ADDRESSABILITY 00175000
  192. L R11,=A(PRINT+4096) 00176000
  193. USING UIOSECT,R13 00177000
  194. USING NUCON,R0 00178000
  195. ST R14,UIOSAVE SAVE RETURN ADDRESS 00179000
  196. SPACE 1 00180000
  197. LA R3,BUFDATA SET COUNTER TO BEGINNING OF BUFFER 00181000
  198. SR R4,R4 AND ZERO BATCTR 00182000
  199. STM R3,R4,BUFCTR ... 00183000
  200. SPACE 1 00184000
  201. LA R2,132 SET 1403 OR 3203 CARRIAGE SIZE @V386298 00185000
  202. STH R2,CARRSZ ... 00186000
  203. LA R2,14 ASSUME DEVICE '00E' 00187000
  204. DC X'83',X'23',XL2'0024' ISSUE DEVICE TYPE DIAGNOSE 00188000
  205. BC 1,ERR008A DEVICE NOT ATTACHED - ERROR 08 00189000
  206. ST R3,UIODIAG RESULTS STORED 00190000
  207. CLI UIOVTYPC,CLASURO UNIT RECORD OUTPUT CLASS? 00191000
  208. BNE ERR008 NO, ERROR 08 00192000
  209. CLI UIOVTYPE,TYP1403 IS IT A 1403? 00193000
  210. BE DEVOK IF SO, CONTINUE 00194000
  211. CLI UIOVTYPE,TYP3203 IS IT A 3203 PRINTER?? @V386298 00194100
  212. BE LDVFCB YES--LOAD VIRTUAL FCB @V386298 00194200
  213. CLI UIOVTYPE,TYP3211 IS IT A 3211? 00195000
  214. BNE ERR008 NEITHER 1403/3203/3211 00196000
  215. LA R2,150 IT'S A 3211 - SET CARRIAGE SIZE 00197000
  216. STH R2,CARRSZ ... 00198000
  217. LDVFCB EQU * @V386298 00198100
  218. MVC BUFDATA(88),CCWLFCB LOAD VIRT. 3203 OR 3211 @V386298 00199000
  219. LA R3,BUFDATA+88 SET COUNTER TO NEXT ADDRESS 00200000
  220. ST R3,BUFCTR ... 00201000
  221. SPACE 1 00202000
  222. DEVOK EQU * WE HAVE A SUPPORTED PRINTER... 00203000
  223. LR R2,R1 SAVE PLIST POINTER TO FREE R1 00204000
  224. MVI SWS,FIRST CLEAR SWITCHES TO FIRST PASS SWITCH 00205000
  225. LA R3,55 SET DEFAULT LINE COUNT @V2D4921 00205300
  226. ST R3,KOUNT ... @V2D4921 00205600
  227. * 00206000
  228. * DETERMINE FILEID OF FILE TO BE PRINTED 00207000
  229. * 00208000
  230. LM R3,R7,8(R2) REGS CONTAIN GIVEN FILEID 00209000
  231. LM R8,R10,SCANFO R8=X'FF', R9=C'*', R10=C'(' 00210000
  232. CLR R3,R8 NO FILEID GIVEN? 00211000
  233. BE ERR054 INCOMPLETE FILEID 00212000
  234. CLR R3,R9 IS FILENAME GIVEN AS '*'? 00213000
  235. BE ERR062 ILLEGAL * 00214000
  236. CLR R3,R10 OPTION START? 00215000
  237. BE ERR054 INCOMPLETE FILEID 00216000
  238. CLR R5,R8 NO FILETYPE GIVEN? 00217000
  239. BE ERR054 INCOMPLETE FILEID 00218000
  240. CLR R5,R9 FILETYPE GIVEN AS '*'? 00219000
  241. BE ERR062 ILLEGAL * 00220000
  242. CLR R5,R10 OPTION START? 00221000
  243. BE ERR054 INCOMPLETE FILEID 00222000
  244. LR R9,R7 SAVE 24(PLIST) IN R9 00223000
  245. CLR R7,R8 FILEMODE NOT GIVEN? 00224000
  246. BE MODEA ASSUME FM=A 00225000
  247. CLR R7,R10 OPTION START? 00226000
  248. BE MODEA MODE NOT GIVEN - ASSUME FM=A 00227000
  249. CLI 26(R2),C' ' IS FILEMODE > 2 CHARACTERS? @V2D4921 00227100
  250. BNE ERR048 BRANCH IF YES @V2D4921 00227200
  251. CLI 25(R2),C' ' IS FILEMODE 2 CHARACTERS? @V2D4921 00227300
  252. BE MODE BRANCH IF NOT @V2D4921 00227400
  253. CLI 25(R2),X'F0' IS SECOND CHAR < 0? @V2D4921 00227500
  254. BL ERR048 BRANCH IF YES @V2D4921 00227600
  255. CLI 25(R2),X'F5' IS SECOND CHAR > 5? @V2D4921 00227700
  256. BH ERR048 BRANCH IF YES @V2D4921 00227800
  257. MODE EQU * @V2D4921 00227900
  258. ICM R7,B'0011',BITS FILEMODE GIVEN - USE IT 00228000
  259. B SETLIST 00229000
  260. MODEA L R7,AMODE ASSUME FILEMODE OF 'A ' 00230000
  261. SETLIST STM R3,R7,FILENAME SET FILE SYSTEM PLIST WITH FILEID 00231000
  262. L R1,BITS INITIALIZE OTHER FIELDS TO '0001' 00232000
  263. ST R1,RECNO ... 00233000
  264. STH R1,FILENOIT ... 00234000
  265. MVC FILE(8),=CL8'STATE' SET FILE PLIST FOR STATE CALL 00235000
  266. * 00236000
  267. * SCAN OPTIONS, SET APPROPRIATE SWITCHES 00237000
  268. * 00238000
  269. CLR R9,R8 24(PLIST) = X'FF'? 00239000
  270. BE CKEXIST IF SO,END OF PLIST 00240000
  271. CLR R9,R10 24(PLIST) = C'('? 00241000
  272. BNE SCAN6 IF NOT, FILEMODE WAS GIVEN 00242000
  273. LA R9,32(,R2) POINT TO PARMS 00243000
  274. SCAN1 CLI 0(R9),C')' END OF PARMS 00244000
  275. BE CKEXIST YES 00245000
  276. CLI 0(R9),X'FF' END OF OPTIONS 00246000
  277. BE CKEXIST YES 00247000
  278. CLC 0(4,R9),=CL4'CC' CONTROL WANTED? @V2D4921 00248000
  279. BNE SCAN2 NO 00249000
  280. OI SWS,CC YES 00250000
  281. LA R9,8(,R9) INCR POINTER 00251000
  282. B SCAN1 00252000
  283. SCAN2 CLC 0(8,R9),=CL8'NOCC' 00253000
  284. BNE SCAN2A @V2D4921 00254000
  285. OI SWS,NOCC SET NOT-CC SWITCH 00255000
  286. LA R9,8(,R9) INCR POINTER 00256000
  287. B SCAN1 00257000
  288. SCAN2A CLC 0(8,R9),=CL8'LINECOUN' @V2D4921 00257060
  289. BE SCAN2B @V2D4921 00257120
  290. CLC 0(4,R9),=CL4'LI' @V2D4921 00257180
  291. BNE SCAN3 @V2D4921 00257240
  292. SCAN2B CLI 8(R9),C')' WAS A NUMBER GIVEN? @V2D4921 00257300
  293. BE ERR029 NO, ERROR @V2D4921 00257360
  294. CLI 8(R9),X'FF' OR IF THIS IS THE END OF THE LINE@V2D4921 00257420
  295. BE ERR029 IT'S THE SAME ERROR @V2D4921 00257480
  296. CLI 10(R9),C' ' MORE THAN TWO DIGITS? @V2D4921 00257540
  297. BNE ERR029 BRANCH IF YES, ERROR @V2D4921 00257600
  298. MVC KOUNT(2),8(R9) MOVE CHARACTER FORM NUMBER @V2D4921 00257660
  299. CLI KOUNT,X'F0' @V2D4921 00257720
  300. BL ERR029 NOT A VALID NUMBER @V2D4921 00257780
  301. CLI KOUNT,X'F9' GREATER THAN NINE? @V2D4921 00257840
  302. BH ERR029 NOT A VALID NUMBER @V2D4921 00257900
  303. NI KOUNT,X'0F' REMOVE ZONE FROM NUMBER @V2D4921 00257960
  304. SR R1,R1 CLEAR A REGISTER @V2D4921 00258020
  305. IC R1,KOUNT GET HIGH ORDER DIGIT OF NUMBER @V2D4921 00258080
  306. CLI KOUNT+1,X'40' WAS THERE ONLY ONE DIGIT? @V2D4921 00258140
  307. BE ONLYONE YES, GO @V2D4921 00258200
  308. CLI KOUNT+1,X'F0' NUMBER LESS THAN ZERO? @V2D4921 00258260
  309. BL ERR029 BRANCH IF YES @V2D4921 00258320
  310. CLI KOUNT+1,X'F9' GREATER THAN NINE? @V2D4921 00258380
  311. BH ERR029 BRANCH IF YES @V2D4921 00258440
  312. MH R1,=H'10' MULTIPLY HIGH ORDER DIGIT @V2D4921 00258500
  313. NC KOUNT(2),=X'000F' KEEP ONLY LOW ORDER DIGIT @V2D4921 00258560
  314. AH R1,KOUNT AND ADD IN LOW ORDER DIGIT @V2D4921 00258620
  315. ONLYONE ST R1,KOUNT SET LINE COUNT VALUE @V2D4921 00258680
  316. LA R9,16(,R9) GO TO NEXT OPTION @V2D4921 00258740
  317. B SCAN1 ... @V2D4921 00258800
  318. SCAN3 EQU * @V2D4921 00258860
  319. CLC 0(4,R9),=CL4'UP' UPPER CASE? @V2D4921 00258920
  320. BE SCAN3A 00259000
  321. CLC 0(8,R9),=CL8'UPCASE' UPPER CASE? 00260000
  322. BNE SCAN4 00261000
  323. SCAN3A OI SWS,UPRCS YES 00262000
  324. LA R9,8(,R9) INCR POINTER 00263000
  325. B SCAN1 00264000
  326. SCAN4 EQU * @V2D4921 00264600
  327. CLC 0(4,R9),=CL4'MEM' MEMBER WANTED? @V2D4921 00265200
  328. BE SCAN4B 00266000
  329. CLC 0(8,R9),=CL8'MEMBER' MEMBER WANTED 00267000
  330. BNE SCAN5 00268000
  331. SCAN4B OI SWS,MEMB TURN ON MEMBER PRESENT 00269000
  332. CLC 8(4,R9),SCANFO+4 ALL MEMBERS? @V2D4921 00270000
  333. BE SCAN4A YES 00271000
  334. CLI 8(R9),C')' IS IT END OF LINE 00272000
  335. BE ERR029 ERROR IF IT IS 00273000
  336. CLI 8(R9),X'FF' END OF LIST 00274000
  337. BE ERR029 ERROR IF IT IS 00275000
  338. MVC NAME1(8),8(R9) SAVE NAME 00276000
  339. OI SWS,NAME TURN ON MEMB NAME 00277000
  340. SCAN4A LA R9,16(,R9) 00278000
  341. B SCAN1 00279000
  342. SCAN5 EQU * @V2D4921 00279600
  343. CLC 0(4,R9),=CL4'HEX' HEX WANTED? @V2D4921 00280200
  344. BNE ERR003 END OF LINE,DON'T KNOW WHAT IT IS 00281000
  345. OI SWS,HEX TURN ON HEX PRINT 00282000
  346. LA R9,8(,R9) INCR PTR 00283000
  347. B SCAN1 GO BACK 00284000
  348. SCAN6 CLI 32(R2),X'FF' END OF PLIST? 00285000
  349. BE CKEXIST YES 00286000
  350. CLI 32(R2),C'(' BEGINNING OF PARAMETERS 00287000
  351. BNE SCAN6A DON'T KNOW WHAT IT IS 00288000
  352. LA R9,40(,R2) 00289000
  353. B SCAN1 00290000
  354. SCAN6A LA R9,32(R2) POINT TO STRANGE PARM 00291000
  355. B ERR070 @V2D4921 00292000
  356. SPACE 1 00293000
  357. CKEXIST EQU * 00294000
  358. CLC FILETYPE(8),=CL8'LISTING' IS IT A LISTING FILE? 00295000
  359. BNE CK1 BRANCH IF NOT 00296000
  360. OI SWS,CC LISTING FILE DEFAULTS TO CC 00297000
  361. CK1 TM SWS,NOCC UNLESS OVERRIDDEN... 00298000
  362. BZ CK2 00299000
  363. NI SWS,255-CC ...IN WHICH CASE TURN IT OFF 00300000
  364. CK2 TM SWS,HEX ...OR UNLESS HEX SPECIFIED... 00301000
  365. BZ CK3 00302000
  366. NI SWS,255-CC ...IN WHICH CASE ALSO TURN IT OFF 00303000
  367. * 00304000
  368. * CHECK EXISTENCE OF FILE 00305000
  369. * 00306000
  370. CK3 EQU * 00307000
  371. LA R1,FILE POINT TO FILE PLIST 00308000
  372. L R15,ASTATE @V305066 00309000
  373. BALR R14,R15 ... @V305066 00309100
  374. BNZ STATERR ERROR RETURN @V305066 00309200
  375. L R3,FILEBUFF LOCATION OF FST COPY 00311000
  376. L R1,32(,R3) RECORD LENGTH IN R1 00312000
  377. TM SWS,HEX IF HEX WANTED... 00313000
  378. BO RECLOK ...SKIP LENGTH CHECK 00314000
  379. LH R4,CARRSZ PRINTER CARRIAGE SIZE IN R4 00315000
  380. TM SWS,CC IF CARRIAGE CONTROL SUPPLIED... 00316000
  381. BZ CKRECL ... 00317000
  382. LA R4,1(,R4) ...RECORD LENGTH CAN BE 1 MORE 00318000
  383. CKRECL CR R1,R4 RECORD LENGTH OK? 00319000
  384. BH ERR044 ERROR IF TOO LONG 00320000
  385. SPACE 1 00321000
  386. RECLOK MVC FILECOMM,=CL8'RDBUF' SET FILE PLIST FOR READING 00322000
  387. ST R1,FILESIZE RECORD LENGTH INTO FILE PLIST 00323000
  388. LA R1,7(,R1) ROUND NUMBER UP... 00324000
  389. SRL R1,3 ...IN DOUBLEWORDS... 00325000
  390. LA R0,1(,R1) ...PLUS ONE 00326000
  391. ST R0,STRG SAVE LENGTH 00327000
  392. DMSFREE DWORDS=(0) 00328000
  393. ST R1,AREA SAVE ADDRESS OF STORAGE 00329000
  394. TM SWS,CC CARRIAGE CONTROL PROVIDED? 00330000
  395. BO STSTG BRANCH IF SO 00331000
  396. MVI 0(R1),X'09' MOVE IN DEFAULT CARRIAGE CONTROL 00332000
  397. LA R1,1(,R1) INCREASE BUFFER ADDRESS PAST X'09' 00333000
  398. STSTG ST R1,FILEBUFF BUFFER ADDRESS FOR RDBUF 00334000
  399. SPACE 1 00335000
  400. * 00336000
  401. * SET UP TITLE 00337000
  402. * 00338000
  403. LA R3,INSTALID V(INSTALLATION HEADING) 00339000
  404. MVC FILEHD+22(64),0(R3) MOVE HEADING TO LOCAL BUFFER 00340000
  405. MVC FILEHD(8),FILENAME SET UP FILEID 00341000
  406. MVC FILEHD+9(8),FILETYPE ... 00342000
  407. MVC FILEHD+18(2),FILEMODE ... 00343000
  408. ZAP PAGCNT,H12 INITIALIZE PAGE NUMBER COUNT 00344000
  409. LA R14,MEMBS SET RETURN FROM 1ST PAGE EJECT 00345000
  410. TM SWS,MEMB PRINTING FROM A LIBRARY? 00346000
  411. BO SETUPEND YES, CHECK PAGE EJECT @V2D4921 00347000
  412. LA R14,MAINLOOP NO, CHANGE RETURN FROM 1ST PAGE EJECT 00348000
  413. SETUPEND EQU * @V2D4921 00348500
  414. TM SWS,CC CARRIAGE CONTROL PROVIDED? @V2D4921 00349000
  415. BOR R14 YES, SKIP INITIAL EJECT @V2D4921 00349500
  416. EJECT 00350000
  417. ********************************************************************** 00351000
  418. * 00352000
  419. * PAGE EJECT ROUTINE 00353000
  420. * 00354000
  421. ********************************************************************** 00355000
  422. SPACE 1 00356000
  423. PAGE EQU * 00357000
  424. NI SWS,255-EJEC REMOVE EJECT FLAG 00357500
  425. AP PAGCNT,=PL2'1' INCREMENT PAGE NUMBER 00358000
  426. UNPK HDCNT(3),PAGCNT(2) SET NEW PAGE NUMBER 00359000
  427. OI HDCNT+2,X'F0' ... 00360000
  428. LM R6,R7,PABUF SET TO SKIP, PRINT HEADING 00361000
  429. BAL R5,FILBUF 00362000
  430. LM R6,R7,PASPACE AND SPACE 3 00363000
  431. BAL R5,FILBUF 00364000
  432. L LINCNT,KOUNT INITIALIZE LINE COUNT @V2D4921 00365000
  433. BR R14 RETURN 00366000
  434. EJECT 00367000
  435. ********************************************************************** 00368000
  436. * MAIN LOOP 00369000
  437. * 00370000
  438. ********************************************************************** 00371000
  439. SPACE 1 00372000
  440. MAINLOOP EQU * 00373000
  441. TM SWS,MEMB PRINTING A LIBRARY MEMBER? 00374000
  442. BZ MAINRD NO, READ A RECORD 00375000
  443. L R1,FILEBUFF POINT TO RECORD 00376000
  444. CLC 0(4,R1),=X'61FFFF61' END OF MEMBER RECORD? 00377000
  445. BE MEMEND BRANCH IF SO 00378000
  446. LA R4,1(,R4) INCREMENT ITEM NUMBER 00379000
  447. STH R4,FILEITNO AND SET IN FILE PLIST 00380000
  448. B MAINRD READ NEXT RECORD 00381000
  449. SPACE 1 00382000
  450. MEMEND LA R15,12 SIMULATE EOF IN CASE FINISHED 00383000
  451. TM SWS,NAME MEMBER NAME GIVEN? 00384000
  452. BO READERR YES, PRINTING SINGLE MEMBER ONLY 00385000
  453. SPACE 1 00386000
  454. MEMFIND L R1,DICTADR PREPARE TO LOCATE NEXT MEMBER 00387000
  455. LA R1,12(,R1) POINT TO NEXT DICTIONARY ENTRY 00388000
  456. C R1,DICTEND END OF ALL MEMBERS? 00389000
  457. BNL READERR YES, END 00390000
  458. ST R1,DICTADR NO, STORE NEW ADDRESS 00391000
  459. CLI 0(R1),X'00' NULL DICTIONARY ENTRY? 00392000
  460. BE MEMFIND IF SO, LOOK AGAIN 00393000
  461. LH R4,8(,R1) IF NOT, GET STARTING LOCATION 00394000
  462. STH R4,FILEITNO AND SET IT IN PLIST 00395000
  463. SPACE 1 00396000
  464. MAINRD EQU * 00397000
  465. LA R1,FILE SET TO READ A RECORD 00398000
  466. L R15,ARDBUF RDBUF @V305066 00399000
  467. BALR R14,R15 ... @V305066 00399100
  468. BNZ READERR ERROR RETURN @V305066 00399200
  469. TM SWS,EJEC WAS EJECT WANTED? 00400200
  470. BZ NOEJEC BRANCH IF NOT 00400400
  471. BAL R14,PAGE GO EJECT 00400600
  472. NOEJEC EQU * 00400800
  473. L R6,FILEBUFF BUFFER LOCATION TO R6 00401000
  474. L R7,FILENORD BYTE COUNT TO R7 00402000
  475. TM SWS,HEX IF HEX WANTED... 00403000
  476. BO HEXRTN ...GO TO HEX ROUTINE 00404000
  477. TM SWS,CC CARRIAGE CONTROL PROVIDED? 00405000
  478. BO CTROK BRANCH IF SO 00406000
  479. BCTR R6,0 REDUCE LOCATION TO INCLUDE OUR CC 00407000
  480. LA R7,1(,R7) AND INCREASE COUNT 00408000
  481. SPACE 1 00409000
  482. CTROK TM SWS,UPRCS TRANSLATE TO UPPERCASE? 00410000
  483. BZ CASEOK BRANCH IF NOT 00411000
  484. LA R3,1(,R6) POINT TO DATA (1 PAST CC CHAR) 00412000
  485. LR R5,R7 CALCULATE BYTE COUNT FOR EX 00413000
  486. BCTR R5,0 SUBTRACT 1 FOR NOT XLATING CC CHAR 00414000
  487. LTR R5,R5 ONLY 1 BYTE IN RECORD? @VA05422 00414100
  488. BZ TRANS YES DON'T DECREMENT FURTHER @VA05422 00414200
  489. BCTR R5,0 SUBTRACT 1 FOR EXECUTE INSTRUCTION 00415000
  490. TRANS EQU * @VA05422 00415100
  491. LA R8,UPTRTBL GET UPCASE XLATE TABLE ADDR @VA10604 00415200
  492. EX R5,UPTRANS TRANSLATE TO UPPERCASE 00416000
  493. SPACE 1 00417000
  494. CASEOK TM SWS,CC+FIRST IS THIS FIRST PASS WITH CC GIVEN? 00418000
  495. BNO PRTOK BRANCH IF NOT 00419000
  496. NI SWS,255-FIRST TURN OFF SW - IF NOT CC, NOT USED 00420000
  497. CLI 0(R6),C'1' IS THIS ASA CHAR FOR EJECT? 00421000
  498. BE PRTOK YES, GOOD 00422000
  499. CLI 0(R6),X'8B' OR EJECT IMMEDIATE? 00425000
  500. BE PRTOK YES, GOOD 00426000
  501. L R5,BUFCTR MOVE IN OUR OWN EJECT 00427000
  502. MVC 0(8,R5),CCWEJCT ... 00428000
  503. LA R5,8(,R5) UPDATE BUFCTR 00429000
  504. ST R5,BUFCTR ... 00430000
  505. SPACE 1 00431000
  506. PRTOK BAL R5,FILBUF GO FILL BUFFER 00432000
  507. LA R14,MAINLOOP SET RETURN TO GET ANOTHER RECORD 00433000
  508. TM SWS,CC IF CARRIAGE CONTROL PROVIDED... 00434000
  509. BCR B'0001',R14 ...GO GET NEXT RECORD IMMEDIATELY 00435000
  510. BCTR LINCNT,R14 OTHERWISE, DECREMENT LINE COUNT 00436000
  511. OI SWS,EJEC IF EXHAUSTED, SET EJECT WANTED 00436600
  512. BR R14 00437200
  513. SPACE 1 00438000
  514. * 00439000
  515. * FOLLOWING INSTRUCTION IS THE SUBJECT INSTRUCTION OF EX 00440000
  516. * 00441000
  517. UPTRANS TR 0(0,R3),0(R8) TRANSLATE TO UPPERCASE @VA10604 00442000
  518. EJECT 00443000
  519. ********************************************************************* 00444000
  520. * 00445000
  521. * SUBROUTINE TO CALL DMSPIO TO FILL BUFFER AND PRINT BUFFER. 00446000
  522. * R6 = LINE LOCATION 00447000
  523. * R7 = LINE BYTE COUNT 00448000
  524. * R5 = RETURN ADDRESS 00449000
  525. * LINE STARTS WITH A CARRIAGE CONTROL CHARACTER 00450000
  526. * 00451000
  527. ********************************************************************** 00452000
  528. SPACE 1 00453000
  529. FILBUF EQU * 00454000
  530. STM R0,R14,LSAVE SAVE REGISTERS 00455000
  531. L R15,ADMSPIOC ADDRESS OF DMSPIOCC 00456000
  532. STM R6,R7,BLDCCW+8 LINE LOC AND LENGTH TO DMSPIO PLIST 00457000
  533. LA R1,BLDCCW ADDRESS OF DMSPIOCC PLIST 00458000
  534. BALR R14,R15 CALL DMSPIO 00459000
  535. BALR R15,0 REGAIN ADDRESSABILITY 00460000
  536. USING *,R15 ... 00461000
  537. LM R0,R14,LSAVE RESTORE REGS 00462000
  538. DROP R15 00463000
  539. SPACE 1 00464000
  540. L R8,BUFCTR DETERMINE IF BUFFER IS FULL 00465000
  541. L R9,LIMIT ... 00466000
  542. CR R8,R9 ... 00467000
  543. BL BUFRESM BUFFER NOT FULL - RETURN 00468000
  544. SPACE 1 00469000
  545. BUFFUL LM R3,R4,CCWNOP PUT NOP AT END OF BUFFER 00470000
  546. STM R3,R4,0(R8) ... 00471000
  547. LA R1,PRTBUF ADDRESS OF PLIST TO PRINT BUFFER 00472000
  548. SVC 202 00473000
  549. DC AL4(BUFERR) 00474000
  550. LA R3,BUFDATA RESTORE BUFCTR TO BEGINNING OF BUFFER 00475000
  551. SR R4,R4 AND ZERO BATCTR 00476000
  552. STM R3,R4,BUFCTR ... 00477000
  553. SPACE 1 00478000
  554. BUFRESM LM R0,R14,LSAVE RESTORE REGISTERS AGAIN 00479000
  555. BR R5 RETURN 00480000
  556. EJECT 00481000
  557. ********************************************************************** 00482000
  558. * HEX CONVERSION ROUTINE 00483000
  559. * ON ENTRY- 00484000
  560. * R6 HAS BUFFER START ADDRESS 00485000
  561. * R7 HAS LENGTH OF RECORD 00486000
  562. * 00487000
  563. ********************************************************************** 00488000
  564. SPACE 1 00489000
  565. HEXRTN EQU * 00490000
  566. * PRINT HEADER IN FORM: RECORD= XXXXX LENGTH= XXXXX 00491000
  567. HEX1 CVD R7,DECD 00492000
  568. MVC RSZF(6),RSZM SET EDIT MASK 00493000
  569. ED RSZF(6),DECD+5 EDIT NUMBER TO MSG 00494000
  570. L R5,RECNO *UPDATE RECORD COUNT 00495000
  571. CVD R5,DECD 00496000
  572. LA R5,1(R5) INCR COUNT 00497000
  573. ST R5,RECNO SAVE FOR NEXT TIME 00498000
  574. MVC RNOF(6),RNOM SET EDIT MASK 00499000
  575. ED RNOF(6),DECD+5 EDIT REC NUM TO MSG 00500000
  576. SPACE 1 00501000
  577. STM R6,R7,HXSAVE SAVE RECORD ADDR/LENGTH 00502000
  578. LM R6,R7,PHDR SET FOR PRINTING HEADER 00503000
  579. BAL R5,FILBUF PUT HEADER IN BUFFER 00504000
  580. BCT LINCNT,HEX1A DECREMENT LINE COUNT 00505000
  581. BAL R14,PAGE ...AND IF EXHAUSTED DO PAGE EJECT 00506000
  582. HEX1A LM R6,R7,HXSAVE RESTORE RECORD ADDR/LENGTH 00507000
  583. SPACE 1 00508000
  584. * DEBLOCK AND CONVERT EACH WORD IN INPUT RECORD AND 00509000
  585. * OUTPUT IT 00510000
  586. * R6=BUFFER ADDR 00511000
  587. * R7=LENGTH IN BYTES 00512000
  588. * 00513000
  589. SPACE 1 00514000
  590. OUTER1 LA R8,4 INCREMENT VALUE IN R8 00515000
  591. SR R6,R8 REDUCE R6 FOR BXH 00516000
  592. LA R7,0(,R7) INSURE HIGH ORDER BYTE IS ZERO 00517000
  593. LA R9,0(R7,R6) SET END OF REQUESTED BUFFER 00518000
  594. OUTER LA R3,PBUF 00519000
  595. LA R2,10 00520000
  596. MVI PBUF,C' ' CLEAR BUFFER 00521000
  597. MVC PBUF+1(129),PBUF * 00522000
  598. INNER BXH R6,R8,ENDREC 00523000
  599. LA R14,0(R3) 00524000
  600. LA R15,0(R6) 00525000
  601. UNPK HEXUNPK(9),0(5,R15) 00526000
  602. TR HEXUNPK(9),HEXTRTBL 00527000
  603. MVC 0(8,R14),HEXUNPK 00528000
  604. LA R3,10(,R3) 00529000
  605. BCT R2,INNER 00530000
  606. SPACE 1 00531000
  607. STM R6,R7,HXSAVE 00532000
  608. LM R6,R7,PHEX 00533000
  609. BAL R5,FILBUF PUT LINE IN BUFFER 00534000
  610. BCT LINCNT,HEX1B DECREMENT LINE COUNT 00535000
  611. LA R3,4 EXHAUSTED, CHECK IF RECORD LEFT 00535200
  612. A R3,HXSAVE SET FOR NEXT WORD 00535400
  613. CR R3,R9 IS THERE ONE? 00535600
  614. BNL HEX1C BRANCH IF NOT 00535800
  615. BAL R14,PAGE ...AND IF EXHAUSTED DO PAGE EJECT 00536000
  616. B HEX1B 00536100
  617. * 00536200
  618. * RESTORE LINCNT FOR LATER BCT AND POSS. EJECT 00536300
  619. * 00536400
  620. HEX1C EQU * 00536500
  621. LA LINCNT,1 00536600
  622. HEX1B LM R6,R7,HXSAVE 00537000
  623. B OUTER 00538000
  624. SPACE 1 00539000
  625. ENDREC LA R14,MAINLOOP SET RETURN IN CASE PAGE EJECT NEEDED 00540000
  626. SR R6,R9 SEE IF ANY BYTES LEFT TO TRANSLATE 00541000
  627. SR R8,R6 (R8 HAD A 4 IN IT) 00542000
  628. AR R6,R9 00543000
  629. LTR R8,R8 REMAINDER - MUST BE 0,1,2, OR 3 00544000
  630. BNZ ENDREC1 WE HAVE 1,2, OR 3 BYTES TO TRANSLATE 00545000
  631. LA R8,10 SEE IF ANYTHING IN PBUF 00546000
  632. CR R2,R8 IF R2=10, WAS 1ST PASS IN INNER 00547000
  633. BE SPACER ...AND NOTHING YET IN CLEARED PBUF 00548000
  634. B LSTWRT OTHERWISE, MOVE PBUF TO MAIN BUFFER 00549000
  635. SPACE 1 00550000
  636. ENDREC1 SR R9,R9 PUT INTO R9 LENGTHS FOR EX SUBJECTS 00551000
  637. IC R9,UNPKTBL(R8) ...BY INDEXING NO. BYTES LEFT INTO TAB 00552000
  638. SLL R8,1 READY FOR TR MASK 00553000
  639. BCTR R8,0 00554000
  640. EX R9,UNPK DO UNPACK 00555000
  641. EX R8,TR AND TRANSLATE 00556000
  642. EX R8,MVC AND MVC 00557000
  643. SPACE 1 00558000
  644. LSTWRT LM R6,R7,PHEX SET REGS TO FILL BUFFER 00559000
  645. BAL R5,FILBUF PUT LAST LINE IN BUFFER 00560000
  646. BCT LINCNT,SPACER DECREMENT LINE COUNT, SPACE 1 00561000
  647. OI SWS,EJEC SET EJECT WANTED 00561600
  648. BR R14 00562200
  649. SPACE 1 00563000
  650. SPACER LM R6,R7,HXSPACE SET REGS TO SPACE 1 00564000
  651. BAL R5,FILBUF SPACE 1 00565000
  652. BCTR LINCNT,R14 DECREMENT LINE COUNT, GET NEXT RECORD 00566000
  653. OI SWS,EJEC SET EJECT WANTED 00566600
  654. BR R14 00567200
  655. EJECT 00568000
  656. ********************************************************************** 00569000
  657. * READ AND CHECK FOR 'LIB' LIBRARY. GET STORAGE AND READ DICTIONARY 00570000
  658. * INTO IT. IF MEMBER NAME WANTED SEARCH FOR IT AND SET REGS. 00571000
  659. * R2-LENGTH,R4-DICTIONARY LOCATION OF CURRENT NAME. 00572000
  660. * DICTIONARY FORM- 00573000
  661. * CL8'NAME' 00574000
  662. * CL2'INDEX' 00575000
  663. * CL2'LENGTH' 00576000
  664. * 00577000
  665. ********************************************************************** 00578000
  666. SPACE 1 00579000
  667. MEMBS EQU * 00580000
  668. L R7,AREA POINT TO BUFFER 00581000
  669. ST R7,FILEBUFF STORE IN PLIST 00582000
  670. LA R5,1 00583000
  671. STCM R5,B'0011',FILEITNO SET ITEM NUMBER TO 1ST RECORD 00584000
  672. LA R1,FILE READ DICTIONARY POINTER 00585000
  673. L R15,ARDBUF RDBUF @V305066 00586000
  674. BALR R14,R15 ... @V305066 00586100
  675. BNZ LIBRERR ERROR RETURN @V305066 00586200
  676. CLC 3(3,R7),=CL3'LIB' IS IT A LIBRARY FILE 00588000
  677. BNE ERR033 NOT A LIB FILE 00589000
  678. L R0,8(R7) GET LENGTH OF DICTIONARY 00590000
  679. ST R0,DICTLEN SAVE 00591000
  680. LTR R0,R0 IF LENGTH IS ZERO... 00592000
  681. BZ ERR039 THERE ARE NO ENTRIES IN LIBRARY 00593000
  682. LA R1,60 FIX FOR MINIMUM NUMBER DOUBLE WORDS 00594000
  683. AR R0,R1 * 00595000
  684. SRL R0,3 * 00596000
  685. ST R0,STRLEN SAVE AMOUNT REQUESTED 00597000
  686. DMSFREE DWORDS=(0) 00598000
  687. ST R1,STRADR SAVE ADDRESS 00599000
  688. ST R1,DICTADR SAVE STORAGE START 00600000
  689. L R6,DICTLEN GET BUF AREA ADDR 00601000
  690. LA R3,0(R1,R6) SET END 00602000
  691. LA R2,72 SET INDEX FACTOR 00603000
  692. ST R3,DICTEND SAVE END OF DICTIONARY 00604000
  693. BCTR R3,R0 DECR FOR BXLE 00605000
  694. LH R4,6(R7) GET INDEX FOR READ 00606000
  695. LR R6,R1 00607000
  696. * 00608000
  697. RDLOOP STH R4,FILEITNO SET ITEM NO 00609000
  698. LA R1,FILE READ PARM LIST 00610000
  699. L R15,ARDBUF RDBUF @V305066 00611100
  700. BALR R14,R15 ... @V305066 00611200
  701. BNZ READERR ERROR RETURN @V305066 00611300
  702. MVC 0(72,R6),0(R7) MOVE TO DICTIONARY 00613000
  703. LA R4,1(,R4) INCR INDEX 00614000
  704. BXLE R6,R2,RDLOOP GET EVERY ONE 00615000
  705. * 00616000
  706. L R3,DICTEND END OF DICTIONARY 00617000
  707. L R4,DICTADR GET START ADDR 00618000
  708. LA R2,12 00619000
  709. BCTR R3,0 DECREMENT FOR BXLE 00620000
  710. RDLOOP1 CLI 0(R4),X'00' NULL ENTRY? 00621000
  711. BNZ NAMLOOP2 NO 00622000
  712. BXLE R4,R2,RDLOOP1 LOOK AGAIN 00623000
  713. B ERR039A ERROR NO ENTRIES 00624000
  714. * 00625000
  715. NAMLOOP2 ST R4,DICTADR 00626000
  716. TM SWS,NAME ONLY ONE MEMBER WANTED? 00627000
  717. BNO NAMLOOP1 NO,THEN WE CAN START 00628000
  718. LA R2,12 00629000
  719. NAMLOOP CLC 0(8,R4),NAME1 IS IT NAME 00630000
  720. BE NAMLOOP1 YES, FOUND IT 00631000
  721. BXLE R4,R2,NAMLOOP LOOK AT NEXT 00632000
  722. B ERR013 NAME NOT FOUND 00633000
  723. * 00634000
  724. NAMLOOP1 CLC 0(2,R4),BITS IS FIRST SLOT EMPTY? 00635000
  725. BNE NAMLOOP3 NO 00636000
  726. LA R4,12(R4) POINT TO NEXT IF FIRST EMPTY 00637000
  727. B NAMLOOP2 00638000
  728. NAMLOOP3 EQU * 00639000
  729. LH R4,8(R4) GET STARTING ITEM NO 00640000
  730. BCTR R4,R0 FIX FOR FIRST PASS 00641000
  731. LA R1,1(R7) RESET BUFFER ADDR 00642000
  732. ST R1,FILEBUFF AND STORE 00643000
  733. MVI 0(R7),X'09' FOR SINGLE SPACE 00644000
  734. B MAINLOOP 00645000
  735. EJECT 00646000
  736. ********************************************************************** 00647000
  737. * 00648000
  738. * ERROR MESSAGES 00649000
  739. * 00650000
  740. ********************************************************************** 00651000
  741. SPACE 1 00652000
  742. ERRMSG1 LA R0,FILENAME 00653000
  743. DMSERR MF=(E,'SYS'),LET=S,NUM=(4),TEXTA=(3), *00654000
  744. SUB=(DEC,(15),CHAR8A,(0)) 00655000
  745. BR R5 00656000
  746. SPACE 1 00657000
  747. LIBRERR NI SWS,255-MEMB CONSIDER AS NOT MEMB, FREE STG NOT GOT 00658000
  748. READERR CH R15,H12 IS IT EOF? 00659000
  749. BE NORMRET YES, ALL DONE 00660000
  750. SPACE 1 00661000
  751. ERR104 LA R3,BRDERR 00662000
  752. LA R4,104 00663000
  753. BAL R5,ERRMSG1 00664000
  754. LA R15,100 00665000
  755. B CLOSRET 00666000
  756. SPACE 1 00667000
  757. BUFERR EQU * 00668000
  758. ERR123 C R15,=F'100' MSG GIVEN BY DMSPIO? 00669000
  759. BE CLOSRET1 BRANCH IF SO 00670000
  760. LA R3,PIOERR 00671000
  761. LA R4,123 00672000
  762. BAL R5,ERRMSG1 00673000
  763. LA R15,100 00674000
  764. B CLOSRET1 00675000
  765. ERRMSG36 EQU * @VA12416 00675150
  766. LA R0,FILEMODE POINT TO MODE LETTER @VA12416 00675300
  767. DMSERR TEXT='DISK ''..'' NOT ACCESSED',NUM=69, X00675450
  768. LET=E,SUB=(CHARA,((R0),1)),TYPCALL=SVC @VA12416 00675600
  769. LA R15,36 GIVE RETCODE @VA12416 00675750
  770. B ERRET AND GO RETURN TO CALLER @VA12416 00675900
  771. SPACE 1 00676000
  772. ERRMSG2 LA R0,FILENAME 00677000
  773. DMSERR MF=(E,'SYS'),LET=E,NUM=(4),TEXTA=(3), *00678000
  774. SUB=(CHAR8A,(0)) 00679000
  775. BR R5 00680000
  776. SPACE 1 00681000
  777. STATERR EQU * @VA12416 00682000
  778. C R15,=F'36' WAS DISK NOT ACCESSED? @VA12416 00682250
  779. BE ERRMSG36 GIVE MSG @VA12416 00682500
  780. C R15,=F'28' FILE NOT FOUND FROM STATE? @VA12416 00682750
  781. BNE ERRET NO, MESSAGE GIVEN BY STATE 00683000
  782. ERR002 LA R3,NOFILE 00684000
  783. LA R4,2 00685000
  784. BAL R5,ERRMSG2 00686000
  785. LA R15,28 00687000
  786. B ERRET 00688000
  787. SPACE 1 00689000
  788. ERR008 LA R3,UNS 00690000
  789. LA R4,8 00691000
  790. BAL R5,ERRMSG2 00692000
  791. LA R15,36 00693000
  792. B ERRET 00694000
  793. SPACE 1 00695000
  794. ERR008A LA R3,INV 00696000
  795. LA R4,8 00697000
  796. BAL R5,ERRMSG2 00698000
  797. LA R15,36 00699000
  798. B ERRET 00700000
  799. SPACE 1 00701000
  800. ERR039 NI SWS,255-MEMB 00702000
  801. ERR039A LA R3,NOMEMB 00703000
  802. LA R4,39 00704000
  803. BAL R5,ERRMSG2 00705000
  804. LA R15,32 00706000
  805. B FINRET 00707000
  806. SPACE 1 00708000
  807. ERR033 LA R3,NOTLIB 00709000
  808. LA R4,33 00710000
  809. BAL R5,ERRMSG2 00711000
  810. NI SWS,255-MEMB 00712000
  811. LA R15,32 00713000
  812. B FINRET 00714000
  813. SPACE 1 00715000
  814. ERR062 LA R3,ASTER 00716000
  815. LA R4,62 00717000
  816. BAL R5,ERRMSG2 00718000
  817. LA R15,20 00719000
  818. B ERRET 00720000
  819. SPACE 1 00721000
  820. ERR044 LA R3,EXCED 00722000
  821. LA R4,44 00723000
  822. BAL R5,ERRMSG2 00724000
  823. LA R15,32 00725000
  824. B ERRET 00726000
  825. SPACE 1 00727000
  826. ERR054 LA R3,INCID 00728000
  827. LA R4,54 00729000
  828. BAL R5,ERRMSG2 00730000
  829. LA R15,24 00731000
  830. B ERRET 00732000
  831. SPACE 1 00733000
  832. ERRMSG3 DMSERR MF=(E,'SYS'),LET=E,NUM=(4),TEXTA=(3), *00734000
  833. SUB=(CHARA,(9),CHARA,(6)) 00735000
  834. BR R5 00736000
  835. SPACE 1 00737000
  836. ERR003 LA R3,BADOPT 00738000
  837. LA R4,3 00739000
  838. BAL R5,ERRMSG3 00740000
  839. LA R15,24 00741000
  840. B ERRET 00742000
  841. SPACE 1 00743000
  842. ERR013 LA R9,NAME1 00744000
  843. LA R3,MEMNF 00745000
  844. LA R4,13 00746000
  845. BAL R5,ERRMSG3 00747000
  846. LA R15,32 00748000
  847. B FINRET 00749000
  848. SPACE 1 00750000
  849. ERR029 LR R6,R9 00751000
  850. LA R9,8(,R9) 00752000
  851. LA R3,BADPARM 00753000
  852. LA R4,29 00754000
  853. BAL R5,ERRMSG3 00755000
  854. LA R15,24 00756000
  855. B ERRET 00757000
  856. SPACE 1 @V2D4921 00757060
  857. ERR048 EQU * @V2D4921 00757120
  858. LA R3,NOTMODE GET ERROR MSG ADDRESS @V2D4921 00757180
  859. LA R4,48 SET ERROR NUMBER @V2D4921 00757240
  860. LA R9,24(R2) POINT TO 'MODE' @V2D4921 00757300
  861. BAL R5,ERRMSG3 GO PRINT ERROR @V2D4921 00757360
  862. LA R15,24 SET ERROR CODE @V2D4921 00757420
  863. B ERRET @V2D4921 00757480
  864. SPACE 1 @V2D4921 00757540
  865. ERR070 EQU * @V2D4921 00757600
  866. LA R3,NOTPARM GET ERROR MSG ADDRESS @V2D4921 00757660
  867. LA R4,70 SET ERROR NUMBER @V2D4921 00757720
  868. BAL R5,ERRMSG3 GO PRINT ERROR @V2D4921 00757780
  869. LA R15,24 SET ERROR CODE @V2D4921 00757840
  870. B ERRET @V2D4921 00757900
  871. EJECT 00758000
  872. NOFILE DC AL1(L'NOFILEMS) 00759000
  873. NOFILEMS DC C'FILE ''....................'' NOT FOUND' 00760000
  874. SPACE 1 00761000
  875. NOMEMB DC AL1(L'NOMEMBMS) 00762000
  876. NOMEMBMS DC C'NO ENTRIES IN LIBRARY ''....................''' 00763000
  877. SPACE 1 00764000
  878. NOTLIB DC AL1(L'NOTLIBMS) 00765000
  879. NOTLIBMS DC C'FILE ''....................'' IS NOT A LIBRARY' 00766000
  880. SPACE 1 00767000
  881. INCID DC AL1(L'INCIDMS) 00768000
  882. INCIDMS DC C'INCOMPLETE FILEID SPECIFIED' 00769000
  883. SPACE 1 00770000
  884. EXCED DC AL1(L'EXCEDMS) 00771000
  885. EXCEDMS DC C'RECORD EXCEEDS ALLOWABLE MAXIMUM' 00772000
  886. SPACE 1 00773000
  887. ASTER DC AL1(L'ASTERMS) 00774000
  888. ASTERMS DC C'INVALID * IN FILEID' 00775000
  889. SPACE 1 00776000
  890. BRDERR DC AL1(L'BRDERRMS) 00777000
  891. BRDERRMS DC C'ERROR ''...'' READING FILE ''....................'' FR*00778000
  892. OM DISK' 00779000
  893. SPACE 1 00780000
  894. PIOERR DC AL1(L'PIOERRMS) 00781000
  895. PIOERRMS DC C'ERROR ''...'' PRINTING FILE ''....................''' 00782000
  896. SPACE 1 00783000
  897. INV DC AL1(L'INVMS) 00784000
  898. INVMS DC C'DEVICE ''00E'' INVALID OR NONEXISTENT' 00785000
  899. SPACE 1 00786000
  900. UNS DC AL1(L'UNSMS) 00787000
  901. UNSMS DC C'DEVICE ''00E'' UNSUPPORTED DEVICE TYPE' 00788000
  902. SPACE 1 00789000
  903. BADOPT DC AL1(L'BADOPTMS) 00790000
  904. BADOPTMS DC C'INVALID OPTION ''........''' 00791000
  905. SPACE 1 00792000
  906. BADPARM DC AL1(L'BADPARMS) 00793000
  907. BADPARMS DC C'INVALID PARAMETER ''........'' IN THE OPTION ''.......*00794000
  908. .'' FIELD' 00795000
  909. SPACE 1 00796000
  910. MEMNF DC AL1(L'MEMNFMS) 00797000
  911. MEMNFMS DC C'MEMBER ''........'' NOT FOUND' 00798000
  912. SPACE 1 @V2D4921 00798100
  913. NOTMODE DC AL1(L'NOTMODE1) @V2D4921 00798200
  914. NOTMODE1 DC C'INVALID MODE ''...''' @V2D4921 00798300
  915. SPACE 1 @V2D4921 00798400
  916. NOTPARM DC AL1(L'NOTPARM1) @V2D4921 00798500
  917. NOTPARM1 DC C'INVALID PARAMETER ''........''' @V2D4921 00798600
  918. EJECT 00799000
  919. ********************************************************************** 00800000
  920. * 00801000
  921. * RETURNS 00802000
  922. * 00803000
  923. ********************************************************************** 00804000
  924. SPACE 1 00805000
  925. NORMRET SR R15,R15 CLEAR RETURN FOR NORMAL END 00806000
  926. SPACE 1 00807000
  927. CLOSRET LR R6,R15 SAVE RETURN CODE IN R6 00808000
  928. L R8,BUFCTR ADDR OF NEXT LOC IN BUFFER 00809000
  929. LA R3,BUFDATA ADDR OF START OF BUFFER 00810000
  930. CR R3,R8 IS BUFFER EMPTY? 00811000
  931. BE BUFMT YES, NO RESIDUAL DATA TO PUNCH 00812000
  932. LM R3,R4,CCWNOP NO, PUT NOP AT END OF BUFFER 00813000
  933. STM R3,R4,0(R8) ... 00814000
  934. LA R1,PRTBUF ADDRESS OF PLIST TO PRINT BUFFER 00815000
  935. SVC 202 00816000
  936. DC AL4(BUFERR) 00817000
  937. BUFMT LA R3,BUFDATA RESTORE COUNTER TO BUFFER BEGINNING 00818000
  938. SR R4,R4 AND ZERO BATCTR 00819000
  939. STM R3,R4,BUFCTR ... 00820000
  940. LR R15,R6 00821000
  941. SPACE 1 00822000
  942. CLOSRET1 LR R6,R15 SAVE RETURN CODE IN R6 00823000
  943. LA R1,CLOSIO SET UP TO CLOSE PRINTER 00824000
  944. MVC CLOSION(16),FILENAME NAME OF FILE BEING OUTPUT 00825000
  945. SVC 202 00826000
  946. DC AL4(*+4) IGNORE ERRORS 00827000
  947. LR R15,R6 00828000
  948. SPACE 1 00829000
  949. FINRET LR R6,R15 SAVE RETURN CODE IN R6 00830000
  950. MVC FILECOMM(8),=CL8'FINIS' SET TO CLOSE FILE 00831000
  951. LA R1,FILE ADDRESS OF FILE PLIST 00832000
  952. L R15,AFINIS FINIS @V305066 00833000
  953. BALR R14,R15 ... @V305066 00833100
  954. TM SWS,MEMB IF MEMBER OPTION, RELEASE STG 00835000
  955. BZ MAINFRET 00836000
  956. L R1,STRADR ADDRESS OF MEMBER STG 00837000
  957. L R0,STRLEN LENGTH OF MEMBER STG 00838000
  958. DMSFRET DWORDS=(0),LOC=(1) 00839000
  959. SPACE 1 00840000
  960. MAINFRET L R1,AREA ADDRESS OF STG 00841000
  961. L R0,STRG LENGTH OF STG 00842000
  962. DMSFRET DWORDS=(0),LOC=(1) 00843000
  963. LR R15,R6 RESTORE RETURN CODE 00844000
  964. SPACE 1 00845000
  965. ERRET L R14,UIOSAVE RESTORE RETURN ADDRESS 00846000
  966. BR R14 00847000
  967. EJECT 00848000
  968. ********************************************************************** 00849000
  969. * 00850000
  970. * STORAGE AREAS AND PLISTS 00851000
  971. * 00852000
  972. ********************************************************************** 00853000
  973. LTORG @VA10604 00853600
  974. SPACE 1 00854000
  975. FILE DS 0D 00855000
  976. FILECOMM DC CL8' ' FILE SYSTEM COMMAND 00856000
  977. FILENAME DC CL8' ' FILENAME 00857000
  978. FILETYPE DC CL8' ' FILETYPE 00858000
  979. FILEMODE DC CL2' ' FILEMODE 00859000
  980. FILEITNO DC H'0' RECORD NUMBER 00860000
  981. FILEBUFF DC A(*-*) BUFFER ADDRESS 00861000
  982. FILESIZE DC A(80) BUFFER SIZE 00862000
  983. FILEFV DC CL2'F' FIXED/VARIABLE FLAG 00863000
  984. FILENOIT DC H'1' NUMBER OF RECORDS 00864000
  985. FILENORD DC F'0' NUMBER OF BYTES READ 00865000
  986. DC 8X'FF' 00866000
  987. SPACE 1 00867000
  988. CLOSIO DS 0D 00868000
  989. DC CL8'CP' 00869000
  990. DC CL8'CLOSE' 00870000
  991. DC CL8'00E' 00871000
  992. DC CL8'NAME' 00872000
  993. CLOSION DS 16C 00873000
  994. DC 8X'FF' 00874000
  995. SPACE 1 00875000
  996. DS 0D 00876000
  997. BLDCCW DC CL8'DMSPIOCC' 00877000
  998. DC A(*-*) ADDRESS OF LINE 00878000
  999. DC A(*-*) LENGTH OF LINE 00879000
  1000. DC A(BUFCTR) ADDRESS OF BUFFER FOR DMSPIOCC 00880000
  1001. DC 8X'FF' 00881000
  1002. SPACE 1 00882000
  1003. PRTBUF DC CL8'DMSPIOSI' 00883000
  1004. DC A(BUFCTR) ADDRESS OF BUFFER FOR DMSPIOSI 00884000
  1005. DC A(*-*) 00885000
  1006. DC 8X'FF' 00886000
  1007. SPACE 1 00887000
  1008. CCWNOP CCW X'03',0,X'20',1 00888000
  1009. CCWEJCT CCW X'8B',0,X'60',1 00889000
  1010. SPACE 1 00890000
  1011. SCANFO DS 0F 00891000
  1012. DC X'FFFFFFFF5C4040404D404040' WORDS OF FF,*,( 00892000
  1013. CARRSZ DS 1H 00893000
  1014. H12 DC H'12' 00894000
  1015. AMODE DC X'C1400000' 00895000
  1016. BITS DC F'1' 00896000
  1017. KOUNT DC F'55' NUMBER OF PRINT LINES PER PAGE @V2D4921 00896500
  1018. STRG DS 1F STORAGE LENGTH 00897000
  1019. AREA DS 1F STORAGE ADDRESS 00898000
  1020. PAGCNT DS CL2 PAGE NUMBER IN PACKED DEC 00899000
  1021. LINCNT EQU 10 00900000
  1022. SWS DS 1C SWITCHES 00901000
  1023. CC EQU X'80' CARRIAGE CONTROL SUPPLIED BY CALLER 00902000
  1024. NOCC EQU X'40' USE OUR OWN CARRIAGE CONTROL 00903000
  1025. HEX EQU X'20' TRANSLATE TO HEXADECIMAL, FORMATTED 00904000
  1026. UPRCS EQU X'10' TRANSLATE TO UPPER CASE 00905000
  1027. MEMB EQU X'08' PRINT LIBRARY MEMBER(S) 00906000
  1028. NAME EQU X'04' MEMBER NAME GIVEN 00907000
  1029. FIRST EQU X'02' FIRST PASS SW - USED ONLY WITH CC 00908000
  1030. EJEC EQU X'01' EJECT WANTED 00908500
  1031. NAME1 DS 8C NAME OF MEMBER 00909000
  1032. SPACE 1 00910000
  1033. DS 0F 00911000
  1034. HEADING DS 0CL120 00912000
  1035. DC C'1FILE: ' 00913000
  1036. FILEHD DC CL93' ' 00914000
  1037. DC C'PAGE ' 00915000
  1038. HDCNT DC CL20'XXX' 00916000
  1039. SPACE 1 00917000
  1040. PABUF DC A(HEADING,L'HEADING) 00918000
  1041. SPACE 1 00919000
  1042. SPACE3 DC X'1B' CHARACTER TO SPACE 3 00920000
  1043. PASPACE DC A(SPACE3,L'SPACE3) 00921000
  1044. SPACE1 DC X'0B' CARACTER TO SPACE 1 00922000
  1045. HXSPACE DC A(SPACE1,L'SPACE1) 00923000
  1046. SPACE 1 00924000
  1047. EJECT 00925000
  1048. * 00925010
  1049. UPTRTBL EQU * UPPERCASE TRANSLATE TABLE @VA10604 00925020
  1050. * 00925030
  1051. DC X'000102030405060708090A0B0C0D0E0F' @VA10604 00925040
  1052. DC X'101112131415161718191A1B1C1D1E1F' @VA10604 00925050
  1053. DC X'202122232425262728292A2B2C2D2E2F' @VA10604 00925060
  1054. DC X'303132333435363738393A3B3C3D3E3F' @VA10604 00925070
  1055. DC X'404142434445464748494A4B4C4D4E4F' @VA10604 00925080
  1056. DC X'505152535455565758595A5B5C5D5E5F' @VA10604 00925090
  1057. DC X'606162636465666768696A6B6C6D6E6F' @VA10604 00925100
  1058. DC X'707172737475767778797A7B7C7D7E7F' @VA10604 00925110
  1059. DC X'80C1C2C3C4C5C6C7C8C98A8B8C8D8E8F' @VA10604 00925120
  1060. DC X'90D1D2D3D4D5D6D7D8D99A9B9C9D9E9F' @VA10604 00925130
  1061. DC X'A0A1E2E3E4E5E6E7E8E9AAABACADAEAF' @VA10604 00925140
  1062. DC X'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF' @VA10604 00925150
  1063. DC X'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF' @VA10604 00925160
  1064. DC X'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF' @VA10604 00925170
  1065. DC X'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF' @VA10604 00925180
  1066. DC X'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF' @VA10604 00925190
  1067. * 00925200
  1068. LSAVE DS 16F 00926000
  1069. LIMIT DC X'0000FF48' 00927000
  1070. RECNO DS 1F 00928000
  1071. DECD DS 1D 00929000
  1072. RSZM DC XL6'402020202021' 00930000
  1073. RNOM DC XL6'402020202021' 00931000
  1074. HDR DS 0CL30 00932000
  1075. DC X'09',CL29'RECORD XXXXX LENGTH= XXXXX' 00933000
  1076. HXSAVE DS 1D 00934000
  1077. PHDR DC A(HDR,L'HDR) 00935000
  1078. MAXCC DC F'65535' 00936000
  1079. PBFR DS 0CL131 00937000
  1080. DC X'09' 00938000
  1081. PBUF DC CL130' ' 00939000
  1082. PHEX DC A(PBFR,L'PBFR) 00940000
  1083. HEXUNPK DS 4F 00941000
  1084. HEXTRN DC C'0123456789ABCDEF' 00942000
  1085. HEXTRTBL EQU HEXTRN-240 00943000
  1086. UNPK UNPK HEXUNPK(0),0(0,R6) EXECUTED 00944000
  1087. TR TR HEXUNPK(0),HEXTRTBL EXECUTED 00945000
  1088. MVC MVC 0(0,3),HEXUNPK EXECUTED 00946000
  1089. UNPKTBL DC XL4'00214263' FOR EX OF UNPK 00947000
  1090. SPACE 1 00948000
  1091. RSZF EQU HDR+21 00949000
  1092. RNOF EQU HDR+7 00950000
  1093. SPACE 1 00951000
  1094. DICTLEN DS 1F 00952000
  1095. DICTADR DS 1F 00953000
  1096. DICTEND DS 1F 00954000
  1097. STRADR DS 1F 00955000
  1098. STRLEN DS 1F 00956000
  1099. DS 0D 00957000
  1100. CCWLFCB DS 0CL88 00958000
  1101. CCW X'63',DYFCBUFF,X'40',66 @VA10604 00959000
  1102. CCW X'08',DYTICTO,X'60',1 @VA10604 00960000
  1103. FCBUFF DC X'01020304050607080A0B' @VA10604 00961000
  1104. DC XL53'00' 00962000
  1105. DC X'0C0910000000000000' 00963000
  1106. SPACE 1 00964000
  1107. ENDFCB EQU * @VA10604 00965000
  1108. EJECT 00966000
  1109. ORG PRINT+4096 00967000
  1110. PAGETWO EQU * 00968000
  1111. BUFCTR DC A(BUFDATA) 00969000
  1112. BATCTR DC A(*-*) 00970000
  1113. DS 2F 00971000
  1114. BUFDATA EQU * USE FROM HERE TO 'LIMIT' @VA10604 00972000
  1115. DYFCBUFF EQU BUFDATA+(FCBUFF-CCWLFCB) @VA10604 00972100
  1116. DYTICTO EQU BUFDATA+(ENDFCB-CCWLFCB) @VA10604 00972200
  1117. EJECT 00973000
  1118. ********************************************************************** 00974000
  1119. * 00975000
  1120. * DSECTS 00976000
  1121. * 00977000
  1122. ********************************************************************** 00978000
  1123. SPACE 1 00979000
  1124. UIOSECT DSECT 00980000
  1125. UIOSAVE DS 1F RETURN REGISTER SAVE AREA 00981000
  1126. UIODIAG DS 0F DIAGNOSE 24 STORAGE AREA 00982000
  1127. UIOVTYPC DS 1C VIRTUAL DEVICE TYPE CLASS 00983000
  1128. CLASURI EQU X'20' UNIT RECORD INPUT DEVICE 00984000
  1129. CLASURO EQU X'10' UNIT RECORD OUTPUT DEVICE 00985000
  1130. UIOVTYPE DS 1C VIRTUAL DEVICE TYPE 00986000
  1131. TYPRDR EQU X'80' CARD READER 00987000
  1132. TYPPUN EQU X'80' CARD PUNCH 00988000
  1133. TYP1403 EQU X'41' PRINTER - 1403 00989000
  1134. TYP3211 EQU X'42' PRINTER - 3211 00990000
  1135. TYP3203 EQU X'43' PRINTER - 3203 @V386298 00990100
  1136. UIOVSTAT DS 1C VIRTUAL DEVICE STATUS 00991000
  1137. UIOVFLAG DS 1C VIRTUAL DEVICE FLAGS 00992000
  1138. EJECT 00993000
  1139. FVS 00994000
  1140. NUCON 00995000
  1141. REGEQU 00996000
  1142. END 00997000