Original uncut version - the version printed in Linux Format issue 33 in November 2002 was a much-condensed version of this text. The additional material here is exclusively copyright © Simon N Goodwin 2004.
Simon Goodwin rounds up his emulation series with a big MESS
This is the final part of our tour of emulators that run on Linux, and it focuses on XMESS, which aims to emulate more than two hundred types of home computer. This column also mentions emulators as yet unreviewed, especially for more obscure systems like those based on Motorola's 6809, surely the finest 8 bit microprocessor.
This article covers an awful lot of ground. After writing twice as much as would fit the magazine I found I still hadn't mentioned emulated home computers like the Bally Astrocade, Sord M5, Salora Fellow, VZ200, MicroTan65, LNW-80 or the Telford-born Tatung Einstein TC01, let alone that Australian stalwart the Applied Technology Microbee, a rare home computer with non-volatile RAM! This version lacks the cover disc materials, but includes a plethora of test results and tips that were squeezed out of the printed article.
While you'll have to delve into Google for the latest code and full details of these systems, this article will give you a feel for the scope and capabilities of MESS, and catch up on quite a few other emulators that might not otherwise get mentioned at all.
Making a MESS
Like MAME, MESS is a big emulator. The bz2-compressed source occupies over 7M, and unpacks to about 48M - and this is without any ROM files for the emulated systems. You`ll need around 80M of free disk space to compile and link XMESS. A 500 MHz AMD K6/2 took almost 15 minutes to make a default X11 version on my Debian 2.2 system.
The makefile tentatively supports Intel's C++ compiler as well as GCC, but you will need to read and edit the makefile if you want to try this. Most Linux systems should accept the following incantation:
tar -xvIf xmess-0.561.1.tar.bz2 cp makefile.unix Makefile make
Makefile tweaks can boost performance, and may be needed for some architectures and distributions. XMESS supports Alpha, 68K, PPC, MIPS, SPARC and HP-PA among other RISC systems. The option '-L/usr/X11R6/lib' should ensure that SuSE Linux finds the decompression library, but if you run into problems with this on any distro you can uncomment 'ZLIB=1' to use a version of zlib packaged with the emulator rather than share your local copy.
ESD, ALSA and SDL sound are optional in addition to the usual OSS, and various joystick options. The display can use the default portable but slow X11 window, SVGALIB on PC hardware, XFree86 DGA, SDL, OpenGL or Glide under X11.
The superuser command 'make install' copies the 'xmess.x11' binary into '/usr/local/bin'. This is close to 6M long, but still less than half the size of its sibling 'xmame.x11'. The 'man' page installed is for MAME and doesn`t mention MESS, though the command-line interface is very similar. This is a general problem with MESS documentation and sometimes rather annoying. You get the impression that MAME is the focus of development and by comparison MESS is a pipedream.
You`ll need to put ROMs in '/usr/local/lib/xmess/' unless you configure otherwise. That's not normally a user-writable directory, as it is shared by all users, so solitary Linux users may prefer to override the default with a config file. This is not made automatically, though 'make install' creates a ~/.xmess directory for it. To copy the current settings out in the required format, type:
xmess.x11 -showconfig > ~/.xmess/xmessrc
Then edit 'xmessrc' to specify where the ROMs on your system live - I used 'rompath /home/simon/mess'. If you are running multiple logins you may want to put the files in the default place, setting appropriate permissions as superuser, but this is overkill for most personal Linux setups and presupposes that all users own the requisite firmware and are therefore legally entitled to use it.
XMESS claims support for 272 systems, but many of those don`t work and others are swaps, so the true figure is dozens rather than hundreds, a handful of which offer facilities unavailable elsewhere. It calls all the variations 'game', in another sign of its MAME legacy.
In past columns I've waxed lyrical about emulators for micros based on the mainstream 6502 and Z80 processors; while MESS supports those, most of the systems using them are better supported by dedicated emulators, so I shall focus on less common features of MESS.
MESS does implement a lot of processors, including some interesting ones like the Motorola 6809 and Texas TI 9900 which are sparsely supported by other Linux software. These systems are discussed in later sections of this page.
MESS cannot use the same keys as MAME as the arcade emulator hijacks computer keys for game setup options, and those are needed for computer control in mess, so the Scroll Lock key is hijacked, switching between partial emulation when the MAME setup keys work and the rest are sent to the emulation and full emulation when the user interface is blocked. For instance the P key pauses - as in MAME - in partial emulation when menus are available, and works as a normal letter if the menus, invoked with Tab, are disabled.
The keys are configurable but it's easy to end up with an inconsistent setup; if you happen to press Enter twice after selecting the long scrolling 'general input' menu you'll remove the assignment that got you there and are liable to lose access to all MESS menus. After much experimentation, with little help from the documentation, I resolved this by deleting the '~/.xmess/cfg/default.cfg' file.
Wrapping from top to bottom and back makes the scrolling menus easier to use, but there were still many times when I was crying out for shortcuts or the chance to type what I wanted - a path or filename - rather than scroll and select from interminable poorly-designed menus.
It`s dangerously easy to quit, losing all you have entered - just one extra ESC from the menus drops you back to the shell with all input lost since you last explicitly saved, though only if menus are enabled.
The idea of a one-stop-shop for micro emulators is appealing - many common parts were shared between home computers so XMESS can share input, sound and graphics support as well as processor cores and a generic interface - but what works for MAME does not work well for MESS. The one-size-fits-all approach doesn`t fit any particular system very well and some of the MAME design clashes with that of the home computers MESS sets out to emulate.
The Z80 and 6502 system emulations are often too buggy or limited to be useful, though the CPU cores seem solid. Honourable exceptions include the KIM1 and Colour Genie emulators. Colour Genie, Dragon, CoCo and especially Vectrex emulation mean that MESS fills some significant gaps, and no emulation completist should be without it - which is why it brings this series to an end, after reviews of more than 100 different emulators that run on Linux.
If you plan to write an emulator there are plenty that MESS fails to pull off which might merit attention. I've yet to see an emulator for Sinclair's first offering the MK14, or the ComX colour computer. Their SC/MP and 1802 processors make them hard to crack, though the 1802 was used in NASA's Voyager probe and Space Shuttles - now that would be an interesting emulator! I'd also like to see an emulator for the Belgian DAI, a fast 8080 system with UK firmware, produced because of problems getting hold of TI-99/4s to the European standards.
The LXF cover disc included other emulators like VMIPS, a virtual R3000 processor as used in PlayStations and old SGI workstations, an emulator for Intel's 4004, the first microprocessor, and one for MIX, the virtual machine used for examples in Donald Knuth's Art of Computer Programing series. There are also TI and HP calculator emulators, Xtel and Oric resources, Emul8 and GalEmu archives.
New emulators are coming, like GnuTon which mimics the Apple Newton, using Python and Tcl/Tk, but that doesn't work yet. This series is over but extended and updated articles from this series will continue to appear online as long as people show an interest.
MESS in depth
There are 272 systems (described as 'games' in documentation obviously
hacked from MAME) in the list of those 'supported' by MESS, but 60 of those
don't work at all and many others have big restrictions, such as partial
or completely absent sound support. Even if you have appropriate ROMs and
the emulation is listed as working it might not do anything in practice.
A lot of the 'computers' are just versions of more common models, e.g. Azmic is a ZX81 with a replacement ROM, the TS1000 is logically identical to the ZX81 but made for the US market, and there are European, Japanese and US versions of several that would be very hard to tell apart once loaded. Your milage will vary depending on what you try - mess is a curates egg - good in parts - but overall the name fits, apart from the adjective 'super'.
If you're looking for one reason to run XMESS, it should be the Vectrex driver. This unparalleled system offers vector graphics almost as smooth and not as flickery as the real thing.
The Vectrex home vector graphics system featured a built in mono screen, with coloured filter overlays like early arcade games, and its games are now freely available. It is a throwback to the very first computer games like SpaceWar on the PDP1 - emulated by MESS if you can guess how to start it - updated to run on a 1.5 MHz 6809 with AY8910 and DAC sound.
Most computer displays are built up like TV pictures, scanning the entire screen systematically line by line, displaying dots at fixed positions in a rectangular grid or 'raster'. Vector graphics computers control the display beam directly, sending it around the screen in any sequence like a laser beam, drawing continuous outlines rather than discrete dots.
Vector screens were essential for Computer Aided Design before large banks of memory could be dedicated to display alone. They allow complete freedom over the movement of the beam. Vectors have many advantages. They needs little display or pattern memory, because only coordinates need to be stored, rather than a complete map with room for details of every possible pixel. Objects can be moved or scaled without the jumps in position and resolution inevitable on pixel-based systems. Rotation, reflection, stretching and squashing are trivial.
There are disadvantages, too. Images fade and there's no automatic redrawing as you'd get with a raster display. The more vectors there are on the screen the longer the system takes to re-paint them all, so screens flicker and dim as images becomes more complicated.
Asteroids was the first mass-market vector graphics arcade game, though similar technology was used in Space War, Bushnell's 1972 debut. The tank simulator Battlezone followed, again this in monochrome, with coloured overlays to liven up the display. Vector graphics caught up with colourful bitplanes when Tempest was released, but lost ground as bitmap resolution and sprite handling advanced, eroding the memory and processor-saving advantages of vectors.
You can simulate vector graphics on a high resolution raster display,
but the grid intrudes and the results are never quite as smooth or subtle
as a real vector scan image. MAME emulates the classic arcade vector games
but MESS offers more because of its support for Vectrex and the
I did not have time to try all the MESS drivers, but the following comments should give you a feel for the current state of XMESS. The Timex 2068 emulation worked but was the same as the Spectrum driver apart from the extra 8K ROM, even to the extent of offering ZX joysticks, 48K Spectrum issue 2 and issue 3 port mapping and +3 drive support, which couldn't work on a real TS2068.
Exidy's Sorcerer was a 2 MHz Z80 system from 1979, with 48K BASIC and good text resolution, though no colour. The Mess Exidy Sorcerer driver starts by warning `this system does not work properly`. The initial sign-on message is very slow and so is keyboard input.
You must pause between keystrokes or some get lost, and there is no way to edit input lines other than to start again. The emulation seems glacial on my K6/2-500 and it's hard to imagine it running at the right speed on any platform. There is no mapping for the equals key so it's hard to test BASIC, though I did manage to get a loop running. The backspace key is annoyingly mapped to clear the screen. Jsorcerer, tangentially mentioned in LXF31, is likely to be more responsive, even though that's written in Java!
Mattel's Aquarius was a 1883 also-ran home micro with chiclet keys, a Spectrum-spec 3.5 MHz Z80, minimal 8K Microsoft BASIC, a beeper and not a lot else. The emulator can mimic the original 4K system or ones with an extra 16K or 52K, filling the Z80 memory map. The emulator looked authentic but made loud random clicks through my speakers as it ran.
The Aquarius driver lacks tape support and there was no DOS so it was hard to test other than to establish that my system could run small programs with sound and graphics at around twice the original speed. But as I couldn't load tapes or make any key mapping for the equals sign, XMESS Aquarius emulation was almost pointless.
When you launch the Z88 driver XMESS warns 'this system does not work properly', then opens an 856 by 480 pixel window and writes 'hard reset' in the top. After a lengthy delay the usual Z88 lists of applications and suspended activities appears in the top sixth of the letterbox.
Numeric pad keys stand in for Z88 extras like Help, Menu, square and diamond but I was not able to start any of the applications - the key bindings interacted badly and emulation seemed very slow, requiring a frame skip of seven to match the original CPU speed. The F11 speed display overwrites the top couple of lines of the Z88 screen.
Memotech MTX emulation would fill a gap on Linux, but all I got was a blank screen when I tried it. The Sega Master System driver is said to run 'just about anything', though you're not given any tips on how to run any of it.
Turning from Z80 to 6502 hosts, the 8 bit Nintendo emulation supports most mappers, though display is slow compared with the specialist emulators, of which we listed plenty in LXF21. The SNES driver is 'preliminary' and the three lines of information warn that 'most images will not work' but it should play one version of one old Mario game.
MESS development for early bare-board micros like the SYM-1, Aim-65, and Cosmac VIP stalled after basic work on the display and keyboard because 'it is too cryptic to operate and therefor (sic) not interesting'. But Chuck Peddle's milestone KIM-1 does run quite a few tiny but authentic programs, including a calculator-style Lunar lander, and not only the 2K ROM but its original source is available now for those who fancy a taste of 1975-vintage microcomputing.
The Compukit UK101 was a PAL clone of the Ohio SuperBoard II 6502 system, reworked by by Dr. AA Berk for a Practical Electronics magazine series, and extensively advertised in the early eighties. XMESS seems to think it needs a resolution of 256 by 400 pixels - inplausible for TV text - and I got no further than the initial DCWM prompt when I launched this.
There is another emulation of the UK101 called Emu8, but this was written a few years ago with old C++ and Tk installations on RedHat 4, and won't run without changes on current Linux systems. The archive is on your cover disc, and may fill a gap that MESS cannot.
The VIC-20 driver is a line-based video emulation, with relatively good documentation. It will load .p00 or .prg files from the rom directory, cassette samples in 8 bit WAV format (with luck) or d64 disk images. Saving is not mentioned, but printing, user, serial and IEEE488 interfaces are not supported, nor anything other than a couple of floppies as drives 8 or 9.
The MESS 68000 core is quite fast, especially on Intel clones, but the drivers only support early Mac and Amiga systems, with many limitations. The optimised assembler CPU cores requires an X86 host and NASM 0.98, and the option 'X86_ASM_68000 = 1'.
MESS has a sort of Amiga emulation but as it has no sound and only runs a subset of programs for the oldest 16 bit Amigas it is no competition for UAE, or even XFellow if you use an Intel CPU.
The MacXL (a.k.a. Lisa2) emulation is buggy and you must cancel bogus errors and feed it just the right sequence of disks to get it to do anything at all. vMac, Basilisk and Executor (LXF18) are far more useful.
MESS can emulate some business machines, including CP/M systems and early PCs, though it's no rival for Bochs (LXF23). The Amstrad PC emulation variants like PC1512 just use a PC Junior core without the special graphics so they're really just one generic PC-XT emulator.
Lower numbered 'pc-' emulations are for five Sharp Pocket computers, none of which seem to work. The Zilog-based Amstrad PCW16 emulation has no EPP printer port, which makes emulation of this dedicated word processor rather pointless.
Emulation of PC-AT 286 CPUs is incomplete and other aspects are described as 'rough'. Work on the T1000 (Tandy PC clone) emulation is stalled for want of a character set ROM image. MESS is potentially a framework for emulation of PC-incompatibles, but so far these have seen little interest.
MESS is let down by poor documentation as well as patchy code. Every driver includes a 'Machine usage and history' menu item, but they all came up 'System Info not available'. The documentation at 'http://mess.emuverse.com/sysinfo' has been untouched for a year, and includes howlers like a reference to the 'Acorn Z88' - the Z88 was made by Clive Sinclair's company Cambridge Computer Ltd, nothing to do with Acorn - and describes the C16 as the followup to the VIC-20, when the VIC was in fact followed by the even more successful C64 (LXF15).
The Colour Genie is said to have a tape level meter, when some Video Genies had one, but a Colour Genie never did. XMESS claims the Dragon 32 display is resolution is 320x240 pixels at 59.69 Hertz, when actually it is 50 Hertz PAL, 256x192 pixels.
The writers don't seem to understand the difference between the Nascom 1 and 2 - in fact one was a bare-board machine-coded kit, and the other was a much more capable BASIC home computer. And the 'documentation' for the SORD M5 is actually for the very different Rockwell AIM-65.
It's a pain to have to download all these files, mostly 1K texts, mislabelled as .HTM, rather than find this information collected in the emulator package. With few exceptions, the information is inaccurate or downright wrong, if present at all.
These weaknesses extend into the code of XMESS as well as the documentation. Atari Lynx emulation has blitter, timing and audio bugs, so it's no competition for Handy (LXF30). The eponymous Camputers Lynx is not emulated, though if that was buggy it might be hard to tell as the original was so dodgy!
The Intellivision emulator lacks collision detection, scuppering many games. Bliss and Jzintv (LXF30) do a much better job.
MSX emulation is confined to MSX1, with no support for mid-screen mode changes. Cassette loading requires WAV files, and ROMs need CRC files as well as the ROM data. The documentation starts by denying disk or printer support but suggests later that these might work with certain ROMs. In general MESS is fussy about specific ROM versions and may only work with a specific version, rather than any set from a real system.
Perhaps this explains why the Memotech MTX emulation hung up - the hardware is close to MSX, so it should be supported by MESS modules - but in any case the documentation warns there's no support for tape printer output, and describes the BASIC as 'pretty standard', which suggests the tester hardly used it!
Bugs in the Oric emulators mean that some tapes and disks don't load - in fact the Atmos emulation doesn't seem to load any tapes at all. A fault in the Oric Telestrat disc emulation means it won't even boot. The 'prav8d' driver stands for Pravetz 8D, a late-80s Bulgarian Oric Atmos clone. The emulation is identical to that for the Atmos, so it hardly merits a separate version.
I have not been able to get other Oric emulators to work - the giftware Euphorix just gives a segmentation fault, and I could only find a few mentions but no source for Jean-Francois Fabre's even older Oric48K emulator for X - so it's a shame the XMESS offering is half-baked.
MESS TRS-80 disk emulation only works with one rare version of one of the dozen TRSDOS variants, NewDOS80 version 2, and not even the other three NEWDOS variants, the original TRSDOS, the most compatible MultiDOS or the most capable LDOS. Virtual tapes, 7 or 8 bit video RAM, and four floppy disks are supported, in the menus at least - I gave it a couple of disk images but it refused to boot either, though they worked in XTRS and my real Video Genie.
XTRS is a better choice unless you really want the EACA System80 (also known as Video Genie or PMC-80) variant which XMESS lists as well as Tandy originals. Even then, XTRS emulation may be closer to the system you were expecting.Only the left shift button works, which is authentic for later Genies where missing TRS-80 keys went into the right shift position, but annoying otherwise.
XMESS can emulate the Colour Genie EG2000. This follow-up to the EACA Video Genie home computer used a Hitachi graphics chip based on Motorola`s 6845, giving 16 colour 40x24 character text with 128 redefinable 8x8 character patterns, and four colour 160x96 point low res graphics rather than the 64x16 mono characters or 128x48 block graphics of the TTL logic of the earlier EG3013 and TRS-80. It also offers an AY8910 three channel beeper like the Spectrum 128, which MESS emulates well. It's Z80 CPU is clocked at 2.2 MHz, 9/7 the speed of earlier Genies but still only 2/3 the speed of a Spectrum. Serial and parallel ports are not emulated.
Keyboard handling did not match my US PC keymap or the original. Only the left shift key works. Right Alt emulates the Mode Sel key to the left of the spacebar on the real thing, F1 to F3 work like the original function keys, but F4 only works if the MESS menus are disabled. You can reassign the menu and normal keys in the GUI but the defaults are badly chosen - again what works for MAME is not ideal for MESS, especially when emulations are hacked from earlier versions with different hardware.
Input is also annoyingly modal - if you press ESC while in menu mode you return to the emulation but if Scroll lock has toggled since then, ESC closes down the emulator and dumps you back in the launch shell, losing the setup and any program you`ve entered. VI afficianados might not mind this but it is frustrating for the rest of us, and a poor default for any interface design.
F5 toggles a clearer display which uses a wider fount but sometimes leaves narrow vertical lines on the screen. Niether of the original two reset keys appear to be implemented so there seems to be no way to break into a tape load that goes wrong. BASIC is loaded with CLOAD and code with SYSTEM followed by a name, as for a TRS80. The DOS uses CMD like TRSDOS, but CMD "I0" gives a directory of drive 0 (or 1, 2, or 3), CMD"L NAME/BIN" loads and CMD "S NAME/CMD" loads the code file NAME/CMD. CMD "S FIREBIRD/CMD:2 loads from drive 2 - the closing quote is not needed.
The Colour Genie emulation offers 16K or 32K RAM, optional 8K disk and 4K extension ROMs or RAM in the same space, and tape support. It has better than usual documentation even though it seems to have been written by someone who has never seen or used the original system. About 8K of RAM is lost to the system by default; you should be able to claw back another 4K at the expense of medium resolution graphics by holding down Mode Sel (ALT in MESS) when you turn the machine on, but MESS didn`t seem to emulate that. Another 2K appears to be lost to the optional DOS.
With the limiter removed (press F10) MESS runs Colour Genie programs around 4 times faster than the original on my K6. It's quite stable and not a bad emulator apart from the keyboard bodges.
If you think the Colour Genie is obscure you've probably never heard of the Entex Adventurevision. This console used 40 LEDs and a spinning mirror to generate a low resolution flickery red display. This is worth seeing, even in emulation, but not something you'll return to often.
XMESS emulates this in the centre of an X window, and the eight bit 8048 processor, similar to the QL keyboard and beep chip, but without sound. The flickery red display was barely readable and appeared on top of the menus rather than in place of them. That's what I call a mess...
The F4 key clears up the small part of the middle of the screen where the action occurs and I got a helicopter variant of horizontal scroller Scramble - to work reasonably well. Adventurevision requires the cartridge name at the end of the commands, after -cart. e.g:
xmess.x11 advision -cart cobras.bin
This also loads avbios.rom from the advision directory on the XMESS path configured in '~/.xmess/xmessrc' or 'usr/local/lib/xmess/messrc' for all users. Special configurations for the x11 version for one or many users go in the can corresponding xmess-x11rc files, and ones for a specific system in an 'rc' sub-directory e.g. '~/.xmess/rc/advisionrc'. The same holds for other XMESS emulations.
MESS emulates vintage consoles like Arcadia and Bally's Astrocade. These were often licenced under other names - for instance Paladium Video Computer Game (VCG) is a clone of Emerson's Arcadia with four extra buttons per controller, and the Interton vc4000 is a relative, sold under several names. These old systems are visually crude but worth trying if you remember the originals.
(( Box 1 - Texan chips ))
US chip fabricators Texas Instruments invented the TTL (Transistor Transistor Logic) integrated circuits which were the mainstay of small computers before the microprocessor, and the glue that held early micros together before custom-chips.
The Commodore Amiga custom chips and Motorola 6809 processor were prototyped in TTL, spread across several tables. Sinclair's ZX81 replaced a smorgasbord of TTL in the ZX80 with one Ferranti gate array that did far more in less space and more cheaply. TTL is still used for prototyping and small projects, but PROMs, PALs and FPGAs do the bulk of the work in modern computers.
When microprocessors and other Large Scale Integrated chips arrived Texas were working on their own competitors for Motorola and Intel parts. TI developed 16 bit minicomputers and custom sound and graphics chips for many later micros and consoles, but unlike their rivals, they jumped feet first into the micro market at the end of the seventies, aiming to make and sell home computers directly to customers.
The TI99/4 was the result - the first 16 bit home computer, with exceptional colour graphics for its day plus sound and even speech synthesis. There are two TI99/4 emulatons for Linux - one stand-alone, and one in MESS.
TI99sim is available as an X86 binary or source; the binary required a new link for the standard C++ library but a simple 'make' produced code to suit my Debian 2.2 system. You'll probably want to edit the installation paths at the top of 'Makefile.linux' to suit yourself.
TI99sim cannot use the raw .bin ROM files that suit Mess and other emulators. A tool converts TI memory contents into a hybrid '.ctg' format in the roms directory, so:
reads the 24K '994agrom.bin' and the associated 8K '994arom.bin' from a MESS ROM set, making a combined file about 32K long with a text header before the mixed binary.
TI99sim comes in versions for SDL, full screen or in a window, or runs as a console application with a view of the processor registers alongside a text-only representation of the original computer's screen. You can edit register values when this emulator is paused, and explore the TI9900 processor. This elegant minicomputer architecture was far in advance of other micros from the seventies, but heavy RAM bandwidth requirements and TI losses in the 1983 micro market meltdown made it an architectural dead end.
The SDL version has graphics and runs in a small 256x192 pixel window,
or can be scaled up to 512x384 pixels or full-screen. Games can overlay up
to four sprites on top of any line of the 16 colour attribute graphics playfield,
with collision detection and a faster text mode for editing and listings.
TI made Video Display Processors for MSX, Memotech and Tatung Einstein micros
and influenced later console and Spectrum graphics.
Sound uses three beep channels plus random noise, and a speech synthesiser, all of which are emulated. 32K expansion RAM, floppy disk images and joysticks are also supported. Speed is limited to match the original, which is authentic but a pity as layers of interpretation made the TI99/4A frustratingly slow.
TI99sim has no GUI, and just four control keys: ESC quits, F10 reboots, F2 and F3 save and load the computer`s state. You can also save and load to disk images as if you were using an original TI single density floppy controller and ROM.
Despite the low version number TI-99sim 0.0.7 comes with a helpful HTML readme file and several utilities as well as two versions of the emulator. 'dumpcpu' disassembles code in TI memory images, with optional symbol and label assignment to make the result more readable.
'dumpgrom' does a similar thing with GPL pseudocode (unrelated to Gnu) and strings in GROM cartridges, while 'list' will detokenise saved TI-BASIC and Extended BASIC programs. 'decode' tries to extract TI tape file contents from WAV files, while a disk utility can convert and extract files from AnaDisk and 'V9T9' images or the raw track dumps used by another emulator, 'PC99'.
Speech synthesis, using linear predictive coding and an add-on cartridge, was one of the unique selling points of the TI when it was introduced. You can use the original code and data from 'spchrom.bin' or make a 'stripped down' speech rom if you don't have the original, and potentially add your own samples - though the emulator does not include an LPC-10 encoder to do this for you.
The XMESS implementation promises to emulate the 3 MHz 16 bit minicomputer-style 9900 CPU, TI graphics and multi-channel sound. It comes in variations matching the international hardware releases - TI99/4AE uses the European ROM set and display format, and starts with:
But alas the colourful startup screen was as far as it got, When I took the invitation to press any key a segmentation fault resulted, though it is said to support V9T99 carts, single sided disk images, and 'partial' speech. MESS also includes an original TI99/4 driver, but this appears never to have been tested. This is another case where MESS currently promises more than it can deliver.
The third contender, TI4Linux, is text-only and needs a lot more work to be useful, though the C source is efficient and quite interesting to read. Despite some quirks, TI99sim is much the best TI emulator for Linux.
(( Box 2 - Enter the Dragon ))
Motorola's 6809 was the finest eight bit microprocessor ever made, but development took so long that the 16 bit 68000 overtook it and it missed the 1970s boom. Even so it was used in many arcade systems, including Defender, the matchless Vectrex console, and home micros from Tandy, Dragon and Thomson, in the USA, Wales and France respectively. This box explains how to emulate those on Linux.
Motorola did not manufacture micros themselves - at least till the StarMax Mac clones - but came up with a reference design based on the 6809 processor, 6847 Video Generator, 6883 memory controller and two 6821 ports. This was adopted by both Tandy, seeking a colour followup for their original TRS80 range, and Dragon, a company founded by toy-makers Mettoy, taken over by GEC then sold to Eurohard in Spain.
The main difference between a Dragon and a Tandy Color Computer (or CoCo) is that the Dragon had a parallel port, so most programs are compatible or easily converted. Keymap and BASIC tokens vary, along with the amount of RAM and ROM. Tandy's original CoCo had a cut-down BASIC and just 4K RAM, but later models boosted both, and graphics too.
Surprisingly there seem to be no Dragon or CoCo emulators for Unix, but this is one area where XMESS redeems itself. XMAME contributes a good 6809 core and Motorola video chip emulation is a key MESS component, used in many systems.
MESS emulates the original CoCo, the expanded models 2 and 3, and Tandy's cut-down MC10. Dragon's first model had 32K RAM and 16K ROM. The later Dragon 64 doubled the RAM and could run OS/9, the Unix-like operating system that showed the strengths of the 6809 far more than the Microsoft BASIC, extended or otherwise.
The emulation has authentic six-bit DAC sound. Press Tilde with the emulator menu enabled (via scroll lock, which diverts some control keys to the emulator) then use arrows to adjust the volume in 1 dB steps. Unless you fancy writing BASIC, you'll need three main commands - CLOAD, CLOADM and EXEC.
Mess emulates DragonDOS and casette loading. Type CLOAD in the emulator to load BASIC games like 'Transylvanian Tower' or 'Mined Out' from '.cas' files. Use CLOADM for machine code files for Dragon or CoCo, again from '.cas' files, such as Scarfman, the CoCo version of the TRS80 original, or the unlicenced Star Wars game Return of the Jeti; type EXEC to start this one after loading.
Once Scarfman is running select 'K' for keys then use arrows to guide your Pacman round the maze. Microdeal were prolific Dragon publishers and their Shock Trooper loaded and ran with CLOADM and EXEC. This has relatively nice music which was rendered recognisably, albeit with a few extra warbles and clicks, by MESS. Med Systems gaudy 3D maze game Phantom Slayer is a similar code load.
These may clash with the DragonDOS 1.0 ROM as DOS competes for memory space. if your code tapes crash after loading, remove the ROM file and try again, ignoring the message: 'OPTIONAL ddos10.rom NOT FOUND WARNING: the system might not operate correctly'. You only need DDOS10 for disk loading and '.cas' diles are better off without it.
Tape loading is authentically slow even from a tape image on a Linux drive. It shows you a tape counter and elapsed time in the bottom of the screen as it loads. Select Tape Control and the Rewind item repeatedly to wind back if you get a filetype error when you try to load with CLOADM, and try CLOAD, or vice versa. Some, like Arcadia, use a short BASIC loader then CLOADM the code and start it with EXEC. Tape Control doesn`t work till you have selected a '.cas' image with the File manager.
The utility 'imgtool' can add and extract files in cassette and disk images; it supports Dragon and Tandy color computer files better than most, and can also detokenise BASIC from those systems. It also supports C64, MSX and some MSDOS data, TI calculator and Amstrad notebook card images, noted in imgtool/txt in the docs directory - most of which refers to MAME rather than mess, unfortunately. MESS system documentation ranges from brief to non-existent, and is substantially out of date.
'.pak' files are ROM cartridges; none of these worked when I tried them. Reset (F3) is a bit erratic and sometimes you must reload the emulator before you can load another tape.
Given that there are no dedicated Dragon or Color Computer emulators for Linux, this MESS setup fills a significant gap, but it is rather crude compared with many emulators dedicated to particular systems, and this means that a MESS emulation is rarely the best choice if there is a bespoke alternative.
There are several dedicated 6809 emulators for Linux, but these mimic more obscure systems. Sim6809 is a processor-level simulation, while FlexEmu emulates a DOS that is to the 6809 roughly what CP/M was to the Z80. Both were on the LXF 33 cover-disc, plus an open-source 6809 assembler and SBC09, another cross-development system. Contact Simon N Goodwin by email (see the main LXF emulation page on mooli for details) if you want these but can't find them yourself.
The French appreciate good design and got into micros a bit later than English-speakers - the Dragon and CoCo lack lower case letters, let alone French accents - but the big French electronics firm Thomson made a neat range of 6809-based micros through the 1980s, and there are Linux emulators for several of those online.
The TO7, a.k.a. Thomson9000 came first occupying much the same position as BBC Micros by in French schools. EmuTO7 emulates this in an X window, with the mouse standing in for the 'crayon optique' or lightpen which was a standard feature, much used in software for Thomson micros. The 24K TO7 was followed by the TO770, with more RAM and colours, and has a similarly derived emulator, Emuto770.
A later open source project brought about THOM and TEO, emulating the TO70 and TO8 micros. These are capable emulations which can use an 8, 16, 24 or 32 bit display with sound, joystick, cartridge, tape and disk support.
Finally, Xemul5 emulates the later Thomson MO5, a cut-down home system with a flat membrane keyboard. This comes with English as well as French HTML documentation, though the latter is more complete. The source is derived from that for Emuto770.
MESS Latest source (Version Control System) http://cvs.mess.org:6502/cgi-bin/cvsweb.cgi
MESS files: http://pkg.lugbs.linux.it/PACCHETTI/Mess-roms
MESS home: http://mess.emuverse.com
MESS ROMS: http://www.geocities.com/messroms
Thom and Theo: http://thomson.rcroms.com/archives
Thomson Emul5: http://emul5.thomsonistes.org