TRS-80 Model I/III Emulator for MS-DOS by Matthew Reed
This program emulates two very popular early microcomputers, the TRS-80 Models I and III. It is an extremely fast emulation, written from the ground up in 8088 real-mode assembly language. Special optimization techniques were used, allowing a 16Mhz 386SX to emulate a TRS-80 at normal speed. The program also emulates some unusual TRS-80 hardware, such as a Model I doubler, TRS-80 joystick, hardware clock, and hard drive.
Note that in this document, TRS-80 refers to either a Model I or III. PC refers to the computer running the emulator. This is used to distinguish between hardware common to both types of computers, such as a TRS-80 joystick as opposed to a PC joystick.
This emulator supports Model I and III emulation.
This program will run on an IBM-compatible computer running MS-DOS 3.0, with at least CGA graphics and 300K of free memory. A hard drive, though not necessary, is practically essential for storing virtual disk files. A parallel printer, PC joystick, and SoundBlaster compatible card are also optional. Reading physical TRS-80 disks requires a disk drive that will match the disk size (generally a 5¼″ drive), and a standard floppy disk controller. It is not possible to read physical disks on a Tandy 1000. This program has been tested under Windows 95.
This program emulates a Model I and III with the following hardware:
- Z80 microprocessor with 48K RAM (including all undocumented instructions)
- Floppy disk controller (FD1771 for the Model I, FD1793 for the Model III)
- Percom or Radio Shack doubler (Model I only)
- 4 double-sided double-density 80 track drives
- Hard disk drive, with capacity up to 13 megabytes
- Real time clock interrupt (25 ms Model I, 30 ms Model III)
- Hardware clock
- 64 by 16 screen with double-wide mode
- Lowercase modification (Model I only)
- Extended character set (Model III only, characters 0-31 and 192-255)
- Parallel printer port (only with PC parallel printer)
- TRS-80 joystick (only with PC joystick)
- Amplifier for sound output (through PC speaker or SoundBlaster card)
- An Electric Pencil control key
Obviously, no emulation can ever achieve complete software and hardware compatibility. However, my emulator is very close, and can run all of the software I have tried. This includes very hardware specific programs such as Super Utility Plus, TRSDOS 2.3 for the Model I, TRSDOS 1.3 for the Model III, LDOS 5.3 for the Model I and III, DOSPLUS 3.3 for the Model III, MULTIDOS 1.6 for the Model III, and NEWDOS80 2.0 for the Model I and III.
To run the emulator, type one of the following commands, depending on which Model of TRS-80 you wish to emulate:
Disk image filename is the name of a file containing a disk image. The name must be an 8.3 MS-DOS name, and it must include the full path to the file. Disk image filenames must have an extension of **.DSK**. You can also leave off the filename, and the emulator will start with a blank disk.
There are several optional parameters you can use when starting the emulator. These parameters should be enclosed in parentheses, and if you use more than one parameter, separate them with commas, like this:
If you have a hard disk, you can also use the following command:
Hard disk filename is the name of a file containing a hard disk image. The name must be an 8.3 MS-DOS name, and it must include the full path to the file. Hard disk image filenames must have an extension of **.HDV**. You can also leave off the hard disk filename, and the emulator will start without a hard disk.
Two utility programs are included on UTILITY.DSK. The first is HARD/CMD, which will install the hard disk driver. HARD/CMD, and the hard disk image file, HARDDISK.HDV, must be present in the same MS-DOS directory as the emulator. HARD/CMD will only work under Model I and 3 LDOS.
HARD/CMD has three optional parameters. Any parameters should be enclosed in parentheses, and if you use more than one parameter, separate them with commas, like this:
The other utility on UTILITY.DSK is CLOCKSET/CMD, which will set the TRS-80 time and date. This program will work with all TRS-80 operating systems. Since HARD/CMD will also set the time, CLOCKSET/CMD is primarily useful if you don’t want to use a hard drive, or if you don’t use LDOS.
CLOCKSET/CMD has only one optional parameter, and again, if you use it, it should be enclosed in parentheses: