Table of Contents

DMTCMX Source

References

Source Listing

DMTCMX.ASSEMBLE.txt
  1. CMX TITLE 'DMTCMX (RSCS) VM/370 - RELEASE 6' 00001000
  2. MACRO 00002000
  3. &LABEL CDEF &CVERB,&CVMIN,&CCOD,&CCLA,&CPROC 00003000
  4. LCLC &PROCAD 00004000
  5. &PROCAD SETC '&CVERB' 00005000
  6. AIF (T'&CPROC EQ 'O').PROCOK 00006000
  7. &PROCAD SETC '&CPROC' 00007000
  8. .PROCOK ANOP 00008000
  9. &LABEL DC 0F'0',CL8'&CVERB' 00009000
  10. DC AL2(&CVMIN-1),XL1'&CCOD',XL1'&CCLA' 00010000
  11. DC A(&PROCAD) 00011000
  12. SPACE 00012000
  13. MEND 00013000
  14. EJECT 00014000
  15. *. 00015000
  16. * MODULE NAME - 00016000
  17. * 00017000
  18. * DMTCMX 00018000
  19. * 00019000
  20. * FUNCTION - 00020000
  21. * 00021000
  22. * THIS MODULE IS INCLUDED AS PART OF THE REX SYSTEM CONTROL 00022000
  23. * TASK. DMTCMX IS CALLED IS SEVERAL PLACES IN DMTREX, THE 00023000
  24. * MAIN REX CONTROL ROUTINE. DMTCMX ACCEPTS AN EBCDIC 00024000
  25. * STRING, AND EXECUTES THE RSCS COMMAND THAT IS REPRESENTED 00025000
  26. * BY THE STRING. 00026000
  27. * 00027000
  28. * ATTRIBUTES - 00028000
  29. * 00029000
  30. * REUSABLE 00030000
  31. * 00031000
  32. * ENTRY POINTS - 00032000
  33. * 00033000
  34. * DMTCMX - EXECUTE AN RSCS COMMAND 00034000
  35. * 00035000
  36. * ENTRY CONDITIONS - 00036000
  37. * 00037000
  38. * DMTCMX MAY BE CALLED FROM ROUTINES WTHIN THE REX TASK 00038000
  39. * 00039000
  40. * REG.0 = 0 IF COMMAND ORIGINATED FROM THE LOCAL OPERATOR, 00040000
  41. * OTHERWISE TASK NAME OF COMMAND ORIGINATOR 00041000
  42. * REG.1 = ADDR OF COMMAND EXECUTION REQUEST BUFFER 00042000
  43. * REG.14 = RETURN ADDRESS 00043000
  44. * REG.15 = ENTRY ADDRESS 00044000
  45. * 00045000
  46. * EXIT CONDITIONS - 00046000
  47. * 00047000
  48. * NORMAL - 00048000
  49. * 00049000
  50. * REG.15 = NUMBER OF LAST RESPONSE MSG ISSUED (BINARY) 00050000
  51. * 00051000
  52. * ERROR - 00052000
  53. * 00053000
  54. * REG.15 = NUMBER OF LAST RESPONSE MSG ISSUED (BINARY) 00054000
  55. EJECT 00055000
  56. * 00056000
  57. * CALLS TO OTHER ROUTINES - 00057000
  58. * 00058000
  59. * DMTMGX - TO ISSUE RESPONSE MESSAGES 00059000
  60. * DMTCRE - TO CREATE LINE DRIVER TASKS 00060000
  61. * 00061000
  62. * EXTERNAL REFERENCES - 00062000
  63. * 00063000
  64. * DMTCREDA - RSCS SYSTEM DISK I/O TABLE 00064000
  65. * DMTREXID - DISCONN MSG USER ID FOR RSCS MSGS 00065000
  66. * DMTREXCN - RECS CONSOLE I/O TABLE 00066000
  67. * 00067000
  68. * TABLES / WORKAREAS - 00068000
  69. * 00069000
  70. * DMTVEC - COMMON SUPERVISOR AREA 00070000
  71. * DMTSYS - RSCS SYSTEM CONTROL COMMON AREA 00071000
  72. * LINK TABLES 00072000
  73. * FILE TAGS 00073000
  74. * 00074000
  75. * SEE INDIVIDUAL ROUTINES 00075000
  76. * 00076000
  77. * 00077000
  78. * REGISTER USAGE - 00078000
  79. * 00079000
  80. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00080000
  81. * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00081000
  82. * COMMAND DESCRIPTION 00082000
  83. * 00083000
  84. * GPR0 = 0 IF LOCAL ORIGIN, ELSE ORIGIN TASK NAME 00084000
  85. * GPR1 = COMMAND REQUEST BUFFER ADDR 00085000
  86. * GPR2 = LINK TABLE ENTRY POINTER 00086000
  87. * GPR3 = FILE TAG POINTER 00087000
  88. * GPR4 = SCRATCH 00088000
  89. * GPR5 = SCRATCH 00089000
  90. * GPR6 = SCRATCH (GENERALLY, EBCDIC STRING TARGET POINTER) 00090000
  91. * GPR7 = SCRATCH 00091000
  92. * GPR8 = SCRATCH 00092000
  93. * GPR9 = SCRATCH 00093000
  94. * GPR10 = THIRD BASE REG 00094000
  95. * GPR11 = SECOND BASE REG 00095000
  96. * GPR12 = FIRST BASE REG 00096000
  97. * GPR13 = SCRATCH (ALMOST UNUSED) 00097000
  98. * GPR14 = RETURN ADDRESS 00098000
  99. * GPR15 = ENTRY ADDRESS 00099000
  100. * 00100000
  101. * NOTES - 00101000
  102. * 00102000
  103. * COMMAND RESPONSE MESSAGES ARE TREATED AS NORMAL RSCS 00103000
  104. * MESSAGES, AND ARE HANDLED THROUGH DMTMGX. THE DEFAULT 00104000
  105. * MESSAGE SEVERITY AND ROUTING (AS DEFINED IN DMTMSG) ARE 00105000
  106. * USED EXCEPT IN THE CASE OF DMTCMX170I (RESPONSE TO THE 00106000
  107. * MSG COMMAND), IN WHICH THE MESSAGE ROUTING VARIES 00107000
  108. * DEPENDING ON THE SEMANTIC CONTEXT. 00108000
  109. * 00109000
  110. * OPERATION - 00110000
  111. * 00111000
  112. * THE BASE REGISTERS ARE ESTABLISHED, THE COMMAND ORIGIN 00112000
  113. * LINK TABLE ENTRY IS LOCATED, THE BASE COMMAND ELEMENT TABLE 00113000
  114. * AND MESSAGE REQUEST BUFFER ARE INITIALIZED, DMTCMX003 00114000
  115. * MESSAGE IS ISSUED FOR REMOTE ORIGIN COMMANDS, AND THE 00115000
  116. * COMMAND VERB IS DECODED. IF THE COMMAND VERB IS UNDE- 00116000
  117. * FINED, DMTCMX201E IS ISSUED; OTHERWISE THE INDIVIDUAL 00117000
  118. * COMMAND PROCESSOR IS CALLED, WITH GREGS 3,4,&5 (ENTRY 00118000
  119. * REGS TO PARMGET) SET TO SPECIFY THECOMMAND LINE TO 00119000
  120. * THE RIGHT OF THE COMMAND VERB. ON RETURN, THE FREE 00120000
  121. * PAGES IN VIRTUAL STORAGE ARE COUNTED, AND IF THE 00121000
  122. * NUMBER HAS DECREASED SUFFICIENTLY FROM THE PREVIOUS 00122000
  123. * COMPUTATION, MESSAGE DMTCMX001I IS ISSUED. THE CALLING 00123000
  124. * REGISTERS ARE RESTORED, AND RETURN IS MADE TO THE ADDRESS 00124000
  125. * CONTAINED IN GREG 14 ON ENTRY. 00125000
  126. * 00126000
  127. *. 00127000
  128. EJECT 00128000
  129. DMTCMX CSECT 00129000
  130. SPACE 2 00130000
  131. * MESSAGE ROUTING CODE EQUATES 00131000
  132. SPACE 00132000
  133. RSS EQU X'80' RSS OPERATOR CONSOLE 00133000
  134. ORIG EQU X'40' 'ORIGINATING' LINK ID 00134000
  135. VMID EQU X'20' VIRTUAL MACHINE USER ID 00135000
  136. CP EQU X'10' LOCAL CP OPERATOR 00136000
  137. SPACE 00137000
  138. USING DMTCMX,R15 GET TEMPORARY ADDRESSABILITY 00138000
  139. STM R0,R15,CMXSAVE SAVE REGISTERS 00139000
  140. LA R12,0(R15) SET FIRST BASE REG 00140000
  141. DROP R15 00141000
  142. USING DMTCMX,R12 DEFINE ITS ADDRESSABILITY 00142000
  143. LA R15,2048 HALF AN ADDRESSING RANGE 00143000
  144. LA R11,2048(R15,R12) SET SECOND BASE REG 00144000
  145. USING DMTCMX+4096,R11 DEFINE ITS ADDRESSABILITY 00145000
  146. LA R10,2048(R15,R11) SET THIRD BASE REG 00146000
  147. USING DMTCMX+8192,R10 DEFINE ITS ADDRESSABILITY 00147000
  148. SPACE 00148000
  149. USING SVECTORS,0 SET SVECTORS ADDRESSABILITY 00149000
  150. USING LINKTABL,R2 SET LINKTABL ADDRESSABILITY 00150000
  151. USING TAG,R3 SET FILE TAG ADDRESSABILITY 00151000
  152. USING COMDSECT,R15 SET COMMON ROUTINE VECTOR TABLE 00152000
  153. * LOCATE COMMAND ORIGIN LINK TABLE 00153000
  154. SR R15,R15 CLEAR RETURN REGISTER 00154000
  155. L R6,TLINKS GET START OF LINK TABLE CHAIN 00155000
  156. LA R2,8(R6) AND THE START OF LINK TABLE ENTRIES 00156000
  157. LTR R0,R0 DID COMMAND ORIGINATE FROM CONSOLE? 00157000
  158. BZ CMXLGOT YES 00158000
  159. L R6,0(R6) GET THE NUMBER OF LINK TABLE ENTRIES 00159000
  160. CMXLSCAN EQU * 00160000
  161. TM LFLAG,LACTIVE IS THE LINK ACTIVE? 00161000
  162. BNO CMXINACT NO 00162000
  163. CL R0,LACTTNME IS THIS THE ONE? 00163000
  164. BE CMXLGOT YES 00164000
  165. CMXINACT EQU * 00165000
  166. LA R2,LINKLEN(R2) GET THE NEXT TABLE ENTRY 00166000
  167. BCT R6,CMXLSCAN AND CONTINUE 00167000
  168. B CMXPUNT NO LINK FOUND FOR COMMAND ORIGIN 00168000
  169. SPACE 1 00169000
  170. CMXLGOT EQU * 00170000
  171. * 00171000
  172. * INITIALIZE COMMAND ELEMENT 00172000
  173. * 00173000
  174. LA R3,CMXELVAR-CMXELMNT HDR LENGTH 00174000
  175. STC R3,CMXELLEN STORE LENGTH 00175000
  176. MVI CMXELRET,X'00' CLEAR RETURN RESPONSE 00176000
  177. MVI CMXELMOD,X'00' AND MODIFIERS 00177000
  178. MVC CMXELORG(8),LINKID ORIGIN LINK ID 00178000
  179. MVI CMXELVAR,X'00' CLEAR VARIABLE FIELDS 00179000
  180. MVC CMXELVAR+1(L'CMXELVAR-1),CMXELVAR CLEAR 00180000
  181. * 00181000
  182. * INITIALIZE MESSAGE REQUEST 00182000
  183. * 00183000
  184. MVI CMXMSGAC,C' ' CLEAR ACTION CODE 00184000
  185. MVI CMXMSGRC,X'00' CLEAR ROUTING CODE 00185000
  186. MVI CMXMSGSC,X'00' CLEAR SEVERITY CODE 00186000
  187. MVC CMXMSGLK(8),LINKID RESPONSE TO ORIG 00187000
  188. MVC CMXMSGVM(8),=CL8'*' DEFAULT VM USER ID 00188000
  189. MVI CMXMSGV0,C' ' CLEAR FIRST BYTE 00189000
  190. MVC CMXMSGV0+1(CMXMSGVL-1),CMXMSGV0 ENTIRE AREA 00190000
  191. SPACE 00191000
  192. LA R3,4(R1) COMMAND LINE ADDRESS 00192000
  193. SR R5,R5 CLEAR R5 FOR INSERT 00193000
  194. IC R5,0(R1) GET LINE LENGTH 00194000
  195. LA R5,1(R5,R1) GET ADDR OF END OF COMMAND LINE 00195000
  196. BAL R14,PARMGET FRAME THE COMMAND 00196000
  197. SPACE 00197000
  198. LTR R0,R0 REMOTE ORIGIN? 00198000
  199. BZ CMXLOCAL NO - SKIP MSG 003 00199000
  200. CMXM003 EQU * 00200000
  201. MVC CMXMSGV0(8),LINKID SET CMD ORIGIN LINK ID 00201000
  202. MVI CMXMSG,28+8-1 INITIALIZE MSG LEN 00202000
  203. LR R8,R5 ADDR OF LINE END 00203000
  204. SR R8,R3 TOTAL LINE LEN 00204000
  205. BCTR R8,0 -1 FOR MVC 00205000
  206. BNP CMXM003B NULL COMMAND - NO MOVE 00206000
  207. LA R7,CMXMSGVL-8-1 MAX TEXT LEN FOR MSG 00207000
  208. CLR R8,R7 TOO BIG? 00208000
  209. BNH CMXM003A NO - USE AS IS 00209000
  210. LR R8,R7 TRUNCATE MSG TEXT AT MAX 00210000
  211. CMXM003A EQU * 00211000
  212. LA R6,CMXMSGV1 TEXT LINE TARGET 00212000
  213. EX R8,CMXMOVE MOVE COMMAND TEXT TO MSG 00213000
  214. LA R7,28+8(R8) TOTAL MSG ELEMENT LEN 00214000
  215. STC R7,CMXMSG SET LEN IN MSG ELEMENT 00215000
  216. CMXM003B EQU * 00216000
  217. LA R7,003 MESSAGE NUMBER 003 00217000
  218. STH R7,CMXMSGNM SET MSG NUM IN REQ ELEMENT 00218000
  219. LA R1,CMXMSG ADDR OF MSG REQ ELEMENT 00219000
  220. L R15,=V(DMTMGX) ENTRY TO MSG MANAGER 00220000
  221. BALR R14,R15 ISSUE THE MESSAGE 00221000
  222. MVI CMXMSGV0,C' ' CLEAR THE MSG VARIABLE AREA 00222000
  223. MVC CMXMSGV0+1(CMXMSGVL-1),CMXMSGV0 WHOLE THING 00223000
  224. CMXLOCAL EQU * 00224000
  225. CR R3,R5 ANYTHING FOUND? 00225000
  226. BNL CMXM200 NOTHING ON LINE 00226000
  227. SR R4,R3 NO CHARS 00227000
  228. CL R4,CMXLIMIT TOO LONG? 00228000
  229. BCTR R4,0 REDUCE BY ONE FOR LATER 00229000
  230. BH CMXM201 ERROR EXIT 00230000
  231. SPACE 1 00231000
  232. LM R7,R9,CMXSETUP SET UP FOR SCAN 00232000
  233. CMXSCAN EQU * 00233000
  234. EX R4,CMXTRY MATCH? 00234000
  235. BNE CMXMISS NO 00235000
  236. CH R4,8(R7) ENOUGH TYPED? 00236000
  237. BNL CMXHIT YEP - DO IT 00237000
  238. CMXMISS EQU * 00238000
  239. BXLE R7,R8,CMXSCAN TRY THE NEXT 00239000
  240. B CMXM201 NONE FOUND - ERROR 00240000
  241. SPACE 2 00241000
  242. CMXFINIS EQU * 00242000
  243. L R7,MAINMAP START OF STORAGE MAP 00243000
  244. L R8,MAINSIZE LENGTH OF STORAGE MAP 00244000
  245. SR R9,R9 INITIALIZE FREE COUNT 00245000
  246. CMXFINPA EQU * 00246000
  247. CLI 0(R7),X'00' IS PAGE FREE? 00247000
  248. BNE CMXFINXT NO - DON'T COUNT IT 00248000
  249. LA R9,1(R9) INCREMENT FREE PAGE COUNT 00249000
  250. CMXFINXT EQU * 00250000
  251. LA R7,1(R7) INCREMENT MAP ENTRY POINTER 00251000
  252. BCT R8,CMXFINPA LOOK THROUGH ENTIRE MAP 00252000
  253. * 00253000
  254. * REG.9 CONTAINS CURRENT FREE PAGE COUNT 00254000
  255. * 00255000
  256. L R8,CMXCOUNT OLD FREE PAGE COUNT 00256000
  257. S R8,CMXREDUC LESS MINIMUM DECREMENT 00257000
  258. CLR R9,R8 BIG ENOUGH DECREASE? 00258000
  259. BNH CMXM001 YES - ISSUE THE MESSAGE 00259000
  260. CL R9,CMXCOUNT DID WE GET SOME BACK? 00260000
  261. BNH CMXRCODE NO - EXIT QUIETLY 00261000
  262. CMXFRSET EQU * 00262000
  263. ST R9,CMXCOUNT SET NEW FREE PAGE COUNT 00263000
  264. CMXRCODE EQU * 00264000
  265. LH R15,CMXMSGNM RETURN THE LAST MSG NUMBER 00265000
  266. SPACE 00266000
  267. CMXEXIT EQU * 00267000
  268. LM R0,R14,CMXSAVE RESTORE REGS 00268000
  269. BR R14 AND RETURN 00269000
  270. SPACE 2 00270000
  271. CMXM001 EQU * 00271000
  272. LR R0,R9 FREE PAGES 00272000
  273. LA R1,2 MIN TRUNCATION COUNT 00273000
  274. MVC CMXMSGV0(8),CMXBLANK CLEAR FIRST VAR FIELD 00274000
  275. LA R6,CMXMSGV0 DECIMAL DIGIT TARGET 00275000
  276. BAL R14,DECPUT CONVERT AND STOW NUMBER 00276000
  277. LH R8,CMXMSGNM SAVE LAST MSG NUMBER 00277000
  278. LA R0,001 MESSAGE NUMBER 001 00278000
  279. STH R0,CMXMSGNM SET FREE STORAGE MSG NUM 00279000
  280. MVI CMXMSG,28+8-1 SET MSG ELEMENT LEN 00280000
  281. LA R1,CMXMSG ADDR OF MSG REQ ELEMENT 00281000
  282. L R15,=V(DMTMGX) MSG MANAGER ENTRY 00282000
  283. BALR R14,R15 ISSUE FREE STORAGE MSG 00283000
  284. STH R8,CMXMSGNM RESTORE LAST MSG NUM 00284000
  285. B CMXFRSET SET RETURN CODE AND EXIT 00285000
  286. SPACE 2 00286000
  287. CMXPUNT EQU * 00287000
  288. SR R15,R15 ZERO ... 00288000
  289. BCTR R15,0 SET RETURN CODE -1 00289000
  290. B CMXEXIT AND QUIT 00290000
  291. EJECT 00291000
  292. *. 00292000
  293. * ENTRY NAME - 00293000
  294. * 00294000
  295. * CMXHIT 00295000
  296. * 00296000
  297. * FUNCTION - 00297000
  298. * 00298000
  299. * CALL THE APPROPRIATE INDIVIDUAL COMMAND PROCESSING 00299000
  300. * ROUTINE 00300000
  301. * 00301000
  302. * RESPONSES - 00302000
  303. * 00303000
  304. * NONE 00304000
  305. * 00305000
  306. * ERROR MESSAGES - 00306000
  307. * 00307000
  308. * DMTCMX201E INVALID COMMAND 'COMMAND' 00308000
  309. *. 00309000
  310. CMXHIT EQU * 00310000
  311. LTR R0,R0 LOCAL COMMAND ORIGIN? 00311000
  312. BZ CMXNOTST YES - ALL COMMANDS PERMITTED 00312000
  313. TM 11(R7),X'40' O.K. FOR REMOTE LINK? 00313000
  314. BNO CMXM201 NO - ERR MSG 00314000
  315. CMXNOTST EQU * COMMAND ELEMENT VALID 00315000
  316. * 00316000
  317. * CALL FIRST LEVEL PROCESSOR 00317000
  318. * R0 STILL CONTAINS TASK NAME OF COMMAND 00318000
  319. * ORIGINATOR, OR ZERO IF LOCAL 00319000
  320. * 00320000
  321. MVC CMXELCOD(1),10(R7) SET COMND ELMNT CODE 00321000
  322. LA R3,1(R4,R3) UPDATE FOR NEXT PARM 00322000
  323. BAL R14,PARMGET FRAME NEXT PARM 00323000
  324. LA R1,CMXELMNT GET COMMAND ELEMENT ADDR 00324000
  325. L R15,12(R7) LOCAL PROCESSOR ADDR 00325000
  326. BR R15 DO IT 00326000
  327. EJECT 00327000
  328. *. 00328000
  329. * ENTRY NAME - 00329000
  330. * 00330000
  331. * CMXALERT 00331000
  332. * 00332000
  333. * FUNCTION - 00333000
  334. * 00334000
  335. * PASS A COMMAND ELEMENT TO ANOTHER TASK VIA THE ALERT 00335000
  336. * TASK TO TASK COMMUNICATIONS INTERFACE. 00336000
  337. * 00337000
  338. * RESPONSES - 00338000
  339. * 00339000
  340. * DMTCMX300I ACCEPTED BY TASK 'TASK' 00340000
  341. * DMTCMX751I LINK 'LINKID' ALREADY ACTIVE -- 00341000
  342. * NEW CLASS(ES) SET AS REQUESTED 00342000
  343. * 00343000
  344. * ERROR MESSAGES - 00344000
  345. * 00345000
  346. * DMTCMX301E REJECTED BY TASK 'TASK' -- 00346000
  347. * PREVIOUS COMMAND ACTIVE 00347000
  348. * DMTCMX304E REJECTED BY TASK 'TASK' -- NOT RECEIVING 00348000
  349. *. 00349000
  350. SPACE 00350000
  351. CMXALERT EQU * 00351000
  352. BCTR R0,0 DECREMENT COUNT FOR CMD ELEMENT 00352000
  353. STC R0,CMXELLEN SET ELEMENT LENGTH 00353000
  354. L R0,LACTTNME NAME OF TASK FOR ALERT 00354000
  355. CMXALRDY EQU * 00355000
  356. LA R1,CMXELMNT ADDR OF CMD ELEMENT 00356000
  357. L R15,ALERTREQ ENTRY TO ALERT 00357000
  358. BALR R14,R15 ALERT THE RECEIVER 00358000
  359. LTR R15,R15 DID IT WORK? 00359000
  360. BNZ CMXM304 NO ALERT EXIT 00360000
  361. CLI CMXELRET,X'00' ACCEPTED? 00361000
  362. BNE CMXM301 NO - BUFFERS BUSY 00362000
  363. CLI CMXELCOD,X'80' WAS IT A START? 00363000
  364. BNE CMXM300 NO - NORMAL MSG 00364000
  365. LTR R3,R3 WERE CLASSES SPECIFIED? 00365000
  366. BZ CMXM300 NO - NORMAL MSG 00366000
  367. B STAM751 SAY CLASSES RESET 00367000
  368. EJECT 00368000
  369. CMXNOLNK EQU * 00369000
  370. BC 13,CMXM202 CC=0,1,3 => INVALID LINK 00370000
  371. B CMXM302 CC=2 => UNDEFINED LINK 00371000
  372. SPACE 1 00372000
  373. CMXM200 EQU * 00373000
  374. LA R15,200 SET NUMBER 00374000
  375. B CMXMV0 AND CONTINUE 00375000
  376. SPACE 1 00376000
  377. CMXM201 EQU * 00377000
  378. LA R15,201 SET NUMBER 00378000
  379. B CMXMV1 AND CONTINUE 00379000
  380. SPACE 1 00380000
  381. CMXM202 EQU * 00381000
  382. LA R15,202 SET NUMBER 00382000
  383. B CMXMV1 AND CONTINUE 00383000
  384. SPACE 1 00384000
  385. CMXM203 EQU * 00385000
  386. LA R15,203 SET NUMBER 00386000
  387. B CMXMV1 AND CONTINUE 00387000
  388. SPACE 1 00388000
  389. CMXM204 EQU * 00389000
  390. LA R15,204 SET NUMBER 00390000
  391. B CMXMV1 AND CONTINUE 00391000
  392. SPACE 1 00392000
  393. CMXM205 EQU * 00393000
  394. LA R15,205 SET NUMBER 00394000
  395. MVC CMXMSGV0(8),0(R7) CONFLICTING KEYWORD 00395000
  396. LA R0,28+8 REQ LEN 00396000
  397. B CMXDOIT AND CONTINUE 00397000
  398. SPACE 1 00398000
  399. CMXM206 EQU * 00399000
  400. LA R15,206 SET MESSAGE NUMBER 00400000
  401. B CMXMV2 AND CONTINUE 00401000
  402. SPACE 1 00402000
  403. CMXM207 EQU * 00403000
  404. LA R15,207 SET MESSAGE NUMBER 00404000
  405. B CMXMV2 AND CONTINUE 00405000
  406. SPACE 1 00406000
  407. CMXM208 EQU * 00407000
  408. LA R15,208 SET MESSAGE NUMBER 00408000
  409. B CMXMV1 MOVE ONE VAR FIELD 00409000
  410. SPACE 00410000
  411. CMXM300 EQU * 00411000
  412. LA R15,300 SET MSG NUMBER 00412000
  413. B CMXMTSK1 SET TASK NAME IN MSG 00413000
  414. SPACE 1 00414000
  415. CMXM301 EQU * 00415000
  416. LA R15,301 SET MSG NUMBER 00416000
  417. B CMXMTSK1 SET TASK NAME IN MSG 00417000
  418. SPACE 1 00418000
  419. CMXM302 EQU * 00419000
  420. LA R15,302 GET MESSAGE NUMBER 00420000
  421. B CMXMV1 AND CONTINUE 00421000
  422. SPACE 1 00422000
  423. CMXM303 EQU * 00423000
  424. LA R15,303 SET MSG NUMBER 00424000
  425. B CMXMLNK1 SET LINK ID IN MSG 00425000
  426. SPACE 00426000
  427. CMXM304 EQU * 00427000
  428. LA R15,304 SET MSG NUMBER 00428000
  429. B CMXMTSK1 SET TASK NAME IN MSG 00429000
  430. SPACE 00430000
  431. CMXMLNK2 EQU * 00431000
  432. MVC CMXMSGV1(8),LINKID SET LINK ID 00432000
  433. LA R0,28+2*8 SET MSG ELEMENT COUNT 00433000
  434. B CMXDOIT PASS IT TO MSG MANAGER 00434000
  435. SPACE 00435000
  436. CMXMLNK1 EQU * 00436000
  437. MVC CMXMSGV0(8),LINKID SET LINK ID 00437000
  438. LA R0,28+8 SET MSG ELEMENT LENGTH 00438000
  439. B CMXDOIT PASS IT TO MSG MANAGER 00439000
  440. SPACE 00440000
  441. CMXMTSK1 EQU * 00441000
  442. ST R0,CMXMSGV0 SET TASK NAME IN MSG 00442000
  443. LA R0,28+8 SET COUNT 00443000
  444. B CMXDOIT PASS THE MESSAGE ELEMENT 00444000
  445. SPACE 00445000
  446. CMXMV2 EQU * 00446000
  447. MVC CMXMSGV0(8),0(R7) MOVE IN VALID KEYWORD 00447000
  448. LA R0,28+8 GET REQ COUNT 00448000
  449. LTR R4,R4 ANY COUNT? 00449000
  450. BM CMXDOIT NO..LEAVE SECOND PARM BLANK 00450000
  451. CL R4,CMXLIMIT TOO LONG? 00451000
  452. BL CMXMV2OK NO 00452000
  453. L R4,CMXLIMIT USE ONE PARM 00453000
  454. BCTR R4,0 REDUCE BY ONE 00454000
  455. CMXMV2OK EQU * 00455000
  456. LA R6,CMXMSGV1 PARM LOAD POINT 00456000
  457. EX R4,CMXMOVE AND MOVE INTO MSG 00457000
  458. LA R0,28+2*8 TWICE AS LONG 00458000
  459. B CMXDOIT AND WRITE THE MSG 00459000
  460. SPACE 1 00460000
  461. CMXMV1 EQU * 00461000
  462. LA R0,28+8 REQ LEN 00462000
  463. LTR R4,R4 POSITIVE COUNT? 00463000
  464. BM CMXDOIT NO - LEAVE EMPTY 00464000
  465. CL R4,CMXLIMIT TRUNCATE? 00465000
  466. BL CMXMVLOK NO 00466000
  467. L R4,CMXLIMIT SET MAX COUNT 00467000
  468. BCTR R4,0 AND DOWN BY ONE 00468000
  469. CMXMVLOK EQU * 00469000
  470. LA R6,CMXMSGV0 TARGET 00470000
  471. EX R4,CMXMOVE MOVE IT 00471000
  472. B CMXDOIT AND CONTINUE 00472000
  473. SPACE 1 00473000
  474. CMXMV0 EQU * 00474000
  475. LA R0,28 LENGTH 00475000
  476. CMXDOIT EQU * 00476000
  477. BCTR R0,0 DOWN BY ONE 00477000
  478. STC R0,CMXMSG LENGTH -1 00478000
  479. STH R15,CMXMSGNM STORE THE NUMBER 00479000
  480. LA R1,CMXMSG GET THE MSG REQ ADDR 00480000
  481. L R15,=V(DMTMGX) GET THE MSG MANAGER ADDR 00481000
  482. BALR R14,R15 AND WRITE IT 00482000
  483. B CMXFINIS CHECK FREE STORAGE AND EXIT 00483000
  484. SPACE 2 00484000
  485. CMXMCUU EQU * 00485000
  486. BCTR R9,0 REDUCE ADDR BY ONE 00486000
  487. IC R0,0(R9) SAVE BYTE TO BE CLOBBERED 00487000
  488. UNPK 0(5,R9),0(3,R8) SPREAD THE DIGITS 00488000
  489. STC R0,0(R9) RESTORE THE CHARACTER 00489000
  490. TR 1(3,R9),CMXTOEBC-240 TRANSLATE TO PRINTABLE EBCDIC 00490000
  491. MVI 4(R9),C' ' BLANK GARBAGE FIELD 00491000
  492. BR R14 AND RETURN 00492000
  493. SPACE 2 00493000
  494. * EXECUTED INSTRUCTIONS 00494000
  495. SPACE 1 00495000
  496. CMXTRY CLC 0(0,R7),0(R3) COMMAND NAME MATCH? 00496000
  497. CMXMOVE MVC 0(0,R6),0(R3) MOVE FROM LINE 00497000
  498. CMXATEST TRT 0(0,R3),CMXALPHA CHECK VALID ALPHANUM 00498000
  499. CMXCFILE CLC 0(0,R3),=C'FILE' CHECK FOR KEYWORD 00499000
  500. CMXCACT CLC 0(0,R3),=C'ACTIVE' CHECK FOR KEYWORD 00500000
  501. SPACE 00501000
  502. CMXSAVE DC 16F'0' SAVE AREA 00502000
  503. EJECT 00503000
  504. *. 00504000
  505. *---------------------------------------------------------------------* 00505000
  506. * QUERY COMMAND * 00506000
  507. *---------------------------------------------------------------------* 00507000
  508. * 00508000
  509. * RESPONSES - 00509000
  510. * 00510000
  511. * DMTCMX651I LINK 'LINKID' INACTIVE 00511000
  512. * DMTCMX652I LINK 'LINKID' ACTIVE 'TASK' 'TYPE' 'CLASS' 00512000
  513. * (HO|NOH) (DR|NOD) (TRE|TRA|NOT) 00513000
  514. * DMTCMX653I LINK 'LINKID' DEFAULT 'TASK' 'TYPE' 'VADDR' 00514000
  515. * 'CLASS' R='M' 00515000
  516. * DMTCMX654I LINK 'LINKID' Q='M' P='N' 00516000
  517. * DMTCMX655I FILE 'SPOOLID' 'LOCID' 'USERID' CL 'A' 00517000
  518. * PR 'MM' REC 'NNNNNN' (A|I) 00518000
  519. * DMTCMX660I FILE 'SPOOLID' INACTIVE ON LINK 'LINKID' 00519000
  520. * DMTCMX661I FILE 'SPOOLID' ACTIVE ON LINK 'LINKID' 00520000
  521. * DMTCMX662I FILE 'SPOOLID' ORG 'LOCID' 'USERID' 'MM/DD/YY' 00521000
  522. * 'HH:MM:SS' 'X.X.T.' TO 'LOCID' 'USERID' 00522000
  523. * DMTCMX663I FILE 'SPOOLID' PR 'MM' CL 'CLASS' CO 'NN' 00523000
  524. * (HO|NOH) DI 'DISTCODE' NA ('FN FT'|'DSNAME') 00524000
  525. * DMTCMX670I LINK 'LINKID' ACTIVE -- LINE 'VADDR' (HO|NOH) 00525000
  526. * DMTCMX671I LINK 'LINKID' INACTIVE 00526000
  527. * DMTCMX672I NO LINK ACTIVE 00527000
  528. * DMTCMX673I NO LINK DEFINED 00528000
  529. * 00529000
  530. * ERROR MESSAGES - 00530000
  531. * 00531000
  532. * DMTCMX202E INVALID LINK 'LINKID' 00531010
  533. * DMTCMX203E INVALID SPOOL FILE ID 'SPOOLID' 00532000
  534. * DMTCMX204E INVALID KEYWORD 'KEYWORD' 00533000
  535. * DMTCMX206E INVALID OPTION 'KEYWORD' 'OPTION' 00534000
  536. * DMTCMX664E FILE 'SPOOLID' NOT FOUND 00535000
  537. *. 00536000
  538. SPACE 00537000
  539. QUERY DC 0H'0' 00538000
  540. LR R6,R7 SAVE THE COMMAND ENTRY 00539000
  541. LM R7,R9,QY0SETUP SET UP KEYWORD SCAN 00540000
  542. BAL R14,KEYWDGET LOOK FOR A KEYWORD 00541000
  543. BC 7,QY0LINK MORE ON LINE - TRY LINK ID 00542000
  544. LR R7,R6 RESTORE QUERY COMMAND 00543000
  545. SLR R4,R4 SET ZERO 00544000
  546. BCTR R4,0 FORCE BLANK SECOND PARM 00545000
  547. B CMXM206 NOTHING SPECIFIED 00546000
  548. SPACE 00547000
  549. QYTOOMCH EQU * 00548000
  550. LM R7,R9,QY3SETUP SET FOR TOTAL SCAN 00549000
  551. BAL R14,KEYWDGET INVALID OR CONFLICTING? 00550000
  552. B CMXM204 INVALID KEYWORD MSG 00551000
  553. SPACE 00552000
  554. QY0LINK EQU * 00553000
  555. CL R4,CMXLIMIT TOO MUCH TYPED? 00554000
  556. BNL CMXM204 YEP - INVALID 00555000
  557. LA R0,1(R4) RESTORE EXACT COUNT 00556000
  558. LR R1,R3 ADDRESS OF PARM 00557000
  559. LA R13,CMXCSAVE GET COMMON ROUTINE S.A. ADDR @VA03303 00557010
  560. L R15,TCOM COMMON RTN VECTORS 00558000
  561. L R15,GLINKREQ ENTRY TO GET LINK 00559000
  562. BALR R14,R15 GET THE LINK TABLE 00560000
  563. LTR R15,R15 ANY FOUND? 00561000
  564. BNZ CMXM204 NO - NO GOOD 00562000
  565. L R2,TLINKS GET START OF LINK TABLE CHAI @VA03308 00562010
  566. LA R2,8(R2) POINT TO THE FIRST ENTRY @VA03308 00562110
  567. CLR R2,R1 WAS THE LOCAL LINK SPECIFIED @VA03308 00562210
  568. BE CMXM202 YES...INVALID LINK @VA03308 00562310
  569. LR R2,R1 LINK TABLE ENTRY 00563000
  570. LA R3,1(R4,R3) SET NEXT SCAN 00564000
  571. BAL R14,PARMGET FRAME NEXT 00565000
  572. LM R7,R9,QY1SETUP SET UP FOR NEXT SCAN 00566000
  573. BAL R14,KEYWDGET GET ANOTHER 00567000
  574. BC 8,QY1STAT DEFAULT TO LINKID STAT 00568000
  575. B CMXM204 INVALID KEYWORD OPTION 00569000
  576. SPACE 00570000
  577. QY0FILE EQU * 00571000
  578. BC 8,QY0FNULL NO MORE ON LINE 00572000
  579. LM R8,R9,CMXSPRNG SET SPOOLID RANGE 00573000
  580. BAL R14,DECGET CONVERT SPECIFIED NUMBER 00574000
  581. BC 7,CMXM203 INVALID SPOOL ID 00575000
  582. * REG.0 CONTAINS VALID SPOOL ID NUMBER 00576000
  583. LA R3,1(R4,R3) SET TO SCAN AGAIN 00577000
  584. BAL R14,PARMGET FRAME NEXT PARM 00578000
  585. LM R7,R9,QY2SETUP SET UP FOR NEXT KEYWORD SCAN 00579000
  586. BAL R14,KEYWDGET GET THE NEXT KEYWORD 00580000
  587. BC 8,QY2STAT DEFAULT TO STAT 00581000
  588. B CMXM204 INVALID KEYWORD 00582000
  589. SPACE 00583000
  590. QY0FNULL EQU * 00584000
  591. SLR R4,R4 ZERO 00585000
  592. BCTR R4,0 FORCE BLANK KEYWORD 00586000
  593. B CMXM203 INVALID SPOOLID ... 00587000
  594. SPACE 00588000
  595. QY0SYSTM EQU * 00589000
  596. LA R6,0 SAVE COND CODE 00590000
  597. BC 8,QY0SYALL DEFAULT TO ALL 00591000
  598. SR R4,R3 COUNT OF NEXT PARM 00592000
  599. BCTR R4,0 DOWN ONE 00593000
  600. LA R0,6 MAX COUNT FOR 'ACTIVE' 00594000
  601. CLR R4,R0 TOO MUCH TYPED? 00595000
  602. BNL CMXM204 YES - INVALID KEYWORD 00596000
  603. EX R4,CMXCACT DOES IT SAY IT? 00597000
  604. BNE CMXM204 NO - INVALID KEYWORD 00598000
  605. LA R6,LACTIVE SET FLAG TO INDICATE ACTIVE ONLY 00599000
  606. LA R3,1(R4,R3) SET UP FOR NEXT SCAN 00600000
  607. BAL R14,PARMGET TRY TO GET ANOTHER 00601000
  608. CLR R3,R5 ANY MORE TYPED? 00602000
  609. BL QYTOOMCH YES - NO GOOD 00603000
  610. QY0SYALL EQU * 00604000
  611. SPACE 00605000
  612. * QUERY SYSTEM - R6=0 => ALL; R6 NOT =0 => ACTIVE ONLY 00606000
  613. SPACE 00607000
  614. SLR R4,R4 INITIALIZE MSG COUNTER 00608000
  615. L R2,TLINKS START OF LINK TABLES 00609000
  616. L R3,0(R2) COUNT OF LINK TABLE ENTRIES 00610000
  617. LA R2,8(R2) FIRST LINK TABLE ENTRY 00611000
  618. BCT R3,QYSYLINK SKIP FIRST ENTRY (LOCAL) 00612000
  619. QYM673 EQU * 00613000
  620. LA R15,673 MESSAGE CODE 00614000
  621. B CMXMV0 NO VARIABLE FIELDS 00615000
  622. SPACE 00616000
  623. QYSYLINK EQU * 00617000
  624. LA R2,LINKLEN(R2) NEXT LINK TABLE ENTRY 00618000
  625. MVC CMXMSGV0(8),LINKID SET LINK ID IN MSG 00619000
  626. TM LFLAG,LACTIVE THIS ONE ACTIVE? 00620000
  627. BO QYSYACT YES - DO IT UNCONDITIONALLY 00621000
  628. LTR R6,R6 INACTIVE LINKS REQUESTED? 00622000
  629. BNZ QYSYNEXT NOPE - SKIP THIS ONE 00623000
  630. CLI LINKID,C' ' DEFINED? 00624000
  631. BE QYSYNEXT NOPE - KEEP LOOKING 00625000
  632. QYM671 EQU * 00626000
  633. LA R15,671 SET MESSAGE CODE 00627000
  634. LA R0,28+8 AND LENGTH 00628000
  635. B QYSYMSG AND ISSUE IT 00629000
  636. SPACE 00630000
  637. QYSYACT EQU * 00631000
  638. UNPK CMXWORK(5),LACTLINE(3) SPREAD DIGITS 00632000
  639. TR CMXWORK+1(3),CMXTOEBC-240 TRANSLATE ABCDEF 00633000
  640. MVC CMXMSGV1(3),CMXWORK+1 MOVE LINE TO MSG 00634000
  641. MVC CMXMSGV2(3),=CL3'NOH' ASSUME NOHOLD 00635000
  642. QYM670 EQU * 00636000
  643. LA R15,670 SET MESSAGE CODE 00637000
  644. LA R0,28+3*8 AND LENGTH 00638000
  645. TM LFLAG,LHOLD HOLD SET? 00639000
  646. BNO QYSYMSG NO - ISSUE MSG AS IS 00640000
  647. MVC CMXMSGV2(3),=CL3'HO' OTHERWISE SAY HOLD 00641000
  648. QYSYMSG EQU * 00642000
  649. BCTR R0,0 DOWN ONE 00643000
  650. STC R0,CMXMSG SET LENGTH 00644000
  651. STH R15,CMXMSGNM SET THE MSG NUMBER 00645000
  652. LA R1,CMXMSG SET MSG ELEMENT ADDR 00646000
  653. L R15,=V(DMTMGX) MSG EXEC ENTRY 00647000
  654. BALR R14,R15 ISSUE MESSAGE 00648000
  655. SPACE 00649000
  656. LA R4,1(R4) INCREMENT MSG COUNT 00650000
  657. QYSYNEXT EQU * 00651000
  658. * SKIP CLEARING VARIABLE FIELDS - NOT NECESSARY 00652000
  659. BCT R3,QYSYLINK GET ANOTHER LINK TABLE 00653000
  660. LTR R4,R4 ANY MSGS SO FAR? 00654000
  661. BNZ CMXFINIS YEP - JUST QUIT 00655000
  662. QYM672 EQU * 00656000
  663. LA R15,672 SET MSG CODE 00657000
  664. B CMXMV0 ISSUE 'NO LINK ACTIVE' 00658000
  665. SPACE 00659000
  666. QY1STAT EQU * 00660000
  667. SPACE 00661000
  668. * QUERY LINKID STAT 00662000
  669. SPACE 00663000
  670. BC 7,QYTOOMCH NOT END OF LINE 00664000
  671. MVC CMXMSGV0(8),LINKID SET LINK ID 00665000
  672. TM LFLAG,LACTIVE IS IT ACTIVE? 00666000
  673. BNO QYM651 NOPE - GO SAY IT 00667000
  674. MVC CMXMSGV1(4),LACTTNME SET 'TASK' 00668000
  675. MVC CMXMSGV2(8),LACTDRVR SET 'TYPE' 00669000
  676. UNPK CMXWORK(5),LACTLINE(3) SPREAD LINE NUMBER 00670000
  677. TR CMXWORK+1(3),CMXTOEBC-240 TRANSLATE ABCDEF 00671000
  678. MVC CMXMSGV3(3),CMXWORK+1 SET 'LINE' 00672000
  679. MVC CMXMSGV4(4),LACTCLS1 SET 'CLASS' 00673000
  680. MVC CMXMSGV5(3),=CL3'NOH' ASSUME NO HOLD 00674000
  681. TM LFLAG,LHOLD CORRECT? 00675000
  682. BNO QY1SNOH YES - LEAVE IT ALONE 00676000
  683. MVC CMXMSGV5(3),=CL3'HO' FIX IT UP 00677000
  684. QY1SNOH EQU * 00678000
  685. MVC CMXMSGV6(3),=CL3'NOD' ASSUME NO DRAIN 00679000
  686. TM LFLAG,LDRAIN CORRECT? 00680000
  687. BNO QY1SNOD YES - LEAVE ALONE 00681000
  688. MVC CMXMSGV6(3),=CL3'DR' ELSE FIX IT UP 00682000
  689. QY1SNOD EQU * 00683000
  690. MVC CMXMSGV7(3),=CL3'NOT' ASSUME NO TRACE 00684000
  691. TM LFLAG,LTRALL+LTRERR CORRECT? 00685000
  692. BZ QY1SNOT YES - LEAVE IT ALONE 00686000
  693. MVC CMXMSGV7(3),=CL3'TRA' ASSUME TRACE ALL 00687000
  694. TM LFLAG,LTRALL CORRECT? 00688000
  695. BO QY1SALL YES - LET IT BE 00689000
  696. MVC CMXMSGV7(3),=CL3'TRE' OTHERWISE TRACE ERR 00690000
  697. QY1SALL EQU * 00691000
  698. QY1SNOT EQU * 00692000
  699. QYM652 EQU * 00693000
  700. LA R15,652 SET MSG CODE 00694000
  701. LA R0,28+8*8 AND LENGTH 00695000
  702. B CMXDOIT RESPOND TO QUERY 00696000
  703. SPACE 00697000
  704. QYM651 EQU * 00698000
  705. LA R15,651 SET MESSAGE CODE 00699000
  706. LA R0,28+8 AND LENGTH 00700000
  707. B CMXDOIT AND RESPOND 00701000
  708. SPACE 00702000
  709. QY1DEF EQU * 00703000
  710. SPACE 00704000
  711. * QUERY LINKID DEF 00705000
  712. SPACE 00706000
  713. BC 7,QYTOOMCH MORE ON LINE - INVALID 00707000
  714. MVC CMXMSGV0(8),LINKID SET LINK ID 00708000
  715. MVC CMXMSGV1(4),LDEFTNME SET 'TASK' 00709000
  716. MVC CMXMSGV2(8),LDEFDRVR SET 'TYPE' 00710000
  717. UNPK CMXWORK(5),LDEFLINE(3) SPREAD LINE ADDR 00711000
  718. TR CMXWORK+1(3),CMXTOEBC-240 TRANSLATE ABCDEF 00712000
  719. MVC CMXMSGV3(3),CMXWORK+1 SET 'LINE' 00713000
  720. MVC CMXMSGV4(4),LDEFCLS1 SET 'CLASS' 00714000
  721. LH R0,LRESERVD RESERVED SLOT COUNT 00715000
  722. SLR R1,R1 NO MINIMUM DIGITS 00716000
  723. LA R6,CMXMSGV5 TARGET FIELD POINTER 00717000
  724. BAL R14,DECPUT PUT NUMBER IN MSG 00718000
  725. QYM653 EQU * 00719000
  726. LA R15,653 SET MESSAGE CODE 00720000
  727. LA R0,28+6*8 AND LENGTH 00721000
  728. B CMXDOIT RESPOND TO QUERY 00722000
  729. SPACE 00723000
  730. QY1QUEUE EQU * 00724000
  731. SPACE 00725000
  732. * QUERY LINKID QUEUE 00726000
  733. SPACE 00727000
  734. BC 7,QYTOOMCH MORE ON LINE - INVALID 00728000
  735. MVC CMXMSGV0(8),LINKID SET LINK ID 00729000
  736. LH R0,LTAKEN GET TAKEN SLOT COUNT 00730000
  737. LTR R0,R0 ANY AT ALL? 00731000
  738. BNP QY1QQSET NO - SKIP ACTIVE OUTPUT SCAN 00732000
  739. L R3,TTAGQ FILE TAG CONTROL AREA 00733000
  740. LA R3,8(R3) START OF ACTIVE OUTPUT QUEUE 00734000
  741. QY1QACTO EQU * 00735000
  742. ICM R3,B'1111',TAGNEXT POINT TO NEXT ACTIVE TAG 00736000
  743. BZ QY1QQSET ALL DONE - DO MSG 00737000
  744. CLC TAGLINK(8),LINKID TAG FOR THIS LINK? 00738000
  745. BNE QY1QACTO NO - TRY THE NEXT 00739000
  746. BCT R0,QY1QACTO DECREMENT AND KEEP LOOKING 00740000
  747. QY1QQSET EQU * 00741000
  748. SLR R1,R1 NO MINIMUM DIGITS 00742000
  749. LA R6,CMXMSGV1 OUTPUT NUMBER TARGET 00743000
  750. BAL R14,DECPUT CONVERT AND MOVE NUMBER 00744000
  751. LH R0,LPENDING GET PENDING FILE COUNT 00745000
  752. SLR R1,R1 NO MINIMUM DIGITS 00746000
  753. LA R6,CMXMSGV2 OUTPUT NUMBER TARGET 00747000
  754. BAL R14,DECPUT CONVERT AND MOVE NUMBER 00748000
  755. QYM654 EQU * 00749000
  756. LA R15,654 SET MSG NUMBER 00750000
  757. STH R15,CMXMSGNM SET NUMBER IN MSG ELEMENT 00751000
  758. MVI CMXMSG,28+3*8 SET LENGTH IN MSG ELEMENT 00752000
  759. LA R1,CMXMSG ADDR OF MSG ELEMENT START 00753000
  760. L R15,=V(DMTMGX) ENTRY TO MSG PROCESSOR 00754000
  761. BALR R14,R15 ISSUE THE MESSAGE 00755000
  762. SPACE 00756000
  763. * NOW DO THE FILE QUEUE 00757000
  764. SPACE 00758000
  765. SR R4,R4 INDICATE INACTIVE QUEUE 00759000
  766. LA R3,LPOINTER INITIALIZE FILE TAG POINTER 00760000
  767. QY1QNEXT EQU * 00761000
  768. ICM R3,B'1111',TAGNEXT POINT TO NEXT TAG 00762000
  769. BZ QY1QEND NO MORE - ALL DONE 00763000
  770. LTR R4,R4 INACTIVE QUEUE? 00764000
  771. BZ QY1INACT YES - DON'T CHECK TAG LINK ID 00765000
  772. CLC TAGLINK(8),LINKID TAG FOR THIS LINK? 00766000
  773. BNE QY1QNEXT NO - TRY NEXT 00767000
  774. QY1INACT EQU * 00768000
  775. MVI CMXMSGV0,C' ' CEAR FIRST BYTE 00769000
  776. MVC CMXMSGV0+1(CMXMSGVL-1),CMXMSGV0 ENTIRE AREA 00770000
  777. LH R0,TAGID GET SPOOL ID 00771000
  778. LA R1,4 MIN DIGIT COUNT 00772000
  779. LA R6,CMXMSGV0 OUTPUT TARGET AREA 00773000
  780. BAL R14,DECPUT PUT SPOOL ID IN MSG 00774000
  781. MVC CMXMSGV1(8),TAGTOLOC SET DEST LOC 00775000
  782. MVC CMXMSGV2(8),TAGTOVM SET DEST VM ID 00776000
  783. MVC CMXMSGV3(1),TAGCLASS SET 'CLASS' 00777000
  784. LH R0,TAGPRIOR FILE PRIORITY 00778000
  785. SLR R1,R1 NO MIN DIGIT COUNT 00779000
  786. LA R6,CMXMSGV4 TARGET FIELD 00780000
  787. BAL R14,DECPUT CONVERT NUMBER TO LINE 00781000
  788. L R0,TAGRECNM RECORD COUNT 00782000
  789. LA R1,8 SET MIN DIGIT COUNT 00783000
  790. LA R6,CMXMSGV5 SET TARGET FIELD 00784000
  791. BAL R14,DECPUT CONVERT COUNT TO LINE 00785000
  792. MVI CMXMSGV6,C'I' ASSUME INACTIVE 00786000
  793. LTR R4,R4 CORRECT? 00787000
  794. BZ QYM655 YES - ISSUE MESSAGE AS IS 00788000
  795. MVI CMXMSGV6,C'A' OTHERWISE SAY ACTIVE 00789000
  796. QYM655 EQU * 00790000
  797. LA R15,655 SET MSG CODE 00791000
  798. STH R15,CMXMSGNM MSG CODE TO MSG ELEMENT 00792000
  799. MVI CMXMSG,28+7*8 LENGTH TO MSG ELEMENT 00793000
  800. LA R1,CMXMSG ADDR OF MSG ELEMENT 00794000
  801. L R15,=V(DMTMGX) ENTRY TO MSG PROCESSOR 00795000
  802. BALR R14,R15 ISSUE MESSAGE 00796000
  803. B QY1QNEXT DO NEXT TAG 00797000
  804. SPACE 00798000
  805. QY1QEND EQU * 00799000
  806. LTR R4,R4 ACTIVE QUEUE? 00800000
  807. BNZ CMXFINIS YES - ALL DONE 00801000
  808. BCTR R4,0 INDICATE INACTIVE QUEUE SCAN 00802000
  809. L R3,TTAGQ TAG QUEUE CONTROL AREA 00803000
  810. LA R3,4(R3) START OF ACTIVE INPUT QUEUE 00804000
  811. B QY1QNEXT SCAN FOR FILES OWNED 00805000
  812. SPACE 00806000
  813. QY2STAT EQU * 00807000
  814. SPACE 00808000
  815. * QUERY FILE STAT 00809000
  816. SPACE 00810000
  817. BC 7,QYTOOMCH MORE ON LINE - INVALID 00811000
  818. * REG.0 = SPOOL ID ON ENTRY 00812000
  819. LA R1,4 MIN DIGIT COUNT 00813000
  820. LA R6,CMXMSGV0 OUTPUT NUMBER TARGET 00814000
  821. BAL R14,DECPUT CONVERT SPOOL ID TO LINE 00815000
  822. BAL R14,FILGET AND FIND THE TAG 00816000
  823. BC 7,QYM664 FILE NOT FOUND 00817000
  824. MVC CMXMSGV1(8),TAGLINK SET LINK ID 00818000
  825. OC TAGBLOCK(4),TAGBLOCK IS THE FILE ACTIVE? 00819000
  826. BZ QYM660 NO - INACTIVE 00820000
  827. QYM661 EQU * 00821000
  828. LA R15,661 SET MESSAGE NUMBER 00822000
  829. LA R0,28+2*8 AND COUNT 00823000
  830. B CMXDOIT ISSUE MESSAGE 00824000
  831. SPACE 00825000
  832. QYM660 EQU * 00826000
  833. LA R15,660 SET MSG NUMBER 00827000
  834. LA R0,28+2*8 AND COUNT 00828000
  835. B CMXDOIT ISSUE RESPONSE 00829000
  836. SPACE 00830000
  837. QY2RSS EQU * 00831000
  838. SPACE 00832000
  839. * QUERY FILE RSS 00833000
  840. SPACE 00834000
  841. BC 7,QYTOOMCH MORE ON LINE - INVALID 00835000
  842. * REG.0 CONTAINS SPOOL ID ON ENTRY 00836000
  843. LA R1,4 MIN DIGIT COUNT 00837000
  844. LA R6,CMXMSGV0 SPOOL ID TARGET FIELD 00838000
  845. BAL R14,DECPUT CONVERT SPOOL ID TO LINE 00839000
  846. BAL R14,FILGET FIND THE FILE TAG 00840000
  847. BC 7,QYM664 FILE NOT FOUND 00841000
  848. MVC CMXMSGV1(8),TAGINLOC FROM LOCATION ID 00842000
  849. MVC CMXMSGV2(8),TAGINVM FROM VM ID 00843000
  850. MVC CMXWORK(19),QY2RMASK SET EDITING MASK 00844000
  851. LM R0,R1,TAGINTOD PICK UP S/370 TIME OF DAY 00845000
  852. LA R2,CMXWORK OUTPUT FIELD 00846000
  853. BAL R14,TODEBCD CONVERT TO PRINTABLE 00847000
  854. MVC CMXMSGV3(24),CMXWORK+1 MOVE IN DATE, TIME, & ZONE 00848000
  855. MVC CMXMSGV6(8),TAGTOLOC DEST LOCATION 00849000
  856. MVC CMXMSGV7(8),TAGTOVM DEST VM ID 00850000
  857. SPACE 00851000
  858. QYM662 EQU * 00852000
  859. LA R15,662 MSG NUMBER 00853000
  860. LA R0,28+8*8 AND COUNT 00854000
  861. B CMXDOIT ISSUE RESPONSE 00855000
  862. SPACE 00856000
  863. QY2VM EQU * 00857000
  864. SPACE 00858000
  865. * QUERY FILE VM 00859000
  866. SPACE 00860000
  867. BC 7,QYTOOMCH MORE ON LINE - INVALID 00861000
  868. * REG.0 CONTAINS SPOOL ID ON ENTRY 00862000
  869. LA R1,4 MIN DIGIT COUNT 00863000
  870. LA R6,CMXMSGV0 SET TARGET FIELD 00864000
  871. BAL R14,DECPUT CONVERT NUMBER TO LINE 00865000
  872. BAL R14,FILGET FIND THE FILE TAG 00866000
  873. BC 7,QYM664 NOT FOUND - SAY SO 00867000
  874. LH R0,TAGPRIOR PICK UP PRIORITY 00868000
  875. SLR R1,R1 NO MIN COUNT 00869000
  876. LA R6,CMXMSGV1 SET TARGET FIELD 00870000
  877. BAL R14,DECPUT SET PRIORITY 00871000
  878. MVC CMXMSGV2(1),TAGCLASS SET 'CLASS' 00872000
  879. LH R0,TAGCOPY PICK UP COPY COUNT 00873000
  880. SLR R1,R1 NO MIN DIGIT COUNT 00874000
  881. LA R6,CMXMSGV3 TARGET LINE ADDR 00875000
  882. BAL R14,DECPUT SET COPY NUMBER 00876000
  883. MVC CMXMSGV4(3),=CL3'NOH' ASSUME NO HOLD 00877000
  884. TM TAGFLAG,SFBUHOLD+SFBSHOLD CORRECT? 00878000
  885. BZ QY2VNOH YES - LEAVE ALONE 00879000
  886. MVC CMXMSGV4(3),=CL3'HO' OTHERWISE FIX IT 00880000
  887. QY2VNOH EQU * 00881000
  888. MVC CMXMSGV5(8),TAGDIST SET DIST CODE 00882000
  889. MVC CMXMSGV6(24),TAGNAME SET FILE NAME TYPE 00883000
  890. QYM663 EQU * 00884000
  891. LA R15,663 SET MSG NUMBER 00885000
  892. LA R0,28+9*8 AND LENGTH 00886000
  893. B CMXDOIT ISSUE RESPONSE 00887000
  894. SPACE 00888000
  895. QYM664 EQU * 00889000
  896. LA R15,664 SET MSG NUMBER 00890000
  897. LA R0,28+8 AND COUNT 00891000
  898. B CMXDOIT ISSUE RESPONSE 00892000
  899. EJECT 00893000
  900. QY0SETUP DC A(QY0TABLE) PARM TABLE ADDRESS 00894000
  901. DC A(QY0INC) LENGTH OF ENTRY 00895000
  902. DC A(QY0END-QY0INC) END OF TABLE 00896000
  903. SPACE 00897000
  904. QY0TABLE DC 0F'0' 00898000
  905. DC CL8'FILE',AL1(1-1),AL3(QY0FILE) 00899000
  906. DC CL8'SYSTEM',AL1(2-1),AL3(QY0SYSTM) 00900000
  907. QY0END EQU * 00901000
  908. SPACE 00902000
  909. QY0INC EQU 8+4 00903000
  910. SPACE 3 00904000
  911. QY1SETUP DC A(QY1TABLE) PARM TABLE ADDRESS 00905000
  912. DC A(QY1INC) LENGTH OF ENTRY 00906000
  913. DC A(QY1END-QY1INC) END OF TABLE 00907000
  914. SPACE 00908000
  915. QY1TABLE DC 0F'0' 00909000
  916. DC CL8'STAT',AL1(1-1),AL3(QY1STAT) 00910000
  917. DC CL8'DEF',AL1(1-1),AL3(QY1DEF) 00911000
  918. DC CL8'QUEUE',AL1(1-1),AL3(QY1QUEUE) 00912000
  919. QY1END EQU * 00913000
  920. SPACE 00914000
  921. QY1INC EQU 8+4 00915000
  922. SPACE 3 00916000
  923. QY2SETUP DC A(QY2TABLE) PARM TABLE ADDRESS 00917000
  924. DC A(QY2INC) LENGTH OF ENTRY 00918000
  925. DC A(QY2END-QY2INC) END OF TABLE 00919000
  926. SPACE 00920000
  927. QY2TABLE DC 0F'0' 00921000
  928. DC CL8'STAT',AL1(1-1),AL3(QY2STAT) 00922000
  929. DC CL8'RSCS',AL1(4-1),AL3(QY2RSS) 00923000
  930. DC CL8'VM',AL1(2-1),AL3(QY2VM) 00924000
  931. QY2END EQU * 00925000
  932. SPACE 00926000
  933. QY2INC EQU 8+4 00927000
  934. SPACE 3 00928000
  935. QY2RMASK DC AL1(QY2RMEND-*-1) LENGTH OF MASK 00929000
  936. DC X'2120',C'/',X'2020',C'/',X'2020' EDIT MASK 00930000
  937. DC X'22' FIELD SEPARATOR 00931000
  938. DC X'2120',C':',X'2020',C':',X'2020' 00932000
  939. DC C'0' BLANK @VA03113 00933450
  940. QY2RMEND EQU * 00934000
  941. EJECT 00935000
  942. QY3SETUP DC A(QY3TABLE) PARM TABLE ADDRESS 00936000
  943. DC A(QY3INC) LENGTH OF ENTRY 00937000
  944. DC A(QY3END-QY3INC) END OF TABLE 00938000
  945. SPACE 00939000
  946. QY3TABLE DC 0F'0' SEARCH FOR CONFLICTING 00940000
  947. DC CL8'STAT',AL1(1-1),AL3(CMXM205) EXTRA KEYWD 00941000
  948. DC CL8'DEF',AL1(1-1),AL3(CMXM205) 00942000
  949. DC CL8'QUEUE',AL1(1-1),AL3(CMXM205) 00943000
  950. DC CL8'RSCS',AL1(4-1),AL3(CMXM205) 00944000
  951. DC CL8'VM',AL1(2-1),AL3(CMXM205) 00945000
  952. QY3END EQU * 00946000
  953. SPACE 00947000
  954. QY3INC EQU 8+4 00948000
  955. EJECT 00949000
  956. *. 00950000
  957. *---------------------------------------------------------------------* 00951000
  958. * START COMMAND * 00952000
  959. *---------------------------------------------------------------------* 00953000
  960. * 00954000
  961. * OPERATION - 00955000
  962. * 00956000
  963. * DEFAULT PARAMETER VALUES ARE SET, AND ROUTINE 00957000
  964. * R0FORMAT IS CALLED TO DECODE SPECIFIED VALUE OVERRIDES. 00958000
  965. * IF THE LINK SPECIFIED IS ACTIVE, ONLY A 'CLASS' 00959000
  966. * SPECIFICATION IS ACCEPTED; CLASSES ARE OPTIONALLY 00960000
  967. * RESET, AND THE LINK'S LINE DRIVER IS GIVEN A START 00961000
  968. * COMMAND ALERT TO RESET A POSSIBLE DRAIN STATUS. 00962000
  969. * IF THE LINK SPECIFIED IS INACTIVE, THE LINE ADDR 00963000
  970. * IS ALLOCATED IF NECESSARY AND VALIDATED, THE REQUESTED 00964000
  971. * LINE DRIVER IS LOADED AS A NEW TASK, AND THE LINK IS 00965000
  972. * ACTIVATED. 00966000
  973. * 00967000
  974. * RESPONSES - 00968000
  975. * 00969000
  976. * DMTCMX700I ACTIVATING LINK 'LINKID' 'TASK' 'TYPE' 00970000
  977. * 'VADDR' 'CLASS' 00971000
  978. * DMTCMX751I LINK 'LINKID' ALREADY ACTIVE -- 00972000
  979. * NEW CLASSES SET AS REQUESTED 00973000
  980. * 00976000
  981. * ERROR MESSAGES - 00977000
  982. * 00978000
  983. * DMTCMX204E INVALID KEYWORD 'KEYWORD' 00979000
  984. * DMTCMX205E CONFLICTING KEYWORD 'KEYWORD' 00980000
  985. * DMTCMX206E INVALID OPTION 'KEYWORD' 'OPTION' 00981000
  986. * DMTCMX701E NO SWITCHED LINE AVAILABLE -- 00982000
  987. * LINK 'LINKID' NOT ACTIVATED 00983000
  988. * DMTCMX702E LINE 'VADDR' IS IN USE BY LINK 'LINKID' -- 00984000
  989. * LINK 'LINKID' NOT ACTIVATED 00985000
  990. * DMTCMX703E DEV 'CUU' IS NOT A LINE PORT -- 00986000
  991. * LINK 'LINKID' NOT ACTIVATED 00987000
  992. * DMTCMX704E LINE 'VADDR' CC=3 NOT OPERATIONAL -- 00988000
  993. * LINK 'LINKID' NOT ACTIVATED 00989000
  994. * DMTCMX705E DRIVER 'TYPE' FILE FORMAT INVALID -- 00990000
  995. * LINK 'LINKID' NOT ACTIVATED 00991000
  996. * DMTCMX706E FATAL ERROR LOADING FROM 'VADDR' -- 00992000
  997. * LINK 'LINKID' NOT ACTIVATED 00993000
  998. * DMTCMX707E DRIVER 'TYPE' FILE FORMAT INVALID -- 00994000
  999. * LINK 'LINKID' NOT ACTIVATED 00995000
  1000. * DMTCMX708E VIRTUAL STORAGE CAPACITY EXCEEDED -- 00996000
  1001. * LINK 'LINKID' NOT ACTIVATED 00997000
  1002. * DMTCMX709E TASK NAME 'TNAME' ALREADY IN USE -- 00998000
  1003. * LINK 'LINKID' NOT ACTIVATED 00999000
  1004. * DMTCMX710E MAX ('NN') ACTIVE -- LINK 'LINKID' 01000000
  1005. * NOT ACTIVATED 01001000
  1006. * DMTCMX750E LINK 'LINKID' ALREADY ACTIVE -- 01002000
  1007. * NO ACTION TAKEN 01003000
  1008. *. 01004000
  1009. SPACE 01005000
  1010. START DC 0H'0' 01006000
  1011. LTR R0,R0 WAS THE ORIGIN THE CONSOLE? 01007000
  1012. BNZ STALKGOT ORIGINATE FROM ANOTHER TASK 01008000
  1013. BAL R14,LTABGET GET THE LINKTABL ENTRY 01009000
  1014. B CMXNOLNK LINK NOT FOUND 01010000
  1015. STALKGOT EQU * 01011000
  1016. MVC R0TNME(4),LDEFTNME DEFAULT TASKNAME 01012000
  1017. MVC R0DRVR(8),LDEFDRVR DEFAULT DRIVER 01013000
  1018. MVC R0LADD(2),LDEFLINE DEFAULT LINE ADDR 01014000
  1019. MVC R0CLS1(4),LDEFCLS1 DEFAULT CLASSES 01015000
  1020. XC STARPARM(4),STARPARM CLEAR THE PARM FIELD 01016000
  1021. LA R1,STASETUP PREPARE FOR START SETUP 01017000
  1022. B R0FORMAT AND SCAN FOR OVERRIDES 01018000
  1023. SPACE 2 01019000
  1024. STADO EQU * 01020000
  1025. TM LFLAG,LACTIVE IS THE LINK ACTIVE ALREADY? 01021000
  1026. BNO STACREAT NO - ACTIVATE IT 01022000
  1027. LM R7,R9,STASETUP SET UP FOR KYWD TBL SCAN 01023000
  1028. SR R3,R3 CLEAR CLASS REG 01024000
  1029. STACTRY EQU * 01025000
  1030. CLC 0(8,R7),=CL8'CLASS' CLASS KYWD ENTRY? 01026000
  1031. BNE STANOTCL NO - SEE IF ENTERED 01027000
  1032. TM 12(R7),X'80' WAS CLASS SPECIFIED? 01028000
  1033. BZ STACBUMP NOPE - KEEP LOOKING 01029000
  1034. L R3,R0CLS1 PICK UP THE SPECD CLASSES 01030000
  1035. B STACBUMP AND KEEP LOOKING 01031000
  1036. SPACE 01032000
  1037. STANOTCL EQU * 01033000
  1038. TM 12(R7),X'80' WAS NON-CLASS SPECD? 01034000
  1039. BNZ STAM750 YES - NO GOOD 01035000
  1040. STACBUMP EQU * 01036000
  1041. BXLE R7,R8,STACTRY LOOK AGAIN 01037000
  1042. SPACE 01038000
  1043. * VALID START COMMAND FOR AN ACTIVE LINK 01039000
  1044. SPACE 01040000
  1045. LTR R3,R3 CLASSES SPECIFIED? 01041000
  1046. BZ L0FIRE NOPE - MUST BE TO RESET DRAIN 01042000
  1047. ST R3,LACTCLS1 YES - RESET CLASSES 01043000
  1048. OI CMXELMOD,X'80' SET COMMAND MODIFIER 01044000
  1049. B L0FIRE ISSUE COMMAND ELEMENT 01045000
  1050. EJECT 01046000
  1051. STACREAT EQU * 01047000
  1052. MVC STALAXRQ+4(2),R0LADD SET REQ'D LINE (OR 0) 01048000
  1053. LA R1,STALAXRQ ADDR OF ALERT REQ FOR LAX 01049000
  1054. L R0,CMXLAX NAME 0F'0',CL4'LAX' 01050000
  1055. L R15,ALERTREQ ALERT SERVICE ENTRY 01051000
  1056. BALR R14,R15 ALERT LAX 01052000
  1057. CLI STALAXRQ+2,X'00' O.K. TO USE LINE ADDR? 01053000
  1058. BE STALNGOT YEP - DO IT 01054000
  1059. OC R0LADD(2),R0LADD ANY SPECIFIED? 01055000
  1060. BZ STAM701 NO - SAY NONE AVAIL 01056000
  1061. CLI STALAXRQ+2,X'02' ALREADY IN USE? 01057000
  1062. BE STAM702 YEP - SAY SO 01058000
  1063. CLI STALAXRQ+2,X'04' WRONG DEVICE TYPE? 01059000
  1064. BE STAM703 YEP - SAY SO 01060000
  1065. B STAM704 ELSE DEVICE NOT ATTACHED 01061000
  1066. SPACE 01062000
  1067. STALNGOT EQU * 01063000
  1068. L R6,TLINKS LINK TABL ADDR 01064000
  1069. CLC 4(2,R6),6(R6) PAST LINK LIMIT? 01065000
  1070. BNH STAMAXER YEP - FREE PORT, ISSUE MSG 01066000
  1071. MVC LACTLINE(2),STALAXRQ+4 SET LINE ADDR 01067000
  1072. MVC LACTTNME(4),R0TNME SET THE NEW TASK NAME 01068000
  1073. MVC LACTDRVR(8),R0DRVR SET THE DRIVER ID 01069000
  1074. MVC LACTCLS1(4),R0CLS1 SET THE NEW CLASSES 01070000
  1075. LM R0,R1,STARPARM GET STARTUP PARMS 01071000
  1076. L R15,=V(DMTCRE) GO START THE TASK 01072000
  1077. BALR R14,R15 GO DO IT 01073000
  1078. LTR R15,R15 WORK OKAY? 01074000
  1079. BNZ STACRERR NO - ERROR 01075000
  1080. LH R7,6(R6) GET OLD ACTIVE COUNT 01076000
  1081. LA R7,1(R7) UP ONE 01077000
  1082. STH R7,6(R6) AND SET NEW ACTIVE 01078000
  1083. MVI LFLAG,LACTIVE INDICATE LINK IS NOW ACTIVE 01079000
  1084. MVC CMXMSGV0(8),LINKID MOVE IN LINKID 01080000
  1085. MVC CMXMSGV1(4),LACTTNME AND THE TASK NAME 01081000
  1086. UNPK CMXMSGV3-1(5),LACTLINE(3) UNPACK THE LINE 01082000
  1087. TR CMXMSGV3(3),CMXTOEBC-240 TRANSLATE TO LEGAL EBCDIC 01083000
  1088. MVI CMXMSGV3+3,C' ' RESTORE CLOBBERED BLANK 01084000
  1089. MVC CMXMSGV2(8),LACTDRVR MOVE IN THE DRIVERID 01085000
  1090. MVC CMXMSGV4(4),LACTCLS1 MOVE IN THE CLASSES 01086000
  1091. LA R15,700 MOVE IN THE MSG NUMBER 01087000
  1092. LA R0,28+5*8 LENGTH OF VARIABLE FIELD 01088000
  1093. B CMXDOIT AND WRITE THE MSG 01089000
  1094. SPACE 2 01090000
  1095. STAMAXER EQU * 01091000
  1096. BAL R14,STAFREPT FREE THE PORT 01092000
  1097. L R6,TLINKS ADDR OF START OF LINK TABLS @VM01110 01092500
  1098. LH R0,4(R6) MAX ACTIVE LINKS COUNT @VM01110 01092600
  1099. B STAM710 ISSUE MAX ACTIVE MSG 01093000
  1100. EJECT 01094000
  1101. * 01095000
  1102. * FREE A PORT FOR THE CALLER 01096000
  1103. * 01097000
  1104. STAFREPT DC 0H'0' 01098000
  1105. XC LACTLINE(2),LACTLINE CLEAR LINK TABLE ENTRY 01099000
  1106. SPACE 01100000
  1107. L R6,TPORTS START OF PORT TABLE 01101000
  1108. ICM R7,B'1111',0(R6) COUNT OF LINE PORTS 01102000
  1109. BCR 8,R14 (BZ) - NO TABLE 01103000
  1110. LA R6,8(R6) ADDR OF FIRST 01104000
  1111. OI STALAXRQ+4,X'F0' MARK AS BUSY ... 01105000
  1112. STAFRENX EQU * 01106000
  1113. CLC STALAXRQ+4(2),0(R6) IS THIS THE ONE? 01107000
  1114. BE STAFREGT FOUND IT 01108000
  1115. LA R6,2(R6) NEXT ENTRY 01109000
  1116. BCT R7,STAFRENX TRY IT 01110000
  1117. SPACE 01111000
  1118. * 01112000
  1119. * ENTRY NOT FOUND 01113000
  1120. * 01114000
  1121. BR R14 RETURN TO CALLER 01115000
  1122. SPACE 01116000
  1123. STAFREGT EQU * 01117000
  1124. NI 0(R6),X'0F' FREE IT 01118000
  1125. BR R14 01119000
  1126. EJECT 01120000
  1127. STACRERR EQU * 01121000
  1128. BAL R14,STAFREPT FREE THE PORT 01122000
  1129. SLL R15,2 RETURN CODE*4 01123000
  1130. B STAERVEC-4(R15) AND USE CORRECT MSG 01124000
  1131. SPACE 1 01125000
  1132. STAERVEC EQU * 01126000
  1133. B STAM707 INVALID LOAD DATA FORMAT 01127000
  1134. B STAM708 REQ'D STORAGE UNAVAILABLE 01128000
  1135. B STAM709 TASK NAME DUPLICATE 01129000
  1136. B STAM708 MAX NO TASKS ACTIVE 01130000
  1137. B STAM708 NO SUP QUEUE ELEMENT AVAILABLE 01131000
  1138. B STAM707 UNEXPECTED EOF 01132000
  1139. B STAM705 FILE NOT FOUND 01133000
  1140. B STAM706 FILE (CMS) FORMAT ERROR 01134000
  1141. B STAM706 I/O ERROR 01135000
  1142. SPACE 3 01136000
  1143. STAM701 EQU * 01137000
  1144. LA R15,701 SET MESSAGE NUMBER 01138000
  1145. B CMXMLNK1 AND CONTINUE 01139000
  1146. SPACE 1 01140000
  1147. STAM702 EQU * 01141000
  1148. LA R8,R0LADD GET LINE ADDR 01142000
  1149. LA R9,CMXMSGV0 FIRST MSG PARM 01143000
  1150. BAL R14,CMXMCUU AND CONVERT TO EBCDIC 01144000
  1151. MVC CMXMSGV1(8),STALAXRQ+8 MOVE IN THE LINKID 01145000
  1152. MVC CMXMSGV2(8),LINKID MOVE IN THE OTHER ID 01146000
  1153. LA R0,28+3*8 LENGTH OF MSG 01147000
  1154. LA R15,702 MSG NUMBER 01148000
  1155. B CMXDOIT AND WRITE IT 01149000
  1156. SPACE 1 01150000
  1157. STAM703 EQU * 01151000
  1158. LA R8,R0LADD GET THE LINE ADDR 01152000
  1159. LA R9,CMXMSGV0 AND MSG TARGET 01153000
  1160. BAL R14,CMXMCUU AND MOVE INTO MSG 01154000
  1161. LA R15,703 MSG NUMBER 01155000
  1162. B CMXMLNK2 AND CONTINUE 01156000
  1163. SPACE 1 01157000
  1164. STAM704 EQU * 01158000
  1165. LA R8,R0LADD GET LINE ADDR 01159000
  1166. LA R9,CMXMSGV0 AND MSG TARGET 01160000
  1167. BAL R14,CMXMCUU AND CONVERT AND MOVE INTO MSG 01161000
  1168. LA R15,704 SET MSG NUMBER 01162000
  1169. B CMXMLNK2 AND CONTINUE 01163000
  1170. SPACE 1 01164000
  1171. STAM705 EQU * 01165000
  1172. MVC CMXMSGV0(8),R0DRVR GET DRIVER ID 01166000
  1173. L R8,=V(DMTCREDA) GET SYS DISK I/O TABLE ADDR 01167000
  1174. LA R8,DEVCUU-IOTABLE(R8) SYS DISK CUU ADDR 01168000
  1175. LA R9,CMXMSGV1 MSG TARGET 01169000
  1176. BAL R14,CMXMCUU CONVERT AND MOVE TO MSG 01170000
  1177. MVC CMXMSGV2(8),LINKID AND MOVE IN THE LINKID 01171000
  1178. LA R0,28+3*8 MSG LENGTH 01172000
  1179. LA R15,705 MSG NUMBER 01173000
  1180. B CMXDOIT AND WRITE IT 01174000
  1181. SPACE 1 01175000
  1182. STAM706 EQU * 01176000
  1183. L R8,=V(DMTCREDA) GET SYS DISK I/O TABLE ADDR 01177000
  1184. LA R8,DEVCUU-IOTABLE(R8) SYS DISK CUU ADDR 01178000
  1185. LA R9,CMXMSGV0 MSG TARGET 01179000
  1186. BAL R14,CMXMCUU CONVERT AND MOVE TO MSG 01180000
  1187. LA R15,706 SET MSG NUMBER 01181000
  1188. B CMXMLNK2 AND CONTINUE 01182000
  1189. SPACE 1 01183000
  1190. STAM707 EQU * 01184000
  1191. MVC CMXMSGV0(8),R0DRVR MOVE DRIVERID 01185000
  1192. LA R15,707 MSG NUMBER 01186000
  1193. B CMXMLNK2 AND CONTINUE 01187000
  1194. SPACE 1 01188000
  1195. STAM708 EQU * 01189000
  1196. LA R15,708 SET MSG NUMBER 01190000
  1197. B CMXMLNK1 AND CONTINUE 01191000
  1198. SPACE 1 01192000
  1199. STAM709 EQU * 01193000
  1200. MVC CMXMSGV0(4),R0TNME TASK NAME 01194000
  1201. LA R15,709 SET MSG NUMBER 01195000
  1202. B CMXMLNK2 AND CONTINUE 01196000
  1203. SPACE 1 01197000
  1204. STAM710 EQU * 01198000
  1205. SLR R1,R1 NO MIN DIGIT COUNT 01200000
  1206. LA R6,CMXMSGV0 NUMBER TARGET 01201000
  1207. BAL R14,DECPUT STOW EBCDIC COUNT 01202000
  1208. LA R15,710 FULL MSG CODE 01203000
  1209. B CMXMLNK2 ISSUE MESSAGE 01204000
  1210. SPACE 1 01205000
  1211. STAM750 EQU * 01206000
  1212. LA R15,750 SET MSG NUMBER 01207000
  1213. B CMXMLNK1 AND CONTINUE 01208000
  1214. SPACE 1 01209000
  1215. STAM751 EQU * 01210000
  1216. LA R15,751 SET MSG NUMBER 01211000
  1217. B CMXMLNK1 AND CONTINUE 01212000
  1218. EJECT 01213000
  1219. *. 01214000
  1220. *---------------------------------------------------------------------* 01215000
  1221. * DEFINE COMMAND * 01216000
  1222. *---------------------------------------------------------------------* 01217000
  1223. * 01218000
  1224. * OPERATION - 01219000
  1225. * 01220000
  1226. * IF THE SPECIFIED LINK IS ALREADY DEFINED AND INACTIVE, 01221000
  1227. * DEFAULT PARAMETER VALUES ARE INITIALIZED, ROUTINE 01222000
  1228. * 'R0FORMAT' IS CALLED TO DECODE REMAINDER OF COMMAND 01223000
  1229. * LINE OVERRIDING PARAMETER SETTINGS, AND A REDEFINE 01224000
  1230. * IS PERFORMED. IF THE SPECIFIED LINK IS NOT DEFINED, 01225000
  1231. * DEFAULT PARAMETERS ARE INITIALIZED, ROUTINE 'R0FORMAT' 01226000
  1232. * IS CALLED TO DECODE OVERRIDING PARAMETER VALUE SPECI- 01227000
  1233. * FICATIONS, AND THE NEW LINK IS DEFINED. 01228000
  1234. * 01229000
  1235. * RESPONSES - 01230000
  1236. * 01231000
  1237. * DMTCMX540I NEW LINK 'LINKID' DEFINED 01232000
  1238. * DMTCMX541I LINK 'LINKID' REDEFINED 01233000
  1239. * 01234000
  1240. * ERROR MESSAGES - 01235000
  1241. * 01236000
  1242. * DMTCMX202E INVALID LINK 'LINKID' 01236100
  1243. * DMTCMX542E LINK 'LINKID' ACTIVE -- NOT REDEFINED 01237000
  1244. * DMTCMX543E LINK 'LINKID' NOT DEFINED -- LINK LIMIT REACHED 01238000
  1245. * DMTCMX544E LINK 'LINKID' NOT DEFINED -- TYPE NOT SPECIFIED 01239000
  1246. *. 01240000
  1247. SPACE 01241000
  1248. DEFINE DC 0H'0' 01242000
  1249. LA R1,DEFSETUP SET KYWD SCAN TABLE ADDR 01243000
  1250. BAL R14,LTABGET TRY FOR A DEFINED LINK 01244000
  1251. B DEFNOLNK NOPE - TRY SOMETHING ELSE 01245000
  1252. * 01246000
  1253. * GOT DEFINED LINK TABLE ENTRY 01247000
  1254. * 01248000
  1255. TM LFLAG,LACTIVE DEFINE COMMAND VALID? 01249000
  1256. BO DEFM542 NOT FOR ACTIVE LINK 01250000
  1257. MVC R0CLS1(4),LDEFCLS1 SET DEFAULT CLASSES 01251000
  1258. MVC DEFKEEP(2),LRESERVD DEFAULT KEEP SLOT 01252000
  1259. MVC R0LADD(2),LDEFLINE DEFAULT LINE ADDRESS 01253000
  1260. MVC R0TNME(4),LDEFTNME DEFAULT TASK NAME 01254000
  1261. MVC R0DRVR(8),LDEFDRVR DEFAULT DRIVER TYPE 01255000
  1262. B R0FORMAT DECODE THE KEYWORDS 01256000
  1263. SPACE 01257000
  1264. DEFNOLNK EQU * 01258000
  1265. BC 13,CMXM202 INVALID LINK ID 01259000
  1266. L R2,TLINKS START OF LINK TABLE 01260000
  1267. L R6,0(R2) COUNT OF ENTRIES 01261000
  1268. LA R2,8(R2) FIRST LINK TABLE ENTRY 01262000
  1269. BCTR R6,0 DON'T LOOK AT LOCAL 01263000
  1270. LTR R6,R6 ANY AT ALL? 01264000
  1271. BZ DEFM543 NO 01265000
  1272. DEFNEXT EQU * 01266000
  1273. LA R2,LINKLEN(R2) NEXT LINK TABLE 01267000
  1274. CLI 0(R2),C' ' IN USE? 01268000
  1275. BE DEFLKNEW NOPE - USE IT 01269000
  1276. BCT R6,DEFNEXT TRY NEXT 01270000
  1277. B DEFM543 NONE AVAILABLE 01271000
  1278. SPACE 01272000
  1279. DEFLKNEW EQU * 01273000
  1280. * 01274000
  1281. * SET STANDARD DEFAULTS 01275000
  1282. * 01276000
  1283. MVC DEFID(8),CMXBLANK BLANK ID TO START 01277000
  1284. LA R6,DEFID TARGET ID FIELD 01278000
  1285. EX R4,CMXMOVE MOVE ID TO ID FIELD 01279000
  1286. MVC R0CLS1(4),=CL8'*' STANDARD CLASS DEFAULT = * 01280000
  1287. LA R6,2 STANDARD HOLD COUNT 01281000
  1288. STH R6,DEFKEEP SET DEFAULT FIELD 01282000
  1289. XC R0LADD(2),R0LADD UNDEFINED STANDARD 01283000
  1290. MVC R0TNME(4),DEFID DEFAULT TO LINK ID 01284000
  1291. MVI R0DRVR,X'FF' DRIVER ID MUST BE STATED 01285000
  1292. LA R3,1(R4,R3) UP TO START OF NEXT PARM 01286000
  1293. BAL R14,PARMGET AND FRAME IT 01287000
  1294. B R0FORMAT DECODE KEYWORDS FROM LINE 01288000
  1295. SPACE 3 01289000
  1296. DEFDO EQU * 01290000
  1297. LA R15,541 SET REDEFINED MSG CODE 01291000
  1298. CLI LINKID,C' ' REDEFINE? 01292000
  1299. BNE DEFREDEF YEP 01293000
  1300. CLI R0DRVR,X'FF' DRIVER SPECIFIED? 01294000
  1301. BE DEFM544 NOPE - INVALID 01295000
  1302. LA R15,540 SET NEW DEFINE CODE 01296000
  1303. MVC LINKID(8),DEFID NEW LINK ID 01297000
  1304. DEFREDEF EQU * 01298000
  1305. MVC LDEFCLS1(4),R0CLS1 LINKS FOR DEFAULT 01299000
  1306. MVC LRESERVD(2),DEFKEEP KEEP SLOTS FOR DEFAULT 01300000
  1307. MVC LDEFLINE(2),R0LADD LINE FOR DEFAULT 01301000
  1308. MVC LDEFTNME(4),R0TNME TASK FOR DEFAULT 01302000
  1309. MVC LDEFDRVR(8),R0DRVR TYPE FOR DEFAULT 01303000
  1310. * 01304000
  1311. * NEW OR RE DEFINITION COMPLETE 01305000
  1312. * 01306000
  1313. B CMXMLNK1 ISSUE SUCCESS MSG 01307000
  1314. SPACE 3 01308000
  1315. DEFM542 EQU * 01309000
  1316. LA R15,542 MSG CODE 01310000
  1317. B CMXMLNK1 SET LINK ID 01311000
  1318. SPACE 01312000
  1319. DEFM543 EQU * 01313000
  1320. LA R15,543 MSG CODE 01314000
  1321. B CMXMV1 SET LINK ID FROM LINE 01315000
  1322. SPACE 01316000
  1323. DEFM544 EQU * 01317000
  1324. LA R15,544 MSG CODE 01318000
  1325. LA R3,DEFID SET ID POINTER 01319000
  1326. LA R4,7 AND LENGTH (-1) 01320000
  1327. B CMXMV1 AND DO THE MSG 01321000
  1328. EJECT 01322000
  1329. *. 01323000
  1330. *---------------------------------------------------------------------* 01324000
  1331. * R0FORMAT -- DECODE START AND DEFINE COMMAND LINES * 01325000
  1332. *---------------------------------------------------------------------* 01326000
  1333. * 01327000
  1334. * OPERATION - 01328000
  1335. * 01329000
  1336. * ON ENTRY, GREG1 POINTS TO A TABLE OF INITIAL REG VALUES 01330000
  1337. * FOR A CALL TO KEYWDGET, SPECIFYING A TABLE OF VALID 01331000
  1338. * KEYWORDS FOR THE CALLING COMMAND ROUTINE. THE ENTIRE 01332000
  1339. * COMMAND LINE IS DECODED THROUGH CALLS TO KEYWDGET, 01333000
  1340. * AND THE VARIABLE VALUES R0DRVR - R0LAD0 ARE FILLED IN 01334000
  1341. * AS SPECIFIED IN THE COMMAND LINE. 01335000
  1342. * 01336000
  1343. * RESPONSES - 01337000
  1344. * 01338000
  1345. * NONE 01339000
  1346. * 01340000
  1347. * ERROR MESSAGES - 01341000
  1348. * 01342000
  1349. * DMTCMX204E INVALID KEYWORD 'KEYWORD' 01343000
  1350. * DMTCMX205E CONFLICTING KEYWORD 'KEYWORD' 01344000
  1351. * DMTCMX206E INVALID OPTION 'KEYWORD' 'OPTION' 01345000
  1352. *. 01346000
  1353. SPACE 01347000
  1354. R0FORMAT EQU * 01348000
  1355. LM R7,R9,0(R1) LOAD SCAN REGISTERS 01349000
  1356. BAL R14,TBLCLEAR CLEAR THE TABLE 01350000
  1357. R0SCAN EQU * 01351000
  1358. LM R7,R9,0(R1) SETUP FOR SCAN 01352000
  1359. BAL R14,KEYWDGET GET A KEYWORD 01353000
  1360. BC 7,CMXM204 INVALID KEYWORD - ERROR 01354000
  1361. CLI CMXELCOD,X'80' END OF LINE - START COMMAND? 01355000
  1362. BE STADO YES - DO THE START 01356000
  1363. B DEFDO FINISH OFF DEFINE 01357000
  1364. SPACE 01358000
  1365. R0MORE EQU * 01359000
  1366. LA R3,1(R4,R3) UP TO START OF NEXT PARM 01360000
  1367. BAL R14,PARMGET FRAME IT 01361000
  1368. B R0SCAN SCAN FOR A KEYWORD 01362000
  1369. SPACE 1 01363000
  1370. R0CLASS EQU * 01364000
  1371. TM 12(R7),X'80' HAVE I SEEN IT BEFORE? 01365000
  1372. BO CMXM205 YES..CONFLICT 01366000
  1373. OI 12(R7),X'80' INDICATE THIS ONE FOUND 01367000
  1374. SR R4,R3 GET LENGTH OF PARM 01368000
  1375. BNP CMXM206 ERROR IF NOT POSITIVE 01369000
  1376. BCTR R4,0 DOWN BY ONE FOR CHAR OP 01370000
  1377. LTR R4,R4 COUNT OF ONE? 01371000
  1378. BNZ R0CLMULT NOPE - '*' IMPOSSIBLE 01372000
  1379. CLI 0(R3),C'*' IS IT ALL-CLASS? 01373000
  1380. BE R0CLASTK YEP - SKIP ALPHA TEST 01374000
  1381. R0CLMULT EQU * 01375000
  1382. LA R0,4 GET MAX 01376000
  1383. CLR R4,R0 TOO LONG 01377000
  1384. BNL CMXM206 ERROR 01378000
  1385. LR R6,R2 SAVE LINKTABL ADDRESS 01379000
  1386. EX R4,CMXATEST VALIDATE CLASS SPEC 01380000
  1387. LR R2,R6 RESTORE LINKTABL ADDR 01381000
  1388. BC 7,CMXM206 INVALID CHAR DETECTED 01382000
  1389. R0CLASTK EQU * 01383000
  1390. MVC R0CLS2(3),CMXBLANK BLANK RIGHT SIDE 01384000
  1391. LA R6,R0CLS1 GET FIRST FIELD ADDR 01385000
  1392. EX R4,CMXMOVE MOVE CLASSES TO LINKTABL 01386000
  1393. B R0MORE AND CONTINUE 01387000
  1394. SPACE 01388000
  1395. R0LINE EQU * 01389000
  1396. TM 12(R7),X'80' HAVE WE ALREADY SEEN THIS PARM? 01390000
  1397. BO CMXM205 YES..ERROR 01391000
  1398. OI 12(R7),X'80' INDICATE WE HAVE FOUND IT 01392000
  1399. LM R8,R9,CMXDVRNG GET THE RANGE FOR LINE ADDRS 01393000
  1400. BAL R14,HEXGET GO GET THE LINE ADDR 01394000
  1401. BC 7,CMXM206 ERROR 01395000
  1402. * VALID LINE ADDR IN IN REG.0 01396000
  1403. STH R0,R0LADD SAVE IN LINE FIELD 01397000
  1404. B R0MORE AND GO GET THE NEXT PARM 01398000
  1405. SPACE 1 01399000
  1406. R0TASK EQU * 01400000
  1407. TM 12(R7),X'80' ALREADY SEEN THIS ONE? 01401000
  1408. BO CMXM205 YES..ERROR 01402000
  1409. OI 12(R7),X'80' NOW WE HAVE SEEN IT 01403000
  1410. SR R4,R3 CALCULATE LENGTH 01404000
  1411. BCTR R4,0 REDUCE BY 1 FOR CHAR OP 01405000
  1412. LA R0,4 MAX LENGTH 01406000
  1413. CLR R4,R0 TOO LONG? 01407000
  1414. BNL CMXM206 YES 01408000
  1415. MVC R0TNME(4),CMXBLANK BLANK OUT 01409000
  1416. LA R6,R0TNME GET THE TASK NAME FIELD 01410000
  1417. EX R4,CMXMOVE AND SET TO SPECIFICATION 01411000
  1418. B R0MORE GET THE NEXT PARM 01412000
  1419. SPACE 1 01413000
  1420. R0TYPE EQU * 01414000
  1421. TM 12(R7),X'80' HAVE WE SEEN THIS ONE BEFORE? 01415000
  1422. BO CMXM205 YES..ERROR 01416000
  1423. OI 12(R7),X'80' NOW WE HAVE 01417000
  1424. SR R4,R3 GET LENGTH OF PARM 01418000
  1425. BNP CMXM206 ERROR 01419000
  1426. BCTR R4,0 REDUCE BY ONE FOR CHAR OP 01420000
  1427. CL R4,CMXLIMIT TOO LONG? 01421000
  1428. BNL CMXM206 YES 01422000
  1429. MVC R0DRVR(8),CMXBLANK BLANK OUT FIELD 01423000
  1430. LA R6,R0DRVR GET DRIVER FIELD 01424000
  1431. EX R4,CMXMOVE AND MOVE IT IN 01425000
  1432. B R0MORE GO GET THE NEXT PARM 01426000
  1433. SPACE 1 01427000
  1434. R0PARM EQU * 01428000
  1435. ST R3,STARPARM+4 STORE START START OF PARM FIELD 01429000
  1436. R0PSCAN EQU * 01430000
  1437. BCTR R5,0 REDUCE BY ONE FOR CHAR OP 01431000
  1438. CLR R3,R5 END? 01432000
  1439. BH STADO NULL PARM LINE 01433000
  1440. CLI 0(R5),C' ' BLANK YET? 01434000
  1441. BE R0PSCAN YES ..END 01435000
  1442. LA R5,1(R5) UP BY ONE 01436000
  1443. SR R5,R3 GET THE LENGTH 01437000
  1444. ST R5,STARPARM STORE PARM COUNT 01438000
  1445. B STADO DO IT 01439000
  1446. SPACE 01440000
  1447. R0KEEP EQU * 01441000
  1448. TM 12(R7),X'80' SEEN KEEP ALREADY? 01442000
  1449. BO CMXM205 YEP - CONFLICT 01443000
  1450. OI 12(R7),X'80' SET SEEN FLAG 01444000
  1451. LM R8,R9,CMXKPRNG SET VALID KEEP RANGE 01445000
  1452. BAL R14,DECGET LOAD THE SPECIFIED NUMBER 01446000
  1453. BC 7,CMXM206 NO GOOD 01447000
  1454. STH R0,DEFKEEP SAVE FOR LATER 01448000
  1455. B R0MORE AND GET ANOTHER KEYWORD 01449000
  1456. EJECT 01450000
  1457. DEFSETUP DC A(DEFTABLE) START OF DEFINE TABLE 01451000
  1458. DC A(R0INC) LENGTH OF ENTRY 01452000
  1459. DC A(DEFEND-R0INC) ADDR OF LAST ENTRY 01453000
  1460. SPACE 01454000
  1461. STASETUP DC A(STATABLE) START OF START TABLE 01455000
  1462. DC A(R0INC) LENGTH OF ENTRY 01456000
  1463. DC A(STAEND-R0INC) START OF LAST ENTRY 01457000
  1464. SPACE 1 01458000
  1465. R0INC EQU 8+4+4 LENGTH OF TABLE ENTRY 01459000
  1466. SPACE 01460000
  1467. DEFTABLE DC 0F'0' 01461000
  1468. DC CL8'KEEP',AL1(4-1),AL3(R0KEEP),XL4'0' 01462000
  1469. STATABLE EQU * 01463000
  1470. DC CL8'CLASS',AL1(2-1),AL3(R0CLASS),XL4'0' CLASS OPTION 01464000
  1471. DC CL8'LINE',AL1(4-1),AL3(R0LINE),XL4'0' LINE OPTION 01465000
  1472. DC CL8'TASK',AL1(4-1),AL3(R0TASK),XL4'0' TASK OPTION 01466000
  1473. DC CL8'TYPE',AL1(4-1),AL3(R0TYPE),XL4'0' TYPE OPTION 01467000
  1474. DEFEND EQU * 01468000
  1475. DC CL8'PARM',AL1(1-1),AL3(R0PARM),XL4'0' PARM OPTION 01469000
  1476. STAEND EQU * 01470000
  1477. SPACE 1 01471000
  1478. STARPARM DC 2F'0' PARM REGS TO PASS TO LINE DRIVERS 01472000
  1479. SPACE 1 01473000
  1480. R0DRVR DC CL8' ' DRIVER ID START FIELD 01474000
  1481. R0TNME DC CL4' ' TASK NAME START FIELD 01475000
  1482. R0CLS1 DC C' ' CLASS START FIELD 01476000
  1483. R0CLS2 DC CL3' ' 01477000
  1484. R0LADD DC H'0' LINE ADDR START FIELD 01478000
  1485. SPACE 1 01479000
  1486. DEFKEEP DC H'0' HOLD SLOT FIELD 01480000
  1487. DEFID DC CL8' ' LINK ID FIELD FOR DEFINE 01481000
  1488. SPACE 01482000
  1489. STALAXRQ DC 0F'0',AL1(16-1),X'01',X'0000' LAX ALERT REQ 01483000
  1490. DC X'0000',X'0000' LINE ADDR, UNUSED 01484000
  1491. DC CL8' ' LINKID RETURN FIELD 01485000
  1492. EJECT 01486000
  1493. *. 01487000
  1494. *--------------------------------------------------------------------* 01488000
  1495. * DELETE COMMAND * 01489000
  1496. *--------------------------------------------------------------------* 01490000
  1497. * 01491000
  1498. * RESPONSES - 01492000
  1499. * 01493000
  1500. * DMTCMX550I LINK 'LINKID' NOW DELETED 01494000
  1501. * 01495000
  1502. * ERROR MESSAGES - 01496000
  1503. * 01497000
  1504. * DMTCMX551E LINK 'LINKID' ACTIVE -- NOT DELETED 01498000
  1505. * DMTCMX552E LINK 'LINKID' HAS A FILE QUEUE - NOT DELETED 01499000
  1506. *. 01500000
  1507. SPACE 01501000
  1508. DELETE DC 0H'0' 01502000
  1509. BAL R14,LTABGET LOCATE DELETEE LINK TABLE 01503000
  1510. B CMXNOLNK NONE - FORGET IT 01504000
  1511. TM LFLAG,LACTIVE IS THE LINK ACTIVE NOW? 01505000
  1512. BNZ DELM551 YEP - FOUL 01506000
  1513. SPACE 01507000
  1514. OC LPOINTER(4),LPOINTER IS THERE A TAG QUEUE? 01508000
  1515. BNZ DELM552 YEP - NO DELETE 01509000
  1516. OC LPENDING(2),LPENDING OR PENDING FILES? 01510000
  1517. BNZ DELM552 SAME PROBLEM IF SO 01511000
  1518. SPACE 01512000
  1519. DELDELET EQU * 01513000
  1520. MVC CMXMSGV0(8),LINKID SET LINK ID IN MSG 01514000
  1521. MVI LINKID,C' ' UNDEFINE THE LINK 01515000
  1522. LA R0,28+8 SET MSG ELEMENT LENGTH 01516000
  1523. LA R15,550 SET NORMAL RESPONSE MSG 01517000
  1524. B CMXDOIT ISSUE RESPONSE MSG 01518000
  1525. SPACE 01519000
  1526. DELM551 EQU * 01520000
  1527. LA R15,551 SET ERROR MSG CODE 01521000
  1528. B CMXMLNK1 ISSUE RESPONSE 01522000
  1529. DELM552 EQU * 01523000
  1530. LA R15,552 SET ERROR MSG CODE 01524000
  1531. B CMXMLNK1 ISSUE RESPONSE 01525000
  1532. EJECT 01526000
  1533. *. 01527000
  1534. *---------------------------------------------------------------------* 01528000
  1535. * DISCONN COMMAND * 01529000
  1536. *---------------------------------------------------------------------* 01530000
  1537. * 01531000
  1538. * RESPONSES - 01532000
  1539. * 01533000
  1540. * DMTCMX560I RSCS DISCONNECTING 01534000
  1541. * 01535000
  1542. * ERROR MESSAGES - 01536000
  1543. * 01537000
  1544. * DMTCMX208E INVALID USER ID 'USERID' 01538000
  1545. * DMTCMX561E USER 'USERID' NOT RECEIVING 01539000
  1546. *. 01540000
  1547. SPACE 01541000
  1548. DISCONN DC 0H'0' 01542000
  1549. MVC DISMSGID(8),CMXBLANK INITIALIZE MSG ID 01543000
  1550. CLR R3,R5 END OF LINE? 01544000
  1551. BNL DISCHARG YES - DO IT AS IS 01545000
  1552. SR R4,R3 ID CHAR COUNT 01546000
  1553. BCTR R4,0 DECREMENT ONE 01547000
  1554. BNP CMXM208 BAD COUNT - ERROR 01548000
  1555. CL R4,CMXLIMIT TOO LONG? 01549000
  1556. BNL CMXM208 YEP - REJECT IT 01550000
  1557. LA R6,DISMSGID MSG ID TARGET 01551000
  1558. EX R4,CMXMOVE MOVE ID TO MSG LINE 01552000
  1559. SPACE 01553000
  1560. LA R1,DISMSG ADDR OF MSG LINE 01554000
  1561. LA R2,L'DISMSG LENGTH OF MSG LINE 01555000
  1562. L R15,=V(DMTREXHC) ENTRY FOR HYPERVISOR CALL 01556000
  1563. BALR R14,R15 ISSUE MSG REQUEST 01557000
  1564. LTR R2,R2 ANY GOOD? 01558000
  1565. BNZ DISM561 ID NO GOOD - ERROR 01559000
  1566. SPACE 01560000
  1567. DISCHARG EQU * 01561000
  1568. MVI CMXMSG,28-1 SET COUNT FOR MSG REQ 01562000
  1569. LA R15,560 SET MSG REQ CODE 01563000
  1570. STH R15,CMXMSGNM STORE CODE IN REQUEST 01564000
  1571. LA R1,CMXMSG ADDR OF MSG REQUEST 01565000
  1572. L R15,=V(DMTMGX) ENTRY FOR MESSAGE EXECUTOR 01566000
  1573. BALR R14,R15 CALL MESSAGE EXECUTION 01567000
  1574. SPACE 01568000
  1575. L R15,=V(DMTREXID) ADDR OF REX'S MSG ID 01569000
  1576. MVC 0(8,R15),DISMSGID MOVE ID TO REX'S FIELD 01570000
  1577. L R1,=V(DMTREXCN) ADDR OF CONSOLE I/O TABLE 01571000
  1578. MVI DEVCODE-IOTABLE(R1),X'FF' SET DISCONNECT 01572000
  1579. SPACE 01573000
  1580. LA R1,DISDISCN ADDR OF DISCONN COMMAND 01574000
  1581. LA R2,L'DISDISCN LENGTH OF DISCONN COMMAND 01575000
  1582. L R15,=V(DMTREXHC) ENTRY FOR HYPERVISOR CALL 01576000
  1583. BALR R14,R15 DISCONNECT FROM VM/370 01577000
  1584. B CMXFINIS CHECK STORAGE AND EXIT 01578000
  1585. SPACE 3 01579000
  1586. DISM561 EQU * 01580000
  1587. LA R15,561 SET MSG CODE 01581000
  1588. B CMXMV1 AND ISSUE MSG 01582000
  1589. SPACE 3 01583000
  1590. DISMSG DC C'M XXXXXXXX ' 01584000
  1591. DISMSGID EQU DISMSG+2 01585000
  1592. SPACE 01586000
  1593. DISDISCN DC C'DISCONN' 01587000
  1594. EJECT 01588000
  1595. *. 01589000
  1596. *---------------------------------------------------------------------* 01590000
  1597. * PURGE COMMAND * 01591000
  1598. *---------------------------------------------------------------------* 01592000
  1599. * 01593000
  1600. * OPERATION - 01594000
  1601. * 01595000
  1602. * PURGE PROCESSING SHARES ORDER PROCESSING, CODED BELOW. 01596000
  1603. *. 01597000
  1604. SPACE 01598000
  1605. PURGE DC 0H'0' 01599000
  1606. SPACE 2 01600000
  1607. *. 01601000
  1608. *---------------------------------------------------------------------* 01602000
  1609. * ORDER COMMAND * 01603000
  1610. *---------------------------------------------------------------------* 01604000
  1611. * 01605000
  1612. * OPERATION - 01606000
  1613. * 01607000
  1614. * FOR PURGE AND ORDER COMMANDS, A FORMAT A1 COMMAND ELEMENT 01608000
  1615. * IS BUILT AND PASSED TO AXS THROUGH THE ALERT INTERFACE. 01609000
  1616. * 01610000
  1617. * RESPONSES - 01611000
  1618. * 01612000
  1619. * NONE 01613000
  1620. * 01614000
  1621. * ERROR MESSAGES - 01615000
  1622. * 01616000
  1623. * DMTCMX203E INVALID SPOOL FILE ID 'SPOOLID' 01617000
  1624. *. 01618000
  1625. SPACE 01619000
  1626. ORDER EQU * 01620000
  1627. SPACE 2 01621000
  1628. A1FORMAT EQU * 01622000
  1629. LTR R0,R0 REMOTE ORIGIN? 01623000
  1630. BNZ A1FLKGOT YES - GOT LINK TABLE 01624000
  1631. BAL R14,LTABGET GET SPECIFIED LINK FROM LINE 01625000
  1632. B CMXNOLNK NO GOT - ERROR 01626000
  1633. MVI CMXELMOD,X'80' SET AXS TO RESPOND TO LOCAL 01627000
  1634. MVC CMXELORG(8),LINKID SET OBJECT LINK 01628000
  1635. A1FLKGOT EQU * 01629000
  1636. CLR R3,R5 ANY LINE TO GO? 01630000
  1637. BNL CMXM203 INVALID SPOOL FILE ID 01631000
  1638. LA R6,CMXELVAR+2 INITIALIZE LOAD POINTER 01632000
  1639. LA R7,CMXELVAR+L'CMXELVAR INITIALIZE LOAD LIMIT 01633000
  1640. LM R8,R9,CMXSPRNG GET VALID SPOOL ID RANGE 01634000
  1641. BAL R14,DECGET LOAD A SPOOL ID 01635000
  1642. BC 8,A1FSTOW GOT ONE - USE IT 01636000
  1643. BC 5,CMXM203 INVALID SPOOL FILE ID 01637000
  1644. CLI CMXELCOD,X'11' PURGE COMMAND? 01638000
  1645. BNE CMXM203 NO - 'ALL' INVALID 01639000
  1646. LA R0,2 LENGTH -1 OF 'ALL' 01640000
  1647. CLR R4,R0 RIGHT LENGTH? 01641000
  1648. BNE CMXM203 NO - INVALID SPOOL ID 01642000
  1649. CLC 0(3,R3),=C'ALL' DOES IT SAY 'ALL'? 01643000
  1650. BNE CMXM203 NO - INVALID SPOOL ID 01644000
  1651. OI CMXELMOD,X'40' SET TO PURGE ALL 01645000
  1652. LA R0,12 SET LENGTH OF CMD ELMNT 01646000
  1653. B A1FIRE GIVE IT TO AXS 01647000
  1654. SPACE 01648000
  1655. A1FSTOW EQU * 01649000
  1656. CLR R6,R7 ANY ROOM LEFT? 01650000
  1657. BNL A1FINIS NOPE - TRUNCATE LINE 01651000
  1658. STH R0,0(R6) SET SPOOL ID IN CMD 01652000
  1659. LA R6,2(R6) AND UPDATE LOAD POINT 01653000
  1660. LA R3,1(R4,R3) END OF CURRENT PARM 01654000
  1661. BAL R14,PARMGET TO START OF NEXT 01655000
  1662. CLR R3,R5 ANY? 01656000
  1663. BNL A1FINIS NOPE - ALL DONE WITH LINE 01657000
  1664. BAL R14,DECGET GET ANOTHER SPOOL ID 01658000
  1665. BC 7,CMXM203 INVALID - ERROR 01659000
  1666. B A1FSTOW PUT IT IN THE CMD ELMNT 01660000
  1667. SPACE 01661000
  1668. A1FINIS EQU * 01662000
  1669. LR R0,R6 SAVE ENDING LOAD POINT 01663000
  1670. LA R7,CMXELVAR+2 STARTING LOAD POINT 01664000
  1671. SLR R6,R7 TOTAL BYTE COUNT OF ID'S 01665000
  1672. SRL R6,1 DIVIDE BY TWO 01666000
  1673. STH R6,CMXELVAR STOW SPOOL ID COUNT IN CMD 01667000
  1674. LA R7,CMXELMNT ADDR OF START OF CMD ELMNT 01668000
  1675. SLR R0,R7 TOTAL CMD ELMNT BYTE COUNT 01669000
  1676. SPACE 01670000
  1677. A1FIRE EQU * 01671000
  1678. BCTR R0,0 DECREMENT BY ONE 01672000
  1679. STC R0,CMXELLEN AND SET IN CMD ELEMNT 01673000
  1680. L R0,CMXAXS NAME 'AXS' 01674000
  1681. B CMXALRDY ALERT AXS 01675000
  1682. EJECT 01676000
  1683. *. 01677000
  1684. *---------------------------------------------------------------------* 01678000
  1685. * CHANGE COMMAND * 01679000
  1686. *---------------------------------------------------------------------* 01680000
  1687. * 01681000
  1688. * OPERATION - 01682000
  1689. * 01683000
  1690. * A FORMAT A2 COMMAND ELEMENT IS BUILT AND PASSED TO AXS. 01684000
  1691. * 01685000
  1692. * RESPONSES - 01686000
  1693. * 01687000
  1694. * NONE 01688000
  1695. * 01689000
  1696. * ERROR MESSAGES - 01690000
  1697. * 01691000
  1698. * DMTCMX203E INVALID SPOOL FILE ID 'SPOOLID' 01692000
  1699. * DMTCMX204E INVALID KEYWORD 'KEYWORD' 01693000
  1700. * DMTCMX205E CONFLICTING KEYWORD 'KEYWORD' 01694000
  1701. * DMTCMX206E INVALID OPTION 'KEYWORD' 'OPTION' 01695000
  1702. *. 01696000
  1703. SPACE 01697000
  1704. CHANGE DC 0H'0' 01698000
  1705. LTR R0,R0 REMOTE ORIGIN? 01699000
  1706. BNZ CHALKGOT YES - ALREADY HAVE LINK 01700000
  1707. BAL R14,LTABGET GET THE NAMED LINK TABLE 01701000
  1708. B CMXNOLNK NO LINK NO CHANGE 01702000
  1709. MVI CMXELMOD,X'80' SET AXS TO RESPOND TO LOCAL 01703000
  1710. MVC CMXELORG(8),LINKID SET LINK ID FOR AXS 01704000
  1711. CHALKGOT EQU * 01705000
  1712. CLR R3,R5 END OF LINE ALREADY? 01706000
  1713. BNL CMXM203 YEP - INVALID SPOOL ID 01707000
  1714. LM R8,R9,CMXSPRNG SET SPOOL ID RANGE 01708000
  1715. BAL R14,DECGET LOAD THE SPOOL ID 01709000
  1716. BC 7,CMXM203 INVALID - ERROR 01710000
  1717. STH R0,CMXELVAR SET SPOOL ID IN CMD 01711000
  1718. LA R3,1(R4,R3) END OF CURRENT PARM 01712000
  1719. BAL R14,PARMGET START OF NEXT 01713000
  1720. CLR R3,R5 END YET? 01714000
  1721. BNL CMXM204 INVALID KEYWORD ... 01715000
  1722. LM R7,R9,CHASETUP SET UP CHANGE TABLE 01716000
  1723. BAL R14,TBLCLEAR CLEAR VARIABLE AREAS 01717000
  1724. MVI CMXELVAR+2,X'FF' INITIALIZE UNSPEC FIELD 01718000
  1725. MVC CMXELVAR+3(37),CMXELVAR+2 DO WHOLE THING 01719000
  1726. SPACE 01720000
  1727. CHASCAN EQU * 01721000
  1728. LM R7,R9,CHASETUP SET UP FOR KEYWD SCAN 01722000
  1729. BAL R14,KEYWDGET LOOK FOR A KEYWORD 01723000
  1730. BC 7,CMXM204 FOUND AN INVALID ONE 01724000
  1731. SPACE 01725000
  1732. CHAFIRE EQU * 01726000
  1733. MVI CMXELLEN,52-1 SET ELEMENT LENGTH 01727000
  1734. L R0,CMXAXS GET 'AXS' NAME 01728000
  1735. B CMXALRDY ALERT AXS FOR COMMAND 01729000
  1736. SPACE 01730000
  1737. CHAMORE EQU * 01731000
  1738. LA R3,1(R4,R3) END OF CURRENT PARM 01732000
  1739. BAL R14,PARMGET START OF NEXT 01733000
  1740. B CHASCAN TRY FOR ANOTHER KEYWD 01734000
  1741. SPACE 01735000
  1742. CHAPRIOR EQU * 01736000
  1743. TM 12(R7),X'80' ALREADY SEEN? 01737000
  1744. BO CMXM205 YEP - CONFLICT 01738000
  1745. OI 12(R7),X'80' SET SEEN FLAG 01739000
  1746. LM R8,R9,CMXPRRNG VALID PRIORITY RANGE 01740000
  1747. BAL R14,DECGET LOAD THE PRIORITY 01741000
  1748. BC 7,CMXM206 INVALID OPTION 01742000
  1749. STH R0,CMXELVAR+2 SET IN CMD ELEMNT 01743000
  1750. B CHAMORE AND TRY ANOTHER 01744000
  1751. SPACE 01745000
  1752. CHACLASS EQU * 01746000
  1753. TM 12(R7),X'80' BEEN HERE BEFORE? 01747000
  1754. BO CMXM205 YEP - CONFLICT 01748000
  1755. OI 12(R7),X'80' SET SEEN FLAG 01749000
  1756. SR R4,R3 OPTION CHAR COUNT 01750000
  1757. BCTR R4,0 DECREMENT COUNT ONE 01751000
  1758. LTR R4,R4 WAS COUNT ONE? 01752000
  1759. BNZ CMXM206 NOPE - INVALID OPTION 01753000
  1760. EX 0,CMXATEST CHECK FOR VALIDITY 01754000
  1761. BC 7,CMXM206 INVALID CLASS CHAR 01755000
  1762. MVC CMXELVAR+5(1),0(R3) MOVE TO CMD ELMNT 01756000
  1763. B CHAMORE AND TRY ANOTHER 01757000
  1764. SPACE 01758000
  1765. CHACOPY EQU * 01759000
  1766. TM 12(R7),X'80' SEEN KEYWD ALREADY? 01760000
  1767. BO CMXM205 YEP - CONFLICT 01761000
  1768. OI 12(R7),X'80' SET SEEN FLAG 01762000
  1769. LM R8,R9,CMXCORNG VALID COPIES RANGE 01763000
  1770. BAL R14,DECGET LOAD REQUESTED COPIES 01764000
  1771. BC 7,CMXM206 INVALID NUMBER 01765000
  1772. STH R0,CMXELVAR+6 STOW COUNT IN ELMNT 01766000
  1773. B CHAMORE AND GO FOR MORE 01767000
  1774. SPACE 01768000
  1775. CHAHOLD EQU * 01769000
  1776. TM 12(R7),X'80' SEEN HOLD OR NOHOLD? 01770000
  1777. BO CMXM205 YEP - CONFLICT 01771000
  1778. OI 12(R7),X'80' SET SEEN FLAG 01772000
  1779. ALR R7,R8 BUMP TO NEXT ENTRY 01773000
  1780. OI 12(R7),X'80' FLAG NOHOLD TOO 01774000
  1781. NI CMXELVAR+4,X'7F' SET HOLD MOD 01775000
  1782. B CHASCAN AND TRY ANOTHER 01776000
  1783. SPACE 01777000
  1784. CHANOHOL EQU * 01778000
  1785. TM 12(R7),X'80' SEEN HOLD OR NOHOLD? 01779000
  1786. BO CMXM205 YEP - CONFLICT 01780000
  1787. OI 12(R7),X'80' FLAG AS SEEN 01781000
  1788. SLR R7,R8 BUMP TO LAST ENTRY 01782000
  1789. OI 12(R7),X'80' FLAG HOLD TOO 01783000
  1790. NI CMXELVAR+4,X'3F' SET NOHOLD MOD 01784000
  1791. B CHASCAN TRY ANOTHER 01785000
  1792. SPACE 01786000
  1793. CHADIST EQU * 01787000
  1794. SR R4,R3 OPTION CHAR COUNT 01788000
  1795. BCTR R4,0 DOWN ONE 01789000
  1796. BNP CMXM206 INVALID OPTION 01790000
  1797. CL R4,CMXLIMIT OPTION TOO LONG? 01791000
  1798. BNL CMXM206 YES - INVALID 01792000
  1799. MVC CMXELVAR+8(8),CMXBLANK BLANK TO START 01793000
  1800. LA R6,CMXELVAR+8 DIST CODE TARGET 01794000
  1801. EX R4,CMXMOVE MOVE DIST CODE TO CMD 01795000
  1802. B CHAMORE TRY ANOTHER 01796000
  1803. SPACE 01797000
  1804. CHANAME EQU * 01798000
  1805. SR R4,R3 OPTION CHAR COUNT 01799000
  1806. BCTR R4,0 DOWN ONE 01800000
  1807. BNP CMXM206 INVALID OPTION 01801000
  1808. LA R0,24 MAX COUNT FOR DSNAME 01802000
  1809. CLR R4,R0 TOO BIG? 01803000
  1810. BNL CMXM206 YEP - ERROR 01804000
  1811. MVI CMXELVAR+16,C' ' BLANK FIRST DSNAME CHAR 01805000
  1812. MVC CMXELVAR+17(23),CMXELVAR+16 BLANK WHOLE THING 01806000
  1813. LA R6,CMXELVAR+16 SET DSNAME TARGET 01807000
  1814. EX R4,CMXMOVE MOVE DSNAME TO CMD 01808000
  1815. CL R4,CMXLIMIT LESS THAN 9? 01809000
  1816. BNL CHANTERM NOPE - DONE 01810000
  1817. LA R3,1(R4,R3) END OF FNAME 01811000
  1818. BAL R14,PARMGET START OF FTYPE 01812000
  1819. SR R4,R3 COUNT OF FTYPE 01813000
  1820. BNP CHAFIRE NO FTYPE - ALL DONE 01814000
  1821. BCTR R4,0 COUNT DOWN ONE 01815000
  1822. CL R4,CMXLIMIT TOO LONG? 01816000
  1823. BNL CMXM206 YEP - INVALID OPTION 01817000
  1824. LA R6,CMXELVAR+28 SET FTYPE TARGET 01818000
  1825. EX R4,CMXMOVE MOVE FTYPE TO CMD 01819000
  1826. CHANTERM EQU * 01820000
  1827. LA R3,1(R4,R3) END OF NAME OPTION 01821000
  1828. BAL R14,PARMGET SEE IF ANY MORE 01822000
  1829. SR R4,R3 COUNT OF NEXT PARM 01823000
  1830. BCTR R4,0 DOWN ONE IN CASE ... 01824000
  1831. BNP CHAFIRE ALL DONE - DO IT 01825000
  1832. B CMXM204 ELSE INVALID KEYWORD 01826000
  1833. EJECT 01827000
  1834. CHASETUP DC A(CHATABLE) KEYWORD TABLE 01828000
  1835. DC A(CHAINC) LENGTH OF ENTRY 01829000
  1836. DC A(CHAEND-CHAINC) LAST ENTRY ADDR 01830000
  1837. SPACE 01831000
  1838. CHATABLE DC 0F'0' 01832000
  1839. DC CL8'PRIORITY',AL1(3-1),AL3(CHAPRIOR),XL4'0' 01833000
  1840. DC CL8'CLASS',AL1(2-1),AL3(CHACLASS),XL4'0' 01834000
  1841. DC CL8'COPY',AL1(2-1),AL3(CHACOPY),XL4'0' 01835000
  1842. DC CL8'HOLD',AL1(2-1),AL3(CHAHOLD),XL4'0' 01836000
  1843. DC CL8'NOHOLD',AL1(3-1),AL3(CHANOHOL),XL4'0' 01837000
  1844. DC CL8'DIST',AL1(2-1),AL3(CHADIST),XL4'0' 01838000
  1845. DC CL8'NAME',AL1(2-1),AL3(CHANAME),XL4'0' 01839000
  1846. CHAEND EQU * 01840000
  1847. SPACE 01841000
  1848. CHAINC EQU 8+4+4 LENGTH OF TABLE ENTRY 01842000
  1849. EJECT 01843000
  1850. *. 01844000
  1851. *---------------------------------------------------------------------* 01845000
  1852. * DRAIN COMMAND * 01846000
  1853. *---------------------------------------------------------------------* 01847000
  1854. * 01848000
  1855. * DRAIN PROCESSING SHARES TRACE PROCESSING CODED BELOW. 01849000
  1856. *. 01850000
  1857. SPACE 01851000
  1858. DRAIN DC 0H'0' 01852000
  1859. SPACE 2 01853000
  1860. *. 01854000
  1861. *---------------------------------------------------------------------* 01855000
  1862. * FREE COMMAND * 01856000
  1863. *---------------------------------------------------------------------* 01857000
  1864. * 01858000
  1865. * FREE PROCESSING SHARES TRACE PROCESSING CODED BELOW. 01859000
  1866. *. 01860000
  1867. SPACE 01861000
  1868. FREE EQU * 01862000
  1869. SPACE 2 01863000
  1870. *. 01864000
  1871. *---------------------------------------------------------------------* 01865000
  1872. * HOLD COMMAND * 01866000
  1873. *---------------------------------------------------------------------* 01867000
  1874. * 01868000
  1875. * HOLD PROCESSING SHARES TRACE PROCESSING CODED BELOW. 01869000
  1876. *. 01870000
  1877. SPACE 01871000
  1878. HOLD EQU * 01872000
  1879. SPACE 2 01873000
  1880. *. 01874000
  1881. *---------------------------------------------------------------------* 01875000
  1882. * TRACE COMMAND * 01876000
  1883. *---------------------------------------------------------------------* 01877000
  1884. * 01878000
  1885. * OPERATION - 01879000
  1886. * 01880000
  1887. * A L0 FORMAT COMMAND ELEMENT IS BUILT AND PASSED TO THE 01881000
  1888. * APPROPRIATE LINK'S LINE DRIVER THROUGH THE ALERT 01882000
  1889. * INTERFACE. 01883000
  1890. * 01884000
  1891. * RESPONSES - 01885000
  1892. * 01886000
  1893. * NONE 01887000
  1894. * 01888000
  1895. * ERROR MESSAGES - 01889000
  1896. * 01890000
  1897. * DMTCMX204E INVALID KEYWORD 'KEYWORD' 01891000
  1898. * DMTCMX205E CONFLICTING KEYWORD 'KEYWORD' 01892000
  1899. * DMTCMX206E INVALID OPTION 'KEYWORD' 'OPTION' 01893000
  1900. * DMTCMX303E LINK 'LINKID' IS NOT ACTIVE 01894000
  1901. *. 01895000
  1902. SPACE 01896000
  1903. TRACE EQU * 01897000
  1904. SPACE 2 01898000
  1905. L0FORMAT EQU * 01899000
  1906. LTR R0,R0 WAS ORIGIN CONSOLE? 01900000
  1907. BNZ L0FLKGOT NO - GOT LINK TABLE ALREADY 01901000
  1908. BAL R14,LTABGET GET A LINK TABLE ADDR 01902000
  1909. B CMXNOLNK NONE SPECIFIED 01903000
  1910. L0FLKGOT EQU * 01904000
  1911. TM LFLAG,LACTIVE IS IT ACTIVE? 01905000
  1912. BNO CMXM303 NO - SAY SO 01906000
  1913. CLR R3,R5 END OF LINE? 01907000
  1914. BNL L0FIRE YES - ACCEPT DEFAULTS 01908000
  1915. CLI CMXELCOD,X'83' HOLD COMMAND? 01909000
  1916. BL L0FOUL NOPE - DRAIN OR FREE @VM01111 01910010
  1917. CLI CMXELCOD,X'83' HOLD COMMAND? 01911000
  1918. BE L0HOLD YEP - DO IT 01912000
  1919. SPACE 01913000
  1920. * TRACE COMMAND 01914000
  1921. SPACE 01915000
  1922. SLR R0,R0 INITIALIZE FLAG REG 01916000
  1923. L0TRACE EQU * 01917000
  1924. LM R7,R9,TRASETUP SET UP FOR KEYWD SCAN 01918000
  1925. BAL R14,KEYWDGET SEE IF ANY 01919000
  1926. BC 7,CMXM204 INVALID OR UNDEFINED @VM01112 01920010
  1927. B L0FIRE MISSING - DEFAULT OR DONE 01921000
  1928. SPACE 01922000
  1929. L0TKEYWD EQU * 01923000
  1930. LTR R0,R0 BEEN HERE BEFORE? 01924000
  1931. BNZ CMXM205 YEP - CONFLICTING KEYWORD 01925000
  1932. BCTR R0,0 FLAG FIRST PASS 01926000
  1933. MVC CMXELMOD(1),12(R7) SET MODIFIER BYTE 01927000
  1934. B L0TRACE AND TRY FOR MORE 01928000
  1935. SPACE 2 01929000
  1936. * HOLD COMMAND 01930000
  1937. SPACE 01931000
  1938. L0HOLD EQU * 01932000
  1939. SR R4,R3 KEYWD CHAR COUNT 01933000
  1940. BNP CMXM206 FUNNY KEYWORD 01934000
  1941. LA R0,5 REQD COUNT FOR IMMED 01935000
  1942. CLR R4,R0 CORRECT? 01936000
  1943. BNE CMXM206 NOPE - ERROR 01937000
  1944. CLC 0(5,R3),=C'IMMED' CORRECTLY SPELLED? 01938000
  1945. BNE CMXM206 NOPE - ERROR 01939000
  1946. MVI CMXELMOD,X'80' SET IMMED MODIFIER 01940000
  1947. LA R3,1(R4,R3) UPDATE PARM POINTER 01944000
  1948. BAL R14,PARMGET TRY FOR ANOTHER 01945000
  1949. CLR R3,R5 GET ONE? 01946000
  1950. BNL L0FIRE NOPE - GO TO IT 01947000
  1951. L0FOUL EQU * @VM01111 01947500
  1952. LR R4,R3 LENGTH OF PARM 01948000
  1953. BCTR R4,0 DOWN ONE 01949000
  1954. B CMXM204 AND ISSUE ERROR MSG 01950000
  1955. SPACE 01951000
  1956. L0FIRE EQU * 01952000
  1957. LA R0,CMXELVAR-CMXELMNT SET CMD ELEMENT LENGTH 01953000
  1958. B CMXALERT AND KICK A LINE DRIVER 01954000
  1959. SPACE 3 01955000
  1960. TRASETUP DC A(TRATABLE) START OF KEYWORD TABLE 01956000
  1961. DC A(TRAINC) LENGTH OF ENTRY 01957000
  1962. DC A(TRAEND-TRAINC) START OF LAST ENTRY 01958000
  1963. SPACE 01959000
  1964. TRATABLE DC 0F'0' 01960000
  1965. DC CL8'ALL',AL1(3-1),AL3(L0TKEYWD),X'00',AL3(0) 01961000
  1966. DC CL8'ERRORS',AL1(3-1),AL3(L0TKEYWD),X'80',AL3(0) 01962000
  1967. DC CL8'END',AL1(3-1),AL3(L0TKEYWD),X'C0',AL3(0) 01963000
  1968. TRAEND EQU * 01964000
  1969. SPACE 01965000
  1970. TRAINC EQU 8+4+4 01966000
  1971. EJECT 01967000
  1972. *. 01968000
  1973. *---------------------------------------------------------------------* 01969000
  1974. * BACKSPAC COMMAND * 01970000
  1975. *---------------------------------------------------------------------* 01971000
  1976. * 01972000
  1977. * BACKSPAC PROCESSION SHARES FWDSPACE PROCESSING CODED 01973000
  1978. * BELOW. 01974000
  1979. *. 01975000
  1980. SPACE 01976000
  1981. BACKSPAC DC 0H'0' 01977000
  1982. SPACE 2 01978000
  1983. *. 01979000
  1984. *---------------------------------------------------------------------* 01980000
  1985. * FWDSPACE COMMAND * 01981000
  1986. *---------------------------------------------------------------------* 01982000
  1987. * 01983000
  1988. * OPERATION - 01984000
  1989. * 01985000
  1990. * A L1 FORMAT COMMAND ELEMENT IS BUILT AND PASSED TO THE 01986000
  1991. * APPROPRIATE LINK'S LINE DRIVER THROUGH THE ALERT 01987000
  1992. * INTERFACE. 01988000
  1993. * 01989000
  1994. * RESPONSES - 01990000
  1995. * 01991000
  1996. * NONE 01992000
  1997. * 01993000
  1998. * ERROR MESSAGES - 01994000
  1999. * 01995000
  2000. * DMTCMX204E INVALID KEYWORD 'KEYWORD' 01996000
  2001. * DMTCMX206E INVALIC OPTION 'KEYWORD' 'OPTION' 01997000
  2002. * DMTCMX303E LINK 'LINKID' IS NOT ACTIVE 01998000
  2003. *. 01999000
  2004. SPACE 02000000
  2005. FWDSPACE EQU * 02001000
  2006. SPACE 2 02002000
  2007. L1FORMAT EQU * 02003000
  2008. LTR R0,R0 GET A LINK TABLE? 02004000
  2009. BNZ L1FLKGOT FROM DRIVER - ALREADY GOT 02005000
  2010. BAL R14,LTABGET GET THE SPECD LINK TABLE 02006000
  2011. B CMXNOLNK NO GOT - QUIT WITH ERROR 02007000
  2012. L1FLKGOT EQU * 02008000
  2013. TM LFLAG,LACTIVE IS IT ACTIVE? 02009000
  2014. BNO CMXM303 NOPE - NO GOOD 02010000
  2015. XC CMXELVAR(4),CMXELVAR CLEAR COUNT FIELD 02011000
  2016. CLR R3,R5 ANY PARM LEFT? 02012000
  2017. BL CKRNGE YES - CHECK COUNT @VA03487 02013100
  2018. CLI CMXELCOD,X'91' FWDSPACE? @VA03487 02013200
  2019. BE L1DEF YES - DEFAULT IS ONE @VA03487 02013300
  2020. B L1FIRE BACKSPACE - DEFAULT IS 'FILE' @VA03487 02013400
  2021. CKRNGE EQU * @VA03487 02013500
  2022. LM R8,R9,CMXNNRNG SET VALID COUNT RANGE 02014000
  2023. BAL R14,DECGET GET DECIMAL SPEC 02015000
  2024. BC 8,L1FNNGOT GOT ONE - USE IT 02016000
  2025. CLI CMXELCOD,X'91' FWDSPACE? 02017000
  2026. BE CMXM206 YEP - 'FILE' INVALID 02018000
  2027. LA R0,3 'FILE' CHAR COUNT - 1 02019000
  2028. CLR R4,R0 TOO MUCH? 02020000
  2029. BH CMXM206 YES - ERROR 02021000
  2030. EX R4,CMXCFILE DOES IT SAY FILE? 02022000
  2031. BNE CMXM206 NO - ERROR 02023000
  2032. MVI CMXELMOD,X'00' SET FILE MODIFIER 02024000
  2033. B L1TERM AND FINISH OFF 02025000
  2034. SPACE 02026000
  2035. L1FNNGOT EQU * 02027000
  2036. ST R0,CMXELVAR SET COUNT 02028000
  2037. MVI CMXELMOD,X'80' AND MODIFIER 02029000
  2038. * B L1TERM AND FINISH UP 02030000
  2039. SPACE 02031000
  2040. L1TERM EQU * 02032000
  2041. LA R3,1(R3,R4) UPDATE PARM POINTER 02033000
  2042. BAL R14,PARMGET TRY FOR ANOTHER PARM 02034000
  2043. CLR R3,R5 ANY? 02035000
  2044. BNL L1FIRE NOPE - GOOD COMMAND 02036000
  2045. SR R4,R3 EXTRA PARM COUNT 02037000
  2046. BCTR R4,0 MINUS ONE 02038000
  2047. B CMXM204 INVALID KEYWORD 02039000
  2048. SPACE 02040000
  2049. L1DEF EQU * @VA03487 02040100
  2050. MVI CMXELVAR+3,X'01' DEFAULT IS ONE @VA03487 02040200
  2051. L1FIRE EQU * 02041000
  2052. LA R0,CMXELVAR+4-CMXELMNT L1 FORMAT CMD ELM LEN 02042000
  2053. B CMXALERT AND KICK A DRIVER 02043000
  2054. EJECT 02044000
  2055. *. 02045000
  2056. *---------------------------------------------------------------------* 02046000
  2057. * FLUSH COMMAND * 02047000
  2058. *---------------------------------------------------------------------* 02048000
  2059. * 02049000
  2060. * OPERATION - 02050000
  2061. * 02051000
  2062. * A L2 FORMAT COMMAND ELEMENT IS BUILT AND PASSED TO THE 02052000
  2063. * APPROPRIATE LINK'S LINE DRIVER THROUGH THE ALERT 02053000
  2064. * INTERFACE. 02054000
  2065. * 02055000
  2066. * RESPONSES - 02056000
  2067. * 02057000
  2068. * NONE 02058000
  2069. * 02059000
  2070. * ERROR MESSAGES - 02060000
  2071. * 02061000
  2072. * DMTCMX203E INVALID SPOOL FILE ID 'SPOOLID' 02062000
  2073. * DMTCMX204E INVALID KEYWORD 'KEYWORD' 02063000
  2074. * DMTCMX205E CONFLICTING KEYWORD 'KEYWORD' 02064000
  2075. * DMTCMX303E LINK 'LINKID' IS NOT ACTIVE 02064100
  2076. *. 02065000
  2077. SPACE 02066000
  2078. FLUSH DC 0H'0' 02067000
  2079. SPACE 2 02068000
  2080. L2FORMAT EQU * 02069000
  2081. LTR R0,R0 ORIGIN REMOTE? 02070000
  2082. BNZ L2FLKGOT YES - HAVE LINK TABLE ALRDY 02071000
  2083. BAL R14,LTABGET FIND LINK TABLE 02072000
  2084. B CMXNOLNK NO GOOD - PUNT 02073000
  2085. L2FLKGOT EQU * 02074000
  2086. TM LFLAG,LACTIVE ACTIVE LINK? 02075000
  2087. BNO CMXM303 NOPE - REJECT 02076000
  2088. SPACE 02077000
  2089. LM R8,R9,CMXSPRNG VALID SPOOL ID NUMBER RANGE 02078000
  2090. BAL R14,DECGET GET THE SPOOL ID NUMBER 02079000
  2091. BC 5,CMXM203 INVALID SPOOL FILE ID 02080000
  2092. BC 8,FLUIDOK ID A VALID NUMBER 02081000
  2093. LTR R4,R4 COUNT OF 1? 02082000
  2094. BNZ CMXM203 NOPE - NOT '*' 02083000
  2095. CLI 0(R3),C'*' DEFAULT OPTION? 02084000
  2096. BNE CMXM203 NOPE - INVALID 02085000
  2097. LTR R0,R0 FROM A REMOTE STATION? 02086000
  2098. BZ CMXM203 NOPE - '*' INVALID 02087000
  2099. L R7,TTAGQ TAG QUEUE CONTROL AREA @VM01143 02088010
  2100. LA R7,4(R7) START OF ACTIVE INPUT QUEUE @VM01143 02088110
  2101. FLUASCAN EQU * @VM01143 02088210
  2102. ICM R7,B'1111',TAGNEXT-TAG(R7) POINT TO NEXT TAG @VM01143 02088310
  2103. BZ CMXM203 '*' INVALID IF NO FILE ACTIV@VM01143 02088410
  2104. CLC TAGLINK-TAG(8,R7),LINKID LINK'S ACTIVE INPUT? @VM01143 02088510
  2105. BNE FLUASCAN NO - KEEP LOOKING @VM01143 02088610
  2106. LH R0,TAGID-TAG(R7) SET ACTIVE FILE ID @VM01143 02088710
  2107. FLUIDOK EQU * 02089000
  2108. * 02090000
  2109. * LINE DRIVERS CHECK FOR MATCHING ACTIVE SPOOL FILE 02091000
  2110. * 02092000
  2111. STH R0,CMXELVAR SET THE SPOOL FILE ID 02093000
  2112. LA R0,CMXELVAR+2-CMXELMNT SET CMD ELMNT LENGTH 02094000
  2113. SPACE 02095000
  2114. LA R3,1(R4,R3) END OF CURRENT PARM 02096000
  2115. BAL R14,PARMGET TO NEXT PARM 02097000
  2116. SLR R6,R6 INITIALIZE FLAG REG 02098000
  2117. FLUMORE EQU * 02099000
  2118. LM R7,R9,FLUSETUP SET UP SCAN FOR KEYWORD 02100000
  2119. BAL R14,KEYWDGET TRY FOR ONE 02101000
  2120. BC 8,CMXALERT ALL DONE - KICK DRIVER 02102000
  2121. B CMXM204 INVALID KEYWORD 02103000
  2122. SPACE 02104000
  2123. FLUKEYWD EQU * 02105000
  2124. LTR R6,R6 ALREADY BEEN HERE? 02106000
  2125. BNZ CMXM205 YEP - CONFLICTING KEYWORD 02107000
  2126. BCTR R6,0 SET FIRST PASS FLAG 02108000
  2127. MVC CMXELMOD(1),12(R7) SET MODIFIER CODE 02109000
  2128. B FLUMORE SEE IF ANY MORE 02110000
  2129. EJECT 02111000
  2130. FLUSETUP DC A(FLUTABLE) START OF KEYWORD TABLE 02112000
  2131. DC A(FLUINC) LENGTH OF KEYWORD TABLE ENTRY 02113000
  2132. DC A(FLUEND-FLUINC) START OF LAST KEYWORD ENTRY 02114000
  2133. SPACE 02115000
  2134. FLUTABLE DC 0F'0' 02116000
  2135. DC CL8'ALL',AL1(3-1),AL3(FLUKEYWD),X'80',AL3(0) 02117000
  2136. DC CL8'HOLD',AL1(2-1),AL3(FLUKEYWD),X'40',AL3(0) 02118000
  2137. FLUEND EQU * 02119000
  2138. SPACE 02120000
  2139. FLUINC EQU 8+4+4 02121000
  2140. EJECT 02122000
  2141. *. 02123000
  2142. *---------------------------------------------------------------------* 02124000
  2143. * CMD COMMAND * 02125000
  2144. *---------------------------------------------------------------------* 02126000
  2145. * 02127000
  2146. * OPERATION - 02128000
  2147. * 02129000
  2148. * A L3 FORMAT COMMAND ELEMENT IS BUILT AND PASSED TO THE 02130000
  2149. * APPROPRIATE LINK'S LINE DRIVER THROUGH THE ALERT 02131000
  2150. * INTERFACE 02132000
  2151. * 02133000
  2152. * RESPONSES - 02134000
  2153. * 02135000
  2154. * NONE 02136000
  2155. * 02137000
  2156. * ERROR MESSAGES - 02138000
  2157. * 02139000
  2158. * DMTCMX303E LINK 'LINKID' IS NOT ACTIVE 02140000
  2159. *. 02141000
  2160. SPACE 02142000
  2161. CMD DC 0H'0' 02143000
  2162. BAL R14,LTABGET GET A LINK TABLE 02144000
  2163. B CMXNOLNK NO GOOD 02145000
  2164. TM LFLAG,LACTIVE IS IT ACTIVE? 02146000
  2165. BNO CMXM303 NOPE - NO GOOD 02147000
  2166. SPACE 02148000
  2167. SR R5,R3 LENGTH OF CMD TEXT 02149000
  2168. BCTR R5,0 DECREMENT 02150000
  2169. BZ CMDNULL NO TEXT ENTERED 02151000
  2170. LA R0,L'CMXELVAR CMD ELEMENT VAR AREA LEN 02152000
  2171. CLR R5,R0 LONG ENOUGH 02153000
  2172. BL CMDLENOK YES - DO WHOLE THING 02154000
  2173. LA R5,L'CMXELVAR-1 OTHERWISE TRUNCATE 02155000
  2174. CMDLENOK EQU * 02156000
  2175. LA R6,CMXELVAR TARGET FOR MOVE 02157000
  2176. EX R5,CMXMOVE MOVE CMD TEXT TO ELMNT 02158000
  2177. CMDNULL EQU * 02159000
  2178. LA R0,CMXELVAR-CMXELMNT+1(R5) TOTAL ELMNT LEN 02160000
  2179. B CMXALERT GIVE IT TO THE TASK 02161000
  2180. EJECT 02162000
  2181. *. 02163000
  2182. *---------------------------------------------------------------------* 02164000
  2183. * MSG COMMAND * 02165000
  2184. *---------------------------------------------------------------------* 02166000
  2185. * 02167000
  2186. * OPERATION - 02168000
  2187. * 02169000
  2188. * IF THE COMMAND ORIGINATED LOCALLY, A L3 FORMAT COMMAND 02170000
  2189. * ELEMENT IS BUILT AND PASSED TO THE APPROPRIATE LINK'S LINE 02171000
  2190. * DRIVER THROUGH THE ALERT INTERFACE. IF THE COMMAND 02172000
  2191. * ORIGINATED FROM A REMOTE LOCATION, AND IS ADDRESSED TO 02173000
  2192. * ANOTHER REMOTE LOCATION, THE SAME PROCESSING IS DONE. IF 02174000
  2193. * THE COMMAND ORIGINATED FROM A REMOTE LOCATION AND IS 02175000
  2194. * ADDRESSED TO THE LOCAL LOCATION, THE REQUESTED MESSAGE IS 02176000
  2195. * ISSUED LOCALLY. 02177000
  2196. * 02178000
  2197. * RESPONSES - 02179000
  2198. * 02180000
  2199. * DMTCMX170I FROM 'LINKID': (MSG MESSAGE TEXT) 02181000
  2200. * 02182000
  2201. * ERROR MESSAGES - 02183000
  2202. * 02184000
  2203. * DMTCMX202E INVALID LINK 'LINKID' 02185000
  2204. * DMTCMX208E INVALID USER ID 'USERID' 02186000
  2205. * DMTCMX302E LINK 'LINKID' IS NOT DEFINED 02187000
  2206. * DMTCMX303E LINK 'LINKID' IS NOT ACTIVE 02188000
  2207. *. 02189000
  2208. SPACE 02190000
  2209. MSG DC 0H'0' 02191000
  2210. BAL R14,LTABGET GET LINK ID FROM LINE 02192000
  2211. B MSGNOLNK MIGHT BE FOR LOCAL LOC 02193000
  2212. MVC CMXMSGV0(8),CMXELORG SET 'FROM' LINK ID 02194000
  2213. TM LFLAG,LACTIVE IS IT ACTIVE? 02195000
  2214. BNO CMXM303 NO GOOD IF NOT 02196000
  2215. MVI CMXMSGRC,ORIG SET MSG ROUTE FOR LINK 02197000
  2216. MVC CMXMSGLK(8),LINKID 'RESPONSE' TO ADDRESSEE 02198000
  2217. B MSGISSU1 AND DO THE MSG 02199000
  2218. SPACE 02200000
  2219. MSGNOLNK EQU * 02201000
  2220. BC 13,CMXM202 CC=0,1,3 => INVALID LINK 02202000
  2221. MVC CMXWORK(8),CMXBLANK CLEAR WORK AREA 02203000
  2222. LA R6,CMXWORK AND SET TARGET TO IT 02204000
  2223. EX R4,CMXMOVE JUSTIFY 'UNDEFINED' LINK ID 02205000
  2224. L R2,TLINKS START OF LINK TABLE 02206000
  2225. LA R2,8(R2) ADDR OF LOCAL LOC 'LINK TABLE' 02207000
  2226. CLC CMXWORK(8),LINKID FOR THE LOCAL LOC? 02208000
  2227. BNE CMXM302 TRULY UNDEFINED, INDEED 02209000
  2228. SPACE 02210000
  2229. * MSG REQUEST FOR LOCAL LOCATION 02211000
  2230. SPACE 02212000
  2231. LTR R0,R0 DID IT ORIGINATE HERE? 02213000
  2232. BZ CMXM202 FOUL 02214000
  2233. * (LOCAL LOC ID IS AN "INVALID" LINK ID) 02215000
  2234. SPACE 02216000
  2235. * WE MUST NOW HAVE A MSG FROM A REMOTE STATION 02217000
  2236. SPACE 02218000
  2237. MVC CMXMSGV0(8),CMXELORG SET 'FROM' LINK ID 02219000
  2238. LA R3,1(R4,R3) TO NEXT PARM 02220000
  2239. BAL R14,PARMGET GET NEXT PARM START 02221000
  2240. CLR R3,R5 ANY NEXT PARM? 02222000
  2241. BNL MSGNOUSR NO - INVALID USER ID ... 02223000
  2242. SR R4,R3 ID COUNT 02224000
  2243. BCTR R4,0 DECREMENT ONE 02225000
  2244. BNP CMXM208 WHA...? 02226000
  2245. CL R4,CMXLIMIT TOO LONG? 02227000
  2246. BNL CMXM208 YEP - ERROR 02228000
  2247. LA R0,3 CHAR COUNT -1 FOR 'RSCS' 02229000
  2248. CLR R4,R0 RIGHT NUMBER FOR 'RSCS'? 02230000
  2249. BNE MSGTOUSR NOPE - ASSUME LOCAL USER ID 02231000
  2250. CLC 0(4,R3),=C'RSCS' FOR RSCS OPERATOR? @VM01113 02231500
  2251. BNE MSGTOUSR NO - ASSUME TO LOCAL USER ID@VM01113 02231600
  2252. MVI CMXMSGRC,RSS ROUTE TO LOCAL RSS OPERTR 02232000
  2253. B MSGISSU0 BUILD & GIVE TO MGX 02233000
  2254. SPACE 02234000
  2255. MSGTOUSR EQU * 02235000
  2256. MVI CMXMSGRC,VMID TO LOCAL USER ID 02236000
  2257. LA R6,CMXMSGVM USER ID TARGET 02237000
  2258. EX R4,CMXMOVE MOVE USER ID TO MSG 02238000
  2259. SPACE 02239000
  2260. MSGISSU0 EQU * 02240000
  2261. LA R3,1(R4,R3) PASS CURRENT PARM 02241000
  2262. BAL R14,PARMGET AND ON TO NEXT 02242000
  2263. MSGISSU1 EQU * 02243000
  2264. SR R5,R3 TOTAL TEXT COUNT 02244000
  2265. BNP MSGNOTXT NO TEXT SUPPLIED 02245000
  2266. MSGBKSCN EQU * 02246000
  2267. BCTR R5,0 BUMP CHAR COUNT DOWN 02247000
  2268. LA R6,0(R5,R3) POINT AT CURRENT LAST CHAR 02248000
  2269. CLI 0(R6),C' ' IS IT A BLANK? 02249000
  2270. BNE MSGDOTXT NOPE - CHARGE 02250000
  2271. LTR R5,R5 ANY MORE COUNT? 02251000
  2272. BNZ MSGBKSCN YEP - DO SOME MORE 02252000
  2273. SPACE 02253000
  2274. MSGNOTXT EQU * 02254000
  2275. LA R0,28+8 NULL TEXT LENGTH 02255000
  2276. MSGM170 EQU * 02256000
  2277. LA R15,170 SET MSG MSG CODE 02257000
  2278. B CMXDOIT AND PASS TO MGX 02258000
  2279. SPACE 02259000
  2280. MSGDOTXT EQU * 02260000
  2281. LA R0,CMXMSGVL-8-1 MAX TEXT COUNT 02261000
  2282. CLR R5,R0 TOO MUCH SUPPLIED? 02262000
  2283. BNH MSGLENOK GOOD FIT AS IS 02263000
  2284. LR R5,R0 ELSE TRUNCATE 02264000
  2285. MSGLENOK EQU * 02265000
  2286. LA R6,CMXMSGV1 SET TEXT TARGET 02266000
  2287. EX R5,CMXMOVE MOVE THE TEXT TO MSG 02267000
  2288. LA R5,8(R5) EXACT COUNT +7 02268000
  2289. SRL R5,3 FORCE COUNT TO 02269000
  2290. SLL R5,3 NEXT HIGHER MULT OF EIGHT 02270000
  2291. LA R0,28+8(R5) TOT MSG ELEMENT LENGTH 02271000
  2292. B MSGM170 DO THE MESSAGE NOW 02272000
  2293. SPACE 02273000
  2294. MSGNOUSR EQU * 02274000
  2295. SLR R4,R4 NO INVALID ID CHAR COUNT 02275000
  2296. BCTR R4,0 DECREMENT ONE 02276000
  2297. B CMXM208 SAY INVALID USER ID ... 02277000
  2298. EJECT 02278000
  2299. *. 02279000
  2300. * 02280000
  2301. * ENTRY NAME - 02281000
  2302. * 02282000
  2303. * KEYWDGET 02283000
  2304. * 02284000
  2305. * FUNCTION - 02285000
  2306. * 02286000
  2307. * DECODE THE NEXT KEYWORD ON THE INPUT COMMAND LINE 02287000
  2308. * 02288000
  2309. * 02289000
  2310. * CALLS TO OTHER ROUTINES - 02290000
  2311. * 02291000
  2312. * 02292000
  2313. * 02293000
  2314. * ON ENTRY TO KEYWDGET: 02294000
  2315. * 02295000
  2316. * R7 = ADDRESS IF KEYWORD TABLE 02296000
  2317. * R8 = LENGTH OF EACH ENTRY 02297000
  2318. * R9 = ADDRESS OF START OF LAST ENTRY 02298000
  2319. * 02299000
  2320. * 02300000
  2321. * ENTRIES MUST BE OF THE FORM: 02301000
  2322. * +------------------------+---------+---------+ 02302000
  2323. * | 8 CHARACTER KEYWORD |MIN TRUNC|RET ADDR | 02303000
  2324. * | | LENGTH | ON MATCH| 02304000
  2325. * +------------------------+---------+---------+ 02305000
  2326. * 02306000
  2327. * 02307000
  2328. * FULLWORD ALIGNED 02308000
  2329. * 02309000
  2330. * R3 = ADDRESS OF START OF PARM 02310000
  2331. * R4 = ADDRESS OF END OF PARM 02311000
  2332. * R5 = ADDRESS OF END OF LINE 02312000
  2333. * R14= RETURN ADDRESS 02313000
  2334. * 02314000
  2335. * ON NORMAL EXIT: 02315000
  2336. * 02316000
  2337. * R7 = ADDRESS OF KEYWORD ENTRY 02317000
  2338. * R3 = ADDRESS OF START OF NEXT PARM, OR END OF LINE 02318000
  2339. * R4 = ADDRESS OF END OF NEXT PARM(CC=1), OR UNCHANG(CC=0) 02319000
  2340. * 02320000
  2341. * ON ERROR EXIT TO R14 ADDRESS: 02321000
  2342. * 02322000
  2343. * CC=0 => END OF LINE 02323000
  2344. * CC NOT 0 => NOT END OF LINE 02324000
  2345. * R4 = LENGTH(-1) OF INVALID OR UNDEFINED PARM 02325000
  2346. * R7 = ADDRESS OF END OF TABLE 02326000
  2347. EJECT 02327000
  2348. * OPERATION - 02328000
  2349. * 02329000
  2350. * THE TABLE DESCRIBED BY THE CONTENTS OF ENTRY REGS 6-8 02330000
  2351. * IS SCANNED FOR EACH POTENTIAL KEYWORD IN THE LINE 02331000
  2352. * DESCRIBED BY THE CONTENTS OF ENTRY REGS 3-5. WHEN THE 02332000
  2353. * FIRST MATCH IS FOUND, THE PROCESSOR EXIT SPECIFIED IN THE 02333000
  2354. * MATCHING KEYWORD TABLE ENTRY IS CALLED. 02334000
  2355. * 02335000
  2356. * RESPONSES - 02336000
  2357. * 02337000
  2358. * NONE 02338000
  2359. * 02339000
  2360. * ERROR MESSAGES - 02340000
  2361. * 02341000
  2362. * NONE 02342000
  2363. * 02343000
  2364. *. 02344000
  2365. SPACE 2 02345000
  2366. KEYWDGET DC 0H'0' 02346000
  2367. CLR R3,R5 END OF LINE? 02347000
  2368. BCR 8,R14 (BE) END OF LINE 02348000
  2369. SR R4,R3 COUNT SUPPLIED 02349000
  2370. BNP KEYWDBAD ERROR IF MINUS 02350000
  2371. CL R4,CMXLIMIT TOO LONG? 02351000
  2372. BCTR R4,0 REDUCE BY ONE FOR CHAR OP 02352000
  2373. BCR 2,R14 (BH) RETURN IF TOO LONG 02353000
  2374. KEYWDTRY EQU * 02354000
  2375. EX R4,KEYWMACH DOES THIS ONE MATCH 02355000
  2376. BNE KEYWSKIP NO 02356000
  2377. CLM R4,B'0001',8(R7) MINIMUM SUPPLIED? 02357000
  2378. BNL KEYWDHIT YES.. 02358000
  2379. KEYWSKIP EQU * 02359000
  2380. BXLE R7,R8,KEYWDTRY BUMP TO NEXT 02360000
  2381. OI *+1,X'80' SET CC=1 02361000
  2382. BR R14 UNDEFINED 02362000
  2383. SPACE 1 02363000
  2384. KEYWDHIT EQU * 02364000
  2385. LA R3,1(R4,R3) UP TO START OF NEXT PARM 02365000
  2386. BAL R14,PARMGET FRAME IT 02366000
  2387. CLR R3,R5 SET RETURN COND CODE 02367000
  2388. L R14,8(R7) ADDR OF KEYWORD PROCESSOR 02368000
  2389. BR R14 EXIT TO KEYWORD PROCESSOR 02369000
  2390. SPACE 1 02370000
  2391. KEYWDBAD EQU * 02371000
  2392. CLR R0,R0 SET CC=0 02372000
  2393. BR R14 AND RETURN 02373000
  2394. SPACE 1 02374000
  2395. KEYWMACH CLC 0(0,R7),0(R3) TO BE EXECUTED FROM ABOCE 02375000
  2396. EJECT 02376000
  2397. *. 02377000
  2398. *---------------------------------------------------------------------* 02378000
  2399. * TBLCLEAR - CLEAR THE VARIABLE AREA OF A KEYWORD TABLE * 02379000
  2400. *---------------------------------------------------------------------* 02380000
  2401. * 02381000
  2402. * ENTRY CONDITIONS - 02382000
  2403. * 02383000
  2404. * GREGS 7,8, &9 SET TO DESCRIBE A KEYWORD TABLE AS IN 02384000
  2405. * KEYWDGET 02385000
  2406. *. 02386000
  2407. SPACE 02387000
  2408. TBLCLEAR EQU * 02388000
  2409. XC 12(4,R7),12(R7) CLEAR KEYWORD TABLE 02389000
  2410. BXLE R7,R8,TBLCLEAR AND CONTINUE 02390000
  2411. BR R14 AND RETURN 02391000
  2412. EJECT 02392000
  2413. *. 02393000
  2414. * 02394000
  2415. * ENTRY NAME - 02395000
  2416. * 02396000
  2417. * LTABGET 02397000
  2418. * 02398000
  2419. * FUNCTION - 02399000
  2420. * 02400000
  2421. * FIND THE LINK TABLE ENTRY IMPLIED BY THE FIRST KEYWORD IN 02401000
  2422. * THE COMMAND LINE DESCRIBED BY THE CALLING REG PARAMTERS. 02402000
  2423. * 02403000
  2424. * CALLS TO OTHER ROUTINES - 02404000
  2425. * 02405000
  2426. * PARMGET 02406000
  2427. * 02407000
  2428. * ENTRY CONDITIONS - 02408000
  2429. * 02409000
  2430. * R3 = ADDRESS OF START OF PARM 02410000
  2431. * R4 = ADDRESS OF END OF PARM 02411000
  2432. * R5 = ADDRESS OF END OF LINE 02412000
  2433. * R14=RETURN ADDRESS: +0 ON ERROR 02413000
  2434. * +4 IF SUCCESSFUL 02414000
  2435. * 02415000
  2436. * 02416000
  2437. * EXIT CONDITIONS - 02417000
  2438. * 02418000
  2439. * 02419000
  2440. * TO 4(R14) - 02420000
  2441. * R3 = ADDR OF START OF NEXT PARM OR END OF LINE 02421000
  2442. * R4 = ADDR OF END OF NEXT PARM OR UNCHANGED 02422000
  2443. * R5 = UNCHANGED 02423000
  2444. * R2 = LINKTABL ADDRESS 02424000
  2445. * 02425000
  2446. * TO 0(R14) - 02426000
  2447. * R3 = UNCHANGED 02427000
  2448. * R4 = COUNT(-1) OF UNDEFINED LINK ID ON CC=2 02428000
  2449. * = COUNT(-1) OF INVALID LINK ID ON CC=1,3 02429000
  2450. * = -1 ON CC=0 (IMPLIES ZERO LENGTH PARM SPECIFIED 02430000
  2451. * R5 = UNCHANGED 02431000
  2452. * 02432000
  2453. * OPERATION - 02433000
  2454. * 02434000
  2455. * THE FIRST (LEFTMOST) PARAMETER ON THE INPUT COMMAND 02435000
  2456. * LINE IS FRAMED, THE LINK TABLE IS SCANNED FOR AN ENTRY 02436000
  2457. * WITH A MATCHING ID, AND THE ENTRY ADDRESS IS RETURNED TO 02437000
  2458. * TO THE CALLER. 02438000
  2459. * 02439000
  2460. * RESPONSES - 02440000
  2461. * 02441000
  2462. * NONE 02442000
  2463. * 02443000
  2464. * ERROR MESSAGES - 02444000
  2465. * 02445000
  2466. * NONE 02446000
  2467. * 02447000
  2468. *. 02448000
  2469. SPACE 2 02449000
  2470. LTABGET DC 0H'0' 02450000
  2471. CLR R3,R5 END OF LINE? 02451000
  2472. BE LTABEND YES 02452000
  2473. SR R4,R3 GET COUNT IN R4 02453000
  2474. BZ LTABEND ZERO LENGTH 02454000
  2475. BCR 5,R14 CC=1,3 => INVALID 02455000
  2476. CL R4,CMXLIMIT TOO LONG? 02456000
  2477. BCTR R4,0 DOWN BY ONE FOR CHAR OP 02457000
  2478. BH LTABLONG TOO LONG - ERROR 02458000
  2479. STM R6,R7,CMXWORK SAVE WORK REGS 02459000
  2480. L R2,TLINKS GET LINK TABLE CHAIN 02460000
  2481. L R7,0(R2) NUMBER OF ENTRIES 02461000
  2482. BCTR R7,0 DOWN ONE TO SKIP FIRST ENTRY 02462000
  2483. LTR R7,R7 ZERO? 02463000
  2484. BNP LTABMISS YES...ERROR 02464000
  2485. LA R2,8(R2) GET FIRST ENTRY ADDR 02465000
  2486. USING LINKTABL,R2 GET LINKTABL ADDRESSABILITY 02466000
  2487. MVC CMXWORK+8(8),CMXBLANK BLANK THE FRAMING FIELD 02467000
  2488. LA R6,CMXWORK+8 SET TARGET FRAMING FIELD 02468000
  2489. EX R4,CMXMOVE MOVE INTO FRAMING AREA 02469000
  2490. LTABTRY EQU * 02470000
  2491. LA R2,LINKLEN(R2) GET THE NEXT ENTRY 02471000
  2492. CLC LINKID(8),CMXWORK+8 IS THIS THE ONE? 02472000
  2493. BE LTABHIT YES 02473000
  2494. BCT R7,LTABTRY AND TRY THE NEXT 02474000
  2495. LTABMISS EQU * 02475000
  2496. LA R14,0(R14) CLEAR TOP BYTE 02476000
  2497. LTR R14,R14 SET CC=2 02477000
  2498. LM R6,R7,CMXWORK RESTORE WORK REGS 02478000
  2499. BR R14 AND RETURN TO CALLER 02479000
  2500. SPACE 1 02480000
  2501. LTABLONG EQU * 02481000
  2502. OR R4,R4 CC=1 INVALID ID 02482000
  2503. BR R14 AND RETURN 02483000
  2504. SPACE 1 02484000
  2505. LTABEND EQU * 02485000
  2506. SR R4,R4 CLEAR COUNT REG 02486000
  2507. BCTR R4,0 SET TO -1 AND CC 0 02487000
  2508. BR R14 AND RETURN 02488000
  2509. SPACE 1 02489000
  2510. LTABHIT EQU * 02490000
  2511. LA R3,1(R4,R3) SET END OF PARM 02491000
  2512. LR R6,R14 SAVE RETURN REGISTER 02492000
  2513. BAL R14,PARMGET GO FRAME NEXT PARAMETER 02493000
  2514. LR R14,R6 RESTORE RETURN REGISTER 02494000
  2515. LM R6,R7,CMXWORK RESTORE WORK REGS 02495000
  2516. B 4(R14) NORMAL RETURN 02496000
  2517. EJECT 02497000
  2518. *. 02498000
  2519. * 02499000
  2520. * ENTRY NAME - 02500000
  2521. * 02501000
  2522. * HEXGET 02502000
  2523. * 02503000
  2524. * FUNCTION - 02504000
  2525. * 02505000
  2526. * CONVERT AND VALIDATE A HEX STRING 02506000
  2527. * 02507000
  2528. * CALLS TO OTHER ROUTINES - 02508000
  2529. * 02509000
  2530. * 02510000
  2531. * 02511000
  2532. * 02512000
  2533. * ENTRY: 02513000
  2534. * 02514000
  2535. * R3,R4 = START AND END ADDR OF PARM 02515000
  2536. * R5 = END ADDR OF LINE 02516000
  2537. * R8 = (UNSIGNED) LOWER RANGE LIMIT 02517000
  2538. * R9 = (UNSIGNED) UPPER RANGE LIMIT 02518000
  2539. * 02519000
  2540. * EXIT: 02520000
  2541. * 02521000
  2542. * CC=0 => HEX NUMBER VALID (IN R0) WITHIN RANGE 02522000
  2543. * CC=1 => HEX NUMBER VALID (IN R0) OUT OF RANGE 02523000
  2544. * CC=2 => COUNT GREATER THAN 8, OR INVALID CHARS IN PARM 02524000
  2545. * CC=3 => COUNT 0 OR NEGATIVE 02525000
  2546. * 02526000
  2547. * CC=0: 02527000
  2548. * R0 = VALID HEX NUMBER 02528000
  2549. * R4 = COUNT -1 OF (VALID) PARM 02529000
  2550. * 02530000
  2551. * CC=1: 02531000
  2552. * R0 = VALID (OUT OF RANGE) HEX NUMBER 02532000
  2553. * R4 = COUNT-1 OF (OUT OF RANGE) PARM 02533000
  2554. * 02534000
  2555. * CC=2: 02535000
  2556. * R4 = COUNT -1 OF (INVALID) PARM 02536000
  2557. * 02537000
  2558. * CC=3: 02538000
  2559. * R4 = SAME AS ON ENTRY 02539000
  2560. * 02540000
  2561. * 02541000
  2562. * OPERATION - 02542000
  2563. * 02543000
  2564. * THE FIRST (LEFTMOST) PARAMETER ON THE INPUT COMMAND 02544000
  2565. * LINE IS FRAMED, THE PARAMETER IS CONVERTED FROM EBCDIC 02545000
  2566. * TO HEXADECIMAL (BINARY) AND VALIDATED, AND THE RESULTING 02546000
  2567. * VALUE IS RETURNED TO THE CALLER. 02547000
  2568. * 02548000
  2569. * RESPONSES - 02549000
  2570. * 02550000
  2571. * NONE 02551000
  2572. * 02552000
  2573. * ERROR MESSAGES - 02553000
  2574. * 02554000
  2575. * NONE 02555000
  2576. * 02556000
  2577. *. 02557000
  2578. SPACE 2 02558000
  2579. HEXGET DC 0H'0' 02559000
  2580. SR R4,R3 GET LENGTH OF PARM 02560000
  2581. BNP HEXGETC3 ERROR 02561000
  2582. CLR R3,R5 END OF LINE? 02562000
  2583. BNL HEXGETC3 WENT TOO FAR 02563000
  2584. CL R4,CMXLIMIT TOO LONG? 02564000
  2585. BCTR R4,0 REDUCE BY ONE FOR CHAR OP 02565000
  2586. BH HEXGETC2 TOO LONG 02566000
  2587. XC CMXWORK(8),CMXWORK CLEAR WORK AREA 02567000
  2588. ST R6,CMXWORK+8 SAVE REG.6 CONTENTS 02568000
  2589. LA R6,CMXWORK+7 LAST CHAR OF TARGET 02569000
  2590. SLR R6,R4 FIRST CHAR OF TARGET 02570000
  2591. EX R4,CMXMOVE MOVE EBCDIC NUMBER TO WORK 02571000
  2592. L R6,CMXWORK+8 RESTORE REG.6 02572000
  2593. TR CMXWORK(8),CMXTOHEX TRANSLATE TO HEX 02573000
  2594. MVI CMXWORK+8,X'80' MOVE IN FIRST COMPARE 02574000
  2595. MVC CMXWORK+9(7),CMXWORK+8 AND PROPAGATE 02575000
  2596. NC CMXWORK+8(8),CMXWORK TEST FOR ILLEGAL CHAR 02576000
  2597. BNZ HEXGETC2 INVALID 02577000
  2598. PACK CMXWORK+16(5),CMXWORK(9) MOVE IN 02578000
  2599. L R0,CMXWORK+16 GET GENERATED NUMBER 02579000
  2600. CLR R0,R8 TOO LOW FOR RANGE 02580000
  2601. BL HEXGETC1 YES 02581000
  2602. CLR R0,R9 TOO HIGH FOR RANGE 02582000
  2603. BH HEXGETC1 YES 02583000
  2604. HEXGETC0 EQU * 02584000
  2605. CLR R0,R0 SET CC=0 02585000
  2606. BR R14 AND RETURN 02586000
  2607. SPACE 1 02587000
  2608. HEXGETC1 EQU * 02588000
  2609. OI CMXWORK+9,X'80' SET CC=1 02589000
  2610. BR R14 AND RETURN 02590000
  2611. SPACE 1 02591000
  2612. HEXGETC2 EQU * 02592000
  2613. LA R14,0(R14) CLEAR SIGN BIT 02593000
  2614. LTR R14,R14 SET CC=2 02594000
  2615. BR R14 AND RETURN 02595000
  2616. SPACE 1 02596000
  2617. HEXGETC3 EQU * 02597000
  2618. ALR R4,R3 PUT R4 BACK WHERE IT WAS 02598000
  2619. TM *+1,X'80' SET CC=3 02599000
  2620. BR R14 AND RETURN 02600000
  2621. EJECT 02601000
  2622. DECGET EQU * 02602000
  2623. SR R4,R3 LENGTH OF PARM 02603000
  2624. BNP DECGETC3 NO GOOD 02604000
  2625. CLR R3,R5 ANY AT ALL? 02605000
  2626. BNL DECGETC3 NOPE - ERROR 02606000
  2627. CL R4,DECLIMIT TOO MUCH 02607000
  2628. BCTR R4,0 DOWN ONE IN CASE 02608000
  2629. BH DECGETC2 YEP 02609000
  2630. XC CMXWORK(16),CMXWORK CLEAR WORK AREA 02610000
  2631. ST R6,CMXWORK+16 SAVE CALLER'S REG.6 02611000
  2632. LA R6,CMXWORK+12 LAST CHAR ADDRESS 02612000
  2633. SLR R6,R4 FIRST CHAR ADDRESS 02613000
  2634. EX R4,CMXMOVE MOVE TO WORK AREA 02614000
  2635. L R6,CMXWORK+16 RESTORE CALLER'S REG.6 02615000
  2636. TR CMXWORK(13),CMXTOHEX TRANSLATE TO PACKABLE HEX 02616000
  2637. TR CMXWORK(13),CMXTODEC CLEAR INVALID DECIMAL 02617000
  2638. MVI CMXWORK+16,X'80' SET CHECKING FIELD 02618000
  2639. MVC CMXWORK+17(12),CMXWORK+16 SET WHOLE FILED 02619000
  2640. NC CMXWORK+16(13),CMXWORK CHECK FOR INVALID CHARS 02620000
  2641. BNZ DECGETC2 BAD NEWS - ERROR 02621000
  2642. OI CMXWORK+12,X'C0' SET SIGN FIELD 02622000
  2643. PACK CMXWORK+17(7),CMXWORK(13) CONVERT TO PACKED DEC 02623000
  2644. MVI CMXWORK+16,X'00' SET TOP BYTE TO ZERO 02624000
  2645. CLC CMXWORK+16(8),DECMAX TOO BIG? 02625000
  2646. BH DECGETC2 YEP - ERROR 02626000
  2647. CVB R0,CMXWORK+16 GET BINARY COUNT 02627000
  2648. CLR R0,R8 TOO LOW FOR RANGE? 02628000
  2649. BL DECGETC1 YES 02629000
  2650. CLR R0,R9 TOO HIGH FOR RANGE? 02630000
  2651. BH DECGETC1 YES @VA06444 02631000
  2652. DECGETC0 EQU * 02632000
  2653. CLR R0,R0 SET CC=0 02633000
  2654. BR R14 AND RETURN 02634000
  2655. SPACE 02635000
  2656. DECGETC1 EQU * 02636000
  2657. OI CMXWORK+15,X'80' SET CC=1 02637000
  2658. BR R14 AND RETURN 02638000
  2659. SPACE 02639000
  2660. DECGETC2 EQU * 02640000
  2661. LA R14,0(R14) CLEAR SIGN 02641000
  2662. LTR R14,R14 SET CC=2 02642000
  2663. BR R14 AND RETURN 02643000
  2664. SPACE 02644000
  2665. DECGETC3 EQU * 02645000
  2666. ALR R4,R3 RESTORE R4 02646000
  2667. TM *+1,X'80' SET CC=3 02647000
  2668. BR R14 AND RETURN 02648000
  2669. SPACE 02649000
  2670. DECLIMIT DC F'10' MAX CHARS FOR INPUT 02650000
  2671. DECMAX DC PL8'2147483647' MAX POSITIVE FULLWORD 02651000
  2672. EJECT 02652000
  2673. *. 02653000
  2674. * ENTRY NAME - 02654000
  2675. * 02655000
  2676. * DECPUT 02656000
  2677. * 02657000
  2678. * OPERATION - 02658000
  2679. * 02659000
  2680. * CONVERTS A HEX FULLWORD TO DECIMAL AND GENERATES AN EBCDIC 02660000
  2681. * REPRESENTATION OF IT, SUPPRESSING LEADING ZEROES TO A MINIMUM 02661000
  2682. * COUNT, OPTIONALLY SUPPLIED BY THE CALLER. 02662000
  2683. * 02663000
  2684. * ENTRY CONDITIONS - 02664000
  2685. * 02665000
  2686. * GREG0 = NUMBER TO BE CONVERTED TO DECIMAL EBCDIC 02666000
  2687. * GREG1 = MINIMUM EBCDIC CHARACTER COUNT 02667000
  2688. * GREG6 = OUTPUT (TARGET) FIELD 02668000
  2689. * 02669000
  2690. * EXIT CONDITIONS - 02670000
  2691. * 02671000
  2692. * R1 = NUMBER OF CHARACTERS MOVED, AFTER SUPPRESSION 02672000
  2693. * OF LEADING ZEROS 02673000
  2694. * 02674000
  2695. *. 02675000
  2696. SPACE 02676000
  2697. DECPUT EQU * 02677000
  2698. SPACE 02678000
  2699. STM R1,R4,CMXWORK SAVE CALLER'S REGISTERS TO BE USED 02679000
  2700. CVD R0,CMXWORK+16 SET PACKED DECIMAL IN STORAGE 02680000
  2701. UNPK CMXWORK+24(11),CMXWORK+18(6) CONVERT TO UNPACKED DEC 02681000
  2702. OI CMXWORK+34,X'F0' FORCE PROPER ZONE FOR EBCDIC 02682000
  2703. LA R3,CMXWORK+25 INITIALIZE SOURCE FIELD 02683000
  2704. LA R4,CMXWORK+34 INITIALIZE END OF SOURCE FIELD 02684000
  2705. LA R1,10 SET MAX DIGIT CHAR COUNT 02685000
  2706. S R1,CMXWORK SET MAX SUPPRESSION LAPS 02686000
  2707. BNP DECPHIT NO SUPPRESSION AT ALL 02687000
  2708. DECPNEXT EQU * 02688000
  2709. CLI 0(R3),C'0' IS IT ZERO? 02689000
  2710. BNE DECPHIT NOPE - USE IT 02690000
  2711. CLR R3,R4 PAST THE LIMIT? 02691000
  2712. BNL DECPHIT YES - DO IT 02692000
  2713. LA R3,1(R3) BUMP TO NEXT CHAR 02693000
  2714. BCT R1,DECPNEXT AND CHECK IT 02694000
  2715. DECPHIT EQU * 02695000
  2716. SLR R4,R3 COUNT TO MOVE -1 02696000
  2717. EX R4,CMXMOVE MOVE NUMBER TO TARGET 02697000
  2718. LA R1,1(R4) RETURN COUNT 02698000
  2719. LM R2,R4,CMXWORK+4 RESTORE CALLER'S REGS 02699000
  2720. BR R14 AND RETURN TO CALLER 02700000
  2721. EJECT 02701000
  2722. *. 02702000
  2723. * ENTRY NAME - 02703000
  2724. * 02704000
  2725. * FILGET 02705000
  2726. * 02706000
  2727. * FUNCTION - 02707000
  2728. * 02708000
  2729. * LOCATE A FILE WITH SPOOLID MATCHING THAT SUPPLIED BY 02709000
  2730. * THE CALLER, WITHIN THE INTERNAL FILE TAG QUEUES. 02710000
  2731. * 02711000
  2732. * ENTRY CONDITIONS - 02712000
  2733. * 02713000
  2734. * GREG0 = SPOOL ID TO BE LOCATED 02714000
  2735. * 02715000
  2736. * EXIT CONDITIONS - 02716000
  2737. * 02717000
  2738. * GREG3 = TAG ADDRESS IF FOUND (CC=0) 02718000
  2739. * SAME AS ENTRY IF NOT FOUND (CC=3) 02719000
  2740. *. 02720000
  2741. SPACE 02721000
  2742. FILGET EQU * 02722000
  2743. STM R2,R4,CMXWORK SAVE CALLER'S REGS 02723000
  2744. L R2,TLINKS ADDR OF START OF LINK TABLE 02724000
  2745. L R4,0(R2) COUNT OF LINK TABLE ENTRIES 02725000
  2746. BCTR R4,0 SKIP LOCAL LINK 02726000
  2747. LTR R4,R4 ANY LEFT 02727000
  2748. BNP FILGASCN NO LINKS AT ALL 02728000
  2749. LA R2,8+LINKLEN(R2) ADDR OF FIRST LINK TABLE 02729000
  2750. FILGLINK EQU * 02730000
  2751. SPACE 02731000
  2752. LA R3,LPOINTER INITIALIZE FILE TAG POINTER 02732000
  2753. FILGFILE EQU * 02733000
  2754. ICM R3,B'1111',TAGNEXT POINT TO NEXT FILE TAG 02734000
  2755. BZ FILGNEXT ALL DONE - NEXT LINK 02735000
  2756. CH R0,TAGID IS THIS THE ONE? 02736000
  2757. BNE FILGFILE NO - TRY NEXT 02737000
  2758. SPACE 02738000
  2759. * FOUND THE SOUGHT FILE 02739000
  2760. FILGHIT EQU * 02740000
  2761. CLR R0,R0 SET CC=0 02741000
  2762. L R2,CMXWORK RESTORE CALLER'S REG.2 02742000
  2763. L R4,CMXWORK+8 RESTORE CALLER'S REG.4 02743000
  2764. BR R14 AND RETURN TO THE CALLER 02744000
  2765. SPACE 02745000
  2766. FILGNEXT EQU * 02746000
  2767. LA R2,LINKLEN(R2) POINT TO NEXT LINK TABLE 02747000
  2768. BCT R4,FILGLINK BACK FOR EACH LINK TABLE 02748000
  2769. SPACE 02749000
  2770. FILGASCN EQU * 02750000
  2771. L R2,TTAGQ TAG QUEUE CONTROL AREA 02751000
  2772. LA R3,4(R2) START OF ACTIVE INPUT QUEUE 02752000
  2773. FILGANXT EQU * 02753000
  2774. ICM R3,B'1111',TAGNEXT TO NEXT TAG 02754000
  2775. BZ FILGMISS NONE FOUND 02755000
  2776. CH R0,TAGID IS THIS THE ONE WE WANT? 02756000
  2777. BNE FILGANXT NOPE - TRY ANOTHER 02757000
  2778. B FILGHIT YES - RETURN IT 02758000
  2779. SPACE 02759000
  2780. FILGMISS EQU * 02760000
  2781. * FILE NOT FOUND 02761000
  2782. TM *+1,X'80' SET CC=3 02762000
  2783. LM R2,R4,CMXWORK RESTORE CALLER'S REGS 02763000
  2784. BR R14 AND RETURN 02764000
  2785. EJECT 02765000
  2786. *. 02766000
  2787. * ENTRY NAME - 02767000
  2788. * 02768000
  2789. * TODEBCD 02769000
  2790. * 02770000
  2791. * FUNCTION - 02771000
  2792. * 02772000
  2793. * CONVERT A S/370 FORMAT TOD TO EBCDIC DATE AND TIME. 02773000
  2794. * 02774000
  2795. * EXTERNAL ROUTINE CALLED - 02775000
  2796. * 02776000
  2797. * TODEBCD IN DMTCOM TO DO DATE TIME CONVERSION 02777000
  2798. * 02778000
  2799. * ENTRY CONDITIONS - 02779000
  2800. * 02780000
  2801. * GREGS 0 & 1 = S/370 FORMAT TOD TO BE CONVERTED 02781000
  2802. * GREG2 = ADDRESS OF A FIELD INTO WHICH THE OUTPUT 02782000
  2803. * IS TO BE EDITED BY MEANS OF AN EDIT INSTR. 02783000
  2804. * (THIS FIELD MUST START WITH A BYTE SET TO 02784000
  2805. * ONE LESS THAN THE TOTAL LENGTH OF THE FIELD, 02785000
  2806. * WHICH SHOULD CONTAIN AN EDITING MASK, INTO 02786000
  2807. * WHICH THE RESULT IS TO BE PLACED. THE TIME 02787000
  2808. * ZONE SPECIFICATION IS MOVED INTO THE SIX BYTE 02788000
  2809. * FIELD IMMEDIATELY FOLLOWING THE SPECIFIED 02789000
  2810. * OUTPUT EDITING FIELD.) 02790000
  2811. * 02791000
  2812. * EXIT CONDITIONS - 02792000
  2813. * 02793000
  2814. * DATE, TIME, AND TIME ZONE HAVE BEEN GENERATED AND 02794000
  2815. * AND MOVED TO THE SPECIFIED OUTPUT AREA. 02795000
  2816. * 02796000
  2817. *. 02797000
  2818. SPACE 02798000
  2819. TODEBCD DC 0H'0' 02799000
  2820. STM R13,R14,TODSAVE1 SAVE RETURN 02800000
  2821. LA R13,MMDDYYHH GET WORK ADDR ADDR FOR CALL 02801000
  2822. L R15,TCOM GET COMMON ROUTINE ADDR 02802000
  2823. L R15,GTODEBCD AND THE TIME CONVERT ADDR 02803000
  2824. BALR R14,R15 AND DO IT 02804000
  2825. LM R13,R14,TODSAVE1 RESTORE REGS 02805000
  2826. BR R14 AND RETURN 02806000
  2827. SPACE 02807000
  2828. MMDDYYHH DC D'0' FIELD TO HOLD NEW HOUR CALCULATION IN DECIMAL 02808000
  2829. DC D'0' FIELD FOR APPENDING MMDDYYHH TO MMSSMMMM 02809000
  2830. MMSSMMMM DC D'0' FIELD TO RECEIVE DECIMAL MINUTE AND SECOND 02810000
  2831. DAYNUMBR DC A(0) FIELD TO RECEIVE COMPUTED DAY OF WEEK 0 -> 6 02811000
  2832. TODEBCON DC F'-1',A(0+4,TIMEZON+4) SEE BELOW 02812000
  2833. * DC F'-1' TO HOLD LAST CALCULATION ELAPSED HOURS 02813000
  2834. * DC A(0+4) SWITCH, USED AS AN INDEX, FOR STD VS. DLT TIME 02814000
  2835. * DC A(TIMEZON+4) EXTERNAL ADDRESS OF TIMEZONE DISP TABLE 02815000
  2836. TODSAVE DC 11F'0' TODEBCD ROUTINE SAVE AREA 02816000
  2837. SPACE 02817000
  2838. TODSAVE1 DC 2F'0' SAVE AREA 02818000
  2839. SPACE 02819000
  2840. TIMEZON DC Y(0),CL6' ' DONT CONVERT TIME ZONE @VA03113 02820400
  2841. DC Y(0),CL6' ' ITS CORRECT AS IT IS @VA03113 02820800
  2842. EJECT 02822000
  2843. *. 02823000
  2844. * ENTRY NAME - 02824000
  2845. * 02825000
  2846. * PARMGET 02826000
  2847. * 02827000
  2848. * FUNCTION - 02828000
  2849. * 02829000
  2850. * SCAN AN EBCDIC LINE, AND FRAME THE NEXT PARAMETER ON THE 02830000
  2851. * LINE. 02831000
  2852. * 02832000
  2853. * ENTRY CONDITIONS - 02833000
  2854. * 02834000
  2855. * GREG3 = ADDRESS OF START OF STRING 02835000
  2856. * GREG5 = ADDRESS OF END OF STRING 02836000
  2857. * 02837000
  2858. * EXIT CONDITIONS - 02838000
  2859. * 02839000
  2860. * GREG3 = FIRST NONDELIMETER CHARACTER SCANNED; 02840000
  2861. * IF NONE FOUND, END OF STRING 02841000
  2862. * GREG4 = UNMODIFIED IF NO NONDELIMETER CHAR SCANNED; 02842000
  2863. * OTHERWISE, ADDRESS OF FIRST DELIMETER CHAR 02843000
  2864. * AFTER FIRST NONDELIMETER CHAR SCANNED; 02844000
  2865. * IF NONE, END OF STRING. 02845000
  2866. * GREG5 = UNMODIFIED 02846000
  2867. * 02847000
  2868. * NOTES - 02848000
  2869. * 02849000
  2870. * A DELIMETER CHAR IS ANY CHARACTER OF THE FORM B'0X000000' 02850000
  2871. *. 02851000
  2872. SPACE 02852000
  2873. PARMGET DC 0H'0' 02853000
  2874. LA R5,0(R5) CLEAR HIGH ORDER BYTE JUST IN CASE 02854000
  2875. BCTR R3,0 BUMP START OF STRING POINTER BACK FOR CONVENIENCE 02855000
  2876. PARMFIND EQU * 02856000
  2877. LA R3,1(R3) LOOK AT THE NEXT CHARACTER 02857000
  2878. CLR R3,R5 HAVE WE HIT THE END OF THE STRING? 02858000
  2879. BCR 11,R14 (BNL) YEP - LOOK NO MORE 02859000
  2880. TM 0(R3),X'BF' IS THIS CHARACTER A DELIMETER? 02860000
  2881. BZ PARMFIND YEP - KEEP LOOKING FOR A NONDELIMETER 02861000
  2882. LR R4,R3 OTHERWISE SET UP FOR NEXT PHASE OF SCAN 02862000
  2883. PARMSCAN EQU * 02863000
  2884. LA R4,1(R4) LOOK AT THE NEXT CHARACTER 02864000
  2885. CLR R4,R5 ARE WE AT THE END OF THE STRING YET? 02865000
  2886. BCR 11,R14 (BNL) RETURN IMMEDIATELY IF SO 02866000
  2887. TM 0(R4),X'BF' IS THIS CHARACTER A DELIMETER? 02867000
  2888. BNZ PARMSCAN KEEP SCANNING FOR A DELIMETER IF NOT 02868000
  2889. BR R14 OTHERWISE ALL DONE - RETURN 02869000
  2890. EJECT 02870000
  2891. *---------------------------------------------------------------------* 02871000
  2892. * * 02872000
  2893. * COMMAND TABLE DATA AREA * 02873000
  2894. * * 02874000
  2895. *---------------------------------------------------------------------* 02875000
  2896. SPACE 02876000
  2897. CMXSETUP DC A(CMXTABLE) ADDR OF COMMAND TABLE 02877000
  2898. DC A(CMXINC) LENGTH OF ENTRY 02878000
  2899. DC A(CMXEND-CMXINC) START OF LAST ENTRY 02879000
  2900. SPACE 02880000
  2901. CMXMAX EQU 8 MAX LENGTH OF A COMMAND NAME 02881000
  2902. SPACE 02882000
  2903. CMXINC EQU CMXMAX+2+2+4 LENGTH OF A TABLE ENTRY 02883000
  2904. SPACE 02884000
  2905. CMXTABLE DC 0F'0' 02885000
  2906. CDEF BACKSPAC,2,90,C0 02886000
  2907. CDEF CHANGE,2,20,C0 02887000
  2908. CDEF CMD,3,B0,80 02888000
  2909. CDEF DEFINE,3,00,80 02889000
  2910. CDEF DELETE,3,00,80 02890000
  2911. CDEF DISCONN,4,00,80 02891000
  2912. CDEF DRAIN,2,81,C0 02892000
  2913. CDEF FLUSH,1,A0,C0 02893000
  2914. CDEF FREE,2,82,C0 02894000
  2915. CDEF FWDSPACE,2,91,C0 02895000
  2916. CDEF HOLD,2,83,C0 02896000
  2917. CDEF MSG,1,B1,C0 02897000
  2918. CDEF ORDER,3,10,C0 02898000
  2919. CDEF PURGE,3,11,C0 02899000
  2920. CDEF QUERY,1,00,C0 02900000
  2921. CDEF START,3,80,C0 02901000
  2922. CDEF TRACE,2,84,80 02902000
  2923. CMXEND EQU * 02903000
  2924. SPACE 02904000
  2925. EJECT 02905000
  2926. CMXELMNT DC 0F'0' 02906000
  2927. CMXELLEN DC AL1(0) LENGTH 02907000
  2928. CMXELCOD DC X'00' COMMAND CODE 02908000
  2929. CMXELRET DC X'00' RETURN RESPONSE 02909000
  2930. CMXELMOD DC X'00' MODIFIERS 02910000
  2931. CMXELORG DC CL8' ' ORIGIN LINKID 02911000
  2932. CMXELVAR DC XL130'0' 02912000
  2933. SPACE 3 02913000
  2934. CMXMSG DC 0F'0' 02914000
  2935. DC AL1(28),X'02' REQ ELMNT LEN, FUNC CODE 02915000
  2936. CMXMSGRC DC X'00' MSG ROUTING CODE 02916000
  2937. CMXMSGSC DC X'00' MSG SEVERITY CODE 02917000
  2938. CMXMSGLK DC CL8' ' OBJECT LINKID 02918000
  2939. CMXMSGVM DC CL8' ' OBJECT VMID 02919000
  2940. DC CL3'CMX' MODULE ID 02920000
  2941. CMXMSGAC DC CL1' ' MSG ACTION CODE 02921000
  2942. CMXMSGNM DC H'0',AL2(0) MSG NUMBER, SPARE 02922000
  2943. CMXMSGV0 DC CL8' ' FIRST VARIABLE FIELD 02923000
  2944. CMXMSGV1 DC CL8' ' SECOND VARIABLE FIELD 02924000
  2945. CMXMSGV2 DC CL8' ' THIRD VARIABLE FIELD 02925000
  2946. CMXMSGV3 DC CL8' ' FOURTH VARIABLE FIELD 02926000
  2947. CMXMSGV4 DC CL8' ' FIFTH VARIABLE FIELD 02927000
  2948. CMXMSGV5 DC CL8' ' SIXTH VARIABLE FIELD 02928000
  2949. CMXMSGV6 DC CL8' ' SEVENTH VARIABLE FIELD 02929000
  2950. CMXMSGV7 DC CL8' ' EIGHTH VARIABLE FIELD 02930000
  2951. CMXMSGV8 DC CL8' ' NINTH VARIABLE FIELD 02931000
  2952. DC 11CL8' ' BUFFER FOR MSG TEXT 02932000
  2953. CMXMSGVL EQU *-CMXMSGV0 TOTAL VAR AREA LEN 02933000
  2954. SPACE 3 02934000
  2955. CMXTOHEX DC X'00808080808080808080808080808080' X'00' SAME AS C'0' 02935000
  2956. DC (7*16)X'80' 02936000
  2957. DC X'800A0B0C0D0E0F808080808080808080' ABCDEF 02937000
  2958. DC (3*16)X'80' 02938000
  2959. DC X'800A0B0C0D0E0F808080808080808080' ABCDEF AGAIN 02939000
  2960. DC (2*16)X'80' 02940000
  2961. DC X'00010203040506070809808080808080' 0123456789 02941000
  2962. SPACE 02942000
  2963. CMXTODEC DC X'00010203040506070809808080808080' 02943000
  2964. SPACE 02944000
  2965. CMXTOEBC DC C'0123456789ABCDEF' TRANSLATE TABLE 02945000
  2966. SPACE 02946000
  2967. CMXALPHA DC (8*16)X'80' 02947000
  2968. DC X'80000000000000000000808080808080' ABCDEFGHI 02948000
  2969. DC X'80000000000000000000808080808080' JKLMNOPQR 02949000
  2970. DC X'80800000000000000000808080808080' STUVWXZY 02950000
  2971. DC 16X'80' 02951000
  2972. DC X'80000000000000000000808080808080' ABCDEFGHI 02952000
  2973. DC X'80000000000000000000808080808080' JKLMNOPQR 02953000
  2974. DC X'80800000000000000000808080808080' STUVWXYZ 02954000
  2975. DC X'00000000000000000000808080808080' 0123456789 02955000
  2976. SPACE 2 02956000
  2977. CMXLIMIT DC F'8' MAX PARM LENGTH 02957000
  2978. SPACE 02958000
  2979. CMXSPRNG DC F'1',F'9900' RANGE OF VALID SPOOL NUMS 02959000
  2980. CMXDVRNG DC F'0',A(X'6FF') RANGE OF VALID DEV ADDRS 02960000
  2981. CMXNNRNG DC F'1',F'2147483647' RANGE OF VALID REC COUNTS 02961000
  2982. CMXKPRNG DC F'0',F'16' RANGE VALID HOLD SLOT COUNTS 02962000
  2983. CMXPRRNG DC F'0',F'99' RANGE OF VALID PRIORITIES 02963000
  2984. CMXCORNG DC F'1',F'99' RANGE OF VALID COPIES 02964000
  2985. SPACE 02965000
  2986. CMXAXS DC 0F'0',CL4'AXS' SPOOL ACCESS MGR TASK NAME 02966000
  2987. CMXLAX DC 0F'0',CL4'LAX' LINE ACCESS MGR TASK NAME 02967000
  2988. SPACE 02968000
  2989. CMXBLANK DC CL8' ' GENERAL PURPOSE BLANK FIELD 02969000
  2990. SPACE 02970000
  2991. CMXCOUNT DC F'8192' FREE PAGE COUNT FOR MSG 001 02971000
  2992. CMXREDUC DC F'4' MIN FREE PAGE LOSS FOR MSG 001 02972000
  2993. CMXCSAVE DC 18F'0' COMMON ROUTINE SAVE AREA @VA03303 02972010
  2994. SPACE 02973000
  2995. CMXWORK DC 5D'0' NUMBER MANIPULATION WORK AREA 02974000
  2996. SPACE 02975000
  2997. LTORG 02976000
  2998. EJECT 02977000
  2999. COPY RSSEQU 02978000
  3000. EJECT 02979000
  3001. COPY DEVTYPES 02980000
  3002. EJECT 02981000
  3003. COPY SVECTORS 02982000
  3004. EJECT 02983000
  3005. COPY LINKTABL 02984000
  3006. EJECT 02985000
  3007. COPY TAG 02986000
  3008. EJECT 02987000
  3009. COPY SPOOL 02988000
  3010. EJECT 02989000
  3011. COPY IOTABLE 02990000
  3012. EJECT 02991000
  3013. END 02992000