DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T d

⟦d52b0f18b⟧ TextFile

    Length: 2989 (0xbad)
    Types: TextFile
    Names: »debug.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Abermud/debug.c« 

TextFile

/*
**
*/
#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);
    }
}