On Wed, 25 Mar 2020, Matt Burke via cctalk wrote:
no, no
confusion, and thanks for the detailed analysis. Now I have to
find my dremel (I just moved) and check the Dallas NVRAM ;-)
Cheers & thanks again!
You can buy replacements for the Dallas DS1287A under a new part number
- DS12887A.
They are not exact replacements though as they have an additional address
line on AD6 which is used to access extra 64 bytes of internal static RAM.
For correct operation with the DS12887A rather than the DS1287A in the
4000/90 the line would have to be driven with logical 0 in the address
phase of the bus cycle. I don't know if this is guaranteed by the EDAL
glue logic used to drive the DS1287A (TOY in DEC-speak) chip in the
4000/90.
My notes indicate that the 0x25400000:0x254000fc 32-bit longword CPU bus
address range is decoded to the TOY chip in the 4000/90, and the TOY data
byte is transferred on bits 9:2 of the longword accessed.
Furthermore the CEAC seems to be selected with 0b001001 in bits 31:26 of
the CPU bus address, that is spanning the 0x24000000:0x27ffffff address
range. Bits 25:22 are then decoded by the CEAC to individual EDAL bus
chip selects (some devices seem to handle multiple chip selects or, more
likely, CEAC does incomplete decoding depending on the address subrange).
This leaves bits 21:8 of the address undefined for the TOY chip, and it
is unknown if they are actually driven, hardwired or left floating. It
will depend on the glue logic involved, though given that the DS1287A has
a multiplexed AD7:AD0 bus, and in the 4000/90 TOY addresses are presented
on bus bits 7:2 and data is presented on bus bits 9:2 chances are bits 9:8
and consequently AD7:AD6 are also driven in the address phase.
There's still question of software accessing the TOY using canonical
addresses only, i.e. ones in the 0x25400000:0x254000fc range rather than
say 0x25400100:0x254001fc, which likely cause AD6 to be driven with
logical 1 rather than 0. Of course software could make use of that extra
static RAM if accessed deliberately. As I use all my DEC equipment for OS
development however I consider it reference hardware and therefore I only
accept exact replacements if the original part cannot be used anymore.
Since no new DS1287A (or DS1287, for DECstation 5000 systems) chips are
available I resorted to reworking old chips to have the original embedded
coin cell replaced with a socket for a discrete coin cell mounted such as
to match the original clearance of the chip almost exactly. This is
important for DECstation 5000 systems, which have the TOY chip mounted in
the TURBOchannel slot area with as little as ~0.1" of clearance left with
respect to option cards.
I actually bought extra chips from a seller on eBay, just to have spares
in case something goes wrong in the rework, knowing that they have been
forged by replacing the original marking with one giving a more recent
date code, one well past the last manufacture date of genuine chips, to
pretend they are not as extremely old as they really are. That is quite
safe for the rework however, because the way the cell has been embedded
makes the marking on the original top of the case of the embedded DS1285
chip clearly readable once the cell has been completely removed.
In the end one of the batches I got was good, made with the DS1285 chip,
while the other one had the DS12B885 chip instead, so I had to discard it.
Now I got yet another batch, but I didn't get to disassembling any of the
parts yet.
NB the DS12B885 doesn't exist in any datasheet I could track, however
there used to be a DS12B887 chip which had a RESET# wiring modification
that I think couldn't have been made by just adding a quartz crystal and a
coin cell to the DS12885, so perhaps a dedicated DS12B885 core was made to
satisfy that application only and never sold in a discrete form.
FWIW,
Maciej