/* 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;
/* Print the message which starts at LINES(N). Precede it with a blank line
BLANK=BLKLIN;
K=N;
NPARMS=1;
-L10: L=IABS(LINES[K])-1;
+L10: L=labs(LINES[K])-1;
K=K+1;
LNLENG=0;
LNPOSN=1;
if(PRMTYP < 1 || PRMTYP > 9) goto L30;
SHFTXT(LNPOSN+2,PRMTYP-2);
LNPOSN=LNPOSN+PRMTYP;
- PARM=IABS(PARMS[NPARMS]);
+ PARM=labs(PARMS[NPARMS]);
NEG=0;
if(PARMS[NPARMS] < 0)NEG=9;
/* 390 */ for (I=1; I<=PRMTYP; I++) {
return;
}
-void PSPEAK(long MSG,long SKIP) {
+void PSPEAK(vocab_t MSG,int SKIP) {
long I, M;
/* Find the skip+1st message from msg and print it. MSG should be the index of
M=PTEXT[MSG];
if(SKIP < 0) goto L9;
for (I=0; I<=SKIP; I++) {
-L1: M=IABS(LINES[M]);
+L1: M=labs(LINES[M]);
if(LINES[M] >= 0) goto L1;
/*etc*/ ;
} /* end loop */
return;
}
-void RSPEAK(long I) {
+void RSPEAK(vocab_t I) {
/* Print the I-TH "random" message (section 6 of database). */
#undef 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 YEAH, REPLY, JUNK1, JUNK2, JUNK3;
+long YES(FILE *input, vocab_t X, vocab_t Y, vocab_t Z) {
+token_t YEAH, REPLY, JUNK1, JUNK2, JUNK3;
/* Print message X, wait for yes/no answer. If yes, print Y and return true;
* if no, print Z and return false. */
* machine dependent i/o stuff is on the following page. See that page
* 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.
* 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
ALPH1=13*CASE+24;
- ALPH2=26*IABS(CASE)+ALPH1;
- if(IABS(CASE) > 1)ALPH1=ALPH2;
+ ALPH2=26*labs(CASE)+ALPH1;
+ if(labs(CASE) > 1)ALPH1=ALPH2;
/* ALPH1&2 DEFINE RANGE OF WRONG-CASE CHARS, 11-36 OR 37-62 OR EMPTY. */
DIV=64L*64L*64L*64L;
W=WORD;
/* 18 */ for (I=1; I<=5; I++) {
- if(W <= 0 && STATE == 0 && IABS(CASE) <= 1)return;
+ if(W <= 0 && STATE == 0 && labs(CASE) <= 1)return;
BYTE=W/DIV;
if(STATE != 0 || BYTE != 63) goto L12;
STATE=63;
I=PLACE[OBJECT];
J=FIXED[OBJECT];
MOVE(OBJECT,I);
- MOVE(OBJECT+100,J);
+ MOVE(OBJECT+NOBJECTS,J);
return;
}
* are not at any loc, since carry wants to remove objects from ATLOC chains. */
- if(OBJECT > 100) goto L1;
+ if(OBJECT > NOBJECTS) goto L1;
FROM=PLACE[OBJECT];
goto L2;
-L1: {long x = OBJECT-100; FROM=FIXED[x];}
+L1: {long x = OBJECT-NOBJECTS; FROM=FIXED[x];}
L2: if(FROM > 0 && FROM <= 300)CARRY(OBJECT,FROM);
DROP(OBJECT,WHERE);
return;
long TEMP;
/* Start toting an object, removing it from the list of things at its former
- * location. Incr holdng unless it was already being toted. If OBJECT>100
+ * location. Incr holdng unless it was already being toted. If OBJECT>NOBJECTS
* (moving "fixed" second loc), don't change PLACE or HOLDNG. */
- if(OBJECT > 100) goto L5;
+ if(OBJECT > NOBJECTS) goto L5;
if(PLACE[OBJECT] == -1)return;
PLACE[OBJECT]= -1;
HOLDNG=HOLDNG+1;
/* Place an object at a given loc, prefixing it onto the ATLOC list. Decr
* HOLDNG if the object was being toted. */
- if(OBJECT > 100) goto L1;
+ if(OBJECT > NOBJECTS) goto L1;
if(PLACE[OBJECT] == -1)HOLDNG=HOLDNG-1;
PLACE[OBJECT]=WHERE;
goto L2;
-L1: {long x = OBJECT-100; FIXED[x]=WHERE;}
+L1: {long x = OBJECT-NOBJECTS; FIXED[x]=WHERE;}
L2: if(WHERE <= 0)return;
LINK[OBJECT]=ATLOC[WHERE];
ATLOC[WHERE]=OBJECT;
AT=0;
if(DFLAG < 2)return(AT);
AT= -1;
- for (I=1; I<=5; I++) {
+ for (I=1; I<=NDWARVES-1; I++) {
if(DLOC[I] == WHERE) goto L2;
if(DLOC[I] != 0)AT=0;
} /* end loop */
long SETBIT(long bit) {
/* Returns 2**bit for use in constructing bit-masks. */
- 2 << bit;
+ return(2 << bit);
}
bool TSTBIT(long mask, int bit) {
if(MAP2[1] == 0)MPINIT();
- if (!oldstyle && SETUP && OPENED == stdin)
+ if (!oldstyle && OPENED == stdin)
fputs("> ", stdout);
do {
IGNORE(fgets(rawbuf,sizeof(rawbuf)-1,OPENED));
*T = (long) tv.tv_usec;
}
-long IABS(N)long N; {return(N<0? -N : N);}
long MOD(N,M)long N, M; {return(N%M);}