1 /* 2 * Copyright (c) 1980 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that the above copyright notice and this paragraph are 7 * duplicated in all such forms and that any documentation, 8 * advertising materials, and other materials related to such 9 * distribution and use acknowledge that the software was developed 10 * by the University of California, Berkeley. The name of the 11 * University may not be used to endorse or promote products derived 12 * from this software without specific prior written permission. 13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 16 */ 17 18 #ifndef lint 19 char copyright[] = 20 "@(#) Copyright (c) 1980 The Regents of the University of California.\n\ 21 All rights reserved.\n"; 22 #endif /* not lint */ 23 24 #ifndef lint 25 static char sccsid[] = "@(#)twinkle2.c 6.2 (Berkeley) 03/17/89"; 26 #endif /* not lint */ 27 28 extern int _putchar(); 29 30 main() 31 { 32 reg char *sp; 33 34 srand(getpid()); /* initialize random sequence */ 35 36 if (isatty(0)) { 37 gettmode(); 38 if ((sp = getenv("TERM")) != NULL) 39 setterm(sp); 40 signal(SIGINT, die); 41 } 42 else { 43 printf("Need a terminal on %d\n", _tty_ch); 44 exit(1); 45 } 46 _puts(TI); 47 _puts(VS); 48 49 noecho(); 50 nonl(); 51 tputs(CL, NLINES, _putchar); 52 for (;;) { 53 makeboard(); /* make the board setup */ 54 puton('*'); /* put on '*'s */ 55 puton(' '); /* cover up with ' 's */ 56 } 57 } 58 59 puton(ch) 60 char ch; 61 { 62 reg LOCS *lp; 63 reg int r; 64 reg LOCS *end; 65 LOCS temp; 66 static int lasty, lastx; 67 68 end = &Layout[Numstars]; 69 for (lp = Layout; lp < end; lp++) { 70 r = rand() % Numstars; 71 temp = *lp; 72 *lp = Layout[r]; 73 Layout[r] = temp; 74 } 75 76 for (lp = Layout; lp < end; lp++) 77 /* prevent scrolling */ 78 if (!AM || (lp->y < NLINES - 1 || lp->x < NCOLS - 1)) { 79 mvcur(lasty, lastx, lp->y, lp->x); 80 putchar(ch); 81 lasty = lp->y; 82 if ((lastx = lp->x + 1) >= NCOLS) 83 if (AM) { 84 lastx = 0; 85 lasty++; 86 } 87 else 88 lastx = NCOLS - 1; 89 } 90 } 91