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

Поделиться
HTML-код
  • Опубликовано: 2 авг 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 26 дней назад +13

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

    • @CRG
      @CRG  26 дней назад +1

      Haha, glad you enjoyed it.

  • @CRG
    @CRG  Месяц назад +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 26 дней назад +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 ;)

  • @MechaFenris
    @MechaFenris 20 дней назад +1

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

  • @bbjunkie
    @bbjunkie 26 дней назад +3

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

    • @CRG
      @CRG  26 дней назад +2

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

  • @GadgetUK164
    @GadgetUK164 25 дней назад +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 9 дней назад

      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. 🙂

  • @gerrysweeney2127
    @gerrysweeney2127 24 дня назад +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  24 дня назад +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 24 дня назад +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.

  • @kilton44
    @kilton44 26 дней назад +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  26 дней назад

      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.

  • @Yeoman35
    @Yeoman35 26 дней назад +3

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

    • @CRG
      @CRG  26 дней назад

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

  • @kathrynevans6849
    @kathrynevans6849 26 дней назад +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  25 дней назад +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?

  • @borayurt66
    @borayurt66 24 дня назад +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 26 дней назад +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.

  • @minombredepila1580
    @minombredepila1580 26 дней назад +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  26 дней назад

      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.

  • @bbjunkie
    @bbjunkie 26 дней назад +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  26 дней назад

      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 26 дней назад +3

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

    • @CRG
      @CRG  26 дней назад +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

  • @_.OX._
    @_.OX._ 22 дня назад +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.

  • @goloskokovic
    @goloskokovic 26 дней назад +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  25 дней назад

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

    • @goloskokovic
      @goloskokovic 25 дней назад +1

      @@CRG sent you the answer on Discord

  • @lindoran
    @lindoran 26 дней назад +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  26 дней назад +3

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

    • @kathrynevans6849
      @kathrynevans6849 26 дней назад +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 26 дней назад

      @@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  25 дней назад

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

  • @stephenwhite506
    @stephenwhite506 26 дней назад +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  26 дней назад +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.

  • @gbraadnl
    @gbraadnl 21 день назад

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

  • @otis7359
    @otis7359 26 дней назад +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  25 дней назад +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.

  • @fu1r4
    @fu1r4 26 дней назад +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  26 дней назад

      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.

  • @samcoupe4608KB
    @samcoupe4608KB 25 дней назад +1

    Disciple/+d and multiface 128

  • @cv643d
    @cv643d 26 дней назад +1

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

    • @CRG
      @CRG  26 дней назад +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.

  • @Xoferif
    @Xoferif 26 дней назад +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 26 дней назад +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.

  • @ingmarm8858
    @ingmarm8858 24 дня назад

    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.

  • @42markk42
    @42markk42 25 дней назад

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

    • @CRG
      @CRG  25 дней назад +2

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

  • @ZXSpectrum128K
    @ZXSpectrum128K 25 дней назад

    6

  • @AK-vx4dy
    @AK-vx4dy 26 дней назад +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  26 дней назад +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 26 дней назад

      @@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 ;)

  • @dannyarnold9823
    @dannyarnold9823 24 дня назад

    It's most likely parasitic capacitance from those connectors.