MCI TITLE 'DMKMCI (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 VALIDATE SEQUENCEING OF INPUT @V200820 00002000
*. 00003000
* MODULE NAME - 00004000
* 00005000
* DMKMCI 00006000
* 00007000
*FUNCTION - 00008000
* 00009000
* THE FUNCTION OF THIS MODULE IS TO ENABLE OR DISABLE 00010000
* SOFT MACHINE CHECK INTERRUPTS BASED UPON PARAMETERS 00011000
* SPECIFIED ON THE CLASS F SET MODE COMMAND. 00012000
* 00013000
*ATTRIBUTES - 00014000
* 00015000
* PAGEABLE, ENTERED VIA SVC CALL 00016000
* 00017000
*ENTRY POINTS- 00018000
* 00019000
* 00020000
* DMKMCIMS - ENTRY FROM SET COMMAND TO ENABLE OR DISABLE 00021000
* SOFT MACHINE CHECK INTERRUPTS. 00022000
* 00023000
*ENTRY CONDITIONS - 00024000
* 00025000
* NONE 00026000
* 00027000
*EXIT CONDITIONS- 00028000
* 00029000
* - RETURN TO CALLER VIA SVC EXIT WITH SOFT MACHINE CHECKS 00030000
* DISABLED/ENABLED. 00031000
* 00032000
*CALLS TO OTHER ROUTINES - 00033000
* 00034000
* DMKFREE - TO GET STORAGE FOR CPEXBLOKS 00035000
* DMKSCNFD - TO SCAN FOR ARGUMENT 00036000
* DMKERMSG - TO SEND ERROR MESSAGE TO OPERATOR 00037000
* DMKCVTDB - TO CONVERT PROCESSOR ADDRESS TO DECIMAL 00038000
* 00039000
*EXTERNAL REFRENCES 00040000
* RECMODE - RECORDING MODE FOR THIS PROCESSOR 00041000
* DMKMCHLM - COUNT FIELD FOR SOFT ERRORS 00042000
* 00043000
*TABLES AND WORK AREAS - 00044000
* 00045000
* MCHAREA,PSA,VMBLOK 00046000
* 00047000
*REGISTER USEAGE _ 00048000
* 00049000
* GPR0-11 = SCRATCH 00050000
* 12 = MCI BASE 00051000
* 13 = SAVE AREA ADDRESS 00052000
* 14 = LINKAGE 00053000
* 15 = LINKAGE 00054000
* 00055000
*OPERATION - 00056000
* 00057000
* DMKMCIMS 00058000
* 00059000
* THIS ROUTINE WILL ENABLE OR DISABLE ALL SOFT MACHINE 00060000
* CHECKS BY ISSUING THE CORRECT DIAGNOSE COMMAND AND 00061000
* SET THE CORRECT MASK IN CONTROL REGISTER 14. 00062000
* 00063000
*MESSAGES - 00064000
* 00065000
* DMKMCI003E INVALID OPTION - OPTION 00066000
* DMKMCI026E OPERAND MISSING OR INVALID 00067000
* DMKMCI618I (INSTRUCTION RETRY) NOW IN (RECORD) MODE CPUID 00068000
* (MAIN STORAGE ) (QUIET ) 00069000
* 00070000
* WAIT STATE CODES 00071000
* 00072000
* NONE 00073000
* 00074000
*. 00075000
EJECT 00076000
COPY OPTIONS 00077000
COPY LOCAL 00078000
SPACE 3 00079000
DMKMCI CSECT 00080000
SPACE 00081000
MODID DC CL8'DMKMCI' @VA10453 00082000
SPACE 2 00083000
EXTRN DMKQCNWT 00084000
EXTRN DMKSCNFD 00085000
EXTRN DMKCVTDB @V407510 00086000
EXTRN DMKERMSG @V407510 00087000
EXTRN DMKSTKOP @V407510 00088000
EXTRN DMKMCHLM @VA10453 00089000
SPACE 00090000
USING VMBLOK,R11 00091000
USING SAVEAREA,R13 00092000
USING MCHAREA,R9 00093000
USING PSA,0 00094000
********************************************************************* 00095000
* ROUTINE TO ENABLE ALL SOFT RECORDING 00096000
********************************************************************* 00097000
DMKMCIMS RELOC 00098000
CLI CPUVERSN,X'FF' IS THIS A VIRTUAL MACHINE ? 00099000
BE ALLOK YES, RETURN TO THE SYSTEM 00100000
STC R2,MODFLAG1 SAVE MESSAGE INDICATOR @V407510 00101000
MVI STKOPSW,NO INDICATE NORMAL EXIT @V407510 00102000
STCTL C14,C14,CR14ENB SAVE CONTROL REGISTER 14 @VA10453 00103000
CALL DMKSCNFD GO GET NEXT ARGUMENT BEGINNING ADDRESS 00104000
BNZ MCI026 NO ARGUMENT IS SPECIFIED, GO PUT 00105000
* ERROR MESSAGE 00106000
* (DMKMCI026) 00107000
LR R3,R0 GET THE LENGTH OF THE ARGUMENT 00108000
C R3,F8 IS THE ARGUMENT LENGTH GREATER THAN 8 00109000
BH MCI026 YES, GO PUT OUT ERROR MESSAGE 00110000
LA R5,MESSTEXT GET THE BEGINNING ADDRESS OF ARGUMENT 00111000
* TEXTS 00112000
BCTR R3,R0 SUBTRACT ONE FROM THE COUNT 00113000
MCICLC EQU * 00114000
EX R3,MCLC COMPARE THE MESSAGE TEXT AGAINST THE 00115000
* ARGUMENT TEXTS 00116000
BE MCITEROC YES, THE ARGUMENTS ARE THE SAME 00117000
TM MODFLAG1,MOD1QUIT IS THE QUIET MESSAGE INDICATOR SET ? 00118000
BO MCI003 YES, GO PUT OUT ERROR MESSAGE 00119000
* (DMKMCI003) 00120000
OI MODFLAG1,MOD1QUIT SET THE QUIET MESSAGE INDICATOR 00121000
LA R5,6(R5) UPDATE ADDRESS TO THE NEXT MESSAGE TEXTS 00122000
B MCICLC GO CHECK NEW ARGUMENT 00123000
********************************************************************* 00124000
SPACE 2 00125000
MCLC CLC 0(0,R1),0(R5) ARE THE ARGUMENTS THE SAME ? 00126000
SPACE 2 00127000
***************************************************************@V407510 00128000
MCITEROC DS 0H @V407510 00129000
MVC CPROCA(LN2),BLANKS BLANK PROCESSOR VALUE @V407510 00130000
XC PROCA,PROCA CLEAR PROCESSOR ADDRESS @V407510 00131000
MVI SWTCH,BOTH INITIALIZE SWTCH TO DEFAULT @V407510 00132000
CALL DMKSCNFD GET NEXT PARAMETER @V407510 00133000
BNZ MSGSET NONE SPECIFIED, USE DEFAULT @V407510 00134000
C R0,F2 LENGTH OF 2 REQUIRED @V407510 00135000
BNE MCI003 NOT EQ 2, ERROR @V407510 00136000
MVC CPROCA(LN2),0(R1) MOVE ADDRESS @V407510 00137000
CALL DMKCVTDB CONVERT TO DECIMAL @V407510 00138000
BNZ MCIMSG3 CONVERT NOT OK, ERROR @V407510 00139000
STH R1,PROCA SAVE PROCESSOR ADDRESS @V407510 00140000
MVI SWTCH,THIS SET UP FOR THIS PROCESSOR @V407510 00141000
CH R1,IPUADDR THIS PROCESSOR SPECIFIED @V407510 00142000
BE MSGSET YES, BRANCH @V407510 00143000
TM APSTAT1,APUOPER AP MODE? @V407510 00144000
BNO MCIMSG3 NO, ERROR @V407510 00145000
MVI SWTCH,OTHER SET UP FOR OTHER PROCESSOR @V407510 00146000
CH R1,IPUADDRX OTHER PROCESSOR SPECIFIED? @V407510 00147000
BNE MCIMSG3 NO, ERROR @V407510 00148000
MSGSET DS 0H @V407510 00149000
LA R2,MESSAGE GET THE BEGINNING OF THE MESSAGE BUFFER 00150000
MVI 0(R2),X'40' CLEAR THE BUFFER WITH 00151000
MVC 1(M618L-1,R2),0(R2) BLANKS @V407510 00152000
MVC 0(13,R2),MAINST MOVE THE MAIN STORAGE MESSAGE IN BUFFER 00153000
LA R5,13 CALCULATE THE MESSAGE LENGTH 00154000
TM MODFLAG1,MOD1RETY IS THE RETRY MESSAGE INDICATOR ON ? 00155000
BZ MCISOFT NO, GO SETUP OTHER PART OF MESSAGE 00156000
MVC 0(18,R2),INSTRUCT MOVE INSTRUCTION RETRY INTO BUFFER 00157000
LA R5,18 CALCULATE THE MESSAGE LENGTH 00158000
MCISOFT EQU * 00159000
LA R3,0(R5,R2) UPDATE MESSAGE BUFFER POINTER 00160000
MVC 0(7,R3),NOW1 MOVE NOW MESSAGE INTO BUFFER 00161000
LA R5,7(R5) CALCULATE THE MESSAGE LENGTH 00162000
LA R3,0(R5,R2) UPDATE MESSAGE BUFFER POINTER @V407510 00163000
MVC 0(LN10,R3),QUIET MOVE QUIET MSG TO BUFFER @V407510 00164000
LA R5,10(R5) CALCULATE THE MESSAGE LENGTH 00165000
TM MODFLAG1,MOD1QUIT IS THE QUIET MESSAGE INDICATOR ON ? 00166000
BO TESTC YES, GO ENABLE/DISABLE RECORDING 00167000
MVC 0(LN11,R3),RECORD MOVE RECORD MSG INTO BUFFER @V407510 00168000
LA R5,1(R5) CALCULATE MESSAGE LENGTH @V407510 00169000
TESTC DS 0H @V407510 00170000
LA R2,1(R5,R2) UPDATE MESSAGE BUFFER PTR @V407510 00171000
MVC 0(LN2,R2),CPROCA MOVE PROCESSOR ADDR TO MSG @V407510 00172000
L R9,AMCHAREA GET ADDR OF MCHAREA @V407510 00173000
SR R3,R3 CLEAR REGISTER 3 FOR MODEL ID 00174000
ICM R3,1,MCHMODEL GET THE MACHINE ID 00175000
BZ ALLOK IF ZERO, NO SUPPORT FOR MODEL 00176000
TM MODFLAG1,MOD1RETY IS THE RETRY MESSAGE INDICATED ? 00177000
BZ MODEL(R3) NO, GO TO THE MAIN STORAGE SECTION 00178000
* FOR EACH MACHINE MODEL 00179000
B MC135138 GO AND CHECK THE MOD STATUS @V386298 00180000
MODEL EQU * 00181000
B ALLOK GO TO THE EXITS SECTION 00182000
B MC135138 GOTO MAIN STO. SECT. FOR 135/138 @V386298 00183000
B MC145148 GOTO MAIN STO. SECT. FOR 145/148 @V386298 00184000
B MC15558 GO TO MAIN STORAGE SECTION FOR 155/158 00185000
B MC16568 GO TO MAIN STORAGE SECTION FOR 165/168 00186000
B ALLOK FOR 303X PROCESSORS @VA10453 00187000
* THIS DUMMY BRANCH WILL NEVER BE TAKEN 00188000
B MC331341 GO TO 4331/4341 PROCESSING @V60A6B6 00189000
MC145148 EQU * @V386298 00190000
TM MODFLAG1,MOD1QUIT IS QUIT MESSAGE INDICATED ? 00191000
BO MCQUIT YES, GO ISSUE DIAGNOSE 00192000
DC X'8300' DIAGNOSE TO 00193000
DC X'0008' ENABLE ECC RECORDING 00194000
B ENBLR14 GO MASK ON THE RECOVERY REPORT 00195000
MCQUIT EQU * 00196000
DC X'8300' DIAGNOSE TO 00197000
DC X'000C' DIABLE ECC RECORDING 00198000
B MCDISA GO SET INDICATOR FOR QUIET 00199000
MC15558 EQU * 00200000
CLI SWTCH,OTHER OTHER PROCESSOR SPECIFIED? @V407510 00201000
BNE MC558 NO, CONTINUE @V407510 00202000
LA R6,ALLOK SET UP TO EXIT @V407510 00203000
B STKOPS STACK CPEXBLOK @V407510 00204000
MC558 DS 0H @V407510 00205000
TM MODFLAG1,MOD1QUIT IS THE QUIT MESSAGE INDICATED ? 00206000
BO MCQUIT1 YES, GO ISSUE DIAGNOE 00207000
DC X'8300' DIAGNOSE TO 00208000
DC S(ECCENA55) ENABLE ECC RECORDING 00209000
B ENBLR14 GO MASK ON THE RECOVERY REPORT 00210000
MCQUIT1 EQU * 00211000
DC X'8300' DIAGNOSE TO 00212000
DC S(ECCDIS55) DISABLE ECC RECORDING 00213000
B MCDISA GO SET INDICATOR FOR QUIET 00214000
MC16568 EQU * 00215000
CLI SWTCH,OTHER OTHER PROCESSOR SPECIFIED? @V407510 00216000
BNE MC658 NO, CONTINUE @V407510 00217000
LA R6,ALLOK SET UP TO EXIT @V407510 00218000
B STKOPS STACK CPEXBLOK @V407510 00219000
MC658 DS 0H @V407510 00220000
TM MODFLAG1,MOD1QUIT IS THE QUIET MESSAGE INDICATED ? 00221000
BO MCQUIT2 YES, GO ISSUE DIAGNOSE 00222000
DC X'8300' DIAGNOSE TO 00223000
DC S(ECCENA65) ENABLE ECC RECORDING 00224000
DC X'8300' DIAGNOSE TO @VA05036 00225000
DC S(LITOUT65) TURN OFF TEST LIGHT @VA05036 00226000
B ENBLR14 GO MASK ON THE RECOVERY REPORT 00227000
MCQUIT2 EQU * 00228000
DC X'8300' DIAGNOSE TO 00229000
DC S(ECCDIS65) DISABLE ECC RECORDING 00230000
B MCDISA GO SET INDICATOR FOR QUIET 00231000
MCI026 EQU * 00232000
LA R2,26 INDICATE MESSAGE DMKMCI026 00233000
SR R1,R1 CLEAR REGISTER 1 00234000
B MCIIDS GO GET ID FOR MESSAGE NUMBER 00235000
MCIMSG3 DS 0H @V407510 00236000
LA R0,LN2 SET UP LENGTH OF 2 @V407510 00237000
LA R1,CPROCA ADDRESS OF BAD PARM @V407510 00238000
MCI003 EQU * 00239000
LA R2,3 INDICATE MESSAGE DMKMCI003 00240000
MCIIDS EQU * 00241000
ICM R0,14,MCIID+3 GET MCI ID 00242000
CALL DMKERMSG GO TO ERROR ROUTINE 00243000
B ALLOK 00244000
MCDISA EQU * 00245000
NI APSTAT4,X'FF'-RECMODE SET ECC TO QUIET MODE @VA07615 00246000
B ENBLR GO CLEAR SOFT COUNT FIELD 00247000
ENBLR14 EQU * 00248000
OI APSTAT4,RECMODE INDICATE ECC IN RECORD MODE @VA07615 00249000
* MODE 00250000
B ENBLR141 GO MASK ON THE RECOVERY REPORT 00251000
MC135138 EQU * @V386298 00252000
CLI SWTCH,OTHER OTHER PROCESSOR SPECIFIED? @V407510 00253000
BNE MC358 NO, CONTINUE @V407510 00254000
LA R6,ALLOK SET UP TO EXIT @V407510 00255000
B STKOPS STACK CPEXBLOK @V407510 00256000
MC358 DS 0H @V407510 00257000
NI CR14ENB,X'FF'-RECOVRPT CLEAR THE RECOVERY REPORT MASK 00258000
TM MODFLAG1,MOD1QUIT IS THE QUIET MESSAGE INDICATED ? 00259000
BO ENBLR YES , GO CLEAR COUNT FIELD 00260000
ENBLR141 EQU * 00261000
OI CR14ENB,RECOVRPT SET THE RECOVERY REPORT MASK 00262000
ENBLR EQU * 00263000
L R1,=A(DMKMCHLM) ADDRESS OF CPULIMIT IN DMKMCH @VA10453 00264000
XC 0(4,R1),0(R1) ZERO CPULIMIT FOR DMKMCH @VA10453 00265000
LCTL C14,C14,CR14ENB RESTORE CONTROL REGISTER 14 @VA10453 00266000
LA R0,MCI618LN TOTAL LENGTH OF DMKMCI618I @V407510 00267000
LA R1,MCI618 GET THE ADDRESS OF THE MESSSAGE 00268000
CALL DMKQCNWT,PARM=OPERATOR+NORET 00269000
CLI SWTCH,BOTH OTHER PROCESSOR SPECIFIED? @V407510 00270000
BNE STKCK NO, FINISHED @V407510 00271000
BAL R6,STKOPS STACK CPEXBLOK @V407510 00272000
MC331341 EQU * 4331/4341 PROCESSING @V60A6B6 00273000
ALLOK EQU * 00274000
STKCK DS 0H @V407510 00275000
CLI STKOPSW,YES ENTRY FROM STKOPS? @V407510 00276000
BE MCEXIT YES, RETURN TO DISPATCHER @V407510 00277000
EXIT (R0,R4) 00278000
EJECT 00279000
STKOPS DS 0H @V407510 00280000
SR R2,R2 CLEAR REGISTER @V407510 00281000
IC R2,MODFLAG1 SAVE MODFLAG FOR RE-ENTRY @V407510 00282000
ICM R2,B'0010',SWTCH SAVE SWTCH FLAG @V407510 00283000
AIF (NOT &AP).APCHK5 00284000
TM APSTAT1,APUOPER AP MODE? @V407510 00285000
BZR R6 NO, RETURN @V407510 00286000
LA R0,CPEXSIZE SIZE OF CPEXBLOK @V407510 00287000
CALL DMKFREE GET STORAGE @V407510 00288000
USING CPEXBLOK,R1 ADDRESSABILITY TO CPEXBLOK @V407510 00289000
LA R15,STKRETN ADDR OF ROUTINE TO GET CONTROL @V407510 00290000
ST R15,CPEXADD SET UP RETURN ADDRESS @V407510 00291000
STM R0,R15,CPEXREGS SAVE REGISTERS @V407510 00292000
CALL DMKSTKOP STACK FOR OTHER PROCESSOR @V407510 00293000
DROP R1 RELEASE REG @V407510 00294000
.APCHK5 ANOP 00295000
BR R6 RETURN TO CALLER @V407510 00296000
AIF (NOT &AP).APCHK6 00297000
STKRETN DS 0H @V407510 00298000
STC R2,MODFLAG1 REFRESH MODFLAG1 @V407510 00299000
STCM R2,B'0010',SWTCH REFRESH SWITCH @V407510 00300000
MVI STKOPSW,YES INDICATE SPECIAL EXIT @V407510 00301000
CLI SWTCH,OTHER REQUEST FOR THIS PROCESSOR ONLY? @V407510 00302000
MVI SWTCH,THIS INDICATE THIS PROCESSOR ONLY @V407510 00303000
BE MSGSET YES, PROCESSOR ADDR ALREADY SET @V407510 00304000
MVC PROCA(LN2),IPUADDR SET UP THIS PROCESSOR ADDR @V407510 00305000
LH R2,IPUADDR GET PROCESSOR ADDRESS @V407510 00306000
CVD R2,WORK CONVERT PROCESSOR ADDRESS @V407510 00307000
UNPK CPROCA(LN2),WORKLO(LN2) CONVERT 2 DIGITS @V407510 00308000
OI CPROCA+ONE,ZONE SET ZONE FOR LAST DIGIT @V407510 00309000
B MSGSET REPEAT RTN FOR THIS PROCESSOR @V407510 00310000
.APCHK6 ANOP 00311000
MCEXIT DS 0H @V407510 00312000
GOTO DMKDSPCH RETURN TO DISPATCHER @V407510 00313000
EJECT 00314000
CR14ENB DC F'0' WORK AREA TO STORE CREG 14 @VA10453 00315000
MESSTEXT EQU * 00316000
DC C'RECORD' 00317000
DC C'QUIET' MESSAGE TEXTS FOR THE MODE COMMAND 00318000
************************************************************** 00319000
SPACE 00320000
* DMKMCIMS DATA AREAS- SERIALIZED BY SYSTEM LOCK @V407510 00321000
SPACE 00322000
WORK DC D'0' WORK AREA FOR CONVERSION @V407510 00323000
WORKLO EQU WORK+6 SIGNIFICANT DIGITS AFTER UNPK @V407510 00324000
STKOPSW DC X'00' ENTRY FLAG FOR DMKMCIMS @V407510 00325000
MODFLAG1 DC X'0' MESSAGE INDICATOR @V407510 00326000
PROCA DC H'0' PROCESSOR ADDRESS CONVERTED @V407510 00327000
CPROCA DC CL2' ' PROCESSOR ADDRESS SPECIFIED @V407510 00328000
SWTCH DC X'0' PROCESSOR INDICATOR SWITCH @V407510 00329000
************************************************************** 00330000
SPACE 00331000
************************************************************** 00332000
* DIAGNOSE SUPPORT * 00333000
************************************************************** 00334000
DS 0D 00335000
ECCDIS55 DC X'0300D100' DISABLE ECC FOR MODEL 155 00336000
DS 0D 00337000
ECCENA55 DC X'0400D100' ENABLE ECC FOR THE MODEL 155 00338000
DS 0D 00339000
ECCDIS65 DC X'0300000003000000' @VA12831 00340100
ECCENA65 DC X'0300000000000000' @VA12831 00341100
LITOUT65 DC X'0000000000000000' TURN OFF TEST LIGHT @VA05036 00342000
************************************************************** 00343000
SPACE 2 00344000
MCI618 DC X'1515' @VA10453 00345000
MCIID DC C'DMKMCI618I ' @VA10453 00346000
MCI618I DC CL40' ' MESSAGE BUFFER FOR MODE COMMAND @V407510 00347000
MCI618LN EQU *-MCI618 TOTAL LENGTH OF DMKMCI618I @V407510 00348000
MAINST DC C'MAIN STORAGE ' 00349000
INSTRUCT DC C'INSTRUCTION RETRY ' 00350000
NOW1 DC C'NOW IN ' 00351000
QUIET DC C'QUIET MODE' 00352000
RECORD DC C'RECORD MODE' 00353000
MESSAGE EQU MCI618I 00354000
M618L EQU L'MCI618I LENGTH OF MSG BUFFER @V407510 00355000
SPACE 00356000
SPACE 00357000
MOD1RETY EQU X'80' MSG INDICATOR FOR RETRY MESSAGE 00358000
MOD1QUIT EQU X'40' MSG INDICATOR FOR QUIET MESSAGE 00359000
BOTH EQU X'00' NO PROCESSOR SPECIFIED @V407510 00360000
THIS EQU X'10' THIS PROCESSOR SPECIFIED @V407510 00361000
OTHER EQU X'20' OTHER PROCESSOR SPECIFIED @V407510 00362000
YES EQU X'80' SPECIAL ENTRY FROM STKOPS @V407510 00363000
NO EQU X'00' NORMAL ENTRY @V407510 00364000
ONE EQU 1 DISPLACEMENT OF 1 @V407510 00365000
LN11 EQU 11 LENGTH OF 11 @V407510 00366000
LN10 EQU 10 LENGTH OF 10 @V407510 00367000
LN2 EQU 2 LENGTH OF 2 @V407510 00368000
ZONE EQU X'F0' ZONE USED FOR CONVERSION @V407510 00369000
EJECT 00370000
LTORG 00371000
EJECT 00372000
COPY MCHAREA @V407510 00373000
COPY SAVE 00374000
COPY VMBLOK 00375000
COPY MICBLOK 00376000
PSA 00377000
COPY EQU 00378000
COPY RBLOKS 00379000
END DMKMCI @V200820 00380000