A83: Re: 1st TI83 ROM hack


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

A83: Re: 1st TI83 ROM hack




There are two problems with this.  First, the purpose for the table seems
pretty obvious: compatibility.  As you said yourself, it probably only works
on the ROM version that you tested it with.  The jump table places all the
rom call locations in a fixed location, so that an assembly program using
them will work with ALL rom versions.  Second, routines can be located on
different pages.  If you were to call the routine directly, and were
fortunate enough to have the address stay constant in all rom versions, you
would have to swap in the correct page, and swap the old one back in after
the routine returned.

There is a final reason why this idea is fundamentally flawed.  ROM calls
are slow, period.  Saving 27 cycles doesn't mean much compared to how long
the actuall call takes.  Are you really worried about 27 cycles when the
call itself takes 100-1000 cycles?  If you are using a ROM call, then
obviously speed isn't critical in that portion of the program.  Sure, every
little bit adds up, but not making the very minor speed increase noticable.
I would bet that no asm program would have any noticable speed increase when
compiled with this (just a noticable compatibility problem).  In almost
every game, you have to slow it down, because otherwise the game runs too
fast and becomes unplayable.

I am sorry to disappoint you, as it appears you might have put some serious
time into this (hopefully not).

----- Original Message -----
From: "Frank Schoep" <dsfs98@concepts.nl>
To: "ticalc.org assembly-83 list" <assembly-83@lists.ticalc.org>
Sent: Thursday, July 06, 2000 2:22 AM
Subject: A83: 1st TI83 ROM hack


Dear reader,

I'm sorry to bother you again, but the hax0r1ng of the TI83 ROM I'm doing
now pays off: I've found a way to increase the TI83's speed without any
modifications. However, the speed benefit you get is rather big, but the
area of effiency is small. That was a hard sentence, but it means: you save
27 clockticks on almost every romcall you make (of course I'm talking about
ASM now). My old 8086 has figured out that 186 (!) romcalls that were
defined by Texas Instruments(c?) were not optimized for speed. The memory
locations that were given by them point to some sort of storage area where
all romcalls are *called again* -> the Z80 has to process a new 'call'
instruction (17 clockticks) and another 'ret' (10 clockticks), which costs
27 clockticks. I've included a file that every TI83 programmer should have
by now (ti83asm.inc), but *this one is optimized*. There are no
compatability problems that I know of. One warning tough: I think it only
works on ROM version 1.07000, but it might as well work for ROM 1.10000 and
the TI-83+. I've tested the routines and they save lots of time indeed.
Everything just runs more smoothly than before.

I don't know if you're able to bring this discovery to other TI83 users, but
it would be nice, because every user could get benefit of it and all the ASM
prog's at ticalc.org should be recompiled. I sincerely do not know in which
category this file should be placed. I think it should be in some
/asm/includes/ directory, but this does not seem to exist @ ticalc.org...

Greetz,
Frank Schoep





References: