Begin to split undifferentiated longs into semantic types.
This commit is contained in:
parent
75bf848ecd
commit
c1ee521f73
2 changed files with 16 additions and 13 deletions
17
advent.h
17
advent.h
|
@ -9,6 +9,9 @@ typedef struct lcg_state
|
||||||
unsigned long a, c, m, x;
|
unsigned long a, c, m, x;
|
||||||
} lcg_state;
|
} lcg_state;
|
||||||
|
|
||||||
|
typedef long token_t; /* word token - someday this will be a character array */
|
||||||
|
typedef long vocab_t; /* index into a vocabulary array */
|
||||||
|
|
||||||
extern long ABB[], ATLOC[], BLKLIN, DFLAG, DLOC[], FIXED[], HOLDNG,
|
extern long ABB[], ATLOC[], BLKLIN, DFLAG, DLOC[], FIXED[], HOLDNG,
|
||||||
LINK[], LNLENG, LNPOSN,
|
LINK[], LNLENG, LNPOSN,
|
||||||
PARMS[], PLACE[];
|
PARMS[], PLACE[];
|
||||||
|
@ -21,17 +24,17 @@ extern lcg_state lcgstate;
|
||||||
#define READ_MODE "rb"
|
#define READ_MODE "rb"
|
||||||
#define WRITE_MODE "wb"
|
#define WRITE_MODE "wb"
|
||||||
|
|
||||||
extern void SPEAK(long);
|
extern void SPEAK(vocab_t);
|
||||||
extern void PSPEAK(long,long);
|
extern void PSPEAK(vocab_t,int);
|
||||||
extern void RSPEAK(long);
|
extern void RSPEAK(vocab_t);
|
||||||
extern void SETPRM(long,long,long);
|
extern void SETPRM(long,long,long);
|
||||||
|
|
||||||
extern bool fGETIN(FILE *,long*,long*,long*,long*);
|
extern bool fGETIN(FILE *,token_t*,token_t*,token_t*,token_t*);
|
||||||
#define GETIN(input,WORD1,WORD1X,WORD2,WORD2X) fGETIN(input,&WORD1,&WORD1X,&WORD2,&WORD2X)
|
#define GETIN(input,WORD1,WORD1X,WORD2,WORD2X) fGETIN(input,&WORD1,&WORD1X,&WORD2,&WORD2X)
|
||||||
|
|
||||||
extern long YES(FILE *,long,long,long);
|
extern long YES(FILE *,vocab_t,vocab_t,vocab_t);
|
||||||
extern long GETTXT(long,long,long);
|
extern long GETTXT(bool,bool,bool);
|
||||||
extern long MAKEWD(long);
|
extern token_t MAKEWD(long);
|
||||||
|
|
||||||
extern void fPUTTXT(long,long*,long);
|
extern void fPUTTXT(long,long*,long);
|
||||||
#define PUTTXT(WORD,STATE,CASE) fPUTTXT(WORD,&STATE,CASE)
|
#define PUTTXT(WORD,STATE,CASE) fPUTTXT(WORD,&STATE,CASE)
|
||||||
|
|
12
misc.c
12
misc.c
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
/* I/O routines (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */
|
/* I/O routines (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */
|
||||||
|
|
||||||
void SPEAK(long N) {
|
void SPEAK(vocab_t N) {
|
||||||
long BLANK, CASE, I, K, L, NEG, NPARMS, PARM, PRMTYP, STATE;
|
long BLANK, CASE, I, K, L, NEG, NPARMS, PARM, PRMTYP, STATE;
|
||||||
|
|
||||||
/* Print the message which starts at LINES(N). Precede it with a blank line
|
/* Print the message which starts at LINES(N). Precede it with a blank line
|
||||||
|
@ -111,7 +111,7 @@ L40: if(BLANK)TYPE0();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PSPEAK(long MSG,long SKIP) {
|
void PSPEAK(vocab_t MSG,int SKIP) {
|
||||||
long I, M;
|
long I, M;
|
||||||
|
|
||||||
/* Find the skip+1st message from msg and print it. MSG should be the index of
|
/* Find the skip+1st message from msg and print it. MSG should be the index of
|
||||||
|
@ -129,7 +129,7 @@ L9: SPEAK(M);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RSPEAK(long I) {
|
void RSPEAK(vocab_t I) {
|
||||||
|
|
||||||
/* Print the I-TH "random" message (section 6 of database). */
|
/* Print the I-TH "random" message (section 6 of database). */
|
||||||
|
|
||||||
|
@ -194,8 +194,8 @@ L22: JUNK=GETTXT(false,true,true);
|
||||||
#undef WORD2X
|
#undef WORD2X
|
||||||
#define GETIN(SRC,WORD1,WORD1X,WORD2,WORD2X) fGETIN(SRC,&WORD1,&WORD1X,&WORD2,&WORD2X)
|
#define GETIN(SRC,WORD1,WORD1X,WORD2,WORD2X) fGETIN(SRC,&WORD1,&WORD1X,&WORD2,&WORD2X)
|
||||||
|
|
||||||
long YES(FILE *input, long X, long Y, long Z) {
|
long YES(FILE *input, vocab_t X, vocab_t Y, vocab_t Z) {
|
||||||
long YEAH, REPLY, JUNK1, JUNK2, JUNK3;
|
token_t YEAH, REPLY, JUNK1, JUNK2, JUNK3;
|
||||||
|
|
||||||
/* Print message X, wait for yes/no answer. If yes, print Y and return true;
|
/* Print message X, wait for yes/no answer. If yes, print Y and return true;
|
||||||
* if no, print Z and return false. */
|
* if no, print Z and return false. */
|
||||||
|
@ -223,7 +223,7 @@ L20: YEAH=false;
|
||||||
* machine dependent i/o stuff is on the following page. See that page
|
* machine dependent i/o stuff is on the following page. See that page
|
||||||
* for a description of MAPCOM's inline array. */
|
* for a description of MAPCOM's inline array. */
|
||||||
|
|
||||||
long GETTXT(long SKIP,long ONEWRD, long UPPER) {
|
long GETTXT(bool SKIP,bool ONEWRD, bool UPPER) {
|
||||||
/* Take characters from an input line and pack them into 30-bit words.
|
/* Take characters from an input line and pack them into 30-bit words.
|
||||||
* Skip says to skip leading blanks. ONEWRD says stop if we come to a
|
* Skip says to skip leading blanks. ONEWRD says stop if we come to a
|
||||||
* blank. UPPER says to map all letters to uppercase. If we reach the
|
* blank. UPPER says to map all letters to uppercase. If we reach the
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue