"rain" and "worms" don't understand "termcap" delays

Guy Harris guy at sun.uucp
Fri Jul 19 07:48:26 AEST 1985


minals which aren't 80 by 24, and
	fixes "worms" to put "ti" when entered and "te" when exited.

	#define constants control which system it's built for.  #define USG
	for System III or System V-based systems; #define BSD for 4.xBSD-based
	systems; don't define either one for systems based on any other system,
	like V7.  Xenix 3.0, for instance, is System III-based, so #define USG.

	Here's how to fix "rain.c":

*** rain.c.orig	Mon Jul 15 14:13:55 1985
--- rain.c	Mon Jul 15 14:16:47 1985
***************
*** 3,7
  
  #include <stdio.h>
  #include <sgtty.h>
  #include <signal.h>
  /* rain 11/3/1980 EPS/CITHEP */

--- 3,10 -----
  
  #include <stdio.h>
+ #ifdef USG
+ #include <termio.h>
+ #else
  #include <sgtty.h>
  #endif
  #include <signal.h>
***************
*** 3,8
  
  #include <stdio.h>
  #include <sgtty.h>
  #include <signal.h>
  /* rain 11/3/1980 EPS/CITHEP */
  /* cc rain.c -o rain -O -ltermlib */

--- 6,12 -----
  #include <termio.h>
  #else
  #include <sgtty.h>
+ #endif
  #include <signal.h>
  /* rain 11/3/1980 EPS/CITHEP */
  /* cc rain.c -o rain -O -ltermlib */
***************
*** 6,16
  #include <signal.h>
  /* rain 11/3/1980 EPS/CITHEP */
  /* cc rain.c -o rain -O -ltermlib */
! #define cursor(col,row) tputs(tgoto(CM,col,row),1,outc)
! outc(c)
! {
! 	putchar(c);
! }
  extern char *UP;
  extern short ospeed;
  struct sgttyb old_tty;

--- 10,16 -----
  #include <signal.h>
  /* rain 11/3/1980 EPS/CITHEP */
  /* cc rain.c -o rain -O -ltermlib */
! #define cursor(col,row) tputs(tgoto(CM,col,row),1,fputchar)
  extern char *UP;
  extern short ospeed;
  #ifdef USG
***************
*** 13,18
  }
  extern char *UP;
  extern short ospeed;
  struct sgttyb old_tty;
  char *LL, *TE, *TI;
  main(argc,argv)

--- 13,21 -----
  #define cursor(col,row) tputs(tgoto(CM,col,row),1,fputchar)
  extern char *UP;
  extern short ospeed;
+ #ifdef USG
+ struct termio old_tty;
+ #else
  struct sgttyb old_tty;
  #endif
  char *LL, *TE, *TI;
***************
*** 14,19
  extern char *UP;
  extern short ospeed;
  struct sgttyb old_tty;
  char *LL, *TE, *TI;
  main(argc,argv)
  int argc;

--- 17,23 -----
  struct termio old_tty;
  #else
  struct sgttyb old_tty;
+ #endif
  char *LL, *TE, *TI;
  main(argc,argv)
  int argc;
***************
*** 28,33
      register int x, y, j;
      static int xpos[5], ypos[5];
      register char *CM, *BC, *DN, *ND;
      char *tcp;
      register char *term;
      char tcb[100];

--- 32,38 -----
      register int x, y, j;
      static int xpos[5], ypos[5];
      register char *CM, *BC, *DN, *ND;
+     int CO, LI;
      char *tcp;
      register char *term;
      char tcb[100];
***************
*** 31,36
      char *tcp;
      register char *term;
      char tcb[100];
      struct sgttyb sg;
      setbuf(stdout,malloc(BUFSIZ));
      if (!(term=getenv("TERM"))) {

--- 36,44 -----
      char *tcp;
      register char *term;
      char tcb[100];
+ #ifdef USG
+     struct termio sg;
+ #else
      struct sgttyb sg;
  #endif
      float cols, lines;
***************
*** 32,37
      register char *term;
      char tcb[100];
      struct sgttyb sg;
      setbuf(stdout,malloc(BUFSIZ));
      if (!(term=getenv("TERM"))) {
  	fprintf(stderr,"%s: TERM: parameter not set\n",*argv);

--- 40,48 -----
      struct termio sg;
  #else
      struct sgttyb sg;
+ #endif
+     float cols, lines;
+ 
      setbuf(stdout,malloc(BUFSIZ));
      if (!(term=getenv("TERM"))) {
  	fprintf(stderr,"%s: TERM: parameter not set\n",*argv);
***************
*** 49,54
      if (!(BC=tgetstr("bc",&tcp))) BC="\b";
      if (!(DN=tgetstr("dn",&tcp))) DN="\n";
      if (!(ND=tgetstr("nd",&tcp))) ND=" ";
      TE=tgetstr("te",&tcp);
      TI=tgetstr("ti",&tcp);
      UP=tgetstr("up",&tcp);

--- 60,71 -----
      if (!(BC=tgetstr("bc",&tcp))) BC="\b";
      if (!(DN=tgetstr("dn",&tcp))) DN="\n";
      if (!(ND=tgetstr("nd",&tcp))) ND=" ";
+     if ((CO = tgetnum("co")) == -1)
+ 	CO = 80; 
+     if ((LI = tgetnum("li")) == -1)
+ 	LI = 24; 
+     cols = CO - 4;
+     lines = LI - 4;
      TE=tgetstr("te",&tcp);
      TI=tgetstr("ti",&tcp);
      UP=tgetstr("up",&tcp);
***************
*** 53,58
      TI=tgetstr("ti",&tcp);
      UP=tgetstr("up",&tcp);
      if (!(LL=tgetstr("ll",&tcp))) strcpy(LL=malloc(10),tgoto(CM,0,23));
      gtty(1, &sg);
      ospeed=sg.sg_ospeed;
      for (j=SIGHUP;j<=SIGTERM;j++)

--- 70,79 -----
      TI=tgetstr("ti",&tcp);
      UP=tgetstr("up",&tcp);
      if (!(LL=tgetstr("ll",&tcp))) strcpy(LL=malloc(10),tgoto(CM,0,23));
+ #ifdef USG
+     ioctl(1, TCGETA, &sg);
+     ospeed=sg.c_cflag&CBAUD;
+ #else
      gtty(1, &sg);
      ospeed=sg.sg_ospeed;
  #endif
***************
*** 55,60
      if (!(LL=tgetstr("ll",&tcp))) strcpy(LL=malloc(10),tgoto(CM,0,23));
      gtty(1, &sg);
      ospeed=sg.sg_ospeed;
      for (j=SIGHUP;j<=SIGTERM;j++)
  	if (signal(j,SIG_IGN)!=SIG_IGN) signal(j,onsig);
      gtty(1, &old_tty);	/* save tty bits for exit */

--- 76,82 -----
  #else
      gtty(1, &sg);
      ospeed=sg.sg_ospeed;
+ #endif
      for (j=SIGHUP;j<=SIGTERM;j++)
  	if (signal(j,SIG_IGN)!=SIG_IGN) signal(j,onsig);
  #ifdef USG
***************
*** 57,62
      ospeed=sg.sg_ospeed;
      for (j=SIGHUP;j<=SIGTERM;j++)
  	if (signal(j,SIG_IGN)!=SIG_IGN) signal(j,onsig);
      gtty(1, &old_tty);	/* save tty bits for exit */
      gtty(1, &sg);
      sg.sg_flags&=~(CRMOD|ECHO);

--- 79,92 -----
  #endif
      for (j=SIGHUP;j<=SIGTERM;j++)
  	if (signal(j,SIG_IGN)!=SIG_IGN) signal(j,onsig);
+ #ifdef USG
+     ioctl(1, TCGETA, &old_tty);	/* save tty bits for exit */
+     ioctl(1, TCGETA, &sg);
+     sg.c_iflag&=~ICRNL;
+     sg.c_oflag&=~ONLCR;
+     sg.c_lflag&=~ECHO;
+     ioctl(1, TCSETAW, &sg);
+ #else
      gtty(1, &old_tty);	/* save tty bits for exit */
      gtty(1, &sg);
      sg.sg_flags&=~(CRMOD|ECHO);
***************
*** 61,67
      gtty(1, &sg);
      sg.sg_flags&=~(CRMOD|ECHO);
      stty(1, &sg);
!     if (TI) fputs(TI,stdout);
      tputs(tgetstr("cl",&tcp),1,fputchar);
      fflush(stdout);
      for (j=5;--j>=0;) {

--- 91,98 -----
      gtty(1, &sg);
      sg.sg_flags&=~(CRMOD|ECHO);
      stty(1, &sg);
! #endif
!     if (TI) tputs(TI,1,fputchar);
      tputs(tgetstr("cl",&tcp),1,fputchar);
      fflush(stdout);
      for (j=5;--j>=0;) {
***************
*** 65,72
      tputs(tgetstr("cl",&tcp),1,fputchar);
      fflush(stdout);
      for (j=5;--j>=0;) {
! 	xpos[j]=(int)(76.*ranf())+2;
! 	ypos[j]=(int)(20.*ranf())+2;
      }
      for (j=0;;) {
  	x=(int)(76.*ranf())+2;

--- 96,103 -----
      tputs(tgetstr("cl",&tcp),1,fputchar);
      fflush(stdout);
      for (j=5;--j>=0;) {
! 	xpos[j]=(int)(cols*ranf())+2;
! 	ypos[j]=(int)(lines*ranf())+2;
      }
      for (j=0;;) {
  	x=(int)(cols*ranf())+2;
***************
*** 69,76
  	ypos[j]=(int)(20.*ranf())+2;
      }
      for (j=0;;) {
! 	x=(int)(76.*ranf())+2;
! 	y=(int)(20.*ranf())+2;
  	cursor(x,y); fputchar('.');
  	cursor(xpos[j],ypos[j]); fputchar('o');
  	if (j==0) j=4; else --j;

--- 100,107 -----
  	ypos[j]=(int)(lines*ranf())+2;
      }
      for (j=0;;) {
! 	x=(int)(cols*ranf())+2;
! 	y=(int)(lines*ranf())+2;
  	cursor(x,y); fputchar('.');
  	cursor(xpos[j],ypos[j]); fputchar('o');
  	if (j==0) j=4; else --j;
***************
*** 78,84
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-1);
  	fputchar('-');
! 	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
  	fputs("|.|",stdout);
  	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
  	fputchar('-');

--- 109,115 -----
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-1);
  	fputchar('-');
! 	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
  	fputs("|.|",stdout);
  	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
  	fputchar('-');
***************
*** 80,86
  	fputchar('-');
  	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
  	fputs("|.|",stdout);
! 	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
  	fputchar('-');
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-2); fputchar('-');

--- 111,117 -----
  	fputchar('-');
  	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
  	fputs("|.|",stdout);
! 	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
  	fputchar('-');
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-2); fputchar('-');
***************
*** 84,90
  	fputchar('-');
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-2); fputchar('-');
! 	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
  	fputs("/ \\",stdout);
  	cursor(xpos[j]-2,ypos[j]);
  	fputs("| O |",stdout);

--- 115,121 -----
  	fputchar('-');
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-2); fputchar('-');
! 	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
  	fputs("/ \\",stdout);
  	cursor(xpos[j]-2,ypos[j]);
  	fputs("| O |",stdout);
***************
*** 90,96
  	fputs("| O |",stdout);
  	cursor(xpos[j]-1,ypos[j]+1);
  	fputs("\\ /",stdout);
! 	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
  	fputchar('-');
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-2); fputchar(' ');

--- 121,127 -----
  	fputs("| O |",stdout);
  	cursor(xpos[j]-1,ypos[j]+1);
  	fputs("\\ /",stdout);
! 	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
  	fputchar('-');
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-2); fputchar(' ');
***************
*** 94,101
  	fputchar('-');
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-2); fputchar(' ');
! 	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
! 	fputchar(' '); fputs(ND,stdout); fputchar(' ');
  	cursor(xpos[j]-2,ypos[j]);
  	fputchar(' '); fputs(ND,stdout); fputchar(' ');
  	fputs(ND,stdout); fputchar(' ');

--- 125,132 -----
  	fputchar('-');
  	if (j==0) j=4; else --j;
  	cursor(xpos[j],ypos[j]-2); fputchar(' ');
! 	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
! 	fputchar(' '); tputs(ND,1,fputchar); fputchar(' ');
  	cursor(xpos[j]-2,ypos[j]);
  	fputchar(' '); tputs(ND,1,fputchar); fputchar(' ');
  	tputs(ND,1,fputchar); fputchar(' ');
***************
*** 97,104
  	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
  	fputchar(' '); fputs(ND,stdout); fputchar(' ');
  	cursor(xpos[j]-2,ypos[j]);
! 	fputchar(' '); fputs(ND,stdout); fputchar(' ');
! 	fputs(ND,stdout); fputchar(' ');
  	cursor(xpos[j]-1,ypos[j]+1);
  	fputchar(' '); fputs(ND,stdout); fputchar(' ');
  	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);

--- 128,135 -----
  	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
  	fputchar(' '); tputs(ND,1,fputchar); fputchar(' ');
  	cursor(xpos[j]-2,ypos[j]);
! 	fputchar(' '); tputs(ND,1,fputchar); fputchar(' ');
! 	tputs(ND,1,fputchar); fputchar(' ');
  	cursor(xpos[j]-1,ypos[j]+1);
  	fputchar(' '); tputs(ND,1,fputchar); fputchar(' ');
  	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
***************
*** 100,107
  	fputchar(' '); fputs(ND,stdout); fputchar(' ');
  	fputs(ND,stdout); fputchar(' ');
  	cursor(xpos[j]-1,ypos[j]+1);
! 	fputchar(' '); fputs(ND,stdout); fputchar(' ');
! 	fputs(DN,stdout); fputs(BC,stdout); fputs(BC,stdout);
  	fputchar(' ');
  	xpos[j]=x; ypos[j]=y;
  	fflush(stdout);

--- 131,138 -----
  	fputchar(' '); tputs(ND,1,fputchar); fputchar(' ');
  	tputs(ND,1,fputchar); fputchar(' ');
  	cursor(xpos[j]-1,ypos[j]+1);
! 	fputchar(' '); tputs(ND,1,fputchar); fputchar(' ');
! 	tputs(DN,1,fputchar); tputs(BC,1,fputchar); tputs(BC,1,fputchar);
  	fputchar(' ');
  	xpos[j]=x; ypos[j]=y;
  	fflush(stdout);
***************
*** 110,115
  onsig(n)
  int n;
  {
      struct sgttyb sg;
      fputs(LL, stdout);
      if (TE) fputs(TE, stdout);

--- 141,149 -----
  onsig(n)
  int n;
  {
+ #ifdef USG
+     struct termio sg;
+ #else
      struct sgttyb sg;
  #endif
      tputs(LL, 1, fputchar);
***************
*** 111,118
  int n;
  {
      struct sgttyb sg;
!     fputs(LL, stdout);
!     if (TE) fputs(TE, stdout);
      fflush(stdout);
      stty(1, &old_tty);
      kill(getpid(),n);

--- 145,153 -----
      struct termio sg;
  #else
      struct sgttyb sg;
! #endif
!     tputs(LL, 1, fputchar);
!     if (TE) tputs(TE, 1, fputchar);
      fflush(stdout);
  #ifdef USG
      ioctl(1, TCSETAW, &old_tty);
***************
*** 114,119
      fputs(LL, stdout);
      if (TE) fputs(TE, stdout);
      fflush(stdout);
      stty(1, &old_tty);
      kill(getpid(),n);
      _exit(0);

--- 149,157 -----
      tputs(LL, 1, fputchar);
      if (TE) tputs(TE, 1, fputchar);
      fflush(stdout);
+ #ifdef USG
+     ioctl(1, TCSETAW, &old_tty);
+ #else
      stty(1, &old_tty);
  #endif
      kill(getpid(),n);
***************
*** 115,120
      if (TE) fputs(TE, stdout);
      fflush(stdout);
      stty(1, &old_tty);
      kill(getpid(),n);
      _exit(0);
  }

--- 153,159 -----
      ioctl(1, TCSETAW, &old_tty);
  #else
      stty(1, &old_tty);
+ #endif
      kill(getpid(),n);
      _exit(0);
  }
***************
*** 124,128
      putchar(c);
  }
  float ranf() {
      return((float)rand()/2147483647.);
  }

--- 163,169 -----
      putchar(c);
  }
  float ranf() {
+ #ifdef BSD
      return((float)rand()/2147483647.);
  #else
      return((float)rand()/32767.);
***************
*** 125,128
  }
  float ranf() {
      return((float)rand()/2147483647.);
  }

--- 165,171 -----
  float ranf() {
  #ifdef BSD
      return((float)rand()/2147483647.);
+ #else
+     return((float)rand()/32767.);
+ #endif
  }

	And here's how to fix "worms.c":

*** worms.c.orig	Mon Jul 15 14:21:39 1985
--- worms.c	Mon Jul 15 14:23:12 1985
***************
*** 19,24
  
  */
  #include <stdio.h>
  #include <sgtty.h>
  #define cursor(col,row) tputs(tgoto(CM,col,row),1,outc)
  outc(c)

--- 19,27 -----
  
  */
  #include <stdio.h>
+ #ifdef USG
+ #include <termio.h>
+ #else
  #include <sgtty.h>
  #endif
  #include <signal.h>
***************
*** 20,30
  */
  #include <stdio.h>
  #include <sgtty.h>
! #define cursor(col,row) tputs(tgoto(CM,col,row),1,outc)
! outc(c)
! {
! 	putchar(c);
! }
  extern char *UP;
  extern short ospeed;
  int Wrap;

--- 23,31 -----
  #include <termio.h>
  #else
  #include <sgtty.h>
! #endif
! #include <signal.h>
! #define cursor(col,row) tputs(tgoto(CM,col,row),1,fputchar)
  extern char *UP;
  extern short ospeed;
  int Wrap;
***************
*** 128,133
      { 0, { 0, 0, 0 } },
      { 0, { 0, 0, 0 } }
  };
  main(argc,argv)
  int argc;
  char *argv[];

--- 129,135 -----
      { 0, { 0, 0, 0 } },
      { 0, { 0, 0, 0 } }
  };
+ char *TE;
  main(argc,argv)
  int argc;
  char *argv[];
***************
*** 136,141
      char *malloc();
      char *getenv();
      char *tgetstr(), *tgoto();
      float ranf();
      register int x, y;
      register int n;

--- 138,144 -----
      char *malloc();
      char *getenv();
      char *tgetstr(), *tgoto();
+     int quit();
      float ranf();
      register int x, y;
      register int n;
***************
*** 148,153
      char *tcp;
      register char *term;
      char tcb[100];
      struct sgttyb sg;
      setbuf(stdout,malloc(BUFSIZ));
      for (x=1;x<argc;x++) {

--- 151,159 -----
      char *tcp;
      register char *term;
      char tcb[100];
+ #ifdef USG
+     struct termio sg;
+ #else
      struct sgttyb sg;
  #endif
      setbuf(stdout,malloc(BUFSIZ));
***************
*** 149,154
      register char *term;
      char tcb[100];
      struct sgttyb sg;
      setbuf(stdout,malloc(BUFSIZ));
      for (x=1;x<argc;x++) {
  	register char *p;

--- 155,161 -----
      struct termio sg;
  #else
      struct sgttyb sg;
+ #endif
      setbuf(stdout,malloc(BUFSIZ));
      for (x=1;x<argc;x++) {
  	register char *p;
***************
*** 209,214
      if ((LI=tgetnum("li"))<=0) LI=24;
      bottom=LI-1;
      SR=tgetstr("sr",&tcp);
      UP=tgetstr("up",&tcp);
      gtty(fileno(stdout),&sg);
      ospeed=sg.sg_ospeed;

--- 216,222 -----
      if ((LI=tgetnum("li"))<=0) LI=24;
      bottom=LI-1;
      SR=tgetstr("sr",&tcp);
+     TE=tgetstr("te",&tcp);
      UP=tgetstr("up",&tcp);
  #ifdef USG
      ioctl(fileno(stdout),TCGETA,&sg);
***************
*** 210,215
      bottom=LI-1;
      SR=tgetstr("sr",&tcp);
      UP=tgetstr("up",&tcp);
      gtty(fileno(stdout),&sg);
      ospeed=sg.sg_ospeed;
      Wrap=tgetflag("am");

--- 218,227 -----
      SR=tgetstr("sr",&tcp);
      TE=tgetstr("te",&tcp);
      UP=tgetstr("up",&tcp);
+ #ifdef USG
+     ioctl(fileno(stdout),TCGETA,&sg);
+     ospeed=sg.c_cflag&CBAUD;
+ #else
      gtty(fileno(stdout),&sg);
      ospeed=sg.sg_ospeed;
  #endif
***************
*** 212,217
      UP=tgetstr("up",&tcp);
      gtty(fileno(stdout),&sg);
      ospeed=sg.sg_ospeed;
      Wrap=tgetflag("am");
      ip=(short *)malloc(LI*CO*sizeof (short));
      for (n=0;n<LI;) {

--- 224,230 -----
  #else
      gtty(fileno(stdout),&sg);
      ospeed=sg.sg_ospeed;
+ #endif
      Wrap=tgetflag("am");
      ip=(short *)malloc(LI*CO*sizeof (short));
      for (n=0;n<LI;) {
***************
*** 234,239
  	w->ypos=ip;
  	for (y=length;--y>=0;) *ip++ = -1;
      }
      tputs(tgetstr("cl",&tcp),1,fputchar);
      if (field) {
  	register char *p;

--- 247,254 -----
  	w->ypos=ip;
  	for (y=length;--y>=0;) *ip++ = -1;
      }
+     signal(SIGINT, quit);
+     tputs(tgetstr("ti",&tcp),1,fputchar);
      tputs(tgetstr("cl",&tcp),1,fputchar);
      if (field) {
  	register char *p;
***************
*** 254,260
  		}
  		y= *p++; if (!*p) p=field;
  		putchar(*p);
! 		if (BC) fputs(BC,stdout);
  		else cursor(last-1,bottom);
  		fputs(IM,stdout);
  		if (IC) tputs(IC,1,fputchar);

--- 269,275 -----
  		}
  		y= *p++; if (!*p) p=field;
  		putchar(*p);
! 		if (BC) tputs(BC,1,fputchar);
  		else cursor(last-1,bottom);
  		tputs(IM,1,fputchar);
  		if (IC) tputs(IC,1,fputchar);
***************
*** 256,262
  		putchar(*p);
  		if (BC) fputs(BC,stdout);
  		else cursor(last-1,bottom);
! 		fputs(IM,stdout);
  		if (IC) tputs(IC,1,fputchar);
  		putchar(y);
  		if (IP) tputs(IP,1,fputchar);

--- 271,277 -----
  		putchar(*p);
  		if (BC) tputs(BC,1,fputchar);
  		else cursor(last-1,bottom);
! 		tputs(IM,1,fputchar);
  		if (IC) tputs(IC,1,fputchar);
  		putchar(y);
  		if (IP) tputs(IP,1,fputchar);
***************
*** 260,266
  		if (IC) tputs(IC,1,fputchar);
  		putchar(y);
  		if (IP) tputs(IP,1,fputchar);
! 		fputs(EI,stdout);
  	    }
  	    else if (SR||AL) {
  		if (HO) fputs(HO,stdout);

--- 275,281 -----
  		if (IC) tputs(IC,1,fputchar);
  		putchar(y);
  		if (IP) tputs(IP,1,fputchar);
! 		tputs(EI,1,fputchar);
  	    }
  	    else if (SR||AL) {
  		if (HO) tputs(HO,1,fputchar);
***************
*** 263,269
  		fputs(EI,stdout);
  	    }
  	    else if (SR||AL) {
! 		if (HO) fputs(HO,stdout);
  		else cursor(0,0);
  		if (SR) tputs(SR,1,fputchar);
  		else tputs(AL,LI,fputchar);

--- 278,284 -----
  		tputs(EI,1,fputchar);
  	    }
  	    else if (SR||AL) {
! 		if (HO) tputs(HO,1,fputchar);
  		else cursor(0,0);
  		if (SR) tputs(SR,1,fputchar);
  		else tputs(AL,LI,fputchar);
***************
*** 320,325
  	fflush(stdout);
      }
  }
  fputchar(c)
  char c;
  {

--- 335,346 -----
  	fflush(stdout);
      }
  }
+ quit()
+ {
+     signal(SIGINT, SIG_IGN);
+     tputs(TE,1,fputchar);
+     exit(0);
+ }
  fputchar(c)
  char c;
  {
***************
*** 326,330
      putchar(c);
  }
  float ranf() {
      return((float)rand()/2147483647.);
  }

--- 347,353 -----
      putchar(c);
  }
  float ranf() {
+ #ifdef BSD
      return((float)rand()/2147483647.);
  #else
      return((float)rand()/32767.);
***************
*** 327,330
  }
  float ranf() {
      return((float)rand()/2147483647.);
  }

--- 349,355 -----
  float ranf() {
  #ifdef BSD
      return((float)rand()/2147483647.);
+ #else
+     return((float)rand()/32767.);
+ #endif
  }



More information about the Comp.bugs.4bsd.ucb-fixes mailing list