It's rare that a PCB is perfect on the first go. In the case of my PPI module, this is the third set of 5 boards and we're into minor improvements now.
It's nicely refined now. I've gone for a latching connector. It's essential - not for latching the plug but for extracting it. The 'box' type are fine if you want the plug in there permanently! I've been working on two keyboard solutions and therefore have been swopping.
I've added resistor arrays (pullups for the keyboard columns). Previously I had those on my keyboard interface but the Omega keyboard doesn't have them, so it seems sensible to move them to this end of the deal. There's one more improvement I may make yet - note those header pins labelled CO and CM.
There's not much more to say about this module, it works just as well as the previous version. I really like the look of the latching connector.
The second significant thing to report today is that my tape interface has moved off the breadboard and onto a pcb.
When I say 'moved off the breadboard', I had only built the input part of the circuit on the breadboard. Here we have the output signal and the remote (cassette motor) switch as well. (I've used an SSR for that.)
I've put the standard MSX 8-pin DIN on there and also the possibly more traditional 'mic' and 'ear' audio jacks. For the sake of the picture I've plugged them all in, but obviously you'd use one or the other.
Nostalgia for cassette loading?
If I wanted to re-experience the 'joys' of sketchy tape loading, boy I've had that today. I don't know how many times I've pressed 'play' on the tape and watched the screen hopefully but in vain.
Initially I had nothing. Here are the problems I've found and fixed, roughly in chronological order.
This is the lead I was trying to use at first. It breaks out the 8-pin DIN to ear, mic and rem jacks. This is the one I use for the Oric, BBC and Electron. I may have given the pinout a quick look or I may have assumed that the pinout is the same for the MSX. They were trying to establish a standard after all. But it turns out they're not quite the same. The MSX standard (which I worked to with my module) is almost the same but slightly different. Why would they do that??
Not a big deal. I found this issue easily and have an MSX-compatible lead on the way from Retro Computing Shack. Plus I put ear and mic jacks on my module, so I can use those in the mean time.
But I couldn't make those work either. My breadboard circuit worked great for loading from real tape. My new module should have been exactly the same circuit but just seemed dead.
After much time spent checking the resistor values (check the picture above, there are so many different values on that board!) I eventually noticed an error with my schematic. I'd worked from the reference circuit when building the breadboard version and worked from the same reference circuit to make my schematic. Except that i had missed two important connections - the op-amp's v- and ground, both of which are tied to 0v in this case.
Two bodge wires later and we can load from a pre-recorded cassette (the only one I own for MSX!)
Saving went more smoothly, or at least appeared to at first.
I had found this unopened blank tape in a charity shop about a year ago.
This seemed like the perfect time to crack it open!
It appeared that my test program had saved successfully, I could listen back and it sounded pretty crisp.
But the computer wasn't recognising my saved programs. It would still load the commercial tape, so I assumed that it had to do with levels and spent waaaay too long trying different levels and two cassette players.
Eventually I tried capturing the sound using a modern computer. This allowed me to view the waveform and see that the output signal was *really* puny.
By amplifying it up ( several times its original amplitude) I was able to load that back in.
The output circuit is much simpler than the input. The TTL signal from the PPI pretty much goes out to the mic jack, with some filtering and a voltage divider in between.
I had noticed that one of the values in the reference circuit looked very questionable. (Though the Omega project uses that same reference circuit with the same values.) I bodged a trimpot in its place so that I could experiment. This effectively gives me an 'output level' control which I think I might add to my design.
Still using the modern computer to capture the output, I was able to adjust that to a much more promising-looking level and eventually load that straight back in without amplifying it digitally.
... and here's the first time I was able to save a program out to tape and load it right back in.
So I started out by saying that a board is rarely perfect on the first try. I thought my 'tape module' might be - it's pretty much just a reference circuit after all. But that's a long way from the truth.
I must fix the connections I missed. The 'rem' / cassette motor circuit is different from the reference because I put in an SSR and have yet to test that out properly. (I'll wait until my new lead is here). And a component appears to need to be a very different value than that given; I'll put in a variable one.
Yes, I need to either look at the footprints for these electrolytics or buy physically larger caps! Preferably matching size. Would it be cheesy to position them on this board so that they look like the spool centres of a cassette??
And the elephant in the room is those connections which go to various other boards. (signal out, signal in and the cassette motor control.) I've run out of spare connections on the standard RC2014 backplane. I'm thinking about using connections on the extended bus for these signals. (with the option of using flying leads like this for when the modules are used on a standard backplane.)
All of this has taken the shine off the experience of unwrapping a 'new' tape and saving / loading my own program. Now that it's working, maybe after a sleep or two I can return to it and enjoy it fully.