TomXP411 wrote: ↑Wed Feb 14, 2024 9:45 pm
Ser Olmy wrote: ↑Wed Feb 14, 2024 9:14 pm
BruceRMcF wrote: ↑Wed Feb 14, 2024 6:01 pm... what's not to love?
A 16-bit CPU with a 24-bit address bus weirdly hamstrung by a memory map designed for an 8-bit CPU isn't quite ideal, IMHO.
Yeah, that's not ideal. We actually discussed ways to mitigate that (a few of us on Discord)... but those would all cause the situation Ed was complaining about. Allowing the CPU to directly control the bank registers would certainly be a breaking change.
Personally, I'd love to see some sort of interposer board that lets you add 65816-specific extended memory and which could be addressed using the 816's internal bank registers. We could even load a modified KERNAL into memory on this board with improvements for things like far get, far fetch, and far jump instructions (by putting them on 816 extended memory, rather than $A000 banks.)
Someone will end up designing a proper Commander 816, which moves to a flat memory model... but it will, of course, require heavy modifications to the KERNAL and application programs to operate.
IMHO the first step in that direction might be a a bus mastering 65816 expansion card.
________________________
kelli217 wrote: ↑Wed Feb 14, 2024 11:20 pm
BruceRMcF wrote: ↑Wed Feb 14, 2024 11:13 pm
Ser Olmy wrote: ↑Wed Feb 14, 2024 9:14 pm
A 16-bit CPU with a 24-bit address bus weirdly hamstrung by a memory map designed for an 8-bit CPU isn't quite ideal, IMHO.
It's got a 24bit address space, to be sure, but the address bus is, in fact, 16bits ... that's why it fits into the socket.
Ever since the move to the 65C02 was made, with the possibility raised of moving back to the 65816 at some future date, they made it pretty clear that it would be with the current memory map, so I haven't worried about the memory map issue since 2018.
In the interests of
strictest accuracy (this is the internet, you know), it actually does have a 24-bit address bus—it's just that lines A16-A23 are shared with lines D0-D7, each being active on alternating clock phases.
That's what I'm saying ... the physical address
bus ... the set of lines that carries the signals that tell the system where the data goes to or comes from ... that is assembled in the system from the information provided by the 65816.
65816 addressing is like a shelf bought from Ikea, where the last step on the assembly lines to put it together is located in the customer's house ... "oh, and can you grab this data from the data lines and put it on some lines to create the address bus yourself? I'll either have or grab the actual data quite shortly".
To be sure the 8088 is worse, it only has 40% of the address bus provided directly by the CPU, 40% assembled from information on the data bus lines and 20% assembled from information on CPU status lines. And rather than being an 8bit CPU pretending to be a 16bit CPU by sometimes operating on two bytes in sequence, it's a 16bit CPU with the 16bit data bus
also offered in kit form to be assembled by the system.
Of course, it wouldn't sound impressive if they said, "well, putting the address bus together is kind of a DIY affair, good luck!", so of course they say "well, if you squint and think about it the way we want you to, there's an address bus, it's just multiplexed."
Those extra 8 address lines won't be demultiplexed or otherwise made available in the X16's CPU socket, though, so it will effectively be a sort of pseudo-65802, in practice. I would imagine that if the 65802 itself were still in production, we'd be using that.
To be sure, and though you don't have to protect an actual 65C802 from contention on the data bus during Phi1, if /OE of the selected device is qualified on Phi2 and the Phi1O pin has a pull-up resister, it comes to the same thing.