maindec: Added the usual collection, with intact symlinks
[pdp8.git] / sw / maindec / eae_8e / maindec-8e-d0mb-d.txt
diff --git a/sw/maindec/eae_8e/maindec-8e-d0mb-d.txt b/sw/maindec/eae_8e/maindec-8e-d0mb-d.txt
new file mode 100644 (file)
index 0000000..e28a731
--- /dev/null
@@ -0,0 +1,599 @@
+                       DISCLAIMER
+
+       This document file was created by scanning  the
+       original  document and then editing the scanned
+       text.  As much as possible, the  original  text
+       format was  restored.  The original page breaks
+       have been  removed.  The original  spelling and
+       grammar  has  been  preserved.   The  assembler
+       listing  of   the  original  document   is  not
+       included in this document.
+       
+       B. Baehr (bb@balloo.han.de), Feb. 22, 1999
+
+
+
+
+
+
+
+
+
+
+       PRODUCT CODE:   MAINDEC-8E-D0MB-D
+       
+       PRODUCT TEST:   KE8-E (EAE) INSTRUCTION TEST 2
+                       MULTIPLY AND DIVIDE
+                       
+       DATE CREATED:   FEBRUARY 9, 1972
+       
+       MAINTAINER:     DIAGNOSTIC GROUP
+       
+       AUTHOR:         ED FORTMILLER
+       
+       
+               COPYRIGHT © 1972
+               DIGITAL EQUIPMENT CORPORATION
+\f
+1.     ABSTRACT
+       --------
+       
+       THE PDP-8/E EAE (KE8-E) MULTIPLY-DIVIDE TEST, TESTS AND EXERCISES
+       THE MULTIPLY AND DIVIDE HARDWARE OF THE KE8-E OPTION.  FIXED
+       NUMBERS WITH PREDETERMINED SOLUTIONS, AND RANDOM NUMBERS
+       WITH SIMULATED SOLUTIONS ARE USED.  THE ABILITY TO OPERATE
+       WITH THE INTERRUPT ENABLED IS ALSO TESTED.
+       
+2.     REQUIREMENTS
+       ------------
+       
+2.1    EQUIPMENT
+       ---------
+       PDP-8/E OR /M PROCESSOR, KE8-E OPTION, AND AN ASR 33/35
+       TELETYPE ARE REQUIRED.
+       
+2.2    STORAGE
+       -------
+       LOCATIONS 0000 THROUGH 7570 ARE USED.
+       
+2.3    PRELIMINARY PROGRAMS
+       --------------------
+       
+       ALL PROCESSOR RELATED TEST PROGRAMS MUST HAVE BEEN RUN
+       SUCCESSFULLY.  THIS PROGRAM ASSUMES THAT THE PROCESSOR AND TELE-
+       TYPE ARE OPERATING CORRECTLY, AND THAT ALL OTHER KE8-E INSTRUCTIONS
+       OTHER THAN "MUY" AND "DVI" HAVE BEEN TESTED AND OPERATE CORRECTLY.
+       
+3.     LOADING PROCEDURE
+       -----------------
+
+3.1    METHOD
+       ------
+
+       THE BINARY LOADER IS USED TO LOAD THE PROGRAM INTO ANY DESIRED
+       FIELD.
+
+4.     STARTING PROCEDURE
+       ------------------
+
+4.1    CONTROL SWITCH SETTINGS
+       -----------------------
+
+       SR0=1   HALT AFTER CURRENT ROUTINE.  PROGRAM HALTS AT THE
+               COMPLETION OF THE CURRENT TEST ROUTINE.  THE COMPLETED
+               ROUTINE NUMBER IS DISPLAYED IN THE AC.
+
+       SR1=0   SELECT MODE OF OPERATION ACCORDING TO SR10 AND SR11.
+
+       SR1=1   SELECT THE ROUTINE NUMBER WHICH IS IN SR9-11.  IF
+               WHILE RUNNING THE PROGRAM SR1 IS SET TO A "1", THE
+               PROGRAM WILL HALT WITH THE CURRENT ROUTINE NUMBER
+               DISPLAYED IN THE AC.  TO SELECT A NEW ROUTINE AT THIS
+               POINT, PLACE THE NEW DESIRED ROUTINE IN SR9-11 AND PRESS
+               CONTINUE, THE NEW ROUTINE NUMBER WILL NOW BE
+               DISPLAYED IN THE AC.
+\f
+SR2=1  LOOP ROUTINE.  CURRENT ROUTINE IS REPEATED.
+
+SR3=1  LOOP PROGRAM.  ENTIRE PROGRAM IS REPEATED.
+
+SR4=1  LOCK ON TEST.  THE TEST CURRENTLY BEING EXECUTED
+       IS REPEATED.
+
+SR5=0  PRINT ON ERROR.
+
+SR5=1  HALT ON ERROR.
+
+SR6=1  HALT AFTER PRINT.  PROGRAM HALTS AFTER ERROR
+       PRINTOUT.
+
+SR7=1  PRINT FAILURE RATE.  THE PROGRAM PRINTS THE NUMBER
+       OF FAILURES PER HUNDRED REPETITIONS OF THE SAME
+       TEST.  PROGRAM HALTS AFTER THE PRINTOUT.  SR5 MUST
+       BE SET FOR THE PRINTOUT TO OCCUR.
+
+SR8=1  PRINT SIMULATION AND/OR ENTER SCOPE LOOP.  FOR
+       ROUTINES 0 AND 1 PROGRAM PRINTS MULTIPLY SIMULATION
+       AND ENTERS MULTIPLY SCOPE LOOP.  FOR ROUTINES 2
+       AND 3 THE PROGRAM PRINTS DIVIDE SIMULATION AND
+       ENTERS THE DIVIDE SCOPE LOOP.  FOR ROUTINES 4
+       THROUGH 7 PROGRAM ENTERS THE EXERCISER SCOPE LOOP
+       FOR THE INDIVIDUAL ROUTINE.  SR5 MUST BE SET TO 0
+       FOR THIS OPTION TO BECOME ACTIVE.
+
+SR9-11 SR9     SR10    SR11
+WITH    X        0       0     EXECUTE EACH ROUTINE IN "A" AND "B" MODES.
+SR1=0   X        0       1     EXECUTE EACH ROUTINE IN "A" AND "B" MODES.
+        X        1       0     SELECT "A" MODE.
+        X        1       1     SELECT "B" MODE.
+
+SR9-11 SR9     SR10    SR11
+WITH    0        0       0     SELECT ROUTINE 0.  FIXED MULTIPLY TEST.
+SR1=1   0        0       1     SELECT ROUTINE 1.  RANDOM MULTIPLY TEST.
+        0        1       0     SELECT ROUTINE 2.  FIXED DIVIDE TEST.
+        0        1       1     SELECT ROUTINE 3.  RANDOM DIVIDE TEST.
+        1        0       0     SELECT ROUTINE 4.  MULTIPLY/DIVIDE EXERCISE TEST.
+        1        0       1     SELECT ROUTINE 5.  MULTIPLY/DIVIDE EXERCISE TEST.
+        1        1       0     SELECT ROUTINE 6.  MULTIPLY/DIVIDE EXERCISE TEST.
+        1        1       1     SELECT ROUTINE 7.  MULTIPLY/DIVIDE EXERCISE TEST.
+\f
+4.2    STARTING ADDRESS
+       ----------------
+
+       THIS PROGRAM STARTS AT LOCATION 0200.
+
+4.3    PROGRAM AND/OR OPERATOR ACTION
+       ------------------------------
+
+       WITH THE PROGRAM LOADED IN CORE PROCEED AS FOLLOWS:
+
+       A.    INSURE TELETYPE IS ON-LINE.
+
+       B.    LOAD ANY PAPER TAPE IN THE TELETYPE READER AND TURN
+             IT ON.
+             IF AN ERROR OCCURS, TURN THE TELETYPE READER OFF TO
+             DETERMINE IF THE CAUSE WAS FROM INTERRUPT INTERACTION.
+
+       C.    LOAD ADDRESS 0200.  PRESS CLEAR AND CONTINUE.
+
+       D.    PROGRAM HALTS AT LOCATION 0201.
+
+       E.    SET ANY DESIRED OPTIONS IN SR AND PRESS CONTINUE.
+             IF SR1 WAS SET THE PROGRAM WILL HALT AT LOCATION
+             4574 WITH THE SELECTED ROUTINE NUMBER IN THE AC.
+             SET SR1=0 AND SELECT THE DESIRED MODE OF OPERATION
+             IN SR10 AND 11, THEN PRESS CONTINUE.
+
+       F.    THE PROGRAM WILL HALT AT PROGRAM END HALT (LOCATION 0250)
+             AFTER THE LAST ROUTINE HAS BEEN EXECUTED, PROVIDED NO
+             LOOP OPTIONS HAVE BEEN SET.
+
+                           NOTE:
+                 FOR A NORMAL PROGRAM RUN, SET SR SWITCHES
+                 TO 0000.  PROGRAM WILL RUN FROM START TO
+                 FINISH, EXECUTING EACH ROUTINE IN "A" AND
+                 "B" MODES, PRINTING ALL ERRORS AS THEY
+                 OCCUR.
+\f
+5.     OPERATING PROCEDURE
+       -------------------
+
+5.1    PROGRAM AND/OR OPERATOR ACTION
+       ------------------------------
+
+5.1.1  NORMAL PROGRAM HALTS
+       --------------------
+
+       LOCATION 0201   START HALT.  THIS HALT OCCURS AT THE START
+                       OF THE PROGRAM TO PERMIT SETTING OF SR
+                       OPTIONS.  SET ANY DESIRED OPTIONS IN THE SR
+                       AND PRESS CONTINUE.
+
+       LOCATION 0251   PROGRAM END HALT.  THIS HALT OCCURS UPON
+                       COMPLETION OF LAST ROUTINE, IF THE LOOP PROGRAM
+                       OPTION IS NOT SET.  SET ANY DESIRED OPTIONS IN
+                       THE SR AND PRESS CONTINUE.
+
+       LOCATION 0301   ROUTINE HALT.  THIS HLT OCCURS AT THE
+                       COMPLETION OF THE CURRENT ROUTINE IF SR0 IS
+                       SET.   PRESSING CONTINUE RESUMES THE PROGRAM.
+
+       LOCATION 0320   ROUTINE SELECT HALT.  THIS HALT OCCURS IF
+                       WHILE RUNNING THE PROGRAM SR1 IS SET.  THE
+                       ROUTINE PRESENTLY BEING EXECUTED IS DISPLAYED
+                       IN THE AC.  IF A NEW ROUTINE IS TO BE SELECTED
+                       LEAVE SR1 SET AND PLACE THE NEW ROUTINE NUMBER
+                       IN SR9-11 AND PRESS CONTINUE.  IF NO NEW ROUTINE
+                       IS DESIRED SET SR1=0 AND THE DESIRED MODE OF
+                       OPERATION IN SR10 AND 11 AND PRESS CONTINUE.
+                       THE PROGRAM WILL START EXECUTION WITH ROUTINE 0.
+
+       LOCATION 4574   MODE SELECTION HALT.  THIS HALT OCCURS AS THE
+                       RESULT OF SELECTING A ROUTINE.  SET SR1=0 AND
+                       SELECT THE DESIRED MODE OF OPERATION IN SR10
+                       AND 11.  PRESS CONTINUE.
+
+6.     ERRORS
+       ------
+
+6.1    PROGRAM AND/OR OPERATION ACTION
+       --------------------------------
+
+       THE PURPOSE OF THIS PROGRAM IS TO DETECT OPERATION ERRORS
+       IN THE MULTIPLY-DIVIDE HARDWARE.  UPON DETECTION OF AN ERROR, THE
+       PROGRAM EITHER HALTS, OR GIVES AN ERROR PRINTOUT DEPENDING ON THE
+       SETTING OF SR5.
+       IN ORDER TO AID IN PINPOINTING THE CAUSE OF AN ERROR, ADD-
+       ITIONAL SR OPTIONS ARE AVAILABLE TO THE USER.
+
+       SR6, HALT AFTER PRINT OPTION.  HALTS THE PROGRAM TO PERMIT USER
+       TO EXAMINE THE LATEST ERROR AND DETERMINE IF IT IS THE ONE HE WISHES
+       TO TROUBLESHOOT.
+
+       SR7, PRINT FAILURE RATE OPTION.  INFORMS THE USER OF THE
+       FREQUENCY OF AN ERROR.  A HIGH RATE OF FAILURE ERROR SHOULD BE EASIER
+       TO TROUBLE SHOOT THAN AN INTERMITTENT ERROR.  IF THE USER WISHES
+       TO TROUBLESHOOT USING THE PRESENT SET OF SYMPTOMS, HE CAN THEN SET SR8.
+
+       SR8, PRINT SIMULATION AND ENTER SCOPE LOOP OPTION, CAUSES PRINTOUT
+       OF THE CORRECT CONTENTS OF THE LINK, AND OF THE AC AND MQ REGISTERS
+       FOR EACH COUNT OF THE STEP COUNTER.  FOLLOWING THE SIMULATION PRINTOUT
+       THE PROGRAM ENTERS A MULTIPLY OR DIVIDE SCOPE LOOP, DEPENDING ON THE
+       ROUTINE CURRENTLY IN EXECUTION.  ROUTINES 4 THROUGH 7 DO NOT GIVE A
+       SIMULATION PRINTOUT, BUT MERELY ENTER THEIR RESPECTIVE SCOPE LOOPS.
+
+       NO PRINTOUTS WILL OCCUR UNLESS SR5 IS SET TO 0.
+
+       IF SR5 IS SET TO HALT ON ERROR, AND THE USER WISHES TO
+       OBTAIN PRINTOUTS FOR THE CURRENT FAILURE HE MAY OBTAIN THEM BY
+       SETTING SR5 TO 0.  (TO PRINT POSITION).
+
+6.2    ERROR HALTS AND DESCRIPTION
+       ---------------------------
+
+       LOC 1310        MULTIPLY ERROR HALT.  THE AC DISPLAYS NUMBER
+                       OF ROUTINE WHERE FAILURE OCCURRED.  (ROUTINE
+                       0 OR 1.)  PRESS CONTINUE TO RESUME TESTING, OR
+                       SET SR5 TO 0 TO OBTAIN ERROR PRINTOUTS.
+
+       LOC 1511        DIVIDE ERROR HALT.  THE AC DISPLAYS NUMBER OF
+                       ROUTINE WHERE FAILURE OCCURRED.  (ROUTINE
+                       2 OR 3.)  PRESS CONTINUE TO RESUME TESTING, OR
+                       SET SR5 TO 0 TO OBTAIN ERROR PRINTOUTS.
+
+       LOC 4327        MULTIPLY/DIVIDE EXERCISE ERROR HALT.  THE AC
+                       DISPLAYS NUMBER OF ROUTINE WHERE FAILURE
+                       OCCURED (ROUTINES 4,5,6,OR 7).  PRESS CONTINUE
+                       TO RESUME TESTING, OR SET SR5 TO 0 TO OBTAIN
+                       ERROR PRINTOUT.
+
+       LOC 1044        UNEXPECTED INTERRUPT HALT.  A DEVICE OTHER THAN
+                       TELETYPE READER OR PRINTER HAS INTERRUPTED.  TURN
+                       OFF DEVICE.  PRESS CONTINUE.
+
+6.3    ERROR PRINTOUTS
+       ---------------
+
+6.3.1  MULTIPLICATION FAILURE ERROR PRINTOUTS
+       ---------------------------------------
+
+       MUYERR  L           C(AC)           C(MQ)           C(MB)       MODE "X"
+
+       PROB    0       000000000000    101000100001    111100000110
+    A-
+       GOOD    0       100110000010    101111000110    111100000110
+       BAD     0       100101000010    101111000110    111100000110
+
+       SCA             000000001100
+\f
+    B- ERRORS PER HUNDRED: 0100
+
+       SCCNT   L           C(AC)           C(MQ)
+
+       SC0     0       000000000000    101000100001
+       SC1     0       011110000011    101000010000
+       SC2     0       001111000001    101010001000
+       SC3     0       000111100000    011010100010
+       SC4     0       000011110000    011010100010
+    C- SC5     0       000001111000    001101010001
+       SC6     0       011110111111    000110101000
+       SC7     0       001111010000    100011010100
+       SC8     0       000111101111    110001101010
+       SC9     0       000011110111    111000110101
+       SC10    0       011111111110    111100011010
+       SC11    0       001111111111    011110001101
+
+       FNRSLT  0       100110000010    101111000110
+
+       PRINTOUTS A,B,AND C ARE SHOWN IN THE ORDER IN WHICH THEY
+       OCCUR.  PRINTOUTS B AND C DO NO OCCUR WITHOUT PRINTOUT A.
+
+       PRINTOUT A OCCURS AFTER A MULTIPLICATION FAILURE IF SR5 IS
+       OFF.  OTHERWISE, THE PROGRAM STOPS AT MUYERR HALT.  THIS
+       PRINTOUT OCCURS IN ROUTINES 0 AND 1 ONLY.
+
+       MUYERR          =MULTIPLICATION ERROR; MODE OF OPERATION
+       PROB            =ORIGINAL C(L), C(AC), C(MQ), C(MB)
+       GOOD            =CORRECT C(L), C(AC), C(MQ), C(MB) RESULTS
+       BAD             =INCORRECT C(L), C(AC), C(MQ), C(MB) RESULTS
+       SCA             =CONTENTS OF STEP COUNTER AFTER EXECUTION OF
+                        MUY INSTRUCTION.
+
+       PRINTOUT B INDICATES THE NUMBER OF ERRORS PER 100 TRIES.  SR7
+       MUST BE ON TO OBTAIN THIS PRINTOUT.
+
+       PRINTOUT C IS A STEP BY STEP DISPLAY OF WHAT THE CORRECT
+       CONTENTS OF THE LINK, AC AND MQ SHOULD BE DURING EXECUTION OF EACH
+       FAILING MULTIPLY OPERATION.  EACH LINE DISPLAYS THE CONTENTS OF THE
+       REGISTERS AT THE START OF EACH STEP COUNTER COUNT.  AN ADDITIONAL
+       LINE LABELED FNRSLT IS PRINTED AFTER SC11 TO DISPLAY THE FINAL REGISTER
+       CONTENTS AT END OF STEP COUNT 11.  SR8 MUST BE ON TO OBTAIN THIS
+       PRINTOUT.
+
+       UPON TERMINATION OF THE PRINTOUT, THE PROGRAM ENTERS A SCOPE
+       LOOP THAT CONTINUOUSLY EXECUTES THE FAILING MULTIPLY OPERATION, IN
+       ORDER TO PERMIT SCOPING OF THE REGISTERS.
+\f
+6.3.2  DIVISION FAILURE ERROR PRINTOUTS
+       --------------------------------
+
+       DIVERR  L           C(AC)           C(MQ)           C(MB)       MODE "X"
+
+       PROB    0       000000000111    000111000111    000000001000
+    A-
+       GOOD    0       000000000111    111000111000    000000001000
+       BAD     0       000000000111    111000111000    000000001000
+
+       SCA             000000001101
+
+   B-  ERRORS PER HUNDRED:  0100
+
+       SCCNT   L           C(AC)           C(MB)
+
+       SC0     0       000000000111    000111000111
+       SC1     0       000000000001    001110001110
+       SC2     0       000000001100    011100011101
+       SC3     1       111111110111    111000111011
+   C-  SC4     1       111111111110    110001110111
+       SC5     0       000000001100    100011101110
+       SC6     1       111111110111    000111011100
+       SC7     1       111111111110    001110111000
+       SC8     0       000000001100    011101110001
+       SC9     1       111111110111    111011100011
+       SC10    1       111111111110    110111000111
+       SC11    0       000000001100    101110001110
+       SC12    1       111111110111    011100011100
+       SC13    1       111111111111    111000111000
+
+       FNRST   0       000000000111    111000111000
+
+       PRINTOUTS A,B, AND C ARE SHOWN IN THE ORDER IN WHICH THEY
+       OCCUR.  PRINTOUTS B AND C DO NOT OCCUR WITHOUT PRINTOUT A.
+
+       PRINTOUT A OCCURS AFTER A DIVISION FAILURE IF SR5 IF OFF.
+       OTHERWISE, THE PROGRAM STOPS AT DIVERR HALT.  THIS PRINTOUT
+       OCCURS IN ROUTINES 2 AND 3 ONLY.
+
+       DIVERR          =DIVISION ERROR; MODE OF OPERATION
+       PROB            =ORIGINAL C(L), C(AC), C(MQ), C(MB)
+       GOOD            =CORRECT C(L), C(AC), C(MQ), C(MB) RESULTS
+       BAD             =INCORRECT C(L), C(AC), C]Q), C(MB) RESULTS
+       SCA             =CONTENTS OF STEP COUNTER AFTER EXECUTION
+                        OF DVI INSTRUCTION.
+
+       PRINTOUT B INDICATES THE NUMBER OF ERRORS PER 100 TRIES.  SR7
+       MUST BE ON TO OBTAIN THIS PRINTOUT.
+\f
+       PRINTOUT C IS A STEP BY STEP DISPLAY OF WHAT THE CORRECT
+       CONTENTS OF THE LINK, AC, AND MQ SHOULD BE DURING EXECUTION
+       OF THE FAILING DIVIDE OPERATION.  EACH LINE DISPLAYS THE
+       CONTENTS OF THE REGISTERS AT THE START OF EACH STEP COUNTER
+       COUNT.  AN ADDITIONAL LINE LABELED FNRSLT IS PRINTED AFTER
+       SC0 IN CASE OF DIVIDE OVERFLOW, OR AFTER SC13 IN CASE OF A
+       NORMAL DIVIDE OPERATION TO DISPLAY THE FINAL CONTENTS OF THE
+       REGISTERS AT END OF LAST STEP COUNT.  SR8 MUST BE ON TO
+       OBTAIN THIS PRINTOUT
+
+       UPON TERMINATION OF THE PRINTOUT, THE PROGRAM ENTERS A SCOPE
+       LOOP THAT CONTINUALLY EXECUTES THE FAILING DIVIDE OPERATION,
+       IN ORDER TO PERMIT SCOPING OF THE REGISTERS.
+
+6.3.3  MULTIPLY DIVIDE EXERCISER ERROR PRINTOUTS
+       -----------------------------------------
+
+       PROB    AXB\B=A
+
+       A=7243          B=1130
+       EXERR           L       C(AC)           C(MQ)           MODE "X"
+    A-
+       GOOD            0       000000000000    111010100011
+       BAD             1       011111000011    101110010010
+
+    B- ERRORS PER HUNDRED:  0100
+
+       PROB            AXB\BXB\A=B
+
+       A=7243          B=1130
+       EXERR           L       C(AC)           C(MQ)           MODE "X"
+    C-
+       GOOD            0       000000000000    001001011000
+       BAD             0       100011100111    000100100011
+
+    D- ERRORS PER HUNDRED:  0000
+
+       PROB            AXB\BXB\AXA\A=B
+
+       A=7243          B=1130
+       EXERR           L       C(AC)           C(MQ)           MODE "X"
+    E-
+       GOOD            0       000000000000    001001011000
+       BAD             0       001001010110    000111110011
+
+    F- ERRORS PER HUNDRED:  0100
+
+       PROB            AXB\BXB\AXA\AXA\B=A
+
+       A=7243          B=1130
+       EXERR           L       C(AC)           C(MQ)           MODE "X"
+
+    G-
+       GOOD            0       000000000000    111010100011
+       BAD             0       011010001100    101110101101
+
+    H- ERRORS PER HUNDRED:  0100
+\f
+       PRINTOUTS B,D,F, AND H DO NOT OCCUR WITHOUT THEIR PRECEDING
+       PRINTOUTS.  SR7 MUST BE ON FOR THESE PRINTOUTS TO OCCUR.  THEY
+       INDICATE THE NUMBER OF TIMES A PROBLEM FAILED PER 100 TRIES.
+
+       PRINTOUT A OCCURS DURING EXECUTION OF ROUTINE 4.
+
+       PRINTOUT C OCCURS DURING EXECUTION OF ROUTINE 5.
+
+       PRINTOUT E OCCURS DURING EXECUTION OF ROUTINE 6.
+
+       PRINTOUT G OCCURS DURING EXECUTION OF ROUTINE 7.
+
+       SR5 MUST BE OFF FOR PRINTOUTS A,C,E, OR G TO OCCUR.
+
+       PRINTOUTS A,C,E, AND G HAVE THE FOLLOWING FORMAT:
+
+               PROB    DESCRIPTION OF MULTIPLY-DIVIDE EXERCISE USED.
+               A=XXXX
+               B=XXXX  VALUES FOR A AND B USED DURING THE EXERCISE.
+
+               EXERR   MULTIPLY-DIVIDE EXERCISER ERROR AND THE MODE
+                       THAT FAILED. ("A" OR "B")
+
+               GOOD    CORRECT C(L),C(AC), AND C(MQ) RESULTS.
+
+               BAD     INCORRECT C(L),C(AC), AND C(MQ) RESULTS.
+
+7.     RESTRICTIONS
+       ------------
+
+7.1    STARTING RESTRICTIONS
+       ---------------------
+
+       ONLY THOSE ADDRESSES GIVEN IN SECTION 4.2 SHOULD BE USED.
+
+8.     MISCELLANEOUS
+       -------------
+
+8.1    EXECUTION TIME
+       --------------
+
+       THE TELETYPE BELL WILL RING AT THE END OF 7 PROGRAM PASSES
+       WHICH IS APPROXIMATELY EVERY MINUTE AND "KE8 2" WILL BE PRINTED
+       OUT APPROXIMATELY EVERY 10 MINUTES.
+\f
+8.2    OSCILLOSCOPE SETUP
+       ------------------
+
+       THE FOLLOWING OSCILLOSCOPE SETUP IS RECOMMENDED FOR VIEWING REGISTER
+       BITS FOR A MULTIPLY OR DIVIDE PROBLEM.
+
+               TIME BASE -     .5 US/DIV
+               SYNC - DRAWING M8340-0-1
+                      MODULE TYPE - M8340
+                      IC             E24
+                      PIN             6
+                      FUNCTION      SC=0L
+
+               NOTE:  SYNC ON NEGATIVE SLOPE.
+               PROBE A - SAME AS SYNC.
+               PROBE B - LINK, AC, AND MQ FLIP-FLOPS.
+
+9.     PROGRAM DESCRIPTION
+       -------------------
+
+9.1    PROGRAM ORGANIZATION
+       --------------------
+
+       THE PDP-8/E EAE (KE8-E) MULTIPLY-DIVIDE TEST IS ORGANIYED AS FOLLOWS:
+
+       A.  CONTROL ROUTINE.  THIS ROUTINE CONTROLS PROGRAM SEQUENCES BY
+           HONORING OPTIONS SET IN SR0 THROUGH SR4, AND SR9 THROUGH SR11.
+
+       B.  SUBROUTINES
+
+       C.  TEST ROUTINES, EIGHT ROUTINES.  ONE PROGRAM PASS CONSISTS
+           OF 7 PASSES THROUGH THESE ROUTINES.
+
+9.2    MAJOR SUBROUTINES
+       -----------------
+
+       THERE ARE THREE MAJOR SUBROUTINES.  EACH OF THESE SUBROUTINES
+       IS CALLED ON BY ONE OR MORE TEST ROUTINES.  THESE SUBROUTINES
+       CONTROL TESTING, ERROR DETECTION, ERROR PRINTOUTS, SIMULATION,
+       AND SCOPE LOOPS.
+
+       A.  MULTIPLY TEST SUBROUTINE.  CALLED ON BY TEST ROUTINES 0 AND 1.
+           THE CALLING ROUTINE PROVIDES THE ADDRESS OF A TABLE CONTAINING
+           MULTIPLICATION OPERANDS AND THE EXPECTED RESULTS, AND THE
+           NUMBER OF TESTS IN THE TABLE.
+
+       B.  DIVIDE TEST SUBROUTINE.  CALLED ON BY TEST ROUTINES 2 AND 3.  THE
+           CALLING ROUTINE PROVIDES THE ADDRESS OF A TABLE CONTAINING
+           DIVISION OPERANDS AND THE EXPECTED RESULTS, AND THE NUMBER
+           OF TESTS IN THE TABLE.
+
+       C.  MULTIPLY-DIVIDE EXERCISER TEST SUBROUTINE.  CALLED ON BY TEST
+           ROUTINES 4, 5, 6, AND 7.  THE CALLING ROUTINE MOVES 2
+           OPERANDS TO SYMBOLIC LOCATIONS A AND B, PROVIDES THE
+           SUBROUTINE WITH THE ADDRESS OF EXERCISE TO USE, AND THE
+           ADDRESS OF THE CORRECT RESULT.
+\f
+9.3    TEST ROUTINES
+       -------------
+
+       THE PROGRAM CONTAINS EIGHT TEST ROUTINES NUMBERED FROM 0 THROUGH 7.
+
+       TEST ROUTINE 0.  FIXED MULTIPLY TEST.  MUY INSTRUCTION IS TESTED
+       USING 55 FIXED TESTS.
+
+       TEST ROUTINE 1.  RANDOM MULTIPLY TEST.  MUY INSTRUCITON IS TESTED
+       USING 500 TESTS WHOSE OPERANDS ARE DETERMINED AT RANDOM.  THE
+       RESULTS OF THESE TESTS ARE DETERMINED THROUGH SIMULATION.
+
+       TEST ROUTINE 2.  FIXED DIVIDE TEST.  DVI INSTRUCTION IS TESTED
+       USING 40 FIXED TESTS.
+
+       TEST ROUTINE 3.  RANDOM DIVIDE TEST.  DVI INSTRUCTION IS TESTED
+       USING 333 TESTS WHOSE OPERANDS ARE DETERMINED AT RANDOM.  THE RESULTS
+       OF THESE TESTS ARE DETERMINED THROUGH SIMULATION.
+
+       TEST ROUTINE 4.  MULTIPLY/DIVIDE EXERCISE TEST.  THE ROUTINE
+       GENERATES 700 SETS OF TWO NON-ZERO RANDOM NUMBERS.  EACH SET OF
+       NUMBERS IS USED TO TEST THE ABILITY OF THE HARDWARE TO PERFORM
+       SUCCESSIVE MULTIPLY AND DIVIDE OPERATIONS.  THIS ROUTINE CHECKS
+       FOR CORRECT RESULTS USING THE PROBLEM AXB/B=A.
+
+       TEST ROUTINE 5.  MULTIPLY/DIVIDE EXERCISE TEST.  USING THE NUMBER
+       SET GENERATED BY ROUTINE 4, THIS ROUTINE CHECKS FOR CORRECT
+       RESULTS USING THE PROBLEM AXB/BXB/A=B.
+
+       TEST ROUTINE 6.  MULTIPLY/DIVIDE EXERCISE TEST.  USING THE NUMBER
+       SET GENERATED BY ROUTINE 4, THIS ROUTINE CHECKS FOR CORRECT RESULTS
+       USING THE PROBLEM AXB/BXB/AXA/A=B.
+
+       TEST ROUTINE 7.  MULTIPLY/DIVIDE EXERCISE TEST.  USING THE NUMBER
+       SET GENERATED BY ROUTINE 4, THIS ROUTINE CHECKS FOR CORRECT
+       RESULTS USING THE PROBLEM AXB/BXB/AXA/AXA/B=A.
+
+       NOTE:   IF THROUGH PROGRAM SEQUENCE MODIFICATION EITHER OF ROUTINES
+               5 THROUGH 7 IS EXECUTED PRIOR TO EXECUTION OF ROUTINE 4,
+               THE ROUTINE CURRENTLY BEING EXECUTED WILL GENERATE A NUMBER SET,
+               AND THE ROUTINE FOLLOWING WILL USE THIS NUMBER SET FOR
+               THEIR TESTS.
+
+               IN NORMAL OPERATION, ROUTINE 4 GENERATES A NUMBER SET
+               EVERY TIME IT IS EXECUTED, AND THE ROUTINES FOLLOWING
+               USE THE NUMBER SET GENERATED BY ROUTINE 4.  THE REASON
+               THIS IS TO PERMIT EASIER ISOLATION OF A FAILURE.
+
+               ROUTINE 4 PERFORMS ONE MUY, AND ONE DVI INSTRUCTION.
+               ROUTINE 5 PERFORMS THE SAME MUY AND DVI INSTRUCTION,
+               PLUS ANOTHER MUY AND DVI INSTRUCTION.  BY USING THE SAME
+               DATA, SHOULD A FAILURE OCCUR IN ROUTINE 5, THE FAILURE IS
+               THE LOCALIYED TO THE SECOND MUY OR SECOND DVI INSTRUCTION.