[Coco] 6309 microprocessor project 01-16-2004

Roger Taylor rtaylor at bayou.com
Fri Jan 16 18:26:57 EST 2004


At 02:54 PM 1/16/2004 -0500, you wrote:
>Again,
>
>Since this version of the emulator will require a 586
>preferably a Pentium I am assuming these block
>moves of 8k will require very little time, but I can
>see how this might effect NitrOS-9 or OS-9
>Level 2 though.  How much time does NitrOS-9
>or OS-9 Level 2 kernel spend switching MMU
>pages as opposed to getting or putting bytes
>without the MMU page being changed.
>change.

OS-9 blasts the *heck* out of the MMU.  Even with super-fast Pentium block 
copies, that sounds like a huge load on the CPU.  I think I would try a 
GIME address translation scheme instead of doing block copies.

It's simple:  ask for a 2-meg block of RAM in the emulator.
MALLOC(256*8192)

Ask for another block to hold Four 8k CoCo ROMs
MALLOC(32768)

Just take the 64k CPU address and a few GIME registers/values into account 
to map directly into a malloc'ed 2-meg block of RAM on the PC:

For RAM access:

64k CPU address= is naturally $0000-$FFFF
task#= bit 0 of 65425, write only
block# = int((64k CPU address) / 8192)
offset= (64k CPU address) modulas 8192
address= [(65448+task#*8)+block#*8192+offset

If ROMs are switched in (by writing to 65502), then CPU addresses 
32768-65535 would translate into the separate ROM block you malloced.  This 
should keep things simple so you won't have to copy ROM images in and out 
of the 2-meg PC block.

I just threw this psuedo-formula together, so if I'm wrong, I'm sure 
someone will correct me.



----------
Roger Taylor






More information about the Coco mailing list