[A86] Re: assembly, programing and games


[Prev][Next][Index][Thread]

[A86] Re: assembly, programing and games






On Sun, 11 Mar 2001, Henk Poley wrote:

> > The TI-86 memory layout is essentially the following:
> >
> > 0000-3FFF   holds a fixed ROM page
> > 4000-7FFF   can be switched to any RAM or ROM page
> > 8000-BFFF   can be switched to any RAM or ROM page
> > C000-FFFF   holds a fixed RAM page
> >
> > Since your program is loaded into the last block, you normally don't need
> > to worry about it being switched out at all.
>
> The compiler only works with Rigel,

To try to avoid confusion, note that my previous message was about the
situation on the TI-86, and Rigel is a TI-85 shell.  On the TI-85, RAM
pages are never switched; the 32K of RAM the TI-85 has always appears at
addresses 80000 to FFFF.

> because of the relocation-table needed by the other shells, this is a
> bit difficult to do with a compiler, the compiler also supports many
> other platforms so we need compatibility...

Actually, PhatOS doesn't need a relocation table either.  Also, you can
move your program to a specific address if it is written for some other
shell.  Finally, I would have to wonder how adding relocation support
would decrease the compatibility, as it seems to me that increasing the
flexibility of a compiler should increase its compatibility (of course, it
would be *much better* if, instead of having the compiler put in Usgard
relocation symbols, the relocation were instead handled fully by the
assembler and linker).

> Is there any difference if we use Rigel? So is the program also loaded on
> the last page (C000-FFFF)??? On the Ti-83 when, some shells don't update
> the VAT-pointers when it relocates the program to 'exec_ram'. Anything like
> this with Rigel?

As I mentioned above, Rigel is a TI-85 shell, so when using it, you don't
need to be concerned about which pages are used.  Anyway, Rigel loads the
program starting at $9296, and the program could probably be as large as
the remaining memory, so it could reach into the $F... range.

Rigel does fix the VAT so that variables can be accessed.  Since the Rigel
program is located right after Rigel in memory, it should be safe to
resize or delete anything other than Rigel or the program running, as
those things won't affect the positions of Rigel or the program.  PhatOS
does not update the VAT pointers however, so its programs  can not access
variables easily.

The TI-86, of course, is a completely diffrent situation.  There, the
program is always copied (by the system, when you first run it) into a
memory area starting at $D748 in the system page of memory.  This page is
completely separate from the memory used to hold variables, so no VAT
adjustment is done or is necessary.







Follow-Ups: References: