Table of Contents

DMKVSI Source

References

Source Listing

DMKVSI.ASSEMBLE.txt
  1. VSI TITLE 'DMKVSI (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SERIALIZATION OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKVSI 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO SIMULATE THE OPERATION OF PRIVILEGED I/O INSTRUCTIONS 00010000
  11. * ISSUED BY VIRTUAL MACHINES 00011000
  12. * 00012000
  13. * ATTRIBUTES - 00013000
  14. * 00014000
  15. * REENTRANT, RESIDENT, ENTERED VIA GOTO FROM DMKPRVLG FOR THE 00015000
  16. * SIMULATION OF AN INSTRUCTION 00016000
  17. * 00017000
  18. * ENTRY POINTS - 00018000
  19. * 00019000
  20. * DMKVSIEX - SIMULATE A SIO, TIO, HIO, TCH, OR CLCH 00020000
  21. * (HIO AND CLCH ARE PROCESSED BY DMKVSJ) 00020200
  22. * 00020400
  23. * DMKVSICH - RE-ENTRY FROM DMKVSJ TO PROCESS CLCH AS A TCH 00020600
  24. * 00021000
  25. * ENTRY CONDITIONS - 00022000
  26. * 00023000
  27. * FOR DMKVSIEX - 00024000
  28. * GPR11 = ADDRESS OF USER'S VMBLOK 00025000
  29. * GPR12 = DMKVSIEX BASE 00026000
  30. * THE FIELD VMINST IN THE USER'S VMBLOK CONTAINS THE I/O 00027000
  31. * INSTRUCTION TO BE SIMULATED 00028000
  32. * 00029000
  33. * NOTE THAT GPR13 DOES NOT POINT TO A SAVEAREA 00030000
  34. * 00030100
  35. * FOR DMKVSICH - 00030200
  36. * GPR12 = DMKVSIEX BASE 00030300
  37. * ALL OTHER REGISTERS CONTAIN THE SAME VALUES THAT THEY 00030400
  38. * HAD IN DMKVSJ 00030500
  39. * 00031000
  40. * EXIT CONDITIONS - 00032000
  41. * 00033000
  42. * FOR DMKVSIEX - NORMAL 00034000
  43. * THE CORRECT STATUS AND CONDITION CODES ARE REFLECTED TO THE 00035000
  44. * VIRTUAL MACHINE, AND, IF APPROPRIATE, THE I/O IS STARTED 00036000
  45. * 00037000
  46. * DMKVSI BRANCHES TO DMKVSJ FOR SUBROUTINES AND FOR 00038000
  47. * EXIT PROCESSING AND HIO AND CLCH SIMULATION 00038200
  48. * 00038400
  49. * 00038600
  50. * 00039000
  51. * CALLS TO OTHER ROUTINES - 00040000
  52. * 00041000
  53. * DMKCCWTR - TO TRANSLATE THE USER'S CHANNEL PROGRAM 00043000
  54. * DMKFREE - TO OBTAIN FREE STORAGE FOR IOBLOKS 00044000
  55. * DMKFRET - TO RETURN USED IOBLOKS TO FREE STORAGE 00045000
  56. * DMKIOSQV - TO SCHEDULE THE VIRTUAL OPERATION 00046000
  57. * DMKVCAST - TO SIMULATE A START I/O TO A VIRTUAL CTCA 00047000
  58. * DMKVCATS - TO SIMULATE A TEST I/O TO A VIRTUAL CTCA 00048000
  59. * DMKSTKIO - TO STACK AN INTERRUPT DUE TO THE COMPLETION OF A 00050000
  60. * VIRTUAL ENABLE CAUSED BY A HIO 00051000
  61. * DMKDSPCH - EXIT VIA GOTO AFTER I/O IS SCHEDULED BY DMKIOSQV 00052000
  62. * DMKVCNEX - EXIT VIA GOTO TO SIMULATE VIRTUAL 1052 CONSOLE 00056000
  63. * DMKVSCVR - TO VERIFY THAT THE NOTRANS OPTION IS VALID 00056100
  64. * DMKVSPTO - TO SIMULATE A TIO TO A UNIT RECORD INPUT DEVICE 00057000
  65. * DMKSCHDL - TO DROP A USER FROM Q 00058000
  66. * DMKVIOC1 - TO REFLECT CONDITION CODE 1 CSW STATUS 00059000
  67. * DMKVIOIN - IOB INTERRUPT RETURN ADDRESS (IOBIRA) 00060000
  68. * DMKVSJEX - TO HANDLE HIO AND CLCH AND SUBROUTINES 00061000
  69. * 00062000
  70. * EXTERNAL REFERENCES - 00063000
  71. * 00064000
  72. * NONE 00065000
  73. * 00066000
  74. * TABLES / WORKAREAS - 00067000
  75. * 00068000
  76. * VCHBLOK,VCUBLOK, AND VDEVBLOK ARE REFERENCED AND UPDATED 00069000
  77. * 00070000
  78. * REGISTER USAGE - 00071000
  79. * 00072000
  80. * GPR0 = CONDITION CODE RETURNED FROM DMKSCNVU 00073000
  81. * GPR1 = SCRATCH - OR USED FOR DEDICATED CHANNEL SUPPORT 00074000
  82. * GPR2 = SCRATCH - OR USED FOR DEDICATED CHANNEL SUPPORT 00075000
  83. * GPR3 = ADDRESS OF VBLOK THAT CONTAINS SUBCHANNEL STATUS 00076000
  84. * GPR4 = CSW STATUS TO BE STORED 00077000
  85. * GPR5 = INTERNAL SUBROUTINE LINKAGE 00078000
  86. * GPR6 = VCHBLOK BASE 00079000
  87. * GPR7 = VCUBLOK BASE 00080000
  88. * GPR8 = VDEVBLOK BASE 00081000
  89. * GPR9 = VIRTUAL DEVICE ADDRESS 00082000
  90. * GPR10 = IOBLOK BASE 00083000
  91. * GPR11 = VMBLOK BASE 00084000
  92. * GPR12 = DMKVSI BASE 00085000
  93. * GPR13 NOT USED 00086000
  94. * GPR14 = EXTERNAL LINKAGE 00087000
  95. * GPR15 = EXTERNAL LINKAGE 00088000
  96. EJECT 00089000
  97. * 00090000
  98. * NOTES - 00091000
  99. * 00092000
  100. * OPERATION - 00093000
  101. * 1. SET CONDITION CODE IN VIRTUAL PSW TO ZERO 00094000
  102. * 2. CALCULATE VIRTUAL UNIT ADDRESS USING REGISTER AND DISPLACE- 00095000
  103. * MENT VALUES PASSED BY PRIVILEGED IN VMINST 00096000
  104. * 3. CALL DMKSCNVU TO LOCATE VCHBLOK, VCUBLOK, AND VDEVBLOK, 00097000
  105. * AND SAVE THE RESULTING CONDITION IN GPR0 00098000
  106. * 4. BRANCH TO HANDLE SIO, TIO, AND TCH, DESCRIBED 00099000
  107. * IN SECTIONS A-C RESPECTIVELY. 00099500
  108. * 5. BRANCH TO DMKVSJ FOR SUBROUTINES AND EXIT PROCESSING 00100000
  109. * AND TO SIMULATE HIO AND CLCH 00100500
  110. *. 00101000
  111. EJECT 00102000
  112. COPY OPTIONS 00103000
  113. COPY LOCAL OPTIONS 00104000
  114. SPACE 2 00105000
  115. DMKVSI CSECT 00106000
  116. ENTRY DMKVSIEX,DMKVSICT,DMKVSICW 00107000
  117. ENTRY DMKVSISI COUNT OF SIO (9C00) INSTRUCTIONS @V2B2638 00108000
  118. ENTRY DMKVSISF COUNT OF SIOF (9CX1) INSTRUCTIONS@V2B2638 00109000
  119. ENTRY DMKVSITI COUNT OF TIO (9DX0) INSTRUCTIONS @V2B2638 00110000
  120. ENTRY DMKVSICI COUNT OF CLRIO (9DX1) @V2B2638 00111000
  121. * INSTRUCTIONS 00112000
  122. ENTRY DMKVSITC COUNT OF TCH (9FXX) INSTRUCTIONS @V2B2638 00115000
  123. ENTRY DMKVSIVS INTERNAL SYM. 'VSIO'(FOR EVMA) @V386198 00116000
  124. ENTRY DMKVSICH FROM VSJ TO PROC CLCH AS A TCH @VA14370 00116100
  125. EXTRN DMKVIOMK @VA12128 00117000
  126. EXTRN DMKVIOIN 00118000
  127. EXTRN DMKVIOC1 00119000
  128. EXTRN DMKSCHDL 00120000
  129. EXTRN DMKCCWTR 00121000
  130. EXTRN DMKIOSQV 00122000
  131. EXTRN DMKSTKIO 00123000
  132. EXTRN DMKSCNVU 00124000
  133. EXTRN DMKVCAST,DMKVCATS @VA12128 00125000
  134. EXTRN DMKVSPEX,DMKVSPTO @VA03503 00126000
  135. EXTRN DMKVCNEX 00127000
  136. EXTRN DMKVSJEX @VA12128 00128000
  137. EXTRN DMKDSPCH @VA12128 00128500
  138. AIF (NOT &VIRREAL).NOVR1 **AIF** 00129100
  139. EXTRN DMKVSCVR @VA09586 00129200
  140. .NOVR1 ANOP 00129300
  141. AIF (NOT &TRACE(6)).TRA1 **AIF** 00130000
  142. EXTRN DMKTRDSI @V4M0240 00131000
  143. .TRA1 ANOP 00132000
  144. AIF (NOT &AP).LOKSY4 00133000
  145. EXTRN DMKLOKSY,DMKDSPRU @VA08305 00134000
  146. .LOKSY4 ANOP 00135000
  147. EXTRN DMKSTKDE,DMKSTKOP,DMKSTKMP @VA08305 00136000
  148. SPACE 2 00137000
  149. USING PSA,R0 00138000
  150. USING VCHBLOK,R6 00139000
  151. EXTRN DMKDSPA @V408246 00140000
  152. EXTRN DMKDSPRQ @V408246 00141000
  153. USING VCUBLOK,R7 00142000
  154. USING VDEVBLOK,R8 00143000
  155. USING IOBLOK,R10 00144000
  156. USING VMBLOK,R11 00145000
  157. USING DMKVSIEX,R12 00146000
  158. EJECT 00147000
  159. *. 00148000
  160. *********************************************************************** 00149000
  161. * 00150000
  162. * 00151000
  163. * EXPANDED VMA PARTIAL EMULATION FUNCTION FOR SIO AND SIOF: 00152000
  164. * 00153000
  165. * INVOKED BY THESE INSTRUCTIONS WHEN EXECUTED IN PROBLEM STATE 00154000
  166. * WITH CONTROL REGISTER 6 BYTE 0 SET TO B'10XXXX1X' (X = 0 OR 1) 00155000
  167. * AND BIT 3 OF THE ASSIST CONTROLS FULLWORD (OFFSET X'14' 00156000
  168. * INTO THE MICBLOK) SET TO 1. 00157000
  169. * 00158000
  170. * REGISTER INPUT: 00159000
  171. * CR 6 = BITS 0-7 ARE THE ASSIST FLAGS; BITS 8-28 ADDRESS 00160000
  172. * THE MICBLOK (THE VIRTUAL MACHINE POINTER LIST) 00161000
  173. * 00162000
  174. * SYSTEM DATA AREAS REFERENCED (BY MODULE WHERE APPLICABLE): 00163000
  175. * DMKPRV - 'DMKPRVMA' (EQUALS 'VMALIST') 00164000
  176. * DMKPSA - 'AVMALIST', 'PRNPSW', CPCREGS, TIMER FIELDS, 00165000
  177. * TRACING INFORMATION, 'CPSTATUS', 'PROPSW' 00166000
  178. * MICBLOK, VCHBLOK, VCUBLOK, VDEVBLOK, VMBLOK 00167000
  179. * 00168000
  180. * 00169000
  181. * 00170000
  182. * EXIT TO 'DMKVSIVS' (PATH AVAILABLE AND NO INTERRUPTS PENDING) 00171000
  183. * NOTE: THE CONTENT OF ANY UNSPECIFIED GPR IS UNPREDICTABLE 00172000
  184. * REGISTER OUTPUT: 00173000
  185. * CR 0 = VALUE FROM 'CPCREG0' 00174000
  186. * CR 8 = VALUE FROM 'CPCREG8' 00175000
  187. * GPR 3 = ADDRESS OF EITHER VCHBLOK, VCUBLOK, OR VDEVBLOK 00176000
  188. * GPR 4 = ZERO 00177000
  189. * GPR 6 = ADDRESS OF THE VCHBLOK 00178000
  190. * GPR 7 = ADDRESS OF THE VCUBLOK 00179000
  191. * GPR 8 = ADDRESS OF THE VDEVBLOK 00180000
  192. * GPR 11 = X'A8' LESS THAN 'MICVPSW' (ADDRESS OF VMBLOK) 00181000
  193. * GPR 12 = ADDRESS OF 'DMKVSIEX' 00182000
  194. * GPR 13 = VIRTUAL DEVICE ADDRESS (RIGHT JUSTIFIED) 00183000
  195. * 00184000
  196. * EXIT TO 'DMKVSIEX' (COULDN'T FIND AN AVAILABLE PATH TO DEVICE) 00185000
  197. * REGISTER OUTPUT: 00186000
  198. * CR 0,8 AND GPR 11,12 SAME AS FOR EXIT TO 'DMKVSIVS' 00187000
  199. * 00188000
  200. *********************************************************************** 00189000
  201. *. 00190000
  202. SPACE 00191000
  203. DMKVSIEX DS 0D %V386198 00192000
  204. NI VMPSW+2,X'FF'-X'30' SET CC = 0 %V386198 00193000
  205. NI VMPSW+4,X'FF'-X'30' SET CC = 0 %V386198 00194000
  206. NI VMDSTAT,X'FF'-VMTIO REMOVE TIO-BUSY FLAG %V386198 00195000
  207. SR R4,R4 SET CSW-STORE SW TO STATUS ONLY %V386198 00196000
  208. CLI VMINST,X'83' DIAG CONSOLE WRITE ?? %V200730 00197000
  209. BE DIAGDEV YES, GO FIND CNTROL BLOCKS %V2B2638 00198000
  210. L R1,VMINST I/O INSTRUCTION BEING EXECUTED %VA01382 00199000
  211. N R1,F4095 KEEP ONLY DISPLACEMENT %V386198 00200000
  212. IC R8,VMINST+2 PICK UP REGISTER NUMBER %V386198 00201000
  213. N R8,F240 KEEP ONLY REGISTER NUMBER %V386198 00202000
  214. BZ DIAGDEV NO REGISTER SPECIFIED %VA01382 00203000
  215. SRL R8,2 GET REGISTER NUMBER X 4 %V386198 00204000
  216. AH R1,VMGPRS+2(R8) COMPUTE DEVICE ADDRESS %V386198 00205000
  217. DIAGDEV LR R13,R1 SAVE DEV ADDRESS %V200730 00206000
  218. CALL DMKSCNVU GO GET VCH, VCU, AND VDEV BLOKS %V386198 00207000
  219. BALR R0,0 PRESERVE CONDITION CODE %V386198 00208000
  220. SPACE 2 00209000
  221. BAL R9,GETLOCK GET SYSTEM LOCK @VA09728 00209100
  222. USING *,R9 NEW ADDRESSABILITY TO HERE @VA12128 00209200
  223. L R12,ADMKVSI RESTORE BASE REG @VA12128 00209300
  224. DROP R9 IT WAS ONLY TEMPORARY @VA12128 00209400
  225. USING DMKVSI,R12 STANDARD ADDRESSABILITY @VA12128 00209500
  226. LA R2,X'30' COND CODE IF DEVICE NOT FOUND %VA01527 00210000
  227. LA R1,1 INCREMENT VALUE %V2B2638 00211000
  228. AL R1,DMKVSICT ADD CALLS TO DMKVSIEX %V2B2638 00212000
  229. ST R1,DMKVSICT AND SAVE %V2B2638 00213000
  230. LA R1,1 INCREMENT VALUE FOR LATER %V2B2638 00214000
  231. SPACE 00215000
  232. CLI VMINST,X'9D' SIO OR TIO ? %V386198 00216000
  233. BL VIOSIO START I/O %V386198 00217000
  234. BE VIOTIO TEST I/O 00218000
  235. CLC VMINST(2),TCHOPER HIO OR TCH? @VMD0117 00219000
  236. BL VIOHIO HALT I/O 00220000
  237. BE VIOTCH TEST CHANNEL @VMD0117 00221000
  238. BH VIOCLCH CLEAR CHANNEL @VMD0117 00222000
  239. EJECT 00223000
  240. *. 00224000
  241. * A. VIRTUAL SIO SIMULATION - 00225000
  242. * 1. IF ALL BLOCKS WERE NOT FOUND, SET VIRTUAL CONDITION 00226000
  243. * CODE 3 AND EXIT. 00227000
  244. * 3. IF THE ADDRESSED SUBCHANNEL IS BUSY OR HAS CE PENDING, 00228000
  245. * SET VIRTUAL CONDITION CODE 2 AND EXIT. 00229000
  246. * 4. IF THE ADDRESSED CU OR DEVICE IS BUSY OR HAS STATUS 00230000
  247. * PENDING, OR, FOR MINIDISKS, IF THE DEVICE IS RESERVED 00231000
  248. * BY ANOTHER USER, STORE STATUS, SET VIRTUAL CC 1, AND EXIT. 00232000
  249. * 5. IF THE PATH TO THE DEVICE IS FREE, TRANS FOR USER'S 00233000
  250. * PAGE 0, AND LOAD HIS VIRTUAL CAW; THEN BASED ON THE 00234000
  251. * VIRTUAL DEVICE TYPE, PROCESS AS FOLLOWS- 00235000
  252. * 6. -IF THE DEVICE IS A TERMINAL, GOTO DMKVCNEX TO SIMULATE 00236000
  253. * THE OPERATION. 00237000
  254. * -IF THE DEVICE IS NON-DEDICATED U/R, GOTO DMKVSPEX 00238000
  255. * TO SIMULATE THE OPERATION. 00239000
  256. * -OTHERWISE, CONSTRUCT AN IOBLOK, STORE THE DEVICE 00240000
  257. * ADDRESS AND CAW, AND CALL DMKCCWTR. 00241000
  258. * 7. IF THE OPERATION IS AN ENABLE TO A VIRTUAL 270X LINE, 00242000
  259. * LET THE IOBLOK STAY ON THE VDEVBLOK FOR THE 'DIAL' CMD. 00243000
  260. * 8. IF THE OPERATION IS DIRECTED AT A VIRTUAL CTCA, CALL 00244000
  261. * DMKVCAST TO SIMULATE THE DEVICE OPERATIONS. 00245000
  262. * 9. OTHERWISE, PLACE THE USER IN IOWAIT AND CALL DMKIOSQV 00246000
  263. * TO SCHEDULE THE REAL I/O OPERATION. 00247000
  264. * 10. EXIT VIA GOTO DMKDSPCH. 00248000
  265. *. 00249000
  266. SPACE 00250000
  267. VIOSIO EQU * %V386198 00251000
  268. CLI VMINST,X'9C' IS IT AN SIO? %V2B2638 00252000
  269. BNE VIOSIO1 NOPE, MUST BE DIAG. %V2B2638 00253000
  270. TM VMINST+1,X'01' IS IT AN SIOF? %V2B2638 00254000
  271. BO SIOF YUP, BR. %V2B2638 00255000
  272. AL R1,DMKVSISI ADD SIO COUNT %V2B2638 00256000
  273. ST R1,DMKVSISI AND RE-STORE %V2B2638 00257000
  274. B VIOSIO1 CONTINUE %V2B2638 00258000
  275. SPACE 00259000
  276. SIOF AL R1,DMKVSISF ADD SIOF COUNT TO INCREMENT %V2B2638 00260000
  277. ST R1,DMKVSISF AND RE-STORE %V2B2638 00261000
  278. SPACE 00262000
  279. VIOSIO1 EQU * HERE WHEN COUNTS ARE BUMPED %V2B2638 00263000
  280. SPM R0 RESTORE COND. CODE FROM DMKSCNVU %V386198 00264000
  281. BNZ VIOEXIT EXIT WITH CC = 3 - DEV NOT FOUND %VA01527 00265000
  282. C R11,AVMREAL V=R USER? @VA08664 00266000
  283. BNE NEEDLOCK NO, MUST HAVE LOCK @VA09201 00266300
  284. CLC VMINST(2),=X'9C01' IS THIS SIOF ? @VA09201 00266600
  285. BNE NEEDLOCK NO, NEED LOCK @VA09201 00266900
  286. TM VDEVSTAT,VDEVDED DEDICATED DEVICE ? @VA09201 00267200
  287. BO VIOSIO2 YES, BYPASS LOCKING @VA09201 00267500
  288. NEEDLOCK EQU * @VA09201 00267800
  289. BAL R9,GETLOCK NO, GO GET THE SYSTEM LOCK @VA08664 00268000
  290. USING *,R9 NEW ADDRESSABILITY TO HERE @VA12128 00268200
  291. L R12,ADMKVSI RESTORE BASE REG @VA12128 00268400
  292. DROP R9 IT WAS ONLY TEMPORARY @VA12128 00268600
  293. USING DMKVSI,R12 STANDARD ADDRESSABILITY @VA12128 00268800
  294. VIOSIO2 EQU * @VA08664 00269000
  295. LR R10,R5 SAVE CCW ADDRESS FROM HVC @VA08664 00270000
  296. BAL R9,CHSCAN IS CHANNEL BUSY OR CE PENDING ? %V386198 00272000
  297. LA R2,X'20' CC IF NOT BUSY, CE PENDING %V386198 00273000
  298. BNZ VIOEXIT CE PENDING - SET CC=2 AND EXIT %V386198 00274000
  299. SPACE 00275000
  300. BAL R9,CUSCAN CHECK IF CU BUSY OR CUE PENDING %V386198 00276000
  301. BO SIOCUE NOT BUSY, CUE PENDING %V386198 00277000
  302. SPACE 00278000
  303. BAL R9,DEVSCAN IS DEVICE BUSY OR INT PENDING ? %V386198 00279000
  304. EJECT 00283000
  305. * 00284000
  306. * RETURN IS HERE IF PATH TO DEVICE IS NOT BUSY AND 00285000
  307. * NO INTERRUPTS ARE PENDING 00286000
  308. * 00287000
  309. CLI VMINST,X'83' DIAG SIO TO CONSOLE ?? %V200730 00288000
  310. BNE VSIO NO, REGULAR SIO %V200730 00289000
  311. LR R2,R10 GET CCW ADDRESS @VA08305 00290000
  312. B TSTDED1 TEST FOR DED CHAN @V200730 00291000
  313. SPACE 00292000
  314. VSIO DS 0H @V200730 00293000
  315. DMKVSIVS EQU VSIO FOR USE AS ENTRY IN EVMA LIST @V386198 00294000
  316. LA R1,CAW LOGICAL ADDRESS OF USER'S CAW 00295000
  317. SL R6,VMCHSTRT CHAN. DISP. @VA01770 00296000
  318. SL R7,VMCUSTRT C.U. DISP. @VA01770 00297000
  319. SL R8,VMDVSTRT DEV. DISP @VA01770 00298000
  320. TRANS 2,1,OPT=(BRING,DEFER) GET USER'S PAGE 0 00299000
  321. AL R6,VMCHSTRT RESTORE VCHANBLOKADDR @VA01770 00300000
  322. AL R7,VMCUSTRT RESTORE CU ADDR @VA01770 00301000
  323. AL R8,VMDVSTRT RESTORE DEV. ADDR @VA01770 00302000
  324. BAL R9,LOADER3 GO RECALC ADDR IN R3 @VA13211 00302500
  325. L R2,0(,R2) GET LOGICAL ADDRESS OF USER'S 1ST 00303000
  326. * CCW 00304000
  327. TSTDED1 DS 0H @V200730 00305000
  328. TM VDEVSTAT,VDEVDED DO WE HAVE A DEDICATED DEVICE 00306000
  329. BO GETIOB YES, GO PERFORM REAL I/O 00307000
  330. SPACE 1 00309000
  331. TM VDEVTYPC,CLASTERM IS IT A TERMINAL DEVICE ? 00310000
  332. BZ TESTUR NO -- CHECK FOR UNIT RECORD 00311000
  333. CLI VDEVTYPE,TYP3210 IS IT A CONSOLE ?? 00312000
  334. BNE GETIOB NO - MUST BE ENABLE TO NON-DEDICATED LINE 00313000
  335. GOTO DMKVCNEX DMKVCNEX HANDLES USER CONSOLE IO 00314000
  336. SPACE 2 00315000
  337. TESTUR TM VDEVTYPC,CLASURI+CLASURO IS IT A UNIT RECORD DEVICE ?? 00316000
  338. BZ GETIOB NO -- IO DONE VIA DMKCCWTR 00317000
  339. GOTO DMKVSPEX DMKVSPEX HANDLES SPOOLED UNIT 00318000
  340. * RECORD IO 00319000
  341. EJECT 00320000
  342. GETIOB EQU * 00321000
  343. OI VDEVSTAT,VDEVBUSY+VDEVCHBS FLAG DEVICE AND CHANNEL 00322000
  344. OI VCHSTAT-VCHBLOK(R3),VCHBUSY MARK THE SUBCHANNEL BUSY 00323000
  345. OI VCUSTAT,VCUBUSY CONTROL UNIT IS BUSY @VA01700 00324000
  346. TM VCHTYPE,VCHBMX BMX CHANNEL ? @VA03150 00325000
  347. BNO IOBFREE NO - DON'T FLAG C U @VA03150 00326000
  348. OI VCUSTAT,VCUACTV FLAG CONTROL UNIT ACTIVE @VA03150 00327000
  349. TM VDEVTYPC,CLASTERM IS THIS A TERMINAL DEVICE? @VA03150 00328000
  350. BNO IOBFREE NO...CONTROL UNIT WILL BE ACTIVE @VA03150 00329000
  351. NI VCUSTAT,255-VCUACTV RESET ACTIVE FLAG @VA03150 00330000
  352. SPACE 00331000
  353. IOBFREE LA R0,IOBSIZE GET CORE 00332000
  354. CALL DMKFREE FOR AN IOBLOK 00333000
  355. LR R10,R1 USE GPR 10 FOR ADDRESSABILITY 00334000
  356. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR THE IOBLOK 00335000
  357. ST R10,IOBLINK IOBLOK POINTS TO ITSELF (= ORIGINAL COPY) 00336000
  358. * 00337000
  359. * 00338000
  360. OI IOBFLAG,IOBRELCU RELEASE CU @VA01700 00339000
  361. SPACE 00340000
  362. STH R13,IOBVADD SAVE VIRTUAL DEVICE ADDRESS 00341000
  363. L R1,=A(DMKVIOIN) 00342000
  364. ST R1,IOBIRA AND STORE IN IOBLOK 00343000
  365. ST R2,IOBCAW SAVE VIRTUAL ADDRESS OF FIRST CCW 00344000
  366. ST R10,VDEVIOB SAVE ADDRESS OF IOBLOK 00345000
  367. AIF (NOT &VIRREAL).NOVR3 **AIF** 00346000
  368. C R11,AVMREAL IS REQUEST FOR VIRT=REAL USER 00347000
  369. BNE CCWTR NO, TRANSLATE CCW'S @VA09201 00348100
  370. TM VMPSTAT,VMNOTRAN DOES USER WANT CCW TRANSLATION 00349000
  371. BZ CCWTR2 YES, CALL DMKCCW 00350000
  372. CALL DMKVSCVR SEE IF TRANSLATION IS NECESSARY @VA09586 00351000
  373. LTR R15,R15 CHECK RETURN CODE @VA09586 00352000
  374. BZ NOCCWTR2 NO TRANSLATION IS NECESSARY @VA09586 00353000
  375. .NOVR3 ANOP 00354000
  376. EJECT 00442000
  377. CCWTR2 BAL R9,GETLOCK MUST HAVE THE SYSTEM LOCK @VA08305 00443000
  378. USING *,R9 NEW ADDRESSABILITY TO HERE @VA12128 00443100
  379. L R12,ADMKVSI RESTORE BASE REG @VA12128 00443200
  380. DROP R9 IT WAS ONLY TEMPORARY @VA12128 00443300
  381. USING DMKVSI,R12 STANDARD ADDRESSABILITY @VA12128 00443400
  382. CCWTR EQU * @VA09201 00443500
  383. ST R11,IOBMISC FLAG IOB AS PROCESSED BY CCWTRANS@VA08305 00444000
  384. LA R9,0(,R2) IOBCAW (LESS HIGH-ORDER BYTE) INTO R9, 00445000
  385. SL R6,VMCHSTRT MAKE R6 RELATIVE, CHAN. DISP @VA03811 00446000
  386. SL R7,VMCUSTRT MAKE R7 RELATIVE, C.U. DISP @VA03811 00447000
  387. SL R8,VMDVSTRT AND MAKE R8 "RELATIVE" FOR DMKCCW 00448000
  388. L R1,DMKVSICW GET TOTAL CCWTRANS CALL COUNT 00449000
  389. AL R1,F1 BUMP 00450000
  390. ST R1,DMKVSICW AND SAVE 00451000
  391. CALL DMKCCWTR GO TRANSLATE THE CHANNEL PROGRAM 00452000
  392. AL R6,VMCHSTRT RESTORE VCHANNEL BLOCK ADDRESS @VA03811 00453000
  393. AL R7,VMCUSTRT RESTORE VCONTROL UNIT ADDRESS @VA03811 00454000
  394. AL R8,VMDVSTRT NOW LET R8 = A(VDEVBLOK) AGAIN 00455000
  395. BAL R9,LOADER3 GO RECALC ADDR IN R3 @VA13211 00455500
  396. TM IOBSPEC2,IOBCLN CLEANUP JOB FOR CCWTR ?? @VA07728 00456000
  397. BZ NOCCWTR2 NOPE, GOOD, BR. @V407438 00457000
  398. * NOTE: R3 STILL POINTS TO AFFECTED SUBCHANNEL, R4 = 0 FOR STORECSW 00458000
  399. LA R0,IOBSIZE SIZE OF THE IOB @V407438 00459000
  400. LR R1,R10 IOB ADDRESS TO R1 @V407438 00460000
  401. CALL DMKFRET THROW IT AWAY @V407438 00461000
  402. SLR R10,R10 NO MORE IOB @V407438 00462000
  403. NI VDEVSTAT,X'FF'-(VDEVBUSY+VDEVCHBS) UNFLAG DEVICE@V407438 00463000
  404. NI VCHSTAT-VCHBLOK(R3),X'FF'-VCHBUSY UNFLAG SUBCHAN@V407438 00464000
  405. NI VCUSTAT,X'FF'-VCUBUSY UNFLAG CTL UNIT @V407438 00465000
  406. TM VCHTYPE,VCHBMX BMX CHANNEL? @V407438 00466000
  407. BZ REFBUSY NOPE, BR. @V407438 00467000
  408. NI VCUSTAT,X'FF'-VCUACTV UNFLAG CU @V407438 00468000
  409. B REFBUSY NOW GO REFLECT BUSY @V407438 00469000
  410. SPACE 00470000
  411. NOCCWTR2 DS 0H CONNECTOR 00471000
  412. TM IOBFLAG,IOBRELCU C.U. RELEASED AT INIT. ?? @VA06371 00472000
  413. BZ NORSTCUR NO, FLAGS ALL SET @VA06371 00473000
  414. NI IOBFLAG,X'FF'-IOBRELCU RESET C.U. REL. FLAG @VA06371 00474000
  415. NI VCUSTAT,255-VCUBUSY TURN OFF CU BUSY @VA08687 00475000
  416. NORSTCUR EQU * @VA06371 00476000
  417. LTR R1,R1 SHOULD DMKIOSQV BE CALLED?? 00477000
  418. BNZ VIOWAIT YES, GO START REAL I/O 00478000
  419. ST R11,IOBUSER OTHERWISE, SET UP OWNER OF I/O 00479000
  420. TM IOBSTAT,IOBCC3 CC = 0 ? @VA04501 00480000
  421. BNZ VIOGODSP NO..DO NOT RUN OR (TRACE) @VA04501 00481000
  422. B VIOEXITX AND LEAVE @VA08687 00482000
  423. EJECT 00483000
  424. VIOWAIT EQU * 00484000
  425. OI VMRSTAT,VMIOWAIT PLACE USER IN IOWAIT 00485000
  426. LA R15,1 * ADD 1 TO THE VIRTUAL START I/O COUNT 00486000
  427. AL R15,VMIOCNT * FOR ACCOUNTING. 00487000
  428. ST R15,VMIOCNT * 00488000
  429. TM VDEVSTAT,VDEVDED DEDICATE DEVICE? @VA11570 00488100
  430. BO VSIGTLOK YES, CHECK FOR ATTN INT. @VA11570 00488200
  431. CLI VDEVTYPC,CLASSPEC SPECIAL DEVICE? @VA04467 00489000
  432. BNE VIOQREAL NO... @VA04467 00490000
  433. VSIGTLOK DS 0H @VA11570 00490100
  434. BAL R9,GETLOCK MUST HAVE THE LOCK @VA08305 00491000
  435. USING *,R9 NEW ADDRESSABILITY TO HERE @VA12128 00491020
  436. L R12,ADMKVSI RESTORE BASE REG @VA12128 00491040
  437. DROP R9 IT WAS ONLY TEMPORARY @VA12128 00491060
  438. USING DMKVSI,R12 STANDARD ADDRESSABILITY @VA12128 00491080
  439. TM VDEVSTAT,VDEVDED DEDICATE DEVICE? @VA11570 00491100
  440. BO VIOKNCP YES, CHECK FOR ATTN INT. @VA11570 00491200
  441. CLI VDEVTYPE,TYPCTCA IS IT A VIRTUAL CTCA? @VA04467 00492000
  442. BNE VIOKNCP NO...TEST FOR 3704/5 @VA04467 00493000
  443. TM VDEVSTAT,VDEVDED DEDICATED CHANNEL-TO-CHANNEL ? 00494000
  444. BO VIOQREAL YES - START REAL I/O OPERATION 00495000
  445. CALL DMKVCAST START I/O TO VIRTUAL CTCA @VA01092 00496000
  446. B VIOEXITY DO NOT SET CHANNEL ACTIVE @VA01092 00497000
  447. EJECT 00508000
  448. VIOKNCP EQU * @VA04467 00509000
  449. TM VDEVSTAT,VDEVDED DEDICATE DEVICE? @VA11570 00509100
  450. BO VSIATDED YES, GO AHEAD FOR CHECK ATTN. @VA11570 00509200
  451. CLI VDEVTYPE,TYP3705 IS THIS A 3704/5 CTLR? @VA04467 00510000
  452. BNE VIOQREAL NO...NOTHING SPECIAL @VA04467 00511000
  453. VSIATDED DS 0H @VA11570 00511100
  454. TM VDEVINTS,ATTN DID WE HIT THE TIMING WINDOW? @VA04467 00512000
  455. BZ VIOQREAL NO...CONTINUE AS PLANNED @VA04467 00513000
  456. MVI IOBCSW+4,BUSY+ATTN BUSY FROM THE START I/O @VA04467 00514000
  457. NI VDEVINTS,X'FF'-ATTN RESET PENDING INTERRUPT @VA04467 00515000
  458. GOTO DMKVIOC1 GO SET CC = 1 AND STORE CSW @VA05037 00516000
  459. SPACE 00517000
  460. VIOQREAL EQU * @VA08629 00517050
  461. TM IOBSPEC3,IOBSENSE SPECIAL 2250/3250 SITUATION @VA08629 00517100
  462. * OF STANDALONE SENSE WITHOUT EXECUTING SENSE ON REAL HARDWARE 00517150
  463. BZ VIOREAL2 @VA08629 00517200
  464. L R15,IOBCAW ADDRESS OF CHANNEL PROGRAM @VA08629 00517250
  465. LH R14,6(,R15) GET SENSE LENGTH @VA08629 00517300
  466. LH R1,IOBCSW+6 CALCULATE RIGHT RESIDUAL COUNT @VA08629 00517350
  467. SLR R14,R1 ... @VA08629 00517400
  468. STH R14,IOBCSW+6 STORE IN IOBLOK FOR LATER @VA08629 00517450
  469. LA R14,(256*(CE+DE)) PREPARE TO REFLECT CC=0 AND @VA08629 00517500
  470. * CE+DE TO 2250/3250 WITHOUT EXECUTING SENSE ON HARDWARE 00517550
  471. STH R14,IOBCSW+4 NOW DEVICE STATUS @VA08629 00517600
  472. LA R15,8(,R15) CSW POINTS TO 8 PAST SENSE @VA08629 00517650
  473. ST R15,IOBCSW ... @VA08629 00517700
  474. ST R11,IOBUSER STORE VMBLOK ADDRESS IN IOBLOK @VA08629 00517750
  475. CALL DMKSTKIO THIS IOBLOK BEFORE PENDING I/O @VA08629 00517800
  476. NI VMRSTAT,X'FF'-VMIOWAIT TAKE USER OUT OF IOWAIT @VA08629 00517850
  477. B SKIPIOS BYPASS CALLING DMKIOS @VA08629 00517900
  478. VIOREAL2 EQU * @VA08629 00517950
  479. TM VMINST+1,X'01' MAYBE START I/O FAST RELEASE@VA01382 00519000
  480. BZ IOSCALL NO -- JUST CALL DMKIOSQV @VA01382 00520000
  481. TM VMTRCTL,VMTRSIO TRACING START I/O ? @VA01382 00521000
  482. BO IOSCALL YES - USE NORMAL PATH @VA01382 00522000
  483. LA R1,VMVCR0 CHECK FOR BLKMPX ENABLED @VA01382 00523000
  484. TM VMPSTAT,VMV370R IS THERE AN ECBLOK ? @VA01382 00524000
  485. BZ *+8 NO -- ALREADY HAVE CR0 @VA01382 00525000
  486. L R1,VMECEXT POINT TO EXTENDED CR0 @VA01382 00526000
  487. TM 0(R1),BLKMPX BLOCK MULTIPLEXING ENABLED ? @VA01382 00527000
  488. BNZ NOWAIT YES,SIOF @VA08305 00528000
  489. BAL R9,GETLOCK NO,MUST HAVE THE SYSTEM LOCK @VA08305 00529000
  490. USING *,R9 NEW ADDRESSABILITY TO HERE @VA12128 00529200
  491. L R12,ADMKVSI RESTORE BASE REG @VA12128 00529400
  492. DROP R9 IT WAS ONLY TEMPORARY @VA12128 00529600
  493. USING DMKVSI,R12 STANDARD ADDRESSABILITY @VA12128 00529800
  494. B IOSCALL NOW GO CALL IOS @VA08305 00530000
  495. NOWAIT EQU * @VA08305 00531000
  496. OI IOBSPEC,IOBSIOF START I/O FAST RELEASE @VA01382 00532000
  497. NI VMRSTAT,255-VMIOWAIT LET THE USER RUN @VA01382 00533000
  498. AIF (NOT &AP).APCHK4 00534000
  499. TM APSTAT1,APUOPER RUNNING IN AP MODE? @VA08305 00535000
  500. BNO IOSCALL NO,FOLLOW THE NORMAL PATH @VA08305 00536000
  501. TM APSTAT1,PROCIO IS THIS THE MAIN @VA08305 00537000
  502. BNO SWITCH NO,MUST EVENTUALLY SWITCH @VA08305 00538000
  503. L R15,=A(DMKLOKSY) POINT TO THE SYSTEM LOCK @VA08305 00539000
  504. L R15,0(R15) PICK UP THE LOCK WORD @VA08305 00540000
  505. LH R1,LPUADDR AND MY PROCESSOR ID @VA08305 00541000
  506. CR R1,R15 DO I HOLD IT? @VA08305 00542000
  507. BE IOSCALL YES,GO STRAIGHT TO IOS @VA08305 00543000
  508. LTR R15,R15 IS THE LOCK AVAILABLE? @VA08305 00544000
  509. BNZ SWITCH DON'T WASTE TIME TRYING @VA08305 00545000
  510. LOCK OBTAIN,TYPE=SYS,SPIN=NO TRY FOR THE LOCK @VA08305 00546000
  511. BZ IOSCALL GOT IT, GO TO IOS @VA08305 00547000
  512. SWITCH STH R13,VMACTDEV SAVE VADDR FOR DMKTHI @VA08305 00548000
  513. LH R1,VCHADD GET CHANNEL ADDRESS @VA08305 00549000
  514. * NOTE,IF HERE MUST BE DASD OR TAPE 00550000
  515. SRL R1,7 TIMES 2 @VA08305 00551000
  516. L R15,=A(DMKVIOMK) GET ADDRESS OF MASK TABLE @VA08305 00552000
  517. LH R1,0(R1,R15) GET APPROPRIATE MASK @VA08305 00553000
  518. O R1,VMIOACTV-2 ADD TO PRESENT ACTIVE MASK @VA08305 00554000
  519. STH R1,VMIOACTV ... @VA08305 00555000
  520. LA R0,CPEXSIZE SIZE OF CPEXBLOK @VA08305 00556000
  521. CALL DMKFREE GO GET ONE @VA08305 00557000
  522. USING CPEXBLOK,R1 @VA08305 00558000
  523. LR R2,R11 SAVE VMBLOK POINTER @VA08305 00559000
  524. L R11,ASYSVM POINT TO SYSTEM VMBLOK @VA08305 00560000
  525. STM R0,R14,CPEXREGS SAVE ALL THE REGISTERS @VA08305 00561000
  526. LA R15,CALLIOS RETURN ADDRESS AFTER UNSTACK @VA08305 00562000
  527. ST R15,CPEXADD ..... @VA08305 00563000
  528. DROP R1 @VA08305 00564000
  529. LR R11,R2 RESTORE R11 @VA08305 00565000
  530. TM APSTAT1,PROCIO IS THIS THE MAIN PROCESSOR? @VA08305 00566000
  531. BNO STACKOP NO, STACK FOR THE MAIN @VA08305 00567000
  532. CALL DMKSTKMP YES, STACK FOR THIS PROCESSOR @VA08305 00568000
  533. B VIOEXITY NOW EXIT, CC=0 IS ALREADY SET @VA08305 00569000
  534. STACKOP CALL DMKSTKOP STACK FOR OTHER PROCESSOR @VA08305 00570000
  535. B VIOEXITY AND EXIT @VA08305 00571000
  536. CALLIOS CHARGE SWITCH,(R2) START CHARGING ORIGINAL USER @VA08305 00572000
  537. CALL DMKIOSQV NOW CALL IOS @VA08305 00573000
  538. CHARGE SWITCH,ASYSVM EXIT POINTING TO THE SYSTEM @VA08305 00574000
  539. SPACE 00574500
  540. GOTO DMKDSPCH ALL DONE @VA08305 00575000
  541. SPACE 00576000
  542. .APCHK4 ANOP 00577000
  543. IOSCALL EQU * SCHEDULE VIRTUAL MACHINE I/O @VA01382 00578000
  544. CALL DMKIOSQV CALL TO EXECUTE I/O @VA01092 00579000
  545. SKIPIOS STH R13,VMACTDEV SAVE VADDR FOR DMKTHI @VA08629 00580000
  546. TM VDEVTYPC,CLASDASD+CLASTAPE DISK OR TAPE? @VA08776 00581500
  547. BZ VIOEXITY IF NEITHER, BRANCH @VA05377 00582000
  548. LH R1,VCHADD GET CHANNEL ADDRESS 00583000
  549. SRL R1,7 TIMES 2 00584000
  550. L R15,=A(DMKVIOMK) GET ADDRESS OF MASK TABLE @VA05037 00585000
  551. LH R1,0(R1,R15) GET APPROPRIATE MASK @VA05037 00586000
  552. O R1,VMIOACTV-2 ADD TO PRESENT ACTIVE MASK 00587000
  553. STH R1,VMIOACTV ... 00588000
  554. B VIOEXITY AND LEAVE (NO V.M. TRACING DONE HERE). 00589000
  555. SPACE 00590000
  556. SIOCUE EQU * HERE IF A CONTROL UNIT END INTERRUPT IS PENDING 00591000
  557. L R5,=A(256*(SM+BUSY)) SET INTERRUPT STATUS FOR CSW 00592000
  558. NI VCUINTS,X'FF'-CUE CUE FOR ADDRESSED DEVICE - CLEAR CUE 00593000
  559. NI VDEVSTAT,X'FF'-VDEVCUE FROM CU AND DEVICE BLOKS 00594000
  560. L R5,=A(256*(CUE+BUSY)) SET CUE + BUSY INSTEAD 00595000
  561. B STTOTCSW AND GO STORE TOTAL CSW @VA05104 00596000
  562. EJECT 00597000
  563. *---------------------------------------------------------------------* 00597025
  564. * * 00597050
  565. * LOADER3: * 00597075
  566. *---------------------------------------------------------------------* 00597100
  567. * * 00597125
  568. * HERE TO RECALCULATE THE VBLOK ADDRESS EXPECTED IN R3 * 00597150
  569. * AFTER CALLS TO DMKPTRAN AND DMKCCWTR. * 00597175
  570. * * 00597200
  571. * THIS RECALCULATION IS NECESSARY, BECAUSE UPON RETURN * 00597225
  572. * THE CONTENTS OF R3 MAY HAVE BEEN ALTERED (DUE TO RE- * 00597250
  573. * ENTRANCY). * 00597275
  574. *---------------------------------------------------------------------* 00597300
  575. LOADER3 DS 0H HERE TO RECALC VBLOK ADDR IN R3 @VA13211 00597325
  576. LR R3,R6 LOAD ADDR OF VCHBLOK @VA13211 00597350
  577. TM VCHTYPE,VCHSEL IS IT FOR SELECTOR CHANNEL? @VA13211 00597375
  578. BOR R9 YES...RETURN TO CALLER @VA13211 00597400
  579. LR R3,R7 ELSE; LOAD ADDRESS OF VCUBLOK @VA13211 00597425
  580. TM VCUTYPE,VCUSHRD+VCUCTCA SHARED SUB-CHANNEL ? @VA13211 00597450
  581. BNZR R9 YES...RETUNR TO CALLER @VA13211 00597475
  582. LR R3,R8 CHANNEL STATUS IN DEVICE BLOK @VA13211 00597500
  583. BR R9 RETURN TO CALLER @VA13211 00597525
  584. EJECT 00597550
  585. *. 00598000
  586. * B. VIRTUAL TIO SIMULATION - 00599000
  587. * 1. IF ALL VBLOKS WERE NOT FOUND, SET VIRTUAL CONDITION 00600000
  588. * CODE 3 AND EXIT. 00601000
  589. * 3. IF THE VIRTUAL SUBCHANNEL IS BUSY OR HAS AN INTERRUPT 00602000
  590. * PENDING FOR A DEVICE OTHER THAN THE ONE ADDRESSED, SET 00603000
  591. * VIRTUAL CONDITION CODE 2 AND EXIT. 00604000
  592. * 4. IF A CHANNEL END OR CUE IS PENDING FOR THE ADDRESSED 00605000
  593. * DEVICE, SET THE VIRTUAL CC = 1, CLEAR THE INTERRUPT, 00606000
  594. * AND STORE THE CSW. 00607000
  595. * 5. IF THE CUE IS PENDING FOR A DEVICE OTHER THAN THE ONE 00608000
  596. * ADDRESSED, RETURN STATUS OF SM+BUSY, AND DO NOT CLEAR 00609000
  597. * THE INTERRUPT; SET CC= 1, AND EXIT. 00610000
  598. * 6. IF THERE ARE DEVICE CLASS INTERRUPTS PENDING, OR IF 00611000
  599. * THE DEVICE IS "RESERVED" BY ANOTHER USER, STORE THE 00612000
  600. * STATUS AND CLEAR THE INTERRUPTS; SET VIRTUAL CC = 1, 00613000
  601. * AND EXIT. 00614000
  602. * 7. IF NO STATUS IS PENDING ON THE ADDRESSED PATH, 00615000
  603. * AND THE DEVICE IS NOT VIRL SPOOL RDR, EXIT WITH CC=0 00616000
  604. * 8. IF THE DEVICE IS A VIRTUAL CTCA, CALL DMKVCATS FOR 00617000
  605. * SIMULATION OF THE TEST I/O TO AN IDLE DEVICE. 00618000
  606. * 9. IF THE DEVICE IS A DEDICATED CTCA, BUILD AN IOBLOK 00619000
  607. * TO SCHEDULE A REAL TEST I/O AND CALL DMKIOSQV TO PERFORM 00620000
  608. * THE NECESSARY INSTRUCTION. 00621000
  609. * 10. FOR A VIRT READER DEVICE, SET CC=0 IF THE READER HAS 00622000
  610. * ACTIVE FILE. SET CC=1 IF THE RDR IS EMPTY ( DMKVSPTO IS 00623000
  611. * CALLED TO DECIDE IF THE READER IS EMPTY) 00624000
  612. * (A CHANNEL-TO-CHANNEL ADAPTER MAY PRESENT CSW STATUS TO A 00625000
  613. * TEST I/O EVEN THOUGH THE DEVICE HAS NO ACTIVE COMMAND.) 00626000
  614. *. 00627000
  615. SPACE 00628000
  616. VIOTIO EQU * 00629000
  617. BAL R9,GETLOCK GO GET THE SYSTEM LOCK @VA08305 00630000
  618. USING *,R9 NEW ADDRESSABILITY TO HERE @VA12128 00630200
  619. L R12,ADMKVSI RESTORE BASE REG @VA12128 00630400
  620. DROP R9 IT WAS ONLY TEMPORARY @VA12128 00630600
  621. USING DMKVSI,R12 STANDARD ADDRESSABILITY @VA12128 00630800
  622. TM VMINST+1,X'01' IS IT CLRIO? @V2B2638 00631000
  623. BO CLRIO YUP, BR @V2B2638 00632000
  624. AL R1,DMKVSITI ADD TIO COUNT TO INCREMENT @V2B2638 00633000
  625. ST R1,DMKVSITI AND RE-STORE @V2B2638 00634000
  626. B VIOTIO1 CONTINUE @V2B2638 00635000
  627. SPACE 00636000
  628. CLRIO AL R1,DMKVSICI ADD CLRIO COUNT TO INCREMENT @V2B2638 00637000
  629. ST R1,DMKVSICI AND RE-STORE @V2B2638 00638000
  630. SPACE 00639000
  631. VIOTIO1 EQU * HERE WHEN COUNTS ARE BUMPED @V2B2638 00640000
  632. SPM R0 RESTORE COND. CODE FROM DMKSCNVU 00641000
  633. BNZ VIOEXIT EXIT CC = 3 -- DEVICE NOT FOUND @VA01527 00642000
  634. BAL R9,CHSCAN TEST FOR CHANNEL BUSY OR CE PENDING 00644000
  635. BO TIOCE CHANNEL END PENDING -- REFLECT IT 00645000
  636. BAL R9,CUSCAN TEST FOR C.U. BUSY OR CUE PENDING 00647000
  637. BO TIOCUE CONTROL UNIT END PENDING 00648000
  638. BAL R9,DEVSCAN TEST FOR DEVICE BUSY OR INTRPT PENDING 00650000
  639. SPACE 2 00651000
  640. * 00652000
  641. * HERE IF PATH TO DEVICE IS NOT BUSY AND NO 00653000
  642. * INTERRUPTS ARE PENDING 00654000
  643. * 00655000
  644. SPACE 00656000
  645. TM VDEVSTAT,VDEVNRDY IS DEVICE READY ? 00657000
  646. BZ TIOCTCA NO -- CHECK FOR VIRTUAL CHAN-TO-CHAN 00658000
  647. LA R5,UC*256 SET UNIT CHECK STATUS, 00659000
  648. B STORECSW AND GO STORE THE CSW BYTES 4 AND 5 00660000
  649. SPACE 2 00661000
  650. TIOCTCA EQU * TEST FOR DEDICATED DEVICES @VA00398 00662000
  651. LA R3,IOBTIO INDICATE A TIO @VA00398 00663000
  652. TM VDEVSTAT,VDEVDED DEDICATED CHANNEL-TO-CHANNEL ? 00664000
  653. BO CTCAIOB YES - BUILD IOBLOK TO SCHEDULE THE 'TIO' 00665000
  654. TM VCUTYPE,VCUCTCA MIGHT THIS BE VIRTUAL CTCA ? @VA00398 00666000
  655. BZ TIORDR NO- GO CHECK SEE IF IT IS READER @VA03503 00667000
  656. CALL DMKVCATS TIO TO VIRTUAL CTCA 00668000
  657. BNZ STORECSW CC NON-ZERO => CSW STORED 00669000
  658. B VIOEXITX EXIT, CC = 0 00670000
  659. TIORDR EQU * @VA03503 00671000
  660. CLI VDEVTYPC,CLASURI IS IT RDR DEVICE? @VA03503 00672000
  661. BNE VIOEXITX NO- EXIT WITH CC=0 @VA03503 00673000
  662. TM VDEVTYPE,TYPRDR CARD READER TYPE UR INPUT? @VA04204 00674000
  663. BZ VIOEXITX NOPE, EXIT FORTHWITH @VA04204 00675000
  664. L R9,VDEVSPL GET SPOOL CONTROL BLOK @VA03503 00676000
  665. LTR R9,R9 ANY ACTIVE FILE? @VA03503 00677000
  666. BNZ VIOEXITX YES--EXIT WITH CC =0 @VA03503 00678000
  667. CALL DMKVSPTO VSP WILL DO THE FILE SEARCH @VA03503 00679000
  668. BNZ VIOEXITX FILE FOUND--EXIT WITH CC=0 @VA03503 00680000
  669. LA R5,UC*256 EMPTY RDR--SET UC STATUS @VA03503 00681000
  670. B STORECSW GO STORE CSW @VA03503 00682000
  671. TIOCE EQU * HERE IF CE IS PENDING 00683000
  672. TM VDEVSTAT,VDEVCHAN CE PENDING FOR ADDRESSED DEVICE? 00684000
  673. BO TIOCEPND YES... 00685000
  674. LA R2,X'20' NO -- EXIT WITH CC OF 2 00686000
  675. B VIOEXIT 00687000
  676. SPACE 2 00688000
  677. TIOCEPND EQU * 00689000
  678. NI VCHSTAT-VCHBLOK(R3),X'FF'-VCHCEPND CLEAR PENDING 00690000
  679. NI VDEVSTAT,X'FF'-VDEVCHAN AND FROM DEVICE 00691000
  680. LM R4,R5,VDEVCSW PICK UP THE CSW FROM THE DEVICE 00692000
  681. NI VDEVCSW+5,X'FF'-PCI REMOVE PCI 00693000
  682. B STORECSW AND GO STORE CSW 00694000
  683. SPACE 3 00695000
  684. TIOCUE EQU * HERE IF A CUE IS PENDING 00696000
  685. TM VDEVSTAT,VDEVCUE IS CUE PENDING FOR ADDRESSED DEVICE? 00697000
  686. BZ SETSM NO -- 00698000
  687. NI VCUINTS,X'FF'-CUE CLEAR INTERRUPT FROM CU 00699000
  688. NI VDEVSTAT,X'FF'-VDEVCUE AND DEVICE 00700000
  689. L R5,=A(CUE*256) SET CSW STATUS 00701000
  690. B STTOTCSW AND GO STORE TOTAL CSW @VA05104 00702000
  691. SPACE 2 00703000
  692. SETSM L R5,=A(256*(SM+BUSY)) SET CSW STATUS 00704000
  693. B STTOTCSW AND GO STORE TOTAL CSW @VA05104 00705000
  694. EJECT 00706000
  695. *. 00707000
  696. * C. VIRTUAL TCH SIMULATION - 00708000
  697. * 1. IF A VIRTUAL CHANNEL BLOK WAS NOT FOUND, RETURN VIRTUAL 00709000
  698. * CONDITION CODE 3. 00710000
  699. * 3. IF THE ADDRESSED CHANNEL IS NOT A SELECTOR, RETURN 00711000
  700. * VIRTUAL CONDITION CODE 0; MPX AND BMPX ARE NEVER BUSY. 00712000
  701. * 4. IF THE ADDRESSED CHANNEL IS BUSY, SET VIRTUAL CONDITION 00713000
  702. * CODE 2 AND EXIT. 00714000
  703. * 5. IF THE ADDRESSED CHANNEL HAS A CHANNEL CLASS INTERRUPT 00715000
  704. * PENDING, SET CC = 1 AND EXIT. 00716000
  705. * 6. IF THE CHANNEL IS FREE, EXIT. 00717000
  706. *. 00718000
  707. SPACE 00719000
  708. VIOTCH EQU * 00720000
  709. AL R1,DMKVSITC ADD TCH COUNT TO INCREMENT @V2B2638 00721000
  710. ST R1,DMKVSITC AND RE-STORE @V2B2638 00722000
  711. SPM R0 RESTORE COND. CODE FROM DMKSCNVU 00723000
  712. BC 4,VIOEXIT EXIT CC = 3 IF VCHBLOK NOT FOUND @VA01527 00724000
  713. SPACE 00725000
  714. VIOTCH2 DS 0H @VA10311 00726010
  715. TM VCHTYPE,VCHSEL THIS A SELECTOR CHANNEL??? @VA12875 00726011
  716. BNO CKPEND01 NO, CHECK FOR I/O PENDING @VA12875 00726012
  717. TM VCHSTAT,VCHBUSY IS THE CHANNEL BUSY???? @VA12875 00726013
  718. BNO CKPEND01 NO - SEE IF ANY I/O PENDING @VA12875 00726014
  719. LA R2,CC2 SET CC=2: CHANNEL IN BURST MODE @VA12875 00726015
  720. B VIOEXIT EXIT @VA12875 00726016
  721. CKPEND01 DS 0H CHECK FOR INTERRUPT PENDING @VA12875 00726017
  722. TM VMPEND,VMIOPND ANYTHING PENDING? @VA10311 00726020
  723. BNO VIOEXITX NO...GET OUT WITH CC=0 @VA10311 00726030
  724. SR R3,R3 ZERO REGISTER 3 @VA12875 00726033
  725. SR R4,R4 ZERO REGISTER 4 @VA12875 00726036
  726. LH R9,VCHADD GET CHANNEL ADDRESS @VA10311 00726040
  727. SRL R9,7 MAKE IT AN INDEX @VA10311 00726050
  728. AL R9,=A(DMKVIOMK) AND POINT TO INTERRUPT MASK @VA12875 00726060
  729. ICM R4,B'0011',0(R9) FOR THIS CHANNEL @VA12875 00726960
  730. ICM R3,B'0011',VMIOINT LOAD CURRENT PENDING CE @VA12875 00727860
  731. NR R4,R3 IS THERE AN INTERRUPT PENDING?? @VA12875 00728760
  732. BZ VIOEXITX NO ACTY ON CHAN..LEAVE CC=0 @VA12875 00729660
  733. LA R2,X'10' CE IS PENDING - SET CC = 1 00731000
  734. B VIOEXIT AND EXIT 00732000
  735. SPACE 00733000
  736. * 00753000
  737. * RE-ENTRY POINT FROM DMKVSJ TO PROCESS CLCH AS A TCH 00773000
  738. * 00793000
  739. DMKVSICH DS 0D @VA12128 00813000
  740. USING *,R15 ESTABLISH ADDRESSABILITY @VA12128 00833000
  741. L R12,=A(DMKVSI) RESTORE BASE REG @VA12128 00853000
  742. DROP R15 DON'T WANT R15 ANYMORE @VA12128 00873000
  743. USING DMKVSI,R12 RESTORE ADDRESSABILITY @VA12128 00893000
  744. B VIOTCH2 GO PROCESS AS TCH @VA12128 00913000
  745. EJECT 00990000
  746. * COMMON SUBROUTINES USED BY VIOSIO, VIOTIO, VIOTCH 00991000
  747. SPACE 2 00992000
  748. CHSCAN EQU * HERE TO TEST FOR CHANNEL BUSY OR CE PENDING %V386198 00993000
  749. LR R3,R6 SAVE POINTER TO CHANNEL BLOK %V386198 00994000
  750. TM VCHTYPE,VCHSEL SELECTOR CHANNEL ? %VA01771 00995000
  751. BO CHTEST YES %VA01771 00996000
  752. LR R3,R7 SAVE ADDRESS OF VCUBLOK %V386198 00997000
  753. TM VCUTYPE,VCUSHRD+VCUCTCA SHARED SUB-CHANNEL ? %V386198 00998000
  754. BNZ CHTEST YES.. %V386198 00999000
  755. LR R3,R8 CHANNEL STATUS IN DEVICE BLOK %V386198 01000000
  756. SPACE 01001000
  757. CHTEST TM VCHSTAT-VCHBLOK(R3),VCHBUSY IS SUBCHANNEL BUSY? %V386198 01002000
  758. BZ TESTCE NO -- %V386198 01003000
  759. LA R2,X'20' SET CONDITION CODE 2 01004000
  760. CLI VMINST,X'9D' PREVENT TIO BUSY LOOPS 01005000
  761. BNE VIOEXIT NOT A TIO - EXIT 01006000
  762. TM VDEVSTAT,VDEVBUSY DEVICE BUSY ?? 01007000
  763. BZ VIOEXIT NO -- RETURN 01008000
  764. LA R3,CLASSPEC*256+TYPCTCA VIRTUAL CTCA @VM01091 01009000
  765. CH R3,VDEVTYPC IS THIS A CHAN-CHAN ADAPT. @VM01091 01010000
  766. BE CALLSCH YES - CALL SCHEDULAR @VM01091 01011000
  767. CLI VDEVTYPC,CLASTERM TERMINAL CLASS ? @VM01091 01012000
  768. BNE IDLETIO NO - IN IDLE TIO LOOP @VM01091 01013000
  769. TM VDEVSTAT,VDEVDED DEDICATED DEVICE ? @VM01091 01014000
  770. BO CALLSCH YES - CALL SCHEDULAR @VM01091 01015000
  771. TM VDEVFLAG,VDEVENAB VIRTUAL 2702 LINE ? @VM01091 01016000
  772. BZ IDLETIO NO - IN IDLE TIO LOOP @VM01091 01017000
  773. BAL R3,DROPUSER PUT USER IN IDLE STATUS @VM01091 01018000
  774. B SETSM SET UP CSW @VM01091 01019000
  775. CALLSCH BAL R3,DROPUSER PUT USER IN IDLE STATUS @VM01091 01020000
  776. B VIOEXIT AND EXIT @VM01091 01021000
  777. IDLETIO OI VMDSTAT,VMTIO FLAG USER IN TIO BUSY LOOP @VM01091 01022000
  778. B VIOEXIT AND EXIT @VM01091 01023000
  779. DROPUSER OI VMRSTAT,VMIDLE INDICATE IDLE STATUS @VM01091 01024000
  780. CALL DMKSCHDL ALTER USER DISPATCHING STATUS @VM01091 01025000
  781. BR R3 RETURN TO CALLER @VM01091 01026000
  782. SPACE 01027000
  783. TESTCE TM VCHSTAT-VCHBLOK(R3),VCHCEPND CE PENDING ?? %V386198 01028000
  784. BR R9 RETURN TO CALLER WITH CC INTACT %V386198 01029000
  785. SPACE 3 01030000
  786. CUSCAN EQU * HERE TO TEST FOR CU BUSY OR CUE PENDING %V386198 01031000
  787. TM VCUSTAT,VCUBUSY IS THE CONTROL UNIT BUSY? %V386198 01032000
  788. BZ CUFREE NO -- %V386198 01033000
  789. OI VCUSTAT,VCUCUEPN FLAG CUE REQUESTED 01034000
  790. L R5,=A(256*(SM+BUSY)) SET CSW STATUS 01035000
  791. B STTOTCSW STORE AND EXIT @VA05104 01036000
  792. SPACE 2 01037000
  793. CUFREE TM VCUINTS,CUE TEST FOR CUE PENDING %V386198 01038000
  794. BR R9 RETURN WITH CONDITION CODE SET %V386198 01039000
  795. EJECT 01040000
  796. DEVSCAN EQU * HERE TO TEST FOR DEVICE BUSY OR INTS PENDING %V386198 01041000
  797. TM VDEVSTAT,VDEVBUSY IS THE DEVICE BUSY ?? %V386198 01042000
  798. BZ CKINTS NO -- %V386198 01043000
  799. L R5,=A(256*BUSY) SET BUSY STATUS 01044000
  800. B STTOTCSW AND EXIT @VA05104 01045000
  801. SPACE 01046000
  802. CKINTS LH R5,VDEVINTS GET DEVICE INTERRUPTS %V386198 01047000
  803. LTR R5,R5 ANYTHING PENDING ?? %V386198 01048000
  804. BNZ PNDINT PENDING INTERRUPT, BR. %V407438 01049000
  805. TM VDEVFLG2,VDEVRRF MDISK WITH RES/REL FEATURE? %V407438 01050000
  806. BZR R9 NOPE, NO VIRT RES/REL TODAY %V407438 01051000
  807. L R2,VDEVRRB GET THE VRRBLOK ADDRESS @V407438 01052000
  808. USING VRRBLOK,R2 ADDRESS THE VRRBLOK @V407438 01053000
  809. TM VRRSTAT,VRRRES IS THE MDISK RESERVED NOW? @V407438 01054000
  810. BZR R9 NOPE, FREE PATH, BR. @V407438 01055000
  811. TM VDEVFLG2,VDEVRES RESERVED BY THIS GUY? @V407438 01056000
  812. BOR R9 YUP, FREE PATH, BR. @V407438 01057000
  813. REFBUSY OI VDEVFLG2,VDEVODE WE OWE THIS GUY DE WHEN FREE @V407438 01058000
  814. L R5,=A(256*BUSY) DEVICE IS BUSY RIGHT NOW @V407438 01059000
  815. B STORECSW SORRY. @V407438 01060000
  816. SPACE 01061000
  817. PNDINT EQU * @V407438 01062000
  818. SPACE 01063000
  819. CLI VMINST,X'9C' IS IT A SIO 01064000
  820. BNE VIOATTN NO -- 01065000
  821. O R5,=A(256*BUSY) ADD BUSY TO STATUS @VA01803 01066000
  822. VIOATTN EQU * 01067000
  823. SLR R0,R0 ZERO CONSTANT 01068000
  824. TM VDEVINTS,ATTN ATTENTION PENDING ?? 01069000
  825. BZ CLEARDEV NO -- REFLECT A SINGLE INTERRUPT 01070000
  826. TM VDEVFLAG,VDEVPOST PRESENT ALL TO-GETHER ? @VA01653 01071000
  827. BO POSTOFF YES @VA04343 01072000
  828. TM VDEVINTS,X'FF'-(ATTN+UC) ANYTHING ELSE ?? 01073000
  829. BNZ ATTNPLUS YES -- SEPARATE INTERRUPTS, PLEASE 01074000
  830. CLI VDEVTYPC,CLASSPEC MIGHT THIS BE CHAN-TO-CHAN ADAPTER 01075000
  831. BNE CLEARDEV NO -- PRESENT STATUS 01076000
  832. CLI VDEVTYPE,TYPCTCA BETTER BE SURE ABOUT IT 01077000
  833. BNE CLEARDEV NO -- PRESENT STATUS 01078000
  834. TM VDEVINTS,UC IS THERE A UNIT CHECK INCLUDED ? 01079000
  835. BO CLEARDEV YES - GIVE IT TO HIM 01080000
  836. STH R0,VDEVINTS CLEAR DEVICE INTERRUPT STATUS 01081000
  837. NI VDEVSTAT,X'FF'-VDEVPEND ... 01082000
  838. TM VDEVSTAT,VDEVDED DEDICATED CHANNEL-TO-CHANNEL ? 01083000
  839. BCR 1,R9 YES - LET THE 'SIO' GO THROUGH 01084000
  840. L R1,VDEVREAL ACCESS THE CHXBLOK FOR VIRTUAL 01085000
  841. USING CHXBLOK,R1 ... 01086000
  842. TM CHXFLAG,CHBM370 RUNNING IN COMPATIBILITY MODE ? 01087000
  843. BCR 8,R9 YES - LET THE 'SIO' GO THROUGH 01088000
  844. DROP R1 PRESENT INTERRUPT STATUS TO START I/O 01089000
  845. B CLEARDEV PRESENT STATUS @VA04343 01090000
  846. SPACE 01091000
  847. * HERE IF ATTN ALONE, OR NO ATTN 01092000
  848. POSTOFF NI VDEVFLAG,X'FF'-VDEVPOST TURN OFF VDEVPOST @VA04343 01093000
  849. CLEARDEV EQU * CLEAR DEVICE INTERRUPT STATUS 01094000
  850. STH R0,VDEVINTS CLEAR OUT STATUS BYTES 01095000
  851. NI VDEVSTAT,X'FF'-VDEVPEND CLEAR OUT PENDING FLAG 01096000
  852. B STTOTCSW AND GO FINISH REFLECTING @VA05104 01097000
  853. SPACE 01098000
  854. ATTNPLUS EQU * HERE FOR SEPARATE INTERRUPTS 01099000
  855. N R5,=A(X'FFFF'-256*(ATTN+UC)) CLEAR ATTN AND UC 01100000
  856. NI VDEVINTS,ATTN+UC AND LEAVE IN DEVICE 01101000
  857. B STTOTCSW TO STORE CSW @VA12128 01102000
  858. SPACE 3 01111000
  859. CC2 EQU X'20' CONDITION CODE 2 @VA12875 01120000
  860. SPACE 2 01129000
  861. VIOGODSP EQU * @VA12128 01138000
  862. GOTO DMKDSPCH ALL DONE @VA12128 01147000
  863. EJECT 01156000
  864. *** SET UP THE INDEX REGISTER (R14) FOR THE BRANCH TO 01165000
  865. * DMKVSJ TO CONTINUE PROCESSING 01174000
  866. SPACE 2 01183000
  867. VIOCLCH EQU * @VA12128 01192000
  868. LA R14,INDEXA VIOCLCH @VA12128 01201000
  869. B EXITVSJ SET UP BASE AND GO TO DMKVSJ @VA12128 01210000
  870. VIOHIO EQU * @VA12128 01219000
  871. LA R14,INDEXB VIOHIO @VA12128 01228000
  872. B EXITVSJ SET UP BASE AND GO TO DMKVSJ @VA12128 01237000
  873. STTOTCSW EQU * @VA12128 01246000
  874. LA R14,INDEXC STTOTCSW @VA12128 01255000
  875. B EXITVSJ SET UP BASE AND GO TO DMKVSJ @VA12128 01264000
  876. STORECSW EQU * @VA12128 01273000
  877. LA R14,INDEXD STORECSW @VA12128 01282000
  878. B EXITVSJ SET UP BASE AND GO TO DMKVSJ @VA12128 01291000
  879. VIOEXIT EQU * @VA12128 01300000
  880. LA R14,INDEXF VIOEXIT @VA12128 01309000
  881. B EXITVSJ SET UP BASE AND GO TO DMKVSJ @VA12128 01318000
  882. VIOEXITX EQU * @VA12128 01327000
  883. LA R14,INDEXG VIOEXITX @VA12128 01336000
  884. B EXITVSJ SET UP BASE AND GO TO DMKVSJ @VA12128 01345000
  885. VIOEXITY EQU * @VA12128 01354000
  886. LA R14,INDEXH VIOEXITY @VA12128 01363000
  887. B EXITVSJ SET UP BASE AND GO TO DMKVSJ @VA12128 01372000
  888. GETLOCK EQU * @VA12128 01381000
  889. LA R14,INDEXJ GETLOCK @VA12128 01390000
  890. B EXITVSJ SET UP BASE AND GO TO DMKVSJ @VA12128 01399000
  891. CTCAIOB EQU * @VA12128 01408000
  892. LA R14,INDEXK CTCAIOB @VA12128 01417000
  893. SPACE 01426000
  894. EXITVSJ EQU * EXIT TO DMKVSJ @VA12128 01435000
  895. GOTO DMKVSJEX @VA12128 01444000
  896. EJECT 01453000
  897. * 01462000
  898. * DMKVSJ INDEX TABLE 01471000
  899. * 01480000
  900. INDEXA EQU 0 BRANCH TABLE INDEX-VIOCLCH @VA12128 01489000
  901. INDEXB EQU 4 BRANCH TABLE INDEX-VIOHIO @VA12128 01498000
  902. INDEXC EQU 8 BRANCH TABLE INDEX-STTOTCSW @VA12128 01507000
  903. INDEXD EQU 12 BRANCH TABLE INDEX-STORECSW @VA12128 01516000
  904. INDEXE EQU 16 *** UNUSED @VA12128 01525000
  905. INDEXF EQU 20 BRANCH TABLE INDEX-VIOEXIT @VA12128 01534000
  906. INDEXG EQU 24 BRANCH TABLE INDEX-VIOEXITX @VA12128 01543000
  907. INDEXH EQU 28 BRANCH TABLE INDEX-VIOEXITY @VA12128 01552000
  908. INDEXI EQU 32 *** UNUSED @VA12128 01561000
  909. INDEXJ EQU 36 BRANCH TABLE INDEX-GETLOCK @VA12128 01570000
  910. INDEXK EQU 40 BRANCH TABLE INDEX-CTCSIOB @VA12128 01579000
  911. EJECT 01610000
  912. DMKVSICT DC F'0' COUNT OF TOTAL I/O INSTRUCTIONS 01611000
  913. DMKVSICW DC F'0' COUNT OF CALLS TO DMKCCWTR 01612000
  914. DMKVSISI DC F'0' COUNT OF VIRT. SIO'S @V2B2638 01613000
  915. DMKVSISF DC F'0' COUNT OF VIRT. SIOF'S @V2B2638 01614000
  916. DMKVSITI DC F'0' COUNT OF VIRT. TIO'S @V2B2638 01615000
  917. DMKVSICI DC F'0' COUNT OF VIRT. CLRIO'S @V2B2638 01616000
  918. DMKVSITC DC F'0' COUNT OF VIRT. TCH'S @V2B2638 01619000
  919. ADMKVSI DC A(DMKVSI) FOR BASE REG ADDRESSABILITY @VA12128 01620000
  920. TCHOPER DC X'9F00' OPERAND FOR TEST CHANNEL (TCH) @VMD0117 01621000
  921. SPACE 01622000
  922. LTORG 01623000
  923. EJECT 01624000
  924. COPY VBLOKS @VA04320 01625000
  925. OSVSCOM MSSCOM @V60B6B8 01626000
  926. COPY VCTCA @VA04320 01627000
  927. COPY RBLOKS @VA04320 01628000
  928. COPY VMBLOK @VA04320 01629000
  929. COPY TREXT @VA04320 01630000
  930. COPY IOBLOKS @VA04320 01631000
  931. COPY IOER @VA04320 01632000
  932. PSA @VA04320 01633000
  933. COPY DEVTYPES @VA04320 01634000
  934. COPY EQU @VA04320 01635000
  935. COPY SAVE @VA08305 01636000
  936. END DMKVSI @VA04320 01637000