[Coco] GCC: DFLOAT / DIRECT_PAGE
KnudsenMJ at aol.com
KnudsenMJ at aol.com
Sat Nov 15 21:22:08 EST 2003
In a message dated 11/15/03 1:08:20 AM Eastern Standard Time, wb8tyw at qsl.net
writes:
> No, the case for OS9, unless OS9 reserves the direct page register for
> it's own use, would be for a program to have as many direct page
> sections as it needs. These sections can be put at fixed memory
> locations by the linker, or at dynamic locations, where the compiler
> knows where they are.
I'm pretty sure that in OS9-L1, each process (running copy of a program) gets
its own full DP, since the startup code points DP at that process's direct
variables cluster (which happens to be the start of its data area in RAM). In
fact, now I recall that process data areas have to start on 256-byte boundaries.
Note that OS9-L1 allocates data RAM from the bottom up, and program space
from the top down, of its 64K total available. The "real" direct page at $0000
is reserved for the System.
In Level 2 it's simpler -- each program gets DP at $0000 and the GIME DAT
block mapping takes care of mapping that somewhere into the 512K or 2M of
physical RAM. But what this means to the process' startup code is that DP always
gets loaded with 00, whereas L1 would be setting a nonzero value.
There is no provision in MWC for reloading the DP with anything other than
the initial startup setting. You may of course have at it in your own ML
subroutines, but please put it back as you found it before leaving :-)
Maybe Roger plays with DP in his Projector-3 routines. I never had to mess
with it in UltiMusE, though I knew I could fall back on that if needed for more
graphics speed, etc. (Actually 6809 UME could use a LOT more graphics speed
;-)
--Mike K.
More information about the Coco
mailing list