digidice wrote:
Take a look at Version 7 ;)
Schematic
- you don't need IC13A as XOR, you can just use one of the AND gates you have left. And the AND even replaces IC6F. Write down a logic table to see how it works (hint: you don't need to handle both inputs being 0 at the same time)
- IC12B still combines VDA and VPA such that the output is 1 ONLY during opcode byte fetch. (BTW: that's an AND not a NOR as your description says). I.e. you access the RAM only for opcode fetch, nothing more.
And following that signal to the IC9 input you access I/O and ROM always - except for opcode byte fetches. And "opcode byte fetch" really means what it says: the single opcode byte. Because the operands have VDA=0. For example "LDA #$00" in memory is "A9 00" - A9 is fetched with VDA=1,VPA=1, while 00 is fetched with VPA=1, VDA=0. In your setup the A9 must be in RAM, while 00 must be in the ROM.
- your comments "PHI0 see note" and "PHI2 see note" are on two signals where PHI0 is the CPU's PHI2 input and PHI2 is the inverted of PHI1. That is against the common convention that PHI1 is the inverted of PHI0 and PHI2 has the same phase as PHI0.
- I don't know what tool you use to draw the schematics. Some of the dots that indicate that two crossing signals are connected are missing, some are in the wrong place. It is also much easer to read the schematics if you name all signals appropriately and, as in my schematics, I basically write the name of every signal on every pin connection on every IC. If I have long signal traces across the schematics, from time to time I even name every signal trace, just so I can follow it and be sure not to mix them up when reading.
- Again, the ROM is still accessed in each of the 256 64k banks, i.e. at $00E000-$00FFFF, $01E000-$01FFFF, $02E000-$02FFFF, ..., $FFE000-$FFFFFF. Not sure if you want that.
- Also, the RAM is mirrored too: Each RAM chip comes twice in your memory map (you don't use A19!), and the 4M memory selected by IC10 are mirrored 4 times (you don't use A22-A23!): As an example IC1 is from $000000-$07FFFF but also mirrored at $080000-$0FFFFF. Then IC1 is selected again at $400000-$47FFFF, $480000-$4FFFFF, $800000-$87FFFF, $880000-$7FFFFF, $C00000-$C7FFFF, $C80000-$CFFFFF. Not sure if you want that either.
- Currently your VDA/VPA logic avoids that RAM and ROM are addressed at the same time. You should rather take the low active ROM select and stick it into IC10 G1 to ensure that RAM is not selected when ROM is selected. You should also decide whether you want all the mirroring.
André