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