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, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. All advertising materials mentioning features or use of this software 14 * must display the following acknowledgement: 15 * This product includes software developed by the University of 16 * California, Berkeley and its contributors. 17 * 4. Neither the name of the University nor the names of its contributors 18 * may be used to endorse or promote products derived from this software 19 * without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34 #ifndef lint 35 static char sccsid[] = "@(#)board.c 5.4 (Berkeley) 6/1/90"; 36 #endif /* not lint */ 37 38 #include "back.h" 39 40 static int i, j, k; 41 static char ln[60]; 42 43 wrboard () { 44 register int l; 45 static char bl[] = 46 "| | | |\n"; 47 static char sv[] = 48 "| | | | \n"; 49 50 fixtty (noech); 51 clear(); 52 53 if (tflag) { 54 fboard(); 55 goto lastline; 56 } 57 58 writel ("_____________________________________________________\n"); 59 writel (bl); 60 strcpy (ln,bl); 61 for (j = 1; j < 50; j += 4) { 62 k = j/4+(j > 24? 12: 13); 63 ln[j+1] = k%10+'0'; 64 ln[j] = k/10+'0'; 65 if (j == 21) 66 j += 4; 67 } 68 writel (ln); 69 for (i = 0; i < 5; i++) { 70 strcpy (ln,sv); 71 for (j = 1; j < 50; j += 4) { 72 k = j/4+(j > 24? 12: 13); 73 wrbsub (); 74 if (j == 21) 75 j += 4; 76 } 77 if (-board[25] > i) 78 ln[26] = 'w'; 79 if (-board[25] > i+5) 80 ln[25] = 'w'; 81 if (-board[25] > i+10) 82 ln[27] = 'w'; 83 l = 53; 84 if (off[1] > i || (off[1] < 0 && off[1]+15 > i)) { 85 ln[54] = 'r'; 86 l = 55; 87 } 88 if (off[1] > i+5 || (off[1] < 0 && off[1]+15 > i+5)) { 89 ln[55] = 'r'; 90 l = 56; 91 } 92 if (off[1] > i+10 || (off[1] < 0 && off[1]+15 > i+10)) { 93 ln[56] = 'r'; 94 l = 57; 95 } 96 ln[l++] = '\n'; 97 ln[l] = '\0'; 98 writel (ln); 99 } 100 strcpy (ln,bl); 101 ln[25] = 'B'; 102 ln[26] = 'A'; 103 ln[27] = 'R'; 104 writel (ln); 105 strcpy (ln,sv); 106 for (i = 4; i > -1; i--) { 107 for (j = 1; j < 50; j += 4) { 108 k = ((j > 24? 53: 49)-j)/4; 109 wrbsub(); 110 if (j == 21) 111 j += 4; 112 } 113 if (board[0] > i) 114 ln[26] = 'r'; 115 if (board[0] > i+5) 116 ln[25] = 'r'; 117 if (board[0] > i+10) 118 ln[27] = 'r'; 119 l = 53; 120 if (off[0] > i || (off[0] < 0 && off[0]+15 > i)) { 121 ln[54] = 'w'; 122 l = 55; 123 } 124 if (off[0] > i+5 || (off[0] < 0 && off[0]+15 > i+5)) { 125 ln[55] = 'w'; 126 l = 56; 127 } 128 if (off[0] > i+10 || (off[0] < 0 && off[0]+15 > i+10)) { 129 ln[56] = 'w'; 130 l = 57; 131 } 132 ln[l++] = '\n'; 133 ln[l] = '\0'; 134 writel (ln); 135 } 136 strcpy (ln,bl); 137 for (j = 1; j < 50; j += 4) { 138 k = ((j > 24? 53: 49)-j)/4; 139 ln[j+1] = k%10+'0'; 140 if (k > 9) 141 ln[j] = k/10+'0'; 142 if (j == 21) 143 j += 4; 144 } 145 writel (ln); 146 writel ("|_______________________|___|_______________________|\n"); 147 148 lastline: 149 gwrite (); 150 if (tflag) 151 curmove (18,0); 152 else { 153 writec ('\n'); 154 writec ('\n'); 155 } 156 fixtty(raw); 157 } 158 159 wrbsub () { 160 register int m; 161 register char d; 162 163 if (board[k] > 0) { 164 m = board[k]; 165 d = 'r'; 166 } else { 167 m = -board[k]; 168 d = 'w'; 169 } 170 if (m>i) 171 ln[j+1] = d; 172 if (m>i+5) 173 ln[j] = d; 174 if (m>i+10) 175 ln[j+2] = d; 176 } 177