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