4.1cBSD/usr/doc/curses/twinkle2.gr

'-F
.ds =F twinkle2.c
.ds =M Nov  7 19:13 1980
'wh 0 vH
'wh -1i vF
'FN main
main() \*(+K{\*(-K

\h'|11n'reg \*(+Kchar\*(-K\h'|31n'\fI*\fPsp;
\h'|11n'\*(+Kchar\*(-K\h'|31n'\fI*\fPgetenv();
\h'|11n'\*(+Kint\*(-K\h'|31n'\*_putchar(), die();

\h'|11n'srand(getpid());\h'|51n'\fI\h'\w' 'u-\w'/'u'/\fP\fI*\fP\c\c
'+C
 initialize random sequence \fI*\fP\fI\h'\w' 'u-\w'/'u'/\fP\c
'-C


\h'|11n'\*(+Kif\*(-K (isatty(0)) \*(+K{\*(-K
\h'|11n'       gettmode();
\h'|11n'       \*(+Kif\*(-K (sp=getenv("TERM"))
\h'|21n'       setterm(sp);
\h'|21n'signal(SIGINT, die);
\h'|11n'\*(+K}\*(-K
\h'|11n'\*(+Kelse\*(-K \*(+K{\*(-K
\h'|21n'printf("Need a terminal on %d\en", \*_tty\*_ch);
\h'|21n'exit(1);
\h'|11n'\*(+K}\*(-K
\h'|11n'\*_puts(TI);
\h'|11n'\*_puts(VS);

\h'|11n'noecho();
\h'|11n'nonl();
\h'|11n'tputs(CL, NLINES, \*_putchar);
\h'|11n'\*(+Kfor\*(-K (;;) \*(+K{\*(-K
\h'|21n'makeboard();\h'|51n'\fI\h'\w' 'u-\w'/'u'/\fP\fI*\fP\c\c
'+C
 make the board setup \fI*\fP\fI\h'\w' 'u-\w'/'u'/\fP\c
'-C

\h'|21n'puton(\'\fI*\fP\');\h'|51n'\fI\h'\w' 'u-\w'/'u'/\fP\fI*\fP\c\c
'+C
 put on \'\fI*\fP\'s \fI*\fP\fI\h'\w' 'u-\w'/'u'/\fP\c
'-C

\h'|21n'puton(\' \');\h'|51n'\fI\h'\w' 'u-\w'/'u'/\fP\fI*\fP\c\c
'+C
 cover up with \' \'s \fI*\fP\fI\h'\w' 'u-\w'/'u'/\fP\c
'-C

\h'|11n'\*(+K}\*(-K
\*(+K}\*(-K\c\c
'-F


\fI\h'\w' 'u-\w'/'u'/\fP\fI*\fP\c\c
'+C

 \fI*\fP \*_putchar defined \*(+Kfor\*(-K tputs() (and \*_puts())
 \fI*\fP\fI\h'\w' 'u-\w'/'u'/\fP\c
'-C

'FN _putchar
\*_putchar(c)
reg \*(+Kchar\*(-K\h'|21n'c; \*(+K{\*(-K

\h'|11n'putchar(c);
\*(+K}\*(-K\c\c
'-F


'FN puton
puton(ch)
\*(+Kchar\*(-K\h'|11n'ch; \*(+K{\*(-K

\h'|11n'\*(+Kstatic\*(-K \*(+Kint\*(-K\h'|31n'lasty, lastx;
\h'|11n'reg LOCS\h'|31n'\fI*\fPlp;
\h'|11n'reg \*(+Kint\*(-K\h'|31n'r;
\h'|11n'reg LOCS\h'|31n'\fI*\fPend;
\h'|11n'LOCS\h'|31n'temp;

\h'|11n'end = &Layout[Numstars];
\h'|11n'\*(+Kfor\*(-K (lp = Layout; lp < end; lp++) \*(+K{\*(-K
\h'|21n'r = rand() % Numstars;
\h'|21n'temp = \fI*\fPlp;
\h'|21n'\fI*\fPlp = Layout[r];
\h'|21n'Layout[r] = temp;
\h'|11n'\*(+K}\*(-K

\h'|11n'\*(+Kfor\*(-K (lp = Layout; lp < end; lp++)
\h'|31n'\fI\h'\w' 'u-\w'/'u'/\fP\fI*\fP\c\c
'+C
 prevent scrolling \fI*\fP\fI\h'\w' 'u-\w'/'u'/\fP\c
'-C

\h'|21n'\*(+Kif\*(-K (!AM || (lp\*->y < NLINES \*- 1 || lp\*->x < NCOLS \*- 1)) \*(+K{\*(-K
\h'|31n'mvcur(lasty, lastx, lp\*->y, lp\*->x);
\h'|31n'putchar(ch);
\h'|31n'lasty = lp\*->y;
\h'|31n'\*(+Kif\*(-K ((lastx = lp\*->x + 1) >= NCOLS)
\h'|41n'\*(+Kif\*(-K (AM) \*(+K{\*(-K
\h'|51n'lastx = 0;
\h'|51n'lasty++;
\h'|41n'\*(+K}\*(-K
\h'|41n'\*(+Kelse\*(-K
\h'|51n'lastx = NCOLS \*- 1;
\h'|21n'\*(+K}\*(-K
\*(+K}\*(-K\c\c
'-F