#9 Casio KB-7, KB-10 and FA-32 extensions

trunk
open
nobody
5
2014-06-22
2014-06-16
SD Snatcher
No

Here's a contribution: the Casio KB-7, KB-10 and FA-32 extensions.

I just couldn't make the FA-32 work properly. If I remove the tag <CassettePort/> from the MX-10 and KB-7 xml files and add the FA-32 as an extension, openMSX boots fine, but insists that there's no cassette interface present whey I try to plug cassetteport cassetteplayer command.

1 Attachments

Discussion

  • Manuel Bilderbeek

    Thanks for this contribution! I have some questions about this hardware (and do note that I don't know much about hardware, so maybe they are dumb questions):

    • KB-7
      1. how can the 'cartridge' (which it acts like, I guess, or does the connector have more than the normal cartridge slot signals?) put extra RAM in slot 0?
      2. how can it add primary slots 2 and 3? Apparently it does not work as a slotexpander?
    • KB-10: see KB-7 question 2.
    • FA-32: what is the point of this extension? The PV-7 has some non-standard cassette port, but the FA-32 only converts it to standard, doesn't it?

    In other words: how does this hardware work? :)

     
  • SD Snatcher

    SD Snatcher - 2014-06-19

    No problem. I'll try to explain it the best I can. :)

    The KB-7 reverse engineering was done by this nice Korean guy:
    http://blog.naver.com/PostView.nhn?blogId=jinslove4u&logNo=30140079311

    1) How things can be designed on hardware
    At the hardware side, any hardware connected to a given MSX slot could theoretically answer as if it was sitting in another slot. All it has to do is to ignore the #SLTSL signal and decode the writes to the A8h port. Note that this is a nonstandard behavior that could only be done in docking stations like these, as they meant to be connected only to the respective computer.
    No standard generic device is allowed to work like that as it would be a very dangerous non compliant hack.

    2) For the KB-7 and KB-10
    If you look at the last picture of the KB-7, it shows that it has an SMD chip named "MB64H131" on the lower side of the board. This post from Werner shows that the MB64H131 is also present inside of the PV-7, and is the MSX-Engine of this machine. So it contains the PPI.
    http://www.msx.org/forum/msx-talk/hardware/casio-pv-7-16kb-ram

    This means that for this docking station Casio took the approach I mentioned in (1) and replicated the MSX-Engine on the station motherboard. There it decodes the extra primary slots and the printer port I/O address. It's a redundant and expensive design, if you ask me.

    But this explains why the Casio docking stations are able to decode extra slots even when there are no SLTSL signals in the special slot meant for them to be connected.

    OpenMSX offers no way to overlay two PPIs at the same time, so I just omitted the second PPI from the KB-7 & KB-10 XML files as it just mirrors everything the 1st PPI does. Functionally speaking the emulation is perfect as it is.

    3) Some curiosities about the designs
    The Casio MX-10 line (MX-15, MX-101 etc) was a much better circuit design than the PV-7. Just compare the two motherboards:

    https://plus.google.com/photos/112629367302659371233/albums/5838243943831974625?banner=pwa
    https://plus.google.com/photos/112629367302659371233/albums/5838119511792320449?banner=pwa

    The PV-7 is a badly put together design, with a mess of wires going everywhere. For a supposedly cheap design, was sure expensive to build it that way. The MX-10 is much quicker to be built as it requires less manual work.

    4) The docking stations emulation
    All the needed information to emulate it was shown in the Korean user tests, as described below:

    1) The pictures clearly show the D4168C (8KB PSRAM) and the printer connector
    2) You can notice by the values of EXPTBL no slot is expanded internally. This confirms that the PPI of the MB64H131 inside the docking station decodes the Z80 address lines and places the D4168C directly at C000h~DFFFh in slot 0.
    3) He connected his slot expander with RAM+disk on each of the slots. On each picture, the respective variable in the EXPTBL was shown as expanded, while the others were not. This allowed to deduce that:
    3a) All slots are primary slots
    3b) The order of the slots is 1,3,2. I reproduced this in the PV-7 xml file.

    5) Casio FA-32

    Werner took pictures of his FA-32 and this clearly shows that the interface is in fact external:
    https://plus.google.com/photos/112629367302659371233/albums/5800087440548454129/5896912199166661714?banner=pwa&pid=5896912199166661714&oid=112629367302659371233

    To save costs, Casio split the design in the very same way that PC manufactures did years later with the AMR modems:
    http://en.wikipedia.org/wiki/Audio/modem_riser

    The DIN-5 connector on Casio machines isn't a cassette interface. It's a digital connector to receive the cassete port interface (FA-32), much like the AMR connector receives the Analog Modem interface.

    Werner listed the Casio digital cassette connector pinout here:
    http://www.msx.org/forum/msx-talk/hardware/help-need-casio-mx-10-or-mx-101-cassette-pinout?page=1

    I hope I was able to clarify things a bit. :)

     
  • Manuel Bilderbeek

    That DIN-5 is like the digital part of the cassette port (only the relay is missing), right?

    I don't think it add much to make an extension with just a cassette port for this FA-32 detail... (and it doesn't really justice to it).
    But I will add the other 2 extensions.

    Thanks a lot for all this info and the extensions!

     
  • SD Snatcher

    SD Snatcher - 2014-06-20

    Except for a single insignificant inverter in the MOTOR signal, there are no extra digital components in the cassete interface, since everything is modulated in software by the BIOS. It really works like an AMR Winmodem or a Covox. :)

    That DIN-5 is just a straight connector to the respective PPI and PSG pins, without any circuitry in the middle. The entire interface is contained inside the FA-32 box, and it's equivalent to a bidirecional 1bit Covox interface. Really.

    This is the DIN-5 pinout:
    1: +5V
    2: Goes to PSG pin-14 which is IOA7 = R#7,bit7 = CAS Input
    3: Goes to MB64H131 pin-65 which is PC5 = PPI pin-12 = PortC,bit5
    4: Goet to MB64H131 pin-64 which is !PC4 = inverted PPI pin-13 = PortC,bit4
    5: GND

    Think of the DIN-5 connector as very similar to the DB-9 joystick ports, but the later at least have a demux chip between the PSG and the connector. Or even better the printer port. And we don't consider the devices that connect to these ports to be part of them, even when they're just a bunch of analog circuitry (like the Covox), do we? :)

    As you may have guessed by now, the FA-32 is so complete as a interface that you can even build and adapter to connect it to the printer port and it will work just fine if you write the proper software.

    Just as a curiosity, the FA-32 seems to be a very well designed cassette interface! It's much more elaborated than the ones most MSX models have built-in. It features a nice dual-opamp and quite some filtering.

    If even after those explanations you still prefer to keep the FA-32 out, I'll be fine with that. I know the xml for this device got a bit awkward because of the way openMSX emulates the cassette interface. :)

    I wrote the extension because usually the openMSX team like to emulate things exactly as they were on the real hardware. And the fact is, that for Casios, you have to plug a cassette interface to be able to use cassettes.

     
  • Manuel Bilderbeek

    As I said last comment, your current extension proposal doesn't do the real hardware justice. It's like having an external cartridge with a tape connector, and then pretending the computer doesn't have such a thing at all.

    Much more realistic would be to make a new type of connector (that represents the connector on the computer to which you have to connect the FA-32) in which you can plug a new pluggable named Casio FA-32, which then provides a normal cassette connector.

    It would be accurate, but it would also be a lot of work for little gain... (I will accept patches that implement this, though ;-)