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