maindec: Added the usual collection, with intact symlinks
[pdp8.git] / sw / maindec / eae_8e / maindec-8e-d0mb-d.txt
1 DISCLAIMER
2
3 This document file was created by scanning the
4 original document and then editing the scanned
5 text. As much as possible, the original text
6 format was restored. The original page breaks
7 have been removed. The original spelling and
8 grammar has been preserved. The assembler
9 listing of the original document is not
10 included in this document.
11
12 B. Baehr (bb@balloo.han.de), Feb. 22, 1999
13
14
15
16
17
18
19
20
21
22
23 PRODUCT CODE: MAINDEC-8E-D0MB-D
24
25 PRODUCT TEST: KE8-E (EAE) INSTRUCTION TEST 2
26 MULTIPLY AND DIVIDE
27
28 DATE CREATED: FEBRUARY 9, 1972
29
30 MAINTAINER: DIAGNOSTIC GROUP
31
32 AUTHOR: ED FORTMILLER
33
34
35 COPYRIGHT © 1972
36 DIGITAL EQUIPMENT CORPORATION
37 \f
38 1. ABSTRACT
39 --------
40
41 THE PDP-8/E EAE (KE8-E) MULTIPLY-DIVIDE TEST, TESTS AND EXERCISES
42 THE MULTIPLY AND DIVIDE HARDWARE OF THE KE8-E OPTION. FIXED
43 NUMBERS WITH PREDETERMINED SOLUTIONS, AND RANDOM NUMBERS
44 WITH SIMULATED SOLUTIONS ARE USED. THE ABILITY TO OPERATE
45 WITH THE INTERRUPT ENABLED IS ALSO TESTED.
46
47 2. REQUIREMENTS
48 ------------
49
50 2.1 EQUIPMENT
51 ---------
52 PDP-8/E OR /M PROCESSOR, KE8-E OPTION, AND AN ASR 33/35
53 TELETYPE ARE REQUIRED.
54
55 2.2 STORAGE
56 -------
57 LOCATIONS 0000 THROUGH 7570 ARE USED.
58
59 2.3 PRELIMINARY PROGRAMS
60 --------------------
61
62 ALL PROCESSOR RELATED TEST PROGRAMS MUST HAVE BEEN RUN
63 SUCCESSFULLY. THIS PROGRAM ASSUMES THAT THE PROCESSOR AND TELE-
64 TYPE ARE OPERATING CORRECTLY, AND THAT ALL OTHER KE8-E INSTRUCTIONS
65 OTHER THAN "MUY" AND "DVI" HAVE BEEN TESTED AND OPERATE CORRECTLY.
66
67 3. LOADING PROCEDURE
68 -----------------
69
70 3.1 METHOD
71 ------
72
73 THE BINARY LOADER IS USED TO LOAD THE PROGRAM INTO ANY DESIRED
74 FIELD.
75
76 4. STARTING PROCEDURE
77 ------------------
78
79 4.1 CONTROL SWITCH SETTINGS
80 -----------------------
81
82 SR0=1 HALT AFTER CURRENT ROUTINE. PROGRAM HALTS AT THE
83 COMPLETION OF THE CURRENT TEST ROUTINE. THE COMPLETED
84 ROUTINE NUMBER IS DISPLAYED IN THE AC.
85
86 SR1=0 SELECT MODE OF OPERATION ACCORDING TO SR10 AND SR11.
87
88 SR1=1 SELECT THE ROUTINE NUMBER WHICH IS IN SR9-11. IF
89 WHILE RUNNING THE PROGRAM SR1 IS SET TO A "1", THE
90 PROGRAM WILL HALT WITH THE CURRENT ROUTINE NUMBER
91 DISPLAYED IN THE AC. TO SELECT A NEW ROUTINE AT THIS
92 POINT, PLACE THE NEW DESIRED ROUTINE IN SR9-11 AND PRESS
93 CONTINUE, THE NEW ROUTINE NUMBER WILL NOW BE
94 DISPLAYED IN THE AC.
95 \f
96 SR2=1 LOOP ROUTINE. CURRENT ROUTINE IS REPEATED.
97
98 SR3=1 LOOP PROGRAM. ENTIRE PROGRAM IS REPEATED.
99
100 SR4=1 LOCK ON TEST. THE TEST CURRENTLY BEING EXECUTED
101 IS REPEATED.
102
103 SR5=0 PRINT ON ERROR.
104
105 SR5=1 HALT ON ERROR.
106
107 SR6=1 HALT AFTER PRINT. PROGRAM HALTS AFTER ERROR
108 PRINTOUT.
109
110 SR7=1 PRINT FAILURE RATE. THE PROGRAM PRINTS THE NUMBER
111 OF FAILURES PER HUNDRED REPETITIONS OF THE SAME
112 TEST. PROGRAM HALTS AFTER THE PRINTOUT. SR5 MUST
113 BE SET FOR THE PRINTOUT TO OCCUR.
114
115 SR8=1 PRINT SIMULATION AND/OR ENTER SCOPE LOOP. FOR
116 ROUTINES 0 AND 1 PROGRAM PRINTS MULTIPLY SIMULATION
117 AND ENTERS MULTIPLY SCOPE LOOP. FOR ROUTINES 2
118 AND 3 THE PROGRAM PRINTS DIVIDE SIMULATION AND
119 ENTERS THE DIVIDE SCOPE LOOP. FOR ROUTINES 4
120 THROUGH 7 PROGRAM ENTERS THE EXERCISER SCOPE LOOP
121 FOR THE INDIVIDUAL ROUTINE. SR5 MUST BE SET TO 0
122 FOR THIS OPTION TO BECOME ACTIVE.
123
124 SR9-11 SR9 SR10 SR11
125 WITH X 0 0 EXECUTE EACH ROUTINE IN "A" AND "B" MODES.
126 SR1=0 X 0 1 EXECUTE EACH ROUTINE IN "A" AND "B" MODES.
127 X 1 0 SELECT "A" MODE.
128 X 1 1 SELECT "B" MODE.
129
130 SR9-11 SR9 SR10 SR11
131 WITH 0 0 0 SELECT ROUTINE 0. FIXED MULTIPLY TEST.
132 SR1=1 0 0 1 SELECT ROUTINE 1. RANDOM MULTIPLY TEST.
133 0 1 0 SELECT ROUTINE 2. FIXED DIVIDE TEST.
134 0 1 1 SELECT ROUTINE 3. RANDOM DIVIDE TEST.
135 1 0 0 SELECT ROUTINE 4. MULTIPLY/DIVIDE EXERCISE TEST.
136 1 0 1 SELECT ROUTINE 5. MULTIPLY/DIVIDE EXERCISE TEST.
137 1 1 0 SELECT ROUTINE 6. MULTIPLY/DIVIDE EXERCISE TEST.
138 1 1 1 SELECT ROUTINE 7. MULTIPLY/DIVIDE EXERCISE TEST.
139 \f
140 4.2 STARTING ADDRESS
141 ----------------
142
143 THIS PROGRAM STARTS AT LOCATION 0200.
144
145 4.3 PROGRAM AND/OR OPERATOR ACTION
146 ------------------------------
147
148 WITH THE PROGRAM LOADED IN CORE PROCEED AS FOLLOWS:
149
150 A. INSURE TELETYPE IS ON-LINE.
151
152 B. LOAD ANY PAPER TAPE IN THE TELETYPE READER AND TURN
153 IT ON.
154 IF AN ERROR OCCURS, TURN THE TELETYPE READER OFF TO
155 DETERMINE IF THE CAUSE WAS FROM INTERRUPT INTERACTION.
156
157 C. LOAD ADDRESS 0200. PRESS CLEAR AND CONTINUE.
158
159 D. PROGRAM HALTS AT LOCATION 0201.
160
161 E. SET ANY DESIRED OPTIONS IN SR AND PRESS CONTINUE.
162 IF SR1 WAS SET THE PROGRAM WILL HALT AT LOCATION
163 4574 WITH THE SELECTED ROUTINE NUMBER IN THE AC.
164 SET SR1=0 AND SELECT THE DESIRED MODE OF OPERATION
165 IN SR10 AND 11, THEN PRESS CONTINUE.
166
167 F. THE PROGRAM WILL HALT AT PROGRAM END HALT (LOCATION 0250)
168 AFTER THE LAST ROUTINE HAS BEEN EXECUTED, PROVIDED NO
169 LOOP OPTIONS HAVE BEEN SET.
170
171 NOTE:
172 FOR A NORMAL PROGRAM RUN, SET SR SWITCHES
173 TO 0000. PROGRAM WILL RUN FROM START TO
174 FINISH, EXECUTING EACH ROUTINE IN "A" AND
175 "B" MODES, PRINTING ALL ERRORS AS THEY
176 OCCUR.
177 \f
178 5. OPERATING PROCEDURE
179 -------------------
180
181 5.1 PROGRAM AND/OR OPERATOR ACTION
182 ------------------------------
183
184 5.1.1 NORMAL PROGRAM HALTS
185 --------------------
186
187 LOCATION 0201 START HALT. THIS HALT OCCURS AT THE START
188 OF THE PROGRAM TO PERMIT SETTING OF SR
189 OPTIONS. SET ANY DESIRED OPTIONS IN THE SR
190 AND PRESS CONTINUE.
191
192 LOCATION 0251 PROGRAM END HALT. THIS HALT OCCURS UPON
193 COMPLETION OF LAST ROUTINE, IF THE LOOP PROGRAM
194 OPTION IS NOT SET. SET ANY DESIRED OPTIONS IN
195 THE SR AND PRESS CONTINUE.
196
197 LOCATION 0301 ROUTINE HALT. THIS HLT OCCURS AT THE
198 COMPLETION OF THE CURRENT ROUTINE IF SR0 IS
199 SET. PRESSING CONTINUE RESUMES THE PROGRAM.
200
201 LOCATION 0320 ROUTINE SELECT HALT. THIS HALT OCCURS IF
202 WHILE RUNNING THE PROGRAM SR1 IS SET. THE
203 ROUTINE PRESENTLY BEING EXECUTED IS DISPLAYED
204 IN THE AC. IF A NEW ROUTINE IS TO BE SELECTED
205 LEAVE SR1 SET AND PLACE THE NEW ROUTINE NUMBER
206 IN SR9-11 AND PRESS CONTINUE. IF NO NEW ROUTINE
207 IS DESIRED SET SR1=0 AND THE DESIRED MODE OF
208 OPERATION IN SR10 AND 11 AND PRESS CONTINUE.
209 THE PROGRAM WILL START EXECUTION WITH ROUTINE 0.
210
211 LOCATION 4574 MODE SELECTION HALT. THIS HALT OCCURS AS THE
212 RESULT OF SELECTING A ROUTINE. SET SR1=0 AND
213 SELECT THE DESIRED MODE OF OPERATION IN SR10
214 AND 11. PRESS CONTINUE.
215
216 6. ERRORS
217 ------
218
219 6.1 PROGRAM AND/OR OPERATION ACTION
220 --------------------------------
221
222 THE PURPOSE OF THIS PROGRAM IS TO DETECT OPERATION ERRORS
223 IN THE MULTIPLY-DIVIDE HARDWARE. UPON DETECTION OF AN ERROR, THE
224 PROGRAM EITHER HALTS, OR GIVES AN ERROR PRINTOUT DEPENDING ON THE
225 SETTING OF SR5.
226 IN ORDER TO AID IN PINPOINTING THE CAUSE OF AN ERROR, ADD-
227 ITIONAL SR OPTIONS ARE AVAILABLE TO THE USER.
228
229 SR6, HALT AFTER PRINT OPTION. HALTS THE PROGRAM TO PERMIT USER
230 TO EXAMINE THE LATEST ERROR AND DETERMINE IF IT IS THE ONE HE WISHES
231 TO TROUBLESHOOT.
232
233 SR7, PRINT FAILURE RATE OPTION. INFORMS THE USER OF THE
234 FREQUENCY OF AN ERROR. A HIGH RATE OF FAILURE ERROR SHOULD BE EASIER
235 TO TROUBLE SHOOT THAN AN INTERMITTENT ERROR. IF THE USER WISHES
236 TO TROUBLESHOOT USING THE PRESENT SET OF SYMPTOMS, HE CAN THEN SET SR8.
237
238 SR8, PRINT SIMULATION AND ENTER SCOPE LOOP OPTION, CAUSES PRINTOUT
239 OF THE CORRECT CONTENTS OF THE LINK, AND OF THE AC AND MQ REGISTERS
240 FOR EACH COUNT OF THE STEP COUNTER. FOLLOWING THE SIMULATION PRINTOUT
241 THE PROGRAM ENTERS A MULTIPLY OR DIVIDE SCOPE LOOP, DEPENDING ON THE
242 ROUTINE CURRENTLY IN EXECUTION. ROUTINES 4 THROUGH 7 DO NOT GIVE A
243 SIMULATION PRINTOUT, BUT MERELY ENTER THEIR RESPECTIVE SCOPE LOOPS.
244
245 NO PRINTOUTS WILL OCCUR UNLESS SR5 IS SET TO 0.
246
247 IF SR5 IS SET TO HALT ON ERROR, AND THE USER WISHES TO
248 OBTAIN PRINTOUTS FOR THE CURRENT FAILURE HE MAY OBTAIN THEM BY
249 SETTING SR5 TO 0. (TO PRINT POSITION).
250
251 6.2 ERROR HALTS AND DESCRIPTION
252 ---------------------------
253
254 LOC 1310 MULTIPLY ERROR HALT. THE AC DISPLAYS NUMBER
255 OF ROUTINE WHERE FAILURE OCCURRED. (ROUTINE
256 0 OR 1.) PRESS CONTINUE TO RESUME TESTING, OR
257 SET SR5 TO 0 TO OBTAIN ERROR PRINTOUTS.
258
259 LOC 1511 DIVIDE ERROR HALT. THE AC DISPLAYS NUMBER OF
260 ROUTINE WHERE FAILURE OCCURRED. (ROUTINE
261 2 OR 3.) PRESS CONTINUE TO RESUME TESTING, OR
262 SET SR5 TO 0 TO OBTAIN ERROR PRINTOUTS.
263
264 LOC 4327 MULTIPLY/DIVIDE EXERCISE ERROR HALT. THE AC
265 DISPLAYS NUMBER OF ROUTINE WHERE FAILURE
266 OCCURED (ROUTINES 4,5,6,OR 7). PRESS CONTINUE
267 TO RESUME TESTING, OR SET SR5 TO 0 TO OBTAIN
268 ERROR PRINTOUT.
269
270 LOC 1044 UNEXPECTED INTERRUPT HALT. A DEVICE OTHER THAN
271 TELETYPE READER OR PRINTER HAS INTERRUPTED. TURN
272 OFF DEVICE. PRESS CONTINUE.
273
274 6.3 ERROR PRINTOUTS
275 ---------------
276
277 6.3.1 MULTIPLICATION FAILURE ERROR PRINTOUTS
278 ---------------------------------------
279
280 MUYERR L C(AC) C(MQ) C(MB) MODE "X"
281
282 PROB 0 000000000000 101000100001 111100000110
283 A-
284 GOOD 0 100110000010 101111000110 111100000110
285 BAD 0 100101000010 101111000110 111100000110
286
287 SCA 000000001100
288 \f
289 B- ERRORS PER HUNDRED: 0100
290
291 SCCNT L C(AC) C(MQ)
292
293 SC0 0 000000000000 101000100001
294 SC1 0 011110000011 101000010000
295 SC2 0 001111000001 101010001000
296 SC3 0 000111100000 011010100010
297 SC4 0 000011110000 011010100010
298 C- SC5 0 000001111000 001101010001
299 SC6 0 011110111111 000110101000
300 SC7 0 001111010000 100011010100
301 SC8 0 000111101111 110001101010
302 SC9 0 000011110111 111000110101
303 SC10 0 011111111110 111100011010
304 SC11 0 001111111111 011110001101
305
306 FNRSLT 0 100110000010 101111000110
307
308 PRINTOUTS A,B,AND C ARE SHOWN IN THE ORDER IN WHICH THEY
309 OCCUR. PRINTOUTS B AND C DO NO OCCUR WITHOUT PRINTOUT A.
310
311 PRINTOUT A OCCURS AFTER A MULTIPLICATION FAILURE IF SR5 IS
312 OFF. OTHERWISE, THE PROGRAM STOPS AT MUYERR HALT. THIS
313 PRINTOUT OCCURS IN ROUTINES 0 AND 1 ONLY.
314
315 MUYERR =MULTIPLICATION ERROR; MODE OF OPERATION
316 PROB =ORIGINAL C(L), C(AC), C(MQ), C(MB)
317 GOOD =CORRECT C(L), C(AC), C(MQ), C(MB) RESULTS
318 BAD =INCORRECT C(L), C(AC), C(MQ), C(MB) RESULTS
319 SCA =CONTENTS OF STEP COUNTER AFTER EXECUTION OF
320 MUY INSTRUCTION.
321
322 PRINTOUT B INDICATES THE NUMBER OF ERRORS PER 100 TRIES. SR7
323 MUST BE ON TO OBTAIN THIS PRINTOUT.
324
325 PRINTOUT C IS A STEP BY STEP DISPLAY OF WHAT THE CORRECT
326 CONTENTS OF THE LINK, AC AND MQ SHOULD BE DURING EXECUTION OF EACH
327 FAILING MULTIPLY OPERATION. EACH LINE DISPLAYS THE CONTENTS OF THE
328 REGISTERS AT THE START OF EACH STEP COUNTER COUNT. AN ADDITIONAL
329 LINE LABELED FNRSLT IS PRINTED AFTER SC11 TO DISPLAY THE FINAL REGISTER
330 CONTENTS AT END OF STEP COUNT 11. SR8 MUST BE ON TO OBTAIN THIS
331 PRINTOUT.
332
333 UPON TERMINATION OF THE PRINTOUT, THE PROGRAM ENTERS A SCOPE
334 LOOP THAT CONTINUOUSLY EXECUTES THE FAILING MULTIPLY OPERATION, IN
335 ORDER TO PERMIT SCOPING OF THE REGISTERS.
336 \f
337 6.3.2 DIVISION FAILURE ERROR PRINTOUTS
338 --------------------------------
339
340 DIVERR L C(AC) C(MQ) C(MB) MODE "X"
341
342 PROB 0 000000000111 000111000111 000000001000
343 A-
344 GOOD 0 000000000111 111000111000 000000001000
345 BAD 0 000000000111 111000111000 000000001000
346
347 SCA 000000001101
348
349 B- ERRORS PER HUNDRED: 0100
350
351 SCCNT L C(AC) C(MB)
352
353 SC0 0 000000000111 000111000111
354 SC1 0 000000000001 001110001110
355 SC2 0 000000001100 011100011101
356 SC3 1 111111110111 111000111011
357 C- SC4 1 111111111110 110001110111
358 SC5 0 000000001100 100011101110
359 SC6 1 111111110111 000111011100
360 SC7 1 111111111110 001110111000
361 SC8 0 000000001100 011101110001
362 SC9 1 111111110111 111011100011
363 SC10 1 111111111110 110111000111
364 SC11 0 000000001100 101110001110
365 SC12 1 111111110111 011100011100
366 SC13 1 111111111111 111000111000
367
368 FNRST 0 000000000111 111000111000
369
370 PRINTOUTS A,B, AND C ARE SHOWN IN THE ORDER IN WHICH THEY
371 OCCUR. PRINTOUTS B AND C DO NOT OCCUR WITHOUT PRINTOUT A.
372
373 PRINTOUT A OCCURS AFTER A DIVISION FAILURE IF SR5 IF OFF.
374 OTHERWISE, THE PROGRAM STOPS AT DIVERR HALT. THIS PRINTOUT
375 OCCURS IN ROUTINES 2 AND 3 ONLY.
376
377 DIVERR =DIVISION ERROR; MODE OF OPERATION
378 PROB =ORIGINAL C(L), C(AC), C(MQ), C(MB)
379 GOOD =CORRECT C(L), C(AC), C(MQ), C(MB) RESULTS
380 BAD =INCORRECT C(L), C(AC), C]Q), C(MB) RESULTS
381 SCA =CONTENTS OF STEP COUNTER AFTER EXECUTION
382 OF DVI INSTRUCTION.
383
384 PRINTOUT B INDICATES THE NUMBER OF ERRORS PER 100 TRIES. SR7
385 MUST BE ON TO OBTAIN THIS PRINTOUT.
386 \f
387 PRINTOUT C IS A STEP BY STEP DISPLAY OF WHAT THE CORRECT
388 CONTENTS OF THE LINK, AC, AND MQ SHOULD BE DURING EXECUTION
389 OF THE FAILING DIVIDE OPERATION. EACH LINE DISPLAYS THE
390 CONTENTS OF THE REGISTERS AT THE START OF EACH STEP COUNTER
391 COUNT. AN ADDITIONAL LINE LABELED FNRSLT IS PRINTED AFTER
392 SC0 IN CASE OF DIVIDE OVERFLOW, OR AFTER SC13 IN CASE OF A
393 NORMAL DIVIDE OPERATION TO DISPLAY THE FINAL CONTENTS OF THE
394 REGISTERS AT END OF LAST STEP COUNT. SR8 MUST BE ON TO
395 OBTAIN THIS PRINTOUT
396
397 UPON TERMINATION OF THE PRINTOUT, THE PROGRAM ENTERS A SCOPE
398 LOOP THAT CONTINUALLY EXECUTES THE FAILING DIVIDE OPERATION,
399 IN ORDER TO PERMIT SCOPING OF THE REGISTERS.
400
401 6.3.3 MULTIPLY DIVIDE EXERCISER ERROR PRINTOUTS
402 -----------------------------------------
403
404 PROB AXB\B=A
405
406 A=7243 B=1130
407 EXERR L C(AC) C(MQ) MODE "X"
408 A-
409 GOOD 0 000000000000 111010100011
410 BAD 1 011111000011 101110010010
411
412 B- ERRORS PER HUNDRED: 0100
413
414 PROB AXB\BXB\A=B
415
416 A=7243 B=1130
417 EXERR L C(AC) C(MQ) MODE "X"
418 C-
419 GOOD 0 000000000000 001001011000
420 BAD 0 100011100111 000100100011
421
422 D- ERRORS PER HUNDRED: 0000
423
424 PROB AXB\BXB\AXA\A=B
425
426 A=7243 B=1130
427 EXERR L C(AC) C(MQ) MODE "X"
428 E-
429 GOOD 0 000000000000 001001011000
430 BAD 0 001001010110 000111110011
431
432 F- ERRORS PER HUNDRED: 0100
433
434 PROB AXB\BXB\AXA\AXA\B=A
435
436 A=7243 B=1130
437 EXERR L C(AC) C(MQ) MODE "X"
438
439 G-
440 GOOD 0 000000000000 111010100011
441 BAD 0 011010001100 101110101101
442
443 H- ERRORS PER HUNDRED: 0100
444 \f
445 PRINTOUTS B,D,F, AND H DO NOT OCCUR WITHOUT THEIR PRECEDING
446 PRINTOUTS. SR7 MUST BE ON FOR THESE PRINTOUTS TO OCCUR. THEY
447 INDICATE THE NUMBER OF TIMES A PROBLEM FAILED PER 100 TRIES.
448
449 PRINTOUT A OCCURS DURING EXECUTION OF ROUTINE 4.
450
451 PRINTOUT C OCCURS DURING EXECUTION OF ROUTINE 5.
452
453 PRINTOUT E OCCURS DURING EXECUTION OF ROUTINE 6.
454
455 PRINTOUT G OCCURS DURING EXECUTION OF ROUTINE 7.
456
457 SR5 MUST BE OFF FOR PRINTOUTS A,C,E, OR G TO OCCUR.
458
459 PRINTOUTS A,C,E, AND G HAVE THE FOLLOWING FORMAT:
460
461 PROB DESCRIPTION OF MULTIPLY-DIVIDE EXERCISE USED.
462 A=XXXX
463 B=XXXX VALUES FOR A AND B USED DURING THE EXERCISE.
464
465 EXERR MULTIPLY-DIVIDE EXERCISER ERROR AND THE MODE
466 THAT FAILED. ("A" OR "B")
467
468 GOOD CORRECT C(L),C(AC), AND C(MQ) RESULTS.
469
470 BAD INCORRECT C(L),C(AC), AND C(MQ) RESULTS.
471
472 7. RESTRICTIONS
473 ------------
474
475 7.1 STARTING RESTRICTIONS
476 ---------------------
477
478 ONLY THOSE ADDRESSES GIVEN IN SECTION 4.2 SHOULD BE USED.
479
480 8. MISCELLANEOUS
481 -------------
482
483 8.1 EXECUTION TIME
484 --------------
485
486 THE TELETYPE BELL WILL RING AT THE END OF 7 PROGRAM PASSES
487 WHICH IS APPROXIMATELY EVERY MINUTE AND "KE8 2" WILL BE PRINTED
488 OUT APPROXIMATELY EVERY 10 MINUTES.
489 \f
490 8.2 OSCILLOSCOPE SETUP
491 ------------------
492
493 THE FOLLOWING OSCILLOSCOPE SETUP IS RECOMMENDED FOR VIEWING REGISTER
494 BITS FOR A MULTIPLY OR DIVIDE PROBLEM.
495
496 TIME BASE - .5 US/DIV
497 SYNC - DRAWING M8340-0-1
498 MODULE TYPE - M8340
499 IC E24
500 PIN 6
501 FUNCTION SC=0L
502
503 NOTE: SYNC ON NEGATIVE SLOPE.
504 PROBE A - SAME AS SYNC.
505 PROBE B - LINK, AC, AND MQ FLIP-FLOPS.
506
507 9. PROGRAM DESCRIPTION
508 -------------------
509
510 9.1 PROGRAM ORGANIZATION
511 --------------------
512
513 THE PDP-8/E EAE (KE8-E) MULTIPLY-DIVIDE TEST IS ORGANIYED AS FOLLOWS:
514
515 A. CONTROL ROUTINE. THIS ROUTINE CONTROLS PROGRAM SEQUENCES BY
516 HONORING OPTIONS SET IN SR0 THROUGH SR4, AND SR9 THROUGH SR11.
517
518 B. SUBROUTINES
519
520 C. TEST ROUTINES, EIGHT ROUTINES. ONE PROGRAM PASS CONSISTS
521 OF 7 PASSES THROUGH THESE ROUTINES.
522
523 9.2 MAJOR SUBROUTINES
524 -----------------
525
526 THERE ARE THREE MAJOR SUBROUTINES. EACH OF THESE SUBROUTINES
527 IS CALLED ON BY ONE OR MORE TEST ROUTINES. THESE SUBROUTINES
528 CONTROL TESTING, ERROR DETECTION, ERROR PRINTOUTS, SIMULATION,
529 AND SCOPE LOOPS.
530
531 A. MULTIPLY TEST SUBROUTINE. CALLED ON BY TEST ROUTINES 0 AND 1.
532 THE CALLING ROUTINE PROVIDES THE ADDRESS OF A TABLE CONTAINING
533 MULTIPLICATION OPERANDS AND THE EXPECTED RESULTS, AND THE
534 NUMBER OF TESTS IN THE TABLE.
535
536 B. DIVIDE TEST SUBROUTINE. CALLED ON BY TEST ROUTINES 2 AND 3. THE
537 CALLING ROUTINE PROVIDES THE ADDRESS OF A TABLE CONTAINING
538 DIVISION OPERANDS AND THE EXPECTED RESULTS, AND THE NUMBER
539 OF TESTS IN THE TABLE.
540
541 C. MULTIPLY-DIVIDE EXERCISER TEST SUBROUTINE. CALLED ON BY TEST
542 ROUTINES 4, 5, 6, AND 7. THE CALLING ROUTINE MOVES 2
543 OPERANDS TO SYMBOLIC LOCATIONS A AND B, PROVIDES THE
544 SUBROUTINE WITH THE ADDRESS OF EXERCISE TO USE, AND THE
545 ADDRESS OF THE CORRECT RESULT.
546 \f
547 9.3 TEST ROUTINES
548 -------------
549
550 THE PROGRAM CONTAINS EIGHT TEST ROUTINES NUMBERED FROM 0 THROUGH 7.
551
552 TEST ROUTINE 0. FIXED MULTIPLY TEST. MUY INSTRUCTION IS TESTED
553 USING 55 FIXED TESTS.
554
555 TEST ROUTINE 1. RANDOM MULTIPLY TEST. MUY INSTRUCITON IS TESTED
556 USING 500 TESTS WHOSE OPERANDS ARE DETERMINED AT RANDOM. THE
557 RESULTS OF THESE TESTS ARE DETERMINED THROUGH SIMULATION.
558
559 TEST ROUTINE 2. FIXED DIVIDE TEST. DVI INSTRUCTION IS TESTED
560 USING 40 FIXED TESTS.
561
562 TEST ROUTINE 3. RANDOM DIVIDE TEST. DVI INSTRUCTION IS TESTED
563 USING 333 TESTS WHOSE OPERANDS ARE DETERMINED AT RANDOM. THE RESULTS
564 OF THESE TESTS ARE DETERMINED THROUGH SIMULATION.
565
566 TEST ROUTINE 4. MULTIPLY/DIVIDE EXERCISE TEST. THE ROUTINE
567 GENERATES 700 SETS OF TWO NON-ZERO RANDOM NUMBERS. EACH SET OF
568 NUMBERS IS USED TO TEST THE ABILITY OF THE HARDWARE TO PERFORM
569 SUCCESSIVE MULTIPLY AND DIVIDE OPERATIONS. THIS ROUTINE CHECKS
570 FOR CORRECT RESULTS USING THE PROBLEM AXB/B=A.
571
572 TEST ROUTINE 5. MULTIPLY/DIVIDE EXERCISE TEST. USING THE NUMBER
573 SET GENERATED BY ROUTINE 4, THIS ROUTINE CHECKS FOR CORRECT
574 RESULTS USING THE PROBLEM AXB/BXB/A=B.
575
576 TEST ROUTINE 6. MULTIPLY/DIVIDE EXERCISE TEST. USING THE NUMBER
577 SET GENERATED BY ROUTINE 4, THIS ROUTINE CHECKS FOR CORRECT RESULTS
578 USING THE PROBLEM AXB/BXB/AXA/A=B.
579
580 TEST ROUTINE 7. MULTIPLY/DIVIDE EXERCISE TEST. USING THE NUMBER
581 SET GENERATED BY ROUTINE 4, THIS ROUTINE CHECKS FOR CORRECT
582 RESULTS USING THE PROBLEM AXB/BXB/AXA/AXA/B=A.
583
584 NOTE: IF THROUGH PROGRAM SEQUENCE MODIFICATION EITHER OF ROUTINES
585 5 THROUGH 7 IS EXECUTED PRIOR TO EXECUTION OF ROUTINE 4,
586 THE ROUTINE CURRENTLY BEING EXECUTED WILL GENERATE A NUMBER SET,
587 AND THE ROUTINE FOLLOWING WILL USE THIS NUMBER SET FOR
588 THEIR TESTS.
589
590 IN NORMAL OPERATION, ROUTINE 4 GENERATES A NUMBER SET
591 EVERY TIME IT IS EXECUTED, AND THE ROUTINES FOLLOWING
592 USE THE NUMBER SET GENERATED BY ROUTINE 4. THE REASON
593 THIS IS TO PERMIT EASIER ISOLATION OF A FAILURE.
594
595 ROUTINE 4 PERFORMS ONE MUY, AND ONE DVI INSTRUCTION.
596 ROUTINE 5 PERFORMS THE SAME MUY AND DVI INSTRUCTION,
597 PLUS ANOTHER MUY AND DVI INSTRUCTION. BY USING THE SAME
598 DATA, SHOULD A FAILURE OCCUR IN ROUTINE 5, THE FAILURE IS
599 THE LOCALIYED TO THE SECOND MUY OR SECOND DVI INSTRUCTION.