--- /dev/null
+ 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.