xref: /original-bsd/contrib/dungeon/cio.c (revision 87febec0)
1 /* these are c routines to handle the pdp dungeon i/o */
2 #include <stdio.h>
3 
4 /*	send arguments to message printing process */
5 rspsb3_(arg1,arg2,arg3)
6 
7 int *arg1,*arg2,*arg3;
8 {
9 	printf("n%d %d %d\n",*arg1,*arg2,*arg3);
10 	fflush(stdout);
11 	return;
12 }
13 
14 /* print for puzzle room */
15 puzout_(p)
16 
17 char *p;
18 {
19 
20 printf("       |%c%c %c%c %c%c|\n",p[0],p[0],p[1],p[1],p[2],p[2]);
21 printf("  WEST |%c%c .. %c%c| EAST\n",p[3],p[3],p[4],p[4]);
22 printf("       |%c%c %c%c %c%c|\n",p[5],p[5],p[6],p[6],p[7],p[7]);
23 fflush(stdout);
24 return;
25 }
26 
27 /* output general string (echo room) */
28 outstr_(ptr,len)
29 
30 int  *len;
31 char *ptr[];
32 {
33 	printf("%.*s\n",*len,ptr);
34 	fflush(stdout);
35 	return;
36 }
37 
38 
39 /* print a prompt */
40 prompt_()
41 {
42 	printf(" > ~");
43 	fflush(stdout);
44 	return;
45 }
46 
47 /* terminate the game */
48 exit_()
49 {
50 	fprintf(stderr,"The game is over\n");
51 	exit(0);
52 }
53 
54 /*	read a character */
55 rdchr_(cptr)
56 
57 char *cptr;
58 {
59 static int ch;
60 
61 	if((ch = getchar()) == EOF){
62 		fprintf(stderr,"EOF on input\n");
63 		exit_();
64 	}
65 	else 	*cptr = ch;
66 	return;
67 }
68 
69 /* read a line from std input */
70 rdlin_(sptr,cntptr)
71 
72 int *cntptr;
73 char *sptr;
74 {
75 static int chr;
76 	*cntptr = 0;
77 	while ((chr = getchar()) != EOF){
78 		if((chr >= 97) && (chr <= 122))	/* convert to uc */
79 			chr -= 32;
80 		if (chr == 10 ){ 		/* quit if newline */
81 			*sptr++ = '\0';
82 			return;
83 		}
84 		if ((chr == 32) && (*cntptr == 0))  /* rm lead blank */
85 			continue;
86 		if (*cntptr >= 78)
87 			continue;
88 		*sptr++ = chr;
89 		(*cntptr)++;
90 	}
91 	fprintf(stderr,"EOF on input\n");
92 	exit_();
93 }
94 
95 /*	print cure time */
96 cured_(time)
97 
98 int *time;
99 {
100 	printf(" You will be cured in %d moves\n",*time);
101 	fflush(stdout);
102 	return;
103 }
104 
105 /* print the score */
106 pscore_(score,max,moves)
107 
108 int *score, *max, *moves;
109 {
110 printf(" Your current score is %d out of %d points in %d moves.\n",*score, *max, *moves);
111 	fflush(stdout);
112 	return;
113 }
114 
115 /* BUG-- REPORT FATAL SYSTEM ERROR
116 C
117 C CALLED BY--
118 C
119 C	CALL BUG(NO,PAR)
120 C
121 C      note: return if DBGFLG set is not implemented
122 C*/
123 bug_(a,b)
124 
125 int *a,*b;
126 {
127 	fprintf(stderr,"Program error %d ; Parameter %d\n",*a,*b);
128 	exit(0);
129 }
130 
131 
132 /* send restore message  */
133 restor_()
134 {
135 	printf(" Restore by starting with 'dungeon r'\n");
136 	return;
137 }
138 
139 /* password output */
140 voice_(sp1, sp2)
141 
142 char *sp1, *sp2;
143 {
144 	printf(" A Hollow voice replies: %6.6s %6.6s\n", sp1, sp2);
145 	return;
146 }
147 
148 /* print version */
149 prvers_(v1, v2, v3)
150 
151 int *v1, *v2;
152 char *v3;
153 {
154 	printf(" V%1d.%2d%c\n", *v1, *v2, *v3);
155 	return;
156 }
157 
158 /* dummy stub for game debugger */
159 nogdt_()
160 {
161 	/* debugger deleted to save room */
162 	printf(" Sorry, no debugger available in this version.\n");
163 	return;
164 }
165