* -*- outline -*-

			      Monmaz81

 3D Monster Maze (for the ZX81) patched to run on the 128k Spectrum.


* License

3D Monster Maze is copyright M. E. Evans. A small portion of the ZX81
ROM - the character set - is used (copyright Amstrad). All the stuff I
did (emulation etc.) is public domain.


* Why Monmaz81?

Nostalgia, mostly. Many people, when they think of the ZX81, think of
three things - the terrible keyboard, the RAM-pack wobble, and 3D
Monster Maze. Certainly I'm one of them. As with my similar `port' of
Frogger, it occurred to me that relatively few people have ZX81
emulators and fewer still a copy of the game - and the easiest way to
make the game available to the maximum number of people was to emulate
it on the speccy.

(NB: The TAP and Z80 are equivalent, there's no advantage to using one
over the other. BTW, if you have a ZX81 emulator which supports
Xtender-style .P files, you could run monster.p (in emu_src.tgz) on
that instead.)


* Why is it 128-specific?

ZX81 programs run in the 4000-7FFFh area of memory. This includes the
screen memory, so while you could in theory run the program on a 48k
speccy you'd never know it was running. :-) 128s have an alternative
screen in page 7 which you can use to work around this problem.


* Playing 3D Monster Maze

It's explained by the game itself if you ask for instructions when it
prompts you. Since you may not be completely familiar with what a ZX81
keyboard looks like :-), here are some translations of the keywords
used by the game:

keyword   key

STOP      A
LIST      K
CONT      C

For those who (like me) find waiting for the initial scrolly message
to crawl by rather annoying after a while, I added an escape route -
if you press caps shift while that's running it skips to the end of
the message and makes the scrolling considerably faster (the latter
will apply to all future scrolly messages too).

"The mists of time will pass over you for about 30 seconds" is no
longer even remotely true. For a start, there's no FAST mode to
produce suitable "mists" on the speccy; however, the main problem is
that instead of 30 seconds, it takes less than *one*. (Ironically, it
could have taken less than a second on the ZX81, too - if the author
had bothered to code that bit in Z80 rather than basic.) Apologies for
not reproducing the full retro effect, but I think most of us will be
happier not to have to wait half a minute, yes? :-)


* Problems with the emulation

The emulation works pretty well. The only problem is the speed - since
the game isn't entirely machine code, but has about 120 lines of basic
which oversee things and read the keyboard (even when the game proper
is running...!), and there's no way I could have used the ZX81 rom to
run the basic, I had to translate that all into Z80 and make a
guesstimate of how much the delay loops and the basic itself would
slow things down. I'm pretty sure I've got everything within about 10%
of the correct speed (except the 30-second maze generation as
mentioned above), but it's not perfect.

Oh, come to think of it, there's one other problem. On a real speccy,
it'll run up to 7% slower as the game's code (which runs for about 25%
of the time) has to be in contended memory. This probably isn't too
noticeable though.


* Assembling

You don't have to assemble the patch/emulation, TAP and Z80 files are
included here. But, since I'm distributing the source (in
emu_src.tgz), it makes sense to describe how to assemble it.

You'll need a Unix box, and the source to zmac (the URL is
http://www.nenie.org/cpcip/index.html#zmac at the time of writing).
Compile and install zmac. Now do `make' and it should build
monmaz81.tap. (The Z80 file is built `by hand' using an emulator. :-))

(BTW, `code2zxf' and `zxftotap' are quick-and-dirty tools included
with the source which help make the TAP file.)


* Contacting me

You can email me at russell.marks@ntlworld.com.
