First: thanks to daniMolina for investigating what a 6526 timer does.
The DIA (Discrete Interface Adapter) TTL 6526 isn't meant to be a "competition" to Dani's
74HCT6526 project.
Had some time at hands, so I did schematics and PCB layouts for what I think might be "a 20MHz TTL implementation of the 6526".
Not sure, if the timers are cycle exact, and shift register and TOD might be not too compatible to a real 6526 chip.
Point is, that we don't have a dissection of the 6526 silicon... yet.
// But I wanted to have this TTL 6526 stuff off my desk before trying to aim for the SID again.
I'm sort of retired, so somebody else (Drass) would have to build and to test that hardware.
We have three PCBs:
One PCB contains two 16 Bit timers and two 8 Bit I\O ports,
one PCB contains what I think should work as TOD. //It's also a "test balloon" for the carry chain of a hypothetical 100MHz TTL CPU.
and one PCB contains the bus interface, the shift register, and the rest.
Tried to group 8 resistors of the same value together, so one could solder precision DIP16 sockets into the PCBs and plug resistor networks into them.
We have a control signal PHICEN (with a 4k7 pullup resistor), which is a HIGH_active count enable for the two 16 Bit timers,
so one could run the timers at 1MHz in a 20MHz system for software compatibility reasons.
If there is a 0 to 1 transition on the /IRQ output, for speeding up the rising edge current is injected into /IRQ for one PHI2 cycle to reduce that ghost interrupt problem.
//One might want to tinker with the value of the related resistor.
Also, if port pins are configurated as outputs, current is injected into them on a 0 to 1 transition for one PHI2 cycle,
for disabling that feature just don't plug the two related resistor networks into the sockets.
//One might want to tinker with the values of these resistors, too.
By default, if a port pin is configurated as an output, the CPU reads from the port pins.
When closing the solder jumpers on the timers_ports PCB, the CPU reads from the data output latches instead,
what might be not exactly 6526 compatible, but increases the chances that something like "INC $DC00" still works at 20MHz.
Have fun.
Attachment:
DIA_TTL_6526.zip [593.69 KiB]
Downloaded 94 times
Attachment:
main_sr.png [ 639.54 KiB | Viewed 1267 times ]
Attachment:
timers_ports.png [ 652.06 KiB | Viewed 1346 times ]
Attachment:
TOD.png [ 321.83 KiB | Viewed 1346 times ]
Edit:
A read from the status register clears the flags.
Maybe we should modify the design later to make sure that a read from the status register only clears the flags if PHICEN = HIGH...