home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-06-11 | 143.0 KB | 3,009 lines |
- comp.sys.sinclair
- Sinclair ZX Spectrum FAQ
- v3.02 (June 11 1995)
-
- Maintained by Damien Burke
- email: D.M.Burke-CSSE94@cs.bham.ac.uk
- (until June 14th 1996; check http://www.cs.bham.ac.uk/~dmb/mail.html
- for a new email address after that date)
-
- You can find the most recent version of this document at the following
- World-Wide Web (WWW) address: http://www.cs.bham.ac.uk/~dmb/speccy/faq.html
-
- Please send your additions and corrections to the email address above. Much of
- this FAQ is the FAQ as previously maintained by Marat Fayzullin, for whom all
- old computer fans should give daily thanks and worship ;-)
-
- Copyright note: if you're going to copy this, do it right. OK? I don't care if
- you stick this on a CD, print it and make paper aeroplanes from it, whatever -
- just don't modify it - tell me if changes need making.
-
- Changes since v3.01:
- 1) Emulators list expanded and updated.
- 2) Where is...? list expanded and updated.
- 3) Some other minor additions/corrections.
-
- Changes since v3.0:
- 1) Updated net addresses to give descriptions to/remove all but one
- of the 'No description yet' URLs.
- 2) Corrected address of SAM Coupe FAQ.
- 3) Expanded description of SPECEMU emulator - thanks Rui.
-
- Changes since v2.9:
- 1) Net Addresses list expanded.
- 2) Emulators list expanded.
- 3) Where Is...? list expanded.
- 4) File formats section expanded.
- 5) Some information on the 128K hardware added.
- 6) More Spectrum models listed.
- 7) Various minor additions/modifications.
-
- As I am a university student and about to take a year out to go back to the
- real world this may be the last major update of the FAQ for some time. My
- university account will become defunct some time around September 1996, and I
- am unlikely to be able to read any mail after June 14th 1996, so email to the
- address listed above will probably bounce or remain unanswered. I should have
- a new address by September 1996; I will make a link available to the new
- address on the following web page: http://www.cs.bham.ac.uk/~dmb/mail.html
-
- ******************************************************************************
- ********************************** CONTENTS **********************************
- ******************************************************************************
-
- I. FREQUENTLY ASKED QUESTIONS - and the answers!
-
- II. NET ADDRESSES - ZX-Spectrum-related Net addresses
-
- III. EMULATORS - comparison of existing ZX-Spectrum emulators
-
- IV. WHERE IS...? - what happened to famous ZX-Spectrum people
-
- V. FILE FORMATS - descriptions of emulator file formats
- 1. Snapshot files - memory snapshot file formats
- a) .SLT
- b) .SNA (48Kb)
- c) .SNA (128Kb)
- d) .SP
- e) .ZX
- f) .Z80 (all versions)
- 2. Tape files - virtual tape file formats
- a) .TAP ( and .BLK)
- 3. Other files - other emulator file formats
- a) .MDR
- b) .SCR
-
- VI. TECHNICAL INFORMATION - info on ZX-Spectrum's hardware
- 1. Z80 CPU - undocumented opcodes and weird features
- a) CBh opcodes
- b) FDh and DDh opcodes
- c) EDh opcodes
- d) R register
- e) Undocumented flags
- f) IFF1 and IFF2
- 2. Hardware - ULA and I/O ports
- 3. Interface I
- a) Port E7h
- b) Port EFh
- 4. The 128K Spectrums
- a) Memory
- b) Keypad
- c) Sound Chip
-
- VII. PINOUTS - pinout details for various hardware
- 1. ULA
- 2. AY-3-8912
- 3. Keyboard layout
-
- VIII.ACKNOWLEDGEMENTS - thanks etc.
-
-
- ******************************************************************************
- ************************* FREQUENTLY ASKED QUESTIONS *************************
- ******************************************************************************
-
- 1. Just what is this newsgroup for?
- This group's charter (from its original formation in December 1993) is to
- provide a forum for the discussion of the various brainchildren of Sir
- Clive (born Clive Sinclair) and related computers such as the Jupiter Ace,
- TK and TS series', SAM Coupe and Thor, software, peripherals, emulators for
- them, programming them; playing those wonderful games (6031769, anyone?);
- and anything else which interests the Sinclair community. The group is not
- moderated.
-
- In practice, nost discussion is Spectrum-related, but there's a fair bit of
- SAM Coupe, QL, ZX-81, etc. chat as well. This FAQ only covers the Spectrum,
- other documents being available seperately:
- The QL FAQ at http://ww.uni-mainz.de/~roklein/ql/
- The SAM Coupe FAQ at http://www.soton.ac.uk/~tsp93ma/Coupe/FAQ.txt
-
- This FAQ covers technical information, emulator information and resources
- and does not attempt to cover Spectrum games and history. There is a game
- FAQ available - see question 18.
-
- 2. Can I post binaries to this group?
- NO! The word 'binaries' does *not* appear in the newsgroup title, and this
- is a subtle indication that posting binaries is going to make you very
- unpopular very quickly. Many people have to pay for net access, and you're
- costing them money if you post binaries, which are substantially larger than
- most posts. You may also cause news providers to stop carrying the group if
- binaries are seen to be posted in it. If you want to distribute something
- Sinclair-related, upload it to an FTP site or put it on a web page and post
- the *address* of the site.
-
- 3. Is there a Spectrum emulator for <whatever machine>?
- Probably. See section II, Emulators, below. It is split up by machine type,
- so you should be able to find one you can use. Of course, if you can't get
- one for your machine, you could always write one... ;-)
-
- 4. Where can I find <whatever game>?
- The game you're after is probably available somewhere on the net. The
- gopher server at gopher://gopher.nvg.unit.no enables you to search for
- games (web interface to it at http://www.nvg.unit.no/spectrum/search.html),
- but an even better way to search is to use Hynek Med's snapsearch engine,
- located on the web at http://drson.vse.cz/snapsearch.
-
- Several CDs full of games can be had:-
-
- Speccy Sensations II: Warm Silence Software at:
- http://www.comlab.ox.ac.uk/oucl/users/robin.watts/wss/index.html
-
- Emulator Heaven:
- Phone Mike Mee in the UK on (01745) 591704 after 6pm or write to
- "Anncott", Hylas Lane, Rhuddlan, Clwyd, LL18 5AG, UK or
- phone 'TortyFoo' also in the UK on (01922) 616324 (7pm-10pm Weekdays/
- 10am-10pm Weekends) or email:
- emulators@tortyfoo.demon.co.uk
-
- Bear in mind that these CDs contain a large amount of copyrighted software
- so they are technically illegal!
-
- If none of those turn up the game you're after, try asking on the
- newsgroup, or (shock) going to a second-hand shop and digging around in
- their boxes of old tapes.
-
- 5. Is it legal to use ZX-Spectrum ROM images?
- Yes, it is. Amstrad, who own the copyright for the ROMs, allow free
- distribution of ROMs for emulation purposes, although they often apply
- stipulations such as not charging money for software that includes these
- ROMs. They also allow free distribution of electronic versions of Spectrum
- hardware manuals.
-
- 6. Is it legal to use snapshots (i.e. games etc.)?
- Formally, using snapshotted game without actually owning a copy of it on a
- tape is a *copyright violation*. Nevertheless, ZX-Spectrum games are not
- being sold any more 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. Some companies definitely do not like to have their games
- distributed (e.g. Ultimate/Rare), whereas others have given explicit
- permission (e.g. Vortex). A list of such companies/individuals is at
- http://www.cs.bham.ac.uk/~dmb/speccy/permits.html.
-
- 7. I have the game I was after, but in a format my emulator can't load. How
- do I convert snapshots between various formats?
- Most snapshots can be converted into one another using SPConv program
- by Henk de Groot [hegr@ensae.ericsson.se] and myself. An MSDOS version of
- this program is supplied with the JPP emulator (source included), but is a
- rather old version. A more up to date version (v1.10) is available from the
- NVG FTP site: ftp://ftp.nvg.unit.no/pub/sinclair/utils/generic/spcnv110.zip
- SPCONV converts files between following formats: .SIT,.SNX,.SNA,.Z80,
- .PRG,.SP and RAW.
- Also, the registered version of Z80 contains a converter program, and there
- is a program called Butcher, written by Marat Fayzullin (available at the
- NVG FTP site) that can split .ZX (or .SPC) files (used by the "Polish"
- emulator) into a series of .header/.bytes files for use with the Spectrum
- v1.7 emulator on the Amiga.
-
- 8. I'm trying to convert a .Z80 file into .SNA format using SPConv and it
- doesn't work. Why?
- You are probably using SPCONV v1.05 which came with JPP distribution.
- It has problems converting .Z80 files created by Z80 v2.01+. Get SPConv
- v1.10 (URL listed in question 7 above). It works.
- SPConv cannot currently handle 128Kb snapshots, but hopefully the next
- version will.
-
- 9. I've got a snapshot that won't load into Z80 - it just gives an error
- message saying 'plusdrom.bin not found' and exits to DOS. How can I get it
- to work?
- The snapshot was saved by someone with a registered copy including +D
- emulation, in +D mode. The game doesn't actually *need* the +D ROM, so you
- can use DEMGT: ftp://ftp.nvg.unit.no/pub/sinclair/utils/generci/demgt.zip
- to modify the snapshot so it isn't in +D mode.
-
- 10.What is the difference between the various ROM-files available for use
- with Spectrum emulators?
- SPECTRUM.ROM - Spectrum ROM, exactly the same as in the original
- Spectrum.
- GROOT.ROM - Same ROM, but with lots of bug fixes and extensions by Henk
- de Groot [hegr@ensae.ericsson.se]. List of changes follows:
- o Bug fixes as mentioned in "The complete Spectrum Rom
- Disassembly" by Dr Ian Logan and Dr Frank O'Hara.
- o Support for EPSON printer via an Z80-PIO chip and
- Centronics connection.
- o Monitor support: start up with black screen and white
- characters.
- o Lightpen support: Lightpen routine for DK'Tronics
- lightpen is built in.
- TK95.ROM - ROM from a Brazilian Spectrum clone called Micro Digital
- TK95.
- IMC.ROM - Ian Collier's modified ROM. See the documentation that comes
- with xz80.
- UNICORN.ROM - ROM used by Mikro-Gen's Shadow Of The Unicorn cartridge
- game.
-
- 11.Where can I get Microdrive cartridges?
- Microdrive cartridges (as well as complete Microdrive kits) can be
- obtained from:
-
- W.N. Richardson & Co.
- 6 Ravensmead
- Chiltern Hill
- Chalfont St Peter,
- Bucks, SL9 0NB
- United Kingdom
-
- PHONE/FAX 01494-871319
-
- 12.How do I fix my worn out ZX-Spectrum keyboard?
- If the connectors on the PCB have scratched off the silver from the
- ribbon, buy some so-called "conductive paint" which is a suspension
- of fine silver particles. If you let it dry, it conducts. Use a fine
- brush to replace what is scratched off from the ribbons. This paint
- is available from most electronics hobbyist stores (for example, from
- RadioShack in US).
-
- 13.What's the address of the "Spectrum Profi Club" in Germany?
-
- SPC
- c/o Haller
- Ernastr. 33
-
- D-51069 K"oln
- Germany
-
- 14.What are the differences between the different Spectrum models?
- 1) 16K - original model. Rubber keys.
- 2) 48K - (most widespread) original model with RAM extension.
- 3) TS2068 - American version from Timex; had an AY-3-8912 sound chip,
- cartridge ports, two joystick ports and an additional 8Kb
- extension ROM with extra BASIC commands to support these
- devices. Silver plastic case and plastic keys.
- 4) TC2068 - same as TS2068; sold by a Portuguese arm of Timex away from
- usual Sinclair markets.
- 5) TC2048 - another one from Portuguese arm of Timex. Black with grey
- plastic keys. Built in Kempston joystick port, some higher
- resolution screen modes, 64Kb of memory with a paging
- system.
- 6) TK90X - clone of 48K by Micro Digital of Brazil, with a built-in
- joystick interface (Interface II compatible) and two new
- BASIC commands - TRACE, for tracing execution, and UDG for
- editing UDGs. This modified ROM caused some compatibility
- problems.
- 7) TK95 - as TK90X, but with a real keyboard (not unlike the C64's) and
- a more compatible ROM. Apparently a TC2048 in disguise.
- 8) 48K+ - as 48K, but had "real" keyboard.
- 9) 128K - 128Kb RAM, AY-3-8912 sound chip, keypad, RS232 port and "real"
- keyboard. The last real Sinclair machine.
- 10) +2 - 128K with builtin tape deck, new (grey) case and keyboard.
- First Amstrad-produced model.
- 11) +3 - 128K with builtin disk drive, new ROMs including a DOS and some
- internal changes on the bus. Back to a black case.
- 12) +2A - +3 with a tape deck instead of disk drive.
-
- 15.What peripherals exist?
- This would be a big list, so I'll keep it to what I consider are major
- ones (additions welcome):
- 1) Interface 1 - joystick and microdrive interface, network capabilities.
- 2) Interface 2 - joystick and cartridge interface.
- 3) Microdrive - fast tape storage (requires Interface 1).
- 4) ZX Printer - thermal printer (aka silver bog roll burner).
- 5) Keypad - extension keypad for the 128K models that offered extra
- editing facilities in 128K BASIC.
- 6) Multiface - Romantic Robot's excellent device to stop the Speccy cold,
- enabling you to save the current state of the machine to
- tape or disk and enter POKEs.
- 7) Joysticks - many interfaces exist; Kempston, AGF/Protek, programmable
- interfaces (which mapped joystick positions to keypresses),
- etc. etc.
- 8) AMS Mouse - well, a mouse...
- 9) BetaDisk - an interface to enable attachment of a 3.5" drive.
- 10) Disciple/+D - MGT's interface to enable attachment of a 3.5" drive.
- 11) Wafadrive - not unlike a Microdrive.
-
-
- 16.Where is Sinclair Research now? Is Clive on email?
- You could try contacting MENSA; Clive is a member.
-
- Seamus Waldron [seamus_waldron@cix.compulink.co.uk] supplies the following
- from the last Profits/Loss account published by Sinclair Research (on 12th
- October 1995):
-
- SINCLAIR RESEARCH LTD.
- 15/16 Margaret Street
- London
- W1N 7LE
- United Kingdom
- Tel: 0171 636 4488
- Fax: 0171 580 6628
-
- Sir Clive Sinclair is still the chairman; no email address is known for
- him (and if you were him and had one, wouldn't you keep it a secret from
- the slavering hordes of Speccy fans?!). Unfortunately the above address is
- already out of date; Sinclair has moved to somewhere near Kings Cross in
- London. More info welcome!
-
- 17.What the hell is a Spectrum?
- The best home computer of all time. Came out in 1982 from Sinclair
- Research Ltd., and proceeded to capture the hearts and minds of millions
- of people. Based around a Z80 processor and utilising lots of neat tricks
- to keep the cost down, Clive (now Sir Clive) Sinclair effectively created
- the UK computer industry with his ZX80, ZX81 and ZX Spectrum. If you've
- never used one, get hold of an emulator and try out some of the classic
- games around (e.g. Jetpac) and see what *real* gameplay is about without
- needing 50 Mb of hard disk space and the type of processing power that
- interferes with military radar.
-
- 18.Is the Spectrum better than <other machine>?
- Yes. ;-)
-
- 19.I have a question not covered here!
- Well, there are other sources of information; in particular, if the
- question is about a particular game, your first stops should be Stephen
- Smith's Speccy Games FAQ and Games Database at:
- http://www.hermetica.com/technologia/sinclair/stevo/gamefaq.html and
- http://www.hermetica.com/technologia/sinclair/stevo/gamedbs/gamedbs.html
- If they don't help, welcome to the group, ask away!
-
-
- ******************************************************************************
- ******************************* NET ADDRESSES ********************************
- ******************************************************************************
-
- In between updates of this FAQ, new sites usually appear - I may have linked
- to them on my own page at http://www.cs.bham.ac.uk/~dmb/speccy/ (until June
- 14th 1996) so take a look there if you're after something new. If you find an
- address in here that doesn't work any more, please let me know - and let me
- know if you find one that isn't listed here too!
-
- This list is ordered by the sites' domain names, so don't feel bad if your
- site is listed after one you think isn't as good. If anyone thinks my
- description of their site is incorrect or unfair, again, let me know.
-
- ================================= FTP Sites: =================================
-
- If you're after games, emulators or anything Spectrum-related, there are a
- number of FTP sites worth visiting, and new ones spring up now and again...
- bear in mind that many of the sites containing games are very busy, so you're
- better off trying at quieter times (e.g. very late at night in the UK), and
- don't use a web browser - use a proper FTP client (in which case the name of
- the site needs the 'ftp://' bit stripped off).
-
- ftp://akira.uc3m.es
- ftp://alba.easynet.co.uk (part time site - never seen it up myself)
- ftp://budda.tixm.tambov.ru/d/incoming/crems/speccy
- ftp://drson.vse.cz/pub/sinclair
- ftp://fly.cc.etf.hr
- ftp://fly.cc.fer.hr/pub2/spectrum
- ftp://ftp.dcc.uchile.cl/pub/OS/sinclair
- ftp://ftp.demon.co.uk/pub/emulators/spectrum
- ftp://ftp.enterprise.net/pub/incoming/speccy
- ftp://ftp.enterprise.net/spectrum/
- ftp://ftp.funet.fi/pub/misc/if-archive
- ftp://ftp.gmd.de/if-archive
- ftp://ftp.gui.uva.es/sinclair
- ftp://ftp.inf.tu-dresden.de/pub/zxspectrum (and /pub/incoming/zxspectrum)
- ftp://ftp.itu.edu.tr/pub/systems/spectrum
- ftp://ftp.komkon.com/pub/Spectrum (and /incoming/Spectrum)
- ftp://ftp.lanprojekt.cz/pub/sinclair
- ftp://ftp.nvg.unit.no/pub/sinclair (*THE* Speccy FTP site!)
- ftp://ftp.polsl.gliwice.pl/pub/systems/ZXSpectrum
- ftp://ftp.sun.ac.za/pub/misc/sinclair (and /pub/msdos/zx)
- ftp://ftp.zx-museum.org.ru
- ftp://maya.dei.unipd.it/pub/sinclair_QL/spectrum
- ftp://members.aol.com/zxspectrum/snaps/
- ftp://oak.oakland.edu/pub/msdos/emulators
- ftp://phantom.riviera.pw.edu.pl/pub/speccy (kept by Hacker Chris)
- ftp://rcs1.urz.tu-dresden.de/pub/soft/zxspectrum
- ftp://spodbox.ehche.ac.uk/pub/users/majik
- ftp://tardis.soc.staffs.ac.uk/pub/sinclair
- ftp://uhura.ijs.si/pub/zx (used to be ftp.ijs.si)
- ftp://virgo.inesc.pt/pub/games
- ftp://wuarchive.wustl.edu/systems/sinclair
- ftp://www.il.ft.hse.nl/pub/sinclair/
-
- ================================= Web Sites: =================================
-
- Web sites abound, and new ones appear all the time... try web searches for
- 'Sinclair Spectrum', 'ZX Spectrum', 'speccy', etc.
-
- ===================== Web Sites with Reference Material: =====================
-
- http://www.csv.warwick.ac.uk/~mauqx/sinclair/
- Sinclair Index - links and hardware manuals, e.g. Interface 1, Multiface 128
- manuals.
-
- http://www.mono.org/~ritchie/speccy/speccy.html
- Sinclair Spectrum Home Pages - snapshots and technical articles, and letters
- from Your Sinclair!
-
- http://www.nvg.unit.no/spectrum
- Spectrum Forever! - THE Spectrum site! A bit disorganised and rather out of
- date now, but still a good collection of stuff.
-
- http://spodbox.linux.org.uk/~majik/sinclair/
- Sinclair Microcomputer Museum - (aka Sinclair Section).
-
- http://www-users.informatik.rwth-aachen.de/~afw/sincfo0.html
- Sinclair ZX Spectrum Forum - primarily a BASIC reference
-
- ===================== Web Sites with Games (Snapshots): ======================
-
- http://www.accessone.com/~mcoward/
- M. Coward's SpecNet Online; some games on a nicely presented site.
-
- http://alba.easynet.co.uk
- John Dow's part-time page - supposedly up at 10-12PM UK time at weekends; I've
- never managed to get a response at any time though.
-
- http://homepages.enterprise.net/glyn.harper/spectrum.html
- Glyn Harper's ZX Spectrum Emulator page - basically just links to his FTP
- site, with around 16Mb of games.
-
- http://ireland.iol.ie/~sjones
- Steve Jones' Sinclair Spectrum Page - has a snapshots requests page, though
- hasn't been updated since it started from what I can see - apparently due to
- worries about copyright violation.
-
- http://lia01.unizar.es/curro/spectrum.htm
- Francisco Cotrina's Spectrum page - with details of his snapshots mail server
- and some emulators to download.
-
- http://members.aol.com/zxspectrum/speccy.html
- Harvey Lodder's "Most Wanted" snapshots request page.
-
- http://osiris.sund.ac.uk/~ca4aba/snaps.html
- Andrew Barker's Spectrum Snapshots - yet another requests page, the most
- active one.
-
- http://relcom.eu.net/zx/
- Aleksandr Babaylov's ZX Spectrum Software Museum - a large collection of
- snapshots and tapes; a lot of games here, but it can be a slow site.
-
- http://sable.ox.ac.uk/~sjoh0132/
- John Elliott's Home Page - the home of Jet Set Willy 128K, and some useful
- icons for Sinclair pages (as used on my page).
-
- http://spodbox.linux.org.uk/~blood/
- Blood's Crap Speccy Page - home of the comp.sys.sinclair crap games
- compilation and the Manic Miner editor.
-
- http://www.acropolis.gr/~icarus/spectrum.html
- Theo Devil's Spectrum page - has copies of his demos and games there, plus
- more... you may have heard of Theo as the guy behind Hellenic Software, he
- had a few things published on Crash/YS cover tapes.
-
- http://www.cs.ucl.ac.uk/students/zcacbb1/spectrum/speccy.html
- Ben Baylis' Spectrum Stuff - including the beginning of a point and click
- snapshots list (using the akira FTP site), a requested snapshots page and
- YS Smash Tips!
-
- http://www-dse.doc.ic.ac.uk/~np2/spectrum/index.html
- Execute Spectrum Programs via The Web! - not really practical, but worth a
- look.
-
- http://www.io.org/~diehl/speccy.html
- Eric March's Speccy! - including what was a great requested snapshots page,
- but it hasn't been updated since August 1995. Should hopefully be back on form
- shortly, as Eric will be updating the site with more snapshots and other
- stuff 'soon'.
-
- http://www.rtc-carlow.ie/student/obrienk/spectrum.html
- Karl O'Brien's Sinclair Spectrum 48K Heaven - has a few games and a copy of
- Z80 on his page.
-
- =============== Web Sites with Game Hints/Cheats/Information: ================
-
- http://carlton.innotts.co.uk/~silthas/spectrum.html
- Sinclair Spectrum Hall of Fame - screenshots of classic games.
-
- http://orca.ucd.ie/~conormc/spectrum/zxspectrum.html
- Conor McCarthy's ZX Spectrum page - home of the Miner Willy Museum (tours of
- Manic Miner etc.), and more broken links than you can shake a stick at - all
- very much under construction.
-
- http://www-dept.cs.ucl.ac.uk/students/zcacbb1/spectrum/smashtips/
- YS Smash Tips - courtesy of Ben Baylis. Lots of tips and cheats.
-
- http://www.doggysoft.co.uk/chzxp.html
- Cheats Prosper - Multiface POKEs - an impressive list of cheats here.
-
- http://www.ftech.net/~floodnet/spectrum/spectrum.htm
- Glenn Flood's Spectrum/ZX-81 Cassette Inlay Artwork Page - Glenn did artwork
- for some QuikSilva games.
-
- http://www.gatewest.net/~cpb/lom.html
- The Moon Palace - a home page for the Lords of Midnight saga.
-
- http://www.hermetica.com/technologia/sinclair/stevo/index.html
- Stephen Smith's Master Speccy page- lots of stuff including the Spectrum games
- database and games FAQ. A must see!
-
- http://www.soton.ac.uk/~rjc394/
- The YS Tip Shop Tiptionary- courtesy of Robert Cooper. Decidedly incomplete;
- not updated since it was first put up.
-
- http://www.wintermute.co.uk/users/gargamel/ultimate.html
- Gargamel's Ultimate Play The Game Loading Screens.
-
- ================== Web Sites of Emulator/Utility Authors: ====================
-
- http://diana40.paisley.ac.uk:80/~com40014/
- James McKay's PC Games Haters Page - home of x128, the DOS and UNIX Speccy
- emulator. May disappear after June 1996.
-
- http://fly.cc.fer.hr/~arsen/tapefix/
- TapeFix - a program to make your old Speccy tapes readable once more.
-
- http://julia.gns.getronics.nl/~mheide/spectrum.html
- Martijn van der Heide's Spectrum Games Database - a PC program to catalog
- your snapshot and tape collection and launch JPP or Z80 to run a particular
- snapshot or tape. A very well done program, and it's free!
-
- http://web.jet.es/~tpomar/
- Toni Pomar's ZXAM homepage - home of ZXAM, oddly enough.
-
- http://www.comlab.ox.ac.uk/oucl/users/ian.collier/Spectrum/index.html
- Ian Collier's xz80 homepage - home of xz80, believe it or not.
-
- http://www.comlab.ox.ac.uk/oucl/users/robin.watts/wss/index.html
- Warm Silence Software - the producers of Z80Em.
-
- http://www.csd.uu.se/~richardc/home.shtml
- Richard Carlsson's home page - author of Speccylator, a Speccy emulator for
- the Amiga. You'll find a mention of it right at the bottom of his page.
-
- http://www.doggysoft.co.uk/
- DoggySoft have written several Acorn ARM Spectrum-related utilities.
-
- http://www.freeflight.com/fms/
- Marat Fayzullin's home page - author of emulators for the MSX, NES,
- Colecovision, Game Boy etc. and at least one Spectrum-related utility
- (Butcher).
-
- http://www.ugr.es/~pedrom/sinclair.htm
- Pedro Salaz's Sinclair home page - home of the Sinclair v2.00 emulator.
-
- ============================= Web Search Engines: ============================
-
- http://altavista.digital.com/
- Alta Vista - Digital's rather neat search engine. Very powerful, for instance
- it can do searches for pages linked to a specific page as well as search in
- USENET news articles and web pages.
-
- http://drson.vse.cz/snapsearch/
- Hynek Med's Spectrum related files search - searches over several FTP/WWW
- sites to match the filename you give it. Probably the most useful search
- engine if you're after a particular game.
-
- http://ftpsearch.unit.no/ftpsearch/
- FTP Search - will search for any file on the FTP sites it indexes; can also
- be used to find Spectrum files of course! Much like Archie, but nicer.
-
- http://www.infoseek.com/
- InfoSeek Guide - another generic web search engine, but as always, these are
- just as useful for finding Speccy stuff as finding anything else.
-
- http://www.nvg.unit.no/spectrum/search.html
- An interface to the gopher search engine at NVG. Unlike snapsearch, this one
- searches on company and game names as well as the filename; but it doesn't
- have as good an index, so snapsearch often gives better results.
-
- http://www.yahoo.com/Computers/Hardware/Platforms/Sinclair
- Yahoo's Sinclair page - a few links, some out of date.
-
- ============================ Magazines On The Web: ===========================
-
- http://jumper.mcc.ac.uk/~simonc/ys
- Your Sinclair - parts of some of the later issues up on the web courtesy of
- Simon Cooke, YS's tech tips editor for those issues.
-
- http://www.cs.bham.ac.uk/~dmb/speccy/emulate/
- Barry Plewa's Emulate! - has games, technical stuff, reviews, chart listings,
- and much more. The HTML version of the magazine is at this site, but plain
- text versions and ZIPped up copies of the HTML version are also available,
- e.g. from
- ftp://ftp.demon.co.uk/pub/emulators/spectrum/magazines/emulate/ and
- ftp://ftp.nvg.unit.no/pub/sinclair/snaps/discmag/emulate/
-
- ============================== Other Web Pages: ==============================
-
- http://hal.cling.gu.se/~cl0polau/zx.html
- Sinclair ZX Spectrum - a bit empty, this page.
-
- http://members.aol.com/jozxyqk/specmain.htm
- Spectrum Appreciation Society. Windows version of Advanced Lawnmower Simulator
- and some sound samples.
-
- http://paul.rutgers.edu/~savoiu/spectrum/
- Sinclair ZX Spectrum Switchboard - just links.
-
- http://sunsite.dcc.uchile.cl/sinclair/
- Sinclair Pages - all in Spanish and all very unfinished looking.
-
- http://stunix.matsim.udmurtia.su/~alt
- Aleksey Titov's [alt@stunix.matsim.udmurtia.su] site; apparently to be up
- soon, but hasn't been every time I've tried.
-
- http://tachyon.mono.org/~sinclair/
- Sinclair Scene - Monochrome BBS's Speccy web page; instructions on how to
- access Monochrome and see the actual Sinclair section within. Monochrome is
- a telnet-based BBS.
-
- http://www.8bit.com/
- 8 Bit Universe. Under construction when I looked; but there will be a
- Spectrum area. Currently there are two German Spectrum adverts.
-
- http://www.afn.org/~afn09039/sinclair.html
- Andy's Sinclair Spectrum Page - just a mention of Ant Attack and Speccy
- repair, more to come apparently...
-
- http://www.aston.ac.uk/~goringgn/
- No description yet.
-
- http://www.dur.ac.uk/~d44abw/spectrum.html
- Spectrum Page - just links.
-
- http://www.earth.ox.ac.uk:80/~steve/Spectrum/index.html
- Sinclair ZX Spectrum Flyer - some old advertising bumph.
-
- http://www-ia.di.fct.unl.pt/~vjr/Spectrum.html
- Vitor Rocio's Spectrum stuff - just links, though he promises more in the
- future.
-
- http://www.il.ft.hse.nl/~ben/sinclair/sinclair.html
- Sinclair Page - links and info on SAM Coupe and Dutch QL user group (in
- Dutch!).
-
- http://www.nvg.unit.no/spectrum/jmg7/
- John Garner's Spectrum PD/User Groups page.
-
- http://www.ozemail.com.au/~martinf/
- Martin Fowler's Australian Retro Computing has links to all sorts of old
- computer stuff, with the bonus of local copies of emulators etc. so
- Australians don't have to wait ages for the download.
-
- http://sol.soc.staffs.ac.uk/cm5bcpmh/sinclair/index.html
- Patrick Hill's Sinclair Zone. Some stuff on the C5.
-
- http://www.wam.umd.edu/~audley/english/speccy.html
- Damian Audley's Speccy Page - mostly links for Mac emulators etc.
-
- http://zipi.fi.upm.es/~a920142/spectrum.html
- Eduardo Garcφa Gallego's Spectrum page - just links.
-
- ================================ News Group: =================================
-
- Well, I'd guess you know about the newsgroup if you're reading this, but
- maybe not, so...
-
- news:comp.sys.sinclair
- (or just comp.sys.sinclair if you're not using a web browser)
-
- Mailing list (the mailing list is a feed from the newsgroup):
- Send mail to lserv@psg.com with the following in the BODY of the message (not
- the subject as previously stated in this FAQ - sorry!):
-
- subscribe sincnews yourusername@your.domain
-
- Don't put anything else in the body of the message.
-
- ==================================== IRC: ====================================
-
- The channels #spectrum and #sinclair are now officially registered with
- DALnet; here are some DALnet servers:
-
- liberator.dal.net (UK) (port 7000)
- irc.dal.net (USA) (port 6667)
- igc.dal.net (USA) (port 6667)
-
- If you are interested, please email Theo Develegas [icarus@acropolis.net -
- his IRC nick is _Wind_], so that he can fix some online meetings. He also
- plans to have an IRC section on his home page (see above).
-
- ============================== Other Resources: ==============================
-
- gopher://gopher.nvg.unit.no
- A Spectrum-related files search engine. Searches on company and game names as
- well as file names.
-
- Venture BBS in Finland: +358-0-8092126
- The Bus Stop BBS in England: +44 1273 774121 (go to area 34)
-
- There is also Alchemist News, a tape-based Spectrum magazine. Past issues can
- be found on NVG: ftp://ftp.nvg.unit.no/pub/sinclair/snaps/discmag/alchnews/
- and you are best off reading one of them for more information.
-
- ******************************************************************************
- ********************************** EMULATORS *********************************
- ******************************************************************************
-
- Authors, where known, are in (brackets) after the name of the emulator. Email
- addresses are in [square brackets]. PLEASE don't bother these guys asking for
- an emulator; there are plenty of places to get the emulators from, and I now
- list example addresses.
-
- The features of each emulator are listed in the following set order:
-
- a) Emulation: 48/128/+2/+3/Multiface/Disciple/Interface 1/etc.
- b) Loadable formats - e.g. .SNA, .Z80 etc.
- c) Saveable formats.
- d) Real tape loading - type of support offered.
- e) Requirements - video, processor etc.
- f) Speed.
- g) Status: freeware/shareware/commercial/etc.
- h) Good points.
- i) Bad points.
- j) Other comments.
- k) Site available from. Please note that these are not the *only* places to
- get the emulator from; there are many other sites, but the directories
- may be different. Try a WWW/FTP search for the name of the archive file
- if the site listed is too slow for you.
-
- Emulators for MS-DOS PCs:
- -------------------------
-
- 1. Elwro 800-3 Jr v1.0 (Piotr Schmidt & Piotr Wolter)
-
- a) Emulates an Elwro - not 100% compatible with ZX Spectrum (the real
- Elwro had problems with JetPac while other games were ok) - with
- two disk drives accessed via * commands (e.g. SAVE * "file") with
- capacity of about 700kB. These are physically files.
- b) Loads files from disk. Snapshots/tape files?
- c) Saves files to disk. Snapshots/tape files?
- d) Real tape support?
- e) Requires Hercules, CGA or EGA.
- f) Speed?
- g) Commercial only.
- h) Capable of running CP/M. Changeable interrupt frequency (45, 50,
- 65, 70 Hz). Comes with utility to read the real Elwro Junior disks on
- PC.
- i) Bad points?
- j) All system messages are in Polish.
- k) Available from?
-
- 2. JPP (Arnt Gulbrandsen [agulbra@nvg.unit.no])
-
- a) Emulates 48K Spectrum, Kempston joystick (using PC joystick).
- b) Loads .SNA snapshots and from sampled tapes (.VOC).
- c) Saves .SNA snapshots.
- d) Tape support (read-only) via sampled sound files (.VOC).
- e) Requires VGA. Real-speed version requires 286 or above.
- f) 386/25MHz or faster is needed for the best perfomance. 486/25MHz
- or 386/44MHz is needed for good sound emulation.
- g) Freeware.
- h) Includes program for reading and converting snapshots from MGT disks.
- Also includes a very old version of SPConv.
- i) Screws up system screen mode on quit. Restore with MODE CO80 command.
- R register imperfectly emulated. No rainbowing.
- j) Two versions supplied; one for slower machines, and one (PJPP) for
- faster machines; PJPP has better emulation and emulates the FLASH
- attribute and the border. No longer being updated.
- k) Available from ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/jpp.zip
- http://www.nvg.unit.no/spectrum is maintained by the author, but does
- not have any specific mention of JPP.
-
- 3. Sinclair v0.99 (previously SPECTRUM in this FAQ) / VGASPEC / SPEC386
- (Pedro Gimeno)
- a) Emulates 48K Spectrum.
- b) Loads .SP snapshots.
- c) Saves .SP snapshots.
- d) Loads from tapes through a wire connected to the parallel port.
- e) Requires VGA, 286. (386 for version 0.99D - SPEC386.EXE)
- f) Matches real Spectrum speed at 386/25MHz.
- g) Shareware.
- h) Good points?
- i) R register and I/O (other than tape) are not emulated.
- j) VGASPEC emulator is an *illegal* prerelease of this emulator.
- All documentation and onscreen messages in Spanish.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/vgaspec.zip
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/span099d.zip
-
- 4. Sinclair v2.00 (Pedro M. R. Salaz [pedrom@goliat.ugr.es])
-
- a) Emulates 48K Spectrum.
- b) Loads .SIT snapshots and from .BLK tape files.
- c) Saves .SIT snapshots and to .BLK tape files.
- d) Real tape support via a seperate program only supplied with registered
- version.
- e) Requires VGA.
- f) Speed quite good on a 486SX/25.
- g) Shareware; unregistered version has nag screen that renders the built-in
- debugger practically unusable. Registered version comes with utility to
- convert .SP snapshots (from the above similarly named emulator!) to .SIT
- format, can save Spectrum screen to .PCX screens and comes with a
- tape loader program, plus a disk full of games as .BLK files.
- h) Built-in debugger (much like Borland's Turbo Debugger) for stepping
- through, breakpointing, modifying etc. Z80 code (including the ROM).
- i) Speed varies with what the Spectrum program is doing.
- j) Available in both Spanish and English versions. The .BLK file format is
- the same as Z80's .TAP format. I don't think this emulator has any link
- to the other one of the same name.
- k) Available from the author's web site at
- http://www.ugr.es/~pedrom/sinclair.htm as well as
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/sinceng2.zip
-
- 5. SP / Polish emulator (Author?)
-
- a) Emulates 48K Spectrum.
- b) Doesn't load snapshots. Loads from .SPC/.ZX tape files.
- c) Doesn't save snapshots. Saves to .SPC/.ZX tape files.
- d) No real tape support.
- e) Requires CGA or EGA and a ROM file called ROM.SPC - this file is just a
- 16Kb ROM dump, identical to the SPECTRUM.ROM file included with JPP and
- xz80.
- f) Speed not known.
- g) Freeware?
- h) Built in MON-like debugger (press F8) for stepping through Z80 code.
- i) No accompanying documentation at all. Colour palette a bit odd.
- j) No other comments.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/polish.lzh
-
- 6. The Spectrum Emulator / SPECEM / Irish emulator (Kevin J. Phair)
-
- a) Emulates 48K Spectrum with Multiface 1, Kempston joystick (with cursor
- keys and Alt).
- b) Loads .PRG snapshots and files from 'tape' - i.e. your hard disk.
- c) Doesn't save snapshots. Saves files to hard disk.
- d) No real tape support.
- e) Requires 16MHZ 286, EGA or better.
- f) Works reasonably fast on 286 and a bit faster than necessary on
- 386/486 systems. 386/40MHz or 486/25MHz is needed for good sound
- emulation.
- g) Freeware, but a donation to the author gets you the source code plus
- 'various utilities'.
- h) Includes program for loading snapshots from MGT/Datel Plus-D disks.
- Comes with a Z80 disassembler written in BASIC, and a speed testing
- program. Ran at least one snapshot (Scumball) that no other emulator
- could manage (JPP's documentation makes a mention of this one not
- working - Arnt thought it was a bad snapshot).
- i) Imperfect R register emulation. Allows modification of the ROM (though
- it does get refreshed to normal condition whenever loading/saving).
- j) Onscreen display of Z80 registers (can be disabled, but not removed from
- the screen). Attributes can be disabled for faster emulation.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/irish.zip
-
- 7. SP_UKV / SP_EMU (Author?)
-
- a) Emulates 48K/128K Spectrum with TR-DOS (Technology Research Disk
- Operating System for the BetaDisk 3.5" disk drive).
- b) Loads .SNA (both standard 48K and a new 128K version) and 128K .Z80
- snapshots.
- c) Saves .SNA (48/128) and 128K .Z80 snapshots.
- d) Real tape support?
- e) Requires VGA.
- f) Rather slow on a 486SX/25.
- g) Shareware. Registered version has an excellent Turbo Debugger style
- debugger (similar to Sinclair v2.00's one).
- h) Good points?
- i) Bad points?
- j) Usually found as SP_UKV.ARJ along with SP_EMU.ARJ; the latter being a
- cracked version which appears to be enable all the options only
- available if you register it. The help screen is identical to the one on
- the Polish emulator - was that an old version?
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/sp_ukv.arj
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/sp_emu.arj
-
- 8. ZX-Spectrum 128K + TR-DOS 1.05 / SP105 (Author?)
-
- a) Emulates 48K/128K Spectrum with TR-DOS.
- b) Loads?
- c) Saves?
- d) Real tape support?
- e) Requires VGA.
- f) Speed?
- g) Status?
- h) Good points?
- i) Refuses point blank to run in a Windows DOS session. Actually, should
- this be a good point? ;)
- j) All messages and documentation in Russian... if anyone fancies doing a
- translation, I'd be very grateful! Written by somebody from Moscow on
- FidoNet; no email address for them.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/sp105.arj
-
- 9. Warajevo v1.2 (Zeljko Juric [Z.JURIC@zamir-sa.ztn.zer.de] and
- Samir Ribic [S.RIBIC@zamir-sa.ztn.zer.de])
- a) Emulates 48K/128K/+2 Spectrum, ZX Printer, Interface 1 (only RS232),
- Kempston joystick (with cursor keys and + or ~ keys as fire or with PC
- joystick or mouse), 128's keypad.
- b) Loads .SNA and .Z80 snapshots and from near-perfect virtual tape (.TAP)
- format - this is not the same as Z80's .TAP format.
- c) Saves .Z80 snapshots and to .TAP tape files.
- d) Supports loading from real tapes only via an RS232 link from a real
- Spectrum.
- e) Requires 286, Hercules, CGA, EGA or VGA.
- f) Around 15% slower than Z80; not noticeable on anything more powerful
- than a 386.
- g) Freeware, though the authors welcome donations, in return for which you
- at least get your name listed in the documentation of the next release.
- h) Better AY-sound through PC speaker than any other PC emulator. Built-in
- debugger, though not as friendly as the ones in Sinclair v2.00 and
- SP_UKV. Can create stand-alone snapshot files that don't need to be
- loaded into an emulator. Comes with suite of utilities built into a
- single program - for converting from various formats, holding a database
- of games, etc. Lots of options.
- i) Colour palette looks a bit odd.
- j) Written under very poor conditions during war in Bosnia. Generally
- considered the second best Speccy emulator on the PC.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/warajevo-spectrum-120.zip
-
- 10. WSpecem v1.11 (Rui F. Ribeiro [rff-ribe@csm.uwe.ac.uk] until June 1996)
- a) Emulates 48K Spectrum with Kempston joystick.
- b) Loads just about every snapshot and tape format there is, including SLT.
- c) Saves just about every snapshot and tape format there is, but not SLT.
- d) Real tape support provided via an extra program.
- e) Requires MS Windows 3.1, 3.11 or 95, WinG.
- f) Around 25-30% Spectrum speed on a 486SX/25 @ 800x600 res, 64K colour
- Cirrus video card, 8MB machine. Runs at a bit over 100% speed on a P75
- with otherwise identical setup. Note these speeds are for 1x1 scaled
- window with a /3 frame rate. Larger sizes and full frame rate are
- slower.
- g) Freeware - GPL; all the author wants is a postcard.
- h) Resizable window, with quick 1, 2 and 3 times normal size settings as
- well. Quick save/load function for saving a snapshot and reloading it
- without going through a file selector. Drag and drop snapshot loading.
- Source (in C) supplied. Saves Spectrum screen to SCR and PCX files.
- i) Doesn't save SLT snapshots yet. And my machine isn't fast enough :(
- j) The very first Spectrum emulator for MS Windows.
- k) Available from
- http://lia01.unizar.es/curro/wspecem.zip
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/wspv111.zip
-
- 11. Z80 v3.03 (Gerton Lunter [gerton@math.rug.nl])
-
- a) Emulates 48K/128K Spectrum with Multiface 1/128, cursor, Sinclair and
- Kempston joysticks, AMS Mouse, Disciple disk interface, Interface 1 and
- Microdrives, SamRam (author's own ROM with a basic MON-like debugger).
- b) Loads .SNA and .Z80 snapshots, including level-loader support, and from
- .TAP tape files.
- c) Saves .Z80 snapshots and to .TAP tape files.
- d) Loads from sample tapes (.VOC) and direct from Sound Blaster MIC input,
- or from parallel port using a custom interface (all these only in the
- registered version, and the parallel port interface itself costs extra -
- though a diagram is provided if you want to build your own). Contrary to
- what several people think, this support *does* allow loading of turbo-
- loaders, speedlock games, etc.
- e) Requires Hercules, CGA, EGA or VGA.
- f) Can be up to 200% Spectrum speed on a 486SX/25, depending on emulation
- options chosen.
- g) Shareware. Registered version has real tape support and can be slowed
- down, and comes with several utilities (for converting from various
- formats) and source code (mixture of assembler and C).
- h) Most user-friendly emulator; very good menu-interface and documentation.
- Good high-resolution colour emulation (rainbowing!).
- i) 128K sound can be a bit wobbly.
- j) Usually considered to be the best emulator available for any platform.
- Earlier versions were pretty good but do not compete with version 3.03,
- though version 3.02, which was released on a PC Format cover disk, had
- speed control whereas 3.03 does not unless you register it. However, the
- PC Format version is not distributable - if you have it and didn't buy
- that issue of PC Format, their lawyers may want to talk to you! Version
- 3.04 expected soon; it will have, among other updates, support for .SLT
- snapshots. A Windows version is also in development.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/z80-303.zip
-
- 12. Z80-TR-DOS 2.02 (modified version of Z80 3.02 by VitaSoft)
-
- a) As Z80, with addition of TR-DOS emulation.
- b) As Z80.
- c) As Z80.
- d) No real tape support; if you want that, you'll need to register a real
- version of Z80.
- e) As Z80.
- f) As Z80.
- g) An illegal hack.
- h) As Z80. Version 3.02 of Z80 had slightly poorer high resolution colour
- emulation however; and this hack is the same.
- i) As Z80.
- j) This program is an obviously modified copy of Z80 version 3.02 (as
- released on a PC Format cover disk) with Russian documentation. The
- title screen has some cyrillic text on it along with what I presume is
- a phone number (In Russia? Of whoever is behind VitaSoft?).
- k) Not made available at Gerton's request, nor will I reveal the site I got
- it from. No doubt it will soon turn up from somebody else less honest
- than me though...
-
- 13. ZX Spectrum-Emulator v1.0s / SPECEMU (Bernd Waschke)
-
- a) Emulates 48K Spectrum, Kempston joystick (using PC's analogue or digital
- joystick).
- b) Loads .SEM snapshots.
- c) Saves .SEM snapshots.
- d) Real tape support (registered version only) via a Soundblaster card, but
- you have to manually calibrate it with a number.
- e) Requires 386DX/40 and 1Mb of RAM.
- f) About 75% of normal Spectrum speed on a 486SX/25.
- g) Shareware. Some options not present in unregistered version.
- h) POKE facility. Also has what appears to be a Game-Genie/Game Wizard-like
- option to automatically find POKEs (registered version only).
- i) Doesn't emulate flags register properly; in particular, the H flag.
- BRIGHT attribute not emulated.
- j) All documentation and onscreen messages in German. Anyone fancy
- translating it?
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/specemu_1_0s.zip
-
- 14. x128 v0.4 (James McKay [com40014@paisley.ac.uk] until June 1996)
-
- a) Emulates 48K/128K Spectrum, Kempston/Sinclair/Cursor joysticks.
- b) Loads .SNA, .Z80 and .SLT snapshots, and from Z80's .TAP tape files.
- c) Saves .Z80 and .SLT snapshots.
- d) No real tape support.
- e) Requires VGA.
- f) About 50% of normal Spectrum speed on a 486SX/25.
- g) Freeware.
- h) Hi-res emulation of screen and left & right border allowing colours
- in an 8x1 block (rainbowing). 128K sound is very good. Now has a
- file selector and much better user interface than previous versions.
- i) Some changeable options require re-compilation.
- j) Also available for UNIX/Linux systems with X Windows (X11).
- k) Available from author's home page (until some time in June 1996) at
- http://diana40.paisley.ac.uk:80/~com40014/ as well as
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/x128v04.zip
-
-
- Emulators for CBM Amiga:
- ------------------------
-
- 1. KGB v1.3
-
- a) Emulates 48K Spectrum, cursor joystick (with cursor keys) and Kempston
- joystick (with Amiga joyport 2).
- b) Loads .ZX snapshots.
- c) Saves .ZX snapshots.
- d) Loads/saves from/to real tapes via a sound-digitiser.
- e) Requires monochrome or colour.
- f) Speed not known.
- g) Freeware?
- h) Has a pitch-compensated mode, that transposes the sound two octaves
- up (handy on slow Amigas).
- i) Doesn't multitask. Isn't completely compatible with ZX-Spectrum; several
- games don't work, e.g. Chronos, Starstrike II.
- j) No other comments.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/amiga/kgb-1.3.lha
-
- 2. Speccylator v1.0 (Richard Carlsson [richardc@csd.uu.se])
-
- a) Emulates 48K Spectrum.
- b) Loads .SNA snapshots, no tape support.
- c) Saves .SNA snapshots, no tape support.
- d) No real tape support.
- e) Requires just any Amiga and around 300Kb of free memory.
- f) 'Faster than most' - except Peter McGavin's Spectrum on a 68000-based
- Amiga.
- g) Freeware.
- h) Fully multitasking, nice graphical interface, better sound than Peter
- McGavin's Spectrum. Can dump Spectrum screen to an IFF ILBM file.
- Preferences can be set globally and for individual snapshots. Better
- Z80 emulation than ZXAM.
- i) No particular bad points, unless you count lack of features - e.g.
- there's no joystick support.
- j) The idea behind the project was to create a Z80 emulation kernel that
- could run on any 68000 machine, i.e. not using any Amiga specifics.
- The Z80 emulator kernel can therefore be used for an emulator on any
- other 68000-based machine, e.g. the Atari ST. Not updated for some time
- due to author being busy with other things, but he will be making some
- updates soon (having seen ZXAM!).
- k) Available from author's homepage:
- http://www.csd.uu.se/~richardc/
-
- 3. ZXAM v2.0 (Toni Pomar [tpomar@jet.es])
-
- a) Emulates 48K Spectrum, Kempston, Sinclair II and Cursor joysticks. Also
- emulates the 128K's AY-8910 sound chip, so 128K-enhanced games that use
- only the sound chip and not the extra RAM often work and give better
- sound.
- b) Loads .SNA and .SP snapshots. Can also apparently load just about any
- format of snapshot via Rexx scripts. Loads tape files from disk.
- c) Saves .SNA (and .SP?) snapshots. Can apparently save just about any
- format of snapshot via Rexx scripts. Saves tape files to disk.
- d) Real tape support via a custom tape interface (diagram and instructions
- to make this are supplied).
- e) Kickstart 2.04 and 68020 or higher required.
- f) Apparently 'impressive' on an A1200.
- g) Shareware.
- h) Runs in a window on Workbench screen, on a separate draggable screen, or
- in exclusive mode. Automatic speed adjustment for fast machines. Can
- save snapshots to a real tape for loading on a real Spectrum. Can load
- PowerPacked snapshots if you have the powerpacker.library in the LIBS:
- drawer.
- i) At least 38 games (including Chronos and Starstrike II) do not work; so
- emulation obviously isn't perfected.
- j) Author is working on fixing problems that cause those games not to work,
- along with a built-in debugger, full 128K emulation and tape loading via
- sound samples. There is a thing called the 'ZX Poke Guide' which is not
- an emulator but instead it's an AmigaGuide by Richard Koerber
- [rkoerber@tfh.dssd.sub.org] full of POKEs (about 677 games). It uses the
- ARexx port of ZXAM to make the pokes and run/stop the emulator from the
- AmigaGuide itself.
- k) Available from author's homepage:
- http://web.jet.es/~tpomar/ (that last slash is very important!) as well
- as the 'misc' directory on AmiNet. The ZX Poke Guide (v2.0) can also be
- found there, e.g.:
- http://ftp.wustl.edu/pub/aminet/misc/emu/ZXPokeGuide20.lha
-
- 4. Spectrum v1.7 (Peter McGavin [peterm@kea.grace.cri.nz])
-
- a) Emulates 48K Spectrum, cursor joystick (with cursor keys) and Kempston
- joystick (with Amiga joyport 2).
- b) Loads .SNA snapshots and tape files from seperate .header and .bytes
- files on Amiga disks.
- c) Saves .SNA snapshots and tape files to seperate .header and .bytes files
- on Amiga disks.
- d) Load/saves Spectrum files from/to tapes through a sound-digitiser.
- e) Toni Pomar says this one is 68000 only and incompatible with Kickstart
- 2.0 and up. Comment on speed, below, seems to disagree with this...
- f) Is reasonably fast on 68030/25MHz, but slow on 68000/7.14MHz machines.
- At least 68020/14MHz (A1200) and FAST RAM are recommended. Not as fast
- as ZXAM.
- g) Freeware?
- h) Multitasks.
- i) Colour palette is a bit strange.
- j) Very old, and not supported any more.
- k) Available from
- gopher://micros.hensa.ac.uk:70/11/micros/amiga/dos/t/t042
-
- 5. ZX-Spectrum v4.71 (Jeroen Kwast [jkt@gesasdsc.nt.getronics.nl])
- a) Emulates 48K Spectrum.
- b) Loads?
- c) Saves?
- d) Real tape support?
- e) Requires?
- f) Speed?
- g) Status?
- h) Good points?
- i) Bad points?
- j) No other comments.
- k) Available from 'misc' directory on AmiNet, e.g.:
- ftp://src.doc.ic.ac.uk/pub/aminet/misc/emu/zxspectrum4.71.lha
-
- 5. ZX Spectrum Emulator v0.10 (A.Schifano & V.Gervasi)
- a) Emulates 48K Spectrum, presumably, and Kempston joystick.
- b) Loads snapshots (type unknown) and from tape (AmigaDOS files).
- c) Presumably saves snapshots and to AmigaDOS files.
- d) Real tape support via a tape interface.
- e) Requires any Amiga.
- f) Speed? Has three video modes; monochrome, where you choose the overall
- PAPER and INK colour for the screen; colour 1 with limited updates of
- the screen and colour 2 with full updates (slower).
- g) Appears to be a commercial product. The demo does not include tape
- support or snapshot support, and resets after a certain amount of time.
- h) Good points?
- i) Spectrum ROM doesn't come with the emulator; apparently Amstrad denied
- permission (perhaps because this is a commercial product). A hacked
- version of the demo does include it, illegally.
- j) Information here comes from a brief Readme file in a hacked demo version
- of the emulator. More information welcome.
- k) Available from DigiMail in Italy:
- Digimail Srl Phone: ++39-2-427621
- Via Coronelli 10 Fax: ++39-2-427768
- 20146 Milano
- ITALY
-
-
- Emulators for Atari ST(e)/TT/Falcon:
- ------------------------------------
-
- 1. ZX-SPECTRUM Emulator / Specci v2.07 (Christian Gandler)
-
- a) Emulates 48K Spectrum, Interface 1 (Microdrives and RS232), Kempston and
- Sinclair joysticks.
- b) Doesn't load snapshots. Loads tape files from seperate files on Atari
- disks.
- c) Doesn't save snapshots. Saves tape files to seperate files on Atari
- disks.
- d) No real tape support.
- e) Requires at 1Mb of memory.
- f) Speed is around 70% (at best) of real Spectrum on plain STs.
- g) Freeware?
- h) Also runs on TTs and Falcons (in ST low/high resolutions).
- i) Bad points?
- j) All documentation in German. There is a poorly-translated version of the
- documentation supplied (taken from a 'Pompey Pirates' disk that had this
- emulator on it) with at least one of the copies on the FTP sites.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/atari/zx_sp207.zip
- gopher://micros.hensa.ac.uk:70/11/micros/atari/tos/o/o096
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/atari/atari-speccy.zip
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/atari/atari-spectrum.zip
- (last two may be earlier versions)
-
- Emulators for Acorn Achimedes:
- ------------------------------
-
- 1. !MZX v1.0 (Graham Willmott)
-
- a) Emulates 48K Spectrum.
- b) Loads .SNA snapshots.
- c) Saves .SNA snapshots.
- d) No real tape support?
- e) Requirements?
- f) Runs at ~60% normal spectrum speed on an ARM2 machine, and considerably
- faster on other machines - currently there is no speed control available.
- g) Freeware?
- h) Multitasks (can also single task if required).
- i) Doesn't emulate R register correctly, or certain undocumented
- instructions.
- j) No other comments.
- k) Available from
- gopher://micros.hensa.ac.uk:70/11/micros/arch/riscos/b/b166
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/arm/mzx110.spark
-
- 2. !Speccy (Karsten Witt)
-
- a) Emulates 48K Spectrum.
- b) Doesn't load snapshots. Loads tape files from disk in its own file
- format.
- c) Doesn't save snapshots. Saves tape files from disk in its own file
- format.
- d) Comes with application instructions for transferring tape files to/from
- real tapes through the serial port.
- e) Requirements?
- f) Runs at normal Spectrum speed on an ARM2 machine and very fast on an
- ARM3 machine. The speed is adjustable.
- g) Freeware?
- h) Has an enhanced keyboard layout - there are keyboard short cuts to Caps
- Lock, Extended Mode, and also the cursor keys, the keypad, and other
- symbols (commas, colons etc.) can be entered easily.
- i) Doesn't fully implement the R register - however this doesn't affect
- most programs.
- j) At the moment does not load/save in any snapshot formats. Apparently,
- the author is currently working on making it run in the desktop
- (multi-tasking) and allowing loading of .SNA files.
- k) Available from?
-
- 3. Speculator (Dave Lawrence)
-
- a) Emulates 48K Spectrum.
- b) Loads in its own file format.
- c) Saves in its own file format.
- d) No real tape support.
- e) Requirements?
- f) Is extremely fast on an ARM3 machine. To get normal Spectrum speed an
- ARM2 machine or an ARM3 machine with the cache turned off is required.
- g) Status not known - not officially released yet.
- h) It is possible to return to the desktop from the emulator, and then
- re-enter the emulator at the point you left off.
- i) Bad points?
- j) Is not officially available at the moment - any copies circulating are
- pirate copies. As a result, documentation of the file format is not
- complete, and the conversion programs supplied with it do not work
- correctly.
- k) Not yet available?
-
- 4. Z80Em (Mike Borcherds [borchrds.teaching@physics.oxford.ac.uk])
-
- a) Emulates 48K Spectrum.
- b) Loads .RAW, .SNA and .Z80 snapshots with level-loader support. Loads
- tape files from Z80's .TAP files.
- c) Saves .Z80 snapshots and to .TAP tape files.
- d) Can load/save? from/to? sample tapes (.VOC).
- e) Requirements?
- f) Runs a little slowly on an A3010.
- g) Commercial - can be bought along with a CD full of games, the CD coming
- cheaper this way than if bought separately. However, see question 6 in
- the Frequently Asked Questions list (section 1 of this document).
- h) Good points?
- i) Level-loader support expects different filenames from the standard -
- instead of "GAME1.DAT" it wants just "1", etc.
- j) A new version is being worked on that will support v2 and v3 Z80
- snapshots, 128K emulation and possibly .SLT snapshots.
- k) Available from Warm Silence Software; their homepage is at
- http://www.comlab.ox.ac.uk/oucl/users/robin.watts/wss/index.html
-
-
- Emulators for UNIX/Linux/etc.:
- ------------------------------
-
- 1. Spectrum / French emulator (Jean-Francois Lozevis [lozevis@Email.ENST.Fr])
-
- a) Emulates 48K Spectrum.
- b) Loads .SNA and .Z80 snapshots.
- c) Saves .SNA snapshots.
- d) No real tape support.
- e) Requires X-Windows (X11) and Linux with an 80386 processor (or above)
- because the emulation code is written in assembler.
- f) Apparently runs at full speed on a 486DX2/66.
- g) Public domain. Author allows modification, just wants to retain his
- credit as the original author, and wouldn't say no to a postcard.
- h) Sound support for Linux via /dev/audio.
- i) Imperfect emulation; Rhino in Sabre Wulf problems (see the Technical
- Information section) and some large BASIC programs don't work. Author
- doesn't know why. Poor user interface.
- j) All messages in French.
- k) Available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/other/french_spectrum.zip
-
- 2. xzx v1.0 (Des Herriott [dnh@mfltd.co.uk but no reponse from this address])
-
- a) Emulates 48K/128K/+3 Spectrums, Kempston joystick (with keys).
- b) Loads .SNA and .Z80 snapshots with level-loader support, tape files from
- UNIX files.
- c) Saves .SNA and .Z80 snapshots, tape files to UNIX files.
- d) No real tape support.
- e) Requires X-Windows (X11). Makes heavy use of the MIT-SHM X11 extension,
- and works a good deal slower without it.
- f) Needs approx 486/33 to run at the correct speed (this is from general
- impressions, not exact timings). Sparc 10 or DEC Alpha will run it very
- fast.
- g) Freeware.
- h) Sound support for Sparc and NEC EWS workstations via /dev/audio.
- Sound support for Linux via direct speaker manipulation. X server bell
- audio for most X servers (traps ROM BEEP routine only).
- i) Poor user interface; e.g. no file selector - you have to move to your
- terminal window and type in name of snapshots to load/save.
- j) Author seems to have disappeared! Email address above probably no good.
- k) Available from
- http://hpux.csc.liv.ac.uk/hpux/X11/Misc/xzx-0.5.1.html
-
- 3. xzx v2.0 - modified version (Erik Kunze [Erik.Kunze@philosys.de] &
- Des Herriott)
- a) Emulates 48/128/+3 with Multiface 128, Interface 1, Kempston Joystick.
- b) Loads .SNA and .Z80 (up to v3.03 format) snapshots with level-loader
- support, tape files from UNIX files.
- c) Saves .SNA and .Z80 snapshots, tape files from UNIX files.
- d) No real tape support.
- e) Requires X11, Linux (for AY emulation).
- f) A bit faster then original xzx 1.0.2.
- g) Still freeware.
- h) Sound support for Sparc via /dev/audio. Sound support for Linux via
- direct speaker manipulation. AY emulation via /dev/dsp (Linux only).
- X server's bell audio for most X servers (traps the ROM BEEP routine
- only).
- i) Still without a file selector. Some known bugs, that Erik has not yet
- found.
- j) Erik still needs beta testers! Mail to speccy@fantasy.muc.de. This
- could be the very first Spectrum +3 emulator...
- k) Soon to be available from:
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/other/xzx-2.0.0beta.tar.gz
-
- 4. xz80 v0.1e (Ian Collier [Ian.Collier@comlab.ox.ac.uk])
-
- a) Emulates 48K Spectrum and ZX Printer (via .XBM image files!).
- b) Loads .SNA and .Z80 snapshots with level-loader support, tape files
- from disk or from Z80's .TAP files.
- c) Saves .SNA snapshots and tape files to disk or to Z80's .TAP files.
- d) Real tape support not known - mentions sound input (e.g. via /dev/audio
- device) but I am unsure what Ian means by this.
- e) Requires X-Windows (X11) or SVGALib (for Linux console version). MIT-SHM
- extension also probably a good idea.
- f) Faster than xzx and x128. The Linux console version runs at about 35%
- real Spectrum speed on a 486SX/25. True-speed emulation without hogging
- the CPU on fast machines.
- g) Freeware (GNU Public License).
- h) Realistic sound output via /dev/audio. Emulates 'stripey border' effect
- - very important ;-)
- i) Poor user interface; e.g. no file selector - you have to move to your
- terminal window and type in name of snapshots to load/save.
- j) No other comments.
- k) Available from author's homepage at
- http://www.comlab.ox.ac.uk/oucl/users/ian.collier/Spectrum/index.html
-
- 5. x128 v0.4 (James McKay [com40014@paisley.ac.uk] until June 1996)
-
- a) Emulates 48K/128K Spectrum.
- b) Loads .SNA, .Z80 and .SLT snapshots, and from Z80's .TAP tape files.
- c) Saves .Z80 and .SLT snapshots.
- d) No real tape support.
- e) Requires X-Windows (X11). MIT-SHM extension also a very good idea.
- f) Rather slow; about 25-35% of real Spectrum speed on a 486SX/25 Linux
- box.
- g) Freeware.
- h) Hi-res emulation of screen and left & right border allowing colours
- in an 8x1 block (rainbowing). Now has a file selector and much better
- user interface than previous versions.
- i) Some changeable options require re-compilation.
- j) Also available for DOS.
- k) Available from author's home page (until some time in June 1996) at
- http://diana40.paisley.ac.uk:80/~com40014/ as well as
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/other/x128_0.4.tar.gz
-
- Emulators for Apple Macintosh:
- ------------------------------
-
- 1. MacSpeccy v1.1 (Danny Keogan [djkeogan@unix2.tcd.ie])
-
- a) Emulates 48K Spectrum.
- b) Loads .SNA and (probably) .Z80 snapshots.
- c) Saves?
- d) No real tape support?
- e) Requires 68040.
- f) Seems to be extremely slow.
- g) Freeware?
- h) Allows copying of Spectrum screen to clipboard.
- i) No flash attribute emulation.
- j) The oldest emulator for the Mac.
- k) Available from
- http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/app/
- mac-speccy-11.hqx
-
- 2. Mac Spectacle v1.8.2 (Guenter Woigk [kio@vanilla.nbg.sub.org])
-
- a) Emulates 48K/128K Spectrum, joystick (type?).
- b) Loads .SNA and .Z80 snapshots and .SCR screens, tape files from
- Z80's .TAP files.
- c) Saves .SNA and .Z80 snapshots, saves .SCR and .PICT screens.
- d) No real tape support; but there is a program called ZX-Loader to
- enable the use of PowerSpectrum's facilities for this.
- e) Needs MacOS 7.0 or higher, Color QuickDraw and at least a 68020
- CPU or a PowerMAC.
- f) Speed?
- g) Freeware?
- h) Single/double/quadruple sized window, all monitor depths (2 and
- 4 bit slow). High-res screen & border effects. Background or
- exclusive execution. Better emulation than other emulators for
- the Mac - so more games run on this one than the others.
- i) Bad points?
- j) The newest and most regularly updated emulator for the Mac.
- k) Available from author's FTP area; get this file first:
- ftp://lst.informatik.uni-erlangen.de//incoming/kio/readme
- or
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/mac/Spectacle-1.8.2.hqx
- and ZX-Loader is available from
- ftp://ftp.nvg.unit.no/pub/sinclair/utils/mac/ZX_Loader_1.0.4.hqx
-
- 3. PowerSpectrum v1.0 (Bo Lindbergh [d88-bli@nada.kth.se])
-
- a) Emulates 48K Spectrum, Kempston joystick.
- b) Loads .SNA snapshots.
- c) Saves .SNA snapshots.
- d) Does realtime tape I/O through the microphone jack (this probably
- requires 44 kHz sound hardware).
- e) Requires a PowerMac - won't run on a 680x0 machine.
- f) Runs at true Spectrum speed.
- g) Freeware?
- h) 1x1, 2x2, 3x3, and 4x4 screen emulation. Has perfect sound. Supports all
- undocumented Z80 instructions.
- i) Bad points?
- j) No other comments.
- k) Available from
- http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/app/
- power-spectrum-10-ppc.hqx
-
- Emulators for NeXTStep:
- -----------------------
-
- 1. NXSpectrum (Ian Stephensen [ian.stephenson@insignia.com] &
- Ian Collier [Ian.Collier@comlab.ox.ac.uk])
- a) Emulates 48K Spectrum. ZX Printer still?
- b) As xz80.
- c) As xz80.
- d) As xz80.
- e) Requirements?
- f) Speed?
- g) Freeware (GNU Public License).
- h) Good points as xz80?
- i) Bad points as xz80?
- j) This is a quick hack of xz80 to make it run under NeXTStep. And yes,
- this is from the same guy who does SoftPC for Insignia!
- k) Available from
- ftp://pitcher.peak.org/pub/next/submissions/
- NXSpectrum.app.NIHS.compressed
- (directory may have changed by the time you read this)
-
- Emulators for Commodore 64: (information from comp.sys.emulators.misc FAQ)
- ---------------------------
-
- 1. Spectrum 48
-
- a) Emulates Sinclair BASIC only - no Z80 emulation, so no machine code
- programs work. Microdrive emulated via 1541/1571 disk drive.
- b) Loads Microdrive files from disk.
- c) Saves Microdrive files to disk.
- d) No real tape support?
- e) Requires just a basic C64.
- f) Slow - well, it *is* just BASIC and it *is* on a C64!
- g) Freeware?
- h) Allows C64 users to see some of the superiority of Sinclair's master-
- piece (well you try and think of a good point!). And Sinclair BASIC
- is somewhat more useful than Commodore's attempt.
- i) Useless for all but the most BASIC of games (pun intended).
- j) No other comments.
- k) Available from?
-
-
- ******************************************************************************
- ********************************* WHERE IS...? ********************************
- ******************************************************************************
-
- 1. Imagine/Denton Designs [Stonkers, Frankie goes to Hollywood, etc.]
- o Dougie Burns (programmer)
- Last seen in Glasgow as a used car salesman.
- o Marc Dawson (programmer)
- Project manager for Barbie the Video Game for software house in
- Manchester.
- o John Gibson (programmer - ZZoom/Stonkers)
- Currently working in the Chester office of Psygnosis and has been for
- some time.
- o Fred Gray (musician)
- Became programmer in Liverpool. Works for Psygnosis, as do most of
- Denton Designs. Status uncertain since Sony's take over of Psygnosis.
- o Dave Lawson (director)
- Last seen running Kinetica Software in Birkenhead.
- o Ally Noble (artist) and John Heap (programmer)
- Still own and run Denton Designs.
- * INFO BY:
- Stuart Fotheringham [stuarto@stoo.demon.uk]
- Andrew Toone [andrewt@smallworld.co.uk]
- Ralph Ferneyhough [ralph@datel.co.uk]
-
- 2. Gargoyle Games/Faster Than Light [Heavy On The Magick, Lightforce etc.]
- o Roy Carter
- Roy Carter is a registered user of Z80 and has given spoken permission
- to distribute the Gargoyle games. They are (were?) doing things for
- Psygnosis - not all of them game writing.
- * INFO BY:
- Brian Gaff [briang@bgserv.demon.co.uk]
- Andrew Toone [andrewt@smallworld.co.uk]
-
- 3. Design Design [Halls Of The Things, Dark Star etc.]
- o Simon Brattel
- Runs his own company producing system software
- o Graham Stafford
- Works for Psygnosis, as do most of Denton Designs.
- * INFO BY:
- Andrew Toone [andrewt@smallworld.co.uk]
- Jon Ritman [jritman@cix.compulink.co.uk]
-
- 4. LERM [various tape copiers]
- o Robert Evans
- "Not only do I remember Lerm, I did some work for them. Lerm itself was a
- husband and wife company, in the back room, in the traditional fashion.
- The husband was a high-flying software type a.k.a my Maths teacher at
- school."
- "There was a tendency amongst my group of schoolfriends at the time to
- use LERM programs more than anything else, because some of us helped Mr
- Evans (our maths teacher at the time) to write them. If anyone's
- interested, the company name came from a mixture of Robert Evans' and
- his wife's initials."
- * INFO BY:
- David Smith [davidsm@x.co.uk]
- Scott Wilding [scott@fizban.demon.co.uk]
-
- 5. Ultimate Play The Game/Ashby Computers & Graphics (ACG) [Jetpac,
- Knighlore etc.]
- o Calling themselves Rare and producing console games for Nintendo, e.g.
- Donkey Kong Country and Killer Instinct for the new Nintendo Ultra 64.
- * INFO BY:
- Dylan Cuthbert [dylan@takoyaki.demon.co.uk]
-
- 6. Realtime Graphics [3D StarStrike, Starglider, Carrier Command etc.]
- o Jez San
- Developing 3D systems for anyone with with enough hardware (Nintendo et.
- al.)
- * INFO BY:
- Andrew Toone [andrewt@smallworld.co.uk]
-
- 7. Vortex [Android, TLL, Highway Encounter etc.]
- o Mark Haigh-Hutchinson
- Working for LucasArts, currently on Shadows of the Empire for the
- Nintendo 64. Mark organises the Vortex Emulation Package for several
- machines, including the Spectrum. This contains a number of the Vortex
- games and is freely distributed.
- o Costa Panayi
- Doing some consultancy design work for a children's toys company in the
- south of England (believed to be Chicco).
- * INFO BY:
- Arnt Gulbrandsen [agulbra@flode.nvw.unit.no]
- Miguel Melo [mmelo@ea.com]
- Mark Haigh-Hutchinson [mhh@lucasarts.com]
-
- 8. OTHERS:
- o Marcus Berkmann [YS or SU writer - aka Dr. Berkmann]
- Now writing for the Mail on Sunday.
- * INFO BY:
- Keith Willoughby [keith@cowtown.demon.co.uk]
-
- o John F. Cain [Booty]
- Still lives on the Isle of Man, as he did when he wrote Booty. He has a
- gold cassette of Booty on his wall!
- * INFO BY:
- Mark Walker [M.S.Walker@cs.cf.ac.uk]
-
- o Alan Cox [Blizzard Pass]
- Now doing network stuff; has thought about a Linux version of Blizzard
- Pass. He has a home page where you can retrieve some adventure stuff (but
- not Blizzard Pass itself, as that is owned by whoever bought the rights
- from Tynesoft) - http://shadow.cabi.net/
- * INFO BY:
- Alan Cox [Alan.Cox@linux.org]
-
- o Mel Croucher [ID]
- Writing for magazines; including the Great Moments In Computing strip for
- Computer Shopper.
- * INFO BY:
- Damien Burke [D.M.Burke-CSSE94@cs.bham.ac.uk until June 14th 1996]
-
- o Robert Erskine [anyone know anything he wrote?] - robert@smallworld.co.uk
- Working for Smallworld Cambridge on GIS.
- * INFO BY:
- Stephen Smith [stevo@jonlan.demon.co.uk]
-
- o Eugene Evans
- Currently working in Chicago at Viacom New Media. He's been there for a
- good few years before which it was Icom Simulations, Inc. the people who
- did the CD-ROM Sherlock Holmes games, T-MON for the Mac, and Dracula
- Unleashed.
- * INFO BY:
- phyd@interaccess.com [Brian Leake]
-
- o Glenn Flood [tape inlay art for Astroblaster and others]
- Programming and drawing still; has a nice web site showing off a lot of
- his artwork at http://www.ftech.net/~floodnet/
- * INFO BY:
- Glenn Flood [glenn@floodnet.demon.co.uk]
-
- o Julian Gollop and Nick Gollop [Chaos, LaserSquad, Rebelstar]
- Owners and programmers of Mythos (UFO, X-COM).
- * INFO BY:
- Miguel Melo [mmelo@ea.com]
-
- o Simon Goodwin [Crash Tech Tips writer]
- Was still writing for Sinclair QL World when the final issue (July 94)
- came out. Simon Goodwin writes for Amiga magazines and Computer Shopper.
- He was also seen at the Last Sinclair and SAM show in Gloucester. Messing
- with both Speccy emulator for Amiga and hardware Speccy emulation for
- IBM PC.
- * INFO BY:
- Jenni the Satsuma [yockneyj@cs.man.ac.uk]
- Brian Gaff [briang@bgserv.demon.co.uk]
-
- o John Hollis, Nick Lambert
- John Hollis founded Hollis Research, who develop MIDI sequencers
- (including "Trackman" for AtariST).
- * INFO BY:
- Stephen K. Mulrine [robotron@moroder.demon.co.uk]
-
- o Graeme Kidd [Crash writer]
- News editor for Computer Shopper magazine. At least I think it's the same
- guy...
- * INFO BY:
- Damien Burke [D.M.Burke-CSSE94@cs.bham.ac.uk until June 14th 1996]
-
- o Tony Mack [Gyroscope, Paper Boy, Super Sprint, Championship Sprint]
- Now writes games for the Sega Saturn (currently converting Cybersled to
- it).
- * INFO BY:
- Mark Gordon [100306.3045@compuserve.com]
-
- o Teresa Maughan [Your Sinclair editor - aka T'zer]
- Now writing for The Mac magazine, either that or someone with the
- same name is...
- * INFO BY:
- Oops, I've lost the posting. Gimme a shout if you were the one who did
- that Alta Vista search!
-
- o Fergus McNeill [Delta 4 - Bored Of The Rings, The Boggit, etc.]
- Head of design at Sales Curve Interactive (SCi), ex-Storm. SCi have just
- released a Point and Click called "Kingdom 'O Magic" which was designed
- by Fergus. Fergus has kindly agreed to free distribution of the Delta 4
- games, as long as it is *free* - no money may change hands. He cannot
- speak for any of his games with the Abstract Concepts logo, as they are
- owned by Activision.
- * INFO BY:
- Chris Wild [chrisw@sci.co.uk]
-
- o Neil Pawson [Mighty Magus] - neil@smallworld.co.uk
- Working for Smallworld Cambridge on GIS.
- * INFO BY:
- Stephen Smith [stevo@jonlan.demon.co.uk]
-
- o Dominic Prior [part of Gyron team] - dominic@smallworld.co.uk
- Working for Smallworld Cambridge on GIS.
- * INFO BY:
- Stephen Smith [stevo@jonlan.demon.co.uk]
-
- o Jon Ritman [co-author of Batman, Head over Heels, Matchday, etc.]
- Jon Ritman is reading/posting to comp.sys.sinclair and is the director of
- a new(ish) videogame company in the UK called Cranberry Source. Contrary
- to previous assertions in this FAQ, he definitely *didn't* do a Computer
- Science degree at UCL and he and Bernie Drummond wrote only one Gameboy
- game (Monster Max). Jon doesn't care if you copy his old games, but then
- as he says - he doesn't own the rights to them.
- * INFO BY:
- Vartan Narinian [vsa@ic.ak.uk]
- Peter Watsons [pwats@cyberspace.com]
- Jon Ritman [jritman@cix.compulink.co.uk]
-
- o Mike Singleton [Lords Of Midnight, Doomdark's Revenge etc.]
- Mike Singleton is alive and well and writing Lords Of Midnight games.
- for the IBM PC. Chris Wild did PC versions of Lords of Midnight and
- Doomdark's Revenge.
- * INFO BY:
- Chris Wild [chrisw@sci.co.uk]
-
- o Matthew Smith [Styx, Manic Miner, Jet Set Willy]
- Nothing concrete on the father of the miner :(
- Previous rumours range from him working in some computer store in the
- south of England to the latest; a motorbike mechanic called Mat living in
- a commune in the Netherlands; he mentioned to someone that he "wrote some
- video games in the 80's, got burnt out, ended up in a mental
- institution".
- * INFO BY:
- Stephen Smith [stevo@jonlan.demon.co.uk]
-
- o Phil South [aka Snouty; Your Sinclair writer]
- Writes for Computer Shopper magazine.
- * INFO BY:
- Damien Burke [D.M.Burke-CSSE94@cs.bham.ac.uk until June 14th 1996]
-
- o Kevin Thoms [Football Manager]
- Currently working as a Windows consultant/programmer.
- * INFO BY:
- Miguel Melo [mmelo@ea.com]
-
- o Sandy White (Ant Attack, Zombie Zombie)
- Currently working on a super new top secret engine while laying about on
- a beach in Greece.
- * INFO BY:
- Jon Ritman [jritman@cix.compulink.co.uk
-
- 9. Spectrum people reading comp.sys.sinclair
- o Simon Cooke [csl@fs2.ee.umist.ac.uk] was Your Sinclair's technical
- editor, and has put up extracts from YS issues at his web site at
- http://jumper.mcc.ac.uk/~simonc/ys.
- o Alan Fothergill [afotherg@oracle.com] from Imagine.
- o Stuart Fotheringham [stuarto@stoo.demon.co.uk] did work on those
- beautiful graphics in Odin games Nodes of Yesod, Robin O' the Wood, Arc
- of Yesod, and Heartland.
- o Paul Holmes [paulh@unlimited.com] from Elite wrote and co-wrote Robotron
- 2084, Bomb Jack I & II, Wild West Hero, Dustman, designed and co-designed
- Grand National, Frank Bruno's Boxing and others.
- o Mark Haigh-Hutchinson [mhh@lucasarts.com] of Vortex pops up occasionally,
- mostly to mention updates to the Vortex Emulation Package, which is a
- collection of Vortex games (TLL, Highway Encounter etc.) and instructions
- for them, and is freely distributable.
- o John Ritman [jritman@cix.compulink.co.uk] of Head Over Heels fame. Also
- co-wrote Batman, Matchday and other excellent games with Bernie Drummond.
- o Duncan Sinclair [sinclair@dis.strath.ac.uk] worked on an unfinished
- Tapper with Paul Holmes.
-
-
- ******************************************************************************
- ******************************** FILE FORMATS ********************************
- ******************************************************************************
-
- This section will be expanded as I get the time to do so; if you are desperate
- for information about a particular format right now, a good source of
- information is the source to SPConv v1.10; available from (among other
- locations): ftp://ftp.nvg.unit.no/pub/sinclair/utils/generic/spcnv110.zip
-
- ============================== Snapshot formats ==============================
-
- Those handled by SPConv v1.10 are marked with an asterisk (*):
-
- .ACH or .archimedes *
- Snapshots used by !Speccy. .ACH is the extension SPConv uses for these
- files; so that filename-challenged operating systems like DOS can
- handle such files for conversion purposes.
- .PRG * Program file used by Specem.
- .RAW * Raw memory dump from a real Spectrum; just the 48Kb of RAM and a CODE
- header on the front.
- .SEM Snapshots used by ZX Spectrum-Emulator, the German PC-based emulator.
- .SIT * Situation file used by Sinclair v2.00.
- .SLT Super level loader snapshot. Used by x128 and WSpecEm at time of
- writing. Basically a v2/3 Z80 snapshot with level data appended.
- .SNA or .snap or .snapshot *
- Mirage Microdrive snapshot format, used by most emulators.
- .SNA 128Kb version of SNA. Distinguished by file size of 131103 bytes
- instead of 49179 bytes for 48Kb version.
- .SNX * Extended version of SNA, used by Speccy on the Atari ST.
- .SP * Snapshots used by SPECTRUM.
- .SP * Snapshots used by VGASPEC.
- .SP Snapshots used by ZX Spectrum (Mac emulator).
- .Z80 * Snapshots used by Z80 and several other emulators. Three versions in
- existence, the latest of which (v3) is not supported by all these
- emulators. Very flexible; support for SamRam, 128K snapshots, etc.
- .ZX * Snapshots used by KGB.
-
- For the purposes of these descriptions, the following definitions apply:
-
- byte = byte-sized variable; word = 2 bytes, long = 4 bytes. All stored in
- little-endian (Intel) format unless otherwise stated.
-
- a) .SLT (super level loader trap used by x128 v0.4+, WSpecEm etc.)
-
- The level loader trap has one annoying disadvantage; lots of extra files
- lying around for each game. The super level loader was thought up (by me,
- natch :-)) to replace this multi-file format with a single snapshot file
- containing all the level data files. It has been designed in co-operation
- with James McKay (x128), Gerton Lunter (Z80), Rui Ribeiro (WSpecEm) and
- Darren Salt (helping with Z80Em), so is well-supported already. The
- format was designed with future expansion in mind, as you will see.
-
- Size Description
- ------------------------------------------------------------------------
- varies bytes Z80 snapshot (version 2+)
- 3 bytes Three null bytes (compatibility; see below)
- 3 bytes "SLT" (signature)
- ---- the following blocks make up a table to access the data files -----
- 2 word data type (0 = end of table, 1 = level data)
- 2 word data identifier (for type 1 this is level number)
- 4 long data length
- 2 word data type (0 = end of table, 1 = level data)
- 2 word data identifier (for type 1 this is level number)
- 4 long data length
- ... and so on
- ---- the following blocks are the data files themselves ----------------
- varies bytes data
- varies bytes data
- ... and so on
- ------------------------------------------------------------------------
-
- The three null bytes after the end of the snapshot are for compatibility
- reasons; older versions of Z80 would crash if the extra data was just
- appended to the snapshot. With these three null bytes, they just complain
- about an error in the snapshot file instead. This, of course, presumes you
- have renamed the .SLT file to .Z80 and attempted to load it into an older
- emulator!
-
- After the "SLT" signature, there is a table of data types and sizes. Only
- data types 0 (end of table) and 1 (level data) are supported at the moment,
- so if other values are encountered an emulator should ignore that data
- block.
-
- To read a level data file using .SLT, the emulator should find the correct
- entry in the table (type = 1, identifier matching the A register when the
- ED/FB instruction was encountered), get its size from the table and
- calculate its position from the total of sizes of data blocks previous to
- the required one, added to the position of the end of the table. E.g., to
- load level 2 from a .SLT snapshot with this table:
-
- Position Size Value Description
- ------------------------------------------------------------------------
- 40000 2 1 data type = level data
- 40002 2 1 data identifier = level 1
- 40004 4 256 data length = 256 bytes
- 40008 2 1 data type = level data
- 40010 2 2 data identifier = level 2
- 40012 4 128 data length = 128 bytes
- 40016 2 0 data type = end of table
- 40018 2 * data identifier = unused (may as well be zero)
- 40020 4 * data length = unused (may as well be zero)
- 40024 256 * data block for level 1
- 40280 128 * data block for level 2
- ------------------------------------------------------------------------
- (* = could be anything)
-
- So, the size of level 2 is 128 bytes, and its located at the end of the
- table (40024) + the length of all previous blocks (just 256 here) = 40280.
-
- Level data is packed in the same way as Z80 snapshot memory banks are.
-
- The trainspotter award seekers of you may wonder why a whole word is used
- for the data identifier; after all, this is the level number and is held in
- the A register, so could be just a byte. For level data, correct. But
- future expansion is better served by a word. For the same reasons, the data
- length is held as a long word instead of just a word; level data will never
- exceed 64Kb (indeed, could not even be as much as 48Kb), but future data
- types may do so. One example; embedding a scan of a game's inlay card in
- the file is possible, and that file could exceed 64Kb easily.
-
- See http://www.cs.bham.ac.uk/~dmb/speccy/edfb.html for my own proposals
- for future data types for inclusion in .SLT snapshots.
-
- b) .SNA, .snap or .snapshot (Mirage Microdrive format used by many emulators)
-
- This format is the most well-supported of all snapshot formats (though Z80
- is close on its heels) but has a drawback:
-
- As the program counter is pushed onto the stack so that a RETN
- instruction can restart the program, 2 bytes of memory are overwritten.
- This will usually not matter; the game (or whatever) will have stack
- space that can be used for this. However, if this space is all in use
- when the snap is made, memory below the stack space will be corrupted.
- According to Rui Ribeiro, the effects of this can sometimes be avoided
- by replacing the corrupted bytes with zeros; e.g. take the PC from the,
- stack pointer, replace that word with 0000 and then increment SP. This
- worked with snapshots of Batman, Bounder and others which had been
- saved at critical points. Theoretically, this problem could cause a
- complete crash on a real Spectrum if the stack pointer happened to be
- at address 16384; the push would try and write to the ROM. How different
- emulators handle this is not something I know...
-
- When the registers have been loaded, a RETN command is required to start
- the program. IFF2 is short for interrupt flip-flop 2, and for all practical
- purposes is the interrupt-enabled flag. Set means enabled.
-
- Offset Size Description
- ------------------------------------------------------------------------
- 0 1 byte I
- 1 8 word HL',DE',BC',AF'
- 9 10 word HL,DE,BC,IY,IX
- 19 1 byte Interrupt (bit 2 contains IFF2, 1=EI/0=DI)
- 20 1 byte R
- 21 4 words AF,SP
- 25 1 byte IntMode (0=IM0/1=IM1/2=IM2)
- 26 1 byte BorderColor (0..7, not used by Spectrum 1.7)
- 27 49152 bytes RAM dump 16384..65535
- ------------------------------------------------------------------------
- Total: 49179 bytes
-
- c) .SNA (128Kb version) (SP_EMU)
-
- This is simply the SNA format extended to include the extra memory banks
- of the 128K/+2 machines, and fixes the problem with the PC being pushed
- onto the stack - now it is located in an extra variable in the file (and
- is not pushed onto the stack at all) The first 49179 bytes of the
- snapshot are otherwise exactly as described above, so the full
- description is:
-
- Offset Size Description
- ------------------------------------------------------------------------
- 0 27 bytes SNA header (see above)
- 27 16Kb bytes RAM bank 5 \
- 16411 16Kb bytes RAM bank 2 } - as standard 48Kb SNA file
- 32795 16Kb bytes RAM bank n / (currently paged bank)
- 49179 2 word PC
- 49181 1 byte port 7FFD setting
- 49182 1 byte (unknown - padding for above byte?)
- 49183 16Kb bytes remaining RAM banks in ascending order
- ...
- ------------------------------------------------------------------------
- Total: 131103 or 147487 bytes
-
- The third RAM bank saved is always the one currently paged, even if this
- is page 5 or 2 - in this case, the bank is actually included twice. The
- remaining RAM banks are saved in ascending order - e.g. if RAM bank 4 is
- paged in, the snapshot is made up of banks 5, 2 and 4 to start with, and
- banks 0, 1, 3, 6 and 7 afterwards. If RAM bank 5 is paged in, the
- snapshot is made up of banks 5, 2 and 5 again, followed by banks 0, 1, 3,
- 4, 6 and 7.
-
- d) .SP file format used in "ZX Spectrum", the ZX Spectrum emulator for
- Macintosh from Lorenzo Jose Ayuda Serrano.
-
- Offset Size Description
- ------------------------------------------------------------------------
- 0 2 byte "SP" (signature)
- 2 2 word Program length in bytes (49152 bytes)
- 4 2 word Program location (16384)
- 6 8 word BC,DE,HL,AF
- 14 4 word IX,IY
- 18 8 word BC',DE',HL',AF'
- 26 2 byte R,I
- 28 4 word SP,PC
- 32 2 word 0 (reserved for future use)
- 34 1 byte Border color
- 35 1 byte 0 (reserved for future use)
- 36 2 word Status word
- ------------------------------------------------------------------------
-
- Status word:
- Bit Description
- ------------------------------------------------------------------------
- 15-8 Reserved for future use
- 7-6 Reserved for internal use (0)
- 5 Flash: 0=INK/1=PAPER
- 4 Interrupt pending for execution
- 3 Reserved for future use
- 2 IFF2 (internal use)
- 1 Interrupt Mode: 0=IM1/1=IM2
- 0 IFF1: 0=DI/1=EI
-
- e) .ZX (KGB v.1.2-1.3) [Contributed by Troels Norgaard]
- All values stored in big-endian format; on 680x0 the most significant
- byte goes first.
-
- Offset Size Description
- ------------------------------------------------------------------------
- 0 49284 bytes RAM dump 16252..65535
- 49284 132 bytes unused, make 0
- 49416 10 word 10,10,4,1,1 (different settings)
- 49426 1 byte InterruptStatus (0=DI/1=EI)
- 49427 2 byte 0,3
- 49429 1 byte ColorMode (0=BW/1=Color)
- 49430 4 long 0
- 49434 16 word BC,BC',DE,DE',HL,HL',IX,IY
- 49450 2 byte I,R
- 49452 2 word 0
- 49454 8 byte 0,A',0,A,0,F',0,F
- 49462 8 word 0,PC,0,SP
- 49470 2 word SoundMode (0=Simple/1=Pitch/2=RomOnly)
- 49472 2 word HaltMode (0=NoHalt/1=Halt)
- 49474 2 word IntMode (-1=IM0/0=IM1/1=IM2)
- 49476 10 bytes unused, make 0
- ------------------------------------------------------------------------
- Total: 49486 bytes
-
- f) .Z80 (Z80) [from Z80 documentation]
-
- The old .Z80 snapshot format (for version 1.45 and below) looks like this:
-
- Offset Length Description
- ---------------------------
- 0 1 A register
- 1 1 F register
- 2 2 BC register pair (LSB, i.e. C, first)
- 4 2 HL register pair
- 6 2 Program counter
- 8 2 Stack pointer
- 10 1 Interrupt register
- 11 1 Refresh register (Bit 7 is not significant!)
- 12 1 Bit 0 : Bit 7 of the R-register
- Bit 1-3: Border colour
- Bit 4 : 1=Basic SamRom switched in
- Bit 5 : 1=Block of data is compressed
- Bit 6-7: No meaning
- 13 2 DE register pair
- 15 2 BC' register pair
- 17 2 DE' register pair
- 19 2 HL' register pair
- 21 1 A' register
- 22 1 F' register
- 23 2 IY register (Again LSB first)
- 25 2 IX register
- 27 1 Interrupt flipflop, 0=DI, otherwise EI
- 28 1 IFF2 (not particularly important...)
- 29 1 Bit 0-1: Interrupt mode (0, 1 or 2)
- Bit 2 : 1=Issue 2 emulation
- Bit 3 : 1=Double interrupt frequency
- Bit 4-5: 1=High video synchronisation
- 3=Low video synchronisation
- 0,2=Normal
- Bit 6-7: 0=Cursor/Protek/AGF joystick
- 1=Kempston joystick
- 2=Sinclair 2 Left joystick (or user
- defined, for version 3 .Z80 files)
- 3=Sinclair 2 Right joystick
-
- Because of compatibility, if byte 12 is 255, it has to be regarded as
- being 1. After this header block of 30 bytes the 48K bytes of Spectrum
- memory follows in a compressed format (if bit 5 of byte 12 is one).
- The compression method is very simple: it replaces repetitions of at
- least five equal bytes by a four-byte code ED ED xx yy, which stands
- for "byte yy repeated xx times". Only sequences of length at least 5
- are coded. The exception is sequences consisting of ED's; if they are
- encountered, even two ED's are encoded into ED ED 02 ED. Finally,
- every byte directly following a single ED is not taken into a block,
- for example ED 6*00 is not encoded into ED ED ED 06 00 but into ED 00
- ED ED 05 00. The block is terminated by an end marker, 00 ED ED 00.
-
- That's the format of .Z80 files as used by versions up to 1.45.
- Starting from version 2.0, a different format is used, since from then
- on also 128K snapshots had to be supported. This new format is used
- for all snapshots, either 48K or 128K.
-
- Version 2.01 and 3.0 .Z80 files start with the same 30 byte header as
- old .Z80 files used. Bit 4 and 5 of the flag byte have no meaning
- anymore, and the program counter (byte 6 and 7) are zero to signal a
- version 2.01 or version 3.0 snapshot file.
-
- After the first 30 bytes, the additional header follows:
-
- Offset Length Description
- ---------------------------
- * 30 2 Length of additional header block (see below)
- * 32 2 Program counter
- * 34 1 Hardware mode (see below)
- * 35 1 If in SamRam mode, bitwise state of 74ls259.
- For example, bit 6=1 after an OUT 31,13 (=2*6+1)
- If in 128 mode, contains last OUT to 7ffd
- * 36 1 Contains 0FF if Interface I rom paged
- * 37 1 Bit 0: 1 if R register emulation on
- Bit 1: 1 if LDIR emulation on
- * 38 1 Last OUT to fffd (soundchip register number)
- * 39 16 Contents of the sound chip registers
- 55 2 Low T state counter
- 57 1 Hi T state counter
- 58 1 Flag byte used by Spectator (QL spec. emulator)
- Ignored by Z80 when loading, zero when saving
- 59 1 0FF if MGT Rom paged
- 60 1 0FF if Multiface Rom paged. Should always be 0.
- 61 1 0FF if 0-8191 is RAM
- 62 1 0FF if 8192-16383 is RAM
- 63 10 5x keyboard mappings for user defined joystick
- 73 10 5x ascii word: keys corresponding to mappings above
- 83 1 MGT type: 0=Disciple+Epson,1=Discipls+HP,16=Plus D
- 84 1 Disciple inhibit button status: 0=out, 0ff=in
- 85 1 Disciple inhibit flag: 0=rom pageable, 0ff=not
-
- The value of the word at position 30 is 23 for version 2.01 files, and
- 54 for version 3.0 files. The starred fields are the ones that
- constitute the version 2.01 header, and their interpretation has
- remained unchanged except for byte 34:
-
- Value: Meaning in v2.01 Meaning in v3.0
- -------------------------------------------------------
- 0 48k 48k
- 1 48k + If.1 48k + If.1
- 2 SamRam 48k + M.G.T.
- 3 128k SamRam
- 4 128k + If.1 128k
- 5 - 128k + If.1
- 6 - 128k + M.G.T.
-
- The hi T state counter counts up modulo 4. Just after the ULA
- generates its once-in-every-20-ms interrupt, it is 3, and is increased
- by one every 5 emulated milliseconds. In these 1/200s intervals, the
- low T state counter counts down from 17472 to 0, which make a total of
- 69888 T states per frame.
-
- The 5 ascii words (high byte always 0) at 73-82 are the keys
- corresponding to the joystick directions left, right, down (!), up (!),
- fire respectively. Shift, Symbol Shift, Enter and Space are denoted by
- [,],/,\ respectively. The ascii values are used only to display the
- joystick keys; the information in the 5 keyboard mapping words
- determine which key is actually pressed (and should correspond to the
- ascii values). The low byte is in the range 0-7 and determines the
- keyboard row. The high byte is a mask byte and determines the column.
- Enter for example is stored as 0x0106 (row 6 and column 1) and 'g' as
- 0x1001 (row 1 and column 4).
-
- Byte 60 must be zero, because the contents of the Multiface RAM is not
- saved in the snapshot file. If the Multiface was paged when the
- snapshot was saved, the emulated program will most probably crash when
- loaded back.
-
- Bytes 61 and 62 are a function of the other flags, such as byte 34, 59,
- 60 and 83.
-
- Hereafter a number of memory blocks follow, each containing the
- compressed data of a 16K block. The compression is according to the
- old scheme, except for the end-marker, which is now absent. The
- structure of a memory block is:
-
- Byte Length Description
- ---------------------------
- 0 2 Length of data (without this 3-byte header)
- 2 1 Page number of block
- 3 [0] Compressed data
-
- The pages are numbered, depending on the hardware mode, in the
- following way:
-
- Page In '48 mode In '128 mode In SamRam mode
- ------------------------------------------------------
- 0 48K rom rom (basic) 48K rom
- 1 Interface I, Disciple or Plus D rom, according to setting
- 2 - rom (reset) samram rom (basic)
- 3 - page 0 samram rom (monitor,..)
- 4 8000-bfff page 1 Normal 8000-bfff
- 5 c000-ffff page 2 Normal c000-ffff
- 6 - page 3 Shadow 8000-bfff
- 7 - page 4 Shadow c000-ffff
- 8 4000-7fff page 5 4000-7fff
- 9 - page 6 -
- 10 - page 7 -
- 11 Multiface rom Multiface rom -
-
- In 48K mode, pages 4,5 and 8 are saved. In SamRam mode, pages 4 to 8
- are saved. In '128 mode, all pages from 3 to 10 are saved. This
- version saves the pages in numerical order. There is no end marker.
-
- ================================ Tape formats: ===============================
-
- .BLK Tape format used by Sinclair v2.00; seems to be identical to Z80's
- .TAP files.
- .SPC Tape format used by SP, the Polish emulator.
- .TAP Tape format used by Z80; supports headerless files and not much else.
- .TAP Tape format used by Warajevo - supports lots of features; turbo-load,
- headerless files, etc.
- .VOC Straight sound sample of a tape; used by several emulators.
- .ZXS Very flexible tape format, not actually used by any emulators - used
- to store real Spectrum tapes in a digital format. All come from the
- ZX Spectrum Software Museum (http://relcom.eu.net/zx/).
-
- a) .TAP and .BLK (Z80, Sinclair, several others) [from Z80 documentation]
-
- The .TAP files contain blocks of tape-saved data. All blocks start with two
- bytes specifying how many bytes will follow (not counting the two length
- bytes). Then raw tape data follows, including the flag and checksum bytes.
- The checksum is the bitwise XOR of all bytes including the flag byte. For
- example, when you execute the line SAVE "ROM" CODE 0,2 this will result:
-
- |------ Spectrum-generated data -------| |---------|
-
- 13 00 00 03 52 4f 4d 7x20 02 00 00 00 00 80 f1 04 00 ff f3 af a3
-
- ^^^^^...... first block is 19 bytes (17 bytes+flag+checksum)
- ^^... flag byte (A reg, 00 for headers, ff for data blocks)
- ^^ first byte of header, indicating a code block
-
- file name ..^^^^^^^^^^^^^
- header info ..............^^^^^^^^^^^^^^^^^
- checksum of header .........................^^
- length of second block ........................^^^^^
- flag byte ............................................^^
- first two bytes of rom .................................^^^^^
- checksum (checkbittoggle would be a better name!).............^^
-
- Note that it is possible to join .TAP files by simply stringing them together,
- for example COPY /B FILE1.TAP + FILE2.TAP ALL.TAP
-
- For completeness, I'll include the structure of a tape header. A header always
- consists of 17 bytes:
-
- Byte Length Description
- ---------------------------
- 0 1 Type (0,1,2 or 3)
- 1 10 Filename (padded with blanks)
- 11 2 Length of data block
- 13 2 Parameter 1
- 15 2 Parameter 2
-
- The type is 0,1,2 or 3 for a Program, Number array, Character array or Code
- file. A SCREEN$ file is regarded as a Code file with start address 16384 and
- length 6912 decimal. If the file is a Program file, parameter 1 holds the
- autostart line number (or a number >=32768 if no LINE parameter was given) and
- parameter 2 holds the start of the variable area relative to the start of the
- program. If it's a Code file, parameter 1 holds the start of the code block
- when saved, and parameter 2 holds 32768. For data files finally, the byte at
- position 14 decimal holds the variable name.
-
- =============================== Other formats: ===============================
-
- .DAT Data files used by level-loader versions of a game (Z80Em does not use
- a .DAT extension at all; instead files are just numbered, e.g. "1"
- instead of "GAME1.DAT").
- .MDR Microdrive cartridge file as used by Spectator, Carlo Delhez' Speccy
- emulator for the QL, and other emulators - xzx and Z80.
- .OUT OUT logs from Z80.
- .SCR Screendumps from Z80 (actually, may be any extension). This is just
- the 6912 bytes of the Spectrum's screen; 6144 bytes of pixel data (in
- that horrendous layout we all know and love) followed by 768 bytes of
- attribute data.
-
- a) .MDR (Spectator, xzx, Z80) [from Z80 documentation]
-
- The following information is adapted from Carlo's documentation. It can also
- be found in the 'Spectrum Microdrive Book', by Ian Logan (co-writer of the
- excellent 'Complete Spectrum ROM Disassembly').
-
- A cartridge file contains 254 'sectors' of 543 bytes each, and a final byte
- flag which is non-zero is the cartridge is write protected, so the total
- length is 137923 bytes. On the cartridge tape, after a GAP of some time the
- Interface I writes 10 zeros and 2 FF bytes (the preamble), and then a
- fifteen byte header-block-with-checksum. After another GAP, it writes a
- preamble again, with a 15-byte record-descriptor-with-checksum (which has a
- structure very much like the header block), immediately followed by the data
- block of 512 bytes, and a final checksum of those 512 bytes. The preamble is
- used by the Interface I hardware to synchronise, and is not explicitly used by
- the software. The preamble is not saved to the microdrive file:
-
- Offset Length Name Contents
- ------------------------------
- 0 1 HDFLAG Value 1, to indicate header block
- 1 1 HDNUMB sector number (values 254 down to 1)
- 2 2 not used
- 4 10 HDNAME microdrive cartridge name (blank padded)
- 14 1 HDCHK header checksum (of first 14 bytes)
-
- 15 1 RECFLG - bit 0: always 0 to indicate record block
- - bit 1: set for the EOF block
- - bit 2: reset for a PRINT file
- - bits 3-7: not used (value 0)
- 16 1 RECNUM data block sequence number (value starts at 0)
- 17 2 RECLEN data block length (<=512, LSB first)
- 19 10 RECNAM filename (blank padded)
- 29 1 DESCHK record descriptor checksum (of previous 14 bytes)
- 30 512 data block
- 542 1 DCHK data block checksum (of all 512 bytes of data
- block, even when not all bytes are used)
- ---------
- 254 times
-
- (Actually, this information is 'transparent' to the emulator. All it does is
- store 2 times 254 blocks in the .MDR file as it is OUTed, alternatingly of
- length 15 and 528 bytes. The emulator does check checksums, see below; the
- other fields are dealt with by the emulated Interface I software.)
-
- A used record block is either an EOF block (bit 1 of RECFLG is 1) or contains
- 512 bytes of data (RECLEN=512, i.e. bit 1 of MSB is 1). An empty record block
- has a zero in bit 1 of RECFLG and also RECLEN=0. An unusable block (as
- determined by the FORMAT command) is an EOF block with RECLEN=0.
-
- The three checksums are calculated by adding all the bytes together modulo
- 255; this will never produce a checksum of 255. Possibly, this is the value
- that is read by the Interface I if there's no or bad data on the tape.
-
- In normal operation, all first-fifteen-byte blocks of each header or record
- block will have the right checksum. If the checksum is not right, the block
- will be treated as a GAP. For instance, if you type OUT 239,0 on a normal
- Spectrum with interface I, the microdrive motor starts running and the
- cartridge will be erased completely in 7 seconds. CAT 1 will respond with
- 'microdrive not ready'. Try it on the emulator...
-
- b) .SCR (Z80, WSpecEm)
-
- These files are just Spectrum screen dumps, and are simply the 6912 bytes of
- pixel and attribute data found at address 16384, stored on disk in exactly the
- same way as they are stored in memory.
-
- ******************************************************************************
- *************************** TECHNICAL INFORMATION ****************************
- ******************************************************************************
-
- ================================= Z80 CPU ====================================
-
- I had hoped to add some information from several threads on the newsgroup
- (Z80 emulation related facts, BIT and the flags and Z80 interrupts) but just
- never got the time, and probably won't have the opportunity to do so now for
- several months - if the mean time someone wants to compile the relevant
- information together so I can just paste it in, I'd be most grateful ;)
-
- This section is based on the text contributed by Gerton Lunter, author of the
- "Z80" Spectrum emulator. Marat Fayzullin made some changes which didn't change
- the content and Ian Collier and several others have contributed some extra
- information (some of which conflicts with Gertons - further contributions
- welcome!).
-
- Most Z80 opcodes are one byte long, not counting a possible byte or word
- operand. The four opcodes CB, DD, ED and FD are shift opcodes: they change the
- meaning of the opcode following them.
-
- a) CB opcodes:
- There are 248 different CB opcodes.
- The block CB 30 to CB 37 is missing from the official list. These
- instructions, usually denoted by the mnemonic SLL, Shift Left Logical,
- shift left the operand and make bit 0 always one. These instructions are
- quite commonly used. For example, Bounder and Enduro Racer use them.
-
- b) DD and FD opcodes:
- The DD and FD opcodes precede instructions using the IX and IY
- registers. If you look at the instructions carefully, you see how they
- work:
-
- 2A nn LD HL,(nn)
- DD 2A nn LD IX,(nn)
- 7E LD A,(HL)
- DD 7E d LD A,(IX+d)
-
- A DD opcode simply changes the meaning of HL in the next instruction. If a
- memory byte is addressed indirectly via HL, as in the second example, a
- displacement byte is added. Otherwise the instruction simply acts on IX
- instead of HL (A notational awkwardness, that will only bother assembler
- and disassembler writers: JP (HL) is not indirect; it should have been
- denoted by JP HL). If a DD opcode precedes an instruction that doesn't use
- the HL register pair at all, the instruction is executed as usual.
- However, if the instruction uses the H or L register, it will now use the
- high or low halves of the IX register! Example:
-
- 44 LD B,H
- FD 44 LD B,IYh
-
- These types of 'undocumented' instructions are used in very many programs. By
- the way, many DD or FD opcodes after each other will effectively be NOPs,
- doing nothing except repeatedly setting the flag "treat HL as IX" (or IY) and
- taking up 4 T states (But try to let MONS disassemble such a block.).
-
- From Joseph S. Myers [jsm28@hermes.cam.ac.uk]:
- [DD and FD have no effect on ED instructions, or on EX DE,HL. If an
- instruction references both (HL), and one of H and L, then (HL) becomes
- (IX+d) or (IY+d), but H or L stays as it is. For example, DD6601 is
- LD H,(IX+01).
-
- DDCB and FDCB prefix instructions in which the next byte is a displacement
- byte, and the byte after that is the instruction byte. If the CB instruction
- references (HL), the effect is as expected; otherwise, the instruction seems
- to act on (IX+d) or (IY+d), and, if the instruction is such as to change the
- value acted on (any instruction other than BIT), the new value is loaded into
- the register the CB instruction would act on. Thus:
-
- CB07 is RLC A; DDCB0107 is effectively RLC (IX+01) followed by LD A,(IX+01).]
-
- c) ED opcodes:
- There are a number of unofficial ED instructions, but none of them are very
- useful. The ED opcodes in the range 00-3F and 80-FF (except for the block
- instructions of course) do nothing at all but taking up 8 T states and
- incrementing the R register by 2. Most of the unlisted opcodes in the range
- 40-7F do have an effect, however. The complete list:
-
- (* = not official, i.e. not listed in Zilog documentation)
- (++ = documented in Spectrum manual)
-
- ED40 IN B,(C) ED60 IN H,(C)
- ED41 OUT (C),B ED61 OUT (C),H
- ED42 SBC HL,BC ED62 SBC HL,HL
- ED43 LD (nn),BC ED63 * LD (nn),HL ++
- ED44 NEG ED64 * NEG
- ED45 RETN ED65 * RET
- ED46 IM 0 ED66 * IM 0
- ED47 LD I,A ED67 RRD
- ED48 IN C,(C) ED68 IN L,(C)
- ED49 OUT (C),C ED69 OUT (C),L
- ED4A ADC HL,BC ED6A ADC HL,HL
- ED4B LD BC,(nn) ED6B * LD HL,(nn) ++
- ED4C * NEG ED6C * NEG
- ED4D RETI ED6D * RET
- ED4E * IM 0/1 ED6E * IM 0/1
- ED4F LD R,A ED6F RLD
- ED50 IN D,(C) ED70 * IN (C) ++ as IN F,(C)
- ED51 OUT (C),D ED71 * OUT (C),0
- ED52 SBC HL,DE ED72 SBC HL,SP
- ED53 LD (nn),DE ED73 LD (nn),SP
- ED54 * NEG ED74 * NEG
- ED55 * RET ED75 * RET
- ED56 IM 1 ED76 * IM 1
- ED57 LD A,I ED77 * NOP
- ED58 IN E,(C) ED78 IN A,(C)
- ED59 OUT (C),E ED79 OUT (C),A
- ED5A ADC HL,DE ED7A ADC HL,SP
- ED5B LD DE,(nn) ED7B LD SP,(nn)
- ED5C * NEG ED7C * NEG
- ED5D * RET ED7D * RET
- ED5E IM 2 ED7E * IM 2
- ED5F LD A,R ED7F * NOP
-
- The ED70 instruction reads from port (C), just like the other instructions,
- but throws away the result. It does change the flags in the same way as the
- other IN instructions, however. The ED70 instruction *is* documented in at
- least two other publications beside the original Spectrum manual - one of
- which is an SGS Z80 data booklet.
-
- The ED71 instruction OUTs a byte zero to port (C). In fact the instructions
- INI and OUTI do almost exactly the same as the proposed action for ED70 and
- ED71 as well as incrementing the registers
-
- The IM 0/1 instruction puts the processor in either IM 0 or 1 (undetermined
- at this time). The SGS booklet says that there are two flip-flops which
- determine the interrupt mode and are set by the IM instructions. The possible
- values are:
-
- 00 IM 0
- 01 not used
- 10 IM 1
- 11 IM 2
-
- ...so it is entirely possible that the IM 0/1 instruction sets these registers
- to 01. What the Z80 does when this happens is anyone's guess.
-
-
- d) About the R register:
- This is not really an undocumented feature, although I have never seen any
- thorough description of it anywhere. The R register is a counter that is
- updated every instruction, where DD, FD, ED and CB are to be regarded as
- separate instructions. So shifted instruction will increase R by two. There's
- an interesting exception: doubly-shifted opcodes, the DDCB and FDCB ones,
- increase R by two too. LDI increases R by two, LDIR increases it by 2 times
- BC, as does LDDR etcetera. The sequence LD R,A/LD A,R increases A by two,
- except for the highest bit: this bit of the R register is never changed. This
- is because in the old days everyone used 16 Kbit chips. Inside the chip the
- bits where grouped in a 128x128 matrix, needing a 7 bit refresh cycle.
- Therefore ZiLOG decided to count only the lowest 7 bits. You can easily check
- that the R register is really crucial to memory refresh. Assemble this program:
-
- ORG 32768
- DI
- LD B,0
- L1: XOR A
- LD R,A
- DEC HL
- LD A,H
- OR L
- JR NZ,L1
- DJNZ L1
- EI
- RET
-
- It will take about three minutes to run. Look at the upper 32K of memory,
- for instance the UDG graphics. It will have faded. Only the first few bytes
- of each 256 byte block will still contain zeros, because they were refreshed
- during the execution of the loop. The ULA took care of the refreshing of the
- lower 16K (This example won't work on the emulator, of course!).
-
- e) Undocumented flags:
- This undocumented "feature" of Z80 has its effect on programs like Sabre
- Wulf, Ghosts'n Goblins and Speedlock. Bits 3 and 5 of the F register are not
- used. They can contain information, as you can readily figure out by PUSHing
- AF onto the stack and then POPping some it into another pair of registers.
- Furthermore, sometimes their values change. I found the following empirical
- rule:
-
- The values of bits 7, 5 and 3 follow the values of the corresponding
- bits of the last 8 bit result of an instruction that changed the usual
- flags.
-
- For instance, after an ADD A,B those bits will be identical to the bits of
- the A register (Bit 7 of F is the sign flag, and fits the rule exactly). An
- exception is the CP x instruction (x=register, (HL) or direct argument). In
- this case the bits are copied from the argument.
-
- If the instruction is one that operates on a 16 bit word, the 8 bits of the
- rule are the highest 8 bits of the 16 bit result - that was to be expected
- since the S flag is extracted from bit 15.
-
- Ghosts'n Goblins use the undocumented flag due to a programming error. The
- rhino in Sabre Wulf walks backward or keeps running in little circles in a
- corner, if the (in this case undocumented) behaviour of the sign flag in the
- BIT instruction isn't right. I quote:
-
- AD86 DD CB 06 7E BIT 7,(IX+6)
- AD8A F2 8F AD JP P,#AD8F
-
- An amazing piece of code! Speedlock does so many weird things that all must
- be exactly right for it to run. Finally, the '128 ROM uses the AF register to
- hold the return address of a subroutine for a while.
-
- f) Interrupt flip-flops IFF1 and IFF2:
- There seems to be a little confusion about these. These flip flops are
- simultaneously set or reset by the EI and DI instructions. IFF1 determines
- whether interrupts are allowed, but its value cannot be read. The value of
- IFF2 is copied to the P/V flag by LD A,I and LD A,R. When an NMI occurs, IFF1
- is reset, thereby disallowing further (maskable) interrupts, but IFF2 is left
- unchanged. This enables the NMI service routine to check whether the
- interrupted program had enabled or disabled maskable interrupts. So, Spectrum
- snapshot software can only read IFF2, but most emulators will emulate both,
- and then the one that matters most is IFF1.
-
- ================================= HARDWARE ===================================
-
- At the hardware level, the Spectrum is a very simple machine. There's the
- 16K ROM which occupies the lowest part of the address space, and 48K of RAM
- which fills up the rest. An ULA which reads the lowest 6912 bytes of RAM to
- display the screen, and contains the logic for just one I/O port completes the
- machine, from a software point of view at least.
- Every even I/O address will address the ULA, but to avoid problems with other
- I/O devices only port FE should be used. If this port is written to, bits have
- the following meaning:
-
- Bit 7 6 5 4 3 2 1 0
- +-------------------------------+
- | | | | E | M | Border |
- +-------------------------------+
-
- The lowest three bits specify the border color; a zero in bit 3 activates the
- MIC output, and a one in bit 4 activates the EAR output (which sounds the
- internal speaker). The real Spectrum also activates the MIC when the ear is
- written to. The upper three bits are unused.
- If port FE is read from, the highest eight address lines are important too. A
- zero on one of these lines selects a particular half-row of five keys:
-
- IN: Reads keys (bit 0 to bit 4 inclusive)
-
- #FEFE SHIFT, Z, X, C, V #EFFE 0, 9, 8, 7, 6
- #FDFE A, S, D, F, G #DFFE P, O, I, U, Y
- #FBFE Q, W, E, R, T #BFFE ENTER, L, K, J, H
- #F7FE 1, 2, 3, 4, 5 #7FFE SPACE, SYM SHFT, M, N,
-
- A zero in one of the five lowest bits means that the corresponding key is
- pressed. If more than one address line is made low, the result is the logical
- AND of all single inputs, so a zero in a bit means that at least one of the
- appropriate keys is pressed. For example, only if each of the five lowest bits
- of the result from reading from port 00FE (for instance by XOR A/IN A,(FE)) is
- one, no key is pressed. A final remark about the keyboard. It is connected in
- a matrix-like fashion, with 8 rows of 5 columns, as is obvious from the above
- remarks. Any two keys pressed simultaneously can be uniquely decoded by reading
- from the IN ports. However, if more than two keys are pressed decoding may not
- be uniquely possible. For instance, if you press Caps shift, B and V, the
- Spectrum will think also the Space key is pressed, and react by giving the
- "Break into Program" report. Without this matrix behaviour Zynaps, for
- instance, won't pause when you press 5,6,7,8 and 0 simultaneously.
-
- Bit 5 (value 64) of IN-port FE is the ear input bit. When the line is silent,
- its value is zero, except in the early Model 2 of the Spectrum, where it was
- one. When there is a signal, this bit toggles. The Spectrum loading software is
- not sensitive to the polarity of this bit (which it definitely should not be,
- not only because of this model difference, but also because you cannot be sure
- the tape recorder doesn't change the polarity of the signal recorded!). Some
- old programs rely on the fact that bit 5 is always one (for instance Spinads).
-
- Bits 6 and 7 are always one. The ULA with the lower 16K of RAM, and the
- processor with the upper 32K RAM and 16K ROM are working independently of each
- other. The data and address buses of the Z80 and the ULA are connected by
- small resistors; normally, these do effectively decouple the buses. However, if
- the Z80 wants to read of write the lower 16K, the ULA halts the processor if it
- is busy reading, and after it's finished lets the processor access lower memory
- through the resistors. A very fast, cheap and neat design indeed!
-
- From Rui Ribeiro:
- [If you read from a port that activates both the keyboard and a joystick port
- (e.g. Kempston), the joystick takes priority. Every emulator except SpecEm
- and WSpecEm get this wrong - see Street Hawk and Command4.]
-
- If you run a program in the lower 16K of RAM, or read or write in that memory,
- the processor is halted sometimes. This part of memory is therefore somewhat
- slower than the upper 32K block. This is also the reason that you cannot write
- a sound- or save-routine in lower memory; the timing won't be exact, and the
- music will sound harsh. Also, INning from port FE will halt the processor,
- because the ULA has to supply the result. Therefore, INning from port FE is a
- tiny bit slower on average than INning from other ports; whilst normally an
- IN A,(nn) instruction would take 11 T states, it takes 12.15 T states on
- average if nn=FE. See below for more exact information.
-
- If the processor reads from a non-existing IN port, for instance FF, the ULA
- won't stop, but nothing will put anything on the data bus. Therefore, you'll
- read a mixture of FF's (idle bus), and screen and ATTR data bytes (the latter
- being very scarce, by the way). This will only happen when the ULA is reading
- the screen memory, about 60% of the 1/50th second time slice in which a frame
- is generated. The other 40% the ULA is building the border or generating a
- vertical retrace. This behaviour is actually used in some programs, for
- instance, in Arkanoid.
-
- Finally, there is an interesting bug in the ULA which also has to do with this
- split bus. After each instruction fetch cycle of the processor, the processor
- puts the I-R register "pair" (not the 8 bit internal Instruction Register, but
- the Interrupt and R registers) on the address bus. The lowest 7 bits, the R
- register, are used for memory refresh. However, the ULA gets confused if I is
- in the range 64-127, because it thinks the processor wants to read from lower
- 16K ram very, very often. The ULA can't cope with this read-frequency, and
- regularly misses a screen byte. Instead of the actual byte, the byte
- previously read is used to build up the video signal. The screen seems to be
- filled with 'snow'; however, the Spectrum won't crash, and program will
- continue to run normally. There's one program I know of that uses this
- to generate a nice effect: Vectron (which has very nice music too, by the way).
-
- The processor has three interrupt modes, selected by the instructions IM 0,
- IM 1 and IM 2. In mode 1, the processor simply executes an RST #38 instruction
- if an interrupt is requested. This is the mode the Spectrum is normally in.
-
- The other mode that is commonly used is IM 2. If an interrupt is requested,
- egister (as
- the high byte) with whatever the interrupting device places on the data bus.
- The subroutine at this address is then called. Rodnay Zaks in his book
- "Programming the Z80" states that only even bytes are allowed as low index
- byte, but that isn't true. The normal Spectrum contains no hardware to place
- a byte on the bus, and the bus will therefore always read FF (because the ULA
- also doesn't read the screen if it generates an interrupt), so the resulting
- index address is 256*I+255. However, some not-so-neat hardware devices put
- things on the data bus when they shouldn't, so later programs didn't assume
- the low index byte was FF. These programs contain a 257 byte table of equal
- bytes starting at 256*I, and the interrupt routine is placed at an address
- that is a multiple of 257. A useful but not so much used trick is to make the
- table contain FF's (or use the ROM for this) and put a byte 18 hex, the opcode
- for JR, at FFFF. The first byte of the ROM is a DI, F3 hex, so the JR will jump
- to FFF4, where a long JP to the actual interrupt routine is put.
-
- In interrupt mode 0, the processor executes the instruction that the
- interrupting device places on the data bus. On a standard Spectrum this will be
- the byte FF, coincidentally (...) the opcode for RST #38. But for the same
- reasons as above, this is not really reliable.
-
- The 50 Hz interrupt is synchronized with the video signal generation by the
- ULA; both the interrupt and the video signal are generated by it. Many programs
- use the interrupt to synchronize with the frame cycle. Some use it to generate
- fantastic effects, such as full-screen characters, full-screen horizon
- (Aquaplane) or pixel colour (Uridium for instance). Very many modern programs
- use the fact that the screen is "written" (or "fired") to the CRT in a finite
- time to do as much time-consuming screen calculations as possible without
- causing character flickering: although the ULA has started displaying the
- screen for this frame already, the electron beam will for a moment not "pass"
- this or that part of the screen so it's safe to change something there. So the
- exact time in the 1/50 second time-slice at which the screen is updated is
- very important. Each line takes exactly 224 T states.
-
- After an interrupt occurs, 64 line times pass before the byte 16384 is
- displayed. At least the last 48 of these are actual border-lines. I could not
- determine whether my monitor didn't display the others or whether it was in
- vertical retrace, but luckily that's not really important.
-
- From Ian Collier:
- [This is probably not quite correct. I have some exact figures, but so
- far I have failed to bring them into the lab in order to program them
- into xz80. The 48K constants in there at the moment are wrong, but the +3
- ones are correct. On the +3 there are exactly 14368 (well, give or take 1)
- cycles between the interrupt and byte 16384 being displayed, which turns out
- to be 63 lines and 4 cycles. On the 48K it's 14339 cycles. *I think!*]
-
- Then the 192 screen+border lines are displayed, followed by about 56 border
- lines again. 56.5 border lines would make up exactly 70000 T states, 1/50th
- of 3500000. However, I noticed that the frequency of the 50 Hz interrupt
- (measured in 1/T states!) changes very slightly when my Spectrum gets hot
- (I think it has something to do with the relative change of the frequencies
- of the two crystals in the Spectrum), so the time between interrupts will
- probably not be exactly 70000 T states.
-
- From Ian Collier:
- [This can't be true. A line contains exactly 224 cycles, and the screen
- contains exactly 312 lines (on the +3 and other 128K machines, 311 lines of
- 228 T-states). If the screen didn't contain a whole number of lines then the
- TV would not be able to display it correctly. This means that there are
- exactly 69888 cycles in a frame. Unfortunately I have never determined whether
- this means that the 50Hz clock is too quick or the 3.5MHz clock is too slow
- (or neither, which would prove me wrong - note, though, that I have written a
- program which depends on the correct number of cycles per frame).]
-
- Anyway, whether the final border block is of fixed or variable length doesn't
- concern us either, the timings of the start and end of the screen, which are
- the timings of real interest, are fixed.
-
- Now for the timings of each line itself. I define a screen line to start with
- 256 screen pixels, then border, then horizontal retrace, and then border again.
- All this takes 224 T states. Every half T state a pixel is written to the CRT,
- so if the ULA is reading bytes it does so each 4 T states (and then it reads
- two: a screen and an ATTR byte). The border is 48 pixels wide at each side. A
- video screen line is therefore timed as follows: 128 T states of screen, 24 T
- states of right border, 48 T states of horizontal retrace and 24 T states of
- left border.
-
- When an interrupt occurs, the running instruction has to be completed first.
- So the start of the interrupt is fixed relatively to the start of the frame
- up to the length of the last instruction in T states. If the processor was
- executing a HALT (which, according to the Z80 books I read, is effectively
- many NOPs), the interrupt routine starts at most 3 T states away from the
- start of the frame. Of course the processor also needs some T states to store
- the program counter on the stack, read the interrupt vector and jump to the
- routine. In interrupt modes 0, 0/1 and 1 the total time taken to get to
- address 56 is 13 cycles. In interrupt mode 2 the time taken to get to the
- interrupt routine is 19 cycles. Interpreted as follows:
-
- 5 cycles: a read of the data bus (in IM 1 this is thrown away)
- 6 cycles: a read of the 2-byte interrupt vector IM 2 only)
- 8 cycles: to push the current PC and set the new one.
-
- When an NMI occurs, the total time taken to get to address 102 is 15 cycles.
- This is the same as for an ordinary interrupt but with two extra cycles
- (reason unknown).
-
- Now when to OUT to the border to change it at the place you want? First of
- all, you cannot change the border within a "byte", an 8-pixel chunk. If we
- forget about the screen for a moment, if you OUT to port FE after 14326 to
- 14329 T states (including the OUT) from the start of the IM 2 interrupt
- routine, the border will change at exactly the position of byte 16384 of the
- screen. The other positions can be computed by remembering that 8 pixels take
- 4 T states, and a line takes 224 T states. You would think that OUTing after
- 14322 to 14325 T states, the border would change at 8 pixels left of the upper
- left corner of the screen. This is right for 14322, 14323 and 14324 T states,
- but if you wait 14325 T states the ULA happens to be reading byte 16384 (or
- 22528, or both) and will halt the processor for a while, thereby making you
- miss the 8 pixels. This exception happens again after 224 T states, and
- again after 448, an so forth. These 192 exceptions left of the actual screen
- rectangle are the only ones; similar things don't happen at the right edge
- because the ULA don't need to read things there - it has just finished!
- As noted above, reading or writing in low ram (or OUTing to the ULA) causes
- the ULA to halt the processor. When and how much? The processor is halted each
- time you want to access the ULA or low memory and the ULA is busy reading. Of
- the 312.5 'lines' the ULA generates, only 192 contain actual screen pixels,
- and the ULA will only read bytes during 128 of the 224 T states of each screen
- line. But if it does, the processor is halted for exactly 4 T states.
-
- =============================== INTERFACE 1 ==================================
-
- The Interface I is quite complicated. It uses three different I/O ports,
- and contains logic to page and unpage an 8K ROM if new commands are used. The
- ROM is paged if the processor executes the instruction at ROM address 0008 or
- 1708 hexadecimal, the error and close# routines. It is inactivated when the
- Z80 executes the RET at address 0700.
-
- a) Port E7:
- I/O port E7 is used to send or receive data to and from the microdrive.
- Accessing this port will halt the Z80 until the Interface I has collected 8
- bits from the microdrive head; therefore, it the microdrive motor isn't
- running, or there is no formatted cartridge in the microdrive, the Spectrum
- hangs. This is the famous 'IN 0 crash'.
-
- b) Port EF:
-
- Bit 7 6 5 4 3 2 1 0
- +---------------------------------------+
- READ| | | |busy| dtr |gap| sync|write|
- | | | | | | | |prot.|
- |---+---+----+----+-----+---+-----+-----|
- WRITE| | |wait| cts|erase|r/w|comms|comms|
- | | | | | | | clk | data|
- +---------------------------------------+
-
- Bits DTR and CTS are used by the RS232 interface. The WAIT bit is used by the
- Network to synchronise, GAP, SYNC, WR_PROT, ERASE, R/_W, COMMS CLK and COMMS
- DATA are used by the microdrive system. If the microdrive is not being used,
- the COMMS DATA output selects the function of bit 0 of out-port F7:
-
-
- Bit 7 6 5 4 3 2 1 0
- +------------------------------------------+
- READ|txdata| | | | | | | net |
- | | | | | | | | input |
- |------+---+---+---+---+---+---+-----------|
- WRITE| | | | | | | |net output/|
- | | | | | | | | rxdata |
- +------------------------------------------+
-
- TXDATA and RXDATA are the input and output of the RS232 port. COMMS DATA
- determines whether bit 0 of F7 is output for the RS232 or the network.
-
- ============================ THE 128K SPECTRUMS ==============================
-
- a) Memory
-
- When memory is being paged, interrupts should be disabled and the stack should
- be in an area which is not going to change. If normal interrupt code is to
- run, then the system variable at 5B5Ch (23388) must be kept updated with the
- last value sent to port 7FFDh. It is not possible to read this port.
-
- On the 128 and +2, memory is entirely controlled by port 7FFDh. The byte to
- output will be interpreted thus:
-
- Bits 0-2: RAM page (0-7) to map into memory at 0C000h
- Bit 3: Select normal (0) or shadow (1) screen. The normal screen is in bank
- 5 and normally appears at 4000h; the shadow screen is in bank 7 and
- can be switched in at 0C000h
- Bit 4: ROM select. ROM 0 is the 128k editor and menu system; ROM 1 contains
- 48k BASIC.
- Bit 5: If set, memory paging will be disabled and further output to this
- port will be ignored until the computer is reset.
-
- The memory map of these computers is:
-
- FFFFh +--------+--------+--------+--------+--------+--------+--------+--------+
- | Bank 0 | Bank 1 | Bank 2 | Bank 3 | Bank 4 | Bank 5 | Bank 6 | Bank 7 |
- | | |(also at| | |(also at| | |
- | | | 8000h) | | | 4000h) | | |
- | | | | | | screen | | screen |
- C000h +--------+--------+--------+--------+--------+--------+--------+--------+
- | Bank 2 | Any one of these pages may be switched in.
- | |
- | |
- | |
- 8000h +--------+
- | Bank 5 |
- | |
- | |
- | screen |
- 4000h +--------+--------+
- | ROM 0 | ROM 1 | Either ROM may be switched in.
- | | |
- | | |
- | | |
- 0000h +--------+--------+
-
- Memory banks 4-7 are contended, i.e. the processor shares them with the ULA.
- This reduces the speed of memory access in these banks.
-
- b) Keypad
-
- The 128K machine's keypad extra editing facilities are also available via
- the normal keyboard:
-
- FUNCTION KEYS
- -----------------------------------------
- Beginning of next word [E] [S] J
- Beginning of previous word [E] I
- Up ten lines [E] P
- Down ten lines [S] I
- Start of line [E] [S] 2
- End of line [E] M
- First line [E] N
- Last line [E] T
- Screen [E] [S] 8
- Delete this character [E] [S] K
- Delete word left [E] E
- Delete word right [E] W
- Delete to start of line [E] K
- Delete to end of line [E] J
-
- [E] = Extended Mode
- [S] = Symbol Shift
-
- c) Sound Chip
-
- The AY-3-8912 sound chip is a widely used one, to be found in the MSX,
- Vectrex, Amstrad CPC range, etc. It is controlled by two I/O ports:
-
- OUT (0FFFDh) - Select a register 0-14
- IN (0FFFDh) - Read the value of the selected register
- OUT (0BFFDH) - Write to the selected register
-
- There's a guide to how to use the registers at
-
- http://arachnid.cs.cf.ac.uk/User/K.E.W.Thacker/Amstrad/CPC_Guide/
- Hardware_Programming/Chips/psg.html
-
- - this is for the CPC, so the I/O commands used will be different, and on the
- Spectrum register 14 is used for the serial ports rather than the keyboard as
- on the CPC.
-
- ******************************************************************************
- ********************************** PINOUTS ***********************************
- ******************************************************************************
-
- 1. ULA pinout
-
- He *multiplexed* address-lines.
-
- /WR 2 39 Q One of the +5V is decoupled through a RC-low-pass.
- /RD 3 38 /MREQ U,V are the color-difference signals.
- /WE 4 37 A15 /Y is the inverted video including sync.
- A0 5 36 A14 D are the data-lines, decoupled from the CPU by
- A1 6 35 /RAS resistors.
- A2 7 34 /ROM CS T are the data-lines to the keyboard (address-lines
- A3 8 33 /IO-ULA through diodes).
- A4 9 32 CLOCK SOUND is the analog-I/O-line for beep, save and load.
- A5 10 31 D7 CLK is the clock-source to the CPU including the
- A6 11 30 D6 inhibited T-states.
- /INT 12 29 D5 IO-ULA is (A0(CPU) OR /IORQ) for the I/O-port FEh
- +5V 13 28 SOUND Q is the 14MHz-crystal, other side grounded through
- +5V 14 27 D4 a capacitor
- U 15 26 T4
- V 16 25 D3
- /Y 17 24 T3
- D0 18 23 T2
- T0 19 22 D2
- T1 20 21 D1
-
- 2. AY-3-8912
-
- SOUND C 1 28 D0 Vcc is +5V.
- PORT 2 27 D1 SOUND A, B and C can be tied together.
- Vcc 3 26 D2 CLOCK can be some MHz.
- SOUND B 4 25 D3
- SOUND A 5 24 D4
- GND 6 23 D5
- PORT 7 22 D6
- PORT 8 21 D7
- PORT 9 20 BC1
- PORT 10 19 BC2
- PORT 11 18 BDIR
- PORT 12 17 A8
- PORT 13 16 RESET
- CLOCK 14 15 CLOCK
-
- 3. Keyboard layout
-
- OUTER SIDE A 15 14 8 13 12 9 10 11 INNER SIDE
- D
- 0 BR EN CS P 0 A Q 1
- 1 SS L Z O 9 S W 2
- 2 M K X I 8 D E 3
- 3 N J C U 7 F R 4
- 4 B H V Y 6 G T 5
- INNER SIDE
-
- [BR] BREAK [EN] ENTER [CS] CAPS SHIFT [SS] SYMBOL SHIFT
-
- In real the matrix connections are in one row on the top side of
- the membrane.
-
-
- ******************************************************************************
- ******************************* ACKNOWLEDGEMENTS *****************************
- ******************************************************************************
-
- Thanks to:
-
- Richard Carlsson - for info on his Speccylator emulator for the Amiga.
- Ian Collier - xz80 emulator, advice, Z80 information and more...
- Krzysztof Czysciak - information about Elwro emulator.
- John Elliott - information about 128K machines.
- Marat Fayzullin - for creating FAQ versions before 2.7!
- Arnt Gulbrandsen - for keeping Spectrum WWW page, FTP archive and multiple
- contributions to this file. Also, for his IBM PC-based
- JPP emulator. Your WWW page *is* cool, Arnt. ;)
- Simos Hadjiyiannis - for several FTP addresses I didn't have.
- Martijn van der Heide - for his database program and Jeroen Kwast's new
- email address.
- Des Herriott - for his xzx emulator, which is the first and the only
- way to play LodeRunner on a Unix workstation! :)
- (ignoring the unix version of course - eh Ian?)
- A.G.Jackson - information about emulators for Acorn Archimedes.
- Bob Johnson - information about TS2068 and TK90X.
- Gerton Lunter - for the excellent information about ZX-Spectrum
- internals and Z80 emulator for IBM PC.
- Peter McGavin - for some useful information and (of course =:)) his
- excellent Spectrum emulator which actually *multitasks*
- under AmigaDOS and is system-friendlier than many other
- programs.
- Miguel Melo - information about several programmers.
- Alexander Mudretsov- information about the SP105 emulator.
- Joseph S. Myers - information on undocumented Z80 behaviour.
- Troels Norgaard - information about KGB.
- Emil Obermayr - for pinouts of ULA, AY-3-8912 and keyboard layout.
- Boudewijn Rempt - compilation of postings for "WHERE IS...?"
- Rui Ribeiro - for several contributions to "TECHNICAL INFORMATION",
- and WSpecem.
- Jon Ritman - information about himself!
- Adam Roach - maintainer of comp.emulators.misc FAQ; information
- about the Speccy BASIC emulator for the C64.
- Thorsten Roskowetz - information about Atari-based emulator.
- Marcelo Strasunas - information about TK90X and TK95.
- Stephen Smith - information about several programmers and his great
- games FAQ and database web pages.
-
- ... and everybody else who has contributed to the FAQ, manages FTP archives,
- writes Speccy emulators and generally helps to keep the Speccy alive!
-