source: buchla-68k/ram/stcpos.c@ b28a12e

Last change on this file since b28a12e was b28a12e, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Zero redundant declarations.

  • Property mode set to 100644
File size: 9.0 KB
Line 
1/*
2 =============================================================================
3 stcpos.c -- text cursor positioning for the score display
4 Version 19 -- 1989-11-15 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#include "ram.h"
9
10#define STCOBJ obj3
11
12#define SDLINE 4 /* dividing line color - analog stuff */
13
14int16_t sctccon[10][64] = { /* score background color constants */
15
16 /* 0 - row 0 */
17
18 {SDBG00, SDBG00, SDBG01, SDBG01, SDBG01, SDBG01, SDBG01, SDBG01,
19 SDBG01, SDBG00, SDBG00, SDBG00, SDBG00, SDBG00, SDBG00, SDBG00,
20 SDBG00, SDBG00, SDBG00, SDBG00, SDBG00, SDBG00, SDBG01, SDBG01,
21 SDBG01, SDBG01, SDBG01, SDBG01, SDBG01, SDBG02, SDBG02, SDBG02,
22
23 SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG02,
24 SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG02,
25 SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG02, SDBG03,
26 SDBG03, SDBG03, SDBG03, SDBG03, SDBG03, SDBG03, SDBG03, SDBG03},
27
28 /* 1 - row 17 */
29
30 {SDBG04, SDBG04, SDBG04, SDBG04, SDBG04, SDBG04, SDBG04, SDBG04,
31 SDBG04, SDBG04, SDBG04, SDBG04, SDBG04, SDBG04, SDBG05, SDBG05,
32 SDBG05, SDBG05, SDBG05, SDBG05, SDBG05, SDBG06, SDBG06, SDBG06,
33 SDBG06, SDBG06, SDBG06, SDBG06, SDBG06, SDBG06, SDBG06, SDBG07,
34
35 SDBG07, SDBG07, SDBG07, SDBG07, SDBG07, SDBG07, SDBG07, SDBG07,
36 SDBG08, SDBG08, SDBG08, SDBG08, SDBG08, SDBG08, SDBG08, SDBG08,
37 SDBG08, SDBG08, SDBG09, SDBG09, SDBG09, SDBG09, SDBG09, SDBG09,
38 SDBG09, SDBG10, SDBG10, SDBG10, SDBG10, SDBG10, SDBG10, SDBG10},
39
40 /* 2 - row 18 */
41
42 {SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
43 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
44 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
45 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
46
47 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
48 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
49 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
50 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11},
51/*
52
53*/
54 /* 3 - row 19 */
55
56 {SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
57 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
58 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
59 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
60
61 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
62 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
63 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
64 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11},
65
66 /* 4 - row 20 */
67
68 {SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
69 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
70 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
71 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
72
73 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
74 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
75 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
76 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11},
77
78 /* 5 - row 21 */
79
80 {SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
81 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
82 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
83 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
84
85 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
86 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
87 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11,
88 SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11, SDBG11},
89/*
90
91*/
92 /* 6 - row 22 */
93
94 {SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
95 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
96 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
97 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
98
99 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
100 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
101 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
102 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12},
103
104 /* 7 - row 23 */
105
106 {SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
107 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
108 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
109 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
110
111 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
112 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
113 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12,
114 SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12, SDBG12},
115
116 /* 8 - row 24 */
117
118 {SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13,
119 SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13,
120 SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13, SDBG13,
121 SDBG13, SDBG13, SDBG13, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14,
122
123 SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14,
124 SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14,
125 SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14, SDBG14,
126 SDBG14, SDBG15, SDBG15, SDBG15, SDBG15, SDBG15, SDBG15, SDBG15},
127
128 /* 9 - special - bottom of row 21 - top is entry 5 */
129
130 {SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE,
131 SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE,
132 SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE,
133 SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE,
134
135 SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE,
136 SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE,
137 SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE,
138 SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE, SDLINE}
139};
140
141/*
142
143*/
144
145/*
146 =============================================================================
147 stcclr() -- turn off all of the score text cursors
148 =============================================================================
149*/
150
151void stcclr(void)
152{
153 register uint16_t *obj;
154 register int16_t i, j;
155 register uint16_t k;
156
157 if ((v_regs[5] & 0x0180) NE 0x0100)
158 vbank(1); /* select the correct bank */
159
160 stcrow = 0; /* leave score cursor row,col = 0,0 */
161 stccol = 0;
162
163 obj = STCOBJ; /* intialize pointers */
164
165 for (i = 0; i < 9; i++) { /* clear each cursor row */
166
167 for (j = 0; j < 64; j++) { /* top cursor row */
168
169 k = exp_c(sctctab[i][j]);
170
171 *obj++ = k;
172 *obj++ = k;
173 }
174
175 for (j = 0; j < 64; j++) { /* bottom cursor row */
176
177 k = exp_c(sctctab[i EQ 5 ? 9 : i][j]);
178
179 *obj++ = k;
180 *obj++ = k;
181 }
182 }
183}
184
185/*
186
187*/
188
189/*
190 =============================================================================
191 stcoff() -- turn off text cursor for the score display
192 =============================================================================
193*/
194
195void stcoff(void)
196{
197 register uint16_t ccv, *tcp;
198 register int16_t tcrow;
199
200 tcrow = stcrow ? (stcrow - 16) : 0; /* get old object row */
201
202 if ((v_regs[5] & 0x0180) NE 0x0100)
203 vbank(1);
204
205 tcp = STCOBJ + (tcrow << 8) + (stccol << 1); /* object pointer */
206
207 /* background color */
208
209 ccv = exp_c(sctctab[tcrow][stccol]);
210
211 *tcp++ = ccv; /* turn off the text cursor */
212 *tcp = ccv;
213}
214
215/*
216
217*/
218
219/*
220 =============================================================================
221 stcpos() -- position the score text cursor at ('row', 'col')
222 =============================================================================
223*/
224
225void stcpos(int16_t row, int16_t col)
226{
227 register uint16_t *ccp, *tcp;
228 register uint16_t curson, ccv;
229 register int16_t ncrow, tcrow;
230
231 tcrow = stcrow ? (stcrow - 16) : 0; /* get old object row */
232 ncrow = row ? (row - 16) : 0; /* get new object row */
233
234 if ((v_regs[5] & 0x0180) NE 0x0100)
235 vbank(1); /* select the cursor bank */
236
237 curson = exp_c(SDCURSR); /* get cursor color */
238
239 /* get old cursor background color */
240
241 ccv = exp_c(sctctab[tcrow][stccol]);
242
243 tcp = STCOBJ + (tcrow << 8) + (stccol << 1); /* old cursor pointer */
244 ccp = STCOBJ + (ncrow << 8) + (col << 1); /* new cursor pointer */
245
246 *tcp++ = ccv; /* turn off the old cursor */
247 *tcp = ccv;
248
249 *ccp++ = curson; /* turn on the new cursor */
250 *ccp = curson;
251
252 stcrow = row; /* update cursor position */
253 stccol = col;
254}
255
256/*
257
258*/
259
260/*
261 =============================================================================
262 advscur() -- advance the score text cursor
263 =============================================================================
264*/
265
266void advscur(void)
267{
268 register int16_t newcol;
269
270 if (infield(stcrow, stccol, curfet))
271 cfetp = infetp;
272 else
273 return;
274
275 newcol = stccol + 1;
276
277 if (newcol LE cfetp->frcol)
278 stcpos(stcrow, newcol);
279}
280
281/*
282 =============================================================================
283 stcset() -- setup the score text cursor color table
284 =============================================================================
285*/
286
287void stcset(void)
288{
289 memcpyw(&sctctab[0][0], &sctccon[0][0], 640);
290}
291
Note: See TracBrowser for help on using the repository browser.