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