Welcome to Zip 2000!
====================

Zip 2000 is a Standard interpreter (Revision 1.1) for Z-code programs.

In plain English, that means if you want to play Infocom interactive
fiction, or games written with the Inform compiler, this is the program for
you.

Features include:

  * Full support for Version 1,2,3,4,5,6,7 & 8 games.
  * Full conformance to Graham Nelson's "Z-Machine Standards
    Document", Revision 1.1.
  * Complete Blorb version 1.1 support.
  * Graphics support.
  * Colour support.
  * Timed-input support.
  * Sound support.
  * Mouse support.
  * Menu support.
  * Full function key/cursor key/keypad support.
  * Full foreign language support, including runes and Unicode.
  * Easily adjustable screen size.
  * Full use of anti-aliased outline fonts.
  * Line editing & command recall.
  * Quetzal-format save files.
  * Full alpha-compositing, dithering and gamma correction for
    PNG pictures.
  * Multiple UNDO.
  * High speed - the fastest Z-code interpreter for RISC OS.
  * The best-looking Z-code interpreter on any platform.


What's Z-code?
--------------
In the dim and distant past, when one could buy more than one type of
computer, a certain company that wished to produce interactive fiction
wanted to come up with a portable game file that could be played on any
number of microcomputers. So they invented an imaginary computer called the
Z-machine, which ran an imaginary language called Z-code. They then compiled
their games for this machine, and effectively wrote a Z-machine emulator for
each computer they wished to support.

This program is a Z-machine emulator for RISC OS. With it you can play any
Infocom game and games (or programs - the Z-machine isn't limited to games)
produced with Graham Nelson's Z-code compiler "Inform".


How do I play an Infocom/Inform game, then?
-------------------------------------------
First, find your story file. Infocom games are most readily available in the
form of the "Lost Treasures of Infocom" packages. Buy the PC version, then
copy the .DAT and .ZIP files (Version 1-5 games are usually .DAT, version 6
games .ZIP) onto your hard disc (or a RISC OS floppy). Give them more
sensible names, and set their type to "Z-Code". Then, just double-click on
your chosen story file.

For Version 6 games (Arthur, Journey, Shogun, Zork Zero), you require the
".MG1" IBM graphics file. These may not have been included in the Lost
Treasures packages, but the missing files are available from the IF-archive
(see below). Give them the same name as their corresponding Z-code file, and
place them in !Zip2000.Resources.Graphics. Alternatively the MG1 file can be
renamed to "Graphics" and placed in the same directory as the Z-code file.

A large number of Inform-produced games can be downloaded over the Internet.
Undoubtedly the best source for all things interactive-fiction related is the
IF-archive, at www.ifarchive.org. Two of the best freely-available games are
"Curses" by Graham Nelson, and "Christminster" by Gareth Rees. Games are
generally archived with the extensions ".z5", ".z8" etc. Download them, and
set their type to "Z-Code". Then, double-click away.

Z-code programs were formerly given (unofficial) filetypes 061-068 (Z-Code1
to Z-Code8) indicating which version they were. The extant versions are:

          Versions 1 & 2: Used by very early Infocom games; of
                          historical interest only. Maximum file
                          size of 128K.
          Version 3:      Used by most Infocom games. Only supports
                          simple text displays, with limited split-
                          screen support.
          Version 4:      Full support for split-screen operation,
                          custom status lines and real-time input.
                          Text effects (italic etc.) added.
                          Maximum file size increased to 256K.
          Version 5:      Added support for undo, colours, multiple
                          fonts, real-time input, and the mouse.
          Version 6:      Radically overhauled the screen model,
                          adding multiple windows and graphics. Also
                          increased the maximum file size to 512K.
          Versions 7 & 8: Long after the death of Infocom, these were
                          invented by Graham Nelson. They are exactly
                          the same as Version 5, except internal
                          changes allow larger game files. (512K in
                          both cases). They are a way of creating
                          large games that doesn't involve handling
                          all the extra complexities of Version 6.

The old filetypes are now deprecated, as an official filetype (11A) has been
allocated for Z-code programs. You can find out the version of a story file
(regardless of its filetype) from Zip 2000's "About this file" dialogue box
(see below).


What do I do with a Blorb file?
-------------------------------
Blorb is a standard for packaging a Z-code story file together with its sound
and graphical resources. On other platforms, Blorb files are given the
extension ".blb". On RISC OS, the filetype should be set to Blorb (17B).

If the Blorb file contains the Z-code, you can just treat it as a standard
story file, and double-click on it to start it. If a game has separate Z-code
and story files, the Blorb file can be either:

   1) Called "Blorb", in the same directory as the Z-code file.
   2) If the Z-code is "games.MyGame", the Blorb is "blorb.MyGame".
or 3) Placed in !Zip2000.Resources.Blorb, with the same name as the Z-code
      file.

These locations are searched in that order. If a Blorb file is found,
Zip 2000 will not look anywhere else for its sound or graphics files.


What widgets does Zip 2000 have?
--------------------------------
Well, for starters you can alter the screen size while running. This might
cause some games to get a bit confused, as they may only check the screen
size when loaded/restarted. Version 6 games are given a hint that the screen
size has changed, so they may refresh themselves automatically. I would
suggest you find a screen size you like then use the Choices dialogue box to
save it. The four Infocom V6 games are optimised for 80x25 displays.

You can also choose which fonts to use for display. Any text already on the
screen may become wrongly aligned when you change font, but any new text will
be OK. The font you choose as your "fixed-space" font _must_ be fixed space,
or the screen display will go awry. Some odd fonts (such as System.Fixed)
will not produce nice results, as they are somewhat differently aligned to
most other fonts.

If you have a game that uses unusual accented characters, you should select
an appropriate font, then select the correct alphabet from the Alphabet menu.
Some fonts can provide a number of alphabets. Trinity.Medium, for example,
provides Latin1, Latin2, Latin3 and Latin4. Others will provide a fixed
alphabet - you should tell Zip 2000 what alphabet your font provides by
selecting the appropriate alphabet.

I recommend that you turn on horizontal sub-pixel anti-aliasing up to 12pt in
Configure for a higher quality display.

The window border can be turned on and off using the "Border" menu item on
the Style menu.

A full-screen option is available from the Style menu. Full-screen mode
doesn't change the display size or screen mode; you can do this separately.
Full-screen mode requires Window Manager 3.98 or later to work correctly.

The Choices dialogue box contains a number of options:
     
     Quick loading:    Don't pop up a "The story is loading" message
                       while loading the file.
                       
     Pause on exit:    When a game quits, wait for a keypress before
                       closing the window. You might find some games
                       tend to print lots of text, then quit. Turn this
                       on if you want a chance to read it.
                       
     Show caret...:    Normally the caret is only shown while inputting
                       a line of text. Turn this on to also show the
                       caret while waiting for a keypress. (Does not
                       affect V6 games, which are able to turn the
                       caret on and off themselves).
                       
     Confirm quitting: Ask if you really want to quit the game when
                       you close the window.
                       
     Confirm           Ask if you really want to overwrite saved game
     overwriting:      files or command script files.

     Smart quotes:     Try to turn the standard "sexless" quotes into
                       open and close quotes intelligently, use
                       fi and fl ligatures, and use em and en dashes
                       where appropriate.
                       
     Interpreter N:   Some Infocom games behave differently depending
                       on which machine they think they're running.
                       This menu option allows you to change what
                       Zip 2000 claims to be. Note that the games often
                       only check this when restarted. For best results,
                       I recommend keeping this set to 6 (IBM PC).
                       
     Consecutive UNDOs:This option allows you to choose how many times
                       you wish to be able to UNDO in succession. Each
                       available UNDO will take typically 30K of
                       memory. If you change this option, it will not
                       take effect until Zip 2000 is reloaded.
                       
                       Note that games created with Inform (as of
                       version 6/7 of the library) do not allow
                       multiple UNDOs, so this feature currently only
                       works with Infocom games. Stefan Jokisch's
                       Frotz gets around this by having an UNDO "hot
                       key", but I believe that this affects game
                       balance - a game may not wish UNDO to be
                       available in certain situations (eg Beyond
                       Zork during combat). Therefore you will
                       have to wait for the Inform library to be
                       updated.

     Dithering:        If you are running a graphical Blorb game, you
                       have the option of turning on dithering. This
                       should improve display quality, but at the expense
                       of speed, and possibly memory.

     Update often:     Normally Zip 2000 will not update the window after
                       every single picture plot in a V6 game, as this
                       can be a significant performance hit. Turning this
                       on will make it update the window after every
                       DRAW_PICTURE or ERASE_PICTURE operation.
                       
     Default colours:  Choose your default screen colours here.
                       At the moment, this will usually not take
                       effect until the game is restarted.
                       
The Save button saves these options, plus any other options set elsewhere.
The Files... button brings up the file choices dialogue box, described below.

The Utilities menu currently contains three options. "Claim F12" sets whether
Zip 2000 claims F12 and passes it to the game, or ignores it and lets the
Wimp bring up the command line.

"Line editing" enables the line editing feature - you can use the left and
right cursor keys to move the cursor within the line. If this option is
enabled, the game will not receive the left and right cursor keys if they are
pressed during line input. This should not normally be a problem.

The line editing keys Zip 2000 responds to with line-editing enabled are:

     Left, Right, Shift-Left, Shift-Right, Ctrl-Left, Ctrl-Right,
     Delete, Backspace, Copy/End, Ctrl-Copy/End, Ctrl-U

With line-editing disabled, you can only use:

     Delete, Backspace, Ctrl-U

"Command recall" enables the command recall feature - use the up and down
cursor keys to recall previous lines of input. If enabled, the game will not
receive the up and down cursor keys if they are pressed during line input.
This might cause a problem in some games - Beyond Zork being a case in point.

"Keypad functions" selects whether the numeric keypad is used for number
entry or as a set of special "function keys". In some games, for example
Beyond Zork, the keypad can be used to move you around if this option is
enabled.

The "About this file" dialogue box is slightly unorthodox. It shows the
release number and serial number of a game file, plus its Z-code version. Any
information stored in a Blorb file's "SNam", "(c) ", "AUTH" and "ANNO" chunks
is also shown. The size shown is the size of the story data (excluding any
trailing garbage), together with the size of the Blorb file, if any.


Where do saved files go?
------------------------
Z-code programs can produce four different types of file - saved games,
transcripts, command recordings and auxiliary files. The way each of these is
handled can be customised in the File choices dialogue box.

The central location for saved games is !Zip2000.Resources.SavedGames. The
central location for auxiliary files is !Zip2000.Resources.Files. Either of
these can be overridden by modifying the appropriate system variable in Zip
2000's !Run file.  The other location options should be self-explanatory.

If the "Prompt for filename" option is deselected, then Zip 2000 will not
prompt the user for a filename - it will just use the default location and
leafname.

If the "Use Save dialogue box" option is selected, then rather than prompt
textually, a standard RISC OS Save as box will be displayed.

At the textual prompt, filenames entered are relative to the default
directory. You can press F2 to open that directory (whether loading or
saving), and F3 to bring up a Save as box (if saving). You can also navigate
the menu tree to bring up the Save as box.

After a successful load or save, the filename used is remembered, and becomes
the default for that file type for the rest of the session.

Note that files will only be saved at the game's request - this will normally
be as the result of an input command or menu selection. Similarly, you can
normally only load files when requested by the game. When requested, you can
drag a file of the appropriate type onto the game window.

For saved games only, you are also able to double-click on the saved game
file - if a game is waiting to load a saved game then it will try to load
that file, otherwise a new copy of Zip 2000 will be started. You can also
drag a saved game file onto the game window at any time. Note that some games
may not function correctly if a saved game file is loaded when not prompted.

As a handy short cut, clicking with Adjust on the icon bar icon will open the
default saved game directory.


You mentioned sound support. How does this work?
------------------------------------------------
Modern Z-code games will come with, or packaged in, a Blorb file with the
sound effects. See above for details.

Only two of Infocom games support sound: The Lurking Horror, and Sherlock.
You will need to ensure you have a version of the game that supports sound -
release 221 for The Lurking Horror, and release 26 for Sherlock. Patches are
available at www.ifarchive.org to convert any version of an Infocom game into
any other version.

The sound effects for the two games are available at www.ifarchive.org
packaged as Blorb files (courtesy of yours truly). This version of Zip 2000
no longer supports the original Infocom sound files.


You mentioned mouse support. How does this work?
------------------------------------------------
You click on the window. This will only work if a game states that it wants
to use the mouse in its header. The only games that I know of that use the
mouse are Beyond Zork, Zork Zero, Shogun, Journey, Arthur, and my own
SameGame.


I notice that Zip 2000 puts the full title of a
game into its title bar. How do they do that?
---------------------------------------------
By cheating. The file !Zip2000.Messages contains a full list of all known
Infocom games, plus some Inform ones, matching release/version numbers (as
shown by the About this File box) to full names. You may feel free to add new
games to this file. Also, a Blorb story file may give its own name, which
Zip 2000 will use if available.


Version 6 notes
---------------
The original Infocom games' graphics frequently use colours not well
approximated by RISC OS' default 256-colour palette. Therefore for best
effect, you should ideally play in a 32 thousand colour mode, or turn on
dithering if you have Blorb versions of the graphics.

A few visual glitches occur in Zork Zero and Journey. This is the result of
Infocom not properly taking account of the effects of proportional fonts (eg
measuring the width of a string to centre it, but switching to bold _after_
it's measured it, because it assumes a piece of bold text is the same length
as the same text in roman). Other mistakes are probably mine.

The screen bitmap is stored either as a 640x200 or 640x400 sprite in 256,
32 thousand or 16 million colours, depending on the current screen mode when
Zip 2000 is loaded. This does not change until Zip 2000 is reloaded, so if
you change from a square pixel mode to a rectangular pixel mode (or vice
versa), or change colour depth, you should start Zip 2000 again.

Zip 2000 is not bright enough to turn off the border if you start a Version 6
game in a 640x480 mode, so you will lose part of the display. You can turn it
off manually (and save this choice if you wish).


What standards does Zip 2000 conform to?
----------------------------------------
1) Zip 2000 aims to be an accurate Z-machine implementation, as per
   the Z-Machine Standards Document, Version 1.1.

   To support Unicode characters, Zip 2000 will allow you to select
   a font + an "alphabet" setting. The alphabet selects a mapping
   table, to tell Zip 2000 what Unicode characters &80-&FF in the
   font correspond to. (&00-&7F are assumed to correspond to ASCII/
   ZSCII/Unicode characters &00-&7F). Some RISC OS fonts, such as
   Trinity.Medium, can provide multiple alphabets, and will switch
   as you change the alphabet setting. Others provide only one
   alphabet, so you must select the correct alphabet to tell
   Zip 2000 what that alphabet is.

   To teach Zip 2000 about a new alphabet, just create a mapping
   file and place it in !Zip2000.Resources.Encodings.

   Zip 2000 is not capable of handling bidirectional text,
   combining characters, or languages with unusual formatting
   rules.

2) Zip 2000's save files are in the standard Quetzal format. This
   means you can transfer your saved positions to and from other
   Quetzal-supporting interpreters. Previous versions of Zip 2000
   used two other formats (an uncompressed format from version 1.00 to
   1.14, and a Frotz-like compressed format from 1.15 to 1.29). This
   version will no longer load these.

3) A new format for packaging sound and graphics for Z-code programs
   has been defined, called Blorb. Zip 2000 fully supports this format,
   except that JPEG graphics chunks only work on RISC OS 3.6 or later
   (or if you have the JPEG SWIs otherwise available). Zip 2000
   also understands Infocom IBM .MG1 graphics files, as described
   above.



How much do I pay you for this wondrous program?
------------------------------------------------
Nothing, unless you particularly want to. Zip 2000 is freeware.

     
So, like, what's the history of this thing?
-------------------------------------------

Version 1.00 (17-Nov-95)
~~~~~~~~~~~~~~~~~~~~~~~~
First public release. Conformance to Graham Nelson's proposed
Standard 0.2 (15-Nov-95).

Version 1.01 (20-Nov-95)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  File size now extracted from header.
Bugs fixed:
  When the screen size was changed, the game wasn't told.
  When games exited, anything printed since the last new-line
  wasn't displayed.
Conformance improvements:
  random 0 (randomise RNG) was not implemented
  All sorts of screen handling stuff fixed, in particular:
     Buffering in upper window on V4 and earlier.
     Initial cursor position in V4 and earlier.
     Character wrapping when buffering off.
     Style changes in upper window being passed to lower.
     erase_window -1 & -2 sorted out.
  The illegal command SOUND_EFFECT (no parameters) caused
  a crash. It now simply beeps.

Version 1.02 (22-Nov-95)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  You can now choose whether the caret is displayed while waiting
  for a character.
  Function keys F1-F11 now always claimed - F12 is toggleable.
  Quitting behaviour overhauled.
  Command recall part of line editing implemented.
  Smart quotes, ligatures and dashes.
Conformance improvements:
  Accented characters are now correctly lower-cased when put
  into input buffer.
  Backspace now returned from read_char (this was an omission
  from revision 0.2 of the Standard).
  Foreign quotes ( and ) swapped - a mistake in revision 0.2.
  Interrupt routines were being called with the timeout
  as a parameter.
  Return is now passed to the game as code 13, rather than 10 -
  this is required by Bureaucracy.

Version 1.03 (23-Nov-95)
~~~~~~~~~~~~~~~~~~~~~~~~
Bugs fixed:
  Memory was often lost when a game using sound was quit.
  Repeated sounds didn't work properly in V5.
Conformance improvements:
  Sound callback routines implemented - Sherlock's sounds now
  operate correctly.
  Delete input code changed from 8 to 127.

Version 1.04 (27-Nov-95)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Sound data now stored in a dynamic area, rather than the
  module area.
  Official filetype allocated.
  Selectable fonts.
  Paging system removed to speed up interpretation (it was broken
  anyway). Various other optimisations made.
Bugs fixed:
  The save opcode was not correctly implemented in V4 - it was
  not possible to save on many V4 games.
  Text was often a couple of pixels out of line in upper window.
  Some upper window flicker removed.
  Nasty memory corruption fixed - printing a complicated line of
  text (lots of style changes) would mangle the game's dictionary
  (if you were lucky).
  The size of a Version 7 game was wrongly read from the header
  for the purposes of the verify opcode, and in a number of other
  places (although note that Inform 5.5 also puts the wrong size
  in the header - these bugs would cancel each other out for
  V7 games less than 256K).
Conformance improvements:
  The return value of the read opcode was -1 (rather than 0) if it
  was terminated by a time-out.
  The nop opcode was not implemented (!).
  The get_cursor opcode was not implemented.
  Trapped divide by zero errors nicely.
  Now more rigorous trapping writes outside the dynamic area.
  Tokeniser revised - it was being over-clever.
  [MORE] prompts improved.
  set_font 0 wasn't implemented.
  Alternate alphabets can now be changed at run-time.
  Fourth parameter of print_table was not implemented.
  Characters 0 and 13 in text did not behave as specified.
  Mouse position was only updated on clicks. It should now be
  possible to write a doodling program (!).

Version 1.05 (28-Nov-95)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Prototype (text-only) version 6 support. Sufficient to get Zork Zero
  going in a basic sort of fashion.

Version 1.06 (30-Nov-95)
~~~~~~~~~~~~~~~~~~~~~~~~
Bugs fixed:
  Version 3 games didn't take account of the status line when deciding
  when to print "[MORE]".
  Beeps made slightly quieter (they were somewhat louder than the
  standard VDU 7 beep).
  Game file no longer kept open while playing.
Conformance improvements:
  Mid-line font changes, and changes of the fixed-space header bit
  handled better. This includes a major word-wrapping overhaul.
  Output stream 1 couldn't be turned on and off in mid-line.
  [This trick is used at the start of Zork Zero so that the initial
  letter A is a fancy graphic on screen, but output as normal to
  a transcript. Interestingly, though, Infocom's IBM interpreter
  also gets this wrong.]

Version 1.10 (13-Dec-95)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Full Version 6 support, including graphics and menus.
  Word-wrapping wraps on hyphens.
  Performance improvement by removing unnecessary 16-bitness.
  Can choose what type of computer Zip 2000 claims to be.
  Sound files split into directories inside Resources.Sounds. Will also look
  for sounds in a "Sounds" directory alongside the game file.
  Window border can be turned on and off.
  Default text colours selectable.
Bugs fixed:
  READ_MOUSE slightly corrupted memory.
  Couldn't transcript to "RAM:Fred".
  Various problems with the caret fixed. For example, Zip 2000 wouldn't
  let the input focus escape while you were playing Freefall.
  Error handling improved.
  The window will be forced to a suitable size for the current
  screen mode when Zip 2000 is loaded.
Conformance improvements:
  Mouse buttons weren't handled correctly.
  Slight end-of-paragraph wordwrapping glitch fixed.
  Two changes following a newsletter distributed by Graham Nelson:
     Version 7 respecified - V7 games produced with Inform 5.5
     will no longer be playable.
     Some foreign characters added (OE ligatures, plus Spanish
     inverted ? and !).
  Accented characters sometimes incorrectly terminated a line of input.
    
Version 1.11 (18-Dec-95)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Another slight performance improvement by removing unnecessary
  16-bitness.
Bugs fixed:
  The primary colours were in the wrong order in V6.
  Font 3 (runes and character graphics) came out half-height in a high-
  resolution mode in V6.
  Newlines due to a character wrap weren't sent to the transcript.
Conformance improvements:
  ERASE_PICTURE wasn't implemented.
  SCROLL_WINDOW with a negative number of pixels wasn't implemented.
  The line count wasn't reset to zero when a window was cleared (so
  it would say [MORE] too early).
  The line count wasn't incremented on a character wrap (so it
  would say [MORE] too late).
  Byte-sized properties weren't implemented in V4+ - this may have
  affected Shogun, Journey and Zork Zero (they were never used by
  Infocom in V4/5 and aren't used by Inform).
  Journey had problems with its menus due to COPY_TABLE not working in
  the way it expected. A temporary fix has been made until the correct
  behaviour in V6 has been investigated. (If you found yourself stuck
  at the river with a choice of "Return", "Return", or "Return", this
  is why).
  
Version 1.12 (20-Dec-95)
~~~~~~~~~~~~~~~~~~~~~~~~
Bugs fixed:
  Buffer wasn't flushed before output redirection enabled. This
  mis-aligned Zork Zero's function key definitions screen.
  Lines sometimes character-wrapped instead of word-wrapping
  (character wrapping occurred 1 pixel before word wrapping).

Version 1.15 (15-Jan-96)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  More efficiency improvements.
  Saved games are now compressed (they're now typically 10 times smaller).
  Graphics rendering approx 450% faster, thanks to more intelligent
  use of the PICTURE_TABLE opcode.
  Multiple UNDO.
  Line input vastly improved: line editing implemented, V6 editing
  much tidier, now limited to window width.
  "Line editing" option split into "Line editing" and "Command recall".
  "Confirm overwriting" option added.
  "Smart quotes" option added.
  You can press Escape to cancel a load/save.
  You now get a friendly message if you attempt to load a saved game
  belonging to another game.
  "The story is loading..." message restored to V6 games.
  Main window regains the input focus after you've finished with the
  choices dialogue box.
Bugs fixed:
  Character wrap problem in V6 totally eradicated.
  Sound crashes fixed.
  Zork Zero's map of Antharia would kill Zip 2000 (it couldn't cope
  with cacheing a picture twice).
Conformance improvements:
  Behaviour of COPY_TABLE revised for all versions.
  Input buffer was incorrectly terminated by a zero-byte in V5+;
  TOKENISE could not cope with an unterminated text buffer
  in V5+ - this affected Journey.
  A number of small problems with input routines fixed.
  Recording, scripting and playback improved. Command script files
  now store timeout information, terminating characters and mouse
  co-ordinates.
  SOUND_EFFECT 2 now low-pitched instead of high-pitched.
  DRAW_PICTURE now takes co-ordinates as signed (the view from
  the top of the Sunset Tower in Journey did not appear because
  of this).
  Handling of header over restores and restarts made more
  rigorous.
  Input line now redrawn if a timeout routine prints something.
  
Version 1.16 (15-Jan-96)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Tokeniser made more efficient (code borrowed from Frotz).
  [MORE] prompt appears 1 line earlier after a READ, to stop your
  line of input disappearing off the top of the screen.
Bugs fixed:
  The "new improved" command replaying didn't work properly.
  Replayed commands with terminating characters did not display
  correctly.
  Replayed commands had a spurious newline after them.
  V6 smart quotes were broken in version 1.15.
  
Version 1.17 (18-Jan-96)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Large overhaul of the Z-machine "CPU". It is now almost totally
  32-bit internally, resulting in far more effective use of the ARM.
  In a quick benchmark, a prime-finding routine that took 3 minutes
  13 seconds in Zip 2000 v1.00 now takes 1 minute 30 seconds. (This
  also shaved 3K of code off v1.16).
Bugs fixed:
  Newlines printed while buffering was off didn't increment the
  line counter. Line counts after a READ tweaked again.

Version 1.18 (23-Jan-96)
~~~~~~~~~~~~~~~~~~~~~~~~
Conformance improvements:
  INPUT_STREAM 0 wasn't implemented.
Bugs fixed:
  Confirm overwriting didn't work properly.
  If command recall was used during a filename prompt, Zip 2000 would
  crash.
  Zip 2000 now crashes somewhat more gently(!)

Version 1.19 (28-Jan-96)
~~~~~~~~~~~~~~~~~~~~~~~~
Bugs fixed:
  Used to abort with a "Buffer too short." error when run on a machine
  with Doggysoft's "NewerLook" installed.
  The last word separator (usually " in Infocom games) was not picked
  up.

Version 1.20 (10-Mar-96)
~~~~~~~~~~~~~~~~~~~~~~~~
General improvements:
  Memory usage reduced for non-V6 games.
  The game data and stack now placed in a dynamic area (primarily to aid
  the experimental Infix debugger).
  Central instruction dispatcher hand-crafted in assembler for speed (the
  aforementioned speed benchmark now takes 1 minute 10 seconds).
Bugs fixed:
  If you had one of Zip 2000's menus up when you quit Zip 2000 (by typing
  QUIT in the game), the desktop would collapse. This is thanks to a bug
  in the current version of the Toolbox. Menus are now closed just before
  quitting, as a work-around.
  Doesn't reset the current sound voice to WaveSynth-Beep after playing
  a sound effect.

Version 1.21 (20-Mar-96)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Font 3 not loaded until required.
Conformance improvements:
  Text margins are no longer reset when a window was cleared.
  Cursor now confined within margins when using SET_CURSOR.
Bugs fixed:
  PICTURE_DATA now responds correctly when asked about a
  non-existent picture.
  Now copes correctly with text windows that are not a whole number
  of lines high (eg in Shogun while exploring Osaka).
  V6 text width measurements were broken for anything other than
  Roman text.
  The last space of a line would sometimes overflow the right margin.
  
Version 1.22 (03-Apr-96)
~~~~~~~~~~~~~~~~~~~~~~~~
Bugs fixed:
  RESTART didn't work properly in version 1.21.

Version 1.23 (03-Oct-96)
~~~~~~~~~~~~~~~~~~~~~~~~
New feature:
  Keypad can now be made to act normally, instead of being treated
  specially.

Version 1.24 (29-Aug-97)
~~~~~~~~~~~~~~~~~~~~~~~~
Bug fixed:
  Beyond Zork used to crash nastily at a certain point (no
  spoilers here.) This crept in in version 1.17, and is, strictly
  speaking, a bug in Beyond Zork. Now worked around.

Version 1.25 (20-Oct-97)
~~~~~~~~~~~~~~~~~~~~~~~~
Bugs fixed:
  Didn't act on Message_PaletteChanged.
  Keeps clear of the icon bar when opening windows.

Version 1.30 (22-Jul-98)
~~~~~~~~~~~~~~~~~~~~~~~~
Conformance improvements:
  Updated to version 1.0 of the Z-Machine Standards Document.
  Now saves and loads Quetzal-format save files.
New features:
  Selectable alphabets.
  Released as freeware.
General improvements:
  Much stricter regulation of memory accesses - never used to
  fault writes outside dynamic memory, for example.

Version 1.31 (04-Aug-98)
~~~~~~~~~~~~~~~~~~~~~~~~
Conformance improvements:
  Will play Blorb story files. Currently only supports Audio IFF
  sounds. Will show boxes for PNG graphics.
  RANDOM -n (for n < 1000) now seeds the random number generator
  as suggested in the Standard.
  Screen model for V6 shaken up - screen is now 640x400 Z-pixels;
  this makes more sense for Blorb graphics games.
  GET_PROP_LEN 0 now returns 0. Shogun seems to require this.
Bug fixes:
  Any Unicode characters outside the Latin-1 range would get
  garbled if printed in the upper window.
  Data aborts, etc, were bringing up a garbled error message.
General improvements:
  File information dialogue box extended to show Blorb auxiliary
  information.
  Default choices tweaked slightly.

Version 1.32 (23-Aug-98)
~~~~~~~~~~~~~~~~~~~~~~~~
Conformance improvements:
  Checks that an external Blorb file belongs to the Z-Code file.
  Gets the game name from the Blorb file.
  Displays PNG graphics in Blorb file.
Bug fixes:
  Versions 1.30 and 1.31 didn't work if Font Manager 3.36 or
  earlier was in use.
  Parameters to ERASE_PICTURE now treated as signed.
  Wasn't looking in ^.blorb.GameName for Blorb file.
  A drag in the main window resulted in a superfluous click event.
  RESTORE_UNDO was not updating the internal frame counter used
  since Quetzal support was added - the main effect of this was that
  if you UNDO after death, a subsequent save would fail.
  Font selection in 1.30 and 1.31 was rather intermittent.
General improvements:
  Uses system variables called Zip2000$Dir, etc. instead of Zip$Dir.
  Double-clicking on save files now supported.
  "Update often" and "Dithering" options added.
  No longer uses a dynamic area unnecessarily.

Version 1.33 (24-Aug-98)
~~~~~~~~~~~~~~~~~~~~~~~~
Conformance improvements:
  In version 1.32 the colour number stored in the window properties
  for non-standard colours was unpredictable. Now always &FF.
Bug fixes:
  Version 1.32 would frequently crash when saving the game.
  Switching reversed text off in V6 would sometimes set the
  wrong colours.

Version 1.40 (07-Nov-01)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Full-screen mode.
  Uses the SNam chunk of Quetzal files to report which game a save
  file belongs to if an attempt is made to load it into the wrong
  game.
Conformance improvements:
  Handles 64-byte properties.
  Updated to full Blorb 1.1 support, including MODs, SONGs and
  JPEGs (see the standards chapter above).
  Sounds are declared unavailable if no Blorb MOD, SONG or AIFF
  chunks are found.
  Non-ASCII characters now handled in menus.
  Text colour selection expanded to Amiga range (three shades of
  grey).
  Upper window can now occupy full screen (not clear from Z-spec
  whether this is legal, but useful for totally upper-screen
  based programs).
  PICTURE_DATA 0 now stores the number of images, rather than the
  highest numbered image, and branches depending on whether
  pictures are present.
Bug fixes:
  Didn't handle AIFFs with their SSND chunk before the COMM chunk.
  Gamma tables weren't initialised if a Choices file didn't exist.
  Menu n can now be created if menu n-1 doesn't exist.
  Window no longer jumps off screen or gets stuck undersized.
General improvements:
  Recompiled to be 32-bit compatible (except for the included
  DataVox and QTM modules).
  Screen size can be adjusted in V6.
  More critical routines hand-crafted in assembler, using global
  register variables for speed. A prime-finding benchmark came
  down from 2 minutes 4 seconds to 1 minute. This had seemed like
  an idle pasttime at first, but Inform-generated games are getting
  ever more processor-intensive, and I have seen games that
  still have a visible response delay on a StrongARM.
  Optimisation to V6 redraw speed that will primarily improve
  operation on pre-RISC OS 3.6 machines in 8bpp modes.
  Will hold multiple samples in memory if loaded with
  SOUND_EFFECT X 1.
  Uses the device claim protocol to claim the sound system.
  Sound scheduling improved.
  Uses flex memory for graphics, reducing total memory usage.
  Cached sounds and graphics will be discarded in the event of
  memory exhaustion.
  Menu tree can stay intact when contents change.
  File save location can be modified.
  Attempts to move the cursor outside the current window now
  faulted politely (the first time) and constrained; for pre-V6
  the status window will be stretched.
  Text colour greys now gamma-adjusted.
Other changes:
  As part of the performance optimisation, this version will no
  longer load old pre-Quetzal saved games.
  Infocom sound files are no longer supported. Blorb versions of
  the effects for the Infocom games are available from
  www.ifarchive.org.
  ZipSave$Path changed to Zip2000Save$Path.

Version 1.41 (21-Nov-01)
~~~~~~~~~~~~~~~~~~~~~~~~
New features:
  Totally overhauled file handling system.
  Backtrace button added to warning and error boxes.
Conformance improvements:
  Now loads V1 and V2 saved games correctly.
  Buffer flushed before WINDOW_STYLE.
  Character size window property and header fields now updated in
  line with current font and style.
  SPLIT_WINDOW now repositions cursor correctly in V6.
Bug fixes:
  Stylised text now handled (a lot) better during input.
  Terminated input transcripting fixed for V6.
General improvements:
  Sets screen border when in full-screen mode.
  Screen redraw optimised and flicker reduced in non-V6 mode.
  Consumes processor time a bit more forcefully when the Z-machine
  is thinking. This helps Silicon Castles to no small degree.
  Minor speed-up to PNG handling when no gamma-correction is
  required.
Other changes:
  Now declares itself as interpreter version 'Z' (V5) or 200 (V6),
  to help distinguish itself from ZIP.

Version 1.50 (14-Nov-09)
~~~~~~~~~~~~~~~~~~~~~~~~
Conformance improvements:
  Updated to version 1.1 of the Z-Machine Standards Document.
  SET_TRUE_COLOUR and transparency added.
  BUFFER_SCREEN added.
  Now clips text correctly within margins.
  Dictionary matching improved in V1 and V2.
  Indirect references to the stack no longer push/pull.
  ZSCII character 0 now ignored.
  ZSCII character 9 treated as a space in the middle of a line.
  Bold and italic availability now checked and reported.
  Reports mouse position outside window, but constrains pointer
  during drags.
  Don't recycle first 240 colour numbers.
Bug fixes:
  Alignment of fixed-space and graphic font improved.
  In V6 windows buffering was ignored if wrapping was disabled.
  READ_MOUSE now correctly returns the current mouse status.
  Fix possible V6 screen corruption after save box opened.
  Handle unknown sound types (such as OGGV) better.
  Fix default location of auxiliary files - was often one
  directory too high.
General improvements:
  Now handles system alphabet being set to UTF8.
  32-bit QTM and DataVox modules supplied.
  Menu separator added between Zip 2000's menu entries and the
  game's.
  Transcript and recording output now line-buffered.
  Now checks that the executable chunk of a Blorb file is of type
  ZCOD.
  [MORE] prompt no longer appears unexpectedly soon after filename
  prompts.
  Reported mouse co-ordinates now absolutely precise.
  V6 programs requested to refresh the screen after font and
  alphabet changes.


Own up, who helped you with it?
-------------------------------
Well, by far the largest credit goes to Mark Howell, on whose Zip interpreter
core this program was originally based. Many thanks, Mark.

Graham Nelson made lots of encouraging noises as I sent him two new versions
a day during early development. He also suggested all sorts of features, some
of which have actually been implemented, and wrote the excellent Z-machine
Standards Document to which Zip 2000 conforms (all 81 pages of it!). He also
writes great test files! (Advert: Download your copy of Jigsaw today).

Stefan Jokisch provided help with the sound support, and guided me through
the Zip source. His list of Zip bugs was most helpful, inspiring many of the
changes in versions 1.04 and 1.06. Versions 1.15 onwards have borrowed many
ideas (and some code!) from his Frotz interpreter.

Philip Banks wrote the excellent DataVox module that Zip 2000 uses to play
sound effects.

Music is handled using QTM:

    QTM (Q The Music) v1.41, 30th July 2006
     Steve Harrison 1993-2001

    URL: http://www.listen.to/qtm/

Zip 2000 uses the PNG Reference Library:

    libpng version 1.2.40 - September 10, 2009
    Copyright (c) 1998-2009 Glenn Randers-Pehrson
    (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
    (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)

    URL: http://www.libpng.org/pub/png/libpng.html

The PNG Reference Library uses the zlib compression library:

    version 1.2.3, July 18th, 2005
    Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler

    URL: http://www.zlib.net/

The Quetzal save file format was created by Martin Frost.

The Blorb resource format was created by Andrew Plotkin, and
Zip 2000 uses his Blorb library:

    Blorblib version 1.0.2
    Designed by Andrew Plotkin <erkyrath@eblong.com>

    URL: http://www.eblong.com/zarf/blorb/index.html


Are there any bugs^H^H^H^H unexpected features?
-----------------------------------------------
If you play Beyond Zork, with a non-standard colour set (eg white on blue),
on a machine with RISC OS 3.5, in a 32-thousand colour mode, you will notice
that the character graphics' colours don't match. This is a limitation of
RISC OS 3.5 (not a bug). I could work around it, but it's probably not worth
the trouble. RISC OS 3.6 is fine.

The colour selection in the Choices dialogue box will generally not take
effect until the game is restarted.

Changing the font may cause the current input line to become a little
confused. This will be cured when you press Return.

Smart dashes don't work as well in V6 as in other versions.

JPEGs only work on RISC OS 3.6 or later (or if the JPEG SWIs are otherwise
available, such as if you have the new version of SpriteExtend supplied with
Acorn Browse).

SpriteExtend (at the time of writing) only supports baseline JFIF JPEGs - so
progressive or multi-scan images will not work.

Ogg Vorbis support for Blorb 2.0 is not implemented.


And where can I contact you when I find more "features"?
--------------------------------------------------------
My e-mail address is kevin@bracey-griffith.freeserve.co.uk.

My physical location is:     Kevin Bracey,
                             5 St. Paul's Walk,
                             CAMBRIDGE
                             CB1 2EX

The Zip 2000 home page is: 

            http://www.bracey-griffith.freeserve.co.uk/Zip2000/

Please, please, please, please, _please_, let me know of any bugs you find,
or any suggestions you have for future versions.


Licence arrangements
--------------------
Zip 2000 is Copyright 2009, Kevin Bracey. It may be freely distributed,
providing you distribute the whole application directory unaltered, including
this file.

