xz80 An X11-based ZX Spectrum emulator By Ian Collier Version 0.1 Installing ---------- A Makefile is provided. Edit the Makefile and tweak any of the configuration options. Descriptions of what they do is included in the Makefile. Then build the emulator with "make". An executable called "xz80" will be created. This may now be tested. If necessary, copy the executable and the man file "xz80.1" into appropriate directories. Copy the Spectrum ROM file into an xz80 library directory. The man file may be read using "nroff -man xz80.1 | more" or with the "man" command. xz80 is known to work on a Sun SPARCstation under SunOS 4.1.1. Try other platforms if you wish. xz80 will work with some monochrome displays. In the smallest-sized display, contrasting colours are displayed with the darker colour in black and the lighter colour in white. Halftoning is used if the scaling factor is greater than 1. If and when you succeed or don't succeed in getting xz80 working on other platforms, please let me know. There are several areas in which xz80 could break if ported to another system. Please report all faults as accurately as possible and I will try and fix it. xz80 probably requires the following to be true: unsigned char contains exactly 8 bits unsigned short contains exactly 16 bits int contains (at least) 31 bits unsigned long contains (at least) 32 bits xz80 does not require an ANSI compiler, but if your compiler does not understand the word "signed" then you must insert -Dsigned='' into the compile flags, and things of type "char" must be signed by default. Some compilers have a flag which forces characters to be signed by default. xz80 works best when the MIT-SHM extension is present. ROM Files ---------- The file "spectrum.rom" is the original Spectrum ROM, permission to distribute which has been granted by Amstrad for use with Spectrum emulators. The file "imc.rom" is an alternative, details of which are contained in the text file imcrom.txt. Extensions to xz80 ------------------ If you require an extension to xz80 (for instance, I haven't done a joystick emulation yet), please ask. I will probably give more priority to those extensions which have been requested most. :-) If you own code which emulates extra pieces of hardware, or you would like to offer such code, please do so. I may be approaching certain people soon to ask for code, but please offer anyway. Please note that any such code, though copyrighted to you, may be modified and will be released under the GNU General Public License. Licence ------- Attention is drawn to the following notice which is written at the top of each source file: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. 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. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. The GNU General Public License is written in the file called COPYING in the original distribution of this package. Credits ------- This program was inspired by, and written to fix (some of) the deficiencies of, the xzx emulator by Des Herriott . Several of the X routines of xz80 follow closely those of xzx. Without xzx, this emulator would probably not have been written. Thanks to Arnt Gulbrandsen for supplying and maintaining the Spectrum FTP site! An SGS manufacturer's data sheet on the Z80 CPU was used during the writing of the emulator, and "The Complete Spectrum ROM Disassembly" by Dr Ian Logan & Dr Frank O'Hara, published by Melbourne House Publishers, was used during its testing. Ian Collier The Queen's College High Street Oxford OX1 4AW England.