[Coco] 6309 microprocessor project 01-16-2004

John Collyer johncollyer at zoominternet.net
Sat Jan 17 08:53:10 EST 2004


Anyway that brings me back to a question I have been
wondering about for sometime now and here it is.

In the real coco3 MMU how does the actual hardware
associate the virtual pages with the physical pages.

(note my questions all stem from reading Tepco's book
 addendum for coco3)

Does it use pointers?  I see where it says it converts a
virtual address by generating a 19-bit address from the
16-bit virtual address and the content of a PAR.  I think
that Jeff used that formula and applied it to the segment
register and then had ms-dos int 67h move memory in
and out of the address space, so actually the original
emulator was in a sense moving 16K blocks of memory
in and out of the address space by calling the ems functions.

I see I need more experimentation in this area before I
commit anything to source code.  Thanks for all the input.

The goal though is to have all parts of the emulator work
as fast a possible and then that should ease of other areas
where I would want to have more going on like timers,
mid-frame updates, and etc.

John Collyer

----- Original Message ----- 
From: "John Collyer" <johncollyer at zoominternet.net>
To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
Sent: Saturday, January 17, 2004 8:14 AM
Subject: Re: [Coco] 6309 microprocessor project 01-16-2004


> Yea, your probably right about moving the 8k blocks
> of memory being to slow for OS-9 Level 2.  My
> first scheme did it the way you suggested but I
> did not like having to do the extra work inside
> of getbyte and putbyte of finding the 8K offset
> from the [byte at address].  All I had to do was
> shift the [byte at address] and I would have a
> 8K offset instead of a 64K offset, but as I
> said that will only permit the special opcodes
> to work on 8K boundaries.  That is sort of the
> way these worked in the original emulator anyway.
>
> John Collyer
>
> ----- Original Message ----- 
> From: "Roger Taylor" <rtaylor at bayou.com>
> To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
> Sent: Friday, January 16, 2004 11:42 PM
> Subject: Re: [Coco] 6309 microprocessor project 01-16-2004
>
>
> > At 05:26 PM 1/16/2004 -0600, you wrote:
> >
> > >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
> >
> >
> > something happened to my example... the right bracket got deleted
somehow
> >
> > It should be:
> >
> > >address= [(65448+task#*8)+block#]*8192+offset
> >
> > the brackets mean "the 8-bit value at"
> >
> > So [65456] would mean the value at address 65456.
> >
> >
> > ----------
> > Roger Taylor
> >
> >
> >
> >
> > -- 
> > Coco mailing list
> > Coco at maltedmedia.com
> > http://five.pairlist.net/mailman/listinfo/coco
> >
>
> -- 
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
>




More information about the Coco mailing list