home *** CD-ROM | disk | FTP | other *** search
/ PC Shareware 1996 December / PC_Shareware-1996-12.iso / windows / spectrum / docs / spec_3_0.faq < prev    next >
Encoding:
Text File  |  1996-06-11  |  143.0 KB  |  3,009 lines

  1.                              comp.sys.sinclair
  2.                           Sinclair ZX Spectrum FAQ
  3.                             v3.02 (June 11 1995)
  4.  
  5.                          Maintained by Damien Burke
  6.                    email:  D.M.Burke-CSSE94@cs.bham.ac.uk
  7.      (until June 14th 1996; check http://www.cs.bham.ac.uk/~dmb/mail.html
  8.                   for a new email address after that date)
  9.  
  10.    You can find the most recent version of this document at the following
  11.  World-Wide Web (WWW) address: http://www.cs.bham.ac.uk/~dmb/speccy/faq.html
  12.  
  13. Please send your additions and corrections to the email address above. Much of
  14. this FAQ is the FAQ as previously maintained by Marat Fayzullin, for whom all
  15. old computer fans should give daily thanks and worship ;-)
  16.  
  17. Copyright note: if you're going to copy this, do it right. OK? I don't care if
  18. you stick this on a CD, print it and make paper aeroplanes from it, whatever -
  19. just don't modify it - tell me if changes need making.
  20.  
  21. Changes since v3.01:
  22.         1) Emulators list expanded and updated.
  23.         2) Where is...? list expanded and updated.
  24.         3) Some other minor additions/corrections.
  25.  
  26. Changes since v3.0:
  27.         1) Updated net addresses to give descriptions to/remove all but one
  28.            of the 'No description yet' URLs.
  29.         2) Corrected address of SAM Coupe FAQ.
  30.         3) Expanded description of SPECEMU emulator - thanks Rui.
  31.  
  32. Changes since v2.9:
  33.         1) Net Addresses list expanded.
  34.         2) Emulators list expanded.
  35.         3) Where Is...? list expanded.
  36.         4) File formats section expanded.
  37.         5) Some information on the 128K hardware added.
  38.         6) More Spectrum models listed.
  39.         7) Various minor additions/modifications.
  40.  
  41. As I am a university student and about to take a year out to go back to the
  42. real world this may be the last major update of the FAQ for some time. My
  43. university account will become defunct some time around September 1996, and I
  44. am unlikely to be able to read any mail after June 14th 1996, so email to the
  45. address listed above will probably bounce or remain unanswered. I should have
  46. a new address by September 1996; I will make a link available to the new
  47. address on the following web page: http://www.cs.bham.ac.uk/~dmb/mail.html
  48.  
  49. ******************************************************************************
  50. ********************************** CONTENTS **********************************
  51. ******************************************************************************
  52.  
  53. I.   FREQUENTLY ASKED QUESTIONS  - and the answers!
  54.  
  55. II.  NET ADDRESSES               - ZX-Spectrum-related Net addresses
  56.  
  57. III. EMULATORS                   - comparison of existing ZX-Spectrum emulators
  58.  
  59. IV.  WHERE IS...?                - what happened to famous ZX-Spectrum people
  60.  
  61. V.   FILE FORMATS                - descriptions of emulator file formats
  62.      1. Snapshot files           - memory snapshot file formats
  63.        a) .SLT
  64.        b) .SNA (48Kb)
  65.        c) .SNA (128Kb)
  66.        d) .SP
  67.        e) .ZX
  68.        f) .Z80 (all versions)
  69.      2. Tape files               - virtual tape file formats
  70.        a) .TAP ( and .BLK)
  71.      3. Other files              - other emulator file formats
  72.        a) .MDR
  73.        b) .SCR
  74.  
  75. VI.  TECHNICAL INFORMATION       - info on ZX-Spectrum's hardware
  76.      1. Z80 CPU                  - undocumented opcodes and weird features
  77.         a) CBh opcodes
  78.         b) FDh and DDh opcodes
  79.         c) EDh opcodes
  80.         d) R register
  81.         e) Undocumented flags
  82.         f) IFF1 and IFF2
  83.      2. Hardware                 - ULA and I/O ports
  84.      3. Interface I
  85.         a) Port E7h
  86.         b) Port EFh
  87.      4. The 128K Spectrums
  88.         a) Memory
  89.         b) Keypad
  90.         c) Sound Chip
  91.  
  92. VII. PINOUTS                     - pinout details for various hardware
  93.      1. ULA
  94.      2. AY-3-8912
  95.      3. Keyboard layout
  96.  
  97. VIII.ACKNOWLEDGEMENTS            - thanks etc.
  98.  
  99.  
  100. ******************************************************************************
  101. ************************* FREQUENTLY ASKED QUESTIONS *************************
  102. ******************************************************************************
  103.  
  104. 1. Just what is this newsgroup for?
  105.    This group's charter (from its original formation in December 1993) is to
  106.    provide a forum for the discussion of the various brainchildren of Sir
  107.    Clive (born Clive Sinclair) and related computers such as the Jupiter Ace,
  108.    TK and TS series', SAM Coupe and Thor, software, peripherals, emulators for
  109.    them, programming them; playing those wonderful games (6031769, anyone?);
  110.    and anything else which interests the Sinclair community. The group is not
  111.    moderated.
  112.  
  113.    In practice, nost discussion is Spectrum-related, but there's a fair bit of
  114.    SAM Coupe, QL, ZX-81, etc. chat as well. This FAQ only covers the Spectrum,
  115.    other documents being available seperately:
  116.    The QL FAQ at        http://ww.uni-mainz.de/~roklein/ql/
  117.    The SAM Coupe FAQ at http://www.soton.ac.uk/~tsp93ma/Coupe/FAQ.txt
  118.  
  119.    This FAQ covers technical information, emulator information and resources
  120.    and does not attempt to cover Spectrum games and history. There is a game
  121.    FAQ available - see question 18.
  122.  
  123. 2. Can I post binaries to this group?
  124.    NO! The word 'binaries' does *not* appear in the newsgroup title, and this
  125.    is a subtle indication that posting binaries is going to make you very
  126.    unpopular very quickly. Many people have to pay for net access, and you're
  127.    costing them money if you post binaries, which are substantially larger than
  128.    most posts. You may also cause news providers to stop carrying the group if
  129.    binaries are seen to be posted in it. If you want to distribute something
  130.    Sinclair-related, upload it to an FTP site or put it on a web page and post
  131.    the *address* of the site.
  132.  
  133. 3. Is there a Spectrum emulator for <whatever machine>?
  134.    Probably. See section II, Emulators, below. It is split up by machine type,
  135.    so you should be able to find one you can use. Of course, if you can't get
  136.    one for your machine, you could always write one... ;-)
  137.  
  138. 4. Where can I find <whatever game>?
  139.    The game you're after is probably available somewhere on the net. The
  140.    gopher server at gopher://gopher.nvg.unit.no enables you to search for
  141.    games (web interface to it at http://www.nvg.unit.no/spectrum/search.html),
  142.    but an even better way to search is to use Hynek Med's snapsearch engine,
  143.    located on the web at http://drson.vse.cz/snapsearch.
  144.  
  145.    Several CDs full of games can be had:-
  146.  
  147.    Speccy Sensations II: Warm Silence Software at:
  148.    http://www.comlab.ox.ac.uk/oucl/users/robin.watts/wss/index.html
  149.  
  150.    Emulator Heaven:
  151.    Phone Mike Mee in the UK on (01745) 591704 after 6pm or write to
  152.    "Anncott", Hylas Lane, Rhuddlan, Clwyd, LL18 5AG, UK or
  153.    phone 'TortyFoo' also in the UK on (01922) 616324 (7pm-10pm Weekdays/
  154.    10am-10pm Weekends) or email:
  155.    emulators@tortyfoo.demon.co.uk
  156.    
  157.    Bear in mind that these CDs contain a large amount of copyrighted software
  158.    so they are technically illegal!
  159.  
  160.    If none of those turn up the game you're after, try asking on the
  161.    newsgroup, or (shock) going to a second-hand shop and digging around in
  162.    their boxes of old tapes.
  163.  
  164. 5. Is it legal to use ZX-Spectrum ROM images?
  165.    Yes, it is. Amstrad, who own the copyright for the ROMs, allow free
  166.    distribution of ROMs for emulation purposes, although they often apply
  167.    stipulations such as not charging money for software that includes these
  168.    ROMs. They also allow free distribution of electronic versions of Spectrum
  169.    hardware manuals.
  170.  
  171. 6. Is it legal to use snapshots (i.e. games etc.)?
  172.    Formally, using snapshotted game without actually owning a copy of it on a
  173.    tape is a *copyright violation*. Nevertheless, ZX-Spectrum games are not
  174.    being sold any more and using snapshots doesn't harm copyright holders
  175.    much, if you don't make profit from it and don't distribute snapshots on a
  176.    large scale. Some companies definitely do not like to have their games
  177.    distributed (e.g. Ultimate/Rare), whereas others have given explicit
  178.    permission (e.g. Vortex). A list of such companies/individuals is at
  179.    http://www.cs.bham.ac.uk/~dmb/speccy/permits.html.
  180.  
  181. 7. I have the game I was after, but in a format my emulator can't load. How
  182.    do I convert snapshots between various formats?
  183.    Most snapshots can be converted into one another using SPConv program
  184.    by Henk de Groot [hegr@ensae.ericsson.se] and myself. An MSDOS version of
  185.    this program is supplied with the JPP emulator (source included), but is a
  186.    rather old version. A more up to date version (v1.10) is available from the
  187.    NVG FTP site: ftp://ftp.nvg.unit.no/pub/sinclair/utils/generic/spcnv110.zip
  188.    SPCONV converts files between following formats: .SIT,.SNX,.SNA,.Z80,
  189.    .PRG,.SP and RAW.
  190.    Also, the registered version of Z80 contains a converter program, and there
  191.    is a program called Butcher, written by Marat Fayzullin (available at the
  192.    NVG FTP site) that can split .ZX (or .SPC) files (used by the "Polish"
  193.    emulator) into a series of .header/.bytes files for use with the Spectrum
  194.    v1.7 emulator on the Amiga.
  195.  
  196. 8. I'm trying to convert a .Z80 file into .SNA format using SPConv and it
  197.    doesn't work. Why?
  198.    You are probably using SPCONV v1.05 which came with JPP distribution.
  199.    It has problems converting .Z80 files created by Z80 v2.01+. Get SPConv
  200.    v1.10 (URL listed in question 7 above). It works.
  201.    SPConv cannot currently handle 128Kb snapshots, but hopefully the next
  202.    version will.
  203.  
  204. 9. I've got a snapshot that won't load into Z80 - it just gives an error
  205.    message saying 'plusdrom.bin not found' and exits to DOS. How can I get it
  206.    to work?
  207.    The snapshot was saved by someone with a registered copy including +D
  208.    emulation, in +D mode. The game doesn't actually *need* the +D ROM, so you
  209.    can use DEMGT: ftp://ftp.nvg.unit.no/pub/sinclair/utils/generci/demgt.zip
  210.    to modify the snapshot so it isn't in +D mode.
  211.  
  212. 10.What is the difference between the various ROM-files available for use
  213.    with Spectrum emulators?
  214.    SPECTRUM.ROM - Spectrum ROM, exactly the same as in the original
  215.                   Spectrum.
  216.    GROOT.ROM    - Same ROM, but with lots of bug fixes and extensions by Henk
  217.                   de Groot [hegr@ensae.ericsson.se]. List of changes follows:
  218.                   o Bug fixes as mentioned in "The complete Spectrum Rom
  219.                     Disassembly" by Dr Ian Logan and Dr Frank O'Hara.
  220.                   o Support for EPSON printer via an Z80-PIO chip and
  221.                     Centronics connection.
  222.                   o Monitor support: start up with black screen and white
  223.                     characters.
  224.                   o Lightpen support: Lightpen routine for DK'Tronics
  225.                     lightpen is built in.
  226.    TK95.ROM     - ROM from a Brazilian Spectrum clone called Micro Digital
  227.                   TK95.
  228.    IMC.ROM      - Ian Collier's modified ROM. See the documentation that comes
  229.                   with xz80.
  230.    UNICORN.ROM  - ROM used by Mikro-Gen's Shadow Of The Unicorn cartridge
  231.                   game.
  232.  
  233. 11.Where can I get Microdrive cartridges?
  234.    Microdrive cartridges (as well as complete Microdrive kits) can be
  235.    obtained from:
  236.  
  237.    W.N. Richardson & Co.
  238.    6 Ravensmead
  239.    Chiltern Hill
  240.    Chalfont St Peter,
  241.    Bucks, SL9 0NB
  242.    United Kingdom
  243.  
  244.    PHONE/FAX 01494-871319
  245.  
  246. 12.How do I fix my worn out ZX-Spectrum keyboard?
  247.    If the connectors on the PCB have scratched off the silver from the
  248.    ribbon, buy some so-called "conductive paint" which is a suspension
  249.    of fine silver particles. If you let it dry, it conducts. Use a fine
  250.    brush to replace what is scratched off from the ribbons. This paint
  251.    is available from most electronics hobbyist stores (for example, from
  252.    RadioShack in US).
  253.  
  254. 13.What's the address of the "Spectrum Profi Club" in Germany?
  255.  
  256.    SPC
  257.    c/o Haller
  258.    Ernastr. 33
  259.  
  260.    D-51069 K"oln
  261.    Germany
  262.  
  263. 14.What are the differences between the different Spectrum models?
  264.    1) 16K    - original model. Rubber keys.
  265.    2) 48K    - (most widespread) original model with RAM extension.
  266.    3) TS2068 - American version from Timex; had an AY-3-8912 sound chip,
  267.                cartridge ports, two joystick ports and an additional 8Kb
  268.                extension ROM with extra BASIC commands to support these
  269.                devices. Silver plastic case and plastic keys.
  270.    4) TC2068 - same as TS2068; sold by a Portuguese arm of Timex away from
  271.                usual Sinclair markets.
  272.    5) TC2048 - another one from Portuguese arm of Timex. Black with grey
  273.                plastic keys. Built in Kempston joystick port, some higher
  274.                resolution screen modes, 64Kb of memory with a paging
  275.                system.
  276.    6) TK90X  - clone of 48K by Micro Digital of Brazil, with a built-in
  277.                joystick interface (Interface II compatible) and two new
  278.                BASIC commands - TRACE, for tracing execution, and UDG for
  279.                editing UDGs. This modified ROM caused some compatibility
  280.                problems.
  281.    7) TK95   - as TK90X, but with a real keyboard (not unlike the C64's) and
  282.                a more compatible ROM. Apparently a TC2048 in disguise.
  283.    8) 48K+   - as 48K, but had "real" keyboard.
  284.    9) 128K   - 128Kb RAM, AY-3-8912 sound chip, keypad, RS232 port and "real"
  285.                keyboard. The last real Sinclair machine.
  286.    10) +2    - 128K with builtin tape deck, new (grey) case and keyboard.
  287.                First Amstrad-produced model.
  288.    11) +3    - 128K with builtin disk drive, new ROMs including a DOS and some
  289.                internal changes on the bus. Back to a black case.
  290.    12) +2A   - +3 with a tape deck instead of disk drive.
  291.  
  292. 15.What peripherals exist?
  293.    This would be a big list, so I'll keep it to what I consider are major
  294.    ones (additions welcome):
  295.    1) Interface 1 - joystick and microdrive interface, network capabilities.
  296.    2) Interface 2 - joystick and cartridge interface.
  297.    3) Microdrive - fast tape storage (requires Interface 1).
  298.    4) ZX Printer - thermal printer (aka silver bog roll burner).
  299.    5) Keypad - extension keypad for the 128K models that offered extra
  300.                editing facilities in 128K BASIC.
  301.    6) Multiface - Romantic Robot's excellent device to stop the Speccy cold,
  302.                   enabling you to save the current state of the machine to
  303.                   tape or disk and enter POKEs.
  304.    7) Joysticks - many interfaces exist; Kempston, AGF/Protek, programmable
  305.                   interfaces (which mapped joystick positions to keypresses),
  306.                   etc. etc.
  307.    8) AMS Mouse - well, a mouse...
  308.    9) BetaDisk - an interface to enable attachment of a 3.5" drive.
  309.    10) Disciple/+D - MGT's interface to enable attachment of a 3.5" drive.
  310.    11) Wafadrive - not unlike a Microdrive.
  311.  
  312.    
  313. 16.Where is Sinclair Research now? Is Clive on email?
  314.    You could try contacting MENSA; Clive is a member.
  315.  
  316.    Seamus Waldron [seamus_waldron@cix.compulink.co.uk] supplies the following
  317.    from the last Profits/Loss account published by Sinclair Research (on 12th
  318.    October 1995):
  319.  
  320.       SINCLAIR RESEARCH LTD.
  321.       15/16 Margaret Street
  322.       London
  323.       W1N 7LE
  324.       United Kingdom
  325.       Tel: 0171 636 4488
  326.       Fax: 0171 580 6628
  327.  
  328.    Sir Clive Sinclair is still the chairman; no email address is known for
  329.    him (and if you were him and had one, wouldn't you keep it a secret from
  330.    the slavering hordes of Speccy fans?!). Unfortunately the above address is
  331.    already out of date; Sinclair has moved to somewhere near Kings Cross in
  332.    London. More info welcome!
  333.  
  334. 17.What the hell is a Spectrum?
  335.    The best home computer of all time. Came out in 1982 from Sinclair
  336.    Research Ltd., and proceeded to capture the hearts and minds of millions
  337.    of people. Based around a Z80 processor and utilising lots of neat tricks
  338.    to keep the cost down, Clive (now Sir Clive) Sinclair effectively created
  339.    the UK computer industry with his ZX80, ZX81 and ZX Spectrum. If you've
  340.    never used one, get hold of an emulator and try out some of the classic
  341.    games around (e.g. Jetpac) and see what *real* gameplay is about without
  342.    needing 50 Mb of hard disk space and the type of processing power that
  343.    interferes with military radar.
  344.  
  345. 18.Is the Spectrum better than <other machine>?
  346.    Yes. ;-)
  347.  
  348. 19.I have a question not covered here!
  349.    Well, there are other sources of information; in particular, if the
  350.    question is about a particular game, your first stops should be Stephen
  351.    Smith's Speccy Games FAQ and Games Database at:
  352.    http://www.hermetica.com/technologia/sinclair/stevo/gamefaq.html and
  353.    http://www.hermetica.com/technologia/sinclair/stevo/gamedbs/gamedbs.html
  354.    If they don't help, welcome to the group, ask away!
  355.  
  356.  
  357. ******************************************************************************
  358. ******************************* NET ADDRESSES ********************************
  359. ******************************************************************************
  360.  
  361. In between updates of this FAQ, new sites usually appear - I may have linked
  362. to them on my own page at http://www.cs.bham.ac.uk/~dmb/speccy/ (until June
  363. 14th 1996) so take a look there if you're after something new. If you find an
  364. address in here that doesn't work any more, please let me know - and let me
  365. know if you find one that isn't listed here too!
  366.  
  367. This list is ordered by the sites' domain names, so don't feel bad if your
  368. site is listed after one you think isn't as good. If anyone thinks my
  369. description of their site is incorrect or unfair, again, let me know.
  370.  
  371. ================================= FTP Sites: =================================
  372.  
  373. If you're after games, emulators or anything Spectrum-related, there are a
  374. number of FTP sites worth visiting, and new ones spring up now and again...
  375. bear in mind that many of the sites containing games are very busy, so you're
  376. better off trying at quieter times (e.g. very late at night in the UK), and
  377. don't use a web browser - use a proper FTP client (in which case the name of
  378. the site needs the 'ftp://' bit stripped off).
  379.  
  380. ftp://akira.uc3m.es
  381. ftp://alba.easynet.co.uk            (part time site - never seen it up myself)
  382. ftp://budda.tixm.tambov.ru/d/incoming/crems/speccy
  383. ftp://drson.vse.cz/pub/sinclair
  384. ftp://fly.cc.etf.hr
  385. ftp://fly.cc.fer.hr/pub2/spectrum
  386. ftp://ftp.dcc.uchile.cl/pub/OS/sinclair
  387. ftp://ftp.demon.co.uk/pub/emulators/spectrum
  388. ftp://ftp.enterprise.net/pub/incoming/speccy
  389. ftp://ftp.enterprise.net/spectrum/
  390. ftp://ftp.funet.fi/pub/misc/if-archive
  391. ftp://ftp.gmd.de/if-archive
  392. ftp://ftp.gui.uva.es/sinclair
  393. ftp://ftp.inf.tu-dresden.de/pub/zxspectrum (and /pub/incoming/zxspectrum)
  394. ftp://ftp.itu.edu.tr/pub/systems/spectrum
  395. ftp://ftp.komkon.com/pub/Spectrum (and /incoming/Spectrum)
  396. ftp://ftp.lanprojekt.cz/pub/sinclair
  397. ftp://ftp.nvg.unit.no/pub/sinclair                    (*THE* Speccy FTP site!)
  398. ftp://ftp.polsl.gliwice.pl/pub/systems/ZXSpectrum
  399. ftp://ftp.sun.ac.za/pub/misc/sinclair (and /pub/msdos/zx)
  400. ftp://ftp.zx-museum.org.ru
  401. ftp://maya.dei.unipd.it/pub/sinclair_QL/spectrum
  402. ftp://members.aol.com/zxspectrum/snaps/
  403. ftp://oak.oakland.edu/pub/msdos/emulators
  404. ftp://phantom.riviera.pw.edu.pl/pub/speccy              (kept by Hacker Chris)
  405. ftp://rcs1.urz.tu-dresden.de/pub/soft/zxspectrum
  406. ftp://spodbox.ehche.ac.uk/pub/users/majik
  407. ftp://tardis.soc.staffs.ac.uk/pub/sinclair
  408. ftp://uhura.ijs.si/pub/zx                              (used to be ftp.ijs.si)
  409. ftp://virgo.inesc.pt/pub/games
  410. ftp://wuarchive.wustl.edu/systems/sinclair
  411. ftp://www.il.ft.hse.nl/pub/sinclair/
  412.  
  413. ================================= Web Sites: =================================
  414.  
  415. Web sites abound, and new ones appear all the time... try web searches for
  416. 'Sinclair Spectrum', 'ZX Spectrum', 'speccy', etc.
  417.  
  418. ===================== Web Sites with Reference Material: =====================
  419.  
  420. http://www.csv.warwick.ac.uk/~mauqx/sinclair/
  421. Sinclair Index - links and hardware manuals, e.g. Interface 1, Multiface 128
  422. manuals.
  423.  
  424. http://www.mono.org/~ritchie/speccy/speccy.html
  425. Sinclair Spectrum Home Pages - snapshots and technical articles, and letters
  426. from Your Sinclair!
  427.  
  428. http://www.nvg.unit.no/spectrum
  429. Spectrum Forever! - THE Spectrum site! A bit disorganised and rather out of
  430. date now, but still a good collection of stuff.
  431.  
  432. http://spodbox.linux.org.uk/~majik/sinclair/
  433. Sinclair Microcomputer Museum - (aka Sinclair Section).
  434.  
  435. http://www-users.informatik.rwth-aachen.de/~afw/sincfo0.html
  436. Sinclair ZX Spectrum Forum - primarily a BASIC reference
  437.  
  438. ===================== Web Sites with Games (Snapshots): ======================
  439.  
  440. http://www.accessone.com/~mcoward/
  441. M. Coward's SpecNet Online; some games on a nicely presented site.
  442.  
  443. http://alba.easynet.co.uk
  444. John Dow's part-time page - supposedly up at 10-12PM UK time at weekends; I've
  445. never managed to get a response at any time though.
  446.  
  447. http://homepages.enterprise.net/glyn.harper/spectrum.html
  448. Glyn Harper's ZX Spectrum Emulator page - basically just links to his FTP
  449. site, with around 16Mb of games.
  450.  
  451. http://ireland.iol.ie/~sjones
  452. Steve Jones' Sinclair Spectrum Page - has a snapshots requests page, though
  453. hasn't been updated since it started from what I can see - apparently due to
  454. worries about copyright violation.
  455.  
  456. http://lia01.unizar.es/curro/spectrum.htm
  457. Francisco Cotrina's Spectrum page - with details of his snapshots mail server
  458. and some emulators to download.
  459.  
  460. http://members.aol.com/zxspectrum/speccy.html
  461. Harvey Lodder's "Most Wanted" snapshots request page.
  462.  
  463. http://osiris.sund.ac.uk/~ca4aba/snaps.html
  464. Andrew Barker's Spectrum Snapshots - yet another requests page, the most
  465. active one.
  466.  
  467. http://relcom.eu.net/zx/
  468. Aleksandr Babaylov's ZX Spectrum Software Museum - a large collection of
  469. snapshots and tapes; a lot of games here, but it can be a slow site.
  470.  
  471. http://sable.ox.ac.uk/~sjoh0132/
  472. John Elliott's Home Page - the home of Jet Set Willy 128K, and some useful
  473. icons for Sinclair pages (as used on my page).
  474.  
  475. http://spodbox.linux.org.uk/~blood/
  476. Blood's Crap Speccy Page - home of the comp.sys.sinclair crap games
  477. compilation and the Manic Miner editor.
  478.  
  479. http://www.acropolis.gr/~icarus/spectrum.html
  480. Theo Devil's Spectrum page - has copies of his demos and games there, plus
  481. more... you may have heard of Theo as the guy behind Hellenic Software, he
  482. had a few things published on Crash/YS cover tapes.
  483.  
  484. http://www.cs.ucl.ac.uk/students/zcacbb1/spectrum/speccy.html
  485. Ben Baylis' Spectrum Stuff - including the beginning of a point and click
  486. snapshots list (using the akira FTP site), a requested snapshots page and
  487. YS Smash Tips!
  488.  
  489. http://www-dse.doc.ic.ac.uk/~np2/spectrum/index.html
  490. Execute Spectrum Programs via The Web! - not really practical, but worth a
  491. look.
  492.  
  493. http://www.io.org/~diehl/speccy.html
  494. Eric March's Speccy! - including what was a great requested snapshots page,
  495. but it hasn't been updated since August 1995. Should hopefully be back on form
  496. shortly, as Eric will be updating the site with more snapshots and other
  497. stuff 'soon'.
  498.  
  499. http://www.rtc-carlow.ie/student/obrienk/spectrum.html
  500. Karl O'Brien's Sinclair Spectrum 48K Heaven - has a few games and a copy of
  501. Z80 on his page.
  502.  
  503. =============== Web Sites with Game Hints/Cheats/Information: ================
  504.  
  505. http://carlton.innotts.co.uk/~silthas/spectrum.html
  506. Sinclair Spectrum Hall of Fame - screenshots of classic games.
  507.  
  508. http://orca.ucd.ie/~conormc/spectrum/zxspectrum.html
  509. Conor McCarthy's ZX Spectrum page - home of the Miner Willy Museum (tours of
  510. Manic Miner etc.), and more broken links than you can shake a stick at - all
  511. very much under construction.
  512.  
  513. http://www-dept.cs.ucl.ac.uk/students/zcacbb1/spectrum/smashtips/
  514. YS Smash Tips - courtesy of Ben Baylis. Lots of tips and cheats.
  515.  
  516. http://www.doggysoft.co.uk/chzxp.html
  517. Cheats Prosper - Multiface POKEs - an impressive list of cheats here.
  518.  
  519. http://www.ftech.net/~floodnet/spectrum/spectrum.htm
  520. Glenn Flood's Spectrum/ZX-81 Cassette Inlay Artwork Page - Glenn did artwork
  521. for some QuikSilva games.
  522.  
  523. http://www.gatewest.net/~cpb/lom.html
  524. The Moon Palace - a home page for the Lords of Midnight saga.
  525.  
  526. http://www.hermetica.com/technologia/sinclair/stevo/index.html
  527. Stephen Smith's Master Speccy page- lots of stuff including the Spectrum games
  528. database and games FAQ. A must see!
  529.  
  530. http://www.soton.ac.uk/~rjc394/
  531. The YS Tip Shop Tiptionary- courtesy of Robert Cooper. Decidedly incomplete;
  532. not updated since it was first put up.
  533.  
  534. http://www.wintermute.co.uk/users/gargamel/ultimate.html
  535. Gargamel's Ultimate Play The Game Loading Screens.
  536.  
  537. ================== Web Sites of Emulator/Utility Authors: ====================
  538.  
  539. http://diana40.paisley.ac.uk:80/~com40014/
  540. James McKay's PC Games Haters Page - home of x128, the DOS and UNIX Speccy
  541. emulator. May disappear after June 1996.
  542.  
  543. http://fly.cc.fer.hr/~arsen/tapefix/
  544. TapeFix - a program to make your old Speccy tapes readable once more.
  545.  
  546. http://julia.gns.getronics.nl/~mheide/spectrum.html
  547. Martijn van der Heide's Spectrum Games Database - a PC program to catalog
  548. your snapshot and tape collection and launch JPP or Z80 to run a particular
  549. snapshot or tape. A very well done program, and it's free!
  550.  
  551. http://web.jet.es/~tpomar/
  552. Toni Pomar's ZXAM homepage - home of ZXAM, oddly enough.
  553.  
  554. http://www.comlab.ox.ac.uk/oucl/users/ian.collier/Spectrum/index.html
  555. Ian Collier's xz80 homepage - home of xz80, believe it or not.
  556.  
  557. http://www.comlab.ox.ac.uk/oucl/users/robin.watts/wss/index.html
  558. Warm Silence Software - the producers of Z80Em.
  559.  
  560. http://www.csd.uu.se/~richardc/home.shtml
  561. Richard Carlsson's home page - author of Speccylator, a Speccy emulator for
  562. the Amiga. You'll find a mention of it right at the bottom of his page.
  563.  
  564. http://www.doggysoft.co.uk/
  565. DoggySoft have written several Acorn ARM Spectrum-related utilities.
  566.  
  567. http://www.freeflight.com/fms/
  568. Marat Fayzullin's home page - author of emulators for the MSX, NES,
  569. Colecovision, Game Boy etc. and at least one Spectrum-related utility
  570. (Butcher).
  571.  
  572. http://www.ugr.es/~pedrom/sinclair.htm
  573. Pedro Salaz's Sinclair home page - home of the Sinclair v2.00 emulator.
  574.  
  575. ============================= Web Search Engines: ============================
  576.  
  577. http://altavista.digital.com/
  578. Alta Vista - Digital's rather neat search engine. Very powerful, for instance
  579. it can do searches for pages linked to a specific page as well as search in
  580. USENET news articles and web pages.
  581.  
  582. http://drson.vse.cz/snapsearch/
  583. Hynek Med's Spectrum related files search - searches over several FTP/WWW
  584. sites to match the filename you give it. Probably the most useful search
  585. engine if you're after a particular game.
  586.  
  587. http://ftpsearch.unit.no/ftpsearch/
  588. FTP Search - will search for any file on the FTP sites it indexes; can also
  589. be used to find Spectrum files of course! Much like Archie, but nicer.
  590.  
  591. http://www.infoseek.com/
  592. InfoSeek Guide - another generic web search engine, but as always, these are
  593. just as useful for finding Speccy stuff as finding anything else.
  594.  
  595. http://www.nvg.unit.no/spectrum/search.html
  596. An interface to the gopher search engine at NVG. Unlike snapsearch, this one
  597. searches on company and game names as well as the filename; but it doesn't
  598. have as good an index, so snapsearch often gives better results.
  599.  
  600. http://www.yahoo.com/Computers/Hardware/Platforms/Sinclair
  601. Yahoo's Sinclair page - a few links, some out of date.
  602.  
  603. ============================ Magazines On The Web: ===========================
  604.  
  605. http://jumper.mcc.ac.uk/~simonc/ys
  606. Your Sinclair - parts of some of the later issues up on the web courtesy of
  607. Simon Cooke, YS's tech tips editor for those issues.
  608.  
  609. http://www.cs.bham.ac.uk/~dmb/speccy/emulate/
  610. Barry Plewa's Emulate! - has games, technical stuff, reviews, chart listings,
  611. and much more. The HTML version of the magazine is at this site, but plain
  612. text versions and ZIPped up copies of the HTML version are also available,
  613. e.g. from 
  614. ftp://ftp.demon.co.uk/pub/emulators/spectrum/magazines/emulate/ and
  615. ftp://ftp.nvg.unit.no/pub/sinclair/snaps/discmag/emulate/
  616.  
  617. ============================== Other Web Pages: ==============================
  618.  
  619. http://hal.cling.gu.se/~cl0polau/zx.html
  620. Sinclair ZX Spectrum - a bit empty, this page.
  621.  
  622. http://members.aol.com/jozxyqk/specmain.htm
  623. Spectrum Appreciation Society. Windows version of Advanced Lawnmower Simulator
  624. and some sound samples.
  625.  
  626. http://paul.rutgers.edu/~savoiu/spectrum/
  627. Sinclair ZX Spectrum Switchboard - just links.
  628.  
  629. http://sunsite.dcc.uchile.cl/sinclair/
  630. Sinclair Pages - all in Spanish and all very unfinished looking.
  631.  
  632. http://stunix.matsim.udmurtia.su/~alt
  633. Aleksey Titov's [alt@stunix.matsim.udmurtia.su] site; apparently to be up
  634. soon, but hasn't been every time I've tried.
  635.  
  636. http://tachyon.mono.org/~sinclair/
  637. Sinclair Scene - Monochrome BBS's Speccy web page; instructions on how to
  638. access Monochrome and see the actual Sinclair section within. Monochrome is
  639. a telnet-based BBS.
  640.  
  641. http://www.8bit.com/
  642. 8 Bit Universe. Under construction when I looked; but there will be a
  643. Spectrum area. Currently there are two German Spectrum adverts.
  644.  
  645. http://www.afn.org/~afn09039/sinclair.html
  646. Andy's Sinclair Spectrum Page - just a mention of Ant Attack and Speccy
  647. repair, more to come apparently...
  648.  
  649. http://www.aston.ac.uk/~goringgn/
  650. No description yet.
  651.  
  652. http://www.dur.ac.uk/~d44abw/spectrum.html
  653. Spectrum Page - just links.
  654.  
  655. http://www.earth.ox.ac.uk:80/~steve/Spectrum/index.html
  656. Sinclair ZX Spectrum Flyer - some old advertising bumph.
  657.  
  658. http://www-ia.di.fct.unl.pt/~vjr/Spectrum.html
  659. Vitor Rocio's Spectrum stuff - just links, though he promises more in the
  660. future.
  661.  
  662. http://www.il.ft.hse.nl/~ben/sinclair/sinclair.html
  663. Sinclair Page - links and info on SAM Coupe and Dutch QL user group (in
  664. Dutch!).
  665.  
  666. http://www.nvg.unit.no/spectrum/jmg7/
  667. John Garner's Spectrum PD/User Groups page.
  668.  
  669. http://www.ozemail.com.au/~martinf/
  670. Martin Fowler's Australian Retro Computing has links to all sorts of old
  671. computer stuff, with the bonus of local copies of emulators etc. so
  672. Australians don't have to wait ages for the download.
  673.  
  674. http://sol.soc.staffs.ac.uk/cm5bcpmh/sinclair/index.html
  675. Patrick Hill's Sinclair Zone. Some stuff on the C5.
  676.  
  677. http://www.wam.umd.edu/~audley/english/speccy.html
  678. Damian Audley's Speccy Page - mostly links for Mac emulators etc.
  679.  
  680. http://zipi.fi.upm.es/~a920142/spectrum.html
  681. Eduardo Garcφa Gallego's Spectrum page - just links.
  682.  
  683. ================================ News Group: =================================
  684.  
  685. Well, I'd guess you know about the newsgroup if you're reading this, but
  686. maybe not, so...
  687.  
  688. news:comp.sys.sinclair
  689. (or just comp.sys.sinclair if you're not using a web browser)
  690.  
  691. Mailing list (the mailing list is a feed from the newsgroup):
  692. Send mail to lserv@psg.com with the following in the BODY of the message (not
  693. the subject as previously stated in this FAQ - sorry!):
  694.  
  695. subscribe sincnews yourusername@your.domain
  696.  
  697. Don't put anything else in the body of the message.
  698.  
  699. ==================================== IRC: ====================================
  700.  
  701. The channels #spectrum and #sinclair are now officially registered with
  702. DALnet; here are some DALnet servers:
  703.  
  704. liberator.dal.net (UK) (port 7000)
  705. irc.dal.net (USA) (port 6667)
  706. igc.dal.net (USA) (port 6667)
  707.  
  708. If you are interested, please email Theo Develegas [icarus@acropolis.net -
  709. his IRC nick is _Wind_], so that he can fix some online meetings. He also
  710. plans to have an IRC section on his home page (see above).
  711.  
  712. ============================== Other Resources: ==============================
  713.  
  714. gopher://gopher.nvg.unit.no
  715. A Spectrum-related files search engine. Searches on company and game names as
  716. well as file names.
  717.  
  718. Venture BBS in Finland: +358-0-8092126
  719. The Bus Stop BBS in England: +44 1273 774121 (go to area 34)
  720.  
  721. There is also Alchemist News, a tape-based Spectrum magazine. Past issues can
  722. be found on NVG: ftp://ftp.nvg.unit.no/pub/sinclair/snaps/discmag/alchnews/
  723. and you are best off reading one of them for more information.
  724.  
  725. ******************************************************************************
  726. ********************************** EMULATORS *********************************
  727. ******************************************************************************
  728.  
  729. Authors, where known, are in (brackets) after the name of the emulator. Email
  730. addresses are in [square brackets]. PLEASE don't bother these guys asking for
  731. an emulator; there are plenty of places to get the emulators from, and I now
  732. list example addresses.
  733.  
  734. The features of each emulator are listed in the following set order:
  735.  
  736. a) Emulation: 48/128/+2/+3/Multiface/Disciple/Interface 1/etc.
  737. b) Loadable formats - e.g. .SNA, .Z80 etc.
  738. c) Saveable formats.
  739. d) Real tape loading - type of support offered.
  740. e) Requirements - video, processor etc.
  741. f) Speed.
  742. g) Status: freeware/shareware/commercial/etc.
  743. h) Good points.
  744. i) Bad points.
  745. j) Other comments.
  746. k) Site available from. Please note that these are not the *only* places to
  747.    get the emulator from; there are many other sites, but the directories
  748.    may be different. Try a WWW/FTP search for the name of the archive file
  749.    if the site listed is too slow for you.
  750.  
  751. Emulators for MS-DOS PCs:
  752. -------------------------
  753.  
  754. 1. Elwro 800-3 Jr v1.0 (Piotr Schmidt & Piotr Wolter)
  755.  
  756.    a) Emulates an Elwro - not 100% compatible with ZX Spectrum (the real
  757.       Elwro had problems with JetPac while other games were ok) - with
  758.       two disk drives accessed via * commands (e.g. SAVE * "file") with
  759.       capacity of about 700kB. These are physically files.
  760.    b) Loads files from disk. Snapshots/tape files?
  761.    c) Saves files to disk. Snapshots/tape files?
  762.    d) Real tape support?
  763.    e) Requires Hercules, CGA or EGA.
  764.    f) Speed?
  765.    g) Commercial only.
  766.    h) Capable of running CP/M. Changeable interrupt frequency (45, 50,
  767.       65, 70 Hz). Comes with utility to read the real Elwro Junior disks on
  768.       PC.
  769.    i) Bad points?
  770.    j) All system messages are in Polish.
  771.    k) Available from?
  772.  
  773. 2. JPP (Arnt Gulbrandsen [agulbra@nvg.unit.no])
  774.  
  775.    a) Emulates 48K Spectrum, Kempston joystick (using PC joystick).
  776.    b) Loads .SNA snapshots and from sampled tapes (.VOC).
  777.    c) Saves .SNA snapshots.
  778.    d) Tape support (read-only) via sampled sound files (.VOC).
  779.    e) Requires VGA. Real-speed version requires 286 or above.
  780.    f) 386/25MHz or faster is needed for the best perfomance. 486/25MHz
  781.       or 386/44MHz is needed for good sound emulation.
  782.    g) Freeware.
  783.    h) Includes program for reading and converting snapshots from MGT disks.
  784.       Also includes a very old version of SPConv.
  785.    i) Screws up system screen mode on quit. Restore with MODE CO80 command.
  786.       R register imperfectly emulated. No rainbowing.
  787.    j) Two versions supplied; one for slower machines, and one (PJPP) for
  788.       faster machines; PJPP has better emulation and emulates the FLASH
  789.       attribute and the border. No longer being updated.
  790.    k) Available from ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/jpp.zip
  791.       http://www.nvg.unit.no/spectrum is maintained by the author, but does
  792.       not have any specific mention of JPP.
  793.  
  794. 3. Sinclair v0.99 (previously SPECTRUM in this FAQ) / VGASPEC / SPEC386
  795.                                                                 (Pedro Gimeno)
  796.    a) Emulates 48K Spectrum.
  797.    b) Loads .SP snapshots.
  798.    c) Saves .SP snapshots.
  799.    d) Loads from tapes through a wire connected to the parallel port.
  800.    e) Requires VGA, 286. (386 for version 0.99D - SPEC386.EXE)
  801.    f) Matches real Spectrum speed at 386/25MHz.
  802.    g) Shareware.
  803.    h) Good points?
  804.    i) R register and I/O (other than tape) are not emulated.
  805.    j) VGASPEC emulator is an *illegal* prerelease of this emulator.
  806.       All documentation and onscreen messages in Spanish.
  807.    k) Available from
  808.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/vgaspec.zip
  809.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/span099d.zip
  810.  
  811. 4. Sinclair v2.00 (Pedro M. R. Salaz [pedrom@goliat.ugr.es])
  812.  
  813.    a) Emulates 48K Spectrum.
  814.    b) Loads .SIT snapshots and from .BLK tape files.
  815.    c) Saves .SIT snapshots and to .BLK tape files.
  816.    d) Real tape support via a seperate program only supplied with registered
  817.       version.
  818.    e) Requires VGA.
  819.    f) Speed quite good on a 486SX/25.
  820.    g) Shareware; unregistered version has nag screen that renders the built-in
  821.       debugger practically unusable. Registered version comes with utility to
  822.       convert .SP snapshots (from the above similarly named emulator!) to .SIT
  823.       format, can save Spectrum screen to .PCX screens and comes with a
  824.       tape loader program, plus a disk full of games as .BLK files.
  825.    h) Built-in debugger (much like Borland's Turbo Debugger) for stepping
  826.       through, breakpointing, modifying etc. Z80 code (including the ROM).
  827.    i) Speed varies with what the Spectrum program is doing.
  828.    j) Available in both Spanish and English versions. The .BLK file format is
  829.       the same as Z80's .TAP format. I don't think this emulator has any link
  830.       to the other one of the same name.
  831.    k) Available from the author's web site at
  832.       http://www.ugr.es/~pedrom/sinclair.htm as well as
  833.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/sinceng2.zip
  834.  
  835. 5. SP / Polish emulator (Author?)
  836.  
  837.    a) Emulates 48K Spectrum.
  838.    b) Doesn't load snapshots. Loads from .SPC/.ZX tape files.
  839.    c) Doesn't save snapshots. Saves to .SPC/.ZX tape files.
  840.    d) No real tape support.
  841.    e) Requires CGA or EGA and a ROM file called ROM.SPC - this file is just a
  842.       16Kb ROM dump, identical to the SPECTRUM.ROM file included with JPP and
  843.       xz80.
  844.    f) Speed not known.
  845.    g) Freeware?
  846.    h) Built in MON-like debugger (press F8) for stepping through Z80 code.
  847.    i) No accompanying documentation at all. Colour palette a bit odd.
  848.    j) No other comments.
  849.    k) Available from
  850.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/polish.lzh
  851.  
  852. 6. The Spectrum Emulator / SPECEM / Irish emulator (Kevin J. Phair)
  853.  
  854.    a) Emulates 48K Spectrum with Multiface 1, Kempston joystick (with cursor
  855.       keys and Alt).
  856.    b) Loads .PRG snapshots and files from 'tape' - i.e. your hard disk.
  857.    c) Doesn't save snapshots. Saves files to hard disk.
  858.    d) No real tape support.
  859.    e) Requires 16MHZ 286, EGA or better.
  860.    f) Works reasonably fast on 286 and a bit faster than necessary on
  861.       386/486 systems. 386/40MHz or 486/25MHz is needed for good sound
  862.       emulation.
  863.    g) Freeware, but a donation to the author gets you the source code plus
  864.       'various utilities'.
  865.    h) Includes program for loading snapshots from MGT/Datel Plus-D disks.
  866.       Comes with a Z80 disassembler written in BASIC, and a speed testing
  867.       program. Ran at least one snapshot (Scumball) that no other emulator
  868.       could manage (JPP's documentation makes a mention of this one not
  869.       working - Arnt thought it was a bad snapshot).
  870.    i) Imperfect R register emulation. Allows modification of the ROM (though
  871.       it does get refreshed to normal condition whenever loading/saving).
  872.    j) Onscreen display of Z80 registers (can be disabled, but not removed from
  873.       the screen). Attributes can be disabled for faster emulation.
  874.    k) Available from
  875.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/irish.zip
  876.  
  877. 7. SP_UKV / SP_EMU (Author?)
  878.  
  879.    a) Emulates 48K/128K Spectrum with TR-DOS (Technology Research Disk
  880.       Operating System for the BetaDisk 3.5" disk drive).
  881.    b) Loads .SNA (both standard 48K and a new 128K version) and 128K .Z80
  882.       snapshots.
  883.    c) Saves .SNA (48/128) and 128K .Z80 snapshots.
  884.    d) Real tape support?
  885.    e) Requires VGA.
  886.    f) Rather slow on a 486SX/25.
  887.    g) Shareware. Registered version has an excellent Turbo Debugger style
  888.       debugger (similar to Sinclair v2.00's one).
  889.    h) Good points?
  890.    i) Bad points?
  891.    j) Usually found as SP_UKV.ARJ along with SP_EMU.ARJ; the latter being a
  892.       cracked version which appears to be enable all the options only
  893.       available if you register it. The help screen is identical to the one on
  894.       the Polish emulator - was that an old version?
  895.    k) Available from
  896.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/sp_ukv.arj
  897.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/sp_emu.arj
  898.  
  899. 8. ZX-Spectrum 128K + TR-DOS 1.05 / SP105 (Author?)
  900.  
  901.    a) Emulates 48K/128K Spectrum with TR-DOS.
  902.    b) Loads?
  903.    c) Saves?
  904.    d) Real tape support?
  905.    e) Requires VGA.
  906.    f) Speed?
  907.    g) Status?
  908.    h) Good points?
  909.    i) Refuses point blank to run in a Windows DOS session. Actually, should
  910.       this be a good point? ;)
  911.    j) All messages and documentation in Russian... if anyone fancies doing a
  912.       translation, I'd be very grateful! Written by somebody from Moscow on
  913.       FidoNet; no email address for them.
  914.    k) Available from
  915.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/sp105.arj
  916.  
  917. 9. Warajevo v1.2 (Zeljko Juric [Z.JURIC@zamir-sa.ztn.zer.de] and
  918.                    Samir Ribic [S.RIBIC@zamir-sa.ztn.zer.de])
  919.    a) Emulates 48K/128K/+2 Spectrum, ZX Printer, Interface 1 (only RS232),
  920.       Kempston joystick (with cursor keys and + or ~ keys as fire or with PC
  921.       joystick or mouse), 128's keypad.
  922.    b) Loads .SNA and .Z80 snapshots and from near-perfect virtual tape (.TAP)
  923.       format - this is not the same as Z80's .TAP format.
  924.    c) Saves .Z80 snapshots and to .TAP tape files.
  925.    d) Supports loading from real tapes only via an RS232 link from a real
  926.       Spectrum.
  927.    e) Requires 286, Hercules, CGA, EGA or VGA.
  928.    f) Around 15% slower than Z80; not noticeable on anything more powerful
  929.       than a 386.
  930.    g) Freeware, though the authors welcome donations, in return for which you
  931.       at least get your name listed in the documentation of the next release.
  932.    h) Better AY-sound through PC speaker than any other PC emulator. Built-in
  933.       debugger, though not as friendly as the ones in Sinclair v2.00 and
  934.       SP_UKV. Can create stand-alone snapshot files that don't need to be
  935.       loaded into an emulator. Comes with suite of utilities built into a
  936.       single program - for converting from various formats, holding a database
  937.       of games, etc. Lots of options.
  938.    i) Colour palette looks a bit odd.
  939.    j) Written under very poor conditions during war in Bosnia. Generally
  940.       considered the second best Speccy emulator on the PC.
  941.    k) Available from
  942.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/warajevo-spectrum-120.zip
  943.  
  944. 10. WSpecem v1.11 (Rui F. Ribeiro [rff-ribe@csm.uwe.ac.uk] until June 1996)
  945.    a) Emulates 48K Spectrum with Kempston joystick.
  946.    b) Loads just about every snapshot and tape format there is, including SLT.
  947.    c) Saves just about every snapshot and tape format there is, but not SLT.
  948.    d) Real tape support provided via an extra program.
  949.    e) Requires MS Windows 3.1, 3.11 or 95, WinG.
  950.    f) Around 25-30% Spectrum speed on a 486SX/25 @ 800x600 res, 64K colour
  951.       Cirrus video card, 8MB machine. Runs at a bit over 100% speed on a P75
  952.       with otherwise identical setup. Note these speeds are for 1x1 scaled
  953.       window with a /3 frame rate. Larger sizes and full frame rate are
  954.       slower.
  955.    g) Freeware - GPL; all the author wants is a postcard.
  956.    h) Resizable window, with quick 1, 2 and 3 times normal size settings as
  957.       well. Quick save/load function for saving a snapshot and reloading it
  958.       without going through a file selector. Drag and drop snapshot loading.
  959.       Source (in C) supplied. Saves Spectrum screen to SCR and PCX files.
  960.    i) Doesn't save SLT snapshots yet. And my machine isn't fast enough :( 
  961.    j) The very first Spectrum emulator for MS Windows.
  962.    k) Available from
  963.       http://lia01.unizar.es/curro/wspecem.zip
  964.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/wspv111.zip
  965.  
  966. 11. Z80 v3.03 (Gerton Lunter [gerton@math.rug.nl])
  967.  
  968.    a) Emulates 48K/128K Spectrum with Multiface 1/128, cursor, Sinclair and
  969.       Kempston joysticks, AMS Mouse, Disciple disk interface, Interface 1 and
  970.       Microdrives, SamRam (author's own ROM with a basic MON-like debugger).
  971.    b) Loads .SNA and .Z80 snapshots, including level-loader support, and from
  972.       .TAP tape files.
  973.    c) Saves .Z80 snapshots and to .TAP tape files.
  974.    d) Loads from sample tapes (.VOC) and direct from Sound Blaster MIC input,
  975.       or from parallel port using a custom interface (all these only in the
  976.       registered version, and the parallel port interface itself costs extra -
  977.       though a diagram is provided if you want to build your own). Contrary to
  978.       what several people think, this support *does* allow loading of turbo-
  979.       loaders, speedlock games, etc.
  980.    e) Requires Hercules, CGA, EGA or VGA.
  981.    f) Can be up to 200% Spectrum speed on a 486SX/25, depending on emulation
  982.       options chosen.
  983.    g) Shareware. Registered version has real tape support and can be slowed
  984.       down, and comes with several utilities (for converting from various
  985.       formats) and source code (mixture of assembler and C).
  986.    h) Most user-friendly emulator; very good menu-interface and documentation.
  987.       Good high-resolution colour emulation (rainbowing!).
  988.    i) 128K sound can be a bit wobbly.
  989.    j) Usually considered to be the best emulator available for any platform.
  990.       Earlier versions were pretty good but do not compete with version 3.03,
  991.       though version 3.02, which was released on a PC Format cover disk, had
  992.       speed control whereas 3.03 does not unless you register it. However, the 
  993.       PC Format version is not distributable - if you have it and didn't buy
  994.       that issue of PC Format, their lawyers may want to talk to you! Version 
  995.       3.04 expected soon; it will have, among other updates, support for .SLT
  996.       snapshots. A Windows version is also in development.
  997.    k) Available from
  998.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/z80-303.zip
  999.  
  1000. 12. Z80-TR-DOS 2.02 (modified version of Z80 3.02 by VitaSoft)
  1001.  
  1002.    a) As Z80, with addition of TR-DOS emulation.
  1003.    b) As Z80.
  1004.    c) As Z80.
  1005.    d) No real tape support; if you want that, you'll need to register a real
  1006.       version of Z80.
  1007.    e) As Z80.
  1008.    f) As Z80.
  1009.    g) An illegal hack.
  1010.    h) As Z80. Version 3.02 of Z80 had slightly poorer high resolution colour
  1011.       emulation however; and this hack is the same.
  1012.    i) As Z80.
  1013.    j) This program is an obviously modified copy of Z80 version 3.02 (as
  1014.       released on a PC Format cover disk) with Russian documentation. The
  1015.       title screen has some cyrillic text on it along with what I presume is
  1016.       a phone number (In Russia? Of whoever is behind VitaSoft?).
  1017.    k) Not made available at Gerton's request, nor will I reveal the site I got
  1018.       it from. No doubt it will soon turn up from somebody else less honest
  1019.       than me though...
  1020.  
  1021. 13. ZX Spectrum-Emulator v1.0s / SPECEMU (Bernd Waschke)
  1022.  
  1023.    a) Emulates 48K Spectrum, Kempston joystick (using PC's analogue or digital
  1024.       joystick).
  1025.    b) Loads .SEM snapshots.
  1026.    c) Saves .SEM snapshots.
  1027.    d) Real tape support (registered version only) via a Soundblaster card, but
  1028.       you have to manually calibrate it with a number.
  1029.    e) Requires 386DX/40 and 1Mb of RAM.
  1030.    f) About 75% of normal Spectrum speed on a 486SX/25.
  1031.    g) Shareware. Some options not present in unregistered version.
  1032.    h) POKE facility. Also has what appears to be a Game-Genie/Game Wizard-like
  1033.       option to automatically find POKEs (registered version only).
  1034.    i) Doesn't emulate flags register properly; in particular, the H flag.
  1035.       BRIGHT attribute not emulated.
  1036.    j) All documentation and onscreen messages in German. Anyone fancy
  1037.       translating it?
  1038.    k) Available from
  1039.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/specemu_1_0s.zip
  1040.  
  1041. 14. x128 v0.4 (James McKay [com40014@paisley.ac.uk] until June 1996)
  1042.  
  1043.    a) Emulates 48K/128K Spectrum, Kempston/Sinclair/Cursor joysticks.
  1044.    b) Loads .SNA, .Z80 and .SLT snapshots, and from Z80's .TAP tape files.
  1045.    c) Saves .Z80 and .SLT snapshots.
  1046.    d) No real tape support.
  1047.    e) Requires VGA.
  1048.    f) About 50% of normal Spectrum speed on a 486SX/25.
  1049.    g) Freeware.
  1050.    h) Hi-res emulation of screen and left & right border allowing colours
  1051.       in an 8x1 block (rainbowing). 128K sound is very good. Now has a
  1052.       file selector and much better user interface than previous versions.
  1053.    i) Some changeable options require re-compilation.
  1054.    j) Also available for UNIX/Linux systems with X Windows (X11).
  1055.    k) Available from author's home page (until some time in June 1996) at
  1056.       http://diana40.paisley.ac.uk:80/~com40014/ as well as
  1057.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/pc/x128v04.zip
  1058.  
  1059.  
  1060. Emulators for CBM Amiga:
  1061. ------------------------
  1062.  
  1063. 1. KGB v1.3
  1064.  
  1065.    a) Emulates 48K Spectrum, cursor joystick (with cursor keys) and Kempston
  1066.       joystick (with Amiga joyport 2).
  1067.    b) Loads .ZX snapshots.
  1068.    c) Saves .ZX snapshots.
  1069.    d) Loads/saves from/to real tapes via a sound-digitiser.
  1070.    e) Requires monochrome or colour.
  1071.    f) Speed not known.
  1072.    g) Freeware?
  1073.    h) Has a pitch-compensated mode, that transposes the sound two octaves
  1074.       up (handy on slow Amigas).
  1075.    i) Doesn't multitask. Isn't completely compatible with ZX-Spectrum; several
  1076.       games don't work, e.g. Chronos, Starstrike II.
  1077.    j) No other comments.
  1078.    k) Available from
  1079.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/amiga/kgb-1.3.lha
  1080.  
  1081. 2. Speccylator v1.0 (Richard Carlsson [richardc@csd.uu.se])
  1082.  
  1083.    a) Emulates 48K Spectrum.
  1084.    b) Loads .SNA snapshots, no tape support.
  1085.    c) Saves .SNA snapshots, no tape support.
  1086.    d) No real tape support.
  1087.    e) Requires just any Amiga and around 300Kb of free memory.
  1088.    f) 'Faster than most' - except Peter McGavin's Spectrum on a 68000-based
  1089.       Amiga.
  1090.    g) Freeware.
  1091.    h) Fully multitasking, nice graphical interface, better sound than Peter
  1092.       McGavin's Spectrum. Can dump Spectrum screen to an IFF ILBM file.
  1093.       Preferences can be set globally and for individual snapshots. Better
  1094.       Z80 emulation than ZXAM.
  1095.    i) No particular bad points, unless you count lack of features - e.g.
  1096.       there's no joystick support.
  1097.    j) The idea behind the project was to create a Z80 emulation kernel that
  1098.       could run on any 68000 machine, i.e. not using any Amiga specifics.
  1099.       The Z80 emulator kernel can therefore be used for an emulator on any
  1100.       other 68000-based machine, e.g. the Atari ST. Not updated for some time
  1101.       due to author being busy with other things, but he will be making some
  1102.       updates soon (having seen ZXAM!).
  1103.    k) Available from author's homepage:
  1104.       http://www.csd.uu.se/~richardc/
  1105.  
  1106. 3. ZXAM v2.0 (Toni Pomar [tpomar@jet.es])
  1107.  
  1108.    a) Emulates 48K Spectrum, Kempston, Sinclair II and Cursor joysticks. Also
  1109.       emulates the 128K's AY-8910 sound chip, so 128K-enhanced games that use
  1110.       only the sound chip and not the extra RAM often work and give better
  1111.       sound.
  1112.    b) Loads .SNA and .SP snapshots. Can also apparently load just about any
  1113.       format of snapshot via Rexx scripts. Loads tape files from disk.
  1114.    c) Saves .SNA (and .SP?) snapshots. Can apparently save just about any
  1115.       format of snapshot via Rexx scripts. Saves tape files to disk.
  1116.    d) Real tape support via a custom tape interface (diagram and instructions
  1117.       to make this are supplied).
  1118.    e) Kickstart 2.04 and 68020 or higher required.
  1119.    f) Apparently 'impressive' on an A1200.
  1120.    g) Shareware.
  1121.    h) Runs in a window on Workbench screen, on a separate draggable screen, or
  1122.       in exclusive mode. Automatic speed adjustment for fast machines. Can
  1123.       save snapshots to a real tape for loading on a real Spectrum. Can load
  1124.       PowerPacked snapshots if you have the powerpacker.library in the LIBS:
  1125.       drawer.
  1126.    i) At least 38 games (including Chronos and Starstrike II) do not work; so
  1127.       emulation obviously isn't perfected.
  1128.    j) Author is working on fixing problems that cause those games not to work,
  1129.       along with a built-in debugger, full 128K emulation and tape loading via
  1130.       sound samples. There is a thing called the 'ZX Poke Guide' which is not
  1131.       an emulator but instead it's an AmigaGuide by Richard Koerber
  1132.       [rkoerber@tfh.dssd.sub.org] full of POKEs (about 677 games). It uses the
  1133.       ARexx port of ZXAM to make the pokes and run/stop the emulator from the
  1134.       AmigaGuide itself.
  1135.    k) Available from author's homepage:
  1136.       http://web.jet.es/~tpomar/ (that last slash is very important!) as well
  1137.       as the 'misc' directory on AmiNet. The ZX Poke Guide (v2.0) can also be
  1138.       found there, e.g.:
  1139.       http://ftp.wustl.edu/pub/aminet/misc/emu/ZXPokeGuide20.lha
  1140.  
  1141. 4. Spectrum v1.7 (Peter McGavin [peterm@kea.grace.cri.nz])
  1142.  
  1143.    a) Emulates 48K Spectrum, cursor joystick (with cursor keys) and Kempston
  1144.       joystick (with Amiga joyport 2).
  1145.    b) Loads .SNA snapshots and tape files from seperate .header and .bytes
  1146.       files on Amiga disks.
  1147.    c) Saves .SNA snapshots and tape files to seperate .header and .bytes files
  1148.       on Amiga disks.
  1149.    d) Load/saves Spectrum files from/to tapes through a sound-digitiser.
  1150.    e) Toni Pomar says this one is 68000 only and incompatible with Kickstart
  1151.       2.0 and up. Comment on speed, below, seems to disagree with this...
  1152.    f) Is reasonably fast on 68030/25MHz, but slow on 68000/7.14MHz machines.
  1153.       At least 68020/14MHz (A1200) and FAST RAM are recommended. Not as fast
  1154.       as ZXAM.
  1155.    g) Freeware?
  1156.    h) Multitasks.
  1157.    i) Colour palette is a bit strange.
  1158.    j) Very old, and not supported any more.
  1159.    k) Available from
  1160.       gopher://micros.hensa.ac.uk:70/11/micros/amiga/dos/t/t042
  1161.  
  1162. 5. ZX-Spectrum v4.71 (Jeroen Kwast [jkt@gesasdsc.nt.getronics.nl])
  1163.    a) Emulates 48K Spectrum.
  1164.    b) Loads?
  1165.    c) Saves?
  1166.    d) Real tape support?
  1167.    e) Requires?
  1168.    f) Speed?
  1169.    g) Status?
  1170.    h) Good points?
  1171.    i) Bad points?
  1172.    j) No other comments.
  1173.    k) Available from 'misc' directory on AmiNet, e.g.:
  1174.       ftp://src.doc.ic.ac.uk/pub/aminet/misc/emu/zxspectrum4.71.lha
  1175.  
  1176. 5. ZX Spectrum Emulator v0.10 (A.Schifano & V.Gervasi)
  1177.    a) Emulates 48K Spectrum, presumably, and Kempston joystick.
  1178.    b) Loads snapshots (type unknown) and from tape (AmigaDOS files).
  1179.    c) Presumably saves snapshots and to AmigaDOS files.
  1180.    d) Real tape support via a tape interface.
  1181.    e) Requires any Amiga.
  1182.    f) Speed? Has three video modes; monochrome, where you choose the overall
  1183.       PAPER and INK colour for the screen; colour 1 with limited updates of
  1184.       the screen and colour 2 with full updates (slower).
  1185.    g) Appears to be a commercial product. The demo does not include tape
  1186.       support or snapshot support, and resets after a certain amount of time.
  1187.    h) Good points?
  1188.    i) Spectrum ROM doesn't come with the emulator; apparently Amstrad denied
  1189.       permission (perhaps because this is a commercial product). A hacked
  1190.       version of the demo does include it, illegally.
  1191.    j) Information here comes from a brief Readme file in a hacked demo version
  1192.       of the emulator. More information welcome.
  1193.    k) Available from DigiMail in Italy:
  1194.       Digimail Srl         Phone: ++39-2-427621
  1195.       Via Coronelli 10       Fax: ++39-2-427768
  1196.       20146 Milano
  1197.       ITALY
  1198.  
  1199.  
  1200. Emulators for Atari ST(e)/TT/Falcon:
  1201. ------------------------------------
  1202.  
  1203. 1. ZX-SPECTRUM Emulator / Specci v2.07 (Christian Gandler)
  1204.  
  1205.    a) Emulates 48K Spectrum, Interface 1 (Microdrives and RS232), Kempston and
  1206.       Sinclair joysticks.
  1207.    b) Doesn't load snapshots. Loads tape files from seperate files on Atari
  1208.       disks.
  1209.    c) Doesn't save snapshots. Saves tape files to seperate files on Atari
  1210.       disks.
  1211.    d) No real tape support.
  1212.    e) Requires at 1Mb of memory.
  1213.    f) Speed is around 70% (at best) of real Spectrum on plain STs.
  1214.    g) Freeware?
  1215.    h) Also runs on TTs and Falcons (in ST low/high resolutions).
  1216.    i) Bad points?
  1217.    j) All documentation in German. There is a poorly-translated version of the
  1218.       documentation supplied (taken from a 'Pompey Pirates' disk that had this
  1219.       emulator on it) with at least one of the copies on the FTP sites.
  1220.    k) Available from
  1221.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/atari/zx_sp207.zip
  1222.       gopher://micros.hensa.ac.uk:70/11/micros/atari/tos/o/o096
  1223.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/atari/atari-speccy.zip
  1224.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/atari/atari-spectrum.zip
  1225.       (last two may be earlier versions)
  1226.  
  1227. Emulators for Acorn Achimedes:
  1228. ------------------------------
  1229.  
  1230. 1. !MZX v1.0 (Graham Willmott)
  1231.  
  1232.    a) Emulates 48K Spectrum.
  1233.    b) Loads .SNA snapshots.
  1234.    c) Saves .SNA snapshots.
  1235.    d) No real tape support?
  1236.    e) Requirements?
  1237.    f) Runs at ~60% normal spectrum speed on an ARM2 machine, and considerably
  1238.       faster on other machines - currently there is no speed control available.
  1239.    g) Freeware?
  1240.    h) Multitasks (can also single task if required).
  1241.    i) Doesn't emulate R register correctly, or certain undocumented
  1242.       instructions.
  1243.    j) No other comments.
  1244.    k) Available from
  1245.       gopher://micros.hensa.ac.uk:70/11/micros/arch/riscos/b/b166
  1246.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/arm/mzx110.spark
  1247.  
  1248. 2. !Speccy (Karsten Witt)
  1249.  
  1250.    a) Emulates 48K Spectrum.
  1251.    b) Doesn't load snapshots. Loads tape files from disk in its own file
  1252.       format.
  1253.    c) Doesn't save snapshots. Saves tape files from disk in its own file
  1254.       format.
  1255.    d) Comes with application instructions for transferring tape files to/from
  1256.       real tapes through the serial port.
  1257.    e) Requirements?
  1258.    f) Runs at normal Spectrum speed on an ARM2 machine and very fast on an
  1259.       ARM3 machine. The speed is adjustable.
  1260.    g) Freeware?
  1261.    h) Has an enhanced keyboard layout - there are keyboard short cuts to Caps
  1262.       Lock, Extended Mode, and also the cursor keys, the keypad, and other
  1263.       symbols (commas, colons etc.) can be entered easily.
  1264.    i) Doesn't fully implement the R register - however this doesn't affect
  1265.       most programs.
  1266.    j) At the moment does not load/save in any snapshot formats. Apparently,
  1267.       the author is currently working on making it run in the desktop
  1268.       (multi-tasking) and allowing loading of .SNA files.
  1269.    k) Available from?
  1270.       
  1271. 3. Speculator (Dave Lawrence)
  1272.  
  1273.    a) Emulates 48K Spectrum.
  1274.    b) Loads in its own file format.
  1275.    c) Saves in its own file format.
  1276.    d) No real tape support.
  1277.    e) Requirements?
  1278.    f) Is extremely fast on an ARM3 machine. To get normal Spectrum speed an
  1279.       ARM2 machine or an ARM3 machine with the cache turned off is required.
  1280.    g) Status not known - not officially released yet.
  1281.    h) It is possible to return to the desktop from the emulator, and then
  1282.       re-enter the emulator at the point you left off.
  1283.    i) Bad points?
  1284.    j) Is not officially available at the moment - any copies circulating are
  1285.       pirate copies. As a result, documentation of the file format is not
  1286.       complete, and the conversion programs supplied with it do not work
  1287.       correctly.
  1288.    k) Not yet available?
  1289.  
  1290. 4. Z80Em (Mike Borcherds [borchrds.teaching@physics.oxford.ac.uk])
  1291.  
  1292.    a) Emulates 48K Spectrum.
  1293.    b) Loads .RAW, .SNA and .Z80 snapshots with level-loader support. Loads
  1294.       tape files from Z80's .TAP files.
  1295.    c) Saves .Z80 snapshots and to .TAP tape files.
  1296.    d) Can load/save? from/to? sample tapes (.VOC).
  1297.    e) Requirements?
  1298.    f) Runs a little slowly on an A3010.
  1299.    g) Commercial - can be bought along with a CD full of games, the CD coming
  1300.       cheaper this way than if bought separately. However, see question 6 in
  1301.       the Frequently Asked Questions list (section 1 of this document).
  1302.    h) Good points?
  1303.    i) Level-loader support expects different filenames from the standard -
  1304.       instead of "GAME1.DAT" it wants just "1", etc.
  1305.    j) A new version is being worked on that will support v2 and v3 Z80
  1306.       snapshots, 128K emulation and possibly .SLT snapshots.
  1307.    k) Available from Warm Silence Software; their homepage is at
  1308.       http://www.comlab.ox.ac.uk/oucl/users/robin.watts/wss/index.html
  1309.  
  1310.  
  1311. Emulators for UNIX/Linux/etc.:
  1312. ------------------------------
  1313.  
  1314. 1. Spectrum / French emulator (Jean-Francois Lozevis [lozevis@Email.ENST.Fr])
  1315.  
  1316.    a) Emulates 48K Spectrum.
  1317.    b) Loads .SNA and .Z80 snapshots.
  1318.    c) Saves .SNA snapshots.
  1319.    d) No real tape support.
  1320.    e) Requires X-Windows (X11) and Linux with an 80386 processor (or above)
  1321.       because the emulation code is written in assembler.
  1322.    f) Apparently runs at full speed on a 486DX2/66.
  1323.    g) Public domain. Author allows modification, just wants to retain his
  1324.       credit as the original author, and wouldn't say no to a postcard.
  1325.    h) Sound support for Linux via /dev/audio.
  1326.    i) Imperfect emulation; Rhino in Sabre Wulf problems (see the Technical
  1327.       Information section) and some large BASIC programs don't work. Author
  1328.       doesn't know why. Poor user interface.
  1329.    j) All messages in French.
  1330.    k) Available from
  1331.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/other/french_spectrum.zip
  1332.  
  1333. 2. xzx v1.0 (Des Herriott [dnh@mfltd.co.uk but no reponse from this address])
  1334.  
  1335.    a) Emulates 48K/128K/+3 Spectrums, Kempston joystick (with keys).
  1336.    b) Loads .SNA and .Z80 snapshots with level-loader support, tape files from
  1337.       UNIX files.
  1338.    c) Saves .SNA and .Z80 snapshots, tape files to UNIX files.
  1339.    d) No real tape support.
  1340.    e) Requires X-Windows (X11). Makes heavy use of the MIT-SHM X11 extension,
  1341.       and works a good deal slower without it.
  1342.    f) Needs approx 486/33 to run at the correct speed (this is from general
  1343.       impressions, not exact timings). Sparc 10 or DEC Alpha will run it very
  1344.       fast.
  1345.    g) Freeware.
  1346.    h) Sound support for Sparc and NEC EWS workstations via /dev/audio.
  1347.       Sound support for Linux via direct speaker manipulation. X server bell
  1348.       audio for most X servers (traps ROM BEEP routine only).
  1349.    i) Poor user interface; e.g. no file selector - you have to move to your
  1350.       terminal window and type in name of snapshots to load/save.
  1351.    j) Author seems to have disappeared! Email address above probably no good.
  1352.    k) Available from
  1353.       http://hpux.csc.liv.ac.uk/hpux/X11/Misc/xzx-0.5.1.html
  1354.       
  1355. 3. xzx v2.0 - modified version (Erik Kunze [Erik.Kunze@philosys.de] &
  1356.                                 Des Herriott)
  1357.    a) Emulates 48/128/+3 with Multiface 128, Interface 1, Kempston Joystick.
  1358.    b) Loads .SNA and .Z80 (up to v3.03 format) snapshots with level-loader
  1359.       support, tape files from UNIX files.
  1360.    c) Saves .SNA and .Z80 snapshots, tape files from UNIX files.
  1361.    d) No real tape support.
  1362.    e) Requires X11, Linux (for AY emulation).
  1363.    f) A bit faster then original xzx 1.0.2.
  1364.    g) Still freeware.
  1365.    h) Sound support for Sparc via /dev/audio. Sound support for Linux via
  1366.       direct speaker manipulation. AY emulation via /dev/dsp (Linux only).
  1367.       X server's bell audio for most X servers (traps the ROM BEEP routine
  1368.       only).
  1369.    i) Still without a file selector. Some known bugs, that Erik has not yet
  1370.       found.
  1371.    j) Erik still needs beta testers! Mail to speccy@fantasy.muc.de. This
  1372.       could be the very first Spectrum +3 emulator...
  1373.    k) Soon to be available from:
  1374.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/other/xzx-2.0.0beta.tar.gz
  1375.    
  1376. 4. xz80 v0.1e (Ian Collier [Ian.Collier@comlab.ox.ac.uk])
  1377.  
  1378.    a) Emulates 48K Spectrum and ZX Printer (via .XBM image files!).
  1379.    b) Loads .SNA and .Z80 snapshots with level-loader support, tape files
  1380.       from disk or from Z80's .TAP files.
  1381.    c) Saves .SNA snapshots and tape files to disk or to Z80's .TAP files.
  1382.    d) Real tape support not known - mentions sound input (e.g. via /dev/audio
  1383.       device) but I am unsure what Ian means by this.
  1384.    e) Requires X-Windows (X11) or SVGALib (for Linux console version). MIT-SHM
  1385.       extension also probably a good idea.
  1386.    f) Faster than xzx and x128. The Linux console version runs at about 35%
  1387.       real Spectrum speed on a 486SX/25. True-speed emulation without hogging
  1388.       the CPU on fast machines.
  1389.    g) Freeware (GNU Public License).
  1390.    h) Realistic sound output via /dev/audio. Emulates 'stripey border' effect
  1391.       - very important ;-)
  1392.    i) Poor user interface; e.g. no file selector - you have to move to your
  1393.       terminal window and type in name of snapshots to load/save.
  1394.    j) No other comments.
  1395.    k) Available from author's homepage at
  1396.       http://www.comlab.ox.ac.uk/oucl/users/ian.collier/Spectrum/index.html
  1397.  
  1398. 5. x128 v0.4 (James McKay [com40014@paisley.ac.uk] until June 1996)
  1399.  
  1400.    a) Emulates 48K/128K Spectrum.
  1401.    b) Loads .SNA, .Z80 and .SLT snapshots, and from Z80's .TAP tape files.
  1402.    c) Saves .Z80 and .SLT snapshots.
  1403.    d) No real tape support.
  1404.    e) Requires X-Windows (X11). MIT-SHM extension also a very good idea.
  1405.    f) Rather slow; about 25-35% of real Spectrum speed on a 486SX/25 Linux
  1406.       box.
  1407.    g) Freeware.
  1408.    h) Hi-res emulation of screen and left & right border allowing colours
  1409.       in an 8x1 block (rainbowing). Now has a file selector and much better
  1410.       user interface than previous versions.
  1411.    i) Some changeable options require re-compilation.
  1412.    j) Also available for DOS.
  1413.    k) Available from author's home page (until some time in June 1996) at
  1414.       http://diana40.paisley.ac.uk:80/~com40014/ as well as
  1415.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/other/x128_0.4.tar.gz
  1416.  
  1417. Emulators for Apple Macintosh:
  1418. ------------------------------
  1419.  
  1420. 1. MacSpeccy v1.1 (Danny Keogan [djkeogan@unix2.tcd.ie])
  1421.  
  1422.    a) Emulates 48K Spectrum.
  1423.    b) Loads .SNA and (probably) .Z80 snapshots.
  1424.    c) Saves?
  1425.    d) No real tape support?
  1426.    e) Requires 68040.
  1427.    f) Seems to be extremely slow.
  1428.    g) Freeware?
  1429.    h) Allows copying of Spectrum screen to clipboard.
  1430.    i) No flash attribute emulation.
  1431.    j) The oldest emulator for the Mac.
  1432.    k) Available from
  1433.       http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/app/
  1434.       mac-speccy-11.hqx
  1435.  
  1436. 2. Mac Spectacle v1.8.2 (Guenter Woigk [kio@vanilla.nbg.sub.org])
  1437.  
  1438.    a) Emulates 48K/128K Spectrum, joystick (type?).
  1439.    b) Loads .SNA and .Z80 snapshots and .SCR screens, tape files from
  1440.       Z80's .TAP files.
  1441.    c) Saves .SNA and .Z80 snapshots, saves .SCR and .PICT screens.
  1442.    d) No real tape support; but there is a program called ZX-Loader to
  1443.       enable the use of PowerSpectrum's facilities for this.
  1444.    e) Needs MacOS 7.0 or higher, Color QuickDraw and at least a 68020
  1445.       CPU or a PowerMAC.
  1446.    f) Speed?
  1447.    g) Freeware?
  1448.    h) Single/double/quadruple sized window, all monitor depths (2 and
  1449.       4 bit slow). High-res screen & border effects. Background or
  1450.       exclusive execution. Better emulation than other emulators for
  1451.       the Mac - so more games run on this one than the others.
  1452.    i) Bad points?
  1453.    j) The newest and most regularly updated emulator for the Mac.
  1454.    k) Available from author's FTP area; get this file first:
  1455.       ftp://lst.informatik.uni-erlangen.de//incoming/kio/readme
  1456.       or
  1457.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/mac/Spectacle-1.8.2.hqx
  1458.       and ZX-Loader is available from
  1459.       ftp://ftp.nvg.unit.no/pub/sinclair/utils/mac/ZX_Loader_1.0.4.hqx
  1460.  
  1461. 3. PowerSpectrum v1.0 (Bo Lindbergh [d88-bli@nada.kth.se])
  1462.  
  1463.    a) Emulates 48K Spectrum, Kempston joystick.
  1464.    b) Loads .SNA snapshots.
  1465.    c) Saves .SNA snapshots.
  1466.    d) Does realtime tape I/O through the microphone jack (this probably
  1467.       requires 44 kHz sound hardware).
  1468.    e) Requires a PowerMac - won't run on a 680x0 machine.
  1469.    f) Runs at true Spectrum speed.
  1470.    g) Freeware?
  1471.    h) 1x1, 2x2, 3x3, and 4x4 screen emulation. Has perfect sound. Supports all
  1472.       undocumented Z80 instructions.
  1473.    i) Bad points?
  1474.    j) No other comments.
  1475.    k) Available from
  1476.       http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/app/
  1477.       power-spectrum-10-ppc.hqx
  1478.  
  1479. Emulators for NeXTStep:
  1480. -----------------------
  1481.  
  1482. 1. NXSpectrum (Ian Stephensen [ian.stephenson@insignia.com] &
  1483.                Ian Collier [Ian.Collier@comlab.ox.ac.uk])
  1484.    a) Emulates 48K Spectrum. ZX Printer still?
  1485.    b) As xz80.
  1486.    c) As xz80.
  1487.    d) As xz80.
  1488.    e) Requirements?
  1489.    f) Speed?
  1490.    g) Freeware (GNU Public License).
  1491.    h) Good points as xz80?
  1492.    i) Bad points as xz80?
  1493.    j) This is a quick hack of xz80 to make it run under NeXTStep. And yes,
  1494.       this is from the same guy who does SoftPC for Insignia!
  1495.    k) Available from
  1496.       ftp://pitcher.peak.org/pub/next/submissions/
  1497.       NXSpectrum.app.NIHS.compressed
  1498.       (directory may have changed by the time you read this)
  1499.  
  1500. Emulators for Commodore 64: (information from comp.sys.emulators.misc FAQ)
  1501. ---------------------------
  1502.  
  1503. 1. Spectrum 48
  1504.  
  1505.    a) Emulates Sinclair BASIC only - no Z80 emulation, so no machine code
  1506.       programs work. Microdrive emulated via 1541/1571 disk drive.
  1507.    b) Loads Microdrive files from disk.
  1508.    c) Saves Microdrive files to disk.
  1509.    d) No real tape support?
  1510.    e) Requires just a basic C64.
  1511.    f) Slow - well, it *is* just BASIC and it *is* on a C64!
  1512.    g) Freeware?
  1513.    h) Allows C64 users to see some of the superiority of Sinclair's master-
  1514.       piece (well you try and think of a good point!). And Sinclair BASIC
  1515.       is somewhat more useful than Commodore's attempt.
  1516.    i) Useless for all but the most BASIC of games (pun intended).
  1517.    j) No other comments.
  1518.    k) Available from?
  1519.  
  1520.  
  1521. ******************************************************************************
  1522. ********************************* WHERE IS...? ********************************
  1523. ******************************************************************************
  1524.  
  1525. 1. Imagine/Denton Designs [Stonkers, Frankie goes to Hollywood, etc.]
  1526.    o Dougie Burns (programmer)
  1527.      Last seen in Glasgow as a used car salesman.
  1528.    o Marc Dawson (programmer)
  1529.      Project manager for Barbie the Video Game for software house in
  1530.      Manchester.
  1531.    o John Gibson (programmer - ZZoom/Stonkers)
  1532.      Currently working in the Chester office of Psygnosis and has been for
  1533.      some time.
  1534.    o Fred Gray (musician)
  1535.      Became programmer in Liverpool. Works for Psygnosis, as do most of
  1536.      Denton Designs. Status uncertain since Sony's take over of Psygnosis.
  1537.    o Dave Lawson (director)
  1538.      Last seen running Kinetica Software in Birkenhead.
  1539.    o Ally Noble (artist) and John Heap (programmer)
  1540.      Still own and run Denton Designs.
  1541.    * INFO BY:
  1542.      Stuart Fotheringham [stuarto@stoo.demon.uk]
  1543.      Andrew Toone [andrewt@smallworld.co.uk]
  1544.      Ralph Ferneyhough [ralph@datel.co.uk]
  1545.  
  1546. 2. Gargoyle Games/Faster Than Light [Heavy On The Magick, Lightforce etc.]
  1547.    o Roy Carter
  1548.      Roy Carter is a registered user of Z80 and has given spoken permission
  1549.      to distribute the Gargoyle games. They are (were?) doing things for
  1550.      Psygnosis - not all of them game writing.
  1551.    * INFO BY:
  1552.      Brian Gaff [briang@bgserv.demon.co.uk]
  1553.      Andrew Toone [andrewt@smallworld.co.uk]
  1554.  
  1555. 3. Design Design [Halls Of The Things, Dark Star etc.]
  1556.    o Simon Brattel
  1557.      Runs his own company producing system software
  1558.    o Graham Stafford
  1559.      Works for Psygnosis, as do most of Denton Designs.
  1560.    * INFO BY:
  1561.      Andrew Toone [andrewt@smallworld.co.uk]
  1562.      Jon Ritman [jritman@cix.compulink.co.uk]
  1563.  
  1564. 4. LERM [various tape copiers]
  1565.    o Robert Evans
  1566.      "Not only do I remember Lerm, I did some work for them. Lerm itself was a
  1567.       husband and wife company, in the back room, in the traditional fashion.
  1568.       The husband was a high-flying software type a.k.a my Maths teacher at
  1569.       school."
  1570.      "There was a tendency amongst my group of schoolfriends at the time to
  1571.       use LERM programs more than anything else, because some of us helped Mr
  1572.       Evans (our maths teacher at the time) to write them. If anyone's
  1573.       interested, the company name came from a mixture of Robert Evans' and
  1574.       his wife's initials."
  1575.    * INFO BY:
  1576.      David Smith [davidsm@x.co.uk]
  1577.      Scott Wilding [scott@fizban.demon.co.uk]
  1578.  
  1579. 5. Ultimate Play The Game/Ashby Computers & Graphics (ACG) [Jetpac,
  1580.                                                             Knighlore etc.]
  1581.    o Calling themselves Rare and producing console games for Nintendo, e.g.
  1582.      Donkey Kong Country and Killer Instinct for the new Nintendo Ultra 64.
  1583.    * INFO BY:
  1584.      Dylan Cuthbert [dylan@takoyaki.demon.co.uk]
  1585.  
  1586. 6. Realtime Graphics [3D StarStrike, Starglider, Carrier Command etc.]
  1587.    o Jez San
  1588.      Developing 3D systems for anyone with with enough hardware (Nintendo et.
  1589.      al.)
  1590.    * INFO BY:
  1591.      Andrew Toone [andrewt@smallworld.co.uk]
  1592.  
  1593. 7. Vortex [Android, TLL, Highway Encounter etc.]
  1594.    o Mark Haigh-Hutchinson
  1595.      Working for LucasArts, currently on Shadows of the Empire for the
  1596.      Nintendo 64. Mark organises the Vortex Emulation Package for several
  1597.      machines, including the Spectrum. This contains a number of the Vortex
  1598.      games and is freely distributed.
  1599.    o Costa Panayi
  1600.      Doing some consultancy design work for a children's toys company in the   
  1601.      south of England (believed to be Chicco).
  1602.    * INFO BY:
  1603.      Arnt Gulbrandsen [agulbra@flode.nvw.unit.no]
  1604.      Miguel Melo [mmelo@ea.com]
  1605.      Mark Haigh-Hutchinson [mhh@lucasarts.com]
  1606.  
  1607. 8. OTHERS:
  1608.    o Marcus Berkmann [YS or SU writer - aka Dr. Berkmann]
  1609.      Now writing for the Mail on Sunday.
  1610.    * INFO BY:
  1611.      Keith Willoughby [keith@cowtown.demon.co.uk]
  1612.  
  1613.    o John F. Cain [Booty]
  1614.      Still lives on the Isle of Man, as he did when he wrote Booty. He has a
  1615.      gold cassette of Booty on his wall!
  1616.    * INFO BY:
  1617.      Mark Walker [M.S.Walker@cs.cf.ac.uk]
  1618.  
  1619.    o Alan Cox [Blizzard Pass]
  1620.      Now doing network stuff; has thought about a Linux version of Blizzard
  1621.      Pass. He has a home page where you can retrieve some adventure stuff (but
  1622.      not Blizzard Pass itself, as that is owned by whoever bought the rights
  1623.      from Tynesoft) - http://shadow.cabi.net/
  1624.    * INFO BY:
  1625.      Alan Cox [Alan.Cox@linux.org]
  1626.  
  1627.    o Mel Croucher [ID]
  1628.      Writing for magazines; including the Great Moments In Computing strip for
  1629.      Computer Shopper.
  1630.    * INFO BY:
  1631.      Damien Burke [D.M.Burke-CSSE94@cs.bham.ac.uk until June 14th 1996]
  1632.  
  1633.    o Robert Erskine [anyone know anything he wrote?] - robert@smallworld.co.uk     
  1634.      Working for Smallworld Cambridge on GIS.
  1635.    * INFO BY:
  1636.      Stephen Smith [stevo@jonlan.demon.co.uk]
  1637.  
  1638.    o Eugene Evans
  1639.      Currently working in Chicago at Viacom New Media. He's been there for a
  1640.      good few years before which it was Icom Simulations, Inc. the people who
  1641.      did the CD-ROM Sherlock Holmes games, T-MON for the Mac, and Dracula
  1642.      Unleashed.
  1643.    * INFO BY:
  1644.      phyd@interaccess.com [Brian Leake]
  1645.  
  1646.    o Glenn Flood [tape inlay art for Astroblaster and others]
  1647.      Programming and drawing still; has a nice web site showing off a lot of
  1648.      his artwork at http://www.ftech.net/~floodnet/
  1649.    * INFO BY:
  1650.      Glenn Flood [glenn@floodnet.demon.co.uk]
  1651.  
  1652.    o Julian Gollop and Nick Gollop [Chaos, LaserSquad, Rebelstar]
  1653.      Owners and programmers of Mythos (UFO, X-COM).
  1654.    * INFO BY:
  1655.      Miguel Melo [mmelo@ea.com]
  1656.  
  1657.    o Simon Goodwin [Crash Tech Tips writer]
  1658.      Was still writing for Sinclair QL World when the final issue (July 94)
  1659.      came out. Simon Goodwin writes for Amiga magazines and Computer Shopper.
  1660.      He was also seen at the Last Sinclair and SAM show in Gloucester. Messing
  1661.      with both Speccy emulator for Amiga and hardware Speccy emulation for
  1662.      IBM PC.
  1663.    * INFO BY:
  1664.      Jenni the Satsuma [yockneyj@cs.man.ac.uk]
  1665.      Brian Gaff [briang@bgserv.demon.co.uk]
  1666.  
  1667.    o John Hollis, Nick Lambert
  1668.      John Hollis founded Hollis Research, who develop MIDI sequencers
  1669.      (including "Trackman" for AtariST).
  1670.    * INFO BY:
  1671.      Stephen K. Mulrine [robotron@moroder.demon.co.uk]
  1672.  
  1673.    o Graeme Kidd [Crash writer]
  1674.      News editor for Computer Shopper magazine. At least I think it's the same
  1675.      guy...
  1676.    * INFO BY:
  1677.      Damien Burke [D.M.Burke-CSSE94@cs.bham.ac.uk until June 14th 1996]
  1678.  
  1679.    o Tony Mack [Gyroscope, Paper Boy, Super Sprint, Championship Sprint]
  1680.      Now writes games for the Sega Saturn (currently converting Cybersled to
  1681.      it).
  1682.    * INFO BY:
  1683.      Mark Gordon [100306.3045@compuserve.com]
  1684.  
  1685.    o Teresa Maughan [Your Sinclair editor - aka T'zer]
  1686.      Now writing for The Mac magazine, either that or someone with the
  1687.      same name is...
  1688.    * INFO BY:
  1689.      Oops, I've lost the posting. Gimme a shout if you were the one who did
  1690.      that Alta Vista search!
  1691.  
  1692.    o Fergus McNeill [Delta 4 - Bored Of The Rings, The Boggit, etc.]
  1693.      Head of design at Sales Curve Interactive (SCi), ex-Storm. SCi have just
  1694.      released a Point and Click called "Kingdom 'O Magic" which was designed
  1695.      by Fergus. Fergus has kindly agreed to free distribution of the Delta 4
  1696.      games, as long as it is *free* - no money may change hands. He cannot
  1697.      speak for any of his games with the Abstract Concepts logo, as they are
  1698.      owned by Activision.
  1699.    * INFO BY:
  1700.      Chris Wild [chrisw@sci.co.uk]
  1701.  
  1702.    o Neil Pawson [Mighty Magus] - neil@smallworld.co.uk
  1703.      Working for Smallworld Cambridge on GIS.
  1704.    * INFO BY:
  1705.      Stephen Smith [stevo@jonlan.demon.co.uk]
  1706.  
  1707.    o Dominic Prior [part of Gyron team] - dominic@smallworld.co.uk
  1708.      Working for Smallworld Cambridge on GIS.
  1709.    * INFO BY: 
  1710.      Stephen Smith [stevo@jonlan.demon.co.uk]
  1711.  
  1712.    o Jon Ritman [co-author of Batman, Head over Heels, Matchday, etc.]
  1713.      Jon Ritman is reading/posting to comp.sys.sinclair and is the director of
  1714.      a new(ish) videogame company in the UK called Cranberry Source. Contrary
  1715.      to previous assertions in this FAQ, he definitely *didn't* do a Computer
  1716.      Science degree at UCL and he and Bernie Drummond wrote only one Gameboy
  1717.      game (Monster Max). Jon doesn't care if you copy his old games, but then
  1718.      as he says - he doesn't own the rights to them.
  1719.    * INFO BY:
  1720.      Vartan Narinian [vsa@ic.ak.uk]
  1721.      Peter Watsons [pwats@cyberspace.com]
  1722.      Jon Ritman [jritman@cix.compulink.co.uk]
  1723.  
  1724.    o Mike Singleton [Lords Of Midnight, Doomdark's Revenge etc.]
  1725.      Mike Singleton is alive and well and writing Lords Of Midnight games.
  1726.      for the IBM PC. Chris Wild did PC versions of Lords of Midnight and
  1727.      Doomdark's Revenge.
  1728.    * INFO BY:
  1729.      Chris Wild [chrisw@sci.co.uk]
  1730.  
  1731.    o Matthew Smith [Styx, Manic Miner, Jet Set Willy]
  1732.      Nothing concrete on the father of the miner :(
  1733.      Previous rumours range from him working in some computer store in the
  1734.      south of England to the latest; a motorbike mechanic called Mat living in
  1735.      a commune in the Netherlands; he mentioned to someone that he "wrote some
  1736.      video games in the 80's, got burnt out, ended up in a mental
  1737.      institution".
  1738.    * INFO BY:
  1739.      Stephen Smith [stevo@jonlan.demon.co.uk]
  1740.  
  1741.    o Phil South [aka Snouty; Your Sinclair writer]
  1742.      Writes for Computer Shopper magazine.
  1743.    * INFO BY:
  1744.      Damien Burke [D.M.Burke-CSSE94@cs.bham.ac.uk until June 14th 1996]
  1745.  
  1746.    o Kevin Thoms [Football Manager]
  1747.      Currently working as a Windows consultant/programmer.
  1748.    * INFO BY:
  1749.      Miguel Melo [mmelo@ea.com]
  1750.  
  1751.    o Sandy White (Ant Attack, Zombie Zombie)
  1752.      Currently working on a super new top secret engine while laying about on
  1753.      a beach in Greece.
  1754.    * INFO BY:
  1755.      Jon Ritman [jritman@cix.compulink.co.uk
  1756.  
  1757. 9. Spectrum people reading comp.sys.sinclair
  1758.    o Simon Cooke [csl@fs2.ee.umist.ac.uk] was Your Sinclair's technical
  1759.      editor, and has put up extracts from YS issues at his web site at
  1760.      http://jumper.mcc.ac.uk/~simonc/ys.
  1761.    o Alan Fothergill [afotherg@oracle.com] from Imagine.
  1762.    o Stuart Fotheringham [stuarto@stoo.demon.co.uk] did work on those
  1763.      beautiful graphics in Odin games Nodes of Yesod, Robin O' the Wood, Arc
  1764.      of Yesod, and Heartland.
  1765.    o Paul Holmes [paulh@unlimited.com] from Elite wrote and co-wrote Robotron
  1766.      2084, Bomb Jack I & II, Wild West Hero, Dustman, designed and co-designed
  1767.      Grand National, Frank Bruno's Boxing and others.
  1768.    o Mark Haigh-Hutchinson [mhh@lucasarts.com] of Vortex pops up occasionally,
  1769.      mostly to mention updates to the Vortex Emulation Package, which is a
  1770.      collection of Vortex games (TLL, Highway Encounter etc.) and instructions
  1771.      for them, and is freely distributable.
  1772.    o John Ritman [jritman@cix.compulink.co.uk] of Head Over Heels fame. Also
  1773.      co-wrote Batman, Matchday and other excellent games with Bernie Drummond.
  1774.    o Duncan Sinclair [sinclair@dis.strath.ac.uk] worked on an unfinished
  1775.      Tapper with Paul Holmes.
  1776.  
  1777.  
  1778. ******************************************************************************
  1779. ******************************** FILE FORMATS ********************************
  1780. ******************************************************************************
  1781.  
  1782. This section will be expanded as I get the time to do so; if you are desperate
  1783. for information about a particular format right now, a good source of
  1784. information is the source to SPConv v1.10; available from (among other
  1785. locations): ftp://ftp.nvg.unit.no/pub/sinclair/utils/generic/spcnv110.zip
  1786.  
  1787. ============================== Snapshot formats ==============================
  1788.  
  1789. Those handled by SPConv v1.10 are marked with an asterisk (*):
  1790.  
  1791. .ACH or .archimedes *
  1792.         Snapshots used by !Speccy. .ACH is the extension SPConv uses for these
  1793.         files; so that filename-challenged operating systems like DOS can
  1794.         handle such files for conversion purposes.
  1795. .PRG *  Program file used by Specem.
  1796. .RAW *  Raw memory dump from a real Spectrum; just the 48Kb of RAM and a CODE
  1797.         header on the front.
  1798. .SEM    Snapshots used by ZX Spectrum-Emulator, the German PC-based emulator.
  1799. .SIT *  Situation file used by Sinclair v2.00.
  1800. .SLT    Super level loader snapshot. Used by x128 and WSpecEm at time of
  1801.         writing. Basically a v2/3 Z80 snapshot with level data appended.
  1802. .SNA or .snap or .snapshot *
  1803.         Mirage Microdrive snapshot format, used by most emulators.
  1804. .SNA    128Kb version of SNA. Distinguished by file size of 131103 bytes
  1805.         instead of 49179 bytes for 48Kb version.
  1806. .SNX *  Extended version of SNA, used by Speccy on the Atari ST.
  1807. .SP  *  Snapshots used by SPECTRUM.
  1808. .SP  *  Snapshots used by VGASPEC.
  1809. .SP     Snapshots used by ZX Spectrum (Mac emulator).
  1810. .Z80 *  Snapshots used by Z80 and several other emulators. Three versions in
  1811.         existence, the latest of which (v3) is not supported by all these
  1812.         emulators. Very flexible; support for SamRam, 128K snapshots, etc.
  1813. .ZX  *  Snapshots used by KGB.
  1814.  
  1815. For the purposes of these descriptions, the following definitions apply:
  1816.  
  1817. byte = byte-sized variable; word = 2 bytes, long = 4 bytes. All stored in
  1818. little-endian (Intel) format unless otherwise stated.
  1819.  
  1820. a) .SLT (super level loader trap used by x128 v0.4+, WSpecEm etc.)
  1821.  
  1822.    The level loader trap has one annoying disadvantage; lots of extra files
  1823.    lying around for each game. The super level loader was thought up (by me,
  1824.    natch :-)) to replace this multi-file format with a single snapshot file
  1825.    containing all the level data files. It has been designed in co-operation
  1826.    with James McKay (x128), Gerton Lunter (Z80), Rui Ribeiro (WSpecEm) and
  1827.    Darren Salt (helping with Z80Em), so is well-supported already. The
  1828.    format was designed with future expansion in mind, as you will see.
  1829.  
  1830.             Size   Description
  1831.    ------------------------------------------------------------------------
  1832.             varies bytes  Z80 snapshot (version 2+)
  1833.             3      bytes  Three null bytes (compatibility; see below)
  1834.             3      bytes  "SLT" (signature)
  1835.    ---- the following blocks make up a table to access the data files -----
  1836.             2      word   data type (0 = end of table, 1 = level data)
  1837.             2      word   data identifier (for type 1 this is level number)
  1838.             4      long   data length
  1839.             2      word   data type (0 = end of table, 1 = level data)
  1840.             2      word   data identifier (for type 1 this is level number)
  1841.             4      long   data length
  1842.             ... and so on
  1843.    ---- the following blocks are the data files themselves ----------------
  1844.             varies bytes data
  1845.             varies bytes data
  1846.             ... and so on
  1847.    ------------------------------------------------------------------------
  1848.  
  1849.    The three null bytes after the end of the snapshot are for compatibility
  1850.    reasons; older versions of Z80 would crash if the extra data was just
  1851.    appended to the snapshot. With these three null bytes, they just complain
  1852.    about an error in the snapshot file instead. This, of course, presumes you
  1853.    have renamed the .SLT file to .Z80 and attempted to load it into an older
  1854.    emulator!
  1855.  
  1856.    After the "SLT" signature, there is a table of data types and sizes. Only
  1857.    data types 0 (end of table) and 1 (level data) are supported at the moment,
  1858.    so if other values are encountered an emulator should ignore that data
  1859.    block.
  1860.  
  1861.    To read a level data file using .SLT, the emulator should find the correct
  1862.    entry in the table (type = 1, identifier matching the A register when the
  1863.    ED/FB instruction was encountered), get its size from the table and
  1864.    calculate its position from the total of sizes of data blocks previous to
  1865.    the required one, added to the position of the end of the table. E.g., to
  1866.    load level 2 from a .SLT snapshot with this table:
  1867.  
  1868.    Position  Size  Value  Description
  1869.    ------------------------------------------------------------------------
  1870.    40000     2     1      data type = level data
  1871.    40002     2     1      data identifier = level 1
  1872.    40004     4     256    data length = 256 bytes
  1873.    40008     2     1      data type = level data
  1874.    40010     2     2      data identifier = level 2
  1875.    40012     4     128    data length = 128 bytes
  1876.    40016     2     0      data type = end of table
  1877.    40018     2     *      data identifier = unused (may as well be zero)
  1878.    40020     4     *      data length =  unused (may as well be zero)
  1879.    40024     256   *      data block for level 1
  1880.    40280     128   *      data block for level 2
  1881.    ------------------------------------------------------------------------
  1882.    (* = could be anything)
  1883.  
  1884.    So, the size of level 2 is 128 bytes, and its located at the end of the
  1885.    table (40024) + the length of all previous blocks (just 256 here) = 40280.
  1886.  
  1887.    Level data is packed in the same way as Z80 snapshot memory banks are.
  1888.  
  1889.    The trainspotter award seekers of you may wonder why a whole word is used
  1890.    for the data identifier; after all, this is the level number and is held in
  1891.    the A register, so could be just a byte. For level data, correct. But
  1892.    future expansion is better served by a word. For the same reasons, the data
  1893.    length is held as a long word instead of just a word; level data will never
  1894.    exceed 64Kb (indeed, could not even be as much as 48Kb), but future data
  1895.    types may do so. One example; embedding a scan of a game's inlay card in
  1896.    the file is possible, and that file could exceed 64Kb easily.
  1897.  
  1898.    See http://www.cs.bham.ac.uk/~dmb/speccy/edfb.html for my own proposals
  1899.    for future data types for inclusion in .SLT snapshots.
  1900.  
  1901. b) .SNA, .snap or .snapshot (Mirage Microdrive format used by many emulators)
  1902.  
  1903.    This format is the most well-supported of all snapshot formats (though Z80
  1904.    is close on its heels) but has a drawback:
  1905.  
  1906.       As the program counter is pushed onto the stack so that a RETN 
  1907.       instruction can restart the program, 2 bytes of memory are overwritten.
  1908.       This will usually not matter; the game (or whatever) will have stack
  1909.       space that can be used for this. However, if this space is all in use
  1910.       when the snap is made, memory below the stack space will be corrupted.
  1911.       According to Rui Ribeiro, the effects of this can sometimes be avoided
  1912.       by replacing the corrupted bytes with zeros; e.g. take the PC from the,
  1913.       stack pointer, replace that word with 0000 and then increment SP. This
  1914.       worked with snapshots of Batman, Bounder and others which had been
  1915.       saved at critical points. Theoretically, this problem could cause a
  1916.       complete crash on a real Spectrum if the stack pointer happened to be
  1917.       at address 16384; the push would try and write to the ROM. How different
  1918.       emulators handle this is not something I know...
  1919.  
  1920.    When the registers have been loaded, a RETN command is required to start
  1921.    the program. IFF2 is short for interrupt flip-flop 2, and for all practical
  1922.    purposes is the interrupt-enabled flag. Set means enabled.
  1923.  
  1924.    Offset   Size   Description
  1925.    ------------------------------------------------------------------------
  1926.    0        1      byte   I
  1927.    1        8      word   HL',DE',BC',AF'
  1928.    9        10     word   HL,DE,BC,IY,IX
  1929.    19       1      byte   Interrupt (bit 2 contains IFF2, 1=EI/0=DI)
  1930.    20       1      byte   R
  1931.    21       4      words  AF,SP
  1932.    25       1      byte   IntMode (0=IM0/1=IM1/2=IM2)
  1933.    26       1      byte   BorderColor (0..7, not used by Spectrum 1.7)
  1934.    27       49152  bytes  RAM dump 16384..65535
  1935.    ------------------------------------------------------------------------
  1936.    Total: 49179 bytes
  1937.  
  1938. c) .SNA (128Kb version) (SP_EMU)
  1939.  
  1940.    This is simply the SNA format extended to include the extra memory banks
  1941.    of the 128K/+2 machines, and fixes the problem with the PC being pushed
  1942.    onto the stack - now it is located in an extra variable in the file (and
  1943.    is not pushed onto the stack at all) The first 49179 bytes of the
  1944.    snapshot are otherwise exactly as described above, so the full
  1945.    description is:
  1946.  
  1947.    Offset   Size   Description
  1948.    ------------------------------------------------------------------------
  1949.    0        27     bytes  SNA header (see above)
  1950.    27       16Kb   bytes  RAM bank 5 \
  1951.    16411    16Kb   bytes  RAM bank 2  } - as standard 48Kb SNA file
  1952.    32795    16Kb   bytes  RAM bank n / (currently paged bank)
  1953.    49179    2      word   PC
  1954.    49181    1      byte   port 7FFD setting
  1955.    49182    1      byte   (unknown - padding for above byte?)
  1956.    49183    16Kb   bytes  remaining RAM banks in ascending order
  1957.    ...
  1958.    ------------------------------------------------------------------------
  1959.    Total: 131103 or 147487 bytes
  1960.  
  1961.    The third RAM bank saved is always the one currently paged, even if this
  1962.    is page 5 or 2 - in this case, the bank is actually included twice. The
  1963.    remaining RAM banks are saved in ascending order - e.g. if RAM bank 4 is
  1964.    paged in, the snapshot is made up of banks 5, 2 and 4 to start with, and
  1965.    banks 0, 1, 3, 6 and 7 afterwards. If RAM bank 5 is paged in, the
  1966.    snapshot is made up of banks 5, 2 and 5 again, followed by banks 0, 1, 3,
  1967.    4, 6 and 7.
  1968.  
  1969. d) .SP file format used in "ZX Spectrum", the ZX Spectrum emulator for
  1970.    Macintosh from Lorenzo Jose Ayuda Serrano.
  1971.  
  1972.    Offset   Size   Description
  1973.    ------------------------------------------------------------------------
  1974.    0        2      byte   "SP" (signature)
  1975.    2        2      word   Program length in bytes (49152 bytes)
  1976.    4        2      word   Program location (16384)
  1977.    6        8      word   BC,DE,HL,AF
  1978.    14       4      word   IX,IY
  1979.    18       8      word   BC',DE',HL',AF'
  1980.    26       2      byte   R,I
  1981.    28       4      word   SP,PC
  1982.    32       2      word   0 (reserved for future use)
  1983.    34       1      byte   Border color
  1984.    35       1      byte   0 (reserved for future use)
  1985.    36       2      word   Status word
  1986.    ------------------------------------------------------------------------
  1987.  
  1988.    Status word:
  1989.    Bit     Description
  1990.    ------------------------------------------------------------------------
  1991.    15-8    Reserved for future use
  1992.     7-6    Reserved for internal use (0)
  1993.       5    Flash: 0=INK/1=PAPER
  1994.       4    Interrupt pending for execution
  1995.       3    Reserved for future use
  1996.       2    IFF2 (internal use)
  1997.       1    Interrupt Mode: 0=IM1/1=IM2
  1998.       0    IFF1: 0=DI/1=EI
  1999.  
  2000. e) .ZX (KGB v.1.2-1.3) [Contributed by Troels Norgaard]
  2001.    All values stored in big-endian format; on 680x0 the most significant
  2002.    byte goes first.
  2003.  
  2004.    Offset   Size   Description
  2005.    ------------------------------------------------------------------------
  2006.    0        49284  bytes  RAM dump 16252..65535
  2007.    49284    132    bytes  unused, make 0
  2008.    49416    10     word   10,10,4,1,1 (different settings)
  2009.    49426    1      byte   InterruptStatus (0=DI/1=EI)
  2010.    49427    2      byte   0,3
  2011.    49429    1      byte   ColorMode (0=BW/1=Color)
  2012.    49430    4      long   0
  2013.    49434    16     word   BC,BC',DE,DE',HL,HL',IX,IY
  2014.    49450    2      byte   I,R
  2015.    49452    2      word   0
  2016.    49454    8      byte   0,A',0,A,0,F',0,F
  2017.    49462    8      word   0,PC,0,SP
  2018.    49470    2      word   SoundMode (0=Simple/1=Pitch/2=RomOnly)
  2019.    49472    2      word   HaltMode  (0=NoHalt/1=Halt)
  2020.    49474    2      word   IntMode   (-1=IM0/0=IM1/1=IM2)
  2021.    49476    10     bytes  unused, make 0
  2022.    ------------------------------------------------------------------------
  2023.    Total: 49486 bytes
  2024.  
  2025. f) .Z80 (Z80) [from Z80 documentation]
  2026.  
  2027. The old .Z80 snapshot format (for version 1.45 and below) looks like this:
  2028.  
  2029.         Offset  Length  Description
  2030.         ---------------------------
  2031.         0       1       A register
  2032.         1       1       F register
  2033.         2       2       BC register pair (LSB, i.e.  C, first)
  2034.         4       2       HL register pair
  2035.         6       2       Program counter
  2036.         8       2       Stack pointer
  2037.         10      1       Interrupt register
  2038.         11      1       Refresh register (Bit 7 is not significant!)
  2039.         12      1       Bit 0  : Bit 7 of the R-register
  2040.                         Bit 1-3: Border colour
  2041.                         Bit 4  : 1=Basic SamRom switched in
  2042.                         Bit 5  : 1=Block of data is compressed
  2043.                         Bit 6-7: No meaning
  2044.         13      2       DE register pair
  2045.         15      2       BC' register pair
  2046.         17      2       DE' register pair
  2047.         19      2       HL' register pair
  2048.         21      1       A' register
  2049.         22      1       F' register
  2050.         23      2       IY register (Again LSB first)
  2051.         25      2       IX register
  2052.         27      1       Interrupt flipflop, 0=DI, otherwise EI
  2053.         28      1       IFF2 (not particularly important...)
  2054.         29      1       Bit 0-1: Interrupt mode (0, 1 or 2)
  2055.                         Bit 2  : 1=Issue 2 emulation
  2056.                         Bit 3  : 1=Double interrupt frequency
  2057.                         Bit 4-5: 1=High video synchronisation
  2058.                                  3=Low video synchronisation
  2059.                                  0,2=Normal
  2060.                         Bit 6-7: 0=Cursor/Protek/AGF joystick
  2061.                                  1=Kempston joystick
  2062.                                  2=Sinclair 2 Left joystick (or user
  2063.                                    defined, for version 3 .Z80 files)
  2064.                                  3=Sinclair 2 Right joystick
  2065.  
  2066.     Because of compatibility, if byte 12 is 255, it has to be regarded as
  2067.     being 1.  After this header block of 30 bytes the 48K bytes of Spectrum
  2068.     memory follows in a compressed format (if bit 5 of byte 12 is one).
  2069.     The compression method is very simple: it replaces repetitions of at
  2070.     least five equal bytes by a four-byte code ED ED xx yy, which stands
  2071.     for "byte yy repeated xx times".  Only sequences of length at least 5
  2072.     are coded. The exception is sequences consisting of ED's; if they are
  2073.     encountered, even two ED's are encoded into ED ED 02 ED.  Finally,
  2074.     every byte directly following a single ED is not taken into a block,
  2075.     for example ED 6*00 is not encoded into ED ED ED 06 00 but into ED 00
  2076.     ED ED 05 00. The block is terminated by an end marker, 00 ED ED 00.
  2077.  
  2078.     That's the format of .Z80 files as used by versions up to 1.45.
  2079.     Starting from version 2.0, a different format is used, since from then
  2080.     on also 128K snapshots had to be supported.  This new format is used
  2081.     for all snapshots, either 48K or 128K.
  2082.  
  2083.     Version 2.01 and 3.0 .Z80 files start with the same 30 byte header as
  2084.     old .Z80 files used.  Bit 4 and 5 of the flag byte have no meaning
  2085.     anymore, and the program counter (byte 6 and 7) are zero to signal a
  2086.     version 2.01 or version 3.0 snapshot file.
  2087.  
  2088.     After the first 30 bytes, the additional header follows:
  2089.  
  2090.         Offset  Length  Description
  2091.         ---------------------------
  2092.       * 30      2       Length of additional header block (see below)
  2093.       * 32      2       Program counter
  2094.       * 34      1       Hardware mode (see below)
  2095.       * 35      1       If in SamRam mode, bitwise state of 74ls259.
  2096.                         For example, bit 6=1 after an OUT 31,13 (=2*6+1)
  2097.                         If in 128 mode, contains last OUT to 7ffd
  2098.       * 36      1       Contains 0FF if Interface I rom paged
  2099.       * 37      1       Bit 0: 1 if R register emulation on
  2100.                         Bit 1: 1 if LDIR emulation on
  2101.       * 38      1       Last OUT to fffd (soundchip register number)
  2102.       * 39      16      Contents of the sound chip registers
  2103.         55      2       Low T state counter
  2104.         57      1       Hi T state counter
  2105.         58      1       Flag byte used by Spectator (QL spec. emulator)
  2106.                         Ignored by Z80 when loading, zero when saving
  2107.         59      1       0FF if MGT Rom paged
  2108.         60      1       0FF if Multiface Rom paged. Should always be 0.
  2109.         61      1       0FF if 0-8191 is RAM
  2110.         62      1       0FF if 8192-16383 is RAM
  2111.         63      10      5x keyboard mappings for user defined joystick
  2112.         73      10      5x ascii word: keys corresponding to mappings above
  2113.         83      1       MGT type: 0=Disciple+Epson,1=Discipls+HP,16=Plus D
  2114.         84      1       Disciple inhibit button status: 0=out, 0ff=in
  2115.         85      1       Disciple inhibit flag: 0=rom pageable, 0ff=not
  2116.  
  2117.     The value of the word at position 30 is 23 for version 2.01 files, and
  2118.     54 for version 3.0 files.  The starred fields are the ones that
  2119.     constitute the version 2.01 header, and their interpretation has
  2120.     remained unchanged except for byte 34:
  2121.  
  2122.         Value:          Meaning in v2.01        Meaning in v3.0
  2123.         -------------------------------------------------------
  2124.         0               48k                     48k
  2125.         1               48k + If.1              48k + If.1
  2126.         2               SamRam                  48k + M.G.T.
  2127.         3               128k                    SamRam
  2128.         4               128k + If.1             128k
  2129.         5               -                       128k + If.1
  2130.         6               -                       128k + M.G.T.
  2131.  
  2132.     The hi T state counter counts up modulo 4.  Just after the ULA
  2133.     generates its once-in-every-20-ms interrupt, it is 3, and is increased
  2134.     by one every 5 emulated milliseconds.  In these 1/200s intervals, the
  2135.     low T state counter counts down from 17472 to 0, which make a total of
  2136.     69888 T states per frame.
  2137.  
  2138.     The 5 ascii words (high byte always 0) at 73-82 are the keys
  2139.     corresponding to the joystick directions left, right, down (!), up (!),
  2140.     fire respectively.  Shift, Symbol Shift, Enter and Space are denoted by
  2141.     [,],/,\ respectively.  The ascii values are used only to display the
  2142.     joystick keys; the information in the 5 keyboard mapping words
  2143.     determine which key is actually pressed (and should correspond to the
  2144.     ascii values).  The low byte is in the range 0-7 and determines the
  2145.     keyboard row.  The high byte is a mask byte and determines the column.
  2146.     Enter for example is stored as 0x0106 (row 6 and column 1) and 'g' as
  2147.     0x1001 (row 1 and column 4).
  2148.  
  2149.     Byte 60 must be zero, because the contents of the Multiface RAM is not
  2150.     saved in the snapshot file.  If the Multiface was paged when the
  2151.     snapshot was saved, the emulated program will most probably crash when
  2152.     loaded back.
  2153.  
  2154.     Bytes 61 and 62 are a function of the other flags, such as byte 34, 59,
  2155.     60 and 83.
  2156.  
  2157.     Hereafter a number of memory blocks follow, each containing the
  2158.     compressed data of a 16K block.  The compression is according to the
  2159.     old scheme, except for the end-marker, which is now absent.  The
  2160.     structure of a memory block is:
  2161.  
  2162.         Byte    Length  Description
  2163.         ---------------------------
  2164.         0       2       Length of data (without this 3-byte header)
  2165.         2       1       Page number of block
  2166.         3       [0]     Compressed data
  2167.  
  2168.     The pages are numbered, depending on the hardware mode, in the
  2169.     following way:
  2170.  
  2171.         Page    In '48 mode     In '128 mode    In SamRam mode
  2172.         ------------------------------------------------------
  2173.          0      48K rom         rom (basic)     48K rom
  2174.          1      Interface I, Disciple or Plus D rom, according to setting
  2175.          2      -               rom (reset)     samram rom (basic)
  2176.          3      -               page 0          samram rom (monitor,..)
  2177.          4      8000-bfff       page 1          Normal 8000-bfff
  2178.          5      c000-ffff       page 2          Normal c000-ffff
  2179.          6      -               page 3          Shadow 8000-bfff
  2180.          7      -               page 4          Shadow c000-ffff
  2181.          8      4000-7fff       page 5          4000-7fff
  2182.          9      -               page 6          -
  2183.         10      -               page 7          -
  2184.         11      Multiface rom   Multiface rom   -
  2185.  
  2186.     In 48K mode, pages 4,5 and 8 are saved.  In SamRam mode, pages 4 to 8
  2187.     are saved.  In '128 mode, all pages from 3 to 10 are saved.  This
  2188.     version saves the pages in numerical order.  There is no end marker.
  2189.  
  2190. ================================ Tape formats: ===============================
  2191.  
  2192. .BLK    Tape format used by Sinclair v2.00; seems to be identical to Z80's
  2193.         .TAP files.
  2194. .SPC    Tape format used by SP, the Polish emulator.
  2195. .TAP    Tape format used by Z80; supports headerless files and not much else.
  2196. .TAP    Tape format used by Warajevo - supports lots of features; turbo-load,
  2197.         headerless files, etc.
  2198. .VOC    Straight sound sample of a tape; used by several emulators.
  2199. .ZXS    Very flexible tape format, not actually used by any emulators - used
  2200.         to store real Spectrum tapes in a digital format. All come from the
  2201.         ZX Spectrum Software Museum (http://relcom.eu.net/zx/).
  2202.  
  2203. a) .TAP and .BLK (Z80, Sinclair, several others) [from Z80 documentation]
  2204.  
  2205. The .TAP files contain blocks of tape-saved data.  All blocks start with two
  2206. bytes specifying how many bytes will follow (not counting the two length
  2207. bytes). Then raw tape data follows, including the flag and checksum bytes.
  2208. The checksum is the bitwise XOR of all bytes including the flag byte. For
  2209. example, when you execute the line SAVE "ROM" CODE 0,2 this will result:
  2210.  
  2211.              |------ Spectrum-generated data -------|       |---------|
  2212.  
  2213.        13 00 00 03 52 4f 4d 7x20 02 00 00 00 00 80 f1 04 00 ff f3 af a3
  2214.  
  2215.        ^^^^^...... first block is 19 bytes (17 bytes+flag+checksum)
  2216.              ^^... flag byte (A reg, 00 for headers, ff for data blocks)
  2217.                 ^^ first byte of header, indicating a code block
  2218.  
  2219.        file name ..^^^^^^^^^^^^^
  2220.        header info ..............^^^^^^^^^^^^^^^^^
  2221.        checksum of header .........................^^
  2222.        length of second block ........................^^^^^
  2223.        flag byte ............................................^^
  2224.        first two bytes of rom .................................^^^^^
  2225.        checksum (checkbittoggle would be a better name!).............^^
  2226.  
  2227. Note that it is possible to join .TAP files by simply stringing them together,
  2228. for example COPY /B FILE1.TAP + FILE2.TAP ALL.TAP
  2229.  
  2230. For completeness, I'll include the structure of a tape header. A header always
  2231. consists of 17 bytes:
  2232.  
  2233.         Byte    Length  Description
  2234.         ---------------------------
  2235.         0       1       Type (0,1,2 or 3)
  2236.         1       10      Filename (padded with blanks)
  2237.         11      2       Length of data block
  2238.         13      2       Parameter 1
  2239.         15      2       Parameter 2
  2240.  
  2241. The type is 0,1,2 or 3 for a Program, Number array, Character array or Code
  2242. file. A SCREEN$ file is regarded as a Code file with start address 16384 and
  2243. length 6912 decimal. If the file is a Program file, parameter 1 holds the
  2244. autostart line number (or a number >=32768 if no LINE parameter was given) and
  2245. parameter 2 holds the start of the variable area relative to the start of the
  2246. program. If it's a Code file, parameter 1 holds the start of the code block
  2247. when saved, and parameter 2 holds 32768. For data files finally, the byte at
  2248. position 14 decimal holds the variable name.
  2249.  
  2250. =============================== Other formats: ===============================
  2251.  
  2252. .DAT    Data files used by level-loader versions of a game (Z80Em does not use
  2253.         a .DAT extension at all; instead files are just numbered, e.g. "1"
  2254.         instead of "GAME1.DAT").
  2255. .MDR    Microdrive cartridge file as used by Spectator, Carlo Delhez' Speccy
  2256.         emulator for the QL, and other emulators - xzx and Z80.
  2257. .OUT    OUT logs from Z80.
  2258. .SCR    Screendumps from Z80 (actually, may be any extension). This is just
  2259.         the 6912 bytes of the Spectrum's screen; 6144 bytes of pixel data (in
  2260.         that horrendous layout we all know and love) followed by 768 bytes of
  2261.         attribute data.
  2262.  
  2263. a) .MDR (Spectator, xzx, Z80) [from Z80 documentation]
  2264.  
  2265. The following information is adapted from Carlo's documentation. It can also
  2266. be found in the 'Spectrum Microdrive Book', by Ian Logan (co-writer of the
  2267. excellent 'Complete Spectrum ROM Disassembly').
  2268.  
  2269. A cartridge file contains 254 'sectors' of 543 bytes each, and a final byte
  2270. flag which is non-zero is the cartridge is write protected, so the total
  2271. length is 137923 bytes. On the cartridge tape, after a GAP of some time the
  2272. Interface I writes 10 zeros and 2 FF bytes (the preamble), and then a
  2273. fifteen byte header-block-with-checksum. After another GAP, it writes a
  2274. preamble again, with a 15-byte record-descriptor-with-checksum (which has a
  2275. structure very much like the header block), immediately followed by the data
  2276. block of 512 bytes, and a final checksum of those 512 bytes. The preamble is
  2277. used by the Interface I hardware to synchronise, and is not explicitly used by
  2278. the software. The preamble is not saved to the microdrive file:
  2279.  
  2280.     Offset Length Name    Contents
  2281.     ------------------------------
  2282.       0      1   HDFLAG   Value 1, to indicate header block
  2283.       1      1   HDNUMB   sector number (values 254 down to 1)
  2284.       2      2            not used
  2285.       4     10   HDNAME   microdrive cartridge name (blank padded)
  2286.      14      1   HDCHK    header checksum (of first 14 bytes)
  2287.  
  2288.      15      1   RECFLG   - bit 0: always 0 to indicate record block
  2289.                           - bit 1: set for the EOF block
  2290.                           - bit 2: reset for a PRINT file
  2291.                           - bits 3-7: not used (value 0)
  2292.      16      1   RECNUM   data block sequence number (value starts at 0)
  2293.      17      2   RECLEN   data block length (<=512, LSB first)
  2294.      19     10   RECNAM   filename (blank padded)
  2295.      29      1   DESCHK   record descriptor checksum (of previous 14 bytes)
  2296.      30    512            data block
  2297.     542      1   DCHK     data block checksum (of all 512 bytes of data
  2298.                            block, even when not all bytes are used)
  2299.     ---------
  2300.     254 times
  2301.  
  2302. (Actually, this information is 'transparent' to the emulator. All it does is
  2303. store 2 times 254 blocks in the .MDR file as it is OUTed, alternatingly of
  2304. length 15 and 528 bytes. The emulator does check checksums, see below; the
  2305. other fields are dealt with by the emulated Interface I software.)
  2306.  
  2307. A used record block is either an EOF block (bit 1 of RECFLG is 1) or contains
  2308. 512 bytes of data (RECLEN=512, i.e.  bit 1 of MSB is 1). An empty record block
  2309. has a zero in bit 1 of RECFLG and also RECLEN=0. An unusable block (as
  2310. determined by the FORMAT command) is an EOF block with RECLEN=0.
  2311.  
  2312. The three checksums are calculated by adding all the bytes together modulo
  2313. 255; this will never produce a checksum of 255. Possibly, this is the value
  2314. that is read by the Interface I if there's no or bad data on the tape.
  2315.  
  2316. In normal operation, all first-fifteen-byte blocks of each header or record
  2317. block will have the right checksum. If the checksum is not right, the block
  2318. will be treated as a GAP. For instance, if you type OUT 239,0 on a normal
  2319. Spectrum with interface I, the microdrive motor starts running and the
  2320. cartridge will be erased completely in 7 seconds. CAT 1 will respond with
  2321. 'microdrive not ready'. Try it on the emulator...
  2322.  
  2323. b) .SCR (Z80, WSpecEm)
  2324.  
  2325. These files are just Spectrum screen dumps, and are simply the 6912 bytes of
  2326. pixel and attribute data found at address 16384, stored on disk in exactly the
  2327. same way as they are stored in memory.
  2328.  
  2329. ******************************************************************************
  2330. *************************** TECHNICAL INFORMATION ****************************
  2331. ******************************************************************************
  2332.  
  2333. ================================= Z80 CPU ====================================
  2334.   
  2335. I had hoped to add some information from several threads on the newsgroup
  2336. (Z80 emulation related facts, BIT and the flags and Z80 interrupts) but just
  2337. never got the time, and probably won't have the opportunity to do so now for
  2338. several months - if the mean time someone wants to compile the relevant
  2339. information together so I can just paste it in, I'd be most grateful ;)
  2340.  
  2341. This section is based on the text contributed by Gerton Lunter, author of the
  2342. "Z80" Spectrum emulator. Marat Fayzullin made some changes which didn't change
  2343. the content and Ian Collier and several others have contributed some extra
  2344. information (some of which conflicts with Gertons - further contributions
  2345. welcome!).
  2346.  
  2347. Most Z80 opcodes are one byte long, not counting a possible byte or word
  2348. operand. The four opcodes CB, DD, ED and FD are shift opcodes: they change the
  2349. meaning of the opcode following them.
  2350.  
  2351. a) CB opcodes:
  2352.   There are 248 different CB opcodes. 
  2353. The block CB 30 to CB 37 is missing from the official list. These 
  2354. instructions, usually denoted by the mnemonic SLL, Shift Left Logical,
  2355. shift left the operand and make bit 0 always one. These instructions are
  2356. quite commonly used. For example, Bounder and Enduro Racer use them.
  2357.  
  2358. b) DD and FD opcodes:
  2359.   The DD and FD opcodes precede instructions using the IX and IY 
  2360. registers. If you look at the instructions carefully, you see how they 
  2361. work:
  2362.  
  2363.     2A nn      LD HL,(nn)
  2364.     DD 2A nn   LD IX,(nn)
  2365.     7E         LD A,(HL)
  2366.     DD 7E d    LD A,(IX+d)
  2367.  
  2368. A DD opcode simply changes the meaning of HL in the next instruction. If a
  2369. memory byte is addressed indirectly via HL, as in the second example, a
  2370. displacement byte is added. Otherwise the instruction simply acts on IX
  2371. instead of HL (A notational awkwardness, that will only bother assembler
  2372. and disassembler writers: JP (HL) is not indirect; it should have been
  2373. denoted by JP HL). If a DD opcode precedes an instruction that doesn't use
  2374. the HL register pair at all, the instruction is executed as usual.
  2375. However, if the instruction uses the H or L register, it will now use the
  2376. high or low halves of the IX register! Example:
  2377.  
  2378.     44         LD B,H
  2379.     FD 44      LD B,IYh
  2380.  
  2381. These types of 'undocumented' instructions are used in very many programs. By
  2382. the way, many DD or FD opcodes after each other will effectively be NOPs,
  2383. doing nothing except repeatedly setting the flag "treat HL as IX" (or IY) and
  2384. taking up 4 T states (But try to let MONS disassemble such a block.).
  2385.  
  2386. From Joseph S. Myers [jsm28@hermes.cam.ac.uk]:
  2387. [DD and FD have no effect on ED instructions, or on EX DE,HL. If an
  2388. instruction references both (HL), and one of H and L, then (HL) becomes
  2389. (IX+d) or (IY+d), but H or L stays as it is. For example, DD6601 is
  2390. LD H,(IX+01).
  2391.  
  2392. DDCB and FDCB prefix instructions in which the next byte is a displacement
  2393. byte, and the byte after that is the instruction byte. If the CB instruction
  2394. references (HL), the effect is as expected; otherwise, the instruction seems
  2395. to act on (IX+d) or (IY+d), and, if the instruction is such as to change the
  2396. value acted on (any instruction other than BIT), the new value is loaded into
  2397. the register the CB instruction would act on. Thus:
  2398.  
  2399. CB07 is RLC A; DDCB0107 is effectively RLC (IX+01) followed by LD A,(IX+01).]
  2400.  
  2401. c) ED opcodes:
  2402.    There are a number of unofficial ED instructions, but none of them are very
  2403. useful. The ED opcodes in the range 00-3F and 80-FF (except for the block
  2404. instructions of course) do nothing at all but taking up 8 T states and
  2405. incrementing the R register by 2.  Most of the unlisted opcodes in the range
  2406. 40-7F do have an effect, however. The complete list:
  2407.  
  2408. (*  = not official, i.e. not listed in Zilog documentation)
  2409. (++ = documented in Spectrum manual)
  2410.  
  2411.         ED40   IN B,(C)                 ED60   IN H,(C)
  2412.         ED41   OUT (C),B                ED61   OUT (C),H
  2413.         ED42   SBC HL,BC                ED62   SBC HL,HL
  2414.         ED43   LD (nn),BC               ED63 * LD (nn),HL    ++
  2415.         ED44   NEG                      ED64 * NEG
  2416.         ED45   RETN                     ED65 * RET
  2417.         ED46   IM 0                     ED66 * IM 0
  2418.         ED47   LD I,A                   ED67   RRD
  2419.         ED48   IN C,(C)                 ED68   IN L,(C)
  2420.         ED49   OUT (C),C                ED69   OUT (C),L
  2421.         ED4A   ADC HL,BC                ED6A   ADC HL,HL
  2422.         ED4B   LD BC,(nn)               ED6B * LD HL,(nn)    ++
  2423.         ED4C * NEG                      ED6C * NEG
  2424.         ED4D   RETI                     ED6D * RET
  2425.         ED4E * IM 0/1                   ED6E * IM 0/1
  2426.         ED4F   LD R,A                   ED6F   RLD
  2427.         ED50   IN D,(C)                 ED70 * IN (C)        ++ as IN F,(C)
  2428.         ED51   OUT (C),D                ED71 * OUT (C),0
  2429.         ED52   SBC HL,DE                ED72   SBC HL,SP
  2430.         ED53   LD (nn),DE               ED73   LD (nn),SP
  2431.         ED54 * NEG                      ED74 * NEG
  2432.         ED55 * RET                      ED75 * RET
  2433.         ED56   IM 1                     ED76 * IM 1
  2434.         ED57   LD A,I                   ED77 * NOP
  2435.         ED58   IN E,(C)                 ED78   IN A,(C)
  2436.         ED59   OUT (C),E                ED79   OUT (C),A
  2437.         ED5A   ADC HL,DE                ED7A   ADC HL,SP
  2438.         ED5B   LD DE,(nn)               ED7B   LD SP,(nn)
  2439.         ED5C * NEG                      ED7C * NEG
  2440.         ED5D * RET                      ED7D * RET
  2441.         ED5E   IM 2                     ED7E * IM 2
  2442.         ED5F   LD A,R                   ED7F * NOP
  2443.  
  2444. The ED70 instruction reads from port (C), just like the other instructions,
  2445. but throws away the result. It does change the flags in the same way as the
  2446. other IN instructions, however. The ED70 instruction *is* documented in at
  2447. least two other publications beside the original Spectrum manual - one of
  2448. which is an SGS Z80 data booklet.
  2449.                                          
  2450. The ED71 instruction OUTs a byte zero to port (C). In fact the instructions
  2451. INI and OUTI do almost exactly the same as the proposed action for ED70 and
  2452. ED71 as well as incrementing the registers
  2453.  
  2454. The IM 0/1 instruction puts the processor in either IM 0 or 1 (undetermined
  2455. at this time). The SGS booklet says that there are two flip-flops which
  2456. determine the interrupt mode and are set by the IM instructions. The possible
  2457. values are:
  2458.  
  2459.   00  IM 0
  2460.   01  not used
  2461.   10  IM 1
  2462.   11  IM 2
  2463.  
  2464. ...so it is entirely possible that the IM 0/1 instruction sets these registers
  2465. to 01. What the Z80 does when this happens is anyone's guess.
  2466.  
  2467.  
  2468. d) About the R register:
  2469.    This is not really an undocumented feature, although I have never seen any
  2470. thorough description of it anywhere. The R register is a counter that is
  2471. updated every instruction, where DD, FD, ED and CB are to be regarded as
  2472. separate instructions. So shifted instruction will increase R by two. There's
  2473. an interesting exception: doubly-shifted opcodes, the DDCB and FDCB ones,
  2474. increase R by two too. LDI increases R by two, LDIR increases it by 2 times
  2475. BC, as does LDDR etcetera.  The sequence LD R,A/LD A,R increases A by two,
  2476. except for the highest bit: this bit of the R register is never changed. This
  2477. is because in the old days everyone used 16 Kbit chips. Inside the chip the
  2478. bits where grouped in a 128x128 matrix, needing a 7 bit refresh cycle.
  2479. Therefore ZiLOG decided to count only the lowest 7 bits. You can easily check
  2480. that the R register is really crucial to memory refresh. Assemble this program:
  2481.  
  2482.         ORG 32768
  2483.         DI
  2484.         LD B,0
  2485.     L1: XOR A
  2486.         LD R,A
  2487.         DEC HL
  2488.         LD A,H
  2489.         OR L
  2490.         JR NZ,L1
  2491.         DJNZ L1
  2492.         EI
  2493.         RET
  2494.  
  2495. It will take about three minutes to run.  Look at the upper 32K of memory,
  2496. for instance the UDG graphics.  It will have faded.  Only the first few bytes
  2497. of each 256 byte block will still contain zeros, because they were refreshed
  2498. during the execution of the loop. The ULA took care of the refreshing of the
  2499. lower 16K (This example won't work on the emulator, of course!).
  2500.  
  2501. e) Undocumented flags:
  2502.    This undocumented "feature" of Z80 has its effect on programs like Sabre
  2503. Wulf, Ghosts'n Goblins and Speedlock. Bits 3 and 5 of the F register are not
  2504. used. They can contain information, as you can readily figure out by PUSHing
  2505. AF onto the stack and then POPping some it into another pair of registers.
  2506. Furthermore, sometimes their values change. I found the following empirical
  2507. rule:
  2508.  
  2509.     The values of bits 7, 5 and 3 follow the values of the corresponding
  2510.     bits of the last 8 bit result of an instruction that changed the usual
  2511.     flags.
  2512.  
  2513. For instance, after an ADD A,B those bits will be identical to the bits of
  2514. the A register (Bit 7 of F is the sign flag, and fits the rule exactly). An
  2515. exception is the CP x instruction (x=register, (HL) or direct argument). In
  2516. this case the bits are copied from the argument.
  2517.  
  2518. If the instruction is one that operates on a 16 bit word, the 8 bits of the
  2519. rule are the highest 8 bits of the 16 bit result - that was to be expected
  2520. since the S flag is extracted from bit 15.
  2521.  
  2522. Ghosts'n Goblins use the undocumented flag due to a programming error. The
  2523. rhino in Sabre Wulf walks backward or keeps running in little circles in a
  2524. corner, if the (in this case undocumented) behaviour of the sign flag in the
  2525. BIT instruction isn't right. I quote:
  2526.  
  2527.         AD86    DD CB 06 7E        BIT 7,(IX+6)
  2528.         AD8A    F2 8F AD           JP P,#AD8F
  2529.  
  2530. An amazing piece of code!  Speedlock does so many weird things that all must
  2531. be exactly right for it to run. Finally, the '128 ROM uses the AF register to
  2532. hold the return address of a subroutine for a while.
  2533.  
  2534. f) Interrupt flip-flops IFF1 and IFF2:
  2535.    There seems to be a little confusion about these. These flip flops are
  2536. simultaneously set or reset by the EI and DI instructions. IFF1 determines
  2537. whether interrupts are allowed, but its value cannot be read. The value of
  2538. IFF2 is copied to the P/V flag by LD A,I and LD A,R. When an NMI occurs, IFF1
  2539. is reset, thereby disallowing further (maskable) interrupts, but IFF2 is left
  2540. unchanged. This enables the NMI service routine to check whether the
  2541. interrupted program had enabled or disabled maskable interrupts. So, Spectrum
  2542. snapshot software can only read IFF2, but most emulators will emulate both,
  2543. and then the one that matters most is IFF1.
  2544.  
  2545. ================================= HARDWARE ===================================
  2546.  
  2547.    At the hardware level, the Spectrum is a very simple machine. There's the
  2548. 16K ROM which occupies the lowest part of the address space, and 48K of RAM
  2549. which fills up the rest. An ULA which reads the lowest 6912 bytes of RAM to
  2550. display the screen, and contains the logic for just one I/O port completes the
  2551. machine, from a software point of view at least.
  2552. Every even I/O address will address the ULA, but to avoid problems with other
  2553. I/O devices only port FE should be used. If this port is written to, bits have
  2554. the following meaning:
  2555.  
  2556.         Bit   7   6   5   4   3   2   1   0
  2557.             +-------------------------------+
  2558.             |   |   |   | E | M |   Border  |
  2559.             +-------------------------------+
  2560.  
  2561. The lowest three bits specify the border color; a zero in bit 3 activates the
  2562. MIC output, and a one in bit 4 activates the EAR output (which sounds the
  2563. internal speaker). The real Spectrum also activates the MIC when the ear is
  2564. written to. The upper three bits are unused.
  2565. If port FE is read from, the highest eight address lines are important too. A
  2566. zero on one of these lines selects a particular half-row of five keys:
  2567.  
  2568.       IN:    Reads keys (bit 0 to bit 4 inclusive)
  2569.  
  2570.       #FEFE  SHIFT, Z, X, C, V            #EFFE  0, 9, 8, 7, 6
  2571.       #FDFE  A, S, D, F, G                #DFFE  P, O, I, U, Y
  2572.       #FBFE  Q, W, E, R, T                #BFFE  ENTER, L, K, J, H
  2573.       #F7FE  1, 2, 3, 4, 5                #7FFE  SPACE, SYM SHFT, M, N,
  2574.  
  2575. A zero in one of the five lowest bits means that the corresponding key is
  2576. pressed. If more than one address line is made low, the result is the logical
  2577. AND of all single inputs, so a zero in a bit means that at least one of the
  2578. appropriate keys is pressed. For example, only if each of the five lowest bits
  2579. of the result from reading from port 00FE (for instance by XOR A/IN A,(FE)) is
  2580. one, no key is pressed. A final remark about the keyboard. It is connected in
  2581. a matrix-like fashion, with 8 rows of 5 columns, as is obvious from the above
  2582. remarks. Any two keys pressed simultaneously can be uniquely decoded by reading
  2583. from the IN ports. However, if more than two keys are pressed decoding may not
  2584. be uniquely possible.  For instance, if you press Caps shift, B and V, the
  2585. Spectrum will think also the Space key is pressed, and react by giving the
  2586. "Break into Program" report. Without this matrix behaviour Zynaps, for
  2587. instance, won't pause when you press 5,6,7,8 and 0 simultaneously.
  2588.  
  2589. Bit 5 (value 64) of IN-port FE is the ear input bit. When the line is silent,
  2590. its value is zero, except in the early Model 2 of the Spectrum, where it was
  2591. one. When there is a signal, this bit toggles. The Spectrum loading software is
  2592. not sensitive to the polarity of this bit (which it definitely should not be,
  2593. not only because of this model difference, but also because you cannot be sure
  2594. the tape recorder doesn't change the polarity of the signal recorded!). Some
  2595. old programs rely on the fact that bit 5 is always one (for instance Spinads).
  2596.  
  2597. Bits 6 and 7 are always one. The ULA with the lower 16K of RAM, and the
  2598. processor with the upper 32K RAM and 16K ROM are working independently of each
  2599. other. The data and address buses of the Z80 and the ULA are connected by
  2600. small resistors; normally, these do effectively decouple the buses. However, if
  2601. the Z80 wants to read of write the lower 16K, the ULA halts the processor if it
  2602. is busy reading, and after it's finished lets the processor access lower memory
  2603. through the resistors. A very fast, cheap and neat design indeed!
  2604.  
  2605. From Rui Ribeiro:
  2606. [If you read from a port that activates both the keyboard and a joystick port
  2607. (e.g. Kempston), the joystick takes priority. Every emulator except SpecEm
  2608. and WSpecEm get this wrong - see Street Hawk and Command4.]
  2609.  
  2610. If you run a program in the lower 16K of RAM, or read or write in that memory,
  2611. the processor is halted sometimes. This part of memory is therefore somewhat
  2612. slower than the upper 32K block. This is also the reason that you cannot write
  2613. a sound- or save-routine in lower memory; the timing won't be exact, and the
  2614. music will sound harsh. Also, INning from port FE will halt the processor,
  2615. because the ULA has to supply the result. Therefore, INning from port FE is a
  2616. tiny bit slower on average than INning from other ports; whilst normally an
  2617. IN A,(nn) instruction would take 11 T states, it takes 12.15 T states on
  2618. average if nn=FE. See below for more exact information.
  2619.  
  2620. If the processor reads from a non-existing IN port, for instance FF, the ULA
  2621. won't stop, but nothing will put anything on the data bus. Therefore, you'll
  2622. read a mixture of FF's (idle bus), and screen and ATTR data bytes (the latter
  2623. being very scarce, by the way). This will only happen when the ULA is reading
  2624. the screen memory, about 60% of the 1/50th second time slice in which a frame
  2625. is generated. The other 40% the ULA is building the border or generating a
  2626. vertical retrace. This behaviour is actually used in some programs, for
  2627. instance, in Arkanoid.
  2628.  
  2629. Finally, there is an interesting bug in the ULA which also has to do with this
  2630. split bus. After each instruction fetch cycle of the processor, the processor
  2631. puts the I-R register "pair" (not the 8 bit internal Instruction Register, but
  2632. the Interrupt and R registers) on the address bus. The lowest 7 bits, the R
  2633. register, are used for memory refresh. However, the ULA gets confused if I is
  2634. in the range 64-127, because it thinks the processor wants to read from lower
  2635. 16K ram very, very often. The ULA can't cope with this read-frequency, and
  2636. regularly misses a screen byte.  Instead of the actual byte, the byte
  2637. previously read is used to build up the video signal.  The screen seems to be
  2638. filled with 'snow'; however, the Spectrum won't crash, and program will
  2639. continue to run normally.  There's one program I know of that uses this
  2640. to generate a nice effect: Vectron (which has very nice music too, by the way).
  2641.  
  2642. The processor has three interrupt modes, selected by the instructions IM 0,
  2643. IM 1 and IM 2. In mode 1, the processor simply executes an RST #38 instruction
  2644. if an interrupt is requested. This is the mode the Spectrum is normally in.
  2645.  
  2646. The other mode that is commonly used is IM 2. If an interrupt is requested,
  2647. egister (as
  2648. the high byte) with whatever the interrupting device places on the data bus.
  2649. The subroutine at this address is then called. Rodnay Zaks in his book
  2650. "Programming the Z80" states that only even bytes are allowed as low index
  2651. byte, but that isn't true. The normal Spectrum contains no hardware to place
  2652. a byte on the bus, and the bus will therefore always read FF (because the ULA
  2653. also doesn't read the screen if it generates an interrupt), so the resulting
  2654. index address is 256*I+255. However, some not-so-neat hardware devices put
  2655. things on the data bus when they shouldn't, so later programs didn't assume
  2656. the low index byte was FF. These programs contain a 257 byte table of equal
  2657. bytes starting at 256*I, and the interrupt routine is placed at an address
  2658. that is a multiple of 257. A useful but not so much used trick is to make the
  2659. table contain FF's (or use the ROM for this) and put a byte 18 hex, the opcode
  2660. for JR, at FFFF. The first byte of the ROM is a DI, F3 hex, so the JR will jump
  2661. to FFF4, where a long JP to the actual interrupt routine is put.
  2662.  
  2663. In interrupt mode 0, the processor executes the instruction that the
  2664. interrupting device places on the data bus. On a standard Spectrum this will be
  2665. the byte FF, coincidentally (...) the opcode for RST #38. But for the same
  2666. reasons as above, this is not really reliable.
  2667.  
  2668. The 50 Hz interrupt is synchronized with the video signal generation by the
  2669. ULA; both the interrupt and the video signal are generated by it. Many programs
  2670. use the interrupt to synchronize with the frame cycle. Some use it to generate
  2671. fantastic effects, such as full-screen characters, full-screen horizon
  2672. (Aquaplane) or pixel colour (Uridium for instance). Very many modern programs
  2673. use the fact that the screen is "written" (or "fired") to the CRT in a finite
  2674. time to do as much time-consuming screen calculations as possible without
  2675. causing character flickering: although the ULA has started displaying the
  2676. screen for this frame already, the electron beam will for a moment not "pass"
  2677. this or that part of the screen so it's safe to change something there. So the
  2678. exact time in the 1/50 second time-slice at which the screen is updated is
  2679. very important. Each line takes exactly 224 T states.
  2680.  
  2681. After an interrupt occurs, 64 line times pass before the byte 16384 is
  2682. displayed. At least the last 48 of these are actual border-lines. I could not
  2683. determine whether my monitor didn't display the others or whether it was in
  2684. vertical retrace, but luckily that's not really important.
  2685.  
  2686. From Ian Collier:
  2687. [This is probably not quite correct.  I have some exact figures, but so
  2688. far I have failed to bring them into the lab in order to program them
  2689. into xz80.  The 48K constants in there at the moment are wrong, but the +3
  2690. ones are correct.  On the +3 there are exactly 14368 (well, give or take 1)
  2691. cycles between the interrupt and byte 16384 being displayed, which turns out
  2692. to be 63 lines and 4 cycles. On the 48K it's 14339 cycles. *I think!*]
  2693.  
  2694. Then the 192 screen+border lines are displayed, followed by about 56 border
  2695. lines again. 56.5 border lines would make up exactly 70000 T states, 1/50th
  2696. of 3500000. However, I noticed that the frequency of the 50 Hz interrupt
  2697. (measured in 1/T states!) changes very slightly when my Spectrum gets hot
  2698. (I think it has something to do with the relative change of the frequencies
  2699. of the two crystals in the Spectrum), so the time between interrupts will
  2700. probably not be exactly 70000 T states.
  2701.  
  2702. From Ian Collier:
  2703. [This can't be true. A line contains exactly 224 cycles, and the screen
  2704. contains exactly 312 lines (on the +3 and other 128K machines, 311 lines of
  2705. 228 T-states). If the screen didn't contain a whole number of lines then the
  2706. TV would not be able to display it correctly. This means that there are
  2707. exactly 69888 cycles in a frame. Unfortunately I have never determined whether
  2708. this means that the 50Hz clock is too quick or the 3.5MHz clock is too slow
  2709. (or neither, which would prove me wrong - note, though, that I have written a
  2710. program which depends on the correct number of cycles per frame).]
  2711.  
  2712. Anyway, whether the final border block is of fixed or variable length doesn't
  2713. concern us either, the timings of the start and end of the screen, which are
  2714. the timings of real interest, are fixed.
  2715.  
  2716. Now for the timings of each line itself. I define a screen line to start with
  2717. 256 screen pixels, then border, then horizontal retrace, and then border again.
  2718. All this takes 224 T states. Every half T state a pixel is written to the CRT,
  2719. so if the ULA is reading bytes it does so each 4 T states (and then it reads
  2720. two: a screen and an ATTR byte). The border is 48 pixels wide at each side. A
  2721. video screen line is therefore timed as follows: 128 T states of screen, 24 T
  2722. states of right border, 48 T states of horizontal retrace and 24 T states of
  2723. left border.
  2724.  
  2725. When an interrupt occurs, the running instruction has to be completed first.
  2726. So the start of the interrupt is fixed relatively to the start of the frame
  2727. up to the length of the last instruction in T states. If the processor was
  2728. executing a HALT (which, according to the Z80 books I read, is effectively
  2729. many NOPs), the interrupt routine starts at most 3 T states away from the
  2730. start of the frame. Of course the processor also needs some T states to store
  2731. the program counter on the stack, read the interrupt vector and jump to the
  2732. routine. In interrupt modes 0, 0/1 and 1 the total time taken to get to
  2733. address 56 is 13 cycles. In interrupt mode 2 the time taken to get to the
  2734. interrupt routine is 19 cycles. Interpreted as follows:
  2735.  
  2736.   5 cycles: a read of the data bus (in IM 1 this is thrown away)
  2737.   6 cycles: a read of the 2-byte interrupt vector IM 2 only)
  2738.   8 cycles: to push the current PC and set the new one.
  2739.  
  2740. When an NMI occurs, the total time taken to get to address 102 is 15 cycles.
  2741. This is the same as for an ordinary interrupt but with two extra cycles
  2742. (reason unknown).
  2743.  
  2744. Now when to OUT to the border to change it at the place you want? First of
  2745. all, you cannot change the border within a "byte", an 8-pixel chunk. If we
  2746. forget about the screen for a moment, if you OUT to port FE after 14326 to
  2747. 14329 T states (including the OUT) from the start of the IM 2 interrupt
  2748. routine, the border will change at exactly the position of byte 16384 of the
  2749. screen. The other positions can be computed by remembering that 8 pixels take
  2750. 4 T states, and a line takes 224 T states. You would think that OUTing after
  2751. 14322 to 14325 T states, the border would change at 8 pixels left of the upper
  2752. left corner of the screen. This is right for 14322, 14323 and 14324 T states,
  2753. but if you wait 14325 T states the ULA happens to be reading byte 16384 (or
  2754. 22528, or both) and will halt the processor for a while, thereby making you
  2755. miss the 8 pixels. This exception happens again after 224 T states, and
  2756. again after 448, an so forth. These 192 exceptions left of the actual screen
  2757. rectangle are the only ones; similar things don't happen at the right edge
  2758. because the ULA don't need to read things there - it has just finished!
  2759. As noted above, reading or writing in low ram (or OUTing to the ULA) causes
  2760. the ULA to halt the processor. When and how much? The processor is halted each
  2761. time you want to access the ULA or low memory and the ULA is busy reading. Of
  2762. the 312.5 'lines' the ULA generates, only 192 contain actual screen pixels,
  2763. and the ULA will only read bytes during 128 of the 224 T states of each screen
  2764. line. But if it does, the processor is halted for exactly 4 T states.
  2765.  
  2766. =============================== INTERFACE 1 ==================================
  2767.  
  2768.    The Interface I is quite complicated. It uses three different I/O ports,
  2769. and contains logic to page and unpage an 8K ROM if new commands are used. The
  2770. ROM is paged if the processor executes the instruction at ROM address 0008 or
  2771. 1708 hexadecimal, the error and close# routines. It is inactivated when the
  2772. Z80 executes the RET at address 0700.
  2773.  
  2774. a) Port E7:
  2775.    I/O port E7 is used to send or receive data to and from the microdrive.
  2776. Accessing this port will halt the Z80 until the Interface I has collected 8
  2777. bits from the microdrive head; therefore, it the microdrive motor isn't
  2778. running, or there is no formatted cartridge in the microdrive, the Spectrum
  2779. hangs. This is the famous 'IN 0 crash'.
  2780.  
  2781. b) Port EF:
  2782.  
  2783.        Bit    7   6    5    4    3    2    1     0
  2784.             +---------------------------------------+
  2785.         READ|   |   |    |busy| dtr |gap| sync|write|
  2786.             |   |   |    |    |     |   |     |prot.|
  2787.             |---+---+----+----+-----+---+-----+-----|
  2788.        WRITE|   |   |wait| cts|erase|r/w|comms|comms|
  2789.             |   |   |    |    |     |   | clk | data|
  2790.             +---------------------------------------+
  2791.  
  2792. Bits DTR and CTS are used by the RS232 interface.  The WAIT bit is used by the
  2793. Network to synchronise, GAP, SYNC, WR_PROT, ERASE, R/_W, COMMS CLK and COMMS
  2794. DATA are used by the microdrive system. If the microdrive is not being used,
  2795. the COMMS DATA output selects the function of bit 0 of out-port F7:
  2796.  
  2797.  
  2798.        Bit      7    6   5   4   3   2   1       0
  2799.             +------------------------------------------+
  2800.         READ|txdata|   |   |   |   |   |   |    net    |
  2801.             |      |   |   |   |   |   |   |   input   |
  2802.             |------+---+---+---+---+---+---+-----------|
  2803.        WRITE|      |   |   |   |   |   |   |net output/|
  2804.             |      |   |   |   |   |   |   |   rxdata  |
  2805.             +------------------------------------------+
  2806.  
  2807. TXDATA and RXDATA are the input and output of the RS232 port. COMMS DATA
  2808. determines whether bit 0 of F7 is output for the RS232 or the network.
  2809.  
  2810. ============================ THE 128K SPECTRUMS ==============================
  2811.  
  2812. a) Memory
  2813.  
  2814. When memory is being paged, interrupts should be disabled and the stack should
  2815. be in an area which is not going to change. If normal interrupt code is to
  2816. run, then the system variable at 5B5Ch (23388) must be kept updated with the
  2817. last value sent to port 7FFDh. It is not possible to read this port.
  2818.  
  2819. On the 128 and +2, memory is entirely controlled by port 7FFDh. The byte to
  2820. output will be interpreted thus:
  2821.  
  2822. Bits 0-2: RAM page (0-7) to map into memory at 0C000h
  2823. Bit  3:   Select normal (0) or shadow (1) screen. The normal screen is in bank
  2824.           5 and normally appears at 4000h; the shadow screen is in bank 7 and
  2825.           can be switched in at 0C000h
  2826. Bit  4:   ROM select. ROM 0 is the 128k editor and menu system; ROM 1 contains
  2827.           48k BASIC.
  2828. Bit  5:   If set, memory paging will be disabled and further output to this
  2829.           port will be ignored until the computer is reset.
  2830.  
  2831. The memory map of these computers is:
  2832.  
  2833. FFFFh +--------+--------+--------+--------+--------+--------+--------+--------+
  2834.       | Bank 0 | Bank 1 | Bank 2 | Bank 3 | Bank 4 | Bank 5 | Bank 6 | Bank 7 |
  2835.       |        |        |(also at|        |        |(also at|        |        |
  2836.       |        |        | 8000h) |        |        | 4000h) |        |        |
  2837.       |        |        |        |        |        | screen |        | screen |
  2838. C000h +--------+--------+--------+--------+--------+--------+--------+--------+
  2839.       | Bank 2 |        Any one of these pages may be switched in.
  2840.       |        |
  2841.       |        |
  2842.       |        |
  2843. 8000h +--------+
  2844.       | Bank 5 |
  2845.       |        |
  2846.       |        |
  2847.       | screen |
  2848. 4000h +--------+--------+
  2849.       | ROM 0  | ROM 1  | Either ROM may be switched in.
  2850.       |        |        |
  2851.       |        |        |
  2852.       |        |        |
  2853. 0000h +--------+--------+
  2854.  
  2855. Memory banks 4-7 are contended, i.e. the processor shares them with the ULA.
  2856. This reduces the speed of memory access in these banks.
  2857.  
  2858. b) Keypad
  2859.  
  2860. The 128K machine's keypad extra editing facilities are also available via
  2861. the normal keyboard:
  2862.  
  2863.                  FUNCTION                        KEYS
  2864.                  -----------------------------------------
  2865.                  Beginning of next word          [E] [S] J
  2866.                  Beginning of previous word      [E] I
  2867.                  Up ten lines                    [E] P
  2868.                  Down ten lines                  [S] I
  2869.                  Start of line                   [E] [S] 2
  2870.                  End of line                     [E] M
  2871.                  First line                      [E] N
  2872.                  Last line                       [E] T
  2873.                  Screen                          [E] [S] 8
  2874.                  Delete this character           [E] [S] K
  2875.                  Delete word left                [E] E
  2876.                  Delete word right               [E] W
  2877.                  Delete to start of line         [E] K
  2878.                  Delete to end of line           [E] J
  2879.  
  2880.                  [E] = Extended Mode
  2881.                  [S] = Symbol Shift
  2882.  
  2883. c) Sound Chip
  2884.  
  2885. The AY-3-8912 sound chip is a widely used one, to be found in the MSX,
  2886. Vectrex, Amstrad CPC range, etc. It is controlled by two I/O ports:
  2887.  
  2888. OUT (0FFFDh)   - Select a register 0-14
  2889. IN  (0FFFDh)   - Read the value of the selected register
  2890. OUT (0BFFDH)   - Write to the selected register
  2891.  
  2892. There's a guide to how to use the registers at 
  2893.  
  2894. http://arachnid.cs.cf.ac.uk/User/K.E.W.Thacker/Amstrad/CPC_Guide/
  2895. Hardware_Programming/Chips/psg.html
  2896.  
  2897.  - this is for the CPC, so the I/O commands used will be different, and on the
  2898. Spectrum register 14 is used for the serial ports rather than the keyboard as
  2899. on the CPC.
  2900.  
  2901. ******************************************************************************
  2902. ********************************** PINOUTS ***********************************
  2903. ******************************************************************************
  2904.  
  2905. 1. ULA pinout
  2906.  
  2907. He *multiplexed* address-lines.
  2908.  
  2909. /WR   2    39 Q          One of the +5V is decoupled through a RC-low-pass.
  2910. /RD   3    38 /MREQ      U,V are the color-difference signals.
  2911. /WE   4    37 A15        /Y is the inverted video including sync.
  2912. A0    5    36 A14        D are the data-lines, decoupled from the CPU by
  2913. A1    6    35 /RAS       resistors.
  2914. A2    7    34 /ROM CS    T are the data-lines to the keyboard (address-lines
  2915. A3    8    33 /IO-ULA    through diodes).
  2916. A4    9    32 CLOCK      SOUND is the analog-I/O-line for beep, save and load.
  2917. A5   10    31 D7         CLK is the clock-source to the CPU including the
  2918. A6   11    30 D6         inhibited T-states.
  2919. /INT 12    29 D5         IO-ULA is (A0(CPU) OR /IORQ) for the I/O-port FEh
  2920. +5V  13    28 SOUND      Q is the 14MHz-crystal, other side grounded through
  2921. +5V  14    27 D4         a capacitor
  2922. U    15    26 T4
  2923. V    16    25 D3
  2924. /Y   17    24 T3
  2925. D0   18    23 T2
  2926. T0   19    22 D2
  2927. T1   20    21 D1
  2928.  
  2929. 2. AY-3-8912
  2930.  
  2931. SOUND C   1    28  D0       Vcc is +5V.
  2932. PORT      2    27  D1       SOUND A, B and C can be tied together.
  2933. Vcc       3    26  D2       CLOCK can be some MHz.
  2934. SOUND B   4    25  D3
  2935. SOUND A   5    24  D4
  2936. GND       6    23  D5
  2937. PORT      7    22  D6
  2938. PORT      8    21  D7
  2939. PORT      9    20  BC1
  2940. PORT     10    19  BC2
  2941. PORT     11    18  BDIR
  2942. PORT     12    17  A8
  2943. PORT     13    16  RESET
  2944. CLOCK    14    15  CLOCK
  2945.  
  2946. 3. Keyboard layout
  2947.  
  2948.   OUTER SIDE   A 15 14 8  13 12 9  10 11  INNER SIDE
  2949.              D
  2950.              0   BR EN CS P  0  A  Q  1
  2951.              1   SS L  Z  O  9  S  W  2
  2952.              2   M  K  X  I  8  D  E  3
  2953.              3   N  J  C  U  7  F  R  4
  2954.              4   B  H  V  Y  6  G  T  5
  2955.   INNER SIDE
  2956.  
  2957.   [BR] BREAK   [EN] ENTER   [CS] CAPS SHIFT   [SS] SYMBOL SHIFT
  2958.  
  2959.   In real the matrix connections are in one row on the top side of
  2960.   the membrane.
  2961.  
  2962.  
  2963. ******************************************************************************
  2964. ******************************* ACKNOWLEDGEMENTS *****************************
  2965. ******************************************************************************
  2966.  
  2967. Thanks to:
  2968.  
  2969.   Richard Carlsson   - for info on his Speccylator emulator for the Amiga.
  2970.   Ian Collier        - xz80 emulator, advice, Z80 information and more...
  2971.   Krzysztof Czysciak - information about Elwro emulator.
  2972.   John Elliott       - information about 128K machines.
  2973.   Marat Fayzullin    - for creating FAQ versions before 2.7!
  2974.   Arnt Gulbrandsen   - for keeping Spectrum WWW page, FTP archive and multiple
  2975.                        contributions to this file. Also, for his IBM PC-based
  2976.                        JPP emulator. Your WWW page *is* cool, Arnt. ;)
  2977.   Simos Hadjiyiannis - for several FTP addresses I didn't have.
  2978.   Martijn van der Heide - for his database program and Jeroen Kwast's new
  2979.                        email address.
  2980.   Des Herriott       - for his xzx emulator, which is the first and the only
  2981.                        way to play LodeRunner on a Unix workstation! :)
  2982.                        (ignoring the unix version of course - eh Ian?)
  2983.   A.G.Jackson        - information about emulators for Acorn Archimedes.
  2984.   Bob Johnson        - information about TS2068 and TK90X.
  2985.   Gerton Lunter      - for the excellent information about ZX-Spectrum
  2986.                        internals and Z80 emulator for IBM PC.
  2987.   Peter McGavin      - for some useful information and (of course =:)) his
  2988.                        excellent Spectrum emulator which actually *multitasks*
  2989.                        under AmigaDOS and is system-friendlier than many other
  2990.                        programs.
  2991.   Miguel Melo        - information about several programmers.
  2992.   Alexander Mudretsov- information about the SP105 emulator.
  2993.   Joseph S. Myers    - information on undocumented Z80 behaviour.
  2994.   Troels Norgaard    - information about KGB.
  2995.   Emil Obermayr      - for pinouts of ULA, AY-3-8912 and keyboard layout.
  2996.   Boudewijn Rempt    - compilation of postings for "WHERE IS...?"
  2997.   Rui Ribeiro        - for several contributions to "TECHNICAL INFORMATION",
  2998.                        and WSpecem.
  2999.   Jon Ritman         - information about himself!
  3000.   Adam Roach         - maintainer of comp.emulators.misc FAQ; information
  3001.                        about the Speccy BASIC emulator for the C64.
  3002.   Thorsten Roskowetz - information about Atari-based emulator.
  3003.   Marcelo Strasunas  - information about TK90X and TK95.
  3004.   Stephen Smith      - information about several programmers and his great
  3005.                        games FAQ and database web pages.
  3006.   
  3007. ... and everybody else who has contributed to the FAQ, manages FTP archives,
  3008. writes Speccy emulators and generally helps to keep the Speccy alive!
  3009.