PDP-11/45: Diagnostics X - FP11 FPU, cont.

Sat 01 October 2016 by Fritz Mueller

Okay, here's the dig in on the FP11 STST diagnostic failure. As detailed previously, I'd been seeing an incorrect FEC after executing a small test program to generate a minus-zero condition. I'd verified that the microcode sequence was per expectation, and that the correct FEC was being stored and retrieved from AC7[1:0] in microstates TRP.50 and the start of TRP.60.

The end of TCP.60 and all of state TRP.70 are used to move the FEC and FEA from AC7[1:0] to AC7[3:2] via QR and BR, and something was going awry here. Since the nominal FEC is octal 14, I decided just to trace the four least significant bits. Consulting the engineering drawings, the nominal flow of these bits through logic on the FRL during these states would be:

FunctionPackageDirPin:LevelMicrostate
ACi<03:00>E85out11:H9:H7:L5:LTRP.60 (2)
QR<06:03>E74in3:H4:H5:L6:L
out15:H14:H13:L12:LTRP.70 (3)
BR<07:04>E75in13:H12:H4:L
out15:H10:H2:L
BR<03:00>E87in5:L
out7:L
FALU<07:04>E77in20:H22:H1:L
out11:L10:L9:H
FALU<03:00>E89in18:L
out13:H
ACMX<03:02>E83in13:L3:L
out9:L7:L
ACMX<01:00>E84in13:H3:H
out9:H7:H
ACi<03:00>E85in12:L10:L6:H4:H

Note that the bit values are inverted here by the FALU, since the reigster file used on the FP11 has inverting outputs.

Threw the FRL out on extenders and starting verifying the chart above with a logic probe. Surprisingly, everything probed out correctly (?!) Reset and ran the test program and verified that the bug had gone away. Hmmm... My only guess here is that there was some dust or a whisker shorting some of the pins that I dislodged with the logic probe, or perhaps an oxidized board conection. In any case, it seems to work robustly now. Of the FP11 diagnostics, the following now pass:

DiagnosticDescriptionStatus
CFPAB0.BICLDFPS,STFPS,SETI,SETL,SETF,SETD,CFCCpass
CFPBB0.BICSTSTpass
CFPCD0.BICLDF,LDD,STF,STDpass
CFPHB0.BICCLR,TST,ABS,NEGpass
CFPKB0.BICLDEXPpass

CFPDB0.BIC, which tests floating point adds/subtracts, is failing. All for now -- on to debugging add/subtract next time...