On 11/14/22 11:47, Georg Käter wrote:
Hello together,

my Tandy 200 (European version, build in 1985) uses main PCB #-PLX178AHIX. This board accepts

standard UV-eraseable EPROM 27C256 (32kB) and 27C64 (8kB) 150ns type w/o any modification.

Maybe there are other revisions of PCB with different EPROM pinout I´m not aware of.

In a conversation off-list just now I think we just figured out why it works.

I'll just describe verbally but to follow along and check the work, the reference material you'll need are the service manual for 200 to get the schematic for the 200, and the datasheets for HN61364, and 27C64. All easily googled. And in the 200 schematic you're looking at the M13 and M15 positions (top-right corner), and one gate on M29 that combines 2 signals into one pin on M15.

To start, all else being equal,
* both chips get their /CS at the same time from the same /RD line from the 200 * both chips, (in a sense, if you count the OR gate on M29 as part of M15) get their /OE at the same time from /BANK1 from the 200 * A15 ends up interlocking the two chips so that when one is active the other is inactive. When A15 is low, only M15 is enabled, and when A15 is high only M13 is enabled. This assumes that the pin labelled /CE1 is really an active high not an active low, and we CAN assume that, because all other pins on both chips are not up for any kind of debate, they are known and certain and not ambiguous. If pin 27 on M13 were actually active-low, then both chips would be active at the same time.

(The pin names on M13 are a bit confising because for some reason the 200 schematic labels the 3 OE pins as /CE0 /CE1 /CE2. But they are really OE pins not CE pins. The /CE pin is /CS, and for this discussion I'm calling the others /OE0, OE1, and /CE2. OE1 is really active-high so that's yet another correction.)

So the tldr for the normal case with original parts is:
A15 low=M15 high=M13

Now with a standard 27C64:
* pin 1 is NC from the socket, which means VPP is floating. That is bad in general, but you get away with it in this case because it's not a normal input but a VPP that needs a much higher voltage than vcc or any voltage any other pin ever sees. Since no pin anywhere on the chip ever sees anything outside the range of gnd to vcc, then a flapping input may flap, but shouldn't be able to float any higher than vcc, and vcc is just fine. Ideally we want that pin nailed to vcc even. It means we can essentially ignore VPP, and ignore the write implications of /WE. We can't ignore /WE, but we can ignore the *write* implications. It can never write, regardless what state /WE is in, regardless what state any other pins are in.
* /OE has the same /BANK1 as the /OE on M15 (via M29)
* A15 is on /WE

So, it's just down to answering: What happens when A15 is high, and when it's low, when the states of the other pins are all VPP<=vcc, /CE low, /OE low?

A15 low -> /WE low, which is technically undefined behavior being low at the same time as /OE, but apparently overrides /OE and prevents output. /CE and /OE are both low so it wants to output data, but /WE blocks it, and yet, /WE doesn't write either because of missing VPP.

And, that is what we happen to want. Above in the stock case, A15 low = M13 disabled.

A15 high -> /WE disabled, /OE is low so the chip outputs, and again that is what we want. Above, A15 high = M13 active.

So /WE without VPP is kind of being abused into acting as a secondary active-high OE, which is what the HN61364 has explicitly on that pin. (well, it's not that HN61364 has pin 27 = active high OE1, it's that the pin is configurable and the mask programming happens to have programmed that pin to be active high in this case.)

So, it's not merely seeming to work by luck and maybe it's just lucky that you don't get data corruption because of chance and statistics, but really working, like you will never get data corruption because the logic rules don't allow for it.

And it doesn't hurt the 200 electrically either. There are no outputs fighting each other or anything like that. Electrically fine.

Myself I would lift out pin 1 and bodge it to pin 28 on all 27xxx chips put in place of mask roms, but it's not really necessary.

Oh the HN61364 has one other non-standard pin, but you can ignore that too. Pin 26 is a 3rd active-low OE, and tied to gnd in the socket, so it's not used by the 200 and hard wired to just be enabled at all times, meaning you can pretend it doesn't exist. And it's a NC pin on a 27C64, so the gnd doesn't matter and so again you can ignore it.

And that's that. I think. Mystery solved?

--
bkw




Regards

Georg

Georg Käter
Gangolfsweg 44
D-52076 Aachen
Tel.        : +49  2408 7194987
Fax.        : +49  2408 7196758
Mobil    : +49  171 4839954
E-Mail   :

[email protected] <mailto:[email protected]>

========== Ihre Nachricht ==========================================

*von*      : Brian K. White <[email protected]>
*gesendet* : Montag, 14. November 2022, 16:24
*an*       : [email protected]
*Betreff*  : [M100] custom key mapping generator for Tandy 200

__________ Originalnachricht _______________________________________

    On 11/14/22 10:11, Brian K. White wrote:

        On 11/14/22 09:12, Brian White wrote:

            The datasheet says to rest vpp at vcc. Most do, even if
            elsewhere they >> also say that writing is disabled as long
            as vpp is below vpp and the >> only low limit is pretty much
            the same as for any other pin, like 0.5 >> or 0.7 below vcc.

            derp I mean the low limit is a little below GND or VSS not VCC.

        Although a Microchip 27C64 datasheet I happen to be looking at
        at the > moment does actually say the vpp read voltage is min
        vcc-0.7, max vcc.


    More derp, I obviously confused VPP with /WE there.
    But pin 27, being /WE (/PGM), still needs to be held at VCC not GND,
    although theoretically any writes should still fail without VPP, but
    still, you just hold /WE at VCC for reads.




__________ Ende Originalnachricht __________________________________

*Vertraulichkeitsinformation:
*Diese Nachricht ist vertraulich. Die Informationen dieser Nachricht sind ausschließlich für die persönliche und vertrauliche Verwendung durch den/die oben genannten Empfänger bestimmt. Wenn Sie kein beabsichtigter Empfänger sind, bitte lesen, kopieren und verwenden Sie die Nachricht nicht. Machen Sie sie nicht anderen zugänglich. Bitte informieren Sie uns umgehend über den Zustellfehler und senden Sie die Originalnachricht
per E-Mail an uns zurück.

*Confidentiality Notice:
*This message is confidential. The information contained in this message is intended only for the personal and confidential use of the recipient(s) named above. If you are not the intended recipient, please do not read, copy, or use it and do not disclose it to others. Please inform us immediately of the delivery error
and return the original message to us via e-mail.

--
bkw

Reply via email to