[Simh] BBS/C behavior [was Re: Needed: RH750 specification]

Bob Supnik bob at supnik.org
Wed Aug 12 17:25:58 EDT 2015


On 8/12/2015 12:00 PM, simh-request at trailing-edge.com wrote:
> Message: 1
> Date: Wed, 12 Aug 2015 09:03:41 -0400
> From: Timothe Litt<litt at ieee.org>
> To:simh at trailing-edge.com
> Subject: Re: [Simh] Needed: RH750 specification
> Message-ID:<55CB442D.5010200 at ieee.org>
> 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


More information about the Simh mailing list