|
|
1.1 root 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) 3/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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.