Table of Contents

DMKAPI Source

References

Source Listing

DMKAPI.ASSEMBLE.txt
  1. API TITLE 'DMKAPI (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. * 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKAPI 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * READY THE ATTACHED PROCESSOR FOR SYSTEM USE. 00010000
  11. * 00011000
  12. * ATTRIBUTES - 00012000
  13. * 00013000
  14. * NON-REUSABLE, PAGEABLE, ENTERED VIA SVC FROM DMKCPI. 00014000
  15. * 00015000
  16. * ENTRY POINTS - 00016000
  17. * 00017000
  18. * DMKAPIPR - PERFORM MAIN PROCESSOR INITIALIZATION TO 00018000
  19. * SUPPORT THE APU. 00019000
  20. * 00020000
  21. * DMKAPIAP - PERFORM ATTACHED PROCESSOR INITIALIZATION. 00021000
  22. * ENTERED VIA SIGP PSW RESTART FROM DMKAPIPR. 00022000
  23. * 00023000
  24. * ENTRY CONDITIONS - 00024000
  25. * 00025000
  26. * GPR1 - POINTER TO ADDRESSES OF REAL PSA'S (VALUES TO BE 00026000
  27. * INSERTED IN PREFIXA AND PREFIXB). 00027000
  28. * GPR12 - DMKAPI ENTRY POINT ADDRESS. 00028000
  29. * GPR13 - SAVEAREA ADDRESS. 00029000
  30. * 00030000
  31. * EXIT CONDITIONS - 00031000
  32. * 00032000
  33. * NORMAL - DMKAPIPR RETURNS TO DMKCPI VIA SVC. 00033000
  34. * DMKAPIAP LOADS AN ENABLED WAIT STATE PSW. 00034000
  35. * 00035000
  36. * ERROR - LOAD DISABLED WAIT STATE PSW. 00036000
  37. * 00037000
  38. * CALLS TO OTHER ROUTINES - 00038000
  39. * 00039000
  40. * DMKIOGAP - INITIALIZE CR15 ON APU FOR EXTENDED LOGOUT. 00040000
  41. * DMKLOKSP - OBTAIN SYSTEM LOCK. 00041000
  42. * DMKLOKVM - OBTAIN VMBLOK LOCK. 00042000
  43. * DMKPTRAN - BRING IN AND LOCK DMKIOGAP. 00043000
  44. * DMKPTRUL - UNLOCK DMKIOGAP. 00044000
  45. * DMKQCNWT - WRITE MESSAGES TO OPERATOR. 00045000
  46. * 00046000
  47. * EXTERNAL REFERENCES - 00047000
  48. * 00048000
  49. * DMKFREAP - PTR TO FREE STORAGE. 00049000
  50. * DMKPRGIN - ADDRESS OF PROGAM CHECK FLIH. 00050000
  51. * DMKPSADU - ADDRESS OF SYSTEM RESTART ROUTINES. 00051000
  52. * DMKSVCIN - ADDRESS OF SVC FLIH. 00052000
  53. * DMKCPEML - MAIN PROCESSOR CP ASSIST LEVEL @V5DAACD 00052100
  54. * 00053000
  55. * TABLES/WORK AREAS - 00054000
  56. * 00055000
  57. * PSA,VMBLOK 00056000
  58. * 00057000
  59. * MACROS - 00058000
  60. * 00059000
  61. * TRANS, CALL, LOCK OBTAIN 00060000
  62. * 00061000
  63. * REGISTER USAGE - 00062000
  64. * 00063000
  65. * R11 - VMBLOK ADDRESS 00064000
  66. * R12 - BASE REGISTER 00065000
  67. * R13 - SAVEAREA ADDRESS 00066000
  68. * 00067000
  69. * NOTES - 00068000
  70. * 00069000
  71. * NONE 00070000
  72. * 00071000
  73. * OPERATION - MAIN PROCESSOR (DMKAPIPR) 00072000
  74. * 00073000
  75. * 1. MOVE COMMON PSA FIELDS IN ABSOLUTE 0 TO STORAGE DEFINED 00074000
  76. * BY PREFIXA AND PREFIXB. INITIALIZE AP DATA. 00075000
  77. * 2. LOCK DMKIOG. 00076000
  78. * 3. PSW RESTART THE APU AT DMKAPIAP AND SPIN UNTIL THE 00077000
  79. * ROUTINE COMPLETES APU INITIALIZATION. 00078000
  80. * 4. CHECK IF THE INTERVAL TIMER IS RUNNING ON THE APU. 00079000
  81. * 5. SET THE PREFIX REGISTER TO PREFIXA AND INITIALIZE 00080000
  82. * THE CONTROL REGISTERS FOR THE MAIN PROCESSOR. 00081000
  83. * 6. OBTAIN THE SYSTEM AND VMBLOK LOCKS. 00082000
  84. * 7. UNLOCK DMKIOG AND RETURN TO DMKCPI. 00083000
  85. * 00084000
  86. * OPERATION - ATTACHED PROCESSOR (DMKAPIAP) 00085000
  87. * 00086000
  88. * 1. RESTORE TRACSTRT AND RSTNPSW IN ABSOLUTE 0 (DESTROYED 00087000
  89. * BY THE SIGP RESTART). 00088000
  90. * 2. SET THE CLOCK COMPARATOR AND CPU TIMER. 00089000
  91. * 3. LOAD CR'S FOR THE APU AND THE PREFIX REGISTER FROM OLD 00090000
  92. * PREFIXB (NOW IS PREFIXA). 00091000
  93. * 4. CALL DMKIOGAP TO INITIALIZE CR15 FOR EXTENDED LOGOUT. 00092000
  94. * 4.1 TEST CP ASSIST AVAILABILITY. @V5DAACD 00092100
  95. * 5. TEST FOR VM ASSIST AVAILABILITY ON THE APU. 00093000
  96. * 6. RESET PSA FIELDS THAT MAY HAVE BEEN USED DURING 00094000
  97. * INITIALIZATION BUT DO NOT REFLECT APU STATUS. 00095000
  98. * 7. SET THE CPUID OF THE APU 00096000
  99. * 8. LOAD AN ENABLE WAIT STATE PSW. 00097000
  100. * 00098000
  101. * ERROR MESSAGES - 00099000
  102. * 00100000
  103. * NONE. 00101000
  104. * 00102000
  105. * GENERAL MESSAGES - 00103000
  106. * 00104000
  107. * TURN ON THE ATTACHED PROCESSOR'S INTERVAL TIMER 00105000
  108. * 00106000
  109. * WAIT STATE CODES - 00107000
  110. * 00108000
  111. * 15 - SIGP RESTART FAILED. 00109000
  112. * 00110000
  113. EJECT 00111000
  114. DMKAPI CSECT @V407595 00112000
  115. COPY OPTIONS @V407595 00113000
  116. N0 EQU 0 @V407595 00114000
  117. DC CL8'DMKAPI' @V4M0106 00115000
  118. N1 EQU 1 @V407595 00116000
  119. N2 EQU 2 @V407595 00117000
  120. N4 EQU 4 @V407595 00118000
  121. N8 EQU 8 @V407595 00119000
  122. L8 EQU 8 @V407595 00120000
  123. N12 EQU 12 @V407595 00121000
  124. N16 EQU 16 @V407595 00122000
  125. FF EQU X'FF' @V407595 00123000
  126. CONDCODE EQU X'08' TO STCM CC IN WAIT PSW @V407595 00124000
  127. PROCAPU EQU X'40' TRACE TABLE ID OF THE APU @V407595 00125000
  128. EJECT 00126000
  129. EXTRN DMKPRGIN @V407595 00127000
  130. EXTRN DMKPSADU @V407595 00128000
  131. EXTRN DMKPTRUL @V407595 00129000
  132. EXTRN DMKSVCIN @V407595 00130000
  133. EXTRN DMKQCNWT @V407595 00131000
  134. EXTRN DMKIOGAP @V407595 00132000
  135. EXTRN DMKCPEML @V5DAACD 00132100
  136. USING SAVEAREA,R13 @V407595 00133000
  137. DMKAPIPR RELOC @V407595 00134000
  138. USING PSA,R0 @V407595 00135000
  139. MVC APIWORK,ZEROES CLEAR FLAG AND WORK AREA @V407595 00136000
  140. MVC SAVEWRK2(8),0(R1) SAVE ADDRESSES OF PSA'S @VA09386 00137100
  141. L R1,APIIOGAP OBTAIN VIRT ADDR OF DMKIOGAP @VA09386 00137200
  142. * THIS ROUTINE MUST BE LOADED AND LOCKED 00137300
  143. * WHEN IT IS INVOKED ON THE ATTACHED PROCESSOR. 00137400
  144. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK) LOCK DMKIOGAP @VA09386 00137500
  145. ST R2,REALSAVE SAVE REAL ADDRESS OF DMKIOGAP @VA09386 00137600
  146. SR R14,R14 MVCL FROM ADDRESS IS 0 @V407595 00144000
  147. L R15,F4096 MVCL FROM LENGTH IS PAGE SIZE @V407595 00145000
  148. L R2,SAVEWRK3 MVCL TO ADDR - APU'S PSA @VA09386 00146100
  149. LR R3,R15 MVCL TO LENGTH IS PAGE SIZE @V407595 00147000
  150. MVCL R2,R14 MOVE ABSOLUTE 0 TO PREFIX AREA @V407595 00148000
  151. * 00149000
  152. * INITIALIZE THE ATTACHED PROCESSOR'S PSA SO THAT IPUADDR, 00150000
  153. * LPUADDR, AND PREFIXA, CORRESPOND TO THE ATTACHED PROCESSOR 00151000
  154. * UNIT ADDRESSES AND PSA RESPECTIVELY. IPUADDRX,LPUADDRX, 00152000
  155. * AND PREFIXB WILL CORRESPOND TO THE MAIN PROCESSOR CPU 00153000
  156. * ADDRESSES AND PSA RESPECTIVELY. 00156100
  157. * 00157000
  158. L R2,SAVEWRK3 GET ATTACHED PSA @VA09386 00158100
  159. SR R1,R1 ZERO A REGISTER @VA07568 00159000
  160. ST R1,ACTIVTRQ(R2) ZERO OUT ACTIVE TRQ POINTER @VA07568 00160000
  161. MVI APSTAT4-PSA(R2),X'00' CLEAR MCHCHK BIT AND THE @VA08614 00161000
  162. * REST OF THE BYTE 00162000
  163. MVC IPUADDR-PSA(N2,R2),IPUADDRX SET PHYSICAL CPU @V407595 00163000
  164. * ADDR OF APU IN ATTACHED PROCESSOR'S PSA 00164000
  165. * (PREFIXB) 00165000
  166. MVC IPUADDRX-PSA(N2,R2),IPUADDR SET PHYSICAL CPU @V407595 00166000
  167. * ADDR OF MAIN PROC IN ATTACHED PROCESSOR'S 00167000
  168. * PSA (PREFIXB) 00168000
  169. MVC LPUADDR-PSA(N2,R2),LPUADDRX SET LOGICAL CPU @V407595 00169000
  170. * ADDR OF APU IN ATTACHED PROCESSOR'S PSA 00170000
  171. * (PREFIXB) 00171000
  172. MVC LPUADDRX-PSA(N2,R2),LPUADDR SET LOGICAL CPU @V407595 00172000
  173. * ADDR OF MAIN PROC IN ATTACHED PROCESSOR'S 00173000
  174. * PSA (PREFIXB) 00174000
  175. MVC PREFIXB-PSA(N4,R2),SAVEWRK2 SET ADDRESS OF MAIN @VA09386 00175100
  176. * PROCESSOR'S PSA IN ATTACHED PROCESSOR'S 00176000
  177. * PSA (PREFIXB). THIS PERMITS CROSS 00177000
  178. * REFERENCING OF PSA'S 00178000
  179. MVC PREFIXA-PSA(N4,R2),SAVEWRK3 ADDRESS OF ATTACHED @VA09386 00179100
  180. * PSA IN ATTACHED PROCESSOR'S PSA (PREFIXB) 00180000
  181. * THIS PERMITS REFERENCES TO ABSOLUTE 0. 00181000
  182. STCTL C1,C14,BALR1 SAVE CR'S FOR APU TO RESTORE @V407595 00190000
  183. * NOTE CR0 IS RESTORED FROM CR0INTAP 00191000
  184. LM R1,R2,RESTAP LOAD PSW TO RESTART ON ATTACHED @VMH0013 00192000
  185. * PROCESSOR 00193000
  186. TM APSTAT4,POFFLINE IS VARY PROCESSING ACTIVE? @VMH0013 00194000
  187. BNO STRSTNEW NO, BRANCH @VMH0013 00195000
  188. L R15,ASYSVM GET SYSTEM VMBLOK ADDRESS @VMH0013 00196000
  189. L R14,SAVEWRK3 ATTACHED PSA ADDRESS @VA09386 00197100
  190. ST R15,LASTUSER-PSA(R14) SET LASTUSER TO ASYSVM @VMH0031 00198000
  191. ST R15,RUNUSER-PSA(R14) SET RUNUSER TO ASYSVM @VMH0031 00199000
  192. MVC TIMER-PSA(N4,R14),FFS SET ATTACHED PROCESSOR'S @VMH0031 00200000
  193. * INTERVAL TIMER TO A HIGH NEGATIVE 00201000
  194. * NUMBER. THIS WILL PREVENT AN INTERVAL 00202000
  195. * TIMER INTERRUPT FROM OCCURING ON THE 00203000
  196. * ATTACHED PROCESSOR BEFORE THE SYSTEM 00204000
  197. * IS FULLY INITIALIZED FOR AP MODE. 00205000
  198. LCTL C1,C1,VMSEG-VMBLOK(R15) USE SYSTEM CTRL REG 1 @VMH0013 00206000
  199. LRA R2,0(0,R2) GET REAL ADDRESS OF ROUTINE @VMH0013 00207000
  200. LCTL C1,C1,BALR1 RESTORE CONTROL REGISTER 1 @VMH0013 00208000
  201. STRSTNEW DS 0H @VMH0013 00209000
  202. STM R1,R2,RSRTNPSW SET RESTART NEW TO RESTART THE @VMH0013 00210000
  203. * ATTACHED PROCESSOR @VMH0013 00211000
  204. SIGPREST EQU * @V407595 00212000
  205. ST R12,TEMPSAVE SAVE BASE REG FOR DMKAPIAP/IT @V407595 00213000
  206. L R0,SAVEWRK3 GET ATTACHED PSA ADDRESS @VA09386 00213100
  207. ST R0,TEMPSAVE+4 SAVE THE ADDRESS FOR DMKAPIAP @VA09386 00213200
  208. LA R0,SIGREST SAVE SIGP ORDER IN CASE OF ERROR @V407595 00214000
  209. SR R1,R1 CLEAR SIGP STATUS REGISTER @V407595 00215000
  210. LH R2,IPUADDRX ADDRESS OF APU FOR SIGP RESTART @V407595 00216000
  211. SIGP R1,R2,SIGREST PSW RESTART THE APU @V407595 00217000
  212. BC 7,APERROR SHOULD ONLY RECEIVE CC=0, ELSE @V407595 00218000
  213. * ERROR. 00219000
  214. LCTL C0,C0,MFAONLY ENABLE FOR MFA ONLY DURING SIGP @V407595 00220000
  215. * RESTART. 00221000
  216. WAITREST EQU * @V407595 00222000
  217. STOSM SYSMASK,EXTMASK ENABLE FOR EXTERNAL INTERRUPTS @V407595 00223000
  218. STNSM SYSMASK,FF-EXTMASK CLOSE MFA WINDOW @V407595 00224000
  219. TM APIFLAG1,APUSPIN WAIT UNTIL DMKAPIAP COMPLETES @V407595 00225000
  220. BNO WAITREST WAIT FOR RESTART TO COMPLETE @V407595 00226000
  221. * 00227000
  222. * DETERMINE IF THE INTERVAL TIMER IS 00228000
  223. * RUNNING ON THE APU. THE MAIN PROCESSOR'S 00229000
  224. * HAS PREVIOUSLY BEEN TESTED. 00230000
  225. * 00231000
  226. L R4,SAVEWRK3 ADDRESS OF ATTACHED PSA @VA09386 00232100
  227. L R3,TIMER(R4) OBTAIN VALUE OF APU INTERVAL TMR @V4M0106 00233000
  228. APINTTMR EQU * @V4M0106 00234000
  229. STIDP CPUID ISSUE A PRIVILEGED INSTRUCTION @V4M0143 00235000
  230. * TO FORCE A TRIP THRU THE DISPATCHER 00236000
  231. * WHEN RUNNING VM UNDER VM. 00237000
  232. L R2,F40000 LOAD A HIGH VALUE FOR LOOP CNTRL.HRC008DK 00238490
  233. * NOTE THAT THE INTERVAL TIMER IS UPDATED 00239000
  234. * IN BIT POSITION 23 APPROXIMATELY 00240000
  235. * ONCE PER 1/300 SECOND. THE SEQUENCE 00241000
  236. * OF INSTRUCTIONS IN 'TIMELOOP' MUST BE 00242000
  237. * EXECUTED APPROXIMATELY 7,000 TIMES 00243000
  238. * ON A MODEL 168 TO REACH THIS INTERVAL. 00244000
  239. * A HIGHER VALUE IS SELECTED TO ENSURE 00245000
  240. * THE TIMER IS NOT RUNNING BEFORE ISSUING 00246000
  241. * MESSAGE. 00247000
  242. TIMELOOP EQU * @V4M0106 00248000
  243. CL R3,TIMER(R4) TIMER CHANGING ON APU ? @V4M0106 00249000
  244. BNE APNOMSG YES - TIMER IS RUNNING - CONTINUE@V4M0106 00250000
  245. BCT R2,TIMELOOP CONTINUE UNTIL COUNTER EXHAUSTED @VM40106 00251000
  246. * OR INTERVAL TIMER RUNNING. 00252000
  247. LA R1,TMSG GET MESSAGE PTR. @V407595 00253000
  248. LA R0,TMSGL GET MESSAGE LENGTH. @V407595 00254000
  249. CALL DMKQCNWT,PARM=0 TELL OPERATOR TO READY INT TIMER @V407595 00255000
  250. B APINTTMR RESTART THE TIMER LOOP @V4M0106 00256000
  251. APNOMSG EQU * @V407595 00257000
  252. LH R1,IPUADDRX ADDRESS OF THE ATTACHED PROC. @VA09386 00257010
  253. L R8,APIDMPAA DMKDMP'S POINTER TO ATT. ADDR. @VA09386 00257020
  254. STH R1,0(,R8) SAVE ADDRESS FOR DMKDMP @VA09386 00257030
  255. L R8,APIDMPSA ADDRESS OF DMKDMPSA @VA09386 00257040
  256. MVC 0(8,R8),SAVEWRK2 SAVE PSA ADDRESSES IN DMKDMPMA @VA09386 00257050
  257. MVC PREFIXA(8),SAVEWRK2 SET PREFIXA/B IN ABSOLUTE 0 @VA09386 00257060
  258. SR R14,R14 MVCL FROM ADDRESS IS 0 @VA09324 00257100
  259. L R15,F4096 MVCL FROM LENGTH IS PAGE SIZE @VA09324 00257200
  260. L R2,PREFIXA MVCL TO ADDR IS MAIN PROC'S PSA @VA09324 00257300
  261. LR R3,R15 MVCL TO LENGTH IS PAGE SIZE @VA09324 00257400
  262. MVCL R2,R14 MOVE ABSOLUTE 0 TO PREFIX AREA @VA09324 00257500
  263. SPX PREFIXA ESTABLISH PREFIXING ON MAIN PROC @V407595 00258000
  264. TM APSTAT1,CPINITD IS SYSTEM IN IPL? @VMH0026 00259000
  265. BZ SETTDISP YES, BRANCH @VMH0026 00260000
  266. SPACE 00261000
  267. * THE FOLLOWING CODE GOES THROUGH THE CHAIN OF VMBLOKS AND * 00262000
  268. * OBTAINS A DEFERRED EXECUTION BLOCK FOR EACH. ALSO, VMCPTIME * 00263000
  269. * AND VMAPTIME ARE ADJUSTED TO THE AP MODE VALUES. * 00264000
  270. SPACE 00265000
  271. USING VMBLOK,R11 @VMH0026 00266000
  272. SPACE 00267000
  273. L R11,ASYSVM GET ADDRESS OF SYSTEM VMBLOK @VMH0026 00268000
  274. MVC VMAPTIME,APSPTIME STORE THE AP SUP. TIME INITIAL VALUE X00269000
  275. @VMH0026 00270000
  276. * 00271000
  277. *THE FOLLOWING CODE ADJUSTS VMCPTIME TO VMTTIME-X'3FFFFFFFFFFFF000' 00272000
  278. * 00273000
  279. LM R0,R1,VMTTIME GET VMTTIME IN EVEN-ODD REGISTERS X00274000
  280. @VMH0026 00275000
  281. SL R0,SUB4 SUBTRACT X'4000000000000000' @VMH0026 00276000
  282. AL R1,ADD1 ADD BACK IN X'0000000000001000' @VMH0026 00277000
  283. BC 12,NOCARRY BRANCH IF NO CARRY ON THE ADDITION X00278000
  284. @VMH0026 00279000
  285. AL R0,F1 ADD IN CARRY @VMH0026 00280000
  286. NOCARRY STM R0,R1,VMCPTIME STORE ADJUSTED VMCPTIME VALUE @VMH0026 00281000
  287. * 00282000
  288. L R11,VMPNT GET FIRST VMBLOK ADDR IN CYCLIC CHAIN X00283000
  289. @VMH0026 00284000
  290. LR R10,R11 SAVE ENDING ADDRESS @VMH0026 00285000
  291. VMLOOP DS 0H @VMH0026 00286000
  292. MVC VMAPTIME,APSPTIME STORE THE AP SUP. TIME INITIAL VALUE X00287000
  293. @VMH0026 00288000
  294. LM R0,R1,VMTTIME GET VMTTIME IN REGISTERS @VMH0026 00289000
  295. SL R0,SUB4 SUBTRACT X'4000000000000000' @VMH0026 00290000
  296. AL R1,ADD1 ADD BACK IN X'0000000000001000' @VMH0026 00291000
  297. BC 12,NOTCARRY BRANCH IF NO CARRY @VMH0026 00292000
  298. AL R0,F1 ADD IN CARRY @VMH0026 00293000
  299. NOTCARRY STM R0,R1,VMCPTIME STORE ADJUSTED VMCPTIME VALUE @VMH0026 00294000
  300. LA R0,CPEXSIZE GET SIZE OF BLOCK IN DOUBLE WORDS X00295000
  301. @VMH0026 00296000
  302. CALL DMKFREE OBTAIN STORAGE @VMH0026 00297000
  303. ST R1,VMDFTPNT SAVE ADDR OF DEFER EX.BLOK @VMH0026 00298000
  304. L R11,VMPNT GET ADDR OF NEXT VMBLOK @VMH0026 00299000
  305. CR R10,R11 END OF CHAIN @VMH0026 00300000
  306. BNE VMLOOP NO, DO THEM ALL @VMH0026 00301000
  307. L R11,SAVER11 RESTORE VMBLOK ADDRESS @VMH0026 00302000
  308. SPACE 00303000
  309. SETTDISP DS 0H @VMH0026 00304000
  310. LA R0,VMCPTIME-VMBLOK(,R0) GET ADDR MAIN PROC TIMER@V4M0203 00305000
  311. ST R0,TIMEDISP SAVE DISPLACEMENT IN PSA @V4M0203 00306000
  312. CHARGE START START CHARGING OPERATOR @V4M0203 00307000
  313. LCTL C0,C0,CR0INTMN ESTABLISH VALUE OF CR0 ON MAIN @V407595 00308000
  314. * PROCESSOR. NOTE THAT TOD SYNC CHECKS WILL 00309000
  315. * BE ENABLED BY DMKCLK. THIS WILL SUPPRESS 00310000
  316. * ALL SYNC CHECKS UNTIL CLOCKS ARE SET. 00311000
  317. STCTL C0,C0,CPCREG0 INITIALIZE CR0 FOR MAIN PROC @V407595 00312000
  318. OI APSTAT1,APUOPER INDICATE THE APU IS NOW @V407595 00313000
  319. * OPERATIONAL @V407595 00314000
  320. LOCK OBTAIN,TYPE=SYS,SPIN=NO @VA07480 00315000
  321. BNZ APNOLOK LOCK NOT AVAILABLE, TERM VM @VA07611 00316000
  322. L R1,SAVER11 ADDRESS OF VMBLOK TO R1 @VMH0001 00317000
  323. LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO LOCK THE OPERATOR'S @V407595 00318000
  324. * VMBLOK FOR THE DISPATCHER. 00319000
  325. BNZ APNOLOK LOCK NOT AVAILABLE, TERM VM @VA07611 00320000
  326. C R1,LASTUSER WAS LASTUSER JUST LOCKED? @VMH0001 00321000
  327. BE USERSLKD YES, BRANCH @VMH0001 00322000
  328. L R1,LASTUSER GET LASTUSER VMBLOK ADDRESS @VMH0001 00323000
  329. C R1,ASYSVM IS LASTUSER THE SYSTEM VMBLOK? @VMH0001 00324000
  330. BE USERSLKD YES, BRANCH @VMH0001 00325000
  331. LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO LOCK LASTUSER @VMH0001 00326000
  332. BNZ APNOLOK LOCK NOT AVAILABLE, TERMINATE VM @VMH0001 00327000
  333. USERSLKD DS 0H @VMH0001 00328000
  334. L R2,REALSAVE RESTORE DMKIOGAP REAL ADDRESS @V407595 00329000
  335. CALL DMKPTRUL UNLOCK DMKIOGAP. @V407595 00330000
  336. EXIT @V407595 00331000
  337. APERROR EQU * @V407595 00332000
  338. MVC RSRTNPSW(L8),APIRSTNW RESTORE RESTART NEW PSW @V407595 00333000
  339. BALR R15,0 SET CONDITION CODE IN WORK REG @V407595 00334000
  340. STCM R15,CONDCODE,XWAIT4+N4 STORE CC IN WAIT PSW. @V407595 00335000
  341. * NOTE PSW IS IN BC FORMAT. 00336000
  342. LPSW XWAIT4 LOAD ERROR WAIT CODE =X'15' @V407595 00337000
  343. SPACE 00338000
  344. APNOLOK DS 0H SYTEM/VMBLOK LOCK NOT AVAILABLE @VA07611 00339000
  345. ABEND 1 TERMINATE VM/370 @VA07611 00340000
  346. EJECT 00341000
  347. ENTRY DMKAPIAP APU INITIALIZATION ROUTINE @V407595 00342000
  348. DMKAPIAP DS 0D @V407595 00343000
  349. L R11,ASYSOP OBTAIN OPERATOR VMBLOK ADDRESS @V4M0106 00344000
  350. * TO SATISFY SVC INTERFACE. 00345000
  351. L R12,TEMPSAVE SET BASE TO MAINLINE DMKAPI @V407595 00346000
  352. L R14,TEMPSAVE+4 ADDRESS ATTACHED PROCESSOR'S PSA @VA09386 00347110
  353. L R14,TRACSTRT(R14) OBTAIN VALUE OF TRACSTRT @V407595 00348000
  354. ST R14,TRACSTRT RESTORE TRACE TABLE START @V407595 00349000
  355. * ADDRESS IN ABSOLUTE 0. IT WAS OVERLAID 00350000
  356. * AS A RESULT OF THE DMKAPI PSW RESTART. 00351000
  357. MVC RSRTNPSW(N8),APIRSTNW RESTORE RESTART NEW PSW @V407595 00352000
  358. * IN ABSOLUTE 0 IN CASE RESET AND RESTART 00353000
  359. * ARE PRESSED BY THE OPERATOR. 00354000
  360. SCKC FFS INIT APU TOD CLOCK COMPARATOR @V407595 00355000
  361. SPT PROBTIME INIT APU CPU TIMER @V407595 00356000
  362. LCTL C1,C14,BALR1 ESTABLISH CR'S FOR THE APU @V407595 00357000
  363. LCTL C0,C0,CR0INTAP ESTABLISH CR0 FOR THE APU - @V407595 00358000
  364. * DISABLED FOR TOD SYNC CHECKS. 00359000
  365. LCTL C2,C2,ZEROES INHIBIT I/O INTERRUPTS ON THE @V407595 00360000
  366. * APU. 00361000
  367. SPX TEMPSAVE+4 START PREFIXING ON THE ATTACHED @VA09386 00362100
  368. STCTL C0,C0,CPCREG0 SET CR0 FOR THE APU. @V407595 00363000
  369. XI TRACPROC,PROCAPU SET TRACE TABLE IDENTIFIER @V60B7AB 00364100
  370. * TO OPPOSITE OF ONLINE PROC'S IDENT 00364200
  371. NI APSTAT1,FF-PROCIO INDICATE THAT THIS PROCESSOR @V407595 00366000
  372. * LACKS I/O CAPABILITY. 00367000
  373. XI APSTAT1,PROCIPL THIS PROC IS THE IPL PROC ONLY @V60B7AA 00367050
  374. * IF THE ONLINE PROC IS NOT PROCIPL 00367100
  375. * 00367110
  376. SPACE 00367120
  377. * TEST FOR CP ASSIST @V5DAACD 00367130
  378. * IF CPA AVAILABLE ON THE MAIN PROCEESOR: @V5DAACD 00367140
  379. * 1) ISSUE STORE CPASSIST LV ID (STECPSVM) INSTRUCTION. @V5DAACD 00367150
  380. * 2) COMPARE AP AND MAIN MICRO CODE LEVELS. @V5DAACD 00367160
  381. * 3) IF CPA AVAILABLE AND LV. NUMBERS ARE EQUAL SET CPA @V5DAACD 00367170
  382. * AVAILABLE AND ON. @V5DAACD 00367180
  383. * 4) IF LV NUMBERS ARE NOT EQUAL / CPA NOT AVAILABLE ON @V5DAACD 00367190
  384. * THE AP BUT AVAILABLE ON MAIN RESET CPA FLAGS ON @V5DAACD 00367200
  385. * BOTH PROCESSOR'S AND NOP ALL CPA OP'S @V5DAACD 00367210
  386. * @V5DAACD 00367220
  387. NI CPSTAT2,X'FF'-(CPASTAVL+CPASTON) SET CPA OFF @VA09614 00367230
  388. L R2,PREFIXA *ADDRESSABILITY TO MAIN PSA - @V5DAACD 00367240
  389. * ADDRESS IS SET TO ABSOLUTE 0 @V5DAACD 00367250
  390. * BECAUSE MAIN PREFIX AREA HAS NOT BEEN @V5DAACD 00367260
  391. * MOVED/ESTABLISHED AT THIS TIME..... @V5DAACD 00367270
  392. TM CPSTAT2-PSA(R2),CPASTAVL **CPA ON MAIN PROC.? @V5DAACD 00367280
  393. BNO APINOCPA NO-FORGET IT BOTH CPU'S @V5DAACD 00367290
  394. * REQUIRE CPA AND 'CPI' HAS @V5DAACD 00367300
  395. * ALREADY NOOP'ED CPA OP'S. @V5DAACD 00367310
  396. MVC TEMPR0(N4),ZEROES USE TEMPRO TO SET CTL REG. 6 @V5DAACD 00367320
  397. OI TEMPR0,X'02' SET CPASSIST ENABLE MASK @V5DAACD 00367330
  398. LCTL C6,C6,TEMPR0 ENABLE CP ASSIST FEATURE. @V5DAACD 00367340
  399. LA R1,APIINTA SETUP FOR POSSIBLE PGM CK. @V5DAACD 00367350
  400. ST R1,PRNPSW+4 IF CP ASSIST NOT ON AP @V5DAACD 00367360
  401. LA R3,SVCPALV LOC. TO STORE LV. NUMBER @V5DAACD 00367370
  402. DS 0H ISSUE 'ST CP ASSIST LEVEL' @V5DAACD 00367380
  403. DC X'E612',S(0(R3),0) @V5DAACD 00367390
  404. * @V5DAACD 00367400
  405. OI CPSTAT2,CPASTAVL+CPASTON SET CPA AVAIL. AND ON @V5DAACD 00367410
  406. L R3,=A(DMKCPEML) LOC. OF MAIN PROC. LV. NUMBER @V5DAACD 00367420
  407. CLC SVCPALV,0(R3) LV NUMBERS EQUAL? @V5DAACD 00367430
  408. BE APICPAOK CPA AVAIL AND LV EQ ALLSET @V5DAACD 00367440
  409. APIINTA EQU * CPA UNAVAIL. / LV NUMBERS ARE NOT EQUAL @V5DAACD 00367450
  410. NI CPSTAT2,X'FF'-(CPASTAVL+CPASTON) SET BOTH @V5DAACD 00367460
  411. NI CPSTAT2-PSA(R2),X'FF'-(CPASTAVL+CPASTON) PREFIX @V5DAACD 00367470
  412. * FLAGS TO INDICATE CPA UNAVAILABLE AND CLEAR CP @V5DAACD 00367480
  413. NI CPCREG6-PSA(R2),X'FD' ASSIST ENABLE FLS IN CTL @V5DAACD 00367490
  414. NI CPCREG6,X'FD' REG 6 FOR BOTH PROCESSOR'S @V5DAACD 00367500
  415. * ALSO NOP ALL CP ASSIST INSTRUCTIONS MAIN HUNG IN LOOP @V5DAACD 00367510
  416. * WAITING FOR AP TO COMPLETE INITILIZATION. @V5DAACD 00367520
  417. LA R3,CPATABLE GET CP ASSIST ADDR. LIST @V5DAACD 00367530
  418. LA R4,4 TABLE INCREMENT @V5DAACD 00367540
  419. LA R5,CPATBLND ADDR. OF TABLE END. @V5DAACD 00367550
  420. CLEARCPA L R6,0(R3) GET CPA INST. ADDR. @V5DAACD 00367560
  421. MVC 0(6,R6),=X'0700,47000000' AND REMOVE IT.... @V5DAACD 00367570
  422. BXLE R3,R4,CLEARCPA LOOP THROUGH TABLE. @V5DAACD 00367580
  423. APICPAOK EQU * @V5DAACD 00367590
  424. MVC PRNPSW(8),APIPGMNW RESTORE PGM NEW PSW @V5DAACD 00367600
  425. LCTL C6,C6,ZEROES NO CPA UNTIL IPL COMPLETES. @V5DAACD 00367610
  426. APINOCPA EQU * @V5DAACD 00367620
  427. SPACE 00367630
  428. CALL DMKIOGAP CALL MCH ROUTINE TO INITIALIZE @V407595 00368000
  429. * CR15 FOR EXTENDED LOGOUT 00369000
  430. EJECT 00370000
  431. * 00371000
  432. * TEST FOR VM ASSIST @V407595 00372000
  433. * TO DO THIS, DO AN SSM INSTRUCTION IN PROBLEM STATE. IF CP RECEIVES 00373000
  434. * THE PROGRAM INTERRUPT, VM ASSIST IS NOT PRESENT. IF VM 00374000
  435. * ASSIST HANDLES THE SSM, DO AN SVC TO GET BACK TO SUPERVISOR STATE. 00375000
  436. * 00376000
  437. L R11,ASYSVM ADDRESS OF SYSTEM VMBLOK @V407595 00377000
  438. USING VMBLOK,R11 EST ADDRESSIBILITY TO VMBLOK @V407595 00378000
  439. LA R1,APISVC SET SVC NEW PSW TO POINT TO @V407595 00379000
  440. ST R1,SVCNPSW+N4 APISVC @V407595 00380000
  441. LA R1,APIPROG SET PROGRAM NEW PSW TO POINT @V407595 00381000
  442. ST R1,PRNPSW+N4 TO APIPROG @V407595 00382000
  443. MVC RUNCR0(4),CPCREG0 SET UP REAL CR0 @V407595 00383000
  444. MVC RUNCR1(4),VMSEG SET UP REAL CR1 @V407595 00384000
  445. * SET UP MICROCODE POINTER LIST 00385000
  446. MVC TEMPR2,VMSEG SYSTEM SEGMENT TABLE IN PTR LIST @V407595 00386000
  447. LA R1,RUNCR0 VIRT CR0 SAME AS REAL CR0 @V407595 00387000
  448. ST R1,TEMPR3 @V407595 00388000
  449. LA R1,SSMTEST SET UP PROPER @VA10147 00388300
  450. ST R1,TESTPSW+4 RETURN FROM TEST @VA10147 00388600
  451. MVC TEMPR4(4),ZEROES VIRT. PSW POINTER @V407595 00389000
  452. LA R1,BALRSAVE WORKSPACE ADDRESS @V407595 00390000
  453. ST R1,TEMPR5 @V407595 00391000
  454. * SET UP C-REG 6 - USE TEMPR0 TO SET IT UP 00392000
  455. LA R1,TEMPR2 ADDRESS OF MICROCODE PTR LIST @V407595 00393000
  456. ST R1,TEMPR0 INTO C-REG 6 @V407595 00394000
  457. OI TEMPR0,VMMFE+VMMSVC TURN MICROCODE ON & SVCS OFF@V407595 00395000
  458. LCTL C6,C6,TEMPR0 LOAD CR6 @V407595 00396000
  459. LCTL C0,C1,RUNCR0 LOAD REAL CR0 AND CR1 @V407595 00397000
  460. LPSW TESTPSW GO INTO PROBLM STATE & ISSUE SSM @V407595 00398000
  461. DS 0D @V407595 00399000
  462. TESTPSW DC X'000D0000' PROB STATE PSW @VA10147 00400100
  463. DC F'0' @VA10147 00401100
  464. SSMTEST SSM *+1 WILL MICROCODE HANDLE THIS? @V407595 00402000
  465. SVC 30 YES THEN MUST RETURN TO @V407595 00403000
  466. * SUPERVISOR STATE 00404000
  467. APIPROG EQU * IF MICROCODE DOESNT HANDLE SSM, @V407595 00405000
  468. * PROGRAM INTERRUPT COMES HERE 00406000
  469. NI CPSTAT2,X'FF'-CPMICAVL-CPMICON INDICATE VM @V407595 00407000
  470. * ASSIST NOT AVAILABLE & NOT ON 00408000
  471. B NPSWS @V407595 00409000
  472. APISVC EQU * IF MICROCODE HANDLES SSM, SVC @V407595 00410000
  473. * INTERRUPT COMES HERE 00411000
  474. OI CPSTAT2,CPMICAVL+CPMICON INDICATE VM ASSIST @V407595 00412000
  475. * AVAILABLE & ON 00413000
  476. NPSWS MVC SVCNPSW(8),APISVCNW RESTORE SVC NEW PSW @V407595 00414000
  477. MVC PRNPSW(8),APIPGMNW RESTORE PROGRAM NEW PSW @V407595 00415000
  478. LCTL C6,C6,ZEROES RESTORE CR6 @V407595 00416000
  479. L R11,ASYSOP RESTORE PTR TO OPERATOR VMBLOK @V4M0106 00417000
  480. EJECT 00418000
  481. XC PGREAD(CLRCNT),PGREAD CLEAR COUNTER AREA IN PSA @V407595 00419000
  482. * ON APU THAT MAY HAVE BEEN USED WHILE IN 00420000
  483. * ABSOLUTE 0 (I.E., BEFORE THE PSA MOVE) 00421000
  484. XC EXOPSW(TIMER-EXOPSW),EXOPSW CLEAR LOW CORE @VA07843 00422000
  485. * BETWEEN EXTERNAL OLD AND INTERVAL TIMER. 00423000
  486. MVI CPSTATUS,CPWAIT+CPSUPER IND CP IN IDLE & SUP @VA11576 00424500
  487. MVC IDLEWAIT(N8),HIGHPOS TOTAL APU IDLE STATE TIME @V407595 00425000
  488. MVC PAGEWAIT(N8),HIGHPOS TOTAL PAGE IDLE WAIT TIME @V407595 00426000
  489. MVC IONTWAIT(N8),HIGHPOS TOTAL SYSTEM I/O WAIT TIME @V407595 00427000
  490. MVC PROBTIME(N8),HIGHPOS TOTAL SYSTEM PROBLEM STATE @V407595 00428000
  491. * TIME. @V407595 00429000
  492. STIDP CPUID STORE CPU IDENTIFIER @V407595 00430000
  493. OI APSTAT1,APUOPER INDICATE APU NOW OPERATIONAL @V407595 00431000
  494. LA R0,VMAPTIME-VMBLOK(,R0) GET ADDR ATTACHED TIMER @V4M0203 00432000
  495. ST R0,TIMEDISP SAVE DISPLACEMENT IN PSA @V4M0203 00433000
  496. OI APIFLAG1,APUSPIN LET MAIN PROCESSOR CONTINUE @V407595 00434000
  497. LPSW ENABLEWT ENABLE FOR EXTERNAL INTERRUPTS. @V407595 00435000
  498. * NOTE THAT CR0 WAS PREVIOUSLY ESTABLISHED. 00436000
  499. EJECT 00437000
  500. * START OF ATTACHED PROCESSOR DEFINITIONS 00438000
  501. DS 0F @V407595 00439000
  502. APIIOGAP DC V(DMKIOGAP) PTR TO DMKIOGAP @V407595 00440000
  503. APIDMPSA DC V(DMKDMPSA) POINTER TO PSA'S IN DMKDMP @VA09386 00440100
  504. APIDMPAA DC V(DMKDMPAA) POINTER TO ATTACHED PROC ADDR. @VA09386 00440200
  505. DS 0D PSW'S ON DBW BOUNDARY @V407595 00441000
  506. XWAIT4 DC X'0002000000000015' @V407595 00442000
  507. APISVCNW DC A(MCHEKENB,DMKSVCIN) SYSTEM SVC NEW PSW @V407595 00443000
  508. APIPGMNW DC A(MCHEKENB,DMKPRGIN) SYSTEM PGM NEW PSW @V407595 00444000
  509. APIRSTNW DC A(MCHEKENB,DMKPSADU) SYSTEM RESTART NEW PSW @V407595 00445000
  510. RESTAP DC A(MCHEKENB,DMKAPIAP) RESTART NEW PSW FOR APU @V407595 00446000
  511. ENABLEWT DC AL1(EXTMASK),AL3(WAITENB),AL4(0) ENABLED WAIT @V407595 00447000
  512. DISABLWT DC AL1(0),AL1(EXTMODE+MCHEK+WAIT),AL4(0),AL2(0) @V407595 00448000
  513. CR0INTMN DC AL1(BLKMPX+NOSSKCK,PAGE4K) HRC004DK 00449490
  514. DC AL1(MFAMASK+EMSMASK+XCMASK+CKCMASK+CPTMASK) @V4M0143 00450000
  515. DC AL1(INTMASK+KEYMASK) BITMASK FOR CR0 ON MAIN P. @V407595 00451000
  516. CR0INTAP DC AL1(BLKMPX+NOSSKCK,PAGE4K) HRC004DK 00452490
  517. DC AL1(MFAMASK+EMSMASK+XCMASK+CKCMASK+CPTMASK) @V4M0143 00453000
  518. DC AL1(INTMASK+KEYMASK) BITMASK FOR CR0 ON APU @V407595 00454000
  519. MFAONLY DC AL1(BLKMPX+NOSSKCK) HRC004DK 00455003
  520. DC AL1(PAGE4K,MFAMASK,N0) MFA ONLY FOR CR0 HRC004DK 00455006
  521. EJECT 00455010
  522. * @V5DAACD 00455020
  523. * -----CP ASSIST LEVEL AND INSTRUCTION TABLE @V5DAACD 00455030
  524. * @V5DAACD 00455040
  525. DS 0D @V5DAACD 00455050
  526. SVCPALV DC F'0' LEVEL OF AP PROCESSOR.... @V5DAACD 00455060
  527. * ----------------------------------------- @V5DAACD 00455070
  528. * NOTE: THE FOLLOWING TABLE ALSO RESIDES IN MODULE 'DMKCPI' @V5DAACD 00455080
  529. * --------------------------------------- @V5DAACD 00455090
  530. CPATABLE DS 0F CP ASSIST INSTRUCTION ADDRESS'S @V5DAACD 00455100
  531. DC V(DMKFREE) E600 @V5DAACD 00455110
  532. DC V(DMKFRET) E601 @V5DAACD 00455120
  533. DC V(DMKPTRLK) E602 @V5DAACD 00455130
  534. DC V(DMKPTRUL) E603 @V5DAACD 00455140
  535. DC V(DMKCCW0) E604 @V5DAACD 00455150
  536. DC V(DMKUNTFR) E605 @V5DAACD 00455160
  537. DC V(DMKSCNVU) E606 @V5DAACD 00455170
  538. DC V(DMKDSP1) E607 @V5DAACD 00455180
  539. DC V(DMKCCWB1) E608 @V5DAACD 00455190
  540. DC V(DMKCCWB2) E608 @V5DAACD 00455200
  541. DC V(DMKCCWB3) E608 @V5DAACD 00455210
  542. DC V(DMKCCWB4) E608 @V5DAACD 00455220
  543. DC V(DMKCCWB5) E608 @V5DAACD 00455230
  544. DC V(DMKCCWB6) E608 @V5DAACD 00455240
  545. DC V(DMKCCWB7) E608 @V5DAACD 00455250
  546. DC V(DMKCCWB8) E608 @V5DAACD 00455260
  547. DC V(DMKCCWL1) E609 @V5DAACD 00455270
  548. DC V(DMKCCWL2) E609 @V5DAACD 00455280
  549. DC V(DMKCCWL3) E609 @V5DAACD 00455290
  550. DC V(DMKCCWL4) E609 @V5DAACD 00455300
  551. DC V(DMKCCWL5) E609 @V5DAACD 00455310
  552. DC V(DMKVATZS) E60A @V5DAACD 00455320
  553. DC V(DMKVATZP) E60B @V5DAACD 00455330
  554. DC V(DMKCCW1) E60C @V5DAACD 00455340
  555. DC V(DMKDSP0) E60D @V5DAACD 00455350
  556. DC V(DMKSCNRU) E60E @V5DAACD 00455360
  557. DC V(DMKCCWGN) E60F @V5DAACD 00455370
  558. DC V(DMKUNTRN) E610 @V5DAACD 00455380
  559. DC V(DMKDSP2) E611 @V5DAACD 00455390
  560. DC V(DMKVMASH) E613 @V5DAACD 00455400
  561. CPATBLND EQU *-4 @V5DAACD 00455410
  562. EJECT 00455420
  563. * 00456000
  564. * DEFINE DMKAPI FLAGS, REGISTER SAVEAREAS AND CONSTANTS @V407595 00457000
  565. * 00458000
  566. SAVETIME DS F SAVE AREA FOR INTERVAL TIMER @V407595 00459000
  567. REALSAVE DS F REAL STORAGE ADDRESS OF DMKIOGAP @V407595 00460000
  568. RETADDR DS F RETURN TO DMKAPIAP FROM DMKAPIIT @V407595 00461000
  569. APIPRFX DS 2F TEMPORARY SAVEAREA FOR PREFIXA/B @V407595 00462000
  570. APIBASE DS 2F SAVEAREA FOR BASEREGS @V407595 00463000
  571. HIGHPOS DC X'7FFFFFFFFFFFF000' HIGHEST POSITIVE VALUE IN @V4M0106 00464000
  572. APSPTIME DC X'3FFFFFFFFFFFF000' AP SUPERVISOR TIMER VALUE @VMH0026 00465000
  573. SUB4 DC X'40000000' @VMH0026 00466000
  574. ADD1 DC X'00001000' @VMH0026 00467000
  575. * DOUBLEWORD. 00468000
  576. F8192 DC F'8192' TWO PAGES @V407595 00469000
  577. F40000 DC F'40000' LOOP CONTROL FOR INTERVAL TIMER HRC008DK 00470490
  578. H32 DC H'32' DECREMENT CORE TABLE PTR BELOW @V407595 00471000
  579. * PREFIX AREA (I.E., -8K) 00472000
  580. APIWORK DS H DMKAPI INTERNAL FLAGS AND W.A. @V407595 00473000
  581. ORG APIWORK @V407595 00474000
  582. APIFLAG1 DS CL1 FLAG BYTE @V407595 00475000
  583. SYSMASK DS CL1 STOSM/STNSM WORK AREA @V407595 00476000
  584. * DEFINE BITS FOR APIFLAG1 @V407595 00477000
  585. APUSPIN EQU X'80' SPIN BIT @V407595 00478000
  586. API958MG DC X'151515' @V407595 00479000
  587. DC C'DMKAPI958I ATTACHED PROCESSOR NOW OPERATIONAL' 00480000
  588. * @V407595 00481000
  589. DC X'1515' @V407595 00482000
  590. API958LN EQU *-API958MG @V407595 00483000
  591. TMSG DC X'151515' @V407595 00484000
  592. DC C'TURN ON THE ATTACHED PROCESSOR''S INTERVAL TIMER' 00485000
  593. DC X'1515' @V407595 00486000
  594. TMSGL EQU *-TMSG @V407595 00487000
  595. EJECT 00488000
  596. PSA @V407595 00489000
  597. COPY EQU @V407595 00490000
  598. COPY VMBLOK @V407595 00491000
  599. COPY SAVE @V407595 00492000
  600. MCHEKENB EQU (MCHEK+EXTMODE)*X'10000' @V407595 00493000
  601. WAITENB EQU (MCHEK+EXTMODE+WAIT)*X'10000' @V407595 00494000
  602. PREFIX EQU PREFIXA-PSA @V407595 00495000
  603. CLRCNT EQU PSENDCLR-PGREAD @V407595 00496000
  604. END DMKAPI @V407595 00497000