/* @(#) comm.c version 2.1 (Blit) of 9/13/83 12:57:11 Last Delta: 7/22/83 14:07:23 to /usr/jerq/sccs/src/maze/s.comm.c */ #include "maze.h" char obuf[40]; #ifdef ATARIST #define getchar() (Cauxin() & 0177) #else getchar() { register int c; while ((c = rcvchar()) == -1) wait(RCV); #ifdef DEBUG Lprintf ("Character received (%c)\n", c); #endif return(c&0177); } #endif #ifdef ATARIST sendnchars(len,buf) register int len; register char *buf; { while (len-- > 0) Cauxout(*(buf++)); } #endif getnum() { return(getchar()-' '); } inflush(n) register n; { do getchar(); while (--n > 0); } outchar(c) char c; { register char *p = obuf; *p++ = c; *p++ = '\n'; sendnchars(2,obuf); } quit() { register char *p = obuf; *p++ = 'q'; *p++ = ME + ' '; *p++ = '\n'; sendnchars(3,obuf); #ifndef ATARIST /* *p++ = 4; sendnchars(4,obuf); */ sleep(30); /* sendchar(0177); */ #endif } myname() { register char *p = obuf, *s = me->name; /* int n = 5; */ int n = 7; *p++ = 'n'; *p++ = ME + ' '; /* *p++ = me->score + 64; */ *p++ = ((me->score >> 12) & 0xf) + ' '; *p++ = ((me->score >> 6) & 0x3f) + ' '; *p++ = (me->score & 0x3f) + ' '; while (*p++ = *s++) n++; *(p - 1) = '^'; *p = '\n'; #ifdef DEBUG Lprintf ("Sending name information (%s)\n",obuf); #endif sendnchars(n,obuf); } kill(n) /* n got me */ register n; { register char *p = obuf; *p++ = 'k'; *p++ = n + ' '; *p++ = ME + ' '; *p++ = '\n'; sendnchars(4,obuf); } fire() { register char *p = obuf; *p++ = 'f'; *p++ = ME + ' '; *p++ = '\n'; sendnchars(3,obuf); } extern char maze[HT][WID]; move() { register char *p = obuf; register x,y; *p++ = 'm'; *p++ = ME + ' '; *p++ = me->dir + ' '; x = (me->pos - maze[0])%WID; *p++ = x + ' '; y = (me->pos - maze[0])/WID; *p++ = y + ' '; *p++ = '\n'; sendnchars(6,obuf); }