Page Contents

small arrow Description
small arrow Programs
small arrow EPROM Programmer
small arrow Compact Flash Drive Utility
small arrow Mini Memory Module Line-By-Line Assembler Bug

Description

The Texas Instruments TI-99/4A was an early home computer, released in June of 1981. The computer holds the distinction of being the first 16-bit personal computer, having a 16-bit TMS 9900 CPU running at 3.0 MHz.

TI-99/4A photo For a full description of the system, see this comprehensive Wikipedia entry. TI-99/4A start screen

Programs

Disk: Miscellaneous.zip (V9T9 format)
Programs with names in black are written/generated by me. Programs with names in red are copied from other sources.
CATALOG BASIC disk catalogue program from TI disk drive manual.
CFMGR
CFMGS
Compact Flash Drive Volume Manager.
E/A 5 format.
CONV_BASES Subroutine (for MERGE-ing into other programs) to convert a binary, decimal or hexadecimal number to binary, decimal or hexadecimal. Lines numbered from 10000.
DISASSMBLR TMS 9900 assembly language disassembler, running under TI Extended Basic with 32K RAM.
DISASS/S
DISASS/O
Source and object files for assembly language utility to print to the screen in text mode (40 characters × 24 lines).
MGR3
MGR4
DM-1000 (V3.5) Disk Manager (copied from Funnelweb).
E/A 5 format.
CART_RAM/S
CART_RAM/O
Source and object files for assembly language program to save/load the contents of the SuperCart RAM (>6000 - >7FFF) or MiniMem RAM (>7000 - >7FFF) to/from a data file. Also has an option to fill the RAM with zeroes. Load using E/A option 3 or MiniMem option 3, 1. Program auto-starts on loading and detects the cartridge type. Requires 32K RAM expansion to be present.
SC_START Data file containing the RAM image for the SuperCart startup menu.
MM_LBLA Data file containing the RAM image for the MiniMem Line-By-Line Assembler. Program names: OLD, NEW.
MM_LINES Data file containing the RAM image for the MiniMem Lines demonstration program. Program name: LINES.
RD_REF_TBL BASIC program to display the contents of the REF/DEF table when running with the Extended Basic, Editor/Assembler or MiniMem modules.
SYSTEX XB/assembly language hybridisation program. Version 1.0, ©1985, Barry Boone. Allows you to save assembly language programs/utilities as part of XB program files.
XBOPT5 E/A 5 format loader for Extended Basic. Version 3.1, 1987, Barry Boone. To use, make a copy of the program, then edit line 110 to specify the program to load.

Disk: The_Valley.zip (V9T9 format)
RUN   An adventure game, published as a program listing in Computing Today magazine, April 1982.

Choose your character type carefully ... Barbarians recover quickly but their magic doesn't come easily. A Wizard? Slow on the draw and slow to mature ... but live long enough and grow wise enough and your lightning bolts are almost unstoppable ...

The Valley is a real-time game of adventure and survival. You may choose one of five character types to be your personal 'extension of self' to battle and pit your wits against a number of monsters. Find treasure, fight a Thunder-Lizard in the arid deserts of the Valley, conquer a Kraken in the lakes surrounding the dread Temples of Y'Nagioth, or cauterise a Wraith in the Black Tower. In fact, live out the fantasies you've only dared dream about. BUT BEWARE ... more die than live to tell the tale!


Program requires XB and 32K memory.
To run the program, load and run the file RUN.
Files must be on a disk named THE_VALLEY.
Developed and tested on a console with 32K × 16 bit RAM and CF7+ Compact Flash Drive. Tested on the Win994a simulator.

The Valley - splash screen The Valley - main screen The Valley - Black Tower of Zaexon

EPROM Programmer

This project is an EPROM Programmer to read and program TMS 2708 (1K × 8) and TMS 2716 (2K × 8) EPROMs Note 1. It was developed to program EPROMs for my TM 990 system. The circuit is based around a TMS 9901 Programmable Systems Interface IC which is used to apply address, data and control signals to the EPROM. A control program, written in assembly language, enables the user to view the data on an EPROM as both hex and ASCII, to verify that an EPROM is blank, to save the data from an EPROM to a data file, to save an EPROM image in memory to a data file, to program an EPROM from a data file, and to compare the data on an EPROM with a data file.

The board is designed to plug into the TI-99/4A console side port via a Y-cable (side port splitter), which allows the PEB or other storage device to also be connected at the same time Note 2. The board requires a +12V supply, which can be provided by fitting a DC power socket to the side of the console, wired directly to the +12V supply from the internal power supply board.

A circuit diagram of the EPROM Programmer is available here. The object code for the control program Note 3 is available here (disk in V9T9 format; load program EPROM/O using Editor/Assembler option 3). Screenshots of the control program in use are shown below - click each for a larger image.
EPROM Programmer PCB

EPROM Programmer - menu EPROM Programmer - verify EPROM is blank EPROM Programmer - view EPROM data EPROM Programmer - programming EPROM

Note 1: Texas Instruments TMS 2716 EPROMs have a different pinout and programming requirements from 2716 EPROMs from other manufacturers. The board is compatible with TMS 2716 EPROMs from Texas Instruments only.

Note 2: The board and software have been developed using a TI-99/4A with a CF7+ Compact Flash Drive for program storage. It has not been tested with a PEB attached, but there is no reason why it should not work. Note also that I found the CF7+ Compact Flash Drive a bit temperamental connected to the Y-cable as supplied. I ended up shortening the 'arm' of the cable that the CF7+ was connected to, and it then worked perfectly. Positioning the two arms of the Y-cable at 90° to each other may also be sufficient for reliable operation.

Note 3: The algorithm to program an EPROM contains some timing loops which control the application of the +26V programming pulses. The object code compiled here is for a TI-99/4A with 32K RAM on the internal 16-bit data bus. If the program is to be used on a console with external 32K RAM (on a CF7+ or in the PEB for example), these programming pulses will be extended (as the console is running slower), but an EPROM will probably still program reliably.

Compact Flash Drive Utility

This CF To Disk Transfer Utility helps you copy disk volumes between a CF card and your hard drive. It is in essence a graphical front end to the cf2dsk.exe and dsk2cf.exe programs supplied with the TI-99/4A Compact Flash Drive. Full details are available in this readme file.

Mini Memory Module Line-By-Line Assembler Bug

The Line-By-Line Assembler (LBLA) provided on cassette tape with the TI-99/4A Mini Memory module contains a bug, whereby if assembling instructions with two symbolic addressing operands (for example MOV @L1,@L2), and both operands are unresolved references (that is, L1 and L2 in the previous example have not yet been defined), the first instruction will be assembled correctly, but further instructions will not as the label for the second operand is not added to the symbol table, and hence is not 'filled in' when the label is defined later.

The bug is in a small loop starting at address >7248 that clears memory addresses >7194 - >719F after assembling each instruction. This loop also needs to clear one extra word (address >71A0) as this word is used when assembling an instruction to record whether the second operand is an unresolved symbolic reference or not. The bug can be fixed by simply increasing the loop counter by 1, as follows:

  1. Load the LBLA in the normal way using Easy Bug.
  2. After loading, while still in Easy Bug, type M724F followed by the <Enter> key.
  3. The value 06 should be displayed. Type 07 followed by the <Enter> key.
  4. Press the '.' key to return to the Easy Bug prompt.
  5. Type S7000 followed by the <Enter> key to save the corrected program back to cassette tape.

back to home page