I love asm but I also love what you're doing. I can learn a thing or two here, and I have a z80 and its PIO and its serial controller as well, as well us plenty of 8k atcs64b eeprms and static ram . I will be keeping an eye on this channel. Ty so much.
Hi Trevor, I wired the EEPROM circuit on a breadboard using your jumper-bus technique. It took an extra day stripping wires but it is nice to work on now. I converted the working EEPROΜ breadboard for this Z80 project to take advantage of your Nano CLI code. With the Z80 removed from the board, the Nano and RAM are working. When I insert the Z80, read and write to RAM with the CLI memory commands corrupts the RAM content. I am suspecting the Z80 held in Reset is still messing with the shared bus. I am experimenting with using BUSREQ and BUSAK to resolve the conflict. It could be some versions of the Z80 do 3-state the Bus under reset and some versions do not. I did find some other Z80 projects that discuss the Reset vs Busreq signals. I’m learning a lot about C++ from your core library. I found the spot to lower the Z80 clock speed and may attempt to make a CLI command to select a slow debug speed.
Awesome, I'm glad you're finding the core library useful! That's strange about the Z80 though... It has worked for me with both a 2020 Z84C as well as a 1983 Z84. I don't suppose you're using a non-Zilog model? The datasheet states "During reset time, the address and data bus enter a high-impedance state, and all control output signals enter an inactive state." Does it work if you unhook the Z80's RE and WE from the bus, or is it also fighting the data and address lines?
@tgopaul can you share where to find the other Z80 projects you were talking about that discuss reset vs busreq? I don't think TH-cam will let you post links, but maybe you can add spaces and take out the www. and .com etc
@@TrevorMakes Hi Trevor, I found that when the Z80 reset is held low the RD and WR pins on the Z80 are High, preventing the Nano from accessing the RAM. I pulled the RD and WR breadboard wires from the Z80 to confirm they are blocking the NANO. There is the Z80 BUSREQ input that will 3state the Z80 RD and WR, Address, Data and other control lines at the completion of the current instruction and acknowledge the 3 state mode with BUSAK pin. The catch is, if the Z80 reset is held low there is no processing so the BUSREQ can not acknowledge with a BUSAK. An instruction must be running in order for BUSREQ to work. Another thing… the halt output is cleared when the Z80 reset is pulled low. I think you are close. If you put 00 on the DATA BUS and start the Z80 out of Reset it will run NOPs. Watch for M1 signal. Then Pull BUSREQ low and wait for BUSAK to Acknowledge. Don’t Reset the Z80. Let it sit with BUSREQ low. This will also suppress the Refresh signal and the address bus counting used for dynamic ram refresh. Then the NANO can take over and control the RAM and load and save contents. When the Nano is done… Have the Nano 3state its latches, the Nano RD and WR and any other of the Nano control output Then the Nano can issue a Reset to the Z80 with a low signal at least 4 clock cycle times. Release the Z80reset and it will start to run code. .. you could hold it back with BUSREQ or maybe WAIT line I wired the M1 signal to the Wait line to allow 1 instruction to run the first time M1 goes low. If you then use some logic monitoring the halt, wait, and M1 signal you can control the Z80 from the NANO. The NANO can write code into the address Zero so the Z80 will always start with this code on reset. The official Z80 documentation lists the actions of each pin. With old chips they often do not behave the way you think they should. Even Reset will be ignored if there is a long stretched clock cycle. check this link retrocomputing.stackexchange.com/questions/25962/z80-bus-control-by-external-device-busrq-or-reset
@@TrevorMakes … thanks for the library code. you forced me to learn what C++ bit fields are for. ..there are big gaps in my knowledge. ..thats where your youtube videos are helpful.
I tried out Z88DK and SDCC, and settled on the latter. Have a whole project on uploading C code to the breadboard computer that's mostly ready, but haven't scripted and filmed yet.
I think your videos are very well done, even if some of it slightly over my head. Could you include a KiCad circuit diagram in the related GitHub repo for each video? Also, I have no understanding of how to use PlatformIO.. I like the encryption program you made.. I made one in php that takes over 3600 iterations to get back to the original sequence. pVHMNllMhNBwMe2yywiMNyiMgNllMehVHtMVgMthwMalVHFMVgMrVi3
What part would you like to see more about? This video and the previous video (EEPROM programmer) go through the steps, and there are wiring diagrams on GitHub: github.com/trevor-makes/avr-z80-part1
Arduino is an excellent place to start with programming. I've seen a lot of people recommend www.youtube.com/@paulmcwhorter and I'll be starting a series of Arduino beginner videos soon too
I want to make a z80 computer and use a real Game Boy processor to make Gameboy games with and other projects Really push the gbz80 language fully if given good amounts of ram and other specs.
Your wiring style is impressive. Like a work of art. Mine resembles a London road map.
I love this I have a z80 chip right here and plenty of solderless breadboard
While I use 6502 cpus when doing this sort of thing, I love what you have done here. Very clear and easy to follow. Thank You.
I love 6502 too! I'll probably swap one into this board after I do a few more videos on Z80. Glad you enjoyed it
I love asm but I also love what you're doing. I can learn a thing or two here, and I have a z80 and its PIO and its serial controller as well, as well us plenty of 8k atcs64b eeprms and static ram . I will be keeping an eye on this channel. Ty so much.
Hi Trevor, I wired the EEPROM circuit on a breadboard using your jumper-bus technique. It took an extra day stripping wires but it is nice to work on now.
I converted the working EEPROΜ breadboard for this Z80 project to take advantage of your Nano CLI code. With the Z80 removed from the board, the Nano and RAM are working. When I insert the Z80, read and write to RAM with the CLI memory commands corrupts the RAM content. I am suspecting the Z80 held in Reset is still messing with the shared bus. I am experimenting with using BUSREQ and BUSAK to resolve the conflict. It could be some versions of the Z80 do 3-state the Bus under reset and some versions do not. I did find some other Z80 projects that discuss the Reset vs Busreq signals. I’m learning a lot about C++ from your core library. I found the spot to lower the Z80 clock speed and may attempt to make a CLI command to select a slow debug speed.
Awesome, I'm glad you're finding the core library useful! That's strange about the Z80 though... It has worked for me with both a 2020 Z84C as well as a 1983 Z84. I don't suppose you're using a non-Zilog model? The datasheet states "During reset time, the address and data bus enter a high-impedance state, and all control output signals enter an inactive state." Does it work if you unhook the Z80's RE and WE from the bus, or is it also fighting the data and address lines?
@tgopaul can you share where to find the other Z80 projects you were talking about that discuss reset vs busreq? I don't think TH-cam will let you post links, but maybe you can add spaces and take out the www. and .com etc
@@TrevorMakes Hi Trevor, I found that when the Z80 reset is held low the RD and WR pins on the Z80 are High, preventing the Nano from accessing the RAM. I pulled the RD and WR breadboard wires from the Z80 to confirm they are blocking the NANO. There is the Z80 BUSREQ input that will 3state the Z80 RD and WR, Address, Data and other control lines at the completion of the current instruction and acknowledge the 3 state mode with BUSAK pin. The catch is, if the Z80 reset is held low there is no processing so the BUSREQ can not acknowledge with a BUSAK. An instruction must be running in order for BUSREQ to work. Another thing… the halt output is cleared when the Z80 reset is pulled low.
I think you are close.
If you put 00 on the DATA BUS and start the Z80 out of Reset it will run NOPs. Watch for M1 signal.
Then Pull BUSREQ low and wait for BUSAK to Acknowledge. Don’t Reset the Z80. Let it sit with BUSREQ low.
This will also suppress the Refresh signal and the address bus counting used for dynamic ram refresh.
Then the NANO can take over and control the RAM and load and save contents.
When the Nano is done…
Have the Nano 3state its latches, the Nano RD and WR and any other of the Nano control output
Then the Nano can issue a Reset to the Z80 with a low signal at least 4 clock cycle times.
Release the Z80reset and it will start to run code.
.. you could hold it back with BUSREQ or maybe WAIT line
I wired the M1 signal to the Wait line to allow 1 instruction to run the first time M1 goes low. If you then use some logic monitoring the halt, wait, and M1 signal you can control the Z80 from the NANO.
The NANO can write code into the address Zero so the Z80 will always start with this code on reset.
The official Z80 documentation lists the actions of each pin. With old chips they often do not behave the way you think they should.
Even Reset will be ignored if there is a long stretched clock cycle.
check this link
retrocomputing.stackexchange.com/questions/25962/z80-bus-control-by-external-device-busrq-or-reset
@@TrevorMakes key point… RESET held low holds RD and WR HIGH blocking NANO
@@TrevorMakes … thanks for the library code.
you forced me to learn what C++ bit fields are for.
..there are big gaps in my knowledge. ..thats where your youtube videos are helpful.
I love these 8biit cpus I wonder if the ca65 assembler be used for the z80? Looks great.
I tried out Z88DK and SDCC, and settled on the latter. Have a whole project on uploading C code to the breadboard computer that's mostly ready, but haven't scripted and filmed yet.
is it ok to wire Arduino-Nano directly to Z80 bus?1 .. or level shifter are needed ?!
I think your videos are very well done, even if some of it slightly over my head.
Could you include a KiCad circuit diagram in the related GitHub repo for each video?
Also, I have no understanding of how to use PlatformIO..
I like the encryption program you made.. I made one in php that takes over 3600
iterations to get back to the original sequence.
pVHMNllMhNBwMe2yywiMNyiMgNllMehVHtMVgMthwMalVHFMVgMrVi3
The Arduino code is significantly more complex than the norm. I wonder what benefit this have over a simpler approach.
Probably. He is using PlatformIO, not the Arduino IDE.
Can you give the procedure to build this computer?
What part would you like to see more about? This video and the previous video (EEPROM programmer) go through the steps, and there are wiring diagrams on GitHub: github.com/trevor-makes/avr-z80-part1
This is the type of shit I want on my timeline
Hello!! Could you please tell how to learn about arduino and other programming stuff.?? I am interested in it but don't know how to start..
Arduino is an excellent place to start with programming. I've seen a lot of people recommend www.youtube.com/@paulmcwhorter and I'll be starting a series of Arduino beginner videos soon too
I want to make a z80 computer and use a real Game Boy processor to make Gameboy games with and other projects
Really push the gbz80 language fully if given good amounts of ram and other specs.
good😀
My dude's wicked smaht.
Thanks Morrie!
🎉
21:52 yes im awesome! its just shift 13 xD