Amiga Format
This article was originally written by Simon N Goodwin for Amiga Format magazine, and is used by permission of the joint copyright holders. It should not be copied any further without written permission. The free emulators mentioned were included on the accompanying CD with the magazine, and are generally available - often in updated form - from this site. The text is as originally submitted to the magazine - which means there are some differences, mostly extra text which was cut to fit into the pages available - with the addition of hyperlinks to new or updated information which has since become available. This approach has been taken to preserve the structure of the original series, while making new information readily available. Simon welcomes comments from readers, care of Tomas Amsrud, who has generously prepared the material for publication on the Internet.
PrevNext
Main

AER


CPC & MSX Emulators

Simon N Goodwin tests the Amiga's
MSX and Amstrad emulators.


This month's emulators run the software of eighties home computers from Amstrad and the Far East. There's a choice of emulators for each platform, and they work pretty well on most modern Amigas. Fast memory is definitely recommended, but you don't need a 68040 or 68060 to get these running at a reasonable pace.

BasicScreen The Amiga has two emulators for MSX software, and no less than four that will run Amstrad CPC programs. A-CPC and EmuCPC are Amiga specific, while CPE and Ami-CPC (or rather, PC-CPC) are also available for MSDOS machines.

MSX options are AmMSX1 and 2, specifically for Amigas, and fMSX which started out as a portable (i.e. slow) emulator for PCs and Unix systems, and was re-written to make better use of the Amiga, running more than four times faster as a consequence! This confirms that native Amiga code can run rings around compiled C hastily ported from other platforms.

CPC and MSX emulation is one of the growth areas on the Amiga emulator scene, with upgrades arriving on Aminet and in PD libraries throughout the year. New versions have improved graphics and file transfer options. As usual, we list contacts for emulators and programs at the end of this article.

The CPC range

Amstrad's CPC computers were popular in the mid 1980s. They were produced in response to Acorn's BBC micro and Sinclair's Spectrum, outselling the former but never quite matching the success of the Spectrum, despite some advantages.

CPCs were sold world-wide under a variety of names, including Orion, Solavox, Saisho, Triumph, Isp and Schneider, in Germany. Apart from the name and minor changes in messages and key layout, they're all the same.

The original 1983 CPC 464s had 64K of internal RAM and a cassette drive. The CPC 664 supplemented this with a non-standard three inch disk drive in 1984, and soon after the memory capacity was doubled to 128K. This CPC 6128 was the standard for many years.

Amiga CPC emulators can run software for 464, 664 and 6128 models. Much later Amstrad improved the CPC graphics and attempted a relaunch, along with a keyboard-less GX4000 console, but there was little software support for the update.

Microsoft Masterplan #13A

Eggbert MSX was one of the many Microsoft schemes that did not quite come off. The name stands for MicroSoft eXtended. In conjuction with the Japanese publishers ASCII, the US micro monopolists devised a standard home computer, based on their own BASIC interpreter and off the shelf chips from Zilog, Texas and General Instruments. It was marketed between 1982 and 1988.

MSX rights were licensed to around 40 manufacturers, mostly in the Far East, who came up with variants on the MSX standard, all compatible with the same software on cassette, cartridge and - eventually - floppy disk. Sony, Yamaha, Toshiba, GoldStar, Daewoo and Philips got onto the bandwagon, and managed reasonable sales worldwide, but the hardware did not sell particularly well in the UK, where it was perceived as overpriced and outdated compared with locally developed micros.

The original MSX standard was followed by MSX2, with more RAM and twice the graphics resolution. This enjoyed modest support in Japan and Europe. Amiga MSX emulators offer some, but not all, of the MSX2 features. As with the upgraded CPCs, software producers aimed for the mass market and most commercial releases run fine on MSX1.

Comparisons

CPC and MSX computers have a lot in common, because they're based on cheap, commodity parts from the mid 1980s. They both use the eight bit Zilog Z80 processor, running at around 4 MHz, and three channel square wave sound chips based on a General Instruments design. Both have large ROMs for the day, containing a simple operating system and old-fashioned unstructured BASIC interpreters.

Arkanoid The Z80 processor is rather more difficult to emulate than the 6502 and 6510 used in most other home micros. It has more registers than can comfortably be fitted into the 68000 ones, and stores 16 bit values the opposite way round, requiring much swapping of bytes.

The Z80 can only access a total of 64K of memory at any time, but later users got around this with hardware to swap 'banks' of a few K from a larger pool in and out of that space. This is hard to emulate efficiently on an Amiga without memory management hardware, and there's no officially sanctioned way to do it even with an MMU. So emulation of programs which use more than 64K of main RAM may be substantially slowed.

Graphics

Jack Bomb The most obvious difference between MSX and CPC is in their graphics. MSX was aimed at televisions, with a low resolution of 256 by 192 pixels in a maximum of sixteen preset colours, like the Texas Instruments TI 99/4A. The Memotech MTX and Tatung Einstein micros were designed in Britain around the same Texas VDP circuit, which uses separate memory for the display and Z80 processor.

CPCs support higher resolution and more colours, sharing processor and display memory. Most CPCs were sold in a bundle with a monitor, allowing up to 640 pixels on a line - a bit fuzzy on a colour screen, 320 by 200 in four colours, or 160 by 200 pixels in sixteen colours chosen from a palette of 27, the favourite mode for games.

Weird Drives

Peculiar three inch 40 track disks were used in early MSX and CPC micros. These have a nominal capacity of 180K per side. The three inch Hitachi format was once a rival for Sony's 3.5 inch disks, now ubiquitous on Amiga and most micros. Hitachi opted for a narrower, oblong format to take advantage of Japanese postal concessions intended to allow cassette tapes to be mailed at a discount rate.

MSX eventually opted for Sony-sized disks in Microsoft's 360K or 720K format, which can be read and written on any modern Amiga with the bundled CrossDos driver. The same is true of three inch MSX disks - in 180K or 720K format - if you connect an appropriate drive.

CPC emulators

Amstrad allow the CPC ROMs to be freely distributed, which makes it relatively easy to get an emulator up and running. This enlightened decision has made CPC (and Spectrum) emulation one of the boom areas of the last couple of years. It helps that we're now reaching a position when most Amiga enthusiasts own systems that can do justice to emulating another processor.

A-CPC

A-CPC was written in the UK by Computer Science student Kevin Thacker, on a Amiga 500 with Workbench 2, Devpac and twin floppy drives. It does not have a built in monitor, but can emulate the 'Multiface 2', a CPC device similar to Action Replay, if you've got the right ROM file. The demo is usable but crippled: it can't SAVE, use joysticks or emulate the Multiface.

FruityFrank The full version allows direct access to real CPC disks, and instructions for anyone brave enough to connect a three inch drive to their Amiga. Even if you manage this, you're unlikely to be able to read copy-protected disks, but disks in normal CPC format will be accessible from the Amiga Shell.

A-CPC will run on a 68000 Amiga, but very slowly - it works best on a 68030 and I couldn't get it to run at all on a 68060. It emulates all the original Amstrad models from 464 to 6128, and the registered version - available for 10 - supports CPC+ features as well.

A-CPC needs at least a Meg of RAM and comes in versions for old and new processors. It's system friendly, with pull-down menus, and can read disk images and snapshots from the PC-compatible CPCEMU and CPE emulators, which are widely available on the Web and FTP sites.

AmiCPC

AmiCPC also expects a 68030, although it will run on 68020 systems. I tested version 0.33, which is freeware. Like A-CPC it needs a 15 KHz PAL monitor and objects to AGA mode promotion. It is faster than its rivals, but you need a 68030 or better to run most programs at full speed.

The 'turbo' version requires 2 Megs of fast memory, and manages about 20 per cent of real Amstrad speed on a 14 MHz Amiga, or 660 KHz in Z80 terms. It's more than twice the speed of a real CPC, on a 68060.

Sound emulation is limited to simple tones. Most of the documentation is in French, with about four pages in English. It's a nice freeware emulator and well worth looking at, especially if you understand French. It's coded in approved style with menus and tooltypes, multi-tasks well and doesn't tie up the Amiga, even if you leave it running in the background.

CPE

CPE is a relatively limited emulator, based on an early version of an eponymous emulator for PC clones, and an old Amiga emulator for obsolete CP/M business machines. The assembler source code supplied needs changes for processors after the 68000. I spent a while tweaking it, with some success, but could not get the keyboard working properly.

Disk support is rudimentary and there's no emulation of CPC sound effects. CPE does include a reasonable Z80 monitor. You're probably better off with one of the other CPC emulators, although real enthusiasts might find the source code interesting.

EmuCPC

EmuCPC was also written in France, once a key territory for Amstrad sales and the home of many CPC enthusiasts. Version 0.4B arrived on Aminet at the beginning of this year, and works quite well, although rather slowly. It requires Workbench 3.0 and at least a 68020. It emulates the 64K Amstrad 664 with one disk drive, and can work with disk images as well as A-CPC CPCEMU and CPE memory snapshot files.

EmuCPU multi-tasks but there's not much CPU time left, unless you call up one of its ReqTools requesters to pause the ferocious CPU drain of the Z80 emulator. It's noticeably slower than its rivals in 16 colour MODE 0 on a 68060, which suggests that it may be relying on instructions which the 68060 has to trap and emulate.

EmuCPC is freeware with just two A4 pages of documentation, but some useful example files. It supports add-on Amstrad 'ROM' files, and comes with Amiga shell utilities to format, read and write 180K 'disk' files.

There are no menus. Function keys, listed when you the start the program, change screen mode, reset, swap disks and save and load snapshots. The original CPC keymap is emulated, with simple help text available on F7, as the Amiga keytops and CPC characters do not correspond. This is a common problem with all the CPC emulators - it would have been nice to have had an option to use the Amiga rather than the Amstrad keymap.

New version

EmuCPC is being actively developed and a new version, 0.7, arrived on Aminet as this article was prepared. This one can emulate the 6128 model and programs which change the display resolution part-way down the screen. Four versions are now included, varying in speed, RAM capacity and accuracy of graphics emulation.

Perhaps the most significant advance is provision for fast parallel transfers from a real CPC to your Amiga. EmuCPC 0.7 comes with instructions showing how to link the parallel ports of the computers with nine wires, and software to manage both ends of the link, transferring the contents of a three inch disk into an Amiga disk image file.

You need another custom cable to get the transfer program from Amiga to the CPC. This time EmuCPC uses the cassette interface, generating tones through one of the Amiga's sound channels which the CPC interprets as a program. This is trickier, as it can be messed up by signal levels and processor speed - you might end up having to retype the CPC part of the transfer program, which is about 5K of BASIC.

In the absence of any direct way of loading CPC cassettes onto the Amiga, this is an ingenious and important utility which marks out EmuCPC from the rest. The new uses icon tool-types for configuration, making it yet more Amiga-friendly.

Comparisons

EmuCPC and AmiCPC are freeware and work well on all the Amiga configurations we tested. The shareware A-CPC has problems on faster machines, but direct support for three inch disks and CPC plus features - in the registered version - should win it a few converts.


Batman Batman CPC MusicSystem

MSX emulators

There are two MSX emulators for Amigas - fMSX and AmiMSX2.
Both emulate MSX1 in full, with growing support for MSX 2 features.

fMSX

fMSX runs at about 70 per cent of the speed of a real MSX 2 machine on an A4000/030, and is just about usable on an A1200 with fast memory. It's freely distributable, with source code available.

1942 Outrun The stability and system friendliness of fMSX belies its low version numbers, with versions from 0.4 upwards working well, and growing support for MSX2 features. By default fMSX simulates an MSX1 machine.

The original Unix version of fMSX is now at 0.9; it was written in the USA and converted to Amiga by Hans Guijt of Holland. The Amiga version requires Workbench 2 and a 68020 or faster processor. It's more than twice the speed of the real thing on a fast 68040 machine, and manages about 425 per cent speed on a Cyberstorm 68060.

The Amigaguide documentation is fine, and you can configure the screen update and interrupt rate for best results, adjusting the effective speed by a factor of about five times. MSX1 emulation is good, but few MSX2 screen modes are implemented and the sound chip emulation is limited to tones, without support for 'white noise' hissing effects.

Fresh out on the streets is fMSX version 0.8. This has slightly slower Z80 processor emulation than version 0.4, but improved sound and screen handling. The differences stems from support for the relatively large memory of MSX2 systems.

fMSX used to implement memory bank switching by copying banks in and out of the simulated Z80's 64K space. Now it selects the required bank as it goes along, making code that does not switch banks rather slower, but massively improving performance on programs that do a lot of switching around.

AmiMSX2

AmiMSX2 is shareware from Spain. The demo version 2.1 on Aminet is time limited, stopping after just ten minutes, and lacks some features of the full version. It requires Workbench 2 and at least 2 Mb of preferably fast RAM. MSX floppy disk access requires mfm.device, part of CrossDos.

AmiMSX2 is a bit of a hack, designed to give reasonable speed even on a 14 MHz 68020. It disables multi-tasking and it's incompatible with the 68060 and multisync displays, but it's about twice the speed of fMSX on 68020 and 68030 systems.

The author claims that 68040 systems should be compatible once the copyback cache is disabled. Sound, graphics and processor emulation are almost complete, although not quite perfect. Most MSX games run well.

Comparison

fMSX keeps getting better, but I expect a few 68020 and 68030 users
will find the extra features of AmiMSX2 worth the $30 registration fee.

Cross emulation

fMSX is available for NetBSD, but lacks Amiga optimisations so you'll need a graphics card and quick CPU to do it justice. The same situation is likely if a Unix CPC emulator is ported to Amiga hardware. In either case, the native Amiga emulators are sufficiently good that you'll probably prefer them unless you spend most of your time in NetBSD already. I've yet to see useful MSX or CPC emulators for Macs, so Shapeshifting is - for once - not an option.

Some text-based CPC software runs under CP/M, the seventies business operating system. If you want to run this on an Amiga you're best off using a CP/M emulator, rather than trying to load Amstrad CP/M into a CPC emulator. You can find several CP/M emulators on Aminet and Fish disks.

MSX Resources:
CPC Resources:
Web pages:
http://www.freeflight.com/fms/MSX
http://il.ft.hse.nl/~wiebe
ftp://ftp.funet.fi/pub/msx

News: comp.sys.msx
Web pages:
http://andercheran.aiind.upv.es/~amstrad
ftp://ftp.ibp.fr/pub/amstrad
ftp://ftp.nvg.unit.no/pub/cpc

News: comp.sys.amstrad.8bit

Web page design Copyright © Tomas Amsrud
Articles Copyright © 1996-2002 Simon Goodwin