aboutsummaryrefslogtreecommitdiff
path: root/engines/glk/alan2/debug.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/glk/alan2/debug.cpp')
-rw-r--r--engines/glk/alan2/debug.cpp546
1 files changed, 275 insertions, 271 deletions
diff --git a/engines/glk/alan2/debug.cpp b/engines/glk/alan2/debug.cpp
index 3c67fbe109..f7075ca5c8 100644
--- a/engines/glk/alan2/debug.cpp
+++ b/engines/glk/alan2/debug.cpp
@@ -35,227 +35,228 @@ namespace Glk {
namespace Alan2 {
static void showatrs(Aword atradr) {
- AtrElem *at;
- int i;
- char str[80];
-
- if (atradr == 0) return;
-
- i = 1;
- for (at = (AtrElem *) addrTo(atradr); !endOfTable(at); at++) {
- sprintf(str, "$i%3ld: %ld (%s)", (long) i, (unsigned long) at->val, (char *) addrTo(at->stradr));
- output(str);
- i++;
- }
+ AtrElem *at;
+ int i;
+ char str[80];
+
+ if (atradr == 0) return;
+
+ i = 1;
+ for (at = (AtrElem *) addrTo(atradr); !endOfTable(at); at++) {
+ sprintf(str, "$i%3ld: %ld (%s)", (long) i, (unsigned long) at->val, (char *) addrTo(at->stradr));
+ output(str);
+ i++;
+ }
}
static void showobjs() {
- char str[80];
- int obj;
-
- output("OBJECTS:");
- for (obj = OBJMIN; obj <= OBJMAX; obj++) {
- sprintf(str, "$i%3ld: ", (long) obj);
- output(str);
- say(obj);
- }
+ char str[80];
+ int obj;
+
+ output("OBJECTS:");
+ for (obj = OBJMIN; obj <= OBJMAX; obj++) {
+ sprintf(str, "$i%3ld: ", (long) obj);
+ output(str);
+ say(obj);
+ }
}
static void showobj(int obj) {
- char str[80];
+ char str[80];
#define OBJ (obj-OBJMIN)
- if (!isObj(obj)) {
- sprintf(str, "Object number out of range. Between %ld and %ld, please.", (unsigned long) OBJMIN, (unsigned long) OBJMAX);
- output(str);
- return;
- }
-
- sprintf(str, "OBJECT %d :", obj);
- output(str);
- say(obj);
-
- sprintf(str, "$iLocation = %ld", (unsigned long) where(obj));
- output(str);
- if (isLoc(objs[OBJ].loc))
- say(objs[OBJ].loc);
- else if (isCnt(objs[OBJ].loc)) {
- if (isObj(objs[OBJ].loc)) {
- output("in");
- say(objs[OBJ].loc);
- } else if (isAct(objs[OBJ].loc)) {
- output("carried by");
- say(objs[OBJ].loc);
- } else
- interpret(cnts[objs[OBJ].loc-CNTMIN].nam);
- } else if (objs[OBJ].loc == 0)
- output("nowhere");
- else
- output("Illegal location!");
-
-
- output("$iAttributes =");
- showatrs(objs[OBJ].atrs);
+ if (!isObj(obj)) {
+ sprintf(str, "Object number out of range. Between %ld and %ld, please.", (unsigned long) OBJMIN, (unsigned long) OBJMAX);
+ output(str);
+ return;
+ }
+
+ sprintf(str, "OBJECT %d :", obj);
+ output(str);
+ say(obj);
+
+ sprintf(str, "$iLocation = %ld", (unsigned long) where(obj));
+ output(str);
+ if (isLoc(objs[OBJ].loc))
+ say(objs[OBJ].loc);
+ else if (isCnt(objs[OBJ].loc)) {
+ if (isObj(objs[OBJ].loc)) {
+ output("in");
+ say(objs[OBJ].loc);
+ } else if (isAct(objs[OBJ].loc)) {
+ output("carried by");
+ say(objs[OBJ].loc);
+ } else
+ interpret(cnts[objs[OBJ].loc - CNTMIN].nam);
+ } else if (objs[OBJ].loc == 0)
+ output("nowhere");
+ else
+ output("Illegal location!");
+
+
+ output("$iAttributes =");
+ showatrs(objs[OBJ].atrs);
#undef OBJ
}
static void showcnts() {
- char str[80];
- int cnt;
+ char str[80];
+ int cnt;
#define CNT (cnt-CNTMIN)
- output("CONTAINERS:");
- for (cnt = CNTMIN; cnt <= CNTMAX; cnt++) {
- sprintf(str, "$i%3ld: ", (long) cnt);
- output(str);
- if (cnts[CNT].nam != 0)
- interpret(cnts[CNT].nam);
- if (cnts[CNT].parent != 0)
- say(cnts[CNT].parent);
- }
+ output("CONTAINERS:");
+ for (cnt = CNTMIN; cnt <= CNTMAX; cnt++) {
+ sprintf(str, "$i%3ld: ", (long) cnt);
+ output(str);
+ if (cnts[CNT].nam != 0)
+ interpret(cnts[CNT].nam);
+ if (cnts[CNT].parent != 0)
+ say(cnts[CNT].parent);
+ }
#undef CNT
}
static void showcnt(int cnt) {
- char str[80];
- int i;
- Abool found = FALSE;
+ char str[80];
+ int i;
+ Abool found = FALSE;
#define CNT (cnt-CNTMIN)
- if (cnt < CNTMIN || cnt > CNTMAX) {
- sprintf(str, "Container number out of range. Between %ld and %ld, please.", (unsigned long) CNTMIN, (unsigned long) CNTMAX);
- output(str);
- return;
- }
-
- sprintf(str, "CONTAINER %d :", cnt);
- output(str);
- if (cnts[CNT].nam != 0)
- interpret(cnts[CNT].nam);
- if (cnts[CNT].parent != 0) {
- cnt = cnts[CNT].parent;
- say(cnt);
- sprintf(str, "$iLocation = %ld", (unsigned long) where(cnt));
- output(str);
- }
- output("$iContains ");
- for (i = OBJMIN; i <= OBJMAX; i++) {
- if (in(i, cnt)) { /* Yes, it's in this container */
- if (!found) {
- output("$n");
- found = TRUE;
- }
- sprintf(str, "$t$t%d: ", i);
- output(str);
- say(i);
- }
- }
- if (!found)
- output("nothing");
+ if (cnt < CNTMIN || cnt > CNTMAX) {
+ sprintf(str, "Container number out of range. Between %ld and %ld, please.", (unsigned long) CNTMIN, (unsigned long) CNTMAX);
+ output(str);
+ return;
+ }
+
+ sprintf(str, "CONTAINER %d :", cnt);
+ output(str);
+ if (cnts[CNT].nam != 0)
+ interpret(cnts[CNT].nam);
+ if (cnts[CNT].parent != 0) {
+ cnt = cnts[CNT].parent;
+ say(cnt);
+ sprintf(str, "$iLocation = %ld", (unsigned long) where(cnt));
+ output(str);
+ }
+ output("$iContains ");
+ for (i = OBJMIN; i <= OBJMAX; i++) {
+ if (in(i, cnt)) { /* Yes, it's in this container */
+ if (!found) {
+ output("$n");
+ found = TRUE;
+ }
+ sprintf(str, "$t$t%d: ", i);
+ output(str);
+ say(i);
+ }
+ }
+ if (!found)
+ output("nothing");
#undef CNT
}
static void showlocs() {
- char str[80];
- int loc;
-
- output("LOCATIONS:");
- for (loc = LOCMIN; loc <= LOCMAX; loc++) {
- sprintf(str, "$i%3ld: ", (long) loc);
- output(str);
- say(loc);
- }
+ char str[80];
+ int loc;
+
+ output("LOCATIONS:");
+ for (loc = LOCMIN; loc <= LOCMAX; loc++) {
+ sprintf(str, "$i%3ld: ", (long) loc);
+ output(str);
+ say(loc);
+ }
}
static void showloc(int loc) {
- char str[80];
+ char str[80];
-
- if (!isLoc(loc)) {
- sprintf(str, "Location number out of range. Between %ld and %ld, please.", (unsigned long) LOCMIN, (unsigned long) LOCMAX);
- output(str);
- return;
- }
- sprintf(str, "LOCATION %d :", loc);
- output(str);
- say(loc);
+ if (!isLoc(loc)) {
+ sprintf(str, "Location number out of range. Between %ld and %ld, please.", (unsigned long) LOCMIN, (unsigned long) LOCMAX);
+ output(str);
+ return;
+ }
- output("$iAttributes =");
- showatrs(locs[loc-LOCMIN].atrs);
+ sprintf(str, "LOCATION %d :", loc);
+ output(str);
+ say(loc);
+
+ output("$iAttributes =");
+ showatrs(locs[loc - LOCMIN].atrs);
}
static void showacts() {
- char str[80];
- int act;
-
- output("ACTORS:");
- for (act = ACTMIN; act <= ACTMAX; act++) {
- sprintf(str, "$i%3ld:", (long) act);
- output(str);
- say(act);
- }
+ char str[80];
+ int act;
+
+ output("ACTORS:");
+ for (act = ACTMIN; act <= ACTMAX; act++) {
+ sprintf(str, "$i%3ld:", (long) act);
+ output(str);
+ say(act);
+ }
}
static void showact(int act) {
- char str[80];
- Boolean oldstp;
-
- if (!isAct(act)) {
- sprintf(str, "Actor number out of range. Between %ld and %ld, please.", (unsigned long) ACTMIN, (unsigned long) ACTMAX);
- output(str);
- return;
- }
-
- sprintf(str, "ACTOR %d :", act);
- output(str);
- oldstp = stpflg; stpflg = FALSE; /* Make sure not to trace this! */
- say(act);
- stpflg = oldstp;
-
- sprintf(str, "$iLocation = %ld", (unsigned long) acts[act-ACTMIN].loc);
- output(str);
- if (isLoc(acts[act-ACTMIN].loc))
- say(acts[act-ACTMIN].loc);
- else if (acts[act-ACTMIN].loc == 0)
- output("nowhere");
- else
- output("Illegal location!");
-
- sprintf(str, "$iScript = %ld", (unsigned long) acts[act-ACTMIN].script);
- output(str);
-
- sprintf(str, "$iStep = %ld", (unsigned long) acts[act-ACTMIN].step);
- output(str);
-
- output("$iAttributes =");
- showatrs(acts[act-ACTMIN].atrs);
+ char str[80];
+ Boolean oldstp;
+
+ if (!isAct(act)) {
+ sprintf(str, "Actor number out of range. Between %ld and %ld, please.", (unsigned long) ACTMIN, (unsigned long) ACTMAX);
+ output(str);
+ return;
+ }
+
+ sprintf(str, "ACTOR %d :", act);
+ output(str);
+ oldstp = stpflg;
+ stpflg = FALSE; /* Make sure not to trace this! */
+ say(act);
+ stpflg = oldstp;
+
+ sprintf(str, "$iLocation = %ld", (unsigned long) acts[act - ACTMIN].loc);
+ output(str);
+ if (isLoc(acts[act - ACTMIN].loc))
+ say(acts[act - ACTMIN].loc);
+ else if (acts[act - ACTMIN].loc == 0)
+ output("nowhere");
+ else
+ output("Illegal location!");
+
+ sprintf(str, "$iScript = %ld", (unsigned long) acts[act - ACTMIN].script);
+ output(str);
+
+ sprintf(str, "$iStep = %ld", (unsigned long) acts[act - ACTMIN].step);
+ output(str);
+
+ output("$iAttributes =");
+ showatrs(acts[act - ACTMIN].atrs);
}
static void showevts() {
- int evt, i;
- char str[80];
- Boolean scheduled;
-
- output("EVENTS:");
- for (evt = EVTMIN; evt <= EVTMAX; evt++) {
- sprintf(str, "$i%d (%s):", evt, (char *)addrTo(evts[evt-EVTMIN].stradr));
- output(str);
- scheduled = FALSE;
- for (i = 0; i < etop; i++)
- if ((scheduled = (eventq[i].event == evt)))
- break;
- if (scheduled) {
- sprintf(str, "Scheduled for +%d, at ", eventq[i].time-cur.tick);
- output(str);
- say(eventq[i].where);
- } else
- output("Not scheduled.");
- }
+ int evt, i;
+ char str[80];
+ Boolean scheduled;
+
+ output("EVENTS:");
+ for (evt = EVTMIN; evt <= EVTMAX; evt++) {
+ sprintf(str, "$i%d (%s):", evt, (char *)addrTo(evts[evt - EVTMIN].stradr));
+ output(str);
+ scheduled = FALSE;
+ for (i = 0; i < etop; i++)
+ if ((scheduled = (eventq[i].event == evt)))
+ break;
+ if (scheduled) {
+ sprintf(str, "Scheduled for +%d, at ", eventq[i].time - cur.tick);
+ output(str);
+ say(eventq[i].where);
+ } else
+ output("Not scheduled.");
+ }
}
@@ -263,43 +264,46 @@ static Boolean trc, stp;
static int loc;
void saveInfo() {
- /* Save some important things */
- trc = trcflg; trcflg = FALSE;
- stp = stpflg; stpflg = FALSE;
- loc = cur.loc; cur.loc = where(HERO);
+ /* Save some important things */
+ trc = trcflg;
+ trcflg = FALSE;
+ stp = stpflg;
+ stpflg = FALSE;
+ loc = cur.loc;
+ cur.loc = where(HERO);
}
void restoreInfo() {
- /* Restore! */
- trcflg = trc;
- stpflg = stp;
- cur.loc = loc;
+ /* Restore! */
+ trcflg = trc;
+ stpflg = stp;
+ cur.loc = loc;
}
void debug() {
- char buf[256];
- char c;
- int i;
-
- saveInfo();
- while (TRUE) {
- if (anyOutput)
- para();
- do {
- output("ABUG> ");
- (void)readline(buf);
-
- lin = 1;
- c = buf[0];
- i = 0;
- sscanf(&buf[1], "%d", &i);
- } while (buf && c == '\0');
-
- switch (toUpper(c)) {
- case 'H':
- case '?':
- output(alan.longHeader);
- output("$nABUG Commands:\
+ char buf[256];
+ char c;
+ int i;
+
+ saveInfo();
+ while (TRUE) {
+ if (anyOutput)
+ para();
+ do {
+ output("ABUG> ");
+ (void)readline(buf);
+
+ lin = 1;
+ c = buf[0];
+ i = 0;
+ sscanf(&buf[1], "%d", &i);
+ } while (buf && c == '\0');
+
+ switch (toUpper(c)) {
+ case 'H':
+ case '?':
+ output(alan.longHeader);
+ output("$nABUG Commands:\
$iO [n] -- show object[s]\
$iA [n] -- show actor[s]\
$iL [n] -- show location[s]\
@@ -310,58 +314,58 @@ void debug() {
$iS -- toggle step mode\
$iX -- exit debug mode\
$iQ -- quit game");
- break;
- case 'Q':
- terminate(0);
- case 'X':
- dbgflg = FALSE; /* Fall through to 'G' */
- case 'G':
- restoreInfo();
- return;
- case 'O':
- if (i == 0)
- showobjs();
- else
- showobj(i);
- break;
- case 'C':
- if (i == 0)
- showcnts();
- else
- showcnt(i);
- break;
- case 'A':
- if (i == 0)
- showacts();
- else
- showact(i);
- break;
- case 'L':
- if (i == 0)
- showlocs();
- else
- showloc(i);
- break;
- case 'E':
- showevts();
- break;
- case 'S':
- if ((stp = !stp))
- printf("Step on.");
- else
- printf("Step off.");
- break;
- case 'T':
- if ((trc = !trc))
- printf("Trace on.");
- else
- printf("Trace off.");
- break;
- default:
- output("Unknown ABUG command. ? for help.");
- break;
- }
- }
+ break;
+ case 'Q':
+ terminate(0);
+ case 'X':
+ dbgflg = FALSE; /* Fall through to 'G' */
+ case 'G':
+ restoreInfo();
+ return;
+ case 'O':
+ if (i == 0)
+ showobjs();
+ else
+ showobj(i);
+ break;
+ case 'C':
+ if (i == 0)
+ showcnts();
+ else
+ showcnt(i);
+ break;
+ case 'A':
+ if (i == 0)
+ showacts();
+ else
+ showact(i);
+ break;
+ case 'L':
+ if (i == 0)
+ showlocs();
+ else
+ showloc(i);
+ break;
+ case 'E':
+ showevts();
+ break;
+ case 'S':
+ if ((stp = !stp))
+ printf("Step on.");
+ else
+ printf("Step off.");
+ break;
+ case 'T':
+ if ((trc = !trc))
+ printf("Trace on.");
+ else
+ printf("Trace off.");
+ break;
+ default:
+ output("Unknown ABUG command. ? for help.");
+ break;
+ }
+ }
}
@@ -374,16 +378,16 @@ void debug() {
*/
void debugsay(int item) {
- saveInfo();
- needsp = FALSE;
- col = 1;
- if (item == 0)
- printf("$null$");
- else
- say(item);
- needsp = FALSE;
- col = 1;
- restoreInfo();
+ saveInfo();
+ needsp = FALSE;
+ col = 1;
+ if (item == 0)
+ printf("$null$");
+ else
+ say(item);
+ needsp = FALSE;
+ col = 1;
+ restoreInfo();
}
} // End of namespace Alan2