On Saturday, May 04, 2013 15:00:03 John Wilson wrote:
On Sat, May 04, 2013 at 02:49:18PM +0200, Sytse van
Slooten wrote:
Strangely, if I google that, it comes up with a
reference to Ersatz-11 from
1994 which appears to describe exactly the same behaviour - only then on
RL, apparently. See
ftp://minnie.tuhs.org/pub/PDP-11/Sims/Ersatz-1.1beta/Old/e11beta.txt
If I remember right, the problem was that I had transferred an 11M+ disk
using RT-11, which interpreted the first few locs of the home block as a
bad block replacement table, and scrambled the disk slightly. So that
messed up the home block, and RSX fell back on the official rule of looking
for a valid home block every 256 blocks. Or something. So my (possibly
optimistic) recollection is that the bug turned out not to be in E11
itself, but in how I copied the disk using a real PDP-11 (which is unlikely
to be what's biting you).
I've verified that the image I'm using is
still correct - I've copied what is
on the sdcard back to simh. It is bit for bit the same as what I started out
with. And simh still works perfectly from it - so, that would seem to indicate
that the disk image is not the problem.
Anyway so my guess is that RSX rejects a home block if it *either* gets a
read error from the controller, *or* finds something wrong with the data in
software (I forget whether there's a checksum, but anyway there's a
signature and a bunch of other things that could fail a range check).
Finding the code that does that and stepping through it (or at least doing
breakpoints on both SW-emulated and HW-emulated machines and seeing if they
both get to the same places) could be illuminating.
I'm sure you've got things well in hand with simh but if I can help at all
using E11 I'd be happy to. Tracing out annoying stuff like this and
catching it in the act is basically my whole life at this point! I've
added LOG /PC for the next release so pinpointing the PDP-11 code that
sends a command to a peripheral (and then dislikes the results) is stupidly
easy.
What I did so far is make simh print out all commands it starts on the rh,
and
all accesses it does to the rp registers. No surprise that that appears to be
radically different from what I see on the fpga - which is, btw, just peering
at a number of 7-segment digits showing some of the RP registers.
The next step will have to be instrumenting the RP core such that I can have
my logic analyzer capture the commands and register access to it - then we can
compare the results from e11 or simh with the fpga. Adding that kind of
instrumentation is a lot of work though - I was hoping to avoid it. But unless
I get a new insight, it's going to be the only way.
John Wilson
D Bit
Thanks for the help so far!