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