ZX Spectrum build, No ULA.

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024

Комментарии • 130

  • @alexloktionoff6833
    @alexloktionoff6833 7 месяцев назад +16

    This is what I was looking for - all discrete no rare ULA and DRAM and VGA output! Please continue

  • @mheermance
    @mheermance 7 месяцев назад +9

    Neat. Your point to point wiring looks so much better than mine. I find that when I am halfway through I realize I have painted myself into a corner, and the latter half of the build is trying to avoid melting wires from the first half.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +2

      Exactly! I do have that problem later as well, it happened a bit on the SAP6502 build. Some pins were several wires deep.

  • @csbluechip
    @csbluechip 7 месяцев назад +6

    Can you make a short video showing how you are doing the wiring please. Especially one (bus) wire to multiple points. It's not obvious where the insulation is coming from.
    Loving this series. Thanks

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +2

      Thanks, will be working on a build techniques video soon.

  • @andrewkieran8942
    @andrewkieran8942 7 месяцев назад +3

    I came to watch this to understand your approach, and how you'd solve the timing issues.
    Then, I was impressed with your construction technique.
    Those things are all impressive, but then I fell in love with the pic of your puppy!!

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Yeah she's great. Normally I'm very allergic to dogs (and cats), but she's a cavoodle and no allergic reaction at all!

  • @vanhetgoor
    @vanhetgoor 7 месяцев назад +2

    Marvellous! This is how computers should be built. Away with the ULA, I never liked that kind of electronic parts, all that mistry, that hidden science, all those little secrets squeezed into one chip. It is a lot of work but the results are so beautiful to look at, it is craftsmanship. When the computer is not in use, you can frame it on the wall to look at.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Thanks for that. Back to basics. I think we should throw out the Z80 too - ruclips.net/video/kfMMjk288co/видео.html

    • @TheTurnipKing
      @TheTurnipKing 7 месяцев назад

      The thing is, the reason behind the ULA makes perfect sense when you see the Harlequin board, which implements the ULA in 74 series logic. Indeed, you just have to look at the complexity difference between the ZX80 and 81.
      It's just unfortunate that these chips had to be reverse-engineered instead of documented, they could have been reimplemented in all sorts of ways

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Yep, the harlequin uses the same technique as the Apple 2 (and TRS 80). I used it too here
      ruclips.net/video/qbzzzkNPICI/видео.html
      Any guesses as to why i chose an EPROM?

    • @schmitzbeats6102
      @schmitzbeats6102 7 месяцев назад

      @@DrMattRegan I would say, to make different screen modes, via "Firmware". Like Timex 2068, Sam Coupé or ULA+

    • @TheTurnipKing
      @TheTurnipKing 7 месяцев назад

      @@DrMattRegan I've seen some cases where they've been used as a substitute for relatively complex logical devices, but I'd be lying if I said I understand the process here.
      WHY is relatively easy. PROM is cheap. How, i don't get. Yet.

  • @AjinkyaMahajan
    @AjinkyaMahajan 7 месяцев назад +5

    Impressive work !!!

  • @AndyGraceMedia
    @AndyGraceMedia 7 месяцев назад +3

    This is absolutely gold. Loving it. Really clever solution to the problem.
    On construction technique I'm also impressed. I think I'd lose the plot with that sort of point-to-point IC socket wiring. I've prototyped using soldered break-off SIP machine-pin sockets designed for wirewrap and that was hard enough.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Thanks Andy, it's a fun little project. It should end up at < 30 chips.

  • @kirknelson156
    @kirknelson156 7 месяцев назад +2

    thats some genius level problem solving, enjoying the series 🙂

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Thanks for that, glad you like it.

  • @schrodingerscat1863
    @schrodingerscat1863 7 месяцев назад +1

    Personally I have always used wire wrap for projects like this but your point to point wiring technique looks great and as you point out much cheaper than wire wrap which is insanely expensive for the sockets. Using an EPROM as a replacement for the ULA is also a great idea.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Yeah, wire wrap sockets are hard to get in 32 pin packages.

    • @schrodingerscat1863
      @schrodingerscat1863 7 месяцев назад

      @@DrMattRegan Can't say I have ever had problems getting any size socket but they are bloody expensive, Mouser have 23 pin DIP in stock.

  • @jorgeferreira6727
    @jorgeferreira6727 2 месяца назад

    Congrats!
    That is a very clever way of sharing the bus with your personal video hardware.
    In this days of fast hardware, FPGAs, extra powerfull microcontrolers and massive frameworks, its an almost lost art.
    This kind of videos are quite a refresh so I don't totally forget some old tricks.
    Thank you for a really interesting and refreshing video.

    • @fastlandnet
      @fastlandnet 2 месяца назад

      I love these words

    • @DrMattRegan
      @DrMattRegan  2 месяца назад

      Thanks for the feedback. It's a fun project. You might like the upcoming bits as well.

  • @flomojo2u
    @flomojo2u 7 месяцев назад

    Wow, what a blast from the past! I built SO many little embedded boards using those Radio Shack prototyping boards and blue Kynar wire. I stuck with 68000-series CPUs, including a 8MHz 68000, 16MHz 68020, and 33MHz 68030. They all worked great, though I used PEEL programmable logic for decoding the addressing signals for the 68020/030 boards. Very simple boards, mostly EPROM/flash, SRAM, logic, and random stuff, including an IDE hard drive using my own file system. It was lots of fun reading the ATAPI specification for all the registers and commands!

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Excellent. I'm thinking of doing a series like the
      ruclips.net/p/PLjQDRjQfW-85S5QkX8wZbkqichM6TLYYt
      but for the 68000, a TTL-68000 CPU. Would that be of interest?

  • @MeeBilt
    @MeeBilt 7 месяцев назад

    Great stuff! I used the exact same point-to-point-wire technique on my first DIY computer back in 81-82. It was based on the 6502... when I got my first job I suddenly got access to a wire-wrap gun so I used that for my next build.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Yep, I think they are both becoming lost arts.

    • @MeeBilt
      @MeeBilt 7 месяцев назад

      @@DrMattRegan Indeed, thanks for a great video and an interesting project!
      I never owned a ZX Spectrum but I borrowed one from a friend for a month to try it out - I remember those cool little micro-drives.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Thanks for the feedback, enjoy.

  • @R.Daneel
    @R.Daneel 7 месяцев назад

    I used to do full wire-wrap, but would occasionally use this technique for parts of a circuit. One trick I used if I needed more than 2 wraps on a pin (or it was getting too busy) was to add an empty socket, wire the croweded pin to the empty socket and short socket pins together on the top of the board by sticking a wire in the socket.. You then had multiple pins to use for that one signal. Once a few pins were used this way, you could even cut off the rest of the socket with edge cutters if it wasn't needed. Sub and thumb.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Sounds good. I'll try that if necessary. You can sometimes get, 4 connections if you use 2 wires

  • @nexpro6985
    @nexpro6985 7 месяцев назад

    Thanks for the vid. It popped up in my yt feed. I swear RUclips is listening to my thoughts. The last thing I did on my laptop before watching this (on my phone) was to add a map of the Zx Spectrum memory to the appendices of the Machine Lightning manual I am reproducing. The memory map indicates contended ram vs un-contended.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Excellent. Glad you enjoyed it. Interesting little machine the Spectrum.

  • @ITGuyinaction
    @ITGuyinaction 7 месяцев назад +1

    👍👍👍 Excellent! Very interesting project! Even if it's not an exact "copy" of ZX Spectrum. Concerning these technical details, it's probably necessary to watch the video 2-3 times to understand everything even if the general idea is easy to catch. P.S. A bit pity that you didn't design printed circuit board.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      I'll likely do a schematic at the end.

    • @ITGuyinaction
      @ITGuyinaction 7 месяцев назад

      @@DrMattRegan You mean schematic diagram or board design?

  • @schmitzbeats6102
    @schmitzbeats6102 7 месяцев назад +1

    Marvelous! For quite some time I wondered how the ULA could be replaced by a giant lookup-table. You are makeing that work. Also I would appreciate a more in-depth video or article about your construction technique. Specifically which materials you use.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Many thanks! Yep, am thinking of putting forward a video or two on the construction technique. Stay tuned.

  • @melkiorwiseman5234
    @melkiorwiseman5234 2 месяца назад

    Very interesting, and it occurred to me after watching this part, that you could add another latch or two to enable you to bank switch part of the RAM (the part which doesn't hold the video memory) to allow the computer to be expanded to run either multiple programs or programs with large amounts of data. Edit: Maybe even simulate a RAM drive for fast loading of programs.

    • @DrMattRegan
      @DrMattRegan  2 месяца назад

      Yeah, good thoughts. It may make sense to put video RAM in I/O space.

    • @melkiorwiseman5234
      @melkiorwiseman5234 2 месяца назад

      @@DrMattRegan You could address video RAM using the OUT command. One method would be to have an output port to select which 256 byte section of the RAM (or which non-RAM device) you're addressing, and another to address the actual byte in video RAM (or device) which you want to access.
      But my original thought was that, if the video RAM is located somewhere in (for example) the lower 32K in RAM, then you could bank-switch some of the unused RAM in the chip using the upper 32K of memory space.
      (I'm assuming you're aware of the concept of Bank Switching)

  • @rappzz
    @rappzz 7 месяцев назад

    Awesome! I'm sticking to Logisim for now. Seeing a physical thing run must be thrilling though 😁

  • @sarkasaa
    @sarkasaa 7 месяцев назад

    Well, that subscription was a no-brainer!

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Welcome. Enjoy!

    • @borayurt66
      @borayurt66 7 месяцев назад

      Exactly. I don't understand more than half of it, but the parts that understand were enough to be hooked.

  • @billcarson9565
    @billcarson9565 7 месяцев назад

    Excellent, subscribed!

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Welcome aboard!

    • @saszab
      @saszab 6 месяцев назад +1

      Same here!

  • @DavidHembrow
    @DavidHembrow 7 месяцев назад +1

    Excellent Indeed. Better than the original in terms of CPU speed. Full speed memory access in the contended memory will of course make some timing dependent software incompatible, but I'm sure you've thought of that already and I expect it to be addressed in a layer video
    Btw, have you tried loading the I register with 01xxxxxx ? You'll then see snow on the screen with the original hardware.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Thanks David. Yeah, i'll use the wait signal to slow the CPU down using the circuit in the last video to emulate the DRAM memory access.
      VGA will mess things up badly too, so i may do a PAL version also.
      I've heard about the snow issue, but i haven't looked at it in detail,
      I suspect the 01XXXXXX XXXXXXXX as the refresh address probably triggers the clock halt circuitry in the ULA. It triggers it during port accesses.
      The raster scan sweep should keep the contents of the DRAM refreshed,. Thanks for that, i'll look into it.

    • @alexloktionoff6833
      @alexloktionoff6833 7 месяцев назад

      Actually I'd like to assemble without slow-downs, but more fast Z80 like 14Mhz @@DrMattRegan

  • @garry5280
    @garry5280 7 месяцев назад

    Theres an original prototype spectrum in the cambridge computer history museum built in much the same manner.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Interesting. I've seen the wire-wrapped version of the first PC. I think i remember seeing one of the 68000.

  • @Xsiondu
    @Xsiondu 7 месяцев назад

    That was awesome

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Thanks, glad you liked it.

  • @akkudakkupl
    @akkudakkupl 7 месяцев назад

    This might end up being a better ZX Spectrum than the original ;-)

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      At least it won’t use annoying ULA

    • @alanclarke4646
      @alanclarke4646 7 месяцев назад

      VGA output and no "dot crawl". That alone makes it better😊

  • @ostrov11
    @ostrov11 7 месяцев назад

    спасибо, хорошая работа.

  • @bkahlerventer
    @bkahlerventer 4 дня назад

    It might be overkill, but have you thought of using dual-ported RAM for the video RAM to avoid the bus contention?

    • @DrMattRegan
      @DrMattRegan  4 дня назад

      Yeah, i'm not a huge fan of dual ported memory, hard to get, expensive etc. I'd rather stick with more vanilla parts, but that's just my preference. I would use them for crossing clock domains though.

  • @frankowalker4662
    @frankowalker4662 7 месяцев назад

    Cool. And no ULA. 👍

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Thanks, it's a fun project.

    • @frankowalker4662
      @frankowalker4662 7 месяцев назад

      @@DrMattRegan I built the Harlequin 128 a couple of years ago. That was a lot of fun.

  • @ancipital
    @ancipital 7 месяцев назад

    Rather than soldering it all on - did you think about doing it all with wirewrapping techniques? I've not tried this myself (yet!) for anything though could be entertaining to give it a go. Also makes it easier to fix mistakes. I remember the first minicomputer I worked on (DEC VAX 8600), if you looked in the back, the whole backplane was wirewrapped!

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Yeah, I've tried wire-wrap in the past, but i actually prefer point to point soldering.
      I find wire-wrap (for me) to be slow. I learned to do this back in the day, when wire wrap sockets were expensive. Also i want to put it in a spectrum case.

    • @ancipital
      @ancipital 7 месяцев назад

      @@DrMattRegan Understandable going into a spectrum case, no room for wirewrapped. Good video though so thanks for the interesting start to finish of getting that working.

  • @yanparasuacurtisao
    @yanparasuacurtisao 2 месяца назад

    Witch Wires are this? Im building a z80 handwired computer and im using much silicon wires that i need to decap all te sides before soldering then

    • @DrMattRegan
      @DrMattRegan  2 месяца назад

      These are wire wrap wires, but I’d recommend using the ones with Kynar plastic around the wire. Kynar is quite heat tolerant and easiest to work with.

  • @fredimachadonet
    @fredimachadonet 7 месяцев назад

    This is awesome! Would it be possible to share the Arduino and C++ code to generate the video via USB? I wanted to do something similar with the TRS-80 Model 3 clone that I'm building, specially because I don't know how to build the video circuit.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Yep, i'll make mention of it in the next video.

  • @leechatt9709
    @leechatt9709 7 месяцев назад

    Superb work! I did a Zx81 like that and it never worked. Interesting idea cant wait to see this clocked at 3.5Mhz. I wounder how much faster it will go especially when youve put the design on a PCB. I suppose it does work as your making videos about it? Cool! Im currently working on a Nes Emulator. the PPU runs every tick and the C6502 runs at a Modulo of 3. Are you going to release the schematic and build parts when your done.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      It’s a work in progress. Did you use a CMOS z80?
      I did point-to-point wiring for a ZX81 in this series
      ruclips.net/p/PLjQDRjQfW-84WG47-5UjPz1BrXxc1acvd
      which did run at 3.25 MHz.

    • @leechatt9709
      @leechatt9709 7 месяцев назад

      I used a Zilog Z8400A PS. Have you ever thought of using a Teensy or a stm32 for the ULA?

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      I'd rather not use modern parts. The EPROM and SRAM were available in the 1990s.
      Will do a schematic once finalized.

    • @leechatt9709
      @leechatt9709 7 месяцев назад

      Cool old skool

  • @alexloktionoff6833
    @alexloktionoff6833 5 месяцев назад

    Could it be simpler to have two SRAM chips, probably even 3: 0 - ZX RAM 1 - pixels buffer 2 - attributes buffer?
    Clearly separate XZ ROM+RAM from Video and just use WAIT when Z80 writes into video memory.
    Even adding 1 or 2 SRAM chips could reduce total chips count, assembly and debugging?

    • @DrMattRegan
      @DrMattRegan  5 месяцев назад +2

      At some point, the memory storing the video data to displayed needs two paths into it, one from the CPU and one from the raster generator. Other than dual ported memory or VRAM, we are going to need some sort of multiplexing on the address lines, and this is where many of the chips are.

  • @ESPArduinoIDE
    @ESPArduinoIDE 7 месяцев назад +2

    I've always wondered why the authors of the clones didn't do this right away? Great job!

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Thanks. Yes, Superfo uses a second SRAM for storing the video. I still haven't to get it to work at speed yet (still working on the VGA output), but for the moment, the 74HC374 seems to do the trick.

    • @nickmoore385
      @nickmoore385 7 месяцев назад

      That makes sense now. I was wondering what the second RAM chip was for on his ZX-128- Max design.

  • @dogwalker666
    @dogwalker666 7 дней назад +1

    I built my first zx81 from a kit.

    • @DrMattRegan
      @DrMattRegan  7 дней назад +1

      How did you go getting it working? Any problems?

    • @dogwalker666
      @dogwalker666 7 дней назад

      @@DrMattRegan Actually it worked first time I was so impressed,
      Modified it to give composite video output to a Sony monitor, much clearer.

    • @DrMattRegan
      @DrMattRegan  6 дней назад +1

      Probably the biggest problem was the keyboard interrupt. I tried using the interupt acknowledgement sequence to cancel the INT signal. I got frustrated and just used the raster generator to limit it to 30 t states and that worked.

    • @dogwalker666
      @dogwalker666 6 дней назад

      @@DrMattRegan oh right.

  • @GregCoonrod
    @GregCoonrod 7 месяцев назад

    Just out of curiosity, why do point to point soldering instead of wire wrap?

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      I always found wire-wrap a bit cumbersome and slow. I find this technique easier myself.

  • @zxspectrum16KB
    @zxspectrum16KB 6 месяцев назад

    If u can get video ram without contention running on zx spectrum try some freescape titles they were very slow can u overclok the cpu to 16mhz and 32mhz? Try adding ula+ support or spectra + ulax?vdac2?

    • @DrMattRegan
      @DrMattRegan  6 месяцев назад

      Interesting, will look into it when i get a chence.

    • @zxspectrum16KB
      @zxspectrum16KB 6 месяцев назад

      @@DrMattRegan please do

  • @Mr.1.i
    @Mr.1.i 7 месяцев назад

    Do u think people would of paid an extra £5 on the price of a zx spectrum so it could have vram

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      Hmmm. Adding the upper 32k of Ram (to make it 48k) avoids the contention for those memory accesses. Probably better to spend the money there

  • @alexloktionoff6833
    @alexloktionoff6833 7 месяцев назад

    Is it possible to isolate Z80 A & D buses with just 10k resistors like in original ZX?

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      Yep, should be possible to use resistors, but you still need the 74HC374.

  • @peddersoldchap
    @peddersoldchap 7 месяцев назад

    Would it be possible to use this EPROM to replace the ULA on a real Spectrum?
    PS - I'm not that experienced with electronics, but I know how to solder and use a multimeter. And do basic circuit calculations.

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад

      No not really. This design uses SRAM, while the spectrum uses DRAM

    • @peddersoldchap
      @peddersoldchap 7 месяцев назад

      @@DrMattRegan Would it be possible to adapt the design?

    • @melkiorwiseman5234
      @melkiorwiseman5234 2 месяца назад +1

      @@peddersoldchap I note that there was never a reply, but the reply would probably have been "not really, because I'd have no use for such an adaptation since I'm not using a ULA, but feel free to look into that yourself if you think you'd have a use for it."
      My reply would be that as long as the number of inputs required doesn't exceed the number of address lines on the EPROM, and the number of outputs doesn't exceed the number of data lines on the EPROM, it should be possible to do it, but you'd have to figure out for yourself how to program the EPROM to provide the correct outputs from all possible inputs.
      Logically, it wouldn't be all that hard. It's just a bit of a slog, having to take account of every possible input and then ensuring that every possible input provides a sensible output, and compiling a bit-pattern for every memory location so that it can be programmed with the correct pattern later.
      The only remaining issue is ensuring that the EPROM which you use is of a type which can respond quickly enough to keep up with the input signals.

    • @peddersoldchap
      @peddersoldchap 2 месяца назад

      @@melkiorwiseman5234 thank you for your thorough reply.
      I would love there was an open source solution for implementing a ULA.

    • @melkiorwiseman5234
      @melkiorwiseman5234 2 месяца назад

      @@peddersoldchap The only part that a EPROM could not do would be to generate signals, such as from a clock circuit. If you needed more than 8 output lines, you could parallel the address and access lines for two EPROMs to get 16 outputs.
      Maybe someone will come up with a solution, but I could probably do it myself if (and only if) I knew all of the possible inputs to a ULA and all of the corresponding required outputs. That's on the proviso that, as previously stated, the ULA didn't have any clock or timing role.

  • @_wave64_
    @_wave64_ 7 месяцев назад

    Can you share what wire and insulating you're using?

    • @DrMattRegan
      @DrMattRegan  7 месяцев назад +1

      So this is the exact wire i use www.jaycar.com.au/blue-wire-wrap-wire-on-spool/p/WW4346?pos=1&queryId=5bf58702e3ae70ed5bcbb145f0e4f3ef
      It's from a local retailer, but it is kynar brand, you should be able to find it on ebay.

  • @DAVIDGREGORYKERR
    @DAVIDGREGORYKERR 2 месяца назад

    Has anyone tried building a TI-99/4A with 512K of RAM and ROM so it will work as intended and not throw the out of memory error

    • @DrMattRegan
      @DrMattRegan  Месяц назад

      TI-99/4A is a bit outside my experience unfortunately.

  • @ZXSpectrum128K
    @ZXSpectrum128K 3 месяца назад

    Ula+ ulax vdac2 spectra have you heard of these?

    • @DrMattRegan
      @DrMattRegan  3 месяца назад

      Yeah, I’m probably not going to go down the path of improving the ULA, kinda more interested in replacing the Z80 with TTL logic.

    • @ZXSpectrum128K
      @ZXSpectrum128K 3 месяца назад

      @@DrMattRegan what about z80 at 8mhz and video ram at 16mhz?

  • @ZXSpectrum128K
    @ZXSpectrum128K 5 месяцев назад

    Can send u links if u need them....

    • @Mi-583
      @Mi-583 3 месяца назад

      You could try to put the links in your ch description and tell people to go there within the week before you take them down?

  • @68HC060
    @68HC060 Месяц назад

    A latch could probably do it...

    • @DrMattRegan
      @DrMattRegan  Месяц назад +1

      @@68HC060yeah, not sure. The data would become unstable during the second read.

  • @ZXSpectrum128K
    @ZXSpectrum128K 5 месяцев назад

    Cant reply to your comment keep getting error

    • @DrMattRegan
      @DrMattRegan  5 месяцев назад

      Huh... I see this one. Not sure what is going on with youtube.

    • @ZXSpectrum128K
      @ZXSpectrum128K 5 месяцев назад

      @@DrMattRegan I'm not complaining they reinstated my channel after small claims tribunal