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