Re: Oric Speech Synthesizer + Cumulus/Microdisk
Posted: Tue Feb 05, 2019 6:34 pm
The page-3 thing is because the ULA does the donkey work of decoding "this is in 0x3FF" (to the I/O line, an output). That is used by the VIA (internally) with no further decoding, to save on hardware. It means the VIA can't help but repeat up page 3.
An external device that wants some of page 3 can use the IO line to say "It's page 3" and then decode as much of the lower 8 bits as it needs to jump in, shove the VIA aside (by asserting "I/O Control", and take over. You want to add extra facilities, *you* budget for the extra hardware
It would have been extra cost to pointlessly decode out 16 byte chunks into a range of I/O signals ...
With Phi 2: It's an ORIC-thing, not a 6502-thing, as far as I can tell.
The address bus is asserted by 6502 for the pretty much the whole of the 1MHZ clock cycle. Your external decoder will see a valid address and dump data onto the data bus for the whole cycle if you ignore Phi2 when building an input port.
This is a problem, because Phi2 is only valid for CPU-accessing-memory/peripherals on part of the cycle. The rest of the cycle, the ULA accesses DRAM directly to fetch video data. Nothing should be on the data bus at this point, other than ULA reading, DRAM outputting. The DRAM receives its address from the ULA directly, in two parts, on its own mini-address bus (8 bit), and that is NOT the address on the system address bus that your hardware can still see. So you end up talking over the DRAM and the ULA gets corrupt data. The databus is shared for everything.
For timing diagrams (Oric runs slightly odd compared to normal 6502 timings) in gruesome detail:- http://oric.signal11.org.uk/files/pub/u ... Schems.pdf
An external device that wants some of page 3 can use the IO line to say "It's page 3" and then decode as much of the lower 8 bits as it needs to jump in, shove the VIA aside (by asserting "I/O Control", and take over. You want to add extra facilities, *you* budget for the extra hardware

It would have been extra cost to pointlessly decode out 16 byte chunks into a range of I/O signals ...
With Phi 2: It's an ORIC-thing, not a 6502-thing, as far as I can tell.
The address bus is asserted by 6502 for the pretty much the whole of the 1MHZ clock cycle. Your external decoder will see a valid address and dump data onto the data bus for the whole cycle if you ignore Phi2 when building an input port.
This is a problem, because Phi2 is only valid for CPU-accessing-memory/peripherals on part of the cycle. The rest of the cycle, the ULA accesses DRAM directly to fetch video data. Nothing should be on the data bus at this point, other than ULA reading, DRAM outputting. The DRAM receives its address from the ULA directly, in two parts, on its own mini-address bus (8 bit), and that is NOT the address on the system address bus that your hardware can still see. So you end up talking over the DRAM and the ULA gets corrupt data. The databus is shared for everything.
For timing diagrams (Oric runs slightly odd compared to normal 6502 timings) in gruesome detail:- http://oric.signal11.org.uk/files/pub/u ... Schems.pdf