5 ms·
A '816 would indeed be much better suited to access 512K of banked memory rather than banking through an 8K window but perhaps they don't think 65816 counts as
by LIV2 6y ago
A '816 would indeed be much better suited to access 512K of banked memory rather than banking through an 8K window but perhaps they don't think 65816 counts as retro enough, or maybe they're just masochists
- rbanffy 6y agoThe 65816 had a segmented memory, like the 8086. That's still very masochistic.
- 0xTJ 6y agoIt's not segmented, it's banked. And due to instructions that can use far pointers, you can directly access the entire memory. The main annoying part for me is that the stack and zero page are stuck within the first bank, limiting usability for a multitasking system.
- moring 6y agoCan't you still have 128 tasks even without sharing pages between tasks? That is, one direct page and one stack page for each task, with 256 pages total in bank 0. With sharing I mean, when you have two or more tasks of which only one instance will run, they can use the same direct page. Similar if you can statically limit the stack size of the tasks to a fraction of 256 bytes, you can fit multiple stacks on the same page with some work.
- cmrdporcupine 6y agoSaid far pointers are only for certain instructions, and there's no register which can hold a full 24-bit address, so there's always a bunch of hassle when dealing with addresses. They should have added a "pointer" register, which could hold both a 16 bit value and a bank value. Program counter is 16 bit, with a separate bank byte; it'll wrap when it hits the bank boundary. Constantly having to flip between register modes is a hassle. And makes it very difficult to write compilers and high level languages. Many common patterns require flipping back and forth a few times. Either they needed to have a whole new set of addressing modes, or they should have just added 3 new registers -- 16 bit versions of X Y and A -- and let the two co-exist. Honestly, this is an era when a 68000 could be had with a full 16 register set of 32-bit registers. The 65816 doesn't look so hot in that light, though it certainly was faster at interrupt handling. I guess Nintendo made do with their modified 816, but it really is not a nice architecture.
- tssva 6y agoI briefly somewhat followed this project until it became obvious it was going a direction I wasn't interested in. Originally they were going to use a 65816 but then switched to the 6502. I believe it had to do with the increased complexity of implemention caused by the 65816 sharing data and address lines which requires the lines to be multiplexed.
- 0xTJ 6y agoPart of the decision was that there aren't as many good tools available to compile/assemble/disassemble. Also, the length of some instructions depends on the current state of flags in the processor, which is a pain for disassembly.