User Tools

Site Tools


ibm:vm370-lib:cp:dmkcpi.assemble_src

DMKCPI Source

References

Source Listing

DMKCPI.ASSEMBLE.txt
  1. CPI TITLE 'DMKCPI (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. * 00003000
  4. * NOTE - DMKBLD AND DMKUDR ARE THE ONLY PAGEABLE MODULES 00004000
  5. * THAT NEED BE RESIDENT AT IPL TIME. 00005000
  6. * ALL OTHER MODULES SHOULD BE IN THE CP PAGEABLE AREA. 00006000
  7. * 00007000
  8. *. 00008000
  9. * MODULE NAME - 00009000
  10. * 00010000
  11. * DMKCPI 00011000
  12. * 00012000
  13. * FUNCTION - 00013000
  14. * 00014000
  15. * TO INITIALIZE VM/370'S CORE, WORKAREAS AND CONTROL BLOCKS, TO 00015000
  16. * LOG ON THE SYSTEM OPERATOR, TO MOUNT AND VERIFY ALL READY DASD 00016000
  17. * VOLUMES, AND, IN GENERAL, TO PREPARE THE SYSTEM FOR OPERATION 00017000
  18. * 00018000
  19. * ATTRIBUTES - 00019000
  20. * 00020000
  21. * NON-REUSABLE, PAGEABLE, ENTERED FROM DMKSAVRS VIA A GOTO AFTER 00021000
  22. * SYSTEM IPL SEQUENCE AND CHECKPOINT ARE COMPLETE 00022000
  23. * 00023000
  24. * ENTRY POINTS - 00024000
  25. * 00025000
  26. * DMKCPINT - START INITIALIZATION - ENTERED FROM DMKSAVRS 00026000
  27. * DMKCPIEM - ENABLE ALTERNATE OPERATOR'S CONSOLE - ENTERED 00027000
  28. * VIA A GOTO FROM DMKCNS 00028000
  29. * DMKCPICD - SYSTEM CREATION DATE 00029000
  30. * 00030000
  31. * ENTRY CONDITIONS - 00031000
  32. * 00032000
  33. * GPR10 = ADDRESS OF IPL'ED DEVICE 00033000
  34. * GPR12 = ADDRESS OF DMKCPI 00034000
  35. * 00035000
  36. * EXIT CONDITIONS - 00036000
  37. * 00037000
  38. * DMKCPI EXITS TO THE DISPATCHER (DMKDSPCH) VIA A GOTO TO AWAIT 00038000
  39. * INTERRUPTS FROM TP LINES OR THE OPERATOR'S CONSOLE 00039000
  40. * 00040000
  41. * CALLS TO OTHER ROUTINES - 00041000
  42. * 00042000
  43. * DMKALGON - AUTOLOG 'AUTOCOM' 00043000
  44. * DMKAPI - PERFORM INITIALIZATION FOR AP SUPPORT 00044000
  45. * DMKBLDRT - BUILD SYSTEM'S SEGMENT AND PAGE TABLES 00045000
  46. * DMKCFMEN - EXPLICIT OPERATOR LOGON FROM ALTERNATE CONSOLE 00046000
  47. * DMKCLK - SYNCHRONIZE THE TOD CLOCKS 00047000
  48. * DMKCNSEN - EXIT VIA GOTO TO ENABLE OPERATOR'S LINE 00048000
  49. * DMKCPVAE - AUTOMATIC RE-ENABLE OF LINES 00049000
  50. * DMKCQRFI - QUERY SYSTEM SPOOLING FILES 00050000
  51. * DMKCSOSD - START ALL UNIT RECORD DEVICES 00051000
  52. * DMKCVTBD - CONVERT A FULLWORD OF BINARY TO EBCDIC DECIMAL 00052000
  53. * DMKCVTBH - CONVERT A FULLWORD OF BINARY TO EBCDIC HEX 00053000
  54. * DMKCVTDT - CONVERT DATE AND TIME 00054000
  55. * DMKDSPCH - EXIT VIA GOTO AFTER PROCESSING IS FINISHED 00055000
  56. * DMKFREE - GET A BLOCK OF FREE SPACE 00056000
  57. * DMKFRET - RETURN A BLOCK TO FREE SPACE 00057000
  58. * DMKFRETR - INITIALIZE SYSTEM FREE STORAGE 00058000
  59. * DMKGRTID - Copy SYSID to 3270 status areas HRC108DK 00058100
  60. * DMKHVDPP - INITIALIZE PROGRAM PRODUCT BIT MAP 00059000
  61. * DMKIOEFL - FORMAT THE ERROR RECORDING LOGS 00060000
  62. * DMKIOSQR - QUEUE I/O REQUEST 00061000
  63. * DMKNETAE - AUTOMATIC RE-ENABLE OF NETWORK LINES 00062000
  64. * DMKNLDR - LOAD 370X PROGRAMS 00063000
  65. * DMKPGTPG - GET A DASD PAGE FOR PAGING SYSTEM TO DISK 00064000
  66. * DMKPTRAN - BRING IN PAGEABLE MODULE 00065000
  67. * DMKPTRLK - LOCK PAGES OF DMKCPI 00066000
  68. * DMKPTRUL - UNLOCK DMKCPI'S PAGES 00067000
  69. * DMKQCNRD - GET REPLIES FROM OPERATOR'S CONSOLE 00068000
  70. * DMKQCNWT - WRITE MESSAGES TO OPERATOR'S CONSOLE 00069000
  71. * DMKRPAPT - MOVE A PAGE FROM STORAGE TO DASD 00070000
  72. * DMKSCHST - SCHEDULE A TIMER REQUEST VIA TRQBLOK 00071000
  73. * DMKSCNRD - GET DEVICE ADDRESS 00072000
  74. * DMKSCNRU - GET REAL CH, CU, AND DEV BLOK FOR DEVICE ADDRESS 00073000
  75. * DMKSCNVS - GET DEVICE WITH GIVEN VOLID 00074000
  76. * DMKUDRBV - BUILD USER DIRECTORY PAGE LIST 00075000
  77. * DMKWRMST - PERFORM SYSTEM WARM START FUNCTIONS 00076000
  78. * 00077000
  79. * 00078000
  80. * EXTERNAL REFERENCES - 00079000
  81. * 00080000
  82. * DMKCKP - ADDRESS OF THE CHECKPOINT MODULE 00081000
  83. * DMKCPEID - THE CP VERSION LEVEL AND PLC ID 00082000
  84. * DMKCPEML - THE CP ASSIST LEVEL STORED HERE 00083000
  85. * DMKCPEND - END OF RESIDENT NUCLEUS 00084000
  86. * DMKDMPAU - ADDRESS OF RDEVBLOK FOR AUTO DUMP DEVICE 00085000
  87. * DMKDMPDV - ADDRESS OF RDEVBLOK FOR DUMP DEVICE 00086000
  88. * DMKDMPRC - ADDRESS OF DUMP FILE RECBLOK CHAIN 00087000
  89. * DMKDMPSF - DUMP FILE SFBLOK 00088000
  90. * DMKDSPNP - TOTAL NUMBER OF PAGES AVAILABLE FOR PAGING 00089000
  91. * DMKFREHI - START OF HIGH CORE FREE STORAGE AREA 00090000
  92. * DMKFRELG - VALUE OF LARGEST SIZE BLOCK REQUESTED 00091000
  93. * DMKFRELO - END OF LOW CORE FREE STORAGE AREA 00092000
  94. * DMKFRESV - ADDRESS OF RESERVED SAVEAREA USED BY "EXTEND" 00093000
  95. * DMKMCHIN - ADDRESS OF MACHINE CHECK INTERRUPT HANDLER 00094000
  96. * DMKPAGHI - SAME AS DMKFREHI 00095000
  97. * DMKPAGLO - SAME AS DMKFRELO MINUS LENGTH OF ONE PAGING IOBLOK 00096000
  98. * DMKPAGST - INITIAL PAGING INTERVAL CONSTANT 00097000
  99. * DMKPGTBN - ADDRESS OF VIRTUAL BUFFER NUMBER DIVIDED BY 8 00098000
  100. * DMKPGTP0 - ANCHOR FOR PAGING 3330'S 00099000
  101. * DMKPGTP4 - ANCHOR FOR PAGING 2314'S 00100000
  102. * DMKPGTP5 - ANCHOR FOR PAGING 2305'S 00101000
  103. * DMKPGTTM - NUMBER OF TEMP CYLINDERS 00102000
  104. * DMKPGTTU - NUMBER OF TEMP CYLINDERS ALLOCATED 00103000
  105. * DMKPGTT0 - ANCHOR FOR SPOOLING/PAGING 3330'S 00104000
  106. * DMKPGTT4 - ANCHOR FOR SPOOLING/PAGING 2314'S 00105000
  107. * DMKPGTT5 - ANCHOR FOR SPOOLING/PAGING 2305'S 00106000
  108. * DMKPGT4P - ANCHOR FOR PAGING 3340'S 00107000
  109. * DMKPGT5P - ANCHOR FOR PAGING 3350'S 00108000
  110. * DMKPGT7P - Anchor for spooling/paging 3375's HRC106DK 00108100
  111. * DMKPGT8P - Anchor for spooling/paging 3380's HRC106DK 00108200
  112. * DMKPGT4T - ANCHOR FOR SPOOLING/PAGING 3340'S 00109000
  113. * DMKPGT5T - ANCHOR FOR SPOOLING/PAGING 3350'S 00110000
  114. * DMKPGT7T - Anchor for spooling/paging 3375's HRC106DK 00110100
  115. * DMKPGT8T - Anchor for spooling/paging 3380's HRC106DK 00110200
  116. * DMKPGT90 - 90 PERCENT OF TEMP CYLINDERS 00111000
  117. * DMKPRGIN - ADDRESS OF PROGRAM CHECK INTERRUPT HANDLER 00112000
  118. * DMKPSADU - SYSTEM DUMP ROUTINE 00113000
  119. * DMKPSAEX - ADDRESS OF EXTERNAL INTERRUPT HANDLER 00114000
  120. * DMKPSAHI - SAME AS DMKFREHI 00115000
  121. * DMKPSALO - SAME AS DMKFRELO MINUS LENGTH OF ONE SAVE-AREA 00116000
  122. * DMKPSANS - START OF SAVE-AREA CHAIN USED BY DMKPSASV 00117000
  123. * DMKPSASV - ADDRESS OF SVC INTERRUPT HANDLER 00118000
  124. * DMKPTRFA - ADDRESS OF RESERVED CPEXBLOK USED BY DMKPTRFR 00119000
  125. * DMKPTRFN - NUMBER OF FREE PAGES IN CORTABLE 00120000
  126. * DMKPTRF1 - ANCHOR FOR FREE PAGES 00121000
  127. * DMKPTRRM - VALUE EQUAL TO REAL MACHINE SIZE (FOR CP ASSIST) 00122000
  128. * DMKRIOCN - DEVICE ADDRESS OF ALTERNATE CONSOLE 00123000
  129. * DMKRIORN - TABLE OF 370X'S 00124000
  130. * DMKSAV - NUCLEUS SYSTEM SAVE ROUTINE 00125000
  131. * DMKSCHLI - SAMPLE TIME INTERVAL FOR MEASUREMENT PERIODS 00126000
  132. * DMKSCHMD - MIDNIGHT DATE CHANGE ROUTINE 00127000
  133. * DMKSCHQ1 - Q1 TIME SLICE 00128000
  134. * DMKSCHQ2 - Q2 TIME SLICE 00129000
  135. * DMKSLC - ADDRESS OF END OF V=R AREA OR ZERO 00130000
  136. * DMKSYM - ADDRESS OF SYSTEM SYMBOL TABLE 00131000
  137. * DMKSYMTB - BEGINNING OF SYMBOL TABLE MODULE 00132000
  138. * DMKSYSCS - ADDRESS OF SYSTEM CORTABLE 00133000
  139. * DMKSYSDU - USERID TO RECEIVE AUTO SYSTEM DUMP 00134000
  140. * DMKSYSDW - WEEKDAY IN EBCDIC 00135000
  141. * DMKSYSIC - Count of SYSID entries HRC108DK 00135100
  142. * DMKSYSID - Default / current SYSID HRC108DK 00135200
  143. * DMKSYSIL - Beginning of list of SYSID entries HRC108DK 00135300
  144. * DMKSYSNU - CYLINDER NUMBER FOR START OF NUCLEUS 00136000
  145. * DMKSYSOC - ADDRESS OF OWNED VOLUME COUNT 00137000
  146. * DMKSYSOP - ADDRESS OF OPERATOR'S VMBLOK 00138000
  147. * DMKSYSOW - ADDRESS OF SYSTEM OWNED VOLUME LIST 00139000
  148. * DMKSYSUS - ADDRESS OF USER VOLUME LIST HRC033DK 00139300
  149. * DMKSYSUC - ADDRESS OF USER VOLUME COUNT HRC033DK 00139600
  150. * DMKSYSRM - REAL SIZE OF MACHINE 00140000
  151. * DMKSYSRV - SYSGEN SIZE OF MACHINE 00141000
  152. * DMKSYSTZ - TIME ZONE CORRECTION CONSTANT 00142000
  153. * DMKSYSUD - DISK ADDRESS OF START OF DIRECTORY 00143000
  154. * DMKSYSVL - SYSRES VOLUME SERIAL 00144000
  155. * DMKSYSER - ERR RECORDING AREA LOCATION INFORMATION HRC075DK 00144400
  156. * DMKSYSWM - WARM START AREA LOCATION INFORMATION HRC075DK 00144500
  157. * DMKSYSCH - CHECKPOINT AREA LOCATION INFORMATION HRC075DK 00144600
  158. * DMKVMI - ADDRESS OF IPL SIMULATOR 00145000
  159. * 00146000
  160. SPACE 00147000
  161. * 00148000
  162. * TABLES / WORKAREAS - 00149000
  163. * 00150000
  164. * VMBLOK, RDEVBLOK, ALOCBLOK, CORTABLE, MICBLOK 00151000
  165. * 00152000
  166. * REGISTER USAGE - 00153000
  167. * 00154000
  168. * GPR0 = PARMS FOR CALLS TO DMKFREE/DMKFRET 00155000
  169. * GPR1 = ADDRESS OF FREE STORAGE AREAS RETURNED BY DMKFREE 00156000
  170. * GPR2 = PARMS PASSED TO CALLED ROUTINES 00157000
  171. * GPR10 = INTERNAL SUBROUTINE LINKAGE 00158000
  172. * GPR11 = VMBLOK BASE 00159000
  173. * GPR12 = DMKCPI BASE 00160000
  174. * GPR13 = DMKCPI BASE 00161000
  175. * GPR14 = EXTERNAL LINKAGE 00162000
  176. * GPR15 = EXTERNAL LINKAGE 00163000
  177. * 00164000
  178. * ALL OTHER REGISTERS ARE USED AS SCRATCH REGISTERS 00165000
  179. * 00166000
  180. * NOTES - 00167000
  181. * 00168000
  182. * NONE 00169000
  183. * 00170000
  184. EJECT 00171000
  185. * 00172000
  186. * 00173000
  187. * OPERATION - 00174000
  188. * 00175000
  189. * 1. CLEAR LOW CORE AND SET NEW PSWS. 00176000
  190. * 2. SET THE PSW RESTART PSW AT LOCATION 0. 00177000
  191. * 3. SET CONTROL REGISTERS. 00178000
  192. * 3A. IF MULTIPROCESSOR FEATURE INSTALLED AND IF SYSTEM 00179000
  193. * IS GEN'D FOR AP SUPPORT, LOCATE THE ADDRESS OF THE 00180000
  194. * APU. 00181000
  195. * 4. LOOP THROUGH ALL OF MAIN STORAGE SETTING STORAGE KEYS 00182000
  196. * TO ZERO; WHEN PROGRAM CHECK OCCURS, CALCULATE MAIN 00183000
  197. * STORAGE SIZE AND SAVE. 00184000
  198. * 5. CHECK FOR CP ASSIST ON CPU. IF PRESENT, FLAG AVAILABLE 00185000
  199. * (PENDING LEVEL CHECK - DONE AFTER PROMPT FOR TIME OF DAY). 00186000
  200. * IF TEST PRODUCES PROGRAM CHECK, SET CP ASSIST UNAVAILABLE 00187000
  201. * AND REPLACE ALL CP ASSIST INSTRUCTIONS WITH NO-OPS. 00188000
  202. * 6. INITIALIZE CORTABLE. 00189000
  203. * 7. CALL DMKFRETR TO INITIALIZE THE HIGH CORE PAGES OF THE 00190000
  204. * SYSTEM AS A FREE STORAGE AREA, AND TO RELEASE THE UNUSED 00191000
  205. * PORTION OF THE LAST RESIDENT NUCLEUS PAGE. 00192000
  206. * IF RUNNING IN AP MODE, ASSIGN THE TWO HIGHEST REAL 00193000
  207. * STORAGE FRAMES AS CP OWNED TO BE USED FOR PREFIXING. 00194000
  208. * 8. CALL DMKFREE FOR 'CPEXSIZE*16' DOUBLE WORDS OF STORAGE 00195000
  209. * TO SATISFY FREE STORAGE CALLS DURING EXTEND PROCESSING 00196000
  210. * ALSO, IF IN AP MODE, OBTAIN STORAGE FOR TWO ADDITIONAL 00197000
  211. * CPEXBLOKS AND STORAGE AS DEFINED BY DMKFREAP. ONE 00198000
  212. * OF THE CPEXBLOK'S WILL BE USED BY THE SWITCH MACRO 00199000
  213. * AND THE OTHER WILL BE ASSIGNED AS A DEFERRED EXECUTION 00200000
  214. * BLOCK FOR THE OPERATOR'S VMBLOK. THE DMKFREAP 00201000
  215. * STORAGE IS USED AS A BACK POCKET FOR DMKFRE WHEN 00202000
  216. * FREE STORAGE MUST BE EXTENDED AND THE SYSTEM LOCK 00203000
  217. * IS NOT AVAILABLE. 00204000
  218. * 9. LOOP THROUGH ALL RDEVBLOKS DOING A HALT I/O TO EACH 00205000
  219. * DEVICE; IF THERE IS NO REAL DEVICE FOR THE RDEVBLOK 00206000
  220. * THEN SKIP TO THE NEXT DEVICE. IF THERE IS A REAL DEVICE 00207000
  221. * AND IT IS A 3800 PRINTING SUBSYSTEM, CALL DMKFREE 00208000
  222. * TO GET STORAGE FOR THE REAL DEVICE BLOCK EXTENSION 00209000
  223. * AND SAVE ITS ADDRESS IN RDEVEXTN. IF THERE IS A REAL DEV. 00210000
  224. * AND IT IS NOT DASD OR TAPE, SKIP THE FOLLOWING 00211000
  225. * 'RELEASE' AND VOLUME LABEL PROCESSING. FOR DASD AND 00212000
  226. * TAPE DEVICES, ISSUE A 'RELEASE' CCW AND SET THE 00213000
  227. * RDEVFTR(FTRRSRL) BIT IF THE COMMAND WORKED, INDICATING 00214000
  228. * THAT AN X-CHANNEL SWITCH FEATURE IS INSTALLED. FOR DASD 00215000
  229. * DEVICES, READ THE VOLUME SERIAL; CHECK FOR DUPLICATE 00216000
  230. * SERIAL, CONSTRUCTING A MESSAGE TO BE WRITTEN LATER IF 00217000
  231. * A DUPLICATE IS FOUND; IF THE VOLUME IS 'CPOWNED' 00218000
  232. * AND THE DEVICE IS A 3330V, INFORMATIONAL MESSAGE 00219000
  233. * DMKCPI913I WILL BE ISSUED AND THE DEVICE MARKED 00220000
  234. * AVAILABLE. OTHERWISE, CHECK TO SEE IF THE VOLUME 00221000
  235. * SERIAL APPEARS IN THE OWNED LIST, AND IF IT IS CALL 00222000
  236. * DMKFREE TO OBTAIN FREE STORAGE FOR A MAXI ALLOCBLOK; 00223000
  237. * FORMAT THE MAXI ALOCBLOK AND CHAIN IT TO THE RDEVBLOK. 00224000
  238. * 10. IF ALTERNATE PATH I/O WAS GENERATED IN THE SYSTEM, GET 00225000
  239. * AND INITIALIZE A STACK OF 'MIOBNUM' MINI IOB'S FOR DMKIOS 00226000
  240. * 11. INITIALIZE SYSTEM SEGMENT, PAGE, AND SWAP TABLES. 00227000
  241. * 12. TEST TO SEE IF VM ASSIST IS AVAILABLE ON THE COMPUTER. 00228000
  242. * IF IT IS, SET BITS IN PSA INDICATING VMA AVAILABLE AND ON. 00229000
  243. * 13. LOCATE THE SYSTEM OPERATOR'S CONSOLE. ISSUE A START I/O 00230000
  244. * TO A SENSE COMMAND. IF THE SENSE INDICATES THAT THE 00231000
  245. * CONSOLE IS UNAVAILABLE, ENABLE THE ALTERNATE CONSOLE BY 00232000
  246. * FORCING AN INTERRUPT ENTRY INTO DMKCNS. RETURN WILL BE 00233000
  247. * MADE VIA DMKCPIEN AFTER THE ALTERNATE CONSOLE IS MADE 00234000
  248. * READY. IF THE ALTERNATE CONSOLE IS UNAVAILABLE LOAD A 00235000
  249. * DISABLED WAIT STATE PSW. 00236000
  250. * 14. IF RESTARTING AFTER A SYSTEM FAILURE, WRITE THE SYSTEM 00237000
  251. * RESTART MESSAGE; WRITE THE SYSTEM IDENTIFICATION MESSAGE. 00238000
  252. * 14a.Examine the SYSID list at DMKSYSIL and determine HRC108DK 00238100
  253. * if any of the entries match this CPU. If so, HRC108DK 00238200
  254. * copy the specified system id into DMKSYSID where HRC108DK 00238300
  255. * it replaces the default system id established by HRC108DK 00238400
  256. * DMKSYS. Call DMKGRTID to put SYSID in 3270 status HRC108DK 00238500
  257. * 15. STORE THE TIME OF DAY CLOCK; IF THE CONDITION CODE 00239000
  258. * INDICATES THAT THE CLOCK IS SET PROCEED TO THE NEXT STEP; 00240000
  259. * OTHERWISE, ASK THE OPERATOR TO SET THE DATE AND TIME, AND 00241000
  260. * THEN TO PRESS THE "TOD ENABLE SET" SWITCH. 00242000
  261. * 16. COMPUTE A CONSTANT WHICH REPRESENTS THE TOD CLOCK VALUE AT 00243000
  262. * MIDNIGHT THIS MORNING; COMPUTE THE DAY OF THE WEEK AND 00244000
  263. * SAVE IT AS DMKSYSDW. 00245000
  264. * 17. WRITE A MESSAGE WHICH GIVES THE CURRENT DATE AND TIME AND 00246000
  265. * REQUESTS IF IT SHOULD BE CHANGED; IF THE ANSWER IS "YES" 00247000
  266. * REPEAT THE PROCEDURE TO SET THE DATE AND TIME AND RE-ASK 00248000
  267. * THE QUESTION. 00249000
  268. * 18. INITIATE 30 SECOND TIMER INTERRUPT TO GIVE CONTROL TO 00250000
  269. * DMKSCHTI TO ACCUMULATE SMOOTHED CPU UTILIZATION VALUE. 00251000
  270. * 19. CALL DMKIOEFL TO INITIALIZE MACHINE CHECK AND I/O ERROR 00252000
  271. * RECORDING AREAS IF THEY HAVE NOT BEEN PREVIOUSLY 00253000
  272. * FORMATTED; SET THE MACHINE CHECK NEW PSW. 00254000
  273. * 20. CALL DMKUDRBV TO BUILD THE USER DIRECTORY PAGE LIST. 00255000
  274. * 21. CHECK THAT THE LOC 80 TIMER IS RUNNING, IF NOT LOOP, 00256000
  275. * WRITING A MSG TO THE SYSTEM CONSOLE UNTIL IT IS ENABLED. 00257000
  276. * 22. IF THE CP ASSIST IS SET AVAILABLE VERIFY THAT IT MATCHES 00258000
  277. * THIS LEVEL OF CP. IF NOT SEND ERROR MSG 185 AND SET THE 00259000
  278. * CP ASSIST UNAVAILABLE. 00260000
  279. * 23. IF TRYING TO RESTART AFTER A FAILURE, SKIP TO NEXT STEP TO 00261000
  280. * PERFORM A WARM START. OTHERWISE, ASK THE OPERATOR WHETHER 00262000
  281. * DO A COLD OR WARM START, DRAIN THE SPOOL DEVICES, OR SHUT 00263000
  282. * THE SYSTEM DOWN. IF THE ANSWER IS SHUTDOWN WRITE SYSTEM 00264000
  283. * SHUTDOWN MESSAGE AND LOAD A DISABLED WAIT STATE PSW. 00265000
  284. * 24. CALL DMKWRM TO PERFORM EITHER WARM OR COLD START. 00266000
  285. * 25. ATTEMPT TO ALLOCATE SYSTEM DUMP FILE, IF NOT ENOUGH 00267000
  286. * CONTIGUOUS SPACE IS AVAILABLE, SEND OPERATOR A MESSAGE AND 00268000
  287. * SKIP TO NEXT STEP; ELSE WRITE OUT THE DMKSYM MODULE AS THE 00269000
  288. * FIRST RECORD OF THE DUMP FILE. 00270000
  289. * 26. LOOP THRU OWNED VOLS COMPRESSING MAXI ALLOCBLOKS 00271000
  290. * INTO MINI ALOCBLOKS. CALLS ARE MADE TO DMKFRET TO RETURN 00272000
  291. * MAXI ALOCBLOKS, AND CALLS ARE MADE TO DMKFREE TO OBTAIN 00273000
  292. * MINI ALOCBLOKS. 00274000
  293. * 27. CALL DMKLOGOP TO AUTOLOG THE OPERATOR, IF THE AUTOMATIC 00275000
  294. * LOGON FAILS, WRITE A MESSAGE ASKING THE OPERATOR TO LOGON. 00276000
  295. * 28. IF ALL VOLUMES SPECIFIED IN THE OWNED LIST ARE MOUNTED, 00277000
  296. * CONTINUE; OTHERWISE, WRITE A WARNING MESSAGE FOR EACH 00278000
  297. * MESSAGE FOR EACH VOLUME NOT MOUNTED. WRITE ANY DUPLICATE 00279000
  298. * VOLUME SERIAL MESSAGES. 00280000
  299. * 29. IF THE REAL MACHINE SIZE IS DIFFERENT THAN THE SYS-GEN'D 00281000
  300. * SIZE, WRITE A MSG GIVING THE STORAGE SIZE TO BE USED 00282000
  301. * (LOWER OF REAL OR SYS-GEN). 00283000
  302. * 30. WRITE DMKCPI957I MSG - A GENERAL STORAGE MAP IN KBYTES. 00284000
  303. * 31. CALL DMKCQRFI TO WRITE SYSTEM FILES MESSAGE. 00285000
  304. * 32. IF DRAIN WAS SPECIFIED BY THE OPERATOR IN RESPONSE TO 00286000
  305. * THE START MESSAGE, SKIP TO NEXT STEP; OTHERWISE CALL 00287000
  306. * DMKCSOSD TO START ALL SPOOLING DEVICES. 00288000
  307. * 33. RESET THE END OF THE RESIDENT NUCLEUS TO DMKCPEND, 00289000
  308. * CALL DMKHVDPP TO INITIALIZE THE PROGRAM PRODUCT BIT MAP, 00290000
  309. * TRANS IN ALL PAGEABLE MODULES FROM SYSRES AND FORCE 00291000
  310. * TO BACKING DEVICE. 00292000
  311. * 34. CALL DMKIOEFL TO INITIALIZE THE I/O ERROR RECORDING, 00293000
  312. * MACHINE CHECK HANDLER, AND CHANNEL CHECK HANDLER. 00294000
  313. * 35. AUTO LOAD THE 370X'S. 00295000
  314. * 36. IF THE SYSTEM WAS SYSGEN'D FOR AP SUPPORT AND WAS 00296000
  315. * EQUIPPED WITH THE MULTIPROCESSING FEATURE, BUT THE 00297000
  316. * APU WAS NOT ONLINE, ISSUE MESSAGE DMKCPI959W. 00298000
  317. * 37. IF THE SYSTEM IS SYSGEN'D FOR AP SUPPORT (SYSCOR 00299000
  318. * AP=YES) AND THE APU IS ONLINE, CALL DMKAPI AND 00300000
  319. * DMKCLK TO COMPLETE THE NECESSARY PROCESSING TO 00301000
  320. * SUPPORT THE APU. ISSUE MESSAGE DMKCPI958I. 00302000
  321. * 38. SET INITIALIZATION COMPLETE IN THE PSA. 00303000
  322. * 39. AUTO LOG THE USER DEFINED IN 'AUTOCOM'. 00304000
  323. * 40. EXIT TO THE DISPATCHER TO AWAIT INTERRUPTS FROM 00305000
  324. * TP LINES OR THE OPERATOR'S CONSOLE. 00306000
  325. * 00307000
  326. EJECT 00308000
  327. * 00309000
  328. * MESSAGES - 00310000
  329. * 00311000
  330. * DMKCPI185E CP ASSIST LEVEL XXXX NOT SUPPORTED - CP ASSIST 00312000
  331. * DISABLED 00312500
  332. * DMKCPI913I CP OWNED VOLID XXXXXX INVALID FOR 3330V 00313000
  333. * DMKCPI950A AUTO LOGON FAILED; EXPLICIT LOGON REQUIRED 00314000
  334. * DMKCPI951I CP VOLID XXXXXX NOT MOUNTED 00315000
  335. * DMKCPI952I XXXK SYSTEM STORAGE 00316000
  336. * DMKCPI953I UNABLE TO ALLOCATE SYSTEM AUTO DUMP 00317000
  337. * DMKCPI954E DASD XXX VOLID XXXXXX NOT MOUNTED; DUPLICATE OF 00318000
  338. * DASD XXX 00319000
  339. * DMKCPI955W INSUFFICIENT STORAGE FOR VM/370 00320000
  340. * DMKCPI957I STORAGE SIZE = NNNNN K, NUCLEUS = NNNNN K, HRC028DK 00321090
  341. * DYNAMIC PAGING = NNNNN K, TRACE TABLE = NNNN K, HRC028DK 00321180
  342. * FREE STORAGE = NNNN K, VIRTUAL=REAL = NNNNN K HRC028DK 00321270
  343. * DMKCPI966I INITIALIZATION COMPLETE HRC028DK 00321360
  344. * DMKCPI971I SYSTEM IS UNIPROCESSOR GENERATED HRC028DK 00321450
  345. * DMKCPI971I SYSTEM IS ATTACHED PROCESSOR GENERATED HRC028DK 00321540
  346. * DMKCPI971I SYSTEM IS MULTIPROCESSOR GENERATED HRC028DK 00321630
  347. * DMKCPI960I SYSTEM WARM START DATA SAVED 00322000
  348. * DMKCPI961W SYSTEM SHUTDOWN COMPLETE 00323000
  349. * DMKCPI958I ATTACHED PROCESSOR NOW OPERATIONAL 00324000
  350. * DMKCPI959W ATTACHED PROCESSOR NOT ONLINE 00325000
  351. * 00326000
  352. * DISABLED WAIT STATE ERROR CONDITIONS - 00327000
  353. * 00328000
  354. * 00B - MACHINE CHECK DURING SYSTEM INITIALIZATION 00329000
  355. * 005 - UNABLE TO LOCATE AN OPERATOR CONSOLE 00330000
  356. * 006 - SYSTEM SHUTDOWN COMPLETE 00331000
  357. * 00D - REAL MACHINE TOO SMALL FOR VM/370 00332000
  358. * 015 - SIGP ERROR 00333000
  359. * 016 - CHANNEL SET SWITCHING ERROR 00333100
  360. *. 00334000
  361. EJECT 00335000
  362. COPY OPTIONS 00336000
  363. COPY LOCAL OPTIONS 00337000
  364. SPACE 2 00338000
  365. PUNCH 'SPB' TELL LOADER TO START AT NEXT PAGE BOUNDARY 00339000
  366. DMKCPI CSECT 00340000
  367. SPACE 1 00341000
  368. DC CL8'DMKCPI' MODULE IDENTIFICATION 00342000
  369. SPACE 2 00343000
  370. USING PSA,R0 00344000
  371. SPACE 00345000
  372. EXTRN DMKPSADU,DMKSYSRM,DMKSYSRV,DMKCPEND,DMKPTRFN,DMKRIOCN 00346000
  373. EXTRN DMKSYSTR @V60BCAB 00347000
  374. EXTRN DMKSYSUS,DMKSYSUC HRC033DK 00347500
  375. EXTRN DMKSYSIP HRC036DK 00347700
  376. EXTRN DMKDSPNP,DMKFRELO,DMKFREHI,DMKPTRF1,DMKSYSOW,DMKCFMEN 00348000
  377. EXTRN DMKSYSOC,DMKLOGOP,DMKSCNVS,DMKCVTBD,DMKFRETR @V408246 00349000
  378. EXTRN DMKALGON,DMKUDRFU,DMKPAGST @V407595 00350000
  379. EXTRN DMKQCNRD,DMKPSAEX,DMKPRGIN,DMKMCHIN,DMKIOTIN @VA09587 00351000
  380. EXTRN DMKPGTP4,DMKPGTT4,DMKPGTP0,DMKPGTT0,DMKPGTP5,DMKPGTT5 00352000
  381. EXTRN DMKPGT7P,DMKPGT7T,DMKPGT8P,DMKPGT8T HRC106DK 00352100
  382. EXTRN DMKPGTTM,DMKWRMST,DMKSYMTB,DMKDMPSF,DMKSYSDU,DMKIOSQR 00353000
  383. EXTRN DMKSYSER,DMKSYSWM,DMKSYSCH HRC075DK 00353500
  384. EXTRN DMKDMPDV,DMKCQRFI,DMKSCNRD,DMKDMPRC @V200930 00354000
  385. EXTRN DMKPTRFA,DMKFRESV @V200930 00355000
  386. EXTRN DMKSYSUD,DMKUDRBV,DMKSAV,DMKBLDRT,DMKIOEFL @V408246 00356000
  387. EXTRN DMKPTRCP @V408246 00357000
  388. EXTRN DMKSYSVL,DMKSYSNU,DMKCSOSD,DMKDMPAU 00358000
  389. EXTRN DMKPTRUL @V200720 00359000
  390. EXTRN DMKSCHQ1,DMKSCHQ2 00360000
  391. EXTRN DMKSYSTZ,DMKSYSDW,DMKSYSTI,DMKCVTDT,DMKSCHMD,DMKSCHST 00361000
  392. EXTRN DMKSYSIC,DMKSYSID,DMKSYSIL,DMKGRTID HRC108DK 00361100
  393. EXTRN DMKSCHTI,DMKSCHLI @V2B2638 00362000
  394. EXTRN DMKPGT90,DMKPGTTU,DMKPGT4P,DMKPGT4T @V2A2029 00363000
  395. EXTRN DMKPGT5P,DMKPGT5T @V304498 00364000
  396. EXTRN DMKCPEID 00365000
  397. EXTRN DMKSLC @VA01682 00366000
  398. EXTRN DMKSCNRU @VA01097 00367000
  399. EXTRN DMKCPVAE,DMKCVTBH,DMKCNSEN,DMKNETAE @V2D3931 00368000
  400. EXTRN DMKRIORN,DMKNLDR @V200820 00369000
  401. EXTRN DMKCKP,DMKPGTBN @VA00919 00370000
  402. EXTRN DMKSYSFP @V396414 00371000
  403. EXTRN DMKPAGHI,DMKPAGLO @V407595 00372000
  404. EXTRN DMKFRELG EXTERNAL-NAME FOR "LRGSTSIZ" IN DMKFRE 00373000
  405. * (UNDEFINED IF NO STATISTICS IN DMKFRE) 00374000
  406. EXTRN DMKPGTPG,DMKRPAPT,DMKVMI,DMKSYM @VA03106 00375000
  407. EXTRN DMKCPEML,DMKPTRRM @V3M4026 00376000
  408. EXTRN DMKIOSMQ MINI IOB QUEUE @V407438 00377000
  409. EXTRN DMKSCNRA @V407438 00378000
  410. AIF (NOT &AP).CLKCK4 00379000
  411. EXTRN DMKCLKCK @V407595 00380000
  412. EXTRN DMKAPIPR @V407595 00381000
  413. .CLKCK4 ANOP 00382000
  414. EXTRN DMKPTRSN @VA08341 00382100
  415. EXTRN DMKSYSAT,DMKSYSUR,DMKSYSTS,DMKSYSTE,DMKMNIST @VMD0138 00383000
  416. EXTRN DMKSVCIN @V407595 00384000
  417. EXTRN DMKHVDPP INITIALIZATION FOR PP BIT MAP @VMD0161 00385000
  418. SPACE 00386000
  419. SAVNUMBR EQU 15 *** NUMBER OF SAVE-AREAS TO GIVE TO DMKPSASV *** 00387000
  420. * (USUALLY ENOUGH AS DETERMINED EMPIRICALLY) 00388000
  421. SPACE 00389000
  422. * THE FOLLOWING 'RETRYNUM' VALUE IS DESIGNED TO CAUSE A 00390000
  423. * DELAY OF NO MORE THAN 3 SECONDS PER DEVICE. IF THE I/O 00391000
  424. * IS STILL BUSY AFTER 3 SECONDS THEN IT PROBABLY IS NOT 00392000
  425. * REASONABLE TO WASTE ANY MORE TIME ON IT SINCE MORE TIME 00393000
  426. * MOST LIKELY WOULD NOT CURE THE SITUATION. 00394000
  427. SPACE 00395000
  428. RETRYNUM EQU 3000/50 3000MS (3 SEC)/50MS DELAY EACH 00396000
  429. SPACE 00397000
  430. MIOBNUM EQU 15 NUMBER OF MINI IOB'S USED BY IOS @V407438 00398000
  431. SPACE 00399000
  432. SPACE 2 00400000
  433. MAXALLOC EQU 2656 Max size of the allocation data HRC106DK 00401100
  434. * from disk (1 byte per cylinder) HRC106DK 00402100
  435. YES EQU C'Y' @V407595 00403000
  436. N0 EQU 0 @V407595 00404000
  437. N1 EQU 1 @V407595 00405000
  438. N2 EQU 2 @V407595 00406000
  439. L2 EQU 2 @V407595 00407000
  440. N4 EQU 4 @V407595 00408000
  441. N7 EQU 7 @V407595 00409000
  442. N8 EQU 8 @V407595 00410000
  443. L8 EQU 8 @V407595 00411000
  444. N12 EQU 12 @V407595 00412000
  445. N16 EQU 16 @V407595 00413000
  446. N63 EQU 63 HIGHEST VALID PROCESSOR ADDR @V407595 00414000
  447. FF EQU X'FF' @V407595 00415000
  448. LOGICADR EQU X'40' COMPUTE LOGICAL PROCESSOR ADDR @V407595 00416000
  449. CONDCODE EQU X'08' TO STCM CONDITION CODE IN PSW @V407595 00417000
  450. SENRETCT EQU X'100' SENSE RETRY COUNT @VA11565 00417500
  451. EJECT 00418000
  452. ENTRY DMKCPINT 00419000
  453. DMKCPINT DS 0H 00420000
  454. USING DMKCPINT,R12,R13 00421000
  455. SPACE 1 00422000
  456. * ESTABLISH ADDRESSABILITY FOR SECOND BASE REGISTER 00423000
  457. LA R13,X'FFF' 00424000
  458. LA R13,1(R13,R12) 00425000
  459. SPACE 2 00426000
  460. * INITIALIZE LOW CORE 00427000
  461. MVC EXNPSW(5*8),CPIPSWS SET UP NEW PSWS 00428000
  462. MVC IPLPSW(8),RESTPSW MOVE IN RESTART PSW 00429000
  463. XC IPLCCW1(TIMER+8-IPLCCW1),IPLCCW1 CLEAR 00430000
  464. LA R2,CPULOG ADDRESS OF AREA TO CLEAR 00431000
  465. LA R3,PSENDCLR ADDRESS OF 1ST BYTE PAST CLEAR AREA 00432000
  466. SR R3,R2 GET NUMBER OF BYTES TO CLEAR 00433000
  467. SR R5,R5 SET ZERO LENGTH AND PAD FOR MOVE 00434000
  468. MVCL R2,R4 CLEAR LOW CORE 00435000
  469. LA R2,PSBCLR2 START OF 2ND AREA TO CLEAR @V407595 00436000
  470. LA R3,PSECLR2-PSBCLR2 NUMBER OF BYTES TO CLEAR @V407595 00437000
  471. MVCL R2,R4 CLEAR STORAGE AREA @V407595 00438000
  472. OI APSTAT1,PROCIO+PROCIPL INDICATE THIS PROCESSOR @V60B7AA 00439100
  473. * HAS I/O CAPABILITY AND IS IPL PROCESSOR 00440100
  474. MVI CPIFLAG1,N0 CLEAR INTERNAL FLAGS @V407595 00441000
  475. SR R0,R0 LOAD ZEROES @V407595 00442000
  476. STH R0,IPUADDR ENSURE ZEROES FOR LPUADDR BELOW @V407595 00443000
  477. NI PSAMSS,X'FF'-MSSPRES SET MSS FLAG OFF @V60B6B8 00444000
  478. ** ** FLAG TURNED ON WHEN MSS VS MACHINE OPERATIONAL ** 00445000
  479. OI CPSTATUS,CPSUPER INDICATE SUPERVISOR STATE. @V407595 00446000
  480. * THIS WILL CAUSE WAIT STATE SHOULD@V407595 00447000
  481. * MACHINE CHECK OR MFA OCCUR @V407595 00448000
  482. * DURING DMKCPI PROCESSING. @V407595 00449000
  483. MVI CPSTATUS,CPWAIT INDICATE CP IS IDLE 00450000
  484. STH R10,SYSIPLDV SAVE UNIT ADDRESS OF IPL'ED DEVICE 00451000
  485. L R15,CPIDMPSD ADDRESS TO STORE IPL DEVICE @V407595 00452000
  486. STH R10,0(,R15) ALSO SAVE FOR DMKDMP @V407595 00453000
  487. MVC PROBTIME(8),=X'7FFFFFFFFFFFF000' INITIALIZE PSA FIELD 00454000
  488. MVC IDLEWAIT(8),=X'7FFFFFFFFFFFF000' ... 00455000
  489. MVC PAGEWAIT(8),=X'7FFFFFFFFFFFF000' ... 00456000
  490. MVC IONTWAIT(8),=X'7FFFFFFFFFFFF000' ... 00457000
  491. LA R0,VMTTIME-VMBLOK(,R0) DISPLACEMENT SUP TIMER @V4M0203 00458000
  492. ST R0,TIMEDISP SAVE DISP FOR TIMER UPDATES @V4M0203 00459000
  493. SPACE 2 00460000
  494. LCTL C0,C14,CTLREGS INITIALIZE CONTROL REGISTERS 00461000
  495. SCKC FFS INITIALIZE T.O.D. CLOCK COMPARATOR 00462000
  496. SPT PROBTIME INITIALIZE SYSTEM CPU TIMER 00463000
  497. STIDP CPUID STORE REAL CPU IDENTIFIER 00464000
  498. CLI CPUID,FF ARE WE RUNNING UDER VM/370 ? @VMH0034 00465000
  499. BNE INITREAL NO BRANCH @VA11615 00466020
  500. LA R1,8 SET DIAGNOSE REG @VA11615 00466030
  501. DC X'83120048' DIAG 48 TO SET VIRTUAL BIT @VA11615 00466040
  502. B CPIPINTA INIT IN UNIPROCESSOR ONLY @VA11615 00466050
  503. INITREAL DS 0H @VA11615 00466060
  504. SPACE 2 00467000
  505. * HERE TO STORE CPU ADDRESS 00468000
  506. LA R1,CPIPINTA SET UP PROGRAM CHECK ADDRESS @V213135 00469000
  507. ST R1,PRNPSW+4 IN CASE WE ARE ON A UNIPROCESSOR @V213135 00470000
  508. STAP IPUADDR ATTEMPT TO STORE PROCCESSOR @V213135 00471000
  509. * UNIT ADDRESS 00472000
  510. OI APSTAT1,MPFEAT INDICATE PRESENCE OF MP HARDWARE @V5BC0AB 00473000
  511. L R2,CPIDMPMA ADDRESS TO STORE IPUADDR FOR DUMP@V407595 00474000
  512. MVC 0(L2,R2),IPUADDR SAVE MAIN ADDRESS FOR DMKDMP @V407595 00475000
  513. L R2,CPIDMPAA ADDRESS TO STORE IPUADDRX FOR @V4M0124 00476000
  514. * DUMP. NOTE IF RUNNING IN UP MODE 00477000
  515. * DMKDMPMA AND DMKDMPAA SHOULD CONTAIN 00478000
  516. * THE SAME PROCESSOR ADDRESS. 00479000
  517. MVC 0(L2,R2),IPUADDR DMKDMPMA/AA SAME IN UP MODE. @V4M0124 00480000
  518. AIF (NOT &AP).APCHK4 00481000
  519. L R2,CPISYSAP EST. ADDRESSIBILITY TO DMKSYSAP @V407595 00482000
  520. CLI N0(R2),YES IS SYSTEM GEN'D FOR ATTACHED @V407595 00483000
  521. * PROCESSOR SUPPORT (SYSCOR AP=YES)@V407595 00484000
  522. BNE CPIPINTB NO - CONTINUE WITHOUT AN APU @V4M0206 00485000
  523. SPACE 00485020
  524. LA R2,SENRETCT LOAD LOOP CONTROL FOR SIO @VA11565 00485041
  525. LA R5,CPINOCSS GET ADDRESS OF CPINOCSS @V60B7AB 00485060
  526. ST R5,PRNPSW+4 SET UP PROGRAM CHECK ADDRESS @V60B7AB 00485080
  527. LH R15,SYSIPLDV GET ADDRESS OF IPL DEVICE @VMV0001 00485100
  528. LA R5,CPICCW1 GET ADDRESS OF SENSE CCW @V60B7AB 00485120
  529. ST R5,CAW STORE ADDRESS OF SENSE CCW @V60B7AB 00485140
  530. LA R5,N63 HIGHEST CHANNEL ADDRESS, X'003F' @V60B7AB 00485160
  531. L R1,FFS PUT A NEGATIVE 1 IN REGISTER 1 @V60B7AB 00485180
  532. * THE NEXT INSTRUCTION INCREMENTS 00485200
  533. * R1 BY 1. CHANNEL SET ADDRESS 0 00485220
  534. * WILL BE ATTEMPTED FIRST 00485240
  535. CSSAVAIL DS 0H @V60B7AB 00485260
  536. LA R1,1(0,R1) INCREMENT CHANNEL ADDRESS BY ONE @V60B7AB 00485280
  537. SPACE 00485300
  538. * CONCS 0(R1) CONNECT THIS CHANNEL SET @V60B7AB 00485320
  539. DC X'B2001000' @V60B7AB 00485340
  540. SPACE 00485360
  541. BZ SENSEIPL BRANCH, IF CONNECT SUCCESSFUL @V60B7AB 00485380
  542. CLR R5,R1 TRIED ALL CHANNEL SET ADDRESSES? @V60B7AB 00485400
  543. BNE CSSAVAIL NO, BRANCH @V60B7AB 00485420
  544. B WAITCHER GO LOAD A WAIT STATE @V60B7AB 00485440
  545. SENSEIPL DS 0H @V60B7AB 00485460
  546. SIO 0(R15) DO SENSE TO THE IPL DEVICE @V60B7AB 00485480
  547. BZ CHKSENSE BRANCH ON CONDITION CODE 0 @V60B7AB 00485500
  548. * (SUCCESSFUL) 00485520
  549. BC 1,NEXTADDR BRANCH ON CONDITION CODE 3 @V60B7AB 00485540
  550. * (NOT OPERATIONAL) 00485560
  551. BC 2,SENSEIPL LOOP ON CONDITION CODE 2 @V60B7AB 00485580
  552. * (SUBCHANNEL BUSY) 00485600
  553. * HERE ON CONDITION CODE 1 (CSW STORED) 00485620
  554. TM CSW+4,UC UNIT CHECK? @V60B7AB 00485640
  555. BO TRYSIO YES, BRANCH @V60B7AB 00485660
  556. TM CSW+5,CCC+IFCC PERMANENT ERRORS? @V60B7AB 00485680
  557. BO NEXTADDR YES, BRANCH @V60B7AB 00485700
  558. TRYSIO DS 0H @V60B7AB 00485720
  559. BCT R2,SENSEIPL TRY SIO 16 TIMES @V60B7AB 00485740
  560. LA R2,SENRETCT LOAD LOOP CONTROL FOR SIO @VA11565 00485761
  561. B NEXTADDR PERMANENT ERRORS, TRY NEXT ADDR. @V60B7AB 00485780
  562. CHKSENSE DS 0H @V60B7AB 00485800
  563. TM CPISNS,INTREQ IS IPL DEVICE ACCESSIBLE? @V60B7AB 00485820
  564. BNO SETCSSON YES, BRANCH @V60B7AB 00485840
  565. NEXTADDR DS 0H @V60B7AB 00485860
  566. MVI CPISNS,00 CLEAR FIRST BYTE OF SENSE DATA @V60B7AB 00485880
  567. CLR R5,R1 TRIED ALL CHANNEL SET ADDRESSES? @V60B7AB 00485900
  568. BNE CSSAVAIL NO, BRANCH @V60B7AB 00485920
  569. SPACE 00485940
  570. WAITCHER LPSW XWAITCSS LOAD WAIT STATE CODE X'016' @V60B7AB 00485960
  571. SPACE 00485980
  572. SETCSSON DS 0H @V60B7AB 00486000
  573. OI APSTAT1,CSSFEAT INDICATE CHANNEL SET SWITCHING @V60B7AB 00486020
  574. * FACILITY IS AVAILABLE 00486040
  575. STH R1,CSADDR SAVE CHANNEL SET ADDRESS @V60B7AB 00486060
  576. XC CPISNS,CPISNS CLEAR DATA AREA HRC011DK 00486090
  577. CPINOCSS DS 0H @V60B7AB 00486100
  578. LA R5,N63 HIGHEST VALID PROCESSOR ADDRESS @V407595 00487000
  579. LA R4,N1 INCREMENT FOR BXLE @V407595 00488000
  580. SR R2,R2 CURRENT PROCESSOR ADDRESS IN @V407595 00489000
  581. * BXLE LOOP. @V407595 00490000
  582. APCHKADR EQU * CHECK ADDR OF APU FOR VALIDITY @V407595 00491000
  583. CH R2,IPUADDR IS THIS THE PROCESSOR NOW ACTIVE @V407595 00492000
  584. BE APNXTADR YES - THIS IS ADDRESS OF MAIN - @V407595 00493000
  585. * CONTINUE LOOP TO LOCATE ADDR OF APU 00494000
  586. * 00495000
  587. * NO - DETERMINE IF THIS PROCESSOR IS 00496000
  588. * ACTIVE @V407595 00497000
  589. SR R1,R1 CLEAR SIGP STATUS REGISTER @V407595 00498000
  590. LA R0,SIGIPR SAVE SIGP ORDER IN CASE OF ERROR @V407595 00499000
  591. APIPR EQU * @V407595 00500000
  592. SIGP R1,R2,SIGIPR ISSUE INITIAL PROGRAM RESET @V407595 00501000
  593. BC 8,APADDROK IPR STARTED SUCCESSFULLY (CC=0). @V407595 00502000
  594. * THIS IS ADDRESS OF APU. @V407595 00503000
  595. BC 2,APIPR CC=2 (BUSY) SHOULD NOT BE @V407595 00504000
  596. * RECEIVED. BUT IF IT IS- LOOP. @V407595 00505000
  597. BC 1,APNXTADR CC=3 (PROCESSOR NOT OPER)- SETUP @V407595 00506000
  598. * TO SIGP THE NEXT PROCESSOR ADDR @V407595 00507000
  599. * CC=1 (STATUS STORED) IS ERROR @V407595 00508000
  600. APERROR EQU * SIGP ERROR- LOAD WAIT STATE PSW @V407595 00509000
  601. BALR R15,0 SET CONDITION CODE IN REG @V407595 00510000
  602. APERROR1 EQU * CC HAS BEEN SET IN R15 @V407595 00511000
  603. STCM R15,CONDCODE,XWAIT4+N4 STORE CC IN WAIT PSW @V407595 00512000
  604. * NOTE PSW IS IN BC MODE. @V407595 00513000
  605. LPSW XWAIT4 LOAD WAIT STATE CODE. @V407595 00514000
  606. APADDROK EQU * LOOP UNTIL IPR COMPLETES @V407595 00515000
  607. LCTL C0,C0,MFAONLY ENABLE FOR MFA EXT INTERRUPTS @V407595 00516000
  608. * IN WINDOW BELOW. @V407595 00517000
  609. LA R14,100 WINDOW CONTROL COUNTER @V407595 00518000
  610. APSENSE EQU * @V407595 00519000
  611. LA R0,SIGSENSE SAVE SIGP ORDER IN CASE OF ERROR @V407595 00520000
  612. SIGP R1,R2,SIGSENSE ISSUE SENSE @V407595 00521000
  613. BC 8,APIPRCOM CC=0 IPR COMPLETE @V407595 00522000
  614. BC 4,APCHSTAT CC=1 (STATUS STORED) CHK STATUS @V407595 00523000
  615. BC 1,APERROR CC=3 (NOT OPER) PROCESS AS ERROR @V407595 00524000
  616. BCT R14,APSENSE CC=2 (BUSY) - LOOP @V407595 00525000
  617. STOSM SYSMASK,EXTMASK ENABLE FOR EXTERNAL INTERRUPTS @V407595 00526000
  618. STNSM SYSMASK,FF-EXTMASK CLOSE WINDOW @V407595 00527000
  619. B APADDROK CONTINUE UNTIL IPR COMPLETES @V407595 00528000
  620. APCHSTAT EQU * @V407595 00529000
  621. BALR R15,0 SAVE CC IN CASE OF ERROR @V407595 00530000
  622. C R1,STOPPED APU IN STOPPED STATE ONLY @V407595 00531000
  623. BE APIPRCOM YES- APU ENTERS STOPPED STATE @V407595 00532000
  624. * FOLLOWING SUCCESSFUL EXECUTION OF@V407595 00533000
  625. * OF INITIAL PROGRAM RESET. @V407595 00534000
  626. B APERROR1 ANTHING OTHER THAN 'STOP' IS @V407595 00535000
  627. * ERROR. @V407595 00536000
  628. APIPRCOM EQU * @V407595 00537000
  629. LCTL C0,C0,CTLREGS RESTORE ORIGINAL CONTROL REG 0 @V407595 00538000
  630. STH R2,IPUADDRX SAVE THE PHYSICAL PROCESSOR ADDR @V407595 00539000
  631. * OF THE APU SINCE THE IPR IS NOW @V407595 00540000
  632. * COMPLETE. @V407595 00541000
  633. L R15,CPIDMPAA ADDRESS TO STORE IPUADDRX FOR @V407595 00542000
  634. * DUMP @V407595 00543000
  635. STH R2,0(,R15) SAVE IPUADDRX FOR DUMP @V407595 00544000
  636. STH R2,LPUADDRX SETUP TO STORE THE LOGICAL ADDR @V407595 00545000
  637. OI LPUADDRX+N1,LOGICADR NOW IS LOGICAL PROC ADDR @V407595 00546000
  638. OI CPIFLAG1,CPIAP INDICATE THE APU IS AVAILABLE @V407595 00547000
  639. * FOR DMKCPI PROCESSING. @V407595 00548000
  640. B CPIPINTB CONTINUE WITH SYSTEM INIT @V4M0206 00549000
  641. APNXTADR EQU * ISSUE IPR TO EACH VALID @V407595 00550000
  642. * PROCESSOR ADDRESS. @V407595 00551000
  643. * R5 CONTAINS THE HIGHEST POSSIBLE PROCESSOR ADDRESS, X'003F'. 00552100
  644. BXLE R2,R4,APCHKADR UNTIL ONE IS FOUND ONLINE. @V407595 00553000
  645. OI CPIFLAG1,CPIAPOFF INDICATE THE APU WAS REQUESTED@V4M0206 00554000
  646. * BUT IS OFFLINE. THIS INTERNAL BIT 00555000
  647. * WILL BE USED TO ISSUE MSG 959W. @V4M0206 00556000
  648. .APCHK4 ANOP 00557000
  649. CPIPINTA DS 0H HERE VIA INTERRUPT IF STAP @V4M0206 00558000
  650. * FAILS - IPUADDR = 0 @V4M0206 00559000
  651. L R2,CPISYSAP EST. ADDRESSIBILITY TO DMKSYSAP @V4M0206 00560000
  652. CLI N0(R2),YES IS SYSTEM GEN'D FOR ATTACHED @V4M0206 00561000
  653. * PROCESSOR SUPPORT (SYSCOR AP=YES)@V4M0206 00562000
  654. BNE CPIPINTB NO, DON'T WORRY ABOUT FLAGS @V4M0206 00563000
  655. OI APSTAT1,APUNONLN INDICATE THAT APU WAS @V4M0206 00564000
  656. * REQUESTED (SYSCOR AP=YES) BUT A UNIT WAS 00565000
  657. * NOT ONLINE. 00566000
  658. CPIPINTB DS 0H @V4M0206 00567000
  659. LH R2,IPUADDR OBTAIN PHYSICAL CPU ADDRESS @V407595 00568000
  660. STH R2,LPUADDR AND STORE IN PSA @V407595 00569000
  661. OI LPUADDR+N1,LOGICADR MAKE IT THE LOGICAL ADDRESS @V407595 00570000
  662. MVC PRNPSW(8),CPIPSWS+2*8 RESTORE PROGRAM NEW PSW @V213135 00571000
  663. SPACE 2 00572000
  664. * INITIALIZE DISPATCHER TIME SLICES BASED ON CPU MODEL 00573000
  665. ICM R0,B'0011',CPUMODEL GET OUR MODEL NUMBER 00574000
  666. LM R1,R3,=A(TS135,22,TS3032) INIT. TABLE LOOK- UP @V5088AB 00575000
  667. TSLOOP CLM R0,B'0011',0(R1) GOT THE RIGHT BOX ? 00576000
  668. BE SETSLICE YES -- GO SET UP TIME SLICE 00577000
  669. BXLE R1,R2,TSLOOP NOT YET - KEEP LOOKING 00578000
  670. B SLICEOK UNRECOGNIZABLE MODEL -- 00579000
  671. SPACE 00580000
  672. SETSLICE L R15,=A(DMKSCHQ1) POINT TO DISPATCH TIME SLICE FIELD 00581000
  673. MVC 0(8,R15),2(R1) INITIALIZE Q1 00582000
  674. L R15,=A(DMKSCHQ2) POINT TO Q2 FIELD 00583000
  675. MVC 0(8,R15),10(R1) AND INITIALIZE Q2 00584000
  676. MVC WAITCNT(4),18(R1) LOAD COUNT FOR THIS PROCESSOR @VA05431 00585000
  677. EJECT 00587000
  678. SLICEOK EQU * CALCULATE MAIN STORAGE SIZE & SAVE 00588000
  679. LA R1,CPIPINT SET PROGRAM NEW PSW FOR ADDRESSING CK 00589000
  680. ST R1,PRNPSW+4 ... 00590000
  681. SR R5,R5 START AT CORE BOTTOM 00591000
  682. LR R2,R5 WITH ZERO KEY 00592000
  683. KEYLOOP SSK R2,R5 AND SET STORAGE KEYS 00593000
  684. LA R5,2048(,R5) ONE BY ONE 00594000
  685. LTR R5,R5 DID STORAGE WRAP AT 16 MEG 00595000
  686. BNZ KEYLOOP NO- BRANCH 00596000
  687. L R5,=X'01000000' SET TO 16 MEG 00597000
  688. LPSW PRNPSW LOAD EC PSW @VA12591 00597500
  689. SPACE 2 00598000
  690. CPIPINT EQU * HERE WHEN PROGRAM INTERRUPT OCCURS @VA03799 00599000
  691. MVC PRNPSW(8),CPIPSWS+2*8 RESTORE PROGRAM INT. NEW PSW 00600000
  692. XC PROPSW(8),PROPSW CLEAR PROGRAM INT. OLD PSW 00601000
  693. L R3,=A(DMKSYSRM) GET LOCATION WHERE REAL SIZE IS KEPT 00602000
  694. ST R5,0(,R3) SAVE REAL MACHINE SIZE 00603000
  695. SPACE 2 00604000
  696. L R3,=A(DMKPTRRM) SAVE STORAGE SIZE IN DMKPTR @V386198 00605000
  697. ST R5,0(,R3) FOR USE BY THE CP ASSIST @V386198 00606000
  698. OI CPCREG6,X'02' SET CP ASSIST ENABLE MASK ON @V386198 00607000
  699. LCTL C6,C6,CPCREG6 ENABLE CP ASSIST FEATURE @V386198 00608000
  700. LA R2,CPIPINT2 SET FOR POSSIBLE PROGRAM CHECK @V386198 00609000
  701. ST R2,PRNPSW+4 - IF CP ASSIST NOT ON CPU @V386198 00610000
  702. MVI PSAEVMA,MICLPSW+MICPTLB+MICSCSP+MICSIO+MICSTSM+MICSTPT+M*00610200
  703. ICTCH ENABLE ALL EVMA EXCEPT DIAG ASSIST @VA14280 00610400
  704. * NOTE DIAG NOT ENABLED BECAUSE NOT SUPPORTED IN RELEASE 6 SCP 00610600
  705. L R3,=A(DMKCPEML) LOCATION TO SAVE LEVEL NUMBER @V3M4026 00611000
  706. DS 0H ISSUE 'ST CP ASSIST LEVEL' INST. @V3M4026 00612000
  707. DC X'E612',S(0(R3),0) CP ASSIST FEATURE PRESENT? @V3M4026 00613000
  708. OI CPSTAT2,CPASTAVL+CPASTON (CHECK LEVEL LATER) @V386198 00614000
  709. LCTL C6,C6,ZEROES NO CP ASSIST UNTIL IPL COMPLETE @V386198 00615000
  710. ****************************************************************** 00616000
  711. * * 00616010
  712. * CHECK OUT LEVEL OF CP ASSIST AND TAKE ACTION AS FOLLOWS: * 00616020
  713. * * 00616030
  714. * BELOW LEVEL 18: DISABLE CP ASSIST * 00616040
  715. * * 00616050
  716. * LEVEL 18 OR 19: USE CP ASSIST, BUT MODIFY FREE/FRET AND * 00616060
  717. * DISABLE TCH ASSIST * 00616070
  718. * * 00616080
  719. * LEVEL 20: USE CP ASSIST * 00616090
  720. * * 00616100
  721. * ABOVE LEVEL 20: DISABLE CP ASSIST * 00616110
  722. * * 00616120
  723. ****************************************************************** 00616130
  724. SPACE , 00616140
  725. CLC F20,0(R3) CHECK FOR LEVEL 20 ASSIST @VA14280 00616150
  726. BL CPIPINT3 GREATER THAN 20... DON'T USE IT @VA14280 00616160
  727. BE CPINTFRE ASSIST IS LEVEL 20. GOOD, USE IT @VA14280 00616170
  728. CLC F18,0(R3) CHECK FOR LEVEL 18 OR 19 ASSIST @VA14280 00616180
  729. BH CPIPINT3 LESS THAN 18... DON'T USE IT @VA14280 00616190
  730. * 00616200
  731. * ASSIST LEVEL 18 OR 19... MUST CHANGE FREEX/FRETX INSTRUCTIONS BACK 00616210
  732. * TO REGULAR FREE/FRET, AND ADJUST FIRST OPERAND LOCATION. 00616220
  733. * 00616230
  734. L R15,CPATFREE ADDRESS OF DMKFREE INSTRUCTION @VA14280 00616240
  735. MVI OP1(R15),OLDFREE RESTORE OLD DMKFREE OPCODE @VA14280 00616250
  736. LH R14,OP2(,R15) GET S(MAXSIZE) @VA14280 00616260
  737. AL R14,F4 POINT IT TO S(SUBTABLE) @VA14280 00616270
  738. STH R14,OP2(,R15) STORE IT BACK @VA14280 00616280
  739. L R15,CPATFRET ADDRESS OF DMKFRET INSTRUCTION @VA14280 00616290
  740. MVI OP1(R15),OLDFRET RESTORE OLD DMKFRET OPCODE @VA14280 00616300
  741. LH R14,OP2(,R15) GET S(MAXSIZE) @VA14280 00616310
  742. AL R14,F4 POINT IT TO S(SUBTABLE) @VA14280 00616320
  743. STH R14,OP2(,R15) STORE IT BACK @VA14280 00616330
  744. * 00616340
  745. * ASSIST LEVEL 18 OR 19... MUST CHANGE OPERANDS OF DSP2 AND UNTFR 00616350
  746. * INSTRUCTIONS TO POINT TO SUBTABLE INSTEAD OF MAXSIZE. 00616360
  747. * 00616370
  748. L R15,ADSPRQ POINT TO DSP2 DATA LIST @VA14280 00616380
  749. L R14,DSPRQD(,R15) GET POINTER TO MAXSIZE @VA14280 00616390
  750. AL R14,F4 INCREMENT, POINT TO SUBTABLE @VA14280 00616400
  751. ST R14,DSPRQD(,R15) PUT IT BACK @VA14280 00616410
  752. L R15,AUNTF1 POINT TO UNTFR DATA LIST @VA14280 00616420
  753. L R14,UNTF1D(,R15) GET POINTER TO MAXSIZE @VA14280 00616430
  754. AL R14,F4 INCREMENT, POINT TO SUBTABLE @VA14280 00616440
  755. ST R14,UNTF1D(,R15) PUT IT BACK @VA14280 00616450
  756. * 00616460
  757. * ASSIST LEVEL 18 OR 19... MUST DISABLE TEST CHANNEL (TCH) ASSIST 00616470
  758. * BECAUSE IT DOESN'T MATCH THE SOFTWARE. 00616480
  759. * 00616490
  760. NI PSAEVMA,255-MICTCH DISABLE TCH ASSIST @VA14280 00616500
  761. B CPINTFRE CONTINUE... USE ASSISTS @VA14280 00616510
  762. SPACE , 00616520
  763. F18 DC F'18' USED TO CHECK CP ASSIST LEVEL @VA14280 00616530
  764. ADSPRQ DC V(DMKDSPRQ) ADDRESS OF DSP2 ASSIST DATA LIST @VA14280 00616540
  765. DSPRQD EQU 28 DISP TO MAXSIZE POINTER @VA14280 00616550
  766. AUNTF1 DC V(DMKUNTF1) ADDRESS OF UNTFR ASSIST DATA LIST@VA14280 00616560
  767. UNTF1D EQU 4 DISP TO MAXSIZE POINTER @VA14280 00616570
  768. OLDFREE EQU X'00' 2ND BYTE OF OLD 'FREE' OPCODE @VA14280 00616580
  769. OLDFRET EQU X'01' 2ND BYTE OF OLD 'FRET' OPCODE @VA14280 00616590
  770. OP1 EQU 1 DISPLACEMENT TO 2ND OPCODE BYTE @VA14280 00616600
  771. OP2 EQU 2 DISPLACEMENT TO FIRST OPERAND @VA14280 00616610
  772. SPACE , 00616620
  773. CPIPINT3 DS 0H HERE IF CP ASSIST ON CPU, BUT @VA14280*00616630
  774. WRONG LEVEL @VA14280 00616640
  775. NI CPSTAT2,255-CPASTON SET FLAG, WILL SEND @VA14280*00616650
  776. MESSAGE LATER @VA14280 00616660
  777. SPACE 00617000
  778. CPIPINT2 EQU * HERE IF CP ASSIST NOT ON THE CPU @V386198 00618000
  779. MVC CPCREG6,ZEROES CLEAR CP ASSIST ENABLE FLAG @V386198 00619000
  780. LA R3,CPATABLE POINT TO LIST OF CP ASSIST ADDRS @V386198 00621000
  781. LA R4,4 TABLE INCREMENT @V386198 00622000
  782. LA R5,CPATBLND ADDRESS OF END OF TABLE @V386198 00623000
  783. CLEARCPA L R6,0(,R3) GET CP ASSIST INSTRUCTION ADDR. @V386198 00624000
  784. MVC 0(6,R6),=X'0700,47000000' - AND REMOVE IT @V386198 00625000
  785. BXLE R3,R4,CLEARCPA @V386198 00626000
  786. CPINTFRE MVC PRNPSW(8),CPIPSWS+2*8 RESTORE PROGRAM NEW PSW @V386198 00627000
  787. AIF (NOT &FRETRAP).NOFTRAP HRC035DK 00627050
  788. SPACE , HRC035DK 00627100
  789. *--------------------------------------------------------------HRC035DK 00627150
  790. * REPLACE CP ASSIST INSTRUCTIONS DSP1, DSP2, UNTFR, FREEX ANDHRC035DK 00627200
  791. * FRETX WITH NO-OPS. HRC035DK 00627250
  792. *--------------------------------------------------------------HRC035DK 00627300
  793. SPACE , HRC035DK 00627350
  794. L R6,CPATDSP1 GET CP ASSIST INSTRUCTION DSP1 HRC035DK 00627400
  795. MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627450
  796. L R6,CPATDSP2 GET CP ASSIST INSTRUCTION DSP2 HRC035DK 00627500
  797. MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627550
  798. L R6,CPATUNTF GET CP ASSIST INSTRUCTION UNTFR HRC035DK 00627600
  799. MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627650
  800. L R6,CPATFREE GET CP ASSIST INSTRUCTION FREEX HRC035DK 00627700
  801. MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627750
  802. L R6,CPATFRET GET CP ASSIST INSTRUCTION FRETX HRC035DK 00627800
  803. MVC 0(6,R6),NOOP NO-OP THE MICROCODE INSTRUCTION HRC035DK 00627850
  804. .NOFTRAP ANOP HRC035DK 00627900
  805. EJECT 00628000
  806. * INITIALIZE FREE STORAGE SECTION OF CORTABLE 00629000
  807. L R4,=F'-16' 00630000
  808. L R3,=A(DMKSYSRV) GET SYSGEN SPECIFIED MEMORY SIZE 00631000
  809. L R3,0(,R3) ... 00632000
  810. LR R11,R3 SAVE GEND SIZE FOR LATER CALC @V396414 00633000
  811. LA R8,4095 ..... @V396414 00634000
  812. ALR R3,R8 ROUND TO NEXT HIGHEST PAGE @V396414 00635000
  813. SRL R3,12 GET PAGE NUMBER 00636000
  814. BCTR R3,0 DECREMENT BY 1 00637000
  815. SLL R3,4 *16 00638000
  816. A R3,ACORETBL GET CORTABLE ENTRY 00639000
  817. USING CORTABLE,R3 00640000
  818. L R5,=A(DMKSYSRM) GET REAL MEMORY SIZE 00641000
  819. L R5,0(,R5) ... 00642000
  820. LR R6,R5 SAVE REAL SIZE FOR LATER CALC @V396414 00643000
  821. ALR R5,R8 ROUND TO NEXT HIGHEST PAGE @V396414 00644000
  822. SRL R5,12 GET PAGE NUMBER 00645000
  823. BCTR R5,0 DECREMENT BY 1 00646000
  824. SLL R5,4 *16 00647000
  825. A R5,ACORETBL GET CORTABLE ENTRY 00648000
  826. CR R3,R5 IS ALL OF MEMORY AVAILABLE? 00649000
  827. BNH NOOFFLNE YES 00650000
  828. OFFLOOP MVC CORFPNT,=C'*OL*' FLAG PAGE AS OFFLINE 00651000
  829. BXH R3,R4,OFFLOOP 00652000
  830. SPACE 2 00653000
  831. NOOFFLNE DS 0H @VA01774 00654000
  832. CR R6,R11 REAL CORE > SYSGEN CORE ? @V396414 00655000
  833. BL USERM NO, USE REAL STORAGE SIZE @V396414 00656000
  834. LR R6,R11 YES, USE GEND SIZE @V396414 00657000
  835. SPACE 1 00658000
  836. USERM ST R6,SAVSTOR SAVE STOR SIZE FOR LATER @V396414 00659000
  837. AIF (NOT &AP).APCHK5 00660000
  838. TM CPIFLAG1,CPIAP IS THE APU OPERATIONAL FOR CPI @V407595 00661000
  839. BNO APNOPREF NO - BYPASS INIT OF PREFIX AREA @V407595 00662000
  840. * 00663000
  841. * YES - SETUP THE PREFIX STORAGE AREA 00664000
  842. * USING THE TOP 2 FRAMES OF STORAGE 00665000
  843. * 00666000
  844. LR R5,R3 LOCATE CORE TABLE ENTRY FOR @V407595 00667000
  845. * HIGHEST REAL STORAGE FRAME TO BE USED BY 00668000
  846. * DMKCPI. 00669000
  847. SH R5,H32 POINT TO 1ST CORE TABLE ENTRY @V407595 00670000
  848. * BELOW THE PREFIX AREA. 00671000
  849. L R1,CPIDMPSA GET PTR TO PSA ADDRESSES @V5BC0AB 00672000
  850. LR R7,R6 LOAD REAL STORAGE SIZE @V407595 00673000
  851. APPREFIX EQU * @V407595 00674000
  852. S R7,F4096 COMPUTE ADDRESS OF PREFIX AREA @V407595 00675000
  853. ST R7,0(,R1) STORE A PSA ADDRESS @V5BC0AB 00676000
  854. LA R1,N4(R1) INCREMENT INDEX TO PREFIXB @V407595 00677000
  855. MVC CORFPNT,ASYSVM INDICATE SYSTEM FRAME @V407595 00678000
  856. MVI CORFLAG,CORCP DITTO @V407595 00679000
  857. BXH R3,R4,APPREFIX PROCESS BOTH PSA'S @V407595 00680000
  858. APNOPREF EQU * @V407595 00681000
  859. .APCHK5 ANOP 00682000
  860. L R5,CPISYSFP GET PTR TO FREE PAGES SPECIFIED @V407595 00683000
  861. L R5,N0(,R5) GET FREE PAGES SPECIFIED ON @V407595 00684000
  862. * SYSCOR. @V407595 00685000
  863. ICM R11,B'1111',=A(DMKSLC) GET SIZE OF V=R, IF ANY @V396414 00686000
  864. BZ VRNONE SKIP SUBTRACTION, IF NONE @V396414 00687000
  865. L R7,ASYSVM ADDRESSABILITY @VA05369 00688000
  866. USING VMBLOK,R7 VA05369 @VA05369 00689000
  867. ST R6,VMSTOR SAVE SIZE IN SYSTEM'S VMBLOK. @VA05369 00690000
  868. DROP R7 @VA05369 00691000
  869. S R11,F4095 DEDUCT PAGE 0 @V396414 00692000
  870. SR R6,R11 DEDUCT V=R FROM STOR SIZE @V396414 00693000
  871. SPACE 1 00694000
  872. VRNONE SRL R6,14 CONVERT TO PAGES/4(25% OF PAGES) @V396414 00695000
  873. CR R5,R6 FREE PAGES > PAGES/4 ? @V396414 00696000
  874. BH FPDFLT YES, USE DEFAULT METHOD @V396414 00697000
  875. SPACE 1 00698000
  876. LTR R5,R5 OR, IF NO FREE PAGES SPECIFIED @V396414 00699000
  877. BZ FPDFLT USE DEFAULT METHOD @V396414 00700000
  878. LR R11,R5 SHIFT REGS FOR @V396414 00701000
  879. B SETUP ALLOCATION ROUTINE @V396414 00702000
  880. SPACE 1 00703000
  881. FPDFLT LR R11,R3 TOP OF CORE TABLE @V396414 00704000
  882. SL R11,ACORETBL SIZE OF CORE TABLE @VA01774 00705000
  883. SRL R11,4 GET NO OF PAGES DIV BY 16 @VA01774 00706000
  884. A R11,F1 ADJUST FOR LAST ENTRY 00707000
  885. * V=R SIZE IS NOT USED IN THE CALCULATION 00708000
  886. ICM R6,15,=A(DMKSLC) GET SIZE OF V=R @VA01774 00709000
  887. BZ NOVEQR BR, IF NOT GENED @VA01774 00710000
  888. SRL R6,12 GET NO PAGES @VA01774 00711000
  889. BCTR R6,0 LESS ONE FOR CP PAGE ZERO @VA01774 00712000
  890. SR R11,R6 ADJUST TOTAL PAGES @VA01774 00713000
  891. * 00714000
  892. NOVEQR CH R11,=H'64' DO WE HAVE 256 LEFT @VA01774 00715000
  893. BH FREBEE BR, IF YES @VA01774 00716000
  894. LA R11,3 OTHERWISE USE STD 3 PAGES @VA01774 00717000
  895. B SETUP INITIALIZE THE ENTRIES @VA03799 00718000
  896. * 00719000
  897. FREBEE SH R11,=H'64' REMOVE ONE BOX @VA01774 00720000
  898. SRL R11,4 NUMBER PAGES DIV BY 16 @VA01774 00721000
  899. LA R11,3(,R11) ADD IN THE STD 3 PAGES @VA01774 00722000
  900. TM CPIFLAG1,CPIAP WILL RUN AS AP ? @V4M0173 00723000
  901. BNO SETUP NO - DO NOT ADJUST FOR AP MODE @V4M0173 00724000
  902. LR R6,R11 LOAD WORK REG WITH NO. FREE PGES @V4M0173 00725000
  903. SRL R6,2 COMPUTE 25% OF FREE PAGES @V4M0173 00726000
  904. AR R11,R6 AP MODE NO. OF FREE PAGES IS @V4M0173 00727000
  905. * DEFAULT PLUS 25%. 00728000
  906. * R11 NOW HAS THE NUMBER OF 64K BLOCKS OVER 256K 00729000
  907. * PLUS THREE FOR FIRST 256K PLUS 25% IF AP MODE. 00730000
  908. * WE WILL ALLOCATE ONE FIXED FREE PAGE FOR EACH 00731000
  909. SETUP LR R6,R11 GET THE NUMBER OF PAGES @VA03799 00732000
  910. SLL R6,4 TIMES 16 FOR CORE TABLE INDEX @VA01774 00733000
  911. LR R5,R3 GET ADDR OF TOP OF CORE TABLE @VA01774 00734000
  912. SR R5,R6 COMPUTE LOW CORE TABLE ADDR @VA01774 00735000
  913. FRELOOP MVC CORFPNT,=C'FREE' FLAG CP FREE STORAGE PAGE 00736000
  914. MVI CORFLAG,CORCP MARK IT AS CP PAGE @V408246 00737000
  915. BXH R3,R4,FRELOOP 00738000
  916. L R15,ASYSVM ADDRESS OF THE SYSTEM VMBLOK @V408246 00739000
  917. LH R14,VMPAGES-VMBLOK(R15) GET NO OF SYSTEM PAGES @V408246 00740000
  918. AR R14,R11 ADD IN NUMBER OF 'FREE' PAGES @V408246 00741000
  919. STH R14,VMPAGES-VMBLOK(R15) @V408246 00742000
  920. AIF (NOT &TRACE(9)).TR1 00743000
  921. EJECT 00744000
  922. * 00745000
  923. * INITIALIZE TRACE TABLE SECTION OF CORTABLE 00746000
  924. LR R8,R3 ADDR OF TOP CORTABLE @VA01774 00747000
  925. SL R8,ACORETBL COMPUTE SIZE @VA01774 00748000
  926. AL R8,=A(X'3F0') ROUND UP TO NEAREST 256K OF CORE @VA01774 00749000
  927. SRL R8,10 COMPUTE LOW ADDR DIV BY 256K @VA01774 00750000
  928. L R15,CPISYSTR GET PTR TO SYSCOR TRACE= VALUE @V60BCAB 00751000
  929. LH R1,0(,R15) GET SYSCOR VALUE TRACE=(NUMBER OF 00752000
  930. * PAGES FOR TRACE TABLE) @V60BCAB 00753000
  931. CR R1,R8 SYSGEN VALUE GREATER THAN DEFAULT 00754000
  932. * (ONE PAGE/256K)? @V60BCAB 00755000
  933. BNH TRCDEFNO NO, USE DEFAULT VALUE @V60BCAB 00756000
  934. LR R8,R1 YES, USE SYSGEN VALUE @V60BCAB 00757000
  935. TRCDEFNO DS 0H @V60BCAB 00758000
  936. SLL R8,4 NOW TIMES 16 FOR CORETABLE INDEX @VA01774 00759000
  937. LR R5,R3 END OF TRACE ADDRESS @VA01774 00760000
  938. SR R5,R8 START ADDRESS @VA01774 00761000
  939. LA R8,16(R3) POINT TO NEXT PAGE ENTRY @VA01774 00762000
  940. S R8,ACORETBL MINUS BASE OF CORTABLE 00763000
  941. SLL R8,8 FORM END PAGE ADDRESS 00764000
  942. ST R8,TRACEND SET TRACE END ADDRESS 00765000
  943. LR R7,R8 SAVE FOR MSG CALC @V396414 00766000
  944. TRLOOP MVC CORFPNT,ASYSVM TRACE TABLE BELONGS TO SYSTEM @V408246 00767000
  945. MVI CORFLAG,CORCP ... 00768000
  946. BXH R3,R4,TRLOOP DO FOR ALL PAGES REQUIRED 00769000
  947. LR R8,R3 END CORTABLE SLOT 00770000
  948. LA R8,16(R8) BUMP TO LAST PAGE (START OF TRACE) 00771000
  949. S R8,ACORETBL MINUS BASE OF CORETABLE 00772000
  950. SLL R8,8 FORM START PAGE ADDRESS 00773000
  951. ST R8,TRACSTRT SET TRACE START ADDRESS 00774000
  952. ST R8,TRACCURR ALSO CURRENT POINTER 00775000
  953. SR R7,R8 TRACEND MINUS TRACSTRT @V396414 00776000
  954. ST R7,SAVTRA EQUALS TRACE STORAGE @V396414 00777000
  955. L R8,XRIGHT16 GET HALFWORD OF 1'S 00778000
  956. STH R8,TRACEFLG SET FLAG TO INDICATE ALL TRACING ON 00779000
  957. .TR1 ANOP 00780000
  958. EJECT 00781000
  959. * INITIALIZE DYNAMIC AREA SECTION OF CORTABLE 00782000
  960. L R5,=A(DMKSAV) ADDRESS OF LOWEST FREE PAGE 00783000
  961. AL R5,F4096 - PAGE ABOVE DMKSAV @VA02573 00784000
  962. SRL R5,8 GET PAGE NUMBER*16 00785000
  963. A R5,ACORETBL GET CORTABLE ENTRY 00786000
  964. LA R8,16(R3) POINT TO 1ST TRACE TABLE PAGE @VA03799 00787000
  965. SR R8,R5 FIND OUT HOW MANY PAGES AVAILABLE 00788000
  966. CH R8,=H'64' AT LEAST FOUR FREE PAGES ? @VA03799 00789000
  967. BNL *+8 YES - @VA03799 00790000
  968. OI CPI955SW,FF NO--VM/370 TOO LARGE FOR MACHINE @V60B7AB 00791100
  969. L R10,=A(DMKPTRCP) ANCHOR LIST FOR DMKPTR @V408246 00792000
  970. LR R6,R3 SAVE CURRENT CORETBL POINTER @V408246 00793000
  971. SL R6,ACORETBL FIND THE PAGE NUMBER @V408246 00794000
  972. SLL R6,8 AND MULTIPLY IT BY 256. @V408246 00795000
  973. ST R6,0(,R10) STORE HIGHEST PAGE NUMBER IN @V408246 00796000
  974. * TABLES 00797000
  975. ST R6,20(,R10) THAT ARE MAINTAINED BY @VA08341 00798100
  976. ST R6,60(,R10) DMKPTR.... @VA08341 00799100
  977. SPACE 1 00800000
  978. ST R3,4(,R10) ALSO SAVE THE HIGHEST USER @V408246 00801000
  979. ST R3,24(,R10) CORETABLE ENTRY FOR @VA08341 00802100
  980. ST R3,64(,R10) DMKPTR.... @VA08341 00803100
  981. SPACE 1 00804000
  982. SPACE 00805000
  983. L R7,=A(DMKPTRF1) GET PTR TO FREELIST 00806000
  984. LR R10,R7 SAVE 00807000
  985. LA R8,CORFREE 00808000
  986. SLL R8,24 SHIFT TO HIGH ORDER BYTE 00809000
  987. SR R9,R9 CLEAR 00810000
  988. ST R3,0(,R7) SET FIRST CORTABLE ENTRY 00811000
  989. SR R15,R15 ZERO PAGEABLE PAGE COUNTER 00812000
  990. CORLOOP LR R6,R3 GET FIRST CORTABLE ENTRY 00813000
  991. AR R6,R4 GET NEXT CORTABLE ENTRY 00814000
  992. STM R6,R9,0(R3) FORMAT THIS CORTABLE ENTRY 00815000
  993. LR R7,R3 GET THIS CORTABLE ENTRY 00816000
  994. LA R15,1(,R15) KEEP A RUNNING TOTAL 00817000
  995. BXH R3,R4,CORLOOP 00818000
  996. ST R3,4(,R10) SET LAST CORTABLE ENTRY 00819000
  997. LR R6,R10 GET PTR TO FREELIST 00820000
  998. STM R6,R9,0(R3) FORMAT LAST CORTABLE ENTRY 00821000
  999. LA R15,1(,R15) AND COUNT IT 00822000
  1000. L R7,=A(DMKPTRFN) 00823000
  1001. ST R15,0(,R7) 00824000
  1002. EJECT 00825000
  1003. L R1,=A(DMKCPEND) GET END OF RESIDENT NUCLEUS, AND 00826000
  1004. LA R5,4095(,R1) GET ADDRESS OF 1ST PAGABLE PAGE 00827000
  1005. SRL R5,12 GET PAGE NUMBER 00828000
  1006. SLL R5,4 TIMES 16 00829000
  1007. A R5,ACORETBL POINT TO CORTABLE ENTRY FOR PAGE 00830000
  1008. L R10,=A(DMKPTRCP) ANCHOR LIST FOR DMKPTR @V408246 00831000
  1009. AR R3,R4 POINT TO LAST USER CORETABLE @V408246 00832000
  1010. * ENTRY 00833000
  1011. L R6,ASYSVM ADDRESS OF SYSTEM VMBLOK @V408246 00834000
  1012. SLR R7,R7 ... @V408246 00835000
  1013. SLR R8,R8 ... @V408246 00836000
  1014. SPACE 1 00837000
  1015. USERLOOP STM R6,R9,0(R3) INITIALIZE CORTABLE ENTRY @V408246 00838000
  1016. LA R15,1(,R15) COUNT NUMBER OF PAGES FOR @V408246 00839000
  1017. * DISPATCHER. 00840000
  1018. BXH R3,R4,USERLOOP DO THEM ALL... @V408246 00841000
  1019. STM R6,R9,0(R3) ALSO INITIALIZE THE LAST ONE. @V408246 00842000
  1020. BCTR R3,0 DECREMENT ONE FOR LIMIT @V408246 00843000
  1021. ST R3,12(,R10) STORE THE LOWEST USER CORETABLE @V408246 00844000
  1022. * ENTRY 00845000
  1023. ST R3,32(,R10) FOR DMKPTR.... @VA08341 00846100
  1024. ST R3,72(,R10) ............ @VA08341 00846200
  1025. LA R3,1(,R3) RESTORE ORIGINAL COUNT @V408246 00848000
  1026. SPACE 1 00849000
  1027. LA R15,1(,R15) AND COUNT IT 00850000
  1028. L R7,=A(DMKDSPNP) GET PAGABLE PAGE COUNTER 00851000
  1029. ST R15,0(,R7) SAVE COUNT 00852000
  1030. L R10,=A(DMKPTRSN) ADDRESS OF PAGE SELECTION DATA@VA08341 00852100
  1031. LA R15,2 NUMBER OF BLOCKS OF FRAMES FOR @VA08341 00852200
  1032. * PAGE SELECTION TO SCAN 00852300
  1033. STH R15,0(R10) SET UP SCANNUM FIELD IN DMKPTR @VA08341 00852400
  1034. STH R15,2(R10) SET UP SCANBLOK FIELD IN DMKPTR @VA08341 00852500
  1035. SLR R15,R15 ZERO REGISTER @VA08341 00852600
  1036. STC R15,6(R10) INITIALIZE FLAGS FOR DMKPTR PAGE @VA08341 00852700
  1037. * SELECTION ROUTINE 00852800
  1038. LA R2,4095(,R1) 00853000
  1039. SRL R2,12 00854000
  1040. SPACE 3 00855000
  1041. CPLOOP EQU * HERE TO INITIALIZE RESIDENT NUCLEUS AREA OF CORTABLE 00856000
  1042. AR R3,R4 GET NEXT CORTABLE ENTRY 00857000
  1043. MVC CORFPNT,ASYSVM NUCLEUS BELONGS TO SYSTEM @V408246 00858000
  1044. MVI CORFLAG,CORCP MARK IT. @V408246 00859000
  1045. BCT R2,CPLOOP 00860000
  1046. EJECT 00861000
  1047. * INITIALIZE FREE STORAGE 00862000
  1048. LA R2,4095(,R1) 00863000
  1049. N R2,XPAGNUM 00864000
  1050. L R7,=A(DMKFRELO) 00865000
  1051. ST R2,0(,R7) 00866000
  1052. LR R0,R2 00867000
  1053. SR R0,R1 00868000
  1054. SRA R0,3 BYTES TO DBL-WORDS PLEASE 00869000
  1055. C R0,F3 AT LEAST THREE DBL-WORDS HOPEFULLY ? 00870000
  1056. BL NOFRET NO - FORGET IT. 00871000
  1057. SR R14,R14 OK (AT LEAST 3 DBL WORDS) - SET 00872000
  1058. LR R15,R0 REGS AND DIVIDE NO. DBL WORDS BY 3 00873000
  1059. D R14,F3 (SINCE THEY'LL BE USED FOR SUBPOOLS) 00874000
  1060. SR R0,R14 SUBTRACT REMAINDER (0,1,2) FROM COUNT, 00875000
  1061. SLL R14,3 REMAINDER TO BYTES PLEASE (0,8,16) 00876000
  1062. AR R1,R14 AND ADD TO THE STARTING ADDRESS 00877000
  1063. CALL DMKFRETR 00878000
  1064. NOFRET LA R15,SAVESIZE*8 LENGTH OF ONE SAVE-AREA 00879000
  1065. SR R2,R15 COMPUTE DMKFRELO - LENGTH ONE SAVE-AREA 00880000
  1066. L R7,CPISVCLO AND @V407595 00881000
  1067. ST R2,0(,R7) STORE WHERE NEEDED BY DMKSVC @V407595 00882000
  1068. AR R2,R15 RESTORE R2 = DMKFRELO 00883000
  1069. LA R15,PAGESIZE*8 LENGTH OF PAGING IOBLOK 00884000
  1070. SR R2,R15 DMKFRELO - SAME 00885000
  1071. L R7,=A(DMKPAGLO) AND 00886000
  1072. ST R2,0(,R7) STORE WHERE NEEDED BY DMKPAGIO 00887000
  1073. SLL R11,12 NOW GET NO. OF PAGES TO FRET * 4096 00888000
  1074. L R7,=A(DMKSYSRM) GET REAL MACHINE SIZE 00889000
  1075. L R1,0(,R7) ... 00890000
  1076. L R15,=A(DMKSYSRV) GET SYSGEN SPECIFIED SIZE 00891000
  1077. C R1,0(,R15) COMPARE REAL WITH SYSGEN 00892000
  1078. BNH *+8 LOW OR EQUAL -- USE ACTUAL MAIN STORAGE 00893000
  1079. L R1,0(,R15) HIGH -- USE SYSGEN SIZE 00894000
  1080. TM CPIFLAG1,CPIAP IS PREFIXING ESTABLISHED @V407595 00895000
  1081. BNO NOAP NO - BYPASS PREFIX ADJUSTMENT @V407595 00896000
  1082. S R1,F8192 YES - ADJUST FOR 2 PREFIX FRAMES @V407595 00897000
  1083. NOAP EQU * @V407595 00898000
  1084. LR R2,R1 ... 00899000
  1085. N R2,BDYCHK .... @V396414 00900000
  1086. CR R2,R1 ON 2K BOUNDRY ? 00901000
  1087. BE *+8 NO 00902000
  1088. S R11,=F'2048' RETURN 1/2 PAGE LESS 00903000
  1089. SR R1,R11 GET PTR TO START OF FREE AREA 00904000
  1090. LR R0,R11 GET NO BYTES TO BE RETURNED 00905000
  1091. SRL R0,3 /8 00906000
  1092. CALL DMKFRETR 00907000
  1093. L R7,=A(DMKFREHI) 00908000
  1094. ST R1,0(,R7) 00909000
  1095. L R7,CPISVCHI ALSO @V407595 00910000
  1096. ST R1,0(,R7) STORE WHERE NEEDED BY DMKSVC @V407595 00911000
  1097. L R7,=A(DMKPAGHI) AND 00912000
  1098. ST R1,0(,R7) STORE FOR USE BY DMKPAGIO 00913000
  1099. EJECT 00914000
  1100. LA R4,SAVNUMBR+3 NUMBER OF SAVE-AREAS WANTED FOR DMKPSASV 00915000
  1101. * NOTE- (1 USED FOR DMKFRESV) 00916000
  1102. SR R0,R0 SET R0-R1 FOR MULTIPLY USE 00917000
  1103. LA R1,SAVESIZE SIZE OF ONE SAVE-AREA INTO R1 00918000
  1104. MR R0,R4 SIZE OF ONE BIG BLOCK NOW IN R1 00919000
  1105. LR R0,R1 INTO R0 PLEASE 00920000
  1106. CALL DMKFREE GET ONE BIG CHUNK OF SAVE-AREAS 00921000
  1107. LA R0,SAVESIZE*8 SIZE OF ONE SAVE-AREA INTO R0 (BYTES) 00922000
  1108. L R2,CPISVCNS ANCHOR FOR DMKSVCSV S.A. CHAIN @V407595 00923000
  1109. SL R4,F1 SUBTRACT 1 FOR DMKFRESV @VM08952 00924000
  1110. XCFREE XC 0(SAVESIZE*8,R1),0(R1) CLEAR ONE SAVE-AREA 00925000
  1111. ST R1,0(,R2) STORE POINTER TO SAME 00926000
  1112. LR R2,R1 NEW ADDRESS OF POINTER 00927000
  1113. AR R1,R0 ADDRESS OF NEXT SAVE AREA 00928000
  1114. BCT R4,XCFREE ITERATE FOR DESIRED NUMBER OF SAVE-AREAS 00929000
  1115. EX 0,XCFREE CLEAR THE ONE LAST BLOCK, THEN: 00930000
  1116. L R15,=A(DMKFRESV) GET DMKFREE'S "BACK POCKET" PTR 00931000
  1117. ST R1,0(,R15) SAVE FOR CALL TO DMKPTRFR @VM08952 00932000
  1118. SPACE 2 00933000
  1119. * GET CHUNK OF STORAGE FOR USE BY DMKPTR WHEN IT 00934000
  1120. * BECOMES NECESSARY FOR THE SYSTEM TO EXTEND. 00935000
  1121. L R4,=A(DMKPTRFA) WHERE TO PUT THE ADDRESS @VM08952 00936000
  1122. LA R0,CPEXSIZE*16 GET LARGE BLOCK @VM08952 00937000
  1123. CALL DMKFREE ... @VM08952 00938000
  1124. ST R1,0(,R4) STORE ITS ADDRESS IN DMKPTRFA @VM08952 00939000
  1125. STC R0,0(,R4) AND THE LENGTH IN DW'S @VM08952 00940000
  1126. * NOW SET "LRGSTSIZ" (DEFINED IN DMKFRE IF STATISTICS INCLUDED) TO 00941000
  1127. * A SMALL VALUE (INSTEAD OF THE BIG CHUNK OF BLOCKS WE GOT EARLIER): 00942000
  1128. L R15,=A(DMKFRELG) GET A("LRGSTSIZ") IN DMKFRE 00943000
  1129. LTR R15,R15 DEFINED ? 00944000
  1130. BZ *+8 NOPE - FORGET IT. 00945000
  1131. ST R0,0(,R15) YES - STORE SIZE PAGING IOBLOK (IN R0) 00946000
  1132. AIF (NOT &AP).APCHK6 00947000
  1133. TM CPIFLAG1,CPIAP IS APU AVAILABLE @V407595 00948000
  1134. BNO NOAP1 NO - CONTINUE WITHOUT AN APU @V407595 00949000
  1135. * 00950000
  1136. * YES - OBTAIN A CPEXBLOK TO BE USED BY 00951000
  1137. * THE SWITCH MACRO AND A DEFER 00952000
  1138. * EXECUTION BLOCK TO BE SAVED IN 00953000
  1139. * THE OPERATOR'S VMBLOK 00954000
  1140. * 00955000
  1141. LA R0,CPEXSIZE GET LENGTH IN DBW @V407595 00956000
  1142. CALL DMKFREE OBTAIN STORAGE @V407595 00957000
  1143. ST R1,PSACPXBP SAVE ADDR IN ABSOLUTE PSA. @V407595 00958000
  1144. LA R0,CPEXSIZE GET LENGTH IN DBW @V407595 00959000
  1145. CALL DMKFREE OBTAIN STORAGE @V407595 00960000
  1146. L R11,ASYSVM GET ADDR SYSTEM VMBLOK @V4M0203 00961000
  1147. USING VMBLOK,R11 ADDRESSABILITY TO VMBLOK @V4M0203 00962000
  1148. MVC VMCPTIME,HALFTIME INIT SYSTEM AP MODE SUPV TIMER@VM40203 00963000
  1149. MVC VMAPTIME,HALFTIME SAME FOR ATTACHED TIMER @V4M0203 00964000
  1150. L R11,ASYSOP OBTAIN ADDR OF OPERATOR'S VMBLOK @V407595 00965000
  1151. ST R1,VMDFTPNT SAVE ADDR OF DEFER EXEC BLOC @V407595 00966000
  1152. MVC VMCPTIME,HALFTIME INIT OPER AP MODE SUPV TIMER @V4M0203 00967000
  1153. MVC VMAPTIME,HALFTIME SAME FOR ATTACHED TIMER @V4M0203 00968000
  1154. * 00969000
  1155. * OBTAIN BACK POCKET FOR DMKFRE WHEN FREE STORAGE MUST BE 00970000
  1156. * EXTENDED AND THE GLOBAL SYSTEM LOCK IS NOT AVAILABLE. @V407595 00971000
  1157. * 00972000
  1158. L R10,CPIFREAP ADDR OF DMKFRE BACK POCKET PTR @V407595 00973000
  1159. SR R0,R0 CLEAR INPUT REG @V407595 00974000
  1160. IC R0,N0(R10) OBTAIN NUMBER OF BYTES IN DBW'S @V407595 00975000
  1161. CALL DMKFREE OBTAIN STORAGE @V407595 00976000
  1162. STCM R1,N7,N1(R10) SAVE ADDRESS FOR DMKFRE @V407595 00977000
  1163. LA R0,CPEXSIZE MUST GET CPEXBLOK TOO @VA12596 00977100
  1164. CALL DMKFREE @VA12596 00977300
  1165. ST R1,4(,R10) PUT CPEX POINTER IN DMKFREAP @VA12596 00977500
  1166. NOAP1 EQU * @V407595 00978000
  1167. .APCHK6 ANOP 00979000
  1168. SPACE 2 00980000
  1169. SR R10,R10 INDICATE PROCESSING IPL DEVICE @VA01097 00981000
  1170. LH R1,SYSIPLDV ADDRESS OF IPL DEVICE @VA01097 00982000
  1171. CALL DMKSCNRU LOCATE THE RDEVBLOK ADDRESS @VA01097 00983000
  1172. BNZ CPI1 NO RDEVBLOK FOR IPL DEVICE @VA01097 00984000
  1173. LR R15,R1 SET DEVICE ADDRESS FOR HIO @VA01097 00985000
  1174. B MOUNTIPL GO MOUNT IPL DEVICE @VA01097 00986000
  1175. EJECT 00987000
  1176. MOUNTALL EQU * MOUNT ALL DEVICES @VA01097 00988000
  1177. LA R4,2 GET INCREMENT FOR BXLE LOOP 00989000
  1178. SR R9,R9 ZERO CHANNEL INDEX 00990000
  1179. L R10,ARIOCT GET ADDRESS OF CHANNEL INDEX TABLE 00991000
  1180. MOUNTNCH LA R5,30 GET END OF INDEX TABLE 00992000
  1181. LH R6,0(R9,R10) LOAD INDEX OF NEXT CHANNEL 00993000
  1182. LTR R6,R6 IS CHANNEL ALIVE? 00994000
  1183. BM MOUNTCHI NO, TRY NEXT CHANNEL 00995000
  1184. A R6,ARIOCH GET ADDRESS OF RCHBLOK 00996000
  1185. USING RCHBLOK,R6 00997000
  1186. SR R2,R2 ZERO CONTROL UNIT INDEX 00998000
  1187. MOUNTNCU LA R5,62 GET END OF INDEX TABLE 00999000
  1188. LH R7,RCHCUTBL(R2) LOAD INDEX OF NEXT CONTROL UNIT 01000000
  1189. LTR R7,R7 IS CONTROL UNIT THERE? 01001000
  1190. BM MOUNTCUI NO, TRYBNEXT CONTROL UNIT 01002000
  1191. A R7,ARIOCU GET ADDRESS OF RCUBLOK 01003000
  1192. USING RCUBLOK,R7 01004000
  1193. SR R3,R3 ZERO DEVICE INDEX 01005000
  1194. MOUNTNDV LA R5,30 GET END OF INDEX TABLE 01006000
  1195. LH R8,RCUDVTBL(R3) LOAD INDEX OF NEXT DEVICE 01007000
  1196. LTR R8,R8 IS DEVICE THERE? 01008000
  1197. BM MOUNTDVI NO, TRY NEXT DEVICE 01009000
  1198. SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01010000
  1199. A R8,ARIODV GET ADDRESS OF RDEVBLOK 01011000
  1200. USING RDEVBLOK,R8 01012000
  1201. LH R11,RDEVADD FORM DEVICE ADDRESS 01013000
  1202. LH R15,RCUADD ... 01014000
  1203. OR R15,R11 ... 01015000
  1204. AH R15,RCHADD ... 01016000
  1205. CLC RDEVTYPC(2),P3800 IS IT A 3800 PRINTER ? @V60B9BA 01017000
  1206. BNE NOT3800 XFER IF NOT @V60B9BA 01018000
  1207. LR R11,R15 SAVE R15 ACROSS CALL @V60B9BA 01019000
  1208. LA R0,RSPXSIZE SIZE OF RSPXBLOK @V60B9BA 01020000
  1209. CALL DMKFREE GET STORAGE FOR IT @V60B9BA 01021000
  1210. LR R15,R11 RESTORE VALUE IN R15 @V60B9BA 01022000
  1211. ST R1,RDEVEXTN SAVE ITS LOCATION @V60B9BA 01023000
  1212. XC 0(RSPXSIZE*8,R1),0(R1) CLEAR IT @V60B9BA 01024000
  1213. NOT3800 TM RDEVSTA2,RDEVALT ALTERNATE PATH DEVICE @V60B9BA 01025000
  1214. BO CHKIPL YES, SKIP CHECKING FOR ALT. PATH @VA07369 01026000
  1215. CL R7,RDEVCUA IS THIS THE FIRST CTL UNIT PATH? @V407438 01027000
  1216. BE CHKALTCH YES, MAYBE ALT CHANNEL @V407438 01028000
  1217. OI CPISTAT,ALTPATH ALT PATH FOUND, SET FLAG @V407438 01029000
  1218. OI RDEVSTA2,RDEVALT ALTERNATE PATH DEVICE @VA07369 01030000
  1219. B CHKIPL CONTINUE. @V407438 01031000
  1220. CHKALTCH LR R14,R7 ADDRESS OF THE CTL UNIT TO R14 @V407438 01032000
  1221. TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE CTL UNIT? @V407438 01033000
  1222. BZ *+8 NOPE, SKIP @V407438 01034000
  1223. L R14,RCUPRIME ADDRESS THE PRIME @V407438 01035000
  1224. CL R6,RCUCHA-RCUBLOK(R14) THIS 1ST CHANNEL PATH? @V407438 01036000
  1225. BE CHKIPL YES, VANILLA, BR. @V407438 01037000
  1226. OI CPISTAT,ALTPATH INDICATE ALTERNATE PATH FOUND @V407438 01038000
  1227. OI RDEVSTA2,RDEVALT ALTERNATE PATH DEVICE @VA07369 01039000
  1228. CHKIPL EQU * HERE TO CHECK FOR IPL DEVICE @V407438 01040000
  1229. CH R15,SYSIPLDV IPL DEVICE ? @VA01097 01041000
  1230. BE MOUNTDVI YES -- ALL READY MOUNTED @VA01097 01042000
  1231. MOUNTIPL MVI CPISNS,00 CLEAR 1ST BYTE OF SENSE INFO @VA01097 01043000
  1232. L R14,F240 SET NUMBER OF RETRIES @VA06205 01044000
  1233. CPIHIO HIO 0(R15) ISSUE HIO 01045000
  1234. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01046000
  1235. DC X'0F00' HALT I/O TRACE ENTRY @V407466 01047000
  1236. BC 1,MOUNTDVI CC=3, NOT OPERATIONAL 01048000
  1237. BC 2,CPIHIO CC=2, BURST OP HALTED 01049000
  1238. BC 8,CPIRS CC=0, INTERRUPT PENDING 01050000
  1239. TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01051000
  1240. BNO CPIRS NO - CONTINUE @VA06205 01052000
  1241. TIO 0(R15) TO CLEAR HEX 70 STATUS @VA06205 01053000
  1242. TIO 0(R15) FROM 3705 @VA06205 01054000
  1243. TIO 0(R15) (CODE FOR 3705 ONLY) @VA06205 01055000
  1244. TIO 0(R15) @VA06205 01056000
  1245. BCT R14,CPIHIO RETRY HIO @VA06205 01057000
  1246. B MOUNTDVI TRY NEXT DEVICE @VA06205 01058000
  1247. CPIRS L R14,=A(RETRYNUM) SET NUMBER OF RETRIES @V60B6B8 01059000
  1248. CLI RDEVTYPC,CLASSPEC CLASSPEC? @V60B6B8 01060000
  1249. BE CHKMSC IS MSC - ISSUE SUSPEND ORDER @V60B6B8 01061000
  1250. TM RDEVTYPC,CLASDASD+CLASTAPE THIS TAPE OR DASD @V60B6B8 01062000
  1251. BZ CPIDEVEN NOPE, DONE; GO MARK ONLINE @V60B6B8 01063000
  1252. CPITIO11 BCT R14,CPITIO1 LOOP THRU NO. OF RETRIES @VA04712 01064000
  1253. B MOUNTDVI 01065000
  1254. CPITIO L R1,WAITCNT LOAD WAIT COUNT @VA05431 01066000
  1255. BCT R1,* WAIT A WHILE @VA05431 01067000
  1256. B CPITIO11 RETURN TO TIO LOOP @VA04712 01068000
  1257. CPITIO1 TIO 0(R15) TIO 01069000
  1258. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01070000
  1259. DC X'0E00' TEST I/O ENTRY @V407466 01071000
  1260. BC 1,MOUNTDVI CC=3, NOT OPERATIONAL 01072000
  1261. BC 2,CPITIO CC=2, CHANNEL OR SUBCHANNEL BUSY 01073000
  1262. BC 8,CPIRD CC=0, DEVICE AVAILABLE 01074000
  1263. TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01075000
  1264. BO CPITIO1 YES, REPEAT TIO 01076000
  1265. TM CSW+4,BUSY CONTROL UNIT OR DEVICE BUSY ? 01077000
  1266. BO CPITIO YES -- POSSIBLE SHARED CTL UNIT 01078000
  1267. TM CSW+4,UC UNIT CHECK? 01079000
  1268. BZ CPIRD NOPE, GO DO THE 'RELEASE' TEST @V407438 01080000
  1269. BAL R14,CPISNSUB YES - DO A SENSE TO CLEAN UP CONTROL UNIT 01081000
  1270. * 01082000
  1271. * ISSUE A "RELEASE" CCW TO: 1) SEE OF THE DEVICE HAS RES/REL FTR 01083000
  1272. * 1) SEE IF THE DEVICE HAS RESERVE/RELEASE CAPABILITIES, AND 01084000
  1273. * 2) FREE THE DEVICE IF SOMEBODY HAD IT RESERVED PRIOR TO A CRASH 01085000
  1274. * 01086000
  1275. CPIRD MVC CPIRLD(6),FFS FILL RELEASE DATA WITH X'FF'S @V407438 01087000
  1276. LA R14,CPICCWRL SET UP FOR DASD RELEASE CCW @V407438 01088000
  1277. CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE? @V407438 01089000
  1278. BE *+8 YES, CCW ADDRESS IS OK @V407438 01090000
  1279. LA R14,CPICCWRT SET TO TAPE RELEASE CCW @V407438 01091000
  1280. ST R14,CAW ... 01092000
  1281. L R14,=A(RETRYNUM) SET NUMBER OF RETRIES @VA00809 01093000
  1282. CHKRSRL1 BCT R14,CHKRSRL2 LOOP THRU NUMBER OF RETRIES 01094000
  1283. B MOUNTDVI GIVE UP IF STILL "BUSY" 01095000
  1284. CHKRSRL2 SIO 0(R15) ATTEMPT THE "RELEASE" 01096000
  1285. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01097000
  1286. DC X'0B00' START I/O ENTRY @V407466 01098000
  1287. BC 8,CHKRSRL3 CC=0 MEANS IT MUST HAVE WORKED 01099000
  1288. BC 2+1,MOUNTDVI CC=2 OR CC=3, BUSY OR NOT OPERATIONAL 01100000
  1289. TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01101000
  1290. BO CHKRSRL2 YES - KEEP TRYING INDEFINITELY 01102000
  1291. L R1,WAITCNT LOAD WAIT COUNT @VA05431 01103000
  1292. BCT R1,* WAIT A WHILE @VA05431 01104000
  1293. TM CSW+4,BUSY CONTROL UNIT OR DEVICE BUSY ? 01105000
  1294. BO CHKRSRL1 YES - KEEP TRYING (WITHIN REASON) 01106000
  1295. TM CSW+4,UC UNIT CHECK ON THE RELEASE ? 01107000
  1296. BZ SETRRFTR NOPE, GO SET RES/REL FTR CODE @V407438 01108000
  1297. BAL R14,CPISNSUB YES - DO A SENSE TO CLEAN UP CONTROL UNIT 01109000
  1298. B CPIRDCON FORGET RELEASE, BUT TRY TO READ LABEL. 01110000
  1299. CHKRSRL3 TIO 0(R15) IF CONDITION-CODE 0, 01111000
  1300. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01112000
  1301. DC X'0E00' TEST I/O ENTRY @V407466 01113000
  1302. BC 2,CHKRSRL3 WAIT FOR DATA TRANSMISSION TO FINISH 01114000
  1303. TM CSW+4,UC UNIT CHECK? @VA00864 01115000
  1304. BO CPISNSEX YUP, ASSUME FAILURE; GO CLEAN UP @V407438 01116000
  1305. SETRRFTR EQU * @VA07875 01117000
  1306. L R1,RDEVCUB GET ADDRESS ALTCU @VA07875 01118000
  1307. LTR R1,R1 IS THERE ONE ? @VA07875 01119000
  1308. BNZ CPIRDCON YES, WE CAN NOT ALLOW RES/REL @VA07875 01120000
  1309. OI RDEVFTR,FTRRSRL SET RESERVE/RELEASE FTR @VA07875 01121000
  1310. * 01122000
  1311. * HERE TO READ THE VOLUME LABEL. 01123000
  1312. * 01124000
  1313. CPIRDCON CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE? @V407438 01125000
  1314. BNE CPIDEVEN NOPE, MARK ON LINE AND CONTINUE @V407438 01126000
  1315. TM CPISNS,INTREQ DID WE HAVE AN INTERVENTION REQUIRED ? 01127000
  1316. BO CPIDEVEN YES, DON'T BOTHER TO READ LABEL @VA00864 01128000
  1317. TM RDEVSTAT,RDEVDISA PROCESSED DEV BY A DIFF PATH @V407438 01129000
  1318. BZ CPIDEVEN YES, SKIP LABEL STUFF @V407438 01130000
  1319. CLI RDEVTYPE,TYP3380 OK - MOUNTING A 3380 ?? HRC011DK 01131390
  1320. BE TEST3380 YES - CONTINUE -- HRC011DK 01131780
  1321. CLI RDEVTYPE,TYP2305 OK - MOUNTING A 2305 ?? HRC011DK 01132170
  1322. BNE TEST3340 NO -- CONTINUE -- HRC011DK 01132560
  1323. TM RDEVADD+1,X'07' IS THIS AN 'EXPOSURE' ADDRESS 01133000
  1324. BNZ CPIDEVEN YES - DO NOT READ LABEL IF NOT @V2A2029 01134000
  1325. * A BASE ADD 01135000
  1326. TEST3340 CLI RDEVTYPE,TYP3340 OK - MOUNTING A 3340 ? @V2A2029 01136000
  1327. BNE CPISTCAW NO -- CONTINUE -- @V2A2029 01137000
  1328. XC CPISNS,CPISNS CLEAR DATA AREA HRC011DK 01138490
  1329. BAL R14,CPISNSUB DO SENSE TO IDENTIFY DATA MODULE @V2A2029 01139000
  1330. TM CPISNS+2,X'80' RPS FEATURE INSTALLED ? @V2A2029 01140000
  1331. BZ *+8 NO - BRANCH @V2A2029 01141000
  1332. OI RDEVFTR,FTRRPS INDICATE RPS FEATURE INSTALLED @V2A2029 01142000
  1333. TM CPISNS+2,X'03' 35MB OR 70MB MOUNTED ? @V2A2029 01143000
  1334. BNM MOUNTDVI BRANCH IF ZERO OR ONES-(OFFLINE) @V2A2029 01144000
  1335. TM CPISNS+2,X'02' 70MB DATA MODULE MOUNTED ? @V2A2029 01145000
  1336. BZ SET35MB NO - SET 35MB @V2A2029 01146000
  1337. OI RDEVFTR,FTR70MB INDICATE 70MB PACK MOUNTED @V2A2029 01147000
  1338. B CPISTCAW AND CONTINUE @V2A2029 01148000
  1339. TEST3380 DS 0H HRC011DK 01148100
  1340. XC CPISNS,CPISNS CLEAR DATA AREA HRC011DK 01148200
  1341. MVC CAW(4),=A(CPISNSE4) SETUP FOR E4 SENSE ID HRC011DK 01148300
  1342. BAL R14,SNSIOR GO READ HRC011DK 01148400
  1343. MVC RDEVMDL,CPISNSB6 HRC011DK 01148500
  1344. B CPISTCAW CONTINUE HRC011DK 01148600
  1345. SET35MB OI RDEVFTR,FTR35MB INDICATE 35MB PACK MOUNTED @V2A2029 01149000
  1346. CPISTCAW MVC CAW(4),=A(CPICCW2) SET CAW TO READ LABEL 01150000
  1347. L R14,=A(RETRYNUM) SET NUMBER OF RETRIES 01151000
  1348. CPISIO BCT R14,*+8 01152000
  1349. B MOUNTDVI 01153000
  1350. CPISIO1 SIO 0(R15) ISSUE SIO 01154000
  1351. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01155000
  1352. DC X'0B00' START I/O ENTRY @V407466 01156000
  1353. BC 2+1,MOUNTDVI CC=2 OR CC=3, BUSY OR NOT OPERATIONAL 01157000
  1354. BC 8,CPIALLOC CC=0, STARTED 01158000
  1355. TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01159000
  1356. BO CPISIO1 YES, RETRY SIO 01160000
  1357. L R1,WAITCNT LOAD WAIT COUNT @VA05431 01161000
  1358. BCT R1,* WAIT A WHILE @VA05431 01162000
  1359. TM CSW+4,BUSY CONTROL UNIT OR DEVICE BUSY ? 01163000
  1360. BO CPISIO YES, RETRY (DECREMENTING COUNTER) 01164000
  1361. B CPISNSEX ASSUME FAILURE 01165000
  1362. CPIALLOC TIO 0(R15) ISSUE TIO 01166000
  1363. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01167000
  1364. DC X'0E00' TEST I/O ENTRY @V407466 01168000
  1365. BC 2,CPIALLOC CC=2, SUBCHANNEL OR CHANNEL BUSY @V407466 01169000
  1366. BC 1,MOUNTDVI CC=3, NOT OPERATIONAL 01170000
  1367. CLI CSW+4,CE+DE CHANNEL END WITH DEVICE END? 01171000
  1368. BNE CPISNSEX NO, ASSUME FAILURE 01172000
  1369. LA R14,CPICCW2E ADDRESS OF THE END IF DATA READ @V407438 01173000
  1370. CLM R14,B'0111',CSW+1 IS THAT WHERE IT ENDED? @V407438 01174000
  1371. BNE CPIDEVEN NOPE, MUST BE 3330V W/ CYL FAULT @V407438 01175000
  1372. LA R0,4 Offset to volser in std labelHRC106DK 01176000
  1373. L R14,=A(CPIATABL) -> volume label record HRC106DK 01176500
  1374. CLC 0(4,R14),=C'VOL1' Standard label? HRC106DK 01177000
  1375. BE SAVESER Yes HRC106DK 01177500
  1376. CLC 0(3,R14),=C'CMS' Any CMS header? HRC106DK 01178000
  1377. BE SAVESER Yes HRC106DK 01178500
  1378. SR R0,R0 Offset to non-standard label HRC106DK 01179000
  1379. SPACE 1 01182000
  1380. SAVESER EQU * HERE TO SAVE VOLUME SERIAL IN RDEVBLOK 01183000
  1381. AR R14,R0 -> volser HRC106DK 01183100
  1382. LA R0,6 CHECK FOR DUPLICATE VOLUME SERIAL 01184000
  1383. LR R1,R14 PASS PTR IN GPR1 01185000
  1384. STM R14,R15,TEMPR14 SAVE REGISTERS 01186000
  1385. CALL DMKSCNVS LOOK FOR DUPLICATE VOLUME 01187000
  1386. BZ DUPVOLD DUPLICATE VOLUME ALREADY MOUNTED 01188000
  1387. LM R14,R15,TEMPR14 RESTORE REGISTERS 01189000
  1388. MVC RDEVSER,0(R14) SAVE VOLSER IN RDEVBLOK 01190000
  1389. OI RDEVFLAG,RDEVMOUT Set mounted-not-attached flag HRC039DK 01190050
  1390. TM RDEVFTR,SYSVIRT+VIRTUAL THIS AN MSS VUA? @VA11344 01190100
  1391. BZ SAVESER2 NO - THEN DON'T TURN ON @VA11344 01190200
  1392. * 'MTD-BY-CP' FLAG @VA11344 01190300
  1393. OI RDEVFLAG,RDEVVMNT ELSE TURN IT ON! @VA11344 01190400
  1394. SAVESER2 DS 0H @VA11344 01190500
  1395. L R14,=A(CPIATABL) -> volume label record HRC106DK 01190600
  1396. CLC 46(5,R14),=C'CP370' CP OWNED volume ?? HRC106DK 01191000
  1397. BNE CPIUSRA NO -- CHECK FOR USER VOLUME HRC033DK 01192490
  1398. SPACE 01193000
  1399. MVC UDRPSTRT,52(R14) Sav possible directory startHRC106DK 01194000
  1400. CLI RDEVTYPE,TYP3380 3380 device type? HRC106DK 01194050
  1401. BNE STDMAPSZ No, use std alloc map size HRC106DK 01194100
  1402. L R14,F4096 Size of 3380-K alloc map HRC106DK 01194150
  1403. TM RDEVMDL,RDEVMD83 Triple density 3380? HRC106DK 01194200
  1404. BO SETMAPSZ Yes HRC106DK 01194250
  1405. LA R14,2048 Size of 3380-E alloc map HRC106DK 01194300
  1406. TM RDEVMDL,RDEVMD82 Double density 3380? HRC106DK 01194350
  1407. BO SETMAPSZ Yes HRC106DK 01194400
  1408. LA R14,1024 Size of 3380-A HRC106DK 01194450
  1409. * HRC106DK 01194500
  1410. SETMAPSZ EQU * HRC106DK 01194550
  1411. STH R14,CPICCW3L+6 Set length to read alloc mapHRC106DK 01194600
  1412. * HRC106DK 01194650
  1413. STDMAPSZ EQU * HRC106DK 01194700
  1414. LA R14,CPICCW3 ADDRESS OF PROGRAM TO READ ALLOC TABLE 01195000
  1415. ST R14,CAW SET UP CAW 01196000
  1416. L R14,=A(RETRYNUM) SET NUMBER OF RETRIES 01197000
  1417. CPISIO2 BCT R14,CPISIO3 LOOP THRU FOR NUMBER OF RETRIES 01198000
  1418. B MOUNTDVI GIVE UP IF "STILL BUSY" 01199000
  1419. CPISIO3 SIO 0(R15) START THE READ 01200000
  1420. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01201000
  1421. DC X'0B00' START I/O ENTRY @V407466 01202000
  1422. BC 2+1,MOUNTDVI BUSY OR UNAVAILABLE 01203000
  1423. BC 8,CPIOWNA STARTED OK 01204000
  1424. TM CSW+4,CUE+SM+BUSY CC=1: SHORT CONTROL UNIT BUSY ? 01205000
  1425. BO CPISIO3 YES - RETRY THE SIO FORTHWITH. 01206000
  1426. L R1,WAITCNT LOAD WAIT COUNT @VA05431 01207000
  1427. BCT R1,* WAIT A WHILE @VA05431 01208000
  1428. TM CSW+4,BUSY CONTROL UNIT OR DEVICE BUSY ? 01209000
  1429. BO CPISIO2 YES - RETRY SIO (DECREMENTING COUNTER) 01210000
  1430. B CPISNSEX DEVICE NOT USABLE 01211000
  1431. SPACE 01212000
  1432. CHKMSC CLI RDEVTYPC,CLASSPEC CLASS SPECIAL? @VA07836 01213000
  1433. BNE CPIDEVEN NO... @VA07836 01214000
  1434. CLI RDEVTYPE,TYP3851 MSS? @VA07836 01215000
  1435. BNE CPIDEVEN NOPE @V407466 01216000
  1436. L R14,=A(RETRYNUM) RETRY RIGHT NUMBER OF TIMES @VA07836 01217000
  1437. ST R2,BALR2 SAVE R2 @V407466 01218000
  1438. LA R2,SUSP ADDR OF EXECUTE SUSPEND CCW @V50A2B5 01219000
  1439. ST R2,CAW ... @V407466 01220000
  1440. L R2,BALR2 RESTORE R2 @V407466 01221000
  1441. BUSYSIO BCT R14,CPSIO1 LOOP THRU NUMBER OF ENTRIES @V407466 01222000
  1442. B CPIDEVEN FORGET IT, KEEP GOING @V407466 01223000
  1443. SPACE 01224000
  1444. CPSIO1 SIO 0(R15) SUSPEND IMMEDIATE @V407466 01225000
  1445. BAL R1,TRACESUB TRACE TABLE ENTRY @V407466 01226000
  1446. DC X'0B00' SIO ENTRY @V407466 01227000
  1447. BC 2,BUSYSIO LOOP THRU NUMBER OF ENTRIES @V407466 01228000
  1448. BC 1,MOUNTDVI NEXT DEVICE, CC=3 @V407466 01229000
  1449. BC 4,CPISNSEX GO ISSUE SENSE, CC=1 @V407466 01230000
  1450. CPTIO TIO 0(R15) CHECK OUT STATUS,CC=0 @VA07481 01231000
  1451. BAL R1,TRACESUB TRACE TABLE ENTRY @VA07481 01232000
  1452. DC X'0E00' TIO ENTRY @V407466 01233000
  1453. BC 2,CPTIO BUSY, TRY AGAIN @VA07481 01234000
  1454. BC 1,MOUNTDVI NOT OPERATIONAL, CC=3 @V407466 01235000
  1455. BC 8,CPIDEVEN OK, KEEP GOING CC=0 @V407466 01236000
  1456. B CPISNSEX GO ISSUE SENSE, CC=1 @V407466 01237000
  1457. SPACE 01238000
  1458. CPIOWNA TIO 0(R15) DRAIN FOR CE/DE 01239000
  1459. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01240000
  1460. DC X'0E00' TEST I/O ENTRY @V407466 01241000
  1461. BC 2,CPIOWNA LOOP ON CHANNEL BUSY @V407466 01242000
  1462. BC 1,MOUNTDVI NOT AVAILABLE 01243000
  1463. CLI CSW+4,CE+DE FINISHED OK ?? 01244000
  1464. BNE CPISNSEX NO -- 01245000
  1465. L R11,=A(DMKSYSOW) GET PTR TO OWNED LIST 01246000
  1466. USING OWNDLIST,R11 01247000
  1467. L R14,=A(DMKSYSOC) GET PTR TO OWNED VOLUME COUNT 01248000
  1468. L R14,0(,R14) ... 01249000
  1469. CPIOWN CLC OWNDVSER,RDEVSER IS THIS AN OWNED VOLUME ?? 01250000
  1470. BE CPICHAIN FOUND ONE IF EQUAL, CHAIN ALLOCATION TBL 01251000
  1471. LA R11,8(,R11) GET NEXT ENTRY 01252000
  1472. BCT R14,CPIOWN 01253000
  1473. CPIUSRA L R11,=A(DMKSYSUS) GET PTR TO USER LIST HRC033DK 01253100
  1474. USING OWNDLIST,R11 HRC033DK 01253200
  1475. L R14,=A(DMKSYSUC) GET PTR TO USER VOLUME COUNTHRC033DK 01253300
  1476. L R14,0(,R14) ... HRC033DK 01253400
  1477. CPIUSR CLC OWNDVSER,RDEVSER IS THIS AN USER VOLUME ?? HRC033DK 01253500
  1478. BE CPIUSRCH FOUND ONE IF EQUAL, PROCESS HRC033DK 01253600
  1479. LA R11,8(,R11) GET NEXT ENTRY HRC033DK 01253700
  1480. BCT R14,CPIUSR HRC033DK 01253800
  1481. B CPIDEVEN FINISHED 01254000
  1482. CPIUSRCH EQU * HRC033DK 01255070
  1483. LR R15,R8 GET RDEVBLOK HRC033DK 01255140
  1484. S R15,ARIODV GET DISPLACEMENT HRC033DK 01255210
  1485. SRL R15,3(0) CONVERT TO DOUBLE-WORD INDEX HRC033DK 01255280
  1486. STH R15,OWNDRDEV SET IN USRVLIST HRC033DK 01255350
  1487. NI RDEVFLAG,255-RDEVMOUT Clr mounted-not-attached HRC039DK 01255370
  1488. OI RDEVFLAG,RDEVSYS MARK AS A SYSTEM VOL HRC033DK 01255420
  1489. S R11,=A(DMKSYSUS) GET DISPLACEMENT FROM START HRC033DK 01255490
  1490. SRL R11,3 OF LIST/LENGTH OF LIST ENTRY HRC033DK 01255560
  1491. STH R11,RDEVCODE SAVE INDEX IN RDEVBLOK HRC033DK 01255630
  1492. B CPIDEVEN FINISHED HRC033DK 01255700
  1493. CPICHAIN EQU * HRC033DK 01255770
  1494. CLI RDEVTYPE,TYP3330 3330 DASD DEVICE @V407466 01256000
  1495. BNE PREFER NO, FLAG AS PREFERRED VOLUME @V407466 01257000
  1496. TM RDEVFTR,FTRVIRT 3330V? @V407466 01258000
  1497. BZ PREFER NO, FLAG AS PREFERRED VOLUME @V407466 01259000
  1498. MVC OWNVOL,RDEVSER MOVE VOLUME SERIAL TO MSG @V407466 01260000
  1499. LA R0,(OWNMSGL+8+7)/8 MESSAGE LENGTH @V407466 01261000
  1500. CALL DMKFREE ACQUIRE FREE STORAGE FOR MSG @V407466 01262000
  1501. MVC 8(OWNMSGL,R1),OWNMSG MOVE MSG TO FREE STOR @V407466 01263000
  1502. LA R2,OWNMSGL LENGTH OF MESSAGE @V407466 01264000
  1503. ST R2,4(,R1) STORE MSG LENGTH IN BUFFER @V407466 01265000
  1504. L R0,DUPMSGPT PLACE ON STACK W DUP VOL SER @V407466 01266000
  1505. ST R1,DUPMSGPT PLACE THIS MSG ON TOP @V407466 01267000
  1506. ST R0,0(,R1) ... @V407466 01268000
  1507. B CPIDEVEN MARK DEVICE AVAILABLE @V407466 01269000
  1508. PREFER LH R15,OWNDPREF GET PREFERRED BIT @V407466 01270000
  1509. LPR R15,R15 MAKE POSITIVE 01271000
  1510. SLL R15,2 *4 01272000
  1511. B *(R15) IF NOT PREFERRED VOLUME, SKIP 01273000
  1512. OI RDEVFLAG,RDEVPREF FLAG DEVICE AS HAVING PREF. VOL. 01274000
  1513. CLI RDEVTYPE,TYP2314 2314 DISK? 01275000
  1514. BNE TST3330 NO 01276000
  1515. L R15,PLST2314-4(R15) GET 2314 PREFERRED LIST PTR 01277000
  1516. B CPIPCOM 01278000
  1517. TST3330 CLI RDEVTYPE,TYP3330 3330 DISK? 01279000
  1518. BNE TST3340 NO @V2A2029 01280000
  1519. L R15,PLST3330-4(R15) GET 3330 PREFERRED LIST PTR 01281000
  1520. B CPIPCOM 01282000
  1521. TST3340 CLI RDEVTYPE,TYP3340 3340 DISK ? @V2A2029 01283000
  1522. BNE TST3350 NO @V304498 01284000
  1523. L R15,PLST3340-4(R15) GET 3340 PREFERRED LIST PTR @V2A2029 01285000
  1524. B CPIPCOM .. @V2A2029 01286000
  1525. TST3350 CLI RDEVTYPE,TYP3350 3350 DISK ? @V304498 01287000
  1526. BNE TST3375 HRC106DK 01288100
  1527. L R15,PLST3350-4(R15) GET 3350 PREFERRED LIST PTR @V304498 01289000
  1528. B CPIPCOM .. @V304498 01290000
  1529. TST3375 CLI RDEVTYPE,TYP3375 3375 Disk ? HRC106DK 01290100
  1530. BNE TST3380 HRC106DK 01290200
  1531. L R15,PLST3375-4(R15) Get 3375 Preferred list ptr HRC106DK 01290300
  1532. B CPIPCOM .. HRC106DK 01290400
  1533. TST3380 CLI RDEVTYPE,TYP3380 3380 Disk ? HRC106DK 01290500
  1534. BNE MB2305 HRC106DK 01290600
  1535. L R15,PLST3380-4(R15) Get 3380 Preferred list ptr HRC106DK 01290700
  1536. B CPIPCOM .. HRC106DK 01290800
  1537. MB2305 L R15,PLST2305-4(R15) GET 2305 PREFERRED LIST PTR 01291000
  1538. CPIPCOM L R14,0(,R15) GET PREFERRED LIST 01292000
  1539. LTR R14,R14 EMPTY? 01293000
  1540. BNZ CPIINSRT NO 01294000
  1541. ST R8,RDEVPNT CHAIN THIS RDEVBLOK TO ITSELF 01295000
  1542. ST R8,0(,R15) ... 01296000
  1543. B CPICNDN 01297000
  1544. CPIINSRT MVC RDEVPNT,RDEVPNT-RDEVBLOK(R14) 01298000
  1545. ST R8,RDEVPNT-RDEVBLOK(,R14) 01299000
  1546. CPICNDN LR R15,R8 GET RDEVBLOK 01300000
  1547. S R15,ARIODV GET DISPLACEMENT 01301000
  1548. SRL R15,3(0) CONVERT TO DOUBLE-WORD INDEX @V200820 01302000
  1549. STH R15,OWNDRDEV SET IN OWNDLIST 01303000
  1550. LA R0,6+(MAXALLOC+7)/8 CORE FOR LARGEST ALLOC BLOCK@V200528 01304000
  1551. CALL DMKFREE GET IT 01305000
  1552. ST R1,RDEVALLN SAVE ADDRESS OF BLOK 01306000
  1553. STM R2,R5,BALR2 SAVE REGS 01307000
  1554. LR R2,R1 GET ADDRESS OF SPACE FOR BLOK 01308000
  1555. LA R3,404 NUMBER OF CYLINDERS FOR 3330 01309000
  1556. CLI RDEVTYPE,TYP3330 IS IT ?? 01310000
  1557. BNE ALL3350 NO, CHECK FOR 3350 @V304498 01311000
  1558. CLI RDEVMDL,11 IS THIS A MOD 11 3330 @V200528 01312000
  1559. BNE MOVALLOC NO- BRANCH @V200528 01313000
  1560. LA R3,808 YES- SET UP FOR MOD 11 3330 @V200528 01314000
  1561. B MOVALLOC @V200528 01315000
  1562. ALL3350 LA R3,555 NUMBER OF CYL FOR 3350 @V304498 01316000
  1563. CLI RDEVTYPE,TYP3350 3350 DEVICE TYPE ? @V304498 01317000
  1564. BE MOVALLOC YES, GENERATE ALLOCATION BLOCK @V304498 01318000
  1565. LA R3,959 Number of cyl for 3375 HRC106DK 01318100
  1566. CLI RDEVTYPE,TYP3375 3375 Device type ? HRC106DK 01318150
  1567. BE MOVALLOC Yes, generate allocation block HRC106DK 01318200
  1568. CLI RDEVTYPE,TYP3380 3380 Device type ? HRC106DK 01318250
  1569. BNE TST2314 No, check for 2314/2319 HRC106DK 01318300
  1570. LA R3,2655 Number of cyl for 3380 (K) HRC106DK 01318350
  1571. TM RDEVMDL,RDEVMD83 Triple density 3380? HRC106DK 01318400
  1572. BO MOVALLOC Yes, generate allocation block HRC106DK 01318450
  1573. LA R3,1770 Number of cyl for 3380 (E) HRC106DK 01318500
  1574. TM RDEVMDL,RDEVMD82 Double density 3380? HRC106DK 01318550
  1575. BO MOVALLOC Yes, generate allocation block HRC106DK 01318600
  1576. LA R3,885 Number of cyl for 3380 (A/D/J) HRC106DK 01318650
  1577. B MOVALLOC Go allocate HRC106DK 01318700
  1578. TST2314 LA R3,203 NUMBER FOR A 2314 OR 2319 @V200528 01319000
  1579. CLI RDEVTYPE,TYP2314 IS IT ?? 01320000
  1580. BE MOVALLOC YES -- 01321000
  1581. CLI RDEVTYPE,TYP3340 3340 DEVICE TYPE ? @V2A2029 01322000
  1582. BNE ALL2305 NO- CHECK FOR 2305 @V2A2029 01323000
  1583. LA R3,MB35 NUMBER OF CYLINDERS FOR 35MB @V56BDA8 01324000
  1584. L R4,=A(CPIATABL) -> allocation data HRC106DK 01325000
  1585. AR R4,R3 POINT ONE BYTE BEYOND LAST BYTE @V2A2029 01326000
  1586. CLI 0(R4),X'FF' VALID 35MB ALLOCATION RECORD ? @V2A2029 01327000
  1587. BE MOVALLOC YES - GO ALLOCATE @V2A2029 01328000
  1588. TM RDEVFTR,FTR35MB 35MB DATA MODULE MOUNTED @V2A2029 01329000
  1589. BO MOVALLOC YES - GO ALLOCATE @V2A2029 01330000
  1590. LA R3,MB70 NUMBER OF CYLINDERS FOR 70MB @V56BDA8 01331000
  1591. B MOVALLOC GO ALLOCATE @V2A2029 01332000
  1592. ALL2305 LA R3,96 NUMBER OF CYLINDERS FOR 2305 @V2A2029 01333000
  1593. * MOD 2 01334000
  1594. CLI RDEVMDL,X'01' CHECK FOR A MOD 1 01335000
  1595. BNE MOVALLOC NO- BRANCH 01336000
  1596. LA R3,48 NUMBER FOR 2305 MOD 1 01337000
  1597. SPACE 01338000
  1598. MOVALLOC STH R3,0(,R2) SAVE NUMBER OF CYLINDERS 01339000
  1599. LA R2,2(,R2) POINT TO SAVEAREA FOR ALLOCATION DATA 01340000
  1600. L R4,=A(CPIATABL) -> allocation data HRC106DK 01341000
  1601. LA R3,1(,R3) ALLOW FOR FLAG BYTE 01342000
  1602. LA R5,0(R3,R3) GET DOUBLE LENGTH FOR MOVE LONG 01343000
  1603. MVCL R2,R4 MOVE ALLOCATION DATA TO SAVE AREA 01344000
  1604. NI RDEVFLAG,255-RDEVMOUT Clr mounted-not-attached HRC039DK 01344100
  1605. OI RDEVFLAG,RDEVOWN+RDEVSYS MARK AS OWNED & A SYSTEM VOL 01345000
  1606. S R11,=A(DMKSYSOW) GET DISPLACEMENT FROM START 01346000
  1607. SRL R11,3 OF LIST/LENGTH OF LIST ENTRY 01347000
  1608. STH R11,RDEVCODE SAVE INDEX IN RDEVBLOK 01348000
  1609. LA R2,UDRASTRT GET PTR TO ALTERNATE DIRECTORY ADDRESS 01349000
  1610. L R14,=A(DMKSYSVL) GET PTR TO SYSRES VOLUME SERIAL 01350000
  1611. CLC RDEVSER,0(R14) IS THIS THE SYSRES VOLUME 01351000
  1612. BNE *+8 NO 01352000
  1613. LA R2,UDRNSTRT GET PTR TO NUCLEUS DIRECTORY ADDRESS 01353000
  1614. L R3,0(,R2) GET DIRECTORY ADDRESS 01354000
  1615. LTR R3,R3 FOUND DIRECTORY YET ?? 01355000
  1616. BNZ RSTRG YES -- 01356000
  1617. SPACE 01357000
  1618. * GPR5 NOW HAS ORIGINAL LENGTH OF MOVE 01358000
  1619. SPACE 01359000
  1620. CKDRCT BCTR R4,0 POINT TO NEXT BYTE TO TEST 01360000
  1621. CLI 0(R4),X'0C' ALLOCATED DIRECTORY CYLINDER ?? 01361000
  1622. BE SAVEDRCT YES -- SAVE ADDRESS OF ACTIVE DIRECTORY 01362000
  1623. BCT R5,CKDRCT KEEP CHECKING UNTIL A DIRECTORY IS FOUND 01363000
  1624. B RSTRG NO DIRECTORY ON THIS VOLUME 01364000
  1625. SPACE 01365000
  1626. SAVEDRCT ICM R11,B'1110',UDRPSTRT FORM DIRECTORY CCRD DISK ADDR 01366000
  1627. ST R11,0(,R2) AND SAVE 01367000
  1628. SPACE 01368000
  1629. RSTRG LM R2,R5,BALR2 RESTORE USER REGS 01369000
  1630. SPACE 2 01370000
  1631. CPIDEVEN NI RDEVSTAT,X'FF'-RDEVDISA MARK AS AVAILABLE 01371000
  1632. TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE CU @VA01081 01372000
  1633. BZ PRIME NO- BRANCH @VA01081 01373000
  1634. L R15,RCUPRIME YES- POINT TO THE PRIME CU @VA01081 01374000
  1635. NI RCUSTAT-RCUBLOK(R15),255-RCUDISA VARY PRIME @VA01081 01375000
  1636. PRIME EQU * CONTROL UNIT ONLINE ALSO 01376000
  1637. NI RCUSTAT,X'FF'-RCUDISA SUB CU ON FOR COMPLETENESS@V407438 01377000
  1638. STM R1,R3,BALR1 TEMPORARILY SAVE REGS @V407438 01378000
  1639. TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 01379000
  1640. BO *+6 YES, R15 ALREADY SET UP @V407438 01380000
  1641. LR R15,R7 SET R15 TO POINT TO PRIMARY CU @V407438 01381000
  1642. DROP R7 USE R15 TEMPORARILY @V407438 01382000
  1643. USING RCUBLOK,R15 ... @V407438 01383000
  1644. LA R1,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 01384000
  1645. LA R2,4 INCREMENT @V407438 01385000
  1646. LA R3,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 01386000
  1647. NEXTCH CL R6,0(R1) R6 REPRESENT THIS CU -> CH PATH? @V407438 01387000
  1648. BE *+8 YES, PATH FOUND, BR. @V407438 01388000
  1649. BXLE R1,R2,NEXTCH NOPE, LOOK AT ALL CHANNEL PATHS @V407438 01389000
  1650. LA R2,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 01390000
  1651. SLR R1,R2 FIND HOW FAR DOWN WE FOUND IT @V407438 01391000
  1652. SRL R1,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 01392000
  1653. IC R3,ENABTBL(R1) GET CU->CH PTH BIT & ENABLE PTH @V407438 01393000
  1654. EX R3,CUCHENAB (NI RCUSTAT,X'FF'-RCUCHXOF) @V407438 01394000
  1655. LM R1,R3,BALR1 RESTORE REGS @V407438 01395000
  1656. B MOUNTDVI CONTINUE... @V407438 01396000
  1657. SPACE 01397000
  1658. * RCU TO RCH BLOCK PATH AVAILABLE BITS IN RCUSTAT 01398000
  1659. ENABTBL DC AL1(X'FF'-RCUCHAOF,X'FF'-RCUCHBOF) @V407438 01399000
  1660. DC AL1(X'FF'-RCUCHCOF,X'FF'-RCUCHDOF) @V407438 01400000
  1661. CUCHENAB NI RCUSTAT,0 ENABLE RCU -> RCH PATH @V407438 01401000
  1662. DROP R15 NO MORE RCUBLOK ON R15 @V407438 01402000
  1663. USING RCUBLOK,R7 SWITCH BACK TO R7 @V407438 01403000
  1664. SPACE 2 01404000
  1665. MOUNTDVI LTR R10,R10 PROCESSING IPL DEVICE @VA01097 01405000
  1666. BZ MOUNTALL YES -- GO INITIALIZE BXLE REGS @VA01097 01406000
  1667. BXLE R3,R4,MOUNTNDV @VA01097 01407000
  1668. LA R5,62 RESTORE INDEX FOR RCHBLOK 01408000
  1669. MOUNTCUI BXLE R2,R4,MOUNTNCU 01409000
  1670. LA R5,30 RESTORE INDEX FOR RCUBLOK 01410000
  1671. MOUNTCHI BXLE R9,R4,MOUNTNCH 01411000
  1672. SPACE 01412000
  1673. * NOW CHECK FOR THE EXISTANCE OF ALTERNATE PATHS GENED 01413000
  1674. * IN THE SYSTEM. IF ANY WERE INCLUDED, OBTAIN AND INITIALIZE 01414000
  1675. * A CHAIN OF MINI IOB'S TO BE USED BY DMKIOS FOR ALTERNATE 01415000
  1676. * PATH I/O SCHEDULING 01416000
  1677. SPACE 01417000
  1678. TM CPISTAT,ALTPATH ANY ALT PATH IN THIS SYSTEM? @V407438 01418000
  1679. BZ NOALTP NOPE, SKIP MINI-IOB'S, BR. @V407438 01419000
  1680. LA R0,MIOBNUM*IOBMSIZE NUMBER OF MINI IOB'S GO GET @V407438 01420000
  1681. CALL DMKFREE GO GET THEM NOW @V407438 01421000
  1682. LA R4,MIOBNUM NUMBER OF MINI IOB'S TO INIT. @V407438 01422000
  1683. L R2,=A(DMKIOSMQ) IOS BACK POCKET QUEUE ADDR @V407438 01423000
  1684. IOBMCHN ST R1,0(R2) CHAIN MINI IOB'S TOGETHER @V407438 01424000
  1685. LR R2,R1 REMEMBER PREVIOUS @V407438 01425000
  1686. LA R1,IOBMSIZE*8(R1) BUMP TO ADDR OF NEXT @V407438 01426000
  1687. BCT R4,IOBMCHN CONTINUE CHAINING @V407438 01427000
  1688. ST R4,0(R2) END OF CHAIN = ZERO @V407438 01428000
  1689. NOALTP EQU * @V407438 01429000
  1690. EJECT 01430000
  1691. * INITIALIZE CP'S VIRTUAL MEMORY TABLES 01431000
  1692. L R11,ASYSVM POINT TO SYSTEM VMBLOK 01432000
  1693. ST R11,RUNUSER INITIALIZE RUNUSER FOR DISPATCH 01433000
  1694. USING VMBLOK,R11 01434000
  1695. SPACE 1 01435000
  1696. * DETERMINE VIRTUAL BUFFER STORAGE VIA REAL OR SYSGEN MACHINE SIZE 01436000
  1697. L R3,=A(DMKSYSRM) GET REAL MACHINE SIZE @VA00919 01437000
  1698. L R4,=A(DMKSYSRV) GET SYSGEN MACHINE SIZE @VA00919 01438000
  1699. CLC 0(4,R4),0(R3) SYSGEN SIZE GREATER THAN REAL ? @VA00919 01439000
  1700. BH *+6 YES - USE REAL SIZE AS MAX @VA00919 01440000
  1701. LR R3,R4 NO - USE SYSGEN SIZE AS MAX @VA00919 01441000
  1702. L R2,0(,R3) SIZE OF REAL STORAGE USED BY VM @VA00919 01442000
  1703. S R2,=A(DMKSLC) MINUS THE V=R SIZE @VA11813 01442300
  1704. * R2 CONTAINS THE REAL CP STORAGE SIZE MINUS THE V=R AREA 01442600
  1705. L R1,=A(X'81000') DEFAULT SIZE - 128 BUFFERS @VA00919 01443000
  1706. CL R2,=A(X'A0000') 655,360 OR LESS REAL STORAGE? @VA00919 01444000
  1707. BNH VBUFF YES -- 128 VIRTUAL BUFFERS @VA00919 01445000
  1708. LA R0,160 1280 VIRTUAL BUFFERS/8 @VA05042 01446000
  1709. L R1,=A(X'501000') SIZE FOR 1280 VIRTUAL BUFFERS @VA05042 01447000
  1710. CL R2,=A(X'300000') OVER 3 MEG REAL STORAGE? @VA05042 01448000
  1711. BH SETBUF YES, SET 1280 VIRTUAL BUFFERS @VA05042 01449000
  1712. LA R0,80 640 VIRTUAL BUFFERS/8 @VA00919 01450000
  1713. L R1,=A(X'281000') SIZE FOR 640 VIRTUAL BUFFERS @VA00919 01451000
  1714. CL R2,=A(X'120000') OVER 1.1MEG REAL STORAGE ? @VA00919 01452000
  1715. BH SETBUF YES - 640 VIRTUAL BFFERS @VA00919 01453000
  1716. LA R0,40 320 VIRTUAL BUFFERS/8 @VA00919 01454000
  1717. L R1,=A(X'181000') SIZE FOR 320 VIRTUAL BUFFERS @VA00919 01455000
  1718. SETBUF L R3,=A(DMKPGTBN) ADDRESS OF VIRTUAL BUFFER CTR @VA00919 01456000
  1719. STC R0,0(,R3) STORE VALUE @VA00919 01457000
  1720. VBUFF A R1,=A(DMKCKP) VIRTUAL BUFFER SIZE PLUS ADDRESS @VA00919 01458000
  1721. * OF 'DMKCKP'. 01459000
  1722. CL R1,=A(X'FFF000') STORAGE OVER 16M VIRTUAL? @VA11813 01459080
  1723. BNH VBUFFOK NO WE ARE OK @VA11813 01459160
  1724. L R1,=A(X'FFF000') SET VIRTUAL STOR TO 16M @VA11813 01459240
  1725. LR R0,R1 INTO R0 ALSO @VA11813 01459320
  1726. S R0,=A(DMKCKP) MINUS THE END OF THE CP NUC @VA11813 01459400
  1727. BNP CPI955 ERROR-CP IS TOO LARGE @VA11813 01459480
  1728. SRL R0,15 NUMBER OF VIRTUAL BUFFERS @VA11813 01459560
  1729. * DIVIDED BY 8 01459640
  1730. C R0,F16 AT LEAST 128 VIRTUAL BUFFERS? @VA11813 01459720
  1731. BL CPI955 NOT ENOUGH STOR FOR CP @VA11813 01459800
  1732. STC R0,0(,R3) STORE VALUE IN DMKPGUBN @VA11813 01459880
  1733. VBUFFOK EQU * @VA11813 01459960
  1734. ST R1,VMSIZE SAVE SIZE IN SYSTEM'S VMBLOK. 01460000
  1735. SRL R1,12 BEGIN/ENDING VALUE FOR TABLES @V304635 01461000
  1736. BCTR R1,R0 MINUS 1 PAGE (BLD WILL @V304635 01462000
  1737. * COMPENSATE) 01463000
  1738. CALL DMKBLDRT,PARM=NEWSEGS+NEWPAGES BUILD THE @V304635 01464000
  1739. * COMPLETE SET 01465000
  1740. EJECT 01466000
  1741. L R1,=A(DMKSYSVL) GET ADDRESS OF SYSRES VOLID 01467000
  1742. LA R0,6 AND ITS LENGTH 01468000
  1743. CALL DMKSCNVS LOCATE RDEVBLOK FOR SYSRES 01469000
  1744. BNZ CPI1 NOT FOUND ---- SYSTEM GOING DOWN 01470000
  1745. LR R0,R1 SAVE THE RDEVBLOK ADDRESS @V407438 01471000
  1746. LH R1,SYSIPLDV GET THE IPL DEVICE CCU @V407438 01472000
  1747. CALL DMKSCNRU GET RBLOKS FOR SYSRES @V407438 01473000
  1748. USING RDEVBLOK,R8 ADDRESS THE RDEVBLOK @V407438 01474000
  1749. CLR R0,R8 SYSRES LABEL ON IPL'ED DEVICE? @V407438 01475000
  1750. BNE CPI1 NO -- ABEND CPI001 -- @VA01097 01476000
  1751. L R1,=A(DMKSYSNU) GET ADDRESS OF NUCLEUS CYLINDER 01477000
  1752. LH R1,0(,R1) GET CYLINDER 01478000
  1753. SLL R1,16 SHIFT TO HIGH ORDER BYTES 01479000
  1754. IC R1,RDEVCODE+1 GET DEVICE CODE IN LOW ORDER 01480000
  1755. LA R0,32 GET NUMBER OF PAGES/CYLINDER (2314) 01481000
  1756. CLI RDEVTYPE,TYP2314 IS IT ?? 01482000
  1757. BE STCYL IT IS ?? 01483000
  1758. LA R0,57 GET NUMBER PAGES/CYLINDER (3330) 01484000
  1759. CLI RDEVTYPE,TYP3330 DEVICE TYPE 3330 ? 01485000
  1760. BE STCYL IS IT ?? 01486000
  1761. LA R0,120 GET NUMBER PAGES/CYL (3350) @V304498 01487000
  1762. CLI RDEVTYPE,TYP3350 IS DEVICE 3350 ? @V304498 01488000
  1763. BE STCYL YES,SET PAGES/CYL LIMIT @V304498 01489000
  1764. LA R0,96 Get number pages/cyl (3375) HRC106DK 01489100
  1765. CLI RDEVTYPE,TYP3375 Is device 3375 ? HRC106DK 01489200
  1766. BE STCYL Yes,set pages/cyl limit HRC106DK 01489300
  1767. LA R0,150 Get number pages/cyl (3380) HRC106DK 01489400
  1768. CLI RDEVTYPE,TYP3380 Is device 3380 ? HRC106DK 01489500
  1769. BE STCYL Yes,set pages/cyl limit HRC106DK 01489600
  1770. LA R0,24 GET NUMBER PAGES/CYLINDER (2305) 01490000
  1771. * (3340) 01491000
  1772. STCYL ST R0,BALR0 SET LIMIT OF PAGES/CYLINDER 01492000
  1773. DROP R8 01493000
  1774. SR R2,R2 GET STARTING REAL PAGE NUMBER 01494000
  1775. L R3,VMSEG GET ADDRESS OF SEGMENT TABLE 01495000
  1776. USING SEGPAGE,R3 ADDRESSABILITY 01496000
  1777. LA R4,X'10' GET LENGTH OF CORTABLE ENTRY FOR BXLE 01497000
  1778. L R15,ACORETBL GET ADDRESS OF CORETABLE 01498000
  1779. USING CORTABLE,R15 ADDRESSABILITY FOR ENTRY 01499000
  1780. L R5,=A(DMKCKP) ADDRESS OF TOP OF CP CODE 01500000
  1781. SRL R5,8 DIVIDED BY 256 01501000
  1782. AR R5,R15 CORTABLE ENTRY FOR THAT PAGE 01502000
  1783. SR R5,R4 CORTABLE ENTRY FOR LAST CP PAGE 01503000
  1784. LA R7,X'0100' GET DASD PAGE NUMBER INCREMENT 01504000
  1785. ALR R1,R7 INITIALIZE 1ST PAGE ADDRESS 01505000
  1786. LA R10,X'08' GET LENGTH OF SWPTABLE ENTRY 01506000
  1787. EJECT 01507000
  1788. GETSEG DS 0H @V408246 01508000
  1789. NI SEGPAGE+3,255-1 CLEAR INVALID STE BIT @V408246 01509000
  1790. L R9,SEGPAGE GET PAGETABLE ADDR @V408246 01510000
  1791. LA R9,0(,R9) CLEAR TABLE LENGTH 01511000
  1792. USING PAGCORE,R9 ADDRESSABILITY 01512000
  1793. LA R6,16 GET NUMBER OF PAGES IN A SEGMENT FOR BCT 01513000
  1794. LR R8,R9 SAVE TABLE ADDRESS 01514000
  1795. S R8,F4 BACK UP TO SWPTABLE POINTER 01515000
  1796. L R8,0(,R8) POINT TO SWPTABLE 01516000
  1797. USING SWPFLAG,R8 ADDRESSABILITY 01517000
  1798. SPACE 01518000
  1799. VMINIT ST R1,SWPCYL INITIALIZE DASD ADDRESS IN SWPTABLE 01519000
  1800. LA R14,1 INCREMENT @VM01009 01520000
  1801. AH R14,VMPAGES ADD ALREADY RESIDENT SYSTEM PGS @VM01009 01521000
  1802. STH R14,VMPAGES AND RE-STORE @VM01009 01522000
  1803. L R14,=A(DMKSAV) GET ADDRESS OF DMKSAV @VA01682 01523000
  1804. SRL R14,8 REDUCE TO INDEX VALUE @VA01682 01524000
  1805. AL R14,ACORETBL POINT TO ACTUAL TABLE ENTRY @VA01682 01525000
  1806. CLR R15,R14 BEYOND ADDRESS OF DMKSAV ? @VA01682 01526000
  1807. BH BXLESWAP YES - GET NEXT PAGE TABLE ENTRY @VA02573 01527000
  1808. STH R2,PAGCORE INITIALIZE PAGTABLE ENTRY 01528000
  1809. STCM R8,B'0111',CORSWPNT+1 STORE ADDR. OF SWAP ENTRY @V408246 01529000
  1810. ST R9,CORPGPNT STORE ADDR. OF PAGE TABLE ENTRY @V408246 01530000
  1811. OI SWPFLAG,SWPCHG1 FORCE PAGE TO BE SWAPPED @V408246 01531000
  1812. ICM R14,B'1111',=A(DMKSLC) VIRT=REAL SYSTEM ? @VA01682 01532000
  1813. BZ BXLESWAP NO - CONTINUE @VA01682 01533000
  1814. SRL R14,8 REDUCE TO INDEX VALUE @VA01682 01534000
  1815. AL R14,ACORETBL POINT TO ACTUAL CORETBL ENTRY @VA01682 01535000
  1816. CL R15,ACORETBL IS THIS PAGE 0 ENTRY ? @VA01682 01536000
  1817. BE BXLESWAP IF YES - SKIP OVER IT. @VA01682 01537000
  1818. CLR R15,R14 IS ENTRY FOR VIRT=REAL @VA01682 01538000
  1819. BNL BXLESWAP IF NOT - SKIP OVER IT @VA01682 01539000
  1820. MVI CORFLAG,CORCFLCK+CORIOLCK LOCK FLAGS @V408246 01540000
  1821. MVC CORLCNT,F1 AND LOCK COUNT @V408246 01541000
  1822. BXLESWAP BXLE R15,R4,*+8 INDEX UP THE CORE TABLE 01542000
  1823. B MICTEST @V201537 01543000
  1824. SPACE 01544000
  1825. ALR R1,R7 BUMP PAGE NUMBER ON CYLINDER 01545000
  1826. ALR R2,R4 BUMP REAL PAGE ADDRESS 01546000
  1827. BCT R0,VMINDEX COUNT DOWN PAGES ON CYLINDER 01547000
  1828. ICM R1,2,=X'01' RESTART AT PAGE ONE 01548000
  1829. L R0,BALR0 RESTORE PAGE COUNT 01549000
  1830. AL R1,=XL4'00010000' BUMP CYLINDER NUMBER 01550000
  1831. SPACE 01551000
  1832. VMINDEX EQU * INDEX UP SWAP AND PAGE TABLES 01552000
  1833. ALR R8,R10 POINT TO NEXT SWPTABLE ENTRY 01553000
  1834. AL R9,F2 POINT TO NEXT PAGTABLE ENTRY @VA01682 01554000
  1835. BCT R6,VMINIT COUNT DOWN PAGES IN SEGMENT 01555000
  1836. LA R3,4(,R3) POINT TO NEXT STE 01556000
  1837. B GETSEG AND GO PROCESS NEXT SEGMENT 01557000
  1838. EJECT 01558000
  1839. ABEND 1 SYSRES DEVICE NOT FOUND OR INCORRECT 01559000
  1840. SPACE 2 01560000
  1841. * "SUBROUTINE" TO ISSUE SENSE (TO "CLEAN UP" CONTROL UNIT) 01561000
  1842. * IN CASE OF UNIT CHECK OR SIMILAR FAILURE 01562000
  1843. * 01563000
  1844. CPISNSEX LA R14,CPIDEVEN HERE TO GO TO "CPIDEVEN" WHEN THRU 01564000
  1845. * 01565000
  1846. CPISNSUB MVC CAW(4),=A(CPICCW1) "ISSUE SENSE CMD TO CLEAR INV. REQ." 01566000
  1847. SNSIOR LA R1,SENRETCT LOAD RETRY COUNT HRC011DK 01567690
  1848. SNSIO SIO 0(R15) ISSUE SENSE COMMAND @VA01504 01568000
  1849. ST R1,BALR1 SAVE R1 TEMPORARILY @V407466 01569000
  1850. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01570000
  1851. DC X'0B00' START I/O ENTRY @V407466 01571000
  1852. L R1,BALR1 RESTORE R1 @V407466 01572000
  1853. BC 2,SNSIO LOOP ON SUBCHANNEL BUSY @V407466 01573000
  1854. BC 1,MOUNTDVI NOT READY CONTINUE NEXT DEVICE @VA01504 01574000
  1855. BC 8,SNTIO OK - GO CLEAR SUB CHANNEL @VA01504 01575000
  1856. USING RDEVBLOK,R8 ADDRESSABILITY @VA03547 01576000
  1857. TM RDEVTYPC,CLASTAPE TAPE DEVICE? @VA03547 01577000
  1858. BO SNTIO YES, CLEAR SUBCH & GO TO CPIDEVEN@VA03547 01578000
  1859. DROP R8 @VA03547 01579000
  1860. TM CSW+4,UC IS IT A UNIT CHECK @VA01504 01580000
  1861. BO SNRETRY YES THEN DO ERROR RETRY @VA01504 01581000
  1862. TM CSW+5,CCC+IFCC THESE ERRORS ARE PERMANENT @VA01504 01582000
  1863. BO MOUNTDVI CONTINUE WITH NEXT DEVICE @VA01504 01583000
  1864. SNRETRY BCT R1,SNSIO RETRY 16 TIMES @VA01504 01584000
  1865. B MOUNTDVI PERRMENT ERROR TRY NEXT DEVICE @VA01504 01585000
  1866. * 01586000
  1867. SNTIO TIO 0(R15) CLEAR THE SUBCHANNEL @VA01504 01587000
  1868. BAL R1,TRACESUB GO TRACE THIS EVENT @V407466 01588000
  1869. DC X'0E00' TEST I/O ENTRY @V407466 01589000
  1870. BC 2,SNTIO CC=2, CHANNEL OR SUBCHANNEL BUSY @V407466 01590000
  1871. BR R14 "RETURN" (OR GO DIRECTLY TO CPIDEVEN) 01591000
  1872. SPACE 2 01592000
  1873. TRACESUB EQU * @V407595 01593000
  1874. STM R14,R3,TEMPSAVE SAVE REGS REQUIRED BY TRACE @V407595 01594000
  1875. IC R0,N0(R1) LOAD THE TRACE CODE @V407595 01595000
  1876. TRACE CODE=(R0),R14,R2,R3 OBTAIN TRACE TABLE ENTRY @V407595 01596000
  1877. STCM R1,B'1000',1(R14) SAVE CONDITION CODE @V407466 01597000
  1878. NI 1(R14),X'30' TURN OFF ILC AND PROGRAM MASK BITS @V407466 01598000
  1879. STH R15,2(,R14) SAVE DEVICE ADDRESS @V407466 01599000
  1880. ST R1,4(,14) SAVE RETURN ADDRESS @V407466 01600000
  1881. MVC 8(4,R14),CAW SAVE CAW @V407466 01601000
  1882. XC 12(4,R14),12(R14) CLEAR LAST FIELD @V407466 01602000
  1883. CLI 1(R14),X'10' CONDITION CODE 1 ? @V407466 01603000
  1884. BNE *+10 NO -- DON'T SAVE CSW @V407466 01604000
  1885. MVC 12(4,R14),CSW+4 SAVE RIGHT HALF OF CSW @V407466 01605000
  1886. LM R14,R3,TEMPSAVE RESTORE REGS @V407595 01606000
  1887. SPM R1 RESTORE CONDITION CODE @V407466 01607000
  1888. B 2(,R1) RETURN TO CALLER+2 @V407466 01608000
  1889. CPISAVRE DC F'0' @V407466 01609000
  1890. SPACE 01610000
  1891. DUPVOLD EQU * BUILD MESSAGE FOR DUPLICATE LABELS 01611000
  1892. L R14,TEMPR14 PICK UP PREVIOUS GR14 VALUE 01612000
  1893. MVC DUPSER1,0(R14) MOVE VOLUME SERIAL TO OUTPUT MESSAGE 01613000
  1894. LR R8,R1 PASS RDEVBLOK IN GPR8 01614000
  1895. CALL DMKSCNRD GET REAL DEVICE ADDRESS 01615000
  1896. CALL DMKCVTBH CONVERT TO DECIMAL 01616000
  1897. STCM R1,B'0111',DUPVOL2 STORE IN OUTPUT MESSAGE 01617000
  1898. L R1,TEMPR15 GET DEVICE ADDRESS OF 1ST VOL 01618000
  1899. CALL DMKCVTBH CONVERT TO DECIMAL 01619000
  1900. STCM R1,B'0111',DUPVOL1 STORE IN OUTPUT MESSAGE 01620000
  1901. LA R0,(DUPMSGL+8+7)/8 ACQ STORAGE FOR MSG + PTRS @V407466 01621000
  1902. CALL DMKFREE ... 01622000
  1903. MVC 8(DUPMSGL,R1),DUPMSG MOVE MSG TO BUFFER @V3E6466 01623000
  1904. LA R14,DUPMSGL LENGTH OF TEXT PORTION @V3E6466 01624000
  1905. ST R14,4(,R1) STORE MSG LENGTH IN BUFFER @V3E6466 01625000
  1906. L R0,DUPMSGPT GET DUPLICATE VOL SER MESSAGE STACK 01626000
  1907. ST R1,DUPMSGPT PLACE THIS MESSAGE ON TOP 01627000
  1908. ST R0,0(,R1) ... 01628000
  1909. B MOUNTDVI GO PROCESS NEXT DEVICE 01629000
  1910. EJECT 01630000
  1911. MICTEST EQU * TEST FOR VM HARDWARE ASSIST @V201520 01631000
  1912. * TO DO THIS, DO AN SSM INSTRUCTION IN PROBLEM STATE. IF CP RECEIVES 01632000
  1913. * THE PROGRAM INTERRUPT, VM ASSIST IS NOT PRESENT. IF VM 01633000
  1914. * ASSIST HANDLES THE SSM, DO AN SVC TO GET BACK TO SUPERVISOR STATE. 01634000
  1915. * 01635000
  1916. LA R1,CPISVC SET SVC NEW PSW TO POINT TO @V201537 01636000
  1917. ST R1,SVCNPSW+4 CPISVC @V201537 01637000
  1918. LA R1,CPIPROG SET PROGRAM NEW PSW TO POINT @V201537 01638000
  1919. ST R1,PRNPSW+4 TO CPIPROG @V201537 01639000
  1920. MVC RUNCR0(4),CPCREG0 SET UP REAL CR0 @VM08542 01640000
  1921. MVC RUNCR1(4),VMSEG SET UP REAL CR1 @VM08542 01641000
  1922. * SET UP MICROCODE POINTER LIST 01642000
  1923. MVC TEMPR2,VMSEG SYSTEM SEGMENT TABLE IN PTR LIST @V201537 01643000
  1924. LA R1,RUNCR0 VIRT CR0 SAME AS REAL CR0 @VM08542 01644000
  1925. ST R1,TEMPR3 @V201537 01645000
  1926. MVC TEMPR4(4),ZEROES VIRT. PSW POINTER 01646000
  1927. LA R1,BALRSAVE WORKSPACE ADDRESS @V201537 01647000
  1928. ST R1,TEMPR5 @V201537 01648000
  1929. * SET UP C-REG 6 - USE TEMPR0 TO SET IT UP 01649000
  1930. LA R1,TEMPR2 ADDRESS OF MICROCODE POINTER LIST@V201537 01650000
  1931. ST R1,TEMPR0 INTO C-REG 6 @V201537 01651000
  1932. OI TEMPR0,VMMFE+VMMSVC TURN MICROCODE ON & SVCS OFF@V201537 01652000
  1933. LCTL C6,C6,TEMPR0 LOAD CR6 @V201537 01653000
  1934. LCTL C0,C1,RUNCR0 LOAD REAL CR0 AND CR1 @VM08542 01654000
  1935. LPSW TESTPSW GO INTO PROBLM STATE & ISSUE SSM @V201537 01655000
  1936. DS 0D @V201537 01656000
  1937. TESTPSW DC X'040D0000' PROB STATE PSW @V201537 01657000
  1938. DC A(SSMTEST) 01658000
  1939. SSMTEST SSM *+1 WILL MICROCODE HANDLE THIS? @V201520 01659000
  1940. SVC 30 NO, THEN MUST RETURN TO @V201537 01660000
  1941. * SUPERVISOR STATE 01661000
  1942. CPIPROG EQU * IF MICROCODE DOESNT HANDLE LRA, @V201537 01662000
  1943. * PROGRAM INTERRUPT COMES HERE 01663000
  1944. NI CPSTAT2,X'FF'-CPMICAVL-CPMICON INDICATE VM @V201537 01664000
  1945. * ASSIST NOT AVAILABLE & NOT ON 01665000
  1946. B NPSWS @V201537 01666000
  1947. CPISVC EQU * IF MICROCODE HANDLES LRA, SVC @V201537 01667000
  1948. * INTERRUPT COMES HERE 01668000
  1949. OI CPSTAT2,CPMICAVL+CPMICON INDICATE VM ASSIST @V201537 01669000
  1950. * AVAILABLE & ON 01670000
  1951. SPACE 01671000
  1952. NPSWS MVC SVCNPSW(8),CPIPSWS+8 RESTORE SVC NEW PSW @V201537 01672000
  1953. MVC PRNPSW(8),CPIPSWS+2*8 RESTORE PROGRAM NEW PSW @V201537 01673000
  1954. LCTL C6,C6,ZEROES RESET ASSIST CONTROL REGISTER @V386198 01674000
  1955. EJECT 01675000
  1956. * LOCATE OPERATOR'S CONSOLE & ATTEMPT TO WRITE SYSTEM MSG 01676000
  1957. L R10,=A(DMKRIOCN) GET CONSOLE RDEVBLOK DISPLACEMENT 01677000
  1958. L R9,4(R10) ACCESS COUNT OF ALT CONSOLES @V60BCAA 01678000
  1959. LH R8,0(,R10) GET RDEVBLOK DISPLACEMENT 01679000
  1960. SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01680000
  1961. A R8,ARIODV GET CONSOLE RDEVBLOK 01681000
  1962. USING RDEVBLOK,R8 01682000
  1963. OI RDEVFLAG,RDEVENAB PRIMARY CONSOLE IS ENABLED @V200820 01683000
  1964. LH R15,2(,R10) GET DEVICE ADDRESS 01684000
  1965. BAL R14,STRTERM START PRIMARY CONSOLE IF THERE @V200730 01685000
  1966. BNZ GETALT NOT THERE, TRY ALTERNATE @V200730 01686000
  1967. BAL R14,TSTERM TEST TERMINAL ENDING STATUS @V200730 01687000
  1968. BZ ONLINE OK, CONT WITH PRIMARY CONSOLE @V200730 01688000
  1969. GETALT LA R10,4(R10) POINT TO COUNT OF ALT CONSOLES @V60BCAA 01689000
  1970. ALTLOOP NI RDEVFLAG,X'FF'-RDEVENAB DISABLE THIS CONSOLE @V60BCAA 01690000
  1971. LTR R9,R9 ANY MORE ALTERNATE CONSOLES? @V60BCAA 01691000
  1972. BZ CPIERR0 CAN'T FIND A CONSOLE @V60BCAA 01692000
  1973. BCTR R9,0 DECREMENT COUNT FOR NEXT TIME @V60BCAA 01693000
  1974. * THROUGH LOOP 01694000
  1975. LA R10,4(R10) POINT TO NEXT ALT CONSOLE DATA @V60BCAA 01695000
  1976. L R8,=A(DMKRIOCN) HRC201DK 01695300
  1977. MVC 0(4,R8),0(R10) SET AS THE PRIMARY HRC201DK 01695600
  1978. LH R8,0(R10) GET ALTERNATE CONS. DISPLACEMENT @V60BCAA 01696000
  1979. SLL R8,3(0) CONVERT TO BYTE INDEX @V60BCAA 01697000
  1980. AL R8,ARIODV RDEVBLOK ADDRESS @V60BCAA 01698000
  1981. OI RDEVFLAG,RDEVENAB ENABLE THIS ALTERNATE CONSOLE @V60BCAA 01699000
  1982. LH R15,2(R10) ALTERNATE CONSOLE DEVICE ADDRESS @V60BCAA 01700000
  1983. BAL R14,STRTERM START ALTERNATE CONSOLE @V60BCAA 01701000
  1984. BNZ ALTLOOP CAN'T FIND THAT ALT CONSOLE @V60BCAA 01702000
  1985. BAL R14,TSTERM TEST ENDING STATUS @V60BCAA 01703000
  1986. BZ ONLINE OK, CONTINUE WITH THIS ALT CONS. @V60BCAA 01704000
  1987. B ALTLOOP CAN'T GET TO THIS ALT CONS--TRY @V60BCAA 01705000
  1988. * ANOTHER ONE 01706000
  1989. CPIERR0 LPSW XWAIT2 CAN'T GET TO CONSOLES - GIVE UP @V386298 01707000
  1990. SPACE 01708000
  1991. STRTERM LA R1,CPICCW1 SENSE CCW @V200730 01709000
  1992. ST R1,CAW SET CAW @V200730 01710000
  1993. LTR R15,R15 DOES DEVICE EXIST ?? @V200730 01711000
  1994. BCR 4,R14 (BM) NO -- EXIT IMMEDIATELY @V200820 01712000
  1995. CLI RDEVTYPC,CLASGRAF GRAPHIC DEVICE, 3270, 3066 ? @V200730 01713000
  1996. BE STRTGRF YES, START THEM @V200730 01714000
  1997. CLI RDEVTYPC,CLASTERM TERMINAL TYPE ?? @V200730 01715000
  1998. BCR 7,R14 (BNE) NO -- EXIT WITH BAD CC @V200820 01716000
  1999. CLI RDEVTYPE,TYP3210 3210 TYPE DEVICE ?? @V200730 01717000
  2000. BE STRTGRF YES, START IT UP @V200730 01718000
  2001. TIO 0(R15) MAKE SURE IT EXISTS @V200820 01719000
  2002. BCR 1,R14 NOPE - GIVE UP NOW @V200820 01720000
  2003. GOTO DMKCNSEN ENABLE THE T.P. LINE @V200820 01721000
  2004. SPACE 01722000
  2005. STRTGRF TIO 0(R15) TEST DEVICE @V200730 01723000
  2006. BC 2,*-4 LOOP IF BUSY @V200730 01724000
  2007. LA R2,100 LOOP COUNT @V200730 01725000
  2008. STRTSIO SIO 0(R15) START SENSE TO DEVICE @V200730 01726000
  2009. BCR 8+1,R14 RETURN IF O.K. OR DEAD @V200820 01727000
  2010. BCT R2,STRTSIO LOOP TRYING TO START @V200730 01728000
  2011. TM RDEVTYPE,TYP3277+TYP3278 IS THIS A 3277 OR 3278 @V60A6B6 01729000
  2012. BZ RET3277 NO - RETURN @VA08072 01730000
  2013. CLI 4+CSW,X'50' IS STAT SM + BUSY? @VA08072 01731000
  2014. BE CLRCHAN GO CLEAR THE 3277 INTURPTS @VA08072 01732000
  2015. RET3277 TM RDEVTYPE,X'FF' SET CC=4 @VA08072 01733000
  2016. BR R14 WON'T START - BOO @V200720 01734000
  2017. SPACE 01735000
  2018. CLRCHAN STM R3,R9,CHASAVE SAVE REGS @VA08072 01736000
  2019. LR R3,R15 GET IPL DEV ADDR @VA08072 01737000
  2020. SRL R3,8 ONLY NEED THE CHANNEL ADDR @VA08072 01738000
  2021. LA R9,31 BUILD CHAN BIT POSITION @VA08072 01739000
  2022. SR R9,R3 THIS IS IT @VA08072 01740000
  2023. STH R9,SELDCHAN THIS IS THE ONE WE NEED @VA08072 01741000
  2024. LA R9,1 SETUP MASK BIT @VA08072 01742000
  2025. DC X'8990' SLL R9,SELDCHAN @VA08072 01743000
  2026. SELDCHAN DS H SHIFT TO PROPER CHANNEL MASK @VA08072 01744000
  2027. ST R9,CHANMASK STORE IT @VA08072 01745000
  2028. LA R3,CHANRET @VA08072 01746000
  2029. ST R3,IONPSW+4 @VA08072 01747000
  2030. STCTL C2,C2,CTRLSAV SAVE THE CHANNEL CTRL REG @VA08072 01748000
  2031. LCTL C2,C2,CHANMASK LOAD OUR NEW MASK @VA08072 01749000
  2032. LPSW CHANWT WAIT FOR 3277 INTERUPT @VA08072 01750000
  2033. CHANRET MVC IONPSW+4(4),=A(DMKIOTIN) RETURN TO NORMAL @VA09587 01751000
  2034. LCTL C2,C2,CTRLSAV RESTORE CTRL REG @VA08072 01752000
  2035. LM R3,R9,CHASAVE RESTORE REGS @VA08072 01753000
  2036. B STRTGRF TRY AGAIN @VA08072 01754000
  2037. TSTERM CLI RDEVTYPC,CLASTERM TERMINAL DEVICE ?? @V200730 01755000
  2038. BE TSTGRF YES - JUST DRAIN THE INTERRUPT @V200720 01756000
  2039. MVI RDEVTFLG,RDEVRUN GRF DEVICE RUNNING @V200730 01757000
  2040. TSTGRF TIO 0(R15) TEST FOR SENSE END @V200730 01758000
  2041. BC 2,TSTGRF LOOP IF STILL BUSY @V200730 01759000
  2042. TM CPISNS,X'F0' ANY SENSE BITS ON ?? @V200730 01760000
  2043. BR R14 RETURN WITH COND. CODE SET @V200730 01761000
  2044. EJECT 01762000
  2045. LTORG 01763000
  2046. EJECT 01764000
  2047. ENTRY DMKCPIEM @VM03170 01765000
  2048. * DMKCPIEM - ENTER VIA 'GOTO' FROM SLIH 01766000
  2049. DROP R12,R13 @VM03170 01767000
  2050. USING DMKCPIEM,R12 @VM03170 01768000
  2051. DMKCPIEM DS 0D @VM03170 01769000
  2052. LM R12,R13,BASEREGS SET UP BASE REGISTERS @VM03170 01770000
  2053. B ONLINE1 CONTINUE @VM03170 01771000
  2054. USING DMKCPINT,R12,R13 @VM03170 01772000
  2055. SPACE 1 01773000
  2056. ONLINE EQU * @VM03170 01774000
  2057. LM R12,R13,BASEREGS ESTABLISH NEW BASE REGISTER @VM03170 01775000
  2058. USING DMKCPIEM,R12,R13 @VM03170 01776000
  2059. B ONLINE1 CONTINUE @VM03170 01777000
  2060. BASEREGS DC A(DMKCPIEM,DMKCPIEM+4096) BASE REGISTERS @VM03170 01778000
  2061. SPACE 1 01779000
  2062. SHUTSYS EQU * HERE IF SYSTEM IS TO BE SHUT DOWN@VM03170 01780000
  2063. L R0,=A(SHUTM1L) GET MESSAGE LENGTH HRC028DK 01781590
  2064. L R1,=A(SHUTM1) GET MESSAGE PTR HRC028DK 01782180
  2065. CALL DMKQCNWT,PARM=NORET+NOTIME @VM03170 01783000
  2066. L R0,=A(SHUTM2L) GET MESSAGE LENGTH HRC028DK 01784590
  2067. L R1,=A(SHUTM2) GET MESSAGE PTR HRC028DK 01785180
  2068. CALL DMKQCNWT,PARM=NOTIME @VM03170 01786000
  2069. LPSW XWAIT1 LOAD DISABLED WAIT STATE PSW @VM03170 01787000
  2070. SPACE 3 01788000
  2071. CPIERR1 EQU * HERE WHEN IMPOSSIBLE TO GET TO @VM03170 01789000
  2072. * A CONSOLE 01790000
  2073. LPSW XWAIT2 LOAD DISABLED WAIT STATE PSW @VM03170 01791000
  2074. SPACE 01792000
  2075. CPI955 EQU * HERE WHEN VM/370 IS TOO LARGE @VM03170 01793000
  2076. * FOR MACHINE 01794000
  2077. USING DMKCPINT,R12,R13 MUST SPECIFY THIS SINCE WE @VA11813 01794100
  2078. * CAN COME HERE 01794200
  2079. * FROM VBUFF ROUTINE 01794300
  2080. LM R12,R13,BASEREGS SET UP BASE REGISTERS @VA11813 01794400
  2081. USING DMKCPIEM,R12,R13 NOW BASE REGS ARE OK @VA11813 01794500
  2082. L R11,ASYSOP POINT TO OPERATOR VMBLOK @VA11813 01794600
  2083. L R0,=A(CPI955LN) LENGTH OF MESSAGE HRC028DK 01795590
  2084. L R1,=A(CPI955MG) ADDRESS OF THE MESSAGE HRC028DK 01796180
  2085. CALL DMKQCNWT,PARM=NOTIME+ALARM SEND MESSAGE @VM03170 01797000
  2086. SPACE 01798000
  2087. NOSTOR LPSW XWAIT3 LOAD DISABLED WAIT STATE PSW @V407466 01799000
  2088. CPI955SW DC X'00' SWITCH FOR ISSUE OF MSG 955W @V60B7AB 01799100
  2089. EJECT 01800000
  2090. * DISPATCH TIME SLICE TABLE - CPU TIMER UNITS 01801000
  2091. DS 0H @VM03170 01802000
  2092. TS135 DC X'0135' SYSTEM/370 MODEL 135 @VM03170 01803000
  2093. DC X'00000000493E0000' QUEUE 1 = 300 MS @VM03170 01804000
  2094. DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @VM03170 01805000
  2095. DC X'00003D09' 15625 BCT @ 3.25 MICROSEC @VA05431 01806000
  2096. SPACE 01807000
  2097. TS138 DC X'0138' SYSTEM/370 MODEL 138 @V386298 01808000
  2098. DC X'00000000493E0000' QUEUE 1 = 300 MS @V386298 01809000
  2099. DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @V386298 01810000
  2100. DC X'00003D09' 15625 BCT @ 3.25 MICROSEC @VA05431 01811000
  2101. SPACE 01812000
  2102. TS4331 DC X'4331' SYSTEM 4300 MODEL 4331 @V60A6B6 01813000
  2103. DC X'00000000493E0000' QUEUE 1 = 300 MS @V60A6B6 01814000
  2104. DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @V60A6B6 01815000
  2105. DC X'00003D09' 15625 BCT @ 3.25 MICROSEC @V60A6B6 01816000
  2106. SPACE 01817000
  2107. TS145 DC X'0145' SYSTEM/370 MODEL 145 @VM03170 01818000
  2108. DC X'00000000493E0000' QUEUE 1 = 300 MS @VM03170 01819000
  2109. DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @VM03170 01820000
  2110. DC X'00007A12' 31250 BCT @ 1.6 MICROSEC @VA05431 01821000
  2111. SPACE 01822000
  2112. TS148 DC X'0148' SYSTEM/370 MODEL 148 @V386298 01823000
  2113. DC X'00000000493E0000' QUEUE 1 = 300 MS @V386298 01824000
  2114. DC X'00000001E8480000' QUEUE 2 = 2.0 SEC @V386298 01825000
  2115. DC X'00007A12' 31250 BCT @ 1.6 MICROSEC @VA05431 01826000
  2116. SPACE 01827000
  2117. TS155 DC X'0155' SYSTEM/370 MODEL 155-II @VM03170 01828000
  2118. DC X'0000000030D40000' QUEUE 1 = 200 MS @VM03170 01829000
  2119. DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @VM03170 01830000
  2120. DC X'0000F424' 52500 BCT @ .8 MICROSEC @VA05431 01831000
  2121. SPACE 01832000
  2122. TS158 DC X'0158' SYSTEM/370 MODEL 158 @VM03170 01833000
  2123. DC X'0000000030D40000' QUEUE 1 = 200 MS @VM03170 01834000
  2124. DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @VM03170 01835000
  2125. DC X'0000F424' 62500 BCT @ .8 MICROSEC @VA05431 01836000
  2126. SPACE 01837000
  2127. TS4341 DC X'4341' SYSTEM 4300 MODEL 4341 @V60A6B6 01838000
  2128. DC X'0000000030D40000' QUEUE 1 = 200 MS @V60A6B6 01839000
  2129. DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @V60A6B6 01840000
  2130. DC X'0000F424' 62500 BCT @ .8 MICROSEC @V60A6B6 01841000
  2131. SPACE 01842000
  2132. TS165 DC X'0165' SYSTEM/370 MODEL 165-II @VM03170 01843000
  2133. DC X'00000000186A0000' QUEUE 1 = 100 MS @VM03170 01844000
  2134. DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @VM03170 01845000
  2135. DC X'00017848' 125000 BCT @ .4 MICROSEC @VA05431 01846000
  2136. SPACE 01847000
  2137. TS168 DC X'0168' SYSTEM/370 MODEL 168 @VM03170 01848000
  2138. DC X'00000000186A0000' QUEUE 1 = 100 MS @VM03170 01849000
  2139. DC X'00000000F4240000' QUEUE 2 = 1.0 SEC @VM03170 01850000
  2140. DC X'00017848' 125000 BCT @ .4 MICROSEC @VA05431 01851000
  2141. SPACE 01852000
  2142. TS3033 DC X'3033' SYSTEM/370 MODEL 3033 @V5088AB 01853000
  2143. DC X'00000000186A0000' QUEUE 1 = 100MS. @V5088AB 01854000
  2144. DC X'00000000F4240000' QUEUE 2 = 1.0 SEC. @V5088AB 01855000
  2145. DC X'0007A120' BCT @ .1 MICROSEC. @V5088AA 01856000
  2146. SPACE 01857000
  2147. TS3031 DC X'3031' SYSTEM/370 MODEL 3031 @V5088AB 01858000
  2148. DC X'0000000030D40000' QUEUE 1 = 200 MS. @V5088AB 01859000
  2149. DC X'00000000F4240000' QUEUE 2 = 1.0 SEC. @V5088AB 01860000
  2150. DC X'0000F424' BCT @ .8 MICROSEC. @V5088AB 01861000
  2151. SPACE 01862000
  2152. TS3032 DC X'3032' SYSTEM/370 MODEL 3032 @V5088AB 01863000
  2153. DC X'00000000186A0000' QUEUE 1 = 100 MS. @V5088AB 01864000
  2154. DC X'00000000F4240000' QUEUE 2 = 1.0 SEC. @V5088AB 01865000
  2155. DC X'0001E848' BCT @ .4 MICROSEC. @V5088AA 01866000
  2156. SPACE 01867000
  2157. WAITCNT DC F'625000' DEFAULT TO 158 COUNT @V60A6B6 01868000
  2158. SPACE 01870000
  2159. CPISTAT DC X'00' CPI PROCESSING STATUS @V407438 01871000
  2160. ALTPATH EQU X'80' ALT. PATH GENED IN DMKRIO @V407438 01872000
  2161. SPACE 01873000
  2162. DS 0D @VM03170 01874000
  2163. CPICCW1 CCW X'04',CPISNS,SILI,32 SENSE UP TO 32 BYTES HRC011DK 01875490
  2164. SPACE 01876000
  2165. CPICCWRL CCW X'94',CPIRLD,SILI,6 DASD "RELEASE" CCW @V407438 01877000
  2166. CPICCWRT CCW X'D4',CPIRLD,SILI,6 TAPE "RELEASE" CCW @V407438 01878000
  2167. CPISNSE4 CCW X'E4',CPISNS,SILI,7 SENSE ID HRC011DK 01878500
  2168. SPACE 01879000
  2169. CPICCW2 CCW X'07',CPISEEK,CC,6 READ LABEL OR WRITE DMKSYM @VM03170 01880000
  2170. CCW X'08',*+16,0,0 TIC TO SEARCH ID EQ @V407438 01881000
  2171. CCW X'03',0,SILI,1 NOOP IN CASE OF 3330V CYL FAULT @V407438 01882000
  2172. CCW X'31',CPISEEK+2,CC,5 @VM03170 01883000
  2173. CCW X'08',*-8,0,0 @VM03170 01884000
  2174. CPICCW4 CCW X'06',CPIATABL,CC+SILI,80 CHGD TO WRITE FOR SYM @V407438 01885000
  2175. CCW X'03',0,SILI,1 @VM03170 01886000
  2176. CPICCW2E EQU * IF LBL GETS READ, CSW POINTS HERE@V407438 01887000
  2177. SPACE 01888000
  2178. CPICCW3 CCW X'07',CPISEEK2,CC,6 READ ALLOCATION RECORD @VM03170 01889000
  2179. CCW X'31',CPISEEK2+2,CC,5 @VM03170 01890000
  2180. CCW X'08',*-8,0,0 @VM03170 01891000
  2181. CPICCW3L CCW X'06',CPIATABL,CC+SILI,1024 HRC106DK 01892000
  2182. CCW X'03',*,SILI,1 @VM03170 01893000
  2183. SPACE 01894000
  2184. CPICCW5 CCW X'05',DMKSYMTB,CC,4096 WRITE SYMBOL TABLE FOR @VM03170 01895000
  2185. * DUMP 01896000
  2186. SPACE 01897000
  2187. XWAIT1 DC X'0002000000000006' @VM03170 01898000
  2188. XWAIT2 DC X'0002000000000005' @VM03170 01899000
  2189. XWAIT3 DC X'000200000000000D' REAL MACHINE TOO SMALL FOR @VM03170 01900000
  2190. * VM/370 01901000
  2191. XWAIT9 DC X'0002000000000009' VOLUME NEEDED FOR ERR, WRM, HRC075DK 01901500
  2192. * OR CKP CYLS NOT MOUNTED HRC075DK 01901600
  2193. XWAIT4 DC X'0002000000000015' @V407595 01902000
  2194. XWAITCSS DC X'0002000000000016' FAILED TO CONNECT CHANNELS @V60B7AB 01902100
  2195. SPACE 01903000
  2196. SUSP CCW X'87',SUSPORD,CC,4 EXEC MSC ORDER @V50A2B5 01904000
  2197. CCW X'03',0,SILI,1 MUST BE CHAINED TO NOP @V407466 01905000
  2198. SUSPORD DC AL1(X'22',0,B'10000000',0) SUSPEND IMMEDIATE @V407466 01906000
  2199. SPACE 01907000
  2200. SPACE 1 01908000
  2201. TOD24HR DC X'000141DD76000000' 24 HOUR TOD CLOCK VALUE @VM03170 01909000
  2202. SPACE 2 01910000
  2203. CPIPSWS DC A(MCHEKENB,DMKPSAEX) EXTERNAL NEW PSW @VM03170 01911000
  2204. DC A(MCHEKENB,DMKSVCIN) SVC NEW PSW @V407595 01912000
  2205. DC A(MCHEKENB,DMKPRGIN) PROGRAM NEW PSW @VM03170 01913000
  2206. DC A(WAITON,X'000000B') MACHINE NEW PSW (INITIAL) @VM03170 01914000
  2207. DC A(MCHEKENB,DMKIOTIN) I/O NEW PSW @VA09587 01915000
  2208. MCKPSW DC A(XMODEON,DMKMCHIN) MACHINE NEW PSW (FINAL) @VM03170 01916000
  2209. RESTPSW DC A(MCHEKENB,DMKPSADU) RESTART NEW PSW @VM03170 01917000
  2210. SPACE 01918000
  2211. PLST2314 DC A(DMKPGTP4,DMKPGTT4) @VM03170 01919000
  2212. PLST3340 DC A(DMKPGT4P,DMKPGT4T) @VM03170 01920000
  2213. PLST3330 DC A(DMKPGTP0,DMKPGTT0) @VM03170 01921000
  2214. PLST3350 DC A(DMKPGT5P,DMKPGT5T) @VM03170 01922000
  2215. PLST3375 DC A(DMKPGT7P,DMKPGT7T) HRC106DK 01922100
  2216. PLST3380 DC A(DMKPGT8P,DMKPGT8T) HRC106DK 01922200
  2217. PLST2305 DC A(DMKPGTP5,DMKPGTT5) @VM03170 01923000
  2218. SPACE 01924000
  2219. CTLREGS DS 0F @VM03170 01925000
  2220. DC AL1(BLKMPX+NOSSKCK) HRC004DK 01926290
  2221. DC AL1(PAGE4K,CKCMASK,INTMASK+KEYMASK) HRC004DK 01926580
  2222. DC F'0' @VM03170 01927000
  2223. DC X'FFFFFFFF' @VM03170 01928000
  2224. DC 11F'0' @V407595 01929000
  2225. DC AL1(HARDSTOP+SYNCLOG+DAMAGRPT,0,0,0) @VM03170 01930000
  2226. SPACE 01931000
  2227. UDRPSTRT DC A(0) SAVEAREA FOR POSSIBLE DIRECTORY @VM03170 01932000
  2228. * ADDRESS 01933000
  2229. UDRNSTRT DC A(0) SAVEAREA FOR NUC. DISK @VM03170 01934000
  2230. * DIRECTORY ADDRESS 01935000
  2231. UDRASTRT DC A(0) SAVEAREA FOR ALT. DISK @VM03170 01936000
  2232. * DIRECTORY ADDRESS 01937000
  2233. SPACE 1 01938000
  2234. DUPMSGPT DC F'0' PTR TO DUPLICATE VOLUME SERIAL @VM03170 01939000
  2235. * MESSAGES 01940000
  2236. SPACE 1 01941000
  2237. BDYCHK DS 0F ROUNDING CONSTANT @V396414 01942000
  2238. DC X'01FFF000' ..... @V396414 01943000
  2239. SPACE 01944000
  2240. DUMPDTBL DS 0F @VM03170 01945000
  2241. DC A(DMKPGTT4) PTR TO RDEVBLOK CHAIN FOR 2314 @VM03170 01946000
  2242. * TEMP ALOC 01947000
  2243. DC F'32' NUMBER OF RECORDS/CYLINDER FOR @VM03170 01948000
  2244. * 2314 01949000
  2245. DC X'00000000FFFFFFFF' INITIAL RECMAP SETTING @VM03170 01950000
  2246. DC X'FFFFFFFFFFFFFFFF' @VM03170 01951000
  2247. DC X'FFFFFFFFFFFFFFFF' HRC106DK 01951100
  2248. DC A(DMKPGT4T) RDEVBLOK TEMP ALLOC CHAIN (3340) @VM03170 01952000
  2249. DC F'24' PAGES/CYLINDER (3340) @VM03170 01953000
  2250. DC X'000000FFFFFFFFFF' INITIAL RECMAP SETTING @VM03170 01954000
  2251. DC X'FFFFFFFFFFFFFFFF' @VM03170 01955000
  2252. DC X'FFFFFFFFFFFFFFFF' HRC106DK 01955100
  2253. DC A(DMKPGTT0) PTR TO RDEVBLOK CHAIN FOR 3330 @VM03170 01956000
  2254. * TEMP ALOC 01957000
  2255. DC F'57' NUMBER OF RECORDS/CYLINDER FOR @VM03170 01958000
  2256. * 3330 01959000
  2257. DC X'000000000000007F' INITIAL RECMAP SETTING @VM03170 01960000
  2258. DC X'FFFFFFFFFFFFFFFF' @VM03170 01961000
  2259. DC X'FFFFFFFFFFFFFFFF' HRC106DK 01961100
  2260. DC A(DMKPGT5T) RDEVBLOK TEMP ALLOC CHAIN (3350) @VM03170 01962000
  2261. DC F'120' NUMBER RECORDS/CYLINDER (3350) @VM03170 01963000
  2262. DC X'0000000000000000' INITIAL RECMAP SETTING @VM03170 01964000
  2263. DC X'00000000000000FF' @VM03170 01965000
  2264. DC X'FFFFFFFFFFFFFFFF' HRC106DK 01965100
  2265. DC A(DMKPGT7T) RDEVBLOK temp alloc chain (3375) HRC106DK 01965150
  2266. DC F'96' Number records/cylinder (3375) HRC106DK 01965200
  2267. DC X'0000000000000000' Initial recmap setting HRC106DK 01965250
  2268. DC X'00000000FFFFFFFF' HRC106DK 01965300
  2269. DC X'FFFFFFFFFFFFFFFF' HRC106DK 01965350
  2270. DC A(DMKPGT8T) RDEVBLOK temp alloc chain (3380) HRC106DK 01965400
  2271. DC F'150' Number records/cylinder (3380) HRC106DK 01965450
  2272. DC X'0000000000000000' HRC106DK 01965500
  2273. DC X'0000000000000000' HRC106DK 01965550
  2274. DC X'000003FFFFFFFFFF' HRC106DK 01965600
  2275. DC A(DMKPGTT5) PTR TO RDEVBLOK CHAIN FOR 2305 @VM03170 01966000
  2276. * TEMP ALOC 01967000
  2277. DC F'24' NUMBER OF RECORDS/CYLINDER FOR @VM03170 01968000
  2278. * 2305 01969000
  2279. DC X'000000FFFFFFFFFF' INITIAL RECMAP SETTING @VM03170 01970000
  2280. DC X'FFFFFFFFFFFFFFFF' @VM03170 01971000
  2281. DC X'FFFFFFFFFFFFFFFF' HRC106DK 01971100
  2282. SPACE 01972000
  2283. ALOCTBL DC X'8040201008040201' @VM03170 01973000
  2284. SPACE 01974000
  2285. CPISNS DC 32X'00' SENSE DATA FIELD EXTENDED HRC011DK 01975090
  2286. CPISNSB0 EQU CPISNS+00 HRC011DK 01975180
  2287. CPISNSB1 EQU CPISNS+01 HRC011DK 01975270
  2288. CPISNSB2 EQU CPISNS+02 HRC011DK 01975360
  2289. CPISNSB3 EQU CPISNS+03 HRC011DK 01975450
  2290. CPISNSB4 EQU CPISNS+04,2 HRC011DK 01975540
  2291. CPISNSB6 EQU CPISNS+06 HRC011DK 01975630
  2292. CPIRLD DC 6X'FF' "RELEASE" DATA FIELD @VM03170 01976000
  2293. CPISEEK DC XL7'3' CYL 0, TRK 0, REC 3 @VM03170 01977000
  2294. CPISEEK2 DC XL7'4' @V386198 01978000
  2295. SPACE , HRC028DK 01978200
  2296. * KEEP IN THIS ORDER !! HRC028DK 01978400
  2297. WARMFLAG DC X'00' WARM START FLAGS2 HRC028DK 01978600
  2298. WARMCOLD DC X'00' WARM START FLAGS @V386198 01979000
  2299. EFC0 DC X'EFC0' MASK INDICATORS FOR C-REG 14 @V386198 01980000
  2300. P3800 DC AL1(CLASURO,TYP3800) @V60B9BA 01981000
  2301. CHANMASK DS F @VA08072 01982000
  2302. CTRLSAV DS F @VA08072 01983000
  2303. CHASAVE DS 7F REG SAVE AREA 3 TO 9 @VA08072 01984000
  2304. DS 0D ALIGNMENT @VA08072 01985000
  2305. CHANWT DC X'020A000000000004' WAIT FOR 3277'S TO CLEAR @VA08072 01986000
  2306. EJECT 01987000
  2307. NOOP DC X'0700,47000000' NO-OP FOR MICROCODE ASSISTS HRC035DK 01988000
  2308. CPATABLE DS 0F CP ASSIST INSTRUCTION ADDRESSES: @V386198 01990000
  2309. CPATFREE DC V(DMKFREE) E614 @VA14280 01991000
  2310. CPATFRET DC V(DMKFRET) E615 @VA14280 01992000
  2311. DC V(DMKPTRLK) E602 @V386198 01993000
  2312. DC V(DMKPTRUL) E603 @V386198 01994000
  2313. DC V(DMKCCW0) E604 @V3M4026 01995000
  2314. CPATUNTF DC V(DMKUNTFR) E605 HRC035DK 01996490
  2315. DC V(DMKSCNVU) E606 @V386198 01997000
  2316. CPATDSP1 DC V(DMKDSP1) E607 HRC035DK 01998490
  2317. DC V(DMKCCWB1) E608 @V386198 01999000
  2318. DC V(DMKCCWB2) E608 @V386198 02000000
  2319. DC V(DMKCCWB3) E608 @V386198 02001000
  2320. DC V(DMKCCWB4) E608 @V386198 02002000
  2321. DC V(DMKCCWB5) E608 @V386198 02003000
  2322. DC V(DMKCCWB6) E608 @V386198 02004000
  2323. DC V(DMKCCWB7) E608 @V386198 02005000
  2324. DC V(DMKCCWB8) E608 @V386198 02006000
  2325. DC V(DMKCCWL1) E609 @V386198 02007000
  2326. DC V(DMKCCWL2) E609 @V386198 02008000
  2327. DC V(DMKCCWL3) E609 @V386198 02009000
  2328. DC V(DMKCCWL4) E609 @V386198 02010000
  2329. DC V(DMKCCWL5) E609 @V386198 02011000
  2330. DC V(DMKVATZS) E60A @V386198 02012000
  2331. DC V(DMKVATZP) E60B @V386198 02013000
  2332. DC V(DMKCCW1) E60C @V3M4026 02014000
  2333. DC V(DMKDSP0) E60D @V3M4026 02015000
  2334. DC V(DMKSCNRU) E60E @V386198 02016000
  2335. DC V(DMKCCWGN) E60F @V386198 02017000
  2336. DC V(DMKUNTRN) E610 @V386198 02018000
  2337. CPATDSP2 DC V(DMKDSP2) E611 HRC035DK 02019490
  2338. DC V(DMKVMASH) E613 @VA07223 02020000
  2339. CPATBLND EQU *-4 @V386198 02021000
  2340. EJECT 02022000
  2341. ALLOCON OI 0(R6),0 EXECUTED OI @VM03170 02023000
  2342. DUMPLOOK CLC 0(0,R1),CPIATABL EXECUTED COMPARE @VM03170 02024000
  2343. YESTEST CLC CPIATABL(0),=C'YES' EXECUTED COMPARE @VM03170 02025000
  2344. NOTEST CLC CPIATABL(0),=C'NO' EXECUTED COMPARE @VM03170 02026000
  2345. KEYCONFL TM WARMCOLD,0 EXECUTED CONFLICT TEST @VM03170 02027000
  2346. KEYSET OI WARMCOLD,0 EXECUTED OI TO TURN FLAGS ON @VM03170 02028000
  2347. KEYSET2 OI WARMFLAG,0 EXECUTED OI TO TURN FLAGS ON HRC028DK 02028500
  2348. KEYCOMP CLC 0(0,R7),0(R3) EXECUTED COMPARE @VM03170 02029000
  2349. SPACE 1 02030000
  2350. COLD EQU X'01' FLAGS IN WARMCOLD HRC028DK 02030070
  2351. WARM EQU X'02' HRC028DK 02030140
  2352. OTHERFLG EQU X'04' HRC028DK 02030210
  2353. SHUTDOWN EQU X'08' HRC028DK 02030280
  2354. WARMAUTO EQU X'10' HRC028DK 02030350
  2355. CKPT EQU X'20' HRC028DK 02030420
  2356. FORCE EQU X'40' HRC028DK 02030490
  2357. SPACE 1 HRC028DK 02030560
  2358. DISABLE EQU X'01' FLAGS IN WARMFLAG HRC028DK 02030630
  2359. DRAIN EQU X'02' HRC028DK 02030700
  2360. NOAUTOLG EQU X'04' HRC028DK 02030770
  2361. SHUTFLGS EQU WARM+COLD+CKPT+FORCE+OTHERFLG+SHUTDOWN HRC028DK 02030840
  2362. SPACE 2 , HRC028DK 02030910
  2363. WSKYTAB DC CL8'COLD',AL1(COLD,WARM+COLD+CKPT+FORCE),H'3' @VM03170 02031000
  2364. DC CL8'WARM',AL1(WARM,WARM+COLD+CKPT+FORCE),H'0' @VM03170 02032000
  2365. DC CL8'CKPT',AL1(CKPT,WARM+COLD+CKPT+FORCE),H'3' HRC028DK 02033690
  2366. DC CL8'FORCE',AL1(FORCE,WARM+COLD+CKPT+FORCE),H'0' HRC028DK 02034380
  2367. DC CL8'SHUTDOWN',AL1(SHUTDOWN,SHUTFLGS),H'7' HRC028DK 02035070
  2368. WSKYFLG2 DC CL8'NOAUTOLO',AL1(NOAUTOLG,NOAUTOLG),H'5' HRC028DK 02035760
  2369. DC CL8'DISABLE ',AL1(DISABLE,DISABLE),H'1' HRC028DK 02036450
  2370. WSKYTABE DC CL8'DRAIN ',AL1(DRAIN,DRAIN),H'1' HRC028DK 02037140
  2371. SPACE 02038000
  2372. MASK1 DC X'0F0F000F0F000F0F' @VM03170 02039000
  2373. MASK2 DC X'FFFF61FFFF61FFFF' @VM03170 02040000
  2374. MASK3 DC X'FFFF7AFFFF7AFFFF' @VM03170 02041000
  2375. SPACE 1 02042000
  2376. MONTHTBL DC Y(0*31+0*28+0*30,1*31+0*28+0*30,1*31+1*28+0*30) J,F,M 02043000
  2377. DC Y(2*31+1*28+0*30,2*31+1*28+1*30,3*31+1*28+1*30) A,M,J 02044000
  2378. DC Y(3*31+1*28+2*30,4*31+1*28+2*30,5*31+1*28+2*30) J,A,S 02045000
  2379. DC Y(5*31+1*28+3*30,6*31+1*28+3*30,6*31+1*28+4*30) O,N,D 02046000
  2380. SPACE 1 02047000
  2381. MONTHCHK DC Y(31,29,31,30,31,30,31,31,30,31,30,31) @VM03170 02048000
  2382. SPACE 1 02049000
  2383. CPITODAY DC X'1',X'5',CL9'MONDAY' @VM03170 02050000
  2384. DC X'2',X'6',CL9'TUESDAY' @VM03170 02051000
  2385. DC X'3',X'8',CL9'WEDNESDAY' @VM03170 02052000
  2386. DC X'4',X'7',CL9'THURSDAY' @VM03170 02053000
  2387. DC X'5',X'5',CL9'FRIDAY' @VM03170 02054000
  2388. DC X'6',X'7',CL9'SATURDAY' @VM03170 02055000
  2389. DC X'7',X'5',CL9'SUNDAY' @VM03170 02056000
  2390. PGTTU DC F'0' NUMBER OF TEMP CYLINDERS @VM03170 02057000
  2391. * ALLOCATED 02058000
  2392. PGTTM DC F'0' NUMBER OF MAX TEMP CYLINDER @VM03170 02059000
  2393. SPACE 2 02060000
  2394. PAGESIZE EQU 15 *** SIZE OF PAGING IOBLOK (USED @VM03170 02061000
  2395. * BY DMKPAGIO) *** 02062000
  2396. DS 0F @V60BCAB 02063000
  2397. CPISYSTR DC V(DMKSYSTR) PTR TO TRACE= VALUE FROM SYSCOR @V60BCAB 02064000
  2398. EJECT 02065000
  2399. * START OF ATTACHED PROCESSOR DEFINITIONS 02066000
  2400. DS 0F @V407595 02067000
  2401. CPISYSAP DC V(DMKSYSAP) PTR TO AP= VALUE FROM SYSCOR @V407595 02068000
  2402. CPISYSFP DC V(DMKSYSFP) PTR TO FREE= VALUE FROM SYSCOR @V407595 02069000
  2403. CPIFREAP DC V(DMKFREAP) PTR TO FREE STORAGE FOR DMKFRE @V407595 02070000
  2404. CPISVCLO DC V(DMKSVCLO) LOW FREE STORAGE AREA @V407595 02071000
  2405. CPISVCHI DC V(DMKSVCHI) HIGH FREE STORAGE AREA @V407595 02072000
  2406. CPISVCNS DC V(DMKSVCNS) SAVEAREA CHAIN FOR DMKSVC @V407595 02073000
  2407. CPIDMPTD DC V(DMKDMPTD) PSA 'TODATE' FOR DMKDMP @V407595 02074000
  2408. CPIDMPDT DC V(DMKDMPDT) PSA 'DATE' FOR DMKDMP @V407595 02075000
  2409. CPIDMPSD DC V(DMKDMPSD) PSA 'SYSIPLDV' FOR DMKDMP @V407595 02076000
  2410. CPIDMPMA DC V(DMKDMPMA) PSA 'IPUADDR' FOR DMKDMP- (MAIN) @V407595 02077000
  2411. CPIDMPAA DC V(DMKDMPAA) PSA 'IPUADDRX' FOR DMKDMP- (APU) @V407595 02078000
  2412. CPIDMPSA DC V(DMKDMPSA) ADDRESS OF SAVE AREA FOR PREFIXA/B @V5BC0AB 02079000
  2413. MFAONLY DC AL1(BLKMPX+NOSSKCK) HRC004DK 02080290
  2414. DC AL1(PAGE4K,MFAMASK,N0) MFA ONLY FOR CR0 HRC004DK 02080580
  2415. * 02081000
  2416. * DEFINE DMKCPI FLAGS, REGISTER SAVEAREAS AND CONSTANTS @V407595 02082000
  2417. * 02083000
  2418. CPIBASE DS 2F SAVEAREA FOR BASEREGS @V407595 02084000
  2419. F8192 DC F'8192' TWO PAGES @V407595 02085000
  2420. STOPPED DC X'00000040' PROCESSOR IN STOPPED STATE @V407595 02086000
  2421. HALFTIME DC X'3FFFFFFFFFFFF000' HALF UP SUPV TIMER VALUE @V4M0203 02087000
  2422. H32 DC H'32' DECREMENT CORE TABLE PTR BELOW @V407595 02088000
  2423. * PREFIX AREA (I.E., -8K). 02089000
  2424. CPIWORK DS H DMKCPI INTERNAL FLAGS AND W.A. @V407595 02090000
  2425. ORG CPIWORK @V407595 02091000
  2426. CPIFLAG1 DS CL1 FIRST FLAG BYTE @V407595 02092000
  2427. SYSMASK DS CL1 STORE SYSTEM MASK HERE @V407595 02093000
  2428. * DEFINE BITS FOR CPIFLAG1 @V407595 02094000
  2429. CPIAP EQU X'80' INDICATE APU IS AVAILABLE TO CPI @V407595 02095000
  2430. APUSPIN EQU X'40' SPIN BIT @V407595 02096000
  2431. CPIAPOFF EQU X'20' APU NOT ONLINE @V4M0206 02097000
  2432. EJECT 02111000
  2433. CPAMSG DC X'15' HRC202DK 02112690
  2434. DC C'DMKCPI185E CP Assist level ' HRC028DK 02113490
  2435. CPALVLNO DC CL4' ' @V386198 02114000
  2436. DC C' not supported - CP Assist disabled' HRC028DK 02115990
  2437. DC X'15' HRC202DK 02117490
  2438. CPAMSGL EQU *-CPAMSG @V386198 02118000
  2439. SPACE 02119000
  2440. NMSG DC X'15' HRC202DK 02120690
  2441. DC C'DMKCPI951I CP VOLID ' HRC028DK 02121490
  2442. NMSGVOL DC CL6' ' @VM03170 02122000
  2443. DC C' not mounted' HRC028DK 02123490
  2444. NMSGNL DC X'15' HRC075DK 02124490
  2445. NMSGL EQU *-NMSG @VM03170 02125000
  2446. DC C' required for ' HRC075DK 02125200
  2447. NMCYLS DC CL6' ' HRC075DK 02125300
  2448. DC C' cylinders' HRC075DK 02125400
  2449. DC X'1515' HRC075DK 02125500
  2450. NMSGLREQ EQU *-NMSG HRC075DK 02125600
  2451. SPACE 02126000
  2452. CORMSG DC X'15' HRC202DK 02127490
  2453. DC C'DMKCPI952I ' @VM03170 02128000
  2454. CORSMSG DC CL5' ' @VA11619 02129100
  2455. DC C'K System Storage' HRC028DK 02130490
  2456. DC X'15' HRC202DK 02131490
  2457. CORMSGL EQU *-CORMSG @VM03170 02132000
  2458. SPACE 02133000
  2459. ENTRY DMKCPICD @VM03170 02138000
  2460. STMSG DC X'151515' @VM03170 02139000
  2461. DC C'VM/370 Release ' HRC370DK 02140590
  2462. CPIVER DC C' Hercul' VERSION NO FROM DMKCPEID HRC370DK 02141180
  2463. CPILEV DC C' "Six' LEVEL NO FROM DMKCPEID HRC370DK 02142000
  2464. CPIPLC DC C' " ver' PLC NO FROM DMKCPEID HRC370DK 02143100
  2465. CPIHRC DC C' ' HRC VERSION NUMBER FROM CPEID HRC370DK 02143200
  2466. CPIWHO DC C' : ' INITIALS FROM CPEID HRC370DK 02143300
  2467. DMKCPICD DC CL9' ' CREATION DATE FILLED IN BY DMKSAV@VM03170 02144000
  2468. DC CL8' ' CREATION TIME FILLED IN BY DMKSAV@VM03170 02145000
  2469. DC X'1515' @VM03170 02146000
  2470. STMSGL EQU *-STMSG @VM03170 02147000
  2471. SPACE 1 02148000
  2472. * THE FOLLOWING SET OF DC'S CONSTITUTES A MESSAGE TO THE OPERATOR 02149000
  2473. * CONCERNING STORAGE ALLOCATION AT INITIALIZATION. 02150000
  2474. ALOCMSG EQU * HRC028DK 02151690
  2475. DC X'15' HRC028DK 02152380
  2476. DC C'DMKCPI957I Storage size = ' HRC028DK 02153070
  2477. ALOCSTOR DC C' ' HRC028DK 02153760
  2478. DC C' K, Nucleus = ' HRC028DK 02154450
  2479. ALOCNUC DC C' ' HRC028DK 02155140
  2480. DC C' K,',X'15' HRC028DK 02155830
  2481. DC C' Dynamic Paging = ' HRC028DK 02156520
  2482. ALOCDYN DC C' ' HRC028DK 02157210
  2483. DC C' K, Trace Table = ' HRC028DK 02157900
  2484. ALOCTRA DC C' ' HRC028DK 02158590
  2485. DC C' K,',X'15' HRC028DK 02159280
  2486. DC C' Free Storage = ' HRC028DK 02159970
  2487. ALOCFREE DC C' ' HRC028DK 02160660
  2488. DC C' K, Virtual=Real = ' HRC028DK 02161350
  2489. ALOCVR DC C' ' HRC028DK 02162040
  2490. DC C' K' HRC028DK 02162730
  2491. DC X'15' HRC028DK 02163420
  2492. ALOCMSGL EQU *-ALOCMSG HRC028DK 02164110
  2493. SPACE 1 02165000
  2494. SAVSTOR DC D'0' SAVE BINARY STORAGE SIZE @V396414 02166000
  2495. SAVNUC DC D'0' SAVE BINARY NUCLEUS SIZE @V396414 02167000
  2496. SAVDYN DC D'0' SAVE BINARY DYNAMIC SIZE @V396414 02168000
  2497. SAVFREE DC D'0' SAVE BINARY FREE STOR SIZE @V396414 02169000
  2498. SAVTRA DC D'0' SAVE BINARY TRACE SIZE @V396414 02170000
  2499. SAVVR DC D'0' SAVE BINARY V=R SIZE @V396414 02171000
  2500. SPACE 1 HRC370DK 02171050
  2501. SAVEDPSW DS D saved program new PSW HRC370DK 02171100
  2502. TRAPPER DC X'00080000' program check new PSW HRC370DK 02171150
  2503. DC A(CHK3702) address of the interrupt handler HRC370DK 02171200
  2504. PCNEWPSW EQU X'68' program check new PSW HRC370DK 02171250
  2505. SPACE 1 02172000
  2506. * THE FOLLOWING DC'S CONSTITUTE MESSAGES WHICH MAY BE ISSUED TO 02173000
  2507. * THE OPERATOR DURING CP INITIALIZATION: 02174000
  2508. SPACE 02175000
  2509. SPACE 1 02206000
  2510. DUPMSG DC C'DMKCPI954E DASD ' HRC020DK 02207000
  2511. DUPVOL1 DC CL3' ' @VM03170 02209000
  2512. DC C' VOLID ' @VM03170 02210000
  2513. DUPSER1 DC CL6' ' @VM03170 02211000
  2514. DC C' not mounted; duplicate of DASD ' HRC028DK 02212490
  2515. DUPVOL2 DC CL3' ' @VM03170 02213000
  2516. DUPMSGL EQU *-DUPMSG @VM03170 02215000
  2517. SPACE 1 02216000
  2518. SETMSG DC C'Press "TOD ENABLE SET" key at designated' HRC028DK 02217290
  2519. DC C' instant' HRC028DK 02217580
  2520. SETMSGL EQU *-SETMSG @VM03170 02218000
  2521. SPACE 1 02219000
  2522. CHNGMSG DC C'Change TOD Clock (Yes|No) :' HRC028DK 02220490
  2523. CHNGMSGL EQU *-CHNGMSG @VM03170 02221000
  2524. SPACE 1 02222000
  2525. OPLGMSG DC C'DMKCPI950A Auto LOGON failed; explicit LOGON' HRC028DK 02223290
  2526. DC C' reguired' HRC028DK 02223580
  2527. OPLGMSGL EQU *-OPLGMSG @VM03170 02224000
  2528. OWNMSG DC X'15' HRC202DK 02225690
  2529. DC C'DMKCPI913I CP owned VOLID ' HRC028DK 02226490
  2530. OWNVOL DC CL6' ' @V407466 02227000
  2531. DC C' invalid for 3330V' HRC028DK 02228490
  2532. OWNMSGL EQU *-OWNMSG @V407466 02229000
  2533. SPACE 2 02230000
  2534. ORG 02244000
  2535. EJECT 02245000
  2536. ONLINE1 TM WARMCOLD,WARMAUTO+WARM HAVE WE ACTIVATED DMKWRM?@VA08415 02246000
  2537. BNZ CPIRET YES, DON'T DO IT AGAIN @VA08415 02247000
  2538. L R11,ASYSOP GET OPERATORS VMBLOK @VA08415 02248000
  2539. USING VMBLOK,R11 02249000
  2540. CLI RDEVTYPC,CLASGRAF GRAPHIC DEVICE ? @V200829 02250000
  2541. BNE CHKTERM NO -- CHECK CLASTERM @V200829 02251000
  2542. TM RDEVTYPE,TYP3066+TYP3277+TYP3278 SUPPORTED? @V60A6B6 02252000
  2543. BZ CPIERR1 NO -- ENTER WAIT STATE @V200829 02253000
  2544. B ONLINEA HAVE FOUND A SYSTEM CONSOLE @V200829 02254000
  2545. CHKTERM EQU * @V200829 02255000
  2546. CLI RDEVTYPC,CLASTERM SLOW-SPEED TERMINAL DEVICE ?@V200829 02256000
  2547. BNE CPIERR1 NOPE - NO CONSOLE FOUND @V200829 02257000
  2548. CLI RDEVTYPE,TYPBSC IS THIS A 3270 REMOTE LINE 02258000
  2549. BE CPIERR1 YES, NO CONSOLE FOUND 02259000
  2550. NI RDEVTFLG,255-RDEVATOF DO NOT SUPPRESS EXCLAIM @VA00944 02260000
  2551. CLI RDEVTYPE,TYP2741 IS THIS A 2741 ? @V200820 02261000
  2552. BNE ONLINEA NO -- ALL SET AS IS @V200820 02262000
  2553. OI RDEVFLAG,RDEVIDNT TERMINAL CODE IDENTIFIED @V200820 02263000
  2554. MVI RDEVTMCD,RDEVPTTC SET CODE = PTTC/EBCD @V200820 02264000
  2555. ONLINEA EQU * @VA00944 02265000
  2556. ST R8,VMTERM STORE ADDRESS OF TERMINAL RDEVBLOK 02266000
  2557. ST R11,RDEVUSER STORE ADDRESS OF VMBLOK 02267000
  2558. L R10,RDEVAIOB GET ACTIVE IOBLOK 02268000
  2559. USING IOBLOK,R10 02269000
  2560. LTR R10,R10 ANY THERE ? 02270000
  2561. BZ *+8 NO -- 02271000
  2562. ST R11,IOBUSER STORE ADDRESS OF VMBLOK 02272000
  2563. SPACE 02273000
  2564. CLI CPI955SW,FF IS SYSTEM TOO BIG FOR MACHINE? @V60B7AB 02274100
  2565. BE CPI955 YES, BRANCH. ISSUE DMKCPI955W @V60B7AB 02274200
  2566. SPACE 02275000
  2567. L R1,=A(DMKSYSIC) Get address of SYSID list count HRC108DK 02275050
  2568. ICM R0,B'1111',0(R1) Get number of entries in list HRC108DK 02275100
  2569. BZ SYSIDFIN No entries in list HRC108DK 02275150
  2570. L R1,=A(DMKSYSIL) Get address of SYSID list HRC108DK 02275200
  2571. L R2,=A(DMKSYSID) Get address of current SYSID HRC108DK 02275250
  2572. SYSIDLP EQU * HRC108DK 02275300
  2573. CLC 9(5,R1),CPUSER Check list entry against PSA HRC108DK 02275350
  2574. BNE SYSIDNOT Not this one HRC108DK 02275400
  2575. MVC 0(8,R2),0(R1) Replace SYSID with list entry HRC108DK 02275450
  2576. SYSIDNOT EQU * HRC108DK 02275500
  2577. LA R1,14(,R1) Point to next item in list HRC108DK 02275550
  2578. BCT R0,SYSIDLP Decrement count and loop if more HRC108DK 02275600
  2579. SYSIDFIN EQU * HRC108DK 02275650
  2580. CALL DMKGRTID Copy SYSID to 3270 status area HRC108DK 02275700
  2581. SPACE 02276000
  2582. * WRITE INITIAL CONSOLE MESSAGE 02277000
  2583. CLC =CL4'WRM ',CPID IPL ON WARM MACHINE ? 02278000
  2584. BNE INITWRIT NO 02279000
  2585. L R0,=A(WNGMSGL) GET LENGTH OF RESTART MESSAGE HRC028DK 02280590
  2586. L R1,=A(WNGMSG) GET PTR TO RESTART MESSAGE HRC028DK 02281180
  2587. CALL DMKQCNWT,PARM=NORET+NOTIME+ALARM 02282000
  2588. INITWRIT EQU * 02283000
  2589. L R1,=A(DMKCPEID) POINT TO THE CP ID 02284000
  2590. MVC CPIVER(2),0(R1) MOVE IN THE VERSION NO. 02285000
  2591. MVC CPILEV(2),2(R1) MOVE IN THE LEVEL NO. 02286000
  2592. MVC CPIPLC(4),4(R1) MOVE IN THE PLC TAPE NO. 02287000
  2593. MVC CPIHRC(4),8(R1) MOVE IN THE HRC VERSION HRC019DK 02287100
  2594. MVC CPIWHO(3),12(R1) WHO DONE IT HRC019DK 02287200
  2595. SPACE 1 HRC370DK 02287220
  2596. * Since we support both System/380 and System/370 machines, HRC370DK 02287240
  2597. * let's see on which we are running, and adjust the version HRC370DK 02287260
  2598. * message accordingly. HRC370DK 02287280
  2599. MVI INSTWRD1,C'7' seems like a safe place for this HRC370DK 02287300
  2600. MVC SAVEDPSW(8),PCNEWPSW save program check new PSW HRC370DK 02287320
  2601. MVC PCNEWPSW(8),TRAPPER set our interrupt handler HRC370DK 02287340
  2602. LA R14,CHK3701 load branch address HRC370DK 02287360
  2603. ICM R14,8,=X'80' try to switch to 31-bit mode HRC370DK 02287380
  2604. DC X'0B0E' BSM R0,R14 HRC370DK 02287400
  2605. SPACE 1 HRC370DK 02287420
  2606. * If we arrive here, the BSM instruction was valid and we are HRC370DK 02287440
  2607. * executing on a System/380 machine. HRC370DK 02287460
  2608. * Note!!!!! We store an '8' in the first byte of INSTWRD1 in HRC370DK 02287480
  2609. * the PSA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! HRC370DK 02287500
  2610. CHK3701 DS 0H HRC370DK 02287520
  2611. MVI INSTWRD1,C'8' seems like a safe place for this HRC370DK 02287540
  2612. MVI STMSG+7,C'8' tell them this is System/380 HRC370DK 02287560
  2613. LA R14,CHK3702 load branch address HRC370DK 02287580
  2614. ICM R14,8,=X'00' return to 24-bit addressing mode HRC370DK 02287600
  2615. DC X'0B0E' BSM R0,R14 HRC370DK 02287620
  2616. SPACE 1 HRC370DK 02287640
  2617. * If we branched here, the BSM instruction generated a program HRC370DK 02287660
  2618. * check. Thus we are executing on a System/370 machine. HRC370DK 02287680
  2619. CHK3702 DS 0H HRC370DK 02287700
  2620. MVC PCNEWPSW(8),SAVEDPSW restore program check PSW HRC370DK 02287720
  2621. SPACE 1 HRC370DK 02287740
  2622. LA R0,STMSGL GET LENGTH OF VERSION MESSAGE 02288000
  2623. LA R1,STMSG GET PTR TO VERSION MESSAGE 02289000
  2624. CALL DMKQCNWT,PARM=NORET+NOTIME 02290000
  2625. EJECT 02291000
  2626. * HERE TO INITIALIZE TOD CLOCK 02292000
  2627. MVC STARTIME(8),FFS MOVE IN VALUE FOR LATER @VA02901 02293000
  2628. * TESTING ON CC=3 02294000
  2629. STCK STARTIME STORE TOD CLOCK 02295000
  2630. BC 8,CLOCKSET CC=0, CLOCK SET 02296000
  2631. BC 6,CLOCKNST CC=1 OR 2, NOT SET OR ERROR BUT RUNNING 02297000
  2632. BC 1,CLOCKCK CC=3, STOPPED STATE OR NOT OPERATIONAL@VA02901 02298000
  2633. ABEND 3 CLOCK NOT WORKING 02299000
  2634. SPACE 02300000
  2635. CLOCKCK EQU * HERE TO DISTINGUISH BETWEEN CLOCK IN STOPPED @VA02901 02301000
  2636. * STATE OR CLOCK NOT OPERATIONAL 02302000
  2637. CLC STARTIME,ZEROES ZEROES STORED IF CLOCK NOT @VA02901 02303000
  2638. * OPERATIONAL 02304000
  2639. BE CPI3 BRANCH AND ABEND VM/370, OTHERWISE RESET @VA02901 02305000
  2640. * CLOCK 02306000
  2641. CLOCKNST EQU * HERE WHEN TOD CLOCK IS NOT SET 02307000
  2642. GETDATE L R0,=A(DATEMSGL) GET LENGTH OF DATE MESSAGE HRC028DK 02308590
  2643. L R1,=A(DATEMSG) GET PTR TO DATE MESSAGE HRC028DK 02309180
  2644. CALL DMKQCNWT,PARM=NORET+NOAUTO+NOTIME 02310000
  2645. LA R0,130 SET EXPECTED INPUT COUNT 02311000
  2646. LA R1,CPIATABL GET PTR TO INPUT BUFFER 02312000
  2647. USING CPIATABL,R1 @V408246 02313000
  2648. CALL DMKQCNRD,PARM=UCASE+EDIT 02314000
  2649. C R0,F8 INPUT COUNT .EQ. 8 ? 02315000
  2650. BNE GETDATE NO 02316000
  2651. MVC TEMPSAVE(8),0(R1) MOVE INPUT TO A WORK AREA 02317000
  2652. OC TEMPSAVE(8),MASK1 VALIDITY CHECK FIELDS 02318000
  2653. XC TEMPSAVE(8),MASK2 ... 02319000
  2654. BNZ GETDATE ERROR IF NONZERO 02320000
  2655. PACK MONTH(2),0(3,R1) GET MONTH 02321000
  2656. CLI MONTH,X'12' MONTH .GT. 12 ? 02322000
  2657. BH GETDATE YES 02323000
  2658. CLI MONTH,X'01' MONTH .LT. 1 ? @VM08554 02324000
  2659. BL GETDATE YES @VM08554 02325000
  2660. PACK DAY(2),3(3,R1) GET DAY 02326000
  2661. PACK TEMPSAVE(8),0(2,R1) PACK MONTH 02327000
  2662. CVB R2,TEMPSAVE CONVERT MONTH TO BINARY 02328000
  2663. AR R2,R2 DOUBLE FOR INDEX INTO HALFWORD TABLE 02329000
  2664. LH R2,MONTHCHK-2(R2) GET MAXIMUM NUMBER OF DAYS IN MONTH 02330000
  2665. PACK TEMPSAVE(8),3(2,R1) PACK DAY 02331000
  2666. CVB R3,TEMPSAVE CONVERT DAY TO BINARY 02332000
  2667. LTR R3,R3 DAY = ZERO @VM08554 02333000
  2668. BZ GETDATE YES @VM08554 02334000
  2669. CR R3,R2 CHECK FOR A DAY .GT. NUMBER IN MONTH 02335000
  2670. BH GETDATE ERROR 02336000
  2671. PACK YEAR(2),6(3,R1) GET YEAR 02337000
  2672. CLI MONTH,X'02' FEBRUARY ? 02338000
  2673. BNE GETCLOCK NO 02339000
  2674. CLI DAY,X'29' 29TH ? 02340000
  2675. BL GETCLOCK NO 02341000
  2676. PACK TEMPSAVE(8),6(2,R1) PACK YEAR 02342000
  2677. CVB R2,TEMPSAVE CONVERT YEAR TO BINARY 02343000
  2678. ST R2,TEMPSAVE SAVE 02344000
  2679. TM TEMPSAVE+3,X'03' A MULTIPLE OF 4 ? 02345000
  2680. BNZ GETDATE NO -- ERROR 02346000
  2681. DROP R1 @V408246 02347000
  2682. EJECT 02348000
  2683. GETCLOCK L R0,=A(CMSGL) GET LENGTH OF CLOCK MESSAGE HRC028DK 02349590
  2684. L R1,=A(CMSG) GET PTR TO CLOCK MESSAGE HRC028DK 02350180
  2685. CALL DMKQCNWT,PARM=NOTIME+NORET+NOAUTO 02351000
  2686. LA R0,130 SET EXPECTED INPUT COUNT 02352000
  2687. LA R1,CPIATABL GET PTR TO INPUT BUFFER 02353000
  2688. USING CPIATABL,R1 ALSO USE FOR ADDRESSING FURTHER @V408246 02354000
  2689. * ON 02355000
  2690. CALL DMKQCNRD,PARM=UCASE+EDIT 02356000
  2691. C R0,F8 INPUT COUNT .EQ. 8 ? 02357000
  2692. BNE GETCLOCK NO 02358000
  2693. MVC TEMPSAVE(8),0(R1) MOVE INPUT TO A WORK AREA 02359000
  2694. OC TEMPSAVE(8),MASK1 VALIDITY CHECK FIELDS 02360000
  2695. XC TEMPSAVE(8),MASK3 ... 02361000
  2696. BNZ GETCLOCK ERROR IF NONZERO 02362000
  2697. PACK HOUR(2),0(3,R1) GET HOUR 02363000
  2698. CLI HOUR,X'23' HOUR .GT. 23 ? 02364000
  2699. BH GETCLOCK YES 02365000
  2700. PACK MIN(2),3(3,R1) GET MINUTES 02366000
  2701. CLI MIN,X'59' MINUTES .GT. 59 ? 02367000
  2702. BH GETCLOCK YES 02368000
  2703. PACK SEC(2),6(3,R1) GET SECONDS 02369000
  2704. CLI SEC,X'59' SECONDS .GT. 59 ? 02370000
  2705. BH GETCLOCK YES 02371000
  2706. SLR R0,R0 CLEAR 02372000
  2707. MVC CVTWORD(8),=PL8'0' 02373000
  2708. MVO CVTWORD,MONTH(3) PUT DATE INTO PACKED DECIMAL 02374000
  2709. LR R4,R0 GET ZEROS 02375000
  2710. CVB R5,CVTWORD 010100 < R5 < 123199 02376000
  2711. LA R15,100 MAX YEARS IN 2 LOW DECIMAL DIGITS 02377000
  2712. DR R4,R15 0000 < R4 < 0099 *02378000
  2713. 0101 < R5 < 1231 02379000
  2714. LA R7,50 02380000
  2715. CLR R4,R7 YEAR .GT. 50 ? 02381000
  2716. BNL *+6 YES -- 20TH CENTURY 02382000
  2717. ALR R4,R15 NO -- 21ST CENTURY 02383000
  2718. LA R7,365 02384000
  2719. MR R6,R4 R7 = NUM DAYS TO JAN 1 (EXCEPT LEAPS) 02385000
  2720. LR R9,R4 02386000
  2721. BCTR R9,0 ADJUST TO COUNT LEAP YEAR DAYS 02387000
  2722. LR R8,R0 02388000
  2723. LA R6,4 02389000
  2724. DR R8,R6 R9 = NUMBER OF LEAP DAYS IN PAST YEARS 02390000
  2725. ALR R7,R9 02391000
  2726. LA R6,3 02392000
  2727. CLR R6,R8 REMAINDER .EQ. 4 ? 02393000
  2728. BNE NOTLEAP NO 02394000
  2729. LA R6,300 02395000
  2730. CLR R6,R5 AFTER FEB IN LEAP YEAR ? 02396000
  2731. BH NOTLEAP NO 02397000
  2732. LA R7,1(,R7) ADD AN EXTRA DAY 02398000
  2733. NOTLEAP LR R4,R0 02399000
  2734. DR R4,R15 0001 < R4 < 0031 *02400000
  2735. 0001 < R5 < 0012 02401000
  2736. ALR R5,R5 DOUBLE R5 FOR INDEXING HALFWORD TABLE 02402000
  2737. LH R8,MONTHTBL-2(R5) PICK UP DAYS OF MONTHS PAST 02403000
  2738. ALR R8,R4 ADD DATE OF CURRENT MONTH 02404000
  2739. ALR R7,R8 ADD JULIAN DAY ON NON-LEAP YEAR 02405000
  2740. BCTR R7,0 DAY 1 OF MONTH = 0TH DAY 02406000
  2741. SPACE 02407000
  2742. MVO CVTWORD,HOUR(3) PUT HOURS INTO PACKED DECIMAL 02408000
  2743. LR R4,R0 02409000
  2744. CVB R5,CVTWORD 000000 < R5 < 235959 02410000
  2745. DR R4,R15 0000 < R4 < 0059 (SEC) *02411000
  2746. 0000 < R5 < 2359 02412000
  2747. DROP R1 FINISHED WITH EXTENDED @V408246 02413000
  2748. * ADDRESSABILITY 02414000
  2749. LR R8,R4 02415000
  2750. LR R4,R0 02416000
  2751. DR R4,R15 0000 < R4 < 0059 (MIN) *02417000
  2752. 0000 < R5 < 0023 (HOURS) 02418000
  2753. L R15,=A(DMKSYSTZ) GET PTR TO TIME ZONE CORRECTION 02419000
  2754. S R8,0(,R15) ADJUST SEC TO INCLUDE GMT DIFFERENCE 02420000
  2755. SRDA R8,32 MAKE RESULT A DOUBLE PRECISION INTEGER 02421000
  2756. LR R3,R4 SAVE MINUTES 02422000
  2757. LA R6,60 02423000
  2758. MR R4,R6 CONVERT HOURS TO MINUTES 02424000
  2759. ALR R5,R3 02425000
  2760. MR R4,R6 MINUTES TO SECONDS 02426000
  2761. ALR R5,R9 ADD IN SECONDS 02427000
  2762. BC 12,*+8 ... 02428000
  2763. AL R4,F1 ... 02429000
  2764. ALR R4,R8 ... 02430000
  2765. L R3,=F'86400' GET NUMBER OF SECONDS PER DAY 02431000
  2766. MR R6,R3 R6 - R7 TOTAL SECONDS IN PAST DAYS 02432000
  2767. ALR R6,R4 ADD IN SECONDS FOR THIS DAY 02433000
  2768. ALR R7,R5 ... 02434000
  2769. BC 12,*+8 ... 02435000
  2770. LA R6,1(,R6) R6 - R7 TOTAL SECONDS SINCE START 02436000
  2771. SLDL R6,1 02437000
  2772. SRL R7,1 MAKE LOW 31 BITS POSITIVE 02438000
  2773. LR R5,R6 REMEMBER HIGH 33 BITS 02439000
  2774. L R8,=F'500000' GET NUMBER OF MICROSECONDS PER HALF SECOND 02440000
  2775. MR R4,R8 RESULTANT PORTION OF HIGH 31 BITS 02441000
  2776. ALR R8,R8 DOUBLE MULTIPLIER 02442000
  2777. MR R6,R8 RESULTANT LOW 32 BITS 02443000
  2778. ALR R6,R5 RESULTANT HIGH 32 BITS 02444000
  2779. SLDL R6,12 SHIFT TO POSITION 02445000
  2780. STM R6,R7,STARTIME 02446000
  2781. SPACE 02447000
  2782. LA R1,SETMSG MESSAGE FOR 'TOD ENABLE' SWITCH @V200829 02448000
  2783. LA R0,SETMSGL ...LENGTH @V200829 02449000
  2784. CALL DMKQCNWT,PARM=NOTIME SEND MESSAGE, WAIT @V200829 02450000
  2785. SPACE 02451000
  2786. SCK STARTIME SET TOD CLOCK 02452000
  2787. BC 4,*-4 CC=1, CLOCK SECURE 02453000
  2788. BC 8,CLOCKSET CC=0, CLOCK SET 02454000
  2789. B CPI3 CLOCK NOT WORKING GO TO ABEND 3 02455000
  2790. SPACE 3 02456000
  2791. CLOCKSET EQU * HERE WHEN TOD CLOCK IS SET 02457000
  2792. STCK STARTIME GUARD AGAINST VIRTUAL CP @VA05563 02458000
  2793. L R1,=A(DMKPAGST) SAVE INITIAL VALUE IN PAG TOO 02459000
  2794. MVC 0(8,R1),STARTIME ... 02460000
  2795. LM R0,R1,STARTIME GET TOD CLOCK VALUE 02461000
  2796. SRDL R0,12 CONVERT TO MICROSECONDS 02462000
  2797. D R0,=F'8000000' GET NUMBER OF SECONDS BY THE FOLLOWING 02463000
  2798. LR R3,R0 DOUBLE PRECISION DIVISION: 02464000
  2799. SLR R2,R2 X/Y=8*(X/(8*Y))+MOD(X,8*Y)/Y 02465000
  2800. D R2,=F'1000000' WHERE X = NUMBER OF MICROSECONDS SINCE 02466000
  2801. SLR R0,R0 EPOCH 02467000
  2802. SLDL R0,3 Y = 1000000 02468000
  2803. ALR R1,R3 ... 02469000
  2804. BC 12,*+8 ... 02470000
  2805. A R0,F1 R0 - R1 = NUMBER OF SECONDS SINCE EPOCH 02471000
  2806. D R0,=F'86400' R1 = NUMBER OF DAYS SINCE EPOCH *02472000
  2807. R0 = NUMBER OF SECONDS PAST MIDNIGHT 02473000
  2808. L R15,=A(DMKSYSTZ) GET PTR TO TIME ZONE CORRECTION 02474000
  2809. A R0,0(,R15) ADJUST SEC TO INCLUDE GMT DIFFERENCE 02475000
  2810. BNM *+10 BRANCH IF RESULT .GE. ZERO 02476000
  2811. A R0,=F'86400' ADD A DAYS WORTH OF SECONDS 02477000
  2812. BCTR R1,0 AND SUBTRACT A DAY 02478000
  2813. C R0,=F'86400' SEC .LT. 1 DAY ? 02479000
  2814. BL *+12 YES 02480000
  2815. S R0,=F'86400' SUBTRACT A DAYS WORTH OF SECONDS 02481000
  2816. A R1,F1 AND ADD A DAY 02482000
  2817. LR R5,R0 02483000
  2818. M R4,=F'1000000' MULTIPLY CORRECTED SECONDS BY 1000000 02484000
  2819. ALR R5,R2 ADD REMAINDER FROM FIRST DIVISION 02485000
  2820. BC 12,*+8 ... 02486000
  2821. A R4,F1 ... 02487000
  2822. SLDL R4,12 02488000
  2823. LM R14,R15,STARTIME GET INITIAL TOD CLOCK VALUE 02489000
  2824. SLR R15,R5 - NUMBER OF SECONDS INTO THE DAY 02490000
  2825. BC 11,*+8 ... 02491000
  2826. SL R14,F1 ... 02492000
  2827. SLR R14,R4 ... 02493000
  2828. STM R14,R15,TODATE RESULT IS TOD CLOCK VALUE AT MIDNIGHT *02494000
  2829. TODAY LOCAL TIME 02495000
  2830. L R15,CPIDMPTD ADDRESS TO STORE TODATE FOR DUMP @V407595 02496000
  2831. MVC 0(L8,R15),TODATE SAVE TODATE FOR DMKDMP @V407595 02497000
  2832. SPACE 02498000
  2833. LA R3,365 02499000
  2834. CR R1,R3 IS DAYS .LT. 365 ? 02500000
  2835. BNL NOT1900 NO 02501000
  2836. LR R6,R1 GET NUMBER OF DAYS HERE 02502000
  2837. SLR R1,R1 INDICATE YEAR = 00 02503000
  2838. B YEARSET 02504000
  2839. SPACE 02505000
  2840. NOT1900 EQU * HERE IF YEAR IS GREATER THAN 1900 02506000
  2841. SR R1,R3 SUBTRACT THE YEAR 1900 OUT 02507000
  2842. SLR R0,R0 CLEAR FOR DIVIDE 02508000
  2843. D R0,=A(4*365+1) DIVIDE BY THE NUMBER OF DAYS IN 4 YEARS 02509000
  2844. LR R7,R0 R7 = NUMBER OF DAYS SINCE LAST LEAP 02510000
  2845. SLR R6,R6 02511000
  2846. DR R6,R3 02512000
  2847. A R6,F1 R6 = NUMBER OF DAYS SINCE START OF YEAR 02513000
  2848. C R7,F4 EXACTLY A MULTIPLE OF 4 YEARS ? 02514000
  2849. BNE NOTQUAD NO 02515000
  2850. AR R6,R3 SET DAY .EQ. 366 02516000
  2851. L R7,F3 ... 02517000
  2852. SPACE 1 02518000
  2853. NOTQUAD EQU * 02519000
  2854. ALR R1,R1 02520000
  2855. ALR R1,R1 02521000
  2856. A R1,F1 02522000
  2857. AR R1,R7 02523000
  2858. SPACE 02524000
  2859. YEARSET EQU * HERE WHEN YEAR HAS BEEN DETERMINED 02525000
  2860. CVD R1,TEMPSAVE CONVERT DATE TO DECIMAL 02526000
  2861. UNPK DATE+6(2),TEMPSAVE+6(2) UNPACK AND 02527000
  2862. OI DATE+7,X'F0' FORMAT IT 02528000
  2863. SPACE 02529000
  2864. * HERE TO SET WEEKDAY 02530000
  2865. SLR R2,R2 CLEAR 02531000
  2866. LR R14,R2 02532000
  2867. LR R3,R1 GET YEAR 02533000
  2868. BCTR R3,0 YEAR-1 02534000
  2869. LR R15,R3 YEAR-1 02535000
  2870. SRL R15,2 (YEAR-1)/4 02536000
  2871. N R3,F3 (YEAR-1) MOD 4 02537000
  2872. MH R15,F5+2 ((YEAR-1)/4)*5) 02538000
  2873. AR R15,R3 ((YEAR-1)/4)*5)+(YEAR-1) MOD 4 02539000
  2874. AR R15,R6 ((YEAR-1)/4)*5)+(YEAR-1) MOD 4 + DAYS 02540000
  2875. D R14,F7 DIVIDE BY 7 02541000
  2876. MH R14,=H'11' INDEX INTO TABLE 02542000
  2877. LA R14,CPITODAY(R14) ... 02543000
  2878. L R15,=A(DMKSYSDW) GET PTR TO WEEKDAY CONSTANT 02544000
  2879. MVC 0(11,R15),0(R14) PLACE IN DMKSYS 02545000
  2880. SPACE 1 02546000
  2881. * HERE TO CONVERT JULIAN DATE TO GREGORIAN 02547000
  2882. SPACE 1 02548000
  2883. * THE FOLLOWING ALGORITHM TO CONVERT A JULIAN DATE TO GREGORIAN WAS 02549000
  2884. * ADOPTED FROM AN ALGORITHM ENTITLED "TABLELESS DATE CONVERSION" 02550000
  2885. * APPEARING IN "COMMUNICATIONS OF THE ACM", VOLUME 13, NUMBER 10, 02551000
  2886. * OCTOBER 1970, P. 621, BY RICHARD A. STONE, WESTERN ELECTRIC COMPANY, 02552000
  2887. * P.O. BOX 900, PRINCETON, NJ 08540. 02553000
  2888. N R1,F3 YEAR MOD 4 02554000
  2889. BNZ *+8 BRANCH IF NOT A LEAP YEAR 02555000
  2890. LA R2,1 GET GREGORIAN DATE FROM JULIAN 02556000
  2891. LA R1,59(,R2) ... 02557000
  2892. CR R6,R1 ... 02558000
  2893. BNH *+10 ... 02559000
  2894. A R6,F2 ... 02560000
  2895. SR R6,R2 ... 02561000
  2896. A R6,=F'91' ... 02562000
  2897. LR R9,R6 ... 02563000
  2898. M R8,=F'100' ... 02564000
  2899. D R8,=F'3055' ... 02565000
  2900. LR R15,R9 ... 02566000
  2901. M R14,=F'3055' ... 02567000
  2902. D R14,=F'100' ... 02568000
  2903. SR R6,R15 ... 02569000
  2904. BCTR R9,0 ... 02570000
  2905. BCTR R9,0 ... 02571000
  2906. CVD R6,TEMPSAVE CONVERT DAY TO DECIMAL 02572000
  2907. UNPK DATE+3(2),TEMPSAVE+6(2) UNPACK AND 02573000
  2908. OI DATE+4,X'F0' FORMAT IT 02574000
  2909. MVI DATE+5,C'/' 02575000
  2910. CVD R9,TEMPSAVE CONVERT MONTH TO DECIMAL 02576000
  2911. UNPK DATE(2),TEMPSAVE+6(2) UNPACK AND 02577000
  2912. OI DATE+1,X'F0' FORMAT IT 02578000
  2913. MVI DATE+2,C'/' 02579000
  2914. L R15,CPIDMPDT ADDRESS TO STORE DATE FOR DMKDMP @V407595 02580000
  2915. MVC 0(L8,R15),DATE SAVE DATE FOR DUMP @V407595 02581000
  2916. SPACE 1 02582000
  2917. MVC CPIATABL(4),=C'Now ' FORMAT TIME MESSAGE HRC202DK 02585490
  2918. LA R2,CPIATABL+4 TIME GOES HERE 02586000
  2919. MVI CPIATABL+12,C' ' BLANK AFTER TIME 02587000
  2920. L R15,=A(DMKSYSTI) GET TIME ZONE IDENTIFIER 02588000
  2921. MVC CPIATABL+13(3),0(R15) PLACE IN MESSAGE 02589000
  2922. MVI CPIATABL+16,C' ' BLANK AFTER TIME ZONE IDENTIFIER 02590000
  2923. L R15,=A(DMKSYSDW) GET WEEKDAY 02591000
  2924. MVC CPIATABL+17(9),2(R15) MOVE WEEKDAY TO MESSAGE 02592000
  2925. SLR R1,R1 CLEAR 02593000
  2926. IC R1,1(,R15) GET CURRENT WEEKDAY LENGTH 02594000
  2927. LA R1,CPIATABL+18(R1) SET PTR TO CHAR AFTER WEEKDAY 02595000
  2928. MVI 0(R1),C' ' BLANK AFTER WEEKDAY 02596000
  2929. LA R1,1(,R1) DATE GOES HERE 02597000
  2930. CALL DMKCVTDT GET TIME AND DATE 02598000
  2931. LA R0,8(,R1) GET PTR TO END OF MESSAGE 02599000
  2932. LA R1,CPIATABL GET PTR TO START OF MESSAGE 02600000
  2933. SLR R0,R1 GET MESSAGE LENGTH 02601000
  2934. STH R0,CPIATABL+130 SAVE THIS LENGTH HRC019DK 02601100
  2935. MVC CPIATABL+133(40),CPIATABL SET ASIDE MOMENTARILY HRC019DK 02601200
  2936. CLC =CL4'WRM ',CPID IPL ON A WARM MACHINE? HRC019DK 02601300
  2937. BE NOTCHNG YES--DON'T ASK FOR CLOCK CHANGE. HRC019DK 02601400
  2938. XC CPABEND,CPABEND NO--ZERO ABEND CODE FOR Q CPSYS HRC019DK 02601500
  2939. CALL DMKQCNWT,PARM=NORET+NOTIME 02602000
  2940. EJECT 02603000
  2941. GETCHNG EQU * HERE TO REQUEST IF TOD CLOCK SHOULD BE CHANGED 02604000
  2942. L R1,=A(DMKSYSIP) AUTO IPL ? HRC036DK 02604100
  2943. LTR R1,R1 HRC036DK 02604200
  2944. BZ GETCHNG2 HRC036DK 02604300
  2945. TM 0(R1),CPWARM+CPCKPT+CPFORCE+CPCOLD AUTO IPL? HRC036DK 02604400
  2946. BM NOTCHNG YES, DON'T ASK HRC036DK 02604500
  2947. SPACE , HRC036DK 02604600
  2948. GETCHNG2 EQU * HRC036DK 02604700
  2949. LA R0,CHNGMSGL GET LENGTH OF CHANGE MESSAGE 02605000
  2950. LA R1,CHNGMSG GET PTR TO MESSAGE 02606000
  2951. CALL DMKQCNWT,PARM=NORET+NOTIME+NOAUTO 02607000
  2952. LA R0,130 SET EXPECTED INPUT COUNT 02608000
  2953. LA R1,CPIATABL GET PTR TO INPUT BUFFER 02609000
  2954. CALL DMKQCNRD,PARM=UCASE+EDIT 02610000
  2955. LTR R0,R0 INPUT COUNT .EQ. 0 ? 02611000
  2956. BZ NOTCHNG YES -- 02612000
  2957. CLI CPIATABL,C'Y' POSSIBLE YES ? 02613000
  2958. BNE TCHNGNO NO 02614000
  2959. C R0,F3 INPUT COUNT .GT. 3 ? 02615000
  2960. BH GETCHNG YES 02616000
  2961. LR R1,R0 GET COUNT IN GPR1 02617000
  2962. BCTR R1,0 -1 FOR EXECUTE 02618000
  2963. EX R1,YESTEST KEYWORD .EQ. YES ? 02619000
  2964. BE CLOCKNST YES -- GO SET CLOCK 02620000
  2965. B GETCHNG ERROR 02621000
  2966. SPACE 02622000
  2967. TCHNGNO EQU * HERE WHEN FIRST CHARACTER OF KEYWORD IS NOT Y 02623000
  2968. C R0,F2 INPUT COUNT .GT. 2 ? 02624000
  2969. BH GETCHNG YES 02625000
  2970. LR R1,R0 GET COUNT IN GPR1 02626000
  2971. BCTR R1,0 -1 FOR EXECUTE 02627000
  2972. EX R1,NOTEST KEYWORK .EQ. NO ? 02628000
  2973. BE NOTCHNG YES -- 02629000
  2974. B GETCHNG 02630000
  2975. EJECT 02631000
  2976. NOTCHNG EQU * 02632000
  2977. * HERE TO INITIALIZE RESPONSES TO 'QUERY CPLEVEL' CMD 02632010
  2978. LA R0,STMSGL+21 COMPUTE SIZE PLUS SOME SLOP AREA HRC019DK 02632020
  2979. AH R0,CPIATABL+130 LENGTH OF 2ND MSG HRC019DK 02632030
  2980. SRL R0,3 COMPUTE SIZE FOR FREE HRC019DK 02632040
  2981. CALL DMKFREE ALLOCATE QCP STATUS BLOCK HRC019DK 02632050
  2982. USING QCPBLOK,R1 HRC019DK 02632060
  2983. ST R1,QCPSTAT SAVE ITS ADDRESS IN PSA HRC019DK 02632070
  2984. LA R2,STMSGL-5 LENGTH OF FIRST MSG HRC019DK 02632080
  2985. LA R3,QCPBUF ADDRESS OF FIRST MSG HRC019DK 02632090
  2986. STM R2,R3,QCPMSG1 SAVE IN QCPBLOK HRC019DK 02632100
  2987. BCT R2,*+10 MOVE IN THE FIRST MSG HRC019DK 02632110
  2988. MVC 0(*-*,R3),STMSG+3 ... HRC019DK 02632120
  2989. EX R2,*-6 ... HRC019DK 02632130
  2990. LA R3,1(R2,R3) COMPUTE 2ND MSG ADDR HRC019DK 02632140
  2991. LH R2,CPIATABL+130 GET LENGTH OF 2ND MSG HRC019DK 02632150
  2992. AL R2,F3 MAKE MSG 3 BYTES LONGER HRC019DK 02632160
  2993. STM R2,R3,QCPMSG2 SAVE IN QCPBLOK HRC019DK 02632170
  2994. BCT R2,*+10 MOVE IN THE 2ND MSG HRC019DK 02632180
  2995. MVC 0(*-*,R3),CPIATABL+130 ... HRC019DK 02632190
  2996. EX R2,*-6 ... HRC019DK 02632200
  2997. MVC 0(6,R3),=C'IPL at' ALTER SLIGHTLY FOR QUERY HRC202DK 02632215
  2998. DROP R1 HRC019DK 02632220
  2999. EJECT , HRC019DK 02632230
  3000. LM R4,R5,TODATE GET TOD CLOCK VALUE AT MIDNIGHT THIS *02633000
  3001. MORNING 02634000
  3002. AL R5,TOD24HR+4 ADD 24 HOUR TOD CLOCK VALUE 02635000
  3003. BC 12,*+8 ... 02636000
  3004. AL R4,F1 ... 02637000
  3005. AL R4,TOD24HR ... 02638000
  3006. LA R0,TRQBSIZE GET TIMER REQUEST BLOCK SIZE 02639000
  3007. CALL DMKFREE GET TRQBLOK 02640000
  3008. LR R2,R1 02641000
  3009. USING TRQBLOK,R2 02642000
  3010. XC TRQBLOK(TRQBSIZE*8),TRQBLOK CLEAR 02643000
  3011. MVC TRQBUSER,ASYSVM MARK USER AS SYSTEM 02644000
  3012. MVC TRQBIRA,=A(DMKSCHMD) SET IRA 02645000
  3013. STM R4,R5,TRQBVAL SET VALUE AT MIDNIGHT TONIGHT 02646000
  3014. CALL DMKSCHST SCHEDULE TIMER REQUEST 02647000
  3015. DROP R2 02648000
  3016. SPACE 02649000
  3017. *. 02650000
  3018. * INITIATE TIMER INTERRUPTS EVERY 30 SECONDS TO GIVE CONTROL 02651000
  3019. * TO A ROUTINE IN THE SCHEDULER (DMKSCHTI) WHICH WILL MAINTAIN 02652000
  3020. * A SMOOTHED MEASURE OF CPU UTILIZATION 02653000
  3021. *. 02654000
  3022. LA R0,TRQBSIZE GET TRB SIZE @V2B2638 02655000
  3023. CALL DMKFREE GET STORAGE FOR TRB @V2B2638 02656000
  3024. LR R2,R1 SAVE ADDRESS IN R2 @V2B2638 02657000
  3025. USING TRQBLOK,R2 @V2B2638 02658000
  3026. XC TRQBLOK(TRQBSIZE*8),TRQBLOK CLEAR IT @V2B2638 02659000
  3027. MVC TRQBUSER,ASYSVM CHARGE TIME TO SYSTEM @V2B2638 02660000
  3028. L R3,=A(DMKSCHTI) ADDRESS OF ROUTINE TO RECEIVE @V2B2638 02661000
  3029. * CON 02662000
  3030. ST R3,TRQBIRA INTO TRB WE GO @V2B2638 02663000
  3031. STCK TRQBTOD INITIALIZE TOD @V2B2638 02664000
  3032. L R5,=A(DMKSCHLI) LOCATION OF SAMPLE INTERVAL @V2B2638 02665000
  3033. L R5,0(R5) IN SECONDS @V2B2638 02666000
  3034. SR R4,R4 ZERO WORK REG @V2B2638 02667000
  3035. M R4,=F'1000000' INTO MICRO SECS @V2B2638 02668000
  3036. SLDL R4,12 INTO TOD FORMAT @V2B2638 02669000
  3037. AL R5,TRQBTOD+4 @V2B2638 02670000
  3038. BC 12,*+8 @V2B2638 02671000
  3039. AL R4,F1 @V2B2638 02672000
  3040. AL R4,TRQBTOD TICK...TOCK..TICK @V2B2638 02673000
  3041. STM R4,R5,TRQBVAL @V2B2638 02674000
  3042. CALL DMKSCHST SCHEDULE TRB @V2B2638 02675000
  3043. DROP R2 @V2B2638 02676000
  3044. SPACE 1 02677000
  3045. LA R0,MSG971L GET MESSAGE LENGTH HRC028DK 02677200
  3046. L R1,=A(MSG971) POINT TO MESSAGE HRC028DK 02677400
  3047. CALL DMKQCNWT,PARM=NORET+NOTIME HRC028DK 02677600
  3048. SPACE 1 02678000
  3049. * HERE TO INITIALIZE DIRECTORY 02679000
  3050. L R2,=A(DMKSYSUD) GET ADDRESS OF DIRECTORY POINTER 02680000
  3051. L R0,UDRNSTRT GET NUCLEUS DIRECTORY ADDRESS 02681000
  3052. LTR R0,R0 ANY FOUND ? 02682000
  3053. BNZ DRCTSET BRANCH IF ONE FOUND 02683000
  3054. L R0,UDRASTRT GET ALTERNATE DIRECTORY ADDRESS 02684000
  3055. LTR R0,R0 ANY FOUND ? 02685000
  3056. BNZ DRCTSET BRANCH IF ONE FOUND 02686000
  3057. ABEND 2 CAN NOT CONTINUE WITHOUT THE DIRECTORY 02687000
  3058. EJECT 02688000
  3059. DRCTSET EQU * HERE TO SAVE DIRECTORY DISK ADDRESS 02689000
  3060. ST R0,0(,R2) SAVE IN DMKSYSUD 02690000
  3061. CALL DMKUDRBV GO BUILD USER DIRECTORY PAGE LIST 02691000
  3062. * LOCK DMKCPI IN CORE UNTIL COMPLET 02692000
  3063. LR R2,R12 FIRST PAGE TO BE LOCKED @V200720 02693000
  3064. CALL DMKPTRLK . . . @V200720 02694000
  3065. LR R2,R13 SECOND PAGE TO BE LOCKED @V200720 02695000
  3066. CALL DMKPTRLK . . . @V200720 02696000
  3067. LA R2,X'FFF' LOCK THIRD PAGE ALSO @VA05046 02697000
  3068. LA R2,1(R2,R13) @VA05046 02698000
  3069. CALL DMKPTRLK @VA05046 02699000
  3070. B TIMETEST TEST FOR TIMER RUNNING @V200730 02700000
  3071. EJECT 02701000
  3072. LOGOP CALL DMKLOGOP LOGON OPERATOR @V200730 02702000
  3073. B TSTR2 SEE IF ERROR RETURNED IN R2 @V407466 02703000
  3074. DC AL4(0) SPACE HOLDER @V407466 02704000
  3075. B NOSTOR ISSUE INSUFFICIENT STORAGE MSG @V407466 02705000
  3076. TSTR2 LTR R2,R2 ANY ERRORS ENCOUNTERED? @V407466 02706000
  3077. BZ OWNEDCK NO @VM08550 02707000
  3078. SPACE 02708000
  3079. EXPLOGOP EQU * HERE TO EXPLICITLY LOGON OPERATOR 02709000
  3080. LA R0,BUFSIZE 02710000
  3081. CALL DMKFREE 02711000
  3082. LR R4,R1 SAVE BUFFER PTR HERE 02712000
  3083. USING BUFFER,R4 02713000
  3084. SPACE 1 02714000
  3085. EXPMSG EQU * HERE TO REQUEST THAT OPERATOR LOGON 02715000
  3086. LA R0,OPLGMSGL GET MESSAGE LENGTH 02716000
  3087. LA R1,OPLGMSG GET MESSAGE PTR 02717000
  3088. CALL DMKQCNWT,PARM=NORET 02718000
  3089. SLR R0,R0 02719000
  3090. CALL DMKQCNWT,PARM=NORET+NOAUTO FORCE TIME-STAMP 02720000
  3091. LA R0,130 SET EXPECTED INPUT COUNT 02721000
  3092. LA R1,BUFIN GET BUFFER PTR 02722000
  3093. CALL DMKQCNRD,PARM=UCASE+EDIT 02723000
  3094. CH R2,=H'12' FATAL LINE/TERMINAL PROBS?? @VA00853 02724000
  3095. BE CPIERR1 YES -- DIE. FORCE RE-IPL @VA00853 02725000
  3096. LTR R0,R0 INPUT COUNT .EQ. 0 ? 02726000
  3097. BZ EXPMSG YES -- REPEAT 02727000
  3098. ST R1,BUFNXT SET NEXT KEYWORD PTR FOR DMKSCN 02728000
  3099. ST R0,BUFCNT SET INPUT COUNT 02729000
  3100. CALL DMKCFMEN CALL DIAGNOSE INTERFACE 02730000
  3101. LTR R2,R2 RETURN CODE .EQ. 0 ? 02731000
  3102. BNZ EXPLOGOP NO -- GET NEW BUFFER AND REPEAT @VA00853 02732000
  3103. TM VMRSTAT,VMLOGON USER NOT LOGGED ON YET ? 02733000
  3104. BO EXPLOGOP YES @VA00853 02734000
  3105. EJECT 02735000
  3106. SPACE 2 02736000
  3107. OWNEDCK EQU * CHECK FOR CP-OWNED VOLUMES @V200820 02737000
  3108. L R4,=A(DMKSYSOC) GET SYSTEM OWNED VOL OWNED COUNT 02738000
  3109. L R4,0(,R4) ... 02739000
  3110. L R3,=A(DMKSYSOW) GET OWNED LIST PTR 02740000
  3111. USING OWNDLIST,R3 02741000
  3112. NEXTOWN LA R0,6 SET VOLUME SERIAL LENGTH TO 6 02742000
  3113. LR R1,R3 PASS VOLUME SERIAL IN R1 02743000
  3114. CALL DMKSCNVS 02744000
  3115. BZ NEXTOWN1 THIS VOLUME HAS BEEN MOUNTED 02745000
  3116. MVC NMSGVOL,OWNDVSER PLACE VOLUME SERIAL IN WNG MSG 02746000
  3117. LA R0,NMSGL GET MESSAGE LENGTH 02747000
  3118. LA R1,NMSG GET MESSAGE PTR 02748000
  3119. CALL DMKQCNWT,PARM=NORET+ALARM 02749000
  3120. NEXTOWN1 LA R3,8(,R3) GET NEXT OWNED LIST ENTRY 02750000
  3121. BCT R4,NEXTOWN 02751000
  3122. EJECT 02752000
  3123. * HERE TO PRINT DUPLICATE VOLUME SERIAL MESSAGES, IF ANY 02753000
  3124. L R4,DUPMSGPT GET DUPLICATE VOL SERIAL ANCHOR 02754000
  3125. DUPLUP EQU * 02755000
  3126. LTR R3,R4 AT END ? 02756000
  3127. BZ SYSAREAS YES HRC075DK 02757000
  3128. L R0,4(,R3) MSG LENGTH @V407466 02758000
  3129. LA R1,8(,R3) POINT TO MSG @V407466 02759000
  3130. CALL DMKQCNWT,PARM=NORET 02760000
  3131. L R1,4(,R3) MSG LENGTH @V407466 02761000
  3132. LA R0,15(,R1) ACCOUNT FOR 2 EXTRA FIELDS & DW. @V407466 02762000
  3133. SRL R0,3 CHANGE TO DOUBLEWORDS @V407466 02763000
  3134. LR R1,R3 02764000
  3135. L R4,0(,R3) GET NEXT MESSAGE 02765000
  3136. CALL DMKFRET RETURN BUFFER TO FREE STORAGE 02766000
  3137. B DUPLUP 02767000
  3138. * 02767100
  3139. SYSAREAS EQU * GET DEVICE CUU OF ERR,WRM,CKP HRC075DK 02767120
  3140. L R2,=A(DMKSYSER) -> ERROR RECORDING AREA INFO HRC075DK 02767140
  3141. LA R4,=CL6'SYSERR' INDICATE ERR AREA CYLINDERS HRC075DK 02767160
  3142. BAL R3,LVOL GO LOCATE VOLUME AND CUU HRC075DK 02767180
  3143. L R2,=A(DMKSYSWM) -> WARM START AREA INFO HRC075DK 02767200
  3144. LA R4,=CL6'SYSWRM' INDICATE WRM AREA CYLINDERS HRC075DK 02767220
  3145. BAL R3,LVOL GO LOCATE VOLUME AND CUU HRC075DK 02767240
  3146. L R2,=A(DMKSYSCH) -> CHECKPOINT AREA INFO HRC075DK 02767260
  3147. LA R4,=CL6'SYSCKP' INDICATE CKP AREA CYLINDERS HRC075DK 02767280
  3148. BAL R3,LVOL GO LOCATE VOLUME AND CUU HRC075DK 02767300
  3149. B MEMCK ALL REQ'D VOLUMES LOCATED HRC075DK 02767320
  3150. * HRC075DK 02767340
  3151. LVOL EQU * HRC075DK 02767360
  3152. CLC 4(2,R2),ZEROES IS DEV ADDR FILLED IN? HRC075DK 02767380
  3153. BNER R3 YES, ON TO NEXT AREA HRC075DK 02767400
  3154. LA R0,6 LENGTH OF VOLSER HRC075DK 02767420
  3155. LA R1,8(,R2) -> NAME OF VOLUME HRC075DK 02767440
  3156. CALL DMKSCNVS GET THE RDEVBLOK HRC075DK 02767460
  3157. BNZ NOTHERE THIS VOLUME NOT FOUND; REQUIRED HRC075DK 02767480
  3158. LR R8,R1 RDEVBLOK PTR TO R8 HRC075DK 02767500
  3159. CALL DMKSCNRD GET THE CUU OF RDEVBLOK DEVICE HRC075DK 02767520
  3160. STH R1,4(,R2) SAVE CUU AT DMKSYSER+4 (DEV ADDR)HRC075DK 02767540
  3161. MVC 6(2,R2),RDEVTYPC SAVE DEVTYPE AT DMKSYSER+6 HRC075DK 02767560
  3162. BR R3 RETURN HRC075DK 02767580
  3163. * HRC075DK 02767600
  3164. NOTHERE EQU * HRC075DK 02767620
  3165. MVC NMSGVOL,8(R2) PLUG VOLID TO MSG HRC075DK 02767640
  3166. MVC NMCYLS,0(R4) MOVE TYPE OF CYLS NEEDED HRC075DK 02767660
  3167. MVI NMSGNL,C';' REPLACE NEWLINE WITH SEMI HRC075DK 02767680
  3168. MVI NMSG+10,C'E' CHANGE 951I MSG TEXT TO ERROR LVLHRC075DK 02767700
  3169. LA R0,NMSGLREQ LENGTH OF VOLID REQUIRED MSG HRC075DK 02767720
  3170. LA R1,NMSG -> DMKCPI951E VOLID NOT MOUNTED HRC075DK 02767740
  3171. CALL DMKQCNWT,PARM=ALARM HRC075DK 02767760
  3172. LPSW XWAIT9 LOAD DISABLED WAIT 9 HRC075DK 02767780
  3173. SPACE 3 02768000
  3174. MEMCK EQU * VERIFY THAT ALL OF MAIN MEMORY IS AVAILABLE 02769000
  3175. L R1,=A(DMKSYSRM) GET ACTUAL SIZE OF MEMORY 02770000
  3176. L R1,0(,R1) ... 02771000
  3177. L R15,=A(DMKSYSRV) GET SYSGEN SPECIFIED VALUE 02772000
  3178. C R1,0(,R15) COMPARE 02773000
  3179. BE MAPMSG OK, GIVE STORAGE MAP MSG @V396414 02774000
  3180. BL *+8 LOW, USE ACTUAL MAIN STORAGE VALUE 02775000
  3181. L R1,0(,R15) HIGH, USE LIMITING SYSGEN VALUE 02776000
  3182. SRL R1,10 /1024 02777000
  3183. CALL DMKCVTBD CONVERT TO DECIMAL 02778000
  3184. STC R0,CORSMSG SAVE HIGH ORDER DIGIT OF SIZE @VA11619 02779100
  3185. STCM R1,B'1111',CORSMSG+1 SAVE THE REST @VA11619 02779200
  3186. LA R0,CORMSGL GET MESSAGE LENGTH 02780000
  3187. LA R1,CORMSG GET MESSAGE PTR 02781000
  3188. CALL DMKQCNWT,PARM=NORET 02782000
  3189. B MAPMSG GO GIVE STORAGE MAP MSG @V396414 02783000
  3190. EJECT 02784000
  3191. TIMETEST EQU * HERE TO VERIFY THAT THE INTERVAL TIMER IS RUNNING 02785000
  3192. L R4,TIMER GET CURRENT VALUE OF TIMER 02786000
  3193. TLOOP1 L R0,=F'40000' FIX FOR FASTER PROCESSORS HRC008DK 02787490
  3194. STIDP CPUID FORCE A TRIP THROUGH THE @VA02179 02788000
  3195. * DISPATCHER 02789000
  3196. TLOOP C R4,TIMER SEE IF TIMER IS CHANGING 02790000
  3197. BNE TIMERON NO, ISSUE WARNING MSG 02791000
  3198. BCT R0,TLOOP 02792000
  3199. TM CPIFLAG1,CPIAP IS THE APU TO BE ACTIVATED ? @V407595 02793000
  3200. BNO NOMPMSG NO - DO NOT INCLUDE MAIN PROC @V407595 02794000
  3201. * IN INTERVAL TIMER MSG. 02795000
  3202. L R1,=A(TMSGMP) GET MSG PTR. HRC028DK 02796590
  3203. L R0,=A(TMSGMPL) GET MSG LENGTH. HRC028DK 02797180
  3204. CALL DMKQCNWT,PARM=0 ISSUE WARNING MSG. @V407595 02798000
  3205. B TLOOP1 GO CHECK AGAIN. @V407595 02799000
  3206. NOMPMSG EQU * @V407595 02800000
  3207. L R1,=A(TMSG) GET MESSAGE PTR HRC028DK 02801590
  3208. L R0,=A(TMSGL) GET MESSAGE LENGTH HRC028DK 02802180
  3209. CALL DMKQCNWT,PARM=0 02803000
  3210. B TLOOP1 GO CHECK AGAIN @VA02179 02804000
  3211. SPACE 02805000
  3212. TIMERON EQU * CHECK CP AND CP ASSIST LEVELS 02806000
  3213. * IF CP ASSIST WAS AVAILABLE ON THE MACHINE, BUT IT IS THE WRONG 02807000
  3214. * LEVEL, WE SHOULD SEND A MESSAGE. 02807400
  3215. TM CPSTAT2,CPASTAVL+CPASTON CHECK AVAIL. BITS @VA14280 02807800
  3216. BNM WARMTEST ALL IS OK, NO MESSAGE 02808200
  3217. NI CPSTAT2,255-CPASTAVL TURN IT OFF NOW 02808600
  3218. L R2,=A(DMKCPEML) GET ADDRESS OF LEVEL NUMBER @V3M4026 02809000
  3219. L R1,0(,R2) GET ASSIST LEVEL NO. FOR CONVERT @V3M4026 02824000
  3220. CALL DMKCVTBD CONVERT CP ASSIST LEVEL TO DEC. @V386198 02825000
  3221. STCM R1,15,CPALVLNO PUT NUMBER INTO MESSAGE TEXT @V386198 02826000
  3222. LA R0,CPAMSGL LENGTH OF WARNING MESSAGE @V386198 02827000
  3223. LA R1,CPAMSG ADDRESS OF MSG @V386198 02828000
  3224. CALL DMKQCNWT,PARM=NOTIME+NORET+ALARM -TELL OPERATOR @V386198 02829000
  3225. SPACE 02830000
  3226. WARMTEST EQU * HERE TO CHECK FOR TYPE OF START 02831000
  3227. MVI WARMFLAG,X'00' CLEAR FLAG BYTE HRC036DK 02831500
  3228. OI WARMCOLD,WARMAUTO AUTO-WARM START IF CPID=WRM @V200829 02832000
  3229. CLC =CL4'WRM ',CPID WARM MACHINE AFTER RESTART ? 02833000
  3230. BE AUTOWRM YES 02834000
  3231. L R15,=A(DMKSYSIP) GET INITIAL START TYPE HRC036DK 02834100
  3232. LTR R15,R15 IS IT SPECIFIED ? HRC036DK 02834200
  3233. BZ RETRY NO, CONTINUE HRC036DK 02834300
  3234. TM 0(R15),CPWARM+CPCKPT+CPFORCE+CPCOLD AUTO IPL? HRC036DK 02834400
  3235. BNM RETRY NO, CONTINUE HRC036DK 02834500
  3236. MVC WARMCOLD,0(R15) MOVE TO STARTUP FLAG HRC036DK 02834600
  3237. MVI 0(R15),0 RESET FLAG HRC036DK 02834700
  3238. B AUTOWRM HRC036DK 02834800
  3239. SPACE 1 02835000
  3240. RETRY EQU * 02836000
  3241. MVI WARMFLAG,X'00' CLEAR FLAG BYTE HRC036DK 02836500
  3242. MVI WARMCOLD,X'00' CLEAR FLAG BYTE HRC036DK 02837000
  3243. L R0,=A(AWARML) GET MESSAGE LENGTH HRC028DK 02837690
  3244. L R1,=A(AWARM) GET MESSAGE PTR HRC028DK 02838380
  3245. CALL DMKQCNWT,PARM=NORET+NOAUTO+NOTIME HRC028DK 02839070
  3246. SPACE 1 02840000
  3247. LA R0,130 SET EXPECTED INPUT COUNT 02841000
  3248. LA R1,CPIATABL GET PTR TO INPUT BUFFER 02842000
  3249. CALL DMKQCNRD,PARM=UCASE+EDIT 02843000
  3250. LR R4,R0 GET INPUT COUNT 02844000
  3251. LA R4,0(R4,R1) GET END OF LAST CHARACTER TYPED IN 02845000
  3252. MVI 0(R4),C' ' INSURE THAT BLANK WILL BE FOUND 02846000
  3253. LR R3,R1 GET INPUT BUFFER PTR 02847000
  3254. GETARG CR R3,R4 AT END OF STRING? 02849000
  3255. BNL PROEND YES 02850000
  3256. CLI 0(R3),C' ' ELIMINATE PRECEEDING BLANKS 02851000
  3257. LA R3,1(,R3) ... 02852000
  3258. BE GETARG ... 02853000
  3259. BCTR R3,0 02854000
  3260. LR R5,R3 GET PTR TO START OF KEYWORD 02855000
  3261. LA R5,1(,R5) BUMP PTR 02856000
  3262. CLI 0(R5),C' ' SEARCH FOR END OF KEYWORD 02857000
  3263. BNE *-8 ... 02858000
  3264. SR R5,R3 GET KEYWORD LENGTH 02859000
  3265. BCTR R5,0 -1 FOR EXECUTE 02860000
  3266. C R5,F8 KEYWORD .GT. 7 ? 02861000
  3267. BNL RETRY NO 02862000
  3268. LM R7,R9,=A(WSKYTAB,12,WSKYTABE) GET CONSTANTS 02863000
  3269. EX R5,KEYCOMP KEYWORD .EQ. KEYWORD IN TABLE ? 02864000
  3270. BE KEYFOUND YES 02865000
  3271. BXLE R7,R8,*-8 LOOP THROUGH EACH ENTRY IN THE TABLE 02866000
  3272. B RETRY 02867000
  3273. SPACE 1 02868000
  3274. KEYFOUND EQU * HERE WHEN A VALID KEYWORD IS FOUND 02869000
  3275. CH R5,10(,R7) CHECK FOR MINIMUM KEYWORD LENGTH 02870000
  3276. BL RETRY ... HRC028DK 02871190
  3277. LA R6,WSKYFLG2 GET THE ADDR OF FLG2 OPTIONS HRC028DK 02871380
  3278. CR R7,R6 IS THE A FLG2 OPTION? HRC028DK 02871570
  3279. BNL KEY2FND YES, CONTINUE HRC028DK 02871760
  3280. IC R6,9(,R7) GET CONFLICT TEST BYTE 02872000
  3281. EX R6,KEYCONFL CONFLICT TEST 02873000
  3282. BNZ RETRY BRANCH IF KEYWORDS IN CONFLICT 02874000
  3283. IC R6,8(,R7) GET FLAGS 02875000
  3284. EX R6,KEYSET TURN ON KEYWORD FLAG 02876000
  3285. KEYCONT EQU * HRC028DK 02876500
  3286. LA R3,1(R3,R5) SKIP OVER THIS KEYWORD 02877000
  3287. B GETARG RESTART SCAN 02878000
  3288. KEY2FND EQU * HRC028DK 02878100
  3289. OI WARMCOLD,OTHERFLG TURN ON THE OTHER FLG HRC028DK 02878200
  3290. IC R6,8(,R7) GET FLAG BYTE HRC028DK 02878300
  3291. EX R6,KEYSET2 SET IT ON HRC028DK 02878400
  3292. B KEYCONT CONTINUE PROCESSING HRC028DK 02878500
  3293. SPACE 1 02879000
  3294. PROEND EQU * 02880000
  3295. TM WARMCOLD,SHUTDOWN SHUTDOWN ? 02881000
  3296. BO SHUTSYS YES 02882000
  3297. AUTOWRM SLR R2,R2 PASS WARM FLAGS TO HRC028DK 02883590
  3298. ICM R2,B'0011',WARMFLAG DMKWRMST HRC028DK 02884180
  3299. CALL DMKWRMST CALL WARM START PROCESSOR 02885000
  3300. B *+4(R2) 02886000
  3301. B WARMOK RC=0, WARM START COMPLETED SUCCESSFULLY 02887000
  3302. B COLDFRCD RC=4, FORCED COLD START HRC032DK 02888490
  3303. B RETRY RC=8 REASK QUESTION HRC032DK 02888980
  3304. COLDFRCD OI WARMCOLD,COLD INDICATE FORCE COLD START BYHRC032DK 02889470
  3305. WARMOK MVC CPID,=C'CPCP' SYSTEM NOW RUNNING @V200730 02890000
  3306. MVC APAGCP,=A(DMKCPEND) END OF RESIDENT NUCLEUS @V200730 02891000
  3307. EJECT 02892000
  3308. DMPALLOC DS 0H ALLOCATE DUMP FILE @V200730 02893000
  3309. L R10,=A(DMKSYSRM) GET REAL MACHINE SIZE 02894000
  3310. L R10,0(,R10) ... 02895000
  3311. AL R10,=X'00000800' ROUND UP TO 4K BOUNDRY @VA09916 02896500
  3312. SRL R10,12 GET NUMBER OF PAGES OF MEMORY-1 02897000
  3313. LA R10,1+4(,R10) GET NUMBER OF RECORDS IN DUMP FILE 02898000
  3314. XC CPIATABL(176),CPIATABL THIS AREA IS USED IN COMPARE *02899000
  3315. BELOW 02900000
  3316. LA R2,DUMPDTBL GET DUMP DEVICE INFORMATION TABLE 02901000
  3317. LA R3,7 Number entries in dump table HRC106DK 02902100
  3318. DUMPALOC L R1,4(,R2) GET NUMBER REC/CYL FOR THIS DEVICE 02903000
  3319. SR R4,R4 CLEAR 02904000
  3320. LR R5,R10 GET NUMBER RECORDS IN DUMP FILE 02905000
  3321. DR R4,R1 GET NUMBER OF CYLINDERS NEEDED 02906000
  3322. LTR R4,R4 ANY REMAINDER? 02907000
  3323. BNZ *+6 YES 02908000
  3324. BCTR R5,0 DECREMENT FOR EXECUTE BELOW 02909000
  3325. L R8,0(,R2) GET PTR TO RDEVBLOK 02910000
  3326. L R8,0(,R8) GET RDEVBLOK 02911000
  3327. USING RDEVBLOK,R8 02912000
  3328. LTR R14,R8 ANYTHING ON CHAIN ? 02913000
  3329. BNZ DUMPEX YES 02914000
  3330. DPNXTDEV LA R2,32(,R2) Get next entry in dump table HRC106DK 02915100
  3331. BCT R3,DUMPALOC LOOP THROUGH ALL DEVICES 02916000
  3332. L R0,=A(DUMPMSGL) GET MESSAGE LENGTH HRC028DK 02917590
  3333. L R1,=A(DUMPMSG) GET MESSAGE PTR HRC028DK 02918180
  3334. CALL DMKQCNWT,PARM=NORET 02919000
  3335. B DUMPDONE 02920000
  3336. DUMPER CLR R8,R14 BACK AT START ? 02921000
  3337. BE DPNXTDEV YES 02922000
  3338. DUMPEX L R4,RDEVALLN GET MAXI ALOCBLK 02923000
  3339. LA R1,3(,R4) GET START OF ALLOCATION MAP SKIPPING CYL 0 02924000
  3340. LA R7,1(,R4) GET END OF ALLOCATION MAP 02925000
  3341. AH R7,0(,R4) ... 02926000
  3342. SR R7,R5 ... 02927000
  3343. LA R6,1 GET CONSTANT OF 1 02928000
  3344. DUMPSR EX R5,DUMPLOOK COMPARE FOR FREE CYLINDERS 02929000
  3345. BE SPCFOUND BRANCH IF FOUND 02930000
  3346. BXLE R1,R6,DUMPSR LOOP THROUGH MAXI ALOCBLOK 02931000
  3347. L R8,RDEVPNT-RDEVBLOK(,R8) NO SPACE FOUND - GET NEXT DEV 02932000
  3348. B DUMPER ... 02933000
  3349. SPACE 02934000
  3350. * THE FOLLOWING TABLE REPRESENTS THE VALUE TO BE ADDED TO RCUCHA 02935000
  3351. * TO OBTAIN THE ADDRESS OF A CHANNEL BLOCK WHICH IS ONLINE 02936000
  3352. * FOR USE IN ALLOCATING THE SYSTEM DUMP FILE TO A DASD DEVICE. 02937000
  3353. DMPCHPTH DC AL1(0,0,0,0,0,0,0,0,4,4,4,4,8,8,12,256) @V407438 02938000
  3354. EJECT 02939000
  3355. SPCFOUND EQU * HERE WHEN SUFFICIENT SPACE IS FOUND FOR THE DUMP FILE 02940000
  3356. LR R9,R1 SAVE ALOCBLOK DUMP CYL POINTER @V407438 02941000
  3357. STM R5,R7,TEMPSAVE SAVE TEMPORARILY @V407438 02942000
  3358. CALL DMKSCNRD GET FIRST PATH TO DEVICE @V407438 02943000
  3359. CALL DMKSCNRU FIND REAL BLOCKS FOR THE 1ST PTH @V407438 02944000
  3360. TM RCUSTAT,RCUDISA IS THIS CTL UNIT OFFLINE? @V407438 02945000
  3361. BZ CUON NOPE, CU IS OK, BR. @V407438 02946000
  3362. L R7,RDEVCUB GET THE SECOND CTL UNIT THEN @V407438 02947000
  3363. TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 02948000
  3364. BZ *+8 NOPE, BR. @V407438 02949000
  3365. L R7,RCUPRIME GET PRIMARY CUBLOK FOR STATUS @V407438 02950000
  3366. CUON SLR R5,R5 CLEAR FOR INSERT & INDEX @V407438 02951000
  3367. IC R5,RCUSTAT GET CU -> CH PATH STATUS @V407438 02952000
  3368. N R5,F15 CH PATH STATUS BITS ONLY PLEASE @V407438 02953000
  3369. IC R5,DMPCHPTH(R5) FIND A CHANNEL PATH INDEX TO USE@V407438 02954000
  3370. L R6,RCUCHA(R5) GET THE CORRECT CHANNEL BLOCK @V407438 02955000
  3371. CALL DMKSCNRA FIND THIS REAL ADDRESS (CCU) @V407438 02956000
  3372. L R3,=A(DMKDMPDV) GET PTR TO DUMP DEVICE RDEVBLOK 02957000
  3373. ST R1,0(R3) STORE DEVICE ADDRESS @V407438 02958000
  3374. L R3,=A(DMKDMPAU) GET PTR TO DUMP AUTO DEVICE RDEVBLOK 02959000
  3375. ST R1,0(R3) STORE DEVICE ADDRESS @V407438 02960000
  3376. LR R1,R9 RESTORE ALOCBLOK DUMP CYL POINTER@V407438 02961000
  3377. LM R5,R7,TEMPSAVE RESTORE CLOBBERED REGS @V407438 02962000
  3378. L R9,=A(DMKDMPSF) GET PTR TO DUMP SFBLOK 02963000
  3379. USING SFBLOK,R9 02964000
  3380. LA R5,1(,R5) RESTORE NUMBER OF CYLINDERS 02965000
  3381. LR R3,R1 GET CURRENT BYTE PTR 02966000
  3382. SR R3,R4 GET DISPLACEMENT FROM START OF ALOCBLOK 02967000
  3383. BCTR R3,0 -1 02968000
  3384. BCTR R3,0 -2 02969000
  3385. LR R4,R3 SAVE STARTING CYLINDER NUMBER 02970000
  3386. SLL R3,8 FORM CCRP DISK ADDRESS 02971000
  3387. IC R3,F1+3 GET RECORD 1 02972000
  3388. SLL R3,8 ... 02973000
  3389. IC R3,RDEVCODE+1 GET DEVICE DISPACEMENT IN OWNED LIST 02974000
  3390. ST R3,SFBSTART SET STARTING DISK ADDRESS OF FILE 02975000
  3391. LR R0,R5 GET NUMBER OF CYLINDERS ALLOCATED 02976000
  3392. MVI 0(R1),X'80' FLAG AS ALLOCATED 02977000
  3393. LA R1,1(,R1) BUMP PRT 02978000
  3394. BCT R0,*-8 LOOP 02979000
  3395. L R3,=A(DMKSYSDU) GET PTR TO USERID TO RECEIVE DUMP 02980000
  3396. MVC SFBUSER,0(R3) SET USERID 02981000
  3397. L R3,ASYSVM GET PTR TO SYSTEM VMBLOK 02982000
  3398. MVC SFBORIG,VMUSER-VMBLOK(R3) SET SYSTEM VMBLOK AS CREATOR 02983000
  3399. L R3,=A(DMKDMPRC) GET PTR TO DUMP FILE RECBLOK ANCHOR 02984000
  3400. SPACE 1 02985000
  3401. RECALOC EQU * HERE TO FORMAT RECORD ALLOCATION BLOCKS 02986000
  3402. LA R0,RECSIZE GET SIZE OF RECBLOK 02987000
  3403. CALL DMKFREE 02988000
  3404. LR R7,R1 GET PTR TO RECBLOK 02989000
  3405. USING RECBLOK,R7 02990000
  3406. XC RECBLOK(8),RECBLOK CLEAR 02991000
  3407. MVC RECMAP,8(R2) SET INITIAL RECORD ALLOCATION BIT MAP 02992000
  3408. STH R4,RECCYL SET THE CYLINDER NUMBER FOR THIS BLOK 02993000
  3409. L R1,4(,R2) GET NUMBER OF REC/CYL FOR THIS DEV TYPE 02994000
  3410. STC R1,RECMAX SET RECMAX 02995000
  3411. ST R7,RECPNT-RECBLOK(,R3) CHAIN BLOK 02996000
  3412. LR R3,R7 GET NEW ANCHOR 02997000
  3413. AR R4,R6 AND NEXT CYLINDER 02998000
  3414. BCT R5,RECALOC AND ALLOCATE ALL RECBLOKS 02999000
  3415. EJECT 03000000
  3416. * WRITE 'DMKSYMTB' TO FIRST RECORD OF DUMP FILE 03001000
  3417. L R7,=A(DMKDMPRC) GET FIRST RECBLOK 03002000
  3418. L R7,0(,R7) ... 03003000
  3419. OI RECMAP,X'80' SET FIRST RECORD IN USE 03004000
  3420. MVI RECUSED,1 SET 1ST RECORD IN USE 03005000
  3421. MVI CPISEEK+6,X'01' SET RECORD 1 03006000
  3422. MVC CPISEEK+2(2),RECCYL SET CYLINDER NUMBER 03007000
  3423. MVC CPICCW4(8),CPICCW5 CHANGE READ CCW TO WRITE 03008000
  3424. LA R0,IOBSIZE GET IOBLOK SIZE 03009000
  3425. CALL DMKFREE GET IOBLOK 03010000
  3426. LR R10,R1 SAVE PTR 03011000
  3427. USING IOBLOK,R10 03012000
  3428. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR 03013000
  3429. L R3,ASYSVM GET PTR TO SYSTEM VMBLOK 03014000
  3430. ST R3,IOBUSER STORE AS USER 03015000
  3431. LA R3,DUMPRET GET RETURN ADDRESS 03016000
  3432. ST R3,IOBIRA SET IT 03017000
  3433. LA R3,CPICCW2 GET PTR TO CCWS 03018000
  3434. ST R3,IOBCAW AND SET 03019000
  3435. CALL DMKIOSQR QUEUE I/O 03020000
  3436. GOTO DMKDSPCH GOTO DISPATCH TO AWAIT I/O COMPLETION 03021000
  3437. DROP R7,R8,R9,R13 03022000
  3438. SPACE 2 03023000
  3439. USING DUMPRET,R12 TEMPORARILY . . . 03024000
  3440. DUMPRET DS 0D RETURN AFTER WRITE IS COMPLETE 03025000
  3441. LM R12,R13,=A(DMKCPIEM,DMKCPIEM+4096) @VM03170 03026000
  3442. USING DMKCPIEM,R12,R13 @VM03170 03027000
  3443. L R11,ASYSOP GET OPERATOR'S VMBLOK BACK 03028000
  3444. LA R0,IOBSIZE GET SIZE OF IOBLOK 03029000
  3445. LR R1,R10 GET PTR TO IOBLOK 03030000
  3446. CALL DMKFRET RETURN IT TO FREE STORAGE 03031000
  3447. DROP R10 03032000
  3448. EJECT 03033000
  3449. DUMPDONE EQU * HERE TO COMPRESS MAXI ALOCBLOKS 03034000
  3450. L R2,=A(DMKSYSOC) GET NUMBER OF OWNED VOLUMES 03035000
  3451. L R2,0(,R2) ... 03036000
  3452. L R3,=A(DMKSYSOW) GET START OF OWNED LIST 03037000
  3453. USING OWNDLIST,R3 03038000
  3454. ALOCLP LH R8,OWNDRDEV GET RDEVBLOK DISPLACEMENT 03039000
  3455. LTR R8,R8 NEGATIVE? 03040000
  3456. BM ALOCGET YES, NOT MOUNTED @VA01639 03041000
  3457. SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 03042000
  3458. A R8,ARIODV GET RDEVBLOK 03043000
  3459. USING RDEVBLOK,R8 03044000
  3460. L R4,RDEVALLN GET MAXI ALOCBLOK 03045000
  3461. LH R5,0(,R4) GET NUMBER OF CYLINDERS 03046000
  3462. ST R8,BALR8 SAVE ADDRESS OF RDEVBLOK 03047000
  3463. * 03048000
  3464. * A COPY OF THE FOLLOWING CODE IS LOCATED IN 03049000
  3465. * DMKVDB FOR ATTACH COMMAND. 03050000
  3466. * 03051000
  3467. LA R1,63(R5) ROUND UP IF NECESSARY... @VA03723 03052000
  3468. SRL R1,6 NO DBLWDS NEEDED: 64 CYL/DBLWD @VA03723 03053000
  3469. LA R0,(ALOCMAP-ALOCBLOK+7)/8(R1) ADD IN HDR SIZE @VA03723 03054000
  3470. CALL DMKFREE GET MINI ALOCBLOK 03055000
  3471. USING ALOCBLOK,R1 03056000
  3472. ST R1,RDEVALLN SET RDEVALLN TO MINI ALOCBLOK 03057000
  3473. ST R1,BALR1 SAVE ADDRESS OF LAST ALLOCATION BLOCK 03058000
  3474. DROP R8 03059000
  3475. SR R8,R8 ZERO TDISK CYLINDER COUNTER 03060000
  3476. LR R6,R1 ADDR OF ALOCBLOK @VA01188 03061000
  3477. LR R7,R0 SIZE OF THE BLOCK @VA01188 03062000
  3478. SLL R7,3 IN BYTES PLEASE. @VA01188 03063000
  3479. L R15,F0 PAD & COUNT @VA01188 03064000
  3480. MVCL R6,R14 CLEAR THE BLOCK @VA01188 03065000
  3481. STH R5,ALOCMAX SET ALOCMAX 03066000
  3482. SR R9,R9 CLEAR 03067000
  3483. LA R14,2(,R4) POINT TO ALLOCATION DATA 03068000
  3484. LR R15,R14 SAVE START OF ALOCMAP 03069000
  3485. ALOCLKUP CLI 0(R14),X'00' IS THERE ANY ALLOCATION ON THIS CYLINDER? 03070000
  3486. BE NOTTDISK GO TEST FOR END OF TDISK AREA 03071000
  3487. CLI 0(R14),TEMP ... @VMI0019 03072000
  3488. BE NOTTDISK TREAT AS TEMP @VMI0019 03073000
  3489. LA R10,1 SET TENTATIVE DECREMENT 03074000
  3490. LR R6,R5 GET NUMBER CYLINDERS FOR THIS DEVICE 03075000
  3491. SRL R6,1 /2 03076000
  3492. LR R7,R14 GET ADDRESS OF CURRENT BYTE 03077000
  3493. SR R7,R15 GET CYLINDER NUMBER WHERE WE ARE NOW 03078000
  3494. SR R6,R7 03079000
  3495. BP *+8 03080000
  3496. LPR R6,R6 MAKE POSITIVE 03081000
  3497. SR R10,R10 SET DECREMENT TO 0 03082000
  3498. AR R6,R6 DOUBLE 03083000
  3499. SR R6,R10 DECREMENT, IF NECESSARY 03084000
  3500. SRDL R6,3 /8 03085000
  3501. SRL R7,29 GET REMAINDER IN LOW ORDER 3 BITS 03086000
  3502. IC R7,ALOCTBL(R7) GET BITS THAT ARE ALREADY IN ALOCTBL 03087000
  3503. LA R6,ALOCMAP(R6) GET PROPER OUTPUT BYTE 03088000
  3504. EX R7,ALLOCON TURN ON APPROPRIATE BIT 03089000
  3505. LA R9,1(,R9) KEEP TOTAL OF ALLOCATED CYLINDERS 03090000
  3506. CLI 0(R14),X'02' TDISK CYLINDER ?? 03091000
  3507. BNE CNTTEMP NO -- GO TEST FOR END OF TDISK 03092000
  3508. LA R8,1(,R8) BUMP TDISK CYLINDER COUNT 03093000
  3509. B ALOCNXT AND GO PROCESS NEXT CYLINDER 03094000
  3510. SPACE 03095000
  3511. CNTTEMP L R6,BALR8 GET ADDRESS OF RDEVBLOK 03096000
  3512. TM RDEVFLAG-RDEVBLOK(R6),RDEVPREF TEMP SPACE ? 03097000
  3513. BO NOTTDISK NO -- PAGING SPACE 03098000
  3514. CLI 0(R14),ALLOC ALLOC. BY DMP OR WRM STRT @VMI0019 03099000
  3515. BNE NOTTDISK NO, CHECK FOR END OF TDSK @VMI0019 03100000
  3516. L R0,PGTTU COUNT OF TEMP CYLS ALLOC. @VMI0019 03101000
  3517. A R0,F1 PLUS ONE 03102000
  3518. ST R0,PGTTU AND STORE 03103000
  3519. SPACE 03104000
  3520. LH R0,ALOCNTMP COUNT OF ALREADY ALLOC 'TEMP' CYL@VA03723 03105000
  3521. A R0,F1 BUMP BY ONE @VA03723 03106000
  3522. STH R0,ALOCNTMP AND RESAVE FOR LATER @VA03723 03107000
  3523. NOTTDISK LTR R8,R8 ANY TDISK ALLOCATED ?? 03108000
  3524. BZ ALOCNXT NO -- 03109000
  3525. ST R1,BALR6 SAVE CURRENT (OLD) ADDR @VA03723 03110000
  3526. LA R7,7(R8) ROUND UP IF NECESSARY... @VA03723 03111000
  3527. SRL R7,3 NO DBLWDS NEEDED: 8 CYL/DBLWD @VA03723 03112000
  3528. LA R7,(ALOCMAP-ALOCBLOK+7)/8(R7) ADD IN HDR SIZE @VA03723 03113000
  3529. LR R0,R7 TO R0 FOR DMKFREE PLEASE @VA03723 03114000
  3530. STM R14,R15,BALR14 SAVE REGS 14 AND 15 OVER CALL 03115000
  3531. CALL DMKFREE GET CORE FOR A TDISK BLOK 03116000
  3532. LR R6,R1 NEW BLOK ADDR @VA01188 03117000
  3533. SLL R7,3 SIZE IN BYTES @VA01188 03118000
  3534. L R15,F0 PAD & COUNT @VA01188 03119000
  3535. MVCL R6,R14 CLEAR THE BLOCK @VA01188 03120000
  3536. LM R14,R15,BALR14 RESTORE R14, R15 @VA01188 03121000
  3537. L R7,BALR1 RESTORE ADDRESS OF LAST ALLOCATION BLOCK 03122000
  3538. ST R1,ALOCPNT-ALOCBLOK(,R7) CHAIN IT TO OLD LAST BLOCK 03123000
  3539. MVI 0(R7),X'80' AND FLAG IT AS TDISK ALLOCATION 03124000
  3540. ST R1,BALR1 AND SAVE ADDRESS OF NEW LAST BLOCK 03125000
  3541. LR R7,R14 GET CURRENT CYLINDER 03126000
  3542. SR R7,R15 RELATIVE TO ZERO 03127000
  3543. BCTR R7,0 LESS ONE (LAST TDISK CYLINDER) 03128000
  3544. STH R7,ALOCCYL2 SAVE AS LAST CYLINDER ADDRESS 03129000
  3545. SR R7,R8 GET 1ST CYLINDER ADDRESS 03130000
  3546. LA R7,1(,R7) ... 03131000
  3547. STH R7,ALOCCYL1 SAVE IN ALOCBLOK 03132000
  3548. LA R10,ALOCMAP(R8) POINT TO FIRST NON-ALLOCATED BYTE 03133000
  3549. SR R8,R8 CLEAR TDISK COUNTER FOR NEXT TIME 03134000
  3550. LR R7,R1 SAVE ADDRESS OF BLOK 03135000
  3551. L R1,BALR6 RESTORE ADDR OF OLD BLOK @VA01188 03136000
  3552. SLL R0,3 GET LENGTH OF BLOK 03137000
  3553. AR R7,R0 GET END OF BLOK 03138000
  3554. BCTR R7,0 GET LAST BYTE OF BLOK 03139000
  3555. CR R10,R7 BLOK FULL ?? 03140000
  3556. BH ALOCNXT YES -- 03141000
  3557. LA R6,1 GET INCREMENT FOR BXLE 03142000
  3558. MVI 0(R10),X'AA' FLAG UNUSED BYTES AS ALLOCATED 03143000
  3559. BXLE R10,R6,*-4 LOOP UNTIL BLOK IS FULL 03144000
  3560. SPACE 03145000
  3561. ALOCNXT CLI 0(R14),X'FF' END OF ALLOCATION ?? 03146000
  3562. LA R14,1(,R14) IN ANY CASE, INDEX UP 03147000
  3563. BE ALOCFINI YES 03148000
  3564. LR R10,R14 GET CURRENT ALOCATION BYTE 03149000
  3565. SR R10,R4 MINUS START OF TABLE 03150000
  3566. BCTR R10,0 ... 03151000
  3567. BCTR R10,0 ... 03152000
  3568. CH R10,ALOCMAX EXCEEDED MAXIMUM ? 03153000
  3569. BL ALOCLKUP NO 03154000
  3570. CLI 0(R14),X'FF' END OF ALLOCATION DATA ? 03155000
  3571. BE NOTTDISK SEE IF T-DISK AT TOP OF DEVICE 03156000
  3572. SPACE 2 03157000
  3573. ALOCFINI EQU * HERE AT END OF MAXI ALLOCATION TABLE SCAN 03158000
  3574. STH R9,ALOCUSED SET TOTAL NUMBER OF CYLINDERS ALLOCATED 03159000
  3575. SR R5,R9 GET NUMBER OF TEMP CYLINDERS ON VOLUME 03160000
  3576. SH R9,ALOCNTMP LESS 'TEMP' CYLS ALREADY ALLOCATE@VA03723 03161000
  3577. STH R9,ALOCNTMP SET NUMBER OF NON-TEMP CYLS @VA03723 03162000
  3578. L R1,BALR8 GET ADDRESS OF RDEVBLOK 03163000
  3579. TM RDEVFLAG-RDEVBLOK(R1),RDEVPREF TEMP SPACE ? 03164000
  3580. BO GETALOC NO -- PAGING SPACE 03165000
  3581. A R5,PGTTM ADD CURRENT TOTAL OF TEMP CYLINDERS 03166000
  3582. ST R5,PGTTM AND SAVE. (EXCLUDING TDISK SPACE) 03167000
  3583. SPACE 03168000
  3584. GETALOC LA R0,6+(MAXALLOC+7)/8 CORE FOR LARGEST ALLOC BLOCK@V200528 03169000
  3585. LR R1,R4 GET MAXI ALOCBLOK 03170000
  3586. CALL DMKFRET 03171000
  3587. ALOCGET LA R3,8(,R3) GET NEXT ENTRY IN OWNDLIST 03172000
  3588. BCT R2,ALOCLP 03173000
  3589. L R15,=A(DMKPGTTM) GET ADDRESS OF MAX COUNTER 03174000
  3590. L R3,PGTTM GET UNALLOCATED TEMP TOTAL 03175000
  3591. A R3,PGTTU ADD TEMP ALLOCATED 03176000
  3592. ST R3,0(R15) AND STORE 03177000
  3593. M R2,F9 TIMES 90 PERCENT 03178000
  3594. D R2,F10 .. 03179000
  3595. L R15,=A(DMKPGT90) ADDRESS OF 90 PERCENT COUNTER 03180000
  3596. ST R3,0(R15) STORE 90 PERCENT COUNT 03181000
  3597. * END OF DUPICATE CODE USED BY DMKVDB 03182000
  3598. L R15,=A(DMKPGTTU) ADDRESS OF TEMP IN USED COUNTER 03183000
  3599. MVC 0(4,R15),PGTTU MOVE USED VALUE TO COUNTER 03184000
  3600. L R6,=A(DMKRIORN) TABLE OF 3705'S @VA04552 03185000
  3601. L R5,0(0,R6) COUNT OF ENTRIES @VA04552 03186000
  3602. LTR R5,R5 ANY ENTRIES ? @VA04552 03187000
  3603. BNP LOGOP NO..GO LOGON OPERATOR @VA04552 03188000
  3604. NR3705 LA R6,4(,R6) NEXT ENTRY IN TABLE @VA04552 03189000
  3605. LH R8,0(0,R6) DISP TO RDEVBLOK @VA04552 03190000
  3606. SLL R8,3 CONVERT TO BYTE INDEX @VA04552 03191000
  3607. AL R8,ARIODV RDEVBLOK ADDRESS @VA04552 03192000
  3608. CLI RDEVTYPC-RDEVBLOK(R8),CLASTERM BSC LINE ? @VA04552 03193000
  3609. BE ANDEV YES..SKIP FOR NOW... @VA04552 03194000
  3610. OI RDEVSTAT-RDEVBLOK(R8),RDEVNRDY 370X IS UNLOADED @VA04552 03195000
  3611. ANDEV BCT R5,NR3705 LOOP THROUGH ALL 370X'S @VA04552 03196000
  3612. B LOGOP GO LOGON OPERATOR NOW .... @V200730 03197000
  3613. EJECT 03198000
  3614. MAPMSG EQU * CREATE STORAGE MAP MSG @V396414 03199000
  3615. L R6,=A(DMKCPEND) DMKCPEND MINUS DMKSLC @V396414 03200000
  3616. LA R6,4095(,R6) ROUND UP TO PAGE BOUNDARY @VA05879 03201000
  3617. N R6,XPAGNUM ... ... ... ... ... ... @VA07433 03202000
  3618. ICM R5,B'1111',=A(DMKSLC) EQUALS NUCLEUS SIZE @V396414 03203000
  3619. BZ NOVR ONLY IF THERE IS A V=R USER @V396414 03204000
  3620. S R5,F4095 PSA PAGE CONSIDERED NUCLEUS @V396414 03205000
  3621. SR R6,R5 ..... @V396414 03206000
  3622. ST R5,SAVVR SAVE FOR LATER CONVERSION @V396414 03207000
  3623. NOVR ST R6,SAVNUC SAVE FOR LATER CONVERSION @V396414 03208000
  3624. SPACE 1 03209000
  3625. L R5,=A(DMKFREHI) DMKFREHI @V396414 03210000
  3626. L R5,0(,R5) ..... @V396414 03211000
  3627. L R6,=A(DMKFRELO) MINUS DMKFRELO @V396414 03212000
  3628. L R6,0(,R6) ..... @V396414 03213000
  3629. SR R5,R6 MINUS TRACE STORAGE @V396414 03214000
  3630. L R7,SAVTRA ...... @V396414 03215000
  3631. SR R5,R7 EQUALS DYNAMIC AREA @V396414 03216000
  3632. ST R5,SAVDYN SAVE FOR LATER @V396414 03217000
  3633. SPACE 1 03218000
  3634. L R5,=A(DMKCPEND) DMKFRELO MINUS DMKCPEND @V396414 03219000
  3635. LA R5,4095(,R5) ROUND UP TO PAGE BOUNDARY @VA05879 03220000
  3636. N R5,XPAGNUM ... ... ... ... ... ... @VA07433 03221000
  3637. SR R6,R5 ...... @V396414 03222000
  3638. L R5,=A(DMKFREHI) PLUS USEABLE CORE @V396414 03223000
  3639. L R5,0(,R5) ..... @V396414 03224000
  3640. L R7,SAVSTOR MINUS DMKFREHI @V396414 03225000
  3641. SR R7,R5 ...... @V396414 03226000
  3642. AR R7,R6 EQUALS FREE STORAGE @V396414 03227000
  3643. TM CPIFLAG1,CPIAP IS PREFIX AREA TO BE DEFINED ? @V407595 03228000
  3644. BNO NOAP2 NO - DO NOT ADJUST FREE STORAGE @V407595 03229000
  3645. S R7,F8192 ADJUST FREE STORAGE BY THE 2 @V407595 03230000
  3646. * PREFIX AREA FRAMES. 03231000
  3647. NOAP2 EQU * @V407595 03232000
  3648. ST R7,SAVFREE SAVE FOR LATER @V396414 03233000
  3649. SPACE 1 03234000
  3650. LA R3,SAVSTOR SET UP LOOP FOR CONVERSION @V396414 03235000
  3651. LA R4,8 ...... @V396414 03236000
  3652. LA R5,SAVVR ...... @V396414 03237000
  3653. LA R7,512 HALF K FOR HALF ADJUST @V396414 03238000
  3654. SPACE 1 03239000
  3655. KCNVRT L R1,0(,R3) GET SAVED BYTE COUNT @V396414 03240000
  3656. ALR R1,R7 HALF ADJUST @V396414 03241000
  3657. SRL R1,10 SHIFT TO KBYTES @V396414 03242000
  3658. CALL DMKCVTBD CONVERT TO PRINTABLE FORM @V396414 03243000
  3659. STM R0,R1,0(R3) AND PUT BACK @V396414 03244000
  3660. BXLE R3,R4,KCNVRT CONVERT ALL .. @V396414 03245000
  3661. SPACE 1 03246000
  3662. MVC ALOCSTOR,SAVSTOR+3 PLUG STORAGE K @V396414 03247000
  3663. MVC ALOCNUC,SAVNUC+5 PLUG NUCLEUS K @V396414 03248000
  3664. MVC ALOCDYN,SAVDYN+3 PLUG DYNAMIC K @V396414 03249000
  3665. MVC ALOCFREE,SAVFREE+4 PLUG FREE K @V396414 03250000
  3666. MVC ALOCTRA,SAVTRA+5 PLUG TRACE K @V396414 03251000
  3667. MVC ALOCVR,SAVVR+3 PLUG V=R K @V396414 03252000
  3668. SPACE 1 03253000
  3669. LA R0,ALOCMSGL GET MESSAGE LENGTH @V396414 03254000
  3670. LA R1,ALOCMSG POINT TO MESSAGE @V396414 03255000
  3671. CALL DMKQCNWT,PARM=NORET+NOTIME @V396414 03256000
  3672. EJECT 03257000
  3673. SLR R2,R2 GIVE FILES MSG TO OPERATOR EVEN IF THERE 03258000
  3674. CALL DMKCQRFI ...ARE NO FILES NOW @V200930 03259000
  3675. SPACE 03260000
  3676. * HERE TO START SPOOL DEVICES (UNLESS 'DRAIN' SPECIFIED) 03261000
  3677. TM WARMFLAG,DRAIN "DRAIN" SPECIFIED ? HRC028DK 03262490
  3678. BO PPMAP YES @VMD0161 03263000
  3679. LA R5,B'11111111' START ALL DEVICES ARBITRARILY 03264000
  3680. TM WARMCOLD,COLD "COLD" SPECIFIED ? 03265000
  3681. BO *+8 YES 03266000
  3682. LA R5,B'11111110' START ONLY IF NOT DRAINED 03267000
  3683. CALL DMKCSOSD START ALL PUNCH AND PRINTERS 03268000
  3684. SPACE 2 03269000
  3685. PPMAP DS 0H INITIALIZE PP BIT MAP @VMD0161 03270000
  3686. CALL DMKHVDPP @VMD0161 03271000
  3687. SPACE 2 03272000
  3688. STARTSYS DS 0H @V200730 03273000
  3689. * 03274000
  3690. * CHECK IF A SYMBOL TABLE (DMKSYM) EXISTS. IF ONE DOES, 03274400
  3691. * WRITE IT OUT TO THE PAGING DEVICE TO ENSURE WE HAVE A 03274800
  3692. * COPY OF IT. IN ADDITION, WRITE OUT MODULE DMKVMI. 03275200
  3693. * READ IN ALL PAGABLE MODULES BETWEEN DMKSAV AND 03275600
  3694. * DMKCKP FROM SYSRES DEVICE AND FORCE TO BACKING DEVICE. 03276000
  3695. * 03277000
  3696. L R1,=A(DMKSYM) GET ADDR OF SYMBOL TABLE @VA13364 03277090
  3697. LTR R1,R1 DO WE HAVE ONE @VA13364 03277180
  3698. BZ GETVMI NO, GO TO GET DMKVMI MODULE @VA13364 03277270
  3699. BAL R3,WRTOUT GO WRITE OUT THE SYMBOL TABLE @VA13364 03277360
  3700. GETVMI DS 0H @VA13364 03277450
  3701. L R1,=A(DMKVMI) GET ADDR OF DMKVMI @VA13364 03277540
  3702. LTR R1,R1 MAKE SURE WE HAVE A DMKVMI @VA13364 03277630
  3703. BZ STRTLOOP DON'T HAVE A VMI, SKIP THIS @VA13364 03277720
  3704. BAL R3,WRTOUT GO WRITE OUT THE SYMBOL TABLE @VA13364 03277810
  3705. STRTLOOP DS 0H @VA13364 03277900
  3706. L R1,=A(DMKSAV) LOCATE FIRST PAGABLE MODULE 03278000
  3707. TRANSLP A R1,F4096 POINT TO NEXT PAGE 03279000
  3708. C R1,=A(DMKCKP) REACH LAST PAGABLE MODULE ?? 03280000
  3709. BNL CPIEXIT YES - 03281000
  3710. C R1,=A(DMKVMI) IS IT VMI? @VA03106 03282000
  3711. BE TRANSLP YES, NO NEED TO WRITE IT AGAIN @VA13364 03283000
  3712. C R1,=A(DMKSYM) IS IT SYM? @VA03106 03284000
  3713. BE TRANSLP YES, NO NEED TO WRITE IT AGAIN @VA13364 03285000
  3714. TRANSIN EQU * @VA03106 03286000
  3715. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM) PAGE IT IN 03287000
  3716. B TRANSLP GET NEXT PAGE 03288000
  3717. WRTOUT LA R6,20 TRY 20 TIMES IF I/O ERROR @VA13167 03289000
  3718. GETCCPD LR R2,R1 SAVE THE ADDR IN R2 @VA13167 03289500
  3719. CALL DMKPGTPG GET A DASD PAGE @VA03106 03290000
  3720. LTR R1,R1 IS THE SPACE AVAILABLE? @VA03106 03291000
  3721. BNZ RPACALL WRITE IT OUT NOW @VA04083 03292000
  3722. LR R1,R2 RESTORE ADDR @VA04083 03293000
  3723. B CPI4 TERMINATE SYS - SPACE NOT AVAIL @VA13167 03294000
  3724. RPACALL EQU * @VA04083 03295000
  3725. LR R0,R1 RPA EXPECT R0 CONTAIN DASD ADDR @VA03106 03296000
  3726. LR R1,R2 R1 HAS THE VIRT. ADDR @VA03106 03297000
  3727. CALL DMKRPAPT,PARM=SYSTEM @VA03106 03298000
  3728. BZR R3 WRITE SUCCESSFUL,RETURN TO CALLER@VA13364 03299000
  3729. BCT R6,GETCCPD IF FATAL ERROR, TRY ANOTHER CCPD @VA13167 03299300
  3730. ABEND 4 ABEND 4 - PAGING ERRORS @VA13167 03299600
  3731. SPACE 2 03300000
  3732. CPIEXIT EQU * 03301000
  3733. * INITIALIZE THE I/O ERROR RECORDING, MACHINE CHECK HANDLER 03302000
  3734. * AND CHANNEL CHECK HANDLER. 03303000
  3735. CALL DMKIOEFL 03304000
  3736. MVC MCNPSW,MCKPSW SETUP MACHINE CHECK NEW PSW 03305000
  3737. STCTL C14,C14,TEMPR14 @VMD0103 03306000
  3738. OC TEMPR14(L'EFC0),EFC0 MASK ON MACHINE CHECKS 03307000
  3739. LCTL C14,C14,TEMPR14 @VMD0103 03308000
  3740. EJECT 03309000
  3741. CPILOAD EQU * AUTOMATIC LOAD OF THE 370X'S @V200820 03310000
  3742. L R6,=A(DMKRIORN) TABLE OF EXISTING 370X BOXES@V200820 03311000
  3743. L R5,0(0,R6) GR5 = COUNT OF ENTRIES @V200820 03312000
  3744. LTR R5,R5 ARE THERE ANY AT ALL ? @V200820 03313000
  3745. BNP CPICHKAP NO - CHECK IF APU IS TO BE INIT @V407595 03314000
  3746. LOAD37X EQU * LOAD 370X CONTROL PROGRAMS @V200820 03315000
  3747. LA R6,4(0,R6) NEXT ENTRY IN TABLE @V200820 03316000
  3748. LH R8,0(0,R6) DISPLACEMENT TO RDEVBLOK @V200820 03317000
  3749. SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 03318000
  3750. AL R8,ARIODV GR8 = RDEVBLOK ADDRESS @V200820 03319000
  3751. USING RDEVBLOK,R8 @V200820 03320000
  3752. CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS ? @V2D3931 03321000
  3753. BE REM3270 YES, VARY STATIONS ONLINE 03322000
  3754. OI RDEVSTAT,RDEVNRDY SET IT NOT READY (UNLOADED) @V240820 03323000
  3755. TM RDEVSTAT,RDEVDISA OFFLINE NOW ? @V200820 03324000
  3756. BO LOADNXT YES - SKIP THIS ONE @V200820 03325000
  3757. TM RDEVFLAG,RDEVAUTO AUTOMATIC LOAD ENABLED ? @V200820 03326000
  3758. BZ LOADNXT NO -- SKIP THIS ONE @V200820 03327000
  3759. CALL DMKNLDR,PARM=SYSTEM LOAD A 370X PROGRAM @V200820 03328000
  3760. LOADNXT EQU * @V200820 03329000
  3761. BCT R5,LOAD37X LOOP THROUGH ALL DEVICES @V200820 03330000
  3762. CPICHKAP DS 0H @V407595 03331000
  3763. AIF (NOT &AP).APCHK7 03332000
  3764. TM CPIFLAG1,CPIAPOFF WAS APU SUPPORT REQUESTED @V4M0206 03333000
  3765. * VIA SYSGEN, BUT IS NOT AVAILABLE?@V4M0206 03334000
  3766. BNO APCHECK NO - SEE IF ATTACHED PROCESSOR @V407595 03335000
  3767. * IS ONLINE. 03336000
  3768. * 03337000
  3769. * YES - WRITE INDICATE MSG TO OPERATOR 03338000
  3770. * 03339000
  3771. L R0,=A(CPI959LN) GET LENGTH OF MESSAGE HRC028DK 03340590
  3772. L R1,=A(CPI959MG) GET POINTER TO MESSAGE HRC028DK 03341180
  3773. * ISSUE MESSAGE DMKCPI959W 03342000
  3774. CALL DMKQCNWT,PARM=NOTIME+OPERATOR @VMH0017 03343000
  3775. B CPIENAB EXIT UNLOCKED TO THE DISPATCHER @V407595 03344000
  3776. APCHECK EQU * @V407595 03345000
  3777. TM CPIFLAG1,CPIAP IS THE ATTACHED PROCESSOR ONLINE @V407595 03346000
  3778. BNO CPIENAB NO - EXIT UNLOCKED TO THE DISP @V407595 03347000
  3779. * YES - SETUP TO CALL DMKAPIPR TO COMPLETE 03348000
  3780. * INITIALIZATION OF THE PREFIX AREAS 03349000
  3781. L R1,CPIDMPSA SET INPUT PARAMETER FOR DMKAPIPR @V5BC0AB 03350000
  3782. * ADDRSS OF SAVED PREFIXA/B VALUES 03351000
  3783. CALL DMKAPIPR INITIALIZE THE PREFIX AREAS ON @V407595 03352000
  3784. * THE APU. 03353000
  3785. CALL DMKCLKCK SYNC CLOCKS IF NECESSARY @V407595 03354000
  3786. SIGNAL WAKEUP WAKEUP THE APU. THIS IS NECESSARY@V4M0102 03355000
  3787. * TO ENSURE CPU TIMER SET TO WAIT VALUE. 03356000
  3788. L R0,=A(CPI958LN) SET LENGTH OF MSG HRC028DK 03357590
  3789. L R1,=A(CPI958MG) SET ADDRESS OF MSG HRC028DK 03358180
  3790. * ISSUE MESSAGE DMKCPI958I 03359000
  3791. CALL DMKQCNWT,PARM=NOTIME+OPERATOR @VMH0017 03360000
  3792. SPACE 03361000
  3793. .APCHK7 ANOP 03362000
  3794. CPIENAB EQU * ENABLE 270X TERMINAL LINES @V200820 03363000
  3795. L R15,PREFIXB LOAD APU PREFIX @V407595 03364000
  3796. OI APSTAT1,CPINITD SET INITIALIZATION COMPLETE @VA07615 03365000
  3797. * IN MAIN PROCESSOR'S PSA; 03366000
  3798. OI APSTAT1-PSA(R15),CPINITD AND IN ATTACHED @VA07615 03367000
  3799. * PROCESSOR'S PSA, IF PRESENT. 03368000
  3800. TM WARMFLAG,DISABLE WAS DISABLE REQUESTED ? HRC028DK 03369590
  3801. BO CPIDSP YES, CONTINUE HRC028DK 03370180
  3802. CALL DMKCPVAE AUTOMATIC RE-ENABLE, TERM + GRAF @V200829 03371000
  3803. CALL DMKNETAE AUTOMATIC RE-ENABLE LINE&STATION 03372000
  3804. EJECT 03373000
  3805. CPIDSP DS 0H ALMOST DONE @V408246 03374000
  3806. L R7,=A(DMKSYSTE) GET THE END TIME @V50A2B5 03375000
  3807. L R5,0(R7) @V50A2B5 03376000
  3808. SR R4,R4 PREPARE TO MULTIPLY @V50A2B5 03377000
  3809. M R4,=F'1000000' CONVERT TO MICROSECONDS @V50A2B5 03378000
  3810. SLDL R4,12 THEN TO TOD FORMAT @V50A2B5 03379000
  3811. STM R4,R5,0(R7) STORE IT BACK @V50A2B5 03380000
  3812. L R7,=A(DMKSYSTS) GET THE START TIME @V50A2B5 03381000
  3813. L R5,0(R7) @V50A2B5 03382000
  3814. SR R4,R4 PREPARE TO MULTIPLY @V50A2B5 03383000
  3815. M R4,=F'1000000' CONVERT TO MICROSECONDS @V50A2B5 03384000
  3816. SLDL R4,12 @V50A2B5 03385000
  3817. STM R4,R5,0(R7) STORE THE TOD FORMAT @V50A2B5 03386000
  3818. L R5,=A(DMKSYSAT) NOTE DEFAULT AUTO SETTING @V50A2B5 03387000
  3819. TM 0(R5),AUTGO IS AUTO MONITOR ON @V50A2B5 03388000
  3820. BNO ENDUPDT NO @V50A2B5 03389000
  3821. L R1,=A(DMKSYSUR) GET THE USER NAME ADDRESS @V50A2B5 03390000
  3822. LR R5,R1 GET THE LENGTH OF THE USERID @V50A2B5 03391000
  3823. LA R4,1 @V50A2B5 03392000
  3824. TRYAGN CLI 1(R5),C' ' LOOK FOR A BLANK @V50A2B5 03393000
  3825. BE ENDLOOK AS DELIMITER @V50A2B5 03394000
  3826. LA R4,1(R4) BUMP COUNT BY ONE @V50A2B5 03395000
  3827. LA R5,1(R5) ALSO THE ADDRESSING @V50A2B5 03396000
  3828. C R4,F8 8 IS THE LIMIT @V50A2B5 03397000
  3829. BE ENDLOOK @V50A2B5 03398000
  3830. B TRYAGN KEEP GOING UNTIL THE END @V50A2B5 03399000
  3831. ENDLOOK LR R0,R4 KEEP IN REGISTER 0 @V50A2B5 03400000
  3832. SR R2,R2 PASS ZERO IN REG 2 @V50A2B5 03401000
  3833. CALL DMKUDRFU VERIFY THAT USER IS VALID @V50A2B5 03402000
  3834. BZ NOERRORR KEEP ON GOING WITH THE CODE @V50A2B5 03403000
  3835. LA R0,L'UBADMSG SEND OUT ERROR MESSAGE @V50A2B5 03404000
  3836. L R1,=A(UBADMSG) HRC028DK 03405490
  3837. CALL DMKQCNWT,PARM=NORET+OPERATOR @V50A2B5 03406000
  3838. B ENDUPDT @V50A2B5 03407000
  3839. NOERRORR EQU * @V50A2B5 03408000
  3840. SPACE 1 03409000
  3841. CALL DMKMNIST HANDLE THE TRQS @VMD0138 03410000
  3842. SPACE 1 03411000
  3843. ENDUPDT EQU * @V50A2B5 03412000
  3844. LA R7,9 UP TO NINE AUTOLOG USERS HRC016DK 03412200
  3845. LA R5,C'1' START WITH ONE C'1' HRC016DK 03412400
  3846. AUTOLALL EQU * HRC016DK 03412600
  3847. TM WARMFLAG,NOAUTOLG WAS NOAUTOLOG REQUESTED? HRC028DK 03412700
  3848. BO CPIUNCK YES, CONTINUE HRC028DK 03412800
  3849. L R9,=A(AUTOCOM) AUTOLOG USER @V408246 03413000
  3850. USING AUTOCOM,R9 @V408246 03414000
  3851. STC R5,AUTOUSR+7 SAVE NUMBER HRC016DK 03415290
  3852. XC AUTOPSRD,AUTOPSRD CLEAR PASSWORD HRC016DK 03415580
  3853. LA R0,17 LENGTH OF COMMAND HRC016DK 03415870
  3854. ST R0,AUTOLEN HRC016DK 03416160
  3855. LA R0,8 LENGTH OF USERID HRC016DK 03416450
  3856. LA R1,AUTOUSR AUTOLOG USERID HRC016DK 03416740
  3857. ST R1,AUTOSTRT HRC016DK 03417030
  3858. LA R2,AUTOCOM+4*8 ROOM FOR DIRECTORY BLOCK @V408246 03418000
  3859. CALL DMKUDRFU IS IT THERE? @V408246 03419000
  3860. BNZ NOAUTOL NO, BYPASS LOGON HRC028DK 03420270
  3861. CLC AUTOUSR(8),UDIRUSER-UDIRBLOK(R2) IS THIS IT HRC016DK 03420380
  3862. BNE NOAUTOL NO, BYPASS LOGON HRC028DK 03420760
  3863. MVC AUTOPSRD(8),UDIRPASS-UDIRBLOK(R2) MOVE-IN @V408246 03421000
  3864. * PASSWORD 03422000
  3865. CALL DMKALGON CALL LOGON @V407595 03423000
  3866. NOAUTOL EQU * HRC028DK 03423290
  3867. LA R5,1(,R5) INCREMENT BY 1 HRC016DK 03423400
  3868. BCT R7,AUTOLALL HRC016DK 03423600
  3869. DROP R9 @V408246 03424000
  3870. CPIUNCK DS 0H UNLOCK CPI AND EXIT @V408246 03425000
  3871. LA R0,INITMSGL GET MESSAGE LENGTH HRC028DK 03425200
  3872. L R1,=A(INITMSG) POINT TO MESSAGE HRC028DK 03425400
  3873. CALL DMKQCNWT,PARM=NORET+NOTIME HRC028DK 03425600
  3874. LR R2,R12 FIRST PAGE TO UNLOCK @V200820 03426000
  3875. CALL DMKPTRUL UNLOCK MYSELF @V200820 03427000
  3876. LR R2,R13 SECOND PAGE FOR UNLOCK @V200820 03428000
  3877. CALL DMKPTRUL @VA05046 03429000
  3878. LA R2,X'FFF' UNLOCK THIRD PAGE @VA05046 03430000
  3879. LA R2,1(R2,R13) @VA05046 03431000
  3880. CALL DMKPTRUL @VA05046 03432000
  3881. CPIRET EQU * @VA08415 03433000
  3882. GOTO DMKDSPCH START UP THE SYSTEM . . . @V200820 03434000
  3883. SPACE 2 03438000
  3884. REM3270 DS 0H VARY ALL STATIONS ONLINE @VA08698 03439000
  3885. USING NICBLOK,R7 ADDRESSABILITY FOR NICBLOK 03440000
  3886. TM RDEVSTAT,RDEVDISA IS BISYNC LINE OFFLINE ? 03441000
  3887. BO LOADNXT YES, GET NEXT RDEVBLOK POINTER 03442000
  3888. L R7,RDEVNICL GET START OF NICBLOK LIST 03443000
  3889. RMSTAT EQU * VARY REMOTE STATION ONLINE 03444000
  3890. LH R2,NICNAME GET RESOURCE ID. 03445000
  3891. LA R2,1(0,R2) UPDATE RESOURCE ID. BY ONE 03446000
  3892. NI NICSTAT,X'FF'-NICDISA CLEAR OFFLINE FLAG 03447000
  3893. CH R2,RDEVMAX IS THIS END OF RESOURCE LIST 03448000
  3894. BH LOADNXT YES, GET NEXT RDEVBLOK POINTER 03449000
  3895. AH R7,=AL2(NICSIZE*8) UPDATE TO NEXT NICBLOK ADDR 03450000
  3896. B RMSTAT GET RESOURCE ID. 03451000
  3897. DROP R8 DROP BASE REGISTER FOR RDEVBLOK 03452000
  3898. EJECT 03456000
  3899. LTORG 03458000
  3900. EJECT HRC028DK 03459010
  3901. INITMSG EQU * HRC028DK 03459020
  3902. DC X'15' HRC028DK 03459030
  3903. DC C'DMKCPI966I Initialization complete' HRC028DK 03459040
  3904. DC X'15' HRC028DK 03459050
  3905. INITMSGL EQU *-INITMSG HRC028DK 03459060
  3906. SPACE 3 HRC028DK 03459070
  3907. MSG971 EQU * HRC028DK 03459080
  3908. DC X'15' HRC028DK 03459090
  3909. DC C'DMKCPI971I System is ' HRC028DK 03459100
  3910. AIF (NOT &AP).UP971 HRC028DK 03459110
  3911. DC C'Attached ' HRC028DK 03459120
  3912. AGO .MSG971 HRC028DK 03459130
  3913. .UP971 ANOP HRC028DK 03459140
  3914. DC C'Uni' HRC028DK 03459150
  3915. .MSG971 ANOP HRC028DK 03459160
  3916. DC C'processor generated' HRC028DK 03459170
  3917. DC X'15' HRC028DK 03459180
  3918. AIF (NOT &FRETRAP).FRE971 HRC035DK 03459182
  3919. DC C'DMKCPI977I Free Trap Installed',X'15' 03459184
  3920. .FRE971 ANOP HRC035DK 03459186
  3921. MSG971L EQU *-MSG971 HRC028DK 03459190
  3922. SPACE 3 HRC028DK 03459200
  3923. UBADMSG DC C'DMKCPI229I User of MONITOR does not exist' HRC028DK 03459210
  3924. CPI958MG DC X'15' HRC202DK 03459225
  3925. DC C'DMKCPI958I Attached processor' HRC028DK 03459230
  3926. DC C' now operational' HRC028DK 03459240
  3927. DC X'15' HRC202DK 03459255
  3928. CPI958LN EQU *-CPI958MG HRC028DK 03459260
  3929. CPI959MG DC X'15' HRC202DK 03459275
  3930. DC C'DMKCPI959W Attached processor not online' HRC028DK 03459280
  3931. DC X'15' HRC202DK 03459295
  3932. CPI959LN EQU *-CPI959MG HRC028DK 03459300
  3933. TMSGMP DC X'15' HRC202DK 03459315
  3934. DC C'Turn on the MAIN processor''s Interval Timer' HRC028DK 03459320
  3935. DC X'15' HRC202DK 03459335
  3936. TMSGMPL EQU *-TMSGMP HRC028DK 03459340
  3937. CPI955MG DC X'15' HRC202DK 03459355
  3938. DC C'DMKCPI955W Insufficient storage for VM/370' HRC028DK 03459360
  3939. DC X'15' HRC202DK 03459375
  3940. CPI955LN EQU *-CPI955MG HRC028DK 03459380
  3941. WNGMSG DC X'151515' HRC028DK 03459390
  3942. DC C'VM/370 System Restart' HRC028DK 03459400
  3943. WNGMSGL EQU *-WNGMSG HRC028DK 03459410
  3944. SPACE , HRC028DK 03459420
  3945. TMSG DC C'Turn on the Interval Timer' HRC028DK 03459430
  3946. TMSGL EQU *-TMSG HRC028DK 03459440
  3947. SPACE , HRC028DK 03459450
  3948. AWARM DC C'Start ((Warm|Force|COLD|CKPT) ' HRC028DK 03459460
  3949. DC C'(DRain) (DIsable) (NOAUTOlo))' HRC028DK 03459470
  3950. DC C' or (SHUTDOWN):' HRC028DK 03459480
  3951. AWARML EQU *-AWARM HRC028DK 03459490
  3952. SPACE , HRC028DK 03459500
  3953. DATEMSG DC C'Set Date MM/DD/YY :' HRC028DK 03459510
  3954. DATEMSGL EQU *-DATEMSG HRC028DK 03459520
  3955. SPACE , HRC028DK 03459530
  3956. CMSG DC C'Set Time HH:MM:SS :' HRC028DK 03459540
  3957. CMSGL EQU *-CMSG HRC028DK 03459550
  3958. SPACE , HRC028DK 03459560
  3959. SHUTM1 DC X'15' HRC202DK 03459575
  3960. DC C'DMKCPI968I No Warm Start, previous data' HRC028DK 03459580
  3961. DC C' still valid' HRC028DK 03459590
  3962. DC X'15' HRC202DK 03459605
  3963. SHUTM1L EQU *-SHUTM1 HRC028DK 03459610
  3964. SPACE , HRC028DK 03459620
  3965. SHUTM2 DC C'DMKCPI961W System SHUTDOWN complete' HRC202DK 03459636
  3966. DC X'15' HRC202DK 03459642
  3967. SHUTM2L EQU *-SHUTM2 HRC028DK 03459650
  3968. SPACE , HRC028DK 03459660
  3969. DUMPMSG DC X'15' HRC202DK 03459675
  3970. DC C'DMKCPI953I Unable to allocate' HRC028DK 03459680
  3971. DC C' SYSTEM AUTO DUMP' HRC028DK 03459690
  3972. DC X'15' HRC202DK 03459705
  3973. DUMPMSGL EQU *-DUMPMSG HRC028DK 03459710
  3974. DS 0D HRC106DK 03459800
  3975. CPIATABL DC 4096X'00' Buffer for largest allocation recHRC106DK 03459810
  3976. ORG CPIATABL+136 HRC106DK 03459820
  3977. MONTH DS 1X HRC106DK 03459830
  3978. DAY DS 1X HRC106DK 03459840
  3979. YEAR DS 1X HRC106DK 03459850
  3980. DS 1X HRC106DK 03459860
  3981. HOUR DS 1X HRC106DK 03459870
  3982. MIN DS 1X HRC106DK 03459880
  3983. SEC DS 1X HRC106DK 03459890
  3984. DS 1X HRC106DK 03459900
  3985. DS CL8 HRC106DK 03459910
  3986. CVTWORD DS PL8 HRC106DK 03459920
  3987. ORG , HRC106DK 03459930
  3988. EJECT 03460000
  3989. PSA , @V306638 03461000
  3990. PREFIX EQU PREFIXA-PSA @V407595 03462000
  3991. CLRCNT EQU PSENDCLR-PGREAD @V407595 03463000
  3992. COPY EQU @V306638 03464000
  3993. MCHEKENB EQU (MCHEK+EXTMODE)*X'10000' 03465000
  3994. XMODEON EQU EXTMODE*X'10000' 03466000
  3995. WAITON EQU (WAIT+EXTMODE)*X'10000' 03467000
  3996. SPACE 1 03468000
  3997. MB35 EQU 348 35MB 3340/3344 CYLINDERS @V56BDA8 03476000
  3998. MB70 EQU 696 70MB 3340/3344 CYLINDERS @V56BDA8 03477000
  3999. TEMP EQU X'08' TEMP SPACE @VMI0019 03478000
  4000. ALLOC EQU X'80' TEMP CYL IN USE INDICATOR @VMI0019 03479000
  4001. EJECT 03480000
  4002. COPY UDIRECT @V408246 03481000
  4003. COPY ALLOC @V306638 03482000
  4004. COPY CONBUF @V306638 03483000
  4005. * 03484000
  4006. DMKCPI CSECT @V408246 03485000
  4007. AUTOCOM DS (BUFSIZE)D SIMULATED COMMAND BUFFER @V408246 03486000
  4008. ORG AUTOCOM @V408246 03487000
  4009. DC CL8'AUTOLOG ' @V408246 03488000
  4010. AUTOUSR DC CL9'AUTOLOG1 ' USERID TO BE LOGGED ON HRC016DK 03489490
  4011. AUTOPSRD DC CL8' ' INITIALLY BLANK @V408246 03490000
  4012. ORG AUTOCOM+(BUFNXT-BUFFER) @V408246 03491000
  4013. AUTOSTRT DC A(AUTOUSR) HRC016DK 03492590
  4014. AUTOLEN DC F'17' NO. CARACTERS IN BUFFER HRC016DK 03493180
  4015. ORG , @V408246 03494000
  4016. * 03495000
  4017. CPCOLD EQU X'01' HRC036DK 03495200
  4018. CPWARM EQU X'02' HRC036DK 03495400
  4019. CPCKPT EQU X'20' HRC036DK 03495600
  4020. CPFORCE EQU X'40' HRC036DK 03495800
  4021. COPY CORE @V306638 03496000
  4022. COPY DEVTYPES @V306638 03497000
  4023. COPY IOBLOKS @V306638 03498000
  4024. COPY MICBLOK @V306638 03499000
  4025. COPY NETWORK @V306638 03500000
  4026. COPY RBLOKS @V306638 03501000
  4027. COPY SAVE @V306638 03502000
  4028. COPY SPOOL @V306638 03503000
  4029. COPY TIMER @V306638 03504000
  4030. COPY MONBLOKS @V50A2V5 03505000
  4031. COPY VMBLOK @V306638 03506000
  4032. COPY QCPBLOK HRC019DK 03506100
  4033. END DMKCPI 03507000
ibm/vm370-lib/cp/dmkcpi.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator