z80 programmable priority interrupt controller base on a atmel 28c64 and 2 74hct04 and 8 10k pullup resistors

95 views
Skip to first unread message

Patrick

unread,
Mar 3, 2025, 12:25:02 PM3/3/25
to retro-comp
Hi I've just made a programmable interrupt controller that works in mode 0 and possibly in mode 2, it based on the atmel 28c64, haven't couple it up to the computer yet as its on a bread board, but the idea is that you use the eprom as decoder, which a  i wrote with a python script. 
At the moment I am intending to only to use 8 interrupts but if the script was altered to as much as 16 on a 64k eprom as I am using the address line with an inverter on each line as an interrupt vector with with a 10k pullup resistor on each.
by encoding 255 distinct values interrupt 1 is always process first even if 2,3..8 are active and like wise the rest of the interrupts work the same ie 1,2,3..8.
by encoding the interrupt for example in mode 0 the correct value  is placed on data bus so there can be processed although I am not sure if the over other remain interrupts will remain active as I have not  hooked it up to the z80, though I will  wirewrap a pcb board together soon and  will post the python script has soon as i have comment the section user need to alter, so they can test it for then self 
 

Alan Cox

unread,
Mar 3, 2025, 1:28:31 PM3/3/25
to retro-comp
74HC148 is what is generally used for this - gives you 3 bits from an 8bit input. 

With IM2 you put the bits on 3/2/1 usually and with IM0 or an 8080 you use them to generate RST instructions by pulling the other bits high.

2864 does give you a lot more flexibility though.


Mark T

unread,
Mar 3, 2025, 2:17:23 PM3/3/25
to retro-comp
Do the inputs need to be registered to avoid bits changing when they are read by the z80? This might be avoided if the inputs are synchronous to the z80.

Patrick

unread,
Mar 4, 2025, 5:43:38 AM3/4/25
to retro-comp
Don't have must time but I post the python script and the binary file, I thought the 28c64 was output latched , but this only happens when writing to the chip, so I added  74hct273 octal latch and 74hct00 nand gate.
 nand the m1 and iorq signal together and then inverted signal again using another nand gate to enable the latch on the cp pin of the latch.
sorry the post is short. the code in the test.bin is for mode 0 only
test.bin
interrupt.py
Reply all
Reply to author
Forward
0 new messages