[comp.sys.apollo] Strange Apollo Bug

derstad@CIM-VAX.HONEYWELL.COM ("DAVE ERSTAD") (11/14/89)

Here's one I've never seen before.  We have a piece of code
which behaves differently on a DSP-160 than on other nodes
using Pascal;  SR9.7.0.4.

I suspect a hardware problem, but am wondering if anyone
has seen something like this.

We've narrowed it down to a line like

    c := 1.0

In the expanded code listing, both the working machines and
the non-working machines translate this to 
 
    MOVE.L #  1.000000    , C(DB)

However, on the 160 the actual object code is

    2B7C3F8800000004

Whereas on other machines it is

    2B7C3F8000000004

The extra bit set on the 160 means 'c' gets the value
1.06 rather than 1.00.  We've seen the same thing with
constants other than unity as well.

Any thoughts?  I've got another 160 I'm going to boot
diskless off the first this afternoon; that should 
provide some clues.  (the second 160 is at SR10 so
can't be used for a direct verification until we boot
it at 9.7).  Whether that works or not, it's still a bit
of a mystery to me that the constant is correctly in the
code listing but wrong in the object code;  you would think
a hardware error bad enough to flip a bit like that would
cause wider problems as well.

Dave Erstad
DERSTAD@cim-vax.honeywell.com
Honeywell SSEC