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