DMP TITLE 'DMKDMP (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 00002000
*. 00003000
* MODULE NAME - 00004000
* 00005000
* DMKDMP 00006000
* 00007000
* FUNCTION - 00008000
* 00009000
* TO WRITE A DUMP OF MAIN MEMORY, CONTROL REGISTERS, FLOATING 00010000
* POINT REGISTERS, GENERAL PURPOSE REGISTERS, CLOCKS, AND 00011000
* PREFIX REGISTER TO A PRESPECIFIED DUMP DEVICE 00012000
* 00013000
* ATTRIBUTES - 00014000
* 00015000
* NON-REUSABLE, RESIDENT, STAND ALONE PROGRAM, ENTERED VIA A 00016000
* GOTO FROM DMKPSA AFTER A RESTART, FROM DMKSVC AFTER 00017000
* AN SVC 0, OR FROM DMKPRG 00018000
* 00019000
* ENTRY POINTS - 00020000
* 00021000
* DMKDMPDK - WRITE SYSTEM DUMP TO DUMP DEVICE 00022000
* DMKDMPRS - REIPL SYSTEM 00023000
* 00024000
* ENTRY CONDITIONS - 00025000
* 00026000
* GPR12 = ADDRESS OF ENTRY POINT 00027000
* 00028000
* EXIT CONDITIONS - 00029000
* 00030000
* NORMAL - FOR DUMP DEVICE OF TAPE OR PRINTER, MOVE 'CPCP' 00031000
* TO CPID AND BRANCH TO INTERNAL SUBROUTINE DMKDMPRS 00032000
* TO REIPL AND SHUTDOWN SYSTEM; FOR DUMP DEVICE OF 00033000
* DASD, MOVE 'WARM' TO CPID AND 00034000
* BRANCH TO INTERNAL SUBROUTINE DMKDMPRS TO REIPL 00035000
* SYSTEM 00036000
* 00037000
* ERROR - WRITE A MESSAGE TO THE SYSTEM CONSOLE AND LOAD A 00038000
* DISABLED WAIT STATE PSW 00039000
* 00040000
* CALLS TO OTHER ROUTINES - 00041000
* 00042000
* DMKSCNRD GET REAL DEVICE ADDRESS (CCU) 00043000
* 00044000
* EXTERNAL REFERENCES - 00045000
* 00046000
* DMKRIOPR - TABLE OF PRINTER DEVICE ADDRESSES AND RDEVBLOK 00047000
* DISPLACEMENTS 00048000
* DMKOPRWT - EMERGENCY OPERATOR WRITE ROUTINE 00049000
* DMKSYSRM - REAL MACHINE SIZE 00050000
* DMKRSPID - NEXT SYSTEM FILE NUMBER 00051000
* DMKSYSCK - ACCOUNTING TOD CLOCK VALUE AT SYSTEM DUMP 00052000
* 00053000
EJECT 00054000
* PSA 00055000
* APUOPER - ATTACHED PROCESSOR MODE 00056000
* PREFIX - PREFIX REGISTER FOR CURRENT PROCESSOR 00057000
* PREFIXA - PREFIX REGISTER FOR OTHER PROCESSOR 00058000
* DUMPSAVE - SAVE AREA FOR DUMP ROUTINE 00059000
* 00060000
* 00061000
* TABLES / WORK AREAS - 00062000
* 00063000
* WHEN DUMP DEVICE IS DASD, REAL PAGES 1 THRU 3 ARE USED AS 00064000
* WORK AREAS FOR THE DMPINREC AND DMPKYRECS 00065000
* 00066000
* REGISTER USAGE - 00067000
* 00068000
* GPR8 = DUMP DEVICE RDEVBLOK 00069000
* GPR12 = BASE REGISTER 00070000
* GPR13 = 2ND BASE REGISTER 00071000
* GPR15 = DUMP DEVICE DEVICE ADDRESS 00072000
* 00073000
* ALL OTHER REGISTERS ARE USED AS WORK REGISTERS 00074000
* 00075000
* NOTES - 00076000
* 00077000
* NONE 00078000
* 00079000
* OPERATION - 00080000
* 00081000
* 1. OBTAIN DUMP LOCK 00082000
* 2. STORE CLOCKS. 00083000
* 3. SAVE CONTROL AND FLOATING POINT REGISTERS. 00084000
* 4. SAVE PREFIX REGISTER. 00085000
* 5. SAVE ABEND CODE. 00086000
* 6. SAVE PROCESSOR ADDRESS. 00087000
* 7. IF ATTACHED PROCESSOR MODE AND RUNNING ON THE 00088000
* MAIN PROCESSOR, SIGNAL THE ATTACHED PROCESSOR TO 00089000
* STOP AND STORE STATUS AND GO TO STEP 9. 00090000
* 8. IF ATTACHED PROCESSOR MODE AND RUNNING ON THE 00091000
* ATTACHED PROCESSOR, SIGNAL THE MAIN PROCESSOR TO 00092000
* STOP AND STORE STATUS, SET UP THE RESTART PSW 00093000
* FOR STEP 9, SIGNAL THE MAIN PROCESSOR TO RESTART, 00094000
* AND SIGNAL SELF TO STOP. 00095000
* 9. SET UP ZERO PREFIX REGISTER. 00096000
* 10. SAVE LOW CORE. 00097000
* 11. SET PROGRAM, IO, AND MACHINE CHECK NEW PSWS. 00098000
* 12. DISABLE SOFT MACHINE CHECKS. 00099000
* 13. ENABLE CHANNEL 0. 00100000
* 14. ISSUE MESSAGE TO OPERATOR INDICATING ABEND CODE 00101000
* AND TIME OF DUMP. 00102000
* 15. GET REAL MACHINE SIZE. 00103000
* 16. LOCATE DUMP DEVICE RDEVBLOK PTR; IF ZERO USE THE FIRST 00104000
* PRINTER IN THE DMKRIOPR TABLE; IF NO PRINTERS ARE DEFINED 00105000
* IN THE TABLE LOAD A DISABLED WAIT STATE PSW. 00106000
* 17. GOTO APPROPRIATE DUMP DEVICE ROUTINE. 00107000
* 00108000
* OPERATION SECTION CONTINUED BELOW FOR EACH DUMP DEVICE TYPE 00109000
* 00110000
* ERROR MESSAGES - 00111000
* 00112000
* nn:nn:nn DMKDMP908I SYSTEM FAILURE; CODE mmmccc PROCESSOR nn 00113000
* DMKDMP905W SYSTEM DUMP FAILURE; PROGRAM CHECK 00114000
* DMKDMP906W SYSTEM DUMP FAILURE; MACHINE CHECK, RUN SEREP 00115000
* DMKDMP907W SYSTEM DUMP FAILURE; FATAL I/O ERROR 00116000
* DMKDMP909W SYSTEM DUMP DEVICE; NOT-READY 00117000
* DMKDMP918I SYSTEM DUMP FAILURE; STATUS NOT STORED FOR NON- 00117500
* ABENDING PROCESSOR. 00117600
* 00118000
*. 00119000
EJECT 00120000
COPY OPTIONS 00121000
COPY LOCAL 00122000
SPACE 3 00123000
DMKDMP START 00124000
SPACE 00125000
USING PSA,0 @V200820 00126000
SPACE 00127000
ENTRY DMKDMPDK,DMKDMPRC,DMKDMPTR @V200820 00128000
ENTRY DMKDMPDV,DMKDMPAU @V407510 00129000
ENTRY DMKDMPSF,DMKDMPSW @V200820 00130000
ENTRY DMKDMPTD,DMKDMPDT,DMKDMPSD @V407510 00131000
ENTRY DMKDMPMA,DMKDMPAA @V407510 00132000
ENTRY DMKDMPSA @V5BC0AB 00132100
SPACE 00133000
EXTRN DMKOPRWT,DMKRIOPR,DMKRSPID,DMKSCNRD @V200820 00134000
EXTRN DMKSYSRM,DMKSYSCK,DMKSYSRV @V200820 00135000
EXTRN DMKSYSCH,DMKSCNRU @V304298 00136000
EXTRN DMKPRGMC @V2B2638 00137000
EXTRN DMKSYSVM,DMKRIODV,DMKSYSCS,DMKRSPRD @V407510 00138000
EJECT 00139000
DMKDMPDK DS 0H 00140000
USING DMKDMPDK,R12 00141000
USING DMKDMP+4096,R13 @VA01097 00142000
LR R13,R12 SET 2ND BASE REGISTER @VA01097 00143000
A R13,PAGESIZE CALCULATE 2ND BASE REG @V407510 00144000
TS DMPLOCK TRY TO GET DUMP LOCK @V407510 00145000
BNZ LOADWAIT ALREADY HELD, LOAD WAIT STATE @V407510 00146000
SPACE 00147000
STCK TODCLOCK SAVE TIME OF DAY CLOCK 00148000
L R15,=A(DMKSYSCK) LEAVE TOD CLOCK VALUE HERE 00149000
MVC 0(8,R15),TODCLOCK FOR WARM START ACCOUNTING 00150000
STPT CPUTIMER SAVE CPU TIMER 00151000
STCKC CLKCOMP SAVE TIME OF DAY CLOCK COMPARATOR 00152000
STCTL C0,C15,CTLREGS SAVE CONTROL REGISTERS 00153000
AIF (NOT &FLOATPT).NOFP1 00154000
STD Y0,FPREGS SAVE FLOATING POINT REGISTERS 00155000
STD Y2,FPREGS+8 ... 00156000
STD Y4,FPREGS+16 ... 00157000
STD Y6,FPREGS+24 ... 00158000
.NOFP1 ANOP 00159000
MVC SAVEPR(L'INTPRL+L'INTPR),INTPRL SAVE CODE @V4M0111 00160000
MVC SAVEPGMN,PRNPSW SAVE PROGRAM NEW @V407510 00161000
MVC SAVEPGMO,PROPSW SAVE PROGRAM OLD @V407510 00162000
MVC PRNPSW,SPECPGMN SET UP NEW PGM NEW @V407510 00163000
STAP PROCA STORE PROCESSOR ADDRESS @V4M0124 00164000
STPX PREFRG ATTEMPT TO STORE PREFIX REG @V407510 00165000
PREFSTOR DS 0H @V407510 00166000
MVC PRNPSW,SAVEPGMN RESTORE PROGRAM NEW @V407510 00167000
MVC PROPSW,SAVEPGMO RESTORE PROGRAM OLD @V407510 00168000
MVC INTPRL(L'INTPRL+L'INTPR),SAVEPR RESTORE CODE @V4M0111 00169000
MVC ABCODE,CPABEND SAVE ABEND CODE FOR @V407510 00170000
* ABENDING PROCESSOR @V407510 00171000
MVC GREGS(GRGLN),DUMPSAVE SAVE GENERAL REGISTERS @V407510 00172000
* FOR ABENDING PROCESSOR @V407510 00173000
L R6,=A(DMKSYSRM) GET REAL STORAGE SIZE @V407510 00174000
L R6,0(R6) GET STORAGE SIZE @V407510 00175000
L R7,=A(DMKSYSRV) GET SYSGENED STORAGE SIZE @V407510 00176000
L R7,0(,R7) GET STORAG ESIZE @V407510 00177000
CR R6,R7 REAL SIZE GREATER THAN SYSGENED? @V407510 00178000
BL SIZEOK NO, USE REAL SIZE @V407510 00179000
LR R6,R7 YES, USE SYSGEN SIZE @V407510 00180000
SIZEOK DS 0H @V407510 00181000
ST R6,STORSIZE SAVE STORAGE SIZE @V407510 00182000
L R5,PREFRG GET VALUE STORED @V407510 00183000
TM DMPSTAT,DMPUNI UNIPROCESSOR FOR SURE? @V4M0124 00184000
BO DMP02 YES, BRANCH @V4M0124 00185000
CLC DMKDMPMA,DMKDMPAA PROC ADDRESSES EQUAL? @V4M0124 00186000
BE DMP02 YES, UNIPROCESSOR...BRANCH @V4M0124 00187000
CLC PROCA,DMKDMPMA ON MAIN PROCESSOR? @V4M0124 00192000
BNE DMPATTP NO, BRANCH @V4M0124 00193000
MVC PREFRG,MAINPSA INSURE PREFRG ACCURATE @V4M0124 00194000
MVC PROCA,DMKDMPMA SAVE PROCESSOR ADDRESS FOR @V407510 00195000
* ABENDING PROCESSOR @V407510 00196000
LA R4,RETRY SET UP LOOP CONTROL @V407510 00197000
LOOP1 DS 0H @V407510 00198000
SR R15,R15 CLEAR STATUS REGISTER @V407510 00199000
LH R0,DMKDMPAA SIGNAL OTHER PROCESSOR @V407510 00200000
LA R1,SIGSSS STOP AND STORE STATUS ORDER CODE @V407510 00201000
SIGP R15,R0,0(R1) ISSUE SIGNAL @V407510 00202000
BZ DMP01 SUCCESSFUL, BR TO COMMON CODE @V407510 00203000
BCT R4,LOOP1 RETRY 256 TIMES @V407510 00204000
BAL R4,DMPERR ISSUE MESSAGE @V407510 00205000
B DMP01 BRANCH TO COMMON CODE @V407510 00206000
DMPATTP DS 0H ATTATCHED PROCESSOR ABEND @V407510 00207000
* STOP MAIN PROCESSOR @V407510 00208000
MVC PREFRG,ATTPSA INSURE PREFRG ACCURATE @V4M0124 00209000
MVC PROCA,DMKDMPAA SAVE PROCESSOR ADDRESS FOR @V407510 00210000
* ABENDING PROCESSOR @V407510 00211000
LA R4,RETRY SET UP LOOP CONTROL @V407510 00212000
LOOP2 DS 0H @V407510 00213000
SR R15,R15 CLEAR STATUS REGISTER @V407510 00214000
LH R0,DMKDMPMA SIGNAL OTHER PROCESSOR @V407510 00215000
LA R1,SIGSSS STOP AND STORE STATUS ORDER CODE @V407510 00216000
SIGP R15,R0,0(R1) ISSUE SIGNAL @V407510 00217000
BZ SIGSENS SUCCESSFUL, ISSUE SENSE @V4M0127 00218000
BCT R4,LOOP2 RETRY 256 TIMES @V407510 00219000
BAL R4,DMPERR ISSUE MESSAGE @V407510 00220000
SIGSENS DS 0H @V4M0127 00221000
SR R15,R15 CLEAR STATUS REGISTER @V4M0127 00222000
LH R0,DMKDMPMA SIGNAL OTHER PROCESSOR 00223000
LA R1,SIGSENSE SENSE ORDER CODE @V4M0127 00224000
SIGP R15,R0,0(R1) SIGNAL SENSE @V4M0127 00225000
BC PROCBUSY,SIGSENS SIGNAL UNTIL NOT BUSY @V4M0127 00226000
SIGRSRT DS 0H @V4M0127 00227000
L R5,PREFRG GET PREFIX REG FOR ATTACHED @V407510 00228000
* PROCESSOR @V407510 00229000
STM R0,R15,DUMPSAVE-PSA(R5) STORE REGS IN @V407510 00230000
* ABSOLUTE ZERO @V407510 00231000
L R5,MAINPSA GET PREFIX REG FOR MAIN @V407510 00232000
* PROCESSOR @V407510 00233000
MVC RSRTNPSW-PSA(,R5),RSTPSW SET UP RESTART PSW @V407510 00234000
LA R4,RETRY SET UP LOOP CONTROL @V407510 00235000
LOOP3 DS 0H @V407510 00236000
SR R15,R15 CLEAR STATUS REGISTER @V407510 00237000
LH R0,DMKDMPMA SIGNAL OTHER PROCESSOR @V407510 00238000
LA R1,SIGREST RESTART ORDER CODE @V407510 00239000
SIGP R15,R0,0(R1) ISSUE SIGNAL @V407510 00240000
BZ SIGPSTOP SUCCESSFUL, SIGNAL SELF TO STOP @V407510 00241000
BCT R4,LOOP3 RETRY 256 TIMES @V407510 00242000
B LOADWAIT UNSUCCESSFUL, LOAD WAIT STATE @V407510 00243000
SIGPSTOP DS 0H @V407510 00244000
SR R15,R15 CLEAR STATUS REGISTER @V407510 00245000
LH R0,DMKDMPAA SIGNAL SELF @V407510 00246000
LA R1,SIGSTOP STOP ORDER CODE @V407510 00247000
SIGP R15,R0,0(R1) ISSUE SIGNAL @V407510 00248000
B LOADWAIT UNSUCCESSFUL, LOAD WAIT STATE @V407510 00249000
DMPRST DS 0H RESTART ON MAIN PROCESSOR @V407510 00250000
DROP R12,R13 DROP ORIGINAL BASE REGS @V4M0105 00251000
* NO ADDRESSABILITY UNTIL R12 & R13 RELOADED @V407510 00252000
BALR R5,0 GET TEMPORARY BASE REG @V407510 00253000
USING *,R5 TEMPORARY ADDRESSABILITY @V407510 00254000
L R5,MAINPSA GET MAIN PSA ADDRESS @V407510 00255000
DROP R5 END TEMPORARY ADDRESSABILITY @V407510 00256000
USING DMKDMP,R12 RESET ORIGINAL ADDRESSABILITY @V4M0105 00257000
USING DMKDMP+PAGE,R13 @V4M0105 00258000
* NORMAL ADDRESSABILITY WHEN R12 & R13 RELOADED @V407510 00259000
LM R0,R15,DUMPSAVE-PSA(R5) RESTORE REGS FOR @V407510 00260000
* RESTART @V407510 00261000
DMP01 DS 0H COMMON DUMP PROCESSING @V407510 00262000
* ON MAIN PROCESSOR @V407510 00263000
SPX ALLZEROS SET PREFIX REG TO ZERO @V407510 00264000
* USING ABSOLUTE 0 AS PSA @V407510 00265000
* MOVE STATUS INFORMATION FOR @V407510 00266000
* NON-ABENDING PROCESSOR TO @V407510 00267000
* ITS PSA @V407510 00268000
L R5,MAINPSA GET MAIN PSA ADDRESS @V407510 00269000
C R5,PREFRG ABENDED ON MAIN? @V407510 00270000
BNE DMP0150 NO, PUT STATUS INFO INTO MAIN @V407510 00271000
L R5,ATTPSA YES, PUT STATUS INFO INTO ATT @V407510 00272000
DMP0150 DS 0H R5 HAS ADDR OF OTHER PSA @V407510 00273000
* PROCESSOR (NON-ABENDING) PSA @V407510 00274000
* STOP AND STORE STATUS SIGNAL @V407510 00275000
* STORES INFORMATION IN ABSOLUTE @V407510 00276000
* ZERO, SO STATUS INFORMATION @V407510 00277000
* WILL BE MOVED TO PSA OF @V407510 00278000
* NON-ABENDING PROCESSOR @V407510 00279000
MVC CPULOG+SSCLK-PSA(LNTIMER,R5),CPULOG+SSCLK @V407510 00280000
* MOVE CLOCKS STORED @V407510 00281000
* TO OWN PSA @V407510 00282000
MVC FXDLOG-PSA(LNLOG,R5),FXDLOG @V407510 00283000
* MOVE PSW, PREFIX REG, ETC TO 00284000
* OWN PSA @V407510 00285000
MVC FPRLOG-PSA(LNREGS,R5),FPRLOG @V407510 00286000
* MOVE FPREGS, GPREGS, & CREGS TO @V407510 00287000
* OWN PSA @V407510 00288000
DMP02 DS 0H @V407510 00289000
MVC LOWCORE(LCLN),PSA SAVE FIRST 256 BYTES OF @V407510 00290000
* LOW CORE @V407510 00291000
MVC PRNPSW(IONPSW+4-PRNPSW),DMPPSWS @V407510 00292000
* ARRANGE NEW PSWS @V407510 00293000
LCTL C14,C15,DISABLMC DISABLE SOFT MACHINE CHECKS 00294000
LCTL C2,C2,ALLONES RE-ENABLE CHANNEL 0 @V407510 00295000
CLC =C'CPCP',CPID WARM MACHINE ?? 00296000
BE NOTCOLD YES - @VA07234 00297000
MVC TODATE,ALLZEROS ZERO 'TODATE' AREA @V407510 00298000
MVC DMKDMPTD,ALLZEROS ZERO 'TODATE' AREA @V407510 00299000
OI DMKDMPSW,ALL FORCE FULL DUMP @VA01097 00300000
MVC CPID,=C'COLD' INDICATE COLD MACHINE 00301000
NOTCOLD DS 0H CONTINUE @VA07234 00302000
SLR R1,R1 00303000
IC R1,ABCODENU GET ABEND CODE DIGIT @V407510 00304000
CVD R1,TEMPAD CONVERT TO DECIMAL 00305000
UNPK DMPSCOD+3(3),TEMPAD+6(2) UNPACK 00306000
OI DMPSCOD+5,X'F0' MAKE UP FOR HARDWARE 00307000
MVC DMPSCOD(NAMELN),ABCODEMD GET MODULE NAME @V407510 00308000
LM R0,R1,TODCLOCK GET TIME OF CRASH 00309000
SL R1,TODATE2W MINUS MIDNIGHT @V407510 00310000
BC 11,*+8 NO OFLOW 00311000
SL R0,=F'1' ADJUST 00312000
SL R0,DMKDMPTD FIRST WORD @V407510 00313000
CL R0,=X'000141DD' GREATER THAN MAX FOR ONE DAY @VA01097 00314000
BH DMP03 YES, --'TODATE' INVALID @V407510 00315000
SRDL R0,12 TIME IN MICROSECONDS 00316000
D R0,=F'1000000' CONVERT TO SECONDS 00317000
SR R0,R0 FORGET REMAINDER 00318000
D R0,=F'3600' GET HOURS 00319000
CVD R1,TEMPAD IN DEC 00320000
UNPK DMPTIME(4),TEMPAD+6(3) CONVERT 00321000
MVI DMPTIME+2,C':' EDIT 00322000
LR R1,R0 GET SECONDS REMAINING 00323000
SR R0,R0 CLEAR 00324000
D R0,SECPMIN GET MINUTES @V407510 00325000
CVD R1,TEMPAD CONVERT TO DEC 00326000
UNPK DMPTIME+3(4),TEMPAD+6(3) CONVERT 00327000
MVI DMPTIME+5,C':' EDIT 00328000
CVD R0,TEMPAD GET SECONDS 00329000
UNPK DMPTIME+6(2),TEMPAD+6(2) CONVERT 00330000
OI DMPTIME+7,X'F0' SET ZONE 00331000
DMP03 DS 0H CONVERT PROCESSOR ADDRESS @V407510 00332000
LH R1,PROCA GET PROCESSOR ADDRESS FOR @V407510 00333000
* ABENDING PROCESSOR @V407510 00334000
CVD R1,TEMPAD CONVERT TO DECIMAL FORM @V407510 00335000
UNPK DMPROC(L'PROCA),TEMPADLO(L'PROCA) @V407510 00336000
* CONVERT TWO SIGNIFICANT DIGITS @V407510 00337000
OI DMPROCL,ZONE SET ZONE FOR LAST DIGIT @V407510 00338000
DMPMSG EQU * HERE TO SEND MESSAGE TO CONSOLE @VA01097 00339000
L R0,SFCCCW GET COUNT AND ADDRESS OF MSG @V200735 00340000
BAL R9,TYPLINE TYPE LINE ON SYSTEM CONSOLE @V200735 00341000
L R8,=A(DMKPRGMC) GET ADDR OF MONITOR COMM @V2B2638 00342000
MVC MONCAD,0(R8) SAVE IT FOR LATER @V2B2638 00343000
L R1,DMKDMPDV GET DUMP DEVICE ADDRESS (CCU) @V407438 00344000
LTR R1,R1 IS THERE ONE? @V407438 00345000
BZ DEFAULT YES 00346000
USING RDEVBLOK,R8 00347000
LM R9,R10,BALR2 SAV LOW CORE VALUES USED @VA01876 00348000
CALL DMKSCNRU FIND RBLOKS @V407438 00349000
BNZ DEFAULT THIS SHOULDN'T HAPPEN @V407438 00350000
STM R9,R10,BALR2 RESTORE LOW CORE AS IT WAS @VA01876 00351000
LR R15,R1 AND SAVE IT IN R15 @VA01081 00352000
CLI RDEVTYPC,CLASTAPE TAPE DEVICE ? 00353000
BE DMPTAPE YES 00354000
CLI RDEVTYPC,CLASURO UNIT RECORD OUTPUT DEVICE ? 00355000
BNE TSTDASD NO 00356000
TM RDEVTYPE,TYPPRT PRINTER TYPE DEVICE ? 00357000
BO DMPPRT YES 00358000
B DEFAULT 00359000
TSTDASD CLI RDEVTYPC,CLASDASD DASD DEVICE ? 00360000
BE DMPDASD YES 00361000
DEFAULT L R15,=A(DMKRIOPR) GET PRINTER TABLE IN RIO 00362000
L R9,0(,R15) GET NUMBER OF PRINTERS DEFINED IN SYSTEM 00363000
LTR R9,R9 ZERO ? 00364000
BNZ *+8 NO 00365000
BAL R14,LOADWAIT ERROR -- 00366000
LH R8,4(,R15) GET RDEVBLOK DISPLACEMENT FOR 1ST PRINTER 00367000
SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00368000
AL R8,DMPRIODV FORM RDEVBLOK ADDRESS @V407510 00369000
LH R15,6(,R15) GET FULL DEVICE ADDRESS 00370000
B DMPPRT 00371000
EJECT 00372000
*. 00373000
* OPERATION OF DASD DUMP ROUTINE - 00374000
* 00375000
* 1. SAVE STORAGE KEYS OF PAGES 0 THRU 3. 00376000
* 2. WRITE PAGES 0 THRU 3 TO DUMP FILE RECORDS 5 THRU 8. 00377000
* 3. ZERO PAGES 1 THRU 3. 00378000
* NOTE: AT THIS POINT PAGE 1 IS THE DUMP INFORMATION RECORD 00379000
* (DMPINREC), AND PAGES 2 AND 3 ARE THE DUMP KEY 00380000
* RECORDS (DMPKYREC). 00381000
* 4. MOVE REGISTERS, CLOCKS, AND SAVED LOW CORE TO DMPINREC. 00382000
* 5. WRITE PAGES 4 THROUGH THE END OF MEMORY TO THE DUMP FILE 00383000
* SAVING STORAGE KEYS FOR EACH 2K BLOCK IN THE DMPKYREC. 00384000
* IF THE END OF MEMORY IS NOT ON A 4K BOUNDRY TURN THE 00385000
* HALFPAGE FLAG ON IN DMPINREC TO INDICATE THAT THE 00386000
* LAST RECORD IN THE DUMP FILE REPRESENTS 2K. 00387000
* 6. WRITE PAGES 1 THRU 3 TO DUMP FILE RECORDS 2 THRU 4. 00388000
* 7. SET ENDING RECORD NUMBER AND SYSTEM FILE NUMBER IN THE 00389000
* DUMP FILE SFBLOK. 00390000
* 8. CHAIN DUMP FILE RECBLOKS ONTO RDEVBLOK RECBLOK CHAIN. 00391000
* 9. CHAIN DUMP FILE SFBLOK ONTO SYSTEM READER CHAIN. 00392000
* IF THE MONITOR WAS ACTIVE THEN ATTEMPT TO WRITE 00393000
* A TAPE MARK AND REWIND/UNLOAD THE TAPE. 00394000
* 10. RE-IPL SYSTEM. 00395000
* 00396000
*. 00397000
SPACE 00398000
DMPDASD EQU * HERE TO WRITE DUMP TO A DASD DEVICE 00399000
LA R5,32 GET NUMBER OF RECS/CYL FOR 2314 00400000
TM RDEVTYPE,TYP2314 2314 ? 00401000
BO TBLSET YES 00402000
LA R5,57 GET NUMBER OF RECS/CYL FOR 3330 00403000
TM RDEVTYPE,TYP3330 3330 ? 00404000
BO TBLSET YES 00405000
LA R5,120 GET NUMBER OF RECS/CYL FOR 3350 @V304498 00406000
CLI RDEVTYPE,TYP3350 3350 ? @V304498 00407000
BE TBLSET YES @V304498 00408000
LA R5,96 Get number of recs/cyl for 3375 HRC106DK 00408100
CLI RDEVTYPE,TYP3375 3375 ? HRC106DK 00408200
BE TBLSET Yes HRC106DK 00408300
LA R5,150 Get number of recs/cyl for 3380 HRC106DK 00408400
CLI RDEVTYPE,TYP3380 3380 ? HRC106DK 00408500
BE TBLSET Yes HRC106DK 00408600
LA R5,24 RECS/CYL FOR 2305 AND 3340 @V2A2029 00409000
TBLSET L R3,=A(3*4096+2048) GET X'3800' 00410000
LA R10,8 GET CONSTANT OF 8 00411000
NXTKEY ISK R9,R3 GET KEYS OF INITIAL 4 PAGES 00412000
STC R9,SAVKEY-1(R10) SAVE KEY 00413000
SL R3,=F'2048' GET NEXT 2K BLOCK 00414000
BCT R10,NXTKEY 00415000
L R11,DMKDMPRC GET CHAIN OF RECBLOKS 00416000
USING RECBLOK,R11 00417000
LA R9,DMPMAP-(DMPPGMAP-DMPINREC) TEMP DSECT ADDRESS@VW01525 00418000
USING DMPINREC,R9 00419000
MVC CYL(2),RECCYL SET INITIAL CYLINDER NUMBER 00420000
LA R4,1 GET CONSTANT OF 1 00421000
LA R1,4 WRITE 4 PAGES OUT ONTO DISK 00422000
SLR R3,R3 STARTING WITH PAGE 0 00423000
LA R2,5 START WITH RECORD 5 00424000
NXTPAG TM DMKDMPSW,ALL ALL PAGES TO BE DUMPED ? @VW01525 00425000
BO NXTPAG1 YES -- @VW01525 00426000
LR R7,R3 GET THIS PAGE NUMBER @VW01525 00427000
SRL R7,8 *16 @VW01525 00428000
AL R7,DMPCORET ADDR START OF CORTABLE @V407510 00429000
USING CORTABLE,R7 @VW01525 00430000
CLC CORFPNT,=C'*VR*' IS IT V=R PAGE ? @VW01525 00431000
BE SKIPPAG YES - SKIP THIS PAGE @VW01525 00432000
TM CORFLAG,CORCP CP NUCLEUS PAGE ?? @VW01525 00433000
BO NXTPAG1 YES, DUMP IT @VW01525 00434000
CLC CORFPNT,=C'FREE' FREE STORAGE PAGE ?? @VW01525 00435000
BNE SKIPPAG NO, SKIP IT @VW01525 00436000
NXTPAG1 BAL R14,DSKWTRC1 WRITE OUT PAGE @VW01525 00437000
ALR R2,R4 GET NEXT RECORD @VW01525 00438000
SKIPPAG DS 0H @V407510 00439000
AL R3,PAGESIZE GET NEXT PAGE ADDRESS @V407510 00440000
BCT R1,NXTPAG BRANCH IF NOT 4 PAGES @VW01525 00441000
DROP R7 @VW01525 00442000
L R0,PAGESIZE ADDRESS OF PAGE 1 @V407510 00443000
L R1,=A(3*4096) CLEAR 3 PAGES 00444000
SLR R7,R7 USING ZERO PAD CHARACTER 00445000
MVCL R0,R6 ... 00446000
L R9,PAGESIZE ADDRESS OF PAGE 1 @V407510 00447000
MVC DMPPGMAP(1),DMPMAP MOVE BIT MAP @VW01525 00448000
MVC DMPGPRS(REGLN),GREGS MOVE GPRS & CRS INTO @V407510 00449000
* DMPINREC @V407510 00450000
AIF (NOT &FLOATPT).NOFP2 00451000
MVC DMPFPRS(4*8),FPREGS MOVE FPRS INTO INFO REC 00452000
.NOFP2 ANOP 00453000
MVC DMPLCORE(256),LOWCORE MOVE LOW CORE INTO INFO REC 00454000
MVC DMPTODCK(3*8),TODCLOCK MOVE CLOCKS TO INFO REC 00455000
L R7,=A(DMKSYSRV) GET GENERATED STORAGE SIZE 00456000
L R7,0(R7) .. 00457000
ST R7,DMPSYSRV SAVE FOR VDUMP 00458000
L R7,=A(DMKSYSRM) POINT TO REAL STORAGE SIZE @V67CAH7 00458200
L R7,0(R7) GET REAL STOR VALUE @V67CAH7 00458400
ST R7,DMPSYSRM SAVE IT IN DMPINREC @V67CAH7 00458600
MVC DMPCPUID,CPUID SAVE CPU'S ID IN DMPINREC @V67CAH7 00458800
MVC DMPPROCA,PROCA MOVE PROCESSOR ADDRESS TO @V407510 00459000
* DMPINREC @V407510 00460000
MVC DMPPRFRG,PREFRG MOVE PREFIX REG @V4M0115 00461000
MVC DMPABEND,ABCODE MOVE ABEND CODE @V4M0115 00462000
LR R10,R9 GET PTR TO PAGE 1 00463000
AL R10,PAGESIZE ADDR OF PAGE 2 @V407510 00464000
USING DMPKYREC,R10 00465000
MVC DMPKEY(8),SAVKEY MOVE KEYS FOR PAGE 0-3 INTO INFO REC 00466000
LR R1,R3 CURRENT PAGE ADDRESS @VW01525 00467000
SRL R1,11 GET PAGE NUMBER, THEN TIMES TWO @VW01525 00468000
LA R10,DMPKEY(R1) GET PTR TO NEXT KEY @VW01525 00469000
DROP R10 00470000
L R1,=F'2048' GET CONSTANT OF 2K 00471000
NXTPAG3 TM DMKDMPSW,ALL ALL PAGES TO BE DUMPED ? @VW01525 00472000
BO NXTPAG6 YES, DUMP ALL @VW01525 00473000
LR R7,R3 GET THIS PAGE NUMBER @VW01525 00474000
SRL R7,8 PAGE NUMBER * 16 @VW01525 00475000
AL R7,DMPCORET ADDR START OF CORTABLE @V407510 00476000
USING CORTABLE,R7 @VW01525 00477000
CLC CORFPNT,=C'*VR*' IS IT V=R PAGE ? @VW01525 00478000
BE NOTCP YES, SKIP IT 00479000
TM CORFLAG,CORCP DOES PAGE BELONG TO CP NUCLEUS ? @VW01525 00480000
BO NXTPAG6 YES, DUMP IT @VW01525 00481000
CLC CORFPNT,=C'FREE' FREE STORAGE PAGE ? @VW01525 00482000
BE NXTPAG6 YES, DUMP IT @VW01525 00483000
CLC CORFPNT,DMPSYSVM IS IT PART OF THE PAGEABLE @V407510 00484000
* NUCLEUS? @V407510 00485000
BE NXTPAG6 YES @V408246 00486000
NOTCP DS 0H @V407510 00487000
AL R3,PAGESIZE GET NEXT PAGE ADDRESS @V407510 00488000
LA R10,2(,R10) BUMP STORAGE KEY PRT @VW01525 00489000
CL R3,STORSIZE AT END OT STORAGE ? @VW01525 00490000
BNL DSKEND YES - @VW01525 00491000
DROP R7 @VW01525 00492000
B NXTPAG3 GET NEXT STORAGE PAGE @VW01525 00493000
NXTPAG6 LA R7,2048(,R3) CHECK FOR SHORT PAGE @VW01525 00494000
CL R7,STORSIZE ... @VA01097 00495000
BL NXTPAG5 NO 00496000
STH R1,DISKWRIT+6 CHANGE COUNT TO 2K 00497000
OI DMPFLAG,HALFPAGE INDICATE THAT LAST RECORD = 2K 00498000
NXTPAG5 BAL R14,DSKWTRC1 WRITE OUT PAGE 00499000
ISK R0,R3 GET STORAGE KEY FOR THIS 2K BLOCK 00500000
STC R0,0(,R10) SAVE IT 00501000
ALR R3,R1 GET NEXT 2K BLOCK 00502000
CL R3,STORSIZE AT END OF STORAGE ? @VA01097 00503000
BNL DSKEND YES 00504000
ISK R0,R3 GET STORAGE FOR THIS 2K BLOCK 00505000
STC R0,1(,R10) SAVE 00506000
LA R10,2(,R10) BUMP STORAGE KEY PTR 00507000
ALR R3,R1 AND ADDRESS PTR 00508000
CL R3,STORSIZE AT END OF STORAGE ?? @VA01097 00509000
BNL DSKEND YES, FINISH UP 00510000
NXTPAG2 BXLE R2,R4,NXTPAG3 00511000
L R11,RECPNT GET NEXT RECBLOK 00512000
MVC CYL(2),RECCYL GET NEXT CYLINDER 00513000
LR R2,R4 RESTART WITH RECORD 1 00514000
B NXTPAG3 00515000
SPACE 1 00516000
DSKEND EQU * 00517000
ST R11,TEMPAD SAVE ADDRESS OF LAST RECBLOK PROCESSED 00518000
STH R9,DISKWRIT+6 CHANGE CHANNEL PROGRAM COUNT BACK TO 4K 00519000
L R11,DMKDMPRC GET START OF RECBLOK CHAIN 00520000
MVC CYL(2),RECCYL GET STARTING CYLINDER 00521000
LR R3,R9 WRITE OUT INFO REC, AND KEY RECS 00522000
LA R1,3 GET CONSTANT OF 3 00523000
LA R2,2 START WITH RECORD 2 00524000
NXTPAG4 BAL R14,DSKWTRC2 WRITE OUT REC 00525000
AL R3,PAGESIZE BUMP PAGE ADDRESS @V407510 00526000
ALR R2,R4 BUMP RECORD NUMBER 00527000
BCT R1,NXTPAG4 00528000
SPACE 1 00529000
LA R10,DMKDMPSF GET DUMP FILE SPOOL FILE BLOCK 00530000
USING SFBLOK,R10 00531000
L R1,TEMPAD GET LAST RECBLOK PROCESSED 00532000
IC R3,SFBSTART+3 GET OWNED LIST DISPLACEMENT 00533000
ICM R3,B'0010',RECUSED-RECBLOK(R1) GET LAST RECORD USED 00534000
ICM R3,B'1100',RECCYL-RECBLOK(R1) GET CURRENT CYLINDER 00535000
ST R3,SFBLAST SET LAST CCRD ADDRESS 00536000
L R3,=A(DMKRSPID) GET PTR TO SYSTEM FILE NUMBER 00537000
LH R2,0(,R3) GET SYSTEM FILE NUMBER 00538000
STH R2,SFBFILID PLACE IN DUMP FILE SFBLOK 00539000
MVI SFBTYPE,TYP1403 PRINTER FILE TYPE @V200930 00540000
MVC SFBDATE,DMKDMPDT SET DATE OF CRASH @V407510 00541000
MVC SFBTIME,DMPTIME SET TIME 00542000
MVC SFBDIST(6),DMPSCOD MOVE CP ABEND CODE TO @VA14457 00542300
* SFBLOK DISTRIBUTION FIELD 00542600
LA R2,1(,R2) BUMP (IGNORE OVERFLOW) 00543000
STH R2,0(,R3) REPLACE FOR DMKCKP 00544000
LA R2,RDEVRECS GET PTR TO SPOOL RECBLOK CHAIN 00545000
RECSRCH LR R1,R2 00546000
L R2,RECPNT-RECBLOK(,R1) GET FOWARD PTR 00547000
RECTST LTR R2,R2 ZERO ? 00548000
BNZ RECSRCH NO 00549000
ST R2,DMKDMPDV PREVENT DUPLICATE DUMP FILES @V304298 00550000
ST R11,0(,R1) CHAIN DUMP RECBLOK CHAIN TO CURRENT CHAIN 00551000
L R2,DMPRSPRD GET PTR TO RDR SFBLOK CHAIN @V407510 00552000
L R3,0(,R2) GET RDR SFBLOK CHAIN 00553000
ST R10,0(,R2) CHAIN DUMP FILE SFBLOK 00554000
ST R3,SFBPNT ... 00555000
SPACE 2 00556000
* NOW CHECKPOINT THE DUMP FILE SPOOL BLOCK 00557000
* WE WILL USE PAGE 1 IN REAL CORE TO READ AND WRITE 00558000
* FROM THE CHECKPOINT CYLINDER 00559000
MVI DISKWRIT,X'06' CHANGE IT TO A READ @V304298 00560000
MVC WRITADDR(3),AL3PAGSZ READ INTO PAGE 1 @V407510 00561000
MVC WRITLEN(2),HWPAGSZ 4096 BYTES TO READ @V407510 00562000
L R14,=A(DMKSYSCH) ADDR OF 1ST CHECKPOINT CYLINDER@V304298 00563000
MVC CYL(2),0(R14) MOVE IT IN @V304298 00564000
CKSBEGIN DS 0H @V304298 00565000
LH R1,4(,R14) Get CUU of CKP area volume HRC075DK 00566000
CALL DMKSCNRU FIND ITS RDEVBLOK @V304298 00567000
LA R14,57 ASSUME A 3330 @V304298 00568000
TM RDEVTYPE,TYP3330 IS IT? @V304298 00569000
BO CKPA1 XFER IF SO @V304298 00570000
LA R14,120 ASSUME A 3350 @VA09846 00571100
CLI RDEVTYPE,TYP3350 IS IT ? @V304498 00572000
BE CKPA1 XFER IF SO @V304498 00573000
LA R14,96 Assume a 3375 HRC106DK 00573100
CLI RDEVTYPE,TYP3375 Is it ? HRC106DK 00573200
BE CKPA1 Xfer if so HRC106DK 00573300
LA R14,150 Assume a 3380 HRC106DK 00573400
CLI RDEVTYPE,TYP3380 Is it ? HRC106DK 00573500
BE CKPA1 Xfer if so HRC106DK 00573600
LA R14,32 ASSUME IT IS A 2314 @V304298 00574000
TM RDEVTYPE,TYP2314 IS IT? @V304298 00575000
BO CKPA1 XFER IF SO @V304298 00576000
LA R14,24 THEN IT IS A 2305 OR 3340 @V304298 00577000
CKPA1 DS 0H @V304298 00578000
L R15,=A(DMKSYSCH) -> CKP area cyls info HRC075DK 00579000
LH R15,4(,R15) Get CUU of CKP area volume HRC075DK 00579500
LA R5,1 START AT PAGE 1 @V304298 00580000
CKPLOOP DS 0H @V407510 00581000
L R4,PAGESIZE START OF PAGE @V407510 00582000
LA R9,36 SFBLOKS PER CHECKPOINT PAGE @V304298 00583000
LA R3,768 SET UP FOR A 3330 OR 2305 @V304298 00584000
CLI RDEVTYPE,TYP3350 IS IT A 3350? @V304498 00585000
BNE CKPA14 XFER IF NOT @V304498 00586000
LA R3,1024 DIVIDE CONSTANT FOR 3350 @V304498 00587000
CKPA14 EQU * TEST NEXT DASD DEVICE @V304498 00588000
CLI RDEVTYPE,TYP3375 Is it a 3375? HRC106DK 00588100
BNE CKPA75 Xfer if not HRC106DK 00588200
LA R3,256*8 Divide constant for 3375 HRC106DK 00588300
CKPA75 CLI RDEVTYPE,TYP3380 Is it a 3380? HRC106DK 00588400
BNE CKPA80 Xfer if not HRC106DK 00588500
LA R3,256*10 Divide constant for 3380 HRC106DK 00588600
CKPA80 EQU * Test next DASD device HRC106DK 00588700
TM RDEVTYPE,TYP2314 IS IT A 2314? @V304298 00589000
BNO *+8 XFER IF NOT @V304298 00590000
LA R3,409 SET FOR A 2314 @V304298 00591000
TM RDEVTYPE,TYP3340 IS IT A 3340 ? @V304298 00592000
BNO *+8 XFER IF NOT @V304298 00593000
LA R3,512 SET UP FOR A 3340 @V304298 00594000
LR R1,R5 PAGE NUMBER @V304298 00595000
BCTR R1,0 RELATIVE TO ZERO @V304298 00596000
SLL R1,8 MULTIPLY BY 256 @V304298 00597000
SR R0,R0 CLEAR FOR DIVIDE @V304298 00598000
DR R0,R3 GET THE HEAD NUMBER @V304298 00599000
STH R1,HHR STORE IT IN SEEK ADDRESS @V304298 00600000
STC R5,HHR+2 RECORD NUMBER @V304298 00601000
CKSB4SIO ST R14,ALTSAVE SAVE OUR R14 @V56BDA8 00602000
BAL R14,DSKIOSUB DO THE DISK IO @V56BDA8 00602010
L R14,ALTSAVE RESTORE R14 @V56BDA8 00602020
SPACE 2 00635000
CKSINLP CLI DISKWRIT,X'05' IS IT A WRITE ? @V304298 00636000
BE CKSEND IF IT IS, WE ARE DONE @V304298 00637000
CKSINLP1 DS 0H @V407510 00638000
CLC 0(4,R4),ALLONES EMPTY SLOT? @V407510 00639000
BE GOTCKS XFER IF SO @V304298 00640000
LA R4,SFBSIZE*8(R4) POINT TO NEXT SLOT @V304298 00641000
BCT R9,CKSINLP1 SEE IF IT'S EMPTY @V304298 00642000
LA R5,1(,R5) NEXT PAGE @V304298 00643000
BCT R14,CKPLOOP TRY IT FOR SIZE @V304298 00644000
L R14,=A(DMKSYSCH) CHECKPOINT CYLINDER RANGE @V304298 00645000
LH R1,CYL LOAD PRESENT CYLINDER @V304298 00646000
LA R1,1(,R1) GO TO NEXT ONE @V304298 00647000
STH R1,CYL GET NEW ONE IN SEEK ADDRESS @V304298 00648000
CH R1,2(,R14) PAST END OF CHECKPOINT CYLS? @V304298 00649000
BNH CKSBEGIN XFER IF NOT @V304298 00650000
B DMPIOERR COULDN'T FIND AN EMPTY SLOT @V304298 00651000
* CALL IT A DUMP ERROR 00652000
SPACE 00653000
GOTCKS MVI DISKWRIT,X'05' MAKE IT A WRITE CCW @V304298 00654000
MVC 0(SFBSIZE*8,R4),SFBLOK CHECKPOINT THE DUMP FILE @V304298 00655000
MVI 0(R4),RDRCHN+CHGSFB SET NECESSARY FLAGS @V304298 00656000
B CKSB4SIO WRITE OUT THE PAGE @V304298 00657000
SPACE 2 00658000
CKSEND DS 0H @V304298 00659000
CLC CPID(4),=C'CPCP' HOT MACHINE? @V304298 00660000
MVC CPID(4),=C'WARM' INDICATE AUTOMATIC RESTART @V2B2638 00661000
BNE RESTART NOPE, GO CHKPT/RESTART THE SYS @V2B2638 00662000
B MONSTOP YA, HOT MACH, STOP MON IF ACTIVE @V2B2638 00663000
EJECT 00664000
DSKWTRC1 EQU * HERE TO WRITE RECORDS TO DUMP FILE 00665000
L R7,DMPNOREC GET NUMBER OF RECORDS IN DUMP FILE 00666000
ALR R7,R4 BUMP BY 1 00667000
ST R7,DMPNOREC REPLACE 00668000
LR R7,R3 GET CURRENT PAGE ADDRESS 00669000
SRL R7,12 00670000
SLR R6,R6 CLEAR FOR DIVIDE 00671000
D R6,BITSPB DIVIDE BY 8..BITS/BYTE @V407510 00672000
LA R7,DMPPGMAP(R7) GET PAGE BIT MAP BYTE 00673000
IC R6,ALOCBIT(R6) GET MASK BYTE 00674000
EX R6,RECALOC TURN ON BIT FOR THIS RECORD 00675000
SPACE 00676000
DSKWTRC2 LR R7,R2 GET CURRENT RECORD PTR 00677000
BCTR R7,0 -1 00678000
SLR R6,R6 CLEAR FOR DIVIDE 00679000
D R6,BITSPB DIVIDE BY 8..BITS/BYTE @V407510 00680000
LA R7,RECMAP(R7) GET PROPER RECMAP BYTE 00681000
IC R6,ALOCBIT(R6) GET MASK BYTE 00682000
EX R6,TSTALOC ALL READY ALLOCATED FOR THIS RECORD 00683000
BO DSKIO YES - MULT RESTARTS ON SAME DUMP CYL 00684000
EX R6,RECALOC TURN ON BIT FOR THIS RECORD 00685000
IC R7,RECUSED GET NUMBER OF RECORDS USED ON THIS CYL 00686000
LA R7,1(,R7) BUMP BY 1 00687000
STC R7,RECUSED REPLACE 00688000
SPACE 00689000
DSKIO EQU * HERE TO DO DISK I/O 00690000
LA R0,768 00691000
CLI RDEVTYPE,TYP3350 3350 DASD DEVICE ? @V304498 00692000
BNE DSK2314 NO -- BRANCH @V304498 00693000
LA R0,1024 DIVIDE CONSTANT FOR 3350 @V304498 00694000
DSK2314 EQU * TEST FOR NEXT DASD DEVICE - 2314 @V304498 00695000
CLI RDEVTYPE,TYP3375 3375 DASD device ? HRC106DK 00695100
BNE NOT3375 No -- branch HRC106DK 00695200
LA R0,256*8 Divide constant for 3375 HRC106DK 00695300
NOT3375 CLI RDEVTYPE,TYP3380 3380 DASD device ? HRC106DK 00695400
BNE NOT3380 No -- branch HRC106DK 00695500
LA R0,256*10 Divide constant for 3380 HRC106DK 00695600
NOT3380 EQU * Test next DASD device HRC106DK 00695700
TM RDEVTYPE,TYP2314 2314 ? 00696000
BNO *+8 NO 00697000
LA R0,409 DIVIDE CONSTANT FOR 2314/2319 @V2A2029 00698000
TM RDEVTYPE,TYP3340 3340 DASD DEVICE ? @V2A2029 00699000
BNO *+8 NO -- BRANCH @V2A2029 00700000
LA R0,512 DIVIDE CONSTANT FOR 3340 @V2A2029 00701000
LR R7,R2 GET CURRENT RECORD NUMBER 00702000
BCTR R7,0 -1 00703000
SLL R7,8 *256 00704000
SLR R6,R6 00705000
DR R6,R0 00706000
STH R7,HHR SET HEAD 00707000
STC R2,HHR+2 SET RECORD 00708000
STCM R3,B'0111',DISKWRIT+1 SET DATA ADDRESS IN CCW 00709000
DSKIOSUB LA R0,RTCNT1 RETRY COUNT + 1 @V56BDA8 00710000
DSKRETRY LA R7,DISKCCW ADDRESS OF STANDARD CHANNEL @V56BDA8 00710050
* PROGRAM 00710100
DISKALTR BCT R0,*+8 BR IF RETRY COUNT NOT EXHAUSTED @V56BDA8 00710150
B DMPIOERR OTHERWISE DUMP I/O ERROR @V56BDA8 00710200
DSKSIO ST R7,CAW PUT CHANNEL PRG ADDRESS IN CAW @V56BDA8 00710250
SIO 0(R15) START IO @V56BDA8 00710300
BC 2,DSKBWAIT CC=2, CHANNEL OR SUBCHANNEL BUSY 00714000
BC 4,DSKSTOR CC=1, CSW STORED 00715000
BC 8,*+8 CC=0, STARTED OK 00716000
B DMPIOERR 00717000
MVC IONPSW+4(4),=A(DSKIOINT) SET I/O NEW PSW FOR DRAINING 00718000
DSKWAIT LPSW IWAIT LOAD ENABLED WAIT STATE PSW 00719000
SPACE 00720000
DSKIOINT EQU * HERE UPON HARDWARE I/O INTERRUPT 00721000
CH R15,INTTIO INTERRUPT FOR DUMP DISK ? 00722000
BNE DSKWAIT NO 00723000
CLC CSW+4(2),=AL1(CE+DE,0) COMPLETE OK ? 00724000
BCR 8,R14 YES 00725000
TESTUC TM CSW+4,UC UNIT CHECK ? 00726000
BZ DSKRETRY NO - RETRY 00727000
DSKUC XC SENSDATA(24),SENSDATA CLEAR SENSE DATA @V2B2638 00728000
MVC CAW+1(3),=AL3(SENSE) USE SENSE CCW @V56BDA8 00729000
TIO 0(R15) TEST IO 00731000
BC 6,*-4 CLEAR DEVICE 00732000
SIO 0(R15) START IO (SENSE) 00733000
TIO 0(R15) WAIT FOR IT 00734000
BC 6,*-4 BRANCH IF BUSY OR STATUS STORED 00735000
TM SENSDATA,INTREQ INTERVENTION REQUIRED ? 00736000
BO DSKBWAIT YES - WAIT FOR DEVICE END 00737000
TM SENSDATA,TRKCONCK TRACK CONDITION CHECK? @V56BDA8 00738000
BZ DSKRETRY NO, RETRY @V56BDA8 00738010
MVC CAW+1(3),=AL3(READHAR0) @V56BDA8 00738020
TIO 0(R15) DRAIN ANY INTERRUPTS @V56BDA8 00738030
BC 7,*-4 LOOP UNTIL READY @V56BDA8 00738040
SIO 0(R15) READ R0 FOR ALT TRACK ADDR @V56BDA8 00738050
BC 7,*-4 LOOP UNTIL STARTED @V56BDA8 00738060
TIO 0(R15) TEST FOR COMPLETION @V56BDA8 00738070
BC 7,*-4 TRY AGAIN @V56BDA8 00738080
CLC CSW+4(2),=AL1(CE+DE,0) CLEAN END? @V56BDA8 00738090
BNE DSKRETRY NO, ERROR @V56BDA8 00738100
LA R7,ALTSEEK ALTERNATE CHANNEL PROGRAM @V56BDA8 00738110
B DISKALTR RESTART ON ALTERNATE TRACK @V56BDA8 00738120
SPACE 00740000
DSKSTOR TM CSW+4,BUSY DEVICE BUSY ? 00741000
BZ TESTUC NO - CHECK FOR UNIT CHECK 00742000
TM CSW+4,CE+DE+ATTN+CUE STATUS CLEARED ? 00743000
BZ DSKBWAIT NO - WAIT FOR DEVICE INTERRUPT 00744000
B DSKUC YES - RESTART DEVICE IF POSSIBLE 00745000
DSKBWAIT EQU * 00746000
MVC IONPSW+4(4),=A(DSKSIO) SET I/O NEW PSW FOR RESTART 00747000
LPSW IWAIT LOAD ENABLED WAIT STATE PSW 00748000
SPACE 00749000
TSTALOC TM 0(R7),0 EXECUTED TM 00750000
RECALOC OI 0(R7),0 EXECUTED OR 00751000
EJECT 00752000
ENTRY DMKDMPRS 00753000
DMKDMPRS DS 0H 00754000
DROP R13 @VA01097 00755000
USING *,R12 00756000
L R12,=A(DMKDMPDK) ESTABLISH ADDRESSABITITY 00757000
USING DMKDMPDK,R12 ... 00758000
USING DMKDMP+4096,R13 @VA01097 00759000
LR R13,R12 SET 2ND BASE REGISTER @VA01097 00760000
A R13,PAGESIZE CALCULATE 2ND BASE REG @V407510 00761000
L R15,=A(DMKSYSCK) POINT TO TOD CLOCK FIELD AND 00762000
STCK 0(R15) SAVE THE TIME FOR ACCOUNTING IN DMKCKP 00763000
RESTART DS 0H @V408246 00764000
LA R14,100 RETRY COUNT @V408246 00765000
LH R15,DMKDMPSD IPL DEVICE @V407510 00766000
LA R0,IPLREAD GET IPL CCWS 00767000
ST R0,CAW SET CAW 00768000
SIOIPL SIO 0(R15) 00769000
BC 8,TIOIPL CC=0, STARTED OK 00770000
BC 2,IPLWAIT CC=2, DEVICE BUSY 00771000
BC 4,SIOSTOR CC=1, CSW STORED 00772000
BCT R14,RESTART+4 RETRY @V408246 00773000
BAL R14,LOADWAIT CC=3, NOT OPERATIONAL 00774000
TIOIPL TIO 0(R15) TEST 00775000
BNZ *-4 WAIT 00776000
CLC CSW+4(2),=AL1(CE+DE,0) IS IT CE DE CLEAN? @VA08883 00776500
BNE IPLUC NO, SEE WHAT WENT WRONG @VA08883 00776600
STH R15,INTTIO SAVE IPL DEVICE ADDRESS 00777000
OI IPLREAD+4,SKIP+CC CHANGE IPL SEQUENCE 00778000
SIO 0(R15) START 00779000
BNZ *-4 WAIT 00780000
TIO 0(R15) TEST 00781000
BNZ *-4 WAIT 00782000
CLC CSW+4(2),=AL1(CE+DE,0) IS IT CE DE CLEAN? @VA08883 00783500
BE B1 OK @V408246 00784000
B IPLUC SEE WHAT WENT WRONG @VA08883 00785100
B1 EQU * @V408246 00787000
LPSW IPLPSW GO 00788000
SPACE 00789000
SIOSTOR TM CSW+4,SM+BUSY CONTROL UNIT BUSY? @VA04308 00790000
BO IPLWAIT WAIT FOR IT @VA04308 00791000
TM CSW+4,BUSY DEVICE BUSY? @VA04308 00792000
BZ IPLUC NO -- BRANCH 00793000
TM CSW+4,CE+DE+ATTN+CUE STATUS CLEARED ? 00794000
BNZ RESTART YES -- RESTART CHANNEL PROGRAM 00795000
IPLUC TM CSW+4,UC UNIT CHECK ? 00796000
BO B2 OK @V408246 00797000
BCT R14,RESTART+4 RETRY @V408246 00798000
BAL R14,LOADWAIT UNEXPLAINED ERROR 00799000
B2 EQU * @V408246 00800000
LA R0,SENSE ISSUE SENSE COMMAND 00801000
ST R0,CAW SET CAW 00802000
XC SENSDATA(24),SENSDATA CLEAR SENSE DATA @V2B2638 00803000
SIO 0(R15) START 00804000
BNZ *-4 WAIT 00805000
TIO 0(R15) TEST 00806000
BNZ *-4 WAIT 00807000
CLC CSW+4(2),=AL1(CE+DE,0) IS IT CE DE CLEAN? @VA08883 00807100
BE B2A OK @VA08883 00807200
BAL R14,LOADWAIT UNEXPLAINED ERROR FROM SENSE @VA08883 00807300
B2A EQU * @VA08883 00807400
TM SENSDATA,INTREQ INTERVENTION REQUIRED ? 00808000
BO B3 OK @V408246 00809000
BCT R14,RESTART+4 RETRY @V408246 00810000
BAL R14,LOADWAIT UNEXPLAINED ERROR 00811000
B3 EQU * @V408246 00812000
IPLWAIT EQU * 00813000
MVC IONPSW+4(4),=A(RESTART) WHER TO RESTART 00814000
LPSW IWAIT LOAD ENABLED WAIT STATE PSW 00815000
EJECT 00816000
*. 00817000
* OPERATION OF TAPE DUMP ROUTINE - 00818000
* 00819000
* 1. RESET PRINTER CCWS FOR TAPE. 00820000
* 3. EXECUTE TAPE MODE SET CCWS. 00821000
* 4. JOIN PRINTER CODE BELOW. 00822000
* 00823000
*. 00824000
SPACE 00825000
DMPTAPE EQU * HERE TO WRITE DUMP TO TAPE 00826000
LA R0,TAPEINIT GET INITIAL MODE SET TAPE CCWS 00827000
CLI RDEVTYPE,TYP3420 3420 TAPE DRIVE ? @VA07418 00828000
BNE MODEONE DON,T CHANGE MODESET @VA07418 00829000
MVI TAPEINIT,X'C3' SET MODE 1600 BPI @VA07418 00830000
MODEONE EQU * @VA07418 00831000
BAL R10,CLRCHAN 00832000
B DMPPRT JOIN PRINTER DUMP CODE BELOW 00833000
EJECT 00834000
*. 00835000
* OPERATION OF PRINTER DUMP ROUTINE - 00836000
* 00837000
* 1. FORMAT AND PRINT GENERAL PURPOSE REGISTERS. 00838000
* 2. FORMAT AND PRINT CONTROL REGISTERS. 00839000
* 3. FORMAT AND PRINT FLOATING POINT REGISTERS. 00840000
* 4. FORMAT AND PRINT TOD CLOCK AND CLOCK COMPARATOR 00841000
* 5. FORMAT AND PRINT CPU TIMER AND PREFIX REGISTER 00842000
* 6. FORMAT AND PRINT ALL OF MAIN MEMORY (INCLUDING STORAGE 00843000
* KEYS AT THE BEGINNING OF EVERY 2K BLOCK.) DUPLICATE 00844000
* STORAGE LOCATIONS WILL BE PRINTED AS ONE LINE WITH AN 00845000
* EXPLANATION. 00846000
* 7. PRINT "*** END OF DUMP ***" MESSAGE. 00847000
* 8. IF DUMP DEVICE IS TAPE WRITE AN END OF FILE MARK. 00848000
* 9. IF CPID IS NOT "CPCP" THEN LOAD A NON-ERROR DISABLED 00849000
* WAIT STATE. 00850000
* 10. IF THE VM/MONITOR WAS ACTIVE THEN WRITE A TAPE MARK AND 00851000
* REWIND/UNLOAD THE TAPE. 00852000
* RE-IPL THE SYSTEM (BRING IN DMKCKP) 00853000
* TO CHECK POINT THE SYSTEM AS IT NOW STANDS. 00854000
*. 00855000
SPACE 00856000
DMPPRT EQU * HERE TO WRITE DUMP TO PRINTER (OR TAPE) 00857000
CLC RDEVTYPC(2),P3800 IS IT A 3800 ? @V60B9BA 00857200
BNE NO3800 XFER IF NOT @V60B9BA 00857400
LA R0,INIT3800 AN INITIALIZER PRINTER CCW @V60B9BA 00857600
BAL R10,SETCCW GO DO THE START I/O @V60B9BA 00857800
NO3800 LA R7,60 SET INITIAL NUMBER OF LINES/PAGE @V60B9BA 00858000
MVC LINEID(DMPSMSGL),DMPSMSG IDENTIFY DUMP @V407510 00859000
BAL R14,PRTHD PRINT IDENTITY MESSAGE @V407510 00860000
LA R1,GREGS GET PTR TO GENERAL PURPOSE REGS @V407510 00861000
MVC LINEID(9),=C'GPRS 0- 7' SET IDENTIFIER 00862000
BAL R14,PUTLINE PRINT LINE 00863000
MVC LINEID(9),=C'GPRS 8-15' SET IDENTIFIER 00864000
OI DMKDMPSW,DOUBLESP INDICATE DOUBLE SPACING 00865000
BAL R14,PUTLINE PRINT LINE 00866000
LA R1,CTLREGS GET 16 CONTROL REGISTERS 00867000
MVC LINEID(9),=C'CRS 0- 7' SET IDENTIFIER 00868000
BAL R14,PUTLINE PRINT LINE 00869000
MVC LINEID(9),=C'CRS 8-15' SET IDENTIFIER 00870000
OI DMKDMPSW,DOUBLESP INDICATE DOUBLE SPACING 00871000
BAL R14,PUTLINE PRINT LINE 00872000
AIF (NOT &FLOATPT).NOFP3 00873000
LA R1,FPREGS GET 4 FLOATING POINT REGISTERS 00874000
MVC LINEID(9),=C'FPRS 0- 4' SET IDENTIFIER 00875000
OI DMKDMPSW,DOUBLESP INDICATE DOUBLE SPACING 00876000
BAL R14,PUTLINE PRINT LINE 00877000
.NOFP3 ANOP 00878000
MVC LINEID(9),=C'TOD CLOCK' SET IDENTIFIER 00879000
LA R1,TODCLOCK GET PTR TO TOD CLOCK VALUE 00880000
LA R5,DATA GET OUTPUT LOCATION 00881000
BAL R14,CLOCKFMT FORMAT 00882000
MVC DATA+24(14),=C'TOD CLOCK COMP' SET IDENTIFIER 00883000
LA R1,CLKCOMP GET PTR TO TOD CLOCK COMPARATOR 00884000
LA R5,DATA+40 GET OUTPUT LOCATION 00885000
BAL R14,CLOCKFMT FORMAT 00886000
BAL R14,PARTLINE 00887000
MVC LINEID(9),=C'CPU TIMER' SET IDENTIFIER 00888000
LA R1,CPUTIMER GET PTR TO CPU TIMER VALUE 00889000
LA R5,DATA GET OUTPUT LOCATION 00890000
BAL R14,CLOCKFMT FORMAT 00891000
MVC HALFLINE,=C'PREFIX REG' SET IDENTIFIER @V407510 00892000
LA R1,PREFRG GET PTR TO PREFIX REG @V407510 00893000
LA R5,HALFDATA GET PTR TO OUTPUT @V407510 00894000
UNPK HALFDATA(PKLEN),PREFRG(L'PREFRG+1) UNPACK @V407510 00895000
TR HALFDATA(TRLEN),TRHEX TRANSLATE @V407510 00896000
MVI HALFDATA+TRLEN,BLNK NEATEN SLACK BYTE @V407510 00897000
BAL R14,PARTLINE PRINT LINE 00898000
L R1,MAINPSA GET PREFIX REG @V407510 00899000
LTR R1,R1 IS THERE PREFIXING? @V407510 00900000
BZ DUMPCORE NO, DUMP MAIN STORAGE @V407510 00901000
MVC LINEID(LN18),=C'MAIN PROCESSOR PSA' HEADING @V407510 00902000
BAL R14,PRTHD PRINT LINE @V407510 00903000
LR R4,R1 SET START ADDRESS @V407510 00904000
LA R11,FULLPAGE DUMP FULL PAGE @V407510 00905000
BCTR R11,0 - LAST LINE WITHOUT SUPPRESSION @V407510 00906000
LCPUT0 DS 0H LOOP TO PUT OUT PAGE @V407510 00907000
BAL R14,PUTLINE PRINT ONE LINE AT A TIME @V407510 00908000
BCT R11,LCPUT0 LOOP UNTIL PAGE FINISHED @V407510 00909000
OI DMKDMPSW,BREAKSUP REAK LINE SUPPRESSION @V407510 00910000
BAL R14,PUTLINE PRINT LAST LINE @V407510 00911000
MVC LINEID(LN22),=C'ATTACHED PROCESSOR PSA' HEADING @V407510 00912000
BAL R14,PRTHD PRINT LINE @V407510 00913000
L R1,ATTPSA GET OTHER PREFIX REG @V407510 00914000
LR R4,R1 SET START ADDRESS @V407510 00915000
LA R11,FULLPAGE DUMP FULL PAGE @V407510 00916000
BCTR R11,0 - LAST LINE WITHOUT SUPPRESSION @V407510 00917000
LCPUT00 DS 0H LOOP TO PUT OUT PAGE @V407510 00918000
BAL R14,PUTLINE PRINT ONE LINE AT A TIME @V407510 00919000
BCT R11,LCPUT00 LOOP UNTIL PAGE FINISHED @V407510 00920000
OI DMKDMPSW,BREAKSUP BREAK LINE SUPPRESSION @V407510 00921000
BAL R14,PUTLINE PRINT LAST LINE @V407510 00922000
DUMPCORE DS 0H DUMP MAIN STORAGE @V407510 00923000
MVC LINEID(LN12),=C'MAIN STORAGE' HEADING @V407510 00924000
BAL R14,PRTHD PRINT LINE @V407510 00925000
LA R1,LOWCORE GET AREA CONTAINING INITIAL 256 BYTES 00926000
SLR R4,R4 SET INITIAL ADDRESS TO LOCATION 0 00927000
LA R11,8 SET LOOP CONSTANT 00928000
LCPUT BAL R14,PUTLINE PRINT LINE 00929000
BCT R11,LCPUT 00930000
LR R1,R4 START DUMPING ACTUAL MEMORY NOW 00931000
DMPNXT BAL R14,PUTLINE PRINT LINE 00932000
NEXTPAGE LR R9,R1 GET ADDRESS 00933000
N R9,=F'2047' ON 2K BOUNDRY ? 00934000
BNZ DMPNXT NO 00935000
CL R1,STORSIZE AT END OF STORAGE ? @VA01097 00936000
BNL DMPEND YES 00937000
LR R9,R1 GET ADDRESS 00938000
N R9,CONS4095 ON 4K BOUNDARY @V407510 00939000
BNZ DMPNXT NO 00940000
TM DMKDMPSW,ALL DUMP ALL OF MEMORY ? 00941000
BO DMPUP YES 00942000
LR R9,R1 GET ADDRESS 00943000
SRL R9,8 GET PAGE NUMBER * 16 00944000
AL R9,DMPCORET FORM CORTABLE ENTRY ADDR @V407510 00945000
USING CORTABLE,R9 00946000
TM CORFLAG,CORCP DOES PAGE BELONG TO CP NUCLEUS ? 00947000
BO DMPUP YES 00948000
CLC CORFPNT,=C'FREE' DOES PAGE BELONG TO FREE STORAGE ? 00949000
BE DMPUP YES 00950000
CLC CORFPNT,DMPSYSVM IS IT PART OF THE PAGEABLE @V407510 00951000
* NUCLEUS? @V407510 00952000
BE DMPUP YES @V408246 00953000
TM DMKDMPSW,SKIPSUP ANY PAGES SKIPPED BEFORE ? 00954000
BO SKIPON YES 00955000
ST R1,TEMPAD SAVE FROM ADDRESS 00956000
UNPK SKIPFROM(7),TEMPAD+1(4) UNPACK FROM ADDRESS 00957000
TR SKIPFROM(6),TRHEX TRANSLATE 00958000
MVI SKIPFROM+6,C' ' NEATEN UP 00959000
OI DMKDMPSW,SKIPSUP+BREAKSUP 00960000
SKIPON DS 0H @V407510 00961000
AL R1,PAGESIZE GET NEXT PAGE ADDR @V407510 00962000
B NEXTPAGE 00963000
DMPUP LR R4,R1 GET ADDRESS 00964000
B DMPNXT 00965000
DROP R9 00966000
EJECT 00967000
DMPEND EQU * HERE WHEN AT END OF MEMORY FOR PRINTER (OR TAPE) 00968000
OI DMKDMPSW,BREAKSUP TURN LINE SUPPRESSION OFF 00969000
MVC DATA(19),=C'*** END OF DUMP ***' 00970000
BAL R14,LASTLINE PRINT THE LAST LINE 00971000
CLI RDEVTYPC,CLASTAPE TAPE ? 00972000
BNE DRAINEND NO 00973000
LA R0,WRITEOF GET TAPE MARK CCWS 00974000
BAL R10,PRIO WRITE 2 TAPE MARKS 00975000
DRAINEND TIO 0(R15) DRAIN LAST INTERRUPT 00976000
BNZ *-4 WAIT 00977000
SHUTEND CLC CPID,=C'CPCP' DUMP ON WARM MACHINE ? 00978000
BE MONSTOP YA, STOP MONITOR, THEN CHKPT SYS @V2B2638 00979000
LPSW XWAIT1 LOAD NONERROR DISABLED WAIT STATE PSW 00980000
SPACE 00981000
LOADWAIT LPSW XWAIT2 LOAD ERROR DISABLED WAIT STATE PSW 00982000
EJECT 00983000
CLOCKFMT EQU * HERE TO FORMAT AND PRINT A CLOCK VALUE 00984000
UNPK 0(9,R5),0(5,R1) UNPACK FIRST WORD 00985000
TR 0(8,R5),TRHEX TRANSLATE 00986000
MVI 8(R5),C' ' NEATEN SLACK BYTE 00987000
UNPK 10(9,R5),4(5,R1) UNPACK SECOND WORD 00988000
TR 10(8,R5),TRHEX TRANSLATE 00989000
MVI 18(R5),C' ' NEATEN SLACK BYTE 00990000
BR R14 RETURN 00991000
****** 00992000
* 00993000
* HERE TO STOP THE MONITOR IF IT IS ACTIVE 00994000
* 00995000
****** 00996000
SPACE 00997000
MONSTOP L R9,MONCAD GET ADDRESS OF MONCOM @V2B2638 00998000
LTR R9,R9 IS THERE ONE? (MONITOR ACTIVE) @V2B2638 00999000
BZ RESTART NO, THEN DONE, GO CHKPT THE SYS @V2B2638 01000000
USING MONCOM,R9 ADDRESS THE MONCOM BLOCK @V2B2638 01001000
TM MONFLAG3,SPOOLED IS OUTPUT SPOOLED @VA07888 01001100
BO RESTART YES, NO TAPE CLEAN UP RQD @VA07888 01001200
L R8,MONARDB GET THE TAPE DEVICE BLOCK ADDR @V2B2638 01002000
CALL DMKSCNRD GET THE DEVICE ADDR IN CCU FORM @V2B2638 01003000
MVI MONFLAG2,0 CLEAR FOR DMP USE @VM01008 01004000
TIO 0(R1) ATTEMPT TO CLEAR PENDING INTS @VM01008 01005000
BC 2,*-4 STILL BUSY, KEEP TRYING @VM01008 01006000
BC 4,ANALYZE GO FIGURE OUT WHAT HAPPENED @VM01008 01007000
SETTRUN OI MONFLAG2,TRUN SET TRUN FLAG TO SAY WE TRIED @VM01008 01008000
L R2,MONAIOB GET THE MONITOR TAPE IOB @VM01008 01009000
LA R0,IOBSIZE*8+8(R2) BUMP UP TO THE WTM/RUN CCWS @V2B2638 01010000
ST R0,CAW SET UP FOR SIO @V2B2638 01011000
DOMONSIO SIO 0(R1) START THE DEVICE @V2B2638 01012000
BC 2,*-4 BUSY, KEEP TRYING @V2B2638 01013000
BC 1,RESTART CANT MAKE IT, LEAVE AS IS. @V2B2638 01014000
BC 4,ANALYZE CC = 1, DO SENSE IF UC @V2B2638 01015000
DOTIO TIO 0(R1) CLEAR THE STATUS @V2B2638 01016000
BC 2,*-4 BUSY, KEEP TRYING @V2B2638 01017000
BC 8+1,RESTART ALL CLEAR, GO CALL CHKPT @V2B2638 01018000
ANALYZE TM CSW+4,UC CSW STORED, DID UC OCCUR? @V2B2638 01019000
BZ CHKTRUN BE SURE WHERE WE ARE BEFORE EXIT @VM01008 01020000
LA R2,SENSE YES, SET UP FOR SENSE @V2B2638 01021000
ST R2,CAW ... @V2B2638 01022000
XC SENSDATA(24),SENSDATA CLEAR SENSE DATA @V2B2638 01023000
B DOMONSIO GO ISSUE THE SENSE @V2B2638 01024000
CHKTRUN TM MONFLAG2,TRUN HAS REW/UNLOAD BEEN ATTEMPTED YET@VM01008 01025000
BZ SETTRUN NOPE, GO TRY NOW @VM01008 01026000
B RESTART YES, THEN LEAVE WELL ENOUGH ALONE@VM01008 01027000
DROP R9 @V2B2638 01028000
EJECT 01029000
PUTLINE EQU * HERE TO WRITE A LINE TO TAPE OR PRINTER 01030000
C R7,PAGLINE TEST FOR NEW PAGE @V407510 01031000
BL CONT 01032000
SLR R7,R7 SET CURRENT LINE TO ZERO 01033000
LA R0,SKIPCH1 GET SKIP TO CHANNEL 1 CCWS 01034000
BAL R10,SETCCW SET CONTROL 01035000
CONT LA R2,4 GET INCREMENT FOR BXLE LOOP 01036000
LA R3,28(,R1) GET END FOR BXLE LOOP 01037000
MVC DATATR,0(R1) 01038000
LA R5,DATA GET START OF HEX OUTPUT 01039000
NXTWD L R6,0(,R1) 01040000
ST R6,TEMPAD SAVE IN TEMPORARY WORK AREA 01041000
UNPK 0(9,R5),TEMPAD(5) UNPACK HEX DATA 01042000
MVI 8(R5),C' ' CLEAR GARBAGE BYTE 01043000
TR 0(8,R5),TRHEX TRANSLATE TO EBCDIC HEX 01044000
LA R5,10(,R5) GET NEXT OUTPUT SLOT 01045000
BXLE R1,R2,NXTWD 01046000
MVI DATATR-1,C'*' 01047000
MVI LINEND,C'*' 01048000
CLI LINEID+6,C'-' TEST FOR PREFORMATTED ID 01049000
BE TRANS 01050000
LR R2,R4 GET CURRENT ADDRESS 01051000
N R2,=F'2047' ON 2K BOUNDRY ? 01052000
BNZ LASTLINE NO 01053000
ISK R3,R4 GET STROAGE KEY 01054000
STC R3,TEMPAD PLACE IN TEMPORARY WORK AREA 01055000
UNPK KEY(3),TEMPAD(2) UNPACK HEX DATA 01056000
MVI KEY+2,C' ' CLEAR GARBAGE BYTE 01057000
TR KEY,TRHEX TRANSLATE TO EBCDIC HEX 01058000
OI DMKDMPSW,BREAKSUP TURN SUPPRESSION BREAK ON 01059000
LASTLINE ST R4,TEMPAD SAVE ADDRESS IN TEMPORARY WORK AREA 01060000
UNPK LINEID(7),TEMPAD+1(4) UNPACK HEX ADDRESS 01061000
MVI LINEID+6,C' ' CLEAR GARBAGE BYTE 01062000
TR LINEID(6),TRHEX TRANSLATE TO EBCDIC HEX 01063000
MVC DATA-2(40),DATA EDIT LINE 01064000
LA R4,32(,R4) GET NEXT MEMORY ADDRESS 01065000
CLC HOLD,DATATR CHECK FOR DUPLICATE CORE LOCATIONS 01066000
MVC HOLD,DATATR SAVE THIS LINE 01067000
BNE NOTSAME NOT EQUAL 01068000
TM DMKDMPSW,BREAKSUP SUPPRESSION TURNED OFF ? 01069000
BO NOTSAME YES 01070000
TM DMKDMPSW,LINESUP SUPPRESSION ACTIVE ? 01071000
BO CLEARL YES 01072000
OI DMKDMPSW,LINESUP SET SUPPRESSION ACTIVE 01073000
MVC SUPFROM,LINEID SAVE STARTING ADDRESS 01074000
B CLEARL 01075000
NOTSAME NI DMKDMPSW,X'FF'-BREAKSUP TURN BREAK SUPPRESSION FLAG OFF 01076000
TM DMKDMPSW,LINESUP SUPPRESSION ACTIVE ? 01077000
BNO SKIPTST NO 01078000
NI DMKDMPSW,X'FF'-LINESUP TURN FLAG OFF 01079000
MVC SUPTO,LINEID SET ENDING ADDRESS 01080000
TM DMKDMPSW,SKIPSUP PAGES SKIPPED ? 01081000
BNO *+10 NO 01082000
MVC SUPTO,SKIPFROM USE THIS VALUE 01083000
LA R0,SUPCCW GET LINE SUPPRESSION MESSAGE CCW 01084000
BAL R10,SETCCW SET CONTROL 01085000
LA R7,1(,R7) BUMP NUMBER OF LINES PTR 01086000
SKIPTST TM DMKDMPSW,SKIPSUP LINES SKIPPED BECAUSE OF NUCLEUS ? 01087000
BNO TRANS NO 01088000
NI DMKDMPSW,X'FF'-SKIPSUP TURN FLAG OFF 01089000
MVC SKIPTO,LINEID SET TO ADDRESS 01090000
LA R0,SKIPCCW GET CCW 01091000
BAL R10,SETCCW SET CONTROL 01092000
SLR R7,R7 RESET LINE COUNTER 01093000
TRANS TR DATATR,DMKDMPTR TRANSLATE TO EBCDIC 01094000
LA R0,PRLINE GET PRINT 1 LINE CCW 01095000
TM DMKDMPSW,DOUBLESP DOUBLE SPACE AFTER THIS LINE ? 01096000
BNO ONESPC NO 01097000
NI DMKDMPSW,X'FF'-DOUBLESP TURN FLAG OFF 01098000
PARTLINE LA R0,PRLINESP GET PRINT 1 LINE AND SPACE CCW 01099000
LA R7,1(,R7) BUMP NUMBER OF LINES PTR 01100000
ONESPC BAL R10,SETCCW SET CONTROL 01101000
LA R7,1(,R7) BUMP NUMBER OF LINES PTR 01102000
CLEARL MVI LINE,C' ' BLANK OUT THE OUTPUT BUFFER 01103000
MVC LINE+1(LINEL-1),LINE ... 01104000
BR R14 RETURN 01105000
PRTHD DS 0H PRINT PAGE HEADER @V407510 01106000
SR R7,R7 START NEW PAGE @V407510 01107000
LA R0,SKIPCH1 FORCE EJECT @V407510 01108000
BAL R10,SETCCW SET CONTROL @V407510 01109000
B PARTLINE PRINT HEADER LINE @V407510 01110000
SPACE 2 01111000
SETCCW CLI RDEVTYPC,CLASTAPE IS DUMP UNIT A TAPE ?? 01112000
BNE PRIO NO, PRINTER 01113000
LR R9,R0 GET OP CODE 01114000
IC R0,0(R9) .. 01115000
L R2,0(R9) GET ADDRESS OF DATA 01116000
LA R2,0(R2) CLEAR HI BYTE 01117000
BCTR R2,R0 MINUS ONE 01118000
STC R0,0(R2) PUT OP CODE IN DATA BUFFER 01119000
ST R2,TAPCCW SET CCW ADDRESS 01120000
LH R2,6(R9) GET CCW COUNT 01121000
LA R2,1(R2) UP THE COUNT BY ONE 01122000
STH R2,TAPCCW+6 SET CCW COUNT 01123000
MVI TAPCCW,X'01' WRITE OP FOR TAPE 01124000
LA R0,TAPCCW CCW LIST 01125000
B PRIO DO IO 01126000
EJECT 01127000
CLRCHAN EQU * HERE TO INSURE THAT PATH TO DEVICE IS FREE 01128000
TIO 0(R15) IS CHAN/CONTROL UNIT/DEVICE FREE ? 01129000
BC 8+4+2,*+8 BR. ON CC= 0/1/2/ 01130000
BAL R14,LOADWAIT TRACER ADDRESS ON FATAL I/O CONDITION 01131000
BC 8,PRIO CC=0, PATH TO DEVICE IS FREE 01132000
BC 2,WAITPRT CC=2, CHANNEL IS STILL BUSY 01133000
CHKSTAT CLI CSW+4,UC ANYTHING IN CSW BE-SIDES UC 01134000
BNE PRIO YES - PRINT THE LINE 01135000
ST R0,DMPR0 SAVE R0 01136000
ST R14,DMPR14 ... R14 01137000
ST R15,DMPR15 ... R15 01138000
L R0,INTQMSG GET COUNT AND ADDRESS OF INTREQ @V200735 01139000
BAL R9,TYPLINE TELL OPERATOR TO MAKE READY @V200735 01140000
L R0,DMPR0 RESTORE R0 01141000
L R14,DMPR14 ... R14 01142000
L R15,DMPR15 ... R15 01143000
TIO 0(R15) DRAIN INTERRUPT @VA04469 01144000
BC 2,*-4 LOOP ON BUSY @VA04469 01145000
BC 8+4,*+8 BR. ON CC= 0/1 @VA04469 01146000
BAL R14,LOADWAIT TRACE @ FOR FATAL I/O ,, CC=3 @VA04469 01147000
WAITPRT MVC IONPSW+4(4),=A(WAITRET) SET UP RETURN @ @VA04469 01148000
LPSW IWAIT SET ENABLED WAIT @VA04469 01149000
SPACE 01150000
WAITRET CH R15,INTTIO INTERRUPT FORM RIGHT DEVICE ? @VA04469 01151000
BE CLRCHAN YES, INSURE PATH IS FREE @VA04469 01152000
LPSW IWAIT NO, KEEP UP THE VIGIL ... @VA04469 01153000
SPACE 01154000
PRIO EQU * HERE TO DO I/O FOR PRINTER AND TAPE OPERATIONS 01155000
ST R0,CAW SET CAW 01156000
TIO 0(R15) TEST 01157000
BC 2,*-4 CC=2; CHANNEL STILL BUSY 01158000
BC 8+4,*+8 CC=0 OR CC=1 ; TAKE THE BRANCH 01159000
BAL R14,LOADWAIT CC=3, NOT OPERATIONAL 01160000
PRSIO SIO 0(R15) START 01161000
BC 8+4+2,*+8 BR. ON CC= 0/1/2/ 01162000
BAL R14,LOADWAIT TRACER ADDRESS ON FATAL I/O CONDITION 01163000
BC 2,CLRCHAN CC=2, CHANNEL STILL BUSY 01164000
BC 8,GOTIO CC=0, GOOD SIO STATUS 01165000
TM CSW+4,BUSY DOES THE CSW CONTAIN BUSY? @VA09426 01165300
BO PRSIO YES, OK REDO THE SIO. @VA09426 01165600
CLI CSW+4,UC IS DEVICE IN A NOT-READY CONDITION 01166000
BE CHKSTAT YES - GO TELL THE OPERATOR 01167000
TM CSW+5,CDC+CCC+IFCC CHECK CSW FOR CHANNEL ERRORS @VA09171 01167200
BZ GOTIO NONE - CONTINUE @VA09171 01167400
BAL R14,LOADWAIT ERROR - SET TRACE ADDRESS AND @VA09171 01167600
* WAIT 01167800
SPACE 01168000
GOTIO TIO 0(R15) ISSUE TIO TO 'DUMP' DEVICE 01169000
BC 2,*-4 CC=2, CHANNEL STILL BUSY; LOOP UNTIL FREE 01170000
BC 8,CONTIO CC=0, STATUS HAS BEEN CLEARED @VA09171 01171200
TM CSW+5,CDC+CCC+IFCC CHECK CSW FOR CHANNEL ERRORS @VA09171 01171400
BZ *+8 NONE KEEP GOING @VA09171 01171600
BAL R14,LOADWAIT CHAN ERROR - SET TRACE AND WAIT @VA09171 01171800
CLI CSW+4,UC IS DEVICE IN A NOT-READY STATE ? @VA10548 01172000
BE CHKSTAT YES--TELL THE OPERATOR @VA10548 01172150
CLI RDEVTYPC,CLASTAPE IS THIS A TAPE ? @VA10548 01172300
BE GOTIO YES-REISSUE THE TIO @VA10548 01172450
TM CSW+4,UC IS THE PRINTER NOT-READY ? @VA10548 01172600
BNZ CHKSTAT YES - TELL THE OPERATOR @VA09426 01173000
B GOTIO RE-ISSUE THE TIO 01174000
CONTIO NC CSW+4(2),=AL1(X'FF'-CE-DE-UE,X'FF') ANY ERRORS? @VA09171 01175100
BCR 8,R10 NO -- RETURN 01176000
CLI RDEVTYPC,CLASTAPE TAPE ? 01177000
BCR 7,R10 NO -- RETURN 01178000
TM CSW+4,CUE CONTROL UNIT END ? 01179000
BCR 1,R10 YES -- 01180000
L R9,CSW GET CSW CCW PTR 01181000
S R9,CCWLN -8...ADDR OF CCW @V407510 01182000
CLI 0(R9),X'01' WRITE CCW ? 01183000
BE WRITERR YES 01184000
CLI 0(R9),X'1F' WRITE TAPE MARK ? 01185000
BNE PRERSIO NO -- RE-EXECUTE THE FAILING CCW 01186000
LA R9,TAPERR2 GET BACK SPACE AND REWRITE TAPE MARK CCWS 01187000
B PRERSIO 01188000
WRITERR DS 0H 01189000
LA R9,TAPERR1 GET TAPE ERROR CCWS 01190000
PRERSIO ST R9,CAW SET CAW 01191000
B PRSIO 01192000
EJECT 01193000
DMPPRGCK EQU * HERE WHEN A PROGRAM CHECK OCCURRS 01194000
MVI DMPABMC,C'5' SET MESSAGE NUMBER 01195000
MVC DMPABMT(13),=C'PROGRAM CHECK' 01196000
B DMPAB 01197000
SPACE 1 01198000
DMPMCHCK EQU * HERE WHEN A MACHINE CHECK OCCURRS 01199000
MVI DMPABMC,C'6' SET MESSAGE NUMBER 01200000
MVC DMPABMT(24),=C'MACHINE CHECK, RUN SEREP' 01201000
B DMPAB 01202000
SPACE 1 01203000
DMPIOERR EQU * HERE WHEN A FATAL I/O ERROR OCCURRS 01204000
MVI DMPABMC,C'7' SET MESSAGE NUMBER 01205000
MVC DMPABMT(15),=C'FATAL I/O ERROR' 01206000
SPACE 1 01207000
DMPAB L R0,ABCCW GET COUNT AND ADDRESS OF MSG @V200735 01208000
BAL R9,TYPLINE WRITE OUT MESSAGE @V200735 01209000
B SHUTEND SHUT SYSTEM DOWN 01210000
DMPERR DS 0H ERROR SIGNALLING PROCESSOR TO @V407510 01211000
* STOP & STORE STATUS @V407510 01212000
L R5,PREFRG GET OWN PREFIX REGISTER @V407510 01213000
STM R0,R15,GRLOG-PSA(R5) SAVE BAD STATUS REGS @V407510 01214000
L R0,DERRMSG GET COUNT AND ADDR OF MSG @V407510 01215000
BAL R9,TYPLINE WRITE OUT MESSAGE @V407510 01216000
BR R4 RETURN TO CALLER @V407510 01217000
DMPUNIP DS 0H STPX FAILED..UNIPROCESSING @V4M0124 01218000
OI DMPSTAT,DMPUNI INDICATE UNIPROCESSING @V4M0124 01219000
B PREFSTOR CONTINUE PROCESSING @V4M0124 01220000
EJECT 01221000
TYPLINE EQU * HERE TO TYPE A LINE ON THE @V200735 01222000
* SYSTEM CONSOLE 01223000
ST R0,DATACCW STORE LINE COUNT AND ADDRESS @V200735 01224000
LA R3,TYPELIST POINT TO TYPE LIST @V200735 01225000
LR R5,R1 SAVE CONTENT OF REGISTER 1 @VM08555 01226000
TYPELP1 LA R2,ALARM PARM = ALARM @V200735 01227000
TYPELP EQU * CONSOLE MESSAGE LOOP @V200820 01228000
SR R0,R0 CLEAR COUNT @V200735 01229000
SR R1,R1 AND ADDRESS REGS @V200735 01230000
ICM R1,B'0111',1(R3) ADDRESS OF LINE TO WRITTEN @V200735 01231000
BZ TYPMSGE BRANCH IF ADDRESS IS ZERO @VM08555 01232000
IC R0,0(R3) GET LINE COUNT @V200735 01233000
CALL DMKOPRWT CALL TO OUTPUT THE MESSAGE LINE @V200820 01234000
BC 2+1,TYPMSGE EXIT IF CONSOLE BUSY OR MISSING @VA03871 01235000
SR R2,R2 CLEAR PARM REG @V200735 01236000
LA R3,4(R3) POINT TO NEXT COUNT AND LINE @V200735 01237000
ICM R0,B'1111',4(R3) IS THIS THE LAST ONE ? @V200735 01238000
BZ TYPELP1 YES -- ADD ALARM TO PARM REG @V200735 01239000
B TYPELP GO WRITE NEXT LINE @V200735 01240000
TYPMSGE EQU * @VM08555 01241000
LR R1,R5 GET REGISTER 1 CONTENT @VM08555 01242000
BR R9 RETURN TO IN LINE CODE @VM08555 01243000
EJECT 01244000
* CONSTANTS AND LITERAL POOL 01245000
SPACE 1 01245030
*************************************************************** 01245060
* THE FOLLOWING FIELDS ARE INITIALIZED BY DMKCPI 01245090
* DMKDMPMA, DMKDMPAA AND DMKDMPSA ARE ALSO INITIALIZED 01245120
* BY DMKCPU 01245150
SPACE 1 01245180
DMKDMPDV DC A(0) PTR TO DUMP DEVICE RDEVBLOK 01245210
DMKDMPAU DC A(0) PTR TO AUTOMATIC DUMP DEVICE RDEVBLOK 01245240
DMKDMPRC DC A(0) PTR TO RECBLOK CHAIN FOR AUTOMATIC DUMP *01245270
DEVICE 01245300
DMKDMPTD DC D'0' TOD CLOCK AT 00.00.00 TODAY @V407510 01245330
TODATE2W EQU DMKDMPTD+4 SECOND WORD OF TODATE @V407510 01245360
DMKDMPDT DC D'0' DATE - MM/DD/YY - EDITED EBCDIC @V407510 01245390
DMKDMPSD DC H'0' SYSTEM IPL DEVICE @V407510 01245420
* DMKDMPMA & DMKDMPAA ARE EQUAL IN UNIPROCESSOR MODE 01245450
DMKDMPMA DC H'0' MAIN PROCESSOR ADDRESS @V407510 01245480
DMKDMPAA DC H'0' ATTACHED PROCESSOR ADDRESS @V407510 01245510
* DMKDMPSA IS EQUAL ZERO IN UNIPROCESSOR MODE 01245540
DMKDMPSA DC D'0' SAVE AREA FOR THE PSA ADDRESSES @V5BC0AB 01245570
ORG DMKDMPSA 01245600
MAINPSA DS F ADDRESS OF THE MAIN PSA @V5BC0AB 01245630
ATTPSA DS F ADDRESS OF THE APU PSA @V5BC0AB 01245660
*************************************************************** 01245690
SPACE 1 01246000
PAGESIZE DC F'4096' SIZE OF 1 PAGE @V407510 01247000
* THIS CONSTANT MUST REMAIN IN 1ST @V407510 01248000
* PAGE OF DMKDMP BECAUSE IT IS @V407510 01249000
* USED TO SET UP ADDRESSABILITY TO @V407510 01250000
* THE SECOND PAGE @V407510 01251000
AL3PAGSZ EQU PAGESIZE+1 3 BYTE PAGESIZE @V407510 01252000
HWPAGSZ EQU PAGESIZE+2 HALFWORD PAGESIZE @V407510 01253000
SPACE 01254000
DS 0D ALIGN 01255000
IPLREAD CCW X'02',IPLPSW-PSA,SILI,24 READ DATA 01256000
CCW X'08',IPLCCW1-PSA,0,0 TIC 01257000
SPACE 01258000
TAPEINIT CCW X'93',0,CC+SILI,1 SET MODE 800,TR ON, D/C OFF 01259000
CCW X'2F',0,SILI,1 BACKSPACE FILE 01260000
SPACE 01261000
TAPERR2 CCW X'27',0,CC+SILI,1 BACK SPACE RECORD 01262000
WRITEOF CCW X'1F',0,CC+SILI,1 WRITE TAPE MARK 01263000
CCW X'1F',0,SILI,1 WRITE TAPE MARK 01264000
SPACE 01265000
TAPERR1 CCW X'27',0,CC+SILI,1 BACK SPACE RECORD 01266000
CCW X'17',0,CC+SILI,1 ERASE RECORD GAP 01267000
SPACE 1 01268000
TAPCCW CCW X'01',*,SILI,0 01269000
SPACE 1 01270000
SPACE 01271000
PRLINE CCW X'09',LINE,SILI,LINEL PRINT AND SPACE 1 LINE 01272000
SPACE 01273000
SUPCCW CCW X'09',SUPMSG,SILI,SUPMSGL PRINT AND SPACE 1 LINE 01274000
SPACE 01275000
SKIPCCW CCW X'89',SKIPMSG,SILI,SKIPMSGL 01276000
SPACE 01277000
PRLINESP CCW X'11',LINE,SILI,LINEL PRINT AND SPACE 2 LINES 01278000
SPACE 01279000
SKIPCH1 CCW X'89',BLANK,CC+SILI,20 01280000
CCW X'03',0,SILI,1 NOP 01281000
SPACE 1 @V60B9BA 01281100
INIT3800 CCW X'37',0,SILI+CC,1 INITIALIZE PRINTER @V60B9BA 01281200
CCW X'03',0,SILI,1 NOP @V60B9BA 01281300
SPACE 01282000
SENSE CCW X'04',SENSDATA,SILI,24 SENSE 01283000
SPACE 01284000
DISKCCW CCW X'07',SEEK,CC,6 SEEK 01285000
ALTSRCH EQU * RESUME POINT AFTER ALTERNATE SEEK@V56BDA8 01285100
CCW X'31',CYL,CC,5 SEARCH 01286000
CCW X'08',*-8,0,0 TIC 01287000
DISKWRIT CCW X'05',0,CC+SILI,4096 WRITE 01288000
CCW X'03',0,SILI,1 NOP 01289000
WRITADDR EQU DISKWRIT+1 ADDRESS TO WRITE FROM @V407510 01290000
WRITLEN EQU DISKWRIT+6 LENGTH OF DATA TO BE WRITTEN @V407510 01291000
SPACE 1 01291100
READHAR0 CCW 7,SEEK,CC,6 @V56BDA8 01291150
CCW 26,0,CC+SILI+SKIP,5 @V56BDA8 01291200
CCW 22,ALTR0ADD,SILI,4 @V56BDA8 01291250
SPACE 1 01291300
ALTSEEK CCW 07,ALTSKADD,CC+SILI,6 @V56BDA8 01291350
CCW 08,ALTSRCH,0,0 @V56BDA8 01291400
ALTSAVE DS F SAVE AREA FOR R14 @V56BDA8 01291450
ALTSKADD DC XL2'0' BB @V56BDA8 01291500
ALTR0ADD DS XL4 CCHH FROM RECORD 0 COUNT @V56BDA8 01291550
EJECT 01292000
DS 0F @V56BDA8 01292100
TYPELIST DC AL1(1),AL3(MSGBLK) @V200735 01293000
DC AL1(1),AL3(MSGBLK) @V200735 01294000
DC AL1(1),AL3(MSGBLK) @V200735 01295000
DATACCW DC A(0) @V200735 01296000
DC AL1(1),AL3(MSGBLK) @V200735 01297000
DC AL1(1),AL3(MSGBLK) @V200735 01298000
DC A(0) @V200735 01299000
SPACE 01300000
ABCCW DC AL1(DMPAMSGL),AL3(DMPAMSG) @V200735 01301000
SPACE 01302000
INTQMSG DC AL1(INTQLMSG),AL3(INTQAMSG) @V200735 01303000
SPACE 01304000
SFCCCW DC AL1(DMPSMSGL),AL3(DMPSMSG) @V200735 01305000
SPACE 01306000
DERRMSG DC AL1(DMPERRML),AL3(DMPERRM) @V407510 01307000
SPACE 01308000
DS 0D FOR PSW ALIGNMENT 01309000
XWAIT1 DC A(WAITON,4) WAIT STOP 01310000
XWAIT2 DC A(WAITON,3) LOADED IN CASE OF ERROR 01311000
SPACE 01312000
IWAIT DC AL1(IOMASK),AL3(WAITON),A(0) 01313000
SPACE 01314000
DMPPSWS DC A(MCHEKENB,DMPPRGCK) 01315000
DC A(XMODEON,DMPMCHCK) 01316000
DC A(MCHEKENB) 01317000
DMPR0 DC F'0' SAVE AREA FOR GPR-0 01318000
DMPR14 DC F'0' SAVE AREA FOR GPR-14 01319000
DMPR15 DC F'0' SAVE AREA FOR GPR-15 01320000
SPACE 01321000
TEMPAD DS D TEMPORARY WORK AREA 01322000
TEMPADLO EQU TEMPAD+6 SIGNIFICANT DIGITS AFTER UNPACK @V407510 01323000
RSTPSW DC A(MCHEKENB,DMPRST) RESTART PSW FOR MAIN @V407510 01324000
SAVEPGMN DC D'0' SAVE PROGRAM NEW PSW @V407510 01325000
SAVEPGMO DC D'0' SAVE PROGRAM OLD PSW @V407510 01326000
SAVEPR DC F'0' SAVE INTPRL AND INTPR @V4M0111 01327000
SPECPGMN DC A(MCHEKENB,DMPUNIP) PROGRAM NEW FOR STPX @V4M0124 01328000
SPACE 01329000
LOWCORE DC 256X'00' LOW MEMORY SAVE AREA 01330000
* FOLLOWING AREAS ARE FOR THE ABENDING PROCESSOR @V407510 01331000
GREGS DC 16F'0' 16 GENERAL PURPOSE REGISTERS @V407510 01332000
CTLREGS DC 16F'0' 16 CONTROL REGISTERS 01333000
AIF (NOT &FLOATPT).NOFP4 01334000
FPREGS DC 4D'0' 4 FLOATING POINT REGISTERS 01335000
.NOFP4 ANOP 01336000
TODCLOCK DC D'0' TIME OF DAY CLOCK 01337000
CPUTIMER DC D'0' CPU TIMER 01338000
CLKCOMP DC D'0' TIME OF DAY CLOCK COMPARATOR 01339000
PROCA DC H'0' PROCESSOR ADDRESS @V407510 01340000
PREFRG DC F'0' PREFIX REGISTER @V407510 01341000
ALLONES DC F'-1' X'FFFFFFFF' @V407510 01344000
CONS4095 DC F'4095' PAGE SIZE - 1 @V407510 01345000
ALLZEROS DC F'0' X'00000000' @V407510 01346000
CCWLN DC F'8' LENGTH OF CCW @V407510 01347000
BITSPB EQU CCWLN 8...BITS PER BYTE @V407510 01348000
PAGLINE DC F'60' X'0000003C' 60 LINES PER PAGE @V407510 01349000
SECPMIN EQU PAGLINE 60...SECONDS PER MINUTE @V407510 01350000
ABCODE DS 0F ABEND CODE @V407510 01351000
ABCODEMD DC 3C' ' MODULE NAME @V407510 01352000
ABCODENU DC 1X'0' ABEND DIGIT @V407510 01353000
P3800 DC X'1045' 3800 RDEVTYPC,RDEVTYPE @V60B9BA 01353100
MONCAD DC F'0' SAVED ADDRESS OF MONCOM @V2B2638 01354000
SPACE 01355000
DS 0F 01356000
DISABLMC DC AL1(HARDSTOP+DAMAGRPT),AL3(0) MASK TO DISABLE @VA01130 01357000
DC A(512) SOFT M.C. RECORDING AND RESET LOGOUT 01358000
SPACE 01359000
DMPSTAT DC X'0' STATUS OF SYSTEM..UP OR AP @V4M0124 01375000
SPACE 01376000
DMPSYSVM DC V(DMKSYSVM) ADDR SYSTEM VMBLOK @V407510 01377000
DMPRIODV DC V(DMKRIODV) ADDR FIRST RDEVBLOK @V407510 01378000
DMPCORET DC V(DMKSYSCS) ADDR OF SYSTEM CORE TABLE @V407510 01379000
DMPRSPRD DC V(DMKRSPRD) ADDR OF SYSTEM RDR FILE CHAIN @V407510 01380000
STORSIZE DC F'0' SPACE FOR STORAGE SIZE @VA01097 01381000
SPACE 01382000
ALOCBIT DC X'8040201008040201' 01383000
SPACE 01384000
DMKDMPSW DC X'00' FLAG BYTE 01385000
DMPMAP DC X'00' BIT MAP FOR PAGES 0-3 @VW01525 01386000
SPACE 01387000
HOLD DC CL32' ' 01388000
SPACE 01389000
SENSDATA DC 24X'00' SENSE BYTES 01390000
SPACE 01391000
SAVKEY DC 8X'00' 01392000
SPACE 01393000
SEEK1 DC X'0000' BB 01394000
IPL1 DC X'0000000001' CC, HH, R 01395000
TAPOP4 DC X'00' FOR TAPE DUMP 01396000
BLANK DC CL20' ' 01397000
DS 0H ALIGN 01398000
SPACE 01399000
SEEK DC 7X'00' 01400000
ORG SEEK 01401000
BB DS 2X BIN 01402000
CYL DS 2X CYLINDER 01403000
HHR DS 3X HEAD & RECORD 01404000
DMPLOCK DC X'00' DMKDMP LOCK @V407510 01405000
* END OF DATA FOR ABENDING PROCESSOR @V407510 01406000
EJECT 01407000
* TRANSLATE TABLE ALSO USED BY DMKCDB 01408000
DMKDMPTR DC 64C'.' UNPRINTABLE CHARACTERS 01409000
DC C' ' BLANK 01410000
DC 10C'.' 01411000
DC C'.<(+|&&' 01412000
DC 10C'.' 01413000
DC C'$*);¬-/' 01414000
DC 9C'.' 01415000
DC X'6B6C' 'COMMA' & 'PERCENT' SIGNS 01416000
DC C'_>?' 01417000
DC 10C'.' 01418000
DC C':' 01419000
DC X'7B7C' 'POUND' & 'AT' SIGNS 01420000
DC C'''="' 01421000
DC 64C'.' 01422000
DC C'.ABCDEFGHI' 01423000
DC 7C'.' 01424000
DC C'JKLMNOPQR' 01425000
DC 8C'.' 01426000
DC C'STUVWXYZ' 01427000
DC 6C'.' 01428000
DC C'0123456789' 01429000
DC 6C'.' 01430000
SPACE 01431000
TRHEX EQU *-C'0' 01432000
DC C'0123456789ABCDEF' 01433000
EJECT 01434000
TAPOP1 DC X'00' FOR TAPE DUMP 01435000
LINE EQU * 01436000
LINEID DC CL11' ' DATA ADDRESS & LINE IDENTIFIER 01437000
DC CL1' ' 01438000
DATA DC 8CL10' ' DATA 01439000
KEY DC CL2' ' KEY 01440000
DC C' ' 01441000
DATATR DC CL32' ' TRANSLATED DATA 01442000
LINEND DC C' ' 01443000
LINEL EQU *-LINE LENGTH OF OUTPUT LINE 01444000
SPACE 01445000
TAPOP2 DC X'00' FOR TAPE DUMP 01446000
SUPMSG EQU * 01447000
SUPFROM DC CL6' ' 01448000
DC C' TO ' 01449000
SUPTO DC CL6' ' 01450000
DC C' SUPPRESSED LINE(S) SAME AS ABOVE .....' 01451000
SUPMSGL EQU *-SUPMSG LENGTH OF SUPPRSSED MESSAGE 01452000
SPACE 01453000
TAPOP3 DC X'00' FOR TAPE DUMP 01454000
SKIPMSG EQU * 01455000
SKIPFROM DC CL6' ' 01456000
DC C' TO ' 01457000
SKIPTO DC CL6' ' 01458000
MSGBLK EQU * @V200735 01459000
DC C' SUPPRESSED NON-CONTROL-PROGRAM PAGE(S) .....' 01460000
SKIPMSGL EQU *-SKIPMSG LENGTH OF PAGES SUPPRESSED MESSAGE 01461000
SPACE 01462000
DMPAMSG DC C'DMKDMP90' @V200735 01463000
DMPABMC DC C' ' 01464000
DC C'W SYSTEM DUMP FAILURE; ' 01465000
DMPABMT DC CL24' ' 01466000
DMPAMSGL EQU *-DMPAMSG LENGTH OF DUMP ABEND MESSAGE 01467000
SPACE 1 01468000
DMPERRM DC C'DMKDMP918I SYSTEM DUMP FAILURE; ' @VA13645 01469100
DC C'STATUS NOT STORED FOR NON-ABENDING PROCESSOR' @V407510 01470000
DMPERRML EQU *-DMPERRM LENGTH OF ERROR MESSAGE @V407510 01471000
INTQAMSG DC C'DMKDMP909W SYSTEM DUMP DEVICE; NOT-READY' @V200735 01472000
INTQLMSG EQU *-INTQAMSG LENGTH OF NOT-READY MESSAGE 01473000
SPACE 01474000
DMPSMSG EQU * @V200735 01475000
DMPTIME DC CL9'00:00:00 ' TIME OF DUMP @VA01097 01476000
DC C'DMKDMP908I SYSTEM FAILURE; CODE ' 01477000
DMPSCOD DC C'MMMCCC' 01478000
DC C' PROCESSOR ' @V407510 01479000
DMPROC DC CL2'NN' PROCESSOR ADDRESS @V407510 01480000
DMPROCL EQU DMPROC+1 LAST DIGIT OF PROCESSOR ADDRESS @V407510 01481000
DMPSMSGL EQU *-DMPSMSG 01482000
* EQUATES @V407510 01483000
DBL EQU 8 DOUBLE WORD MOVE LENGTH @V407510 01484000
RETRY EQU 256 RETRY SIGP 256 TIMES @V407510 01485000
NAMELN EQU 3 LENGTH OF ABENDED MODULE NAME @V407510 01486000
GRGLN EQU 16*4 LENGTH OF GENERAL REGS @V407510 01487000
REGLN EQU 32*4 LENGTH OF GPREGS AND CREGS @V407510 01488000
GPREG5 EQU 4*5 R5 SLOT IN DUMPSAVE @V407510 01489000
ZONE EQU X'F0' ZONE TO CLEAR SIGN FIELD @V407510 01490000
HALFLINE EQU DATA+24 MID-LINE AREA @V407510 01491000
HALFDATA EQU DATA+40 MID-LINE DATA AREA @V407510 01492000
BLNK EQU X'40' BLANK @V407510 01493000
FULLPAGE EQU 128 NUMBER LINES FOR 4096 PAGE @V407510 01494000
TRLEN EQU 8 TRANSLATE LENGTH @V407510 01495000
PKLEN EQU 9 UNPK LENGTH @V407510 01496000
LNTIMER EQU 16 LENGTH OF CPU TIMER & @V407510 01497000
* CLOCK COMPARATOR @V407510 01498000
SSCLK EQU 88 AREA CLOCKS ARE STORED FOR SSS @V407510 01499000
LNLOG EQU 16 LENGTH OF PSW, PREFIX REGISTER @V407510 01500000
* AND MODEL DEPENDENT FEATURE @V407510 01501000
LNREGS EQU 4*8+4*16+4*16 LENGTH OF FLOATING POINT REGS, @V407510 01502000
* GENERAL REGS, & CONTROL REGS @V407510 01503000
LN12 EQU 12 LENGTH OF HEADING @V407510 01504000
LN18 EQU 18 LENGTH OF HEADING @V407510 01505000
LN22 EQU 22 LENGTH OF HEADING @V407510 01506000
LCLN EQU 256 LENGTH OF LOWCORE SAVED @V407510 01507000
PAGE EQU 4096 @V4M0105 01508000
DMPUNI EQU X'80' INDICATE UNIPROCESSOR MODE @V4M0124 01509000
PROCBUSY EQU 2 CONDITION CODE 2 INDICATES BUSY @V4M0127 01510000
EJECT 01511000
LTORG 01512000
EJECT 01513000
COPY EQU 01514000
SPACE 01515000
WAITON EQU (EXTMODE+MCHEK+WAIT)*X'10000' 01516000
MCHEKENB EQU (MCHEK+EXTMODE)*X'10000' 01517000
XMODEON EQU EXTMODE*X'10000' 01518000
SPACE 01519000
* BITS DEFINED IN DMPSW 01520000
ALL EQU X'80' ON MEANS DUMP ALL OF MEMORY 01521000
BREAKSUP EQU X'40' ON MEANS TURN SUPPRESSION MECHANISM OFF 01522000
LINESUP EQU X'20' ON MEANS SUPPRESSION MECHANISM ACTIVE 01523000
DOUBLESP EQU X'10' ON MEANS DOUBLE SPACE AFTER THIS LINE 01524000
SKIPSUP EQU X'08' ON MEANS LINES BEING SUPPRESSED BECAUSE *01525000
PAGES ARE NOT CONTROL PROGRAM PAGES 01526000
SPACE 1 01526100
RTCNT1 EQU 65 RETRY COUNT + 1 FOR 3340/3344 @V56BDA8 01526200
TRKCONCK EQU X'02' TRACK CONDITION CHECK @V56BDA8 01526300
EJECT 01527000
COPY DEVTYPES 01528000
COPY IOBLOKS @V2B2638 01529000
COPY MONBLOKS @V2B2638 01530000
PSA 01531000
COPY RBLOKS 01532000
COPY CORE 01533000
COPY ALLOC 01534000
COPY SPOOL 01535000
COPY DMPBLOKS 01536000
EJECT 01537000
DMKDMP CSECT 01538000
SPACE 01539000
DMKDMPSF DC (SFBSIZE)D'0' SFBLOK FOR AUTOMATIC DUMP DEVICE 01540000
ORG DMKDMPSF+(SFBRECSZ-SFBLOK) 01541000
DC H'4096' 01542000
ORG DMKDMPSF+(SFBFLAG-SFBLOK) 01543000
DC AL1(SFBDUMP) 01544000
ORG DMKDMPSF+(SFBRECNO-SFBLOK) 01545000
DMPNOREC DC F'4' NUMBER OF RECORDS IN DUMP FILE @VW01525 01546000
ORG DMKDMPSF+(SFBFNAME-SFBLOK) 01547000
DC CL12'CPDUMP' @VA04431 01548000
ORG DMKDMPSF+(SFBFTYPE-SFBLOK) 01549000
DC CL12'FILE' @VA04431 01550000
ORG DMKDMPSF+(SFBCLAS-SFBLOK) 01551000
DC C'D' 01552000
ORG DMKDMPSF+(SFBDIST-SFBLOK) @VA04431 01553000
DC CL8' ' @VA04431 01554000
ORG 01555000
SPACE 01556000
END 01557000