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