If anyone in the UK wants an EPROM programmer PCB then I've added my email address to the about page on my channel. I think this is only visible from desktop.
Be careful about sending them in a normal envelope. The machines they use to process mail can sometimes get jammed up by the boards, or worse yet, break the boards. May need to mark them especially so they don't get processed through the usual automated machines.
I found an old pcb in a trash bin with a z80 with various peripherals and thought it would be fun to test. I've been following your videos and managed to make it work on the breadboard. I'm very interested in the sequel :D
When you said that you couldn't unlock the write function for the chip, my first thought was "timing issues" and then you said later that it was timing issues. 😆 I guess I really am a computer nerd. Following on from my comment on your previous video, I was thinking of implementing memory protection by having the hardware use the M1 output to "capture" the address at which the instruction was loaded plus part of the machine state, including which bank is currently switched in. Some logic would decode that into a go/no-go signal to either enable or disable bank switching. A RST instruction to call the OS to request a function such as bank switching would cause an auto-switch to the OS bank, meaning that the running program can't use a direct jump to the OS code in order to bypass memory protection.
Hi, i really hoped this video many months ago. thank you so much. your explanation helped a lot. At time i'm working with an adaptation of Ben Eater's programmer without problems; but i would like to try Tom Nisbet's programmer too ( maybe in the future) , it sounds interesting. at this moment i'm trying uart communication, I'm using an arduino to get that goal. Greeting from Lima-Peru.
Hi there, thanks for watching. Yes, the Ben Eater programmer is fine if your chip is already unlocked. However, if you want to try the Tom Nisbet code you should be able to do it just by changing a couple of pin connections on the Arduino. It would be good to hear about how you get on with the uart.
Yes the manual is quite confusing on that point but I can assure you it needs to be FC (-4). It's an offset to the program counter (PC). PC is incremented twice when the djnz instruction is executed. I'm not sure if your manual has the same wording as mine but the one I'm looking at also states "the assembler will automatically adjust for the twice incremented PC". I don't know why the manual is referring to an assembler, because the assembler has nothing to do with the documentation of the the Z80. As we are not using an assembler here, we have to make that adjustment manually ourselves. So -2 becomes -4.
if the z80 is a 8 bit system, how should i program 4 digits into ram. 00000110 1011 00010000 this is the load b 10 line but i dont understand how to pad that 4 number value to a 8 number value.
I suspect in theory yes you probably could, but there are two things to be aware of. It only has 8KB of memory instead of 32KB. As such there are two less address lines. More importantly, the Lock/Unlock feature seems to use different addresses. So If your chip is locked you might have problems unlocking it.
8:07 dont do same like everyone. add one 74164 and you safe 8 data pins. address and data can be send same shift registers. for example i made programmable logic with attiny85 and 4x 165 and 4x595. i can control 32(31) input 1 is programming mode and 32 output from 6 pins (all of them xD). my first data structure was 2 byte and use all (not/and/or/nand/nor/xor/xnor) 2 input gates and only 16 logic gate can program, but they can be any thing any order inputs can be pin and another gate output. setup 16 gates take 4x16bytes 512kb from attiny85 is enought xD could easy make 3 byte commands or 4 like i later made 2byte for gate number so 65k diff gate xD and 2-8 input gates (bcoz i could lol) its easy desing scheme but harder program arduino make it programming mode was easy and can be program with arduino faster havent made any IDE so every gate need hand program LOL but thats how programmable logic work P=pin mode 1 internal gate 0 (i kept them apart even they actually do same things after beta version lol) could change to use 5digit gate number G=logic gate (0 output 1-7 gates not/and/or/nand/nor/xor/xnor) N=logic gate number (yes only 16 this desing) A=gate input A (pin or gate output) B=gate input B (pin or gate output) O=output (0-63) xx=AB 0 internal 1 input pin 0GGGNNNN AAAABBBB internal gate GGG(1-7) NNNN number(0-15) AAAABBBB (input AB pin/gate number depend next setup) 0000NNNN ABOOOOOO internal out NNNN A and B input(1 pin 0 int.gate) OOOOOO=MAX 63 (only have 32 output) 1GGGNNNN AAAABBBB pin gate GGG(1-7) NNNN AAAABBBB 1000NNNN ABOOOOOO pin out NNNN A and B input(1 pin 0 int.gate) OOOOOO=MAX 63 (only have 32 output) desing fix for more gates if someone want try LOL peoblem is you only can use 5 digit gate numbers to output to pin bcoz 4 digit AAAABBBB refers gate if set it GGGNNNNN AAAABBBB gate setup NNNNN AAAABBBB 000NNNNN ABOOOOOO pin setup NNNNN A and B input(1 pin 0 int.gate) OOOOOO=MAX 63 (only have 32 output) but yeah i never this bcoz i used new 4byte commands xD more gate with inputs and all 32 output can program and 31 input yeah some peepol are crazy for weekend projects or couple weekends LOL
If anyone in the UK wants an EPROM programmer PCB then I've added my email address to the about page on my channel. I think this is only visible from desktop.
Can't find you on FB :(
@@SimonParkes go to my RUclips channel about page, you should be able to find my email address.
Be careful about sending them in a normal envelope. The machines they use to process mail can sometimes get jammed up by the boards, or worse yet, break the boards. May need to mark them especially so they don't get processed through the usual automated machines.
@@marcpearson2913 I received mine and Steve has packaged it very well, was protected etc :)
I found an old pcb in a trash bin with a z80 with various peripherals and thought it would be fun to test. I've been following your videos and managed to make it work on the breadboard. I'm very interested in the sequel :D
Thank you so much Steve. I'm planning to implements the circuits in part 1 and 2 and then move to part 3.
When you said that you couldn't unlock the write function for the chip, my first thought was "timing issues" and then you said later that it was timing issues. 😆 I guess I really am a computer nerd.
Following on from my comment on your previous video, I was thinking of implementing memory protection by having the hardware use the M1 output to "capture" the address at which the instruction was loaded plus part of the machine state, including which bank is currently switched in. Some logic would decode that into a go/no-go signal to either enable or disable bank switching. A RST instruction to call the OS to request a function such as bank switching would cause an auto-switch to the OS bank, meaning that the running program can't use a direct jump to the OS code in order to bypass memory protection.
Hi, i really hoped this video many months ago. thank you so much. your explanation helped a lot. At time i'm working with an adaptation of Ben Eater's programmer without problems; but i would like to try Tom Nisbet's programmer too ( maybe in the future) , it sounds interesting. at this moment i'm trying uart communication, I'm using an arduino to get that goal. Greeting from Lima-Peru.
Hi there, thanks for watching. Yes, the Ben Eater programmer is fine if your chip is already unlocked. However, if you want to try the Tom Nisbet code you should be able to do it just by changing a couple of pin connections on the Arduino. It would be good to hear about how you get on with the uart.
According to the Z80 manual the djnz offset is relative to the djnz opcode address. Thus in your code it should be FE (-2).
Yes the manual is quite confusing on that point but I can assure you it needs to be FC (-4). It's an offset to the program counter (PC). PC is incremented twice when the djnz instruction is executed. I'm not sure if your manual has the same wording as mine but the one I'm looking at also states "the assembler will automatically adjust for the twice incremented PC". I don't know why the manual is referring to an assembler, because the assembler has nothing to do with the documentation of the the Z80. As we are not using an assembler here, we have to make that adjustment manually ourselves. So -2 becomes -4.
Hi Steve, loving this series, and would be great if I could have one of the boards, happy to pay postage and packaging etc
Great video, Do you have any of the programer boards left ? im in the uk.
Good work. very impressive.
Steve, I added a 'Like'' here too 🙂
if the z80 is a 8 bit system, how should i program 4 digits into ram. 00000110 1011 00010000 this is the load b 10 line but i dont understand how to pad that 4 number value to a 8 number value.
I don't think your numbers are correct there, but you can pad a binary number the same as you would pad any number, just add zeros at the beginning.
18:14 major mods! 575 have more pins and diff pin layout. better desing new board or use desing others allready made with 575 LOL
Can I use AT28C64B instead of AT28C256?
I suspect in theory yes you probably could, but there are two things to be aware of. It only has 8KB of memory instead of 32KB. As such there are two less address lines. More importantly, the Lock/Unlock feature seems to use different addresses. So If your chip is locked you might have problems unlocking it.
8:07 dont do same like everyone. add one 74164 and you safe 8 data pins. address and data can be send same shift registers.
for example i made programmable logic with attiny85 and 4x 165 and 4x595.
i can control 32(31) input 1 is programming mode and 32 output from 6 pins (all of them xD).
my first data structure was 2 byte and use all (not/and/or/nand/nor/xor/xnor) 2 input gates
and only 16 logic gate can program, but they can be any thing any order
inputs can be pin and another gate output.
setup 16 gates take 4x16bytes 512kb from attiny85 is enought xD
could easy make 3 byte commands or 4 like i later made
2byte for gate number so 65k diff gate xD and 2-8 input gates (bcoz i could lol)
its easy desing scheme but harder program arduino make it
programming mode was easy and can be program with arduino faster
havent made any IDE so every gate need hand program LOL
but thats how programmable logic work
P=pin mode 1 internal gate 0 (i kept them apart even they actually do same things after beta version lol)
could change to use 5digit gate number
G=logic gate (0 output 1-7 gates not/and/or/nand/nor/xor/xnor)
N=logic gate number (yes only 16 this desing)
A=gate input A (pin or gate output)
B=gate input B (pin or gate output)
O=output (0-63)
xx=AB 0 internal 1 input pin
0GGGNNNN AAAABBBB internal gate GGG(1-7) NNNN number(0-15) AAAABBBB (input AB pin/gate number depend next setup)
0000NNNN ABOOOOOO internal out NNNN A and B input(1 pin 0 int.gate) OOOOOO=MAX 63 (only have 32 output)
1GGGNNNN AAAABBBB pin gate GGG(1-7) NNNN AAAABBBB
1000NNNN ABOOOOOO pin out NNNN A and B input(1 pin 0 int.gate) OOOOOO=MAX 63 (only have 32 output)
desing fix for more gates if someone want try LOL
peoblem is you only can use 5 digit gate numbers to output to pin bcoz 4 digit AAAABBBB refers gate if set it
GGGNNNNN AAAABBBB gate setup NNNNN AAAABBBB
000NNNNN ABOOOOOO pin setup NNNNN A and B input(1 pin 0 int.gate) OOOOOO=MAX 63 (only have 32 output)
but yeah i never this bcoz i used new 4byte commands xD more gate with inputs and all 32 output can program and 31 input
yeah some peepol are crazy for weekend projects or couple weekends LOL