Table of Contents

DMKSEP Source

References

Source Listing

DMKSEP.ASSEMBLE.txt
  1. SEP TITLE 'DMKSEP (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. * DMKSEP 00007000
  8. * 00008000
  9. * FUNCTION - 00009000
  10. * 00010000
  11. * TO PRINT OUTPUT SEPARATOR PAGES ON THE REAL SPOOLING PRINTERS 00011000
  12. * IN BETWEEN THE OUTPUT OF DIFFERENT SYSTEM USERS 00012000
  13. * 00013000
  14. * TO PUNCH OUTPUT SEPARATOR CARDS ON THE REAL SPOOLING PUNCHES 00014000
  15. * IN BETWEEN THE OUTPUT OF DIFFERENT SYSTEM USERS 00015000
  16. * 00016000
  17. * ATTRIBUTES - 00017000
  18. * 00018000
  19. * REENTRANT, PAGEABLE, CALLED VIA SVC 00019000
  20. * 00020000
  21. * ENTRY POINTS - 00021000
  22. * 00022000
  23. * DMKSEPSP - SEPARATOR ROUTINE 00023000
  24. * 00024000
  25. * ENTRY POINTS - DATA 00025000
  26. SPACE 00026000
  27. * DMKSEPHR - CLASS X DEFAULT HEADER LINE 00027000
  28. * 00028000
  29. * ENTRY CONDITIONS - 00029000
  30. * 00030000
  31. * GPR2 = ADDRESS OF LOCKED PAGE BUFFER 00031000
  32. * GPR7 = ADDRESS OF SFBLOK FOR FILE BEING PRINTED 00032000
  33. * GPR8 = ADDRESS OF RDEVBLOK FOR PRINTER 00033000
  34. * GPR9 = ADDRESS OF RSPLCTL WORKAREA 00034000
  35. * GPR10 = ADDRESS OF IOBLOK FOR PRINTER IO 00035000
  36. * GPR12 = ADDRESS OF DMKSEP 00036000
  37. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00037000
  38. * 00038000
  39. * EXIT CONDITIONS - 00039000
  40. * 00040000
  41. * NONE 00041000
  42. * 00042000
  43. * CALLS TO OTHER ROUTINES - 00043000
  44. * 00044000
  45. * DMKIOSQR - TO START THE REAL PRINTER 00045000
  46. * DMKCVTDT - TO OBTAIN THE DATE AND TIME OF OUTPUT 00046000
  47. * DMKDSPCH - TO AWAIT PRINTER INTERRUPTS 00047000
  48. * DMKPGTVG - TO GET A VIRTUAL BUFFER 00048000
  49. * DMKPGTVR - TO RELEASE A VIRTUAL BUFFER 00049000
  50. * DMKPTRUL - TO UNLOCK A LOCK BUFFER PAGE 00050000
  51. * DMKCVTBH - TO CONVERT DEVICE ADDRESS 00051000
  52. * DMKCVTBD - TO CONVERT SPOOLID AND RECORD COUNT 00052000
  53. * DMKTCSSP - TO LOAD A 3800 PRINTER WITH FCB AND CHAR ARR 00052100
  54. * TABLE PRIOR TO PRINTING SEP PAGE 00052200
  55. * 00053000
  56. * EXTERNAL REFERENCES - 00054000
  57. * 00055000
  58. * DMKBOXBX - ADDRESS OF SEPARATOR PAGE BOX 00056000
  59. * DMKCPEID - ADDRESS OF VERSION LEVEL ID 00057000
  60. * DMKSYSID - Address of SYSID HRC108DK 00057100
  61. * 00058000
  62. * TABLES / WORKAREAS - 00059000
  63. * 00060000
  64. * NONE 00061000
  65. * 00062000
  66. * 00063000
  67. * REGISTER USAGE - 00064000
  68. * 00065000
  69. * THE FOLLOWING USAGE APPLIES TO ALL DMKSEP CODE EXCEPT FOR THE 00066000
  70. * BLOCK LETTER GENERATOR SUBROUTINE. REGISTER USAGE AND OPER- 00067000
  71. * ATION OF THIS ROUTINE ARE EXPLAINED SEPARATELY 00068000
  72. * 00069000
  73. * GPR0 - NOT USED 00070000
  74. * GPR1 - SCRATCH 00071000
  75. * GPR2 = ADDRESS OF LOCATION TO STORE CCWS AND DATA 00072000
  76. * GPR3-5 CONTAIN MODEL CCWS TO BE STORED IN BUFFER 00073000
  77. * GPR6 = INTERNAL SUBROUTINE LINKAGE AND LOOP CONTROL 00074000
  78. * GPR7 = ADDRESS OF SFBLOK 00075000
  79. * GPR8 = ADDRESS OF RDEVBLOK FOR PRINTER, AND POINTER TO OUTPUT 00076000
  80. * AREA FOR THE BLOCK LETTER GENERATOR 00077000
  81. * GPR9 - NOT USED 00078000
  82. * GPR10 = ADDRESS OF IOBLOK FOR PRINTER 00079000
  83. * GPR12 = MODULE BASE ADDRESS 00080000
  84. * GPR13 = ADDRESS OF SAVEAREA 00081000
  85. * GPR14,15 - EXTERNAL SUBROUTINE LINKAGE 00082000
  86. * 00083000
  87. * NOTES - 00084000
  88. * 00085000
  89. * NONE 00086000
  90. * 00087000
  91. EJECT 00088000
  92. * OPERATION - 00089000
  93. * 00090000
  94. * 1. THE OUTPUT SEPARATOR PRODUCED BY THIS ROUTINE ASSUMES THAT 00091000
  95. * THE PRINTER HAS MOUNTED ON IT A CARRAIGE CONTROL TAPE WITH 00092000
  96. * A CHANNEL ONE PUNCH AT LINE 3 OF A 66 LINE PAGE 00093000
  97. * PROVIDING THE PRINTER IS NOT A 3800. 00093100
  98. * IF THE PRINTER IS A 3800, THE ASSUMPTION IS THAT 00093200
  99. * CHANNEL 1 SKIPS TO THE FIRST PRINTABLE LINE ON THE PAGE 00093300
  100. * AND THAT THE PAGE IS CAPABLE OF HOLDING AT LEAST 55 LINES 00093400
  101. * OF PRINT AT THE FCB SPECIFIED FOR SEPARATOR PAGES. 00093500
  102. * IF THIS IS A SYSTEM RESTART AND THE DEVICE IS 00094000
  103. * A PRINTER: A'SYSTEM RESTARTED' 00095000
  104. * MESSAGE WITH A LINE OF ASTERISKS BEFORE AND 00096000
  105. * AFTER IS PRINTED ON THE PRINTER, AND EXIT 00097000
  106. * OTHERWISE, CONT: 00098000
  107. * 00099000
  108. * 2. A CHANNEL PROGRAM IS CONSTRUCTED TO PERFORM THE FOLLOWING 00100000
  109. * SEQUENCE OF EVENTS - 00101000
  110. * A. SKIP TO CHANNEL 1 AND SPACE DOWN TO LINE 60 00102000
  111. * AND GO TO STEP B. 00102100
  112. * EXCEPT FOR A 3800 PRINTER WHEN WE JUST 00102200
  113. * SKIP TO CHANNEL 1 AND GO TO STEP D. 00102300
  114. * B. PRINT 5 LINES OF ASTERISKS 00103000
  115. * C. PRINT ONE LINE OF UNDERSCORES ALONG THE PERFORATION 00104000
  116. * BETWEEN PAPER SHEETS 00105000
  117. * D. PRINT 5 LINES OF ASTERISKS, THE 5TH LINE CONTAINS 00106000
  118. * VERSION AND LEVEL, OUTPUT DEVVICE ADDRESS AND 00107000
  119. * CLASS, DATE AND TIME PRINTED. FOLLOWED 00108000
  120. * BY 3 BLANK LINES 00109000
  121. * IN THIS STEP, IF THE DEVICE IS A 3800 PRINTER, 00109100
  122. * ONLY TWO LINES OF ASTERISKS ARE PRINTED WITH 00109200
  123. * THE SECOND LINE CONTAINING THE DESIRED INFO. 00109300
  124. * E. THE NEXT 16 LINES CONTAINS USERID, DISTRIBUTION 00110000
  125. * CODE, SPOOL FILE NAME AND TYPE, CREATION DATE AND 00111000
  126. * TIME, SPOOLID AND RECORD COUNT. 00112000
  127. * ALSO INCLUDED IN THESE 16 LINES IS A 16 LINE BY 00113000
  128. * 46 CHARACTER AREA. THE INFORMATION FOR THIS AREA 00114000
  129. * IS LOADED FROM DMKBOX AT LABEL DMKBOXBX. IF 00115000
  130. * MODULE IS NOT AVAILABLE, THE DEFAULT 00116000
  131. * INFORMATION LOCATE AT LABEL 'CONSTANT' IN 00117000
  132. * THIS MODULE IS USED. 00118000
  133. * CODE, SPOOL FILE NAME AND TYPE, CREATION DATE, 00119000
  134. * SPOOL FILE ID AND RECORD COUNT. 00120000
  135. * INCLUDED IN THESE 15 LINES IS A 15 BY 46 DC 00121000
  136. * CONSTANT BOX IN WHICH DC 00122000
  137. * INFORMATION CAN BE PLACED FOR PRINTING OF 00123000
  138. * F. PRINT THE USERID OF THE FILE'S OWNER IN A SERIES OF 00124000
  139. * 12 X 12 MATRIX BLOCK LETTERS, FOLLOWED BY 4 BLANK 00125000
  140. * LINES. THE DISTRIBUTION CODE IS PRINTED IN A 00126000
  141. * SERIES OF 12 X 12 MATRIX BLOCK LETTERS, 00127000
  142. * FOLLOWED BY 5 BLANK LINES. 00128000
  143. * 00129000
  144. * 3. AFTER THE CHANNEL PROGRAM HAS BEEN EXECUTED ONCE FROM THE 00130000
  145. * BEGINNING, IT IS RE-EXECUTED STARTING AT STEP B. ABOVE, 00131000
  146. * THEREBY CREATING A SECOND SEPARATOR PAGE 00132000
  147. * FOR A 3800 START FROM STEP A. ABOVE, AND REPEAT. 00132100
  148. * 00133000
  149. * 4. AFTER THE PAGES ARE COMPLETE, DMKSEP RETURNS TO DMKRSPEX 00134000
  150. * 00135000
  151. * 5. FOR PUNCH OUTPUT PUNCH 4 CARDS CONTAINING USER I.D., 00136000
  152. * DISTRIBUTION CODE AND 12-4-9 PUNCHES IN THE LAST 00137000
  153. * 10 COLUMNS. EACH LETTER OF THE DISTRIBUTION CODE IS 00138000
  154. * RIPPLED PUNCHED IN GROUPS OF FOUR STARTING IN 00139000
  155. * COLUMN 19. 00140000
  156. * 00141000
  157. * EXAMPLE OF SEPARATOR CARD FOR USERID OF OPERATOR AND 00142000
  158. * DISTRIBUTION CODE OF 12345678 00143000
  159. * 00144000
  160. *OPERATOR 12345678 1111 2222 3333 4444 5555 6666 7777 8888 (12-4-9) 00145000
  161. * 00146000
  162. * RESPONSE - 00147000
  163. * 00148000
  164. * NONE 00149000
  165. * 00150000
  166. * ERROR MESSAGES - 00151000
  167. * 00152000
  168. * NONE 00153000
  169. *. 00154000
  170. EJECT 00155000
  171. COPY OPTIONS 00156000
  172. COPY LOCAL OPTIONS 00157000
  173. EJECT 00158000
  174. DMKSEP CSECT LOADER CONTROL ONLY 00159000
  175. SPACE 3 00160000
  176. ENTRY DMKSEPHR 00161000
  177. EXTRN DMKIOSQR 00162000
  178. EXTRN DMKCPEID 00163000
  179. EXTRN DMKCVTDT,DMKPGTVG,DMKPGTVR,DMKPTRUL 00164000
  180. EXTRN DMKCVTBH,DMKCVTBD 00165000
  181. EXTRN DMKBOXBX 00166000
  182. EXTRN DMKSCNRD @VA01236 00167000
  183. EXTRN DMKTCSSP @V60B9BA 00167100
  184. EXTRN DMKSYSID HRC108DK 00167200
  185. SPACE 3 00168000
  186. USING PSA,R0 00169000
  187. USING SFBLOK,R7 00170000
  188. USING RDEVBLOK,R8 00171000
  189. USING IOBLOK,R10 00172000
  190. USING VMBLOK,R11 00173000
  191. USING SAVEAREA,R13 00174000
  192. SPACE 3 00175000
  193. DC CL8'DMKSEPSP' MODULE NAME 00176000
  194. SPACE 3 00177000
  195. DMKSEPSP RELOC 00178000
  196. SPACE 2 00179000
  197. XC SAVEWRK1(4),SAVEWRK1 CLEAR SAVEWRK AREA 00180000
  198. XC SAVEWRK2(32),SAVEWRK2 00181000
  199. ST R2,IOBCAW SAVE CAW FOR 1ST AND 2ND PAGES 00182000
  200. TM RDEVTYPE,TYPPUN PUNCH ?? 00183000
  201. BO TSTSEP YES - CHECK FOR SEP 00184000
  202. LA R1,RSTRIRA GET NEW IRA FOR RESTART 00185000
  203. ST R1,IOBIRA AND STORE IT 00186000
  204. ST R13,IOBMISC SAVE GPR13 00187000
  205. LR R1,R2 GET BUFFER ADDRESS 00188000
  206. LM R3,R4,LOADCK GET VERIFY UCS/BLK DATA CHK CCW @VA14226 00189000
  207. ALR R3,R1 UPDATE DATA ADDRESS @VA14226 00189300
  208. STM R3,R4,0(R1) AND STORE IN BUFFER @VA14226 00189600
  209. MVC 8(8,R1),LOADSNS MOVE IN DUMMY SENSE CCW 00192000
  210. LM R3,R6,RSTRCCW1 LOAD 1ST CCW 00193000
  211. ALR R5,R1 UPDATE DATA ADDRESS 00194000
  212. STM R3,R6,16(R1) STORE CCW IN BUFFER 00195000
  213. TM SFBFLAG2,SFBRSTRT SYSTEM RESTARTED ?? 00196000
  214. BZ SEP001 NO --CHECK FOR UCS VERIFIED @V60B9BA 00197000
  215. OI 12(R1),CC COMMAND CHAIN TO RESTART MESSAGE 00198000
  216. B SEP002 .. @V60B9BA 00199000
  217. SEP001 TM RDEVFLAG,RDEVLOAD UCS VERIFIED ?? @V60B9BA 00200000
  218. BO TSTSEP YES -- 00201000
  219. CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00201600
  220. BE TSTSEP XFER IF SO - NO UCS VER @V60B9BA 00201800
  221. SEP002 LM R3,R6,RSTRCCW2 GET NEXT TWO CCWS 00202000
  222. ALR R3,R1 UPDATE ADDRESSES 00203000
  223. ALR R5,R1 .. 00204000
  224. STM R3,R6,32(R1) AND STORE IN BUFFER 00205000
  225. MVC 48(8,R1),RSTRCCW3 MOVE IN SENSE CCW 00206000
  226. MVI 56(R1),C'*' FILE THE BUFFER WITH * 00207000
  227. MVC 57(238,R1),56(R1) .. 00208000
  228. MVI 188(R1),C' ' BLANK AREA 00209000
  229. MVC 189(81,R1),188(R1) .. 00210000
  230. MVC 217(22,R1),=C'** SYSTEM RESTARTED **' .. 00211000
  231. B SEPSIO 00212000
  232. SPACE 00213000
  233. RSTRIRA EQU * HERE ON INTERRUPT FOR RESTART MSG 00214000
  234. USING *,R12 TEMPORARY ADDRESSABILITY 00215000
  235. S R12,=A(RSTRIRA-DMKSEP) 00216000
  236. USING DMKSEP,R12 00217000
  237. L R13,IOBMISC RESTORE ADDRESS OF SAVEAREA 00218000
  238. LM R0,R11,SAVEREGS RESTORE REGISTERS 00219000
  239. ST R1,IOBMISC2 CLEAR OUT 'SEP' 00220000
  240. TM IOBSTAT,IOBFATAL FATAL IO ERROR 00221000
  241. BO EXIT YES -- RETURN TO CALLER. @VA05923 00222100
  242. SPACE 00223000
  243. TM IOBCSW+4,UE UNIT EXCEPTION ?? 00224000
  244. BO SEPUE YES -- 00225000
  245. SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00225100
  246. OI RDEVFLAG,RDEVLOAD INDICATE UCS VERIFIED OK 00226000
  247. TM SFBFLAG2,SFBRSTRT SYSTEM RESTARTED ?? 00227000
  248. BZ TSTSEP NO -- 00228000
  249. B EXIT YES EXIT -- NO SEPARATOR NEEDED 00229000
  250. SEPUE L R1,IOBCSW ADDRESS OF NEXT CCW 00230000
  251. LA R1,0(R1) CLEAR HIGH ORDER BYTE 00231000
  252. ST R1,IOBCAW SET CAW 00232000
  253. B SEPSIO FINISH IT 00233000
  254. SPACE 00234000
  255. TSTSEP ST R1,IOBMISC2 CLEAR OUT 'SEP ' 00235000
  256. TM RDEVFLAG,RDEVSEP PUNCH OR PRINT SEPARATOR 00236000
  257. BZ EXIT NO -- 'NOSEP' 00237000
  258. TM RDEVTYPE,TYPPUN PUNCH ?? 00238000
  259. BO PUNTYPE YES 00239000
  260. CLI BOXFLAG,X'FF' BOX ALL SET UP? @VA05226 00240750
  261. BE DOSEP1 YES - - - @VA05204 00241500
  262. L R9,=A(DMKCPEID) ADDRESS OF VERSION LEVEL ID 00242000
  263. MVC VERID(2),0(R9) GET VERSION ID 00243000
  264. MVC LEVELID(2),2(R9) GET LEVEL ID 00244000
  265. MVC PLCID(4),4(R9) AND PLC ID @VA03492 00245000
  266. L R9,=A(DMKBOXBX) ADDRESS OF INSTALLATION BOX 00246000
  267. LTR R9,R9 ONE PRESENT ?? 00247000
  268. BZ DOSEP NO - USE IN HOUSE 00248000
  269. LR R1,R9 ADDRESS OF BOX 00249000
  270. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM) 00250000
  271. LA R3,782 LENGTH OF BOX 00251000
  272. LR R5,R3 SET LENGTH 00252000
  273. LR R4,R2 SET UP FROM ADDRESS 00253000
  274. LA R2,CONSTANT SET TO ADDRESS 00254000
  275. MVCL R2,R4 MOVE USERS BOX AND OVERLAY IN HOUSE 00255000
  276. DOSEP MVI BOXFLAG,X'FF' SET BOX COMPLETE FLAG @VA05226 00256750
  277. DOSEP1 LM R0,R11,SAVEREGS RESTORE ENTRY REGS @VA05204 00257500
  278. CLI RDEVTYPE,TYP3800 IS IT A 3800 ? @V60B9BA 00257700
  279. BNE DOSEP2 XFER IF NOT @V60B9BA 00257750
  280. CALL DMKTCSSP SET UP THE PRINTER @V60B9BA 00257800
  281. BZ DOSEP2 XFER IF ALL OK @V60B9BA 00257850
  282. OI IOBSTAT,IOBFATAL FATAL ERROR IN SETUP @V60B9BA 00257900
  283. B SEPEXIT EXIT @V60B9BA 00257950
  284. DOSEP2 ST R2,IOBCAW SET CAW ADDRESS 00258000
  285. LM R3,R4,SKIPTO1 LOAD MODEL CCW - SKIP TO CHANNEL ONE 00259000
  286. STM R3,R4,0(R2) PLACE IN BUFFER 00260000
  287. ST R2,SAVEWRK7 SAVE CAW FOR POSSIBLE 3800 @V60B9BAX00260100
  288. SECOND SEP PAGE 00260200
  289. LA R2,8(,R2) POINT TO NEXT SLOT 00261000
  290. CLI RDEVTYPE,TYP3800 IS IT A 3800 ? @V60B9BA 00261100
  291. BE DOSEP3 DON'T SPACE OUT FOR A 3800 @V60B9BA 00261200
  292. LA R14,8 GET INDEX VALUE 00262000
  293. LA R15,18*8(,R2) POINT TO LAST CCW SLOT 00263000
  294. LM R3,R4,SPACE3 LOAD MODEL CCW - SPACE 3 LINES 00264000
  295. STM R3,R4,0(R2) STORE IN BUFFER 00265000
  296. BXLE R2,R14,*-4 INSERT CCWS TO SPACE 57 LINES 00266000
  297. ST R2,SAVEWRK7 SAVE CAW FOR THIRD PAGE 00267000
  298. SPACE 3 00268000
  299. DOSEP3 LA R14,144 GET INDEX VALUE @V60B9BA 00269000
  300. BALR R6,0 SET TO LOOP ONCE 00270000
  301. LM R3,R5,PRINTIC LOAD MODEL CCWS - PRINT AND SPACE 00271000
  302. * 1, TIC 00272000
  303. ALR R3,R2 ADJUST DATA ADDRESS IN PRINT 00273000
  304. ALR R5,R2 AND TRANSFER ADDRESS IN TIC 00274000
  305. LA R15,4*144(,R2) POINT TO SLOT FOR 5TH PRINT LINE 00275000
  306. CLI RDEVTYPE,TYP3800 IS IT A 3800 ? @V60B9BA 00275100
  307. BNE SEPLOOP1 XFER IF NOT @V60B9BA 00275200
  308. LA R15,144(,R2) ONLY PRINT 2 LINES OF * @V60B9BA 00275300
  309. LA R6,SKIP2 AND DON'T REPEAT THEM @V60B9BA 00275400
  310. SEPLOOP1 STM R3,R5,0(R2) STORE CCWS IN BUFFER 00276000
  311. MVI 12(R2),C'*' INSERT SEPARATOR CHARACTER 00277000
  312. MVC 13(131,R2),12(R2) AND RIPPLE IT THRU THE LINE 00278000
  313. ALR R3,R14 ADJUST DATA ADDRESS IN PRINT 00279000
  314. ALR R5,R14 AND TRANSFER ADDRESS IN TIC 00280000
  315. BXLE R2,R14,SEPLOOP1 AND REPEAT FOR 4 MORE LINES 00281000
  316. AL R3,=A(18) ADJUST ADDRESS TO DATA 00282000
  317. STM R3,R4,0(R2) INSERT PRINT AND TIC 00283000
  318. MVI 0(R2),X'01' WRITE NO SPACE CCW OP-CODE 00284000
  319. BCTR R3,0 -1 BUFFER ADDRESS 00285000
  320. STM R3,R4,8(R2) STORE NEXT CCW 00286000
  321. MVI 8(R2),X'01' WRITE NO SPACE CCW OP-CODE 00287000
  322. AL R5,=A(24) ADJUST TIC ADDRESS TO NEXT CCW 00288000
  323. BCTR R3,0 -1 DATA ADDRESS 00289000
  324. STM R3,R5,16(R2) STORE WRITE AND TIC CCW 00290000
  325. MVC 28(3,R2),=C' _ ' RIPPLE PATTERN THRU DATA AREA 00291000
  326. MVC 31(136,R2),28(R2) 00292000
  327. LA R2,168(R2) UPDATE TO NEXT BUFFER SLOT 00293000
  328. BALR R6,R6 AND REPEAT FOR NEXT 5 LINES 00294000
  329. SPACE 00295000
  330. SKIP2 S R2,=A(168) GO BACK TWO LINES @V60B9BA 00296000
  331. SR R2,R14 00297000
  332. MVC 14(MSGSIZE,R2),VERSION MOVE IN VER, LEV & PLC @VA03492 00298000
  333. MVC 67(9,R2),=C' CLASS ' @VA04376 00299500
  334. MVC 74(1,R2),SFBCLAS MOVE CLASS TYPE 00300000
  335. MVC 79(9,R2),=C' DEV ' 00301000
  336. CALL DMKSCNRD GET AND CONVERT DEVICE ADDRESS @VA01236 00302000
  337. CALL DMKCVTBH 00303000
  338. STCM R1,7,84(R2) STORE ADDRESS 00304000
  339. SPACE 00305000
  340. MVI 119(R2),C' ' CLEAR SPACE FOR DATE AND TIME 00306000
  341. MVI 128(R2),C' ' .. 00307000
  342. MVI 132(R2),C' ' .. 00308000
  343. MVI 141(R2),C' ' .. 00309000
  344. SPACE 00310000
  345. LA R1,120(R2) ADDRESS FOR DATE AREA 00311000
  346. LA R2,13(R1) ADDRESS OF TIME AREA 00312000
  347. CALL DMKCVTDT GET DATE AND TIME 00313000
  348. LA R2,11(R2) UPDATE TO NEXT SLOT 00314000
  349. BAL R6,NEXT3A SET UP CCW FOR NEXT 3 LINES 00315000
  350. BAL R6,NEXT1 GET PRINT AND TIC CCW 00316000
  351. LA R9,CONSTANT ADDRESS OF DATA CONTANTS 00317000
  352. MVC 23(8,R2),=C'LOCATION' Move in 'LOCATION' HRC108DK 00318100
  353. L R3,=A(DMKSYSID) Get address of SYSID HRC108DK 00318200
  354. MVC 45(8,R2),0(R3) Move in SYSID HRC108DK 00318300
  355. MVC 33(6,R2),=C'USERID' Move in 'USERID' HRC108DK 00318400
  356. MVC 57(8,R2),SFBUSER Move in USERID HRC108DK 00318500
  357. BAL R6,MVCLINE2 Set next two lines HRC108DK 00318600
  358. MVC 23(8,R2),=C'LOCATION' Move in 'LOCATION' HRC108DK 00318700
  359. L R3,=A(DMKSYSID) Get address of SYSID HRC108DK 00318800
  360. MVC 45(8,R2),0(R3) Move in SYSID HRC108DK 00318900
  361. MVC 33(6,R2),=C'ORIGIN' Move in 'ORIGIN' HRC108DK 00319000
  362. MVC 57(8,R2),SFBORIG Move in origin USERID HRC108DK 00319100
  363. BAL R6,MVCLINE2 SET NEXT TWO LINES 00322000
  364. MVC 23(17,R2),=C'DISTRIBUTION CODE' 00323000
  365. MVC 45(8,R2),SFBDIST MOVE DISTRIBUTION CODE 00324000
  366. CLI SFBDIST,X'40' VALID DIST- CODE ?? 00325000
  367. BH *+10 YES - 00326000
  368. MVC 45(8,R2),SFBUSER NO - USE USER ID- 00327000
  369. BAL R6,MVCLINE2 SET NEXT 2 LINES 00328000
  370. MVC 23(20,R2),=C'SPOOL FILE NAME TYPE' 00329000
  371. MVC 45(24,R2),SFBFNAME MOVE FILE NAME TYPE 00330000
  372. BAL R6,MVCLINE2 00331000
  373. MVC 23(13,R2),=C'CREATION DATE' 00332000
  374. MVC 45(8,R2),SFBDATE MOVE DATE AND 00333000
  375. MVC 54(8,R2),SFBTIME TIME 00334000
  376. BAL R6,MVCLINE2 SET NEXT 2 LINES 00335000
  377. MVC 23(13,R2),=C'SPOOL FILE ID' 00336000
  378. LH R1,SFBFILID CONVERT SPOOL ID 00337000
  379. CALL DMKCVTBD 00338000
  380. STCM R1,15,45(R2) MOVE SPOOL ID 00339000
  381. BAL R6,MVCLINE2 SET NEXT 2 LINES 00340000
  382. MVC 23(12,R2),=C'RECORD COUNT' 00341000
  383. L R1,SFBRECNO GET RECORD COUNT AND CONVERT 00342000
  384. CALL DMKCVTBD 00343000
  385. STCM R1,15,45(R2) STORE COUNT 00344000
  386. C R0,=X'F0F0F0F0' COUNT OVER 4 DIGETS 00345000
  387. BE DIGET4 4 DIGETS ONLY 00346000
  388. STM R0,R1,45(R2) STORE 8 DIGETS 00347000
  389. DIGET4 EQU * 00348000
  390. BAL R6,MVCLINE 00350000
  391. SPACE 00351000
  392. CLI SFBCLAS,C'X' PRINT USER SUPPLIED MSG ? @VA05908 00352100
  393. BNE NOTCONS NO - 00353000
  394. MVC 23(46,R2),DMKSEPHR MOVE IN DEADER MESSAGE 00354000
  395. NOTCONS EQU * 00355000
  396. MVC 87(46,R2),0(R9) MOVE IN NEXT CONSTANT 00356000
  397. LA R9,46(R9) UPDATE CONSTANT ADDRESS 00357000
  398. LR R3,R2 SAVE ADDRESS 00358000
  399. SPACE 00359000
  400. CALL DMKPGTVG OBTAIN VITUAL ADDRESS 00360000
  401. SPACE 00361000
  402. TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) GET PAGE 00362000
  403. STM R1,R2,SAVEWRK5 SAVE VIRTUAL AND REAL ADDRESS 00363000
  404. STCM R2,15,8(R3) SET UP TIC 00364000
  405. MVI 8(R3),X'08' 00365000
  406. SPACE 00366000
  407. BAL R6,NEXT1 GET PRT AND TIC CCW FOR ONE LINE 00367000
  408. BAL R6,MVCLINE SET NEXT LINE 00368000
  409. MVC 87(46,R2),0(R9) MOVE IN LAST CONSTANT LINE 00369000
  410. BAL R6,NEXT3 SPACE 3 00370000
  411. BAL R6,SPACE1 OVERLAY PRT AND TIC CCW 00371000
  412. SPACE 00372000
  413. SPACE 00373000
  414. MVC SAVEWRK8(8),SFBUSER MOVE USERID TO WORK AREA 00374000
  415. SETBLOCK LA R4,8 MAX CHARACTER LENGTH 00375000
  416. LA R3,SAVEWRK9+4 ADDRESS OF USER ID END + 1 00376000
  417. * CAL THE LENGTH OF THE USER ID AND DISTRIBUTION CODE 00377000
  418. * AND CENTER IT ON THE SEPARATOR PAGE 00378000
  419. SPACE 00379000
  420. LENGTH BCTR R3,0 -1 FROM ADDRESS 00380000
  421. CLI 0(R3),C' ' IS THIS A BLANK 00381000
  422. BNE *+8 NO - END OF SCAN 00382000
  423. BCT R4,LENGTH KEEPING LOOKING FOR BLANK 00383000
  424. SPACE 00384000
  425. LR R3,R4 USER ID LENGTH 00385000
  426. SLL R3,4 TIMES 16 00386000
  427. SR R3,R4 - 2 TIME NUMBER OF CHARACTERS 00387000
  428. SR R3,R4 00388000
  429. BCTR R3,0 00389000
  430. BCTR R3,0 - TWO 00390000
  431. * 00391000
  432. * RESULT EQUALS (NUMBER OF CHARACTERS TIMES 12) PLUS 00392000
  433. * (THE NUMBER OF CHARCTERS MINUS 1 TIMES 2) 00393000
  434. SPACE 00394000
  435. SRL R3,1 DIVIDE BY TWO 00395000
  436. LA R5,66 ONE HALF A PRINT LINE 00396000
  437. SR R5,R3 DISPLACEMENT TO START OUTPUT 00397000
  438. STH R5,SAVEWRK1 SAVE DISPLACEMENT TO START OF OUTPUT 00398000
  439. STC R4,SAVEWRK1+2 SAVE CHARACTER COUNT 00399000
  440. SPACE 00400000
  441. LA R14,144 LENGTH OF A PRINTER RECORD 00401000
  442. LA R15,11*144(,R2) POINT TO 12TH LINE 00402000
  443. SR R1,R1 SET LINE COUNTER TO 0 00403000
  444. SEPLOOP2 LM R3,R5,PRINTIC GET MODEL CCWS - PRINT AND SPACE 00404000
  445. * 1, TIC 00405000
  446. ALR R3,R2 ADJUST DATA ADDRESS IN PRINT 00406000
  447. ALR R5,R2 AND TRANSFER ADDRESS IN TIC 00407000
  448. STM R3,R5,0(R2) AND STORE IN BUFFER 00408000
  449. LA R3,SAVEWRK8 ADDRESS OF CHARACTER STRING 00409000
  450. LA R8,12(R2) START OF OUTPUT AREA 00410000
  451. AH R8,SAVEWRK1 ADJUST TO START OF OUTPUT 00411000
  452. SR R4,R4 SET UP CHARACTER COUNT 00412000
  453. IC R4,SAVEWRK1+2 -- 00413000
  454. MVI 12(R2),C' ' BLANK OUT 00414000
  455. MVC 13(131,R2),12(R2) THE PRINT LINE 00415000
  456. BAL R6,BLOKLETR GO CREATE THE NEXT LINE OF BLOK 00416000
  457. * LETTERS 00417000
  458. LA R1,1(,R1) GET NEXT LINE NUMBER 00418000
  459. BXLE R2,R14,SEPLOOP2 REPEAT FOR 12 LINES OF BLOK LETTERS 00419000
  460. SPACE 3 00420000
  461. BAL R6,NEXT3A SPACE 3 00421000
  462. BAL R6,SPACE1 SPACE 1 00422000
  463. TM SAVEWRK1+3,X'80' DISTRIBUTION CODE DONE ?? 00423000
  464. BO CLEANUP YES 00424000
  465. OI SAVEWRK1+3,X'80' SET SWITCH ON 00425000
  466. CLI SFBDIST,X'40' VALID DIST CODE ?? 00426000
  467. BNH SETBLOCK NO - USE USERID 00427000
  468. MVC SAVEWRK8(8),SFBDIST MOVE DISTRIBUTION TO WORK 00428000
  469. B SETBLOCK GO BLOCK THESE CHARACTERS 00429000
  470. SPACE 00430000
  471. CLEANUP L R8,SAVER8 RESTORE ADDRESS OF RDEVBLOK 00431000
  472. L R10,SAVER10 RESTORE ADDRESS OF IOBLOK 00432000
  473. OI SAVEWRK1+3,X'40' INDICATE FIRST TIME THRU 00433000
  474. LM R3,R4,SENSECCW COMPLETE THE CHANNEL PROGRAN WITH 00434000
  475. STM R3,R4,0(R2) SENSE TO FORCE CONCURRENT CE+DE 00435000
  476. ST R2,SAVEWRK8 POINT TO CCW TO BE CHANGE LATER @VA03492 00436000
  477. STM R3,R4,8(R2) SECOND SENSE TO BE USED PRINTING @VA03492*00437000
  478. LAST PAGE WHEN FIRST SENSE IS CHANGED TO A SKIP TO 1. 00438000
  479. PUNSIO LA R1,SEPIRA GET IRA 00439000
  480. ST R1,IOBIRA AND SAVE IN IOB 00440000
  481. ST R13,IOBMISC SAVE R13 IN IOBLOK 00441000
  482. SEPSIO MVC IOBMISC2(4),=C'SEP ' INDICATE SEPARATOR PAGE 00442000
  483. NI IOBFLAG,X'FF'-IOBRSTRT CLEAR RESTART FLAG 00443000
  484. CALL DMKIOSQR GO WRITE THE BUFFER 00444000
  485. SEPDSP GOTO DMKDSPCH WAIT FOR INTERRUPT @VA01772 00445000
  486. SPACE 3 00446000
  487. SEPIRA EQU * 00447000
  488. USING *,R12 TEMPORARY ADDRESSABILITY 00448000
  489. S R12,=A(SEPIRA-DMKSEP) 00449000
  490. USING DMKSEP,R12 00450000
  491. LR R1,R10 CHECK FOR COPY IOBLOCK @VA01772 00451000
  492. L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @VA01772 00452000
  493. CR R1,R10 COPY IOBLOK PRESENT ? @VA01772 00453000
  494. BE CHK NO--CHECK FOR ERRORS @VA01772 00454000
  495. OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @VA01772 00455000
  496. LA R0,IOBSIZE LOAD IOBSIZE @VA01772 00456000
  497. CALL DMKFRET RETURN STORAGE @VA01772 00457000
  498. B SEPDSP WAIT FOR DEVICE END @VA01772 00458000
  499. CHK L R13,IOBMISC RESTORE CALLER'S R13 @VA01772 00459000
  500. ST R13,IOBMISC2 CLEAR OUT 'SEP ' 00460000
  501. TM IOBSTAT,IOBFATAL WAS THERE A FATAL IOERROR? 00461000
  502. BO SEPEXIT YES -- LEAVE NOW 00462000
  503. TM SAVEWRK1+3,X'80' PRINTER ?? 00463000
  504. BZ SEPEXIT NO - GET OUT 00464000
  505. TM IOBCSW+4,UE UNIT EXCEPTION ?? 00465000
  506. BZ NOUE NO - 00466000
  507. L R1,IOBCSW GET NEXT CCW ADDRESS 00467000
  508. CLI 0(R1),X'08' IS IT A TIC ?? 00468000
  509. BNE *+8 NO - 00469000
  510. L R1,0(R1) GET ADDRESS OF TIC TO CCW 00470000
  511. LA R1,0(R1) CLEAR HIGH BYTE 00471000
  512. ST R1,IOBCAW STORE IN IOBCAW 00472000
  513. B SEPLP GO CONTINUE PRINTING 00473000
  514. SPACE 00474000
  515. NOUE TM SAVEWRK1+3,X'40' LAST TIME ?? 00475000
  516. BZ SEPEXIT YES - LEAVE 00476000
  517. L R1,SAVEWRK8 POINT TO FIRST OF TWO SENSE CCW'S@VA03492 00477000
  518. MVC 0(8,R1),SKIPTO1 AND REPLACE WITH SKIP TO 1 @VA03492 00478000
  519. L R1,SAVEWRK7 GET IOBCAW FOR THIRD PAGE 00479000
  520. ST R1,IOBCAW AND STORE IN IOB 00480000
  521. NI SAVEWRK1+3,X'BF' RESET FIRST PAGE SWITCH 00481000
  522. SEPLP L R8,SAVER8 RESTORE ADDRESS OF RDEVBLOK 00482000
  523. B SEPSIO AND REPEAT THE THE SEPARATOR PAGE 00483000
  524. SPACE 3 00484000
  525. PUNTYPE EQU * HERE TO SET UP FOR PUNCHING SEP CARDS 00485000
  526. * 00486000
  527. LR R6,R2 ADDRESS OF LOCK PAGE 00487000
  528. LA R14,4 NUMBER OF CCWS 00488000
  529. PUNLOOP LM R3,R4,PUNCCW GET MODEL CCW FOR PUNCH 00489000
  530. ALR R3,R2 UPDATE DATA ADDRESS TO REAL ADDRESS 00490000
  531. STM R3,R4,0(R6) STORE CCWS IN LOCK BUFFER 00491000
  532. LA R6,8(R6) UPDATE TO NEXT SPACE 00492000
  533. BCT R14,PUNLOOP NEXT CCW 00493000
  534. MVC 0(8,R6),PUNSNSE MOVE DUMMY SENSE CCW TO BUFFER 00494000
  535. LA R3,0(R3) POINT DATA BUFFER 00495000
  536. MVI 0(R3),C' ' CLEAR BUFFER 00496000
  537. MVC 1(79,R3),0(R3) TO BLANKS 00497000
  538. SPACE 00498000
  539. MVC 0(8,R3),SFBUSER MOVE IN USER'S I.D. COL 1-8 00499000
  540. MVC 9(8,R3),SFBORIG ORIGINATING USERID @V200930 00500000
  541. MVC 18(8,R3),SFBDIST DIST CODE @V200930 00501000
  542. CLI 18(R3),C' ' IS IT BLANK ?? @V200930 00502000
  543. BH *+10 YES - 00503000
  544. MVC 18(8,R3),SFBUSER SET DIST CODE TO USERID @V200930 00504000
  545. LA R14,4 CHARACTER COUNTER 00505000
  546. LA R4,8 NUMBER OF CHARACTER IN MAX ID 00506000
  547. LA R1,25(R3) END OF DIST CODE @V200930 00507000
  548. LA R2,72(R3) END OF EXPANDED DIST CODE @V200930 00508000
  549. MVCNAME MVC 0(1,R2),0(R1) MOVE ONE CHARACTER 00509000
  550. BCTR R2,0 -1 OUTPUT ADDRESS 00510000
  551. BCT R14,MVCNAME LOOP 4 TIMES 00511000
  552. BCTR R2,0 OUTPUT AREA - 2 00512000
  553. BCTR R2,0 00513000
  554. BCTR R1,0 -1 INPUT ADDRESS 00514000
  555. LA R14,4 SET UP COUNTER 00515000
  556. BCT R4,MVCNAME LOOP FOR 8 CHARACTERS 00516000
  557. MVC 73(7,R3),=X'04040404040404' COL 73-80, FLAG @V200930 00517000
  558. * BYTES 00518000
  559. B PUNSIO 00519000
  560. SPACE 3 00520000
  561. MVCLINE2 LR R1,R6 SAVE RETURN ADDRESS 00521000
  562. BAL R6,MVCLINE MOVE CONSTANT AND CCW FOR 1 LENE 00522000
  563. LR R6,R1 RESTORE RETURN ADDRESS 00523000
  564. SPACE 00524000
  565. MVCLINE MVC 87(46,R2),0(R9) MOVE CONTANT TO BUFFER 00525000
  566. LA R9,46(R9) UPDATE TO NEXT CONSTANT 00526000
  567. NEXTLINE LA R2,144(R2) SET BUFFER ADDRESS TO NEXT SLOT 00527000
  568. NEXT1 LM R3,R5,PRINTIC PRINT AND TIC CCW 00528000
  569. ALR R3,R2 00529000
  570. ALR R5,R2 UPDATE ADDRESSES 00530000
  571. STM R3,R5,0(R2) STORE IN OUTPUT BUFFER 00531000
  572. MVI 12(R2),C' ' CLEAR DATA AREA 00532000
  573. MVC 13(131,R2),12(R2) 00533000
  574. BR R6 RETURN TO CALLER 00534000
  575. SPACE 00535000
  576. SPACE1 LM R3,R4,SPACE3 GET CCW AND 00536000
  577. STM R3,R4,0(R2) AND STORE 00537000
  578. MVI 0(R2),X'0B' CHANGE TO 1 SPACE CCW OP-CODE 00538000
  579. LA R2,8(R2) UPDATE DATA ADDRESS 00539000
  580. BR R6 RETURN TO CALLER 00540000
  581. SPACE 00541000
  582. NEXT3 LA R2,144(R2) UPDATE TO NEXT SLOT 00542000
  583. NEXT3A LM R3,R4,SPACE3 CCW 00543000
  584. STM R3,R4,0(R2) STORE SPACE3 CCW 00544000
  585. LA R2,8(R2) UPDATE TO DATA AREA 00545000
  586. BR R6 RETURN TO CALLER 00546000
  587. SPACE 00547000
  588. SEPEXIT EQU * 00548000
  589. TM SAVEWRK1+3,X'80' PRINTER ?? 00549000
  590. BZ EXIT NO - 00550000
  591. LM R1,R2,SAVEWRK5 RELOAD VIRUAL AND REAL ADDRESS 00551000
  592. CALL DMKPTRUL 00552000
  593. SPACE 00553000
  594. CALL DMKPGTVR 00554000
  595. SPACE 00555000
  596. EXIT NI IOBFLAG,X'FF'-IOBRSTRT RESET RESTART FLAG 00556000
  597. EXIT 00557000
  598. EJECT 00558000
  599. *. 00559000
  600. * 00560000
  601. * OPERATION OF THE BLOCK LETTER GENERATION SUBROUTINE - 00561000
  602. * 00562000
  603. * ENTRY CONDITIONS - 00563000
  604. * 00564000
  605. * GPR1 = RELATIVE LINE NUMBER OF THE 12 LINE MATRIX (0-11) 00565000
  606. * GPR3 = ADDRESS OF THE CHARACTER STRING TO BE TRANSLATED 00566000
  607. * GPR4 = NUMBER OF CHARACTERS TO BE TRANSLATED 00567000
  608. * GPR6 = RETURN ADDRESS 00568000
  609. * GPR8 = ADDRESS OF OUTPUT AREA FOR TRANSLATION 00569000
  610. * 00570000
  611. * UPON ENTRY, THE OUTPUT AREA POINTED TO BY GPR8 SHOULD HAVE 00571000
  612. * BEEN CLEARED TO BLANKS BY THE CALLER. THE OUTPUT AREA MUST BE 00572000
  613. * LONG ENOUGH TO HOLD 12 CHARACTERS FOR EACH CHARACTER 00573000
  614. * TRANSLATED, PLUS 2 SPACES BETWEEN EACH BLOK LETTER. FOR 00574000
  615. * EXAMPLE, IF 5 CHARACTERS ARE TO BE TRANSLATED, THE OUTPUT AREA 00575000
  616. * FOR THE TRANSLATOR MUST BE AT LEAST (5*12)+(4*2)= 68 BYTES 00576000
  617. * LONG. IT IS THE RESPONSIBILITY OF THE CALLER TO INSURE THAT 00577000
  618. * THE OUTPUT AREAS FOR THE 12 LINES ARE VERTICALLY ALIGNED ON 00578000
  619. * THE PAGE WHEN THEY ARE FINALLY PRINTED 00579000
  620. * 00580000
  621. * EXIT CONDITIONS - 00581000
  622. * 00582000
  623. * NORMAL - 00583000
  624. * THE OUTPUT AREA IS FILLED WITH A LINE OF CHARACTERS, ONE 00584000
  625. * GROUP OF 12 FOR EACH OF THE LETTERS TRANSLATED 00585000
  626. * 00586000
  627. * ERROR - 00587000
  628. * NONE 00588000
  629. * 00589000
  630. * REGISTER USAGE - 00590000
  631. * 00591000
  632. * GPR0 = CHARACTER REGISTER - HOLDS THE CHARACTER TO BE TRANS- 00592000
  633. * LATED 00593000
  634. * GPR1 = RELATIVE LINE NUMBER (0-11) IN MATRIX 00594000
  635. * GPR2 - NOT USED 00595000
  636. * GPR3 = ADDRESS OF NEXT LETTER TO TRANSLATE 00596000
  637. * GPR4 = NUMBER OF LETTERS REMAINING TO BE TRANSLATED 00597000
  638. * GPR5 = SHIFT REGISTER FOR PATTERN DETERMINATION 00598000
  639. * GPR6 = RETURN ADDRESS 00599000
  640. * GPR7 - NOT USED 00600000
  641. * GPR8 = ADDRESS OF LOCATION FOR NEXT 12 BYTE PATTERN 00601000
  642. * GPR9 = INDEX REGISTER FOR LINE AND PATTERN TABLES 00602000
  643. * GPR10 = INDEX FOR NEXT BYTE STORE ADDRESS 00603000
  644. * GPR11-13 - NOT USED 00604000
  645. * GPR14,15 - BXLE LOOP CONTROL 00605000
  646. * 00606000
  647. * NOTE THAT GPR14-0 ARE SAVED AND RESTORED, REGISTERS 3-5 AND 00607000
  648. * 8-10 WILL BE DESTROYED, AND THE OTHERS WILL BE UNCHANGED 00608000
  649. * 00609000
  650. EJECT 00610000
  651. * 00611000
  652. * NOTES - 00612000
  653. * 00613000
  654. * THIS ROUTINE IS AN ADAPTATION OF THE OS/360 MODULE 'IEFSD095 00614000
  655. * BLOCK LETTER AND NUMBER ROUTINE' 00615000
  656. * 00616000
  657. * OPERATION - 00617000
  658. * 00618000
  659. * 1. THE PATTERN TO BE STORED FOR A GIVEN LETTER 00619000
  660. * OR NUMBER IS DETERMINED BY INDEXING INTO A PATTERN TABLE 00620000
  661. * BASED ON THE HEXADECIMAL VALUE OF THE CHARACTER. WHEN 00621000
  662. * THE PROPER ENTRY IS FOUND, IT IS FURTHER INDEXED BY THE 00622000
  663. * RELATIVE LINE NUMBER THAT IS BEING PRODUCED. THE RESULTING 00623000
  664. * NUMBER IS USED TO INDEX INTO A BIT TABLE WHERE EACH ENTRY 00624000
  665. * IS TWELVE BITS LONG AND INDICATES VIA A ONE OR ZERO BIT 00625000
  666. * WHETHER OR NOT A CHARACTER IS TO BE STORED IN A COLUMN OF 00626000
  667. * OF THAT ROW OF THE MATRIX 00627000
  668. * 00628000
  669. * 2. THE BIT MAP IS INSERTED INTO THE HIGH ORDER HALFWORD 00629000
  670. * OF A REGISTER, WHICH IS THEN SHIFTED AND TESTED VIA A BXH 00630000
  671. * LOOP. IF A ONE BIT IS SHIFTED INTO THE HIGH ORDER (0) 00631000
  672. * POSITION OF THE REGISTER, A CHARACTER IS STORED IN THE 00632000
  673. * CORRESPONDING COLUMN OF THE MATRIX; IF NO BIT IS SHIFTED, 00633000
  674. * NO CHARACTER IS STORED 00634000
  675. * 00635000
  676. * 3. AS THE REGISTER IS SHIFTED AND TESTED, THE COLUMN INDEX IS 00636000
  677. * INCREMENTED AND ALWAYS POINTS TO THE NEXT POSITION TO BE 00637000
  678. * FILLED; THEREFOR, IF NO CHARACTER IS STORED, THE COLUMN 00638000
  679. * REMAINS BLANK 00639000
  680. * 00640000
  681. * 4. AFTER THE 12TH COLUMN HAS BEEN PROCESSED, THE TRANSLATION 00641000
  682. * COUNT IS DECREMENTED AND TESTED AND ANY FURTHER LETTERS ARE 00642000
  683. * TRANSLATED IN THE SAME MANNER 00643000
  684. * 00644000
  685. *. 00645000
  686. EJECT 00646000
  687. BLOKLETR EQU * HERE TO GENERATE BLOCK LETTERS FOR THE PAGE SEPARATOR 00647000
  688. SPACE 2 00648000
  689. STM R14,R0,SAVEWRK2 SAVE REGS 14, 15, AND 0 00649000
  690. SR R0,R0 CLEAR CHARACTER REGISTER 00650000
  691. LA R14,1 GENERAL INCREMENT REGISTER 00651000
  692. LA R15,11 OFFSET OF LAST MATRIX CHARACTER 00652000
  693. GETCHAR SR R10,R10 OFFSET OF 1ST MATRIX CHARACTER 00653000
  694. IC R0,0(,R3) PICK UP NEXT CHARACTER 00654000
  695. LR R9,R0 AND SAVE IT 00655000
  696. O R9,=XL4'C0' FORCE INTO THE RANGE OF UPPER CASE 00656000
  697. IC R9,CHARTABL-X'C0'(R9) GET OFFSET FOR CHARACTER PATTERN 00657000
  698. LTR R5,R9 WAS CHARACTER A BLANK? 00658000
  699. BZ NEXTCHAR YES -- SKIP TO NEXT CHARACTER 00659000
  700. AR R5,R5 MULTIPLY OFFSET BY 2 00660000
  701. LA R5,CHARPATN-12(R5) AND POINT TO CHARACTER PATTERN 00661000
  702. IC R9,0(R1,R5) GET OFFSET INTO LINE PATTERN TABLE 00662000
  703. LH R5,LINEPATN(R9) AND GET LINE PATTERN IN R5 00663000
  704. SLL R5,19 SHIFT LINE PATTERN INTO BITS 1-12 00664000
  705. AR R5,R14 AND INSERT LOW ORDER 1 00665000
  706. SPACE 3 00666000
  707. BLOKLOOP BXH R5,R5,*+8 TEST FOR A ONE BIT SHIFTED INTO HIGH 00667000
  708. * ORDER POSITION -- IF BIT WAS SHIFTED, BRANCH WILL NOT 00668000
  709. * BE TAKEN, SINCE RESULTING SUM IS NEGATIVE, AND A CHAR- 00669000
  710. * ACTER WILL BE STORED. IF BIT WAS NOT SHIFTED, SUM WILL BE POS- 00670000
  711. * ITIVE, AND ONE GREATER THAN LAST VALUE IN R5 00671000
  712. STC R0,0(R10,R8) STORE MATRIX CHARACTER 00672000
  713. BXLE R10,R14,BLOKLOOP POINT TO SLOT FOR NEXT CHAR 00673000
  714. * ACTER, AND LOOP 11 MORE TIMES 00674000
  715. NEXTCHAR AR R3,R14 POINT TO NEXT CHARACTER TO TRANSLATE 00675000
  716. LA R8,14(,R8) POINT TO NEXT SLOT IN WORKAREA 00676000
  717. BCT R4,GETCHAR GET NEXT CHARACTER, IF THERE IS ONE 00677000
  718. SPACE 2 00678000
  719. LM R14,R0,SAVEWRK2 RESTOR REGS 14, 15, AND 0 @VA11473 00679100
  720. BR R6 AND RETURN TO CALLER 00680000
  721. EJECT 00681000
  722. CHARTABL EQU * TABLE OF OFFSETS INTO CHARPATN TABLE -- 00682000
  723. * SINCE EACH ENTRY IN THE CHARPATN TABLE IS 12 BYTES, 00683000
  724. * THESE INDICES ARE REALLY ONLY HALF AS BIG AS THE ACTUAL 00684000
  725. * OFFSET. AFTER THE INDEX IS FOUND, IT IS MULTIPLIED BY 2 00685000
  726. SPACE 3 00686000
  727. SPACE 3 00687000
  728. DC X'00' BLANK 00688000
  729. DC AL1(((A-XX)/2),((B-XX)/2),((C-XX)/2),((D-XX)/2)) 00689000
  730. DC AL1(((E-XX)/2),((F-XX)/2),((G-XX)/2),((H-XX)/2)) 00690000
  731. DC AL1((I-XX)/2) 00691000
  732. DC 7X'00' UNDEFINED GRAPHICS - FORCED TO 00692000
  733. * BLANKS 00693000
  734. DC AL1(((J-XX)/2),((K-XX)/2),((L-XX)/2),((M-XX)/2)) 00694000
  735. DC AL1(((N-XX)/2),((O-XX)/2),((P-XX)/2),((Q-XX)/2)) 00695000
  736. DC AL1((R-XX)/2) 00696000
  737. DC 8X'00' UNDEFINED GRAPHICS - FORCED TO 00697000
  738. * BLANKS 00698000
  739. DC AL1(((S-XX)/2),((T-XX)/2),((U-XX)/2),((V-XX)/2)) 00699000
  740. DC AL1(((W-XX)/2),((X-XX)/2),((Y-XX)/2),((Z-XX)/2)) 00700000
  741. DC 6X'00' UNDEFINED GRAPHICS - FORCED TO 00701000
  742. * BLANKS 00702000
  743. DC AL1(((ZERO-XX)/2),((ONE-XX)/2),((TWO-XX)/2)) 00703000
  744. DC AL1(((THREE-XX)/2),((FOUR-XX)/2),((FIVE-XX)/2)) 00704000
  745. DC AL1(((SIX-XX)/2),((SEVEN-XX)/2),((EIGHT-XX)/2)) 00705000
  746. DC AL1((NINE-XX)/2) 00706000
  747. DC 6X'00' UNDEFINED GRAPHICS - FORCED TO 00707000
  748. * BLANKS 00708000
  749. SPACE 3 00709000
  750. *********************************************************************** 00710000
  751. * * 00711000
  752. * FOLLOWING IS THE CHARACTER PARM LIST CONTAINING 444 BYTES * 00712000
  753. * WHERE EACH BYTE IS THE OFF SET FROM L1 IN THE LINE PARAMETER * 00713000
  754. * LIST WHERE ONE LINE PATTERN OF A PARTICULAL CHARACTER IS * 00714000
  755. * STORED . A CHARACTER IS REPRESENTED BY 12 ORDERED LINE * 00715000
  756. * PATTERNS .FOR EXAMPLE A IS REPRESENTED BY THE FOLLOWING * 00716000
  757. * ORDERED LINE PATTERNS L2,L1,L5,L5,L5,L1,L1,L5,L5,L5,L5,L5 * 00717000
  758. * AND WILL APPEAR ON THE PRINTER AS FOLLOWS * 00718000
  759. * * 00719000
  760. * AAAAAAAAAA * 00720000
  761. * AAAAAAAAAAAA * 00721000
  762. * AA AA * 00722000
  763. * AA AA * 00723000
  764. * AA AA * 00724000
  765. * AAAAAAAAAAAA * 00725000
  766. * AAAAAAAAAAAA * 00726000
  767. * AA AA * 00727000
  768. * AA AA * 00728000
  769. * AA AA * 00729000
  770. * AA AA * 00730000
  771. * AA AA * 00731000
  772. * * 00732000
  773. *********************************************************************** 00733000
  774. CHARPATN EQU * 00734000
  775. XX EQU *-12 JUST FOR EASE OF TYPING 00735000
  776. A DC X'020008080800000808080808' 00736000
  777. B DC X'2C000808322A2A320808002C' 00737000
  778. C DC X'020008262626262626080002' 00738000
  779. D DC X'282A32080808080808322A28' 00739000
  780. E DC X'000026262668682626260000' 00740000
  781. F DC X'000026262668682626262626' 00741000
  782. G DC X'020008262626343408080002' 00742000
  783. H DC X'080808080800000808080808' 00743000
  784. I DC X'020214141414141414140202' 00744000
  785. J DC X'66660A0A0A0A0A0A3A3A686A' 00745000
  786. K DC X'08322E3C3A36363A3C2E3208' 00746000
  787. L DC X'262626262626262626260000' 00747000
  788. M DC X'083E40424446080808080808' 00748000
  789. N DC X'086C6E484A464E5052540876' 00749000
  790. O DC X'000008080808080808080000' 00750000
  791. P DC X'2C00080808002C2626262626' 00751000
  792. Q DC X'020008080808084E50522C56' 00752000
  793. R DC X'2C00080808002C3A3C2E3208' 00753000
  794. S DC X'02000826585A5C5E64080002' 00754000
  795. T DC X'000014141414141414141414' 00755000
  796. U DC X'080808080808080808080002' 00756000
  797. V DC X'080808080808083062206014' 00757000
  798. W DC X'080808080808464442403E08' 00758000
  799. X DC X'080830622060602062300808' 00759000
  800. Y DC X'080830622060141414141414' 00760000
  801. Z DC X'00001070120A147216742400' 00761000
  802. ZERO DC X'040208080808080808080204' 00762000
  803. ONE DC X'140C0E141414141414140202' 00763000
  804. TWO DC X'020008646410121416180000' 00764000
  805. THREE DC X'02000864641A1A6464080002' 00765000
  806. FOUR DC X'061C1E202224001212121212' 00766000
  807. FIVE DC X'0000262626282A106464002C' 00767000
  808. SIX DC X'02000826262C000808080002' 00768000
  809. SEVEN DC X'002C2E120A14141414141414' 00769000
  810. EIGHT DC X'020008083004043008080002' 00770000
  811. NINE DC X'020008080800006464080002' 00771000
  812. SPACE 3 00772000
  813. *********************************************************************** 00773000
  814. * * 00774000
  815. * FOLLOWING IS THE LINE PARAMETER LIST CONTAINING 60 * 00775000
  816. * DISTINCT LINE PATTERNS . IF THE BIT IS ON THE CHARACTER * 00776000
  817. * WILL BE PRINTED, AND IF THE BIT IS OFF THE PRINTING OF 00777000
  818. * THE CHARACTER IS SUPPRESSED . A COMBINATION OF 12 LINE * 00778000
  819. * PATTERNS ( AS SPECIFIED IN THE CHARACTER REPRESENTATION * 00779000
  820. * LIST ) REPRESENTS EITHER A BLANK , A LETTER FROM A TO Z, * 00780000
  821. * OR A NUMBER FROM 0 TO 9 . * 00781000
  822. * * 00782000
  823. *********************************************************************** 00783000
  824. LINEPATN DS 0F 00784000
  825. L1 DC BL2'111111111111' 00785000
  826. L2 DC BL2'011111111110' 00786000
  827. L3 DC BL2'001111111100' 00787000
  828. L4 DC BL2'000000111000' 00788000
  829. L5 DC BL2'110000000011' 00789000
  830. L6 DC BL2'000000110000' 00790000
  831. L7 DC BL2'000011100000' 00791000
  832. L8 DC BL2'000111100000' 00792000
  833. L9 DC BL2'000000000110' 00793000
  834. L10 DC BL2'000000011000' 00794000
  835. L11 DC BL2'000001100000' 00795000
  836. L12 DC BL2'000110000000' 00796000
  837. L13 DC BL2'011000000000' 00797000
  838. L14 DC BL2'000000011110' 00798000
  839. L15 DC BL2'000001111000' 00799000
  840. L16 DC BL2'000011011000' 00800000
  841. L17 DC BL2'000110011000' 00801000
  842. L18 DC BL2'001100011000' 00802000
  843. L19 DC BL2'011111111111' 00803000
  844. L20 DC BL2'110000000000' 00804000
  845. L21 DC BL2'111111111000' 00805000
  846. L22 DC BL2'111111111100' 00806000
  847. L23 DC BL2'111111111110' 00807000
  848. L24 DC BL2'110000001100' 00808000
  849. L25 DC BL2'011000000110' 00809000
  850. L26 DC BL2'110000000110' 00810000
  851. L27 DC BL2'110000011111' 00811000
  852. L28 DC BL2'111111100000' 00812000
  853. L29 DC BL2'110001100000' 00813000
  854. L30 DC BL2'110000110000' 00814000
  855. L31 DC BL2'110000011000' 00815000
  856. L32 DC BL2'111000000111' 00816000
  857. L33 DC BL2'111100001111' 00817000
  858. L34 DC BL2'110110011011' 00818000
  859. L35 DC BL2'110011110011' 00819000
  860. L36 DC BL2'110001100011' 00820000
  861. L37 DC BL2'110110000011' 00821000
  862. L38 DC BL2'110011000011' 00822000
  863. L39 DC BL2'000000000000' 00823000
  864. L40 DC BL2'110000110011' 00824000
  865. L41 DC BL2'110000011011' 00825000
  866. L42 DC BL2'110000001111' 00826000
  867. L43 DC BL2'110000000111' 00827000
  868. L44 DC BL2'011111111011' 00828000
  869. L45 DC BL2'111000000000' 00829000
  870. L46 DC BL2'011111111100' 00830000
  871. L47 DC BL2'001111111110' 00831000
  872. L48 DC BL2'000000000111' 00832000
  873. L49 DC BL2'000011110000' 00833000
  874. L50 DC BL2'001100001100' 00834000
  875. L51 DC BL2'000000000011' 00835000
  876. L52 DC BL2'001111111111' 00836000
  877. L53 DC BL2'111111110000' 00837000
  878. L54 DC BL2'011111100000' 00838000
  879. L55 DC BL2'111000000011' 00839000
  880. L56 DC BL2'111100000011' 00840000
  881. L57 DC BL2'000000001100' 00841000
  882. L58 DC BL2'000011000000' 00842000
  883. L59 DC BL2'001100000000' 00843000
  884. L60 DC BL2'110000000001' 00844000
  885. SPACE 3 00845000
  886. BOXFLAG DC X'00' BOX COMPLETE FLAG @VA05226 00845500
  887. VERSION DC C' VM/370 VERSION ' 00847000
  888. VERID DC C'00' 00848000
  889. DC C' LEVEL ' 00849000
  890. LEVELID DC C'00 ' 00850000
  891. DC C'PLC ' @VA03492 00851000
  892. PLCID DC C'0000 ' TARGET FOR PLC ID @VA03492 00852000
  893. MSGSIZE EQU *-VERSION LENGTH OF LEVEL ID MSG @VA03492 00853000
  894. SPACE 00854000
  895. SKIPTO1 CCW X'8B',*-*,CC+SILI,1 MODEL CCW - IMMEDIATE SKIP TO 1 00855000
  896. SPACE3 CCW X'1B',*-*,CC+SILI,1 MODEL CCW - SPACE 3 LINES IMMEDIATE 00856000
  897. SENSECCW CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE CCW 00857000
  898. PRINTIC CCW X'09',12,CC+SILI,132 MODEL CCWS - PRINT AND SPACE 1 00858000
  899. DC AL1(8) AND TIC 00859000
  900. DC AL3(144) 00860000
  901. SPACE 3 00861000
  902. PUNCCW CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 1ST CARD 00862000
  903. CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 2ND CARD 00863000
  904. CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 3RD CARD 00864000
  905. CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 4TH CARD 00865000
  906. CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 5TH CARD 00866000
  907. PUNSNSE CCW 4,0,SILI+SKIP,1 DUMMY SENSE CCW 00867000
  908. PUNEND EQU * 00868000
  909. SPACE 00869000
  910. LOADCK CCW X'01',23,SILI+CC,1 VER UCS LOAD/BLK DATA LATCH @VA14226 00870000
  911. LOADSNS CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE CCW 00871000
  912. RSTRCCW1 CCW X'1B',*-*,CC+SILI,255 SPACE 3 @V60A6B6 00872000
  913. CCW X'09',56,CC+SILI,132 PRINT AND SPACE 1 00873000
  914. RSTRCCW2 CCW X'09',163,CC+SILI,132 PRINT AND SPACE 1 00874000
  915. CCW X'09',56,SILI+CC,132 PRINT AND SPACE 1 00875000
  916. RSTRCCW3 CCW X'04',*-*,SILI+SKIP,1 PHONY SENSE 00876000
  917. SPACE 00877000
  918. SPACE 2 00878000
  919. LTORG 00879000
  920. EJECT 00880000
  921. CONSTANT EQU * 00881000
  922. DC CL46'**********************************************' 00882000
  923. DC CL46'* *' 00883000
  924. DC CL46'* IIIIIIIIIIII BBBBBBBBBBB MM MM *' 00884000
  925. DC CL46'* IIIIIIIIIIII BBBBBBBBBBBB MMM MMM *' 00885000
  926. DC CL46'* II BB BB MMMM MMMM *' 00886000
  927. DC CL46'* II BB BB MM MM MM MM *' 00887000
  928. DC CL46'* II BB BB MM MMMM MM *' 00888000
  929. DC CL46'* II BBBBBBBBBB MM MM MM *' 00889000
  930. DC CL46'* II BBBBBBBBBB MM MM *' 00890000
  931. DC CL46'* II BB BB MM MM *' 00891000
  932. DC CL46'* II BB BB MM MM *' 00892000
  933. DC CL46'* II BB BB MM MM *' 00893000
  934. DC CL46'* IIIIIIIIIIII BBBBBBBBBBBB MM MM *' 00894000
  935. DC CL46'* IIIIIIIIIIII BBBBBBBBBBB MM MM *' 00895000
  936. DC CL46'* *' 00896000
  937. DC CL46'**********************************************' 00897000
  938. DMKSEPHR DC CL46' ' SPACE FOR CLASS X PAGE HEADER 00898000
  939. EJECT 00899000
  940. COPY VMBLOK 00900000
  941. COPY SAVE 00901000
  942. COPY SPOOL 00902000
  943. COPY RBLOKS 00903000
  944. COPY IOBLOKS 00904000
  945. COPY EQU 00905000
  946. COPY DEVTYPES 00906000
  947. PSA 00907000
  948. END 00908000