1 /*
2 * Copyright (c) 1980, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #ifndef lint
9 static char copyright[] =
10 "@(#) Copyright (c) 1980, 1993\n\
11 The Regents of the University of California. All rights reserved.\n";
12 #endif /* not lint */
13
14 #ifndef lint
15 static char sccsid[] = "@(#)teach.c 8.1 (Berkeley) 05/31/93";
16 #endif /* not lint */
17
18 #include "back.h"
19
20 char *hello[];
21 char *list[];
22 char *intro1[];
23 char *intro2[];
24 char *moves[];
25 char *remove[];
26 char *hits[];
27 char *endgame[];
28 char *doubl[];
29 char *stragy[];
30 char *prog[];
31 char *lastch[];
32
33 extern char ospeed; /* tty output speed for termlib */
34
35 char *helpm[] = {
36 "\nEnter a space or newline to roll, or",
37 " b to display the board",
38 " d to double",
39 " q to quit\n",
40 0
41 };
42
43 char *contin[] = {
44 "",
45 0
46 };
47
main(argc,argv)48 main (argc,argv)
49 int argc;
50 char **argv;
51
52 {
53 register int i;
54
55 signal (2,getout);
56 if (gtty (0,&tty) == -1) /* get old tty mode */
57 errexit ("teachgammon(gtty)");
58 old = tty.sg_flags;
59 #ifdef V7
60 raw = ((noech = old & ~ECHO) | CBREAK); /* set up modes */
61 #else
62 raw = ((noech = old & ~ECHO) | RAW); /* set up modes */
63 #endif
64 ospeed = tty.sg_ospeed; /* for termlib */
65 tflag = getcaps (getenv ("TERM"));
66 #ifdef V7
67 while (*++argv != 0)
68 #else
69 while (*++argv != -1)
70 #endif
71 getarg (&argv);
72 if (tflag) {
73 noech &= ~(CRMOD|XTABS);
74 raw &= ~(CRMOD|XTABS);
75 clear();
76 }
77 text (hello);
78 text (list);
79 i = text (contin);
80 if (i == 0)
81 i = 2;
82 init();
83 while (i)
84 switch (i) {
85
86 case 1:
87 leave();
88
89 case 2:
90 if (i = text(intro1))
91 break;
92 wrboard();
93 if (i = text(intro2))
94 break;
95
96 case 3:
97 if (i = text(moves))
98 break;
99
100 case 4:
101 if (i = text(remove))
102 break;
103
104 case 5:
105 if (i = text(hits))
106 break;
107
108 case 6:
109 if (i = text(endgame))
110 break;
111
112 case 7:
113 if (i = text(doubl))
114 break;
115
116 case 8:
117 if (i = text(stragy))
118 break;
119
120 case 9:
121 if (i = text(prog))
122 break;
123
124 case 10:
125 if (i = text(lastch))
126 break;
127 }
128 tutor();
129 }
130
leave()131 leave() {
132 if (tflag)
133 clear();
134 else
135 writec ('\n');
136 fixtty(old);
137 execl (EXEC,"backgammon",args,"n",0);
138 writel ("Help! Backgammon program is missing\007!!\n");
139 exit (-1);
140 }
141