Table of Contents

DMKDEF Source

References

Source Listing

DMKDEF.ASSEMBLE.txt
  1. DEF TITLE 'DMKDEF (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 00002000
  3. COPY OPTIONS 00003000
  4. COPY LOCAL 00004000
  5. SPACE 2 00005000
  6. *. 00006000
  7. * MODULE NAME - 00007000
  8. * 00008000
  9. * DMKDEF 00009000
  10. * 00010000
  11. * CONTENTS - 00011000
  12. * 00012000
  13. * DMKDEFIN - 'DEFINE' A VIRTUAL DEVICE 00013000
  14. *. 00014000
  15. SPACE 00015000
  16. DMKDEF CSECT 00016000
  17. SPACE 00017000
  18. DC CL8'DMKDEF' PAGEABLE MODULE IDENTIFIER 00018000
  19. SPACE 00019000
  20. USING SAVEAREA,R13 00020000
  21. USING DMKDEF,R12 00021000
  22. USING VMBLOK,R11 00022000
  23. USING PSA,0 00023000
  24. SPACE 2 00024000
  25. EXTRN DMKSCNFD,DMKSCNVU,DMKSCNVN,DMKCFPRR,DMKCFPRD 00025000
  26. EXTRN DMKCVTHB,DMKCVTBH,DMKCVTDB,DMKCVTBD 00026000
  27. EXTRN DMKLOCKQ,DMKLOCKD,DMKUDRFU,DMKUDRRD,DMKUDRRV 00027000
  28. EXTRN DMKVDSDF,DMKPGSPO,DMKBLDRL,DMKBLDRT 00028000
  29. EXTRN DMKERMSG,DMKSCNVD 00029000
  30. EXTRN DMKVCARS 00030000
  31. EXTRN DMKQCNWT @VA01771 00031000
  32. EXTRN DMKUDRMD @V407466 00032000
  33. EXTRN DMKSCNRU,DMKSSSDE @V60B6B8 00033000
  34. EXTRN DMKDEHIN @VA13361 00033300
  35. EJECT 00034000
  36. *. 00035000
  37. * SUBROUTINE NAME - 00036000
  38. * 00037000
  39. * DMKDEFIN - 'DEFINE' (OR REDEFINE) A VIRTUAL DEVICE OR STORAGE 00038000
  40. * 00039000
  41. * FUNCTION - 00040000
  42. * 00041000
  43. * TO DYNAMICALLY ALTER OR AUGMENT THE VIRTUAL MACHINE 00042000
  44. * DEVICE CONFIGURATION OR STORAGE SIZE. 00043000
  45. * 00044000
  46. * COMMAND LINE FORMAT - 00045000
  47. * 00046000
  48. * +--------+---------------------------------------+ 00047000
  49. * | DEFINE | READER <AS> VADDR | 00048000
  50. * | --- | PRINTER <AS> VADDR <1403> | 00049000
  51. * | | <3211> | 00050000
  52. * | | <3203> | 00051000
  53. * | | 1403 <AS> VADDR | 00052000
  54. * | | 3211 <AS> VADDR , 00053000
  55. * | | 3203 <AS> VADDR | 00054000
  56. * | | PUNCH <AS> VADDR | 00055000
  57. * | | CONSOLE <AS> VADDR | 00056000
  58. * | | TIMER <AS> VADDR | 00057000
  59. * | | CTCA <AS> VADDR | 00058000
  60. * | | <IBM1> | 00059000
  61. * | | LINE <AS> VADDR <TELE2> | 00060000
  62. * | | | 00061000
  63. * | | GRAF <AS> VADDR <3270> | 00062000
  64. * | | <3138> | 00063000
  65. * | | <3148> | 00064000
  66. * | | <3158> | 00065000
  67. * | | <3033> | 00065100
  68. * | | <3036> | 00065200
  69. * | | | 00066000
  70. * | | VADDR <AS> VADDR | 00067000
  71. * | | | 00068000
  72. * | | T2305 <AS> VADDR <CYL> NNN | 00069000
  73. * | | T2314 <AS> VADDR <CYL> NNN | 00070000
  74. * | | T2319 <AS> VADDR <CYL> NNN | 00071000
  75. * | | T3340 <AS> VADDR <CYL> NNN | 00072000
  76. * | | T3330 <AS> VADDR <CYL> NNN | 00073000
  77. * | | T3350 <AS> VADDR <CYL> NNN | 00074000
  78. * | | T3375 <AS> VADDR <CYL> NNN | HRC106DK 00074100
  79. * | | T3380 <AS> VADDR <CYL> NNN | HRC106DK 00074200
  80. * | | | 00075000
  81. * | | STORAGE <AS> NNNNNK | 00076000
  82. * | | STORAGE <AS> NNM | 00077000
  83. * | | | 00078000
  84. * | | CHANNELS <AS> <SEL|BMX> | 00079000
  85. * +--------+---------------------------------------+ 00080000
  86. * 00081000
  87. * ATTRIBUTES - 00082000
  88. * 00083000
  89. * REENTRANT, PAGEABLE, CALLED VIA SVC 00084000
  90. * 00085000
  91. * ENTRY CONDITIONS - 00086000
  92. * 00087000
  93. * GPR 2 = 0 00088000
  94. * GPR 9 = ADDRESS OF COMMAND BUFFER 00089000
  95. * GPR 11 = ADDRESS OF USER'S VMBLOK 00090000
  96. * GPR 12 = ADDRESS OF DMKDEFIN 00091000
  97. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00092000
  98. * 00093000
  99. * EXIT CONDITIONS - 00094000
  100. * 00095000
  101. * GPR 2 = 0 IF DEVICE HAS BEEN DEFINED, OR 00096000
  102. * ERROR-CODE (SEE ERROR MESSAGES) IF UNSUCCESSFUL. 00097000
  103. EJECT 00098000
  104. * CALLS TO OTHER ROUTINES - 00099000
  105. * 00100000
  106. * DMKSCNFD 00101000
  107. * DMKCVTDB 00102000
  108. * DMKCVTBD 00103000
  109. * DMKCVTBH 00104000
  110. * DMKSCNVN 00105000
  111. * DMKCVTHB 00106000
  112. * DMKSCNVU 00107000
  113. * DMKSCNVD 00108000
  114. * DMKERMSG 00109000
  115. * DMKLOCKQ 00110000
  116. * DMKLOCKD 00111000
  117. * DMKUDRFU 00112000
  118. * DMKUDRRD 00113000
  119. * DMKUDRRV 00114000
  120. * DMKPGSPO 00115000
  121. * DMKCFPRR 00116000
  122. * DMKCFPRD 00117000
  123. * DMKBLDRL 00118000
  124. * DMKBLDRT 00119000
  125. * DMKVDSDF 00120000
  126. * DMKVCARS 00121000
  127. * DMKQCNWT 00122000
  128. * DMKFREE 00123000
  129. * 00124000
  130. * EXTERNAL REFERENCES - 00125000
  131. * 00126000
  132. * NONE 00127000
  133. * 00128000
  134. * TABLES / WORK AREAS - 00129000
  135. * 00130000
  136. * UDEVBLOK (DUMMY FOR USE BY DMKVDSDF SUBROUTINE) 00131000
  137. * 00132000
  138. * REGISTER USAGE - 00133000
  139. * 00134000
  140. * GPR 9 = ADDRESS OF COMMAND BUFFER 00135000
  141. * GPR 11 = ADDRESS OF USER'S VMBLOK 00136000
  142. * GPR 12 = BASE REGISTER 00137000
  143. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00138000
  144. * 00139000
  145. * GPRS 0-5 AND 14-15 ARE WORK REGISTERS. 00140000
  146. * 00141000
  147. * GPRS 6-8 AND 10 ARE NOT USED. 00142000
  148. * 00143000
  149. * NOTES - 00144000
  150. * 00145000
  151. * THIS MODULE WAS SPLIT FOR REL 060. CODE FOR DEFINE STORAGE 00146000
  152. * AND DEFINE CHANNEL WAS MOVED TO DMKDEH. DESCRIPTIONS OF 00146200
  153. * THOSE FUNCTIONS REMAIN HERE ALSO WITH AN ANNOTATION THAT 00146400
  154. * THE CODE EXISTS IN DMKDEH. 00146600
  155. EJECT 00147000
  156. * OPERATION - 00148000
  157. * 00149000
  158. * 1. THE INPUT LINE IS SCANNED VIA DMKSCNFD, DMKCVTDB, AND 00150000
  159. * DMKCVTHB TO OBTAIN AND CONVERT TO BINARY (WHERE APPROPRIATE) 00151000
  160. * THE MNEMONIC DEVICE TYPE DEFINITION, NUMBER OF CYLINDERS 00152000
  161. * DESIRED (FOR TDSK ONLY), AND HEX VIRTUAL DEVICE ADDRESS. IF 00153000
  162. * ANY NEEDED FIELDS ARE OMITTED OR INVALID, AN ERROR-MESSAGE AND 00154000
  163. * ERROR-CODE ARE RETURNED TO THE CALLER. 00155000
  164. * 00156000
  165. * 2. THE DEVICE TYPE DEFINITION MUST BE ONE OF THE FOLLOWING: 00157000
  166. * MNEMONIC TYPE OF DEVICE 00158000
  167. * -------- -------------- 00159000
  168. * READER CARD READER 00160000
  169. * RDR " " 00161000
  170. * R " " 00162000
  171. * PRINTER PRINTER 00163000
  172. * PRT " 00164000
  173. * PTR " 00165000
  174. * P " 00166000
  175. * 1403 VIRTUAL 1403 PRINTER 00167000
  176. * 3211 VIRTUAL 3211 PRINTER 00168000
  177. * 3203 VIRTUAL 3203 PRINTER 00169000
  178. * PUNCH CARD PUNCH 00170000
  179. * PCH " " 00171000
  180. * PU " " 00172000
  181. * CONSOLE VIRTUAL CONSOLE 00173000
  182. * CON " " 00174000
  183. * TIMER PSEUDO TIMING DEVICE 00175000
  184. * TIM " " " 00176000
  185. * CTCA VIRTUAL CHAN-TO-CHAN ADAPTER 00177000
  186. * CTC " " " " " 00178000
  187. * LINE VIRTUAL 27XX LINE 00179000
  188. * LI " " " 00180000
  189. * GRAF VIRTUAL 3270, 3138, 3148, 3158 00181000
  190. * GR 00182000
  191. * T2305 VIRTUAL 2305 00183000
  192. * T2314 VIRTUAL 2314 00184000
  193. * T2319 VIRTUAL 2319 00185000
  194. * T3340 VIRTUAL 3340 00186000
  195. * T3330 VIRTUAL 3330 00187000
  196. * T3350 VIRTUAL 3350 00188000
  197. * T3375 VIRTUAL 3375 HRC106DK 00188100
  198. * T3380 VIRTUAL 3380 HRC106DK 00188200
  199. * STORAGE REDEFINED VIRTUAL STORAGE 00189000
  200. * STOR " " " 00190000
  201. * CHANNELS REDEFINES VIRTUAL CHANNELS 00191000
  202. * CHAN " " " 00192000
  203. * (AN ERROR IS RETURNED IF THE DEFINED DEVICE IS NONE OF THESE) 00193000
  204. * 00194000
  205. * 3. IF THE DEFINED DEVICE TYPE IS SATISFACTORY, THE DESIRED 00195000
  206. * NUMBER OF CYLINDERS (FOR T-DISK ONLY) IS OBTAINED FROM THE 00196000
  207. * COMMAND LINE, AND THE HEX VIRTUAL DEVICE ADDRESS OBTAINED 00197000
  208. * AND CHECKED. IF OK, THEN DMKSCNVU IS CALLED TO MAKE SURE THE 00198000
  209. * SPECIFIED VIRTUAL DEVICE DOES NOT ALREADY EXIST. (ERROR 00199000
  210. * CODE AND MESSAGE RETURNED IF APPROPRIATE.) 00200000
  211. * 00201000
  212. * 4. THEN DMKVDSDF IS CALLED TO PERFORM THE NECESSARY 00202000
  213. * INTERNAL FUNCTIONS TO DEFINE THE VIRTUAL DEVICE. IF AN 00203000
  214. * ERROR IS RETURNED (I.E. FOR T-DISK SPACE NOT AVAILABLE), 00204000
  215. * AN ERROR-CODE AND MESSAGE ARE RETURNED TO THE CALLER OF 00205000
  216. * DMKDEFIN. IF A VIRTUAL DEVICE IS BEING DEFINED AND 00206000
  217. * DMKVDS RETURNS AN ERROR CODE OF 32 IN REGISTER TWO 00207000
  218. * INDICATING INSUFFICIENT FREE STORAGE TO CREATE NEW 00208000
  219. * VIRTUAL BLOCKS, DMKDEF WILL ISSUE ERROR MSG DMKDEF095E. 00209000
  220. * IF A VIRTUAL DEVICE IS BEING REDEFINED, THE NEW BLOCKS 00210000
  221. * WILL BE CREATED VIA A CALL TO DMKVDSDF PRIOR TO THE OLD 00211000
  222. * DEVICE BEING RESET AND PRIOR TO REMOVING THE OLD VDEVBLOK/ 00212000
  223. * VCUBLOK/VCHBLOK FROM THE ACTIVE VIRTUAL BLOCK LISTS. 00213000
  224. * ERROR MESSAGE DMKDEF095E WILL BE ISSUED IF FREE STORAGE 00214000
  225. * CANNOT BE OBTAINED TO CREATE THE NEW BLOCKS. 00215000
  226. EJECT 00216000
  227. * 5. FOR DEFINE STORAGE AND DEFINE CHANNEL, A CALL IS MADE TO 00217000
  228. * DMKDEHIN. THAT MODULE WILL: 00217300
  229. * A. FOR DEFINE STORAGE, AFTER THE USUAL CHECKS FOR COMMAND 00217600
  230. * VALIDITY, THE USER MACHINE BLOCK IN THE CP DIRECTORY FOR THE 00218000
  231. * USER IS CHECKED TO ENSURE THAT THE DESIRED STORAGE SIZE DOES 00219000
  232. * NOT EXCEED THE MAXIMUM STORAGE SIZE PERMITTED TO THE USER. 00220000
  233. * (IF TOO LARGE, ERROR MESSAGE AND CODE RETURNED). IF OK, THEN 00221000
  234. * ALL TABLES PERTAINING TO THE STORAGE PRESENTLY IN USE FOR THE 00222000
  235. * USER'S VIRTUAL MACHINE ARE RETURNED TO FREE STORAGE, AND NEW 00223000
  236. * SEGMENT, PAGE, AND SWAP TABLES ARE CREATED BASED ON THE 00224000
  237. * REQUESTED STORAGE SIZE. 00225000
  238. * 00225300
  239. * B. FOR DEFINE CHANNELS, AFTER THE VALIDATION OF THE COMMAND, 00225600
  240. * 6. FOR DEFINE CHANNELS, AFTER THE VALIDATION OF THE COMMAND, 00226000
  241. * DMKCFPRR IS CALLED TO RESET THE VIRTUAL MACHINE. THE VIRTUAL 00227000
  242. * MACHINES CONTROL BLOCKS (I/O) ARE THE SCANNED, AND THE VIRTUAL 00228000
  243. * CHANNELS ARE FLAGGED ACCORDING TO THE OPTION REQUESTED. ANY 00229000
  244. * VIRTUAL CHANNEL THAT HAS A CTCA ATTACHED TO IT WILL BE FLAGGED 00230000
  245. * AS BEING A SELECTOR CHANNEL. 00231000
  246. * 00232000
  247. * RESPONSES - 00233000
  248. * 00234000
  249. * 'TYPE XXX DEFINED' 00235000
  250. * 'DASD XXX DEFINED NNN CYL' 00236000
  251. * ++ 'STORAGE = NNNNNK' 00237000
  252. * ++ 'CHANNELS = XXX' 00237600
  253. * 00239000
  254. * NOTE - NORMAL RESPONSES WILL BE SUPPRESSED IF USER ISSUED 00240000
  255. * "SET IMSG OFF" COMMAND. 00241000
  256. * - ++ INDICATES THAT RESPONSE IS FROM DMKDEHIN 00241300
  257. * 00241600
  258. * 00242000
  259. * ERROR MESSAGES - 00243000
  260. * 00244000
  261. * DMKDEF003E INVALID OPTION - $OPTION$ 00245000
  262. * DMKDEF022E VADDR MISSING OR INVALID 00246000
  263. * ++ DMKDEF025E STORAGE MISSING OR INVALID 00247000
  264. * DMKDEF026E OPERAND MISSING OR INVALID 00249000
  265. * DMKDEF040E DEV VADDR DOES NOT EXIST 00250000
  266. * DMKDEF153E DEVICE VADDR EXCEEDS MAX NUM OF VIRTUAL DEVICES 00250500
  267. * DMKDEF091E TYPE VADDR NOT DEFINED; TEMP SPACE NOT AVAILABLE 00251000
  268. * DMKDEF092E DEV VADDR NOT DEFINED; TYPE VADDR ALREADY DEFINED 00252000
  269. * ++ DMKDEF094E STORAGE EXCEEDS ALLOWED MAXIMUM 00253000
  270. * DMKDEF095E DEV VADDR NOT DEFINED; INSUFFICIENT FREE STORAGE 00254000
  271. * DMKDEF136E DEV VADDR NOT DEFINED; CHAN XX DEDICATED 00255000
  272. * 00255300
  273. * ++ - INDICATES THAT MESSAGE COME FROM DMKDEH (WITH DEH PREFIX) 00255600
  274. *. 00256000
  275. EJECT 00257000
  276. DMKDEFIN RELOC , DEFINE OR RE-DEFINE VIRTUAL DEVICE 00258000
  277. XC DEFLAGS(4),DEFLAGS CLEAR FLAG BITS (SAVEWRK1) 00259000
  278. LA R10,SAVEWRK3 DUMMY 'UDEVBLOK' FOR DMKVDSDF 00260000
  279. USING UDEVBLOK,R10 .... 00261000
  280. XC UDEVBLOK(20),UDEVBLOK CLEAR TO ZEROES 00262000
  281. SPACE 00263000
  282. CALL DMKSCNFD FIND FIRST PARAMETER 00264000
  283. BNZ INVTYPE TYPE MISSING OR INVALID 00265000
  284. LR R6,R0 LENGTH... 00266000
  285. BCTR R6,0 ...MINUS ONE FOR COMPARE 00267000
  286. LA R3,DEFLIST LIST OF VALID TYPES 00268000
  287. LA R4,DEFENTS LENGTH OF ONE ENTRY 00269000
  288. LA R5,DEFLAST LAST ENTRY IN TABLE 00270000
  289. SPACE 00271000
  290. DEFLOOP EQU * VALIDATE DEVICE TYPE 00272000
  291. EX R6,SCANCLC MATCH AGAINST TABLE 00273000
  292. BNE DEFSKIP NOPE 00274000
  293. CH R6,8(0,R3) ABOVE MINIMUM ? 00275000
  294. BNL DEFFIND YES - FOUND THE ENTRY 00276000
  295. DEFSKIP EQU * SKIP TO NEXT ENTRY 00277000
  296. BXLE R3,R4,DEFLOOP 00278000
  297. * MIGHT BE "DEFINE VADD AS VADD" 00279000
  298. MVI SAVEWRK1,VIRTUAL SET FLAG, JUST IN CASE @VA12868 00279100
  299. EX R6,VIRTUAL1 CHECK FOR 'VIRTUAL' @VA12868 00279200
  300. BE TESTCLAS YES...MUST BE CLASS 'B' @VA12868 00279300
  301. MVI SAVEWRK1,SYSVIRT SET FLAG, JUST IN CASE @VA12868 00279400
  302. EX R6,SYSVIRT1 CHECK FOR 'SYSVIRT' @VA12868 00279500
  303. BE TESTCLAS YES...MUST BE CLASS 'B' @VA12868 00279600
  304. NI SAVEWRK1,255-SYSVIRT ZERO OUT BIT AGAIN @VA13632 00279700
  305. CL R6,F2 CAN ADJUSTED LENGTH BE VADDR? @VA05256 00280000
  306. BH INVTYPE NO GOOD @VA13632 00281200
  307. CALL DMKCVTHB ATTEMPT CONVERSION 00282000
  308. BNZ INVTYPE NO GOOD 00283000
  309. MAXDV R15 GET HIGHEST DEVICE WE SUPPORT 00284000
  310. CLR R1,R15 WITHIN RANGE ? 00285000
  311. BH INVVADD ...TOO BAD 00286000
  312. ST R1,DEVADDR SAVE IN WORK-AREA 00287000
  313. OI DEFLAGS,CHANGED REMEMBER WHAT IT IS 00288000
  314. B SCANOPT CONTINUE SCANNING 00289000
  315. TESTCLAS EQU * CHECK OUT CALLER'S CLASS @V60B6B8 00297000
  316. * 00298000
  317. * CALLER MUST HAVE PRIVILEGE CLASS 'B' TO ISSUE 00299000
  318. * THE DEFINE VIRTUAL OR SYSVIRT COMMAND 00300000
  319. * 00301000
  320. TM VMCLEVEL,VMCLASSA+VMCLASSB IS CALLER OK @V60B6B8 00302000
  321. BNZ DEFMSS CALLER OK, PROCESS COMMAND @V60B6B8 00303000
  322. LA R0,L7 LENGTH OF MESSAGE INSERT @V60B6B8 00304000
  323. LA R2,L3 MSG ID = 003 @V60B6B8 00305000
  324. MVC SAVEWRK2(7),0(R1) SAVE INVALID OPTION FIELD @V60B6B8 00306000
  325. B MSGONLY PUT OUT MSG - 'INVALID OPTION' @V60B6B8 00307000
  326. EJECT 00308000
  327. DEFFIND EQU * FOUND THE TYPE KEYWORD 00309000
  328. LH R6,10(0,R3) GET DEVICE TYPE CLASS, TYPE 00310000
  329. STH R6,UDEVTYPC ...INTO DUMMY UDEVBLOK 00311000
  330. SCANOPT EQU * 00312000
  331. CALL DMKSCNFD LOOK FOR OPTIONAL "AS" 00313000
  332. BNZ INVVADD 00314000
  333. LR R4,R0 LENGTH... 00315000
  334. BCTR R4,0 00316000
  335. EX R4,FINDAS CHECK IT 00317000
  336. BNE CVTVADD NO - MUST BE AN ADDRESS 00318000
  337. CALL DMKSCNFD SCAN FOR ADDRESS 00319000
  338. BNZ INVVADD 00320000
  339. LR R4,R0 PICK UP LENGTH @VA05256 00321000
  340. BCTR R4,0 DECREMENT AS R4 WAS ABOVE @VA05256 00322000
  341. CVTVADD EQU * CONVERT VIRTUAL DEVICE ADDRESS 00323000
  342. CLI UDEVTYPC,X'FF' IS IT 'DEFINE STORAGE' ? 00324000
  343. BE DEFCORE YES 00325000
  344. CLI UDEVTYPC,X'FE' IS IT DEFINE CHANNEL CMD ? @VA01771 00326000
  345. BE DEFCHAN YES - DO IT @VA01771 00327000
  346. CL R4,F2 VALID LENGTH FOR VADDR? @VA05256 00328000
  347. BH INVVADD NO THEN GO WRITE ERR MSG. @VA05256 00329000
  348. CALL DMKCVTHB OTHERWISE, CONVERT THE ADDR 00330000
  349. BNZ INVVADD NO GOOD 00331000
  350. MAXDV R15 GET HIGHEST DEVICE WE SUPPORT 00332000
  351. CLR R1,R15 WITHIN RANGE ? 00333000
  352. BH INVVADD 00334000
  353. STH R1,UDEVADD ...INTO DUMMY UDEVBLOK 00335000
  354. CKDASD CLI UDEVTYPC,CLASDASD T -DISK ? 00336000
  355. BNE SCNTERM NO 00337000
  356. OI DEFLAGS,DEFTDSK DEFINING A T-DISK 00338000
  357. OI UDEVSTAT,UDEVTDSK ... 00339000
  358. CYLSCAN EQU * SEE IF HE SAID "CYL" 00340000
  359. CALL DMKSCNFD 00341000
  360. BNZ INVCYLS 00342000
  361. CLC 0(4,R1),=CL4'CYL ' NO ABBREVIATIONS HERE... 00343000
  362. BE CYLSCAN IT'S O.K. - GET "NNN" 00344000
  363. C R0,F4 NNNN parm greater than 4 chars? HRC106DK 00345100
  364. BH INVCYLS YES, INVALID REQUEST @VA03395 00346000
  365. CALL DMKCVTDB CONVERT TO BINARY 00347000
  366. BNZ INVCYLS 00348000
  367. LTR R1,R1 CHECK FOR NNN OF ZERO @VA02559 00349000
  368. BZ INVCYLS NO GOOD-WHY BOTHER ASKING FOR 0 @VA02559 00350000
  369. * CYLS 00351000
  370. STH R1,UDEVNCYL INTO THE UDEVBLOK 00352000
  371. B GOVDSAT GO PERFORM ACTUAL DEFINE 00353000
  372. TSTIBM1 CLC 0(*-*,R1),=CL8'IBM1' LINE ADAPTER OPTION 00354000
  373. TSTELE2 CLC 0(*-*,R1),=CL8'TELE2' " " " " " 00355000
  374. VIRTCHAR DC CL8'VIRTUAL ' COMPARAND FOR 'DEF VIRTUAL' @V60B6B8 00360000
  375. SYSVCHAR DC CL8'SYSVIRT ' COMPARAND FOR 'DEF SYSVIRT' @V60B6B8 00361000
  376. VIRTUAL1 CLC 0(*-*,R1),=CL8'VIRTUAL ' DEF VIRTUAL @VA12868 00361100
  377. SYSVIRT1 CLC 0(*-*,R1),=CL8'SYSVIRT ' DEF SYSVIRT @VA12868 00361200
  378. EJECT 00362000
  379. SCNTERM CLI UDEVTYPC,CLASTERM TERMINALL TYPE ?? @V200730 00363000
  380. BNE SCNGRF NO, TEST FOR GRAF @V200730 00364000
  381. CLI UDEVTYPE,TYPIBM1 WAS "LINE" SPECIFIED ? 00365000
  382. BNE GOVDSAT GO DEFINE @V200730 00366000
  383. CALL DMKSCNFD SEE IF ADAPTER TYPE IS GIVEN 00367000
  384. BNZ GOVDSAT NO 00368000
  385. LR R2,R0 PARAMETER LENGTH 00369000
  386. C R2,F3 THIS IS THE MINIMUM LENGTH 00370000
  387. BL INVOPTS NO GOOD 00371000
  388. C R2,F5 THIS IS THE MAXIMUM LENGTH 00372000
  389. BH INVOPTS NO GOOD 00373000
  390. BCTR R2,0 DECREMENT FOR COMPARES 00374000
  391. EX R2,TSTIBM1 CHECK FOR DEFAULT 'IBM1' 00375000
  392. BE GOVDSAT YUP 00376000
  393. EX R2,TSTELE2 CHECK FOR TELETYPE (R) 00377000
  394. BNE INVOPTS OOPS..HE GOOFED 00378000
  395. MVI UDEVTYPE,TYPTELE2 ...WE HAVE TO CHANGE THE ADAPTER 00379000
  396. B GOVDSAT DEFINE DEVICE @V200930 00380000
  397. SPACE 00381000
  398. SCNGRF CLI UDEVTYPC,CLASGRAF IS IT A GRAF DEVICE ?? @V200730 00382000
  399. BNE SCNUR NO, CONT @V200730 00383000
  400. CALL DMKSCNFD GET OPTION @V200730 00384000
  401. BNZ GOVDSAT NONE, GO DEFINE @V200730 00385000
  402. LR R2,R0 GET SIZE @V200730 00386000
  403. CL R2,F4 MUST BE 4 @V200730 00387000
  404. BNE INVOPTS SORRY ABOUT THAT @V200730 00388000
  405. CLC 0(4,R1),=CL4'3270' IS IT A 3270 @VA08560 00390000
  406. BE GOVDSAT YES, GO DEFINE @V200730 00391000
  407. CLC 0(4,R1),=CL4'3138' IS IT A 3138 CONSOLE @VA08560 00392100
  408. BE IND3158 YES--GO INDICATE IT @V386298 00393000
  409. CLC 0(4,R1),=CL4'3148' IS IT A 3148 CONSOLE @VA08560 00394000
  410. BE IND3158 YES--GO INDICATE A 3158 @V386298 00395000
  411. CLC 0(4,R1),=CL4'3158' IS IT A 3158 CONSOLE @VA08560 00396000
  412. BE IND3158 YES,INDICATE CONSOLE @VA08560 00397100
  413. CLC 0(4,R1),=CL4'3036' IS IT A 3036 CONSOLE @VA08560 00397200
  414. BE IND3158 YES,INDICATE CONSOLE @VA08560 00397300
  415. CLC 0(4,R1),=CL4'3066' IS IT A 3066 CONSOLE @VA08560 00397400
  416. BE IND3158 YES,INDICATE CONSOLE @VA08560 00397500
  417. B INVOPTS NOPE, INVALID @V200730 00398000
  418. IND3158 EQU * @V386298 00399000
  419. OI UDEVSTAT,UDEV3158 INDICATE 3158 @VA03566 00400000
  420. B GOVDSAT GO DO ATTACH @VA03566 00401000
  421. SPACE 00402000
  422. SCNUR CLI UDEVTYPC,CLASURO IS IT OUTPUT DEVICE ?? @V200930 00403000
  423. BE SCNPRT YES, TEST FOR OPTION @V200930 00404000
  424. CLI UDEVTYPC,CLASURI IS IT INPUT DEVICE ?? @V200930 00405000
  425. BNE GOVDSAT NO, DEFINE DEVICE @V200930 00406000
  426. SCNPRT MVI UDEVCLAS,C'A' DEFAULT OUTPUT CLASS @V200930 00407000
  427. TM UDEVTYPE,TYPPRT IS IT A PRINTER ?? @V200930 00408000
  428. BZ GOVDSAT NO, DEFINE DEVICE @V200930 00409000
  429. CALL DMKSCNFD TEST FOR OPTION TYPE @V200930 00410000
  430. BNZ GOVDSAT NONE, DEFINE DEFUALT @V200930 00411000
  431. C R0,F4 MIN LENGTH 4 @V200930 00412000
  432. BNE INVOPTS INVALID @V200930 00413000
  433. CLC 0(4,R1),=C'1403' IS IT 1403 ?? @V200930 00414000
  434. BNE SCN32 NO, TEST FOR 3211 @V200930 00415000
  435. MVI UDEVTYPE,TYP1403 SET TYPE @V200930 00416000
  436. B GOVDSAT DEFINE DEVICE @V200930 00417000
  437. SCN32 CLC 0(4,R1),=C'3211' IS IT A 3211 ?? @V200930 00418000
  438. BNE SCN3203 NO--IS IT A 3203 ?? @V386298 00419000
  439. MVI UDEVTYPE,TYP3211 SET TYPE @V200930 00420000
  440. B GOVDSAT GO LOCK THE DEVICE BLOCK @V386298 00421000
  441. SCN3203 CLC 0(4,R1),=C'3203' IS IT A 3203 PRINTER ?? @V386298 00422000
  442. BNE INVOPTS NO, ERROR @V386298 00423000
  443. MVI UDEVTYPE,TYP3203 SET TYPE @V386298 00424000
  444. GOVDSAT EQU * LOCK DEVICE BLOCKS, DEFINE DEVICE 00425000
  445. BAL R5,LOKUSER 00426000
  446. LH R1,UDEVADD CHECK FOR ALREADY DEFINED ADDRESS 00427000
  447. CALL DMKSCNVU 00428000
  448. ST R7,SAVEWRK8 SAVE VCUBLOK @ @VA04546 00429000
  449. BZ ALREADY DEVICE ALREADY EXISTS - ERROR MESSAGE 00430000
  450. BC 4,NODCHAN VIRTUAL CHANNEL DOES NOT EXIST 00431000
  451. BC 2,CKDCHAN VIRTUAL CONTROL UNIT DOES NOT EXIST 00432000
  452. CLC UDEVTYPC(2),=AL1(CLASSPEC,TYPCTCA) VIRTUAL CTCA?@VA00842 00433000
  453. BE EXISTCU YES - CANNOT DO IT ON EXISTING C.U. 00434000
  454. USING VCUBLOK,R7 @VA02718 00435000
  455. TM VCUTYPE,VCUCTCA ALREADY IN USE FOR CTCA? @VA02718 00436000
  456. BZ CKDCHAN NO, CONTINUE @VA04546 00437000
  457. TM DEFLAGS,CHANGED REDEFINING EXISTING @ ? @VA04546 00438000
  458. BZ EXISTCU NO, CAN'T USE THIS @ FOR CTCA @VA04546 00439000
  459. OI DEFLAGS,DVCTCA FLAG CU AS CTCA @VA04546 00440000
  460. DROP R7 @VA04546 00441000
  461. CKDCHAN EQU * CHECK FOR DEFINING ON DEDICATED CHANNEL 00442000
  462. AIF (NOT &DEDCH).NOTDED1 **AIF** 00443000
  463. USING VCHBLOK,R6 ADDRESSABILITY 00444000
  464. TM VCHSTAT,VCHDED DEFINING ONTO A DEDICATED CHANNEL ? 00445000
  465. BO DEDCHAN YES - THAT IS NOT POSSIBLE 00446000
  466. DROP R6 00447000
  467. .NOTDED1 ANOP 00448000
  468. SPACE 00449000
  469. NODCHAN EQU * NEW DEVICE DOES NOT EXIST - DEFINE IT 00450000
  470. TM DEFLAGS,CHANGED RE-DEFINE EXISTING DEVICE ? 00451000
  471. BO REDEFIN YES 00452000
  472. CLI UDEVTYPE,TYP1052 RE-DEFINE VM CONSOLE ? 00453000
  473. BNE CALLVDS NO -- DEFINE A NEW VDEVBLOK @V200820 00454000
  474. LH R8,VMVTERM CHECK FOR EXISTING VIRTUAL CONSOL@V200820 00455000
  475. LTR R8,R8 ALLOWED ONLY ONE PRIMARY CONSOLE @V200820 00456000
  476. BM CALLVDS O.K. - DEFINE A NEW CONSOLE @V200820 00457000
  477. AL R8,VMDVSTRT VIRTUAL CONSOLE VDEVBLOK FOR MSG @V200820 00458000
  478. B ALREADY FORMAT AND TYPE ERROR MESSAGE @V200820 00459000
  479. SPACE 00460000
  480. CALLVDS EQU * @V200820 00461000
  481. LR R2,R10 'UDEVBLOK' FOR DMKVDSDF 00462000
  482. CALL DMKVDSDF DEFINE A NEW DEVICE 00463000
  483. BAL R5,FREUSER UNLOCK HIM FIRST... 00464000
  484. CH R2,=H'124' EXCEEDED MAX DEVICES ? @VA13217 00464150
  485. BE ERR153 YES, MSG 153 @VA13217 00464550
  486. LTR R2,R2 ...AND THEN CHECK FOR ERROR CODES 00465000
  487. BNZ ERRTABL-28(R2) JUMP TO ERROR MESSAGE CODE @V407466 00466000
  488. EJECT 00467000
  489. * 00468000
  490. * CONSTRUCT AND TYPE VERIFICATION MESSAGE 00469000
  491. * 00470000
  492. RESPOND EQU * 00471000
  493. * VDEVBLOK ADDRESS IS IN R8 00472000
  494. TM VMMLVL2,VMMIMSG USER WANT THE MSG?? @V2A3663 00473000
  495. BZ DEFEXIT NO - SKIP IT @V2A3663 00474000
  496. CALL DMKSCNVN GET EBCDIC DEVICE TYPE 00475000
  497. LR R3,R1 SAVE IT IN R3 00476000
  498. LH R1,UDEVADD NEW DEVICE ADDRESS 00477000
  499. LH R2,UDEVNCYL NO. CYLS IF T-DISK 00478000
  500. CALL DMKCVTBH CONVERT ADDRESS 00479000
  501. MVI SAVEWRK2,X'40' BLANK "BUFFER" 00480000
  502. MVC SAVEWRK2+1(31),SAVEWRK2 ... 00481000
  503. ST R3,SAVEWRK2 DEVICE TYPE 00482000
  504. STCM R1,B'0111',SAVEWRK3+1 ...ADDRESS 00483000
  505. MVC SAVEWRK4+1(7),=C'DEFINED ' 00484000
  506. LA R0,SAVEWRK6-SAVEWRK2 LENGTH 00485000
  507. TM DEFLAGS,DEFTDSK T-DISK DEFINED ? 00486000
  508. BZ TYPEMSG NO 00487000
  509. LR R1,R2 NO. OF CYLS 00488000
  510. CALL DMKCVTBD CONVERT TO DECIMAL 00489000
  511. STCM R1,B'1111',SAVEWRK6+1 TDSK size (4 digits) HRC106DK 00490100
  512. MVC SAVEWRK7+2(3),=C'CYL' HRC106DK 00491100
  513. LA R0,SAVEWRK8+1-SAVEWRK2 Length HRC106DK 00492100
  514. TYPEMSG EQU * SEND MESSAGE TO USER 00493000
  515. LA R1,SAVEWRK2 00494000
  516. CALL DMKQCNWT,PARM=NORET 00495000
  517. DEFEXIT EQU * @V2A3663 00496000
  518. SLR R2,R2 00497000
  519. ST R2,SAVER2 ERROR CODE TO DMKCFM 00498000
  520. EXIT 00499000
  521. SPACE 2 00500000
  522. SCANCLC CLC 0(*-*,R1),0(R3) DEVICE TYPE COMPARE 00501000
  523. FINDAS CLC 0(*-*,R1),=C'AS' 00502000
  524. EJECT 00503000
  525. REDEFIN EQU * "DEFINE VADD1 AS VADD2" 00504000
  526. L R1,DEVADDR 'OLD' DEVICE ADDRESS 00505000
  527. CALL DMKSCNVU PICK UP CONTROL BLOCKS 00506000
  528. BNZ INVFADD IT ISN'T THERE 00507000
  529. USING VCHBLOK,R6 00508000
  530. USING VCUBLOK,R7 00509000
  531. USING VDEVBLOK,R8 00510000
  532. AIF (NOT &DEDCH).NOTDED2 **AIF** 00511000
  533. TM VCHSTAT,VCHDED DEDICATED CHANNEL ? 00512000
  534. BO DEDCHAN YES - CANNOT CHANGE THE ADDRESS 00513000
  535. TM VDEVSTAT,VDEVDED+VDEVCATT DEDICATED OR ATTACHED?@VA12606 00513150
  536. BZ NODEDATT NO CHECK FOR ACTIVE ACTIVE I/O @VA12606 00513250
  537. OC VDEVIOB,VDEVIOB ACTIVE I/O? @VA12606 00513350
  538. BNZ DEDCHAN YES @VA12606 00513450
  539. NODEDATT DS 0H @VA12606 00513550
  540. .NOTDED2 ANOP 00514000
  541. TM VCUTYPE,VCUCTCA IS OLD DEVICE A CTCA ? @VA04546 00515000
  542. BZ NOTCTCA NO, SEE IF NEW ONE WAS @VA04546 00516000
  543. CLC SAVEWRK8(4),FFS DOES NEW CU EXIST ? @VA04546 00517000
  544. BE CALLRD NO, ALRIGHT TO REDEFINE @VA04546 00518000
  545. TM DEFLAGS,DVCTCA YES,REDEF CTCA ON SAME CU ? @VA04546 00519000
  546. BZ POINTOLD NO, THATS A NO-NO @VA04546 00520000
  547. C R7,SAVEWRK8 YES, SAME CU ? @VA04546 00521000
  548. BNE POINTOLD NO, NO CAN DO ,,,, @VA04546 00522000
  549. B CALLRD YES, OK TO DO IT ...... @VA04546 00523000
  550. NOTCTCA TM DEFLAGS,DVCTCA NEW DEVICE A CTCA ? @VA04546 00524000
  551. BZ NOTCTCA1 NO, CONTINUE ........... @VA04546 00525000
  552. POINTOLD L R7,SAVEWRK8 POINT TO NEW VCUBLOK FOR MSG @VA04546 00526000
  553. B EXISTCU YES, TIME FOR A REPRIMAND @VA04546 00527000
  554. NOTCTCA1 EQU * @VA04546 00528000
  555. CLC VDEVTYPC(2),=AL1(CLASDASD,TYP2305) IS IT A 2305 @VA04098 00529000
  556. BNE CALLRD NOPE, CONTINUE @VA04098 00530000
  557. TM VDEVSTAT,VDEVDED IS IT DEDICATED? @VA04098 00531000
  558. BZ CALLRD NOPE, CONTINUE @VA04098 00532000
  559. TM DEVADDR+3,X'07' IS CMD ENTERED VADDR A BASE ADDR@VA04098 00533000
  560. BNZ ERR22UL NOPE, TOO BAD @VA04098 00534000
  561. TM UDEVADD+1,X'07' IS NEW VADDR A BASE ADDR? @VA04098 00535000
  562. BNZ ERR22UL NOPE, TOO BAD @VA04098 00536000
  563. DROP R7 NO MORE OLD DEVICE VCUBLOK @VA04098 00537000
  564. L R4,SAVEWRK8 SWITCH TO NEW DEVICE VCUBLOK @VA04098 00538000
  565. LTR R4,R4 IS THERE ONE? @VA04098 00539000
  566. BM SETFLAG NOPE, THATS MUCH EASIER @VA04546 00540000
  567. USING VCUBLOK,R4 ADDRESS THE NEW DEV VCUBLOK @VA04098 00541000
  568. LH R1,UDEVADD GET THE NEW DEVICE ADDRESS @VA04098 00542000
  569. N R1,F8 CLEAN OFF ALL BUT BIT 3 @VA04098 00543000
  570. SLL R1,1 <- BY 1 TO VCUDVTBL BYTE INDEX @VA04098 00544000
  571. LA R3,VCUDVTBL+2*7(R1) ADDR LAST DEVICE TO EXAMINE @VA04098 00545000
  572. LA R1,VCUDVTBL(R1) ADDR FIRST DEVICE TO EXAMINE @VA04098 00546000
  573. LA R2,2 VCUDVTBL ENTRY SIZE @VA04098 00547000
  574. PRESCAN CLI 0(R1),X'FF' DOES THIS DEVICE EXIST? @VA04098 00548000
  575. BNE BAD05 YUP, TOO BAD... @VA04098 00549000
  576. BXLE R1,R2,PRESCAN LOOK AT ALL 8 VIRTUAL EXPOSURES @VA04098 00550000
  577. DROP R4 DO MORE NEW DEVICE VCUBLOK @VA04098 00551000
  578. USING VCUBLOK,R7 BACK TO OLD DEVICE VCUBLOK PLEASE@VA04098 00552000
  579. SETFLAG OI DEFLAGS,DED2305 IND THIS IS A DEDICATED 2305 @VA04098 00553000
  580. CALLRD CALL DMKCFPRD RESET THE DEVICE 00554000
  581. XC UDEVDISP(UDEVFTR-UDEVDISP),UDEVDISP 00555000
  582. MVC UDEVTYPC(2),VDEVTYPC MAKE NEW ONE LOOK LIKE OLD @VA10849 00556100
  583. OI UDEVSTAT,UDEVRDEF VSPXBLOK POINTER @VA12263 00556200
  584. * CLEARED UDEVBLOK TO GET CLEAN VDEVBLOK FROM 'VDSDF' 00557000
  585. LR R2,R10 UDEVBLOK ADDRESS TO R2 @V407466 00558000
  586. CALL DMKVDSDF GET A CLEAN DEVICE BLOCK @V407466 00559000
  587. CH R2,=H'124' EXCEEDED MAX DEVICES? @VA13217 00559045
  588. BE ERR153 YES MSG 153 @VA13217 00559445
  589. LTR R2,R2 ANY PROBLEMS GETTING THE BLOCK @V407466 00560000
  590. BNZ ERRTABL-28(R2) YES, NO FREE STORAGE @V407466 00561000
  591. LR R9,R8 SAVE ADDRESS NEW VDEVBLOK FOR NOW@V407466 00562000
  592. L R1,DEVADDR RESTORE OLD ADDRESS @V407466 00563000
  593. CALL DMKSCNVU GET OLD BLOCKS @V407466 00564000
  594. BNZ INVFADD INVALID IF NOT THERE @V407466 00565000
  595. LR R1,R8 REST OLD VDEVBLOK ADDR FOR RESET @V407466 00566000
  596. SL R1,VMDVSTRT TRANSFORM IT INTO A DISPLACEMENT @V200820 00567000
  597. STH R1,DEVADDR SAVE IT IN CASE OF RE-DEFINE @V200820 00568000
  598. SPACE 00569000
  599. TM VCUTYPE,VCUCTCA CHAN-TO-CHAN ADAPTER ? 00570000
  600. BZ DETLOOP NO - OKAY 00571000
  601. MVI UDEVTYPC,CLASSPEC INDICATE CTCA TO VDSDF (CTCA) 00572000
  602. TM VDEVSTAT,VDEVDED CTCA DEDICATE TO REAL CTCA 00573000
  603. BO DETLOOP YES -- NOT A VIRTUAL CTCA 00574000
  604. CALL DMKVCARS DROP ANY EXISTING CONNECTION 00575000
  605. DETLOOP EQU * "DETACH" OLD DEVICE BLOCKS 00576000
  606. * NOW REMOVE VDEVBLOK AND MAYBE VCUBLOK, VCHBLOK FROM 00577000
  607. * ACTIVE VIRTUAL BLOCK LISTS, WITHOUT DESTROYING DATA 00578000
  608. * IN VDEVBLOK REQUIRED FOR LINKS, ATTACHED DEVICES, ETC. 00579000
  609. L R2,FFS LOAD FFFFFFFF 00580000
  610. SR R3,R3 ZERO INDEX REGISTER 00581000
  611. LA R4,4 LOAD INCREMENT REGISTER 00582000
  612. LA R5,28 LOAD COMPARAND REGISTER 00583000
  613. LH R1,VDEVADD GET VIRTUAL DEVICE ADDRESS 00584000
  614. AR R1,R1 MULTIPLY IT BY 2 00585000
  615. STH R2,VDEVADD INDICATE DEVICE NO LONGER EXISTS 00586000
  616. STH R2,VCUDVTBL(R1) REMOVE RDEVBLOK INDEX FROM TABLE 00587000
  617. DETCULP CL R2,VCUDVTBL(R3) ANY MORE DEVICES ON THIS CU ? 00588000
  618. BNE DETDONE BRANCH IF YES 00589000
  619. BXLE R3,R4,DETCULP BRANCH IF MORE TABLE ENTRIES 00590000
  620. LH R1,VCUADD LOAD VIRTUAL CONTROL UNIT ADDRESS 00591000
  621. SRL R1,3 MULTIPLY IT BY 2 00592000
  622. STH R2,VCUADD INDICATE CONTROL UNIT NO LONGER EXISTS 00593000
  623. STH R2,VCHCUTBL(R1) REMOVE VCUBLOK INDEX FROM TABLE 00594000
  624. SR R3,R3 ZERO INDEX REGISTER 00595000
  625. DETCHLP CL R2,VCHCUTBL(R3) ANY MORE CTL UNITS ON THIS CHAN ? 00596000
  626. BNE DETDONE BRANCH IF YES 00597000
  627. BXLE R3,R4,DETCHLP BRANCH IF MORE TABLE ENTRIES 00598000
  628. LH R1,VCHADD LOAD VIRTUAL CHANNEL ADDRESS 00599000
  629. SRL R1,7 MULTIPLY IT BY 2 00600000
  630. STH R2,VCHADD INDICATE CHANNEL NO LONGER EXISTS 00601000
  631. STH R2,VMCHTBL(R1) REMOVE VCHBLOK INDEX FROM TABLE 00602000
  632. DETDONE EQU * DETACH FINISHED 00603000
  633. ST R8,SAVEWRK9 SAVE ADDRESS OF 'OLD' VDEVBLOK 00604000
  634. * LOAD INTO REGISTERS AND MY SAVE-AREA ALL INFO NEEDED TO 00605000
  635. * RE-ESTABLISH LINKS, ATTACHES, ETC. IN THE NEW BLOCK 00606000
  636. L R3,VDEVTYPC TYPC,TYPE,STAT,FLAG 00607000
  637. LM R4,R7,VDEVRELN RELN,BND,POSN,QUED,OPER 00608000
  638. STM R5,R7,SAVEWRK6 POSN,QUED,OPER 00609000
  639. LM R5,R7,VDEVLINK LINK,REAL,IOCT 00610000
  640. LM R0,R1,VDEVFLG2 FLG2, VRRB @V407438 00611000
  641. DROP R6,R7 00612000
  642. LR R8,R9 NEW VDEVBLOK ADDRESS TO R8 @V407466 00613000
  643. * 'NEW' VDEVBLOK NOW IN GPR 8 00614000
  644. * RE-BUILD ACTIVE VDEVBLOK FROM REGISTER INFO 00615000
  645. ST R3,VDEVTYPC TYPC,TYPE,STAT,FLAG 00616000
  646. ST R4,VDEVRELN 00617000
  647. STM R0,R1,VDEVFLG2 FLG2, VRRB @V407438 00618000
  648. STM R5,R7,VDEVLINK LINK,REAL,IOCT 00619000
  649. LM R0,R2,SAVEWRK6 POSN,QUED,OPER 00620000
  650. STM R0,R2,VDEVPOSN ... 00621000
  651. * R5 = 'VDEVLINK' R6 = 'VDEVREAL' 00622000
  652. TM VDEVSTAT,VDEVDED DEDICATED DEVICE ? 00623000
  653. BZ FIXLINK NO - SEE IF LINKED DASD 00624000
  654. USING RDEVBLOK,R6 00625000
  655. LH R1,UDEVADD-UDEVBLOK+SAVEWRK3 'NEW' ADDRESS 00626000
  656. STH R1,RDEVATT ...INTO RDEVBLOK 00627000
  657. DROP R6 NO MORE RDEVBLOK @VA04098 00628000
  658. TM DEFLAGS,DED2305 IS THIS A DEDICATED 2305? @VA04098 00629000
  659. BZ CHKCONS NOPE, SKIP @VA04098 00630000
  660. TM UDEVADD+1,X'07' WAS THAT THE LAST EXPOSURE? @VA04098 00631000
  661. BNO CONT05 NOPE, MORE TO DO, KEEP GOING @VA04098 00632000
  662. NI UDEVADD+1,X'F8' BACK TO BASE ADDR FOR MSG @VA04098 00633000
  663. B RDEFREE AND PROCEED @VA04098 00634000
  664. SPACE 00635000
  665. CONT05 LH R1,UDEVADD GET CURRENT NEW DEVICE ADDR @VA04098 00636000
  666. LA R1,1(R1) BUMP TO NEXT EXPOSURE @VA04098 00637000
  667. STH R1,UDEVADD AND RE-SAVE @VA04098 00638000
  668. L R1,DEVADDR GET OLD DEVICE ADDR @VA04098 00639000
  669. LA R1,1(R1) BUMP TO NEXT EXPOSURE @VA04098 00640000
  670. ST R1,DEVADDR AND RE-SAVE @VA04098 00641000
  671. CALL DMKSCNVU GET VBLOKS FOR THIS OLD EXPOSURE @VA04098 00642000
  672. B CALLRD AND CONTINUE THE PROCESS @VA04098 00643000
  673. SPACE 00644000
  674. FIXLINK EQU * CHECK FOR LINKED DASD DEVICES 00645000
  675. CLI VDEVTYPC,CLASDASD PERHAPS LINKED ? 00646000
  676. BNE CHKCONS NO - THANK GOD FOR SMALL FAVORS 00647000
  677. TM VDEVFLAG,VDEVTDSK PERHAPS A T-DISK ? 00648000
  678. BO RDEFREE YES - WONDERFUL 00649000
  679. * FIND OLD VDEVBLOK IN LINK CHAIN AND PATCH WITH NEW ADDRESS 00650000
  680. L R4,SAVEWRK9 'OLD' VDEVBLOK ADDRESS 00651000
  681. * R5 = PRESERVED 'VDEVLINK' 00652000
  682. CR R4,R5 MORE THAN 1 LINK IN OLD VDEVBLOK 00653000
  683. BNE LINKFIX YES - FIND AND PATCH THE LINK CHAIN 00654000
  684. ST R8,VDEVLINK NO - FORCE THIS ONE TO LINK TO ITSELF 00655000
  685. B RDEFREE TYPE RESPONSE MESSAGE 00656000
  686. SPACE 00657000
  687. LINKFIX EQU * FIND PREVIOUS VDEVBLOK 00658000
  688. LTR R6,R5 SAVE CURRENT ADDRESS 00659000
  689. BZ RDEFREE NO OTHER LINKS - GREAT 00660000
  690. L R5,VDEVLINK-VDEVBLOK(,R5) NEXT BLOCK 00661000
  691. CLR R5,R4 POINTS TO OLD BLOCK ? 00662000
  692. BNE LINKFIX NO - KEEP LOOKING 00663000
  693. ST R8,VDEVLINK-VDEVBLOK(,R6) PATCH IN NEW VDEVBLOK 00664000
  694. B RDEFREE GO UNLOCK USERID 00665000
  695. CHKCONS EQU * SEE IF PRIMARY VM CONSOLE 00666000
  696. CLC VMVTERM(2),DEVADDR RE-DEFINE PRIMARY CONSOLE ? @V200820 00667000
  697. BNE RDEFREE NOPE - ALL DONE 00668000
  698. LR R1,R8 NEW VIRTUAL DEVICE ADDRESS @V200820 00669000
  699. SL R1,VMDVSTRT CONVERT TO DISPLACEMENT FORM @V200820 00670000
  700. STH R1,VMVTERM RESET VMBLOK REFERENCE @V200820 00671000
  701. RDEFREE EQU * MADE IT THROUGH 00672000
  702. BAL R5,FREUSER UNLEASH THIS GUY 00673000
  703. B RESPOND ...AND TYPE A MESSAGE 00674000
  704. DROP R8 00675000
  705. EJECT 00676000
  706. DEFCORE EQU * RE-DEFINE VIRTUAL MEMORY SIZE 00677000
  707. * CALL DMKDEHIN WITH R0= LENGTH OF ARGUMENT, R1= ADDDRESS OF 00678000
  708. * ARGUMENT, R10= DUMMY UDEVBLOK ADDRESS. 00698000
  709. CALL DMKDEHIN @VA13361 00718000
  710. B DEFEXIT CLEAN UP AND BEAT IT @VA13361 00738000
  711. EJECT 00768000
  712. DEFCHAN EQU * @VA13361 00769000
  713. * CALL DMKDEHIN WITH R0= LENGTH OF ARGUMENT, R1= ADDDRESS OF 00777000
  714. * ARGUMENT, R10= DUMMY UDEVBLOK ADDRESS. 00785000
  715. SPACE 00793000
  716. CALL DMKDEHIN @VA13361 00801000
  717. SPACE 00809000
  718. CHXIT EXIT @V2A3663 00819000
  719. EJECT 00820000
  720. *---------------------------------------------------------------------* 00821000
  721. * LOKUSER + FREUSER - LOCK + UNLOCK DEVICE BLOCKS * 00822000
  722. *---------------------------------------------------------------------* 00823000
  723. LOKUSER EQU * 00824000
  724. LA R1,VMUSER POIN TO THE USERID 00825000
  725. CALL DMKLOCKQ ...AND LOCK IT 00826000
  726. BR R5 00827000
  727. SPACE 00828000
  728. FREUSER EQU * 00829000
  729. LA R1,VMUSER POINT TO THE USERID 00830000
  730. CALL DMKLOCKD ...AND UNLOCK IT 00831000
  731. BR R5 00832000
  732. SPACE 2 00833000
  733. AIF (NOT &DEDCH).NOTDED3 **AIF** 00834000
  734. DEDCHAN EQU * DEV VADDR NOT DEFINED; CHAN XX DEDICATED 00835000
  735. LH R6,VCHADD-VCHBLOK(,R6) GET CHANNEL ADDRESS 00836000
  736. BAL R5,FREUSER RELEASE THE CONTROL BLOCKS 00837000
  737. LH R1,SAVEWRK3 REQUESTED NEW ADDRESS 00838000
  738. CALL DMKCVTBH 00839000
  739. STCM R1,B'0111',SAVEWRK2 00840000
  740. MVI SAVEWRK2+3,X'00' DELIMITER 00841000
  741. LR R1,R6 CHANNEL ADDRESS 00842000
  742. SRL R1,8(0) ... ADJUSTED 00843000
  743. CALL DMKCVTBD 00844000
  744. STH R1,SAVEWRK3 00845000
  745. TM SAVEWRK3,X'0F' CHANNEL NUMBER > 9 00846000
  746. BNZ *+8 YES - LEAVE MESSAGE TEXT ALONE 00847000
  747. MVI SAVEWRK3,X'00' NO - REMOVE HI ORDER BYTE 00848000
  748. LA R0,6 00849000
  749. LA R2,136 MESSAGE NUMBER 00850000
  750. B MSGSEND SEND THE MESSAGE 00851000
  751. .NOTDED3 ANOP 00852000
  752. EJECT 00853000
  753. BAD05 LR R7,R1 ADDR OF EXISTING DEV ENTRY -> R7 @VA04098 00854000
  754. B FOUNDEV PROCEED WITH MSG @VA04098 00855000
  755. SPACE 00856000
  756. EXISTCU EQU * DEFINE CTCA ON EXISTING CONTROL UNIT 00857000
  757. USING VCUBLOK,R7 00858000
  758. LA R5,VCUDVTBL+31 LIMIT FOR DEVICE SEARCH 00859000
  759. LA R4,2 00860000
  760. LA R7,VCUDVTBL LOOK FOR AN EXISTING DEVICE 00861000
  761. DROP R7 00862000
  762. EXISTDV EQU * (WE NEED ONE FOR THE ERROR MESSAGE) 00863000
  763. CLI 0(R7),X'FF' SKIP OVER UNUSED DEVICE SLOTS 00864000
  764. BNE FOUNDEV GOT ONE 00865000
  765. BXLE R7,R4,EXISTDV 00866000
  766. FOUNDEV EQU * COMPUTE VDEVBLOK ADDRESS FOR LATER 00867000
  767. LH R8,0(0,R7) PICK UP DEVICE INDEX 00868000
  768. AL R8,VMDVSTRT ADD TO VDEVBLOK BASE ADDRESS 00869000
  769. SPACE 00870000
  770. ALREADY EQU * DEV ADDR NOT DEFINED; TYPE VADDR ALREADY DEFINED 00871000
  771. BAL R5,FREUSER RELEASE LOCK ON CONTROL BLOCKS 00872000
  772. LH R1,SAVEWRK3 ADDRESS REQUESTED FOR NEW DEVICE 00873000
  773. CALL DMKCVTBH 00874000
  774. STCM R1,B'0111',SAVEWRK2 00875000
  775. MVI SAVEWRK2+3,X'00' 00876000
  776. CALL DMKSCNVD 'CCU' ADDR OF EXISTING DEVICE 00877000
  777. CALL DMKCVTBH 00878000
  778. STCM R1,B'0111',SAVEWRK4+1 00879000
  779. MVI SAVEWRK4,X'00' 00880000
  780. CALL DMKSCNVN 00881000
  781. ST R1,SAVEWRK3 00882000
  782. LA R0,12 00883000
  783. LA R2,092(,0) MSG= DMKDEF092E 00884000
  784. B MSGSEND 00885000
  785. SPACE 2 00886000
  786. INVFADD EQU * DEV ADDR DOES NOT EXIST 00887000
  787. BAL R5,FREUSER RELEASE LOCK ON CONTROL BLOCKS 00888000
  788. L R1,DEVADDR FIRST ADDRESS SPECIFIED 00889000
  789. CALL DMKCVTBH 00890000
  790. STCM R1,B'0111',SAVEWRK2 00891000
  791. LA R0,3 00892000
  792. LA R2,040(,0) MSG= DMKDEF040E 00893000
  793. B MSGSEND 00894000
  794. ERR153 DS 0H ERROR MSG 153 @VA13217 00894100
  795. BAL R5,FREUSER RELEASE LOCK @VA13217 00894200
  796. LH R1,UDEVADD VIRTUAL DEVICE ADDRESS DEFINED @VA13217 00894300
  797. CALL DMKCVTBH CONVERT TO CHARS IN REG1 @VA13217 00894400
  798. STCM R1,7,SAVEWRK2 DATA TO INSERT IN MSG 153 @VA13217 00894500
  799. LA R0,L3 LENGTH OF DATA TO INSERT @VA13217 00894600
  800. LA R2,EMSG153 MSG ID @VA13217 00894700
  801. B MSGSEND SEND MSG 153 AND NO RETURN @VA13217 00894800
  802. EJECT 00895000
  803. INVTYPE EQU * OPERAND MISSING OR INVALID 00896000
  804. LA R2,026(,0) MSG= DMKDEF026E 00897000
  805. B MSGONLY NO EXTRA DATA 00898000
  806. INVOPTS EQU * INVALID OPTION - $OPTION$ 00899000
  807. LA R2,003(,0) MSG= DMKDEF003E 00900000
  808. B MSGSEND+4 (R0,R1 STILL CORRECT FROM SCNFD) 00901000
  809. SPACE 00902000
  810. ERR22UL BAL R5,FREUSER UNLOCK THE USERS VBLOKS 00903000
  811. INVVADD EQU * VADDR MISSING OR INVALID 00904000
  812. CLI UDEVTYPC-UDEVBLOK+SAVEWRK3,X'FF' DEFINE STORAGE ? 00905000
  813. BE INVCORE YES - DIFFERENT MESSAGE 00906000
  814. CLI UDEVTYPC-UDEVBLOK+SAVEWRK3,X'FE' DEFINE CHAN? @VA02847 00907000
  815. BE INVTYPE YES-PUT OUT DIFFERENT MESSAGE @VA02847 00908000
  816. LA R2,022(,0) MSG= DMKDEF022E 00909000
  817. B MSGONLY NO EXTRA DATA 00910000
  818. INVCYLS EQU * CYLS MISSING OR INVALID 00911000
  819. LA R2,024(,0) MSG= DMKDEF024E 00912000
  820. B MSGONLY NO EXTRA DATA 00913000
  821. SPACE 2 00914000
  822. NOSPACE EQU * DASD VADDR NOT DEFINED; TEMP SPACE NOT AVAILABLE 00915000
  823. LH R1,SAVEWRK3 00916000
  824. CALL DMKCVTBH 00917000
  825. STCM R1,B'0111',SAVEWRK2 00918000
  826. LA R0,3 00919000
  827. LA R2,091(,0) MSG= DMKDEF091E 00920000
  828. B MSGSEND 00921000
  829. NOSTOR EQU * @V407466 00922000
  830. * DEV VADDR NOT DEFINED; INSUFFICIENT FREE STORAGE 00923000
  831. BAL R5,FREUSER RELEASE LOCK ON CONTROL BLOCKS @V407466 00924000
  832. LH R1,SAVEWRK3 ADDRESS REQUESTED FOR NEW DEVICE @V407466 00925000
  833. CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V407466 00926000
  834. STCM R1,B'0111',SAVEWRK2 STORE IN MSG BUFFER @V407466 00927000
  835. LA R0,3 LENGTH OF SUBSTITUTION @V407466 00928000
  836. LA R2,095(,0) MSG = DMKDEF095E @V407466 00929000
  837. B MSGSEND ISSUE ERROR MESSAGE @V407466 00930000
  838. SPACE 00931000
  839. SPACE 2 00932000
  840. INVCORE EQU * STORAGE MISSING OR INVALID 00933000
  841. LA R2,025(,0) MSG= DMKDEF025E 00934000
  842. B MSGONLY NO EXTRA DATA 00935000
  843. EXCESIV EQU * STORAGE EXCEEDS ALLOWED MAXIMUM 00936000
  844. LA R2,094(,0) MSG= DMKDEF094E 00937000
  845. SPACE 00938000
  846. MSGONLY EQU * MSG WITHOUT VARIABLE FIELDS 00939000
  847. SLR R0,R0 00940000
  848. SLR R1,R1 00941000
  849. B *+8 SKIP OVER 'LA' FOR R1 00942000
  850. MSGSEND EQU * SEND ERROR MESSAGE 00943000
  851. LA R1,SAVEWRK2 VARIABLE DATA LOCATION 00944000
  852. MSGIDBLD EQU * BUILD MOD ID FOR MSG @V60B6B8 00945000
  853. ICM R0,B'1110',DMKDEF+3 MODULE IDENTIFIER 00946000
  854. CALL DMKERMSG BUILD + TYPE ERROR MESSAGE 00947000
  855. * "DMKERMSG" WILL NOT RETURN 00948000
  856. * JUMP TABLE FOR R2 ERROR CODES FROM DMKVDSDF 00949000
  857. ERRTABL DS 0H ERROR NUMBERS 28,32 @V407466 00950000
  858. B NOSPACE 28 TEMP. SPACE NOT AVAIL. @V407466 00951000
  859. B NOSTOR 32 NO STORAGE FOR VIRT. BLOCKS @V407466 00952000
  860. EJECT 00953000
  861. * BITS DEFINED IN DEFLAGS: 00954000
  862. CHANGED EQU X'80' EXISTING DEVICE BEING RE-DEFINED 00955000
  863. STORAGE EQU X'40' RE-DEFINE STORAGE SIZE 00956000
  864. DEFTDSK EQU X'20' T-DISK BEING DEFINED 00957000
  865. SPACE 1 00958000
  866. * BITS DEFINED FOR CALL TO DMKPGS 00959000
  867. UNLOCK EQU X'02' UNLOCK ANY 'LOCKED' PAGES @V304735 00960000
  868. DED2305 EQU X'01' DEVICE IS A DEDICATED 2305 @VA04098 00961000
  869. DVCTCA EQU X'02' DEVICE IS A CTCA @VA04546 00962000
  870. SPACE 2 00963000
  871. *---------------------------------------------------------------------* 00964000
  872. * DEVICE TYPE DECODING TABLE FOR 'DEFINE' COMMAND: * 00965000
  873. * C'DEVICE TYPE',H'MINIMUM LENGTH-1',AL2(TYPE CLASS,TYPE) * 00966000
  874. *---------------------------------------------------------------------* 00967000
  875. DEFLIST EQU * 00968000
  876. DC C'READER ',H'0',AL1(CLASURI,TYP2540R) CARD READER 00969000
  877. DC C'RDR ',H'2',AL1(CLASURI,TYP2540R) " " " 00970000
  878. DC C'2501 ',H'3',AL1(CLASURI,TYP2501) 2501 @VA03655 00971000
  879. * READER 00972000
  880. DC C'2540R ',H'4',AL1(CLASURI,TYP2540R) 2540 @VA03655 00973000
  881. * READER 00974000
  882. DC C'3505 ',H'3',AL1(CLASURI,TYP3505) 3505 @VA03655 00975000
  883. * READER 00976000
  884. DC C'PRINTER ',H'0',AL1(CLASURO,TYP1403) PRINTER 00977000
  885. DC C'PRT ',H'2',AL1(CLASURO,TYP1403) " " 00978000
  886. DC C'PTR ',H'2',AL1(CLASURO,TYP1403) " " 00979000
  887. DC C'1403 ',H'3',AL1(CLASURO,TYP1403) 1403 PRINTER 00980000
  888. DC C'3211 ',H'3',AL1(CLASURO,TYP3211) 3211 PRINTER 00981000
  889. DC C'3203 ',H'3',AL1(CLASURO,TYP3203) 3203 PTR@V386298 00982000
  890. DC C'1443 ',H'3',AL1(CLASURO,TYP1443) 1443 @VA03655 00983000
  891. * PRINTER 00984000
  892. DC C'PUNCH ',H'1',AL1(CLASURO,TYP2540P) CARD PUNCH 00985000
  893. DC C'PCH ',H'2',AL1(CLASURO,TYP2540P) " " 00986000
  894. DC C'2540P ',H'4',AL1(CLASURO,TYP2540P) 2540 @VA03655 00987000
  895. * PUNCH 00988000
  896. DC C'3525 ',H'3',AL1(CLASURO,TYP3525) 3525 PUNCH@VA03655 00989000
  897. DC C'CONSOLE ',H'2',AL1(CLASTERM,TYP1052) VM CONSOLE 00990000
  898. DC C'TIMER ',H'2',AL1(CLASURI,TYPTIMER) PSEUDO-TIMER 00991000
  899. DC C'CTCA ',H'2',AL1(CLASSPEC,TYPCTCA) CHAN-CHAN ADAPT 00992000
  900. DC C'LINE ',H'1',AL1(CLASTERM,TYPIBM1) VIRT. 2702 00993000
  901. DC C'GRAF ',H'3',AL1(CLASGRAF,TYP3277) 3270 GRA @V200730 00994000
  902. DC C'T2305 ',H'4',AL1(CLASDASD,TYP2305) 2305 T-DISK 00995000
  903. DC C'T2314 ',H'4',AL1(CLASDASD,TYP2314) 2314 T-DISK 00996000
  904. DC C'T2319 ',H'4',AL1(CLASDASD,TYP2319) 2319 T-DISK 00997000
  905. DC C'T3340 ',H'4',AL1(CLASDASD,TYP3340) (TDISK) @V2A2029 00998000
  906. DC C'T3330 ',H'4',AL1(CLASDASD,TYP3330) 3330 T-DISK 00999000
  907. DC C'T3350 ',H'4',AL1(CLASDASD,TYP3350) (TDISK) @V304498 01000000
  908. DC C'T3375 ',H'4',AL1(CLASDASD,TYP3375) (TDISK) HRC106DK 01000100
  909. DC C'T3380 ',H'4',AL1(CLASDASD,TYP3380) (TDISK) HRC106DK 01000200
  910. DC C'CHANNELS',H'3',X'FEFF' CHANNELS @VA01771 01001000
  911. DEFLAST DC C'STORAGE ',H'3',X'FFFF' (MUST BE LAST) STORAGE CHG 01002000
  912. DEFENTS EQU *-DEFLAST LENGTH OF ONE ENTRY 01003000
  913. EJECT 01004000
  914. DEFMSS EQU * DEFINE 'VIRTUAL' OR 'SYSVIRT' @V60B6B8 01005000
  915. * 01006000
  916. * THIS ROUTINE IS ENTERED TO PROCESS THE MSS DEFINE 01007000
  917. * OPTIONS. 01008000
  918. * 01009000
  919. * THE FIRST STEP IS TO FIND THE ADDRESS OR RANGE 01010000
  920. * OF ADDRESSES SPECIFIED. ONCE THE INPUT LINE HAS 01011000
  921. * BEEN PROCESSED, A TABLE IS BUILT CONTAINING THE 01012000
  922. * REAL DEVICE BLOCK (RDEVBLOK) ADDRESSES CORRESPONDING 01013000
  923. * TO THE ADDRESS(ES). 01014000
  924. * 01015000
  925. SR R0,R0 @V60B6B8 01016000
  926. ST R0,FIRSTBUF INITIALIZE BUFFER POINTER @V60B6B8 01017000
  927. ST R0,ADDR2 INITIALIZE ADDR2 POINTER @V60B6B8 01018000
  928. CALL DMKSCNFD GET THE NEXT INPUT PARAMETER @V60B6B8 01019000
  929. BNZ EMSG086A IF NO PARAMETER, ERROR MSG 086 @V60B6B8 01020000
  930. LA R2,L3 'ADDR1' PARM SHOULD BE 3 @V60B6B8 01021000
  931. * CHARACTERS 01022000
  932. CR R0,R2 SEE IF IT IS @V60B6B8 01023000
  933. BE GETADDR1 YES, PROCESS ADDR1 @V60B6B8 01024000
  934. * SEE IF WE HAVE A RANGE OF ADDRESSES 01025000
  935. LA R2,L7 LENGTH OF A RANGE PARAMETER @V60B6B8 01026000
  936. CR R0,R2 INPUT OPERAND LENGTH @V60B6B8 01027000
  937. BNE EMSG086B OPERAND NOT ADDR OR RANGE @V60B6B8 01028000
  938. CLI 3(R1),DASH CHECK FOR 'NNN-NNN' @V60B6B8 01029000
  939. BNE EMSG086B NO DASH, CAN'T BE RANGE @V60B6B8 01030000
  940. MVI 3(R1),BLANK RESET FOR LATER SCAN @V60B6B8 01031000
  941. LA R2,4(R1) POINT TO SECOND PARAMETER @V60B6B8 01032000
  942. ST R2,ADDR2 SAVE IT @V60B6B8 01033000
  943. LA R0,L3 RESET LENGTH FOR CONVERSION @V60B6B8 01034000
  944. * 01035000
  945. * CONVERT ADDR1 TO BINARY. 01036000
  946. * ON RETURN FROM DMKCVTHB, GPR1 CONTAINS 01037000
  947. * THE BINARY VALUE OF 'ADDR1' 01038000
  948. * 01039000
  949. GETADDR1 EQU * @V60B6B8 01040000
  950. CALL DMKCVTHB CONVERT 'ADDR1' TO BINARY @V60B6B8 01041000
  951. BNZ EMSG086A ERROR, NOT CORRECT FORMAT @V60B6B8 01042000
  952. * 01043000
  953. * NOW TRY TO FIND AN RDEVBLOK FOR 'ADDR1'. 01044000
  954. * ON RETURN FROM DMKSCNRU, GPR 8 WILL 01045000
  955. * CONTAIN THE RDEVBLOK PTR IF AN 01046000
  956. * RDEVBLOK EXISTS. 01047000
  957. * 01048000
  958. CALL DMKSCNRU IS THERE AN RDEVBLOK @V60B6B8 01049000
  959. BNZ EMSG086A NO, ISSUE MSG 086 @V60B6B8 01050000
  960. USING RDEVBLOK,R8 ADDRESSABILITY FOR ASSEMBLER @V60B6B8 01051000
  961. CLI RDEVTYPC,CLASDASD IS IT A DASD DEVICE? @V60B6B8 01052000
  962. BNE EMSG086A NO, CAN'T BE VUA @V60B6B8 01053000
  963. TM RDEVFTR,VIRTUAL+SYSVIRT IS DASD A VUA @V60B6B8 01054000
  964. BZ EMSG086A NO, ISSUE MSG 086 @V60B6B8 01055000
  965. ST R1,FIRSTADR SAVE FIRST PARAMETER @V60B6B8 01056000
  966. ST R1,CURRADDR IT IS ALSO CURRENT ADDRESS @V60B6B8 01057000
  967. ST R1,LASTADDR LAST ADDR UNTIL PREEMPTED @V60B6B8 01058000
  968. SPACE 01059000
  969. L R2,ADDR2 PICK UP POINTER TO ADDR2 @V60B6B8 01060000
  970. LTR R2,R2 IS THERE ONE? @V60B6B8 01061000
  971. BZ DEVCHECK IF NONE, PROCEED WITH ONE @V60B6B8 01062000
  972. LR R1,R2 PUT ADDR2 IN R1 FOR DMKCVT @V60B6B8 01063000
  973. ST R8,RDEVADR1 SAVE PTR TO FIRST RDEVBLOK @V60B6B8 01064000
  974. LA R0,3 LENGTH OF PARAMETER @V60B6B8 01065000
  975. CALL DMKCVTHB CONVERT 'ADDR2' TO BINARY @V60B6B8 01066000
  976. BNZ EMSG086F ERROR, NOT CORRECT FORMAT @V60B6B8 01067000
  977. CALL DMKSCNRU CHECK VALIDITY OF ADDR2 @V60B6B8 01068000
  978. BNZ EMSG086F IF INVALID, ERROR MSG 086 @V60B6B8 01069000
  979. C R1,FIRSTADR IS LAST ADDR LESS THAN FIRST? @V60B6B8 01070000
  980. BL E9 IF YES, ERROR AND EXIT @V60B6B8 01071000
  981. ST R1,LASTADDR SAVE LAST ADDRESS @V60B6B8 01072000
  982. BAL R4,TABLINIT INITIALIZE DEVICE TABLE @V60B6B8 01073000
  983. ST R1,FIRSTBUF SAVE POINTER TO FIRST BUFFER @V60B6B8 01074000
  984. L R8,RDEVADR1 RELOAD PTR TO FIRST RDEVBLOK @V60B6B8 01075000
  985. L R1,FIRSTADR RELOAD FIRST ADDRESS @V60B6B8 01076000
  986. SPACE 01077000
  987. DEVCHECK EQU * @V60B6B8 01078000
  988. TM SAVEWRK1,VIRTUAL IS DEFINE VIRTUAL? @V60B6B8 01079000
  989. BZ DEFSYSV NO, GO TO SYSVIRT DEFINE @V60B6B8 01080000
  990. MVC EMSG3TP(L7),VIRTCHAR SET UP MESSAGE @V60B6B8 01081000
  991. TM RDEVFTR,VIRTUAL IS DEVICE VIRTUAL NOW? @V60B6B8 01082000
  992. BO E3 SEND MESSAGE, ALREADY VIRTUAL, @V60B6B8 01083000
  993. * AND GO CHECK NEXT ADDR 01084000
  994. BAL R5,CHKDEV GO TO COMMON CODE @V60B6B8 01085000
  995. SPACE 01086000
  996. NI RDEVFTR,X'FF'-SYSVIRT TURN OFF SYSVIRT FLAG @V60B6B8 01087000
  997. OI RDEVFTR,VIRTUAL TURN ON VIRTUAL FLAG @V60B6B8 01088000
  998. BAL R5,TABLADD ADD TO LIST OF GOOD DEFINES @V60B6B8 01089000
  999. B CHKNXT CHECK NEXT DEVICE @V60B6B8 01090000
  1000. SPACE 01091000
  1001. DEFSYSV EQU * @V60B6B8 01092000
  1002. MVC EMSG3TP(L7),SYSVCHAR SET UP MESSAGE @V60B6B8 01093000
  1003. TM RDEVFTR,SYSVIRT IS DEVICE SYSVIRT NOW? @V60B6B8 01094000
  1004. BO E3 SEND MESSAGE, ALREADY SYSVIRT, @V60B6B8 01095000
  1005. * AND GO CHECK NEXT ADDR 01096000
  1006. BAL R5,CHKDEV GO TO COMMON CODE @V60B6B8 01097000
  1007. SPACE 01098000
  1008. NI RDEVFTR,X'FF'-VIRTUAL TURN OFF VIRTUAL FLAG @V60B6B8 01099000
  1009. OI RDEVFTR,SYSVIRT TURN ON SYSVIRT FLAG @V60B6B8 01100000
  1010. BAL R5,TABLADD ADD TO LIST OF GOOD DEFINES @V60B6B8 01101000
  1011. B CHKNXT GO CHECK NEXT ADDR @V60B6B8 01102000
  1012. SPACE 01103000
  1013. CHKDEV TM RDEVSTAT,RDEVDED IS DEVICE DEDICATED? @V60B6B8 01104000
  1014. BO E4 IF YES, MSG AND GO CHECK NEXT @V60B6B8 01105000
  1015. TM RDEVSTAT,RDEVDISA IS DEVICE OFFLINE? @V60B6B8 01106000
  1016. BZ NOTOFF IF NOT, CONTINUE @V60B6B8 01107000
  1017. LR R3,R1 SAVE REG1 @V60B6B8 01108000
  1018. BAL R4,E5 IF YES, ISSUE MSG THEN RETURN @V60B6B8 01109000
  1019. LR R1,R3 RESTORE REG1 @V60B6B8 01110000
  1020. NOTOFF EQU * @V60B6B8 01111000
  1021. TM SAVEWRK1,VIRTUAL IS THIS SYSVIRT TO VIRTUAL? @V60B6B8 01112000
  1022. BZ NOTSYS NO, BYPASS IN USE CHECK @V60B6B8 01113000
  1023. LH R3,RDEVLNKS GET NUMBER OF LINKS @V60B6B8 01114000
  1024. LTR R3,R3 ARE THERE ANY? @V60B6B8 01115000
  1025. BNZ E6 IF YES, ISSUE MSG AND GO @V60B6B8 01116000
  1026. * CHECK NEXT ADDR 01117000
  1027. NOTSYS CLC RDEVSER(SERLN),BLANKS IS A VOLUME MOUNTED? @V60B6B8 01118000
  1028. BER R5 IF NOT, RETURN TO UNIQUE PATH @V60B6B8 01119000
  1029. TM PSAMSS,MSSPRES TASK AVAILABLE TO DEMOUNT IT? @V60B6B8 01120000
  1030. BZ E7 IF NOT, ISSUE MSG AND CHECK @V60B6B8 01121000
  1031. * NEXT ADDRESS 01122000
  1032. CALL DMKSSSDE DEMOUNT THE VOLUME @V60B6B8 01123000
  1033. LTR R0,R0 WAS THERE AN ERROR? @V60B6B8 01124000
  1034. BNZ E8 IF YES, ISSUE MSG AND CHECK @V60B6B8 01125000
  1035. * NEXT ADDR 01126000
  1036. MVC RDEVSER(SERLN),BLANKS INDICATE NO VOLUME @V60B6B8 01127000
  1037. * MOUNTED 01128000
  1038. MVI RDEVFLAG,0 TURN OFF MOUNT FLAG @V60B6B8 01129000
  1039. BR R5 RETURN TO UNIQUE CODE @V60B6B8 01130000
  1040. SPACE 01131000
  1041. CHKNXT EQU * @V60B6B8 01132000
  1042. L R1,CURRADDR GET CURRENT ADDRESS @V60B6B8 01133000
  1043. C R1,LASTADDR HAVE WE PROCESSED LAST ADDR? @V60B6B8 01134000
  1044. BNL PP IF YES, PUT OUT FINAL MSGS @V60B6B8 01135000
  1045. LA R1,1(R1) INCREMENT TO NEXT ADDR @V60B6B8 01136000
  1046. ST R1,CURRADDR UPDATE THE CURRENT DEVICE PTR @V60B6B8 01137000
  1047. CALL DMKSCNRU IS DEVICE VALID? @V60B6B8 01138000
  1048. BNZ E1 NO, ISSUE MSG AND CHECK NEXT @V60B6B8 01139000
  1049. CLI RDEVTYPC,CLASDASD IS IT DASD? @V60B6B8 01140000
  1050. BNE E2 'ADDR NOT 3330V' & CHECK NXT @V60B6B8 01141000
  1051. TM RDEVFTR,VIRTUAL+SYSVIRT 3330V? @V60B6B8 01142000
  1052. BZ E2 'ADDR NOT 3330V' & CHECK NXT @V60B6B8 01143000
  1053. B DEVCHECK CHECK THIS DEVICE @V60B6B8 01144000
  1054. EJECT 01145000
  1055. PP EQU * @V60B6B8 01146000
  1056. MVC DEFMSGTP(L7),VIRTCHAR MOVE 'VIRTUAL' INTO MSG @V60B6B8 01147000
  1057. TM SAVEWRK1,VIRTUAL COMMAND DEFINE VIRTUAL? @V60B6B8 01148000
  1058. BO CHKNUM YES, LEAVE MESSAGE AS IS @V60B6B8 01149000
  1059. SYSV MVC DEFMSGTP(L7),SYSVCHAR SYSVIRT IN MESSAGE @V60B6B8 01150000
  1060. CHKNUM EQU * @V60B6B8 01151000
  1061. CLC FIRSTADR,LASTADDR ONLY ONE? @V60B6B8 01152000
  1062. BE CALLCVT YES, PUT OUT MESSAGE @V60B6B8 01153000
  1063. CHECKBUF L R3,FIRSTBUF GET ADDRESS OF BUFFER @V60B6B8 01154000
  1064. LTR R3,R3 IS THERE ONE? @V60B6B8 01155000
  1065. BZ DEFEXIT NO, LEAVE @V60B6B8 01156000
  1066. USING ADDRTABL,R3 @V60B6B8 01157000
  1067. NXTBUF L R6,ENTFIRST PICK UP FIRST SLOT @V60B6B8 01158000
  1068. NXTENTRY C R6,ENTNEXT ARE WE AT END? @V60B6B8 01159000
  1069. BNL FRETBUFF IF YES, RETURN BUFFER @V60B6B8 01160000
  1070. LH R1,0(R6) PICK UP ADDR @V60B6B8 01161000
  1071. CALLCVT CALL DMKCVTBH GET PRINTABLE FORMAT @V60B6B8 01162000
  1072. STCM R1,7,DEFMSG PUT IN MESSAGE TEXT @V60B6B8 01163000
  1073. LA R0,DEFMSGLN LENGTH OF MESSAGE @V60B6B8 01164000
  1074. LA R1,DEFMSG POINT TO MESSAGE @V60B6B8 01165000
  1075. CALL DMKQCNWT,PARM=NORET @V60B6B8 01166000
  1076. CLC FIRSTADR,LASTADDR ONLY ONE ADDR? @V60B6B8 01167000
  1077. BE DEFEXIT YES, LEAVE @V60B6B8 01168000
  1078. LA R6,ENTLN(R6) POINT TO NEXT ENTRY @V60B6B8 01169000
  1079. B NXTENTRY GO CHECK IT @V60B6B8 01170000
  1080. FRETBUFF L R4,BUFNEXT GET POINTER TO CHAINED BUFFER @V60B6B8 01171000
  1081. LA R0,TABLGET LENGTH OF TABLE @V60B6B8 01172000
  1082. LR R1,R3 TABLE ADDRESS IN REGISTER ONE @V60B6B8 01173000
  1083. CALL DMKFRET GIVE IT BACK @V60B6B8 01174000
  1084. LTR R3,R4 IS THERE ANOTHER BUFFER? @V60B6B8 01175000
  1085. BNZ NXTBUF IF YES, PROCESS IT @V60B6B8 01176000
  1086. B DEFEXIT LEAVE @V60B6B8 01177000
  1087. DEFMSG DC C'XXX DEFINED AS ' @V60B6B8 01178000
  1088. DEFMSGTP DC C'XXXXXX.' @V60B6B8 01179000
  1089. DEFMSGLN EQU *-DEFMSG @V60B6B8 01180000
  1090. DROP R3 DROP ADDRTABLE BASEREG @V60B6B8 01181000
  1091. EJECT 01182000
  1092. TABLINIT EQU * @V60B6B8 01183000
  1093. CLC FIRSTADR,LASTADDR ADDR1=ADDR2? @V60B6B8 01184000
  1094. BER R4 YES, RETURN @V60B6B8 01185000
  1095. GETTBL EQU * @V60B6B8 01186000
  1096. LA R0,TABLGET LENGTH OF TABLE @V60B6B8 01187000
  1097. CALL DMKFREE GET STORAGE @V60B6B8 01188000
  1098. ST R1,CURRBUFF THIS IS CURRENT BUFFER @V60B6B8 01189000
  1099. USING ADDRTABL,R1 ADDRESSABILITY @V60B6B8 01190000
  1100. XC TABLHDR(ADDRSLOT-TABLHDR),TABLHDR CLEAR HEADER @V60B6B8 01191000
  1101. LA R2,ADDRSLOT POINT TO FIRST SLOT @V60B6B8 01192000
  1102. ST R2,ENTFIRST SAVE AS FIRST ENTRY @V60B6B8 01193000
  1103. ST R2,ENTNEXT ALSO NEXT AVAILABLE @V60B6B8 01194000
  1104. LR R2,R0 NUMBER OF DOUBLEWORDS @V60B6B8 01195000
  1105. SLL R2,3 NUMBER OF BYTES @V60B6B8 01196000
  1106. LA R0,ENTLN GET ENTRY LENGTH @V60B6B8 01197000
  1107. SR R2,R0 POINT TO LAST ENTRY @V60B6B8 01198000
  1108. LA R2,0(R1,R2) IN TABLE @V60B6B8 01199000
  1109. ST R2,ENTLAST SAVE IT @V60B6B8 01200000
  1110. BR R4 RETURN @V60B6B8 01201000
  1111. DROP R1 @V60B6B8 01202000
  1112. SPACE 01203000
  1113. TABLADD DS 0H @VA11122 01204010
  1114. CLC FIRSTADR,LASTADDR RANGE SPECIFIED ? @VA11122 01204020
  1115. BER R5 YES RETURN - NO TABLE @VA11122 01204030
  1116. L R3,CURRBUFF GET CURRENT BUFFER @V60B6B8 01205000
  1117. USING ADDRTABL,R3 @V60B6B8 01206000
  1118. L R4,ENTNEXT GET NEXT AVAILABLE @V60B6B8 01207000
  1119. C R4,ENTLAST PAST END? @V60B6B8 01208000
  1120. BH GETBUFF YES, GET ANOTHER BUFFER @V60B6B8 01209000
  1121. STH R1,0(R4) SAVE ADDR @V60B6B8 01210000
  1122. LA R4,ENTLN(R4) POINT TO NEXT SLOT @V60B6B8 01211000
  1123. ST R4,ENTNEXT SAVE IT @V60B6B8 01212000
  1124. BR R5 RETURN @V60B6B8 01213000
  1125. GETBUFF EQU * @V60B6B8 01214000
  1126. LR R6,R1 SAVE R1 ACROSS CALL TO DMKFRE @V60B6B8 01215000
  1127. BAL R4,GETTBL GET ANOTHER BUFFER @V60B6B8 01216000
  1128. ST R1,BUFNEXT CHAIN NEW BUFFER TO LAST @V60B6B8 01217000
  1129. LR R1,R6 RESTORE R1 @V60B6B8 01218000
  1130. B TABLADD GO ADD DEVICE TO TABLE @V60B6B8 01219000
  1131. DROP R3 @V60B6B8 01220000
  1132. SERLN EQU 6 LENGTH OF VOLSER @V60B6B8 01221000
  1133. ************************************************************ 01222000
  1134. *** ERROR MESSAGES 01223000
  1135. ************************************************************ 01224000
  1136. DS 0H @V60B6B8 01225000
  1137. E1 EQU * @V60B6B8 01226000
  1138. LA R3,EMSG1LN MESSAGE LENGTH @V60B6B8 01227000
  1139. LA R2,EMSG1 POINTER TO MESSAGE @V60B6B8 01228000
  1140. B MSGWRT PUT OUT MESSAGE AND RETURN @V60B6B8 01229000
  1141. EMSG1 DC C'XXX NOT KNOWN.' @V60B6B8 01230000
  1142. EMSG1LN EQU *-EMSG1 @V60B6B8 01231000
  1143. ************************************************************ 01232000
  1144. DS 0H @V60B6B8 01233000
  1145. E2 EQU * @V60B6B8 01234000
  1146. LA R3,EMSG2LN MESSAGE LENGTH @V60B6B8 01235000
  1147. LA R2,EMSG2 POINTER TO MESSAGE @V60B6B8 01236000
  1148. B MSGWRT PUT OUT MESSAGE AND RETURN @V60B6B8 01237000
  1149. EMSG2 DC C'XXX NOT 3330V.' @V60B6B8 01238000
  1150. EMSG2LN EQU *-EMSG2 @V60B6B8 01239000
  1151. ************************************************************ 01240000
  1152. DS 0H @V60B6B8 01241000
  1153. E3 EQU * @V60B6B8 01242000
  1154. LA R3,EMSG3LN MESSAGE LENGTH @V60B6B8 01243000
  1155. LA R2,EMSG3 POINTER TO MESSAGE @V60B6B8 01244000
  1156. B MSGWRT PUT OUT MESSAGE AND RETURN @V60B6B8 01245000
  1157. EMSG3 DC C'XXX ALREADY ' @V60B6B8 01246000
  1158. EMSG3TP DC C'XXXXXXX.' @V60B6B8 01247000
  1159. EMSG3LN EQU *-EMSG3 @V60B6B8 01248000
  1160. ************************************************************ 01249000
  1161. DS 0H @V60B6B8 01250000
  1162. E4 EQU * @V60B6B8 01251000
  1163. LA R3,EMSG4LN MESSAGE LENGTH @V60B6B8 01252000
  1164. LA R2,EMSG4 POINTER TO MESSAGE @V60B6B8 01253000
  1165. B MSGWRT PUT OUT MESSAGE AND RETURN @V60B6B8 01254000
  1166. EMSG4 DC C'XXX IS CURRENTLY DEDICATED.' @V60B6B8 01255000
  1167. EMSG4LN EQU *-EMSG4 @V60B6B8 01256000
  1168. ************************************************************ 01257000
  1169. DS 0H @V60B6B8 01258000
  1170. E5 EQU * @V60B6B8 01259000
  1171. CALL DMKCVTBH GET ADDR IN PRINTABLE FORM @V60B6B8 01260000
  1172. STCM R1,7,EMSG5 PUT IN MESSAGE @V60B6B8 01261000
  1173. LA R0,EMSG5LN MESSAGE LENGTH @V60B6B8 01262000
  1174. LA R1,EMSG5 POINTER TO MESSAGE @V60B6B8 01263000
  1175. CALL DMKQCNWT,PARM=NORET PUT OUT MESSAGE @V60B6B8 01264000
  1176. BR R4 AND RETURN @V60B6B8 01265000
  1177. EMSG5 DC C'XXX IS OFFLINE. DEFINE WILL BE DONE.' @V60B6B8 01266000
  1178. EMSG5LN EQU *-EMSG5 @V60B6B8 01267000
  1179. ************************************************************ 01268000
  1180. DS 0H @V60B6B8 01269000
  1181. E6 EQU * @V60B6B8 01270000
  1182. LA R3,EMSG6LN MESSAGE LENGTH @V60B6B8 01271000
  1183. LA R2,EMSG6 POINTER TO MESSAGE @V60B6B8 01272000
  1184. B MSGWRT PUT OUT MESSAGE AND RETURN @V60B6B8 01273000
  1185. EMSG6 DC C'XXX IN USE BY SYSTEM.' @V60B6B8 01274000
  1186. EMSG6LN EQU *-EMSG6 @V60B6B8 01275000
  1187. ************************************************************ 01276000
  1188. DS 0H @V60B6B8 01277000
  1189. E7 EQU * @V60B6B8 01278000
  1190. LA R3,EMSG7LN MESSAGE LENGTH @V60B6B8 01279000
  1191. LA R2,EMSG7 POINTER TO MESSAGE @V60B6B8 01280000
  1192. B MSGWRT PUT OUT MESSAGE AND RETURN @V60B6B8 01281000
  1193. EMSG7 DC C'XXX HAS A MOUNTED VOL. MSS ID ' @V60B6B8 01282000
  1194. DC C'NOT AVAILABLE TO DEMOUNT IT.' @V60B6B8 01283000
  1195. EMSG7LN EQU *-EMSG7 @V60B6B8 01284000
  1196. ************************************************************ 01285000
  1197. DS 0H @V60B6B8 01286000
  1198. E8 EQU * @V60B6B8 01287000
  1199. LA R3,EMSG8LN MESSAGE LENGTH @V60B6B8 01288000
  1200. LA R2,EMSG8 POINTER TO MESSAGE @V60B6B8 01289000
  1201. B MSGWRT PUT OUT MESSAGE AND RETURN @V60B6B8 01290000
  1202. EMSG8 DC C'XXX - ERROR DEMOUNTING VOLUME.' @V60B6B8 01291000
  1203. EMSG8LN EQU *-EMSG8 @V60B6B8 01292000
  1204. ************************************************************ 01293000
  1205. DS 0H @V60B6B8 01294000
  1206. E9 EQU * @V60B6B8 01295000
  1207. LA R0,EMSG9LN LENGTH OF MESSAGE @V60B6B8 01296000
  1208. LA R1,EMSG9 POINT TO MESSAGE @V60B6B8 01297000
  1209. CALL DMKQCNWT,PARM=NORET PUT OUT MESSAGE @V60B6B8 01298000
  1210. B DEFEXIT LEAVE @V60B6B8 01299000
  1211. EMSG9 DC C'INVALID RANGE' @V60B6B8 01300000
  1212. EMSG9LN EQU *-EMSG9 LENGTH OF MESSAGE @V60B6B8 01301000
  1213. ************************************************************ 01302000
  1214. MSGWRT CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V60B6B8 01303000
  1215. STCM R1,7,0(R2) INSERT IN MESSAGE @V60B6B8 01304000
  1216. LR R0,R3 LENGTH OF MESSAGE @V60B6B8 01305000
  1217. LR R1,R2 ADDRESS OF MESSAGE @V60B6B8 01306000
  1218. CALL DMKQCNWT,PARM=NORET ISSUE MESSAGE @V60B6B8 01307000
  1219. CLC FIRSTADR,LASTADDR ONLY ONE PARAMATER? @V60B6B8 01308000
  1220. BE DEFEXIT YES, LEAVE NOW @V60B6B8 01309000
  1221. B CHKNXT GO CHECK NEXT ADDRESS @V60B6B8 01310000
  1222. ************************************************************ 01311000
  1223. EMSG153 EQU 153 MAX NUM OF DEVICES REACHED @VA13217 01311500
  1224. EMSG086A EQU * @V60B6B8 01312000
  1225. LA R0,L5 MSG INSERT LENGTH @V60B6B8 01313000
  1226. LA R1,ADD1PARM PARM TO BE INSERTED @V60B6B8 01314000
  1227. EMSG086 EQU * COMMON MSG 086 PROCESSING @V60B6B8 01315000
  1228. L R2,OPTION86 MSG OPTIONS @V60B6B8 01316000
  1229. B MSGIDBLD GO BUILD MSG ID @V60B6B8 01317000
  1230. EMSG086B EQU * @V60B6B8 01318000
  1231. LR R0,R2 PARAMETER LENGTH @V60B6B8 01319000
  1232. B EMSG086 PUT OUT MSG @V60B6B8 01320000
  1233. EMSG086F EQU * @V60B6B8 01321000
  1234. LA R0,L5 MSG INSERT LENGTH @V60B6B8 01322000
  1235. LA R1,ADD2PARM PARM TO BE INSERTED @V60B6B8 01323000
  1236. B EMSG086 PUT OUT MSG @V60B6B8 01324000
  1237. EMSG087 EQU * INVALID RDEVICE ADDR @V60B6B8 01325000
  1238. LH R1,RDEVADD BINARY DEVICE ADDR @V60B6B8 01326000
  1239. CALL DMKCVTBH CONVERT TO HEX @V60B6B8 01327000
  1240. STCM R1,7,SAVEWRK3 SAVE THE HEX VALUE @V60B6B8 01328000
  1241. LA R1,SAVEWRK3 MSG INSERT ADDR @V60B6B8 01329000
  1242. L R2,OPTION87 OPTIONS @V60B6B8 01330000
  1243. LA R0,L3 MSG INSERT LENGTH @V60B6B8 01331000
  1244. B MSGIDBLD BUILD MSG ID @V60B6B8 01332000
  1245. EJECT 01333000
  1246. * 01334000
  1247. * THE FOLLOWING CONSTANTS ARE USED IN THE PROGRAM 01335000
  1248. * 01336000
  1249. DS 0F ALIGN TO FULL WORD @V60B6B8 01337000
  1250. OPTION86 DC X'00',C'W',X'0056' OPTIONS FOR MSG 086 @V60B6B8 01338000
  1251. OPTION87 DC X'00',C'W',X'0057' OPTIONS FOR MSG 087 @V60B6B8 01339000
  1252. ADD1PARM DC CL5'ADDR1' INSERT FOR MSG 086 @V60B6B8 01340000
  1253. ADD2PARM DC CL5'ADDR2' INSERT FOR MSG 086 @V60B6B8 01341000
  1254. DASH EQU C'-' @V60B6B8 01342000
  1255. BLANK EQU C' ' @V60B6B8 01343000
  1256. N1 EQU 1 @V60B6B8 01344000
  1257. L3 EQU 3 @V60B6B8 01345000
  1258. L5 EQU 5 @V60B6B8 01346000
  1259. L7 EQU 7 @V60B6B8 01347000
  1260. TABLGET EQU 256 @V60B6B8 01348000
  1261. LTORG 01349000
  1262. EJECT 01350000
  1263. COPY SAVE 01351000
  1264. SPACE 01352000
  1265. * FIELDS DEFINED WITHIN THE SAVEAREA : 01353000
  1266. * 01354000
  1267. DEFLAGS EQU SAVEWRK1 INTERNAL FLAGS FOR 'DEFINE' 01355000
  1268. DEVADDR EQU SAVEWRK2 DEVICE ADDRESS FOR RE-DEFINE 01356000
  1269. * EQUATES DEFINING FIELDS WITHIN THE SAVE AREA 01357000
  1270. ************************************************************ 01358000
  1271. FIRSTADR EQU SAVEWRK2 @V60B6B8 01359000
  1272. LASTADDR EQU SAVEWRK3 @V60B6B8 01360000
  1273. CURRADDR EQU SAVEWRK4 @V60B6B8 01361000
  1274. FIRSTBUF EQU SAVEWRK5 @V60B6B8 01362000
  1275. CURRBUFF EQU SAVEWRK6 @V60B6B8 01363000
  1276. RDEVADR1 EQU SAVEWRK7 @V60B6B8 01364000
  1277. ADDR2 EQU SAVEWRK8 @V60B6B8 01365000
  1278. SPACE 01366000
  1279. ************************************************************ 01367000
  1280. EJECT 01368000
  1281. * 01369000
  1282. * THE FOLLOWING DSECT MAPS THE TABLE OF DEVICES 01370000
  1283. * SUCCESSFULLY DEFINED IN A DEFINE 01371000
  1284. * VIRTUAL OR DEFINE SYSVIRT COMMAND 01372000
  1285. * 01373000
  1286. ADDRTABL DSECT @V60B6B8 01374000
  1287. TABLHDR DS 0F HEADER PORTION @V60B6B8 01375000
  1288. ENTFIRST DS F POINTER TO FIRST ENTRY @V60B6B8 01376000
  1289. ENTLAST DS F POINTER TO LAST ENTRY @V60B6B8 01377000
  1290. ENTNEXT DS F NEXT AVAILABLE ENTRY @V60B6B8 01378000
  1291. BUFNEXT DS F POINTER TO NEXT BUFFER @V60B6B8 01379000
  1292. ADDRSLOT DS 0H TABLE ENTRIES @V60B6B8 01380000
  1293. ENTLN EQU 2 HALF-WORD SLOTS @V60B6B8 01381000
  1294. EJECT 01382000
  1295. COPY VMBLOK 01383000
  1296. COPY VBLOKS 01384000
  1297. COPY RBLOKS 01385000
  1298. COPY IOBLOKS 01386000
  1299. COPY UDIRECT 01387000
  1300. COPY DEVTYPES 01388000
  1301. COPY EQU 01389000
  1302. PSA 01390000
  1303. END DMKDEF 01391000