DrMattRegan
DrMattRegan
  • 87
  • 352 225
VGA ZX Spectrum - Schematic Part 2
Here i go over the schematic for the video circuit and the code for the raster generator.
Schematic Part1 : ua-cam.com/video/N36iWYcXBAE/v-deo.html
There are a couple of minor changes to the schematic.
The most up-to-date version of the schematic is available on GitHub:
github.com/Turing6502/ZX-Spectrum-No-ULA
Переглядів: 1 829

Відео

VGA ZX Spectrum - Schematic
Переглядів 6 тис.Місяць тому
Schematic diagram for the machine. The most up-to-date version of the schematic is available on GitHub: github.com/Turing6502/ZX-Spectrum-No-ULA Part 1: ua-cam.com/video/u8TRJXLCfQo/v-deo.html Part 2: ua-cam.com/video/qO1dNRKHeb4/v-deo.html Part 3: ua-cam.com/video/If8GkpuakHM/v-deo.html Part 4: ua-cam.com/video/jdkaOuP_c5I/v-deo.html
TTL Apple 2 computer. ALU and Status
Переглядів 4 тис.Місяць тому
Continuing to document the SAP6502 redesign. Schematics are available from: www.github.com/Turing6502/SAP6502 Part 1: Sequencer ua-cam.com/video/mo9VvPProoY/v-deo.html Part 2: Program Counter, Registers and Memory ua-cam.com/video/ZC3RlHvQSic/v-deo.html SAP6502: ua-cam.com/play/PLjQDRjQfW-85S5QkX8wZbkqichM6TLYYt.html Microcode: ua-cam.com/play/PLjQDRjQfW-846ceqO1tFgj6NP53JjckfB.html Introductio...
Switches to CPUs: Minutes counter
Переглядів 1,1 тис.Місяць тому
We make the minutes counter for the clock. Part 1: Binary numbers - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html Part 3: Relay based logic - ua-cam.com/video/FPGLLOh_02Y/v-deo.html Part 4: Latches - ua-cam.com/video/rv0Gt7qPR0k/v-deo.html Part 5: SR Latch - ua-cam.com/video/JDJzhQL1npo/v-deo.html Part 6: Wired OR gates - ua-cam.com/vide...
VGA ZX Spectrum - Testing
Переглядів 3,4 тис.2 місяці тому
In this short series, I'm going to build a ZX spectrum using an EPROM instead of a ULA. In this video, i looks at getting the VGA circuit to work. Part 1: ua-cam.com/video/u8TRJXLCfQo/v-deo.html Part 2: ua-cam.com/video/qO1dNRKHeb4/v-deo.html Part 3: ua-cam.com/video/If8GkpuakHM/v-deo.html Part 4: This video Part 5: ua-cam.com/video/N36iWYcXBAE/v-deo.html
Switches to CPUs: Ripple Counter
Переглядів 1,2 тис.2 місяці тому
We make a D-type flip-flop then convert it into a ripple counter. Part 1: Binary numbers - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html Part 3: Relay based logic - ua-cam.com/video/FPGLLOh_02Y/v-deo.html Part 4: Latches - ua-cam.com/video/rv0Gt7qPR0k/v-deo.html Part 5: SR Latch - ua-cam.com/video/JDJzhQL1npo/v-deo.html Part 6: Wired OR ...
VGA ZX Spectrum - No ULA, No FPGAs
Переглядів 13 тис.3 місяці тому
In this short series, I'm going to build a ZX spectrum using an EPROM instead of a ULA. In this video, i looks at getting the VGA circuit to work. Part 1: ua-cam.com/video/u8TRJXLCfQo/v-deo.html Part 2: ua-cam.com/video/qO1dNRKHeb4/v-deo.html Part 3: This video Part 4: ua-cam.com/video/jdkaOuP_c5I/v-deo.html Part 5: ua-cam.com/video/N36iWYcXBAE/v-deo.html
Switches to CPUs: Flip-Flops1
Переглядів 1 тис.3 місяці тому
Part 1: Binary numbers - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html Part 3: Relay based logic - ua-cam.com/video/FPGLLOh_02Y/v-deo.html Part 4: Latches - ua-cam.com/video/rv0Gt7qPR0k/v-deo.html Part 5: SR Latch - ua-cam.com/video/JDJzhQL1npo/v-deo.html Part 6: Wired OR gates - ua-cam.com/video/WCnnezTIf1g/v-deo.html
Switches to CPUs: Wired OR gate
Переглядів 7283 місяці тому
Part 1: Binary numbers - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html Part 3: Relay based logic - ua-cam.com/video/FPGLLOh_02Y/v-deo.html Part 4: Latches - ua-cam.com/video/rv0Gt7qPR0k/v-deo.html Part 5: SR Latch - ua-cam.com/video/JDJzhQL1npo/v-deo.html Part 6: Wired OR gates - ua-cam.com/video/WCnnezTIf1g/v-deo.html Part 7: Flip Flops...
Switches to CPUs: Set Reset Latch
Переглядів 1,4 тис.4 місяці тому
Part 1: Binary numbers - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html Part 3: Relay based logic - ua-cam.com/video/FPGLLOh_02Y/v-deo.html Part 4: Latches - ua-cam.com/video/rv0Gt7qPR0k/v-deo.html Part 5: SR Latch - ua-cam.com/video/JDJzhQL1npo/v-deo.html Part 6: Wired OR gates - ua-cam.com/video/WCnnezTIf1g/v-deo.html Part 7: Flip Flops...
Switches to CPUs: Relay based latches
Переглядів 1,4 тис.4 місяці тому
We look at implementing a latch with relays. Part 1: Binary numbers - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html Part 3: Relay based logic - ua-cam.com/video/FPGLLOh_02Y/v-deo.html Part 4: Latches - ua-cam.com/video/rv0Gt7qPR0k/v-deo.html Part 5: SR Latch - ua-cam.com/video/JDJzhQL1npo/v-deo.html Part 6: Wired OR gates - ua-cam.com/vi...
Switches to CPUs: Relay based logic
Переглядів 2,2 тис.5 місяців тому
We look at implementing our 2-input gates with relays. Part 1: Binary numbers - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html Part 3: Relay based logic - ua-cam.com/video/FPGLLOh_02Y/v-deo.html Part 4: Latches - ua-cam.com/video/rv0Gt7qPR0k/v-deo.html Part 5: SR Latch - ua-cam.com/video/JDJzhQL1npo/v-deo.html Part 6: Wired OR gates - ua-...
Switches to CPUs: 2 Input Gates
Переглядів 1,1 тис.5 місяців тому
Here we go over the buffer, NOT gate, AND gate and OR gate. I'm waiting on some parts from China to finish the ZX Spectrum series. Part 1: Binary numbers - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html Part 3: Relay based logic - ua-cam.com/video/FPGLLOh_02Y/v-deo.html Part 4: Latches - ua-cam.com/video/rv0Gt7qPR0k/v-deo.html Part 5: SR ...
Digital Logic Explained
Переглядів 3,4 тис.5 місяців тому
In this series, I'm going to build a digital clock. It leads to an alarm clock, then an 8-bit TTL CPU. Absolutely no background knowledge is required for this series. This is a quick way for the motivated self-learner to understand how microprocessors work. Part 1: Introduction and Binary - ua-cam.com/video/BYN8Zmk6HJY/v-deo.html Part 2: 2-input gates - ua-cam.com/video/bCuBbsakUcA/v-deo.html P...
ZX Spectrum DRAM timing explained.
Переглядів 6 тис.6 місяців тому
Page mode DRAM access explored. No ULA build video: ua-cam.com/video/u8TRJXLCfQo/v-deo.html 16K ZX81 vs 16K ZX Spectrum: ua-cam.com/video/mL0K5u1zkko/v-deo.html
ZX Spectrum build video circuit.
Переглядів 13 тис.7 місяців тому
ZX Spectrum build video circuit.
ZX Spectrum build, No ULA.
Переглядів 21 тис.7 місяців тому
ZX Spectrum build, No ULA.
16K ZX81 vs 16K ZX Spectrum
Переглядів 7 тис.8 місяців тому
16K ZX81 vs 16K ZX Spectrum
ZX 16K RAM expansion explained
Переглядів 2,7 тис.8 місяців тому
ZX 16K RAM expansion explained
ZX81 Video Circuit Finale.
Переглядів 4,9 тис.9 місяців тому
ZX81 Video Circuit Finale.
SAP6502 Microcode - Finale
Переглядів 1,4 тис.10 місяців тому
SAP6502 Microcode - Finale
ZX81 Video Circuit Part 6. ZX80 HSYNC and Bring Up
Переглядів 1,8 тис.10 місяців тому
ZX81 Video Circuit Part 6. ZX80 HSYNC and Bring Up
ZX81 Video Circuit Part 5: How interrupt is generated for HSYNC
Переглядів 1,9 тис.11 місяців тому
ZX81 Video Circuit Part 5: How interrupt is generated for HSYNC
ZX81 Video Circuit Part 4: Display Files
Переглядів 2,1 тис.11 місяців тому
ZX81 Video Circuit Part 4: Display Files
ZX81 Video Circuit Part 3: TEXT.
Переглядів 2,9 тис.11 місяців тому
ZX81 Video Circuit Part 3: TEXT.
ZX81 Video Circuit Part 2. Hi-res display of 256 x 192 pixels.
Переглядів 4,3 тис.Рік тому
ZX81 Video Circuit Part 2. Hi-res display of 256 x 192 pixels.
ZX81 Video Circuit Part 1: Z80 Solo.
Переглядів 13 тис.Рік тому
ZX81 Video Circuit Part 1: Z80 Solo.
TTL Apple2e Part 2: Memory board and Program Counter
Переглядів 1,6 тис.Рік тому
TTL Apple2e Part 2: Memory board and Program Counter
TTL Apple 2 computer. No 6502 required.
Переглядів 14 тис.Рік тому
TTL Apple 2 computer. No 6502 required.
SAP6502 Microcode - Stack operations
Переглядів 935Рік тому
SAP6502 Microcode - Stack operations

КОМЕНТАРІ

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

    At 13:32 in the IORQ decode section you show the active low O2 output from the 138 feeding the clock input of the 374 to initiate an IO write, but isn't the 374 clock positive edge triggered ? The 245 in the IO read section should correctly respond to the active low O4 output from the 138.

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

      Correct, but the data from the Z80 is valid on the data bus from before the start of IORQ until after the end of IORQ, so for writes at least, it doesn't really matter whether you use the negative edge of IORQ or the positive edge of IORQ.

  • @briancampbell179
    @briancampbell179 8 днів тому

    I just found your videos. The thought of building a 6502 from scratch sounds very appealing. My first computer was a SYM-1 running a 6502, so I have a long-standing love for the old chip. As for your comment about the original architecture being too complicated, challenge accepted! 😃 I'd love to build a replica at least at the block level that runs in real time and is identical at the cycle level.

    • @DrMattRegan
      @DrMattRegan 8 днів тому

      @@briancampbell179 welcome. Excellent, have a crack at building one. It may also be worth watching the Turing6502 series.

    • @briancampbell179
      @briancampbell179 8 днів тому

      @@DrMattRegan , shall do.

  • @acmtretro
    @acmtretro 9 днів тому

    Some games rely on the 'floating' (470R resistors etc) data bus for their video frame timing (essentially performing an I/O read from 0xFF, until because of the ULA / Z80 contention control and the floating data bus on early issue machines, they begin to see spurious video RAM data when the ULA begins to render the frame. A game could then begin writing a new screen update safe in the knowledge it would be 'behind' the current scan position). On later machines (or any which properly isolate the ULA / CPU data paths with tristate buffers) this could cause the game to hang as video data would no longer 'leak' onto the data bus. This might be related to some of the games not working? (This is a problem for software emulators too - the ZX spectrum has some peculiar quirks brought about by Sinclair's creative design approach, which games developers in particular often exploited, and which you have to emulate too - unfortunately - for proper compatibility)

  • @leechatt9709
    @leechatt9709 11 днів тому

    Awesome Work!

  • @crappoman
    @crappoman 12 днів тому

    This is amazing. I had sort of worked out what this part of the schematic was doing since your last video, but really wanted your explanation too. I'm halfway through a design based on yours that will be a drop-in spectrum motherboard replacement, like a harlequin but a lot simpler and with a lot less ICs and all surface mount except the ROM/RAM/CPU. Could you replace U15 (74HC174) with the unused half of U8 (74LS74) ? It seems a waste as only 1 part of U15 is being used now that you have simplified the circuitry around U8A.

    • @DrMattRegan
      @DrMattRegan 12 днів тому

      Thanks for the feedback. You can certainly use the other half of U8 instead of U15. U15 was initially used allow pixel level control of the border signal, but that's not needed in the final design.

  • @d.j.peters
    @d.j.peters 12 днів тому

    Do you have done PAL for us european and the rest of the world ?

    • @DrMattRegan
      @DrMattRegan 6 днів тому

      Good to know there's interest out there for PAL. I've had one for PAL on the back-burner for a while, so i might advance it up the schedule.

  • @archarontsm
    @archarontsm 13 днів тому

    Hi! Can you help me, please with coefficients for VideoFSA? I'm using 14.000.000 oscillator, so 14.000.000/31500/8=55.55555, so i've rounded it to HORIZONTALTOTAL=56 (maybe I need 55?), 56*12%=6,72 HSYNCWIDTH=7 all others are left as it was in project. Need i change something else? I'm trying to run emulation in the SimulIDE, all is fine, but as I see in the eeprom, the sequence is: 0-1F (ROW) -> 4000 -> 4001...4007 (HBORDER) -> C000 -> D000-D006 (HSYNC) -> BF80 (ZEROES!) -> 0 and all starts over. Why is it generating BF80 jump with 56 in HORIZONTALTOTAL? [D001, D002, D003, D004, D005, D006, BF80 sequence i see in the hex editor]. To simplify wiring in the emulator, i've just replaced shuffle/deshuffle functions with just "return val" - can it be cause ? Thank you!

    • @stevetodd7383
      @stevetodd7383 13 днів тому

      The 14.318MHz clock has a special reason, it’s 4 times the NTSC sub carrier frequency, and VGA was built on top of the NTSC standard. Trying to get a clock of exactly 14MHz to work is going to be at best problematic, I’d suggest your best option is to replace the crystal.

    • @archarontsm
      @archarontsm 13 днів тому

      @@stevetodd7383 Ok, IC, most of zx clones (ex-ussr) has 14 MHz oscillator and 3.5/7.0 Mhz CPU clock. That's why i'm using 14.0. I think, VGA is not so dumb to allow only NTSC -based timings... But who knows :) Will order new crystals and try it out. But. I cannot understand why there is jump to BF80 even if default settings used? Just revert back my settings and still there is BF80 .... Need to investigate the code more carefully.

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      That odd. All i would do is change HORIZONTALTOTAL to 56 as you,ve done. I'm using the version of the code with the display, i've set HORIZONTALTOTAL to 56 and put the "return val" into the shuffle and deshuffle routines. The sequence I'm getting is 0000->...->001f, 4000..4007, c000, d000...d006, c080, 4011..4017, 2000 which is the correct sequence for the first scanline (c080 is because we have the spectrum mapping for the addresses) Are you using visual studio 2022 and the display version of the code?

    • @stevetodd7383
      @stevetodd7383 13 днів тому

      @@archarontsm don’t forget that the standard Spectrum runs PAL timings at 50Hz rather than NTSC at 60. It’s a different sub carrier.

    • @archarontsm
      @archarontsm 12 днів тому

      @@DrMattRegan That's wierd. It seems, there is a bug in the SimulIDE. Created EPROM, 8-bit data wide. Load BIN. At address 0x1A000 (0xD000 * 2) I can clearly see: 01 D0 02 D0 03 D0 04 D0 05 D0 06 D0 80 C0 C080!!!! But if I switch to 16-bit wide data and load same file, I can see at address 0xD000 this sequence: D001, D002, D003, D004, D005, D006, BF80 .... I don't understand, why there is BF80 instead of C080 ... Bug in viewer? Ok, I've used logic analyzer and there is BF80 on VD bus... bug in EPROM loader, maybe...

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

    (E)EPROMS - poor's man FPGA ;) (if they are fast enough) - in my times they were 250-450ns so no luck were with me/us ;)

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      Well EPROMs are certainly cheaper than FPGAs (and easier to get and in plentiful supply). FPGAs are really the only way to go for circuits above 10-20 MHz. But from a learning perspective, i think people get a better visceral feel for how a finite state machine works with an EPROM with flipflops rather than from a big case statement in verilog. Really the purpose of this series is to demonstrate a FSM so we can build a Random Access Turing machine in the next series.

  • @duke_of_oz
    @duke_of_oz 13 днів тому

    Big thanks from Australia! I was planning a similar project for a long time, but there's always something in the way. Hopefully your work will give me enough motivation now 😊

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      A big your welcome from Australia too (sorry, i couldn't resist). Just do it, hand's no learning really helps cement the concepts.

    • @duke_of_oz
      @duke_of_oz 11 днів тому

      @DrMattRegan ha ha, that explains it now. z80 was not exactly popular in the US. Whereabouts in Australia? I'm in Brisbane

    • @DrMattRegan
      @DrMattRegan 11 днів тому

      Melbourne, although I did live in the US for 10 years.

  • @stevetodd7383
    @stevetodd7383 13 днів тому

    One point, technically the front porch and back porch are part of the blanking interval and shouldn’t receive colour data (i.e. you should send black). Certainly if you get to DVI digital transmission then the back porch is part of the blank and can’t receive colour, while the front porch can receive display data and you can use it to fiddle with centring the image. It’s probably because of that your monitor is producing freaky results if you have colour data next to the sync signals.

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      Yes, i you are right. We really need to generate a blank front and back porch that is different from the border colour. The ULA must do this to generate the colour burst signal, but it's not well documented.

  • @frankowalker4662
    @frankowalker4662 13 днів тому

    That's fantastic.

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      Enjoy, thanks for the feedback.

  • @stevetodd7383
    @stevetodd7383 13 днів тому

    Looking forwards to seeing the Z80 as TTL.

    • @DrMattRegan
      @DrMattRegan 11 днів тому

      Excellent, I've working to get the machine to a point where it's basically octal d-type flipflops, EPROMs and SRAMs. Will still need a shift register and multiplexers for video out, but the bulk of the machine will just be 3 different chip types.

  • @GadgetUK164
    @GadgetUK164 13 днів тому

    Brilliant!!!!

  • @malcolmgibson6288
    @malcolmgibson6288 13 днів тому

    Looks like I'll be ordering more chips and things. Next warm up the soldering iron. Great work.

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      Excellent. It's been a fun project.

  • @PaulDriverPlus
    @PaulDriverPlus 13 днів тому

    Great work as always.

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      Thanks for the feedback! Enjoy.

  • @zilog1
    @zilog1 13 днів тому

    haha.the back of my perf board project looks exactly the same. I love spaghetti

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      Yeah, it doesn't start out that way but it always seems to end up as a rat's nest.

  • @zilog1
    @zilog1 13 днів тому

    Yo sweet. excited for this one

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      Enjoy, let me know what you think of it.

  • @archarontsm
    @archarontsm 14 днів тому

    Great project! How about flash signal? Will it be generated from combined VA signals, or some additional counter will be used? What about U15, there is some tricky delay, is it for video signal disable while not in visible display area?

    • @DrMattRegan
      @DrMattRegan 13 днів тому

      Enjoy. I was thinking of just using a 5555 timer, (AND) gating it with flash. This will feed into an exclusive OR gate on the pixel data. I actually simplified U15 in the next video. Originally i wanted to control/shift the timing of the border signal down to one pixel at a time, but it can all be simplified by delaying using HalfCPUClockBar on the flipflop feeding it.

    • @archarontsm
      @archarontsm 13 днів тому

      ​@@DrMattRegan VSync is asserted on every frame? Then you can use 393 counter to divide it by 4 then another time by 4 (or 8/2) to get one flash toggle per 16 frames. Or something like that. I think this will be much easier than 5555 and for sure more accurate.

    • @archarontsm
      @archarontsm 13 днів тому

      Or use INT signal for correct timings alignment with begin frame interrupt

  • @pbpraha789
    @pbpraha789 16 днів тому

    I've just found your videos and they're great. would really love it if you dropped the silly movie clips though, they are really distracting.

    • @DrMattRegan
      @DrMattRegan 11 днів тому

      Welcome and enjoy. The B-Roll is tricky, because i was told the Turing6502 series was very "dry", so i tried to lighten it up a bit. If it's any consolation, i've disabled midroll advertisements, so the video clips would normally be ads.

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

    why a tll 6502...? its a down grade the problem is this vintage computer....has some custom chips. isay that you make a magnificent work to clone the ii...... and i watch all the episodes.....nice.....

    • @DrMattRegan
      @DrMattRegan 17 днів тому

      You might like this playlist instead ua-cam.com/play/PLjQDRjQfW-85BWo4IC3WYUDZ-hC8qJsqO.html

  • @bkahlerventer
    @bkahlerventer 22 дні тому

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

    • @DrMattRegan
      @DrMattRegan 22 дні тому

      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.

  • @PaulDriverPlus
    @PaulDriverPlus 25 днів тому

    It's a pity more people haven't watched this series.

    • @DrMattRegan
      @DrMattRegan 25 днів тому

      @@PaulDriverPlus yeah. I really liked this series.

  • @ntal5859
    @ntal5859 25 днів тому

    Why not use a jk flip flop with q and not q for cpu skew problem, would do away with inverter as you already using data flip flop..

    • @DrMattRegan
      @DrMattRegan 25 днів тому

      @@ntal5859 I want all the clocks to be in phase with each other, not just CPUClock and CPUClockbar. That’s the main reason.

  • @brianflint133
    @brianflint133 26 днів тому

    Back in 1980, as an electronic design engineer, my job at Sinclair Research was to put all of the TTL logic which was on the ZX80 into a Uncommitted Logic Array, which was used on the ZX81. I had to also include the additional logic ( counters etc ) which would do the sync timing so that the screen would not flicker when a key on the key board was pressed. Most of the electronic design for this was originated by Jim Westwood. He was an electronic design Engineer and also my boss who I reported to.

    • @DrMattRegan
      @DrMattRegan 26 днів тому

      Great to hear from you. The ZX80/81 video circuit is the most creative Z80 design I've seen, which is why i decided to do a video series about it. Do you see any glaring errors in the videos?

    • @brianflint133
      @brianflint133 25 днів тому

      @@DrMattRegan I was effectively a 'Hardware Design Engineer' on this project, and did not have the knowledge of the tricks which where employed in the software code which made use of the particular features which the Z80 CPU had. This was done by Jim Westwood. So I can't say if you have any errors in your analysis of how it worked. I must say I am very impressed in how you have managed to figure out the relationship of the particular features of the Z80 workings and the generation of the sync signals.

    • @DrMattRegan
      @DrMattRegan 25 днів тому

      Thanks for the feedback. In the Spectrum series, I've used an EPROM as a finite state machine to do the raster generation which was fun. Now I'm working on a series where i replace both the ULA and Z80 with TTL logic, EPROMs and static RAM. These machines were such wonderful learning tools, and i think there is still some more people can gain from them.

    • @brianflint133
      @brianflint133 24 дні тому

      @@DrMattRegan Just before the ZX81 was released in 1981 I left Sinclair Research. In my next job I did a lot of logic design mainly using the CD4000 series of chips. I then got into design using a microprocessor 6502. I did my code in machine code putting HEX values into an EPROM programmer's memory. I would write the code on paper in assembly code. I made use of the timing of each instruction ( microseconds ) and add them together to produce an output pulse from the cpu port of so many micro or milliseconds width. I also tended to use software UARTS , again by counting microsecond cycles of code. No software engineer would be taught this type of stuff today - all high level coding C++ etc. Later I did coding in C language as I was one of a number of Engineers and we all had to work the same way. I also did coding/design for FPGAs ( Altera ) which was used to process digital video and audio streams used in the Broadcast Industry. As I started out as an analogue Engineer in the late 1960s I would also do RF work such as making a transmission line carrying a serial digital video signal ( 3Gpbs ) have a return loss below a certain value.

    • @DrMattRegan
      @DrMattRegan 23 дні тому

      Wow, sounds like you've has a pretty wide ranging career. I agree, it's a pitty that low level stuff isn't really being taught anymore. I actually think it should possibly be taught at the high school level. Do we really need 2 years of physics and 2 years of chemistry in the final years? Maybe a year of fundamental computer science would be good. BTW: if you're a 6502 fan, i have a couple of playlists. The Turing6502 playlist gets right back to the fundamentals of computing. The SAP6502 is an expansion of the SAP1 architecture to run 6502 code, and i did a separate playlist on the microcode. You may get a kick out of watching them.

  • @brianflint133
    @brianflint133 26 днів тому

    I was part of the design team working on the ZX80 back in 1980. The design of how the sync pulse is generated using the Z80 cpu and TTL logic was done by Jim Westwood a design engineer. Clive Sinclair had very little input at this level of the design.

    • @DrMattRegan
      @DrMattRegan 26 днів тому

      @@brianflint133 apologies for not being clearer. I know Clive didn’t really have much technical input. I tried to use the term “Sir Clive’s team”. It’s hard to follow when you introduce too many individual names in a short video. Hopefully MicroMen made it clearer.

    • @brianflint133
      @brianflint133 26 днів тому

      @@DrMattRegan I remember the day a meeting was called at Sinclair Research by Sir Clive Sinclair. There may have been around 4 or 5 people present. He told us we were to be making a computer ( The ZX80 ) which would sell for less than £100.

    • @DrMattRegan
      @DrMattRegan 26 днів тому

      @@brianflint133 Excellent. Thank you for your contribution. How accurate was the MicroMen depiction? I saved money from a paper round to buy a ZX81 (my first computer) and learned BASIC on it. I went on to do a PhD in computer science and designed GPUs at NVIDIA.

    • @brianflint133
      @brianflint133 25 днів тому

      @@DrMattRegan The MicroMen depiction is fairly accurate. I will have to watch it again. I joined Sinclair Radionics in 1971 - I worked on a small portable TV ( Black and White with 2 inch screen ) for a number of years. I also got involved in getting Sinclair's first pocket calculator into production - The Executive. The company at this time was based in St Ives in Cambridgeshire. Around 1979 the company spilt up and Sinclair Research was formed and was based in Cambridge City Centre on King's Parade - just opposite to the entrance to Kings College.

  • @dogwalker666
    @dogwalker666 26 днів тому

    I built my first zx81 from a kit.

    • @DrMattRegan
      @DrMattRegan 26 днів тому

      How did you go getting it working? Any problems?

    • @dogwalker666
      @dogwalker666 25 днів тому

      @@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 25 днів тому

      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 25 днів тому

      @@DrMattRegan oh right.

  • @alexzor971
    @alexzor971 26 днів тому

    Hi. Unable to compile VideoFSA. Compiler Error C2065 Undeclared identifier IDI_VIDEOFSA and IDC_VIDEOFSA

    • @DrMattRegan
      @DrMattRegan 26 днів тому

      I just tried this procedure and it works. Under visual studio 2022 (which is free) Create a new project -> Windows Desktop Application Call it VideoFSA Copy the Github version VideoFSA.cpp and VideoFSA.h into the VideoFSA directory. This should replace the existing autogenerated copies of these files. Run.

  • @crappoman
    @crappoman 27 днів тому

    This is fantastic, well done. I've always wanted to re-create the Spectrum but using modern parts like SRAM and no ULA. In your schematic, the raster rom data line are interleaved, Q0/Q8/Q1/Q9... Is that to make the VDx lines consecutive and easier to route ? And is that what the SwizzleData() funtions are for, to encode/decode the data to suit the physical chip pinout ?

    • @DrMattRegan
      @DrMattRegan 27 днів тому

      Exactly. For some reason, i find the Q0/Q8/Q1/Q9... native format of the 27C322 almost impossible to debug. In single stepping mode, i can normally read off the hexadecimal value on the data pins with a logic probe going around a chip. I have to concentrate a lot more and make more mistakes in Q0/Q8/Q1/Q9... format, compared to Q0/Q1/Q2/Q3... format. So it's mainly to make debugging easier. The SwizzleData() function encodes the data before programming such that you can thing of the outputs as being Q0/Q1/Q2/Q3...

  • @vitorfilho37
    @vitorfilho37 27 днів тому

    Dr. Reagan muito obrigado pelos seus ensinamentos! Estou aprendendo muito!

    • @DrMattRegan
      @DrMattRegan 27 днів тому

      Thanks for the feedback, enjoy.

  • @kti5682
    @kti5682 28 днів тому

    I'm just trying to simulate your version of the SAP-1 in Digital. Thankfully it only complains if two outputs are driving the W bus during simulation which shouldn't happen anyway. I got a question about the graph at 2:17 , the top left D-flip-flop appears to have the Clock1 as clock and Clock2bar at OE this is flipped in the schematic, which one should I assume to be correct?

    • @DrMattRegan
      @DrMattRegan 28 днів тому

      Well spotted. The top flip-flop drives the W-Bus, which is latched on the rising edge of clock1 but the data is presented on the W-Bus while clock2 is high (clock2Bar is low). So the block diagram is correct and it's an error in the schematic.

    • @kti5682
      @kti5682 27 днів тому

      @@DrMattRegan Thanks for your response. I was leaning this way once I rewatched the first video in the series but to me schematics are the truth because the hardware on my desk derives from it and has gone through a design rule check and through a design process. There are more issues, the reset connection is missing on the lower left D flip flop, and OE on the EEPROM as well.

  • @shinsawai1
    @shinsawai1 28 днів тому

    Great project! Thank you for sharing this video series. Do you have suggestions for a replacement chip that is currently available for the raster ROM chip? They are no longer produced. I can’t find ithe one used in the schematic anywhere near me.

    • @DrMattRegan
      @DrMattRegan 28 днів тому

      Yep, you could use a pair of 27C512s

    • @shinsawai1
      @shinsawai1 27 днів тому

      @@DrMattRegan Ah Great! Thank you very much!

  • @evolutionalgd
    @evolutionalgd 29 днів тому

    Excellent job this. Been following the series, and you actually pulled it off. Hats off sir.

    • @DrMattRegan
      @DrMattRegan 29 днів тому

      Thanks for the feedback, enjoy!

  • @bryede
    @bryede Місяць тому

    Huh, $1A performs a NOP on a real 6502 ($EA being the official NOP opcode) so I don't know why you'd use it, unless it's some kind of breakpoint marker in the development environment.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Just haven't gotten around to implementing illegal codes yet www.masswerk.at/6502/6502_instruction_set.html

  • @MichalKobuszewski
    @MichalKobuszewski Місяць тому

    After a few nights of debugging timing issues with TTL logic with a modern 4-channel, digital storage oscilloscope I can't imagine how hard things must have been back in the day. There's a great non-fiction book that touches a lot on the toll it takes on people: "The Soul of the New Machine" by Tracy Kidder. After endlessly dealing with nanoseconds, one of the protagonists left a note: "I’m going to a commune in Vermont and will deal with no unit of time shorter than a season."

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Yep, these timing issues can be tricky. If i can i get the circuit running at a slow speed but it's not always possible, particularly debugging video circuits.

  • @PaulDriverPlus
    @PaulDriverPlus Місяць тому

    Impressive, this is a very nice piece of work, congratulations on pulling this off.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      @@PaulDriverPlus glad you like it.

  • @notCalle
    @notCalle Місяць тому

    10:38 I did not expect to see the System ROM on the "ULA" side of the machine, instead of the traditional Z80 side, especially given that tight worst-case timing constraints. But... I guess SRAMs and ROMs do stack up neatly for compact signal routing.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Yeah, you're right. I could have put the ROM closer to the CPU now that you mention it. During the testing phase i tend to put a dummy image in the ROM to test the raster generator running without the CPU running, but i haven't shown that in the videos.

  • @GadgetUK164
    @GadgetUK164 Місяць тому

    Brilliant!!! Looking forward to the next part!

  • @kokodin5895
    @kokodin5895 Місяць тому

    maybe a stupid question if we dealing with barely fast enough rom and fast ram with extra free unused space outside of memory map, wouldn't it be beneficial to timings to transfer rom into that ram and remap the ram as rom address space, the only problem is you would need some kind of one time executable boot loader program to transfer spectrum rom to upper ram and boot from there as a normal address space

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Yeah, I wanted to stick with the spectrum ROM, but when I play the games via the external hardware, it does download the entire 64k into RAM and execute from there.

    • @gdclemo
      @gdclemo Місяць тому

      I guess you could, but it'd be complicated. Assuming you copy with the Z80 itself, you'd have to start in some sort of slower clock mode that paged the ROM in but was still able to write to RAM (possibly with a bigger than 16K ROM so you've got room for the copy program, although the 16/48K Spectrum ROM does have a little free space to fit the copy code in, but since both start at address zero you'd need to relocate when copying). After copying, this code would have to do something like write to an IO port to switch to normal operations. Also the Spectrum ROM and some games incorrectly write to ROM space, so you'd need to write-protect the bottom 16K of RAM after you were done.

    • @DrMattRegan
      @DrMattRegan 26 днів тому

      In the next project, where i use a TTL CPU instead of the Z80, i'll be writing to the RAM to act as a ROM.

  • @SdelayVseSam
    @SdelayVseSam Місяць тому

    Hello. Very interesting project. Can I get the firmware for the raster rom?

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Yep, it’s on the GitHub page as VideoFSA.cpp. Just make a visual studio project and use this file.

    • @SdelayVseSam
      @SdelayVseSam 27 днів тому

      ​@@DrMattReganOk friend, where can I get the VideoFSA.h library file?

    • @DrMattRegan
      @DrMattRegan 27 днів тому

      Just added it to github. If you make a visual studio desktop application called VideoFSA and pop these two files in it should work. Let me know either way.

  • @frankowalker4662
    @frankowalker4662 Місяць тому

    It's amazing how much could go wrong from a simple timing error.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      It’s actually surprising how forgiving timing can be though. Usually the ROMs will go faster than their rated speed

    • @frankowalker4662
      @frankowalker4662 Місяць тому

      @@DrMattRegan Neat.

  • @codeandoconxavier
    @codeandoconxavier Місяць тому

    I really like it; delightful series :D Why are you using 574 after 138 and not between ROM and 138? I think it should work, and you should just use 2 x 574 instead of 4.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      The problem is that the output from the ROM can be undefined as the address changes. This doesn't matter so much for output enable on the registers, but if you get spurious clocks occurring as the ROM transitions it's outputs, you can corrupt the data stored.

    • @codeandoconxavier
      @codeandoconxavier Місяць тому

      @@DrMattRegan Oh, I see. It does make sense.

  • @jp2en
    @jp2en Місяць тому

    static RAM? toooooo simple. Interesting explanation anyway, thanks.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Ha ha yes. When ever I feel the need to self flagellate I have a go at getting dynamic RAM to work!

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 28 днів тому

      This PCB is already full of multiplexers and buffers. A computer should compute something. So this already is not a home computer, anymore. So we are free to have fun with multiplexers and buffers! The ZX spectrum uses fast page mode. I think it would be really cool to show how fast-page mode and memory interleave go together. For example a memory controller could check if the CPU or videoDMA really needs memory. And then if this is the case, it could read ahead a few bytes and cache them (4 * 2 buffers ). Make this work also for 6502. Make this work for a character display with 16px wide patterns (2 byte burst) or 4 color pixels for games.

    • @DrMattRegan
      @DrMattRegan 26 днів тому

      If you're interested, i have a video on DRAM usage in the Spectrum ua-cam.com/video/VMosP_X2C8U/v-deo.html

  • @ZXSpectrum128K
    @ZXSpectrum128K Місяць тому

    Both the enterprise and the cpc use 4mhz can you double the video ram speed? Would this eliminate contention?

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Umm, the trick is using static RAM. It’s faster than the dynamic RAM the production machines use, and it’s easier to use.

    • @ZXSpectrum128K
      @ZXSpectrum128K Місяць тому

      @@DrMattRegan have you seen the next?

  • @AlexandreGamaLima
    @AlexandreGamaLima Місяць тому

    I've found the best channel of the month! Excellent! I'll go through all of the videos :)

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Enjoy! Don’t forget to look at the SAP6502 series!

  • @4623620
    @4623620 Місяць тому

    I'm missing something in the diagram at 07:24. If you look at the S|0..8] bus, the following are connected to it: • Outputs S0..3 from U6 • Outputs S4..7 from U7 • Inputs S0..7 to U5 • Inputs S1..8 to U8 Where does S8 come from ❓

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Yeah, S8 is meant to be carry bit. Let me have a look at the board.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      On the ALU board i have, S8 is connected to pin 9 J2. This signal is driven by a 74hc00 acting as an inverter, which is just to the right of the ALU card on the carrier board. This inverter is driven by the !Carry0 signal from pin 16 of J2 on the status card. On this ALU board i actually have S0-8 are connected to pins 1-9 of J2, but i never used S0-7. I plan to use these same ALU boards in an upcoming SAP68000 and i want fast carry generation so i decided to swap pins 1-8 of J2 to signals i can use with a 74HC182. When I updated the schematic, it looks like i forgot to leave S8 in place. Well spotted, i'll mention it in the next video.

  • @PaulDriverPlus
    @PaulDriverPlus Місяць тому

    Dr Regan, It has been proven that the rev A 6502 did not have a buggy rotate right function, but rather an unimplemented rotate right function, there was such a kerfuffle about this that the rev B 6502 had the function added. You can find a rev a 6502 demasking that clearly shows the necessary signals are not routed anywhere to perform this function, as opposed to a rev B 6502 demasking.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      There's quite a good video on it ua-cam.com/video/Uk_QC1eU0Fg/v-deo.html I just wanted to mention it in passing without getting caught in the weeks.

  • @davidmiller8618
    @davidmiller8618 Місяць тому

    Just wanted to let you know how much I have enjoyed this series. Excellent explanations without skipping details. Please keep up the good work. You deserve more views!

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Glad you like them! You might like the Turing6502 series as well.

  • @Hellcleaner13
    @Hellcleaner13 Місяць тому

    Using the ALU chips is cheating.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      @@Hellcleaner13 ha ha. Have you had a look at the Turing6502 playlist? No ALU chips! No program counter either!

  • @lindoran
    @lindoran Місяць тому

    Just crazy how much you are fitting into the actual case! Wonderful as always!

    • @DrMattRegan
      @DrMattRegan Місяць тому

      Thanks David. I like the idea of a transparent design in a transparent case

    • @lindoran
      @lindoran Місяць тому

      @@DrMattRegan I see what you did there

  • @jecelassumpcaojr890
    @jecelassumpcaojr890 Місяць тому

    The original Datapoint 2200 predates the 74181 but the following model used it. The math part of the 74181 is very similar to the earlier 7483.

    • @DrMattRegan
      @DrMattRegan Місяць тому

      @@jecelassumpcaojr890 yes. Version 1 was bit serial, but version 2 used the 181.