Table of Contents

DMKCFC Source

References

Source Listing

DMKCFC.ASSEMBLE.txt
  1. CFC TITLE 'DMKCFC (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. MACRO 00003000
  4. &LABEL COMND &CMD,&CLASS,&ABREV,&ADDR,&NCL=0,&TYPE=V 00004000
  5. &LABEL DC CL8'&CMD' COMMAND NAME 00005000
  6. DC AL1(&CLASS,&NCL),AL2(&ABREV) 00006000
  7. DC &TYPE.(&ADDR) ROUTINE ADDRESS 00007000
  8. SPACE 2 00008000
  9. MEND 00009000
  10. EJECT 00010000
  11. *. 00011000
  12. * MODULE NAME - 00012000
  13. * 00013000
  14. * DMKCFC 00014000
  15. * 00015000
  16. * FUNCTION - 00016000
  17. * 00017000
  18. * TO GET THE ADDRESS OF THE ROUTINE THAT WILL PROCESS THE CP 00018000
  19. * CONSOLE FUNCTION REQUESTED. 00019000
  20. * 00020000
  21. * ATTRIBUTES- 00021000
  22. * 00022000
  23. * REENTRANT, PAGEABLE, CALLED VIA SVC 00023000
  24. * 00024000
  25. * 00025000
  26. * ENTRY POINTS - 00026000
  27. * 00027000
  28. * DMKCFCMD - ENTERED TO PROCESS A CP CONSOLE FUNCTION 00028000
  29. * DMKCFCSL - ENTERED WHEN SLEEP COMMAND FOUND. 00029000
  30. * DMKCFCBE - ENTERED WHEN BEGIN COMMAND FOUND 00030000
  31. * DMKCFCQU - ENTERED WHEN QUERY COMMAND FOUND. 00031000
  32. * DMKCFCSE - ENTERED WHEN SET COMMAND FOUND 00031500
  33. * DMKCFCRQ - ENTERED FOR REQUEST COMMAND 00032000
  34. * DMKCFCSC - SCAN STRING FOR SPECIFIED CHARACTER 00032100
  35. * 00033000
  36. * ENTRY CONDITIONS - 00034000
  37. * 00035000
  38. * DMKCFCMD - 00036000
  39. * GPR 0 CONTAINS THE MESSAGE CHARACTER COUNT 00037000
  40. * GPR 1 POINTS TO AN 18 DOUBLE WORD INPUT MESSAGE BUFFER 00038000
  41. * GPR 9 POINTS TO MESSAGE BUFFER 00039000
  42. * GPR 11 CONTAINS THE USER'S VMBLOK ADDRESS 00040000
  43. * 00041000
  44. * EXIT CONDITIONS - 00042000
  45. * 00043000
  46. * NORMAL - 00044000
  47. * GPR 1 CONTAINS THE ADDRESS OF THE CONSOLE FUNCTION ROUTINE 00045000
  48. * OR MINUS ONE (1) INDICATING THAT THE COMMAND WAS 'CP'. 00046000
  49. * 00047000
  50. * ERROR - 00048000
  51. * GPR 1 CONTAINS ZERO INDICATING THE COMMAND WAS NOT FOUND. 00049000
  52. * GPR 2 CONTAINS THE ERROR RETURN CODE 00050000
  53. * 00051000
  54. * CALLS TO OTHER ROUTINES - 00052000
  55. * 00053000
  56. * NONE 00054000
  57. * 00055000
  58. * TABLES / WORK AREAS - 00056000
  59. * 00057000
  60. * VMBLOK 00058000
  61. * 00059000
  62. * 00060000
  63. * COMNDBEG TO COMNDEND IS A TABLE USED TO LOCATE THE ROUTINES TO 00061000
  64. * PROCESS THE VARIOUS CP COMMANDS. IT IS MADE UP OF ONE 16-BYTE 00062000
  65. * ENTRY FOR EACH VALID COMMAND. THE FORMAT OF EACH ENTRY IS: 00063000
  66. * COMMAND NAME--------- 8 BYTES 00064000
  67. * CLASS MASK ---------- 2 BYTES 00065000
  68. * ABREVIATION COUNT --- 2 BYTES 00066000
  69. * ROUTINE ADDRESS ----- 4 BYTES 00067000
  70. * 00068000
  71. * 00069000
  72. * REGISTER USAGE - 00070000
  73. * 00071000
  74. * GPR 0 = PARAMETER 00072000
  75. * GPR 1 = PARAMETER 00073000
  76. * GPR 2 = SCRATCH 00074000
  77. * GPR 3 = SCRATCH 00075000
  78. * GPR 4 = SCRATCH 00076000
  79. * GPR 5 = SCRATCH 00077000
  80. * GPR 6 = SCRATCH 00077500
  81. * GPR 9 = INPUT MESSAGE BASE 00078000
  82. * GPR 11 = VMBLOK BASE 00079000
  83. * GPR 12 = MODULE BASE 00080000
  84. * GPR 13 = SAVE AREA BASE 00081000
  85. * GPR 14 = LINKAGE 00082000
  86. * GPR 15 = LINKAGE 00083000
  87. * 00084000
  88. * 00085000
  89. * 00086000
  90. * NOTES - 00087000
  91. * NONE 00088000
  92. * 00089000
  93. * 00090000
  94. * OPERATION - 00091000
  95. * 00092000
  96. * 1. COMPARE THE COMMAND POINTED TO BY GPR 1 AGAINST A LIST 00093000
  97. * OF VALID COMMANDS. 00094000
  98. * 2. IF THE COMMAND IS FOUND CHECK TO INSURE THAT THE 00095000
  99. * ABREVIATION AND CLASS ARE VALID. IF THE COMMAND OR CLASS 00096000
  100. * IS INVALID SEND ERROR MMESSAGE DMKCFC001E, AND RETURN TO 00097000
  101. * CALLER WITH ERROR RETURN CODE IN GPR 2. 00098000
  102. * 3. IF THE COMMAND IS VALID RETURN THE CONSOLE FUNCTION 00099000
  103. * ROUTINE ADDRESS IN THE CALLERS GPR 1, AND ZERO THE ERROR 00100000
  104. * RETURN CODE REGISTER GPR 2. 00101000
  105. * 00102000
  106. * ERROR MESSAGES - 00103000
  107. * DMKCFC001E ?CP: (COMMAND) 00104000
  108. *. 00105000
  109. EJECT 00106000
  110. COPY OPTIONS 00107000
  111. COPY LOCAL 00108000
  112. EJECT 00109000
  113. DMKCFC START 0 @VM03169 00110000
  114. MODID DC CL8'DMKCFC' MODULE IDENTIFIER @VM03169 00111000
  115. USING PSA,R0 00112000
  116. USING VMBLOK,R11 00113000
  117. USING SAVEAREA,R13 00114000
  118. EXTRN DMKERMSG,DMKCFMAT,DMKSCNFD,DMKCVTHB,DMKCVTDB @VM03169 00115000
  119. EXTRN DMKSCHRT,DMKSCHST,DMKCQGEN,DMKCQPRV,DMKCQREY @VM03169 00116000
  120. EXTRN DMKCFSET,DMKCFOEX @V326538 00116500
  121. EXTRN DMKTRCPB,DMKTRCIT,DMKCFMWU @VM03169 00117000
  122. EXTRN DMKCVTAB @VA04301 00117100
  123. EXTRN DMKCQYEY 00117550
  124. EXTRN DMKJRLQU,DMKJRLSE @V60BBBB 00117750
  125. EXTRN DMKCQHQU @VA13360 00117850
  126. EXTRN HDKCQURY HRC019DK 00117920
  127. EXTRN HDKCQALO HRC030DK 00117960
  128. DMKCFCMD RELOC @VM03169 00118000
  129. CLI 0(R1),C'.' OUTPUT SUPPRESSION CHAR? HRC021DK 00118100
  130. BNE CHKLEN NO...PROCEED AS NORMAL HRC021DK 00118200
  131. OI VMHRCFLG,VMTRMOFF INHIBIT TERM OUTPUT HRC021DK 00118300
  132. BCTR R0,0 DECREMENT LENGTH BY ONE HRC021DK 00118400
  133. LA R1,1(,R1) BUMP PAST SUPPRESSION CHAR HRC021DK 00118500
  134. CHKLEN EQU * HRC021DK 00118600
  135. CL R0,F8 IS THE COMMAND LENGTH GREATER 00119000
  136. * THAN 8 ? 00120000
  137. BH CONFERR BRANCH IF YES 00121000
  138. LR R2,R0 SAVE BYTE COUNT 00122000
  139. BCTR R2,0 SUBTRACT ONE FOR EX 00123000
  140. TM VMRSTAT,VMLOGON HAS USER LOGGED ON YET ? 00124000
  141. BO STRTLOGN NO - GO SET UP TO SCAN FOR LOGON 00125000
  142. LA R3,COMNBEG1 BYPASS SCAN FOR LOGON SINCE IS 00126000
  143. * ON NOW 00127000
  144. B SETLEN 00128000
  145. STRTLOGN LA R3,COMNBEG0 SCAN FOR LOGON 00129000
  146. TM APSTAT1,CPINITD IS IPL IN PROGRESS ? @VA12658 00129100
  147. BZ EXITNULL YES... EXIT @VA12658 00129200
  148. SETLEN LA R4,16 LOAD TABLE ENTRY LENGTH 00130000
  149. LA R5,COMNDEND LOAD LAST COMMAND ADDRESS 00131000
  150. CONFEXEC EX R2,COMNDCLC DO THE COMMAND NAMES MATCH ? 00132000
  151. BE CONFABRV BRANCH IF YES 00133000
  152. CONFBXLE BXLE R3,R4,CONFEXEC BRANCH IF MORE COMMANDS 00134000
  153. CONFERR TM VMRSTAT,VMLOGON USER LOGGED ON YET ??? 00135000
  154. BNO CFC001 YES ---- @VM03169 00136000
  155. LA R0,L'RETRYMSG GET MESSAGE LENGTH 00137000
  156. LA R1,RETRYMSG GET POINTER TO MESSAGE 00138000
  157. L R2,VMTERM GET TERMINAL RDEVBLOK 00139000
  158. USING RDEVBLOK,R2 00140000
  159. CLI RDEVTYPE,TYP2741 2741 TERMINAL? 00141000
  160. BE SENDMSG YES 00142000
  161. DROP R2 00143000
  162. LA R0,L'RETRYMSG-9 GET MESSAGE LENGTH 00144000
  163. B SENDMSG 00145000
  164. CFC001 DS 0H @VM03169 00146000
  165. LA R2,1 ERROR CODE 00147000
  166. TM VMOSTAT,VMVIRCF VIRTUAL CONSOLE FUNCTION ?? @V200930 00148000
  167. BO EXITNULL YES @VM03169 00149000
  168. O R2,=X'80000000' TELL ERM TO RETURN HERE 00150000
  169. ICM R0,14,MODID+3 INSERT MODULE IDENTIFIER 00151000
  170. CALL DMKERMSG SEND MESSAGE 00152000
  171. B EXITNULL CONTINUE SCAN @VM03169 00153000
  172. SPACE 00154000
  173. SENDMSG CALL DMKQCNWT,PARM=NORET 00155000
  174. B EXITNULL CONTINUE SCAN 00156000
  175. SPACE 2 00157000
  176. CONFABRV SR R6,R6 ZERO COUNT REGISTER 00158000
  177. LH R6,10(,R3) LOAD ABREVIATION COUNT 00159000
  178. BCTR R6,0 SUBTRACT ONE FOR EXECUTE 00160000
  179. EX R6,COMNDCLC IS THIS A VALID ABREVIATION 00161000
  180. BE CONFFIND YES, GO CHECK FUNCTION CLASS 00162000
  181. B CONFBXLE NO, CONTINUE SCANNING COMMAND 00163000
  182. * TABLE 00164000
  183. SPACE 2 00165000
  184. CONFTM TM VMCLEVEL,*-* EXECUTED TM FOR CLASS @V200930 00166000
  185. SPACE 2 00167000
  186. CONFFIND TM 9(R3),NOCLASS CAN ANY CLASS EXECUTE ?? @V200930 00168000
  187. BO CONFCALL YES @V200930 00169000
  188. IC R6,8(R3) GET ALLOWED CLASSES @V200930 00170000
  189. EX R6,CONFTM TEST FOR CORRECT CLASSES @V200930 00171000
  190. BZ CFC001 CLASS NO GOOD @VM03169 00172000
  191. CONFCALL EQU * @V200930 00173000
  192. SR R2,R2 CLEAR RETURN CODE @V200930 00174000
  193. MVC VMCOMND,0(R3) SAVE LAST COMMAND ISSUED @V200930 00175000
  194. CLC 0(3,R3),CPCHAR IS IT 'CP ' ?? @V200820 00176000
  195. BE EXITNEG YES, SKIP AND GET NEXT FIELD @VM03169 00177000
  196. L R1,12(,R3) LOAD ROUTINE ADDRESS @VM03169 00178000
  197. B EXIT EXIT TO CALLER @VM03169 00179000
  198. EXITNEG L R1,FFS INFORM DMKCFM THIS WAS 'CP' @VM03169 00180000
  199. * PREFIX 00181000
  200. B EXIT RETURN TO CALLER @VM03169 00182000
  201. EXITNULL SLR R1,R1 TELL DMKCFM TO READ NEXT COMMAND @VM03169 00183000
  202. ST R2,SAVER2 SAVE ERROR RETURN CODE @VM03169 00184000
  203. EXIT ST R1,SAVER1 SAVE (ROUTINE ADDRESS OR CC) @VM03169 00185000
  204. * FOR DMKCFM 00186000
  205. EXIT NOW RETURN TO CALLLER @VM03169 00187000
  206. DS 0F 00188000
  207. EJECT 00189000
  208. COMNBEG0 COMND LOGON,0,1,DMKLOGON,NCL=1 00190000
  209. COMND LOGIN,0,1,DMKLOGON,NCL=1 00191000
  210. COMND DIAL,0,1,DMKDIAL,NCL=1 00192000
  211. COMNBEG1 COMND ATTACH,B,3,DMKVDAAT @V407466 00193000
  212. COMND ATTN,G,4,DMKCFCRQ,TYPE=A @V200930 00194000
  213. COMND ADSTOP,G,6,DMKCFDAD 00195000
  214. COMND ACNT,A,4,DMKCPVAC 00196000
  215. COMND AUTOLOG,(A+B),6,DMKALGON @V4075A0 00197100
  216. COMND BEGIN,G,1,DMKCFCBE,TYPE=A 00198000
  217. COMND BACKSPAC,D,2,DMKCSOBS 00199000
  218. COMND CHANGE,D+G,2,DMKCSUCH @V200820 00200000
  219. COMND CLOSE,G,1,DMKCSQCL @V60B9BA 00201000
  220. COMND COUPLE,G,6,DMKDIBCP @VA13704 00202000
  221. COMND DISPLAY,G,1,DMKCDBDI 00203000
  222. COMND DCP,C+E,3,DMKCDBDC @V200820 00204000
  223. COMND DEFINE,G,3,DMKDEFIN 00205000
  224. COMND DETACH,B+G,3,DMKVDDDE @V407466 00206000
  225. COMND DISCONN,0,4,DMKUSODS,NCL=1 00207000
  226. COMND DISABLE,A+B,4,DMKCPVDS @V200820 00208000
  227. COMND DMCP,C+E,4,DMKCDMDM @V4075A0 00209100
  228. COMND DRAIN,D,2,DMKCSODR 00210000
  229. COMND DUMP,G,2,DMKCDMDU @V4075A0 00211100
  230. COMND ECHO,G,2,DMKMSGEC 00212000
  231. COMND EXTERNAL,G,3,DMKCPBEX 00213000
  232. COMND ENABLE,A+B,2,DMKCPVEN @V200820 00214000
  233. COMND FLUSH,D,1,DMKCSOFL 00215000
  234. COMND FORCE,A,5,DMKUSOFL 00216000
  235. COMND HALT,A,4,DMKCPSH @VA03757 00217000
  236. COMND HCP,A,3,DMKCPSCP HRC010DK 00217500
  237. COMND HOLD,D,2,DMKCSQHL @V60B9BA 00218000
  238. COMND IPL,G,1,DMKCFGIP 00219000
  239. COMND LINK,G,4,DMKLNKIN 00220000
  240. COMND LOADBUF,D,7,DMKCSBLD @V386298 00221000
  241. COMND LOADVFCB,G,8,DMKCSBVL @V386298 00222000
  242. COMND LOCATE,C+E,3,DMKCFDLO @V200820 00223000
  243. COMND LOCK,C,4,DMKCPVLK HRC026DK 00224490
  244. COMND LOGOFF,0,3,DMKUSOLG,NCL=1 00225000
  245. COMND LOGOUT,0,3,DMKUSOLG,NCL=1 00226000
  246. COMND MONITOR,A+E,3,DMKMCCCL @VM03169 00227000
  247. COMND MSG,B+G,1,DMKMSGMS,NCL=1 @V200820 00228000
  248. COMND MSGNOH,A+B,6,DMKMSGNH @V60C2BE 00228100
  249. COMND MESSAGE,B+G,2,DMKMSGMS,NCL=1 @V200820 00229000
  250. COMND NETWORK,A+B+F,3,DMKNETWK @V200820 00230000
  251. COMND NOTREADY,G,4,DMKCPBNR 00231000
  252. COMND ORDER,D+G,3,DMKCSVOR @V60B9BA 00232000
  253. COMND PURGE,D+G,3,DMKCSVPU @V60B9BA 00233000
  254. COMND QUERY,A+B+C+D+E+F+G+H,1,DMKCFCQU,TYPE=A @V200820 00234000
  255. COMND READY,G,5,DMKCPBRY 00235000
  256. COMND FREE,D,2,DMKCSQFR @V60B9BA 00236000
  257. COMND REPEAT,D,3,DMKCSORP 00237000
  258. COMND REQUEST,G,3,DMKCFCRQ,TYPE=A @V200930 00238000
  259. COMND RESET,G,5,DMKCPBRS 00239000
  260. COMND REWIND,G,3,DMKCPBRW 00240000
  261. COMND SYSTEM,G,3,DMKCPBSR 00241000
  262. COMND SAVESYS,C,7,DMKCFHSV HRC026DK 00242490
  263. COMND INDICATE,E+G,3,DMKTHIEN @VM03169 00243000
  264. COMND TRANSFER,D+G,4,DMKCSVTR @V60B9BA 00244000
  265. COMND SET,A+B+F+G+H,3,DMKCFCSE,TYPE=A @V326538 00245000
  266. COMND SHUTDOWN,A,8,DMKCPRSH @VA13648 00246000
  267. COMND SLEEP,0,2,DMKCFCSL,NCL=1,TYPE=A 00247000
  268. COMND SPACE,D,3,DMKCSOSP 00248000
  269. COMND SPOOL,G,2,DMKCSPSP 00249000
  270. COMND STORE,G,2,DMKCDSTO 00250000
  271. COMND START,D,3,DMKCSOST 00251000
  272. COMND STCP,C,4,DMKCDSCP 00252000
  273. COMND TAG,G,2,DMKCSTAG @VM03169 00253000
  274. COMND TERMINAL,G,4,DMKCFTRM 00254000
  275. COMND TRACE,G,2,DMKTRACE 00255000
  276. COMND PER,G,3,DMKPECMD PER001 00255500
  277. COMND UNLOCK,C,6,DMKCPVUL HRC026DK 00256490
  278. COMND VARY,B,4,DMKCPSRY @VA03757 00257000
  279. COMND VMDUMP,G,3,DMKVMDEP @V67CAH7 00257500
  280. COMND WNG,A+B,1,DMKMSGWN @V200820 00258000
  281. COMND WARNING,A+B,1,DMKMSGWN @V200820 00259000
  282. COMND SMSG,G,2,DMKMSGSM @V60C2B8 00259100
  283. COMND *,0,1,0,NCL=1,TYPE=A @V200820 00260000
  284. COMNDEND COMND CP,0,2,0,NCL=1,TYPE=A @V200820 00261000
  285. COMNDCLC CLC 0(0,R1),0(R3) 00262000
  286. SPACE 00263000
  287. CPCHAR DC C'CP ' @V200820 00264000
  288. SPACE 1 00265000
  289. RETRYMSG DC X'9985A2A38199A3404095A4997C97957C' 00266000
  290. * R E S T A R T R E S T A R T 00267000
  291. EJECT 00268000
  292. *. 00269000
  293. * 00270000
  294. * ENTRY NAME - 00271000
  295. * 00272000
  296. * DMKCFCRQ 00273000
  297. * 00274000
  298. * FUNCTION - 00275000
  299. * 00276000
  300. * TO SIMULATE AN ATTENTION INTERRUPT TO THE VIRTUAL MACHINE 00277000
  301. * CONSOLE AS THOUGH THE REQUEST KEY HAD BEEN USED 00278000
  302. * ON A REAL CPU CONSOLE. 00279000
  303. * 00280000
  304. * COMMAND LINE FORMAT - 00281000
  305. * 00282000
  306. * +--------------+ 00283000
  307. * | REQUEST | 00284000
  308. * +--------------+ 00285000
  309. * 00286000
  310. * CALLS TO OTHER ROUTINES - 00287000
  311. * 00288000
  312. * DMKCFMAT - TO SIMULATE THE ATTENTION 00289000
  313. * 00290000
  314. * OPERATION - 00291000
  315. * 00292000
  316. * 1. CALL DMKCFMAT TO POST THE ATTENTION INTERRUPT 00293000
  317. * 2. RETURN +4 TO RUN THE VIRTUAL MACHINE 00294000
  318. * 00295000
  319. * RESPONSES - 00296000
  320. * 00297000
  321. * NONE 00298000
  322. * 00299000
  323. * ERROR MESSAGES - 00300000
  324. * 00301000
  325. * NONE 00302000
  326. * 00303000
  327. *. 00304000
  328. EJECT 00305000
  329. DMKCFCRQ RELOC @VM03169 00306000
  330. SPACE 00307000
  331. CALL DMKCFMAT SIMULATE ATTENTION INTERRUPT @V200930 00308000
  332. L R1,SAVERETN GET RETURN ADDRESS @V200930 00309000
  333. LA R1,4(R1) UP TO RUN MACHINE @V200930 00310000
  334. ST R1,SAVERETN SET RETURN TO DMKCFM @V200930 00311000
  335. EXIT RUN MACHINE @V200930 00312000
  336. EJECT 00313000
  337. *. 00314000
  338. * 00315000
  339. * ENTRY NAME - 00316000
  340. * 00317000
  341. * DMKCFCBE 00318000
  342. * 00319000
  343. * FUNCTION - 00320000
  344. * 00321000
  345. * TO ALLOW VIRTUAL MACHINE TO CONTINUE OR TO RESUME 00322000
  346. * OPERATION AT A SPECIFIED LOCATION. 00323000
  347. * 00324000
  348. * 00325000
  349. * COMMAND LINE FORMAT - 00326000
  350. * 00327000
  351. * +--------+------------+ 00328000
  352. * | BEGIN | LOCATION | 00329000
  353. * +--------+------------+ 00330000
  354. * 00331000
  355. * CALLS TO OTHER ROUTINES - 00332000
  356. * 00333000
  357. * DMKSCNFD - TO PICK UP V.M. ADDRESS (IF ANY) 00334000
  358. * DMKCVTHB - TO CONVERT SAME TO BINARY 00335000
  359. * DMKTRCPB - TO PUT BACK OLD USER INSTRUCTIONS (IF TRACING) 00336000
  360. * DMKTRCIT - TO SET NEW "SVC B2" FOR TRACING INSTRUCTIONS 00337000
  361. * 00338000
  362. * OPERATION - 00339000
  363. * 00340000
  364. * 1. CALL DMKSCNFD TO LOCATE POSSIBLE ADDRESS. IF NONE FOUND, 00341000
  365. * GO TO STEP 2A. 00342000
  366. * 2. CALL DMKCVTHB TO CONVERT THE ADDRESS TO BINARY. 00343000
  367. * IF BAD, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFM004E. 00344000
  368. * IF OK, STORE NEW ADDRESS INTO THE VIRTUAL PSW. 00345000
  369. * 2A. SET UP TO RETURN TO DMKCFM+4 AND EXIT. 00346000
  370. * 00347000
  371. * RESPONSES - 00348000
  372. * NONE - THE VIRTUAL MACHINE WILL COMMENCE EXECUTION. 00349000
  373. * 00350000
  374. * ERROR MESSAGES - 00351000
  375. * DMKCFC004E INVALID HEXLOC - (HEXLOC) 00352000
  376. * 00353000
  377. *. 00354000
  378. EJECT 00355000
  379. DMKCFCBE RELOC @VM03169 00356000
  380. SPACE 00357000
  381. CALL DMKSCNFD SCAN FOR BEGIN ADDRESS 00358000
  382. BNZ BEGEXIT RETURN IF NONE FOUND 00359000
  383. LR R6,R1 SAVE ARGUMENT ADDRESS 00360000
  384. LR R5,R0 SAVE ARGUMENT LENGTH 00361000
  385. CL R0,F6 OVER SIX CHARACTERS ???? 00362000
  386. BH CFC004 YES - SEND ERROR MESSAGE @VM03169 00363000
  387. CALL DMKCVTHB CONVERT ADDRESS TO BINARY 00364000
  388. BNZ CFC004 BRANCH ON ERROR @VM03169 00365000
  389. AIF (NOT &TRACE(6)).TR2 00366000
  390. TM VMTRCTL,VMTRBRIN TRACING INSTRUCTIONS ? 00367000
  391. BZ BEGSTOR NOPE - STORE NEW PSW BITS. 00368000
  392. CALL DMKTRCPB YES - PUT BACK OLD USER 00369000
  393. * INSTRUCTIONS 00370000
  394. CALL DMKTRCIT AND SET THE NEW ONE (R1 TELLS 00371000
  395. * WHERE) 00372000
  396. .TR2 ANOP 00373000
  397. BEGSTOR STCM R1,7,VMPSW+5 STORE NEW ADDRESS BACK IN PSW 00374000
  398. BEGEXIT L R1,SAVERETN LOAD RETURN ADDRESS 00375000
  399. LA R1,4(,R1) INCREMENT BY 4 00376000
  400. ST R1,SAVERETN STORE BACK IN SAVE AREA 00377000
  401. EXIT 00378000
  402. EJECT 00379000
  403. *. 00380000
  404. * ENTRY NAME - 00381000
  405. * 00382000
  406. * DMKCFCSL 00383000
  407. * 00384000
  408. * FUNCTION - 00385000
  409. * 00386000
  410. * TO ALLOW TERMINAL TO RECEIVE MESSAGES, BUT NOT 00387000
  411. * RUN USERS VIRTUAL MACHINE. 00388000
  412. * 00389000
  413. * COMMAND LINE FORMAT - 00390000
  414. * 00391000
  415. * +---------+-----------------------------------+ 00392000
  416. * | SLEEP | < NN < HRS | MIN | SEC >> | 00393000
  417. * +---------+-----------------------------------+ 00394000
  418. * 00395000
  419. * OPERATION - 00396000
  420. * 00397000
  421. * 1. IF 'NN' NOT SPECIFIED, SET VMSLEEP AND EXIT. 00398000
  422. * 2. VALIDATE NUMERIC OPERAND, SCAN FOR UNITS OPERAND. 00399000
  423. * (DEFAULT UNIT IS MINUTES, ABBREVIATIONS ARE 'HR', 00400000
  424. * 'MIN', AND 'SEC') 00401000
  425. * CONVERT SPECIFIED NUMBER INTO TOD CLOCK UNITS. 00402000
  426. * 3. CALL DMKFREE FOR STORAGE FOR A TRQBLOK. 00403000
  427. * 4. IF VMDELAY ALREADY POINTS TO A TRQBLOK, USE THE 00404000
  428. * EXISTING ONE (RESET VIA CALL DMKSCHRT IF QUEUED). 00405000
  429. * 5. ADD THE SPECIFIED NUMBER OF SECONDS TO THE CURRENT 00406000
  430. * T.O.D. CLOCK VALUE, SET THE RETURN TO 'SLPRETN', 00407000
  431. * AND SET THE REQUEST VIA CALL DMKSCHST. EXIT 00408000
  432. * 6. WHEN THE SPECIFIED INTERVAL HAS ELAPSED, FRET THE 00409000
  433. * TRQBLOK AND RE-DISPATCH THE VIRTUAL MACHINE. 00410000
  434. * 00411000
  435. * RESPONSES - NONE 00412000
  436. * 00413000
  437. * ERROR MESSAGES - 00414000
  438. * 00415000
  439. * DMKCFC002E INVALID OPERAND - OPERAND 00416000
  440. *. 00417000
  441. EJECT 00418000
  442. DMKCFCSL RELOC @VM03169 00419000
  443. SPACE 00420000
  444. CALL DMKSCNFD WAS AN INTERVAL SPECIFIED ? @V200820 00421000
  445. BZ INTERVAL YES CONTINUE @VM03169 00422000
  446. OI VMOSTAT,VMSLEEP SET MACHINE TO SLEEP @VM03169 00423000
  447. B SLPEXIT AND RETURN @VM03169 00424000
  448. INTERVAL LA R2,2 SET UP ERROR MSG CODE (IN CASE) @VM03169 00425000
  449. CL R0,F2 CHECK FOR VALID PARM LENGTH @VM03169 00426000
  450. BH CALLERM TOO LONG - ERROR @V200820 00427000
  451. STM R0,R1,SAVEWRK2 SAVE PARM ADDR, LEN FOR LATER ERR@V200820 00428000
  452. CALL DMKCVTDB ATTEMPT CONVERT TO BINARY @V200820 00429000
  453. LR R3,R1 VALUE TO GR3 IF O.K. @V200820 00430000
  454. LM R0,R1,SAVEWRK2 RECOVER PARM ADDR, ETC IF BAD @V200820 00431000
  455. BNZ CALLERM NO GOOD - ERROR @V200820 00432000
  456. CALL DMKSCNFD SCAN FOR UNITS OPERAND @VM03169 00433000
  457. BNZ SLPMINS NONE SPECIFIED - USE MINUTES @VM03169 00434000
  458. CL R0,F3 MAXIMUM LENGTH IS THREE BYTES @VM03169 00435000
  459. BH CALLERM NO GOOD - DMKCFC002E @VM03169 00436000
  460. BE SLPARMS EXACTLY THREE CHARS - CHECK THEM @VM03169 00437000
  461. CLC 0(2,R1),=C'HRS ' ONLY ABBREVIATION IS 'HR' @VM03169 00438000
  462. BNE CALLERM NOPE - INVALID OPERAND @VM03169 00439000
  463. B SLPHOUR CONVERT FROM HOURS TO SECONDS @VM03169 00440000
  464. SLPARMS EQU * DETERMINE TIME UNITS FOR DELAY @VM03169 00441000
  465. CLC 0(3,R1),=C'SEC ' DELAY IN SECONDS ? @VM03169 00442000
  466. BE SLPSECS YES - NO CONVERSION @VM03169 00443000
  467. CLC 0(3,R1),=C'MIN ' DELAY IN MINUTES ? @VM03169 00444000
  468. BE SLPMINS YES - MULTIPLY BY 60 @VM03169 00445000
  469. CLC 0(3,R1),=C'HRS ' DELAY IN HOURS ? @VM03169 00446000
  470. BNE CALLERM NO -- BAD OPERAND @VM03169 00447000
  471. SLPHOUR EQU * CONVERT HOURS TO SECONDS @VM03169 00448000
  472. SLR R2,R2 CLEAR HIGH-ORDER REGISTER @VM03169 00449000
  473. M R2,F60 HOURS TIMES 60 = MINUTES @VM03169 00450000
  474. SLPMINS EQU * CONVERT MINUTES TO SECONDS @VM03169 00451000
  475. SLR R2,R2 CLEAR HIGH-ORDER REGISTER @VM03169 00452000
  476. M R2,F60 MINUTES TIMES 60 = SECONDS @VM03169 00453000
  477. SLPSECS EQU * CONVERT TO TOD CLOCK UNITS @VM03169 00454000
  478. SLR R2,R2 CLEAR HIGH-ORDER REGISTER @VM03169 00455000
  479. M R2,=F'1000000' CONVERT TO MICRO-SECONDS @VM03169 00456000
  480. SLDA R2,12 ALIGN TO BIT 51 @VM03169 00457000
  481. L R1,VMDELAY CHECK FOR AN EXISTING TRQBLOK @V200820 00458000
  482. LTR R1,R1 ??? @V200820 00459000
  483. BZ GETRQBK NOPE - GET ONE FROM FREE STORAGE @V200820 00460000
  484. CALL DMKSCHRT RESET THE TIMER REQUEST @V200820 00461000
  485. B SETRQBK NOW IT'S O.K. TO USE @V200820 00462000
  486. GETRQBK EQU * @V200820 00463000
  487. LA R0,TRQBSIZE SIZE OF TRQBLOK IN DBL-WDS @V200820 00464000
  488. CALL DMKFREE ... @V200820 00465000
  489. XC 0(TRQBSIZE*8,R1),0(R1) CLEAR IT @V200820 00466000
  490. ST R1,VMDELAY SAVE THE ADDRESS HERE @V200820 00467000
  491. USING TRQBLOK,R1 @V200820 00468000
  492. SETRQBK EQU * @V200820 00469000
  493. OI VMOSTAT,VMSLEEP SET MACHINE TO SLEEP @VM03169 00470000
  494. STCK TRQBVAL SET CURRENT TIME OF DAY @V200820 00471000
  495. BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 00471250
  496. DOWNWEGO DS 0H @V408246 00471300
  497. GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 00471500
  498. CLOCKOK EQU * @VA04301 00471750
  499. AL R3,TRQBVAL+4 ADD LOW ORDER WORD @VM03169 00472000
  500. BC 12,NOCARRY SKIP IF NO CARRY @VM03169 00473000
  501. AL R2,F1 ELSE ADD IN THE CARRY @VM03169 00474000
  502. NOCARRY AL R2,TRQBVAL ADD IN HIGH ORDER WORD @VM03169 00475000
  503. STM R2,R3,TRQBVAL STORE WAKE UP TIME 00476000
  504. ST R11,TRQBUSER VMBLOK ADDRESS @V200820 00477000
  505. L R4,=A(DMKCFMWU) RETURN AFTER INTERVAL @VM03169 00478000
  506. ST R4,TRQBIRA ... @V200820 00479000
  507. STCK TRQBTOD TIME-STAMP TRQ BLOCK @V408246 00479100
  508. BC 3,DOWNWEGO ABEND CVT001 @V408246 00479300
  509. CALL DMKSCHST SET THE REQUEST PENDING @V200820 00480000
  510. MC 3,1 CLASS1=RESPONSE, CODE3=SL/TIMEOUT@VM03169 00481000
  511. SLPEXIT EQU * @V200820 00482000
  512. EXIT RETURN TO DMKCFC @V200820 00483000
  513. SPACE 2 00484000
  514. SPACE 3 00485000
  515. * 00486000
  516. * WHEN COME HERE R6= ARGUMENT ADDRESS, R5= ARGUMENT LENGTH 00487000
  517. * 00488000
  518. CFC004 LR R0,R5 ARGUMENT LENGTH @VM03169 00489000
  519. LR R1,R6 ARGUMENT ADDRESS 00490000
  520. LA R2,4 ERROR CODE 00491000
  521. SPACE 00492000
  522. CALLERM ICM R0,14,MODID+3 MODULE IDENTIFIER 00493000
  523. CALL DMKERMSG SEND ERROR MESSAGE 00494000
  524. * 00495000
  525. * ERMSG WILL RETURN TO CFC MAIN CONTROL --- NOT HERE 00496000
  526. * 00497000
  527. EJECT 00497005
  528. *. 00497010
  529. * ENTRY NAME - 00497015
  530. * 00497020
  531. * DMKCFCSC 00497025
  532. * 00497030
  533. * FUNCTION - 00497035
  534. * 00497040
  535. * A NEW ENTRY POINT WILL BE ADDED TO DMKCFC (DMKCFCSC) 00497045
  536. * WHICH WILL SCAN A STRING FOR A SPECIFIED CHARACTER. THIS 00497050
  537. * ROUTINE IS BEING IMPLEMENTED TO DETERMINE WHETHER AN 00497055
  538. * OPERAND ON A COMMAND LINE IS A RANGE OF DEVICE ADDRESSES. 00497060
  539. * DMKCFCSC MAY BE INVOKED TO SCAN FOR ANY CHARACTER; THE 00497065
  540. * 3850 SUPPORT WILL USE THE ROUTINE TO SCAN FOR A '-'. 00497070
  541. * 00497075
  542. * ENTRY CONDITIONS: 00497080
  543. * 00497085
  544. * R0 CONTAINS LENGTH OF STRING TO BE SCANNED 00497090
  545. * R1 CONTAINS THE ADDRESS OF THE STRING TO BE SCANNED. 00497095
  546. * R2 CONTAINS THE ADDRESS OF A FIELD CONTAINING THE 00497100
  547. * CHARACTER WHICH WILL BE THE OBJECT OF THE SCAN. 00497105
  548. * 00497110
  549. * EXIT CONDITIONS: 00497115
  550. * 00497120
  551. * CC=0 - THE SPECIFIED CHARACTER WAS NOT FOUND IN THE STRING; 00497125
  552. * ENTRY REGISTERS REMAIN UNCHANGED. 00497130
  553. * 00497135
  554. * CC=1 - THE SPECIFIED CHARACTER WAS FOUND IN THE STRING. 00497140
  555. * R2 CONTAINS THE ADDRESS OF THE SPECIFIED CHARACTER 00497145
  556. * IN THE STRING BEING SCANNED; R0 AND R1 REMAIN 00497150
  557. * UNCHANGED. 00497155
  558. * 00497160
  559. * OPERATION - 00497165
  560. * 00497170
  561. * SCAN FOR THE SPECIFIED CHARACTER BY USING THE 'TRT' 00497175
  562. * INSTRUCTION AND A 256 BYTE TABLE. 00497180
  563. * 00497185
  564. * RESPONSES - 00497190
  565. * NONE 00497195
  566. * 00497200
  567. * MESSAGES - 00497205
  568. * NONE 00497210
  569. *. 00497215
  570. DMKCFCSC RELOC @V407466 00497220
  571. LA R4,DMKCFCTB SET TABLE ADDRESS @V407466 00497225
  572. XC 0(L256,R4),0(R4) CLEAR TO ZERO @V407466 00497230
  573. SLR R6,R6 CLEAR REGISTER @V407466 00497235
  574. IC R6,0(R2) GET SCAN CHARACTER @V407466 00497240
  575. LA R5,0(R4,R6) GET TRT TAB PTR + '-' CHAR @V407466 00497245
  576. LTR R6,R6 WAS SCAN CHAR '00' @V407466 00497250
  577. BNZ FUNC NO, KEEP GOING @V407466 00497255
  578. LA R6,1(,R6) NON-ZERO BYTE IN TABLE @V407466 00497260
  579. FUNC EX R6,SETFUNC PLACE FUNCTION @V407466 00497265
  580. LR R6,R1 PTR TO FIRST BYTE OF DATA @V407466 00497270
  581. LR R9,R0 @V407466 00497275
  582. LA R7,0(R9,R6) PTR TO LAST CHAR + 1 @V407466 00497280
  583. ABOVE LR R8,R7 GET LENGTH FOR @V407466 00497285
  584. SR R8,R6 EXECUTE INST. @V407466 00497290
  585. BCTR R8,0 DECREMENT FOR EXECUTE @V407466 00497295
  586. EX R8,SEARCH SCAN FOR '-' @V407466 00497300
  587. BC 0,EXIT2 @V407466 00497305
  588. ST R1,SAVER2 ARGUMENT BYTE ADDRESS @V407466 00497310
  589. ST R6,SAVER1 RESTORE ORIGINAL R1 @V407466 00497315
  590. EXIT2 EXIT @V407466 00497320
  591. SEARCH TRT 0(0,R6),0(R4) @V407466 00497325
  592. SETFUNC MVI 0(R5),0 @V407466 00497330
  593. L256 EQU 256 @V407466 00497335
  594. DMKCFCTB DC 256X'00' @V407466 00497340
  595. EJECT 00498000
  596. *. 00499000
  597. * ENTRY NAME - 00499500
  598. * 00500000
  599. * DMKCFCQU - PROCESS THE QUERY COMMAND 00500500
  600. * DMKCFCSE - PROCESS THE SET COMMAND 00501000
  601. * 00501500
  602. * FUNCTION - 00502000
  603. * 00502500
  604. * THE FUNCTION OF THIS ROUTINE IS TO SCAN THRU THE QUERY AND 00503000
  605. * SET LISTS FOR THE SPECIFIED ARGUMENT. THIS ROUTINE 00503500
  606. * WILL SET UP AND CALL THE PROPER QUERY OR SET EXECUTOR 00504000
  607. * TO HANDLE THE REQUEST. 00504500
  608. * 00505000
  609. * OPERATION - 00505500
  610. * 00506000
  611. * 1. CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF NO 00506500
  612. * ARGUMENT IS FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE 00507000
  613. * DMKCFC026E. 00507500
  614. * 2. SCAN THE APPROPRIATE LIST FOR AN ARGUMENT. 00508000
  615. * IF NOT FOUND AND THIS IS A QUERY REQUEST, SET UP FOR 00508500
  616. * THE APPROPRIATE DEFAULT AND CALL THE APPROPRIATE 00509000
  617. * EXECUTOR. 00509500
  618. * 3. CHECK ARGUMENT FOR MINIMUM ABBREVIATION. 00510000
  619. * 4. CHECK ARGUMENT FOR PERMITTED CLASSES. 00510500
  620. * 5. SET THE R6 INDEX AND CALL THE MODULE TO 00511000
  621. * HANDLE THE ARGUMENT. 00511500
  622. * 00512000
  623. * NOTE: THE QUERY AND SET LISTS ARE MADE UP OF 12 BYTE 00512500
  624. * ENTRIES, EACH OF THE FOLLOWING FORM: 00513000
  625. * 00513500
  626. * +----------------------+------+------+------+------+ 00514000
  627. * | SEARCH ARGUMENT |ABBREV|CLASS |MODULE|INDEX | 00514500
  628. * +----------------------+------+------+------+------+ 00515000
  629. * 00515500
  630. * THE INDEX MUST MATCH THE BRANCH LISTS IN THE 00516000
  631. * CALLED MODULES. 00516500
  632. * 00517000
  633. * RESPONSES - 00517500
  634. * NONE 00518000
  635. * 00518500
  636. * MESSAGES - 00519000
  637. * 00519500
  638. * DMKCFC003E INVALID OPTION - OPTION 00520000
  639. * DMKCFC026E OPERAND MISSING OR INVALID 00520500
  640. * 00521000
  641. *. 00521500
  642. EJECT 00522000
  643. DMKCFCQU RELOC @V326538 00522500
  644. MVI SAVEWRK1,00 INDICATE QUERY FUNCTION @V326538 00523000
  645. LA R3,QRYLIST START OF QUERY LIST @V326538 00523500
  646. LA R5,QRYLAST END OF QUERY LIST @V326538 00524000
  647. B SETQUCOM JOIN COMMON CODE @V326538 00524500
  648. SPACE 00525000
  649. DMKCFCSE RELOC @V326538 00525500
  650. MVI SAVEWRK1,X'01' INDICATE SET FUNCTION @V326538 00526000
  651. LA R3,SETLIST START OF SET LIST @V326538 00526500
  652. LA R5,SETLAST END OF SET LIST @V326538 00527000
  653. SPACE 00527500
  654. SETQUCOM MVC SAVEWRK2(8),BLANKS BLANK MESSAGE AREA @V326538 00528000
  655. MVC SAVEWRK4(8),SAVEWRK2 ... 00545000
  656. CALL DMKSCNFD LOCATE TYPE OF QUERY 00546000
  657. BNZ CFC026 MISSING ARGUMENT @VM03169 00547000
  658. CL R0,F8 IF ARGUMENT OVER EIGHT CHARACTERS 00548000
  659. BH CFC026 WE HAVE A FOR SURE ERROR @VM03169 00549000
  660. LR R2,R0 LENGTH OF ARG. IN GPR 2. 00550000
  661. BCTR R2,0 MAKE RIGHT LENGTH FOR COMPARE 00551000
  662. * INST. 00552000
  663. LA R4,12 INDEX @V200930 00555000
  664. QRYLOOP EX R2,QRYCLC IS THIS OPTION REQUESTED ? 00556000
  665. BE QRYABREV IF EQUAL, GO CHECK FOR PROPER 00557000
  666. * ABREV. 00558000
  667. VECTBUMP DS 0H @V200930 00559000
  668. BXLE R3,R4,QRYLOOP TRY AGAIN IF NOT AT END 00560000
  669. LR R6,R0 SAVE PARM LENGTH @VM03169 00561000
  670. LR R7,R1 SAVE PARM POINTER @VM03169 00562000
  671. CLC 0(2,R1),=C'PF' PF QUERY ?? @V200730 00563000
  672. BNE QRYUSR NO, MIGHT BE USERID @V200730 00564000
  673. CLI SAVEWRK1,X'00' IS THIS A QUERY REQUEST? @V326538 00564100
  674. BE QUEPF YUP, BR. @V326538 00564200
  675. LA R3,SETPF ADDRESS THE TABLE ENTRY @V326538 00564300
  676. B QRYCALL AND GO TO THE SETPF ROUTINE @V326538 00564400
  677. SPACE 00564500
  678. QUEPF EQU * @V326538 00564600
  679. CL R0,F4 LENGTH OF 4? @VM03169 00565000
  680. BH QRYUSR GT 4 - ISN'T PFXX; MUST BE USERID@VM03169 00566000
  681. LA R1,2(R1) ADDR OF NUMBER TO CONVERT @VM03169 00567000
  682. BCTR R0,0 SIZE OF NUMBER TO CONVERT @VM03169 00568000
  683. BCTR R0,0 ... @VM03169 00569000
  684. CALL DMKCVTDB CONVERT THE XX IN PFXX @VM03169 00570000
  685. BNZ QRYUSR IF DIDN'T CONVERT, MUST BE USERID@VM03169 00571000
  686. LTR R1,R1 IS THE NUMBER POSITIVE? @VM03169 00572000
  687. BNP QRYUSR NO, MUST BE USERID @VM03169 00573000
  688. CH R1,=H'24' Is converted number GT 24? HRC043DK 00574100
  689. BH QRYUSR YES, INVALID PFXX, MUST BE USERID@VM03169 00575000
  690. LR R0,R6 RESTORE PARM LENGTH @VM03169 00576000
  691. LR R1,R7 RESTORE PARM POINTER @VM03169 00577000
  692. LA R3,QRYPF SET R3 TO QUERY FUNC @V200730 00578000
  693. B QRYCALL CALL TO DO PF QUERY @V200730 00579000
  694. QRYUSR DS 0H @V200730 00580000
  695. LR R0,R6 RESTORE PARM LENGTH @VM03169 00581000
  696. LR R1,R7 RESTORE PARM POINTER @VM03169 00582000
  697. LA R3,QRYCLASB SET DEFUALT FOR CLASS B @V200930 00583000
  698. CLI SAVEWRK1,X'00' IS THIS A QUERY REQUEST? @V326538 00583300
  699. BNE CFC003 NOPE, GARBAGE IN, GARBAGE OUT @V326538 00583600
  700. TM VMCLEVEL,VMCLASSB IS IT CLASS B ?? @V200930 00584000
  701. BO QRYCALL YES, DO IT @V200930 00585000
  702. LA R3,QRYCLASG SET FOR CLASS G DEFAULT @V200930 00586000
  703. B QRYCALL DO IT @V200930 00587000
  704. SPACE 00588000
  705. QRYABREV SR R7,R7 CLEAR FOR WORK @V200930 00589000
  706. IC R7,8(R3) GET ALLOWED ABBREVIATION @V200930 00590000
  707. BCTR R7,0 MINUS ONE FOR 'EX' COMPARE 00591000
  708. EX R7,QRYCLC MATCH ????? 00592000
  709. BNE VECTBUMP NO GOOD, KEEP LOOKING @V200930 00593000
  710. IC R7,9(R3) GET ALLOWED CLASS @V200930 00594000
  711. EX R7,QRYTM TEST FOR ALLOWED CLASS @V200930 00595000
  712. BZ VECTBUMP NOT ALLOWED, KEEP SCANNING @V200930 00596000
  713. B QRYCALL OK, GO DO IT @V200930 00597000
  714. EJECT 00598000
  715. QRYTM TM VMCLEVEL,*-* EXECUTED FOR CLASS @V200930 00599000
  716. QRYCLC CLC 0(0,R3),0(R1) 00600000
  717. SPACE 00601000
  718. QRYMODS DC A(DMKCQGEN) INDEX 0 MODULE @V326538 00602000
  719. DC A(DMKCQPRV) INDEX 4 MODULE @V200930 00603000
  720. DC A(DMKCQREY) INDEX 8 MODULE @V200930 00604000
  721. DC A(DMKCQYEY) INDEX 12 MODULE 00604500
  722. DC A(0) RESERVE FOR FUTURE USE @VA09413 00604610
  723. DC A(DMKJRLQU) INDEX 20 MODULE @V60BBBB 00604700
  724. DC A(DMKCQHQU) INDEX 24 MODULE @VA13360 00604800
  725. DC A(HDKCQURY) INDEX 28 HRC QUERY MODULE HRC019DK 00604900
  726. DC A(HDKCQALO) INDEX 32 HRC QUERY MODULE HRC030DK 00604950
  727. SPACE 00605000
  728. SETMODS DC A(DMKCFSET) INDEX 0 MODULE @V326538 00605200
  729. DC A(DMKCFOEX) INDEX 4 MODULE @V326538 00605400
  730. DC A(0) RESERVE FOR FUTURE USE @VA09413 00605610
  731. DC A(DMKJRLSE) INDEX 12 MODULE @V60BBBB 00605800
  732. SPACE 00606000
  733. QRYCALL SR R7,R7 CLEAR INDEX REG @V200930 00607000
  734. IC R7,10(R3) GET MODULE INDEX @V200930 00608000
  735. SR R6,R6 CLEAR FOR INDEX @V200930 00610000
  736. IC R6,11(R3) GET BRANCH INDEX @V200930 00611000
  737. SR R2,R2 ZERO RETURN CODE REGISTER 00612000
  738. CLI SAVEWRK1,X'00' IS THIS A QUERY REQUEST? @V326538 00612250
  739. BNE LOADSET NOPE, PROCESS AS SET @V326538 00612500
  740. L R15,QRYMODS(R7) LOAD FOR CALL @V326538 00612750
  741. CALL (15) CALL APPROPRIATE ROUTINE @V326538 00613000
  742. SPACE 00613250
  743. * CALLED ROUTINE WILL GIVE UP SAVEAREA VIA SVC 16, THUS 00613500
  744. * WILL NOT RETURN HERE WHEN FINISHED; INSTEAD WILL RETURN 00613750
  745. * DIRECT TO CFM. 00614000
  746. SPACE 00614250
  747. LOADSET L R15,SETMODS(R7) LOAD FOR CALL @V326538 00614500
  748. CALL (15) CALL APPROPRIATE ROUTINE @V326538 00614750
  749. SPACE 00615000
  750. * CALLED ROUTINE WILL GIVE UP SAVEAREA VIA SVC 16, THUS 00615250
  751. * WILL NOT RETURN HERE WHEN FINISHED; INSTEAD WILL RETURN 00615500
  752. * DIRECT TO CFM. 00615750
  753. SPACE 4 00616000
  754. CFC003 LA R2,3 INVALID OPTION - OPTN @V326538 00616250
  755. B CALLERM GO SEND ERROR MESSAGE @V326538 00616500
  756. SPACE 2 00616750
  757. CFC026 LA R2,26 OPERAND MISSING OR INVALID @V326538 00617000
  758. SLR R1,R1 ZROE PARM REG 00619000
  759. B CALLERM GO SEND ERROR MESSAGE 00620000
  760. EJECT 00621000
  761. * C'COMMAND ',AL1(TRUNC CNT,CLASS,MOD,SUBFUNC INDEX) 00621500
  762. QRYLIST DS 0F DECODING LIST FOR QUERY OPERANDS @V200820 00622000
  763. DC C'SYSTEM ',AL1(3,B,4,4) MODULE 04 = DMKCQPRV @V200820 00623000
  764. DC C'DASD ',AL1(2,B,4,8) @V200820 00624000
  765. DC C'TAPES ',AL1(2,B,4,12) @V200820 00625000
  766. DC C'LINES ',AL1(5,B,4,16) @V200820 00626000
  767. DC C'UR ',AL1(2,B+D,4,20) @V200820 00627000
  768. DC C'STORAGE ',AL1(4,B,4,24) @V200820 00628000
  769. DC C'ALL ',AL1(3,B,4,28) @V200820 00629000
  770. DC C'LINKS ',AL1(1,G,4,32) @V200820 00630000
  771. DC C'GRAF ',AL1(2,B,4,36) @VM08761 00631000
  772. DC C'TDSK ',AL1(2,B,4,40) @V200820 00632000
  773. DC C'PROCESSR',AL1(4,A+B+C+E+G,4,44) @V5BC0AB 00632150
  774. DC C'VIRTUAL ',AL1(1,G,0,16) MODULE 00 = DMKCQGEN @VA13360 00633000
  775. DC C'DASD ',AL1(2,G,0,20) @V200820 00640000
  776. DC C'TAPES ',AL1(2,G,0,24) @V200820 00641000
  777. DC C'LINES ',AL1(5,G,0,28) @V200820 00642000
  778. DC C'UR ',AL1(2,G,0,32) @V200820 00643000
  779. DC C'STORAGE ',AL1(4,G,0,36) @V200820 00644000
  780. DC C'ALL ',AL1(3,G,0,40) @V200820 00645000
  781. DC C'GRAF ',AL1(2,G,0,44) @VM08761 00646000
  782. DC C'CONSOLE ',AL1(3,G,0,48) @V200820 00647000
  783. DC C'CHANNELS',AL1(4,G,0,52) @VM03169 00648000
  784. DC C'FILES ',AL1(1,D+G,8,0) MODULE 08 = DMKCQREY @V200820 00649000
  785. DC C'SET ',AL1(1,G,8,4) 00650000
  786. DC C'DUMP ',AL1(4,B,8,8) 00650600
  787. DC C'PAGING ',AL1(3,A+E,8,12) 00651200
  788. DC C'HOLD ',AL1(1,D,8,16) 00651800
  789. DC C'PRIORITY',AL1(5,A+C+E,8,20) 00652400
  790. DC C'TERMINAL',AL1(4,G,8,24) 00653000
  791. DC C'AFFINITY',AL1(3,A+E,8,28) AFFINITY @V4075A0 00653300
  792. DC C'TIME ',AL1(1,G,12,0) MODULE 12 = DMKCQYEY 00653600
  793. DC C'LOGMSG ',AL1(3,A+B+C+D+E+F+G,12,4) 00654200
  794. DC C'NAMES ',AL1(1,A+B+C+D+E+F+G,12,8) 00654800
  795. DC C'USERS ',AL1(1,A+B+C+D+E+F+G,12,12) 00655400
  796. QRYPF DC C'PF ',AL1(2,G+H,12,16) 00656000
  797. DC C'SASSIST ',AL1(3,A+E,12,20) 00656600
  798. DC C'CPASSIST',AL1(3,A+E,12,24) 00657200
  799. DC C'CPUID ',AL1(3,G,12,28) @V60BBBB 00658200
  800. DC C'USERID ',AL1(5,G,12,32) HRC107DK 00658300
  801. DC C'JOURNAL ',AL1(2,A,20,0) MODULE 20 = DMKJRLQU @VA13360 00659200
  802. DC C'READER ',AL1(1,D+G,24,0) MOD 24 = DMKCQHQU @VA13360 00659600
  803. DC C'RDR ',AL1(3,D+G,24,0) @VA13360 00660000
  804. DC C'PRINTER ',AL1(1,D+G,24,4) @VA13360 00660400
  805. DC C'PRT ',AL1(3,D+G,24,4) @VA13360 00660800
  806. DC C'PUNCH ',AL1(2,D+G,24,8) @VA13360 00661200
  807. DC C'PCH ',AL1(3,D+G,24,8) HRC019DK 00661650
  808. DC C'PRIV ',AL1(4,G,28,0) MODULE 28 = HDKCQURY HRC019DK 00661700
  809. DC C'MAXIMUM ',AL1(3,A+C+E,28,4) HRC019DK 00661750
  810. DC C'CPLEVEL ',AL1(2,G,28,8) HRC019DK 00661800
  811. DC C'ALLOC ',AL1(5,A+C+E,32,0) MOD 32 = HDKCQALO HRC030DK 00661820
  812. QRYLAST EQU *-12 HRC019DK 00661850
  813. SPACE 00662000
  814. QRYCLASB DC C' ',AL1(0,0,4,0) DEFAULT FOR CLASS B @V200820 00663000
  815. QRYCLASG DC C' ',AL1(0,0,0,0) DEFAULT FOR CLASS G @V200820 00664000
  816. EJECT 00665000
  817. SETLIST DS 0F DECODING LIST FOR SET OPERANDS @V326538 00665010
  818. DC C'ASSIST ',AL1(2,G,0,00) MODULE 0 = DMKCFS @V326538 00665020
  819. DC C'NOTRANS ',AL1(4,G,0,04) @V326538 00665030
  820. DC C'TIMER ',AL1(5,G,0,08) @V326538 00665040
  821. DC C'EMSG ',AL1(4,G,0,12) @V326538 00665050
  822. DC C'IMSG ',AL1(4,G,0,16) @V326538 00665060
  823. DC C'ACNT ',AL1(4,G,0,20) @V326538 00665070
  824. DC C'PAGEX ',AL1(5,G,0,24) @V326538 00665080
  825. DC C'LINEDIT ',AL1(5,G,0,28) @V326538 00665090
  826. DC C'RUN ',AL1(3,G,0,32) @V326538 00665100
  827. DC C'WNG ',AL1(3,G,0,36) @V326538 00665110
  828. DC C'MSG ',AL1(3,G,0,40) @V326538 00665120
  829. DC C'ECMODE ',AL1(2,G,0,44) @V326538 00665130
  830. DC C'ISAM ',AL1(4,G,0,48) @V326538 00665140
  831. DC C'AUTOPOLL',AL1(5,G,0,52) @V386198 00665200
  832. SETPF DC C'PF ',AL1(2,G,0,56) @V386198 00665260
  833. DC C'CPUID ',AL1(3,G,0,60) V407466 00665290
  834. DC C'AFFINITY',AL1(3,A+G,0,64) @V4075A0 00665297
  835. DC C'SMSG ',AL1(2,G,0,68) @V60C2B8 00665307
  836. DC C'PRIV ',AL1(4,G,0,72) HRC018DK 00665313
  837. DC C'PRIORITY',AL1(5,C,4,00) MODULE 4 = DMKCFO HRC026DK 00665360
  838. DC C'FAVORED ',AL1(5,C,4,04) HRC026DK 00665400
  839. DC C'RESERVE ',AL1(3,C,4,08) HRC026DK 00665440
  840. DC C'SASSIST ',AL1(3,C,4,12) HRC026DK 00665480
  841. DC C'CPASSIST',AL1(3,C,4,16) HRC026DK 00665520
  842. DC C'RECORD ',AL1(3,F,4,20) @V386198 00665620
  843. DC C'MODE ',AL1(4,F,4,24) @V386198 00665680
  844. DC C'DUMP ',AL1(4,B,4,28) @V386198 00665740
  845. DC C'LOGMSG ',AL1(3,B,4,32) @V60BBBB 00665780
  846. DC C'MAX ',AL1(3,A,4,36) HRC018DK 00665800
  847. DC C'STBYPASS',AL1(3,G,4,40) HRC068DK 00665810
  848. SETLAST DC C'JOURNAL ',AL1(2,C,12,0) MODULE 12 = DMKJRLSE HRC026DK 00665830
  849. EJECT 00665860
  850. LTORG @V200820 00666000
  851. EJECT 00667000
  852. PSA 00668000
  853. COPY CONBUF 00669000
  854. COPY DEVTYPES 00670000
  855. COPY EQU 00671000
  856. COPY RBLOKS 00672000
  857. COPY SAVE 00673000
  858. COPY TIMER @V200820 00674000
  859. COPY TREXT @VA01078 00675000
  860. COPY VBLOKS 00676000
  861. COPY VMBLOK 00677000
  862. * COMMAND CLASS EQUATES 00678000
  863. A EQU VMCLASSA 00679000
  864. B EQU VMCLASSB 00680000
  865. C EQU VMCLASSC 00681000
  866. D EQU VMCLASSD 00682000
  867. E EQU VMCLASSE 00683000
  868. F EQU VMCLASSF 00684000
  869. G EQU VMCLASSG 00685000
  870. H EQU VMCLASSH 00686000
  871. NOCLASS EQU X'01' 00687000
  872. END 00688000