ibm:vm370-lib:cp:dmksav.assemble_src
Table of Contents
DMKSAV Source
References
- Fixes Applied : 10
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC106DK]
Source Listing
- DMKSAV.ASSEMBLE.txt
- SAV TITLE 'DMKSAV (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT @V200820 00002000
- *. 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKSAV 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * TO SAVE AND RESTORE A PAGE IMAGE COPY OF THE CP NUCLEUS ON 00010000
- * THE SYSTEM RESIDENCE DISK. 00011000
- * 00012000
- * ATTRIBUTES - 00013000
- * 00014000
- * NON-REENTRANT, NON-RESIDENT, STAND ALONE PROGRAM, 00015000
- * DMKSAVNC ENTERED VIA LDT CARD FROM DMKLDR, 00016000
- * DMKSAVRS ENTERED VIA BALR FROM DMKCKP 00017000
- * 00018000
- * ENTRY POINTS - 00019000
- * 00020000
- * DMKSAVNC - TO WRITE A PAGE IMAGE COPY OF THE CP NUCLEUS 00021000
- * DMKSAVRS - TO RESTORE A PAGE IMAGE COPY OF THE CP NUCLEUS 00022000
- * 00023000
- * ENTRY CONDITIONS - 00024000
- * 00025000
- * NONE 00026000
- * 00027000
- * EXIT CONDITIONS - 00028000
- * 00029000
- * NORMAL - DMKSAVNC - A MESSAGE INDICATING SUCCESSFULL 00030000
- * COMPLETION IS WRITTEN TO THE OPERATOR'S CONSOLE 00031000
- * DMKSAVRS - CP NUCLEUS HAS BEEN LOADED INTO MAIN 00032000
- * STORAGE 00033000
- * 00034000
- * ERROR - AN ERROR MESSAGE IS WRITTEN TO THE OPERATOR'S 00035000
- * CONSOLE 00036000
- * 00037000
- * CALLS TO OTHER ROUTINES - 00038000
- * 00039000
- * DMKOPRWT - EMERGENCY OPERATOR COMMUNICATION ROUTINE 00040000
- * 00041000
- * EXTERNAL REFERENCES - 00042000
- * 00043000
- * DMKSYSVL - SYSTEM RESIDENCE VOLUME SERIAL 00044000
- * DMKSYSRS - SYSTEM RESIDENCE DEVICE ADDRESS 00045000
- * DMKSYSTP - SYSTEM RESIDENCE DEVICE CLASS AND TYPE 00046000
- * DMKSYSNU - NUCLEUS STARTING AND ENDING CYLINDER NUMBERHRC102DK 00047290
- * ON SYSTEM RESIDENCE VOLUME HRC102DK 00047580
- * DMKCKPST - STARTING AND ENDING DASD ADD OF THE NUCLEUS 00048000
- * DMKCPICD - SYSTEM CREATION DATE AND TIME. 00049000
- * DMKSYSTZ - SYSTEM TIME ZONE CORRECTION 00050000
- * 00051000
- * TABLES / WORK AREAS - NONE 00052000
- * 00053000
- * REGISTER USAGE - 00054000
- * 00055000
- * GPR10 = IPL DEVICE ADDRESS 00056000
- * GPR11 = POINTER TO WAIT STATE PSW'S LOADED AFTER CONSOLE I/O 00057000
- * GPR12 = BASE REGISTER 00058000
- * 00059000
- * NOTES - NONE 00060000
- * 00061000
- * OPERATION - 00062000
- * 00063000
- * DMKSAVNC - 00064000
- * 00065000
- * 1. TEST SYSRES TYPE. IF NOT 2314,2319,3330,3340,3350 OR 2305, 00066000
- * ISSUE THE DMKSAV353W MESSAGE AND LOAD A WAIT PSW WITH A 00067000
- * WAIT STATE CODE OF X'011'. ELSE, SET UP DEVICE 00068000
- * CHARACTERISTICS ACCORDING TO THE DEVICE TYPE. 00069000
- * 2. ISSUE A SENSE COMMAND TO THE DEVICE. IF THE DEVICE IS NOT 00070000
- * READY, WRITE OUT THE DMKSAV351W ERROR MESSAGE AND LOAD A 00071000
- * WAIT PSW WITH A WAIT STATE CODE OF X'010'. 00072000
- * 3. READ THE VOLUME LABEL. IF NOT THE CORRECT LABEL, WRITE 00073000
- * OUT THE DMKSAV350W ERROR MESSAGE AND LOAD A WAIT STATE PSW 00074000
- * WITH A WAIT STATE CODE OF X'010'. 00075000
- * 4A. THE PSW LOADED BY STEPS 3 AND 4 IS ENABLED FOR EXTERNAL 00076000
- * INTERRUPTS. ONCE THE PROBLEM INDICATED BY THE MESSAGE IS 00077000
- * REMEDIED, THE USER SHOULD HIT THE INTERRUPT BUTTON, AT 00078000
- * WHICH TIME THE OPERATION RESUMES AT STEP 1. 00079000
- * 4. IF THE TIME OF DAY CLOCK IS NOT SET GO TO STEP 5. 00080000
- * COMPUTE THE TIME AND DATE FROM THE TIME OF DAY CLOCK 00081000
- * INTO THE SYSTEM ID MESSAGE IN DMKCPICD. 00082000
- * 5. WRITE THE NUCLEUS OUT TO THE DISK, SAVE THE DASD ADDRESS 00083000
- * FOR DMKSAV FOR CHECKPOINT, AND WRITE OUT THE IPL CCW 00084000
- * SEQUENCE. THEN WRITE MESSAGE 'NUCLEUS LOAD ON 'LABEL'' 00085000
- * AND LOAD WAIT STATE CODE OF X'012'. 00086000
- * 00087000
- * DMKSAVRS - 00088000
- * 00089000
- * 1. SET UP TO READ THE NUCLEUS INTO STORAGE FROM THE NUCLEUS 00090000
- * CYLINDER. 00091000
- * 2. SET UP CAW AND IO NEW PSW FOR THE READ AND ISSUE THE SIO. 00092000
- * 3. WHEN GET AN INTERRUPT,CHECK IF IT FOR THE SIO IN STEP 2. 00093000
- * IF NOT GO BACK INTO A WAIT STATE. IF HAD AN ERROR ON THE 00094000
- * READ, GO BACK TO STEP 2 AND TRY AGAIN. 00095000
- * 4. IF AT THE END OF A CYLINDER, BUMP TO THE NEXT CYLINDER. 00096000
- * 5. IF MORE IS TO BE READ, SET UP THE CCW'S AND GO BACK TO 00097000
- * STEP 2. IF FINISHED READING, GO TO DMKCPINT VIA A BRANCH. 00098000
- * 00099000
- * RESPONSES - WAIT STATE CODE 00100000
- * 00101000
- * NUCLEUS LOAD ON 'LABEL' 012 00102000
- * 00103000
- * ERROR MESSAGES - 00104000
- * 00105000
- * DMKSAV350W DASD 'RADDR' VOLID NOT 'LABEL' 010 00106000
- * DMKSAV351W DASD 'RADDR' NOT READY 010 00107000
- * DMKSAV352W FATAL DASD I/O ERROR 011 00108000
- * GPR0 CONTAINS ADDDRESS OF DEVICE IN ERROR 00109000
- * GPR1-GPR2 CONTAINS ERROR CSW 00110000
- * GPR3 CONTAINS CURRENT ROUTINE ADDRESS 00111000
- * GPR4 CONTAINS ADDRESS OF FIRST CCW 00112000
- * GPR5 TO GPR10 CONTAINS UP TO 24 SENSE BYTES 00113000
- * GPR11 CONTAINS MODULE BASE ADDRESS 00114000
- * GPR13 ADDRESS OF SEEK BBCCHHR 00115000
- * GPR14-GPR15 CONTAINS BBCC HHR 00116000
- * DMKSAV353W SYSRES DEVICE TYPE INVALID 011 00117000
- * 00118000
- * WAIT STATE - NO ERROR MESSAGE 00119000
- * 00120000
- * MACHINE CHECK 00A 00121000
- * 00122000
- *. 00123000
- EJECT 00124000
- ISEQ 73,80 00125000
- COPY OPTIONS 00126000
- COPY LOCAL 00127000
- PUNCH 'SPB' START AT NEXT PAGE BOUNDARY @V200820 00128000
- DMKSAV CSECT 00129000
- SPACE 3 00130000
- ENTRY DMKSAVNC,DMKSAVRS 00131000
- EXTRN DMKCPINT,DMKCKPT,DMKSYSTP,DMKSYSRS,DMKSYSNU,DMKSYSVL 00132000
- EXTRN DMKCPICD,DMKSYSTZ 00133000
- EXTRN DMKCKPRS 00134000
- EXTRN DMKCKP 00135000
- EXTRN DMKCKPST 00136000
- EXTRN DMKOPRWT @V200820 00137000
- EXTRN DMKCVTBH,DMKCVTBD HRC027DK 00138040
- EXTRN DMKCKPLD @V407429 00138100
- SPACE 3 00139000
- USING PSA,R0 00140000
- SPACE 3 00141000
- ID DC CL8'DMKSAV' MODULE NAME 00142000
- EJECT 00143000
- USING DMKSAV,R3 00144000
- STCAW ST 14,CAW .. 00145000
- MVC IONPSW(8),IONP SET IO NEW PSW 00146000
- MVC MCNPSW(8),MCNP SET MACHINE CHECK PSW 00147000
- L R10,DISK GET DISK ADDRESS 00148000
- SIO SIO 0(R10) @V56BDA8 00149100
- BC 7,*-4 00150000
- WAITX LPSW XWAIT 00151000
- * 00152000
- * 00153000
- * 00154000
- IOINT CH 10,IOOPSW+2 00155000
- BNE WAITX IGNORE OTHER INTERRUPTS 00156000
- CLC CSW+4(2),=AL2((CE+DE)*256) CHANNEL/DEVICE END ONLY ? 00157000
- BE PROCINT YES, GOOD STATUS 00158000
- MVC ERRCSW(12),CSW SAVE CSW AND CAW DATA @V2B3729 00159000
- LA R10,SNS ADDRESS OF SNS CCW @V2B3729 00160000
- ST R10,CAW SET UP FOR SIO @V2B3729 00161000
- L R10,DISK GET ADDRESS OF DISK @V2B3729 00162000
- SIO 0(R10) START SENSE IO @V2B3729 00163000
- BNZ *-4 .. @V2B3729 00164000
- TIO 0(R10) CLEAR IO @V2B3729 00165000
- BNZ *-4 .. @V2B3729 00166000
- TM SNSIN,TRKCONCK TRACK CONDITION CHECK? @V56BDA8 00166010
- BZ COUNTERR NO, COUNT THE ERROR @V56BDA8 00166020
- LA R9,READHAR0 READ HOME ADDRESS, R0 CCWS @V56BDA8 00166030
- ST R9,CAW SET FOR SIO @V56BDA8 00166040
- TIO 0(R10) DRAIN ANY INTERRUPTS @V56BDA8 00166050
- BC 7,*-4 @V56BDA8 00166060
- SIO 0(R10) START IT UP @V56BDA8 00166070
- BC 7,*-4 UNTIL FREE @V56BDA8 00166080
- TIO 0(R10) TEST FOR COMPLETION @V56BDA8 00166090
- BC 7,*-4 TRY AGAIN @V56BDA8 00166100
- CLC CSW+4(2),=AL2((CE+DE)*256) CLEAN END? @V56BDA8 00166110
- BNE COUNTERR NO, ERROR @V56BDA8 00166120
- LA R9,ALTSEEK ALTERNATE CHANNEL PROGRAM @V56BDA8 00166130
- ST R9,CAW SET FOR SIO @V56BDA8 00166140
- B SIO RESTART ON ALTERNATE TRACK @V56BDA8 00166150
- SPACE 1 00166160
- COUNTERR EQU * @V56BDA8 00166170
- LA R8,1(,R8) INCREASE ERROR COUNT BY ONE 00167000
- CH R8,=H'10' ERROR COUNT REACH 10 YET ? 00168000
- BNH STCAW IF NOT, RETRY THE OPERATION 00169000
- LA R1,ERR352 ERROR MSG DMKSAV352W @V200735 00171000
- LA R0,ERR352L LENGTH OF MESSAGE @V200735 00172000
- SPACE , HRC102DK 00172300
- WRITERR DS 0H HRC102DK 00172600
- LA R2,ALARM PARM'S @V200735 00173000
- OI SAVEFLAG,MSG352 SET SWITCH TO LOAD REGS HRC102DK 00173500
- LA R11,WSC11 POINT TO WHICH PSW TO LOAD @VA00867 00174000
- B CNIO NOW ISSUE ERROR MESSAGE HRC102DK 00175090
- SPACE , HRC102DK 00175180
- BNDRYERR DS 0H HRC102DK 00175270
- LA R1,ERR354 ERROR MSG DMKSAV354E HRC102DK 00175360
- LA R0,ERR354L LENGTH OF MESSAGE HRC102DK 00175450
- B WRITERR HRC102DK 00175540
- SPACE , HRC102DK 00175630
- PROCINT SR R8,R8 RESET THE ERROR COUNT 00176000
- MVC 0(4),DISK SAVE ADDR FOR BRANCH TO CPINIT! 00177000
- SPACE 3 00178000
- BXLE R2,R4,NXTPAGE INDEX UP HEAD -> RECORD TABLE 00179000
- SPACE 00180000
- LH R2,CYL IF END OF CYL REACHED, GET NEXT 00181000
- LA R2,1(,R2) -- 00182000
- CH R2,ENDCYL GREATER THAN MAX CYL HRC102DK 00182300
- BH BNDRYERR TOO LARGE OF NUCLEUS HRC102DK 00182600
- STH R2,CYL AND SAVE 00183000
- L R2,HRTBLADR RE-INITIALIZE TO START OF TABLE 00184000
- SPACE 00185000
- NXTPAGE DS 0H READ/WRITE NEXT PAGE 00186000
- ALR R0,R6 BUMP DATA ADDRESS IN CCW 00187000
- LR R12,R0 GET DATA ADDRESS AND OPCODE 00188000
- LA R12,0(,R12) STRIP OPCODE 00189000
- SKSAVB CR R12,R7 SAVE/RESTORE ONLY UP TO HERE 00190000
- BL SETCCW LOW - KEEP GOING 00191000
- BCR 2,R15 HIGH - RETURN TO SAVE PROGRAM 00192000
- C R12,=A(DMKCKP+4096) IS THIS DMKCKP PAGE 2 ? @V407429 00193200
- BNE CKTYPE NO, CHECK SAVING OR RESTORING @V407429 00193300
- MVC SEEKC(5),SEEKA SAVE DISK ADDRESS OF CKP PAGE 2 @V407429 00193400
- MVC SEEKC+5(2),0(R2) SAVE HEAD AND RECORD 00193500
- CKTYPE L R12,=A(DMKCPINT) EXIT ADDRESS FOR RESTORE @V407429 00193600
- TM RW1,1 SAVING OR RESTORING ?? 00194000
- BCR 8,R12 RESTORING - EXIT TO CPINIT 00195000
- SPACE 00196000
- SETCCW STM R0,R1,RW1 SET UP CCW 00197000
- SETHHR MVC HHR+1(2),0(R2) SET UP SEARCH ID 00198000
- LA R14,CCWPAG GET ADDRESS OF CHANNEL PROGRAM 00199000
- C R12,=A(DMKSAV) UP TO THIS ADDRESS YET 00200000
- BNE STCAW NO - 00201000
- MVC SEEKB(7),SEEKA SAVE DISK ADDRESS OF DMKSAV FOR DMKCKP 00202000
- B STCAW GO DO THE I/O 00203000
- SPACE 3 00204000
- DMKSAVRS BALR R3,0 00205000
- USING *,R3 00206000
- ST 10,DISK 00208000
- SR R8,R8 RESET ERROR COUNTER 00209000
- LA R11,DISAWT0 RESET POINTER TO DISABLED PSW @VA00867 00210000
- MVI GPRS,6 SET UP READ OP-CODE IN PROTOTYPE 00211000
- MVC RW1,RW1R SET UP READ CCW FOR SHORT 1ST PAGE 00212000
- MVC CYL(5),START GET STARTING CYLINDER AND PAGE 00213000
- LM R0,R6,GPRS SET REGS FOR BUILDING CHANNEL PROG 00214000
- USING DMKSAV,R3 00215000
- L R7,=A(DMKSAV) RESTORE ONLY TO THIS ADDRESS 00216000
- LA R14,CCWPAG POINT TO CHANNEL PROGRAM 00217000
- B STCAW AND GO RESTORE SYSTEM 00218000
- EJECT 00219000
- CCWPAG CCW 7,SEEKA,CC,6 SEEK TO NUCLEUS CYLINDER 00220000
- ALTSRCH EQU * RESUME POINT AFTER ALTERNATE SEEK@V56BDA8 00220100
- CCW 49,CYL,CC,5 SERACH FOR PAGE 00221000
- CCW 8,*-8,0,0 TIC 00222000
- RW1 CCW 5,PSTARTSV-PSA,CC+SILI,X'1000'-(PSTARTSV-PSA) 00223000
- CCW 3,*,SILI,1 00224000
- RW1R CCW 6,PSTARTSV-PSA,CC+SILI,X'1000'-(PSTARTSV-PSA) 00225000
- SPACE 00226000
- SEEKA DC 4H'0' SEEK/SERACH ARGUMENT 00227000
- ORG SEEKA BREAKDOWN OF ARG 00228000
- BB DS 2X BIN 00229000
- CYL DS 2X CYLINDER 00230000
- HHR DS 3X HEAD AND RECORD 00231000
- DS X UNUSED 00232000
- SEEKB DC D'0' SAVE DISK ADDR. OF DMKSAV 00233000
- SEEKC DC D'0' SAVE DISK ADDR. FOR DMKCKP @V407429 00233100
- * (PAGE 2) 00233200
- SPACE 1 00233210
- READHAR0 CCW 07,SEEKA,CC,6 @V56BDA8 00233220
- CCW 26,0,CC+SILI+SKIP,5 @V56BDA8 00233230
- CCW 22,ALTR0ADD,SILI,4 @V56BDA8 00233240
- ALTSEEK CCW 07,ALTSKADD,CC+SILI,6 @V56BDA8 00233250
- CCW 08,ALTSRCH,0,0 @V56BDA8 00233260
- ALTSKADD DC XL2'0' BB @V56BDA8 00233270
- ALTR0ADD DS XL4 CCHH FROM RECORD 0 COUNT @V56BDA8 00233280
- EJECT 00234000
- DS 0D 00235000
- XWAIT DC X'7E06' WAIT STATE PSW 00236000
- DC A(IOINT) 00237000
- DS 0D 00238000
- IONP DC X'00040000' 00239000
- DC A(IOINT) 00240000
- MCNP DC X'00020000' 00241000
- DC X'0000000A' @VA00867 00242000
- SPACE 00243000
- GPRS DS 0D REGISTER SETS FOR SAVE/RESTORE LOOP 00244000
- CCW 5,0,CC,4096 PROTOTYPE PAGE WRITE CCW 00245000
- HRTBLADR DC A(TBL2314) HEAD -> RECORD TABLE FOR PAGES 00246000
- DC A(DMKSAV) BASE REGISTER 00247000
- DC A(2) TABLE INCREMENT 00248000
- INDEXEND DC A(TBL2314E) LAST ENTRY IN TABLE 00249000
- DC A(4096) PAGE SIZE INCREMENT 00250000
- SPACE 00251000
- PRINT DATA 00252000
- TBL2314 EQU * HEAD-> RECORD TABLE FOR 2314 00253000
- DC AL1(00,01,00,02,01,03,01,04,02,05,03,06,03,07,04,08) 00254000
- DC AL1(05,09,05,10,06,11,06,12,07,13,08,14,08,15,09,16) 00255000
- DC AL1(10,17,10,18,11,19,11,20,12,21,13,22,13,23,14,24) 00256000
- DC AL1(15,25,15,26,16,27,16,28,17,29,18,30,18,31,19,32) 00257000
- TBL2314E EQU TBL2314+31*2 ADDRESS OF LAST TABLE ENTRY 00258000
- SPACE 1 00259000
- TBL3350 EQU * HEAD-> RECORD TABLE FOR 3350 @V304498 00260000
- DC AL1(00,01,00,02,00,03,00,04,01,05,01,06,01,07) @V304498 00261000
- DC AL1(01,08,02,09,02,10,02,11,02,12,03,13,03,14) @V304498 00262000
- DC AL1(03,15,03,16,04,17,04,18,04,19,04,20,05,21) @V304498 00263000
- DC AL1(05,22,05,23,05,24,06,25,06,26,06,27,06,28) @V304498 00264000
- DC AL1(07,29,07,30,07,31,07,32,08,33,08,34,08,35) @V304498 00265000
- DC AL1(08,36,09,37,09,38,09,39,09,40,10,41,10,42) @V304498 00266000
- DC AL1(10,43,10,44,11,45,11,46,11,47,11,48,12,49) @V304498 00267000
- DC AL1(12,50,12,51,12,52,13,53,13,54,13,55,13,56) @V304498 00268000
- DC AL1(14,57,14,58,14,59,14,60,15,61,15,62,15,63) @V304498 00269000
- DC AL1(15,64,16,65,16,66,16,67,16,68,17,69,17,70) @V304498 00270000
- DC AL1(17,71,17,72,18,73,18,74,18,75,18,76,19,77) @V304498 00271000
- DC AL1(19,78,19,79,19,80,20,81,20,82,20,83,20,84) @V304498 00272000
- DC AL1(21,85,21,86,21,87,21,88,22,89,22,90,22,91) @V304498 00273000
- DC AL1(22,92,23,93,23,94,23,95,23,96,24,97,24,98) @V304498 00274000
- DC AL1(24,099,24,100,25,101,25,102,25,103,25,104) @V304498 00275000
- DC AL1(26,105,26,106,26,107,26,108,27,109,27,110) @V304498 00276000
- DC AL1(27,111,27,112,28,113,28,114,28,115,28,116) @V304498 00277000
- DC AL1(29,117,29,118,29,119,29,120) @V304498 00278000
- TBL3350E EQU TBL3350+119*2 ADDRESS OF LAST 3350 TABLE ENTRY@V304498 00279000
- SPACE 00280000
- TBL3330 EQU * HEAD-> RECORD TABLE FOR 3330/2305 00281000
- DC AL1(00,01,00,02,00,03,01,04,01,05,01,06) 00282000
- DC AL1(02,07,02,08,02,09,03,10,03,11,03,12) 00283000
- DC AL1(04,13,04,14,04,15,05,16,05,17,05,18) 00284000
- DC AL1(06,19,06,20,06,21,07,22,07,23,07,24) 00285000
- DC AL1(08,25,08,26,08,27,09,28,09,29,09,30) 00286000
- DC AL1(10,31,10,32,10,33,11,34,11,35,11,36) 00287000
- DC AL1(12,37,12,38,12,39,13,40,13,41,13,42) 00288000
- DC AL1(14,43,14,44,14,45,15,46,15,47,15,48) 00289000
- DC AL1(16,49,16,50,16,51,17,52,17,53,17,54) 00290000
- DC AL1(18,55,18,56,18,57) 00291000
- TBL3330E EQU TBL3330+56*2 ADDRESS OF LAST 3330 TABLE ENTRY 00292000
- SPACE 00293000
- TBL2305E EQU TBL3330+23*2 ADDRESS OF LAST 2305 TABLE ENTRY 00294000
- TBL3340 EQU * HEAD-> RECORD TABLE FOR 3340 @V2A2029 00295000
- * (35MB AND 70MB) 00296000
- DC AL1(00,01,00,02,01,03,01,04,02,05,02,06) @V2A2029 00297000
- DC AL1(03,07,03,08,04,09,04,10,05,11,05,12) @V2A2029 00298000
- DC AL1(06,13,06,14,07,15,07,16,08,17,08,18) @V2A2029 00299000
- DC AL1(09,19,09,20,10,21,10,22,11,23,11,24) @V2A2029 00300000
- TBL3340E EQU TBL3340+23*2 ADDRESS OF LAST 3340 TABLE ENTRY @V2A2029 00301000
- SPACE 1 HRC106DK 00301100
- TBL3375 EQU * Head-> record table for 3375 HRC106DK 00301110
- DC AL1(00,01,00,02,00,03,00,04) HRC106DK 00301120
- DC AL1(00,05,00,06,00,07,00,08) HRC106DK 00301130
- DC AL1(01,09,01,10,01,11,01,12) HRC106DK 00301140
- DC AL1(01,13,01,14,01,15,01,16) HRC106DK 00301150
- DC AL1(02,17,02,18,02,19,02,20) HRC106DK 00301160
- DC AL1(02,21,02,22,02,23,02,24) HRC106DK 00301170
- DC AL1(03,25,03,26,03,27,03,28) HRC106DK 00301180
- DC AL1(03,29,03,30,03,31,03,32) HRC106DK 00301190
- DC AL1(04,33,04,34,04,35,04,36) HRC106DK 00301200
- DC AL1(04,37,03,38,03,39,03,40) HRC106DK 00301210
- DC AL1(05,41,05,42,05,43,05,44) HRC106DK 00301220
- DC AL1(05,45,05,46,05,47,05,48) HRC106DK 00301230
- DC AL1(06,49,06,50,06,51,06,52) HRC106DK 00301240
- DC AL1(06,53,06,54,06,55,06,56) HRC106DK 00301250
- DC AL1(07,57,07,58,07,59,07,60) HRC106DK 00301260
- DC AL1(07,61,07,62,07,63,07,64) HRC106DK 00301270
- DC AL1(08,65,08,66,08,67,08,68) HRC106DK 00301280
- DC AL1(08,69,08,70,08,71,08,72) HRC106DK 00301290
- DC AL1(09,73,09,74,09,75,09,76) HRC106DK 00301300
- DC AL1(09,77,09,78,09,79,09,80) HRC106DK 00301310
- DC AL1(10,81,10,82,10,83,10,84) HRC106DK 00301320
- DC AL1(10,85,10,86,10,87,10,88) HRC106DK 00301330
- DC AL1(11,89,11,90,11,91,11,92) HRC106DK 00301340
- DC AL1(11,93,11,94,11,95,11,96) HRC106DK 00301350
- TBL3375E EQU TBL3375+95*2 Address of last table entry HRC106DK 00301360
- SPACE 1 HRC106DK 00301370
- TBL3380 EQU * Head-> record table for 3380 HRC106DK 00301380
- DC AL1(00,001,00,002,00,003,00,004,00,005) HRC106DK 00301390
- DC AL1(00,006,00,007,00,008,00,009,00,010) HRC106DK 00301400
- DC AL1(01,011,01,012,01,013,01,014,01,015) HRC106DK 00301410
- DC AL1(01,016,01,017,01,018,01,019,01,020) HRC106DK 00301420
- DC AL1(02,021,02,022,02,023,02,024,02,025) HRC106DK 00301430
- DC AL1(02,026,02,027,02,028,02,029,02,030) HRC106DK 00301440
- DC AL1(03,031,03,032,03,033,03,034,03,035) HRC106DK 00301450
- DC AL1(03,036,03,037,03,038,03,039,03,040) HRC106DK 00301460
- DC AL1(04,041,04,042,04,043,04,044,04,045) HRC106DK 00301470
- DC AL1(04,046,04,047,04,048,04,049,04,050) HRC106DK 00301480
- DC AL1(05,051,05,052,05,053,05,054,05,055) HRC106DK 00301490
- DC AL1(05,056,05,057,05,058,05,059,05,060) HRC106DK 00301500
- DC AL1(06,061,06,062,06,063,06,064,06,065) HRC106DK 00301510
- DC AL1(06,066,06,067,06,068,06,069,06,070) HRC106DK 00301520
- DC AL1(07,071,07,072,07,073,07,074,07,075) HRC106DK 00301530
- DC AL1(07,076,07,077,07,078,07,079,07,080) HRC106DK 00301540
- DC AL1(08,081,08,082,08,083,08,084,08,085) HRC106DK 00301550
- DC AL1(08,086,08,087,08,088,08,089,08,090) HRC106DK 00301560
- DC AL1(09,091,09,092,09,093,09,094,09,095) HRC106DK 00301570
- DC AL1(09,096,09,097,09,098,09,099,09,100) HRC106DK 00301580
- DC AL1(10,101,10,102,10,103,10,104,10,105) HRC106DK 00301590
- DC AL1(10,106,10,107,10,108,10,109,10,110) HRC106DK 00301600
- DC AL1(11,111,11,112,11,113,11,114,11,115) HRC106DK 00301610
- DC AL1(11,116,11,117,11,118,11,119,11,120) HRC106DK 00301620
- DC AL1(12,121,12,122,12,123,12,124,12,125) HRC106DK 00301630
- DC AL1(12,126,12,127,12,128,12,129,12,130) HRC106DK 00301640
- DC AL1(13,131,13,132,13,133,13,134,13,135) HRC106DK 00301650
- DC AL1(13,136,13,137,13,138,13,139,13,140) HRC106DK 00301660
- DC AL1(14,141,14,142,14,143,14,144,14,145) HRC106DK 00301670
- DC AL1(14,146,14,147,14,148,14,149,14,150) HRC106DK 00301680
- TBL3380E EQU TBL3380+149*2 Address of last table entry HRC106DK 00301690
- SPACE 3 00302000
- PRINT NODATA 00303000
- SPACE 2 00304000
- ENDCYL DC H'0' ENDING CYLINDER HRC102DK 00304500
- DISK DC F'0' SYSRES ADDRESS 00305000
- START DC H'0' STARTING CYLINDER 00306000
- DC H'0' STARTING HEAD 00307000
- DC X'01' STARTING PAGE 00308000
- SPACE 00309000
- SAVEFLAG DC X'00' FLAG BYTE @V2B3729 00310000
- MSG352 EQU X'80' INDICATE GPRS TO BE LOADED @V2B3729 00311000
- * BEFORE WAIT 11 00312000
- SNS CCW 4,SNSIN,SILI,24 SENSE CCW @V2B3729 00313000
- SNSIN DC 6F'0' AREA FOR SENSE DATA @V2B3729 00314000
- ERRCSW DC 2F'0' AREA FOR ERROR CSW @V2B3729 00315000
- CCWADD DC F'0' AREA FOR CCW ADDRESS @V2B3729 00316000
- DEVT DC C' ' 00317000
- DS 0D 00318000
- ENDMSG CCW 9,LDMSG,0,LDMSGL 00319000
- LDMSG DC C'Nucleus loaded on ' HRC202DK 00320490
- LDVOL DC CL6' ' 00321000
- DC C' --- ' @VA11884 00321100
- DC C'Starting CYL=' HRC202DK 00321260
- NUCSTRT DC CL4' ' HRC027DK 00321340
- DC C',' @VA11884 00321400
- DC C' last CYL used=' HRC202DK 00321590
- NUCSTOP DC CL4' ' HRC027DK 00321790
- LDMSGL EQU *-LDMSG 00322000
- * 00323000
- LTORG 00324000
- * 00325000
- EJECT 00326000
- DS 0D 00327000
- WSC10 DC X'01060000' @VA00867 00328000
- DC X'00000010' @VA00867 00329000
- WSC11 DC X'00020000' @VA00867 00330000
- DC X'00000011' @VA00867 00331000
- DISAWT0 DC X'00020000' @VA00867 00332000
- DC X'00000012' WAIT STATE CODE 012 @VM08532 00333000
- EXTINT DC X'00040000' @VA00867 00334000
- DC A(DMKSAVNC) RESTART LOCATION 00335000
- * 00336000
- * 00337000
- DS 0H 00338000
- VOLID DC C'VOL1CPDSK1' 00339000
- EJECT 00340000
- CNIO EQU * CONSOLE COMMUNICATION SUBROUTINE @V200820 00341000
- SR R14,R14 SET NEW PROGRAM CHECK IN @V2B3729 00342000
- LA R15,SAVPROG CASE OF PROGRAM CHECK IN @V2B3729 00343000
- STM R14,R15,PRNPSW DMKOPRWT @V2B3729 00344000
- ST R3,SAVR3 SAVE BASE ADDRESS @V2B3729 00345000
- ST R11,SAVR11 SAVE ADDRESS OF LPSW @V2B3729 00346000
- CALL DMKOPRWT WRITE MESSAGE TO SYSTEM OPERATOR @V200820 00347000
- B WROPRET CONT- @V2B3729 00348000
- DS 0D @V2B3729 00349000
- SAVPROG L R4,PRNPSW+4 GET TEMP BASE ADDRESS @V2B3729 00350000
- DROP R3 @V2B3729 00351000
- USING SAVPROG,R4 @V2B3729 00352000
- L R3,SAVR3 RESTORE GPR3 @V2B3729 00353000
- L R11,SAVR11 RESTORE GPR11 @V2B3729 00354000
- DROP R4 @V2B3729 00355000
- USING DMKSAV,R3 @V2B3729 00356000
- WROPRET TM SAVEFLAG,MSG352 ERROR MSG 352 ? @V2B3729 00357000
- BZ SAVLPSW NO - @V2B3729 00358000
- L R0,DISK ADDRESS OF DEVICE IN ERROR @V2B3729 00359000
- LM R1,R2,ERRCSW ERROR CSW @V2B3729 00360000
- L R4,CCWADD ADDRESS OF 1ST CCW @V2B3729 00361000
- LM R5,R10,SNSIN GPR5-GPR10 - 24 SENSE BYTES @V2B3729 00362000
- SR R13,R13 .. @V2B3729 00363000
- ICM R13,B'0111',1(R4) ADDRESS OF BBCCHHR @V2B3729 00364000
- LM R14,R15,0(R13) GPR14-GPR15 BBCC HHR @V2B3729 00365000
- SAVLPSW LPSW 0(R11) LOAD THE SPECIFIED PSW. @V2B3729 00366000
- * 00367000
- NDISK L R1,DISK GET SYSRES ADDRESS @VA01730 00368000
- CALL DMKCVTBH CONVERT ADDRESS TO EBCDIC @VA01730 00369000
- STCM R1,B'0111',NREADY1 PUT ADDRESS INTO MSG @VA01730 00370000
- LA R1,NREADY ERROR MSG. DMKSAV351 @VA01730 00371000
- LA R0,NREADYL LENGTH OF MESSAGE @VA01730 00372000
- LA R2,ALARM PARM'S @VA01730 00373000
- MVI NREADY1+3,C' ' 00374000
- LA R11,WSC10 POINT TO THE WSC X'10' PSW @VA00867 00375000
- B CNIO 00376000
- SPACE 3 00377000
- * 00378000
- * 00379000
- DMKSAVNC DS 0H 00380000
- BALR R3,0 00381000
- USING *,R3 00382000
- S R3,=A(*-DMKSAV) 00383000
- USING DMKSAV,R3 00384000
- SR R8,R8 RESET ERROR COUNTER 00385000
- LA R11,DISAWT0 SET PSW POINTER TO DEFAULT @VA00867 00386000
- OI RW1+4,SKIP SET SKIP FOR FIRST WRITE/READ 00387000
- MVC EXNPSW(8),EXTINT SET RESTART PSW 00388000
- L R9,=A(DMKSYSTP) DEVICE TYPE FOR SYSRES 00389000
- CLI 1(R9),TYP2314 2314 ?? 00390000
- BE GETDSK YES -- REGISTER SET IS OK 00391000
- LA R4,TBL3340 SET UP FOR 3340 @V2A2029 00392000
- LA R5,TBL3340E .. @V2A2029 00393000
- CLI 1(R9),TYP3340 IS IT 3340 ? @V2A2029 00394000
- BE SETGPRS YES -- PROCESS @V2A2029 00395000
- LA R4,TBL3350 SET UP FOR 3350 @V304498 00396000
- LA R5,TBL3350E .. @V304498 00397000
- CLI 1(R9),TYP3350 IS IT 3350 ? @V304498 00398000
- BE SETGPRS YES -- PROCESS @V304498 00399000
- LA R4,TBL3375 Set up for 3375 HRC106DK 00399100
- LA R5,TBL3375E .. HRC106DK 00399200
- CLI 1(R9),TYP3375 Is it 3375 ? HRC106DK 00399300
- BE SETGPRS Yes -- process HRC106DK 00399400
- LA R4,TBL3380 Set up for 3380 HRC106DK 00399500
- LA R5,TBL3380E .. HRC106DK 00399600
- CLI 1(R9),TYP3380 Is it 3380 ? HRC106DK 00399700
- BE SETGPRS Yes -- process HRC106DK 00399800
- LA R4,TBL3330 MUST BE 3330 OR 2305 00400000
- LA R5,TBL3330E 00401000
- CLI 1(R9),TYP3330 IS IT 3330 00402000
- BE SETGPRS YES -- 00403000
- LA R5,TBL2305E MUST BE 2305 00404000
- CLI 1(R9),TYP2305 00405000
- BE SETGPRS 00406000
- LA R1,ERR353 ADDRESS OF ERROR MSG. DMKSAV353 @V2A2029 00407000
- LA R0,ERR353L LENGTH OF MESSAGE @VA02884 00408000
- LA R2,ALARM PARM'S (ALARM) @V2A2029 00409000
- LA R11,WSC11 POINT TO WAIT PSW TO LOAD LATER @VA00867 00410000
- B CNIO GO TELL HIM THE BAD NEWS @VA00867 00411000
- SPACE 2 00412000
- SETGPRS ST R4,HRTBLADR SET UP TABLE START 00413000
- ST R5,INDEXEND AND END ADDRESSES 00414000
- GETDSK DS 0H 00415000
- L R10,=A(DMKSYSRS) 00416000
- LH R10,0(R10) ... 00417000
- ST R10,DISK SAVE 00418000
- ST R8,SAVE @VA11715 00418050
- SRL R10,8 @VA11715 00418100
- LA R8,1 @VA11715 00418150
- SR R9,R9 @VA11715 00418200
- AR R10,R8 @VA11715 00418250
- LUPE SRDL R8,1 @VA11715 00418300
- BCT R10,LUPE @VA11715 00418350
- ST R9,CREG2 @VA11715 00418400
- N R9,MASK @VA11715 00418450
- LTR R9,R9 @VA11715 00418500
- BZ NEXT @VA11715 00418550
- LCTL C2,C2,CREG2 @VA11715 00418600
- NEXT L R8,SAVE @VA11715 00418650
- L R9,=A(DMKSYSNU) 00419000
- L R9,0(,R9) CYLS START,END TWO HALF WORDS HRC102DK 00420590
- STCM R9,B'1100',CYL SAVE STARTING CYLINDER ADDRESS HRC102DK 00421180
- STCM R9,B'1100',START FOR RESTORE HRC102DK 00421770
- STCM R9,B'0011',ENDCYL UPPER BOUNDARY HRC102DK 00422360
- LA 14,SNS 00423000
- ST 14,CAW 00424000
- L R10,DISK GET ADDR. 00425000
- QDISK SIO 0(10) 00426000
- BC 1,NDISK NOT THERE 00427000
- BC 6,QDISK TRY AGAIN 00428000
- TIO 0(10) 00429000
- BC 7,*-4 00430000
- TM SNSIN,INTREQ NOT READY ? @VA02814 00431000
- BO NDISK TELL THE OPERATOR @VA02814 00432000
- SPACE 2 00433000
- LA R14,LABCCW SET CCW 00434000
- BAL R15,SCPZCAW DO IO 00435000
- SPACE 3 00436000
- CLUACT L R10,=A(DMKSYSVL) GET SYSRES VOLID 00437000
- CLC VOLID+4(6),0(R10) COMPARE 00438000
- BNE SCPBADLB NO GOOD 00439000
- SPACE 3 00440000
- LR R12,R3 SET UP NEW BASE REG 00441000
- USING DMKSAV,R12 00442000
- SPACE 00443000
- STCK TEMPR4 STORE TIME OF DAY CLOCK 00444000
- BNE WRITENUC IF THE CLOCK IS NOT SET DO NOT SET UP THE*00445000
- SYSTEM CREATION DATE AND TIME 00446000
- LM R0,R1,TEMPR4 GET TOD CLOCK VALUE 00447000
- SRDL R0,12 CONVERT TO MICROSECONDS 00448000
- D R0,=F'8000000' GET NUMBER OF SECONDS BY THE FOLLOWING 00449000
- LR R3,R0 DOUBLE PRECISION DIVISION: 00450000
- SLR R2,R2 X/Y=8*(X/(8*Y))+MOD(X,8*Y)/Y 00451000
- D R2,=F'1000000' WHERE X = NUMBER OF MICROSECONDS SINCE 00452000
- SLR R0,R0 EPOCH 00453000
- SLDL R0,3 Y = 1000000 00454000
- ALR R1,R3 ... 00455000
- BC 12,*+8 ... 00456000
- A R0,F1 R0 - R1 = NUMBER OF SECONDS SINCE EPOCH 00457000
- D R0,=F'86400' R1 = NUMBER OF DAYS SINCE EPOCH *00458000
- R0 = NUMBER OF SECONDS PAST MIDNIGHT 00459000
- L R15,=A(DMKSYSTZ) GET PTR TO TIME ZONE CORRECTION 00460000
- A R0,0(,R15) ADJUST SEC TO INCLUDE GMT DIFFERENCE 00461000
- BNM *+10 BRANCH IF RESULT .GE. ZERO 00462000
- A R0,=F'86400' ADD A DAYS WORTH OF SECONDS 00463000
- BCTR R1,0 AND SUBTRACT A DAY 00464000
- C R0,=F'86400' SEC .LT. 1 DAY ? 00465000
- BL *+12 YES 00466000
- S R0,=F'86400' SUBTRACT A DAYS WORTH OF SECONDS 00467000
- A R1,F1 AND ADD A DAY 00468000
- LR R5,R0 00469000
- M R4,=F'1000000' MULTIPLY CORRECTED SECONDS BY 1000000 00470000
- ALR R5,R2 ADD REMAINDER FROM FIRST DIVISION 00471000
- BC 12,*+8 ... 00472000
- A R4,F1 ... 00473000
- SLDL R4,12 00474000
- LM R14,R15,TEMPR4 GET INITIAL TOD CLOCK VALUE 00475000
- SLR R15,R5 - NUMBER OF SECONDS INTO THE DAY 00476000
- BC 11,*+8 ... 00477000
- SL R14,F1 ... 00478000
- SLR R14,R4 ... 00479000
- STM R14,R15,TEMPR2 RESULT IS TOD CLOCK VALUE AT MIDNIGHT *00480000
- TODAY LOCAL TIME 00481000
- SPACE 00482000
- LA R3,365 00483000
- CR R1,R3 IS DAYS .LT. 365 ? 00484000
- BNL NOT1900 NO 00485000
- LR R6,R1 GET NUMBER OF DAYS HERE 00486000
- SLR R1,R1 INDICATE YEAR = 00 00487000
- B YEARSET 00488000
- SPACE 00489000
- NOT1900 EQU * HERE IF YEAR IS GREATER THAN 1900 00490000
- SR R1,R3 SUBTRACT THE YEAR 1900 OUT 00491000
- SLR R0,R0 CLEAR FOR DIVIDE 00492000
- D R0,=A(4*365+1) DIVIDE BY THE NUMBER OF DAYS IN 4 YEARS 00493000
- LR R7,R0 R7 = NUMBER OF DAYS SINCE LAST LEAP 00494000
- SLR R6,R6 00495000
- DR R6,R3 00496000
- A R6,F1 R6 = NUMBER OF DAYS SINCE START OF YEAR 00497000
- C R7,F4 MULTIPLE OF 4 YEARS ? 00498000
- BNE NOTQUAD NO 00499000
- AR R6,R3 SET DAY = 366 00500000
- L R7,F3 ... 00501000
- NOTQUAD EQU * 00502000
- ALR R1,R1 00503000
- ALR R1,R1 00504000
- A R1,F1 00505000
- AR R1,R7 00506000
- SPACE 00507000
- YEARSET EQU * HERE WHEN YEAR HAS BEEN DETERMINED 00508000
- L R13,=A(DMKCPICD) POINT TO THE SYSTEM CREATION DATE *00509000
- AND TIME DATE AREA IN THE SYSTEM ID MSG 00510000
- SPACE 00511000
- CVD R1,TEMPSAVE CONVERT DATE TO DECIMAL 00512000
- UNPK 6(2,R13),TEMPSAVE+6(2) UNPACK AND 00513000
- OI 7(R13),X'F0' FORMAT IT 00514000
- SPACE 00515000
- * HERE TO CONVERT JULIAN DATE TO GREGORIAN 00516000
- SPACE 1 00517000
- * THE FOLLOWING ALGORITHM TO CONVERT A JULIAN DATE TO GREGORIAN WAS 00518000
- * ADOPTED FROM AN ALGORITHM ENTITLED "TABLELESS DATE CONVERSION" 00519000
- * APPEARING IN "COMMUNICATIONS OF THE ACM", VOLUME 13, NUMBER 10, 00520000
- * OCTOBER 1970, P. 621, BY RICHARD A. STONE, WESTERN ELECTRIC COMPANY, 00521000
- * P.O. BOX 900, PRINCETON, NJ 08540. 00522000
- SLR R2,R2 CLEAR REG 2 00523000
- N R1,F3 YEAR MOD 4 00524000
- BNZ *+8 BRANCH IF NOT A LEAP YEAR 00525000
- LA R2,1 GET GREGORIAN DATE FROM JULIAN 00526000
- LA R1,59(,R2) ... 00527000
- CR R6,R1 ... 00528000
- BNH *+10 ... 00529000
- A R6,F2 ... 00530000
- SR R6,R2 ... 00531000
- A R6,=F'91' ... 00532000
- LR R9,R6 ... 00533000
- M R8,=F'100' ... 00534000
- D R8,=F'3055' ... 00535000
- LR R15,R9 ... 00536000
- M R14,=F'3055' ... 00537000
- D R14,=F'100' ... 00538000
- SR R6,R15 ... 00539000
- BCTR R9,0 ... 00540000
- BCTR R9,0 ... 00541000
- CVD R6,TEMPSAVE CONVERT DAY TO DECIMAL 00542000
- UNPK 3(2,R13),TEMPSAVE+6(2) UNPACK AND 00543000
- OI 4(R13),X'F0' FORMAT IT 00544000
- MVI 5(R13),C'/' 00545000
- CVD R9,TEMPSAVE CONVERT MONTH TO DECIMAL 00546000
- UNPK 0(2,R13),TEMPSAVE+6(2) UNPACK AND 00547000
- OI 1(R13),X'F0' FORMAT IT 00548000
- MVI 2(R13),C'/' 00549000
- SPACE 1 00550000
- * SET UP TIME 00551000
- LA R13,9(0,R13) POINT TO THE TIME IN MSG 00552000
- LM R0,R1,TEMPR4 GET TOD CLOCK VALUE IN R0 AND R1 00553000
- SL R1,TEMPR2+4 SUBTRACT CORRECT TIME AT MIDNIGHT 00554000
- BC 11,*+8 ... 00555000
- SL R0,=F'1' ... 00556000
- SL R0,TEMPR2 ... 00557000
- SRDL R0,12 GET NUMBER OF MICROSECONDS PAST MIDNIGHT 00558000
- D R0,=F'1000000' GET NUMBER OF SECONDS PAST MIDNIGHT 00559000
- SR R0,R0 IGNORE REMAINDER 00560000
- D R0,=F'3600' GET NUMBER OF HOURS PAST MIDNIGHT 00561000
- CVD R1,TEMPSAVE CONVERT NUMBER OF HOURS TO DECIMAL 00562000
- UNPK 0(4,R13),TEMPSAVE+6(3) UNPACK 00563000
- MVI 2(R13),C':' NEATEN UP 00564000
- LR R1,R0 GET REMAINDER FROM LAST DEVIDE 00565000
- SR R0,R0 CLEAR 00566000
- D R0,=F'60' GET NUMBER OF MINUTES PAST THIS HOUR 00567000
- CVD R1,TEMPSAVE CONVERT NUMBER OF MINUTES TO DECIMAL 00568000
- UNPK 3(4,R13),TEMPSAVE+6(3) UNPACK 00569000
- MVI 5(R13),C':' NEATEN UP 00570000
- CVD R0,TEMPSAVE CONVERT NUMBER OF SECONDS TO DECIMAL 00571000
- UNPK 6(2,R13),TEMPSAVE+6(2) UNPACK 00572000
- OI 7(R13),X'F0' MAKE UP FOR HARDWARE DEFICIENCIES 00573000
- SPACE 00574000
- WRITENUC LA R14,CCWPAG GET CHANNEL PROGRAM TO WRITE NUCLEUS 00575000
- LM R0,R6,GPRS RESTORE THE REGISTER SET 00576000
- DROP R12 00577000
- USING DMKSAV,R3 00578000
- L R7,=A(DMKCKP+4096) WRITE ALL OF CP CODE @V407429 00579100
- BAL R15,SETHHR GO WRITE NUCLEUS TO DISK 00580000
- SPACE 00580100
- L R9,=A(DMKCKPLD) GET DASD ADDRESS SLOT IN DMKCKP @V407429 00580200
- MVC 0(7,R9),SEEKC SAVE ADDRESS OF DMKCKP PAGE 2 @V407429 00580300
- SPACE 00581000
- L R9,=A(DMKCKPRS) GET DASD ADDRESS SLOT IN CHECKPOINT 00582000
- MVC 0(7,R9),SEEKB SAVE ADDRESS OF DMKSAV FOR DMKCPI 00583000
- L R9,=A(DMKCKPST) POINT TO THE START OF THE NUCLEUS 00584000
- MVC 0(2,R9),START AND MOVE IN THE FIRST CYL ADD FOR DMKDDR 00585000
- MVC 2(2,R9),CYL MOVE IN THE LAST NUCLEUS CYLINDER ADD 00586000
- LH R1,START GET NUC START @VA11884 00586100
- CALL DMKCVTBD CONVERT TO EBCDIC HRC027DK 00586250
- STCM R1,B'1111',NUCSTRT SAVE RESULT HRC027DK 00586300
- LH R1,CYL GET NUC END @VA11884 00586400
- CALL DMKCVTBD CONVERT TO EBCDIC HRC027DK 00586590
- STCM R1,B'1111',NUCSTOP SAVE THE RESULT HRC027DK 00586680
- SPACE 00587000
- LA R14,CCWIPL WRITE OUT IPL SEQUENCE 00588000
- BAL R15,SCPZCAW DO IO 00589000
- SPACE 00590000
- MVC LDVOL(6),VOLID+4 VOLUME SERIAL TO MESSAGE 00591000
- LA R1,LDMSG MSG. 'NUCLEUS LOADED ON XXXX' @V200735 00592000
- LA R0,LDMSGL LENGTH OF MESSAGE @V200735 00593000
- LA R2,0 PARM'S @V200735 00594000
- B CNIO OUTPUT THIS MESSAGE @V200735 00595000
- SPACE 3 00596000
- * 00597000
- SCPZCAW ST R14,CAW SET FOR IO 00598000
- MVC IONPSW(8),LBIOPN SET INT RETURN 00599000
- L R10,DISK GET DISK ADDRESS 00600000
- SIO 0(R10) START 00601000
- BC 7,*-4 LOOP 00602000
- WAITL LPSW XWAIT WAIT FOR INT 00603000
- LBIOINT CH R10,IOOPSW+2 TEST FOR DEVICE STARTED 00604000
- BNE WAITL NO, WAIT 00605000
- CLC CSW+4(2),=AL2((CE+DE)*256) CHANNEL/DEVICE END ONLY ? 00606000
- BNE SNSRT IF NOT, ERROR CONDITION RESULTED @V2B3729 00607000
- SR R8,R8 RESET ERROR COUNTER 00608000
- BR R15 RETURN ON GPR-15 00609000
- SNSRT MVC ERRCSW(12),CSW SAVE ERROR CSW AND CAW @V2B3729 00610000
- LA R10,SNS ADDRESS OF SENSE CCW @V2B3729 00611000
- ST R10,CAW SET UP CAW @V2B3729 00612000
- L R10,DISK RELOAD DISK ADDRESS @V2B3729 00613000
- SNSRTSIO SIO 0(R10) START SENSE @VA09882 00613100
- BNZ SNSRTSIO LOOP UNTIL FINISHED @VA09882 00613200
- SNSRTTIO TIO 0(R10) TIO TO CLEAR STATUS @VA09882 00613300
- BNZ SNSRTTIO @VA09882 00613400
- LA R8,1(,R8) INCREASE ERROR COUNTER BY ONE 00614000
- CH R8,=H'10' ERROR COUNTER REACH 10 YET ? 00615000
- BNH SCPZCAW NO, TRY CHANNEL PROGRAM AGAIN 00616000
- OI SAVEFLAG,MSG352 INDICATE REG LOAD BEFORE LPSW @V2B3729 00617000
- LA R1,ERR352 ERROR MSG DMKSAV352W @V200735 00618000
- LA R0,ERR352L LENGTH OF ERROR MESSAGE @V200735 00619000
- LA R2,ALARM PARM'S @V200735 00620000
- LA R11,WSC11 POINT TO WAIT PSW FOR LATER @VA00867 00621000
- B CNIO NOW ISSUE MESSAGE DMKSAV352W 00622000
- EJECT 00623000
- * 00624000
- DS 0F @V2B3729 00625000
- SAVR3 DC F'0' GPR3 SAVE AREA @V2B3729 00626000
- SAVR11 DC F'0' GPR11 SAVE AREA @V2B3729 00627000
- SAVE DS F'0' @VA11715 00627100
- MASK DC XL4'03FF0000' @VA11715 00627200
- CREG2 DS F'0' @VA11715 00627300
- * 00628000
- LBIOPN DS 0D ALIGN 00629000
- DC X'00040000' 00630000
- DC A(LBIOINT) 00631000
- * 00632000
- IPLDATA DC X'000C000000000800' EXTENDED PSW FOR IPL 00633000
- CCW 6,X'800',0,4096 CCW TO READ IN DMKCKPT 00634000
- DC A(0,0) UNUSED 00635000
- *** 00636000
- * 00637000
- LABCCW CCW X'07',SKLAB,CC,6 00638000
- CCW X'31',SCHLB,CC,5 00639000
- CCW X'08',*-8,0,0 00640000
- CCW 6,VOLID,CC+SILI,10 READ VOLUME LABEL 00641000
- CCW X'03',0,SILI,1 00642000
- * 00643000
- CCWIPL CCW X'07',SKLAB,CC+SILI,6 SEEK TO CYL 0, HEAD 0. 00644000
- CCW X'31',RECORD1,CC,5 00645000
- CCW X'08',*-8,0,0 00646000
- CCW X'05',IPLDATA,CC+SILI,24 WRITE IPL RECORD 00647000
- CCW X'31',RECORD2,CC,5 00648000
- CCW X'08',*-8,0,0 00649000
- CCW 5,DMKCKPT,SILI,4096 WRITE OUT DMKCKPT 00650000
- SKLAB DC X'00000000000003' 00651000
- SCHLB EQU SKLAB+2 00652000
- SPACE 2 00653000
- RECORD1 DC X'0000000001' 00654000
- RECORD2 DC X'0000000002' 00655000
- SCPBADLB L R1,DISK GET SYSRES ADDRESS @VA10206 00656010
- CALL DMKCVTBH CONVERT ADDRESS TO EBCDIC @VA10206 00656020
- STCM R1,B'0111',NRADDR PUT ADDRESS INTO MSG @VA10206 00656030
- LA R0,VOLMSGL LENGTH OF ERROR MESSAGE @V200735 00657000
- LA R2,ALARM PARM'S @V200735 00658000
- MVC VOLMSG1,0(R10) SET VOLID 00659000
- MVI NRADDR+3,C' ' @VA00867 00661000
- LA R11,WSC10 POINT TO PROPER PSW @VA00867 00662000
- B CNIO OUTPUT MSG 00663000
- * 00664000
- VOLMSG DC C'DMKSAV350W DASD ' @VA00867 00665000
- NRADDR DC CL4' ' @VA00867 00666000
- DC C'Volid not ' HRC202DK 00667490
- VOLMSG1 DC CL6' ' @VA11387 00668100
- VOLMSGL EQU *-VOLMSG 00669000
- * 00670000
- NREADY DC C'DMKSAV351W DASD ' @VA00867 00671000
- NREADY1 DC CL4' ' 00672000
- DC C' not Ready' HRC202DK 00673490
- NREADYL EQU *-NREADY 00674000
- * 00675000
- ERR352 DC C'DMKSAV352W Fatal DASD I/O error' HRC202DK 00676490
- ERR352L EQU *-ERR352 00677000
- ERR353 DC C'DMKSAV353W SYSRES device type invalid' HRC202DK 00678490
- ERR353L EQU *-ERR353 @VA00867 00679000
- ERR354 DC C'DMKSAV354E Nucleus cylinders exceed allocation; Reload*00679020
- Nucleus from BACKUP.' 00679040
- ERR354L EQU *-ERR354 HRC102DK 00679060
- SPACE 1 00679100
- TRKCONCK EQU X'02' 3340/44 TRACK CONDITION CHECK @V56BDA8 00679200
- SPACE 2 00680000
- LTORG @V200820 00681000
- EJECT 00682000
- COPY DEVTYPES 00683000
- COPY EQU 00684000
- PSA 00685000
- END DMKSAV @V200820 00686000
ibm/vm370-lib/cp/dmksav.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator