Re: How does Zshell work
[Prev][Next][Index][Thread]
Re: How does Zshell work
If you don't have any experience asm programming, explaining is going
to take a small book.
However, i'll just give you a few easy ones:
Many functions such as printing text on the screen take quite some
lines of code. However, since the TI-85 EOS (When I say EOS, i mean
the non-zshell mode) needs to do this often as well, there are special
routines to eccomplish this in your ROM (can't write to it, never gets
deleted.) Rob, Dan, and Magnus have, after loads of research, found
the adresses in ROM of a couple of these 'ROM calls'. However, as
versions differ, so do the locations. So, rather than calling, say,
the 'clear the screen' romcall directly, I call on ZShell to do it for
me, who in turn calls the adress that is specific to my rom version.
You probably think: 'right, so, why don't write a zshell that maps the
rom calls to the ti-86?'. some rom-calls actually work differently on
the 86. That means that the shell program is going to have to do some
translating work. This causes significant slow-downs (if it is
possible to do the translating bit), and most games rely on timing.
since this slows it down, there is no real remedy. This is just one
reason.
RAM is mapped on the ti-86. There are workarounds, but they either
require the ZShell emulator to do the swapping, which again causes
slowdowns with the possible screwing up of the program running, or,
one full page is dedicated to the zshell emulator. This means that all
the contents of this page must stay exactly within it's RAM page.
Okay, you say, fine, let's do that. Won't work. the moment you change
one variable in EOS mode, these things can move. This obstacle can be
solved without need for recompilation, but you lose the ability to use
your calc normally. Mot of us still have to do some calculations left
and right, sadly. Again, another problem.
This RAM page swapping has more problems. Since there is no RAM
swapping on the 85, programs just write to the screen and use the text
memory for temporary variables (because these are at a fixed spot in
ALL THE TI-85 ROM versions.) The 86 needs swapping, AND has this in a
different place. ZShell (or the non-existant 86 emulator) never gets
control (unlike a rom call). So this emulator can't correct (which
would cause lags which might screw up timing, again.)
A few rom calls are fixed in all the ti-85 rom versions. These are
called directly. zshell doesn't get control. These rom versions *ARE*
in a different spot on the 86.
References: