VGA ZX Spectrum - Schematic
14:18
28 күн бұрын
VGA ZX Spectrum - Testing
8:18
2 ай бұрын
Switches to CPUs: Ripple Counter
11:06
VGA ZX Spectrum - No ULA, No FPGAs
12:47
Switches to CPUs: Flip-Flops1
11:41
Switches to CPUs: Wired OR gate
7:58
Switches to CPUs: Set Reset Latch
8:07
Switches to CPUs: 2 Input Gates
12:53
Digital Logic Explained
10:35
5 ай бұрын
ZX Spectrum DRAM timing explained.
13:31
ZX Spectrum build video circuit.
19:44
ZX Spectrum build, No ULA.
18:33
7 ай бұрын
16K ZX81 vs 16K ZX Spectrum
19:22
8 ай бұрын
ZX 16K RAM expansion explained
12:56
ZX81 Video Circuit Finale.
16:31
9 ай бұрын
SAP6502 Microcode - Finale
16:52
10 ай бұрын
ZX81 Video Circuit Part 3: TEXT.
15:35
Пікірлер
@crappoman
@crappoman Күн бұрын
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 23 сағат бұрын
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 6 күн бұрын
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 6 күн бұрын
@@briancampbell179 welcome. Excellent, have a crack at building one. It may also be worth watching the Turing6502 series.
@briancampbell179
@briancampbell179 6 күн бұрын
@@DrMattRegan , shall do.
@acmtretro
@acmtretro 6 күн бұрын
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 9 күн бұрын
Awesome Work!
@DrMattRegan
@DrMattRegan 7 күн бұрын
Thank you! Cheers!
@crappoman
@crappoman 9 күн бұрын
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 9 күн бұрын
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 10 күн бұрын
Do you have done PAL for us european and the rest of the world ?
@DrMattRegan
@DrMattRegan 4 күн бұрын
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 10 күн бұрын
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 10 күн бұрын
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 10 күн бұрын
@@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 10 күн бұрын
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 10 күн бұрын
@@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 9 күн бұрын
@@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 11 күн бұрын
(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 10 күн бұрын
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 11 күн бұрын
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 10 күн бұрын
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 9 күн бұрын
@DrMattRegan ha ha, that explains it now. z80 was not exactly popular in the US. Whereabouts in Australia? I'm in Brisbane
@DrMattRegan
@DrMattRegan 9 күн бұрын
Melbourne, although I did live in the US for 10 years.
@stevetodd7383
@stevetodd7383 11 күн бұрын
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 10 күн бұрын
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 11 күн бұрын
That's fantastic.
@DrMattRegan
@DrMattRegan 10 күн бұрын
Enjoy, thanks for the feedback.
@stevetodd7383
@stevetodd7383 11 күн бұрын
Looking forwards to seeing the Z80 as TTL.
@DrMattRegan
@DrMattRegan 9 күн бұрын
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 11 күн бұрын
Brilliant!!!!
@DrMattRegan
@DrMattRegan 10 күн бұрын
Thanks for that!
@malcolmgibson6288
@malcolmgibson6288 11 күн бұрын
Looks like I'll be ordering more chips and things. Next warm up the soldering iron. Great work.
@DrMattRegan
@DrMattRegan 10 күн бұрын
Excellent. It's been a fun project.
@PaulDriverPlus
@PaulDriverPlus 11 күн бұрын
Great work as always.
@DrMattRegan
@DrMattRegan 11 күн бұрын
Thanks for the feedback! Enjoy.
@zilog1
@zilog1 11 күн бұрын
haha.the back of my perf board project looks exactly the same. I love spaghetti
@DrMattRegan
@DrMattRegan 11 күн бұрын
Yeah, it doesn't start out that way but it always seems to end up as a rat's nest.
@zilog1
@zilog1 11 күн бұрын
Yo sweet. excited for this one
@DrMattRegan
@DrMattRegan 11 күн бұрын
Enjoy, let me know what you think of it.
@archarontsm
@archarontsm 12 күн бұрын
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 11 күн бұрын
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 10 күн бұрын
​@@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 10 күн бұрын
Or use INT signal for correct timings alignment with begin frame interrupt
@pbpraha789
@pbpraha789 13 күн бұрын
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 9 күн бұрын
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 17 күн бұрын
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 15 күн бұрын
You might like this playlist instead kzbin.info/aero/PLjQDRjQfW-85BWo4IC3WYUDZ-hC8qJsqO
@bkahlerventer
@bkahlerventer 20 күн бұрын
It might be overkill, but have you thought of using dual-ported RAM for the video RAM to avoid the bus contention?
@DrMattRegan
@DrMattRegan 20 күн бұрын
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 23 күн бұрын
It's a pity more people haven't watched this series.
@DrMattRegan
@DrMattRegan 23 күн бұрын
@@PaulDriverPlus yeah. I really liked this series.
@ntal5859
@ntal5859 23 күн бұрын
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 23 күн бұрын
@@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 23 күн бұрын
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 23 күн бұрын
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 23 күн бұрын
@@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 22 күн бұрын
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 22 күн бұрын
@@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 20 күн бұрын
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 23 күн бұрын
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 23 күн бұрын
@@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 23 күн бұрын
@@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 23 күн бұрын
@@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 23 күн бұрын
@@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 23 күн бұрын
I built my first zx81 from a kit.
@DrMattRegan
@DrMattRegan 23 күн бұрын
How did you go getting it working? Any problems?
@dogwalker666
@dogwalker666 23 күн бұрын
@@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 23 күн бұрын
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 23 күн бұрын
@@DrMattRegan oh right.
@alexzor971
@alexzor971 24 күн бұрын
Hi. Unable to compile VideoFSA. Compiler Error C2065 Undeclared identifier IDI_VIDEOFSA and IDC_VIDEOFSA
@DrMattRegan
@DrMattRegan 23 күн бұрын
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 24 күн бұрын
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 24 күн бұрын
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 24 күн бұрын
Dr. Reagan muito obrigado pelos seus ensinamentos! Estou aprendendo muito!
@DrMattRegan
@DrMattRegan 24 күн бұрын
Thanks for the feedback, enjoy.
@kti5682
@kti5682 25 күн бұрын
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 25 күн бұрын
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 25 күн бұрын
@@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 25 күн бұрын
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 25 күн бұрын
Yep, you could use a pair of 27C512s
@shinsawai1
@shinsawai1 25 күн бұрын
@@DrMattRegan Ah Great! Thank you very much!
@evolutionalgd
@evolutionalgd 27 күн бұрын
Excellent job this. Been following the series, and you actually pulled it off. Hats off sir.
@DrMattRegan
@DrMattRegan 26 күн бұрын
Thanks for the feedback, enjoy!
@bryede
@bryede 28 күн бұрын
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 28 күн бұрын
Just haven't gotten around to implementing illegal codes yet www.masswerk.at/6502/6502_instruction_set.html
@MichalKobuszewski
@MichalKobuszewski 29 күн бұрын
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 28 күн бұрын
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 29 күн бұрын
Impressive, this is a very nice piece of work, congratulations on pulling this off.
@DrMattRegan
@DrMattRegan 29 күн бұрын
@@PaulDriverPlus glad you like it.
@notCalle
@notCalle 29 күн бұрын
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 29 күн бұрын
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 29 күн бұрын
Brilliant!!! Looking forward to the next part!
@DrMattRegan
@DrMattRegan 29 күн бұрын
Glad you enjoyed it
@kokodin5895
@kokodin5895 29 күн бұрын
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 29 күн бұрын
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 29 күн бұрын
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 24 күн бұрын
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 29 күн бұрын
Hello. Very interesting project. Can I get the firmware for the raster rom?
@DrMattRegan
@DrMattRegan 29 күн бұрын
Yep, it’s on the GitHub page as VideoFSA.cpp. Just make a visual studio project and use this file.
@SdelayVseSam
@SdelayVseSam 25 күн бұрын
​@@DrMattReganOk friend, where can I get the VideoFSA.h library file?
@DrMattRegan
@DrMattRegan 24 күн бұрын
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 29 күн бұрын
It's amazing how much could go wrong from a simple timing error.
@DrMattRegan
@DrMattRegan 29 күн бұрын
It’s actually surprising how forgiving timing can be though. Usually the ROMs will go faster than their rated speed
@frankowalker4662
@frankowalker4662 29 күн бұрын
@@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 29 күн бұрын
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 29 күн бұрын
@@DrMattRegan Oh, I see. It does make sense.
@jp2en
@jp2en Ай бұрын
static RAM? toooooo simple. Interesting explanation anyway, thanks.
@DrMattRegan
@DrMattRegan 29 күн бұрын
Ha ha yes. When ever I feel the need to self flagellate I have a go at getting dynamic RAM to work!
@ArneChristianRosenfeldt
@ArneChristianRosenfeldt 25 күн бұрын
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 24 күн бұрын
If you're interested, i have a video on DRAM usage in the Spectrum kzbin.info/www/bejne/jH7SpIOVjZd2brc
@ZXSpectrum128K
@ZXSpectrum128K Ай бұрын
Both the enterprise and the cpc use 4mhz can you double the video ram speed? Would this eliminate contention?
@DrMattRegan
@DrMattRegan 29 күн бұрын
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 29 күн бұрын
@@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 29 күн бұрын
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 kzbin.info/www/bejne/i5zCgnZnmrpjfMk 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.