I am connecting a AY-3-8910 and I want to double check everything, so I figured I could explain this to the forum to invoke the rubber duck debugging technique, and someone might spot an omission.
These are the bus signals on the expansion header that I am using. First the easy ones that I can use directly:
CLK2 - 6502 clock connected to P22
/Res - reset line connected to P23
D7-0 - data lines connected to P30-37
The next set are the inputs to the decode logic:
A0 - used to select latching versus latch or write.
/7F0x - from address decode logic, used to chip select.
Looking at the data sheet B2 is left unconnected and is internally pulled up. That leaves us with the following truth table:
BDIR = 0 and BC1 = 0 means inactive
BDIR = 0 and BC1 = 1 means read from register
BDIR = 1 and BC1 = 0 means write to register
BDIR = 1 and BC1 = 1 means latch register address
If /7F0x is high I want to force both BDIR and BC1 to the inactive state, and I want to use A0 to switch between write versus latching. I think this address decode logic should achieve that:
BDIR = NOT /7F0x
BC1 = /7F0x NOR A0
So while /7F0x is high both inputs are forced low, but when it goes low I can either write or latch by using an even or odd address. While I can't read from a register, I don't need to do that. I found this schematic which matches my basic ideas, so I am pretty sure I am on the right track:
http://www.armory.com/~rstevew/Public/S ... rcuit.htmlNote that in my breadboard circuit I cheated a bit and used an Arduino as part of the logic, so I would like to replace that with discreet logic IC's. I also know I could use the mocking board schematic which uses a VIA, but that seems like overkill.