BUILDING, TESTING and almost FIXING a backplane for the ZX Spectrum

Поділитися
Вставка
  • Опубліковано 27 лип 2024
  • I recently had a cause to fit more than one expansion to my ZX spectrum at the same time so went on the hunt for some means of doing it. After stumbling across a 6 way backplane on project speccy I downloaded the gerbers, ordered the boards and attempt to get it working!
    So join me as we head far deeper down this Sinclair Rabbit hole than I thought possible.
    Links
    Project Speccy - projectspeccy.com/
    Spectrum schematics - spectrumforeveryone.com/techn...
    Parts - www.retroleum.co.uk/
    Music
    ‪@Momentvm‬ Cathode Ray Gun - • Momentvm - Cathode Ray...
    CRG Links
    CRG X (Twitter) - / yt_crg
    CRG Patreon - www.patreon.com/user?u=13919007
    CRG Discord - / discord
    Chapters
    00:00 Intro
    02:52 Assembly
    05:13 Fitting and Voltage
    06:17 The problems begin
    07:29 Other problems
    11:27 Back to the backplane
    12:57 Swapping ram and LS157s
    14:26 128k ram mod
    16:44 Loading problems
    19:15 The plan
    21:30 Address bus buffer testing
    24:12 Fireworks
    26:18 Termination
    30:39 More loading woes
    34:22 One last try
    39:53 Conclusion
  • Наука та технологія

КОМЕНТАРІ • 56

  • @olivedrabcorp3026
    @olivedrabcorp3026 20 днів тому +13

    I was drinking quietly and then came the trash containers sequence: I almost choked on my beer. Excellent ! 😂

    • @CRG
      @CRG  20 днів тому +1

      Haha, glad you enjoyed it.

  • @CRG
    @CRG  25 днів тому +14

    Couple of notes:
    1. This video has been heavily edited to try and get it to some sort of manageable run time hence the jump cuts to text.
    2. You may be wondering why I never looked at the bus on my scope. I did do this but ultimately it all landed on the cutting floor as to be honest my £40 aliexpress scope didn't really show much difference in the data or address bus between when it was running or when it was crashed (unless it had halted of course) or when using the termination or buffers. Granted there was some evidence of what might be reflections in on the bus which has been helped by termination but ultimately there are still issues.
    3. Since publishing the video I have hard mounted the expansions slots (2nr of each type) and it was resulted in the card becoming very unstable again. I still believe that correct termination and perhaps buffering will resolve this but I'm unsure of how to properly calculate the termination or how to implement bidirectional buffering.
    4. With the issues I faced while completing the dc-dc mod I'm not totally convinced there isn't another issue somewhere with my spectrum which might also be causing problems with the backplane. I would be very grateful for any advice here.
    5. It seems my statement about 48k v 128k ULA and screen modes is nonsense, the 128k does support double buffering of the screen but it is the same screen mode. The corruption seen when trying to load NSID might be down to difference in the ROM? Perhaps the software is calling something from the 128s rom which obviously isn't present in this machine?
    6. I hate spectrums.
    The making of this video has stretched my knowledgebase to its limits but the only way we learn is to hold our hands up and ask for help so please if anyone can provide some advice I'd be very grateful .

    • @brynjarborgersen8131
      @brynjarborgersen8131 20 днів тому +1

      It is things like this that really make you appreciate how clever the early computer people really were.
      I mean, figuring out the electronics and building the boards and the supporting circuitry and whatnot..... And to top it off, those guys who figured out how to make ICs in the first place.....
      We get a glimpse into their genius minds when trying to repair "their" computer with little to no prior knowledge.
      Long-winded way of saying I enjoyed your video ;)

  • @GadgetUK164
    @GadgetUK164 19 днів тому +4

    Great video Glen! Copper tape (grounded) somewhere might help - in the same way the pull ups / pull downs did. It really needs buffering as you talked about.

    • @adrianchadd
      @adrianchadd 3 дні тому

      Yeah, adding buffers and pull-up / down termination should fix it. The termination needs to be at the /end/ of the bus, and you're putting a card AFTER the termination resistors.
      In any case, I'm gonna try this stuff once my 48k speccy arrives. 🙂

  • @MechaFenris
    @MechaFenris 14 днів тому +1

    Whoa... that was a SERIOUS workout. :) It's always frustrating trying to find that needle-in-a-haystack problem or bug...

  • @kilton44
    @kilton44 20 днів тому +6

    Sorry I can't offer any advice or help but really enjoyed the video's humour and rooting for you during the struggles. Thanks and good luck!

    • @CRG
      @CRG  20 днів тому

      Thanks. Glad to hear you enjoyed it. Got a few tips from comments and will try them at some point but I've put this card to the side for now.

  • @gerrysweeney2127
    @gerrysweeney2127 18 днів тому +3

    You have been lucky to happen on a databus bias point that works. For the size of the backplane and the things you are wanting to plug into it, you really need to add a bi-directional data bus buffer. Its good practice to terminate the other end of the busses too. so you have installed an address bus buffer, but have not terminated the address bus, and you have not installed a data but buffer, but have terminated that bus. Internally the spectrum will already have some form of pull-ups on the data bus I imagine, but the chips in there, especially the DRAMS wont have the drive capacity, so you are overloading the internals of the spectrum, which will lead to random reliability issues. The problem is, a passive backplane is no good here, you want both address and data buss buffered, ideally bi-directional to allow bust mastering for expansions that want to drive the bus.
    The purpose of the buss termination is to eliminate signial integrity issues with reflections. Generally not a real-wrold problem at 4Mhz, but, you can get shadowing effects with the fast transients, on those digital lines, so high current drive capability (aka buffers) and end of line termination (1k pull-ups) at the furthest end of the expansion bus board, those two things will solve all the stability issues you are seeing. Bottom line is, the passive backplane is just not up to the job.

    • @CRG
      @CRG  18 днів тому +1

      Thanks for the detailed reply, I've been looking at improving this board today although it will be a while as I'm just order parts for testing with before committing to a complete redesign.
      It's turning into a good learning curve for me and I'm enjoying the challenge. I'm sure there are lots of mistake still to be made on my part but going to start with 245s on both buses and go from there.

    • @gerrysweeney2127
      @gerrysweeney2127 18 днів тому +1

      @@CRG don't worry about making mistakes, thats how you learn. 8-bit computer busses from the 80's are a well trodden path, so should be easy to get a good reliable solution going. TTL drive levels are challenging because relative to modern CMOS stuff they are quite power hungry. When you are driving a bus you are dealing with capacitance and load, and sometimes the odd reflection, so higher drive currents and a bit of termination (which also demand more drive current) overcomes these problems easily up to around 25Mhz. So 8-bit computers are power-hungry things. The expansion board should without issue, you just need the buffering and things will work just fine. Before you go off building another backplane dead-bug in the data bus drivers, sort our address buss terminations and if you have access to an oscilloscope, look for relatively clean square waves.
      If you are not sure what to look for, and you have a 20Mhz or better oscilloscope, start with the bare computer and observe the signals directly on the CPU pins, you should see reasonably well defined square waves peaking towards 4.3v and below 1v, once you have a good feel for what those look like, now do the same on the signals at the other end of your bus setup, with some cards plugged in, you will find the signals won't look the same any more, more rounder, lower 1 level voltage and higher 0 level voltages, your buffers and termination for your setup should get you back to pretty much what you see directly on the CPU when no expansion is attached. It will be very clear what looks right on the scope if you are seeing that level of unreliability.
      Also, consider that it might not be all data or address lines, sometimes busses are loaded or driven unevenly because of the circuit design, so check all 24, and don't forget the memory access control lines like Rd/WR and so on... they need to be just as clean too, and may well need buffering too.

  • @bbjunkie
    @bbjunkie 20 днів тому +3

    17:22 love the mad max look of the zx 😂

    • @CRG
      @CRG  20 днів тому +2

      The back plane does allow for some odd looking setups with expansions.

  • @Yeoman35
    @Yeoman35 20 днів тому +3

    Fun to watch thanks. I think I would try 27 ohm resistors is series with the signals to reduce reflections.

    • @CRG
      @CRG  20 днів тому

      I'll absolutely give that a go, thanks for the tip.

  • @minombredepila1580
    @minombredepila1580 20 днів тому +2

    A very interesting reflection on how to solve this problem. The joy is again on the journey !!!. Thanks for your video Glen.

    • @CRG
      @CRG  20 днів тому

      Thanks, glad you enjoyed it. Probably not the ideal way to solve the problem, but I mostly got there in the end. It does need a bit more work, but I've put it to the side for now.

  • @borayurt66
    @borayurt66 18 днів тому +1

    I see a 74F series logic there (there may be more), they are functionally the same with 74LS ones, but have slightly different logic level interpretation and also, they like to run faster. Both of these contribute to the fact that they don't play well in a fully TTL circuit, which the Spectrum is. Replacing that (and possible others) with proper 74LS TTL logics may solve the issue. But I totally agree with you on that port replicator board being stupid big and it makes it prone to every kind of interference and voltage drops. I like the idea of buffer ICs, and bus termination, and it will be a more scientifically correct approach to scope the buses with and without buffers and termination resistors to see what they do.

  • @tenminutetokyo2643
    @tenminutetokyo2643 20 днів тому +1

    I have a similar 16K expansion PCB for TS1000 and it works great. It's only has 2 chips and 1 RAM chip so it runs much faster than the original. And it's smaller.

  • @kathrynevans6849
    @kathrynevans6849 20 днів тому +4

    With a large expansion card like this you really do need to buffer both the address and data lines and make them all bidirectional and tristatable. This is so any device that becomes a busmaster by issuing /BUSRQ will be able to drive the buses itself. The same goes for any device that wants to do DMA like the z80 PIO or the SIO etc. Termination is also always a good idea.

    • @CRG
      @CRG  19 днів тому +1

      Yes I had noticed on the schematics that if BUSRQ is asserted then another device can take over the buses but from chatting with a few spectrum guys no-one knows of any such devices. Probably should have explained that in the video... I agree that the data bus needs buffered as well but I'm unsure how to do that. Could you offer any advice?

  • @bbjunkie
    @bbjunkie 20 днів тому +2

    Great vid, loved the blind trial & error approach! Could’ve been some weird capacitance in the connectors introducing noise from adjacent pins. Great demonstration of how fragile the signals are.

    • @CRG
      @CRG  20 днів тому

      Thanks glad you enjoyed it. Maybe not the ideal method for trying to sort the issues I was facing but I was just working with what I know.

  • @RudysRetroIntel
    @RudysRetroIntel 20 днів тому +3

    Great video!! Would you mind sharing the termination documents? Im actually building an explanation board for the Apple IIe.

    • @CRG
      @CRG  20 днів тому +2

      This is the site I showed in the video. Unfortunately the link to the backplane article it references seem to be down but hopefully the article helps you to some extent.
      www.smbaker.com/diagnosing-xi-8088-stability-issues

  • @goloskokovic
    @goloskokovic 19 днів тому +3

    you probably have noise on that backplane that is higher than 0.8V and by using bus termination (voltage dividers) you are pulling it down below 0.8V so TTL logic 0 can be correct

    • @CRG
      @CRG  19 днів тому

      Thanks for the info, do you know how I would calculate the correct value for termination?

    • @goloskokovic
      @goloskokovic 19 днів тому +1

      @@CRG sent you the answer on Discord

  • @_.OX._
    @_.OX._ 16 днів тому +1

    Nice video. I always wondered back in the day if it was possible to upgrade the standard 48k Spectrum to full 128k (memory, sound and video) with a single expansion, I don't know how feasible it would be but it would have imo been better to keep the original Spectrums look with full 128k models compatibility.

  • @lindoran
    @lindoran 20 днів тому +4

    The DC-DC circuit on the 48k spectrum all the way to the issue 6 is fairly marginal. The biggest issue is it doesn't fully address the start up timing for the 4116 ram chips, as well as uses an unregulated "9v" supply that could be anything between 9 and 13v. I am thinking through perhaps making a drop in CMOS DC-DC module that will have considerably better power delivery

    • @CRG
      @CRG  20 днів тому +3

      If you do make one please let me know as it would be interesting to try.

    • @kathrynevans6849
      @kathrynevans6849 20 днів тому +2

      Back in the day one time I got my Speccy working again by creating the -5v rail by using an ICL7660, inverting the 7805's 5v. The 12v dropped to 9v because the oscillator wasn't running, but it was enough for my 4116s to run reliably. Did many other mods. Sound sampler, eprom programmer, a 2k static ram mapped over the rom so you could fix rom bugs by poking new data or speed up saving and loading by poking new values in the tape tone timing loops

    • @lindoran
      @lindoran 20 днів тому

      @@kathrynevans6849 I used the 7660s in my current cobbled together solution! I made a GitHub repo but im going to guess I cant post the link here

    • @CRG
      @CRG  19 днів тому

      The link will be blocked automatically, but I can approve it if you want to share.

  • @gbraadnl
    @gbraadnl 15 днів тому

    38:20 it is OK... we all get older. the timing was just slightly off due to extra length in the copper traces ;-)

  • @stephenwhite506
    @stephenwhite506 20 днів тому +1

    Maybe it also needs to be a four layer PCB with a ground plane in it. You could try the GadgetUK trick of copper tape on the bottom soldered to ground.

    • @CRG
      @CRG  20 днів тому +1

      I did try that trick but it didn't seem to do much. Got a few other ideas from comments though so a few things to try in the future. I've put it to the side for now though.

  • @Xoferif
    @Xoferif 20 днів тому +1

    The thing about the Spectrum 128k is that it has 64kB of lower RAM and 64kB of upper RAM.
    I don't think you can really replicate that just by plugging something into the expansion port - that only allows you to add upper RAM (to a 16k Spectrum).

    • @drgusman
      @drgusman 20 днів тому +2

      The 128k does not have 64Kb of lower ram, it has two 64Kb blocks, it's very different. The memory is divided into 16Kb pages going from page 0 to 7, page 5 is placed at 0x4000 and is the video memory, then comes page 2 at 0x8000 and finally page 0 at 0xC000. To use the 128k you write to port 0x7FFD and choose which page is mapped into the 0xC0000 addres and that is mostly it, only there is a special page (page 7) that can be swapped with page 5 when you set bit 3 of the request to the port 0x7FFD to use as a secondary screen buffer (and that's what cannot be replicated using the expansion port), but it presented nearly no benefit so it was never used by comercial software as far as I know.

  • @samcoupe4608KB
    @samcoupe4608KB 19 днів тому +1

    Disciple/+d and multiface 128

  • @fu1r4
    @fu1r4 20 днів тому +1

    33:30 It looked as there was a bent pin on the joystick adapter ...
    36:00 Did you test that board without termination? Maybe it something else that make it fail?
    That game Mooncresta only allow one shot at a time, so there is no need for hitting the fire button as you did.

    • @CRG
      @CRG  20 днів тому

      It did have a bent pin which ended up breaking, so I replaced it with a pin from what was left of the cut down edge connector. It works but it's a different type of pin, hence why it looks different.

  • @otis7359
    @otis7359 20 днів тому +1

    Thanks for video. Though I didn't get why it actually exploded. As for instability, that backplane is way too long. If you only need two expansion cards at the same time (128K + SID), then it might be worth redrawing gerbers and shortening the pcb for just two expansions.

    • @CRG
      @CRG  19 днів тому +1

      I honestly have no idea why it exploded either. I've put it to the side for now as I want to move onto other projects but I will try to pick it up again at some point in the future and redesign the layout.

  • @ingmarm8858
    @ingmarm8858 18 днів тому

    Yeah... 24:31... you like living dangerously! On an expansion like that I would have fully buffered ALL the signals. I think the bus terminations are a furphy, i.e. you are masking an overloaded bus with bus termination compensating partially for the inability of the system to drive all the signals to the correct levels. Have you measured the power consumption of the system with all the expansion stuff connected? Are you within the limits of the poor old 7805 regulator? Look at the supply rail on the expansion. I suspect it looks very noisy. If you add bulk capacitance then don't just add say 100uF electro but intersperse 100nF and 10uF ceramics as they cope better with the fast transient requirements of the logic.

  • @cv643d
    @cv643d 20 днів тому +1

    I would like to fit a ZX spectrum in a Mini-ITX case with a thing like this

    • @CRG
      @CRG  20 днів тому +1

      That would be an interesting project. This back plane isn't just there yet and to he honest I've put it to the side for now. I'll try to come back to it in the future for another look.

  • @AK-vx4dy
    @AK-vx4dy 20 днів тому +1

    I think generally any of such expansion card was projected to be connected with any other this may be source of many problems.
    Also i wonder if you checked mechanicaly how good is connection from Spectrum to expansion card, beacuse it is strange
    that test fails after 3 attemp, when you press on board to do reset.
    My theory of faulty first connection to ZX Spectrum is stronger as you done other card with new one.
    But is very strange with this connectors... some tin wiskers ?
    I wanted to see you cut termination at the end to test if it matters.

    • @CRG
      @CRG  20 днів тому +1

      The mechanical connection is something I thought about and I've cleaned both the edge of the spectrum and the slot more times than I could count. It does get a nice tight fit so I think it's as good as it can be. Since the video I have tried removing the termination again it just instantly falls over. Few other things to try though so I will revisit at some point but I've put it to the side for now.

    • @AK-vx4dy
      @AK-vx4dy 20 днів тому

      @@CRG I don't have a Spectrum schematic in head but this kind of bus is not terminated typically but some kind of few kiloOhms +5v pull up should do some good. Simultanously connecting it symerticaly to gnd sets empty bus voltage +2.5V wich i think is not beneficial to especially TTLs ;)
      Also i wonder if diodes should be used, becuse now you also creating line to line copuling wich also will use "fan out" if lines are in diffrent states.
      Some LS245 buffers should be ideal, at every "port" in ideal version, but then it becames crazy ;)

  • @42markk42
    @42markk42 19 днів тому

    Any reason why you didn't try the 7805 replacement to a Switch Mode 5v Regulator, lower power overhead and no heat?

    • @CRG
      @CRG  19 днів тому +2

      No reason really, but I do have a couple of spares so probably should have just used a switch mode supply.

  • @ZXSpectrum128K
    @ZXSpectrum128K 19 днів тому

    6

  • @dannyarnold9823
    @dannyarnold9823 18 днів тому

    It's most likely parasitic capacitance from those connectors.