Table of Contents

DMKTCS Source

References

Source Listing

DMKTCS.ASSEMBLE.txt
  1. TCS TITLE 'DMKTCS (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE INPUT SERIALIZATION 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME - 00005000
  6. * 00006000
  7. * DMKTCS 00007000
  8. * 00008000
  9. * FUNCTION - 00009000
  10. * 00010000
  11. * TO SET UP A 3800 PRINTER PRIOR TO ACTUALLY PRINTING A 00011000
  12. * SPOOL FILE ON IT. SETUP INCLUDES LOADING THE FCB, 00012000
  13. * TRANSLATE TABLE, GRAPHIC CHARACTER MODIFICATIONS, 00013000
  14. * FORMS OVERLAY SEQUENCE CONTROL, WRITABLE CHARACTER 00014000
  15. * GENERATION MODULES,COPY MODIFICATION, AND COPY NUMBER OF 1. 00015000
  16. * 00016000
  17. * ATTRIBUTES - 00017000
  18. * 00018000
  19. * REENTRANT, PAGEABLE, CALLED VIA SVC 00019000
  20. * 00020000
  21. * ENTRY POINTS - 00021000
  22. * 00022000
  23. * DMKTCSET - SET UP THE 3800 PRIOR TO PRINTING THE FILE 00023000
  24. * DMKTCSSP - SET UP THE 3800 PRIOR TO PRINTING THE SEPARATOR 00024000
  25. * DMKTCSCO - SET UP THE ONLY THE FORMS OVERLAY SEQUENCE CTL 00025000
  26. * 00026000
  27. * ENTRY CONDITIONS - 00027000
  28. * 00028000
  29. * FOR DMKTCSET AND DMKTCSSP - 00029000
  30. * 00030000
  31. * GPR7 = ADDRESS OF SFBLOK FOR FILE BEING PRINTED 00031000
  32. * GPR8 = ADDRESS OF RDEVBLOK FOR 3800 PRINTER 00032000
  33. * GPR9 = ADDRESS OF RSPLCTL CONTROL BLOCK FOR PRINTER 00033000
  34. * GPR10 = ADDRESS OF IOBLOK FOR PRINTER I/O 00034000
  35. * GPR12 = ADDRESS OF RELEVANT ENTRY POINT 00035000
  36. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00036000
  37. * 00037000
  38. * FOR DMKTCSCO - 00038000
  39. * 00039000
  40. * GENERAL REGISTERS ARE THE SAME AS ABOVE. 00040000
  41. * 00041000
  42. * EXIT CONDITIONS - 00042000
  43. * 00043000
  44. * FOR DMKTCSSP AND DMKTCSET - 00044000
  45. * COND CODE = ZERO - SETUP COMPLETED 00045000
  46. * COND CODE = NON-ZERO - SETUP DIDN'T COMPLETE 00046000
  47. * IF IOBFATAL SET, REASON IS HARDWARE ERROR 00047000
  48. * OTHERWISE, BAD LOAD MODULE IS THE CAUSE 00048000
  49. * 00049000
  50. * FOR DMKTCSCO - 00050000
  51. * COND CODE = NON-ZERO - MO MORE COPIES TO DO 00051000
  52. * COND CODE = ZERO - SFBLOK IS SET UP FOR NEXT COPY 00052000
  53. * 00053000
  54. * CALLS TO OTHER ROUTINES - 00054000
  55. * 00055000
  56. * DMKIOSQR - TO ISSUE START I/O TO REAL 3800 00056000
  57. * DMKPGTVG - GET PAGE OF SYSTEM VIRTUAL STORAGE 00057000
  58. * DMKPGTVR - RELEASE PAGE OF SYSTEM VIRTUAL STORAGE 00058000
  59. * DMKRPAGT - READ IN PAGE OF 3800 IMAGE LIBRARY 00059000
  60. * DMKFREE - OBTAIN FREE STORAGE FOR CCWS 00060000
  61. * DMKFRET - RETURN FREE STORAGE TO THE POOL 00061000
  62. * DMKSCNVS - FIND RDEVBLOK FOR IMAGE LIBRARY DASD VOL 00062000
  63. * DMKERMSG - ISSUE ERROR MESSAGES 00063000
  64. * DMKSCNAU - SEE IF USER IS LOGGED ON 00064000
  65. * DMKCVTBH - CONVERT STUFF FOR MESSAGES 00065000
  66. * DMKSCNRD - GET DEVICE ADDRESS IN PRINTABLE CUU FORM 00066000
  67. * 00067000
  68. * TABLES / WORKAREAS - 00068000
  69. * 00069000
  70. * 00070000
  71. * DMKQNTBL - TABLE OF 3800 NAMED SYSTEMS 00071000
  72. * 00072000
  73. * SAVEWRK1 - FLAG INDICATING ENTRY AT DMKTCSCO 00073000
  74. * X'80' - ENTERED AT DMKTCSCO 00074000
  75. * X'40' - 'CLEAR PRINTER' HAS BEEN ISSUED 00075000
  76. * X'20' - FCB WAS CALCULATED FROM 6, 8, OR 12 00076000
  77. * X'10' - ENTERED AT DMKTCSSP 00077000
  78. * SAVEWRK1+1 - FLAG FOR SETTING COND CODE UPON EXITING 00078000
  79. * SAVEWRK2 - ADDRESS OF HOLDING AREA 00079000
  80. * SAVEWRK3 - VIRTUAL ADDRESS IN SYSTEM SPACE OF PAGE GOTTEN 00080000
  81. * FOR READING IN THE NAMED SYSTEM PARTS 00081000
  82. * SAVEWRK4, SAVEWRK5 - 8-CHARACTER NAME OF THE MODULE 00082000
  83. * TO BE LOADED BY SUBROUTINE MEMLOAD 00083000
  84. * SAVEWRK6 - STARTING CCPD (IN MEMLOAD SUBROUTINE) 00084000
  85. * SAVEWRK7 - CURRENT CCPD (IN MEMLOAD SUBROUTINE) 00085000
  86. * SAVEWRK8 - RESIDUAL MEMBER BYTE COUNT TO MOVE (MEMLOAD) 00086000
  87. * 00087000
  88. * REGISTER USAGE - 00088000
  89. * 00089000
  90. * GPR0 = 00090000
  91. * GPR1 = 00091000
  92. * GPR2 = ADDRESS OF SPLINK AND LOCKED BUFFERS 00092000
  93. * GPR3 = INTERNAL SUBROUTINE RETURN ADDRESS REGISTER 00093000
  94. * GPR4 = 00094000
  95. * GPR5 = ADDRESS OF HOLDING AREA 00095000
  96. * GPR6 = SCRATCH AND RSPXBLOK ADDRESSIBILITY 00096000
  97. * GPR7 = ADDRESS OF SFBLOK OF FILE BEING PRINTED 00097000
  98. * GPR8 = ADDR OF RDEVBLOK FOR 3800 PRINTER 00098000
  99. * GPR9 = ADDR OF RSPLCTL WORK AREA 00099000
  100. * GPR10 = ADDR OF IOBLOK FOR PRINTER I/O 00100000
  101. * GPR11 = 00101000
  102. * GPR12 = DMKTCS MODULE BASE 00102000
  103. * GPR13 = ADDRESS OF STANDARD SAVE AREA 00103000
  104. * GPR14 = BALR RETURN ADDRESS AND SCRATCH REGISTER 00104000
  105. * GPR15 = BALR BRANCH ADDRESS AND SCRATCH REGISTER 00105000
  106. * 00106000
  107. * NOTES - 00107000
  108. * 00108000
  109. * 1. IT IS ASSUMED THAT, UPON ENTRY AT ANY ONE OF THE ABOVE 00109000
  110. * ENTRY POINTS, THERE ARE TWO SPOOL FILE BUFFERS ALREADY 00110000
  111. * LOCKED IN REAL STORAGE. THIS SHOULD HAVE BEEN DONE IN 00111000
  112. * DMKRSP. 00112000
  113. * 00113000
  114. * 2. BECAUSE OF THE 2-PAGE MAXIMUM AND THE FACT THAT THE 00114000
  115. * MODULE HAS 8 BYTES OF CONTROL INFORMATION AT ITS START, 00115000
  116. * THE MAXIMUM AMOUNT OF LOAD DATA ABLE TO BE PROCESSED 00116000
  117. * BY THIS ROUTINE IS 8192-8 OR 8184 BYTES. THIS 00117000
  118. * RESTRICTION IS ONLY MEANINGFUL FOR COPY MODIFICATION 00118000
  119. * SINCE THE 3800 HARDWARE ALLOWS 8192 BYTES FOR A 00119000
  120. * COPY MODIFICATION. 00120000
  121. * 00121000
  122. * OPERATION - 00122000
  123. * 00123000
  124. * 1. DMKTCSET 00124000
  125. * CALL DMKFREE TO OBTAIN A WORKAREA FOR HOLDING THE 00125000
  126. * INFORMATION WHICH WILL BE REQUIRED FOR THE 3800 SETUP. 00126000
  127. * CALL DMKPGTVG, DMKRPAGT TO GET THE FIRST DASD BUFFER. 00127000
  128. * TRANSFER ALL INFORMATION REQUIRED INTO THE WORKAREA 00128000
  129. * AND RELEASE THE PAGE JUST OBTAINED. THEN GO TO STEP 4. 00129000
  130. * IF ENTERED FROM DMKTCSCO, UPDATE THE SFBCOPY AND 00130000
  131. * SFBSTCPY FIELDS AND GO TO STEP 8. 00131000
  132. * 00132000
  133. * 2. DMKTCSSP 00133000
  134. * OBTAIN A WORKAREA VIA DMKFREE AND INITIALIZE IT FOR 00134000
  135. * THE SEPARATOR PAGE WITH INFORMATION IN THE 00135000
  136. * 3800 PRINTER RDEVBLOK AND OTHER DEFAULT INFORMATION. 00136000
  137. * THEN, CONTINUE WITH STEP 4. 00137000
  138. * 00138000
  139. * 3. DMKTCSCO 00139000
  140. * INDICATE THIS ENTRY AND GO TO STEP 1. 00140000
  141. * 00141000
  142. * 4. IF ENTRY WAS VIA DMKTCSET AND IF THE CHARS REQUESTED 00142000
  143. * IS THE SAME AS THAT ALREADY LOADED AS INDICATED IN 00143000
  144. * THE RSPXCHR FIELD, THEN THERE IS NO NEED TO RELOAD THE 00144000
  145. * NEW CHARACTER ARRANGEMENT TABLE. OTHERWISE, 00145000
  146. * CALL INTERNAL SUBROUTINE MEMLOAD TO LOAD THE REQUESTED 00146000
  147. * CHARACTER ARRANGEMENT TABLE INTO THE LOCKED BUFFER. 00147000
  148. * SET UP TO LOAD THE REQUIRED WCGMS INTO EMPTY POSITIONS. 00148000
  149. * IF A WCGM IS ALREADY LOADED AND UNMODIFIED, THERE IS NO 00149000
  150. * NEED TO LOAD IT AGAIN. 00150000
  151. * ALTER THE TRANSLATE TABLE IN STORAGE TO REFLECT CHANGED 00151000
  152. * POSITIONS OF THE THE WCGMS AND ISSUE THE FOLLOWING 00152000
  153. * CCWS TO THE 3800 PRINTER: LOAD WCGM, SELECT TRANSLATE 00153000
  154. * TABLE 0, LOAD TRANSLATE TABLE, DUMMY SENSE. 00154000
  155. * IF A LOAD CHECK OCCURS DUE TO INVALID LOAD DATA, 00155000
  156. * ISSUE ERROR MESSAGE DMKTCS241E TO BOTH THE OWNER OF 00156000
  157. * THE FILE AND THE OPERATOR AND RETURN WITH IOBFATAL SET. 00157000
  158. * IF SUCCESSFUL, UPDATE THE CURRENT CONTENTS OF THE WCGMS. 00158000
  159. * 00159000
  160. * 5. IF ANY GRAPHIC MODIFICATIONS WERE INDICATED, INVALIDATE 00160000
  161. * THE RDEVCRWC FIELDS USED BY THIS TABLE AND CALL MEMLOAD TO 00161000
  162. * LOAD EACH GRAPHIC MODIFICATION AND ISSUE A LOAD GRAPHIC 00162000
  163. * MODIFICATION TO THE 3800 FOR EACH ONE. 00163000
  164. * LOAD CHECKS CAUSE DMKTCS241E TO BE ISSUED AND RETURN WITH 00164000
  165. * IOBFATAL SET. 00165000
  166. * 00166000
  167. * 6. IF NO COPY MODIFICATION WAS SPECIFIED, SET UP A NULL 00167000
  168. * COPY MODIFICATION AND LOAD IT VIA THE 'LOAD COPY 00168000
  169. * MODIFICATION' CCW. ELSE CALL MEMLOAD TO LOAD IT IN 00169000
  170. * AND THEN LOAD IT INTO THE 3800 VIA THE 'LOAD COPY 00170000
  171. * MODIFICATION' CCW. LOAD CHECKS CAUSE DMKTCS241E TO BE 00171000
  172. * ISSUED AND RETURN MADE TO THE CALLER WITH IOBFATAL SET. 00172000
  173. * IF THE COPY MODIFICATION TO BE LOADED IS THE SAME AS THAT 00173000
  174. * ALREADY IN (RSPXCMOD), NO NEED TO LOAD IT IN AGAIN. 00174000
  175. * 00175000
  176. * 7. IF THE FCB IS THE SAME AS THAT ALREADY LOADED (RSPXFCB), 00176000
  177. * THERE IS NO NEED TO RELOAD IT. IF NOT, AND IT IS NOT 00177000
  178. * 6, 8, OR 12, CALL MEMLOAD TO LOAD IT AND THEN ISSUE A 00178000
  179. * 'LOAD FCB' CCW TO GET IT INTO THE 3800. ANY ERRORS 00179000
  180. * CAUSE DMKTCS241E TO BE ISSUED, EXCEPT FOR AN FCB-FORMS 00180000
  181. * MISMATCH WHICH CAUSES DMKTCS240E TO BE ISSUED. 00181000
  182. * IF THE FCB IS 6, 8, OR 12, THEN, USING THE CURRENT PAGE 00182000
  183. * LENGTH (RDEVCURP), CONSTRUCT AN FCB. IF THIS RESULTS IN 00183000
  184. * A FCB-FORMS MISMATCH, TRY WITH DIFFERENT PAGE LENGTHS 00184000
  185. * UNTIL SUCCESSFUL. STORE THE NEWLY DISCOVERED PAGE 00185000
  186. * LENGTH IN RDEVCURP. 00186000
  187. * 00187000
  188. * 8. ISSUE THE 'LOAD COPY NUMBER' CCW FOR COPY MODIFICATION 00188000
  189. * CONTROL INFORMATION, AND THE 'LOAD FORMS OVERLAY 00189000
  190. * SEQUENCE CONTROL' CCW TO CONTROL THE FLASHING STATUS 00190000
  191. * AND NUMBER OF COPIES TO BE PRINTED FOR THE 3800. 00191000
  192. * 00192000
  193. * 9. IF ENTERED VIA DMKTCSCO AND THERE ARE MORE COPIES TO 00193000
  194. * BE PRINTED, ISSUE THE 'END OF TRANSMISSION' CCW. IF 00194000
  195. * NO MORE COPIES REMAIN, ISSUE THE 'MARK FORMS' CCW. 00195000
  196. * ALSO, UPDATE SFBCOPY AND SFBSTCPY. 00196000
  197. * 00197000
  198. * 10. RETURN TO CALLER 00198000
  199. * 00199000
  200. * RESPONSE - 00200000
  201. * 00201000
  202. * NONE 00202000
  203. * 00203000
  204. * ERROR MESSAGES - 00204000
  205. * 00205000
  206. * DMKTCS240E PRT (CUU), FCB-FORMS MISMATCH, FILEID (SPLID) 00206000
  207. * DMKTCS241E PRT (CUU), INVALID LOAD MODULE (NAME) SPECIFIED, 00207000
  208. * FILE (SPLID) (HELD|PURGED) 00208000
  209. * 00209000
  210. *. 00210000
  211. EJECT 00211000
  212. COPY OPTIONS 00212000
  213. COPY LOCAL OPTIONS 00213000
  214. EJECT 00214000
  215. DMKTCS CSECT LOADER CONTROL ONLY @V60B9BA 00215000
  216. EXTRN DMKPGTVG @V60B9BA 00216000
  217. EXTRN DMKPGTVR @V60B9BA 00217000
  218. EXTRN DMKRPAGT @V60B9BA 00218000
  219. EXTRN DMKIOSQR @V60B9BA 00219000
  220. EXTRN DMKERMSG @V60B9BA 00220000
  221. EXTRN DMKSCNVS @V60B9BA 00221000
  222. EXTRN DMKQNTBL @V60B9BA 00222000
  223. EXTRN DMKSCNAU @V60B9BA 00223000
  224. EXTRN DMKCVTBH @V60B9BA 00224000
  225. EXTRN DMKCVTBD @VMI0013 00225000
  226. EXTRN DMKSCNRD @V60B9BA 00226000
  227. SPACE 3 00227000
  228. USING PSA,R0 @V60B9BA 00228000
  229. USING SFBLOK,R7 @V60B9BA 00229000
  230. USING RSPLCTL,R9 @V60B9BA 00230000
  231. USING SPLINK,R2 @V60B9BA 00231000
  232. USING IOBLOK,R10 @V60B9BA 00232000
  233. USING RDEVBLOK,R8 @V60B9BA 00233000
  234. USING VMBLOK,R11 @V60B9BA 00234000
  235. USING SAVEAREA,R13 @V60B9BA 00235000
  236. SPACE 3 00236000
  237. DC CL8'DMKTCS' MODULE NAME @V60B9BA 00237000
  238. SPACE 3 00238000
  239. DMKTCSET RELOC , @V60B9BA 00239000
  240. XC SAVEWRK1,SAVEWRK1 CLEAR OUT OUR WORK AREAS @V60B9BA 00240000
  241. XC SAVEWRK2(32),SAVEWRK2 .... @V60B9BA 00241000
  242. TCSET LA R0,HLDSIZE SIZE OF HOLDING AREA @V60B9BA 00242000
  243. CALL DMKFREE GET THE STORAGE @V60B9BA 00243000
  244. LR R5,R1 ADDRESSIBILITY @V60B9BA 00244000
  245. USING HLDAREA,R5 ... @V60B9BA 00245000
  246. ST R5,SAVEWRK2 SAVE ITS ADDRESS @V60B9BA 00246000
  247. XC HLDAREA(HLDSIZE*8),HLDAREA CLEAR IT @V60B9BA 00247000
  248. L R1,RSPVPAGE GET FIRST LOCKED BUFFER @V60B9BA 00248000
  249. L R0,SFBSTART FIRST DASD BUFFER @V60B9BA 00249000
  250. TCSET2 CALL DMKRPAGT,PARM=(BRING+SYSTEM+LOCK) BRING IT IN @VA09394 00250050
  251. BNZ EXITF0 PAGING ERROR @VA12900 00250075
  252. CLC SPPREPAG,ZEROES IS IT REALLY THE FIRST? @VA09394 00250100
  253. BE TCSET3 XFER IF SO @VA09394 00250150
  254. L R0,SPNXTPAG POINT TO NEXT DASD BUFFER @VA09394 00250200
  255. C R0,SFBSTART IS THIS WHERE WE STARTED? @VA09394 00250250
  256. BE EXITFF XFER IF SO - ERROR @VA09394 00250300
  257. B TCSET2 TRY NEXT PAGE @VA09394 00250350
  258. TCSET3 ST R0,RSPDPAGE SAVE THE DASD ADDRESS @VA09394 00251100
  259. ST R2,RSPRPAGE SAVE ITS REAL ADDRESS TOO @V60B9BA 00252000
  260. CLI SPCHAR,X'00' NOT SPECIFIED? @V60B9BA 00253000
  261. BE DFLTCHAR SET DEFAULT IF SO @V60B9BA 00254000
  262. MVC HLDCHARS,SPCHAR SAVE THE CHAR ARR TABLE @V60B9BA 00255000
  263. B GOTCHAR FINISHED WITH CHAR @V60B9BA 00256000
  264. DFLTCHAR MVC HLDCHARS,RDEVXSEP USE THE DEFAULT @V60B9BA 00257000
  265. GOTCHAR CLI SPCMOD,X'00' NOT SPECIFIED? @V60B9BA 00258000
  266. BE GOTMDFY XFER IF SO @V60B9BA 00259000
  267. MVC HLDMDFY,SPCMOD SAVE THE COPY MODIFICATION @V60B9BA 00260000
  268. GOTMDFY CLI SPFCB,X'00' NEVER SPECIFIED ? @V60B9BA 00261000
  269. BE DFLTFCB XFER IF SO @V60B9BA 00262000
  270. MVC HLDFCB,SPFCB SAVE THE SPECIFIED FCB @V60B9BA 00263000
  271. B GOTFCB XFER @V60B9BA 00264000
  272. DFLTFCB MVC HLDFCB,=C'6 ' ASSUME 6 LPI FCB @V60B9BA 00265000
  273. CLI RDEVFSEP,6 IS IT ? @V60B9BA 00266000
  274. BE GOTFCB XFER IF SO @V60B9BA 00267000
  275. MVI HLDFCB,C'8' ASSUME 8 LPI FCB @V60B9BA 00268000
  276. CLI RDEVFSEP,8 IS IT ? @V60B9BA 00269000
  277. BE GOTFCB XFER IF SO @V60B9BA 00270000
  278. MVC HLDFCB(2),=C'12' IT MUST BE 12 LPI @V60B9BA 00271000
  279. GOTFCB MVC HLDSTCPY,SFBSTCPY SAVE STARTING COPY NUMBER @V60B9BA 00272000
  280. MVC HLDFLSHC,SPFLSHC SAVE THE FLASH COUNT @V60B9BA 00273000
  281. MVC HLDCPY,SFBCOPY+1 TOTAL NUMBER OF COPIES @V60B9BA 00274000
  282. MVC HLDFLAG,SPFLAG1 SAVE THE COPY FLAG @V60B9BA 00275000
  283. SR R0,R0 DUMMY DASD ADDRESS @V60B9BA 00276000
  284. CALL DMKRPAGT,PARM=SYSTEM GIVE BACK THE DASD PAGE @V60B9BA 00277000
  285. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK) LOCK IT @V60B9BA 00278000
  286. ST R0,RSPDPAGE ZERO THE DASD ADDRESS @V60B9BA 00279000
  287. ST R2,RSPRPAGE SAVE ITS LOCKED REAL ADDR @V60B9BA 00280000
  288. TM SAVEWRK1,X'80' ENTERED AT DMKTCSCO ? @V60B9BA 00281000
  289. BZ TCSCOMN JOIN COMMON CODE IF NOT @V60B9BA 00282000
  290. TM HLDFLAG,SPCOPYFG JUST ONE TRANSMISSION ? @V60B9BA 00283000
  291. BO MARKFORM XFER IF SO @V60B9BA 00284000
  292. CLC SFBCOPY,=H'1' FINAL COPY PRINTED ? @V60B9BA 00285000
  293. BE MARKFORM XFER IF SO @V60B9BA 00286000
  294. LH R1,SFBCOPY DECREMENT THE COPIES @V60B9BA 00287000
  295. BCTR R1,0 ... LEFT TO PRINT @V60B9BA 00288000
  296. STH R1,SFBCOPY ... AND SAVE IT @V60B9BA 00289000
  297. STC R1,HLDCPY SAVE IT HERE ALSO @V60B9BA 00290000
  298. SR R1,R1 NOW INCREMENT THE @V60B9BA 00291000
  299. IC R1,SFBSTCPY ... STARTING COPY NUMBER @V60B9BA 00292000
  300. LA R1,1(,R1) ... AND SAVE IT @V60B9BA 00293000
  301. STC R1,SFBSTCPY ... IN THE SFBLOK @V60B9BA 00294000
  302. STC R1,HLDSTCPY SAVE IT HERE ALSO @V60B9BA 00295000
  303. SPACE 00296000
  304. * ISSUE THE 'END OF TRANSMISSION' CCW 00297000
  305. SPACE 00298000
  306. LA R1,EOTCCW GET ITS ADDRESS @V60B9BA 00299000
  307. ST R1,IOBCAW ADDRESS OF CCW STRING @V60B9BA 00300000
  308. LA R1,EOTRTN RETURN ADDRESS @V60B9BA 00301000
  309. ST R1,IOBIRA WHERE WE COME BACK @V60B9BA 00302000
  310. ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00303000
  311. B TCSSIO DO THE I/O AND WAIT FOR IT @V60B9BA 00304000
  312. SPACE 2 00305000
  313. EOTRTN EQU * HERE ON INTERRUPT FROM EOT @V60B9BA 00306000
  314. USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00307000
  315. S R12,=A(EOTRTN-DMKTCS) GET OLD VALUE @V60B9BA 00308000
  316. USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00309000
  317. L R13,IOBMISC RESTORE SAVE AREA ADDRESS @V60B9BA 00310000
  318. LM R0,R11,SAVEREGS RESTORE REGISTERS @V60B9BA 00311000
  319. L R5,SAVEWRK2 ADDRESS OF HOLDING AREA @V60B9BA 00312000
  320. TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00313000
  321. BO EXITFF EXIT WITH CC=NON-ZERO IF SO @V60B9BA 00314000
  322. ST R5,IOBMISC2 CLEAR OUT 'TCS ' @V60B9BA 00315000
  323. B LDFOSC SET UP FOR NEXT COPY @V60B9BA 00316000
  324. SPACE 5 00317000
  325. MARKFORM DS 0H @VA11550 00317200
  326. LA R1,MKFMCCW LOAD THE 'MARK FORM' CCWS @VA11550 00317400
  327. TM RDEVFLAG,RDEVDRAN ARE WE DRAINING?? @VA11550 00317600
  328. BZ REGMKFM NO, JUST 'MARK FORM' @VA11550 00317800
  329. MVC HLDCCW1,CLRCCW YES, MUST ALSO CLEAR PRINT. @VA11550 00318000
  330. MVC HLDCCW2(32),MKFMCCW THEN THE MARK FORMS SEQUENCE@VA11550 00318200
  331. LA R1,HLDCCW1 POINT TO THE CLEAR PRINT CCW @VA11550 00318400
  332. REGMKFM DS 0H @VA11550 00318600
  333. ST R1,IOBCAW SAVE IT IN THE IOB @V60B9BA 00319000
  334. LA R1,MKFMRTN INTERRUPT RETURN POINT @V60B9BA 00320000
  335. ST R1,IOBIRA SAVE IT @V60B9BA 00321000
  336. ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00322000
  337. B TCSSIO START THE I/O OPERATION @V60B9BA 00323000
  338. SPACE 2 00324000
  339. MKFMRTN EQU * HERE IN INT FROM MARK FORM @V60B9BA 00325000
  340. USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00326000
  341. S R12,=A(MKFMRTN-DMKTCS) GET OLD VALUE @V60B9BA 00327000
  342. USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00328000
  343. L R13,IOBMISC RESTORE SAVE AREA ADDRESS @V60B9BA 00329000
  344. LM R0,R11,SAVEREGS RESTORE REGISTERS @V60B9BA 00330000
  345. ST R12,IOBMISC2 CLEAR OUT 'TCS ' @V60B9BA 00331000
  346. B EXITFF EXIT CC = NON-ZERO @V60B9BA 00332000
  347. * (NO MORE COPIES TO DO) @V60B9BA 00333000
  348. SPACE 5 00334000
  349. DMKTCSSP RELOC , ENTRY FROM DKMMKSEP @V60B9BA 00335000
  350. XC SAVEWRK1,SAVEWRK1 CLEAR OUT OUR WORK AREAS @V60B9BA 00336000
  351. XC SAVEWRK2(32),SAVEWRK2 .... @V60B9BA 00337000
  352. LA R0,HLDSIZE SIZE OF HOLDING AREA @V60B9BA 00338000
  353. CALL DMKFREE GET THE STORAGE @V60B9BA 00339000
  354. LR R5,R1 ADDRESSIBILITY @V60B9BA 00340000
  355. ST R5,SAVEWRK2 SAVE IT FOR LATER @V60B9BA 00341000
  356. XC HLDAREA(8*HLDSIZE),HLDAREA CLEAR IT @V60B9BA 00342000
  357. OI SAVEWRK1,X'10' SET ENTERED AT TCSSP FLAG @V60B9BA 00343000
  358. MVC HLDCHARS,RDEVXSEP CHAR ARR TABLE @V60B9BA 00344000
  359. MVC HLDFCB,=C'6 ' ASSUME 6 LPI @V60B9BA 00345000
  360. CLI RDEVFSEP,6 IS THAT IT ? @V60B9BA 00346000
  361. BE GOTFCB2 XFER IF SO @V60B9BA 00347000
  362. MVI HLDFCB,C'8' TRY 8 LPI @V60B9BA 00348000
  363. CLI RDEVFSEP,8 IS IT THAT ? @V60B9BA 00349000
  364. BE GOTFCB2 XFER IF SO @V60B9BA 00350000
  365. MVC HLDFCB(2),=C'12' IT MUST BE 12 LPI @V60B9BA 00351000
  366. GOTFCB2 MVI HLDSTCPY,1 ASSUME STARTING COPY OF 1 @V60B9BA 00352000
  367. MVI HLDFLSHC,0 NO FLASHING ON SEP PAGE @V60B9BA 00353000
  368. MVI HLDCPY,1 ASSUME 1 COPY @V60B9BA 00354000
  369. B TCSCOMN JOIN COMMON CODE @V60B9BA 00355000
  370. SPACE 5 00356000
  371. DMKTCSCO RELOC , ENTRY FOR MULTIPLE COPIES @V60B9BA 00357000
  372. XC SAVEWRK1,SAVEWRK1 CLEAR OUT OUR WORK AREAS @V60B9BA 00358000
  373. XC SAVEWRK2(32),SAVEWRK2 ... @V60B9BA 00359000
  374. OI SAVEWRK1,X'80' INDICATE DMKTCSCO ENTRY @V60B9BA 00360000
  375. B TCSET SET UP THE HOLDING AREA @V60B9BA 00361000
  376. EJECT 00362000
  377. TCSCOMN EQU * COMMON CODE @V60B9BA 00363000
  378. CALL DMKPGTVG GET A PAGE OF VIRT SPACE @V60B9BA 00364000
  379. ST R1,SAVEWRK3 SAVE ITS VIRTUAL ADDRESS @V60B9BA 00365000
  380. L R6,RDEVEXTN GET ADDR OF RSPXBLOK @V60B9BA 00366000
  381. USING RSPXBLOK,R6 ADDRESSIBILITY @V60B9BA 00367000
  382. CLC HLDCHARS,RSPXCHR IS WHAT WE WANT ALREADY IN? @V60B9BA 00368000
  383. BE LDMDFY YES, TRY COPY MODIFICATION @V60B9BA 00369000
  384. SPACE 00370000
  385. * WE MUST NOW LOAD THE CHARACTER ARRANGEMENT TABLE SPECIFIED 00371000
  386. * AND ANY GRAPHIC MODIFICATIONS ASSOCIATED WITH IT. 00372000
  387. SPACE 00373000
  388. MVC SAVEWRK4,=C'XTB1' IT'S A CHAR ARR TABLE @V60B9BA 00374000
  389. MVC SAVEWRK5,HLDCHARS THIS IS ITS NAME @V60B9BA 00375000
  390. BAL R3,MEMLOAD LOAD IT INTO THE LOCKED BFRS@V60B9BA 00376000
  391. BNZ MSG241E ERROR - BAD MODULE LOAD @V60B9BA 00377000
  392. L R2,RSPRPAGE GET ADDRESS OF BUFFER @V60B9BA 00378000
  393. L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00379000
  394. L R6,RDEVEXTN ADDR OF RSPXBLOK @V60B9BA 00380000
  395. USING CATSECT,R2 ADDRESSIBILITY @V60B9BA 00381000
  396. TM RDEVFTR,FTR4WCGM IS THE FEATURE INSTALLED? @V60B9BA 00382000
  397. BO GOT4 XFER IF SO V60B9BA 00383000
  398. CLI CATWCGM+4,X'00' ARE WE USING MORE THAN 2 ? @V60B9BA 00384000
  399. BNE MSG241E XFER IF SO @V60B9BA 00385000
  400. GOT4 MVC HLDGCM1(16),CATGRAF SAVE THE GRAPHIC MODS @V60B9BA 00386000
  401. MVC CATFINAL(1),CATWCGM SET UP THE WCGMS SPECIFIED @V60B9BA 00387000
  402. MVC CATFINAL+1(1),CATWCGM+2 ... IN THE CAT FOR A @V60B9BA 00388000
  403. MVC CATFINAL+2(1),CATWCGM+4 ... LOAD WCGM CCW @V60B9BA 00389000
  404. MVC CATFINAL+3(1),CATWCGM+6 ... @V60B9BA 00390000
  405. MVC HLDCCW1,CLRCCW CLEAR PRINTER CCW @V60B9BA 00391000
  406. LM R0,R1,LDWCGCCW LOAD WCGM CCW @V60B9BA 00392000
  407. ALR R0,R2 RELOCATE DATA ADDRESS @V60B9BA 00393000
  408. STM R0,R1,HLDCCW2 OUR SECOND CCW @V60B9BA 00394000
  409. MVC HLDCCW3,SELTTCCW SELECT TRANSLATE TABLE 0 @V60B9BA 00395000
  410. LM R0,R1,LTTCCW LOAD TRANSLATE TABLE CCW @V60B9BA 00396000
  411. ALR R0,R2 RELOCATE DATA ADDRESS @V60B9BA 00397000
  412. STM R0,R1,HLDCCW4 OUR FOURTH CCW @V60B9BA 00398000
  413. MVC HLDCCW5,LOADSNS DUMMY SENSE CCW @V60B9BA 00399000
  414. LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00400000
  415. ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00401000
  416. LA R1,CATRTN THE INTERRUPT RETURN ADDR @V60B9BA 00402000
  417. ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00403000
  418. ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00404000
  419. B TCSSIO DO THE START I/O @V60B9BA 00405000
  420. SPACE 00406000
  421. CATRTN EQU * HERE AFTER TRANS TBL I/O @V60B9BA 00407000
  422. USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00408000
  423. S R12,=A(CATRTN-DMKTCS) @V60B9BA 00409000
  424. USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00410000
  425. LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00411000
  426. L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00412000
  427. CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00413000
  428. BE OK1 XFER IF NOT @V60B9BA 00414000
  429. OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00415000
  430. LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00416000
  431. CALL DMKFRET RETURN STORAGE @V60B9BA 00417000
  432. B TCSDSP WAIT FOR DEVICE END @V60B9BA 00418000
  433. OK1 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00419000
  434. LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00420000
  435. L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00421000
  436. L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @V60B9BA 00422000
  437. TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00423000
  438. BO EXITFF ERROR EXIT IF SO @V60B9BA 00424000
  439. CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00425000
  440. BE MSG241E XFER IF SO @V60B9BA 00426000
  441. ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00427000
  442. MVC RSPXCRWC(4),CATFINAL NEW WCGM VALUES @V60B9BA 00428000
  443. MVC RSPXCHR,HLDCHARS NEW CAT IN THE 3800 @V60B9BA 00429000
  444. OI SAVEWRK1,X'40' SET CLR PRT ISSUED FLAG @V60B9BA 00430000
  445. SPACE 00431000
  446. * NOW WE MUST LOAD THE GRAPHIC MODIFICATIONS 00432000
  447. * ASSOCIATED WITH THIS CHARACTER ARRANGEMENT TABLE 00433000
  448. * THE TRANSLATE TABLE HAS BEEN SET UP ALREADY AND THE 00434000
  449. * 'CLEAR PRINTER' CCW HAS BEEN ISSUED. 00435000
  450. SPACE 00436000
  451. LDGRMOD SR R1,R1 INDEX INTO GRAPHIC MODS @V60B9BA 00437000
  452. MVC SAVEWRK4,=C'GRAF' FIRST 4 CHARS OF MEMBER @V60B9BA 00438000
  453. LDGLOOP ST R1,SAVEWRK9 SAVE IT ACROSS MEMLOAD @V60B9BA 00439000
  454. LA R3,HLDGCM1(R1) GCM NAME @V60B9BA 00440000
  455. CLI 0(R3),C' ' ARE WE DONE ? @V60B9BA 00441000
  456. BE LDMDFY XFER IF SO @V60B9BA 00442000
  457. MVC SAVEWRK5,0(R3) MOVE IN THE GCM NAME @V60B9BA 00443000
  458. BAL R3,MEMLOAD LOAD IT INTO THE BUFFERS @V60B9BA 00444000
  459. BNZ MSG241E ERROR RETURN IF BAD LOAD @V60B9BA 00445000
  460. L R5,SAVEWRK2 ADDRESS OF HOLDING AREA @V60B9BA 00446000
  461. L R2,RSPRPAGE SET UP FOR IDAL ADDRESSING @V60B9BA 00447000
  462. LA R2,8(R2) FIRST BYTE OF GRAPH MOD @V60B9BA 00448000
  463. ST R2,HLDCCW5 PLACE TO PUT FIRST IDAW @V60B9BA 00449000
  464. LA R2,2040(R2) NEXT 2048 BYTE BLOCK @V60B9BA 00450000
  465. ST R2,HLDCCW5+4 2ND IDAW @V60B9BA 00451000
  466. L R2,RSPRPAG2 NEXT BUFFER @V60B9BA 00452000
  467. ST R2,HLDCCW6 3RD IDAW @V60B9BA 00453000
  468. LA R2,2048(R2) SECOND BLOCK IN BUFFER @V60B9BA 00454000
  469. ST R2,HLDCCW6+4 4TH IDAW @V60B9BA 00455000
  470. L R2,RSPRPAGE POINT TO 1ST PAGE AGAIN @V60B9BA 00456000
  471. LA R0,HLDCCW5 POINT TO IDAW LIST @V60B9BA 00457000
  472. ICM R0,B'1000',LGMCCW LOAD GRAPHIC MOD CCW @V60B9BA 00458000
  473. LH R1,6(R2) LENGTH OF THE GRAPHIC MOD @V60B9BA 00459000
  474. ICM R1,B'1100',LGMCCW+4 PUT IN THE CCW FLAGS @V60B9BA 00460000
  475. STM R0,R1,HLDCCW1 FIRST CCW @V60B9BA 00461000
  476. MVC HLDCCW2,LOADSNS DUMMY SENSE CCW @V60B9BA 00462000
  477. LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00463000
  478. ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00464000
  479. LA R1,LGMRTN THE INTERRUPT RETURN ADDR @V60B9BA 00465000
  480. ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00466000
  481. ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00467000
  482. B TCSSIO DO THE START I/O @V60B9BA 00468000
  483. SPACE 00469000
  484. LGMRTN EQU * HERE AFTER GRAPH MOD I/O @V60B9BA 00470000
  485. USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00471000
  486. S R12,=A(LGMRTN-DMKTCS) @V60B9BA 00472000
  487. USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00473000
  488. LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00474000
  489. L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00475000
  490. CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00476000
  491. BE OK2 XFER IF NOT @V60B9BA 00477000
  492. OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00478000
  493. LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00479000
  494. CALL DMKFRET RETURN STORAGE @V60B9BA 00480000
  495. B TCSDSP WAIT FOR DEVICE END @V60B9BA 00481000
  496. OK2 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00482000
  497. LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00483000
  498. L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00484000
  499. TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00485000
  500. BO EXITFF ERROR EXIT IF SO @V60B9BA 00486000
  501. CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00487000
  502. BE MSG241E XFER IF SO @V60B9BA 00488000
  503. ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00489000
  504. L R1,SAVEWRK9 RESTORE GRAPHIC MOD INDEX @V60B9BA 00490000
  505. LA R1,4(R1) POINT TO NEXT ONE @V60B9BA 00491000
  506. CH R1,=H'16' FINISHED LAST ONE ? @V60B9BA 00492000
  507. BE LDMDFY XFER IF SO @V60B9BA 00493000
  508. B LDGLOOP DO NEXT GRAPHIC MOD @V60B9BA 00494000
  509. SPACE 2 00495000
  510. * NOW DO THE COPY MODIFICATION LOAD 00496000
  511. SPACE 00497000
  512. LDMDFY L R6,RDEVEXTN POINT TO RSPXBLOK @V60B9BA 00498000
  513. CLC HLDMDFY,RSPXCMOD IS IT ALREADY THERE ? @V60B9BA 00499000
  514. * (INCLUDING NULL CMOD) @V60B9BA 00500000
  515. BE LDFCB IF SO, GO ON TO THE FCB @V60B9BA 00501000
  516. MVC SAVEWRK4,=C'MOD1' FIRST 4 CHARACTERS @V60B9BA 00502000
  517. L R2,RSPRPAGE FIRST BUFFER @V60B9BA 00503000
  518. MVC 0(L'NULLMOD,R2),NULLMOD MOVE IN A NULL CMOD @V60B9BA 00504000
  519. CLI HLDMDFY,0 NULL CMOD SPCECIFIED ? @V60B9BA 00505000
  520. BE LOADIT GO LOAD IT INTO THE 3800 @V60B9BA 00506000
  521. MVC SAVEWRK5,HLDMDFY MOVE IN THE CMOD NAME @V60B9BA 00507000
  522. BAL R3,MEMLOAD LOAD IT INTO THE BUFFERS @V60B9BA 00508000
  523. BNZ MSG241E ERROR RETURN FOR BAD LOAD @V60B9BA 00509000
  524. LOADIT L R2,RSPRPAGE SET UP FOR IDAL ADDRESSING @V60B9BA 00510000
  525. L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00511000
  526. L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @V60B9BA 00512000
  527. LA R2,8(R2) FIRST BYTE OF COPY MOD @V60B9BA 00513000
  528. ST R2,HLDCCW5 PLACE TO PUT FIRST IDAW @V60B9BA 00514000
  529. LA R2,2040(R2) NEXT 2048 BYTE BLOCK @V60B9BA 00515000
  530. ST R2,HLDCCW5+4 2ND IDAW @V60B9BA 00516000
  531. L R2,RSPRPAG2 NEXT BUFFER @V60B9BA 00517000
  532. ST R2,HLDCCW6 3RD IDAW @V60B9BA 00518000
  533. LA R2,2048(R2) SECOND BLOCK IN BUFFER @V60B9BA 00519000
  534. ST R2,HLDCCW6+4 4TH IDAW @V60B9BA 00520000
  535. L R2,RSPRPAGE POINT TO 1ST PAGE AGAIN @V60B9BA 00521000
  536. MVC HLDCCW1,CLRCCW SET UP CLEAR PRINTER CCW @V60B9BA 00522000
  537. LA R0,HLDCCW5 POINT TO IDAW LIST @V60B9BA 00523000
  538. ICM R0,B'1000',LCMCCW LOAD COPY MOD CCW @V60B9BA 00524000
  539. LH R1,6(R2) LENGTH OF THE COPY MOD @V60B9BA 00525000
  540. ICM R1,B'1100',LCMCCW+4 PUT IN THE CCW FLAGS @V60B9BA 00526000
  541. STM R0,R1,HLDCCW2 SECOND CCW @V60B9BA 00527000
  542. MVC HLDCCW3,LOADSNS DUMMY SENSE CCW @V60B9BA 00528000
  543. LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00529000
  544. TM SAVEWRK1,X'40' CLEAR PRINTER ISSUED? @V60B9BA 00530000
  545. BZ *+8 XFER IF NOT @V60B9BA 00531000
  546. LA R1,HLDCCW2 BYPASS CLEAR PRINTER CCW @V60B9BA 00532000
  547. OI SAVEWRK1,X'40' CLEAR PRINTER NOW IS DONE @V60B9BA 00533000
  548. ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00534000
  549. LA R1,LCMRTN THE INTERRUPT RETURN ADDR @V60B9BA 00535000
  550. ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00536000
  551. ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00537000
  552. B TCSSIO DO THE START I/O @V60B9BA 00538000
  553. SPACE 00539000
  554. LCMRTN EQU * HERE AFTER COPY MOD I/O @V60B9BA 00540000
  555. USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00541000
  556. S R12,=A(LCMRTN-DMKTCS) @V60B9BA 00542000
  557. USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00543000
  558. LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00544000
  559. L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00545000
  560. CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00546000
  561. BE OK3 XFER IF NOT @V60B9BA 00547000
  562. OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00548000
  563. LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00549000
  564. CALL DMKFRET RETURN STORAGE @V60B9BA 00550000
  565. B TCSDSP WAIT FOR DEVICE END @V60B9BA 00551000
  566. OK3 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00552000
  567. LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00553000
  568. L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00554000
  569. TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00555000
  570. BO EXITFF ERROR EXIT IF SO @V60B9BA 00556000
  571. CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00557000
  572. BE MSG241E XFER IF SO @V60B9BA 00558000
  573. ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00559000
  574. L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @V60B9BA 00560000
  575. MVC RSPXCMOD,HLDMDFY NEW CMOD IN THE 3800 @V60B9BA 00561000
  576. SPACE 2 00562000
  577. * NOW WE LOAD THE FCB 00563000
  578. SPACE 00564000
  579. LDFCB MVC SAVEWRK4,=C'FCB3' FIRST FOUR CHARACTERS @V60B9BA 00565000
  580. MVC SAVEWRK5,HLDFCB THE FCB NAME @V60B9BA 00566000
  581. L R2,RSPRPAGE BUFFER POINTER @V60B9BA 00567000
  582. LA R1,6/2 ASSUME FCB WAS '6 ' @V60B9BA 00568000
  583. CLC HLDFCB,=C'6 ' WAS IT ? @V60B9BA 00569000
  584. BE CALCFCB XFER IF SO @V60B9BA 00570000
  585. LA R1,8/2 ASSUME FCB WAS '8 ' @V60B9BA 00571000
  586. CLC HLDFCB,=C'8 ' WAS IT ? @V60B9BA 00572000
  587. BE CALCFCB XFER IF SO @V60B9BA 00573000
  588. LA R1,12/2 ASSUME FCB WAS '12 ' @V60B9BA 00574000
  589. CLC HLDFCB,=C'12 ' WAS IT ? @V60B9BA 00575000
  590. BE CALCFCB XFER IF SO @V60B9BA 00576000
  591. CLC RSPXFCB,HLDFCB IS IT ALREADY IN ? @V60B9BA 00577000
  592. BE LDFOSC XFER IF SO - DONE @V60B9BA 00578000
  593. BAL R3,MEMLOAD LOAD IN THE FCB @V60B9BA 00579000
  594. BNZ MSG241E ERROR RETURN IF BAD LOAD @V60B9BA 00580000
  595. L R2,RSPRPAGE BUFFER POINTER @VA09314 00580100
  596. L R5,SAVEWRK2 ADDR OF HOLDING AREA @VA09314 00580200
  597. L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @VA09314 00580300
  598. LH R1,6(R2) GET LENGTH INTO R1 @VA09314 00581100
  599. B FCBIO IT'S IN STORAGE- LOAD IT @V60B9BA 00582000
  600. SPACE 00583000
  601. CALCFCB EQU * HERE TO CALCULATE THE PROPER FCB 00584000
  602. OI SAVEWRK1,X'20' FCB IS CALCULATED @V60B9BA 00585000
  603. LR R4,R1 NUMBER OF HALF-INCHES @V60B9BA 00586000
  604. S R4,F3 SUBTRACT 3 TO GET FCB BYTE @V60B9BA 00587000
  605. SLL R4,4 PUT IT IN POSITION FOR FCB @V60B9BA 00588000
  606. STC R4,8(R2) PUT IT IN THE BUFFER AND @V60B9BA 00589000
  607. MVC 9(143,R2),8(R2) .. PROPOGATE TO MAX LENGTH @V60B9BA 00590000
  608. ST R1,SAVEWRK7 SAVE THE LPI/2 @V60B9BA 00591000
  609. LA R4,8(R2,R1) PLACE TO PUT CHANNEL 1 CODE @V60B9BA 00592000
  610. OI 0(R4),X'01' PUT IN SKIP TO CH 1 @V60B9BA 00593000
  611. SR R3,R3 INITIALIZE THE REGISTER @V60B9BA 00594000
  612. IC R3,RDEVCURP USER CURRENT PAPER SIZE 1ST @V60B9BA 00595000
  613. LA R4,12 NUMBER OF LINE SIZES TO TRY @V60B9BA 00596000
  614. B FCB2 WE ARE SET UP FIRST TIME @V60B9BA 00597000
  615. FCBLOOP SR R3,R3 INITIALIZE THE REGISTER @V60B9BA 00598000
  616. IC R3,LINESIZE-1(R4) GET A PAPER SIZE IN @V60B9BA 00599000
  617. FCB2 STC R3,SAVEWRK9 SAVE PAPER LENGTH FOR LATER @V60B9BA 00600000
  618. SR R0,R0 INITIALIZE FOR MULTIPLY @V60B9BA 00601000
  619. L R1,SAVEWRK7 LPI/2 INTO R1 @V60B9BA 00602000
  620. MR R0,R3 MULT BY NUMBER OF HALF-INS @V60B9BA 00603000
  621. FCBIO L R0,LDFCBCCW FIRST PART OF LOAD FCB CCW @V60B9BA 00604000
  622. ALR R0,R2 RELOCATE ADDRESS @V60B9BA 00605000
  623. O R1,LDFCBCCW+4 LENGTH + FLAGS @V60B9BA 00606000
  624. STM R0,R1,HLDCCW2 SECOND CCW @V60B9BA 00607000
  625. MVC HLDCCW3,LOADSNS DUMMY SENSE CCW @V60B9BA 00608000
  626. MVC HLDCCW1,CLRCCW CLEAR PRINT CCW @V60B9BA 00609000
  627. LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00610000
  628. TM SAVEWRK1,X'40' HAS CLR PRT BEEN ISSUED? @V60B9BA 00611000
  629. BZ *+8 XFER IF NOT @V60B9BA 00612000
  630. LA R1,HLDCCW2 BYPASS THE CLR PRT @V60B9BA 00613000
  631. OI SAVEWRK1,X'40' IT NOW HAS BEEN ISSUED @V60B9BA 00614000
  632. ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00615000
  633. LA R1,FCBRTN THE INTERRUPT RETURN ADDR @V60B9BA 00616000
  634. ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00617000
  635. ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00618000
  636. ST R4,SAVEWRK8 SAVE THE PAPER LENGTH INDEX @V60B9BA 00619000
  637. B TCSSIO DO THE START I/O @V60B9BA 00620000
  638. SPACE 00621000
  639. FCBRTN EQU * HERE AFTER LOAD FCB I/O @V60B9BA 00622000
  640. USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00623000
  641. S R12,=A(FCBRTN-DMKTCS) @V60B9BA 00624000
  642. USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00625000
  643. LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00626000
  644. L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00627000
  645. CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00628000
  646. BE OK4 XFER IF NOT @V60B9BA 00629000
  647. OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00630000
  648. LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00631000
  649. CALL DMKFRET RETURN STORAGE @V60B9BA 00632000
  650. B TCSDSP WAIT FOR DEVICE END @V60B9BA 00633000
  651. OK4 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00634000
  652. LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00635000
  653. L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00636000
  654. L R4,SAVEWRK8 RESTORE THE PAPER LGTH INDEX@V60B9BA 00637000
  655. TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00638000
  656. BO EXITFF ERROR EXIT IF SO @V60B9BA 00639000
  657. CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00640000
  658. BNE FCBDONE NO- THE FCB HAS BEEN LOADED @V60B9BA 00641000
  659. TM IOBMISC2+2,X'08' WAS IT FCB LENGTH CHECK? @V60B9BA 00642000
  660. BZ MSG241E NO-SO BAD MODULE LOAD @V60B9BA 00643000
  661. TM SAVEWRK1,X'20' FCB CALCULATED ? @V60B9BA 00644000
  662. BZ MSG240E NO- FORMS-FCB MISMATCH @V60B9BA 00645000
  663. BCT R4,FCBLOOP TRY NEXT PAPER LENGTH @V60B9BA 00646000
  664. B MSG241E RAN OUT OF PAPER LENGTHS @V60B9BA 00647000
  665. FCBDONE ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00648000
  666. L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @V60B9BA 00649000
  667. MVC RSPXFCB,HLDFCB NEW FCB LOADED @V60B9BA 00650000
  668. TM SAVEWRK1,X'20' FCB CALCULATED ? @V60B9BA 00651000
  669. BZ LDFOSC XFER IF NOT @V60B9BA 00652000
  670. MVC RDEVCURP,SAVEWRK9 GET CURRENT PAPER LENGTH @V60B9BA 00653000
  671. SPACE 2 00654000
  672. LDFOSC LA R0,HLDSTCPY GET STARTING COPY NUMBER @V60B9BA 00655000
  673. O R0,LDCPYCCW SET UP THE LOAD CPY NO. CCW @V60B9BA 00656000
  674. L R1,LDCPYCCW+4 THE SECOND HALF @V60B9BA 00657000
  675. STM R0,R1,HLDCCW2 FIRST IS LD COPY NUM CCW @V60B9BA 00658000
  676. MVC HLDCCW1,CLRCCW MIGHT NEED A CLR PRT @V60B9BA 00659000
  677. TM HLDFLAG,SPCOPYFG 1 TRANSMISSION ? @V60B9BA 00660000
  678. BZ TWOBYTES XFER IF NOT @V60B9BA 00661000
  679. CLI HLDFLSHC,0 ZERO FLASH COUNT ? @V60B9BA 00662000
  680. BE TWOBYTES XFER IF SO @V60B9BA 00663000
  681. CLC HLDFLSHC,HLDCPY ALL COPIES FLASHED ? @V60B9BA 00664000
  682. BNL TWOBYTES XFER IF SO @V60B9BA 00665000
  683. SPACE 00666000
  684. L R1,=X'00FF0000' INITIALIZED FOSC @V60B9BA 00667000
  685. ICM R1,B'1000',HLDFLSHC NUMBER TO BE FLASHED @V60B9BA 00668000
  686. ICM R1,B'0010',HLDCPY TOTAL NUMBER OF COPIES @V60B9BA 00669000
  687. SR R0,R0 MUST SUBTRACT THE FIRST @V60B9BA 00670000
  688. IC R0,HLDFLSHC .. PART TO GET THE SECOND @V60B9BA 00671000
  689. SLL R0,8 GET IT IN POSITION @V60B9BA 00672000
  690. SLR R1,R0 GET THE FINAL FOSC @V60B9BA 00673000
  691. ST R1,SAVEWRK9 PLACE TO PUT IT @V60B9BA 00674000
  692. LA R1,4 NUMBER OF BYTES FOR THE CCW @V60B9BA 00675000
  693. B FOSCIO DO THE 3800 I/O @V60B9BA 00676000
  694. SPACE 00677000
  695. TWOBYTES TM HLDFLAG,SPCOPYFG 1 TRANSMISSION ? @V60B9BA 00678000
  696. BZ MULTXM XFER IF NOT @V60B9BA 00679000
  697. SR R0,R0 GET AN INITIALIZED FOSC @V60B9BA 00680000
  698. CLI HLDFLSHC,0 ZERO FLASH COUNT ? @V60B9BA 00681000
  699. BE *+8 XFER IF SO @V60B9BA 00682000
  700. ICM R0,B'0100',=X'FF' SPECIFY FLAHSING @V60B9BA 00683000
  701. ICM R0,B'1000',HLDCPY TOTAL COPIES TO PRINT @V60B9BA 00684000
  702. ST R0,SAVEWRK9 PLACE TO PUT IT @V60B9BA 00685000
  703. LA R1,2 NUMBER OF BYTES IN FOSC @V60B9BA 00686000
  704. B FOSCIO GO DO THE I/O @V60B9BA 00687000
  705. MULTXM MVI SAVEWRK9,X'01' ONE COPY TO PRINT NOW @V60B9BA 00688000
  706. MVI SAVEWRK9+1,0 ASSUME NO FLASHING @V60B9BA 00689000
  707. CLC HLDSTCPY,HLDFLSHC SHOULD WE FLASH THIS ONE? @V60B9BA 00690000
  708. BH *+8 XFER IF NOT @V60B9BA 00691000
  709. MVI SAVEWRK9+1,X'FF' SPECIFY FLASHING @V60B9BA 00692000
  710. LA R1,2 TWO BYTES IN THE FOSC @V60B9BA 00693000
  711. SPACE 00694000
  712. FOSCIO LA R0,SAVEWRK9 WHERE THE FOSC IS @V60B9BA 00695000
  713. ICM R0,B'1000',LFOSCCCW THE FOSC CCW @V60B9BA 00696000
  714. ICM R1,B'1100',LFOSCCCW+4 THE FLAGS @V60B9BA 00697000
  715. STM R0,R1,HLDCCW3 SECOND CCW @V60B9BA 00698000
  716. MVC HLDCCW4,BLKDATCK SET BLK DATA CK LATCH @VA09294 00699100
  717. MVC HLDCCW5,LOADSNS DUMMY SENSE @VA09294 00699200
  718. LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00700000
  719. TM SAVEWRK1,X'40' HAS 'CLR PRT' BEEN ISSUED? @V60B9BA 00701000
  720. BZ *+8 XFER IF NOT @V60B9BA 00702000
  721. LA R1,HLDCCW2 BYPASS THE CLR PRT @V60B9BA 00703000
  722. OI SAVEWRK1,X'40' IT NOW HAS BEEN ISSUED @V60B9BA 00704000
  723. ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00705000
  724. LA R1,FOSCRTN THE INTERRUPT RETURN ADDR @V60B9BA 00706000
  725. ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00707000
  726. ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00708000
  727. B TCSSIO DO THE START I/O @V60B9BA 00709000
  728. SPACE 00710000
  729. FOSCRTN EQU * HERE AFTER LOAD FOSC I/O @V60B9BA 00711000
  730. USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00712000
  731. S R12,=A(FOSCRTN-DMKTCS) @V60B9BA 00713000
  732. USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00714000
  733. LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00715000
  734. L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00716000
  735. CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00717000
  736. BE OK5 XFER IF NOT @V60B9BA 00718000
  737. OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00719000
  738. LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00720000
  739. CALL DMKFRET RETURN STORAGE @V60B9BA 00721000
  740. B TCSDSP WAIT FOR DEVICE END @V60B9BA 00722000
  741. OK5 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00723000
  742. LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00724000
  743. L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00725000
  744. TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00726000
  745. BO EXITFF ERROR EXIT IF SO @V60B9BA 00727000
  746. CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00728000
  747. BNE FOSCOK XFER IF NOT @V60B9BA 00729000
  748. OI IOBSTAT,IOBFATAL SET FATAL I/O ERROR @V60B9BA 00730000
  749. B EXITFF AND EXIT @V60B9BA 00731000
  750. FOSCOK ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00732000
  751. B EXIT0 AND LEAVE @V60B9BA 00733000
  752. SPACE 6 00734000
  753. TCSSIO MVC IOBMISC2(4),=C'TCS ' INDICATE SETUP ENTRY @V60B9BA 00735000
  754. NI IOBFLAG,X'FF'-IOBRSTRT CLEAR THE RESTART FLAG @V60B9BA 00736000
  755. CALL DMKIOSQR ISSUE THE START I/O @V60B9BA 00737000
  756. TCSDSP GOTO DMKDSPCH WAIT FOR THE INTERRUPT @V60B9BA 00738000
  757. SPACE 5 00739000
  758. EXITF0 DS 0H @VA12900 00739200
  759. MVI SAVEWRK1+1,X'F0' SET CC=4 - PAGING ERROR @VA12900 00739400
  760. B EXIT GO TO COMMON EXIT ROUTINE @VA12900 00739600
  761. SPACE 2 00739800
  762. EXITFF MVI SAVEWRK1+1,X'FF' NON-ZERO CONDITION CODE @V60B9BA 00740000
  763. B EXIT GO TO COMMON EXIT @V60B9BA 00741000
  764. SPACE 00742000
  765. EXIT0 EQU * ITS ZERO CONDITION CODE @V60B9BA 00743000
  766. EXIT L R1,SAVEWRK3 WAS THERE A SYS VIRT PAGE? @V60B9BA 00744000
  767. LTR R1,R1 WELL ? @V60B9BA 00745000
  768. BZ EXITA XFER IF NOT @V60B9BA 00746000
  769. SR R0,R0 DUMMY DASD ADDRESS @V60B9BA 00747000
  770. CALL DMKRPAGT,AFFINITY,PARM=SYSTEM RELEASE IT @V60B9BA 00748000
  771. CALL DMKPGTVR GIVE IT BACK @V60B9BA 00749000
  772. EXITA LA R0,HLDSIZE LET'S GIVE BACK THE @V60B9BA 00750000
  773. L R1,SAVEWRK2 HOLDING AREA WE GOT @V60B9BA 00751000
  774. CALL DMKFRET GO DO IT @V60B9BA 00752000
  775. EXITB TM SAVEWRK1+1,X'FF' SET THE CONDITION CODE @V60B9BA 00753000
  776. EXIT 00754000
  777. SPACE 5 00755000
  778. MSG240E LA R2,240 FCB-FORMS MISMATCH CODE @V60B9BA 00756000
  779. LA R5,15 MESSAGE DATA LENGTH @V60B9BA 00757000
  780. B MSGCOMN JOIN COMMON CODE @V60B9BA 00758000
  781. SPACE 00759000
  782. MSG241E LA R2,241 INVALID LOAD MODULE @V60B9BA 00760000
  783. LA R5,20 LENGTH OF DATA @V60B9BA 00761000
  784. SPACE 00762000
  785. MSGCOMN L R4,RSPRPAGE ADDR OF DATA AREA @V60B9BA 00763000
  786. MVI 3(R4),0 DELIMITER BEFOR 2ND FIELD @V60B9BA 00764000
  787. LA R4,4(R4) NEXT MESSAGE FIELD @V60B9BA 00765000
  788. CH R2,=H'240' MSG ID 240 ? @V60B9BA 00766000
  789. BE SKIPMOD XFER IF SO @V60B9BA 00767000
  790. MVC 0(4,R4),SAVEWRK5 MODULE NAME @V60B9BA 00768000
  791. MVI 4(R4),0 DELIMITER @V60B9BA 00769000
  792. LA R4,5(R4) NEXT MESSAGE FIELD @V60B9BA 00770000
  793. SKIPMOD LH R1,SFBFILID GET SPOOL FILE ID @V60B9BA 00771000
  794. CALL DMKCVTBD CONVERT TO DECIMAL @VMI0013 00772000
  795. STCM R1,B'1111',0(R4) SPOOLID @V60B9BA 00773000
  796. MVI 4(R4),0 DELIMITER @V60B9BA 00774000
  797. LA R4,5(R4) NEXT FIELD @V60B9BA 00775000
  798. MVC 0(6,R4),BLANKS BLANK THE FIELD @V60B9BA 00776000
  799. TM SAVEWRK1,X'10' ENTERED AT DMKTCSSP? @V60B9BA 00777000
  800. BO MSGCONT XFER IF SO @V60B9BA 00778000
  801. MVC 0(6,R4),=C'HELD ' FILE STATUS @V60B9BA 00779000
  802. TM RDEVSTA2,RDEVPURG IS IT PURGE ? @V60B9BA 00780000
  803. BZ MSGCONT XFER IF NOT @V60B9BA 00781000
  804. MVC 0(6,R4),=C'PURGED' MOVE THAT @V60B9BA 00782000
  805. SPACE 00783000
  806. MSGCONT L R4,RSPRPAGE BEGINNING OF DATA AREA @V60B9BA 00784000
  807. CALL DMKSCNRD GET 3800 ADDR IN CUU FORM @V60B9BA 00785000
  808. CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V60B9BA 00786000
  809. STCM R1,B'0111',0(R4) DATA AREA @V60B9BA 00787000
  810. LA R0,8 USERID LENGTH @V60B9BA 00788000
  811. LA R1,SFBUSER USERID ADDRESS @V60B9BA 00789000
  812. CALL DMKSCNAU GET THE VMBLOK @V60B9BA 00790000
  813. BALR R6,0 SAVE CONDITION CODE @V60B9BA 00791000
  814. SWTCHVM SWITCH TO USER'S VMBLOK @VMI0081 00792000
  815. LR R0,R5 MESSAGE LENGTH @V60B9BA 00793000
  816. ICM R0,B'1110',DMKTCS+3 MODULE ID @V60B9BA 00794000
  817. LR R1,R4 ADDRESS OF DATA @V60B9BA 00795000
  818. ICM R2,B'1100',=X'B0C5' OP + ALARM + RETURN @V60B9BA 00796000
  819. CALL DMKERMSG SEND MESSAGE TO OPERATOR @V60B9BA 00797000
  820. SPM R6 RESTORE CONDITION CODE @V60B9BA 00798000
  821. BNZ EREXIT HE'S NOT LOGGED ON @V60B9BA 00799000
  822. ICM R2,B'1000',=X'90' ALARM + RETURN @V60B9BA 00800000
  823. CALL DMKERMSG SEND USER THE MESSAGE @V60B9BA 00801000
  824. SPACE 00802000
  825. EREXIT L R1,SAVEWRK3 THE SYSTEM VIRTUAL PAGE @V60B9BA 00803000
  826. CALL DMKPGTVR GIVE IT BACK @V60B9BA 00804000
  827. LA R0,HLDSIZE RETURN THE HOLDING AREA @V60B9BA 00805000
  828. L R1,SAVEWRK2 ITS ADDRESS @V60B9BA 00806000
  829. CALL DMKFRET RETURN IT @V60B9BA 00807000
  830. MVI SAVEWRK1+1,X'FF' SET NON-ZERO COND. CODE @VA09268 00808100
  831. L R1,SAVER11 VMBLOK OF CALLER @VMI0081 00809000
  832. SWTCHVM SWITCH TO CALLER'S VMBLOK @VMI0081 00810000
  833. B EXITB RETURN TO CALLER @VA09268 00811100
  834. EJECT 00812000
  835. *. 00813000
  836. * THIS SUBROUTINE READS MEMBERS OF THE IMAGE LIBRARY SPECIFIED 00814000
  837. * IN RDEVIMAG INTO THE LOCKED BUFFERS INDICATED IN THE 00815000
  838. * RSPLCTL CONTROL BLOCK. THE DIRECTORY AND DATA ARE INITIALLY 00816000
  839. * MOVED TO THE BUFFERS POINTED TO BY SAVEWRK3 AND THEN MOVED. 00817000
  840. * ON ENTRY, THE MEMBER TO LOAD IS CONTAINED IN SAVEWRK4 & SAVEWRK5. 00818000
  841. * THE DATA IS MOVED IN 4 SECTIONS: A, B, C, AND D. 00819000
  842. * SINCE ITS MAXIMUM IS 8192 BYTES, IT CAN SPAN 3 PAGES 00820000
  843. * IN THE IMAGE LIBRARY, WITH SECTION A IN THE FIRST PAGE, 00821000
  844. * SECTIONS B & C IN THE SECOND PAGE, AND SECTION D IN THE 00822000
  845. * THIRD PAGE. THE RESULT CAN SPAN 2 PAGES WITH 00823000
  846. * SECTIONS A AND B LANDING IN THE FIRST PAGE AND 00824000
  847. * SECTIONS C AND D LANDING IN THE SECOND PAGE. 00825000
  848. *. 00826000
  849. SPACE 00827000
  850. MEMLOAD L R1,=A(DMKQNTBL) GET IMAGE LIBRARY ANCHOR @V60B9BA 00828000
  851. LTR R1,R1 ANY SYSTEMS DEFINED ? @V60B9BA 00829000
  852. BZ MEMERROR ERROR RETURN IF NOT @V60B9BA 00830000
  853. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM) BRING NPRTBL IN @V60B9BA 00831000
  854. USING NPRTBL,R2 ADDRESSIBILITY @V60B9BA 00832000
  855. MEMLD1 CLC NPRNAME,RDEVIMAG IS THIS THE IMAGE LIBRARY? @V60B9BA 00833000
  856. BE MEMLD2 XFER IF SO @V60B9BA 00834000
  857. AL R2,NPRPNT NEXT ENTRY @V60B9BA 00835000
  858. CLC NPRPNT,ZEROES DUMMY LAST ENTRY ? @V60B9BA 00836000
  859. BNE MEMLD1 TRY AGAIN IF NOT @V60B9BA 00837000
  860. MEMERROR TM *,X'FF' NON-ZERO CONDITION CODE @V60B9BA 00838000
  861. BR R3 RETURN TO CALLER @V60B9BA 00839000
  862. MEMLD2 LA R0,6 LENGTH OF VOLSER @V60B9BA 00840000
  863. LA R1,NPRVOL ADDRESS OF VOLSER @V60B9BA 00841000
  864. CALL DMKSCNVS FIND THE RDEVBLOK @V60B9BA 00842000
  865. BNZR R3 ERROR RETURN IF NOT FOUND @V60B9BA 00843000
  866. TM RDEVFLAG-RDEVBLOK(R1),RDEVOWN CP-OWNED ? @V60B9BA 00844000
  867. BZ MEMERROR ERROR IF NOT @V60B9BA 00845000
  868. LA R6,32 PAGES/CYL FOR 2314 @V60B9BA 00846000
  869. TM RDEVTYPE-RDEVBLOK(R1),TYP2314 2314? @V60B9BA 00847000
  870. BO MEMLD3 XFER IF SO @V60B9BA 00848000
  871. LA R6,120 PAGES/CYL FOR 3350 @V60B9BA 00849000
  872. CLI RDEVTYPE-RDEVBLOK(R1),TYP3350 IS IT 3350? @V60B9BA 00850000
  873. BE MEMLD3 XFER IF SO @V60B9BA 00851000
  874. LA R6,96 Pages/cyl for 3375 HRC106DK 00851100
  875. CLI RDEVTYPE-RDEVBLOK(R1),TYP3375 Is it 3375? HRC106DK 00851200
  876. BE MEMLD3 Xfer if so HRC106DK 00851300
  877. LA R6,150 Pages/cyl for 3380 HRC106DK 00851400
  878. CLI RDEVTYPE-RDEVBLOK(R1),TYP3380 Is it 3380? HRC106DK 00851500
  879. BE MEMLD3 Xfer if so HRC106DK 00851600
  880. LA R6,57 PAGES/CYL FOR 3330 @V60B9BA 00852000
  881. TM RDEVTYPE-RDEVBLOK(R1),TYP3330 IS IT A 3330? @V60B9BA 00853000
  882. BO MEMLD3 XFER IF SO @V60B9BA 00854000
  883. LA R6,24 IT MUST BE A 3340 OR 2305 @V60B9BA 00855000
  884. MEMLD3 SLL R6,8 GET IT INTO POSITION @V60B9BA 00856000
  885. MVC SAVEWRK6,NPRSTART GET STARTING CCPD @V60B9BA 00857000
  886. MVC SAVEWRK6+3(1),RDEVCODE+1-RDEVBLOK(R1) INDEX @V60B9BA 00858000
  887. L R1,SAVEWRK3 VIRT ADDRESS OF SYSTEM PAGE @V60B9BA 00859000
  888. L R0,SAVEWRK6 STARTING DASD CCPD @V60B9BA 00860000
  889. ST R0,SAVEWRK7 CURRENT CCPD @V60B9BA 00861000
  890. CALL DMKRPAGT,PARM=SYSTEM+BRING BRING IT IN @V60B9BA 00862000
  891. BNZR R3 RETURN, PAGING ERROR @V60B9BA 00863000
  892. DROP R2 NOT NEEDED FOR NPRTBL @V60B9BA 00864000
  893. USING PDEBLOK,R2 ADDRESSES DIRECTORY ENTRIES @V60B9BA 00865000
  894. CLC PDEIMAG,RDEVIMAG IS IT THE RIGHT IMAG LIB ? @V60B9BA 00866000
  895. BNER R3 ERROR RETURN IF NOT @V60B9BA 00867000
  896. L R0,PDENUM NUMBER OF MEMBERS @V60B9BA 00868000
  897. LA R2,PDESIZE(R2) FIRST REAL MEMBER @V60B9BA 00869000
  898. MEMLD3A LA R4,PDESIZE INCREMENT FOR BXLE @V60B9BA 00870000
  899. LR R5,R2 SET UP THE @V60B9BA 00871000
  900. O R5,F4095 .. COMPARAND TO END OF PAGE @V60B9BA 00872000
  901. MEMLD4 CLC PDENAME,SAVEWRK4 IS THIS THE MEMBER TO LOAD? @V60B9BA 00873000
  902. BE MEMLD7 XFER IF SO @V60B9BA 00874000
  903. BCT R0,MEMLD5 TRY NEXT MEMBER @V60B9BA 00875000
  904. B MEMERROR COULDN'T FIND THE MEMBER @V60B9BA 00876000
  905. MEMLD5 BXLE R2,R4,MEMLD4 POINT TO NEXT ENTRY @V60B9BA 00877000
  906. SPACE 00878000
  907. * MUST GET NEXT DIRECTORY PAGE 00879000
  908. SPACE 00880000
  909. LR R4,R0 SAVE RESIDUAL MEMBER COUNT @V60B9BA 00881000
  910. L R0,SAVEWRK7 CURRENT CCPD @V60B9BA 00882000
  911. AL R0,F256 BUMP TO NEXT PAGE @V60B9BA 00883000
  912. LR R1,R0 TO R1 FOR WORK @V60B9BA 00884000
  913. N R1,=X'0000FF00' ISOLATE PAGE NUMBER @V60B9BA 00885000
  914. CR R1,R6 REACHED MAXIMUM ? @V60B9BA 00886000
  915. BNH MEMLD6 XFER IF NOT @V60B9BA 00887000
  916. AL R0,=X'00010000' NEXT CYLINDER @V60B9BA 00888000
  917. ICM R0,B'0010',F1+3 POINT TO PAGE 1 @V60B9BA 00889000
  918. MEMLD6 ST R0,SAVEWRK7 SAVE CURRENT CCPD @V60B9BA 00890000
  919. L R1,SAVEWRK3 VIRTUAL ADDR OF SYSTEM PAGE @V60B9BA 00891000
  920. CALL DMKRPAGT,PARM=BRING+SYSTEM BRING IT IN @V60B9BA 00892000
  921. BNZR R3 PAGING ERROR - RETURN @V60B9BA 00893000
  922. LR R0,R4 RESTORE RESIDUAL MEMB CNT @V60B9BA 00894000
  923. B MEMLD3A CONTINUE THE SEARCH @V60B9BA 00895000
  924. SPACE 00896000
  925. * WE FOUND THE DIRECTORY ENTRY 00897000
  926. SPACE 00898000
  927. MEMLD7 L R4,PDEDISP GET RBA OF MEMBER @V60B9BA 00899000
  928. SRDL R4,12 DIVIDE BY 4096 @V60B9BA 00900000
  929. SRL R5,20 REMAINDER IN R5 @V60B9BA 00901000
  930. SLL R4,8 GET PAGE DISP INTO POSITION @V60B9BA 00902000
  931. CLC PDELGTH,=F'8192' GREATER THAN MAXIMUM ? @V60B9BA 00903000
  932. BHR R3 ERROR RETURN IF SO @V60B9BA 00904000
  933. MVC SAVEWRK8,PDELGTH SAVE LENGTH LOCALLY @V60B9BA 00905000
  934. DROP R2 NO LONGER NEEDED FOR DRCTRY @V60B9BA 00906000
  935. SR R0,R0 WE NOW GET THE DISPLACEMENT @V60B9BA 00907000
  936. SR R1,R1 GET PAGE NUMBER OF @VA10748 00908100
  937. ICM R1,B'0010',SAVEWRK6+2 IMAGELIB START @VA10748 00908200
  938. S R1,F256 CONVERT TO OFFSET FROM CYL START @VA10748 00908300
  939. MVI SAVEWRK6+2,X'01' BACKUP IMAGELIB TO CYL START @VA10748 00908400
  940. ALR R1,R4 PLUS PAGE DISPLACEMENT @VA10748 00908500
  941. DR R0,R6 DIVIDE BY PAG/CYL @V60B9BA 00909000
  942. SLL R1,16 GET NUM OF CYLS IN POSITION @V60B9BA 00910000
  943. ALR R0,R1 ADD CYLS TO REMAINDER @V60B9BA 00911000
  944. AL R0,SAVEWRK6 ADD START TO DISP @V60B9BA 00912000
  945. ST R0,SAVEWRK7 SAVE IT FOR LATER @V60B9BA 00913000
  946. L R4,RSPRPAGE TARGET ADDR FOR 1ST SECTION @V60B9BA 00914000
  947. L R1,SAVEWRK3 VIRT SYSTEM PAGE @V60B9BA 00915000
  948. CALL DMKRPAGT,PARM=BRING+SYSTEM BRING IT IN @V60B9BA 00916000
  949. BNZR R3 PAGING ERROR - RETURN @V60B9BA 00917000
  950. LR R1,R2 HOLD REAL ADDR FOR WORK @V60B9BA 00918000
  951. ALR R2,R5 ADD DISP TO GET START @V60B9BA 00919000
  952. CLC 0(4,R2),SAVEWRK5 NAMES MATCH ? @V60B9BA 00920000
  953. BNER R3 ERROR RETURN IF NOT @V60B9BA 00921000
  954. AL R1,F4096 GET LENGTH OF FIRST SECTION @V60B9BA 00922000
  955. SLR R1,R2 ... OF THE MEMBER TO MOVE @V60B9BA 00923000
  956. L R0,RSPRPAGE TARGET ADDRESS (SECT 1) @V60B9BA 00924000
  957. LR R4,R2 SOURCE ADDRESS (SECT 1) @V60B9BA 00925000
  958. LR R5,R1 SOURCE LENGTH @V60B9BA 00926000
  959. LR R2,R1 SAVE THE MVCL LENGTH @V60B9BA 00927000
  960. MVCL R0,R4 DO THE MOVE FOR SECT 1 @V60B9BA 00928000
  961. C R2,SAVEWRK8 HAVE WE FINISHED? @V60B9BA 00929000
  962. BNL MEMEXIT XFER IF SO @V60B9BA 00930000
  963. SPACE 00931000
  964. * SET UP TO MOVE THE SECOND SECTION 00932000
  965. SPACE 00933000
  966. S R2,SAVEWRK8 NEGATIVE OF REMAINING COUNT @V60B9BA 00934000
  967. LCR R2,R2 MAKE IT POSITIVE @V60B9BA 00935000
  968. ST R2,SAVEWRK8 SAVE IT @V60B9BA 00936000
  969. LR R4,R0 SAVE THE NEW TARGET ADDRESS @V60B9BA 00937000
  970. L R0,SAVEWRK7 CURRENT CCPD @V60B9BA 00938000
  971. AL R0,F256 BUMP TO NEXT PAGE @V60B9BA 00939000
  972. LR R1,R0 TO R1 FOR WORK @V60B9BA 00940000
  973. N R1,=X'0000FF00' ISOLATE PAGE NUMBER @V60B9BA 00941000
  974. CR R1,R6 REACHED MAX ? @V60B9BA 00942000
  975. BNH MEMLD11 XFER IF NOT @V60B9BA 00943000
  976. AL R0,=X'00010000' BUMP TO NEXT CYLINDER @V60B9BA 00944000
  977. ICM R0,B'0010',F1+3 PAGE 1 @V60B9BA 00945000
  978. MEMLD11 ST R0,SAVEWRK7 SAVE CURRENT CCPD @V60B9BA 00946000
  979. L R1,SAVEWRK3 VIRTUAL ADDR OF SYSTEM PAGE @V60B9BA 00947000
  980. CALL DMKRPAGT,PARM=BRING+SYSTEM BRING IT IN @V60B9BA 00948000
  981. BNZR R3 PAGING ERROR - RETURN @V60B9BA 00949000
  982. LA R1,4095(R4) GET COUNT FOR SECTION 2 @V60B9BA 00950000
  983. N R1,XPAGNUM ROUND DOWN TO A PAGE @V60B9BA 00951000
  984. SLR R1,R4 GET BYTE COUNT @V60B9BA 00952000
  985. LR R0,R4 TARGET ADDRESS @V60B9BA 00953000
  986. LR R5,R1 SOURCE LENGTH @V60B9BA 00954000
  987. LR R4,R2 SOURCE ADDRESS @V60B9BA 00955000
  988. LR R2,R1 SAVE MOVE LENGTH @V60B9BA 00956000
  989. MVCL R0,R4 DO THE MOVE FOR SECTION 2 @V60B9BA 00957000
  990. C R2,SAVEWRK8 HAVE WE FINISHED ? @V60B9BA 00958000
  991. BNL MEMEXIT RETURN IF SO @V60B9BA 00959000
  992. SPACE 00960000
  993. * SET UP TO MOVE THE THIRD SECTION 00961000
  994. SPACE 00962000
  995. S R2,SAVEWRK8 GET NEGATIVE OF BYTES LEFT @V60B9BA 00963000
  996. LCR R2,R2 MAKE IT POSITIVE @V60B9BA 00964000
  997. ST R2,SAVEWRK8 SAVE IT FOR LATER @V60B9BA 00965000
  998. LR R1,R4 GET NEXT ADDRESS @VA09470 00966050
  999. AL R1,F4096 CALC MOVE LENGTH @VA09470 00966100
  1000. N R1,XPAGNUM ... FOR SECTION 3 @V60B9BA 00967000
  1001. SLR R1,R4 THIS IS THE SOURCE LENGTH @V60B9BA 00968000
  1002. LR R5,R1 SOURCE LGHTH (ADDR SET UP) @V60B9BA 00969000
  1003. L R0,RSPRPAG2 TARGET FOR SECTION 3 @V60B9BA 00970000
  1004. LR R2,R1 SAVE THE MOVE LENGTH @V60B9BA 00971000
  1005. MVCL R0,R4 MOVE DATA FOR SECTION 3 @V60B9BA 00972000
  1006. C R2,SAVEWRK8 FINISHED ? @V60B9BA 00973000
  1007. BNL MEMEXIT XFER IF SO @V60B9BA 00974000
  1008. SPACE 00975000
  1009. * THIS IS A LONG MEMEBER. MOVE THE LAST SECTION 00976000
  1010. SPACE 00977000
  1011. S R2,SAVEWRK8 FINAL BYTE COUNT TO @V60B9BA 00978000
  1012. LCR R2,R2 .. MOVE IS NOW CALCULATED @V60B9BA 00979000
  1013. ST R2,SAVEWRK8 .. AND SAVED @V60B9BA 00980000
  1014. LR R4,R0 NEW TARGET ADDRESS @V60B9BA 00981000
  1015. L R0,SAVEWRK7 CURRENT CCPD @V60B9BA 00982000
  1016. AL R0,F256 BUMP TO NEXT PAGE @V60B9BA 00983000
  1017. LR R1,R0 TO R1 FOR WORK @V60B9BA 00984000
  1018. N R1,=X'0000FF00' ISOLATE PAGE NUMBER @V60B9BA 00985000
  1019. CR R1,R6 REACHED MAXIMUM ? @V60B9BA 00986000
  1020. BNH MEMLD12 XFER IF NOT @V60B9BA 00987000
  1021. AL R0,=X'00010000' BUMP TO NEXT CYLINDER @V60B9BA 00988000
  1022. ICM R0,B'0010',F1+3 PAGE 1 @V60B9BA 00989000
  1023. MEMLD12 ST R0,SAVEWRK7 SAVE CURRENT CCPD @V60B9BA 00990000
  1024. L R1,SAVEWRK3 VIRTUAL ADDR OF SYSTEM PAGE @V60B9BA 00991000
  1025. CALL DMKRPAGT,PARM=BRING+SYSTEM BRING IT IN @V60B9BA 00992000
  1026. BNZR R3 PAGING ERROR - RETURN @V60B9BA 00993000
  1027. L R1,SAVEWRK8 TARGET LENGTH @V60B9BA 00994000
  1028. LR R5,R1 SOURCE LENGTH @V60B9BA 00995000
  1029. LR R0,R4 TARGET ADDRESS @V60B9BA 00996000
  1030. LR R4,R2 SOURCE ADDRESS @V60B9BA 00997000
  1031. MVCL R0,R4 MOVE DATA FOR FINAL SECTION @V60B9BA 00998000
  1032. MEMEXIT TM *,0 SET ZERO CONDITION CODE @V60B9BA 00999000
  1033. BR R3 AND RETURN @V60B9BA 01000000
  1034. EJECT 01001000
  1035. * CONSTANT DATA AREA 01002000
  1036. SPACE 01003000
  1037. EOTCCW CCW X'07',*-*,CC+SILI,1 END OF TRANSMISSION @V60B9BA 01004000
  1038. LOADSNS CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE CCW @V60B9BA 01005000
  1039. SPACE 01006000
  1040. MKFMCCW CCW X'8B',*-*,CC+SILI,1 SKIP TO CHANNEL 1 @V60B9BA 01007000
  1041. CCW X'17',*-*,CC+SILI,1 MARK FORM CCW @V60B9BA 01008000
  1042. CCW X'8B',*-*,CC+SILI,1 SKIP TO CHANNEL 1 @V60B9BA 01009000
  1043. CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE @V60B9BA 01010000
  1044. SPACE 01011000
  1045. CLRCCW CCW X'87',*-*,CC+SILI,1 CLEAR PRINTER CCW @V60B9BA 01012000
  1046. LDWCGCCW CCW X'53',CATFINAL-CATSECT,CC+SILI,4 LOAD WCGM CCW @V60B9BA 01013000
  1047. SELTTCCW CCW X'47',*-*,CC+SILI,1 SELECT TRANS TABLE 0 @V60B9BA 01014000
  1048. LTTCCW CCW X'83',CATTABLE-CATSECT,CC+SILI,256 LOAD TR TAB @V60B9BA 01015000
  1049. LGMCCW CCW X'25',*-*,CC+SILI+IDA,0 LOAD GRAPHIC MOD @V60B9BA 01016000
  1050. LCMCCW CCW X'35',*-*,CC+SILI+IDA,0 LOAD COPY MOD @V60B9BA 01017000
  1051. LDFCBCCW CCW X'63',8,CC+SILI,0 LOAD FCB CCS @V60B9BA 01018000
  1052. LDCPYCCW CCW X'23',*-*,CC+SILI,1 LOAD COPY NUMBER @V60B9BA 01019000
  1053. LFOSCCCW CCW X'43',*-*,CC+SILI,0 LOAD FOSC CCW @V60B9BA 01020000
  1054. BLKDATCK CCW X'73',*-*,CC+SILI,1 BLOCK DATA CHECK @VA09294 01020100
  1055. SPACE 01021000
  1056. NULLMOD DC X'404040400000000700010001010140' NULL COPY MOD @V60B9BA 01022000
  1057. SPACE 2 01023000
  1058. * INCHES FORMS TYPE 01024000
  1059. LINESIZE DC AL1(6) 3 ISO @V60B9BA 01025000
  1060. DC AL1(7) 3 & HALF COMMON USE (USA, CANADA) @V60B9BA 01026000
  1061. DC AL1(8) 4 ISO @V60B9BA 01027000
  1062. DC AL1(11) 5 & HALF COMMON USE (USA, CANADA) @V60B9BA 01028000
  1063. DC AL1(12) 6 ISO @V60B9BA 01029000
  1064. DC AL1(14) 7 COMMON USE (USA, CANADA) @V60B9BA 01030000
  1065. DC AL1(16) 8 ISO @V60B9BA 01031000
  1066. DC AL1(17) 8 & HALF COMMON USE (USA, CANADA) @V60B9BA 01032000
  1067. DC AL1(20) 10 ISO @V60B9BA 01033000
  1068. DC AL1(22) 11 COMMON USE (USA, CANADA) @V60B9BA 01034000
  1069. DC AL1(24) 12 ISO @V60B9BA 01035000
  1070. SPACE 4 01036000
  1071. HLDAREA DSECT 01037000
  1072. HLDCHARS DS CL4 CHAR ARR TBL TO LOAD @V60B9BA 01038000
  1073. HLDGCM1 DS CL4 GRAPHIC MOD 1 @V60B9BA 01039000
  1074. HLDGCM2 DS CL4 GRAPHIC MOD 2 @V60B9BA 01040000
  1075. HLDGCM3 DS CL4 GRAPHIC MOD 3 @V60B9BA 01041000
  1076. HLDGCM4 DS CL4 GRAPHIC MOD 4 @V60B9BA 01042000
  1077. HLDMDFY DS CL4 COPY MODIFICATION @V60B9BA 01043000
  1078. HLDFCB DS CL4 FCB NAME @V60B9BA 01044000
  1079. HLDSTCPY DS 1X STARTING COPY NUMBER @V60B9BA 01045000
  1080. HLDFLSHC DS 1X FLASH COUNT @V60B9BA 01046000
  1081. HLDCPY DS 1X NUMBER OF COPIES TO PRINT @V60B9BA 01047000
  1082. HLDFLAG DS 1X COPY OF SPFLAG1 @V60B9BA 01048000
  1083. HLDCCW1 DS 1D 3800 SETUP CCW NUMBER 1 @V60B9BA 01049000
  1084. HLDCCW2 DS 1D 3800 SETUP CCW NUMBER 2 @V60B9BA 01050000
  1085. HLDCCW3 DS 1D 3800 SETUP CCW NUMBER 3 @V60B9BA 01051000
  1086. HLDCCW4 DS 1D 3800 SETUP CCW NUMBER 4 @V60B9BA 01052000
  1087. HLDCCW5 DS 1D 3800 SETUP CCW NUMBER 5 @V60B9BA 01053000
  1088. HLDCCW6 DS 1D 3800 SETUP CCW NUMBER 6 @V60B9BA 01054000
  1089. HLDCCW7 DS 1D 3800 SETUP CCW NUMBER 7 @V60B9BA 01055000
  1090. HLDCCW8 DS 1D 3800 SETUP CCW NUMBER 8 @V60B9BA 01056000
  1091. HLDSIZE EQU (*-HLDAREA)/8 SIZE IN DOUBLEWORDS @V60B9BA 01057000
  1092. SPACE 4 01058000
  1093. PDEBLOK DSECT , IMAGELIB DIRECTORY ENTRY @V60B9BA 01059000
  1094. PDENAME DS CL8 MEMBER NAME @V60B9BA 01060000
  1095. PDEDISP DS 1F RBA OF START OF MEMBER @V60B9BA 01061000
  1096. PDELGTH DS 1F LENGTH OF MEMBER IN BYTES @V60B9BA 01062000
  1097. ORG PDENAME FIRST DUMMY ENTRY @V60B9BA 01063000
  1098. PDEIMAG DS CL8 NAMED SYSTEM NAME @V60B9BA 01064000
  1099. PDEDIRLN DS 1F LENGTH OF DIRECTORY IN BYTES@V60B9BA 01065000
  1100. PDENUM DS 1F NUMBER OF MEMBERS @V60B9BA 01066000
  1101. PDESIZE EQU *-PDEBLOK SIZE OF ENTRY IN BYTES @V60B9BA 01067000
  1102. SPACE 3 01068000
  1103. CATSECT DSECT , CHARACTER ARRANGEMENT TABLE @V60B9BA 01069000
  1104. CATNAME DS CL4 NAME OF THIS CAT @V60B9BA 01070000
  1105. DS XL2 RESERVED @V60B9BA 01071000
  1106. CATLEN DS 1H LENGTH IN BYTES OF REMAINDER@V60B9BA 01072000
  1107. CATTABLE DS XL256 TRANSLATE TABLE @V60B9BA 01073000
  1108. CATWCGM DS 4XL2 WCGM'S AND THEIR POSITIONS @V60B9BA 01074000
  1109. CATGRAF DS 4CL4 NAMES OF THE GRAPHIC MODS @V60B9BA 01075000
  1110. CATSIZE EQU *-CATSECT LENGTH OF MODULE IN BYTES @V60B9BA 01076000
  1111. DS 0D WORK AREA IN BUFFER @V60B9BA 01077000
  1112. CATFINAL DS 4X FINAL DATA FOR LOAD WCGM @V60B9BA 01078000
  1113. SPACE 3 01079000
  1114. COPY VMBLOK @V60B9BA 01080000
  1115. COPY SAVE @V60B9BA 01081000
  1116. COPY SPOOL @V60B9BA 01082000
  1117. COPY RBLOKS @V60B9BA 01083000
  1118. COPY IOBLOKS @V60B9BA 01084000
  1119. COPY NPRTBL @V60B9BA 01085000
  1120. COPY EQU @V60B9BA 01086000
  1121. COPY DEVTYPES @V60B9BA 01087000
  1122. PSA , @V60B9BA 01088000
  1123. END 01089000