|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 2989 (0xbad)
Types: TextFile
Names: »debug.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Abermud/debug.c«
/*
**
*/
#include "kernel.h"
#include "condact.h"
#include <signal.h>
#ifdef RCSID
static char RCS[] =
"$Header: debug.c,v 1.1 89/03/13 09:36:03 rsalz Exp $";
#endif /* RCSID */
TABLE debug_command[] =
{
"exit", 0,
"asave", 1, /* Most fo this is irrelevant crud
* till we get game booting */
"aload", 2, /* off world startup data files and
* not code segs */
"osave", 3,
"oload", 4,
"msave", 5,
"mload", 6,
"mlist", 7,
"alist", 8,
"olist", 9,
"plist", 10,
"medit", 11,
"aedit", 12,
"oedit", 13,
"pedit", 14,
"minsert", 15,
"ainsert", 16,
"oinsert", 17,
"pinsert", 18,
"spawn", 19,
"vlist", 20,
"vsave", 22,
"ctrap", 21,
NULL, -1
};
int
TFindCode(tptr, name)
register TABLE *tptr;
register char *name;
{
for (; tptr->t_name; tptr++)
if (EQ(tptr->t_name, name))
return tptr->t_code;
return -1;
}
dgetinput(prmpt, bfr)
char *prmpt, *bfr;
{
sig_alon();
key_input(prmpt, 60);
sig_aloff();
strcpy(bfr, key_buff);
}
dcommand()
{
char x[80];
while (1) {
dgetinput("DEBUG:1/04>", x);
switch (TFindCode(debug_command, x)) {
case -1:
bprintf("Unknown Debug command.\n");
break;
case 0:
bprintf("Exiting Debugger.\n");
return;
case 7:
mlist();
break;
case 8:
alist();
break;
case 9:
olist();
break;
case 10:
plist();
break;
case 19:
spawn();
break;
case 20:
vlist_dbg();
break;
case 21:
signal(SIGINT, SIG_DFL);
break;
case 22:
vsave();
break;
default:
bprintf("Not yet implemented...\n");
}
}
}
debug2()
{
dcommand();
}
dgetnum(prmpt, rl, ru)
char *prmpt;
int rl, ru;
{
char bf[81];
int v;
while (1) {
dgetinput(prmpt, bf);
sscanf(bf, "%d", &v);
if (v >= rl && v <= ru)
return v;
bprintf("Sorry - invalid , range is %d..%d.\n", rl, ru);
}
}
mlist()
{
int a, b, c;
a = countmsg();
b = dgetnum("From:", 0, a);
c = dgetnum("To:", b, a);
for (; b <= c; b++) {
bprintf("%d]%s\n", b, messages[b]);
pbfr();
}
}
countmsg()
{
register char **p;
for (p = messages; *p; p++)
;
return p - messages;
}
alist()
{
}
olist()
{
register int ct;
for (ct = 0; ct < numobs; ct++) {
bprintf("%s\n", oname(ct));
pbfr();
}
}
plist()
{
}
spawn()
{
bprintf("Spawning personal universe....");
closeworld();
spawned = 1;
bprintf("Welcome to your personal universe...\n");
}
vlist_dbg()
{
register int ct;
closeworld();
for (ct = 0; verbtxt[ct]; ct++) {
bprintf("%-20s:%d\n", verbtxt[ct], verbnum[ct]);
if (ct % 20)
pbfr();
}
}
vsave()
{
register FILE *a;
register int ct;
if ((a = fopen("voc.dmp", "w")) == NULL)
bprintf("Cannot open voc.dmp\n");
else {
for (ct = 0; verbtxt[ct]; ct++)
fprintf(a, "%s %d\n", verbtxt[ct], verbnum[ct]);
fclose(a);
}
}