--------------------------------= TI99SIM =-----------------------------------

A few years back, I thought it would be neat to be able to play my old TI 
games on my PC.  Instead of doing the smart thing (looking for an existing 
emulator), I sat down and wrote my own.  At first is was a simple text-based 
simulation of the TI. Then I added graphical support for the OS/2 
Presentation Manager.  When I got bored with that, I ported it to Windows 
and added sound support.  Now I've decided to try my hand at a Linux version.  
In the spirit of Linux and Open Source, I'm releasing the code under the GPL 
license.

DISCLAIMER: I'm not one for writing a lot of documentation, so you're 
encouraged to look at the code to see how some things work if they're not 
described here.  If you're interested in writing documentation, let me know.

NOTE: In order to run the emulator, you need to create a cartridge that
contains the console ROM & GROMs from the TI-99/4A.  Texas Instruments 
will not allow these to be distributed, so you'll need to find a way to get 
them yourself.  If you have a working copy of v9t9, instructions are included 
to help you create the required cartridge.  If you don't, I would suggest you
download it as it contains documentation on how to get the files you need to
do this.

------------------------------------------------------------------------------

Installation:

In order to run the emulator, you will need to download and install the Simple
DirectMedia Layer library available at http://www.libsdl.org/download-1.0.html.
I've been developing with versions 1.0.8 & 1.1.3 and don't know how other 
versions will work.

After installing SDL, type 'make' in the directory where you placed the
emulator.  If the SDL include files are not located at /usr/include/SDL you
will need to edit src/sdl/Makefile to point to the correct path.

Once make is complete you will need to create the console ROM cartridge 
TI-994a.ctg in order to run the emulator.  See the section on 'convert' below
for instructions.  To run the emulator just type:

  >./ti-sdl [cartridge.ctg]

------------------------------------------------------------------------------

The following section describes the basic feature of the emulator.  Entries
beginning with * are items on my to-do list for the next release.

General Features:

  - Runs under Linux or Win32 (Windows 9X, Windows NT)
  - Emulation of the TI-99/4A Home Computer.
  - Speed is kept as close as possible to the actual speed of the TI.
  - Support banked cartridges (like TI Extended BASIC).
  - 32K RAM Expansion.
  * Save/Restore the complete computer state.
  * Save battery-backed RAM to disk when cartridge is removed.
  * Add GTK+ GUI and port menus/hot-keys/features from Windows version.


Graphics Support:

  - All modes except multi-color.
  - Sprite co-incidence not supported yet.
  - Scaled window (currently only 'actual size' of 256x192)


Sound Support:

  - Three voice support using native sound device.
  * No noise support yet.


Joystick Support:

  - Press NUM-LOCK and use arrow keys.
  * Add real joystick support 


Disk Support:

  - Requires a TI disk controller ROM dump.  
  - Supports disk images created by AnaDisk.
  * Modify 'convert' to allow CRU base to be specified.


---------------------------------= disk =-------------------------------------

NOTE: Disk emulation is not yet in the Linux version.  Actually, it is 
  included, but there is no way to specify the disk images for DSKn.

The emulator allows you to use disks created by a TI-99/4A computer within the
emulator.  You need to create a disk image using the dump feature of AnaDisk 
and includes the 8 byte header for each sector.

'disk' allows you to look at the contents of a disk image and optionally 
create native files from those in the disk image.  This allows you to create
files that can be used by convert to create cartridge files that you can use
with the emulator.

--------------------------------= convert =-----------------------------------

'convert' allows you to create cartridges and a special TI ROM console 
cartridge.  It will convert your existing v9t9 roms or create cartridges using
output from a hex dump of a rom image.  A sample file, ti-roms.dat, is 
supplied as an example (NOTE: This file does not contain a complete hex dump
of the TI console ROMs but can be used as a template if you have the needed 
files).

To convert existing v9t9 cartridges, type 'convert foo.bin' where foo is the
base name of a set of ROM files.  For example, to convert the files 
PARSECC.BIN and PARSECG.BIN to parsec.ctg type:

  >./convert /mnt/v9t9/v6.0/modules/PARSEC.BIN parsec.ctg

Files to be converted can be in any directory.  The new cartridge will be
created in the current working directory.  To create the console ROM cartridge
you need to specify 994a.bin or ti.hex (depending on your version of v9t9 or
TI Emulator). For example:

  >./convert /mnt/v9t9/v6.0/roms/994a.bin

NOTE: When convert looks for the module/rom files, it appends lower case
letters to create the filenames.  If it has problems finding the expected
files, you should copy them to a temporary directory using the expected case.

--------------------------------= dumpcpu =-----------------------------------

This program will allow you to unassemble any CPU ROM section in a cartridge
file.  Through the use of an external configuration file, you can assign 
labels and EQUs to make the disassembly more readable.

NOTE: This program is a work in progress and doesn't always create good 
  listings.

-------------------------------= dumpgrom =-----------------------------------

Ever wondered what the code behind that game looks like?  This program is 
similar to 'dumpcpu' but disassembles that GPL code in the GROM cartridge.
It uses the standard GROM headers to find starting addresses and strings.

NOTE: The c++ compiler supplied by Cygnus GNU Pro will fail to compile this
  file with an 'Internal compler error'.  Using gcc or egcs will work.

------------------------------= ti-console =----------------------------------

A simple text-based emulator.  It includes a simple interface that allows you
to step through code at the assembly or GPL instruction level.  It doesn't 
provide VDP interrupts and doesn't support graphics at all.  If you just want
to see what the computer is doing, this is the program to do it with.

--------------------------------= ti-sdl =------------------------------------

The X11 based emulator.  It will accept a single command-line argument 
specifing the filename of a module to be used.  There is no GUI yet, and there
are very few features implemented yet.  Pressing ESC will exit, and F10 will 
force the emulator to reboot.

------------------------------------------------------------------------------

Contact:  ti994a@mrousseau.org
Homepage: http://www.mrousseau.org/programs/ti994a/
