[Simh] FP11 revisions

Bob Supnik bob at supnik.org
Thu Mar 26 16:22:13 EDT 2015


In the course of debugging the revised FP11, I ran into an interesting 
and, as far as I can tell, hitherto undocumented incompatibility in the 
various FP11 implementations.

The J11 Programmer's Reference states, and the microcode agrees, that if 
enabled, an interrupt on undefined variable occurs prior to instruction 
execution. That is, if an undefined variable (-0) is fetched from memory 
by any floating point instruction, the rest of the execution flow is 
skipped.

The PDP11 Architecture Handbook, for what it's worth, states that if 
enabled, an interrupt on undefined variable occurs prior to instruction 
execution EXCEPT FOR TSTf, ABSf, and NEGf. I think this is the behavior 
of the FP11-B and C for the 11/45 and 11/70, in fact; it's clearly wrong 
for J11.

I was debugging using the 11/34 floating point diagnostics. There is an 
explicit test for the behavior of -0 with TSTf, but not with ABSf or 
NEGf. TSTf indeed takes a floating point IUV interrupt AFTER setting the 
floating condition codes, rather than before, like the J11.

The code has always followed the J11. I'm not prepared to conditionalize 
those three instructions, because I would need to confirm the behavior 
of the FP11-A (11/34), FP11-D (11/44), and FP11-E (11/60), as well as 
the F11 (11/23).

The revised code passes the J11 floating point diagnostic, for what it's 
worth. It passes two of the 11/34 diagnostics but fails in the third for 
the reason indicated above.

/Bob


More information about the Simh mailing list