-
Notifications
You must be signed in to change notification settings - Fork 12
/
README
60 lines (44 loc) · 2.3 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
The goal of the ZVM project is to write a pure-python implementation
of a Z-machine, a virtual computer architecture that executes
interactive fiction stories written in a special language, called
Z-code.
The current goals of the project include:
* No user interface: ZVM implements only the actual Z-machine. It
is meant to be used as the backend in other programs that
provide a user interface. (User interface will probably be done
via the 'glk' API, making ZVM pluggable into existing front-ends.)
* Compatibility: ZVM will implement a Z-Machine architecture
according to the official specification.
* Coverage: Over the years, the Z-machine architecture was revised
and refined: 8 versions are known to exist. ZVM currently aims
to support Z-machine versions 1 through 5.
* Programming language: ZVM is written exclusively in the Python
programming language, as an importable code module.
* Readability: speed is not an issue when emulating a 28-year old
virtual machine on a modern computer, so we always shoot for
readable code over clever optimizations.
All code is covered by the BSD license, found in the LICENSE file.
Build and Test
==============
To build this code and run the test suite, just do
$ make && make check
from the top level of the source tree.
Project contents
=================
README this file
LICENSE the BSD license
Makefile used to build C code
run_tests.py script to run automated tests
run_story.py script to execute a story file
tests/ automated tests for the module
stories/ some sample stories to interpret
zvm/ the actual ZVM python module
docs/ notes, diagrams, instructions
cheapglk/ the CheapGlk Glk library
A Note on C Code
================
Note that while ZVM itself is written exclusively in Python, it does
have the ability to interoperate with Glk front-ends which have been
built as shared libraries. In order for our testing suites to test
this functionality, we have included a slightly modified version of
Andrew Plotkin's CheapGlk library.