1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 */ 6 7 #ifndef lint 8 static char sccsid[] = "@(#)board.c 5.1 (Berkeley) 05/29/85"; 9 #endif not lint 10 11 #include "back.h" 12 13 static int i, j, k; 14 static char ln[60]; 15 16 wrboard () { 17 register int l; 18 static char bl[] = 19 "| | | |\n"; 20 static char sv[] = 21 "| | | | \n"; 22 23 fixtty (noech); 24 clear(); 25 26 if (tflag) { 27 fboard(); 28 goto lastline; 29 } 30 31 writel ("_____________________________________________________\n"); 32 writel (bl); 33 strcpy (ln,bl); 34 for (j = 1; j < 50; j += 4) { 35 k = j/4+(j > 24? 12: 13); 36 ln[j+1] = k%10+'0'; 37 ln[j] = k/10+'0'; 38 if (j == 21) 39 j += 4; 40 } 41 writel (ln); 42 for (i = 0; i < 5; i++) { 43 strcpy (ln,sv); 44 for (j = 1; j < 50; j += 4) { 45 k = j/4+(j > 24? 12: 13); 46 wrbsub (); 47 if (j == 21) 48 j += 4; 49 } 50 if (-board[25] > i) 51 ln[26] = 'w'; 52 if (-board[25] > i+5) 53 ln[25] = 'w'; 54 if (-board[25] > i+10) 55 ln[27] = 'w'; 56 l = 53; 57 if (off[1] > i || (off[1] < 0 && off[1]+15 > i)) { 58 ln[54] = 'r'; 59 l = 55; 60 } 61 if (off[1] > i+5 || (off[1] < 0 && off[1]+15 > i+5)) { 62 ln[55] = 'r'; 63 l = 56; 64 } 65 if (off[1] > i+10 || (off[1] < 0 && off[1]+15 > i+10)) { 66 ln[56] = 'r'; 67 l = 57; 68 } 69 ln[l++] = '\n'; 70 ln[l] = '\0'; 71 writel (ln); 72 } 73 strcpy (ln,bl); 74 ln[25] = 'B'; 75 ln[26] = 'A'; 76 ln[27] = 'R'; 77 writel (ln); 78 strcpy (ln,sv); 79 for (i = 4; i > -1; i--) { 80 for (j = 1; j < 50; j += 4) { 81 k = ((j > 24? 53: 49)-j)/4; 82 wrbsub(); 83 if (j == 21) 84 j += 4; 85 } 86 if (board[0] > i) 87 ln[26] = 'r'; 88 if (board[0] > i+5) 89 ln[25] = 'r'; 90 if (board[0] > i+10) 91 ln[27] = 'r'; 92 l = 53; 93 if (off[0] > i || (off[0] < 0 && off[0]+15 > i)) { 94 ln[54] = 'w'; 95 l = 55; 96 } 97 if (off[0] > i+5 || (off[0] < 0 && off[0]+15 > i+5)) { 98 ln[55] = 'w'; 99 l = 56; 100 } 101 if (off[0] > i+10 || (off[0] < 0 && off[0]+15 > i+10)) { 102 ln[56] = 'w'; 103 l = 57; 104 } 105 ln[l++] = '\n'; 106 ln[l] = '\0'; 107 writel (ln); 108 } 109 strcpy (ln,bl); 110 for (j = 1; j < 50; j += 4) { 111 k = ((j > 24? 53: 49)-j)/4; 112 ln[j+1] = k%10+'0'; 113 if (k > 9) 114 ln[j] = k/10+'0'; 115 if (j == 21) 116 j += 4; 117 } 118 writel (ln); 119 writel ("|_______________________|___|_______________________|\n"); 120 121 lastline: 122 gwrite (); 123 if (tflag) 124 curmove (18,0); 125 else { 126 writec ('\n'); 127 writec ('\n'); 128 } 129 fixtty(raw); 130 } 131 132 wrbsub () { 133 register int m; 134 register char d; 135 136 if (board[k] > 0) { 137 m = board[k]; 138 d = 'r'; 139 } else { 140 m = -board[k]; 141 d = 'w'; 142 } 143 if (m>i) 144 ln[j+1] = d; 145 if (m>i+5) 146 ln[j] = d; 147 if (m>i+10) 148 ln[j+2] = d; 149 } 150