PDA

View Full Version : TI-74 BASIC profiler



JGardner
January 24th, 2013, 08:34 PM
Ever wonder how you might break down where your code is
spending time, or how long an individual task takes?

If you have access to a scope, or better yet a logic analyzer, it's
easy (A cheap PC-based logic analyzer works great.)

The idea is to toggle a pin in the Dock-Bus I/O port when the
routine you're interested in executes, and toggle it again when
the routine completes.

The following assumes your pgm is running in System RAM, not
cartridge memory - If you want to run your pgm in cartridge RAM
you'll need to adjust the POKE & EXEC addresses.

100 DATA 1234
110 CALL POKE(16370,165,1,15,10) ! replace DATA statement bytes w/ executable code

... code - When you get to what you want to measure, insert the following:

200 CALL EXEC(16370) ! Execute the DATA code in place, toggle HSK & trigger your scope/logic analyzer.
...
... routine you are measuring...
...

300 CALL EXEC(16370) ! Toggles HSK again at end of routine.

The pulse length on the scope, minus the execution time of the two
EXEC statements, is how long your routine takes - You can measure
EXEC time by executing two consecutive EXECs - It's close to 10 ms.
on my BASICALC!

FWIW, the asm code is:

xorp %>01,P15 ; toggle HSK
rets ; return to BASIC

Turning the '74 around & looking into the I/O port, counting from
left to right, ground is pin 10, & HSK is pin 7.


Jack