The ZX Spectrum Emulator for Macintosh
![]() |
All The Stuff - 23. Feb. 2002
Günter Woigk; Sankt Johann 6/246; 91056 Erlangen; Germany
email: mailto:kio@little-bat.de
Mac Spectacle | Günter Woigk (kio !) | Copyright © 1994-2000 |
C-coded Z80 engine based on fMSX | Marat Fayzullin | Copyright © 1994-1995 |
Windoid WDEF | Troy Gaul, Infinity Systems | Copyright © 1991-1995 |
ZX Spectrum 48k ROM | AMSTRAD | Copyright © 1982 |
ZX Spectrum 128k ROMs | AMSTRAD | Copyright © 1982-1984 |
ZX Spectrum +2 ROMs | AMSTRAD | Copyright © 1982-1986 |
Keyboard picture | Bo Lindbergh | Copyright © 1994 |
Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee,
• provided that the above copyright notice appear in all copies and that this copyright notice and the disclaimer of warranties and this permission notice appear in supporting documentation,
• and that the name of the copyright holder not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.
• The permission to modify does not apply to the ZX Spectrum ROMs.
• The permission to sell this software does not apply to the ZX Spectrum
ROMs and to the Windoid WDEF.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
The copyright holder makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
THE COPYRIGHT HOLDER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.
Mac Spectacle contains the original ZX Spectrum 1982 ROM in it's resource fork. The ROM is copyrighted and the owner of the copyright is AMSTRAD, who has taken over Sinclair Inc.. Fortunately AMSTRAD has stated publically, that the unmodified ZX Spectrum ROM may be distributed with any software emulator of the ZX Spectrum. I think, we have to thank them for this.
The picture of the ZX Spectrum keyboard layout was created and is copyrighted by Bo Lindbergh. Thanks for his permission to use it in Mac Spectacle.
Special thanks to Gerton Lunter, who has collected a great amount of Z80 and ZX Spectrum specialities which only Z80 emulator programmers must know about.
The C coded Z80 engine was developed using Marat Fayzullin's fMSX engine. Though i've modified nearly everything, some ideas, enumerations, macro names and flag handling have survived.
Mac Spectacle uses the Infinity windoid WDEF, written by Troy Gaul and copyright by Infinity Systems.
Furthermore i'd like to thank Fabrizio Oddone for his help to prevent
Powerbooks going to sleep;
Jose Soares for his help to patch ExitToShell and for his help with native
PPC coded TimeManager tasks;
Andrew Owen for a lot of graphics.
Colin Wilson for graphics and the better divider.
![]() |
.SNA ,
.Z80
,
.ROM
and
.SCR
files may be loaded by drag&drop, double clicking or from the File
menu using "Load..."
Most snapshots on internet file servers are compressed. After downloading you must uncompress them. Most files are zipped so you should get Aladdin's "Stuffit", "UNZIP" or "ZipIt". After uncompressing, the file names and creators are probably invalid. To fix the file types and creators drag the uncomppressed files on "AutoTyper", the small drag&drop application supplied with Mac Spectacle.
You are normally unable to load snapshots with improper file types because, they don't show up in the "Open..." dialog. You should always fix the file types and creators with AutoTyper if needed. If you can't, e.g. because you want to load a snapshot directly from a non-Macintosh CD-ROM and all files seem to be 'TEXT', you can press 'shift' or 'option' while selecting "Open..." from the file menu. Then all files are shown disregarding their file type. Valid file name extensions always override Macintosh file types.
Snapshots only contain information about the ZX Spectrum side, not about any settings of the emulator. So window size, location or keyboard setting aren't affected. If the snap doesn't launch, the Z80 CPU may be halted, try 'Resume CPU' or from the File menu.
After loading a ROM image, the ZX Spectrum is reset to start up with the new ROM. To switch back to the built-in ROM, select "New" from the File menu. Subsequent loading of .SNA and .Z80 snapshots will not reload the built-in original ZX Spectrum ROM. So you can load snapshots of ROM based games like "Shadow of the Unicorn" after loading the game's ROM. Selecting "Reset" from the "Debugging" menu will reset the ZX Spectrum with the external ROM still loaded, Selecting "New" from the "File" menu will load the original ROM and reset.
Loading a screenshot virtually doesn't more than loading it into the display memory area of the ZX Spectrum. Make sure no programm is running which overwrites the screen. Launching Mac Spectacle by double clicking a .scr file isn't of much use too, for the resetting ZX Spectrum will clear the screen after 2 seconds.
[back to file menu] [back to menu]
![]() |
To save a snapshot, prefer .z80 over .sna, because the .sna format suffers from a inherent problem which may result in saving not-working snapshots.
To save a screenshot, use .scr if you want to exchange files with other ZX Spectrum emulator users on non-Macintosh computers or if you want to reload them with Mac Spectacle. Use .pict if you want to load them with standard graphic programs etc, for this is the only format they will understand. (Mac Spectacle cannot load .pict files at the moment of writing)
[back to file menu] [back to menu]
![]() |
A pict of the ZX Spectrum keyboard is displayed, if you select "Keyboard" from the apple menu or from the windows menu.
You may click in the keyboard window to trigger a key. I don't think it to be *very* useful, but people seem to expect things to work like this. If you click anywhere between the keys, you may drag the window.
There are to modes for keyboard translation, selectable from the options menu:
'basic' and 'game'.
In game mode keys are mapped corresponding to their location on the ZX Spectrum keyboard. This means, location of a key is more important than the character printed on it. Therefore especially people using non-US keyboards should take a look at the picture of the US keyboard.
This picture shows the keys which are recognized by Mac Spectacle:
The 40 keys marked with yellow color represent the original ZX Spectrum keyboard. The position of a key defines it meaning to Mac Spectacle, not the letter printed on top of it.
Therefore these 4 keys have the following meaning to the ZX Spectrum BASIC editor:
";" = | ENTER |
"`" = | CAPS SHIFT |
"," = | SYMBOL SHIFT |
"." = | SPACE |
In addition, keys marked with red color are translated to give a reasonable effect:
"esc" = | CAPS SHIFT + SYMBOL SHIFT (to enter extended mode) |
"shift" = | CAPS SHIFT |
"option" = | SYMBOL SHIFT |
"alt" = | SYMBOL SHIFT |
"space" = | SPACE |
"enter" = | ENTER |
"delete" = | CAPS SHIFT + "0" (delete) |
number pad and cursor keys are remapped to corresponding functions |
In game mode, the green keys are used to emulate a Kempston joystick interface. Layout is similar to the cursor block, the top right key triggers fire. If you have a joystick interface for your Mac, set it up to generate these keys. A setting file for the MacEnjoy interface is shipped with Mac Spectacle, so you can use it even if you have a small keyboard without these keys. Alternatively you can set up your joystick interface to generate '5' to '8' and '0' for games which support a cursor joystick.
Other keys have no effect in game mode!
[back to options menu] [back to menu]
![]() |
In basic mode, most characters are remapped to proper positions in the ZX Spectrum keyboard matrix.
"esc" simulates "caps shift" + "symbol shift".
Cursor keys: Remapped as expected to "caps shift" + "5" ... "8" Delete: Remapped as expected to "caps shift" + "0" Edit: "option" + "1" Graphic mode: "option" + "9"
White characters on keys: "0"-"9", "a"-"z", "A"-"Z", "space" and "enter" work as expected. If the basic interpreter expects a token, "a"-"z" or "A"-"Z" produce a token of corse.
Red characters and red tokens on keys: Keys should be no problem; they are all remapped. To get a token, type "option" + "key"; e.g. "option" + "a" to get
Green token above keys: Type "esc" and then the corresponding key.
Red tokens below keys: Type "esc" and then "shift" + "key".
Pressing a key always discards any old key from the ZX Spectrum keyboard matrix, even if it's still pressed.
If you cannot get a special function, email me your problem and suggest a solution.
To BREAK a program you must press "caps shift" + "space". Unfortunately this is not detected in the current version. As a work around switch to game mode for a moment.
[back to options menu] [back to menu]
![]() |
.tap files represent
the original program tapes. They may be opened by drag&drop or by double
clicking or from the tape recorder window.
This window may be opened at any time from the 'windows' menu. Click on the tape logo (ehem ... the CD recorder logo - doesn't it make your Specci a little bit more high-tech?) to insert a tape file, click on it again to eject it. The name of the loaded file and information about the current block are displayed as text. A LED tape counter shows the current tape position in minutes and seconds (neglecting the time for gaps, syncronization sequences, etc.) and the slide bar shows the relative position within the tape.
If you have no tape loaded, the first button has a 'template' icon on it. Click on it to create and insert a new and empty tape. If you have a tape loaded, the first button shows a cross. If you click on it now, the current block of data will be erased.
If you type LOAD "" (you know, you have to type <j> <"> <"> if you have selected basic keyboard mapping or even <j> <option+p> <option+p> if you have selected the game keyboard) the emulator reads from this file. If you type LOAD "" without a tape loaded, the tape recorder window is opened and sent to front, allowing you to insert a tape.
A special feature is the copy deck. If you click on the small green triangle at the bottom (or in the zoom box) a second tape recorder shows up:
While the second button of deck A is used to switch on and off recording, the second button of deck B copies one block of data from tape A to tape B.
If you load, save or verify from the emulator, the actually selected
deck is used. This is the last you have clicked in and it is hilighted
with a green border.
What may be wrong, if the emulator doesn't load or verify?
[back to windows menu] [back to menu]
![]() |
Formally, using snapshotted game without legal owning a copy of it on a tape is a *copyright violation*. Nevertheless, ZX-Spectrum games are not being sold anymore and using snapshots doesn't harm copyright holders much, if you don't make profit from it and don't distribute snapshots on a large scale. It seems that some companies [Ultimate/USGold] have nothing against free distribution of their games, but there is no written permission yet.
See also WOS/permits.html on this issue!
Watch this usenet group: comp.sys.sinclair
If you like Mac Spectacle or any other ZX Spectrum emulator, you probably owned or still own a ZX Spectrum or one of it's derivates. And if you owned a ZX Spectrum, you have probably some old tapes with programs laying around.
If you want to rescue them from decaying and reuse them with the emulator,
get ZX Loader,
a program which reads in most tapes and stores them as 'tape files' on
your Macintosh's hard disk. You can read from those 'tapes' just like the
real ZX Spectrum can read real tapes, and it's much more fun watching the
red-white or blue-yellow striped border, while a program loads (faster
than on a real Specci, of corse) than just loading a snap.
You can get the newest version, modified versions and source code of Mac Spectacle and other related programs from kio's web site.
![]() |
There's not much what really prevents Mac Spectacle from running, but some applications, inits etc. have side effects which reduce the fun playing games on Mac Spectacle.
Screen depth of 8, 16 or 32 bit is recommended. In 1, 2 and 4 bit mode the screen is displayed in black&white only.
Quit other applications/inits etc., which do no fast and smooth background
processing or switch off multitasking in Mac Spectacle's options menu.
Mac Spectacle was developed 1994 to 1996. Up to 1998 i did no work on it and then i decided to give Linux a try. (ok, that was an error, i'll try again in 2002.) So i did not support Mac Spectacle for the last 3 years and meanwhile the code became a mess, mainly because i repeatedly modified my libs which were used in Mac Spectacle too.
So the main work for this new version was to make it compile again. Unluckily there were major problems:
I have finally fixed the sound output but feeled unable to trace down the other problems in moderate time. I release this version of Mac Spectacle
So some programs don't run because of errors in Mac Spectacle. Please be polite.
The implementation of the DAA instruction in the 68k assembler coded Z80 engine is optimized for speed. In some rare cases it does not work correctly. Then the "Best emulation" mode is the only solution.
Some undocumented side effects of Z80 instructions are handled more or carefully in the C coded Z80 engine.
Some programs synchronize writing to screen with the interrupt which is synchronized with the cathode ray frame flyback by the ULA. This way they avoid flickering of sprites on a real ZX Spectrum. On the emulator you must use "Highres" mode to get the same results.
some programs rely on exact interrupt timing.
back to menu |
Manual |
Version History