Table of Contents

DMSCPF Source

References

Source Listing

DMSCPF.ASSEMBLE.txt
  1. CPF TITLE 'DMSCPF (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMSCPF (CP) 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. *| TO PASS A VIRTUAL CONSOLE FUNCTION TO CP370 FOR EXECUTION 00009000
  10. * 00010000
  11. * ATTRIBUTES - 00011000
  12. * 00012000
  13. *| NUCLEUS RESIDENT, SERIALLY REUSABLE, CALLED BY BALR OR SVC 00013000
  14. * 00014000
  15. * ENTRY POINTS - 00015000
  16. * 00016000
  17. *| DMSCPF - PASS A VIRTUAL CONSOLE FUNCTION TO CP370 00017000
  18. * 00018000
  19. * ENTRY CONDITIONS - 00019000
  20. * 00020000
  21. *| GPR 0 = LENGTH OF COMMAND LINE (IF IT IS AT CMNDLINE) 00021000
  22. *| GPR 1 = ADDRESS OF COMMAND LINE 00022000
  23. *| GPR 14 = RETURN ADDRESS 00023000
  24. *| GPR 15 = ADDRESS OF DMSCPF 00024000
  25. * 00025000
  26. * EXIT CONDITIONS - 00026000
  27. * 00027000
  28. *| NORMAL - CONDITION CODE = 0 00028000
  29. *| GPR 15 = 0 00029000
  30. * 00030000
  31. *| ERROR - CONDITION CODE = 2 00031000
  32. *| GPR 15 = ERROR CODE RETURNED FROM CONSOLE FUNCTION 00032000
  33. * 00033000
  34. * CALLS TO OTHER ROUTINES - 00034000
  35. * 00035000
  36. *| DMSCWT - TO WAIT FOR ALL CONSOLE I/O TO COMPLETE 00036000
  37. *| DMSBTP - TO CHECK FOR VALID CP COMMAND AND TO NOTIFY @VA12652 00036200
  38. *| BATCH OF LINK COMMAND FAILURE. @VA12652 00036400
  39. *| DMSINA - TO CHECK FOR SYNONYM OF CP COMMANDS. @VA12652 00036600
  40. * 00037000
  41. * EXTERNAL REFERENCES - 00038000
  42. * 00039000
  43. * NONE 00040000
  44. * 00041000
  45. * TABLES / WORKAREAS - 00042000
  46. * 00043000
  47. *| BALRSAVE - SAVE AREA FOR CALLER'S REGISTERS 0 - 15 00044000
  48. *| CMNDLINE - COMMAND LINE MOVED HERE BEFORE CALLING CP 00045000
  49. *| BATFLAGS - NOTIFY BATCH DMSCPF IS CALLING @VA12652 00045300
  50. *| BATFLAG3 - NOTIFY BATCH OF FAILED LINK COMMAND @VA12652 00045600
  51. * 00046000
  52. * REGISTER USAGE - 00047000
  53. * 00048000
  54. *| GPR 0 = WORK REGISTER 00049000
  55. *| GPR 1 = WORK REGISTER 00050000
  56. *| GPR 2 = ADDRESS OF COMMAND LINE 00051000
  57. *| GPR 3 = LENGTH OF COMMAND LINE 00052000
  58. *| GPR 4 = CONSTANT 1 00053000
  59. *| GPR 5 = END OF COMMAND LINE 00054000
  60. *| GPR 6 = SCRATCH 00055000
  61. *| GPR 7 = CURRENT ARGUMENT SIZE 00056000
  62. *| GPR 8 = CONSTANT 8 00057000
  63. *| GPR 9 = ADDR OF COMMAND LIST 00058000
  64. *| GPR 10 = INDICATES ORIGIN OF COMMAND 00059000
  65. *| GPR 11 = TEMP STORAGE FOR BALRSAVE REGS @VA12652 00060000
  66. *| GPR 12 = BASE REGISTER 00061000
  67. *| GPR 13 = NOT USED 00062000
  68. *| GPR 14 = RETURN ADDRESS 00063000
  69. *| GPR 15 = RETURN CODE 00064000
  70. * 00065000
  71. * NOTES - 00066000
  72. * 00067000
  73. * NONE 00068000
  74. * 00069000
  75. * OPERATION - 00070000
  76. * 00071000
  77. *| IF IT IS NOT ALREADY THERE, DMSCPF MOVES THE COMMAND LINE TO 00072000
  78. *| 'CMNDLINE' COMPRESSING OUT ANY EXCESS BLANKS. IT THEN CALLS 00073000
  79. *| DMSCWT TO WAIT FOR ALL CONSOLE I/O TO COMPLETE SO THAT ANY 00074000
  80. *| OUTPUT FROM THE CP FUNCTION WILL BE SYNCHRONIZED WITH ANY 00075000
  81. *| PREVIOUS OUTPUT LINES FROM CMS. IT THEN ISSUES A DIAGNOSE 00076000
  82. *| INSTRUCTION WITH A CODE OF 8 TO PASS THE CONSOLE FUNCTION TO 00077000
  83. *| CP TO EXECUTE. UPON RETURN FROM CP, DMSCPF EXITS WITH THE 00078000
  84. *| RETURN CODE IN REGISTER 15. 00079000
  85. * HRC350DS 00079020
  86. *| If the first argument is FIFO or LIFO, the output HRC350DS 00079040
  87. *| from the CP command is placed in the console stack. HRC350DS 00079060
  88. *| If the first argument is DISCARD, the output from the HRC350DS 00079080
  89. *| CP command is discarded. In either of these cases if HRC350DS 00079100
  90. *| the CP command issues a prompt (for a password), that HRC350DS 00079120
  91. *| prompt is not stacked or discarded. HRC350DS 00079140
  92. * 00080000
  93. *. 00081000
  94. EJECT 00082000
  95. DMSCPF START 0 EXECUTE A CP CONSOLE FUNCTION 00083000
  96. USING NUCON,R0 00084000
  97. STM R0,R15,BALRSAVE SAVE THE CALLER'S REGISTERS 00085000
  98. LR R12,R15 LOAD THE PROGRAM BASE REGISTER 00086000
  99. USING DMSCPF,R12 00087000
  100. LR R10,R12 INITIALIZE R10 NON-ZERO @V60BBBB 00087100
  101. SR R11,R11 INITIALIZE R11 @VA12652 00087150
  102. TM BATFLAGS,BATRUN IS THIS COMMAND FROM BATCH? @V60BBBB 00087200
  103. BZ NOTBATA BR IF NOT @V60BBBB 00087300
  104. SLR R10,R10 SET FOR NO PASSWORD-SUPPRESSION @V60BBBB 00087400
  105. NOTBATA DS 0H @V60BBBB 00087500
  106. LA R1,0(,R1) MAKE SURE THE HIGH ORDER BYTE IS ZERO 00088000
  107. LA R2,CMNDLINE POINT TO THE COMMAND INPUT LINE 00089000
  108. CLR R1,R2 IS THE LINE ALREADY AT 'CMNDLINE' ? 00090000
  109. BE CHECKLEN YES, PASS IT TO CP WITHOUT EDITING 00091000
  110. SLR R10,R10 INDICATE FROM EXEC OR MODULE @V60BBBB 00091050
  111. TM BATFLAGS,BATRUN+BATLOAD V0742 00091100
  112. BC 11,NOTBAT DROP IF BATCH NOT RUNNING V0742 00091150
  113. TM BATFLAGS,BATUSEX V0742 00091200
  114. BZ NOTBAT DROP IF NOT BATCH USER JOB V0742 00091250
  115. OI BATFLAGS,BATCPEX SIGNAL FOR BATCH ENTRY V0742 00091300
  116. LR R3,R10 SAVE R10 ACROSS BATCH CALL @V60BBBB 00091320
  117. L R15,ABATPROC V0742 00091350
  118. BALR R14,R15 GO TO BATCH... V0742 00091400
  119. LR R10,R3 RESTORE R10 @V60BBBB 00091420
  120. LTR R3,R15 TEST BATCH RET CODE V0742 00091450
  121. BNZ CPRETURN NOT ALLOWED BY BATCH V0742 00091500
  122. SPACE 00091550
  123. NOTBAT EQU * PROCESS THE CP COMMAND V0742 00091600
  124. LA R3,CMNDLINE POINT TO THE COMMAND LINE BUFFER 00092000
  125. LA R4,1 LOAD THE POINTER INCREMENT 00093000
  126. LA R5,131(,R3) LOAD MAXIMUM BUFFER ENDING ADDRESS 00094000
  127. SR R6,R6 CLEAR THE WORK REGISTER 00095000
  128. SR R7,R7 SET ARGUMENT SIZE TO ZERO 00096000
  129. LA R8,8 LOAD THE MAXIMUM ARGUMENT SIZE 00097000
  130. B CHECKXFF MOVE THE COMMAND LINE TO 'CMNDLINE' 00098000
  131. SPACE 00099000
  132. FINDARGS AR R1,R4 POINT TO NEXT CHARACTER IN INPUT LINE 00100000
  133. CLC 0(4,R1),=X'FFFFFFFF' IS IT THE INPUT LINE END? @VA09492 00101000
  134. BE COMPTLEN YES, COMPUTE LINE LENGTH AND CONTINUE 00102000
  135. CLI 0(R1),C' ' IS THIS THE START OF AN ARGUMENT ? 00103000
  136. BE FINDARGS NO, LOOK AT THE NEXT CHARACTER 00104000
  137. B MOVEBLNK YES, MOVE A BLANK TO THE COMMAND BUFFER 00105000
  138. SPACE 00106000
  139. CHECKBSC CLI 0(R1),BS IS THIS CHARACTER A BACKSPACE ? 00107000
  140. BNE MOVEBLNK NO, CONTINUE NORMALLY 00108000
  141. AR R1,R4 POINT TO NEXT CHARACTER IN INPUT LINE 00109000
  142. LA R7,1 SET ARGUMENT LENGTH TO 1 00110000
  143. B FINDARGE CONTINUE WITHOUT INSERTING A DELIMITER 00111000
  144. SPACE 00112000
  145. MOVEBLNK MVI 0(R3),C' ' MOVE IN A BLANK DELIMITER 00113000
  146. BXH R3,R4,COMPTLEN POINT TO NEXT CHARACTER IN THE BUFFER 00114000
  147. SR R7,R7 RESET ARGUMENT LENGTH TO ZERO 00115000
  148. FINDARGE CLI 0(R1),C' ' IS THIS THE END OF THE ARGUMENT ? 00116000
  149. BE FINDARGS YES, FIND THE START OF THE NEXT ONE 00117000
  150. CR R7,R8 IS THIS ARGUMENT THE MAXIMUM LENGTH ? 00118000
  151. BE CHECKBSC YES, ADD A DELIMITER TO THE BUFFER 00119000
  152. AR R7,R4 ADD ONE TO THE ARGUMENT LENGTH 00120000
  153. IC R6,0(,R1) MOVE THE CHARACTER TO COMMAND BUFFER 00121000
  154. STC R6,0(,R3) ... 00122000
  155. BXH R3,R4,COMPTLEN POINT TO NEXT CHARACTER IN THE BUFFER 00123000
  156. AR R1,R4 POINT TO NEXT CHARACTER IN INPUT LINE 00124000
  157. CHECKXFF CLC 0(4,R1),=X'FFFFFFFF' END OF INPUT LINE? @VA09492 00125000
  158. BNE FINDARGE NO, CONTINUE SCANNING THE LINE 00126000
  159. COMPTLEN LR R0,R3 SAVE POINTER TO LAST CHARACTER 00127000
  160. SR R0,R2 COMPUTE THE LENGTH OF THE CP COMMAND 00128000
  161. CHECKLEN LTR R3,R0 CHECK FOR A VALID LENGTH 00129000
  162. BNP CPRETURN RETURN IF LENGTH IS INVALID 00130000
  163. FINDCHAR CLI 0(R2),C' ' IS THIS CHARACTER A BLANK ? 00131000
  164. BNE CHKIMPCP NO, CHECK FOR IMPLIED CP FUNCTION 00132000
  165. LA R2,1(,R2) POINT TO THE NEXT CHARACTER 00133000
  166. BCT R3,FINDCHAR DECREMENT LENGTH AND CONTINUE 00134000
  167. B CPRETURN RETURN IF NO FUNCTION SPECIFIED 00135000
  168. SPACE 00136000
  169. CHKIMPCP IC R6,=C' ' MOVE A BLANK TO END OF COMMAND LINE 00137000
  170. STC R6,0(R2,R3) ... 00138000
  171. CLC 0(3,R2),=C'CP ' IS 'CP' THE FIRST ARGUMENT ? 00139000
  172. BE FOUNDCP YES,GO TO IT @VA06272 00140050
  173. LA R0,72 GET STORAGE TO PROTECT USER'S REGS @VA12652 00140057
  174. SRL R0,3 CHANGE TO DOUBLE WORDS @VA12652 00140064
  175. DMSFREE DWORDS=(0),TYPCALL=BALR @VA12652 00140071
  176. LR R11,R1 SAVE GOTTEN AREA ADDRESS @VA12652 00140078
  177. ST R0,0(,R11) SAVE DOUBLE WORD SIZE @VA12652 00140085
  178. MVC 4(64,R11),BALRSAVE PROTECT CALLER'S REGS @VA12652 00140092
  179. LA R9,CMNDLIST POINT TO COMMAND LIST @VA06272 00140100
  180. LM R0,R1,0(R9) GET THE NAME... @VA06272 00140150
  181. L R15,=V(ABBREV) TO CHECK FOR SYNONYM... @VA06272 00140200
  182. BALR R14,R15 FOR 'CP' @VA06272 00140250
  183. LTR R15,R15 SYNONYM FOUND? @VA06272 00140300
  184. BNZ PASSTOCP NO @VA06272 00140350
  185. ICM R1,B'1110',=C'CP ' SHOULD BE 'CP' @VA06272 00140400
  186. CLR R0,R1 IF NOT.... @VA06272 00140450
  187. BNE PASSTOCP PASS TO CP ANYWAY @VA06272 00140500
  188. LR R1,R2 POINT TO COMMAND LINE @VA06272 00140550
  189. CKFORBLK EQU * @VA06272 00140600
  190. MVI 0(R1),C' ' BLANK OUT SYNONYM.... @VA06272 00140650
  191. LA R1,1(,R1) SO THAT.... @VA06272 00140700
  192. CLI 0(R1),C' ' DIAGNOSE IS OK @VA06272 00140750
  193. BE FINDFUNC GO TO ISSUE DIAGNOSE @VA06272 00140800
  194. B CKFORBLK LOOK FOR BLANKS @VA06272 00140850
  195. FOUNDCP EQU * @VA06272 00140900
  196. LA R2,2(,R2) POINT BEYOND THE 'CP' 00141000
  197. S R3,=F'2' AND SUBTRACT 2 FROM THE LENGTH 00142000
  198. BNP PASSTOCP BRANCH IF NO FUNCTION SPECIFIED 00143000
  199. FINDFUNC CLI 0(R2),C' ' IS THIS THE START OF THE NEXT ARGUMENT ? 00144000
  200. BNE PASSTOCP YES, PASS THE COMMAND TO CP 00145000
  201. LA R2,1(,R2) POINT TO THE NEXT CHARACTER 00146000
  202. BCT R3,FINDFUNC SUBTRACT 1 FROM THE LENGTH AND CONTINUE 00147000
  203. PASSTOCP LA R1,=CL8'CONWAIT' POINT TO DMSCWT PLIST 00148000
  204. SVC 202 WAIT FOR ALL CONSOLE I/O TO COMPLETE 00149000
  205. LTR R10,R10 COMMAND FROM MODULE/EXEC? @V60BBBB 00149200
  206. BZ MODOREX BR IF YES @V60BBBB 00149400
  207. O R3,=X'80000000' REQUEST PASSWORD SUPPRESSION @V60BBBB 00149600
  208. MODOREX DS 0H @V60BBBB 00149800
  209. * Now check the first word of the command line. Is it FIFO, HRC350DS 00149802
  210. * LIFO, or DISCARD? HRC350DS 00149804
  211. CLC 0(5,R2),FIFO is it 'FIFO' HRC350DS 00149806
  212. BNE CKLIFO nope HRC350DS 00149808
  213. LA R6,1 remember FIFO HRC350DS 00149810
  214. LA R2,5(R2) skip past 'FIFO ' HRC350DS 00149812
  215. S R3,FIVE decrement CP command length HRC350DS 00149814
  216. B SPECIAL HRC350DS 00149816
  217. CKLIFO DS 0H HRC350DS 00149818
  218. CLC 0(5,R2),LIFO is it 'LIFO' HRC350DS 00149820
  219. BNE CKDISC nope HRC350DS 00149822
  220. LA R6,2 remember LIFO HRC350DS 00149824
  221. LA R2,5(R2) skip past 'LIFO ' HRC350DS 00149826
  222. S R3,FIVE decrement CP command length HRC350DS 00149828
  223. B SPECIAL HRC350DS 00149830
  224. CKDISC DS 0H HRC350DS 00149832
  225. CLC 0(8,R2),DISCARD is it 'DISCARD' HRC350DS 00149834
  226. BNE NORMAL nope HRC350DS 00149836
  227. SR R6,R6 remember DISCARD HRC350DS 00149838
  228. LA R2,8(R2) skip past 'DISCARD ' HRC350DS 00149840
  229. S R3,EIGHT decrement CP command length HRC350DS 00149842
  230. * We will issue the DIAGNOSE instruction with output directed HRC350DS 00149844
  231. * to a buffer so we can stack it or discard it. HRC350DS 00149846
  232. SPECIAL DS 0H HRC350DS 00149848
  233. LTR R3,R3 anything left in the buffer? HRC350DS 00149850
  234. BZ WRAPUP HRC350DS 00149852
  235. L R0,BUFSIZE buffer for CP output (in DWORDs) HRC350DS 00149854
  236. DMSFREE DWORDS=(0),TYPCALL=BALR HRC350DS 00149856
  237. LR R4,R3 move CP command length to R4 HRC350DS 00149858
  238. LR R3,R1 address of buffer for CP output HRC350DS 00149860
  239. LR R9,R1 and save it HRC350DS 00149862
  240. LR R7,R1 and again HRC350DS 00149864
  241. L R5,EIGHTK length of output buffer HRC350DS 00149866
  242. * At last we issue the CP command. HRC350DS 00149868
  243. * R2 = command, R3 = buffer, R4 = command len, R5 = buffer len HRC350DS 00149870
  244. ICM R4,8,=X'40' request CP output to our buffer HRC350DS 00149872
  245. DIAG R2,R4,8 issue the CP command HRC350DS 00149874
  246. LTR R8,R4 save return code from CP command HRC350DS 00149876
  247. BNZ THATSALL if error, don't stack result HRC350DS 00149878
  248. LTR R6,R6 are we stacking the result? HRC350DS 00149880
  249. BZ THATSALL no, so we are done HRC350DS 00149882
  250. * Prepare the ATTN plist that will stack the CP command output HRC350DS 00149884
  251. A R9,EIGHTK R9 = space for ATTN plist HRC350DS 00149886
  252. USING ATTNPL,R9 HRC350DS 00149888
  253. MVC ATTNPL(8),ATTN move in 'ATTN ' HRC350DS 00149890
  254. BCT R6,SPECIAL1 HRC350DS 00149892
  255. MVC ATTNHOW(4),FIFO stacking FIFO HRC350DS 00149894
  256. B SPECIAL2 HRC350DS 00149896
  257. SPECIAL1 DS 0H HRC350DS 00149898
  258. MVC ATTNHOW(4),LIFO stacking LIFO HRC350DS 00149900
  259. SPECIAL2 DS 0H HRC350DS 00149902
  260. BCTR R3,0 prime the pump HRC350DS 00149904
  261. * Loop to place each output line from CP on the stack. HRC350DS 00149906
  262. CPNXTLIN DS 0H HRC350DS 00149908
  263. LA R3,1(R3) skip previous linend character HRC350DS 00149910
  264. LR R2,R3 start of this line HRC350DS 00149912
  265. * Loop to find the end of this line. HRC350DS 00149914
  266. CPNXTCHR DS 0H HRC350DS 00149916
  267. CLI 0(R3),X'15' are we at the end of this line? HRC350DS 00149918
  268. BE CPSTACK1 yes, go stack it HRC350DS 00149920
  269. LA R3,1(R3) no, on to next character HRC350DS 00149922
  270. BCT R5,CPNXTCHR continue loop until buffer end HRC350DS 00149924
  271. * We have a line, now stack it. HRC350DS 00149926
  272. CPSTACK1 DS 0H HRC350DS 00149928
  273. LR R10,R3 save scan pointer HRC350DS 00149930
  274. SR R3,R2 length of this line of output HRC350DS 00149932
  275. BCTR R5,0 account for linend character HRC350DS 00149934
  276. ST R2,ATTNLEN address of line to stack HRC350DS 00149936
  277. STC R3,ATTNLEN put line length in ATTN plist HRC350DS 00149938
  278. LR R1,R9 HRC350DS 00149940
  279. SVC 202 stack the line HRC350DS 00149942
  280. DC AL4(THATSALL) go here if an error HRC350DS 00149944
  281. LR R3,R10 restore scan pointer HRC350DS 00149946
  282. LTR R5,R5 more lines to process? HRC350DS 00149948
  283. BP CPNXTLIN yes, go scan and stack them HRC350DS 00149950
  284. DROP R9 HRC350DS 00149952
  285. * Our work here is done. HRC350DS 00149954
  286. THATSALL DS 0H HRC350DS 00149956
  287. L R0,BUFSIZE buffer size HRC350DS 00149958
  288. LR R1,R7 get address of buffer to free HRC350DS 00149960
  289. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR HRC350DS 00149962
  290. LR R3,R8 CP return code into R3 HRC350DS 00149964
  291. B WRAPUP HRC350DS 00149966
  292. NORMAL DS 0H HRC350DS 00149968
  293. DC X'83230008' PASS COMMAND LINE TO CP TO EXECUTE 00150000
  294. WRAPUP DS 0H HRC350DS 00150020
  295. LA R3,0(R3) CLEAR HIGH ORDER BYTE @VA10582 00150100
  296. TM BATFLAGS,BATRUN IS BATCH ACTIVE? @VA12384 00150180
  297. BNO CPRETURN NO - OK PLAIN RETURN @VA12384 00150260
  298. LTR R15,R3 GOOD RETURN FROM CP? @VA12384 00150340
  299. BZ CPRETURN OK - DON'T BOTHER BATCH. @VA12384 00150420
  300. CLC 0(4,R2),=CL4'LINK' WAS IT LINK CMD? @VA12384 00150500
  301. BNE CPRETURN NOT CP CMD BATCH INTERESTED IN. @VA12384 00150580
  302. LA R9,101 SET LOWER LIMIT TEST @VA14158 00150588
  303. CR R3,R9 IS THE RET CODE 101 -103? @VA14158 00150596
  304. BL MODOR1 NO - VALID ERROR @VA14158 00150604
  305. LA R9,103 SET UPPER LIMIT @VA14158 00150612
  306. CR R3,R9 IS THE RET CODE 101 -103? @VA14158 00150620
  307. BH MODOR1 NO - VALID ERROR @VA14158 00150628
  308. B CPRETURN OK - DO NOT NOTIFY BATCH @VA14158 00150636
  309. MODOR1 EQU * @VA14158 00150644
  310. OI BATFLAG3,BATCPFNG TELL BATCH OF LINK ERROR @VA12384 00150660
  311. OI BATFLAGS,BATCPEX TELL BATCH CPF CALLING @VA12384 00150740
  312. L R15,ABATPROC GET BATCH ADDRESS @VA12384 00150820
  313. BALR R14,R15 GO TO BATCH. @VA12384 00150900
  314. CPRETURN EQU * @VA12652 00151000
  315. LTR R1,R11 TEST AND SET GOTTEN AREA @VA12652 00151100
  316. BZ CPRET2 NO AREA GOTTEN - DON'T FREE @VA12652 00151200
  317. L R0,0(,R1) GET DWORD SIZE @VA12652 00151300
  318. MVC BALRSAVE(64),4(R1) RESTORE CALLERS REGS @VA12652 00151400
  319. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @VA12652 00151500
  320. CPRET2 EQU * @VA12652 00151600
  321. LTR R15,R3 LOAD RETURN CODE AND SET CONDITIO@VA12652 00151700
  322. LM R0,R14,BALRSAVE RESTORE THE CALLER'S REGISTERS 00152000
  323. BR R14 RETURN TO THE CALLER 00153000
  324. SPACE 3 00154000
  325. BS EQU X'16' 00155000
  326. EIGHTK DC A(8192) size of buffer for CP output HRC350DS 00155020
  327. BUFSIZE DC A(1026) size of buffer in doublewords HRC350DS 00155040
  328. FIVE DC A(5) HRC350DS 00155060
  329. EIGHT DC A(8) HRC350DS 00155080
  330. FIFO DC C'FIFO ' HRC350DS 00155100
  331. LIFO DC C'LIFO ' HRC350DS 00155120
  332. DISCARD DC C'DISCARD ' HRC350DS 00155140
  333. ATTN DC C'ATTN ' HRC350DS 00155160
  334. SPACE 00156000
  335. LTORG 00157000
  336. EJECT 00158000
  337. NUCON 00159000
  338. REGEQU 00160000
  339. SPACE 1 HRC350DS 00160020
  340. ATTNPL DSECT ATTN parameter list HRC350DS 00160040
  341. DS CL8 'ATTN' HRC350DS 00160060
  342. ATTNHOW DS CL4 'FIFO' or 'LIFO' HRC350DS 00160080
  343. ATTNLEN DS AL1 length of line to be stacked HRC350DS 00160100
  344. ATTNADD DS AL3 address of line to be stacked HRC350DS 00160120
  345. END 00161000