extern const char ascii_to_advent[];
extern const char advent_to_ascii[];
extern FILE *logfp;
-extern bool oldstyle;
+extern bool oldstyle, editline, prompt;
extern lcg_state lcgstate;
/* b is not needed for POSIX but harmless */
#define READ_MODE "rb"
#define WRITE_MODE "wb"
-
+extern void* xmalloc(size_t);
+extern char* xstrdup(const char*);
+extern void packed_to_token(long, char token[6]);
extern void newspeak(char*);
-extern void SPEAK(vocab_t);
extern void PSPEAK(vocab_t,int);
extern void RSPEAK(vocab_t);
extern void SETPRM(long,long,long);
extern bool MAPLIN(FILE *);
extern void TYPE(void);
extern void DATIME(long*, long*);
-extern long MOD(long,long);
extern void set_seed(long);
extern unsigned long get_next_lcg_value(void);
extern void score(long);
extern int saveresume(FILE *, bool);
-/* Statement functions
- *
+/*
+ * MOD(N,M) = Arithmetic modulus
* AT(OBJ) = true if on either side of two-placed object
* CNDBIT(L,N) = true if COND(L) has bit n set (bit 0 is units bit)
* DARK(LOC) = true if location "LOC" is dark
* PCT(N) = true N% of the time (N integer from 0 to 100)
* TOTING(OBJ) = true if the OBJ is being carried */
+#define MOD(N,M) ((N) % (M))
#define TOTING(OBJ) (game.place[OBJ] == -1)
#define AT(OBJ) (game.place[OBJ] == game.loc || game.fixed[OBJ] == game.loc)
#define HERE(OBJ) (AT(OBJ) || TOTING(OBJ))
RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAY, SIGN, SNAKE,
STEPS, STICK, STREAM, THROW, TRIDNT, TROLL, TROLL2,
URN, VASE, VEND, VOLCAN, WATER;
-/* everything else */
-extern long K, SPK, WD1, WD1X, WD2, WD2X;
enum speechpart {unknown, intransitive, transitive};
+/* Phase codes for action returns.
+ * These were at one time FORTRAN line numbers.
+ * The values don't matter, but perturb their order at your peril.
+ */
+#define GO_TERMINATE 2
+#define GO_MOVE 8
+#define GO_TOP 2000
+#define GO_CLEAROBJ 2012
+#define GO_CHECKHINT 2600
+#define GO_CHECKFOO 2607
+#define GO_CLOSEJUMP 2610
+#define GO_DIRECTION 2620
+#define GO_LOOKUP 2630
+#define GO_WORD2 2800
+#define GO_SPECIALS 1900
+#define GO_UNKNOWN 8000
+#define GO_ACTION 40000
+#define GO_DWARFWAKE 19000
+
/* hack to ignore GCC Unused Result */
#define IGNORE(r) do{if (r){}}while(0)