@frotzinc/zmachine 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine.js","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Hooks } from './types.js';
2
+ export declare class Memory {
3
+ readonly bytes: Uint8Array;
4
+ readonly staticBase: number;
5
+ private readonly hooks;
6
+ constructor(bytes: Uint8Array, staticBase: number, hooks: Hooks | undefined);
7
+ get size(): number;
8
+ byte(a: number): number;
9
+ word(a: number): number;
10
+ setByte(a: number, v: number): void;
11
+ setWord(a: number, v: number): void;
12
+ }
13
+ /** A 16-bit value as signed (§2.2). */
14
+ export declare const signed: (v: number) => number;
15
+ /** Any number as a 16-bit unsigned value. */
16
+ export declare const u16: (v: number) => number;
package/dist/memory.js ADDED
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Memory (§1): the whole story in one Uint8Array, with dynamic memory written in place. Reads may
3
+ * go anywhere in the file; writes only below the static-memory base (§1.1.2). Words are
4
+ * big-endian (§2.1).
5
+ */
6
+ import { fail, hex } from './fault.js';
7
+ export class Memory {
8
+ bytes;
9
+ staticBase;
10
+ hooks;
11
+ constructor(bytes, staticBase, hooks) {
12
+ this.bytes = bytes;
13
+ this.staticBase = staticBase;
14
+ this.hooks = hooks;
15
+ }
16
+ get size() {
17
+ return this.bytes.length;
18
+ }
19
+ byte(a) {
20
+ if (a < 0 || a >= this.bytes.length)
21
+ fail('bad-address', `read of the byte at ${hex(a)}, outside the story (${hex(this.bytes.length, 5)} bytes)`);
22
+ return this.bytes[a];
23
+ }
24
+ word(a) {
25
+ if (a < 0 || a + 1 >= this.bytes.length)
26
+ fail('bad-address', `read of the word at ${hex(a)}, outside the story (${hex(this.bytes.length, 5)} bytes)`);
27
+ return (this.bytes[a] << 8) | this.bytes[a + 1];
28
+ }
29
+ setByte(a, v) {
30
+ if (a < 0 || a >= this.staticBase)
31
+ fail('write-to-static', `write of the byte at ${hex(a)}, outside dynamic memory (which ends at ${hex(this.staticBase)})`);
32
+ this.bytes[a] = v & 0xff;
33
+ this.hooks?.write?.(a, v & 0xff, 1);
34
+ }
35
+ setWord(a, v) {
36
+ if (a < 0 || a + 1 >= this.staticBase)
37
+ fail('write-to-static', `write of the word at ${hex(a)}, outside dynamic memory (which ends at ${hex(this.staticBase)})`);
38
+ this.bytes[a] = (v >> 8) & 0xff;
39
+ this.bytes[a + 1] = v & 0xff;
40
+ this.hooks?.write?.(a, v & 0xffff, 2);
41
+ }
42
+ }
43
+ /** A 16-bit value as signed (§2.2). */
44
+ export const signed = (v) => (v << 16) >> 16;
45
+ /** Any number as a 16-bit unsigned value. */
46
+ export const u16 = (v) => v & 0xffff;
47
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAGtC,MAAM,OAAO,MAAM;IAEN;IACA;IACQ;IAHnB,YACW,KAAiB,EACjB,UAAkB,EACV,KAAwB;QAFhC,UAAK,GAAL,KAAK,CAAY;QACjB,eAAU,GAAV,UAAU,CAAQ;QACV,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEJ,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,IAAI,CAAC,CAAS;QACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,aAAa,EAAE,uBAAuB,GAAG,CAAC,CAAC,CAAC,wBAAwB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAA;QACjJ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,CAAS;QACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,aAAa,EAAE,uBAAuB,GAAG,CAAC,CAAC,CAAC,wBAAwB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAA;QACrJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAA;IACnD,CAAC;IAED,OAAO,CAAC,CAAS,EAAE,CAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,CAAC,CAAC,CAAC,2CAA2C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAC5J,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,CAAC,CAAS,EAAE,CAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,CAAC,CAAC,CAAC,2CAA2C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAChK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QAC5B,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAA;IACvC,CAAC;CACF;AAED,uCAAuC;AACvC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;AACpD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A turn's text as transcripts compare it: trailing spaces off each line, runs of blank lines
3
+ * down to one, leading and trailing blank lines dropped, and the trailing command prompt removed.
4
+ * The same rules as Frotzsmith's normalizeTurnOutput (its ADR-006), so a transcript from this
5
+ * interpreter and one from ZVM can be compared line for line.
6
+ */
7
+ export declare function normalizeTurn(raw: string): string;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A turn's text as transcripts compare it: trailing spaces off each line, runs of blank lines
3
+ * down to one, leading and trailing blank lines dropped, and the trailing command prompt removed.
4
+ * The same rules as Frotzsmith's normalizeTurnOutput (its ADR-006), so a transcript from this
5
+ * interpreter and one from ZVM can be compared line for line.
6
+ */
7
+ export function normalizeTurn(raw) {
8
+ return raw
9
+ .replace(/[ \t]+$/gm, '')
10
+ .replace(/\n{3,}/g, '\n\n')
11
+ .trim()
12
+ .replace(/\n*>[ \t]*$/, '')
13
+ .trim();
14
+ }
15
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,GAAG;SACP,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE;SACN,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,IAAI,EAAE,CAAA;AACX,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { Memory } from './memory.js';
2
+ export declare class Objects {
3
+ private readonly mem;
4
+ private readonly table;
5
+ private readonly v3;
6
+ private readonly entrySize;
7
+ private readonly first;
8
+ constructor(mem: Memory, version: number, table: number);
9
+ private entry;
10
+ private attrAt;
11
+ testAttr(o: number, a: number): boolean;
12
+ setAttr(o: number, a: number, on: boolean): void;
13
+ private link;
14
+ private setLink;
15
+ parent: (o: number) => number;
16
+ sibling: (o: number) => number;
17
+ child: (o: number) => number;
18
+ /** Take `o` out of its parent's children (@remove_obj). */
19
+ remove(o: number): void;
20
+ /** Make `o` the first child of `d` (@insert_obj). */
21
+ insert(o: number, d: number): void;
22
+ propTable(o: number): number;
23
+ /** The short name's byte address (after its length byte), and its length in words. */
24
+ shortName(o: number): {
25
+ address: number;
26
+ words: number;
27
+ };
28
+ /** The size byte(s) at `at`: the property's number, its data's size, and where the data starts. */
29
+ private header;
30
+ private firstProp;
31
+ /** Where property `p` of `o` is, or null when `o` hasn't got it. */
32
+ find(o: number, p: number): {
33
+ number: number;
34
+ size: number;
35
+ data: number;
36
+ } | null;
37
+ defaultProp(p: number): number;
38
+ /** @get_prop: a 1-byte property as a byte, anything longer as its first word (§15: longer is illegal; Frotz and ZVM read the word). */
39
+ get(o: number, p: number): number;
40
+ put(o: number, p: number, v: number): void;
41
+ /** @get_prop_len: the size of the property whose data starts at `data` (0 for 0, §15). */
42
+ propLen(data: number): number;
43
+ /** @get_next_prop: the first property for 0, otherwise the one after `p`; 0 after the last. */
44
+ next(o: number, p: number): number;
45
+ }
@@ -0,0 +1,181 @@
1
+ /**
2
+ * The object table (§12): attributes, the tree, and properties. v3: 255 objects, 32 attributes,
3
+ * 9-byte entries, byte links, 31 default properties; v4+: 65,535 objects, 48 attributes, 14-byte
4
+ * entries, word links, 63 default properties.
5
+ */
6
+ import { fail, hex } from './fault.js';
7
+ export class Objects {
8
+ mem;
9
+ table;
10
+ v3;
11
+ entrySize;
12
+ first;
13
+ constructor(mem, version, table) {
14
+ this.mem = mem;
15
+ this.table = table;
16
+ this.v3 = version <= 3;
17
+ this.entrySize = this.v3 ? 9 : 14;
18
+ this.first = table + (this.v3 ? 31 : 63) * 2;
19
+ }
20
+ entry(o) {
21
+ if (o < 1 || o > (this.v3 ? 255 : 65535))
22
+ fail('bad-object', `object ${o} doesn't exist`);
23
+ return this.first + (o - 1) * this.entrySize;
24
+ }
25
+ // ── attributes (§12.3.1) ──────────────────────────────────────────────────
26
+ attrAt(o, a) {
27
+ if (a < 0 || a >= (this.v3 ? 32 : 48))
28
+ fail('bad-object', `attribute ${a} doesn't exist (object ${o})`);
29
+ return [this.entry(o) + (a >> 3), 0x80 >> (a & 7)];
30
+ }
31
+ testAttr(o, a) {
32
+ if (o === 0)
33
+ return false;
34
+ const [at, bit] = this.attrAt(o, a);
35
+ return (this.mem.byte(at) & bit) !== 0;
36
+ }
37
+ setAttr(o, a, on) {
38
+ if (o === 0)
39
+ return;
40
+ const [at, bit] = this.attrAt(o, a);
41
+ const b = this.mem.byte(at);
42
+ this.mem.setByte(at, on ? b | bit : b & ~bit);
43
+ }
44
+ // ── the tree (§12.3.2) ────────────────────────────────────────────────────
45
+ link(o, which) {
46
+ if (o === 0)
47
+ return 0;
48
+ const e = this.entry(o);
49
+ return this.v3 ? this.mem.byte(e + 4 + which) : this.mem.word(e + 6 + which * 2);
50
+ }
51
+ setLink(o, which, v) {
52
+ const e = this.entry(o);
53
+ if (this.v3)
54
+ this.mem.setByte(e + 4 + which, v);
55
+ else
56
+ this.mem.setWord(e + 6 + which * 2, v);
57
+ }
58
+ parent = (o) => this.link(o, 0);
59
+ sibling = (o) => this.link(o, 1);
60
+ child = (o) => this.link(o, 2);
61
+ /** Take `o` out of its parent's children (@remove_obj). */
62
+ remove(o) {
63
+ if (o === 0)
64
+ return;
65
+ const p = this.parent(o);
66
+ if (p === 0)
67
+ return;
68
+ const next = this.sibling(o);
69
+ if (this.child(p) === o)
70
+ this.setLink(p, 2, next);
71
+ else {
72
+ let c = this.child(p);
73
+ // A broken tree (a loop) must not hang the machine: there are at most 65,535 objects.
74
+ for (let guard = 0; c !== 0 && guard < 65536; guard++) {
75
+ const s = this.sibling(c);
76
+ if (s === o) {
77
+ this.setLink(c, 1, next);
78
+ break;
79
+ }
80
+ c = s;
81
+ }
82
+ }
83
+ this.setLink(o, 0, 0);
84
+ this.setLink(o, 1, 0);
85
+ }
86
+ /** Make `o` the first child of `d` (@insert_obj). */
87
+ insert(o, d) {
88
+ if (o === 0)
89
+ return;
90
+ if (d === 0)
91
+ fail('bad-object', `can't move object ${o} into object 0`);
92
+ this.remove(o);
93
+ this.setLink(o, 0, d);
94
+ this.setLink(o, 1, this.child(d));
95
+ this.setLink(d, 2, o);
96
+ }
97
+ // ── properties (§12.4) ────────────────────────────────────────────────────
98
+ propTable(o) {
99
+ return this.mem.word(this.entry(o) + (this.v3 ? 7 : 12));
100
+ }
101
+ /** The short name's byte address (after its length byte), and its length in words. */
102
+ shortName(o) {
103
+ const t = this.propTable(o);
104
+ return { address: t + 1, words: this.mem.byte(t) };
105
+ }
106
+ /** The size byte(s) at `at`: the property's number, its data's size, and where the data starts. */
107
+ header(at) {
108
+ const b = this.mem.byte(at);
109
+ if (this.v3)
110
+ return { number: b & 31, size: (b >> 5) + 1, data: at + 1 };
111
+ if (b & 0x80) {
112
+ const size = this.mem.byte(at + 1) & 63;
113
+ return { number: b & 63, size: size === 0 ? 64 : size, data: at + 2 };
114
+ }
115
+ return { number: b & 63, size: b & 0x40 ? 2 : 1, data: at + 1 };
116
+ }
117
+ firstProp(o) {
118
+ const t = this.propTable(o);
119
+ return t + 1 + this.mem.byte(t) * 2;
120
+ }
121
+ /** Where property `p` of `o` is, or null when `o` hasn't got it. */
122
+ find(o, p) {
123
+ if (o === 0)
124
+ return null;
125
+ let at = this.firstProp(o);
126
+ for (let guard = 0; guard < 64; guard++) {
127
+ const h = this.header(at);
128
+ if (h.number === 0 || h.number < p)
129
+ return null; // listed in descending order (§12.4)
130
+ if (h.number === p)
131
+ return h;
132
+ at = h.data + h.size;
133
+ }
134
+ return null;
135
+ }
136
+ defaultProp(p) {
137
+ if (p < 1 || p > (this.v3 ? 31 : 63))
138
+ fail('bad-property', `property ${p} doesn't exist`);
139
+ return this.mem.word(this.table + (p - 1) * 2);
140
+ }
141
+ /** @get_prop: a 1-byte property as a byte, anything longer as its first word (§15: longer is illegal; Frotz and ZVM read the word). */
142
+ get(o, p) {
143
+ const h = this.find(o, p);
144
+ if (!h)
145
+ return this.defaultProp(p);
146
+ return h.size === 1 ? this.mem.byte(h.data) : this.mem.word(h.data);
147
+ }
148
+ put(o, p, v) {
149
+ const h = this.find(o, p);
150
+ if (!h)
151
+ fail('bad-property', `object ${o} has no property ${p} to put (${hex(this.entry(o))})`);
152
+ if (h.size === 1)
153
+ this.mem.setByte(h.data, v & 0xff);
154
+ else
155
+ this.mem.setWord(h.data, v);
156
+ }
157
+ /** @get_prop_len: the size of the property whose data starts at `data` (0 for 0, §15). */
158
+ propLen(data) {
159
+ if (data === 0)
160
+ return 0;
161
+ const b = this.mem.byte(data - 1);
162
+ if (this.v3)
163
+ return (b >> 5) + 1;
164
+ // A byte with bit 7 set is the second of two size bytes (§12.4.2.1.1).
165
+ if (b & 0x80)
166
+ return (b & 63) === 0 ? 64 : b & 63;
167
+ return b & 0x40 ? 2 : 1;
168
+ }
169
+ /** @get_next_prop: the first property for 0, otherwise the one after `p`; 0 after the last. */
170
+ next(o, p) {
171
+ if (o === 0)
172
+ return 0;
173
+ if (p === 0)
174
+ return this.header(this.firstProp(o)).number;
175
+ const h = this.find(o, p);
176
+ if (!h)
177
+ fail('bad-property', `object ${o} has no property ${p}, so no next one`);
178
+ return this.header(h.data + h.size).number;
179
+ }
180
+ }
181
+ //# sourceMappingURL=objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.js","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"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"}
package/dist/play.d.ts ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Play a story from a list of commands and return each turn's text: the Node runner, and what the
3
+ * differential tests compare with ZVM. The shape matches Frotzsmith's runReplay: turn 0 is the
4
+ * banner, then one turn per command, until the story stops asking for a line.
5
+ *
6
+ * Two commands aren't typed text: `[timeout]` says a timed read's interval ran out (the timer
7
+ * firing, recorded in a command script so a replay is deterministic: frotzplay-design §6), and
8
+ * `[key x]` presses a key for @read_char (`[key]` alone is Return). Without one of those, a
9
+ * request for a key press ends play, as it does in Frotzsmith's ZVM replay.
10
+ */
11
+ import { Machine } from './machine.js';
12
+ import type { Fault, MachineOptions } from './types.js';
13
+ export interface PlayOptions extends MachineOptions {
14
+ /**
15
+ * Save files, by name. A save writes the story's file to 'save'; a restore reads it (and fails
16
+ * when there's none). Pass a Map to start with a file, or to take the one written.
17
+ */
18
+ files?: Map<string, Uint8Array>;
19
+ }
20
+ export interface Turn {
21
+ /** '' for the banner. */
22
+ command: string;
23
+ output: string;
24
+ }
25
+ export interface PlayResult {
26
+ turns: Turn[];
27
+ /** Why play stopped before the commands ran out: a quit, a key press wanted, or a fault. */
28
+ stoppedBy?: 'quit' | 'input-char' | Fault;
29
+ /** The machine, for a test that wants to look inside. */
30
+ machine?: Machine;
31
+ }
32
+ export declare function play(story: Uint8Array, commands: string[], options: PlayOptions): PlayResult;
package/dist/play.js ADDED
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Play a story from a list of commands and return each turn's text: the Node runner, and what the
3
+ * differential tests compare with ZVM. The shape matches Frotzsmith's runReplay: turn 0 is the
4
+ * banner, then one turn per command, until the story stops asking for a line.
5
+ *
6
+ * Two commands aren't typed text: `[timeout]` says a timed read's interval ran out (the timer
7
+ * firing, recorded in a command script so a replay is deterministic: frotzplay-design §6), and
8
+ * `[key x]` presses a key for @read_char (`[key]` alone is Return). Without one of those, a
9
+ * request for a key press ends play, as it does in Frotzsmith's ZVM replay.
10
+ */
11
+ import { Machine } from './machine.js';
12
+ import { normalizeTurn } from './normalize.js';
13
+ /** Instructions one turn may run before it's taken to be looping. */
14
+ const TURN_LIMIT = 50_000_000;
15
+ /**
16
+ * A turn's text after a command. A screen shows the command echoed on its own line first, so the
17
+ * turn is normalized with that line in place and then the line is dropped: text that begins with
18
+ * spaces (a centred chapter title) keeps them, as it does on the screen and in Frotzsmith's ZVM
19
+ * transcripts.
20
+ */
21
+ function turnText(command, text) {
22
+ const out = normalizeTurn(`${command}\n${text}`);
23
+ const nl = out.indexOf('\n');
24
+ const first = (nl === -1 ? out : out.slice(0, nl)).trim();
25
+ return first === command.trim() ? out.slice(nl === -1 ? out.length : nl + 1).replace(/^\n+/, '') : out;
26
+ }
27
+ export function play(story, commands, options) {
28
+ const m = Machine.create(story, options);
29
+ if (!(m instanceof Machine))
30
+ return { turns: [], stoppedBy: m.fault };
31
+ const turns = [];
32
+ const files = options.files ?? new Map();
33
+ const runTurn = () => {
34
+ let stop;
35
+ let ran = 0;
36
+ for (;;) {
37
+ stop = m.run(1_000_000);
38
+ ran += 1_000_000;
39
+ // Saves and restores happen inside a turn: answer them from `files` and go on.
40
+ if (stop.kind === 'save') {
41
+ files.set('save', stop.data);
42
+ m.resume({ saved: true });
43
+ }
44
+ else if (stop.kind === 'restore') {
45
+ notices.push(m.resume({ restore: files.get('save') ?? null }));
46
+ }
47
+ else if (stop.kind !== 'budget' || ran >= TURN_LIMIT)
48
+ return stop;
49
+ }
50
+ };
51
+ const notices = [];
52
+ let stop = runTurn();
53
+ turns.push({ command: '', output: normalizeTurn(m.flushText()) });
54
+ for (const command of commands) {
55
+ const key = /^\[key(?: (.))?\]$/.exec(command);
56
+ let input;
57
+ if (command === '[timeout]' && (stop.kind === 'input-line' || stop.kind === 'input-char') && stop.timeout)
58
+ input = { timeout: true };
59
+ else if (key && stop.kind === 'input-char')
60
+ input = { char: key[1] ? key[1].charCodeAt(0) : 13 };
61
+ else if (stop.kind === 'input-line' && !key && command !== '[timeout]')
62
+ input = { line: command };
63
+ else
64
+ break;
65
+ const fault = m.resume(input);
66
+ if (fault)
67
+ return { turns, stoppedBy: fault, machine: m };
68
+ stop = runTurn();
69
+ // A typed line is echoed on the screen; a key press or the timer isn't.
70
+ turns.push({ command, output: 'line' in input ? turnText(command, m.flushText()) : normalizeTurn(m.flushText()) });
71
+ }
72
+ const result = { turns, machine: m };
73
+ if (stop.kind === 'quit' || stop.kind === 'input-char')
74
+ result.stoppedBy = stop.kind;
75
+ else if (stop.kind === 'fault')
76
+ result.stoppedBy = stop.fault;
77
+ else if (stop.kind === 'budget')
78
+ result.stoppedBy = { code: 'bad-story', message: `a turn ran more than ${TURN_LIMIT.toLocaleString('en')} instructions without stopping`, pc: m.state.pc };
79
+ return result;
80
+ }
81
+ //# sourceMappingURL=play.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play.js","sourceRoot":"","sources":["../src/play.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Quetzal 1.4 (the Z-machine's standard save format, Martin Frost): an IFF `FORM` of type `IFZS`
3
+ * with `IFhd` (which story, and the PC), `CMem` or `UMem` (dynamic memory), and `Stks` (the
4
+ * frames). Written the way ZVM writes it, so a save from either interpreter restores in the other.
5
+ */
6
+ import type { Frame } from './types.js';
7
+ export interface QuetzalState {
8
+ release: number;
9
+ serial: Uint8Array;
10
+ checksum: number;
11
+ /** The save instruction's store byte (v4+) or branch byte (v3): §5.8 of the Quetzal spec. */
12
+ pc: number;
13
+ /** The whole dynamic memory, as saved. */
14
+ dynamic: Uint8Array;
15
+ frames: Frame[];
16
+ }
17
+ /** Dynamic memory XORed with the original, zero runs as `0, n − 1` (n ≤ 256), trailing zeros left out. */
18
+ export declare function compressMemory(dynamic: Uint8Array, original: Uint8Array): number[];
19
+ export declare function decompressMemory(data: Uint8Array, original: Uint8Array): Uint8Array;
20
+ /** A Quetzal file for this state. */
21
+ export declare function writeQuetzal(s: QuetzalState, original: Uint8Array): Uint8Array;
22
+ /** Read a Quetzal file; `original` is the story's dynamic memory as it starts. Throws an Error that says what's wrong, in words. */
23
+ export declare function readQuetzal(bytes: Uint8Array, original: Uint8Array): QuetzalState;