*************  N E W   C P V   E X E R C I S E R S ******************

A NEW VERSION (C00) OF THE CPV EXERCISERS ARE INCLUDED ON THIS SST.
THE FOLLOWING FILES ARE INCLUDED.

FILE NAME               CONTENTS
---------               --------
NEWCPVEXJOB             THIS IS THE ACTUAL EXERCISERS.  THIS FILE
                        CONTAINS ALL THE JCL NEEDED TO CREATE THE
                        EXERCISERS.  PLEASE BE AWARE THAT THIS JOB
                        WILL PRODUCE ABOUT A THIRD OF A BOX OF PAPER
                        IN OUTPUT.

EX:DOCUMENT             COPY THIS FILE TO THE LP WITH VFC.
                        IT EXPLAINS THE EXERCISERS (HOW TO LOAD THEM,
                        HOW TO RUN THEM,ERROR MESSAGES,.. ETC.)

DOCUMENT:JCL            THIS IS A JCL FILE THAT WILL CREATE THE MODIFIED
                        'EXTRACT' THAT WAS USED TO GENERATE THE FILE
                        EX:DOCUMENT.  AN EXAMPLE IS GIVEN IN THE
                        COMMENTS OF THE COMMANDS USED TO CREATE THE
                        EXERCISER DOCUMENT.

EXERCISER-INFO          THIS FILE.

-----------------------------------------------------------------------

     H I N T S   O N   U S I N G   T H E   E X E R C I S E R S

                     ********************

 1 -     MAKE SURE YOU READ THE LISTINGS!
         THE DOCUMENTATION FOR THE EXERCISERS IS INCLUDED
         IN THE LISTINGS AS COMMENTS AND ONLY IN THE LISTINGS.

 2 -     IT IS BEST IF THE EXERCISERS ARE RUN IN AN ACCOUNT WITH
         X'C0' OR GREATER PRIVELEGE LEVEL.

 3 -     IF YOU ARE TESTING A NEW SYSTEM OR A SYSTEM WITH A NEW
         OR REPLACED PIECE OF HARDWARE  I WOULD ADVISE THAT YOU
         USE THE 'S' OPTION OF THE SET COMMAND.  THIS WILL
         PREVENT A SNAP-SHOT DUMP OF THE SYSTEM FROM OCCURING
         EVERYTIME THERE IS AN ERROR.

 4 -     HERE ARE SOME GENERAL GUIDE LINES THAT I HAVE FOUND USEFUL
         FOR DETERMINING HOW MANY EXERCISERS TO RUN.
         IF YOU DONT HAVE ANY SPECIAL TEST REQUIREMENTS, YOU
         JUST WANT TO EXERCISE THE SYSTEM, USE THE AUTO CONFIGURATION
         CAPABILITY OF MASTER.

         IF YOU WISH TO SPECIFY THE TEST PARAMETERS, HERE ARE SOME
         GENERAL GUIDE LINES:

         A) GHOST USERS.
            1) RUN 2 GHOST, ONE RUNNING TEST 2 AND 4, THE OTHER JUST
                         TEST 2.
            2) RUN 1 ADDITIONAL GHOST FOR EACH SECONDAY CPU AND HAVE
                     IT RUN TEST 2.
         B) ON-LINE USERS.
            1) RUN AS MANY ON-LINE USERS AS THE SYSTEM WILL ALLOW.
            2) THE ACCOUNT SHOULD BE AUTHORIZED FOR MAXIMUM MEMORY,
                 MAXIMUM DISK STORAGE, MAXIMUM LO AND DO OUTPUT AND
                 SHOULD BE ALLOWED TO ACCESS ALL TAPES AND PRIVATE
                 SPINDLES.
            3) HAVE THE ON-LINE USERS RUN TEST 1 ONLY WITH ALL
                 OPTIONS  (A OPTION ON SET COMMAND).
            4) IF THE SYSTEM HAS PRIVATE SPINDLES RUN 2 ON-LINE USERS
                 PER SPINDLE AND RUN ALL SPINDLES ON THE SYSTEM.
            5) SET ON-LINE MAXIMUM TAPES ALLOWED TO THE TOTAL NUMBER
               IN ON THE SYSTEM.
                 (USE CONTROL, SET OTXT TO TXT.  X IS TYPE).
               THE ON-LINE USERS WILL THEN EXERCISE ALL THE TAPES
               ON THE SYSTEM.

 6 -     THE EXERCISERS SHOULD BE RUN FOR A MINIMUM OF 4 HOURS TO


THE ABOVE HINTS ARE JUST SOME THINGS THAT I HAVE OBSERVED WHILE TESTING
THE EXERCISERS.  PLEASE EXPERIMENT WITH ALL THE DIFFERENT COMMANDS
AND OPTIONS.


I THINK SOME ADDITIONAL INFORMATION ON THE EXERCISERS USE OF A
X'C0' PRIVELEGE LEVEL ACCOUNT AND SOME ALTERNATIVES IS IN ORDER.
THE MAJOR NEED OF THE X'C0' PRIVELEGE LEVEL IS TO ALLOW THE
PROGRAMS TO ISSUE M:SYS CALS.  I WILL EXPLAIN EACH PROGRAMS
USE OF MASTER MODE.

-- MASTER --
THE MASTER PROGRAM MUST GO MASTER MODE FOR 2 OPERATIONS.
1) MASTER NEEDS TO ACCESS THE MONITOR CELLS THAT SPECIFY THE NUMBER
OF ONLINE AND  GHOST USERS THAT CAN BE STARTED.  2) MASTER MUST
ACCESS THE MONITOR ROUTINE "T:GJOB" TO START UP THE GHOST AND
ONLINE USERS.  THE MASTER PROGRAM WILL EXECUTE IN MASTER MODE
ONLY AS LONG AS NECESSARY AND THEN GOES BACK SLAVE MODE.
THE MASTER PROGRAM DOES NOT CHANGE ANY MONITOR DATA EXCEPT
FOR HIS OWN UB:MPFLGS, IF RUNNING ON AN MP SYSTEM, AND HIS BASE
PRIORITY (UB:PRIOB).  MASTER MUST INCREASE HIS BASE PRIORITY TO
PROVIDE QUICKER RESPONSE TO KEYINS.

-- EXLOG --
EXLOG IS THE PROGRAM THAT STARTS AS A GHOST USER AND CHANGES
HIMSELF TO A NON-COC ONLINE USER.   EXLOG MUST GO MASTER MODE
IN ORDER TO ESTABLISH THE ACCOUNT AUTHORIZATIONS IN THE JIT.
EXLOG MUST ALSO BE ABLE TO MODIFY MEMORY LOCATION X'5E' AS THIS
IS USED AS A COMMUNICATION FLAG BETWEEN EXLOG AND MASTER.
EXLOG DOES NOT ACCESS ANY MONITOR DATA.

-- CPVEXER --
CPVEXER DOESNT REALLY HAVE TO GO MASTER MODE, HOWEVER IT MUST
BE ABLE TO ESTABLISH A CAL3 VECTOR (M:CAL PROCEDURE) WITH INTERRUPT
INHIBITS SET AND MASTER MODE.  AFTER THE CAL3 IS ESTABLISHED ALL
MASTER MODE TYPE FUNCTIONS THAT ANY OF THE TEST ROUTINES REQUIRE
CAL3 FUNCTIONS (EXCEPT 1 THAT ISNT CURRENTLY USED) CHANGE ANY MONITOR
DATA AND ONLY ACCESS MONITOR DATA THAT WOULD BE AVAIABLE TO A SLAVE
MODE USER (MACHINE MEMORY SIZE AND JIT VALUES).  I WILL GIVE A
BRIEF DESCRIPTION OF THE CAL3 FUNCTIONS, THEIR USE OF MASTER MODE
OF OPERATION, AND EACH OF THE TEST ROUTINES USE OF THESE FUNCTIONS.

THE CAL3 FUNCTIONS ARE DEFINED BY THE REGISTER FIELD OF THE CAL3
INSTRUCTION.  ALL OF THE FUNCTIONS OPERATE WITH INTERRUPTS INHIBITED
BECAUSE THE CODE IS NON-REENTRANT, HOWEVER ALL THE ROUTINES EXCEPT
THE SNAPSHOT FUNCTION, ARE VERY QUICK.  PLEASE NOTE THAT THE CODE
TO EXECUTE THE CAL3 FUNCTIONS IS NOT SYSTEM GLOBAL, EACH EXERCISER
PROGRAM WILL HAVE HIS OWN COPY.

** FUNCTION 0 **
FOR THE EXERCISER TO BE A FULLY FUNCTIONAL TOOL IT MUST BE ABLE
TO PROVIDE AS MUCH INFORMATION AS IT CAN ABOUT THE MACHINE ENVIRONMENT
AT THE TIME OF A FAILURE.  IN THE DYNAMIC ENVIRONMENT THAT CPV
OPERATES, THIS INFORMATION CAN BE HARD TO OBTAIN. THE CAL3, FUNCTION 0,
IS USED TO GATHER THIS INFORMATION.  THE FUNCTION OPERATES WITH
INTERRUPTS INHIBITED TO PREVENT ANY EXTERNAL EVENTS FROM DISRUPTING
THE ENVIRONMENT THAT WAS PRESENT AT THE TIME OF THE FAILURE. THERE
ARE 3 BASIC STEPS IN THIS FUNCTION.  1) THIS FUNCTION HAS THE CAPABILITY
OF CALLING THE SYSTEM DEBUGGER, XDELTA.  THIS CAPABILITY IS CONTROLLED
BY A FLAG IN THE CONTROL BUFFER AND IS NORMALLY DISABLED.  DONT USE
IT.  IT WAS KIND OF LIKE A MOUNTAIN, I PUT IT IN BECAUSE IT WAS THERE.
2) THE SECOND FUNCTION IS TO PRODUCE A SNAPSHOT DUMP OF THE RUNNING
SYSTEM.  THIS PRODUCES A MONDMP FILE THAT CAN BE ANALYZED LATER.
THIS IS A *VERY* USEFUL FEATURE FOR DEBUGGING INTERMITTENT PROBLEMS
AND IS THE DEFAULT MODE OF OPERATION.  THE SNAPSHOT DUMP FEATURE CAN
BE DISABLED BY USING THE 'S' OPTION OF THE 'SET' COMMAND.  3) THE
THIRD AND FINAL FUNCTION IS TO PRODUCE A TABLE, IN MEMORY, OF THE
USERS VIRTUAL-VS-REAL MEMORY ADDRESSES.  THIS IS DONE IN ONE
OF TWO WAYS, DEPENDING ON THE TYPE OF MACHINE, SIGMA6,SIGMA9 OR X560.
IF THE MACHINE IS A SIGMA9 OR X560, THE LRA (LOAD REAL ADDRESS) IS USED
TO CONVERT THE VIRTUAL ADDRESS TO A REAL ADDRESS.  IF THE MACHINE IS
A SIGMA 6 (OR SIGMA5) THEN THE REAL ADDRESS LOADED OUT OF THE USERS
JIT (JX:CMAP) AND THE ACCESS CODES ARE OBTAINED BY CALLING THE MONITOR
ROUTINE T:IACU.  FUNCTION 0 WILL THEN RETURN TO THE CALLER, AT THE
CAL3 INSTRUCTION +1, IN MASTER MODE WITH INTERRUPTS ENABLED.

** FUNCTION 1 **
FUNCTION 1 IS THE SAME AS FUNCTION 0 EXCEPT THAT THE RETURN IS
MADE TO THE CALLER AT THE CAL3 INSTRUCTION +1, IN MASTER MODE, WITH
INTERRUPTS INHIBITED.

** FUNCTION 2 **
FUNCTION 2 IS USED TO ENTER MASTER MODE.  THE RETURN IS TO THE
CAL3 INSTRUCTION +1, IN MASTER MODE, WITH INTERRUPTS INHIBITED.

** FUNCTION 3 **
FUNCTION 3 IS USED TO ENTER MASTER MODE.  THE RETURN IS TO THE
CAL3 INSTRUCTION +1, IN MASTER MODE, WITH INTERRUPTS ENABLED.

** FUNCTION 4 **
FUNCTION 4 IS USED TO ENTER SLAVE MODE.  THE RETURN IS TO THE CAL3
INSTRUCTION +1, IN SLAVE MODE, WITH INTERRUPTS ENABLED.

** FUNCTION 5 **
FUNCTION 5 ALLOWS THE CALLER TO CHANGE HIS PRIVELEGE LEVEL
(IN THE JIT), WHILE IN SLAVE MODE.  RETURN IS TO THE CAL3 INSTRUCTION
+1, IN SLAVE MODE, WITH INTERRUPTS ENABLED.

** FUNCTION 6 **
FUNCTION 6 IS NOT USED.

** FUNCTION 7 **
FUNCTION 7 IS THE SAME AS FUNCTION 0 AND 1 (SNAPSHOT) EXCEPT THAT
THE RETURN IS TO THE CAL3 INSTRUCTION +1, IN SLAVE MODE, WITH INTERRUPTS
ENABLED.

** FUNCTION 8 **
FUNCTION 8 IS USED TO WRITE MESSAGES INTO THE ERRLOG.  THESE PROGRAM
MESSAGES ARE ENTERED AS 'OPERATOR MESSAGES' (TYPE=27).  RETURN
IS TO THE CAL3 INSTRUCTION +1, IN THE SAME MODE  AS CALLED. (IF CALLED
SLAVE, RETURN IS SLAVE, IF CALLED MASTER, RETURN IS MASTER)

I WILL NOW EXPLAIN EACH OF THE TEST'S USE OF THE ABOVE FUNCTIONS.

*** TEST 1 - I/O AND INSTRUCTION TEST ***
FUNCTION 5 (SET PRIV) IS USED TO SET THE PRIVELEGE LEVEL TO X'40'.

WHEN A FAILURE IS DETECTED THE FOLLOWING FUNCTIONS ARE USED.
  FUNCTION 1 IS USED TO PRODUCE THE SNAP SHOT DUMP OF THE SYSTEM.
  FUNCTION 8 IS USED TO ENTER A MESSAGE INTO THE ERROR LOG
           DEFINING THE FAILURE.
  FUNCTION 4 IS USED TO RETURN TO SLAVE MODE OF OPERATION.

TEST 1 SETS UP HIS OWN TRAP CONTROL WITH M:TRAP.  WHEN THIS ROUTINE
IS ENTERED THE FOLLOWING FUNCTIONS ARE USED:
  FUNCTION 2 IS USED TO ENTER MASTER MODE WITH INTERRUPTS DISABLED.
           THIS IS DONE BECAUSE ADDITIONAL CHECKING IS NECESSARY
           AND THE ENVIRONMENT NEEDS TO STAY THE SAME.
  IF THE TRAP WAS A PROGRAMMED TRAP 40, THEN FUNCTION 4 IS CALLED
  TO RETURN TO THE SLAVE MODE OF OPERATION.  IF THE TRAP SHOULD
  NOT HAVE HAPPENED THEN WE TREAT IT AS A NORMAL FAILURE AND EXECUTE
  FUNCTIONS 1,8 AND 4.

AT ALL OTHER TIMES TEST 1 OPERATES IN THE SLAVE MODE, WITH INTERRUPTS
ENABLED AND WITH A PRIVELEGE LEVEL OF X'40'.

*** TEST 2 - MEMORY SCANNER ***
TEST 2 IS DIVIDED INTO 2 PARTS.  PART 1 OPERATES IN SLAVE MODE, INTERRUPT
ENABLED, WITH A PRIVELEGE LEVEL OF X'40'.  IF AN ERROR OCCURS DURING
PART 1, FUNCTION 7 WILL BE EXECUTED TO PROVIDE A SNAPSHOT DUMP AND RETURN
IN SLAVE MODE.  PART 2 IS USED TO SCAN REAL MEMORY.   THIS IS DONE TO
BY MAPPING INTO A PHYSICAL PAGE (VIA M:CVM) AND USING CVA INSTRUCTIONS
TO ACCESS THE MEMORY.  NO ERROR CHECKING IS PROVIDED, HOWEVER IF
THERE ARE PROBLEMS IN THE MEMORY INTERFACE THIS PROCEDURE COULD CAUSE
OTHER EXERCISERS TO REPORT ERRORS.  PART 2 OPERATES AT A PRIVELEGE
LEVEL OF X'80'.  THIS LEVEL IS NEEDED TO ALLOW THE M:CVM CAL TO BE
EXECUTED.  NOTE THAT THIS PRIVELEGE LEVEL GIVES READ ACCESS ONLY
TO THE CVM'D PAGES.

*** TEST 3 - SYMBOINT TEST ***
THIS TEST OPERATES IN SLAVE MODE, INTERRUPTS ENABLED AT A PRIVELEGE LEVEL
OF X'40'.  THIS TEST HAS NO ERROR CHECKING OR REPORTING ROUTINES.
IF A SYMBOINT ERROR OCCURS IT WILL BE REPORTED BY THE OPERATING SYSTEM.

*** TEST 4 - REGISTER BLOCK 1 TEST ***
TEST 4 IS THE ONLY TEST THAT NORMALLY OPERATES IN MASTER MODE.
THIS IS NECESSARY BECAUSE OF THE NEED TO SWITCH REGISTER BLOCKS.
IF AN ERROR OCCURS IT WILL REPORT THE ERROR BY EXECUTING A FUNCTION 7
(SNAPSHOT, RETURN SLAVE).

--- TAPTST ---
THE TAPE TEST PROGRAM OPERATES IN SLAVE MODE.  IT TRIES TO ENTER MASTER
MODE AT THE VERY START OF THE PROGRAM.  IF MASTER MODE CAN BE OBTAINED
TAPTST WILL ACCESS THE PHYSICAL DEVICE ADDRESS OF THE TAPE UNIT
THAT IT IS GOING TO TEST AND OUTPUTS THIS IF AN ERROR OCCURS.
IF TAPTST CANNOT GO MASTER MODE, IT WILL NOT PROVIDE THE PHYSICAL
ADDRESS, BUT ALL OTHER FUNCTIONS WILL OPERATE PROPERLY.


  ********************************************************************
THE FOLLOWING ALTERNATIVE CAN BE USED IF A X'C0' PRIVELEGE LEVEL ACCOUNT
CANNOT BE USED TO RUN THE EXERCISERS.

STEP1 - LOAD THE EXERCISERS AS THOUGH A X'C0' LEVEL ACCOUNT WAS GOING
        TO BE USED.  ANSWER YES TO DEFINE'S QUESTION ON THIS.
        OR MODIFY THE LOAD MODULE CPVEXER TO ALLOW IT TO EXECUTE
        M:SYS CALS.  THIS IS A LOADER SPECIFIED PRIVELEGE AND
        IS ALLOWED ONLY IF THE PROGRAM IS ACCESSED FROM :SYS.
        THE LOADER OPTION WOULD BE (PRIV,X).  YOU CAN EITHER
        MODIFY THE JCL IN THE FILE 'CPVEXLOAD' AND BATCH IT AGAIN
        OR RUN DEFINE AGAIN AND HAVE IT BUILD THE LYNX FILES AND
        MODIFY L:CPVEX (LYNX COMMAND FILE) TO ADD THE PRIV VALUES.
        THEN USE LYNX (!LYNX L:CPVEX) TO RELOAD CPVEXER.
        (THE PRIV VALUES ARE DOCUMENTED IN THE BATCH PROCESSING
         REFERENCE MANUAL #901764H, PAGE 133 AND 147)
STEP3 - COPY THE NEW CPVEXER LOAD MODULE INTO THE :SYS ACCOUNT
        WITH (RD(NONE),EX(ALL)) ATTRIBUTES.
STEP4 - YOU MUST NOW GENMD EXLOG TO CALL THE EXERCISER FROM THE
        :SYS ACCOUNT INSTEAD OF THE RUNNING ACCOUNT.  CHANGE THE
        INSTRUCTION AT THE SYMBOL 'LDTRC' TO BE A 'EXU  M$LDTRC2'.
STEP5 - YOU MUST EITHER LEAVE A COPY OF CPVEXER IN THE RUNNING ACCOUNT
        OR BUILD ANOTHER FILE IN THE RUNNING ACCOUNT CALLED 'CPVEXER'.
        THIS IS NEEDED BECAUSE THE PROGRAM 'MASTER', WHEN STARTED, WILL
        CHECK THAT ALL THE PROGRAMS NEEDED TO RUN THE EXERCISERS EXIST
        IN THE RUNNING ACCOUNT.  IT MUST BE ABLE TO  OPEN A FILE CALLED
        'CPVEXER'.  THIS FILE NEED NOT BE A LOAD MODULE, OR EVEN A KEYED
        FILE, BUT THERE MUST BE A FILE BY THAT NAME IN THE ACCOUNT.

SINCE THERE IS A TABLE OF ALLOWED ACCOUNTS INCLUDED IN CPVEXER, ONLY
THE ACCOUNTS THAT ARE ALLOWED TO RUN THE EXERCISER CAN, EVEN THOUGH IT
RESIDES IN THE :SYS ACCOUNT.

PLEASE NOTE THAT THE EXERCISERS *NEVER* ACCESS OR MODIFY ANY OTHER
USERS MEMORY, ONLY THEIR OWN AND A LIMITED PART OF THE MONITOR'S
OF GHOST AND ONLINE USERS ALLOWED, START THE USERS AND TO MAKE THE
SNAPSHOT DUMPS)


AND THE FINAL NOTICE:

NO 'OFFICIAL' SUPPORT OF THESE PROGRAMS IS GIVEN OR IMPLIED!

THESE PROGRAMS CANNOT BE SIDRED.  YOU MAY MAKE ANY MODIFICATIONS YOU
WISH TO THEM.  YOU MAY COPY THEM.  YOU MAY TAKE THEM TO OTHER SYSTEMS.
YOU MAY EAT THEM, BURN THEM, FOLD THEM, MUTILATE   THEM AND EVEN
SPINDLE THEM BUT UNDER NO CONDITIONS WILL YOU BE ALLOWED TO ACCEPT ANY
TYPE OF MONETARY  PAYMENT FOR THEM.

                         BEST OF LUCK

                          JOE CHISOLM
                          HONEYWELL FED.
                          PHOENIX, AZ    (GOD'S COUNTRY)
