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 c

⟦7bdc36bc5⟧ TextFile

    Length: 2551 (0x9f7)
    Types: TextFile
    Names: »cio.c«

Derivation

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

TextFile

/* these are c routines to handle the pdp dungeon i/o */
#include <stdio.h>

/*	send arguments to message printing process */
rspsb3_(arg1,arg2,arg3)

int *arg1,*arg2,*arg3;
{
	printf("n%d %d %d\n",*arg1,*arg2,*arg3);
	fflush(stdout);
	return;	
}

/* print for puzzle room */
puzout_(p)

char *p;
{

printf("       |%c%c %c%c %c%c|\n",p[0],p[0],p[1],p[1],p[2],p[2]);
printf("  WEST |%c%c .. %c%c| EAST\n",p[3],p[3],p[4],p[4]);
printf("       |%c%c %c%c %c%c|\n",p[5],p[5],p[6],p[6],p[7],p[7]);
fflush(stdout);
return;
}

/* output general string (echo room) */
outstr_(ptr,len)

int  *len;
char *ptr[];
{
	printf("%.*s\n",*len,ptr);
	fflush(stdout);
	return;
}


/* print a prompt */
prompt_()
{
	printf(" > ~");
	fflush(stdout);
	return;
}

/* terminate the game */
exit_()
{
	fprintf(stderr,"The game is over\n");
	exit(0);
}

/*	read a character */
rdchr_(cptr)

char *cptr;
{
static int ch;

	if((ch = getchar()) == EOF){
		fprintf(stderr,"EOF on input\n");
		exit_();
	}
	else 	*cptr = ch;
	return;
}

/* read a line from std input */
rdlin_(sptr,cntptr)

int *cntptr;
char *sptr;
{
static int chr;
	*cntptr = 0;
	while ((chr = getchar()) != EOF){
		if((chr >= 97) && (chr <= 122))	/* convert to uc */
			chr -= 32;
		if (chr == 10 ){ 		/* quit if newline */
			*sptr++ = '\0';
			return;
		}
		if ((chr == 32) && (*cntptr == 0))  /* rm lead blank */
			continue;
		if (*cntptr >= 78)
			continue;
		*sptr++ = chr;
		(*cntptr)++;
	}
	fprintf(stderr,"EOF on input\n");
	exit_();
}

/*	print cure time */
cured_(time)

int *time;
{
	printf(" You will be cured in %d moves\n",*time);
	fflush(stdout);
	return;
}

/* print the score */
pscore_(score,max,moves)

int *score, *max, *moves;
{
printf(" Your current score is %d out of %d points in %d moves.\n",*score, *max, *moves);
	fflush(stdout);
	return;
}

/* BUG-- REPORT FATAL SYSTEM ERROR 
C
C CALLED BY--
C
C	CALL BUG(NO,PAR)
C
C      note: return if DBGFLG set is not implemented
C*/
bug_(a,b)

int *a,*b;
{
	fprintf(stderr,"Program error %d ; Parameter %d\n",*a,*b);
	exit(0);
}


/* send restore message  */
restor_()
{
	printf(" Restore by starting with 'dungeon r'\n");
	return;
}

/* password output */
voice_(sp1, sp2)

char *sp1, *sp2;
{
	printf(" A Hollow voice replies: %6.6s %6.6s\n", sp1, sp2);
	return;
}

/* print version */
prvers_(v1, v2, v3)

int *v1, *v2;
char *v3;
{
	printf(" V%1d.%2d%c\n", *v1, *v2, *v3);
	return;
}

/* dummy stub for game debugger */
nogdt_()
{
	/* debugger deleted to save room */
	printf(" Sorry, no debugger available in this version.\n");
	return;
}