Table of Contents

DMKCSB Source

References

Source Listing

DMKCSB.ASSEMBLE.txt
  1. CSB TITLE 'DMKCSB (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT @V386298 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKCSB 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * DMKCSB CONTAINS THE SPOOLING COMMANDS USED TO CONTROL THE REAL 00010000
  11. * SPOOLING UNIT RECORD DEVICES ATTACHED TO THE SYSTEM. THE FUNC- 00011000
  12. * TION OF EACH COMMAND IS DESCRIBED SEPARATELY 00012000
  13. * 00013000
  14. * ATTRIBUTES - 00014000
  15. * 00015000
  16. * REENTRANT, PAGEABLE, CALLED VIA SVC 00016000
  17. * 00017000
  18. * ENTRY POINTS - 00018000
  19. * 00019000
  20. * DMKCSBLD - LOAD REAL UCS OR FCB BUFFER 00020000
  21. * 00021000
  22. * NORMAL - 00022000
  23. * GPR2 = 0 00023000
  24. * SOME COMMANDS WRITE A VERIFYING MESSAGE TO THE OPERA- 00024000
  25. * TOR; THESE MESSAGES ARE DESCRIBED WITH THE COMMANDS 00025000
  26. * THAT ISSUE THEM 00026000
  27. * 00027000
  28. * ERROR - 00028000
  29. * GPR2 = CONTAINS THE BINARY ERROR MESSAGE NUMBER 00029000
  30. * - EITHER AN OPTION IS ILLEGAL, OR SOME CONDITION 00030000
  31. * EXISTS THAT MAKES IT IMPOSSIBLE TO EXECUTE THE COMMAND 00031000
  32. * A MESSAGE IS PRINTED TO DESCRIBE THE ERROR; THE ERROR 00032000
  33. * MESSAGES THAT MAY OCCUR ARE LISTED WITH EACH COMMAND 00033000
  34. * 00034000
  35. * CALLS TO OTHER ROUTINES - 00035000
  36. * 00036000
  37. * DMKSCNRU - TO LOCATE THE RDEVBLOK FOR A SPOOLING DEVICE 00037000
  38. * DMKSCNFD - TO SCAN THE COMMAND LINE BUFFER FOR OPTIONS 00038000
  39. * BUFFER LOAD IMAGES 00039000
  40. * DMKPTRUL - TO UNLOCK THE BUFFER PAGE 00040000
  41. * DMKIOSQR - TO INITIATE THE I/O FOR BUFFER LOADING 00041000
  42. * DMKDSPCH - EXIT VIA GOTO TO WAIT FOR INTERRUPT FROM I/O 00042000
  43. * DMKSCNVU - LOCATE VIRTUAL DEVICE BLOCKS 00043000
  44. * DMKFREE - TO OBTAIN FREE STORAGE FOR MESSAGE BUFFERS AND 00044000
  45. * IOBLOKS 00045000
  46. * DMKFRET - TO RETURN USED BLOKS TO FREE STORAGE 00046000
  47. * DMKQCNWT - TO WRITE ERROR AND VERIFICATION MESSAGES 00047000
  48. * DMKCVTHB - TO CONVERT HEX OPTIONS TO BINARY ADDRESSES 00048000
  49. * DMKCVTDB - TO CONVERT DECIMAL TO BINARY 00049000
  50. * DMKERMSG - TO WRITE ERROR MESSAGES 00050000
  51. * 00051000
  52. * EXTERNAL REFERENCES - 00052000
  53. * 00053000
  54. * DMKFCBLD - VIRTUAL ADDRESS OF FCB LOAD DATA 00054000
  55. * DMKUCSLD - VIRTUAL ADDRESS OF UCS LOAD DATA (1403) 00055000
  56. * DMKUCBLD - VIRTUAL ADDRESS OF UCS LOAD DATA (3211) 00056000
  57. * DMKUCCLD - VIRTUAL ADDRESS OF UCS LOAD DATA (3203) 00057000
  58. * 00058000
  59. * TABLES / WORKAREAS - 00059000
  60. * 00060000
  61. * SAVEWRK2 - VIRTUAL ADDRESS OF UCB OR FCB MODULE 00061000
  62. * 00062000
  63. * REGISTER USAGE - 00063000
  64. * 00064000
  65. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE 00065000
  66. * ANY INDIVIDUAL DIFFERENCES OR EXTENSIONS ARE LISTED WITH THE 00066000
  67. * COMMAND DESCRIPTION 00067000
  68. * 00068000
  69. * GPR0 = OPTION LENGTH - RETURNED FROM DMKSCNFD 00069000
  70. * GPR1 = OPTION ADDRESS - RETURNED FROM DMKSCNFD 00070000
  71. * GPR2 = SCRATCH 00071000
  72. * GPR3 = LENGTH FIELD FOR EXECUTED MVC'S AND TRT'S 00072000
  73. * GPR4 = INTERNAL SUBROUTINE LINKAGE 00073000
  74. * GPR6 = SCRATCH 00074000
  75. * GPR7 = SCRATCH 00075000
  76. * GPR8 = RDEVBLOK BASE 00076000
  77. * GPR9 = RSPLCTL BASE 00077000
  78. * GPR10 = IOBLOK BASE 00078000
  79. * GPR11 = VMBLOK BASE FOR SYSVMBK 00079000
  80. * GPR12 = DMKCSB BASE 00080000
  81. * GPR13 = SAVEAREA BASE 00081000
  82. * GPR14 = EXTERNAL LINKAGE 00082000
  83. * GPR15 = EXTERNAL LINKAGE 00083000
  84. * 00084000
  85. * NOTES - NONE 00085000
  86. * 00086000
  87. * OPERATION - 00087000
  88. * 00088000
  89. * ALL COMMAND PROCESSORS ARE ENTERED VIA A CALL FROM DMKCFM; THE 00089000
  90. * THE FUNCTION, FORMAT AND OPERATION OF EACH COMMAND ARE DESCRI- 00090000
  91. * BED IN THE FOLLOWING SECTIONS 00091000
  92. *. 00092000
  93. EJECT 00093000
  94. COPY OPTIONS @V386298 00094000
  95. COPY LOCAL OPTIONS @V386298 00095000
  96. SPACE 3 00096000
  97. DMKCSB CSECT @V386298 00097000
  98. SPACE 3 00098000
  99. EXTRN DMKCVTHB,DMKSCNVU,DMKSCNRU,DMKUCCLD @V386298 00099000
  100. EXTRN DMKIOSQR,DMKPTRUL @V386298 00100000
  101. EXTRN DMKSCNFD,DMKUCSLD,DMKFCBLD,DMKUCBLD @V386298 00101000
  102. EXTRN DMKCVTDB,DMKERMSG @V386298 00102000
  103. SPACE 3 00103000
  104. USING PSA,R0 @V386298 00104000
  105. USING VMBLOK,R11 @V386298 00105000
  106. USING SAVEAREA,R13 @V386298 00106000
  107. EJECT 00107000
  108. *. 00108000
  109. * SUBROUTINE NAME - 00109000
  110. * 00110000
  111. * DMKCSBLD 00111000
  112. * 00112000
  113. * FUNCTION - 00113000
  114. * 00114000
  115. * TO LOAD THE UCS BUFFER ON A 1403, 3211, OR 3203, OR TO 00115000
  116. * LOAD THE FCB ON A 3211 OR A 3203 00116000
  117. * 00117000
  118. * COMMAND LINE FORMAT - 00118000
  119. * 00119000
  120. * +---------+-----------------------------+ 00120000
  121. * | LOADBUF | RADDR UCS NAME <FOLD> <VER> | 00121000
  122. * | LOADBUF | RADDR FCB NAME <INDEX <NN>> | 00122000
  123. * +---------+-----------------------------+ 00123000
  124. * 00124000
  125. * FOLD VER INDEX 00125000
  126. * F V I 00126000
  127. * 00127000
  128. * OPERATION - 00128000
  129. * 00129000
  130. * 1. BAL TO GETDEVIC TO LOCATE RDEVBLOK FOR PRINTER TO BE LOADED 00130000
  131. * 2. VERIFY THAT THE SPECIFIED DEVICE IS A NON-DEDICATED PRIN- 00131000
  132. * TER THAT HAS BEEN DRAINED AND IS NO LONGER BUSY 00132000
  133. * 3. CALL SCNFD TO LOCATE THE FCB OR UCS OPTION 00133000
  134. * 4. IF UCS IS SPECIFIED, VERIFY THAT THE SPECIFIED PRINTER HAS 00134000
  135. * THE APPROPRIATE FEATURE CODE 00135000
  136. * 5. IF FCB IS SPECIFIED, VERIFY THAT THE SPECIFIED PRINTER 00136000
  137. * IS A 3211 OR 3203 00137000
  138. * 6. POINT TO THE TABLE OF VALID BUFFER LOAD NAMES 00138000
  139. * 7. CALL DMKSCNFD TO LOCATE THE NAME OF THE BUFFER TO BE LOADED 00139000
  140. * AND LOCATE THE NAME IN THE APPROPRIATE TABLE 00140000
  141. * 8. LOAD THE VIRTUAL ADDRESS OF THE BUFFER AND CALL DMKPTRAN 00141000
  142. * VIA THE TRANS MACRO TO BRING IT INTO REAL MEMORY 00142000
  143. * 9. CALL DMKSCNFD TO LOCATE THE OPTIONS FOR THS LOAD 00143000
  144. * 10. LOAD THE APPROPRIATE BUFFER BY CONSTRUCTING AN IOBLOK 00144000
  145. * AND A CHANNEL PROGRAM AND CALLING DMKIOSQR 00145000
  146. * 11. IF THE REQUEST IS FOR A UCS LOAD WITH VER, VERIFY THE LOAD 00146000
  147. * BY PRINTING THE CONTENTS OF THE BUFFER ON THE PRINTER 00147000
  148. * 12. IF THE REQUEST IS FOR A FCB LOAD AND INDEX 00148000
  149. * IS SPECIFIED, LOAD THE FCB BUFFER WITH THE INDEX VALUE 00149000
  150. * 13. EXIT 00150000
  151. * 00151000
  152. * RESPONSE - 00152000
  153. * 00153000
  154. * NONE 00154000
  155. * 00155000
  156. * ERROR MESSAGES - 00156000
  157. * 00157000
  158. * DMKCSB003E INVALID OPTION - (OPTION) 00158000
  159. * DMKCSB006E INVALID DEVICE TYPE - (ADDR) 00159000
  160. * DMKCSB013E CONFLICTING OPTION - (OPTION) 00160000
  161. * DMKCSB021E RADDR MISSING OR INVALID 00161000
  162. * DMKCSB026E OPERAND MISSING OR INVALID 00162000
  163. * DMKCSB031E BUFFER MISSING OR INVALID 00163000
  164. * DMKCSB036E INDEX MISSING OR INVALID 00164000
  165. * DMKCSB040E DEV (ADDR) DOES NOT EXIST 00165000
  166. * DMKCSB043E BUFFER (NAME) DOES NOT EXIST 00166000
  167. * DMKCSB046E (TYPE) (RADDR) OFFLINE 00167000
  168. * DMKCSB140E (TYPE) (RADDR) ATTACHED TO (USERID) 00168000
  169. * DMKCSB142E (TYPE) (RADDR) NOT DRAINED 00169000
  170. * DMKCSB148E (TYPE) (RADDR) BUFFER (NAME) FAILED 00170000
  171. *. 00171000
  172. ID DC CL8'DMKCSB' MODULE NAME @V386298 00172000
  173. SPACE 00173000
  174. DMKCSBLD RELOC @V386298 00174000
  175. SPACE 00175000
  176. BAL R4,CLEAR CLEAR SAVEWRK1,2-9 @V386298 00176000
  177. SPACE 00177000
  178. * SAVEWRK1 FLAG BYTE 00178000
  179. * X'80' - UCS COMMAND 00179000
  180. * X'40' - FOLD OPTION 00180000
  181. * X'20' - VERIFY OPTION 00181000
  182. * X'10' - INDEX OPTION 00182000
  183. * X'08' - INDEX VALUE PRESENT 00183000
  184. * X'04' - FCB ADDRESS ONE 00184000
  185. * SAVEWRK1+1(1) - INDEX VALUE 00185000
  186. * SAVEWRK2 - DEVICE ADDRESS 00186000
  187. * SAVEWRK3 - VIRTUAL ADDRESS 00187000
  188. * SAVEWRK4 _ REAL PAGE ADDRESS OF BUFFER 00188000
  189. SPACE 00189000
  190. BAL R4,GETDEVIC LOCATE REAL DEVICE BLOK @V386298 00190000
  191. USING RDEVBLOK,R8 @V386298 00191000
  192. ST R1,SAVEWRK2 SAVE DEVICE ADDRESS @V386298 00192000
  193. TM RDEVTYPE,TYPPRT IS IT A PRINTER DEVICE ?? @V386298 00193000
  194. BZ MSG006E NO-- INVALID ADDRESS @V386298 00194000
  195. TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00195000
  196. BO CKDRAIN YES @V386298 00196000
  197. TM RDEVFTR,FTRUCS UCS ?? @V386298 00197000
  198. BZ MSG006E NO-- INVALID ADDRESS @V386298 00198000
  199. CKDRAIN TM RDEVFLAG,RDEVDRAN IS THE PRINTER DRAINED ?? @V386298 00199000
  200. BZ MSG142E NO -- @V386298 00200000
  201. ICM R15,B'1111',RDEVSPL IS DEVICE ACTIVE ?? @V386298 00201000
  202. BNZ MSG142E YES -- DEVICE NOT DRAINED @V386298 00202000
  203. SPACE 2 00203000
  204. * CHECK NEXT ENTRY IN COMMAND LINE 00204000
  205. CALL DMKSCNFD @V386298 00205000
  206. BNZ MSG026E FCB OR UCS MISSING @V386298 00206000
  207. LR R14,R0 COUNT @V386298 00207000
  208. BCTR R14,0 -1 @V386298 00208000
  209. C R0,F3 COUNT OF 3 FOR FCB OR UCS ??@V386298 00209000
  210. BNE MSG003E NO INVALID OPTION @V386298 00210000
  211. EX R14,CLCFCB FCB ?? @V386298 00211000
  212. BE FCBTYPE YES-NOW CHEK FOR 3211/3203 @V386298 00212000
  213. OI SAVEWRK1,X'80' INDICATE UCS @V386298 00213000
  214. EX R14,CLCUCS UCS ?? @V386298 00214000
  215. BE BLOCKS YES - @V386298 00215000
  216. EX R14,CLCUCC UCC? @VA11542 00215200
  217. BE BLOCKS YES @VA11542 00215400
  218. B MSG003E INVALID OPTION @V386298 00216000
  219. SPACE 00217000
  220. FCBTYPE EQU * @V386298 00218000
  221. TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00219000
  222. BNO MSG006E INVALID ADDRESS @V386298 00220000
  223. SPACE 00221000
  224. BLOCKS EQU * @V386298 00222000
  225. * BUILD IOBLOK 00223000
  226. SPACE 00224000
  227. USING IOBLOK,R10 @V386298 00225000
  228. LA R0,XIOBSIZE SIZE OF IOBLOK AND EXTENSION@V386298 00226000
  229. CALL DMKFREE GET STORAGE @V386298 00227000
  230. LR R10,R1 ADDRESSABILITY IOBLOK @V386298 00228000
  231. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IOBLOK @V386298 00229000
  232. ST R10,IOBLINK IOBLOK POINTS TO ITSELF @V386298 00230000
  233. * (= ORIGINAL COPY) 00231000
  234. SPACE 00232000
  235. * SET UP IOBLOK 00233000
  236. SPACE 00234000
  237. MVC IOBRADD,SAVEWRK2+2 MOVE IN REAL DEVICE ADDRESS @V386298 00235000
  238. LA R0,UCSCCWS POINT TO CHANNEL PROGRAM @V386298 00236000
  239. ST R0,IOBCAW AND SAVE IT @V386298 00237000
  240. ST R11,IOBUSER LOAD ADDRESS OF USER VMBLOK @V386298 00238000
  241. SPACE 00239000
  242. TM SAVEWRK1,X'80' UCS ?? @V386298 00240000
  243. BO UCSTYPE YES - @V386298 00241000
  244. MVC UCSCCWS(48),FCBCCW MOVE FCB CCWS TO UCS WORK @V386298 00242000
  245. * BLOK 00243000
  246. L R1,=A(DMKFCBLD) ADDRESS OF FCB LOAD BUFFER @V386298 00244000
  247. B TRANS GET BUFFER @V386298 00245000
  248. SPACE 00246000
  249. * PROCESS UCS 00247000
  250. SPACE 00248000
  251. UCSTYPE CLI RDEVTYPE,TYP3211 3211 PRINTER ?? @V386298 00249000
  252. BE MVC3211 YES GO MOVE CCWS @V386298 00250000
  253. CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER?? @V386298 00251000
  254. BE MVC3203 YES GO MOVE CCWS @V386298 00252000
  255. MVC UCSCCWS,CCW1403 MOVE 1403 CCW TO UCSBLOK @V386298 00253000
  256. L R1,=A(DMKUCSLD) ADDRESS OF 1403 LOAD BUFFER @V386298 00254000
  257. B TRANS @V386298 00255000
  258. SPACE 00256000
  259. MVC3203 MVC UCSCCWS,CCW3203 MOVE 3203 CCWS TO UCSBLOK @V386298 00257000
  260. L R1,=A(DMKUCCLD) ADDR OF 3203 UCS LOAD BUFR @V386298 00258000
  261. B TRANS BOUNDARY CHECKING @V386298 00259000
  262. SPACE 1 00260000
  263. MVC3211 MVC UCSCCWS,CCW3211 MOVE 3211 CCWS TO UCSBLOK @V386298 00261000
  264. L R1,=A(DMKUCBLD) ADDRESS OF 3211 UCS LOAD BUF@V386298 00262000
  265. SPACE 00263000
  266. TRANS EQU * HERE FOR BOTH UCS AND FCB @V386298 00264000
  267. L R15,ASYSVM POINT TO SYSTEM VMBLOK,AND @V386298 00265000
  268. LCTL C1,C1,VMSEG-VMBLOK(R15) GET CORRECT SEGMENT TABL@V386298 00266000
  269. DC 0H'0',X'B1',AL.4(2,0),S(0(1)) LRA INSTRUCTION@V386298 00267000
  270. BC 7,NOTRES PAGE NOT RESIDENT,GO GET IT @V386298 00268000
  271. BAL R14,PAGERES CHECK IF PAGE IS CP RESIDENT@V386298 00269000
  272. BL MODRES YES -- MODULE RESIDENT @V386298 00270000
  273. NOTRES LA R2,(BRING+DEFER+LOCK+SYSTEM) SET UP PARM REG @V386298 00271000
  274. L R15,APTRAN ADDRESS OF TRANS ROUTINE @V386298 00272000
  275. SVC 8 @V386298 00273000
  276. SPACE 00274000
  277. USING UCSHDR,R2 @V386298 00275000
  278. MODRES ST R2,SAVEWRK4 SAVE REAL PAGE ADDRESS @V386298 00276000
  279. SPACE 00277000
  280. CALL DMKSCNFD GET NAME @V386298 00278000
  281. BNZ MSG031 NONE FOUND @V386298 00279000
  282. LR R6,R0 SAVE COUNT @V386298 00280000
  283. BCTR R6,R0 -1 FOR MOVE @V386298 00281000
  284. C R6,F3 LARGER THAN 4 ?? @V386298 00282000
  285. BH MSG031 YES - ERROR MSG031E @V386298 00283000
  286. EX R6,MVCNAME MOVE NAME TO SAVEWRK8 @V386298 00284000
  287. OC SAVEWRK8(4),BLANKS MAKE UPPER CASE @V386298 00285000
  288. CNTOK CLC HDRNAME(04),ZEROES LAST UCS LOAD HEADER @V386298 00286000
  289. BE MSG043 YES - ERROR MSG043E @V386298 00287000
  290. SPACE 00288000
  291. COMPARE CLC SAVEWRK8(4),HDRNAME IS THIS THE CORRECT LOAD ?? @V386298 00289000
  292. BE EQUAL YES @V386298 00290000
  293. AH R2,HDRNEXT POINT TO NEXT HEADER @V386298 00291000
  294. B CNTOK COMPARE NAME TO THIS HEADER @V386298 00292000
  295. SPACE 00293000
  296. EQUAL TM SAVEWRK1,X'80' IS THIS FCB TYPE ?? @V386298 00294000
  297. BO FOLDVER NO -- UCS TEST FOR FOLD @V386298 00295000
  298. LH R0,BUFLEN GET BUFFER LENGTH @V386298 00296000
  299. STH R0,FCBLOAD+6 STORE LENGTH IN CCW CNT FLD @V386298 00297000
  300. SPACE 00298000
  301. FOLDVER EQU * @V386298 00299000
  302. CALL DMKSCNFD SCAN FOR FOLD OR VERIFY @V386298 00300000
  303. * BE FOLD OR VER 00301000
  304. BNZ ADJADD NONE - @V386298 00302000
  305. LR R14,R0 COUNT @V386298 00303000
  306. BCTR R14,0 -1 @V386298 00304000
  307. TM SAVEWRK1,X'80' UCS OPTION ?? @V386298 00305000
  308. BZ INDEX NO -- FCB OPTION @V386298 00306000
  309. EX R14,CLCFOLD FOLD ?? @V386298 00307000
  310. BNE VER NO TEST VERIFY @V386298 00308000
  311. TM SAVEWRK1,X'40' FOLD OPTION SET ?? @V386298 00309000
  312. BO MSG013 YES -- CONFLICTING OPTION @V386298 00310000
  313. OI SAVEWRK1,X'40' SET FOLD OPTION PRESENT @V386298 00311000
  314. CLI UCSBBLOK,X'73' THIS COMMAND CODE WILL @V386298 00312000
  315. * PERFORM A BLOCK DATA CHECK 00313000
  316. * ON EITHER A 3203 OR A 3211 00314000
  317. BNE FOLD1403 NO @V386298 00315000
  318. MVI UCSBFOLD,X'43' CHANGE NO-FOLD TO FOLDING @V386298 00316000
  319. * FOR 3203/3211 PRINTERS 00317000
  320. B FOLDVER CHECK FOR VER ON CMD LINE @V386298 00318000
  321. SPACE 00319000
  322. FOLD1403 MVI UCSLOAD,X'F3' CHANGE NO-FOLD TO FOLDING @V386298 00320000
  323. B FOLDVER @V386298 00321000
  324. SPACE 00322000
  325. INDEX EX R14,CLCINDEX INDEX OPTION ?? @V386298 00323000
  326. BNE MSG003 NO -- ERROR INVALID OPTION @V386298 00324000
  327. CLI RDEVTYPE,TYP3203 @V386298 00325000
  328. BE MSG003 YES--NO INDEX OTION @V386298 00326000
  329. XI SAVEWRK1,X'10' INDEX OPTION PROCESSED ? @V386298 00327000
  330. BZ MSG003 YES-- INVALID OPTION @V386298 00328000
  331. CALL DMKSCNFD GET INDEX VALUE @V386298 00329000
  332. BNZ ADJADD NONE -- USE DEFAULT @V386298 00330000
  333. C R0,F2 LENGTH OF INDEX > 2 @V386298 00331000
  334. BH MSG036 YES - INVALID INDEX @V386298 00332000
  335. CALL DMKCVTDB CONVERT TO BINARY @V386298 00333000
  336. BNZ MSG036 INVALID INDEX @V386298 00334000
  337. C R1,=F'31' VALUE GREATER THAN 31 ? @V386298 00335000
  338. BH MSG036 YES -- @V386298 00336000
  339. C R1,F1 VALUE LESS THAN ONE ? @V386298 00337000
  340. BL MSG036 YES -- INVALID INDEX VALUE @V386298 00338000
  341. STC R1,SAVEWRK1+1 SAVE INDEX VALUE @V386298 00339000
  342. OI SAVEWRK1+1,128 SET INDEX FLAG @V386298 00340000
  343. OI SAVEWRK1,X'08' INDICATE INDEX VALUE PRESENT@V386298 00341000
  344. B FOLDVER CHECK FOR NEXT OPTION @V386298 00342000
  345. SPACE 00343000
  346. VER EX R14,CLCVER VERIFY ?? @V386298 00344000
  347. BNE MSG003 NO - INVALID OPTION @V386298 00345000
  348. SPACE 00346000
  349. SPACE 00347000
  350. * GET VERIFY CCWS UCS LOAD BUFFER IF ANY 00348000
  351. SPACE 00349000
  352. VEROK TM SAVEWRK1,X'20' VERIFY OPTION SET @V386298 00350000
  353. BO MSG013 YES -- CONFLICTING OPTION @V386298 00351000
  354. OI SAVEWRK1,X'20' SET VERIFY OPTION PRESENT @V386298 00352000
  355. OI UCSCCWS+36,CC TURN ON COMMAND CHAINING @VA07899 00352500
  356. LH R5,CCWLEN GET LENGTH OF CCWS @V386298 00353000
  357. LTR R5,R5 CCWS PRESENT @V386298 00354000
  358. BZ FOLDVER NO--GO CK FOLD IN CASE VER @V386298 00355000
  359. * WAS FIRST 00356000
  360. LH R1,CCWDISP GET DISP FOR VERIFY CCWS @V386298 00357000
  361. ALR R1,R2 POINT TO VERIFY CCWS @V386298 00358000
  362. CH R5,=H'96' CHECK FOR 12 MAX CCWS @V386298 00359000
  363. BH FOLDVER OVER MAX FORGET USE DEFAULT @V386298 00360000
  364. MVC UCSBVER+24(56),SENSECCW OVERLAY DEFAULT CCWS @V386298 00361000
  365. BCTR R5,R0 -1 SET UP FOR MOVE @V386298 00362000
  366. EX R5,VERCCW MOVE VER CCW TO UCSBLOK @V386298 00363000
  367. B FOLDVER CK FOLD IN CASE ORDER WAS @V386298 00364000
  368. * VER FOLD 00365000
  369. SPACE 00366000
  370. ADJADD EQU * ADJUST CCW DATA ADDRESS TO REAL ADDRESS @V386298 00367000
  371. LA R5,17 LOOP COUNTER (NUMBER OF CCWS@V386298 00368000
  372. LA R15,HDRSIZE(,R2) ADDRESS OF FIRST DATA BYTE @V386298 00369000
  373. * UCS) 00370000
  374. LA R1,UCSCCWS POINT TO CCW LIST @V386298 00371000
  375. ADJLOOP L R0,0(R1) LOAD CCW @V386298 00372000
  376. ALR R0,R15 UPDATE DATA ADDR TO ACTUAL @V386298 00373000
  377. ST R0,0(R1) STORE BACK IN CCW @V386298 00374000
  378. LA R1,8(R1) POINT TO NEXT CCW @V386298 00375000
  379. BCT R5,ADJLOOP PROCESS ALL CCW @V386298 00376000
  380. TM SAVEWRK1,X'20' VERIFY ?? @V386298 00377000
  381. BZ CKINDEX NO -- CHECK FOR INDEX OPTION@V386298 00378000
  382. MVC UCSBNAME(8),CCWNAME MOVE IN PRINT NAME CCW @V386298 00379000
  383. STCM R2,B'0111',UCSBNAME+1 STORE ADDR OF BUFFER NAME @V386298 00380000
  384. CKINDEX TM SAVEWRK1,X'10' INDEX OPTION REQUESTED ? @V386298 00381000
  385. BZ CKFCB NO -- CHECK FOR FCB OPTION @V386298 00382000
  386. SR R1,R1 GET INDEX VALUE @V386298 00383000
  387. IC R1,SAVEWRK1+1 .. @V386298 00384000
  388. TM SAVEWRK1,X'08' INDEX VALUE PRESENT ?? @V386298 00385000
  389. BO *+8 YES - @V386298 00386000
  390. IC R1,FCBPNDEX GET DEFAULT INDEX FROM DMKFCB@V386298 00387000
  391. LTR R1,R1 INDEX VALUE PRESENT ? @V386298 00388000
  392. BZ MSG036 NO -- INDEX MISSING @V386298 00389000
  393. STC R1,FCBTNDEX SET UP NEW INDEX VALUE @V386298 00390000
  394. LM R14,R15,FCBLOAD GET FCB LOAD CCW @V386298 00391000
  395. BCTR R14,0 ADJUST ADDR TO PICK UP INDEX@V386298 00392000
  396. AL R15,F1 ADD ONE TO CCW COUNT @V386298 00393000
  397. STM R14,R15,FCBLOAD AND RETURN TO IOB @V386298 00394000
  398. CKFCB TM SAVEWRK1,X'80' FCB ?? @V386298 00395000
  399. BO QUERIO NO -- BRANCH @V386298 00396000
  400. LA R1,FCB07 ADDRESS OF 07 CCW @V386298 00397000
  401. ST R1,IOBCAW AND STORE IN IOB @V386298 00398000
  402. LA R1,FCBADD DATA FIELD ADDRESS @V386298 00399000
  403. STCM R1,B'0111',FCB06+1 AND STORE IN 06 CCW @V386298 00400000
  404. QUERIO LA R1,UCSIRA GET RETURN ADDRESS @V386298 00401000
  405. ST R1,IOBIRA AND SAVE IN IOBLOK @V386298 00402000
  406. ST R8,IOBMISC2 SAVE RDEVBLOK ADDR @V386298 00403000
  407. STM R12,R13,UCSREGS SAVE REGISTERS R12 AND R13 @V386298 00404000
  408. CALL DMKIOSQR AND GO DO SIO @V386298 00405000
  409. CSBDSP GOTO DMKDSPCH WAIT FOR INTERRUPT @V386298 00406000
  410. SPACE 3 00407000
  411. UCSIRA EQU * HERE WHEN THE LOAD IS COMPLETE @V386298 00408000
  412. SPACE 00409000
  413. USING *,R12 @V386298 00410000
  414. LR R1,R10 MUST CHECK FOR COPY IOBLOK @V386298 00411000
  415. L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V386298 00412000
  416. L R8,IOBMISC2 RESTORE RDEVBLOK ADDR @V386298 00413000
  417. LM R12,R13,UCSREGS RESTORE REGISTERS @V386298 00414000
  418. USING DMKCSB,R12 @V386298 00415000
  419. CR R1,R10 COPY IOBLOK PRESENT ? @V386298 00416000
  420. BE UCSSTAT NO - TEST STATUS @V386298 00417000
  421. OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V386298 00418000
  422. LA R0,IOBSIZE SIZE OF COPIED IOBLOK @V386298 00419000
  423. CALL DMKFRET RETURN STORAGE @V386298 00420000
  424. B CSBDSP WAIT FOR DEVICE END INTERRUPT @V386298 00421000
  425. UCSSTAT NI IOBFLAG,X'FF'-IOBRSTRT RESET RESTART FLAG @V386298 00422000
  426. TM IOBSTAT,IOBFATAL FATAL ERROR LOADING BUFFER ?@V386298 00423000
  427. BO MSG148 YES - MSG DMKCSB148E @V386298 00424000
  428. TSTUE TM IOBCSW+4,UE UNIT EXCEPION (CH12) @V386298 00425000
  429. BO UCSUE YES -- @V386298 00426000
  430. TM SAVEWRK1,X'80' FCB COMMAND ? @V386298 00427000
  431. BO LOADEND NO -- UCS COMPLETE @V386298 00428000
  432. TM SAVEWRK1,X'04' FCB IMAGE LOADED ? @V386298 00429000
  433. BO LOADEND YES -- @V386298 00430000
  434. LA R1,FCB0B ADDRESS OF SPACE COMMAND @V386298 00431000
  435. ST R1,IOBCAW CHAINED TO 07 AND 06 @V386298 00432000
  436. CLI FCBADD,X'40' FCB REGISTER ADDRESS AT 01 @V386298 00433000
  437. BNE QUERIO NO -- SPACE AND TRY AGAIN @V386298 00434000
  438. OI SAVEWRK1,X'04' INDICATE FCB ADDRESS 01 @V386298 00435000
  439. LA R1,FCBLOAD ADDRESS OF FCB LOAD CCWS @V386298 00436000
  440. ST R1,IOBCAW SET UP IOBCAW @V386298 00437000
  441. B QUERIO AND LOAD FCB BUFFER @V386298 00438000
  442. LOADEND BAL R3,FRETIOB FRET IOB AND UNLOCK BUFFER @V386298 00439000
  443. B CSBMSG NORMAL EXIT FROM THIS ROUTINE @V386298 00440000
  444. SPACE 00441000
  445. UCSUE L R3,IOBCSW ADDRESS OF NEXT CCW @V386298 00442000
  446. LA R3,0(R3) CLEAR HIGH BYTE @V386298 00443000
  447. ST R3,IOBCAW AND STORE IN IOB @V386298 00444000
  448. B QUERIO CONTINUE @V386298 00445000
  449. SPACE 00446000
  450. FRETIOB STM R0,R1,SAVEWRK2 SAVE COUNT AND ADDRESS OF @V386298 00447000
  451. * INVALID OPTION IF ANY 00448000
  452. LR R1,R10 FREE THE IOBLOK @V386298 00449000
  453. LA R0,XIOBSIZE SIZE OF XIOBBLOK IN DOUBLE @V386298 00450000
  454. * WORDS 00451000
  455. CALL DMKFRET @V386298 00452000
  456. SPACE 00453000
  457. L R2,SAVEWRK4 GET REAL ADDRESS @V386298 00454000
  458. BAL R14,PAGERES CHECK IF PAGE IS RESIDENT @V386298 00455000
  459. BL FRETRET YES -- DO NOT UNLOCK @V386298 00456000
  460. CALL DMKPTRUL UNLOCK THE BUFFER PAGE @V386298 00457000
  461. FRETRET LM R0,R1,SAVEWRK2 RESTORE OPTION CNT AND ADDR @V386298 00458000
  462. BR R3 @V386298 00459000
  463. SPACE 3 00460000
  464. VERCCW MVC UCSBVER(0),0(R1) EXECUTED- MOVE VER CCWS TO @V386298 00461000
  465. * UCSBLOK 00462000
  466. EJECT 00463000
  467. *. 00464000
  468. * SUBROUTINE NAME - 00465000
  469. * DMKCSBVL 00466000
  470. * 00467000
  471. * FUNCTION - 00468000
  472. * 00469000
  473. * TO LOAD A VIRTUAL 3211 OR 3203 FORMS CONTROL BUFFER 00470000
  474. * FROM DMKFCB MODULE. 00471000
  475. * 00472000
  476. * COMMAND LINE FORMAT - 00473000
  477. * 00474000
  478. * +----------+-----------------------------+ 00475000
  479. * | LOADVFCB | VADDR FCB NAME <INDEX <NN>> | 00476000
  480. * | LOADVFCB | F I | 00477000
  481. * +----------+-----------------------------+ 00478000
  482. * 00479000
  483. * ATTRIBUTES - 00480000
  484. * 00481000
  485. * REENTRAN, PAGEABLE, CALLED VIA SVC 00482000
  486. * 00483000
  487. * ENTRY POINT - 00484000
  488. * 00485000
  489. * DMKCSBVL 00486000
  490. * 00487000
  491. * ENTRY CONDITIONS - 00488000
  492. * 00489000
  493. * GPR9 = ADDRESS OF COMMAND BUFFER 00490000
  494. * GPR11 = ADDRES OF USER'S VMBLOK 00491000
  495. * GPR12 = ADDRESS OF ENTRY POINT 00492000
  496. * GPR13 = ADDRESS OF STANDARD SAVE AREA 00493000
  497. * 00494000
  498. * EXIT CONDITIONS - 00495000
  499. * 00496000
  500. * NORMAL - 00497000
  501. * 00498000
  502. * GPR2 = 0 00499000
  503. * 00500000
  504. * ERROR - 00501000
  505. * 00502000
  506. * GPR2 = BINARY VALUE OF THE ERROR MESSAGE NUMBER 00503000
  507. * 00504000
  508. * TABLE / WORK ARES - 00505000
  509. * 00506000
  510. * 00507000
  511. * REGISTER USAGE - 00508000
  512. * 00509000
  513. * GPR3 = LINE VALUE 00510000
  514. * GPR4 = VFCBBLOK BASE 00511000
  515. * GPR5 = LENGTH 00512000
  516. * GPR9 = ADDRESS OF COMMAND BUFFER 00513000
  517. * GPR11 = ADDRESS OF USERS VMBLOK 00514000
  518. * GPR12 = BASE REGISTER 00515000
  519. * GPR13 = ADDRESS OF STANDARD SAVE AREA 00516000
  520. * 00517000
  521. * NOTES - 00518000
  522. * 00519000
  523. * EXAMPLE - 00520000
  524. * 00521000
  525. * LOADVFCB 00E FCB FCB1 00522000
  526. * 00523000
  527. * THE FOLLOWING IMAGE IS INCLUDED IN THE DMKFCB MODULE. 00524000
  528. * 00525000
  529. * NAME - FCB1 LENGTH 66 LINES - 6 LINES PER INCH 00526000
  530. * 00527000
  531. * LINE-CHANNEL,.. 1-1,3-2,5-3,7-4,9-5,11-6,13-7,15-8,19-10, 00528000
  532. * 21-11,23-12,64-9 00529000
  533. * 00530000
  534. * OPERATION - 00531000
  535. * 00532000
  536. * 1. CALL DMKSCNFD TO LOCATE VADDR: IF NONE, 00533000
  537. * EXIT GIVING MSG022E. 00534000
  538. * CALL DMKCVTHB TO CONVERT THE ADDRESS TO BINARY: 00535000
  539. * IF INVALID, EXIT GIVING MSG022E. 00536000
  540. * 2. CALL DMKSCNVU TO LOCATE VIRTUAL DEVICE BLOK: 00537000
  541. * IF NONE, EXIT GIVING MSG040E. IF NOT, 3211 OR 3203 00538000
  542. * PRINTER: EXIT GIVING MSG006E. 00539000
  543. * 3. IF VIRTUAL FORMS CONTROL BUFFER AVAILABLE: GO TO STEP 4. 00540000
  544. * CALL DMKFREE TO GET STORAGE FOR VIRTUAL FORMS CONTROL 00541000
  545. * BUFFER (VFCBBLOK) AND STORE ADDRESS IN VDEVFCBK 00542000
  546. * 4. CLEAR VIRTUAL FORMS CONTROL BUFFER TO BINARY ZEROES 00543000
  547. * 5. CALL DMKSCNFD TO LOCATE KEYWORD 'FCB': IF NONE, 00544000
  548. * EXIT GIVING MSG026E. 00545000
  549. * 6. CALL DMKSCNFD TO LOCATE NAME: IF NONE OR INVALID, 00546000
  550. * EXIT GIVING MSG031E. 00547000
  551. * 7. SEARCH THE BUFFER LOAD LIST FOR THE REQUESTED 00548000
  552. * BUFFER: IF NOT FOUND, EXIT GIVING MSG043E. 00549000
  553. * 8. CALL DMKSCNFD TO LOCATE INDEX OPTION; IF NONE, 00550000
  554. * GO TO STEP 10. IF INVALID EXIT GIVING MSG003E. 00551000
  555. * 9. CALL DMKSCNFD TO LOCATE INDEX VALUE; IF NONE, GO TO 00552000
  556. * STEP 10. IF INVALID, EXIT GIVING MSG036E. 00553000
  557. * 10. MOVE THE REQUESTED BUFFER TO VFCBBLOK, INCLUDING 00554000
  558. * THE INDEX VALUE IF SPECIFIED. 00555000
  559. * 00556000
  560. * RESPONSE - 00557000
  561. * 00558000
  562. * NONE 00559000
  563. * 00560000
  564. * ERROR MESSAGES - 00561000
  565. * 00562000
  566. * DMKCSB006E INVALID DEVICE TYPE - (ADDR) 00563000
  567. * DMKCSB022E VADDR MISSING OR INVALID 00564000
  568. * DMKCSB026E OPERAND MISSING OR INVALID 00565000
  569. * DMKCSB031E BUFFER MISSING OR INVALID 00566000
  570. * DMKCSB036E INDEX MISSING OR INVALID 00567000
  571. * DMKCSB040E DEV (ADDR) DOES NOT EXIST 00568000
  572. * DMKCSB043E BUFFER (NAME) DOES NOT EXIST 00569000
  573. * 00570000
  574. *. 00571000
  575. EJECT 00572000
  576. DMKCSBVL RELOC @V386298 00573000
  577. USING VFCBBLOK,R4 @V386298 00574000
  578. USING VDEVBLOK,R8 @V386298 00575000
  579. USING BUFFER,R9 @V386298 00576000
  580. USING UCSHDR,R5 @V386298 00577000
  581. SPACE 00578000
  582. BAL R4,CLEAR CLEAR SAVEWRK1, 2-9 @V386298 00579000
  583. CALL DMKSCNFD LACATE VADDR @V386298 00580000
  584. BNZ MSG022E MISSING VADDR @V386298 00581000
  585. SPACE 00582000
  586. C R0,F3 LENGTH GREATER THAN 3 ?? @V386298 00583000
  587. BH MSG022E YES -- INVALID DEVICE ADDR @V386298 00584000
  588. LR R14,R0 GET LENGTH @V386298 00585000
  589. BCTR R14,0 -1 @V386298 00586000
  590. EX R14,MVCADDR MOVE ADDRESS TO SAVEWRK8-9 @V386298 00587000
  591. CALL DMKCVTHB CONVERT ADDRESS TO BINARY @V386298 00588000
  592. BNZ MSG022E BAD ADDRESS @V386298 00589000
  593. SPACE 00590000
  594. CALL DMKSCNVU LOCATE VDEVBLOK @V386298 00591000
  595. BNZ MSG040E NONEXISTENT UNIT @V386298 00592000
  596. SPACE 00593000
  597. TM VDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00594000
  598. BNO MSG006E NO - MSG MSGCSB006E @V386298 00595000
  599. TM VDEVSTAT,VDEVDED VIRT DEV ATTACHED TO REAL @V386298 00596000
  600. * DEV?? 00597000
  601. BO MSG006E YES -- INVALID DEVICE TYPE @V386298 00598000
  602. SPACE 00599000
  603. ICM R4,B'1111',VDEVFCBK VFCBBLOK PRESENT ? @V386298 00600000
  604. BNZ INITFCB YES - CLEAR BLOK @V386298 00601000
  605. BNZ INITFCB YES - INITIAL @V386298 00602000
  606. LA R0,VFCBSIZE GET SIZE OF BLOK @V386298 00603000
  607. CALL DMKFREE GET STORAGE @V386298 00604000
  608. LR R4,R1 LOAD BASE FOR VFCBBLOK @V386298 00605000
  609. ST R4,VDEVFCBK SAVE ADDRESS @V386298 00606000
  610. SPACE 00607000
  611. INITFCB XC VFCBBLOK(VFCBSIZE*8),VFCBBLOK CLEAR BLOK @V386298 00608000
  612. MVI VFCBCNT+1,X'01' SET COUNT TO LINE 01 @V386298 00609000
  613. FCBSCAN CALL DMKSCNFD LOCATE KEYWORD FCB @V386298 00610000
  614. BNZ MSG026E KEYWORD FCB MISSING @V386298 00611000
  615. LR R14,R0 GET LENGTH @V386298 00612000
  616. BCTR R14,0 -1 @V386298 00613000
  617. EX R14,CLCFCB OPTION EQUAL FCB ?? @V386298 00614000
  618. BNE MSG003E INVALID OPTION @V386298 00615000
  619. SPACE 00616000
  620. CALL DMKSCNFD LOCATE BUFFER NAME @V386298 00617000
  621. BNZ MSG031E NAME MISSING @V386298 00618000
  622. C R0,F4 NAME LONGER THAN 4 BYTES ?? @V386298 00619000
  623. BH MSG031E NAME INVALID @V386298 00620000
  624. SPACE 00621000
  625. LR R14,R0 SAVE COUNT @V386298 00622000
  626. BCTR R14,0 -1 FOR MOVE @V386298 00623000
  627. EX R14,MVCNAME MOVE NAME TO SAVEWRK8 @V386298 00624000
  628. OC SAVEWRK8(4),BLANKS MAKE UPPER CASE @V386298 00625000
  629. SPACE 00626000
  630. L R1,=A(DMKFCBLD) ADDRESS OF BUFFER LOADS @V386298 00627000
  631. L R15,ASYSVM POINT TO SYSTEM VMBLOK, AND @V386298 00628000
  632. LCTL C1,C1,VMSEG-VMBLOK(R15) GET CORRECT SEGMENT TABL@V386298 00629000
  633. DC 0H'0',X'B1',AL.4(2,0),S(0(1)) LRA INSTRUCTION@V386298 00630000
  634. BC 7,NOTRES1 PAGE NOT RESIDENT, GO GET IT@V386298 00631000
  635. BAL R14,PAGERES CHECK IF PAGE IS CP RESIDENT@V386298 00632000
  636. BL FCBRES YES -- MODULE RESIDENT @V386298 00633000
  637. NOTRES1 LA R2,(BRING+DEFER+LOCK+SYSTEM) SET UP PARM REG @V386298 00634000
  638. L R15,APTRAN ADDRESS OF TRANS ROUTINE @V386298 00635000
  639. SVC 8 @V386298 00636000
  640. FCBRES LR R5,R2 SET UP WORK REGISTER @V386298 00637000
  641. FCBLOOP CLC SAVEWRK8(4),HDRNAME IS THIS THE RIGHT LOAD @V386298 00638000
  642. BE EQNAME YES - @V386298 00639000
  643. CLC HDRNAME(4),ZEROES LAST HEADER ?? @V386298 00640000
  644. BNE FCBNEXT NO -- @V386298 00641000
  645. LA R3,MSG043E SET RETURN FOR ERROR MESSAGE@V386298 00642000
  646. FCBERR STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS @V386298 00643000
  647. BAL R14,PAGERES CHECK IF PAGE IS RESIDENT @V386298 00644000
  648. BL FCBRET YES -- RESIDENT - DO NOT @V386298 00645000
  649. CALL DMKPTRUL UNLOCK BUFFER PAGE @V386298 00646000
  650. FCBRET LM R0,R1,SAVEWRK6 RESTORE COUNT AND ADDRESS @V386298 00647000
  651. BR R3 EXIT GIVING ERROR MSG @V386298 00648000
  652. SPACE 00649000
  653. FCBNEXT AH R5,HDRNEXT ADD DISP TO NEXT HEADER @V386298 00650000
  654. B FCBLOOP KEEP LOOKING @V386298 00651000
  655. SPACE 00652000
  656. EQNAME LH R3,BUFLEN GET LENGTH OF DATA @V386298 00653000
  657. BCTR R3,0 -1 FOR MOVE @V386298 00654000
  658. EX R3,FCBDATA MOVE BUFFER DATA TO VDEVFCBK@V386298 00655000
  659. CALL DMKSCNFD ANY MORE OPTIONS ? @V386298 00656000
  660. BNZ FCBEXIT NO -- CONT @V386298 00657000
  661. LR R14,R0 OPTION COUNT @V386298 00658000
  662. BCTR R14,0 -1 @V386298 00659000
  663. LA R3,MSG003E SET ERROR MSG RETURN @V386298 00660000
  664. EX R14,CLCINDEX INDEX OPTION ?? @V386298 00661000
  665. BNE FCBERR NO -- ERROR DMKCSB003E @V386298 00662000
  666. CLI VDEVTYPE,TYP3203 IS IT A 3203 PRINTER?? @V386298 00663000
  667. BE FCBERR YES--INDEX OPTION INVALID @V386298 00664000
  668. CALL DMKSCNFD LOCATE INDEX VALUE @V386298 00665000
  669. LA R3,MSG036E SET UP ERROR RETURN @V386298 00666000
  670. BZ INDEXCVT SOMETHING PRESENT @V386298 00667000
  671. CLI FCBPNDEX,X'00' DEFAULT VALUE PRESENT ? @V386298 00668000
  672. BE FCBERR NO -- @V386298 00669000
  673. MVC VFCBNDEX(1),FCBPNDEX MOVE IN DEFAULT VALUE @V386298 00670000
  674. B FCBEXIT @V386298 00671000
  675. SPACE 00672000
  676. INDEXCVT C R0,F2 VALUE LENGTH GREATER THAN 2 @V386298 00673000
  677. BH FCBERR YES -- @V386298 00674000
  678. CALL DMKCVTDB CONVERT TO BINARY @V386298 00675000
  679. BNZ FCBERR INVALID INDEX VALUE @V386298 00676000
  680. C R1,=F'31' GREATER THAN 31 ? @V386298 00677000
  681. BH FCBERR YES -- DMKCSB036E @V386298 00678000
  682. LTR R1,R1 LESS THAN 1 ? @V386298 00679000
  683. BZ FCBERR YES -- DMKCSB036E @V386298 00680000
  684. STC R1,VFCBNDEX STORE FOR VIRTUAL DEVICE @V386298 00681000
  685. LA R3,MSG003E ERROR RETURN @V386298 00682000
  686. CALL DMKSCNFD LOCATE NEXT OPTION @V386298 00683000
  687. BZ FCBERR INVALID OPTION @V386298 00684000
  688. FCBEXIT BAL R14,PAGERES CHECK IF PAGE IS RESIDENT @V386298 00685000
  689. BL CSBEXIT YES -- DO NOT UNLOCK @V386298 00686000
  690. CALL DMKPTRUL UNLOCK BUFFER @V386298 00687000
  691. B CSBEXIT ALL DONE EXIT @V386298 00688000
  692. SPACE 00689000
  693. * 00690000
  694. FCBDATA MVC VFCBLOAD(0),HDRSIZE(R5) MOVE DATA TO VDEVFCBK @V386298 00691000
  695. MVCNAME MVC SAVEWRK8(0),0(R1) MOVE NAME FROM SCAN LINE @V386298 00692000
  696. SPACE 00693000
  697. EJECT 00694000
  698. *. 00695000
  699. * OPERATION OF GETDEVIC SUBROUTINE - 00696000
  700. * 00697000
  701. * 1. CALL DMKSCNFD TO LOCATE THE DEVICE ADDRESS FIELD 00698000
  702. * 2. IF NO OPTION IS FOUND: EXIT GIVING MSG021E. 00699000
  703. * 3. CONVERT THE ADDRESS TO BINARY 00700000
  704. * 4. IF THE CONVERSION FAILS, EXIT GIVING MSG021E. 00701000
  705. * 5. CALL DMKSCNRU TO LOCATE THE DEVICE BLOK FOR THE SPECIFIED 00702000
  706. * UNIT; IF NOT FOUND, EXIT GIVING MSG040E. 00703000
  707. * 6. OTHERWISE, RETURN TO CALLER WITH GPR8 = RDEVBLOK 00704000
  708. *. 00705000
  709. SPACE 00706000
  710. USING RDEVBLOK,R8 @V386298 00707000
  711. GETDEVIC EQU * HERE TO LOCATE THE DEVICE SPECIFIED IN CMD @V386298 00708000
  712. CALL DMKSCNFD LOCATE NEXT OPTION @V386298 00709000
  713. BNZ MSG021E DEVICE ADDRESS IS MISSING @V386298 00710000
  714. SPACE 00711000
  715. GETDVIC2 C R0,F3 LENGTH GREATER THAN 3 ?? @V386298 00712000
  716. BH MSG021E YES -- INVALID RADDRESS @V386298 00713000
  717. LR R14,R0 GET LENGTH @V386298 00714000
  718. BCTR R14,0 -1 @V386298 00715000
  719. EX R14,MVCADDR MOVE ADDRESS TO SAVEWRK7 @V386298 00716000
  720. CALL DMKCVTHB CONVERT TO BINARY @V386298 00717000
  721. BNZ MSG021E INVALID HEX CHAR IN ADDR N4386298 00718000
  722. CALL DMKSCNRU @V386298 00719000
  723. BNZ MSG040E COULDN'T FIND A DEVICE AT @V386298 00720000
  724. * THAT ADDRESS 00721000
  725. L R14,ARIORD POINT TO LIST OF SYS READERS@V386298 00722000
  726. MVC SAVEWRK6(3),=C'RDR' SET FOR ERROR MSG @V386298 00723000
  727. TM RDEVTYPC,CLASURI READER TYPE ?? @V386298 00724000
  728. BO VALDEV VALIDATE DEVICE FOR SPOOLING@V386298 00725000
  729. L R14,ARIOPR POINT TO LIST OF SYS PRINTER@V386298 00726000
  730. MVC SAVEWRK6(3),=C'PRT' PRINTER TYPE ?? @V386298 00727000
  731. TM RDEVTYPE,TYPPRT PRINTER ?? @V386298 00728000
  732. BO VALDEV VALIDATE DEVICE FOR SPOOLING@V386298 00729000
  733. L R14,ARIOPU POINT TO LIST OF SYS PUNCHES@V386298 00730000
  734. MVC SAVEWRK6(3),=C'PUN' SET FOR PUNCH @V386298 00731000
  735. SPACE 00732000
  736. VALDEV ICM R15,B'1111',0(R14) GET NUMBER OF DEVICES @V386298 00733000
  737. BZ MSG006E NO DEVICES - INVALID TYPE @V386298 00734000
  738. GETDEVLP LA R14,4(R14) UPDATE TO NEXT ENTRY @V386298 00735000
  739. CH R1,2(R14) IS THIS DEVICE ON LIST ?? @V386298 00736000
  740. BE DEVAVAIL YES -- CHECK FOR DEVICE @V386298 00737000
  741. * AVAILABILITY 00738000
  742. BCT R15,GETDEVLP TRY NEXT ENTRY @V386298 00739000
  743. B MSG006E -- INVALID DEVICE TYPE @V386298 00740000
  744. SPACE 00741000
  745. DEVAVAIL TM SAVEWRK1+2,X'02' START OR DRAIN COMMAND ? @V386298 00742000
  746. BCR 1,R4 YES - BRANCH (RETURN) @V386298 00743000
  747. TM RDEVTYPC,CLASURO UNIT RECORD OUTPUT TYPE ? @V386298 00744000
  748. BZ MSG006E NO - INVALID ADDRESS @V386298 00745000
  749. TSTSTAT TM RDEVSTAT,RDEVDED IS THE DEVICE DEDICATED ? @V386298 00746000
  750. BO MSG140E YES -- ERROR @V386298 00747000
  751. TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE ? @V386298 00748000
  752. BO MSG046E YES -- ERROR @V386298 00749000
  753. BR R4 RETURN TO CALLER @V386298 00750000
  754. SPACE 00751000
  755. MVCADDR MVC SAVEWRK7(0),0(R1) MOVE NAME TO SAVEWRK7 @V386298 00752000
  756. SPACE 3 00753000
  757. CLEAR XC SAVEWRK2(32),SAVEWRK2 CLEAR WORK AREA @V386298 00754000
  758. XC SAVEWRK1(4),SAVEWRK1 @V386298 00755000
  759. BR R4 RETURN @V386298 00756000
  760. SPACE 3 00757000
  761. PAGERES LR R15,R2 LOAD ADDROF PAGE TO TEST INTO R15@V386298 00758000
  762. N R15,=A(X'FFF000') REMOVE DISPLACEMENT VALUE @V386298 00759000
  763. SRL R15,8 DIVIDE ADDRESS BY 256 @V386298 00760000
  764. AL R15,ACORETBL GET ADDRESS OF CORE-TABLE ENTRY @V386298 00761000
  765. L R15,0(,R15) PICK UP FORWARD POINTER @V386298 00762000
  766. CL R15,=C'*CP*' IF EQUAL PAGE IS RESIDENT @V386298 00763000
  767. BE *+10 YES - PAGE RESIDENT @V386298 00764000
  768. TM *+1,X'FF' FORCE CC=3 - PAGE NOT RESIDENT @V386298 00765000
  769. BR R14 RETURN @V386298 00766000
  770. TM *,X'FF' FORCE CC=1 - PAGE RESIDENT @V386298 00767000
  771. BR R14 RETURN @V386298 00768000
  772. EJECT 00769000
  773. ****************************************************** 00770000
  774. * 00771000
  775. * ERROR EXITS FROM DMKCSB 00772000
  776. * 00773000
  777. ****************************************************** 00774000
  778. SPACE 3 00775000
  779. MSG003 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00776000
  780. MSG003E EQU * HERE IF OPTION IS INVALID @V386298 00777000
  781. LA R2,003 ERROR MSG DMKCSB003E @V386298 00778000
  782. B EXIT8 @V386298 00779000
  783. SPACE 00780000
  784. MSG006E EQU * HERE IF INVALID DEVICE TYPE @V386298 00781000
  785. LA R2,006 ERROR MSG DMKCSB006E @V386298 00782000
  786. B EXIT1 @V386298 00783000
  787. SPACE 00784000
  788. MSG013 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00785000
  789. MSG013E EQU * HERE IF CONFLICTING OPTIONS @V386298 00786000
  790. LA R2,013 ERROR MSG DMKCSB013E @V386298 00787000
  791. B EXIT8 .. @V386298 00788000
  792. SPACE 00789000
  793. MSG021E EQU * HERE IF RADDR MISSING OR INVALID @V386298 00790000
  794. LA R2,021 ERROR MSG DMKCSB021E @V386298 00791000
  795. B EXIT8R1 @V386298 00792000
  796. SPACE 00793000
  797. MSG022E EQU * HERE IF VIRTUAL ADDRESS IS MISSING @V386298 00794000
  798. * OR INVALID 00795000
  799. LA R2,022 ERR MSG DMKCSB022E @V386298 00796000
  800. B EXIT8R1 EXIT @V386298 00797000
  801. SPACE 00798000
  802. MSG026E EQU * HERE OF OPERAND IS MISSING OR @V386298 00799000
  803. * OR INVALID 00800000
  804. LA R2,026 ERROR MSG DMKCSB026E @V386298 00801000
  805. B EXIT8R1 EXIT @V386298 00802000
  806. SPACE 00803000
  807. MSG028E EQU * HERE IF CLASS IS MISSING OR INVALID @V386298 00804000
  808. LA R2,028 ERROR MSG DMKCSB028E @V386298 00805000
  809. B EXIT8R1 EXIT @V386298 00806000
  810. SPACE 00807000
  811. MSG030E EQU * HERE IF COPIES MISSING OR INVALID @V386298 00808000
  812. LA R2,030 ERROR MSG DMKCSB030E @V386298 00809000
  813. B EXIT8R1 EXIT @V386298 00810000
  814. SPACE 00811000
  815. MSG031 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00812000
  816. MSG031E EQU * HERE IF BUFFER IS MISSING OR IVALID @V386298 00813000
  817. LA R2,031 ERROR MSG DMKCSB031E @V386298 00814000
  818. B EXIT8R1 @V386298 00815000
  819. SPACE 00816000
  820. MSG036 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00817000
  821. MSG036E EQU * HERE IF INDEX IN MISSING OR INVALID @V386298 00818000
  822. LA R2,036 ERROR MSG DMKCSB036E @V386298 00819000
  823. B EXIT8R1 EXIT @V386298 00820000
  824. SPACE 2 00821000
  825. MSG040E EQU * HERE IF DEVICE ADDRESS DOES NOT EXIST @V386298 00822000
  826. LA R2,040 ERROR MSG DMKCSB040E @V386298 00823000
  827. B EXIT1 SET UP MESSAGE @V386298 00824000
  828. SPACE 00825000
  829. MSG043 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00826000
  830. MSG043E EQU * HERE IF BUFFER DOES NOT EXIST @V386298 00827000
  831. LA R0,4 LENGTH OF NAME @V386298 00828000
  832. LA R1,SAVEWRK8 ADDRESS OF NAME @V386298 00829000
  833. LA R2,043 ERROR MSG DMKCSB043E @V386298 00830000
  834. B EXIT8 @V386298 00831000
  835. SPACE 00832000
  836. MSG046E EQU * HERE IF DEVICE IS OFFLINE @V386298 00833000
  837. LA R2,046 ERROR MSG DMKCSB046E @V386298 00834000
  838. B EXIT2 SET GPR0 AND GPR1 @V386298 00835000
  839. SPACE 00836000
  840. MSG140E EQU * HERE IF DEVICE IS ATTACHED TO USER @V386298 00837000
  841. L R14,RDEVUSER ADDRESS OF USER VMBLOK @V386298 00838000
  842. MVC SAVEWRK8(8),VMUSER-VMBLOK(R14) GET USER ID @V386298 00839000
  843. LA R0,16 LENGTH OF DATA FOR ERROR MSG@V386298 00840000
  844. LA R1,SAVEWRK6 ADDRESS OF DATA @V386298 00841000
  845. LA R2,140 ERROR MSG DMKCSB140E @V386298 00842000
  846. B EXIT8 EXIT @V386298 00843000
  847. SPACE 00844000
  848. MSG141E EQU * HERE IF DEVICE NOT ACTIVE @V386298 00845000
  849. LA R2,141 ERROR MSG DMKCSB141E @V386298 00846000
  850. B EXIT2 SET UP GPR0 AND GPR1 @V386298 00847000
  851. SPACE 00848000
  852. MSG142E EQU * HERE IF DEVICE IS NOT DRAINED @V386298 00849000
  853. LA R2,142 ERROR MSG DMKCSB142E @V386298 00850000
  854. B EXIT2 SET UP GPR0 AND GPR1 @V386298 00851000
  855. SPACE 00852000
  856. MSG148 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00853000
  857. MSG148E EQU * HERE IF BUFFER LOAD FAILED @V386298 00854000
  858. LA R0,12 LENGTH OF ERROR MSG DATA @V386298 00855000
  859. LA R1,SAVEWRK6 ADDRESS OF DATA @V386298 00856000
  860. LA R2,148 ERROR MSG DMKCSB148E @V386298 00857000
  861. B EXIT8 .. @V386298 00858000
  862. SPACE 00859000
  863. EXIT1 LA R0,3 LENGTH OF REAL ADDRESS @V386298 00860000
  864. LA R1,SAVEWRK7 ADDRESS OF REAL ADDRESS @V386298 00861000
  865. B EXIT8 EXIT @V386298 00862000
  866. SPACE 00863000
  867. EXIT2 LA R0,8 LENGTH OF TYPE AND REAL ADDR@V386298 00864000
  868. LA R1,SAVEWRK6 ADDRESS OF DATA @V386298 00865000
  869. B EXIT8 EXIT @V386298 00866000
  870. SPACE 3 00867000
  871. CLCFCB CLC 0(0,R1),=C'FCB ' @V386298 00868000
  872. CLCUCS CLC 0(0,R1),=C'UCS ' @V386298 00869000
  873. CLCUCC CLC 0(0,R1),=C'UCC ' @VA11542 00869500
  874. CLCFOLD CLC 0(0,R1),=C'FOLD ' @V386298 00870000
  875. CLCVER CLC 0(0,R1),=C'VER ' @V386298 00871000
  876. CLCINDEX CLC 0(0,R1),=C'INDEX ' @V386298 00872000
  877. EJECT 00873000
  878. SPACE 3 00874000
  879. *********************************** 00875000
  880. * 00876000
  881. * FINAL EXIT BACK TO DMKCFM OR DMKERM 00877000
  882. * 00878000
  883. *********************************** 00879000
  884. SPACE 3 00880000
  885. DS 0H @V386298 00881000
  886. SPACE 2 00882000
  887. EXIT8R1 SR R1,R1 NO DATA IN R0 AND R1 @V386298 00883000
  888. SR R0,R0 NO DATA IN RO BUT DATA IN R1@V386298 00884000
  889. EXIT8 ICM R0,B'1110',ID+3 LOAD MODULE ID (CSB) @V386298 00885000
  890. CALL DMKERMSG GO TO ERROR MSG MODULE @V386298 00886000
  891. * 00887000
  892. * DMKERMSG WILL EXIT TO DMKCFM VIA SVC 16 00888000
  893. * 00889000
  894. SPACE 2 00890000
  895. CSBMSG EQU * HERE TO PRINT COMMAND COMPLETED MESSAGE @V386298 00891000
  896. LA R0,16 MSG LENGTH @V386298 00892000
  897. LA R1,CMDMSG ADDRESS OF MSG @V386298 00893000
  898. CALL DMKQCNWT,PARM=NORET @V386298 00894000
  899. SPACE 2 00895000
  900. CSBEXIT EQU * HERE TO EXIT @V386298 00896000
  901. EXIT @V386298 00897000
  902. EJECT 00898000
  903. EJECT 00899000
  904. *********************************** 00900000
  905. * 00901000
  906. * MESSAGES AND CONSTANTS 00902000
  907. * 00903000
  908. *********************************** 00904000
  909. SPACE 2 00905000
  910. CCWNAME CCW 9,0,CC+SILI,4 PRINT BUFFER NAME ON VERIFY @V386298 00906000
  911. SPACE 2 00907000
  912. CCW1403 CCW X'EB',0,CC,1 UCS GATE @V386298 00908000
  913. CCW X'73',0,CC,1 BLOCK DATA CHECKS @V386298 00909000
  914. CCW X'FB',0,CC,240 LOAD UCS BUFFER, NO FOLD @V386298 00910000
  915. CCW X'04',0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00911000
  916. CCW X'04',0,SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00912000
  917. CCW 9,0,CC+SILI,60 VERIFY PRINT 1ST CCW @V386298 00913000
  918. CCW 9,60,CC+SILI,60 VERIFY PRINT 2ND CCW @V386298 00914000
  919. CCW 9,120,CC+SILI,60 VERIFY PRINT 3RD CCW @V386298 00915000
  920. CCW 25,180,CC+SILI,60 VERIFY PRINT 4TH CCW AND @V386298 00916000
  921. * 3 SPACES 00917000
  922. SENSECCW EQU * @V386298 00918000
  923. CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00919000
  924. CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00920000
  925. CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00921000
  926. CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00922000
  927. CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00923000
  928. CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00924000
  929. CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00925000
  930. CCW X'1B',0,CC,1 SPACE 3 SO THAT OPERATOR @V386298 00926000
  931. * CAN SEE 00927000
  932. CCW X'04',0,SKIP+SILI,1 FORCE CONCURRENT CE+DE @V386298 00928000
  933. SPACE 3 00929000
  934. FCBCCW CCW X'63',0,CC+SILI,0 LOAD FORM CONTROL COMMAND @V386298 00930000
  935. CCW 4,0,SKIP+SILI,1 SENSE TO FORCE CONCURRENT @V386298 00931000
  936. * CE+DE 00932000
  937. CCW X'0B',0,CC+SILI,1 SPACE CCW @V386298 00933000
  938. CCW X'07',0,CC+SILI,1 DIAG GATE CCW (3211/3203) @V386298 00934000
  939. CCW X'06',0,CC+SILI,1 READ FCB REGISTER ADDRESS @V386298 00935000
  940. CCW X'04',0,SKIP+SILI,1 SENSE TO FORCE CONCURRENT @V386298 00936000
  941. * CE+DE 00937000
  942. SPACE 3 00938000
  943. *********************************************************************** 00938100
  944. * THE NEXT 3 CCWS HAVE THE SILI BIT ON SO THE PROCESSING OF IMMEDIATE * 00938200
  945. * COMMANDS BY 3203 MODEL 5 WILL OCCUR. IT WILL NOT AFFECT MOD 4 PROC.* 00938300
  946. *********************************************************************** 00938400
  947. CCW3203 CCW X'73',0,CC+SILI,1 BLOCK DATA CHECKS @V60A6B6 00939000
  948. CCW X'23',0,CC+SILI,1 UNFOLD CMD '43' FOLD CMD @V60A6B6 00940000
  949. CCW X'FB',0,CC+SILI,304 LOAD UCS BUFFER @V60A6B6 00941000
  950. CCW X'04',0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00942000
  951. CCW X'04',0,SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00943000
  952. CCW 9,0,CC+SILI,60 VERIFY PRINT FIRST CCW @V386298 00944000
  953. CCW 9,60,CC+SILI,60 VERIFY PRINT SECOND CCW @V386298 00945000
  954. CCW 9,120,CC+SILI,60 VERIFY PRINT THIRD CCW @V386298 00946000
  955. CCW 25,180,CC+SILI,60 VERIFY PRINT FOURTH CCW AND @V386298 00947000
  956. * SPACE 3 00948000
  957. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00949000
  958. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00950000
  959. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950500
  960. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950600
  961. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950700
  962. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950800
  963. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950900
  964. *********************************************************************** 00950910
  965. * THE NEXT CCW HAS THE SILI BIT TURNED ON FOR PROCESSING OF IMMEDIATE * 00950920
  966. * COMMANDS BY THE 3203 MODEL 5. IT WILL NOT AFFECT MODEL 4 PROCESSING.* 00950930
  967. *********************************************************************** 00950940
  968. CCW X'1B',0,CC+SILI,1 SP 3 SO OPERATOR CAN SEE @V60A6B6 00951000
  969. CCW X'04',0,SKIP+SILI,1 SENSE TO FORCE CONCURRENT @V386298 00952000
  970. * CE+DE 00953000
  971. SPACE 3 00954000
  972. CCW3211 CCW X'73',0,CC,1 BLOCK DATA CHECKS @V386298 00955000
  973. CCW X'23',0,CC,1 UNFOLD COMMAND '43' FOLD CMD@V386298 00956000
  974. CCW X'FB',0,CC,512 LOAD UCSB BUFFER @V386298 00957000
  975. CCW X'04',0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00958000
  976. CCW X'04',0,SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00959000
  977. CCW 9,0,CC+SILI,48 VERIFY PRINT CCW 1 @V386298 00960000
  978. CCW 9,48,CC+SILI,48 VERIFY PRINT CCW 2 @V386298 00961000
  979. CCW 9,96,CC+SILI,48 VERIFY PRINT CCW 3 @V386298 00962000
  980. CCW 9,144,CC+SILI,48 VERIFY PRINT CCW 4 @V386298 00963000
  981. CCW 9,192,CC+SILI,48 VERIFY PRINT CCW 5 @V386298 00964000
  982. CCW 9,240,CC+SILI,48 VERIFY PRINT CCW 6 @V386298 00965000
  983. CCW 9,288,CC+SILI,48 VERIFY PRINT CCW 7 @V386298 00966000
  984. CCW 9,336,CC+SILI,48 VERIFY PRINT CCW 8 @V386298 00967000
  985. CCW 25,384,CC+SILI,48 VER PRINT CCW 9 AND SPACE 3 @V386298 00968000
  986. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00969000
  987. CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00970000
  988. CCW X'1B',0,CC,1 SP 3 SO OPERATOR CAN SEE @V386298 00971000
  989. CCW X'04',0,SKIP+SILI,1 SENSE TO FORCE CONCURRENT @V386298 00972000
  990. * CE+DE 00973000
  991. SPACE 3 00974000
  992. CMDMSG DC C'COMMAND COMPLETE' @V386298 00975000
  993. EJECT 00976000
  994. LTORG 00977000
  995. EJECT 00978000
  996. PSA @V386298 00979000
  997. COPY CONBUF @V386298 00980000
  998. COPY DEVTYPES @V386298 00981000
  999. COPY EQU @V386298 00982000
  1000. COPY IOBLOKS @V386298 00983000
  1001. COPY IOER @V386298 00984000
  1002. COPY RBLOKS @V386298 00985000
  1003. COPY SAVE @V386298 00986000
  1004. COPY SPOOL @V386298 00987000
  1005. COPY UDIRECT @V386298 00988000
  1006. COPY VBLOKS @V386298 00989000
  1007. COPY VMBLOK @V386298 00990000
  1008. IOBLOK DSECT CONTINUE THE IOBLOK @V386298 00991000
  1009. ORG , MAKE SURE WE'RE AT THE END @V386298 00992000
  1010. *** UCSBLOK - UCS/FCB WORK BLOK 00993000
  1011. * 00994000
  1012. SPACE 00995000
  1013. * USED BY DMKCSBLD 00996000
  1014. SPACE 00997000
  1015. * FOR 3203/3211 PRINTER UCS/FCB 00998000
  1016. SPACE 00999000
  1017. UCSREGS DS 2F SAVE REG AREA @V386298 01000000
  1018. UCSCCWS DS 0XL144 LENGTH ATTRIBUTE FOR MOVE @V386298 01001000
  1019. UCSBBLOK DS 1D BLOCK DATA CHECKS @V386298 01002000
  1020. UCSBFOLD DS 1D FOLD COMMAND @V386298 01003000
  1021. UCSBLOAD DS 1D LOAD UCSB CCW @V386298 01004000
  1022. UCSBNAME DS 1D PRINT BUFFER NAME CCW @V386298 01005000
  1023. UCSBVER DS 12D SPACE FOR 12 VERIFY CCWS @V386298 01006000
  1024. UCSBSPAC DS 1D CCW FOR SPACE 3 @V386298 01007000
  1025. UCSBLAST DS 1D DUMMY SENSE CCW @V386298 01008000
  1026. SPACE 01009000
  1027. XIOBSIZE EQU (*-IOBLOK)/8 SIZE IN DOUBLE WORDS @V386298 01010000
  1028. SPACE 3 01011000
  1029. * FOR 1403 UCS 01012000
  1030. SPACE 01013000
  1031. ORG UCSCCWS @V386298 01014000
  1032. UCSGATE DS 1D UCS GATE CCW @V386298 01015000
  1033. UCSBLOCK DS 1D BLOCK DATA CHECKS CCW @V386298 01016000
  1034. UCSLOAD DS 1D LOAD UCS CCS @V386298 01017000
  1035. SPACE 3 01018000
  1036. * FOR 3203/3211 FCB 01019000
  1037. SPACE 01020000
  1038. ORG UCSCCWS @V386298 01021000
  1039. FCBLOAD DS 1D LOAD FORMS CONTOL COMMAND @V386298 01022000
  1040. FCBLAST DS 1D FCB LAST CCW @V386298 01023000
  1041. FCB0B DS 1D SPACE COMMAND @V386298 01024000
  1042. FCB07 DS 1D DIAG GATE COMMAND @V386298 01025000
  1043. FCB06 DS 1D READ FCB REGISTER ADDRESS @V386298 01026000
  1044. FCB04 DS 1D DUMMY SENSE CCW @V386298 01027000
  1045. FCBADD DS 1X SPACE FOR FCB ADDRESS DATA @V386298 01028000
  1046. SPACE 4 01029000
  1047. EJECT 01030000
  1048. UCSHDR DSECT @V386298 01031000
  1049. SPACE 01032000
  1050. *** UCSHDR - UCS/FCB HEADER BLOCK 01033000
  1051. * 01034000
  1052. * +-------------------+---------+---------+ 01035000
  1053. * | HDRNAME | HDRNEXT | BUFLEN | 01036000
  1054. * +---------+---------+---------+---------+ 01037000
  1055. * | CCWDISP | CCWLEN | 01038000
  1056. * +---------+---------+ 01039000
  1057. * 01040000
  1058. *** UCSHDR - UCS/FCB HEADER BLOCK 01041000
  1059. * 01042000
  1060. * USE BY DMKCSBLD 01043000
  1061. SPACE 01044000
  1062. HDRNAME DS 1F NAME I.D. OF LOAD BUFFER UCS@V386298 01045000
  1063. HDRNEXT DS 1H DISPLACEMENT TO NEXT HEADER @V386298 01046000
  1064. BUFLEN DS 1H LENGTH OF THE LOAD BUFFER @V386298 01047000
  1065. CCWDISP DS 1H DISPLACEMENT TO VERIFY CCWS @V386298 01048000
  1066. CCWLEN DS 1H LENGTH OF THE VERIFY CCWS @V386298 01049000
  1067. ORG CCWLEN @V386298 01050000
  1068. FCBPNDEX DS 1X DEFAULT INDEX VALUE @V386298 01051000
  1069. FCBTNDEX DS 1X NEW INDEX VALUE @V386298 01052000
  1070. ORG 01053000
  1071. * 01054000
  1072. HDRSIZE EQU *-UCSHDR SIZE OF BLOCK IN BYTES @V386298 01055000
  1073. SPACE 4 01056000
  1074. END 01057000