Re: A86: can one program be on two pages?


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

Re: A86: can one program be on two pages?




rabidcow@juno.com wrote:

> On Wed, 24 Jun 1998 10:16:28 -0400 Bryan Rittmeyer <bryanr@flash.net>
> writes:
> >
> >Hi,
> >
> >Once again I'm going to annoy you all with my lame newbie questions..
> >but seeing as how the TI-86 uses a paged RAM (as well as ROM, of
> >course) system, isn't it possible to have programs start on, say,
> >page 2 and overflow into page 3? In theory I could load page 2
> >into the low 16k and page 3 into the high 16k - that would
> >accomodate programs up to 32k (in theory). Is there a ROM call to do
> >this? If not, does the byte receive code in the ROM check after
> >-every byte- to see if its overflowed the current RAM page and in
> >that case swap in a new page? I know I can use _load_ram_ahl to
> >automatically swap in the RAM page where a program begins... but
> >what happens if the program is bigger than 16k? Is there a limit
> >on the calc of 16k, 32k, or none at all? If programs can be more than
> >32k (and I believe somebody said they can be up to 64k) then the
> >calc has to do some checking in link routines as to whether or not
> >it needs to swap onto a new page. This could potentially get very
> >messy... I'd need some kind of routine to convert between an absolute
> >address and a RAM page/hl combo (like _load_ram_ahl)
>
> asm programs are limited to something like 9k or 12k or something.

Depends on where the end of _asm_exec_ram is set to (oh that reminds me i
might have to fix that in asaptrig... hehe)   Anyway, even if you did try to
load the two pages, you could only _safely_ execute 16k.  Any more and you
risk spanning 3 pages, and it would crash (i.e. if the program starts on the
_very_ last byte of the page)

> well, i said before (kinda hidden):
> unless you switched _load_ram_ahl with one of those deals that loads two
> ram pages at once...  maybe: (might work, might not, anyone wanna test
> it?)
>      call _load_ram_ahl
>      out ($05),a
>      inc a
>      out ($06),a
>      res 7,h
>      set 6,h
>
> and end with
>      out ($05),$0d
>
> that would load two ram pages.  i think it should work, hl would point to
> wherever just like if you called _load_ram_ahl.

Doesn't the HL output of _load_ram_ahl assume that it's gonna be loaded into
the second paged area?  you'd probably have to sub $4000 (or xor $C000 should
work)

> also, _conv_ahl $4633 gives you the ram page #, add $40 and send it to
> the port and you've got _load_ram_ahl.

An OR would be faster :-)

> >receive, but it seems awefully slow. Swapping RAM pages must take
> >quite a few CPU cycles. Will _load_ram_ahl still swap pages if the
> >right page is already swapped in?
>
> it's quicker to just swap than to check.  it's calculating what page it
> needs that takes time.
>
> >could have spent another $2 and put a 68k into the damn thing...
>
> but that's a more complicated processor...  i don't like complicated
> things

Lots of calculators handle page switching just fine...  I think TI did a very
good job with this...

> -josh
>
> >
> >--
> >Bryan Rittmeyer
> >mailto:bryanr@flash.net
> >http://www.bridges.edu/horizon/
> >
>
> _____________________________________________________________________
> You don't need to buy Internet access to use free Internet e-mail.
> Get completely free e-mail from Juno at http://www.juno.com
> Or call Juno at (800) 654-JUNO [654-5866]



--
Stephen Hicks
mailto:shicks@mindspring.com
ICQ:5453914
IRC/AIM:Kupopo
Hopemage:http://www.mindspring.com/~shicks/



Follow-Ups: References: