Table of Contents

DMKSAV Source

References

Source Listing

DMKSAV.ASSEMBLE.txt
  1. SAV TITLE 'DMKSAV (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT @V200820 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKSAV 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO SAVE AND RESTORE A PAGE IMAGE COPY OF THE CP NUCLEUS ON 00010000
  11. * THE SYSTEM RESIDENCE DISK. 00011000
  12. * 00012000
  13. * ATTRIBUTES - 00013000
  14. * 00014000
  15. * NON-REENTRANT, NON-RESIDENT, STAND ALONE PROGRAM, 00015000
  16. * DMKSAVNC ENTERED VIA LDT CARD FROM DMKLDR, 00016000
  17. * DMKSAVRS ENTERED VIA BALR FROM DMKCKP 00017000
  18. * 00018000
  19. * ENTRY POINTS - 00019000
  20. * 00020000
  21. * DMKSAVNC - TO WRITE A PAGE IMAGE COPY OF THE CP NUCLEUS 00021000
  22. * DMKSAVRS - TO RESTORE A PAGE IMAGE COPY OF THE CP NUCLEUS 00022000
  23. * 00023000
  24. * ENTRY CONDITIONS - 00024000
  25. * 00025000
  26. * NONE 00026000
  27. * 00027000
  28. * EXIT CONDITIONS - 00028000
  29. * 00029000
  30. * NORMAL - DMKSAVNC - A MESSAGE INDICATING SUCCESSFULL 00030000
  31. * COMPLETION IS WRITTEN TO THE OPERATOR'S CONSOLE 00031000
  32. * DMKSAVRS - CP NUCLEUS HAS BEEN LOADED INTO MAIN 00032000
  33. * STORAGE 00033000
  34. * 00034000
  35. * ERROR - AN ERROR MESSAGE IS WRITTEN TO THE OPERATOR'S 00035000
  36. * CONSOLE 00036000
  37. * 00037000
  38. * CALLS TO OTHER ROUTINES - 00038000
  39. * 00039000
  40. * DMKOPRWT - EMERGENCY OPERATOR COMMUNICATION ROUTINE 00040000
  41. * 00041000
  42. * EXTERNAL REFERENCES - 00042000
  43. * 00043000
  44. * DMKSYSVL - SYSTEM RESIDENCE VOLUME SERIAL 00044000
  45. * DMKSYSRS - SYSTEM RESIDENCE DEVICE ADDRESS 00045000
  46. * DMKSYSTP - SYSTEM RESIDENCE DEVICE CLASS AND TYPE 00046000
  47. * DMKSYSNU - NUCLEUS STARTING AND ENDING CYLINDER NUMBERHRC102DK 00047290
  48. * ON SYSTEM RESIDENCE VOLUME HRC102DK 00047580
  49. * DMKCKPST - STARTING AND ENDING DASD ADD OF THE NUCLEUS 00048000
  50. * DMKCPICD - SYSTEM CREATION DATE AND TIME. 00049000
  51. * DMKSYSTZ - SYSTEM TIME ZONE CORRECTION 00050000
  52. * 00051000
  53. * TABLES / WORK AREAS - NONE 00052000
  54. * 00053000
  55. * REGISTER USAGE - 00054000
  56. * 00055000
  57. * GPR10 = IPL DEVICE ADDRESS 00056000
  58. * GPR11 = POINTER TO WAIT STATE PSW'S LOADED AFTER CONSOLE I/O 00057000
  59. * GPR12 = BASE REGISTER 00058000
  60. * 00059000
  61. * NOTES - NONE 00060000
  62. * 00061000
  63. * OPERATION - 00062000
  64. * 00063000
  65. * DMKSAVNC - 00064000
  66. * 00065000
  67. * 1. TEST SYSRES TYPE. IF NOT 2314,2319,3330,3340,3350 OR 2305, 00066000
  68. * ISSUE THE DMKSAV353W MESSAGE AND LOAD A WAIT PSW WITH A 00067000
  69. * WAIT STATE CODE OF X'011'. ELSE, SET UP DEVICE 00068000
  70. * CHARACTERISTICS ACCORDING TO THE DEVICE TYPE. 00069000
  71. * 2. ISSUE A SENSE COMMAND TO THE DEVICE. IF THE DEVICE IS NOT 00070000
  72. * READY, WRITE OUT THE DMKSAV351W ERROR MESSAGE AND LOAD A 00071000
  73. * WAIT PSW WITH A WAIT STATE CODE OF X'010'. 00072000
  74. * 3. READ THE VOLUME LABEL. IF NOT THE CORRECT LABEL, WRITE 00073000
  75. * OUT THE DMKSAV350W ERROR MESSAGE AND LOAD A WAIT STATE PSW 00074000
  76. * WITH A WAIT STATE CODE OF X'010'. 00075000
  77. * 4A. THE PSW LOADED BY STEPS 3 AND 4 IS ENABLED FOR EXTERNAL 00076000
  78. * INTERRUPTS. ONCE THE PROBLEM INDICATED BY THE MESSAGE IS 00077000
  79. * REMEDIED, THE USER SHOULD HIT THE INTERRUPT BUTTON, AT 00078000
  80. * WHICH TIME THE OPERATION RESUMES AT STEP 1. 00079000
  81. * 4. IF THE TIME OF DAY CLOCK IS NOT SET GO TO STEP 5. 00080000
  82. * COMPUTE THE TIME AND DATE FROM THE TIME OF DAY CLOCK 00081000
  83. * INTO THE SYSTEM ID MESSAGE IN DMKCPICD. 00082000
  84. * 5. WRITE THE NUCLEUS OUT TO THE DISK, SAVE THE DASD ADDRESS 00083000
  85. * FOR DMKSAV FOR CHECKPOINT, AND WRITE OUT THE IPL CCW 00084000
  86. * SEQUENCE. THEN WRITE MESSAGE 'NUCLEUS LOAD ON 'LABEL'' 00085000
  87. * AND LOAD WAIT STATE CODE OF X'012'. 00086000
  88. * 00087000
  89. * DMKSAVRS - 00088000
  90. * 00089000
  91. * 1. SET UP TO READ THE NUCLEUS INTO STORAGE FROM THE NUCLEUS 00090000
  92. * CYLINDER. 00091000
  93. * 2. SET UP CAW AND IO NEW PSW FOR THE READ AND ISSUE THE SIO. 00092000
  94. * 3. WHEN GET AN INTERRUPT,CHECK IF IT FOR THE SIO IN STEP 2. 00093000
  95. * IF NOT GO BACK INTO A WAIT STATE. IF HAD AN ERROR ON THE 00094000
  96. * READ, GO BACK TO STEP 2 AND TRY AGAIN. 00095000
  97. * 4. IF AT THE END OF A CYLINDER, BUMP TO THE NEXT CYLINDER. 00096000
  98. * 5. IF MORE IS TO BE READ, SET UP THE CCW'S AND GO BACK TO 00097000
  99. * STEP 2. IF FINISHED READING, GO TO DMKCPINT VIA A BRANCH. 00098000
  100. * 00099000
  101. * RESPONSES - WAIT STATE CODE 00100000
  102. * 00101000
  103. * NUCLEUS LOAD ON 'LABEL' 012 00102000
  104. * 00103000
  105. * ERROR MESSAGES - 00104000
  106. * 00105000
  107. * DMKSAV350W DASD 'RADDR' VOLID NOT 'LABEL' 010 00106000
  108. * DMKSAV351W DASD 'RADDR' NOT READY 010 00107000
  109. * DMKSAV352W FATAL DASD I/O ERROR 011 00108000
  110. * GPR0 CONTAINS ADDDRESS OF DEVICE IN ERROR 00109000
  111. * GPR1-GPR2 CONTAINS ERROR CSW 00110000
  112. * GPR3 CONTAINS CURRENT ROUTINE ADDRESS 00111000
  113. * GPR4 CONTAINS ADDRESS OF FIRST CCW 00112000
  114. * GPR5 TO GPR10 CONTAINS UP TO 24 SENSE BYTES 00113000
  115. * GPR11 CONTAINS MODULE BASE ADDRESS 00114000
  116. * GPR13 ADDRESS OF SEEK BBCCHHR 00115000
  117. * GPR14-GPR15 CONTAINS BBCC HHR 00116000
  118. * DMKSAV353W SYSRES DEVICE TYPE INVALID 011 00117000
  119. * 00118000
  120. * WAIT STATE - NO ERROR MESSAGE 00119000
  121. * 00120000
  122. * MACHINE CHECK 00A 00121000
  123. * 00122000
  124. *. 00123000
  125. EJECT 00124000
  126. ISEQ 73,80 00125000
  127. COPY OPTIONS 00126000
  128. COPY LOCAL 00127000
  129. PUNCH 'SPB' START AT NEXT PAGE BOUNDARY @V200820 00128000
  130. DMKSAV CSECT 00129000
  131. SPACE 3 00130000
  132. ENTRY DMKSAVNC,DMKSAVRS 00131000
  133. EXTRN DMKCPINT,DMKCKPT,DMKSYSTP,DMKSYSRS,DMKSYSNU,DMKSYSVL 00132000
  134. EXTRN DMKCPICD,DMKSYSTZ 00133000
  135. EXTRN DMKCKPRS 00134000
  136. EXTRN DMKCKP 00135000
  137. EXTRN DMKCKPST 00136000
  138. EXTRN DMKOPRWT @V200820 00137000
  139. EXTRN DMKCVTBH,DMKCVTBD HRC027DK 00138040
  140. EXTRN DMKCKPLD @V407429 00138100
  141. SPACE 3 00139000
  142. USING PSA,R0 00140000
  143. SPACE 3 00141000
  144. ID DC CL8'DMKSAV' MODULE NAME 00142000
  145. EJECT 00143000
  146. USING DMKSAV,R3 00144000
  147. STCAW ST 14,CAW .. 00145000
  148. MVC IONPSW(8),IONP SET IO NEW PSW 00146000
  149. MVC MCNPSW(8),MCNP SET MACHINE CHECK PSW 00147000
  150. L R10,DISK GET DISK ADDRESS 00148000
  151. SIO SIO 0(R10) @V56BDA8 00149100
  152. BC 7,*-4 00150000
  153. WAITX LPSW XWAIT 00151000
  154. * 00152000
  155. * 00153000
  156. * 00154000
  157. IOINT CH 10,IOOPSW+2 00155000
  158. BNE WAITX IGNORE OTHER INTERRUPTS 00156000
  159. CLC CSW+4(2),=AL2((CE+DE)*256) CHANNEL/DEVICE END ONLY ? 00157000
  160. BE PROCINT YES, GOOD STATUS 00158000
  161. MVC ERRCSW(12),CSW SAVE CSW AND CAW DATA @V2B3729 00159000
  162. LA R10,SNS ADDRESS OF SNS CCW @V2B3729 00160000
  163. ST R10,CAW SET UP FOR SIO @V2B3729 00161000
  164. L R10,DISK GET ADDRESS OF DISK @V2B3729 00162000
  165. SIO 0(R10) START SENSE IO @V2B3729 00163000
  166. BNZ *-4 .. @V2B3729 00164000
  167. TIO 0(R10) CLEAR IO @V2B3729 00165000
  168. BNZ *-4 .. @V2B3729 00166000
  169. TM SNSIN,TRKCONCK TRACK CONDITION CHECK? @V56BDA8 00166010
  170. BZ COUNTERR NO, COUNT THE ERROR @V56BDA8 00166020
  171. LA R9,READHAR0 READ HOME ADDRESS, R0 CCWS @V56BDA8 00166030
  172. ST R9,CAW SET FOR SIO @V56BDA8 00166040
  173. TIO 0(R10) DRAIN ANY INTERRUPTS @V56BDA8 00166050
  174. BC 7,*-4 @V56BDA8 00166060
  175. SIO 0(R10) START IT UP @V56BDA8 00166070
  176. BC 7,*-4 UNTIL FREE @V56BDA8 00166080
  177. TIO 0(R10) TEST FOR COMPLETION @V56BDA8 00166090
  178. BC 7,*-4 TRY AGAIN @V56BDA8 00166100
  179. CLC CSW+4(2),=AL2((CE+DE)*256) CLEAN END? @V56BDA8 00166110
  180. BNE COUNTERR NO, ERROR @V56BDA8 00166120
  181. LA R9,ALTSEEK ALTERNATE CHANNEL PROGRAM @V56BDA8 00166130
  182. ST R9,CAW SET FOR SIO @V56BDA8 00166140
  183. B SIO RESTART ON ALTERNATE TRACK @V56BDA8 00166150
  184. SPACE 1 00166160
  185. COUNTERR EQU * @V56BDA8 00166170
  186. LA R8,1(,R8) INCREASE ERROR COUNT BY ONE 00167000
  187. CH R8,=H'10' ERROR COUNT REACH 10 YET ? 00168000
  188. BNH STCAW IF NOT, RETRY THE OPERATION 00169000
  189. LA R1,ERR352 ERROR MSG DMKSAV352W @V200735 00171000
  190. LA R0,ERR352L LENGTH OF MESSAGE @V200735 00172000
  191. SPACE , HRC102DK 00172300
  192. WRITERR DS 0H HRC102DK 00172600
  193. LA R2,ALARM PARM'S @V200735 00173000
  194. OI SAVEFLAG,MSG352 SET SWITCH TO LOAD REGS HRC102DK 00173500
  195. LA R11,WSC11 POINT TO WHICH PSW TO LOAD @VA00867 00174000
  196. B CNIO NOW ISSUE ERROR MESSAGE HRC102DK 00175090
  197. SPACE , HRC102DK 00175180
  198. BNDRYERR DS 0H HRC102DK 00175270
  199. LA R1,ERR354 ERROR MSG DMKSAV354E HRC102DK 00175360
  200. LA R0,ERR354L LENGTH OF MESSAGE HRC102DK 00175450
  201. B WRITERR HRC102DK 00175540
  202. SPACE , HRC102DK 00175630
  203. PROCINT SR R8,R8 RESET THE ERROR COUNT 00176000
  204. MVC 0(4),DISK SAVE ADDR FOR BRANCH TO CPINIT! 00177000
  205. SPACE 3 00178000
  206. BXLE R2,R4,NXTPAGE INDEX UP HEAD -> RECORD TABLE 00179000
  207. SPACE 00180000
  208. LH R2,CYL IF END OF CYL REACHED, GET NEXT 00181000
  209. LA R2,1(,R2) -- 00182000
  210. CH R2,ENDCYL GREATER THAN MAX CYL HRC102DK 00182300
  211. BH BNDRYERR TOO LARGE OF NUCLEUS HRC102DK 00182600
  212. STH R2,CYL AND SAVE 00183000
  213. L R2,HRTBLADR RE-INITIALIZE TO START OF TABLE 00184000
  214. SPACE 00185000
  215. NXTPAGE DS 0H READ/WRITE NEXT PAGE 00186000
  216. ALR R0,R6 BUMP DATA ADDRESS IN CCW 00187000
  217. LR R12,R0 GET DATA ADDRESS AND OPCODE 00188000
  218. LA R12,0(,R12) STRIP OPCODE 00189000
  219. SKSAVB CR R12,R7 SAVE/RESTORE ONLY UP TO HERE 00190000
  220. BL SETCCW LOW - KEEP GOING 00191000
  221. BCR 2,R15 HIGH - RETURN TO SAVE PROGRAM 00192000
  222. C R12,=A(DMKCKP+4096) IS THIS DMKCKP PAGE 2 ? @V407429 00193200
  223. BNE CKTYPE NO, CHECK SAVING OR RESTORING @V407429 00193300
  224. MVC SEEKC(5),SEEKA SAVE DISK ADDRESS OF CKP PAGE 2 @V407429 00193400
  225. MVC SEEKC+5(2),0(R2) SAVE HEAD AND RECORD 00193500
  226. CKTYPE L R12,=A(DMKCPINT) EXIT ADDRESS FOR RESTORE @V407429 00193600
  227. TM RW1,1 SAVING OR RESTORING ?? 00194000
  228. BCR 8,R12 RESTORING - EXIT TO CPINIT 00195000
  229. SPACE 00196000
  230. SETCCW STM R0,R1,RW1 SET UP CCW 00197000
  231. SETHHR MVC HHR+1(2),0(R2) SET UP SEARCH ID 00198000
  232. LA R14,CCWPAG GET ADDRESS OF CHANNEL PROGRAM 00199000
  233. C R12,=A(DMKSAV) UP TO THIS ADDRESS YET 00200000
  234. BNE STCAW NO - 00201000
  235. MVC SEEKB(7),SEEKA SAVE DISK ADDRESS OF DMKSAV FOR DMKCKP 00202000
  236. B STCAW GO DO THE I/O 00203000
  237. SPACE 3 00204000
  238. DMKSAVRS BALR R3,0 00205000
  239. USING *,R3 00206000
  240. ST 10,DISK 00208000
  241. SR R8,R8 RESET ERROR COUNTER 00209000
  242. LA R11,DISAWT0 RESET POINTER TO DISABLED PSW @VA00867 00210000
  243. MVI GPRS,6 SET UP READ OP-CODE IN PROTOTYPE 00211000
  244. MVC RW1,RW1R SET UP READ CCW FOR SHORT 1ST PAGE 00212000
  245. MVC CYL(5),START GET STARTING CYLINDER AND PAGE 00213000
  246. LM R0,R6,GPRS SET REGS FOR BUILDING CHANNEL PROG 00214000
  247. USING DMKSAV,R3 00215000
  248. L R7,=A(DMKSAV) RESTORE ONLY TO THIS ADDRESS 00216000
  249. LA R14,CCWPAG POINT TO CHANNEL PROGRAM 00217000
  250. B STCAW AND GO RESTORE SYSTEM 00218000
  251. EJECT 00219000
  252. CCWPAG CCW 7,SEEKA,CC,6 SEEK TO NUCLEUS CYLINDER 00220000
  253. ALTSRCH EQU * RESUME POINT AFTER ALTERNATE SEEK@V56BDA8 00220100
  254. CCW 49,CYL,CC,5 SERACH FOR PAGE 00221000
  255. CCW 8,*-8,0,0 TIC 00222000
  256. RW1 CCW 5,PSTARTSV-PSA,CC+SILI,X'1000'-(PSTARTSV-PSA) 00223000
  257. CCW 3,*,SILI,1 00224000
  258. RW1R CCW 6,PSTARTSV-PSA,CC+SILI,X'1000'-(PSTARTSV-PSA) 00225000
  259. SPACE 00226000
  260. SEEKA DC 4H'0' SEEK/SERACH ARGUMENT 00227000
  261. ORG SEEKA BREAKDOWN OF ARG 00228000
  262. BB DS 2X BIN 00229000
  263. CYL DS 2X CYLINDER 00230000
  264. HHR DS 3X HEAD AND RECORD 00231000
  265. DS X UNUSED 00232000
  266. SEEKB DC D'0' SAVE DISK ADDR. OF DMKSAV 00233000
  267. SEEKC DC D'0' SAVE DISK ADDR. FOR DMKCKP @V407429 00233100
  268. * (PAGE 2) 00233200
  269. SPACE 1 00233210
  270. READHAR0 CCW 07,SEEKA,CC,6 @V56BDA8 00233220
  271. CCW 26,0,CC+SILI+SKIP,5 @V56BDA8 00233230
  272. CCW 22,ALTR0ADD,SILI,4 @V56BDA8 00233240
  273. ALTSEEK CCW 07,ALTSKADD,CC+SILI,6 @V56BDA8 00233250
  274. CCW 08,ALTSRCH,0,0 @V56BDA8 00233260
  275. ALTSKADD DC XL2'0' BB @V56BDA8 00233270
  276. ALTR0ADD DS XL4 CCHH FROM RECORD 0 COUNT @V56BDA8 00233280
  277. EJECT 00234000
  278. DS 0D 00235000
  279. XWAIT DC X'7E06' WAIT STATE PSW 00236000
  280. DC A(IOINT) 00237000
  281. DS 0D 00238000
  282. IONP DC X'00040000' 00239000
  283. DC A(IOINT) 00240000
  284. MCNP DC X'00020000' 00241000
  285. DC X'0000000A' @VA00867 00242000
  286. SPACE 00243000
  287. GPRS DS 0D REGISTER SETS FOR SAVE/RESTORE LOOP 00244000
  288. CCW 5,0,CC,4096 PROTOTYPE PAGE WRITE CCW 00245000
  289. HRTBLADR DC A(TBL2314) HEAD -> RECORD TABLE FOR PAGES 00246000
  290. DC A(DMKSAV) BASE REGISTER 00247000
  291. DC A(2) TABLE INCREMENT 00248000
  292. INDEXEND DC A(TBL2314E) LAST ENTRY IN TABLE 00249000
  293. DC A(4096) PAGE SIZE INCREMENT 00250000
  294. SPACE 00251000
  295. PRINT DATA 00252000
  296. TBL2314 EQU * HEAD-> RECORD TABLE FOR 2314 00253000
  297. DC AL1(00,01,00,02,01,03,01,04,02,05,03,06,03,07,04,08) 00254000
  298. DC AL1(05,09,05,10,06,11,06,12,07,13,08,14,08,15,09,16) 00255000
  299. DC AL1(10,17,10,18,11,19,11,20,12,21,13,22,13,23,14,24) 00256000
  300. DC AL1(15,25,15,26,16,27,16,28,17,29,18,30,18,31,19,32) 00257000
  301. TBL2314E EQU TBL2314+31*2 ADDRESS OF LAST TABLE ENTRY 00258000
  302. SPACE 1 00259000
  303. TBL3350 EQU * HEAD-> RECORD TABLE FOR 3350 @V304498 00260000
  304. DC AL1(00,01,00,02,00,03,00,04,01,05,01,06,01,07) @V304498 00261000
  305. DC AL1(01,08,02,09,02,10,02,11,02,12,03,13,03,14) @V304498 00262000
  306. DC AL1(03,15,03,16,04,17,04,18,04,19,04,20,05,21) @V304498 00263000
  307. DC AL1(05,22,05,23,05,24,06,25,06,26,06,27,06,28) @V304498 00264000
  308. DC AL1(07,29,07,30,07,31,07,32,08,33,08,34,08,35) @V304498 00265000
  309. DC AL1(08,36,09,37,09,38,09,39,09,40,10,41,10,42) @V304498 00266000
  310. DC AL1(10,43,10,44,11,45,11,46,11,47,11,48,12,49) @V304498 00267000
  311. DC AL1(12,50,12,51,12,52,13,53,13,54,13,55,13,56) @V304498 00268000
  312. DC AL1(14,57,14,58,14,59,14,60,15,61,15,62,15,63) @V304498 00269000
  313. DC AL1(15,64,16,65,16,66,16,67,16,68,17,69,17,70) @V304498 00270000
  314. DC AL1(17,71,17,72,18,73,18,74,18,75,18,76,19,77) @V304498 00271000
  315. DC AL1(19,78,19,79,19,80,20,81,20,82,20,83,20,84) @V304498 00272000
  316. DC AL1(21,85,21,86,21,87,21,88,22,89,22,90,22,91) @V304498 00273000
  317. DC AL1(22,92,23,93,23,94,23,95,23,96,24,97,24,98) @V304498 00274000
  318. DC AL1(24,099,24,100,25,101,25,102,25,103,25,104) @V304498 00275000
  319. DC AL1(26,105,26,106,26,107,26,108,27,109,27,110) @V304498 00276000
  320. DC AL1(27,111,27,112,28,113,28,114,28,115,28,116) @V304498 00277000
  321. DC AL1(29,117,29,118,29,119,29,120) @V304498 00278000
  322. TBL3350E EQU TBL3350+119*2 ADDRESS OF LAST 3350 TABLE ENTRY@V304498 00279000
  323. SPACE 00280000
  324. TBL3330 EQU * HEAD-> RECORD TABLE FOR 3330/2305 00281000
  325. DC AL1(00,01,00,02,00,03,01,04,01,05,01,06) 00282000
  326. DC AL1(02,07,02,08,02,09,03,10,03,11,03,12) 00283000
  327. DC AL1(04,13,04,14,04,15,05,16,05,17,05,18) 00284000
  328. DC AL1(06,19,06,20,06,21,07,22,07,23,07,24) 00285000
  329. DC AL1(08,25,08,26,08,27,09,28,09,29,09,30) 00286000
  330. DC AL1(10,31,10,32,10,33,11,34,11,35,11,36) 00287000
  331. DC AL1(12,37,12,38,12,39,13,40,13,41,13,42) 00288000
  332. DC AL1(14,43,14,44,14,45,15,46,15,47,15,48) 00289000
  333. DC AL1(16,49,16,50,16,51,17,52,17,53,17,54) 00290000
  334. DC AL1(18,55,18,56,18,57) 00291000
  335. TBL3330E EQU TBL3330+56*2 ADDRESS OF LAST 3330 TABLE ENTRY 00292000
  336. SPACE 00293000
  337. TBL2305E EQU TBL3330+23*2 ADDRESS OF LAST 2305 TABLE ENTRY 00294000
  338. TBL3340 EQU * HEAD-> RECORD TABLE FOR 3340 @V2A2029 00295000
  339. * (35MB AND 70MB) 00296000
  340. DC AL1(00,01,00,02,01,03,01,04,02,05,02,06) @V2A2029 00297000
  341. DC AL1(03,07,03,08,04,09,04,10,05,11,05,12) @V2A2029 00298000
  342. DC AL1(06,13,06,14,07,15,07,16,08,17,08,18) @V2A2029 00299000
  343. DC AL1(09,19,09,20,10,21,10,22,11,23,11,24) @V2A2029 00300000
  344. TBL3340E EQU TBL3340+23*2 ADDRESS OF LAST 3340 TABLE ENTRY @V2A2029 00301000
  345. SPACE 1 HRC106DK 00301100
  346. TBL3375 EQU * Head-> record table for 3375 HRC106DK 00301110
  347. DC AL1(00,01,00,02,00,03,00,04) HRC106DK 00301120
  348. DC AL1(00,05,00,06,00,07,00,08) HRC106DK 00301130
  349. DC AL1(01,09,01,10,01,11,01,12) HRC106DK 00301140
  350. DC AL1(01,13,01,14,01,15,01,16) HRC106DK 00301150
  351. DC AL1(02,17,02,18,02,19,02,20) HRC106DK 00301160
  352. DC AL1(02,21,02,22,02,23,02,24) HRC106DK 00301170
  353. DC AL1(03,25,03,26,03,27,03,28) HRC106DK 00301180
  354. DC AL1(03,29,03,30,03,31,03,32) HRC106DK 00301190
  355. DC AL1(04,33,04,34,04,35,04,36) HRC106DK 00301200
  356. DC AL1(04,37,03,38,03,39,03,40) HRC106DK 00301210
  357. DC AL1(05,41,05,42,05,43,05,44) HRC106DK 00301220
  358. DC AL1(05,45,05,46,05,47,05,48) HRC106DK 00301230
  359. DC AL1(06,49,06,50,06,51,06,52) HRC106DK 00301240
  360. DC AL1(06,53,06,54,06,55,06,56) HRC106DK 00301250
  361. DC AL1(07,57,07,58,07,59,07,60) HRC106DK 00301260
  362. DC AL1(07,61,07,62,07,63,07,64) HRC106DK 00301270
  363. DC AL1(08,65,08,66,08,67,08,68) HRC106DK 00301280
  364. DC AL1(08,69,08,70,08,71,08,72) HRC106DK 00301290
  365. DC AL1(09,73,09,74,09,75,09,76) HRC106DK 00301300
  366. DC AL1(09,77,09,78,09,79,09,80) HRC106DK 00301310
  367. DC AL1(10,81,10,82,10,83,10,84) HRC106DK 00301320
  368. DC AL1(10,85,10,86,10,87,10,88) HRC106DK 00301330
  369. DC AL1(11,89,11,90,11,91,11,92) HRC106DK 00301340
  370. DC AL1(11,93,11,94,11,95,11,96) HRC106DK 00301350
  371. TBL3375E EQU TBL3375+95*2 Address of last table entry HRC106DK 00301360
  372. SPACE 1 HRC106DK 00301370
  373. TBL3380 EQU * Head-> record table for 3380 HRC106DK 00301380
  374. DC AL1(00,001,00,002,00,003,00,004,00,005) HRC106DK 00301390
  375. DC AL1(00,006,00,007,00,008,00,009,00,010) HRC106DK 00301400
  376. DC AL1(01,011,01,012,01,013,01,014,01,015) HRC106DK 00301410
  377. DC AL1(01,016,01,017,01,018,01,019,01,020) HRC106DK 00301420
  378. DC AL1(02,021,02,022,02,023,02,024,02,025) HRC106DK 00301430
  379. DC AL1(02,026,02,027,02,028,02,029,02,030) HRC106DK 00301440
  380. DC AL1(03,031,03,032,03,033,03,034,03,035) HRC106DK 00301450
  381. DC AL1(03,036,03,037,03,038,03,039,03,040) HRC106DK 00301460
  382. DC AL1(04,041,04,042,04,043,04,044,04,045) HRC106DK 00301470
  383. DC AL1(04,046,04,047,04,048,04,049,04,050) HRC106DK 00301480
  384. DC AL1(05,051,05,052,05,053,05,054,05,055) HRC106DK 00301490
  385. DC AL1(05,056,05,057,05,058,05,059,05,060) HRC106DK 00301500
  386. DC AL1(06,061,06,062,06,063,06,064,06,065) HRC106DK 00301510
  387. DC AL1(06,066,06,067,06,068,06,069,06,070) HRC106DK 00301520
  388. DC AL1(07,071,07,072,07,073,07,074,07,075) HRC106DK 00301530
  389. DC AL1(07,076,07,077,07,078,07,079,07,080) HRC106DK 00301540
  390. DC AL1(08,081,08,082,08,083,08,084,08,085) HRC106DK 00301550
  391. DC AL1(08,086,08,087,08,088,08,089,08,090) HRC106DK 00301560
  392. DC AL1(09,091,09,092,09,093,09,094,09,095) HRC106DK 00301570
  393. DC AL1(09,096,09,097,09,098,09,099,09,100) HRC106DK 00301580
  394. DC AL1(10,101,10,102,10,103,10,104,10,105) HRC106DK 00301590
  395. DC AL1(10,106,10,107,10,108,10,109,10,110) HRC106DK 00301600
  396. DC AL1(11,111,11,112,11,113,11,114,11,115) HRC106DK 00301610
  397. DC AL1(11,116,11,117,11,118,11,119,11,120) HRC106DK 00301620
  398. DC AL1(12,121,12,122,12,123,12,124,12,125) HRC106DK 00301630
  399. DC AL1(12,126,12,127,12,128,12,129,12,130) HRC106DK 00301640
  400. DC AL1(13,131,13,132,13,133,13,134,13,135) HRC106DK 00301650
  401. DC AL1(13,136,13,137,13,138,13,139,13,140) HRC106DK 00301660
  402. DC AL1(14,141,14,142,14,143,14,144,14,145) HRC106DK 00301670
  403. DC AL1(14,146,14,147,14,148,14,149,14,150) HRC106DK 00301680
  404. TBL3380E EQU TBL3380+149*2 Address of last table entry HRC106DK 00301690
  405. SPACE 3 00302000
  406. PRINT NODATA 00303000
  407. SPACE 2 00304000
  408. ENDCYL DC H'0' ENDING CYLINDER HRC102DK 00304500
  409. DISK DC F'0' SYSRES ADDRESS 00305000
  410. START DC H'0' STARTING CYLINDER 00306000
  411. DC H'0' STARTING HEAD 00307000
  412. DC X'01' STARTING PAGE 00308000
  413. SPACE 00309000
  414. SAVEFLAG DC X'00' FLAG BYTE @V2B3729 00310000
  415. MSG352 EQU X'80' INDICATE GPRS TO BE LOADED @V2B3729 00311000
  416. * BEFORE WAIT 11 00312000
  417. SNS CCW 4,SNSIN,SILI,24 SENSE CCW @V2B3729 00313000
  418. SNSIN DC 6F'0' AREA FOR SENSE DATA @V2B3729 00314000
  419. ERRCSW DC 2F'0' AREA FOR ERROR CSW @V2B3729 00315000
  420. CCWADD DC F'0' AREA FOR CCW ADDRESS @V2B3729 00316000
  421. DEVT DC C' ' 00317000
  422. DS 0D 00318000
  423. ENDMSG CCW 9,LDMSG,0,LDMSGL 00319000
  424. LDMSG DC C'Nucleus loaded on ' HRC202DK 00320490
  425. LDVOL DC CL6' ' 00321000
  426. DC C' --- ' @VA11884 00321100
  427. DC C'Starting CYL=' HRC202DK 00321260
  428. NUCSTRT DC CL4' ' HRC027DK 00321340
  429. DC C',' @VA11884 00321400
  430. DC C' last CYL used=' HRC202DK 00321590
  431. NUCSTOP DC CL4' ' HRC027DK 00321790
  432. LDMSGL EQU *-LDMSG 00322000
  433. * 00323000
  434. LTORG 00324000
  435. * 00325000
  436. EJECT 00326000
  437. DS 0D 00327000
  438. WSC10 DC X'01060000' @VA00867 00328000
  439. DC X'00000010' @VA00867 00329000
  440. WSC11 DC X'00020000' @VA00867 00330000
  441. DC X'00000011' @VA00867 00331000
  442. DISAWT0 DC X'00020000' @VA00867 00332000
  443. DC X'00000012' WAIT STATE CODE 012 @VM08532 00333000
  444. EXTINT DC X'00040000' @VA00867 00334000
  445. DC A(DMKSAVNC) RESTART LOCATION 00335000
  446. * 00336000
  447. * 00337000
  448. DS 0H 00338000
  449. VOLID DC C'VOL1CPDSK1' 00339000
  450. EJECT 00340000
  451. CNIO EQU * CONSOLE COMMUNICATION SUBROUTINE @V200820 00341000
  452. SR R14,R14 SET NEW PROGRAM CHECK IN @V2B3729 00342000
  453. LA R15,SAVPROG CASE OF PROGRAM CHECK IN @V2B3729 00343000
  454. STM R14,R15,PRNPSW DMKOPRWT @V2B3729 00344000
  455. ST R3,SAVR3 SAVE BASE ADDRESS @V2B3729 00345000
  456. ST R11,SAVR11 SAVE ADDRESS OF LPSW @V2B3729 00346000
  457. CALL DMKOPRWT WRITE MESSAGE TO SYSTEM OPERATOR @V200820 00347000
  458. B WROPRET CONT- @V2B3729 00348000
  459. DS 0D @V2B3729 00349000
  460. SAVPROG L R4,PRNPSW+4 GET TEMP BASE ADDRESS @V2B3729 00350000
  461. DROP R3 @V2B3729 00351000
  462. USING SAVPROG,R4 @V2B3729 00352000
  463. L R3,SAVR3 RESTORE GPR3 @V2B3729 00353000
  464. L R11,SAVR11 RESTORE GPR11 @V2B3729 00354000
  465. DROP R4 @V2B3729 00355000
  466. USING DMKSAV,R3 @V2B3729 00356000
  467. WROPRET TM SAVEFLAG,MSG352 ERROR MSG 352 ? @V2B3729 00357000
  468. BZ SAVLPSW NO - @V2B3729 00358000
  469. L R0,DISK ADDRESS OF DEVICE IN ERROR @V2B3729 00359000
  470. LM R1,R2,ERRCSW ERROR CSW @V2B3729 00360000
  471. L R4,CCWADD ADDRESS OF 1ST CCW @V2B3729 00361000
  472. LM R5,R10,SNSIN GPR5-GPR10 - 24 SENSE BYTES @V2B3729 00362000
  473. SR R13,R13 .. @V2B3729 00363000
  474. ICM R13,B'0111',1(R4) ADDRESS OF BBCCHHR @V2B3729 00364000
  475. LM R14,R15,0(R13) GPR14-GPR15 BBCC HHR @V2B3729 00365000
  476. SAVLPSW LPSW 0(R11) LOAD THE SPECIFIED PSW. @V2B3729 00366000
  477. * 00367000
  478. NDISK L R1,DISK GET SYSRES ADDRESS @VA01730 00368000
  479. CALL DMKCVTBH CONVERT ADDRESS TO EBCDIC @VA01730 00369000
  480. STCM R1,B'0111',NREADY1 PUT ADDRESS INTO MSG @VA01730 00370000
  481. LA R1,NREADY ERROR MSG. DMKSAV351 @VA01730 00371000
  482. LA R0,NREADYL LENGTH OF MESSAGE @VA01730 00372000
  483. LA R2,ALARM PARM'S @VA01730 00373000
  484. MVI NREADY1+3,C' ' 00374000
  485. LA R11,WSC10 POINT TO THE WSC X'10' PSW @VA00867 00375000
  486. B CNIO 00376000
  487. SPACE 3 00377000
  488. * 00378000
  489. * 00379000
  490. DMKSAVNC DS 0H 00380000
  491. BALR R3,0 00381000
  492. USING *,R3 00382000
  493. S R3,=A(*-DMKSAV) 00383000
  494. USING DMKSAV,R3 00384000
  495. SR R8,R8 RESET ERROR COUNTER 00385000
  496. LA R11,DISAWT0 SET PSW POINTER TO DEFAULT @VA00867 00386000
  497. OI RW1+4,SKIP SET SKIP FOR FIRST WRITE/READ 00387000
  498. MVC EXNPSW(8),EXTINT SET RESTART PSW 00388000
  499. L R9,=A(DMKSYSTP) DEVICE TYPE FOR SYSRES 00389000
  500. CLI 1(R9),TYP2314 2314 ?? 00390000
  501. BE GETDSK YES -- REGISTER SET IS OK 00391000
  502. LA R4,TBL3340 SET UP FOR 3340 @V2A2029 00392000
  503. LA R5,TBL3340E .. @V2A2029 00393000
  504. CLI 1(R9),TYP3340 IS IT 3340 ? @V2A2029 00394000
  505. BE SETGPRS YES -- PROCESS @V2A2029 00395000
  506. LA R4,TBL3350 SET UP FOR 3350 @V304498 00396000
  507. LA R5,TBL3350E .. @V304498 00397000
  508. CLI 1(R9),TYP3350 IS IT 3350 ? @V304498 00398000
  509. BE SETGPRS YES -- PROCESS @V304498 00399000
  510. LA R4,TBL3375 Set up for 3375 HRC106DK 00399100
  511. LA R5,TBL3375E .. HRC106DK 00399200
  512. CLI 1(R9),TYP3375 Is it 3375 ? HRC106DK 00399300
  513. BE SETGPRS Yes -- process HRC106DK 00399400
  514. LA R4,TBL3380 Set up for 3380 HRC106DK 00399500
  515. LA R5,TBL3380E .. HRC106DK 00399600
  516. CLI 1(R9),TYP3380 Is it 3380 ? HRC106DK 00399700
  517. BE SETGPRS Yes -- process HRC106DK 00399800
  518. LA R4,TBL3330 MUST BE 3330 OR 2305 00400000
  519. LA R5,TBL3330E 00401000
  520. CLI 1(R9),TYP3330 IS IT 3330 00402000
  521. BE SETGPRS YES -- 00403000
  522. LA R5,TBL2305E MUST BE 2305 00404000
  523. CLI 1(R9),TYP2305 00405000
  524. BE SETGPRS 00406000
  525. LA R1,ERR353 ADDRESS OF ERROR MSG. DMKSAV353 @V2A2029 00407000
  526. LA R0,ERR353L LENGTH OF MESSAGE @VA02884 00408000
  527. LA R2,ALARM PARM'S (ALARM) @V2A2029 00409000
  528. LA R11,WSC11 POINT TO WAIT PSW TO LOAD LATER @VA00867 00410000
  529. B CNIO GO TELL HIM THE BAD NEWS @VA00867 00411000
  530. SPACE 2 00412000
  531. SETGPRS ST R4,HRTBLADR SET UP TABLE START 00413000
  532. ST R5,INDEXEND AND END ADDRESSES 00414000
  533. GETDSK DS 0H 00415000
  534. L R10,=A(DMKSYSRS) 00416000
  535. LH R10,0(R10) ... 00417000
  536. ST R10,DISK SAVE 00418000
  537. ST R8,SAVE @VA11715 00418050
  538. SRL R10,8 @VA11715 00418100
  539. LA R8,1 @VA11715 00418150
  540. SR R9,R9 @VA11715 00418200
  541. AR R10,R8 @VA11715 00418250
  542. LUPE SRDL R8,1 @VA11715 00418300
  543. BCT R10,LUPE @VA11715 00418350
  544. ST R9,CREG2 @VA11715 00418400
  545. N R9,MASK @VA11715 00418450
  546. LTR R9,R9 @VA11715 00418500
  547. BZ NEXT @VA11715 00418550
  548. LCTL C2,C2,CREG2 @VA11715 00418600
  549. NEXT L R8,SAVE @VA11715 00418650
  550. L R9,=A(DMKSYSNU) 00419000
  551. L R9,0(,R9) CYLS START,END TWO HALF WORDS HRC102DK 00420590
  552. STCM R9,B'1100',CYL SAVE STARTING CYLINDER ADDRESS HRC102DK 00421180
  553. STCM R9,B'1100',START FOR RESTORE HRC102DK 00421770
  554. STCM R9,B'0011',ENDCYL UPPER BOUNDARY HRC102DK 00422360
  555. LA 14,SNS 00423000
  556. ST 14,CAW 00424000
  557. L R10,DISK GET ADDR. 00425000
  558. QDISK SIO 0(10) 00426000
  559. BC 1,NDISK NOT THERE 00427000
  560. BC 6,QDISK TRY AGAIN 00428000
  561. TIO 0(10) 00429000
  562. BC 7,*-4 00430000
  563. TM SNSIN,INTREQ NOT READY ? @VA02814 00431000
  564. BO NDISK TELL THE OPERATOR @VA02814 00432000
  565. SPACE 2 00433000
  566. LA R14,LABCCW SET CCW 00434000
  567. BAL R15,SCPZCAW DO IO 00435000
  568. SPACE 3 00436000
  569. CLUACT L R10,=A(DMKSYSVL) GET SYSRES VOLID 00437000
  570. CLC VOLID+4(6),0(R10) COMPARE 00438000
  571. BNE SCPBADLB NO GOOD 00439000
  572. SPACE 3 00440000
  573. LR R12,R3 SET UP NEW BASE REG 00441000
  574. USING DMKSAV,R12 00442000
  575. SPACE 00443000
  576. STCK TEMPR4 STORE TIME OF DAY CLOCK 00444000
  577. BNE WRITENUC IF THE CLOCK IS NOT SET DO NOT SET UP THE*00445000
  578. SYSTEM CREATION DATE AND TIME 00446000
  579. LM R0,R1,TEMPR4 GET TOD CLOCK VALUE 00447000
  580. SRDL R0,12 CONVERT TO MICROSECONDS 00448000
  581. D R0,=F'8000000' GET NUMBER OF SECONDS BY THE FOLLOWING 00449000
  582. LR R3,R0 DOUBLE PRECISION DIVISION: 00450000
  583. SLR R2,R2 X/Y=8*(X/(8*Y))+MOD(X,8*Y)/Y 00451000
  584. D R2,=F'1000000' WHERE X = NUMBER OF MICROSECONDS SINCE 00452000
  585. SLR R0,R0 EPOCH 00453000
  586. SLDL R0,3 Y = 1000000 00454000
  587. ALR R1,R3 ... 00455000
  588. BC 12,*+8 ... 00456000
  589. A R0,F1 R0 - R1 = NUMBER OF SECONDS SINCE EPOCH 00457000
  590. D R0,=F'86400' R1 = NUMBER OF DAYS SINCE EPOCH *00458000
  591. R0 = NUMBER OF SECONDS PAST MIDNIGHT 00459000
  592. L R15,=A(DMKSYSTZ) GET PTR TO TIME ZONE CORRECTION 00460000
  593. A R0,0(,R15) ADJUST SEC TO INCLUDE GMT DIFFERENCE 00461000
  594. BNM *+10 BRANCH IF RESULT .GE. ZERO 00462000
  595. A R0,=F'86400' ADD A DAYS WORTH OF SECONDS 00463000
  596. BCTR R1,0 AND SUBTRACT A DAY 00464000
  597. C R0,=F'86400' SEC .LT. 1 DAY ? 00465000
  598. BL *+12 YES 00466000
  599. S R0,=F'86400' SUBTRACT A DAYS WORTH OF SECONDS 00467000
  600. A R1,F1 AND ADD A DAY 00468000
  601. LR R5,R0 00469000
  602. M R4,=F'1000000' MULTIPLY CORRECTED SECONDS BY 1000000 00470000
  603. ALR R5,R2 ADD REMAINDER FROM FIRST DIVISION 00471000
  604. BC 12,*+8 ... 00472000
  605. A R4,F1 ... 00473000
  606. SLDL R4,12 00474000
  607. LM R14,R15,TEMPR4 GET INITIAL TOD CLOCK VALUE 00475000
  608. SLR R15,R5 - NUMBER OF SECONDS INTO THE DAY 00476000
  609. BC 11,*+8 ... 00477000
  610. SL R14,F1 ... 00478000
  611. SLR R14,R4 ... 00479000
  612. STM R14,R15,TEMPR2 RESULT IS TOD CLOCK VALUE AT MIDNIGHT *00480000
  613. TODAY LOCAL TIME 00481000
  614. SPACE 00482000
  615. LA R3,365 00483000
  616. CR R1,R3 IS DAYS .LT. 365 ? 00484000
  617. BNL NOT1900 NO 00485000
  618. LR R6,R1 GET NUMBER OF DAYS HERE 00486000
  619. SLR R1,R1 INDICATE YEAR = 00 00487000
  620. B YEARSET 00488000
  621. SPACE 00489000
  622. NOT1900 EQU * HERE IF YEAR IS GREATER THAN 1900 00490000
  623. SR R1,R3 SUBTRACT THE YEAR 1900 OUT 00491000
  624. SLR R0,R0 CLEAR FOR DIVIDE 00492000
  625. D R0,=A(4*365+1) DIVIDE BY THE NUMBER OF DAYS IN 4 YEARS 00493000
  626. LR R7,R0 R7 = NUMBER OF DAYS SINCE LAST LEAP 00494000
  627. SLR R6,R6 00495000
  628. DR R6,R3 00496000
  629. A R6,F1 R6 = NUMBER OF DAYS SINCE START OF YEAR 00497000
  630. C R7,F4 MULTIPLE OF 4 YEARS ? 00498000
  631. BNE NOTQUAD NO 00499000
  632. AR R6,R3 SET DAY = 366 00500000
  633. L R7,F3 ... 00501000
  634. NOTQUAD EQU * 00502000
  635. ALR R1,R1 00503000
  636. ALR R1,R1 00504000
  637. A R1,F1 00505000
  638. AR R1,R7 00506000
  639. SPACE 00507000
  640. YEARSET EQU * HERE WHEN YEAR HAS BEEN DETERMINED 00508000
  641. L R13,=A(DMKCPICD) POINT TO THE SYSTEM CREATION DATE *00509000
  642. AND TIME DATE AREA IN THE SYSTEM ID MSG 00510000
  643. SPACE 00511000
  644. CVD R1,TEMPSAVE CONVERT DATE TO DECIMAL 00512000
  645. UNPK 6(2,R13),TEMPSAVE+6(2) UNPACK AND 00513000
  646. OI 7(R13),X'F0' FORMAT IT 00514000
  647. SPACE 00515000
  648. * HERE TO CONVERT JULIAN DATE TO GREGORIAN 00516000
  649. SPACE 1 00517000
  650. * THE FOLLOWING ALGORITHM TO CONVERT A JULIAN DATE TO GREGORIAN WAS 00518000
  651. * ADOPTED FROM AN ALGORITHM ENTITLED "TABLELESS DATE CONVERSION" 00519000
  652. * APPEARING IN "COMMUNICATIONS OF THE ACM", VOLUME 13, NUMBER 10, 00520000
  653. * OCTOBER 1970, P. 621, BY RICHARD A. STONE, WESTERN ELECTRIC COMPANY, 00521000
  654. * P.O. BOX 900, PRINCETON, NJ 08540. 00522000
  655. SLR R2,R2 CLEAR REG 2 00523000
  656. N R1,F3 YEAR MOD 4 00524000
  657. BNZ *+8 BRANCH IF NOT A LEAP YEAR 00525000
  658. LA R2,1 GET GREGORIAN DATE FROM JULIAN 00526000
  659. LA R1,59(,R2) ... 00527000
  660. CR R6,R1 ... 00528000
  661. BNH *+10 ... 00529000
  662. A R6,F2 ... 00530000
  663. SR R6,R2 ... 00531000
  664. A R6,=F'91' ... 00532000
  665. LR R9,R6 ... 00533000
  666. M R8,=F'100' ... 00534000
  667. D R8,=F'3055' ... 00535000
  668. LR R15,R9 ... 00536000
  669. M R14,=F'3055' ... 00537000
  670. D R14,=F'100' ... 00538000
  671. SR R6,R15 ... 00539000
  672. BCTR R9,0 ... 00540000
  673. BCTR R9,0 ... 00541000
  674. CVD R6,TEMPSAVE CONVERT DAY TO DECIMAL 00542000
  675. UNPK 3(2,R13),TEMPSAVE+6(2) UNPACK AND 00543000
  676. OI 4(R13),X'F0' FORMAT IT 00544000
  677. MVI 5(R13),C'/' 00545000
  678. CVD R9,TEMPSAVE CONVERT MONTH TO DECIMAL 00546000
  679. UNPK 0(2,R13),TEMPSAVE+6(2) UNPACK AND 00547000
  680. OI 1(R13),X'F0' FORMAT IT 00548000
  681. MVI 2(R13),C'/' 00549000
  682. SPACE 1 00550000
  683. * SET UP TIME 00551000
  684. LA R13,9(0,R13) POINT TO THE TIME IN MSG 00552000
  685. LM R0,R1,TEMPR4 GET TOD CLOCK VALUE IN R0 AND R1 00553000
  686. SL R1,TEMPR2+4 SUBTRACT CORRECT TIME AT MIDNIGHT 00554000
  687. BC 11,*+8 ... 00555000
  688. SL R0,=F'1' ... 00556000
  689. SL R0,TEMPR2 ... 00557000
  690. SRDL R0,12 GET NUMBER OF MICROSECONDS PAST MIDNIGHT 00558000
  691. D R0,=F'1000000' GET NUMBER OF SECONDS PAST MIDNIGHT 00559000
  692. SR R0,R0 IGNORE REMAINDER 00560000
  693. D R0,=F'3600' GET NUMBER OF HOURS PAST MIDNIGHT 00561000
  694. CVD R1,TEMPSAVE CONVERT NUMBER OF HOURS TO DECIMAL 00562000
  695. UNPK 0(4,R13),TEMPSAVE+6(3) UNPACK 00563000
  696. MVI 2(R13),C':' NEATEN UP 00564000
  697. LR R1,R0 GET REMAINDER FROM LAST DEVIDE 00565000
  698. SR R0,R0 CLEAR 00566000
  699. D R0,=F'60' GET NUMBER OF MINUTES PAST THIS HOUR 00567000
  700. CVD R1,TEMPSAVE CONVERT NUMBER OF MINUTES TO DECIMAL 00568000
  701. UNPK 3(4,R13),TEMPSAVE+6(3) UNPACK 00569000
  702. MVI 5(R13),C':' NEATEN UP 00570000
  703. CVD R0,TEMPSAVE CONVERT NUMBER OF SECONDS TO DECIMAL 00571000
  704. UNPK 6(2,R13),TEMPSAVE+6(2) UNPACK 00572000
  705. OI 7(R13),X'F0' MAKE UP FOR HARDWARE DEFICIENCIES 00573000
  706. SPACE 00574000
  707. WRITENUC LA R14,CCWPAG GET CHANNEL PROGRAM TO WRITE NUCLEUS 00575000
  708. LM R0,R6,GPRS RESTORE THE REGISTER SET 00576000
  709. DROP R12 00577000
  710. USING DMKSAV,R3 00578000
  711. L R7,=A(DMKCKP+4096) WRITE ALL OF CP CODE @V407429 00579100
  712. BAL R15,SETHHR GO WRITE NUCLEUS TO DISK 00580000
  713. SPACE 00580100
  714. L R9,=A(DMKCKPLD) GET DASD ADDRESS SLOT IN DMKCKP @V407429 00580200
  715. MVC 0(7,R9),SEEKC SAVE ADDRESS OF DMKCKP PAGE 2 @V407429 00580300
  716. SPACE 00581000
  717. L R9,=A(DMKCKPRS) GET DASD ADDRESS SLOT IN CHECKPOINT 00582000
  718. MVC 0(7,R9),SEEKB SAVE ADDRESS OF DMKSAV FOR DMKCPI 00583000
  719. L R9,=A(DMKCKPST) POINT TO THE START OF THE NUCLEUS 00584000
  720. MVC 0(2,R9),START AND MOVE IN THE FIRST CYL ADD FOR DMKDDR 00585000
  721. MVC 2(2,R9),CYL MOVE IN THE LAST NUCLEUS CYLINDER ADD 00586000
  722. LH R1,START GET NUC START @VA11884 00586100
  723. CALL DMKCVTBD CONVERT TO EBCDIC HRC027DK 00586250
  724. STCM R1,B'1111',NUCSTRT SAVE RESULT HRC027DK 00586300
  725. LH R1,CYL GET NUC END @VA11884 00586400
  726. CALL DMKCVTBD CONVERT TO EBCDIC HRC027DK 00586590
  727. STCM R1,B'1111',NUCSTOP SAVE THE RESULT HRC027DK 00586680
  728. SPACE 00587000
  729. LA R14,CCWIPL WRITE OUT IPL SEQUENCE 00588000
  730. BAL R15,SCPZCAW DO IO 00589000
  731. SPACE 00590000
  732. MVC LDVOL(6),VOLID+4 VOLUME SERIAL TO MESSAGE 00591000
  733. LA R1,LDMSG MSG. 'NUCLEUS LOADED ON XXXX' @V200735 00592000
  734. LA R0,LDMSGL LENGTH OF MESSAGE @V200735 00593000
  735. LA R2,0 PARM'S @V200735 00594000
  736. B CNIO OUTPUT THIS MESSAGE @V200735 00595000
  737. SPACE 3 00596000
  738. * 00597000
  739. SCPZCAW ST R14,CAW SET FOR IO 00598000
  740. MVC IONPSW(8),LBIOPN SET INT RETURN 00599000
  741. L R10,DISK GET DISK ADDRESS 00600000
  742. SIO 0(R10) START 00601000
  743. BC 7,*-4 LOOP 00602000
  744. WAITL LPSW XWAIT WAIT FOR INT 00603000
  745. LBIOINT CH R10,IOOPSW+2 TEST FOR DEVICE STARTED 00604000
  746. BNE WAITL NO, WAIT 00605000
  747. CLC CSW+4(2),=AL2((CE+DE)*256) CHANNEL/DEVICE END ONLY ? 00606000
  748. BNE SNSRT IF NOT, ERROR CONDITION RESULTED @V2B3729 00607000
  749. SR R8,R8 RESET ERROR COUNTER 00608000
  750. BR R15 RETURN ON GPR-15 00609000
  751. SNSRT MVC ERRCSW(12),CSW SAVE ERROR CSW AND CAW @V2B3729 00610000
  752. LA R10,SNS ADDRESS OF SENSE CCW @V2B3729 00611000
  753. ST R10,CAW SET UP CAW @V2B3729 00612000
  754. L R10,DISK RELOAD DISK ADDRESS @V2B3729 00613000
  755. SNSRTSIO SIO 0(R10) START SENSE @VA09882 00613100
  756. BNZ SNSRTSIO LOOP UNTIL FINISHED @VA09882 00613200
  757. SNSRTTIO TIO 0(R10) TIO TO CLEAR STATUS @VA09882 00613300
  758. BNZ SNSRTTIO @VA09882 00613400
  759. LA R8,1(,R8) INCREASE ERROR COUNTER BY ONE 00614000
  760. CH R8,=H'10' ERROR COUNTER REACH 10 YET ? 00615000
  761. BNH SCPZCAW NO, TRY CHANNEL PROGRAM AGAIN 00616000
  762. OI SAVEFLAG,MSG352 INDICATE REG LOAD BEFORE LPSW @V2B3729 00617000
  763. LA R1,ERR352 ERROR MSG DMKSAV352W @V200735 00618000
  764. LA R0,ERR352L LENGTH OF ERROR MESSAGE @V200735 00619000
  765. LA R2,ALARM PARM'S @V200735 00620000
  766. LA R11,WSC11 POINT TO WAIT PSW FOR LATER @VA00867 00621000
  767. B CNIO NOW ISSUE MESSAGE DMKSAV352W 00622000
  768. EJECT 00623000
  769. * 00624000
  770. DS 0F @V2B3729 00625000
  771. SAVR3 DC F'0' GPR3 SAVE AREA @V2B3729 00626000
  772. SAVR11 DC F'0' GPR11 SAVE AREA @V2B3729 00627000
  773. SAVE DS F'0' @VA11715 00627100
  774. MASK DC XL4'03FF0000' @VA11715 00627200
  775. CREG2 DS F'0' @VA11715 00627300
  776. * 00628000
  777. LBIOPN DS 0D ALIGN 00629000
  778. DC X'00040000' 00630000
  779. DC A(LBIOINT) 00631000
  780. * 00632000
  781. IPLDATA DC X'000C000000000800' EXTENDED PSW FOR IPL 00633000
  782. CCW 6,X'800',0,4096 CCW TO READ IN DMKCKPT 00634000
  783. DC A(0,0) UNUSED 00635000
  784. *** 00636000
  785. * 00637000
  786. LABCCW CCW X'07',SKLAB,CC,6 00638000
  787. CCW X'31',SCHLB,CC,5 00639000
  788. CCW X'08',*-8,0,0 00640000
  789. CCW 6,VOLID,CC+SILI,10 READ VOLUME LABEL 00641000
  790. CCW X'03',0,SILI,1 00642000
  791. * 00643000
  792. CCWIPL CCW X'07',SKLAB,CC+SILI,6 SEEK TO CYL 0, HEAD 0. 00644000
  793. CCW X'31',RECORD1,CC,5 00645000
  794. CCW X'08',*-8,0,0 00646000
  795. CCW X'05',IPLDATA,CC+SILI,24 WRITE IPL RECORD 00647000
  796. CCW X'31',RECORD2,CC,5 00648000
  797. CCW X'08',*-8,0,0 00649000
  798. CCW 5,DMKCKPT,SILI,4096 WRITE OUT DMKCKPT 00650000
  799. SKLAB DC X'00000000000003' 00651000
  800. SCHLB EQU SKLAB+2 00652000
  801. SPACE 2 00653000
  802. RECORD1 DC X'0000000001' 00654000
  803. RECORD2 DC X'0000000002' 00655000
  804. SCPBADLB L R1,DISK GET SYSRES ADDRESS @VA10206 00656010
  805. CALL DMKCVTBH CONVERT ADDRESS TO EBCDIC @VA10206 00656020
  806. STCM R1,B'0111',NRADDR PUT ADDRESS INTO MSG @VA10206 00656030
  807. LA R0,VOLMSGL LENGTH OF ERROR MESSAGE @V200735 00657000
  808. LA R2,ALARM PARM'S @V200735 00658000
  809. MVC VOLMSG1,0(R10) SET VOLID 00659000
  810. MVI NRADDR+3,C' ' @VA00867 00661000
  811. LA R11,WSC10 POINT TO PROPER PSW @VA00867 00662000
  812. B CNIO OUTPUT MSG 00663000
  813. * 00664000
  814. VOLMSG DC C'DMKSAV350W DASD ' @VA00867 00665000
  815. NRADDR DC CL4' ' @VA00867 00666000
  816. DC C'Volid not ' HRC202DK 00667490
  817. VOLMSG1 DC CL6' ' @VA11387 00668100
  818. VOLMSGL EQU *-VOLMSG 00669000
  819. * 00670000
  820. NREADY DC C'DMKSAV351W DASD ' @VA00867 00671000
  821. NREADY1 DC CL4' ' 00672000
  822. DC C' not Ready' HRC202DK 00673490
  823. NREADYL EQU *-NREADY 00674000
  824. * 00675000
  825. ERR352 DC C'DMKSAV352W Fatal DASD I/O error' HRC202DK 00676490
  826. ERR352L EQU *-ERR352 00677000
  827. ERR353 DC C'DMKSAV353W SYSRES device type invalid' HRC202DK 00678490
  828. ERR353L EQU *-ERR353 @VA00867 00679000
  829. ERR354 DC C'DMKSAV354E Nucleus cylinders exceed allocation; Reload*00679020
  830. Nucleus from BACKUP.' 00679040
  831. ERR354L EQU *-ERR354 HRC102DK 00679060
  832. SPACE 1 00679100
  833. TRKCONCK EQU X'02' 3340/44 TRACK CONDITION CHECK @V56BDA8 00679200
  834. SPACE 2 00680000
  835. LTORG @V200820 00681000
  836. EJECT 00682000
  837. COPY DEVTYPES 00683000
  838. COPY EQU 00684000
  839. PSA 00685000
  840. END DMKSAV @V200820 00686000