On 2015-03-11 00:11, Ethan Dicks wrote:
On Tue, Mar 10, 2015 at 7:06 PM, Johnny Billquist
<bqt at update.uu.se> wrote:
> Which
one of these, if any, could be used in an 11/70?
And if you absolutely want to use
1M cards in an 11/70, ping me, and I'll
walk you through the howto. (Update have done this in the past. It is not
trivial, but it is possible.)
I have a crate of 256MB RAM on my 11/70s but I'd love to learn what it
takes to use 1MB boards (which I have a few of from 11/750s and
11/730s and 11/725s). I might decide it's too much trouble, but I'd
to know what's involved.
256K, not 256M, but anyway... :-)
There are several bits to it.
The MK11 only have 18 address pins on the backplane, which means it
cannot directly address larger boards. In addition, there are 16 card
select pins. One for each slot. At power on, the memory controller in
the MK11 writes to all cards in parallel, in order to initialize the ECC
bits on all cards.
The way you get 1M cards to work is that you need to tie together 4 card
select lines, so that your 1M card would appear to be four 256K cards in
the MK11.
In addition, you also need to code back from the four select lines into
the two additional address lines.
This is not so hard. Essentially we're talking about a OR of 4 lines,
and a 4-2 encoder.
Important additional detail is that you *really* want to make sure that
when all cards are select together, that is equivalent to the lowest
addressed cards.
So far for the hardware.
After you've done this, you then also needs to fix a software problem.
Like I said at the start, the MK11 initialize all the ECC of all the
cards, at initialization time. And it does this in parallel for all
cards. That means all card select lines are active together at
initialization. And then the address lines runs through address 0-256K
doing writes.
This means that the ECC for 3/4 of a 1M card will not be initialized.
The 1/4 that do get initialized, you want to be the low addresses, since
those you need before you can really do anything more. Having memory
errors for address 0 is really bad.
Once you've come this far, you need to write a short program that will
initialize the ECC of the rest of your memory. This can be done through
software, but it requires some tricks. Normal writes of memory expects
the ECC to already be correct, so you need to turn off ECC checking in
the MK11 before writing to the uninitialized memory. You can turn off
ECC checking in the MK11 by changing a CSR register, where you can set
the operation of the MK11.
However, there is a problem here. The CSR is in the MK11 box. But the
MK11 box is on the memory bus, and not on the Unibus. And the CSR
address is in I/O space.
The trick for this is to use the MMU and the Unibus map to get access to
the I/O space on the memory bus.
How this actually is done is hidden deep inside one of the technical
manuals of the 11/70, and in a rather weird form.
I can't seem to find that manual online. It's something like "11/70
memory subsystem manunal" or something similar. I (Update) have a
hardcopy of it somewhere.
But the theory of it is not so hard. You access an address in the Unibus
memory address space, using the MMU. The Unibus map then remaps this
address into an address in the I/O space. All access of memory through
the Unibus map will go to the memory bus.
Johnny