Skip to content

Commit 1b55589

Browse files
larsbrinkhoffeswenson1
authored andcommitted
Zork source code from 1979.
1 parent c67abad commit 1b55589

23 files changed

Lines changed: 21118 additions & 0 deletions

src/zork/act1.253

Lines changed: 2036 additions & 0 deletions
Large diffs are not rendered by default.

src/zork/act2.92

Lines changed: 793 additions & 0 deletions
Large diffs are not rendered by default.

src/zork/act3.198

Lines changed: 1536 additions & 0 deletions
Large diffs are not rendered by default.

src/zork/act4.231

Lines changed: 1151 additions & 0 deletions
Large diffs are not rendered by default.

src/zork/b.176

Lines changed: 924 additions & 0 deletions
Large diffs are not rendered by default.

src/zork/build.cmd

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
MARC MARC
2+
3+
CONN <ZORK>
4+
<MDL>MDL104
5+
<RESTORE "<MDL>M104UNI">
6+
<SNAME "ZORK">
7+
<FLOAD "LITLPK.GBIN">
8+
<USE "CLEAN" "PURITY">
9+
<SETG NULL!- <INSERT <STRING <ASCII 127>> <ROOT>>>
10+
%%<BLOCK (<MOBLIST FROBOZZ> <GET INITIAL OBLIST> <ROOT>)>
11+
<DEFINE GL (FILE "AUX" VAL (CH <OPEN "READ" .FILE>) L)
12+
<SET L
13+
<MAPF ,LIST
14+
<FUNCTION ()
15+
<SET VAL <READ .CH '<MAPSTOP>>>
16+
<EVAL .VAL>
17+
.VAL>>>
18+
<SET <SET VAL <PARSE <7 .CH>>> .L>
19+
.VAL>
20+
<DEFINE FLUSHG (ATM "AUX" (G ..ATM))
21+
<MAPF <>
22+
<FUNCTION (X)
23+
<COND (<AND <TYPE? .X FORM>
24+
<G? <LENGTH .X> 2>
25+
<MEMQ <1 .X> '![SETG DEFMAC DEFINE]>>
26+
<AND <MANIFEST? <2 .X>>
27+
<UNMANIFEST <2 .X>>>
28+
<GUNASSIGN <2 .X>>)>>
29+
.G>
30+
<UNASSIGN <REMOVE .ATM>>>
31+
%%<ENDBLOCK>
32+
<GL!-FROBOZZ "PRIM.NBIN">
33+
<GL!-FROBOZZ "MAKSTR.NBIN">
34+
<FLOAD "ZORK.XGBIN">
35+
<FLUSHG!-FROBOZZ PRIM>
36+
<FLUSHG!-FROBOZZ MAKSTR>
37+
<FLOAD "TYPHAK.NBIN">
38+
<MAPF <> <FUNCTION (X)
39+
<MAPF <> <FUNCTION (X)
40+
<COND (<GBOUND? .X> <PUT-DECL <GLOC .X> ANY>)>>
41+
.X>>
42+
<GET INITIAL OBLIST>>
43+
<CLEANUP>
44+
<PRINT-CLEANUP>
45+
%%<SET X ,PURELST>
46+
<GROUP-PURIFY X>
47+
<GL!-FROBOZZ "PRIM.NBIN">
48+
<GL!-FROBOZZ "MAKSTR.NBIN">
49+
<FLOAD "DUNG">
50+
<SETG END-GAME-EXISTS? T>
51+
%%<BLOCK (<GET FROBOZZ OBLIST> <GET INITIAL OBLIST> <ROOT>)>
52+
<DEFINE ROOM-FROB (RM L "AUX" TL)
53+
<COND (<SET TL <MEMBER <RDESC1 .RM> .L>>
54+
<PUT .RM ,RDESC1 <1 .TL>>)
55+
(<SET L (<RDESC1 .RM> !.L)>)>
56+
<COND (<SET TL <MEMBER <RDESC2 .RM> .L>>
57+
<PUT .RM ,RDESC2 <1 .TL>>)
58+
(<SET L (<RDESC2 .RM> !.L)>)>
59+
<MAPR <>
60+
<FUNCTION (Y "AUX" (X <1 .Y>))
61+
<COND (<AND <TYPE? .X CEXIT> <CXSTR .X>>
62+
<COND (<SET TL <MEMBER <CXSTR .X> .L>>
63+
<PUT .X ,CXSTR <1 .TL>>)
64+
(<SET L (<CXSTR .X> !.L)>)>)
65+
(<AND <TYPE? .X DOOR> <DSTR .X>>
66+
<COND (<SET TL <MEMBER <DSTR .X> .L>>
67+
<PUT .X ,DSTR <1 .TL>>)
68+
(<SET L (<DSTR .X> !.L)>)>)
69+
(<TYPE? .X NEXIT>
70+
<COND (<SET TL <MEMBER .X .L>>
71+
<PUT .Y 1 <1 .TL>>)
72+
(<SET L (.X !.L)>)>)>>
73+
<REXITS .RM>>
74+
.L>
75+
<DEFINE OBJECT-FROB (OBJ L "AUX" TL TEMP)
76+
<COND (<SET TL <MEMBER <ODESC1 .OBJ> .L>>
77+
<OPUT .OBJ ODESC1 <1 .TL>>)
78+
(<SET L (<ODESC1 .OBJ> !.L)>)>
79+
<COND (<SET TL <MEMBER <ODESC2 .OBJ> .L>>
80+
<PUT .OBJ ,ODESC2 <1 .TL>>)
81+
(<SET L (<ODESC2 .OBJ> !.L)>)>
82+
<COND (<SET TL <MEMBER <ODESCO .OBJ> .L>>
83+
<OPUT .OBJ ODESCO <1 .TL>>)
84+
(<SET L (<ODESCO .OBJ> !.L)>)>
85+
<COND (<SET TEMP <OREAD .OBJ>>
86+
<SET L (.TEMP !.L)>)>
87+
<COND (<SET TEMP <OFMSGS .OBJ>>
88+
<SET L (.TEMP !.L)>)>
89+
.L>
90+
%%<ENDBLOCK>
91+
<GL!-FROBOZZ "DISP1.GBIN">
92+
<DISPATCH-HACK>
93+
<FLUSHG!-FROBOZZ PRIM>
94+
<FLUSHG!-FROBOZZ MAKSTR>
95+
<FLUSHG!-FROBOZZ DISP1>
96+
<SET Y ()>
97+
<SETG FF "; \\\"Dungeon\\\"">
98+
%%<MAPF <>
99+
<FUNCTION (X)
100+
<SET Y <ROOM-FROB!-FROBOZZ .X .Y>>>
101+
,ROOMS>
102+
%%<MAPF <>
103+
<FUNCTION (X)
104+
<SET Y <OBJECT-FROB!-FROBOZZ .X .Y>>>
105+
,OBJECTS>
106+
%%<PUT <PUT FROBOZZ OBLIST> OBLIST>
107+
%%<MAPR <>
108+
<FUNCTION (X)
109+
<PUT .X 1 ,<1 .X>>>
110+
,PURE-LIST>
111+
%%<PUTREST <REST ,PURE-LIST <- <LENGTH ,PURE-LIST> 1>> .Y>
112+
%%<SET Y <IVECTOR <LENGTH ,PURE-LIST>>>
113+
%%<MAPR <>
114+
<FUNCTION (X Y)
115+
<PUT .X 1 <1 .Y>>>
116+
.Y ,PURE-LIST>
117+
%%<SETG PURE-LIST .Y>
118+
<UNASSIGN <REMOVE Y>>
119+
<LENGTH ,PURE-LIST>
120+
%%<PURIFY ,PURE-LIST ,DISPATCH-TABLE>
121+
<KILL:PURITY>
122+
<FLUSH-CLEANUP>
123+
<UNASSIGN X>
124+
<REMOVE <GUNASSIGN PURE-LIST>>
125+
<REMOVE <UNASSIGN FOO>>
126+
<DEFINE F (BAR) <GUNASSIGN <REMOVE .BAR>>>
127+
<F DROP>
128+
<F L-UNUSE>
129+
<F USE>
130+
<F ENTRY>
131+
<F PACKAGE>
132+
<F ENDPACKAGE>
133+
<F FIND/LOAD>
134+
<F F>
135+
<HANDLER <GET ERROR!-INTERRUPTS INTERRUPT> ,ERRH>
136+
<SETG MUD-HAND <OFF <3 <GET ,INCHAN INTERRUPT>>>>
137+
<SETG ZORK-HAND <OFF <HANDLER <GET ,INCHAN INTERRUPT> ,CTRL-S>>>
138+
<GC 0 T>
139+
<SETG DBG <>>
140+
<GC-MON T>
141+
<BLOAT 0 0 0 0 0 300>
142+
<SAVE-IT "<TAA>MADADV.SAVE" <>>
143+
<QUIT>
144+
DEL ZORK.XGBIN
145+
EXP

0 commit comments

Comments
 (0)