Version: 1.5.0
Date: 4/13/05


I. Introduction

sim990 is a simulator for the TI 990 computer. It supports the TMS-9900
and TI-990/10 instruction set with interrupts. TILINE and memory mapping
have been added in this version. This version also runs DX10 and the
DOCS diagnostics disks.


II. Build sim990

Lunix/Unix:

$ make

The make attempts to figure out which system to make for using uname.

WinBlows:

$ nmake nt


III. To run sim990

$ sim990 [-options]

Where options are:
   -c configfile - File from which to read configuration information.
                   The command format is the same as command mode.
   -m model      - CPU model, model = 4, 5, 9, 10, 10A and 12.
   -p            - Run in Panel mode.
   -r file.rom   - Rom for high memory, default ti990-[model].rom.
   -s memsize    - Size of memory in bytes (can use K and M, eg. 256K).
   -w NN         - Size of panel window.

In command mode the simulator commands are:

   a = attach device, syntax:

         a device[/switches] devaddr intlvl [device.file | device.port]

   b = boot from device, syntax:

         b[n] device

   c = clear breakpoint

   d = display memory, syntax:

         d location

   g = go (run program)

   h = help

   k = set breakpoint, syntax:

         k location

   l = load program, syntax:

         l[n] [loadaddr] object.file

   m = modify currently displayed memory, syntax:

         m newvalue

   n = display next memory location

   p = set pc, syntax:

         p location

   q = quit the simulator

   r = reset the system

   s = single step program

   w = set workspace pointer, syntax:

         w location

   z = toggle panel mode

Where:

   device      = ci - console input
		 co - console output
                 p  - printer
		 fn - FD800 floppy, n = 0-3
		 cr - card reader
		 vn - 911 VDT, n = 0-3
		 tn - 945 VDT, n = 0-3 (Dummy)
		 dn - TILINE DISK, n = 0-3
		 mn - TILINE TAPE, n = 0-3

   switches    = device specific switches:

	       VDT:
	          /u      - Upcase keys.

	       TAPE:
	          /c      - Create tape file.
	          /r      - Read only.

	       DISK:
	          /r      - Read only.

   devaddr     = device address.

   intlvl      = device interrupt level.

   device.file = file to be associated with non-VDT device.

   device.port = TCP port to be associated with VDT device.

   location    = memory location.

   newvalue    = contents of displayed memory replaced with value.

   loadaddr    = load address for relocatable objects.

   object.file = file containing 990 object.

All numbers can be in either decimal for hexadecimal. Hexadecimal numbers are
indicated with a beginning greater than (>) sign. The 'n' for the boot and load
commands means do not start. This allows you to set breakpoints, etc.

Panel mode operation displays the current registers, front panel value,
operation status and workspace. The panel display is updated after every
clock tick. Also, the console (serial terminal on CRU >0) is displayed under
the panel display.

When the simulator is running the simulated program you enter the command break
character, CTRL-E, to regain command mode. The program is suspended and the
command prompt is displayed. You may enter any of the above commands and the
go command "g" resumes the simulated program.


IV. How to run the FORTH system

The supplied FORTH system disk, forthsys.fpy, is based on the 1983 version of
fig-FORTH. There is also a data disk, forthdat.fpy, that contains several
screens.

To run FORTH interactively:

   $ sim990

   TI 990 Simulator VERSION: /4 CPU 56K

   :a p >40 4 print.out
   :a f0 >80 7 forthsys.fpy
   :a f1 >80 7 forthdat.fpy
   :b f0

   9900 FORTH 1.0.0

To run FORTH using a configuration file:

   $ sim990 -c forth.cfg

   TI 990 Simulator VERSION: /4 CPU 56K

   9900 FORTH 1.0.0

The configuration file, forth.cfg, contains:

   a p >40 4 print.out
   a f0 >80 7 forthsys.fpy
   a f1 >80 7 forthdat.fpy
   b f0

To terminate you enter the command break character, CTRL-E, which puts the
simulator back into command mode, and enter the "q" command to terminate.


V. How to run the FOCAL system

The supplied FOCAL system disk, focal.fpy, is based on the Digital PDP-8
Focal.

To run FOCAL interactively:

   $ sim990

   TI 990 Simulator VERSION: /4 CPU 56K

   :a p >40 4 print.out
   :a f0 >80 7 focal.fpy
   :b f0

   FOCAL/990 execution begins
   *

To run FOCAL using a configuration file:

   $ sim990 -c focal.cfg

   TI 990 Simulator VERSION: /4 CPU 56K

   FOCAL/990 execution begins
   *

The configuration file, focal.cfg, contains:

   a p >40 4 print.out
   a f0 >80 7 focal.fpy
   b f0

To terminate you enter the command break character, CTRL-E, which puts the
simulator back into command mode, and enter the "q" command to terminate.


VI. How to run DX10

The TILINE disks on the web site contain several version of DX10. To run the
3.6.0 version you can execute the following steps:

   $ sim990 -m 10 -s 512K

   TI 990 Simulator VERSION: /10 CPU 512K

   :a v0/u >100 10 2000
   :a v1/u >120 8 2001
   :a t0 >F980 11 NULL
   :a p >60 14 print.out
   :a d0 >F800 13 DX10_3.6.0.dsk
   :a m0 >F880 9 NULL
   :b d0

The DX10 system boots and the display is on 911 VDT. To access the terminal
you telnet to the port, 2000 in the v0 attach, in another window:

   $ telnet localhost 2000

When telnet connects you'll be able to login by entering F10 (Gold) and
"!" (Exclamation point).

You can also put the above commands into a config file and boot as follows:

   $ sim990 -m 10 -s 512K -c dx10.cfg


VII. Known problems/limitations

1. Need to calibrate clock tick for correct timing. The OSes will keep 
   incorrect time and the CPU diagnostics clock test will fail.

2. DX10 (version 3.3.0 and later) background tasks, started using .QBID, hang. 

3. Not all the /12 instructions have been implemented.

4. Windows TELNET doesn't generate ANSI sequences for the functions buttons.

