On 8/12/2015 12:00 PM, [email protected] wrote:
Message: 1
Date: Wed, 12 Aug 2015 09:03:41 -0400
From: Timothe Litt<[email protected]>
To:[email protected]
Subject: Re: [Simh] Needed: RH750 specification
Message-ID:<[email protected]>
Content-Type: text/plain; charset="utf-8"

For the non-"SRM lawyers":  the short(er) form of my long reply:

1) Yes, SimH needs to match the 750's behavior.
Agreed. That's why I want to know what the 750 did for real, not guess at it.

2) No, the SRM doesn't tell you how to do it.
I'll disagree here, but I don't have sufficient evidence that every system (except the 9000) did it the way I describe. I have checked all the VAX chip microcode listings, including NVAX; they all issue a read of byte length. The 780 is the same. However, I don't have microcode listings for MicroVAX I, 730, 750, 8600, or 8800.

The point is moot for memory. For BBx, which is read only, memory can't detect the kind of reference used, it doesn't matter. The write back in BBxy{I} does have to be precisely one byte, because the VAX supported byte granularity of sharing.
3) The*code*  in question violates the SRM because this instruction is
not allowed to reference I/O space.
Yes, but as you point out, it works, as did the BLBC to Qbus space in Ultrix. That too is outlawed by the SRM (only byte and word references allowed), but it worked on real hardware, and I ended up rewriting all of the unaligned memory access routines to get it to work per the hardware.

4) Exactly how the instruction is implemented when the operand IS in
memory can differ from the literal SRM text, as long as the programmer
sees results AS IF the SRM text was followed literally.  Which is hard
because the text is somewhat confused.  But memory behavior is fairly
flexible.  Attempting to apply this to I/O space gets complicated,
because I/O space has special characteristics and rules. (This is why
there are restrictions on which instructions can be used.)

What SimH does now is SRM-compliant.  It's just not useful in that the
hardware does something different.

I would prefer to say that SimH 750 is inaccurate. It's rather broad to label SimH, or even SimH VAX, as not useful.

The question of where the 750 simulator is inaccurate is easily tested on real hardware. Try

BITB #1,aligned_massbusadapterregister

If there's a trap, exception, or interrupt, then the implementation of BBx is wrong for the 750. If there's none, then the Massbus adapter doesn't validate operand lengths, just like its Unibus counterpart.

/Bob
_______________________________________________
Simh mailing list
[email protected]
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to