home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 September / CHIP_CD_1997_09_PL.iso / software / news / wspecem / docs / spec_3_0.faq < prev    next >
Encoding:
Text File  |  1996-05-27  |  140.1 KB  |  2,957 lines

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