[Coco] Patching NitrOS9 for 8 meg
RETRO Innovations
go4retro at go4retro.com
Thu May 3 15:12:46 EDT 2018
On May 3, 2018 at 2:18 PM "L. Curtis Boyle"
<[1]curtisboyle at sasktel.net> wrote:
Jim - I can’t remember - for programming which MMU blocks are active
in each of the 32 tasks, do you have another byte that one sets to
tell the system which task set of MMU blocks you are modifying,
using one of the two existing sets ($FFA0-$FFA7 or $FFA8-$FFAF)?
$ff91 (low 5 bits) normally tells the active task.
However, I took an unused bit in the GIME registers as a "flag" to
switch in an alternate set of GIME registers. So, the table is:
* task register (5 bits)
+ GIME set 1: active task[4:0]
+ GIME set 2: task to modify[4:0]
* secondary task register (7 bits)
+ GIME set 1: active task[11:5]
+ GIME set 2: task to modify[11:5]
* GIME set flag (1 bit)
+ 0: use GIME set 1 registers
+ 1: use GIME set 2 registers
THere's also a register to switch $ffa0-$ffaf from showing task[N] low
bytes and task[N+1] low bytes to showing task[N] words. On CoCoMEM,
there is also a register to set the GIME video task registers versus
setting the CPU task registers (so, GIME can be mapped to somewhere
completely arbitrary from the running code, though one must map all 8
block of GIME RAM within a single 512kB block, due to GIME
restrictions. If I have a burst of inspiration, I will try to remove
that restriction).
Obviously, all is subject to change at this point. Boise is
bootstrapping L2 on CoCoMEM Jr, so I expect a few bugs to fix. Once he
does, it'd be nice to see if someone can modify L2 to use all 32 tasks
and see what issues show up.
Jim
References
1. mailto:curtisboyle at sasktel.net
More information about the Coco
mailing list