home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d7xx
/
d716
/
zmachine.lha
/
ZMachine
/
zmachine.doc
< prev
next >
Wrap
Text File
|
1992-08-19
|
12KB
|
364 lines
ZMachine 1.0.3
A ZIL Interpreter for the Commodore Amiga
Kent Dalton
Ported from the original UNIX version written by
leo@marco.UUCP
Amiga Port Copyright 1992 by Kent Dalton
Read "Copying" section of this manual for redistribution information.
1. Introduction
ZMachine is a program which can interpret "Zork Implementation
Language" (ZIL) data files. ZIL is the language used by the
interactive fiction series of games from Infocom, Inc. (a subsidiary
of Activision/MediaGenic). Interactive Fiction and Interactive This
program does not incorporate any code from Infocom software and is not
associated with or a product of Infocom, Inc. All game names mentioned
in this document are trademarks of Infocom. ZMachine can interpret
normal interactive fiction data files. It is not compatible with
interactive fiction plus (games with graphics, i.e. Beyond Zork, Zork
Zero,etc).
This version of ZMachine was ported from a UNIX version. It was ported
using a PD termcap library and GCC 2.1 (Many thanks to Markus Wild for
porting GCC to the Amiga!). It has some customizations for the Amiga
environment which are detailed for this enviroment.
This program comes with no warranty express or implied. Use at your
own risk.
2. Copying
The Amiga version of this program is Copyright \copyright 1992 by
Kent Dalton. Non-commercial redistribution of the program is allowed
provided all files are included in the distribution in unmodified
form. Public Domain and Freely Distributable libraries may change
handling, shipping, and copying fee charges to distribute the program
provided the above condition is met. I will consider honoring E--Mail
requests (see ``Bug Reports'' section for E--Mail address) for source
code for this Amiga version. Requestors who add new functionality or
do bug fixes to ZMachine are required to return those changes to me.
I think it will be best for the user base, in general, to have a
single most robust and featureful version available via one source.
Contributors to ZMachine development will be fully credited.
I will only distribute source to the the Amiga version, however. The
original UNIX version is available via anonymous FTP (If you don't
know how to find things available for ftp, please learn about the
archie archive search server, I'm getting far too much ZMachine
related mail as is, I do have a day job ya know! :^))
3. Features
This program provides a number of features not available in the Infocom
ZIL interpreter:
o Support for workbench screens larger than the default NTSC
(or PAL) hires (640x200) via the termcap enviroment variable.
o Command history via the arrow keys.
o Function Key support.
o Emacs-like command line editing.
o Support of the Amiga clip board for cutting and pasting text.
o Support for automatic location of game files for hard disk users
o Ability to use Interactive Fiction files from other computers.
(i.e. IBM, Atari ST, etc).
o Special support for running Infocom games on a BBS.
4. System Requirements
ZMachine was ported using an Amiga 3000 with 6Mb RAM and AmigaOS
2.04. I do not know if it works with AmigaOS 1.3. If it does not,
no effort will be made to port it to 1.3 (see "Copying" section for
info on how to obtain source code.). The ixemul.library definitely
requires the 2.04 mathieeesingbas.library, ZMachine does not use
floats though, so you might be able to get away with copying over
another library in its place (or you could get the library from
someone who has 2.04, although I'm not sure if this is legal or not.)
NTSC and PAL displays and all Motorola 680x0 CPU's are supported.
The amount of memory used is detrmined by the game being played. The
average seems to be on the order of 256K.
5. Installation
1. Copy termcap file to S: directory.
2. Set TERM environment variable for proper screen type i.e.
setenv TERM amigalace.
You'll probably want to add this to your user-startup
(or startup-sequence) file.
3. Copy ixemul.library from the libs directory to LIBS:
4. If you are using a 68000 or 68010 CPU you'll probably
want to copy zmachine.68k over zmachine since `zmachine' is
the 68020+ version.
5. If your termcap entry is smaller than 640x400 (amigalace) you'll
also want to edit the dimensions of the WINDOW= tool type for the
zmachine.info file
(this controls the size of the window popped by zmachine (and the
`iconified' window size also.))
Hard Disk Users Note:
If you are using a hard disk you may want to assign LTOI: to the
directory where
your infocom games are located.
ZMachine assumes a directory structure of:
LTOI: ->GameName1->Story.Data
->GameName2->Story.Data
.
.
.
->GameNameN->Story.Data
when using this directory structure, ZMachine will be able to
automatically locate the main data file for the game you wish to play
and automatically place and retrieve game save files from the directory
of that specific game as well.
You'll probably want to rename the Zork 1-3 data files to
Story.Data as well. They work properly with ZMachine, Infocom just
named them differently.
I recommend copying zmachine and zmachine.info to LTOI: as well.
6. Running ZMachine
6.1. From Workbench
An icon will be opened and zmachine will prompt you for a game name.
If you have not assigned LTOI: to adirectory, you must type in the full
name of the file you wish to run. If you are you using zmachine with
the LTOI: assign and directory structure mentioned in the Hard Disk
Installation notes above, you can just type the name of the games
directory that you wish to play. For example: if you type `moonmist',
ZMachine will attempt to open: LTOI:moonmist/Story.Data as the game
file. From then on, the default SAVE/RESTORE path will
be LTOI:moonmist, this way, you don't get a whole bunch of files mixed
up in your LTOI: directory.
6.2. From CLI
CLI startup works similar to the UNIX version. Switches are
preceeded by a '--' character and switches which take arguments are
seperated from the argument by whitespace. Here is the usage
information with all the switches ZMachine understands:
Usage: zmachine [-p protocolfile] [-w protocol linewith]
[-s storyfile] [-r restorefile] [-cli]
[-bbs savepath] [-nowrap] [ -li lines] [-co columns]
[<storyfile>] [<restorefile>]
-p protocolfile : send output after script command to protocolfile
-w protocol linewith: set protocol linewith to linewith
-s storyfile : use storyfile
-r restorefile : restore savefile restorefile before starting game
<storyfile> : use storyfile
<restorefile> : restore restorefile
-cli : ZMachine will not prompt user to hit return on exit.
-nowrap : Do not handle long lines the "amiga" way. May be
necessary for running on some non-amiga terminals
over serial connection.
-bbs : BBS mode. Allows exit on CTRL-C, restricted save
path, and automatically invokes -cli mode.
-co : Override the termcap column entry.
-li : Override the termcap lines entry.
If you call zmachine without arguments, it trys to open the file
Story.Data on the current working directory.
Notice the default file extensions. Zmachine checks and enforces
these (case-sensitively) when started from CLI. If lots of people are
bothered by this, I can change it.
7. Command Editing
Editing Keys:
Cursor left : ^B (also Left-Arrow on Amiga)
Cursor right : ^F (also Right-Arrow on Amiga)
Up in history : ^P (also Up-Arrow on Amiga)
Down in history : ^N (also Down-Arrow on Amiga)
Delete left : 0x7f, 0x08
Delete right : ^D (also BackSpace and Del on Amiga)
Start of line : ^A
End of line : ^E
Kill to end of line : ^K
Kill to start of line : ^X
Program function key : ^I (TAB)
Undo : ^Y
Function key 0-9 : F1-F10
Using the Clipboard:
1. Select text with mouse
2. Hit Amiga-C to Cut text
3. Hit Amiga-V to paste text at cursor position
8. BBS Mode
BBS Mode causes three features to be active:
1. CLI mode becomes active so the user is not prompted for a return
keystroke on exit.
2. ZMachine will recognize a Control-C character as an exit signal.
This provides a way for the sysop to signal the program
to exit on time-out or disconnect.
3. It restricts the save path, so users can only write to or read
from specific files in a sysop specified directory. This keeps
a user from unintentionally (or maliciously) writing to important
system files, etc. When the user tries to save or restore the
game, they are prompted for a save position [0-9], which is used
to formulate the save/restore file name. The file name is
formulated by first appending the save position to the save file
path specified with the -bbs option, an extension of ".sav" is
then appended to that. Examples:
zmachine -bbs LTOI:saves/
Yields save file names of:
LTOI:saves/0.sav
LTOI:saves/1.sav
.
.
LTOI:saves/9.sav
If the user name and game name are put in the savepath, the sysop
can make multiple games available to the users:
zmachine -bbs BBS:userfiles/kentd/moonmist
Yields:
BBS:userfiles/kentd/moonmist0.sav
BBS:userfiles/kentd/moonmist1.sav
.
.
BBS:userfiles/kentd/moonmist9.sav
This scheme should provide enough flexibility for most BBS operators who
wish to make ZMachine interpreted games available to their users, provided
their BBS software is reasonably configurable.
9. Caveats and Known Bugs
Lurking Horror will hang when it tries to do the Amiga sound stuff. Do
not use this program with the Amiga version of Lurking Horror (you can
use it with versions of Lurking Horror from other computers' versions
which do not do sound, I've used it with the Atari ST version for
example.)
ZMachine save game files are incompatible with game save files created
by the Infocom ZIL interpreter and vice versa.
10. Reporting Bugs, Comments, and Questions
I have tested this program with most of the non-plus interactive
fiction games from Lost Treasures and several others from other
computers and they have all worked great so far. Let me know if you
find any that do not.
Feel free to send Bug reports, comments, or questions to me via
E-Mail:
Kent.Dalton@FtCollinsCO.NCR.com
I will try to respond as time allows.
I hope you enjoy this program! I use it for all of my interactive
fiction now!
11. Revision History
Version 1.0.0
o Original release
Version 1.0.1
o ZMachine now resets terminal characteristics on exit.
o Fixed "character wrap" bug on Amiga terminals.
o Added cli switch for no prompt on exit.
o Added nowrap switch that handles line wrap old way. (May be
necessary for some non-Amiga terminals or running over serial
line, experiment both ways to see which works best.)
o Tested Function Key support (works).
Version 1.0.2
o BBS mode added: CTRL-C handling, Quick exit, and restricted save
paths.
o Internal argument parsing routines completely rewritten. The old
ones were seriously brain-dead, IMHO.
Version 1.0.3
o Command line override of termcap column and line entries added
(user request).
o No longer forces extensions for filenames. (misfeature)