The quick and easy way to get the ROMs needed to run the emulator is to get them here. Recall that all ROMs for a driver named, say to9p, must reside in a file to9p.zip or a sub-directory to9p within your MESS roms directory.
The rest of the page is mainly intended for people wishing to dump the ROM of their own computer.
If your ROM is not a byte-to-byte copy of one MESS knows about, it will issue a signature warning. This does not mean the ROM will not work. Several revisions are known to exist but have not been all tested.
Please contact the author to report a successful dump. I am particularly interested in genuine ROMs that display a different start-up menu or logo.
In the following tables, we describe which file corresponds to which part of the memory. Sizes are expressed in bytes, and addresses in hexadecimal.
As a rule, ROMs with the same file name have identical size and contents, even though they may correspond to different address ranges in different computers. You need only dump them once.
Because of the limited 16-bit address space, some ROMs are banked. In this case, one file corresponds to one bank. Thus, you will notice that several files correspond to the same address range. If necessary, the last column (access condition) explains how to switch to the given bank.
The ROMs available for download could be put together thanks to Daniel Coulom (for most ROMs) and Sylvain Huet (Arabic TO7/70 ROMs), and Edouard Forler (single density floppy controller ROM CD 90-015).
These computers only contain a 6 KB BIOS ROM.
file | contents | address | size | access conditions |
---|---|---|---|---|
t9000.rom | BIOS | $e800-$ffff | 6144 B |
file | contents | address | size | access conditions |
---|---|---|---|---|
to7.rom | BIOS | $e800-$ffff | 6144 B |
file | contents | address | size | access conditions |
---|---|---|---|---|
to770.rom | BIOS | $e800-$ffff | 6144 B |
file | contents | address | size | access conditions |
---|---|---|---|---|
to770a.rom | BIOS | $e800-$ffff | 6144 B |
In order to use a floppy drive or the network, you must also get the ROM from the corresponding external controller.
Recall that the computer is hardly usable without the BASIC ROM which is provided as an external cartridge (e.g., basic.m7 for the TO7, basic.m7 or basic128.m7 for the TO7/70, basic128a.m7 for the Arabic TO7/70).
Note that an external cartridge masks the BASIC ROM.
file | contents | address | size | access conditions |
---|---|---|---|---|
mo5.rom | BIOS | $f000-$ffff | 4096 B | |
basic5.rom | BASIC 1 | $c000-$efff | 12288 B | no cartridge |
file | contents | address | size | access conditions |
---|---|---|---|---|
mo5e.rom | BIOS | $f000-$ffff | 4096 B | |
basic5e.rom | BASIC 1 | $c000-$efff | 12288 B | no cartridge |
In order to use a floppy drive or the network, you must also get the ROM from the corresponding external controller.
The TO9 has the biggest ROM of all: 136 KB! Indeed, it contains several application software (text editor, etc.) in eight 16 KB banks. Note the non-orthogonal way to access the banks. As it was not very convenient to update the ROMs with bug-fixes, its successor, the TO9+, ships the same software on floppies instead.
file | contents | address | size | access conditions |
---|---|---|---|---|
to9.rom | BIOS | $e000-$ffff | 8192 B | |
basic9-0.rom | BASIC 128 #1 | $0000-$3fff | 16384 B | $e7c3 and #$30 = #$00 write anything to $0000 |
basic9-1.rom | BASIC 128 #2 | $0000-$3fff | 16384 B | $e7c3 and #$30 = #$00 write anything to $0001 |
basic9-2.rom | BASIC 1 | $0000-$3fff | 16384 B | $e7c3 and #$30 = #$00 write anything to $0002 |
basic9-3.rom | graphical DOS | $0000-$3fff | 16384 B | $e7c3 and #$30 = #$00 write anything to $0003 |
soft9-0a.rom | database #1 | $0000-$3fff | 16384 B | $e7c3 and #$30 = #$10 write anything to $0000 |
soft9-1a.rom | database #2 | $0000-$3fff | 16384 B | $e7c3 and #$30 = #$10 write anything to $0001 |
soft9-0b.rom | text processor #1 | $0000-$3fff | 16384 B | $e7c3 and #$30 = #$20 write anything to $0000 |
soft9-1b.rom | text processor #2 | $0000-$3fff | 16384 B | $e7c3 and #$30 = #$20 write anything to $0001 |
Note: these ROMs include the software for the built-in internal floppy controller. You can also use the TO9 with an external floppy controller or network extension, provided you get the corresponding ROMs.
The TO8, TO8D, and TO9+ all have 80 KB of ROM, separated into four 16 KB banks of BASIC software and two 8 KB banks of BIOS (including the internal floppy controller ROM). The banks occupy the same address and are selected using the same mechanism on these three computers. Also, the BASIC ROM is identical in the TO8 and TO8D; only the BIOS is different.
file | contents | address | size | access conditions |
---|---|---|---|---|
to8-0.rom | BIOS #1 | $e000-$ffff | 8192 B | $e7c3 and #$10 = #$00 | to8-1.rom | BIOS #2 | $e000-$ffff | 8192 B | $e7c3 and #$10 = #$10 |
basic8-0.rom | BASIC 512 #1 | $0000-$3fff | 16384 B | write anything to $0000 |
basic8-1.rom | BASIC 512 #2 | $0000-$3fff | 16384 B | write anything to $0001 |
basic8-2.rom | BASIC 1 | $0000-$3fff | 16384 B | write anything to $0002 |
basic8-3.rom | graphical DOS | $0000-$3fff | 16384 B | write anything to $0003 |
file | contents | address | size | access conditions |
---|---|---|---|---|
to8d-0.rom | BIOS #1 | $e000-$ffff | 8192 B | $e7c3 and #$10 = #$00 | to8d-1.rom | BIOS #2 | $e000-$ffff | 8192 B | $e7c3 and #$10 = #$10 |
basic8-0.rom | BASIC 512 #1 | $0000-$3fff | 16384 B | write anything to $0000 |
basic8-1.rom | BASIC 512 #2 | $0000-$3fff | 16384 B | write anything to $0001 |
basic8-2.rom | BASIC 1 | $0000-$3fff | 16384 B | write anything to $0002 |
basic8-3.rom | graphical DOS | $0000-$3fff | 16384 B | write anything to $0003 |
file | contents | address | size | access conditions |
---|---|---|---|---|
to9p-0.rom | BIOS #1 | $e000-$ffff | 8192 B | $e7c3 and #$10 = #$00 | to9p-1.rom | BIOS #2 | $e000-$ffff | 8192 B | $e7c3 and #$10 = #$10 |
basicp-0.rom | BASIC 512 #1 | $0000-$3fff | 16384 B | write anything to $0000 |
basicp-1.rom | BASIC 512 #2 | $0000-$3fff | 16384 B | write anything to $0001 |
basicp-2.rom | BASIC 1 | $0000-$3fff | 16384 B | write anything to $0002 |
basicp-3.rom | graphical DOS | $0000-$3fff | 16384 B | write anything to $0003 |
Note: these ROMs include the software for the built-in internal floppy controller. You can also use the computer with an external floppy controller or network extension, provided you get the corresponding ROMs.
Please note that BASIC ROM banks 0 and 1 have different size and address range than banks 2 and 3.
file | contents | address | size | access conditions |
---|---|---|---|---|
mo6-0.rom | BIOS #1 | $f000-$ffff | 8192 B | $a7c0 and $#20 = $#00 | mo6-1.rom | BIOS #2 | $f000-$ffff | 8192 B | $a7c0 and $#20 = $#20 |
basic6-0.rom | BASIC 1 #1 | $c000-$efff | 12288 B | $a7dd and #$30 = #$20 $a7c0 and $#20 = $#00 |
basic6-1.rom | BASIC 1 #2 | $c000-$efff | 12288 B | $a7dd and #$30 = #$20 $a7c0 and $#20 = $#20 |
basic6-2.rom | BASIC 128 #1 | $b000-$efff | 16384 B | $a7dd and #$30 = #$30 $a7c0 and $#20 = $#00 |
basic6-3.rom | BASIC 128 #2 | $b000-$efff | 16384 B | $a7dd and #$30 = #$30 $a7c0 and $#20 = $#20 |
file | contents | address | size | access conditions |
---|---|---|---|---|
pro128-0.rom | BIOS #1 | $f000-$ffff | 8192 B | $a7c0 and $#20 = $#00 | pro128-1.rom | BIOS #2 | $f000-$ffff | 8192 B | $a7c0 and $#20 = $#20 |
basico-0.rom | BASIC 1 #1 | $c000-$efff | 12288 B | $a7dd and #$30 = #$20 $a7c0 and $#20 = $#00 |
basico-1.rom | BASIC 1 #2 | $c000-$efff | 12288 B | $a7dd and #$30 = #$20 $a7c0 and $#20 = $#20 |
basico-2.rom | BASIC 128 #1 | $b000-$efff | 16384 B | $a7dd and #$30 = #$30 $a7c0 and $#20 = $#00 |
basico-3.rom | BASIC 128 #2 | $b000-$efff | 16384 B | $a7dd and #$30 = #$30 $a7c0 and $#20 = $#20 |
file | contents | address | size | access conditions |
---|---|---|---|---|
mo5nr-0.rom | BIOS #1 | $f000-$ffff | 8192 B | $a7c0 and $#20 = $#00 | mo5nr-1.rom | BIOS #2 | $f000-$ffff | 8192 B | $a7c0 and $#20 = $#20 |
nano5.rom | network controller | $a000-$a7bf | 1984 B | basicn-0.rom | BASIC 1 #1 | $c000-$efff | 12288 B | $a7dd and #$30 = #$20 $a7c0 and $#20 = $#00 |
basicn-1.rom | BASIC 1 #2 | $c000-$efff | 12288 B | $a7dd and #$30 = #$20 $a7c0 and $#20 = $#20 |
basicn-2.rom | BASIC 128 #1 | $b000-$efff | 16384 B | $a7dd and #$30 = #$30 $a7c0 and $#20 = $#00 |
basicn-3.rom | BASIC 128 #2 | $b000-$efff | 16384 B | $a7dd and #$30 = #$30 $a7c0 and $#20 = $#20 |
As for the TO7, using a floppy drive requires an extra ROM from the external controller.
Several external device controller contain a ROM.
To use the device with a computer, you must put the controller ROM file in the same path as other ROMs for the computer.
All floppy controllers work indifferently with the TO7, TO7/70, MO5, MO5E, MO5NR, MO6 and Olivetti Prodest PC 128. Given a controller, the ROM is the same for all computers, but shows up at a different address (due to differences in the address space). We show only the address range for TO machines. For the MO machines, an address of the form $eXYZ must be translated into $aXYZ (for ROM ranges, but also access conditions).
Which controller is actually used can be set in MESS's in-game configuration menu. Note that the CD 90-351 is the most versatile (in practice, it seems to work with 5"1/4 and 2"8 drives as well as 3"1/2 ones!). It is also has the largest ROM, with four 2 KB banks.
New: We now support these external floppy controllers also on the TO8, TO8D, TO9, and TO9+. For these computers, you can switch between the built-in internal controller and any of the external controllers using MESS's in-game configuration menu. Note, however, that all external controllers may not work with all these newer computers (especially the TO9). In any case, using the internal floppy controller is recommended.
file | controller | floppies | TO address | size | access condition |
---|---|---|---|---|---|
cd90-015.rom (new) |
CD 90-015 | 5"1/4, single density 80 KB / side |
$e000-$e7bf | 1984 B | |
cd90-640.rom | CD 90-640 | 5"1/4, double density 160 KB / side |
$e000-$e7bf | 1984 B | |
cd-351-0.rom | CD 90-351 #1 | 3"1/2 320 KB / side |
$e000-$e7bf | 1984 B | write #$00 to $e7d8 | cd-351-1.rom | CD 90-351 #2 | " | $e000-$e7bf | 1984 B | write #$01 to $e7d8 | cd-351-2.rom | CD 90-351 #3 | " | $e000-$e7bf | 1984 B | write #$02 to $e7d8 | cd-351-3.rom | CD 90-351 #4 | " | $e000-$e7bf | 1984 B | write #$03 to $e7d8 |
cq90-028.rom | CQ 90-028 | 2"8 QuickDisk 50 KB / side |
$e000-$e7bf | 1984 B |
The TO7, TO7/70 and MO5 have a network extension with a dedicated ROM. It reuses the extension framework reserved for external floppy controllers. As a consequence, the ROM occupies the same address ranges.
New: The ROM can now be used with the newer TO family: TO8(D), TO9(+).
Unlike floppy controllers, the ROM is different for TO machines and MO machines. But there is only one extension box. A switch at the back of the box allows choosing either the TO or the MO mode.
file | controller | address | size | access condition |
---|---|---|---|---|
nano5.rom | network | $a000-$a7bf | 1984 B | switch 6 closed |
nano7.rom | network | $e000-$e7bf | 1984 B | switch 6 open |
I do not know whether the internal network controller in the MO5NR is similar to the external MO5 network extension...
Cartridges occupy addresses $0000-$3fff on TO machines, and $b000-$efff on MO machines.
Some cartridges are larger than 16 KB. They are split into several 16 KB banks. Bank switching is generally performed by a special hardware piece in the cartridge because no mechanism was provided in the Thomson computers to do this. As a consequence, different cartridges may use incompatible mechanisms. The mechanisms that I know of are:
Recall that MO cartridges and TO cartridges are incompatibles.
Return to the 8-bit Thomson MESS driver page.