----------------------------------------------------------------------------
INTRODUCTION
----------------------------------------------------------------------------

This text file describes some of the useful aspects of the .92B format used
in the TI-Graph Link software. This file also describes what method Fargo
uses to load bootstrap machine language code into a TI-92.

Before we knew how to run machine language on the TI-92, we did most of our
hacking by receiving backups from the TI-92, analyzing them, modifying them,
and sending them back to see what would happen.

-----------------------------------------------------------------------------
BACKUP FILE FORMAT
-----------------------------------------------------------------------------

The actual RAM dump section of a .92B file starts at the offset $52 in the
file, which corresponds to the address $00551A in the TI-92's memory.

To convert a memory address to a file offset, subtract $54C8.
To convert a file offset to a memory address, add $54C8.

-----------------------------------------------------------------------------
RUNNING MACHINE LANGUAGE
-----------------------------------------------------------------------------

Fargo runs machine language by sending a backup that is so big that it wraps
around to the beginning of memory, modifying entries in the exception vector
table to point to a routine stored in RAM instead of the vector routine in
ROM. Since the TI-92 will be receiving the backup at the same time as it is
overwriting the vector table, at some point the backup receiving routine
will trigger a vector that has been already modified. Instead of running the
routine is was supposed to, it will trigger the routine stored in RAM that
was transferred earlier in the backup. This happens at about 99%, at which
point the Graph Link software will report a timeout error and state that the
the backup has failed. It couldn't be more wrong!

For a backup to wrap around to the beginning of RAM, it must be 109370(d)
bytes; to overwrite the entire vector table, it must be 109626(d) bytes.
Currently there is no other known way to run machine language on the TI-92.

(This technique was invented by David Ellsworth.)
