X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fmaindec%2Feae_8e%2Fmaindec-8e-d0mb-d.txt;fp=sw%2Fmaindec%2Feae_8e%2Fmaindec-8e-d0mb-d.txt;h=e28a7317955bb3b48d2ae1e8e3d274ada01ee2c1;hb=07ec0278333ed187ac242dedcff13c56cf1b0b91;hp=0000000000000000000000000000000000000000;hpb=7af5ad59491ddf2066641aef1e0025a337c0f247;p=pdp8.git 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 index 0000000..e28a731 --- /dev/null +++ b/sw/maindec/eae_8e/maindec-8e-d0mb-d.txt @@ -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 + +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. + +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. + +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. + +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 + + 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. + +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. + + 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 + + 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. + +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. + +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.