source: buchla-68k/ram/adfield.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.7 KB
Line 
1/*
2 =============================================================================
3 adfield.c -- assignment display field processing and cursor motion
4 Version 24 -- 1989-11-15 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#include "ram.h"
9
10/*
11
12*/
13
14struct fet ad_fet1[] = { /* field definitions */
15
16 { 0, 9, 10, 0x0000, et_atab, ef_atab, rd_atab, nd_atab},
17
18 { 1, 1, 10, 0x0000, et_null, ef_null, rd_null, nd_null},
19
20 { 4, 10, 10, 0x0002, et_aopt, ef_aopt, rd_aopt, nd_aopt},
21
22 { 3, 9, 10, 0x0003, et_aprg, ef_aprg, rd_aprg, nd_aprg},
23
24 { 4, 15, 16, 0x0004, et_avgr, ef_avgr, rd_avgr, nd_avgr},
25 { 5, 15, 16, 0x0104, et_avgr, ef_avgr, rd_avgr, nd_avgr},
26 { 6, 15, 16, 0x0204, et_avgr, ef_avgr, rd_avgr, nd_avgr},
27 { 7, 15, 16, 0x0304, et_avgr, ef_avgr, rd_avgr, nd_avgr},
28 { 8, 15, 16, 0x0404, et_avgr, ef_avgr, rd_avgr, nd_avgr},
29 { 9, 15, 16, 0x0504, et_avgr, ef_avgr, rd_avgr, nd_avgr},
30 { 4, 21, 22, 0x0604, et_avgr, ef_avgr, rd_avgr, nd_avgr},
31 { 5, 21, 22, 0x0704, et_avgr, ef_avgr, rd_avgr, nd_avgr},
32 { 6, 21, 22, 0x0804, et_avgr, ef_avgr, rd_avgr, nd_avgr},
33 { 7, 21, 22, 0x0904, et_avgr, ef_avgr, rd_avgr, nd_avgr},
34 { 8, 21, 22, 0x0A04, et_avgr, ef_avgr, rd_avgr, nd_avgr},
35 { 9, 21, 22, 0x0B04, et_avgr, ef_avgr, rd_avgr, nd_avgr},
36
37 { 5, 35, 36, 0x0005, et_accn, ef_accn, rd_accn, nd_accn},
38 { 6, 35, 36, 0x0105, et_accn, ef_accn, rd_accn, nd_accn},
39 { 7, 35, 36, 0x0205, et_accn, ef_accn, rd_accn, nd_accn},
40 { 8, 35, 36, 0x0305, et_accn, ef_accn, rd_accn, nd_accn},
41
42 { 4, 46, 46, 0x0006, et_agpt, ef_agpt, rd_agpt, nd_agpt},
43 { 5, 46, 46, 0x0106, et_agpt, ef_agpt, rd_agpt, nd_agpt},
44 { 6, 46, 46, 0x0206, et_agpt, ef_agpt, rd_agpt, nd_agpt},
45 { 7, 46, 46, 0x0306, et_agpt, ef_agpt, rd_agpt, nd_agpt},
46 { 8, 46, 46, 0x0406, et_agpt, ef_agpt, rd_agpt, nd_agpt},
47 { 9, 46, 46, 0x0506, et_agpt, ef_agpt, rd_agpt, nd_agpt},
48 { 4, 59, 59, 0x0606, et_agpt, ef_agpt, rd_agpt, nd_agpt},
49 { 5, 59, 59, 0x0706, et_agpt, ef_agpt, rd_agpt, nd_agpt},
50 { 6, 59, 59, 0x0806, et_agpt, ef_agpt, rd_agpt, nd_agpt},
51 { 7, 59, 59, 0x0906, et_agpt, ef_agpt, rd_agpt, nd_agpt},
52 { 8, 59, 59, 0x0A06, et_agpt, ef_agpt, rd_agpt, nd_agpt},
53 { 9, 59, 59, 0x0B06, et_agpt, ef_agpt, rd_agpt, nd_agpt},
54
55 { 4, 48, 49, 0x0006, et_agch, ef_agch, rd_agch, nd_agch},
56 { 5, 48, 49, 0x0106, et_agch, ef_agch, rd_agch, nd_agch},
57 { 6, 48, 49, 0x0206, et_agch, ef_agch, rd_agch, nd_agch},
58 { 7, 48, 49, 0x0306, et_agch, ef_agch, rd_agch, nd_agch},
59 { 8, 48, 49, 0x0406, et_agch, ef_agch, rd_agch, nd_agch},
60 { 9, 48, 49, 0x0506, et_agch, ef_agch, rd_agch, nd_agch},
61 { 4, 61, 62, 0x0606, et_agch, ef_agch, rd_agch, nd_agch},
62 { 5, 61, 62, 0x0706, et_agch, ef_agch, rd_agch, nd_agch},
63 { 6, 61, 62, 0x0806, et_agch, ef_agch, rd_agch, nd_agch},
64 { 7, 61, 62, 0x0906, et_agch, ef_agch, rd_agch, nd_agch},
65 { 8, 61, 62, 0x0A06, et_agch, ef_agch, rd_agch, nd_agch},
66 { 9, 61, 62, 0x0B06, et_agch, ef_agch, rd_agch, nd_agch},
67
68 { 4, 41, 42, 0x0006, et_ains, ef_ains, rd_ains, nd_ains},
69 { 5, 41, 42, 0x0106, et_ains, ef_ains, rd_ains, nd_ains},
70 { 6, 41, 42, 0x0206, et_ains, ef_ains, rd_ains, nd_ains},
71 { 7, 41, 42, 0x0306, et_ains, ef_ains, rd_ains, nd_ains},
72 { 8, 41, 42, 0x0406, et_ains, ef_ains, rd_ains, nd_ains},
73 { 9, 41, 42, 0x0506, et_ains, ef_ains, rd_ains, nd_ains},
74 { 4, 54, 55, 0x0606, et_ains, ef_ains, rd_ains, nd_ains},
75 { 5, 54, 55, 0x0706, et_ains, ef_ains, rd_ains, nd_ains},
76 { 6, 54, 55, 0x0806, et_ains, ef_ains, rd_ains, nd_ains},
77 { 7, 54, 55, 0x0906, et_ains, ef_ains, rd_ains, nd_ains},
78 { 8, 54, 55, 0x0A06, et_ains, ef_ains, rd_ains, nd_ains},
79 { 9, 54, 55, 0x0B06, et_ains, ef_ains, rd_ains, nd_ains},
80
81 { 4, 44, 44, 0x0006, et_adyn, ef_adyn, rd_adyn, nd_adyn},
82 { 5, 44, 44, 0x0106, et_adyn, ef_adyn, rd_adyn, nd_adyn},
83 { 6, 44, 44, 0x0206, et_adyn, ef_adyn, rd_adyn, nd_adyn},
84 { 7, 44, 44, 0x0306, et_adyn, ef_adyn, rd_adyn, nd_adyn},
85 { 8, 44, 44, 0x0406, et_adyn, ef_adyn, rd_adyn, nd_adyn},
86 { 9, 44, 44, 0x0506, et_adyn, ef_adyn, rd_adyn, nd_adyn},
87 { 4, 57, 57, 0x0606, et_adyn, ef_adyn, rd_adyn, nd_adyn},
88 { 5, 57, 57, 0x0706, et_adyn, ef_adyn, rd_adyn, nd_adyn},
89 { 6, 57, 57, 0x0806, et_adyn, ef_adyn, rd_adyn, nd_adyn},
90 { 7, 57, 57, 0x0906, et_adyn, ef_adyn, rd_adyn, nd_adyn},
91 { 8, 57, 57, 0x0A06, et_adyn, ef_adyn, rd_adyn, nd_adyn},
92 { 9, 57, 57, 0x0B06, et_adyn, ef_adyn, rd_adyn, nd_adyn},
93
94 { 5, 10, 10, 0x0009, et_atun, ef_atun, rd_atun, nd_atun},
95
96 { 7, 9, 10, 0x000A, et_aint, ef_aint, rd_aint, nd_aint},
97 { 8, 9, 10, 0x000A, et_arat, ef_arat, rd_arat, nd_arat},
98 { 9, 9, 10, 0x000A, et_adep, ef_adep, rd_adep, nd_adep},
99
100 { 0, 0, 0, 0x0000, FN_NULL, FN_NULL, FN_NULL, FN_NULL}
101};
102
103/*
104
105*/
106
107int16_t adbox[][8] = { /* display box parameters */
108
109 { 1, 1, 94, 27, ACFBX00, ACBBX00, 0, 1}, /* 0 */
110 { 1, 28, 94, 40, ACFBX01, ACBBX01, 2, 1}, /* 1 */
111 { 1, 56, 94, 68, ACFBX02, ACBBX02, 4, 1}, /* 2 */
112 { 1, 42, 94, 54, ACFBX03, ACBBX03, 3, 1}, /* 3 */
113 { 96, 1, 190, 138, ACFBX04, ACBBX04, 0, 13}, /* 4 */
114 {192, 1, 302, 138, ACFBX05, ACBBX05, 0, 25}, /* 5 */
115 {304, 1, 510, 138, ACFBX06, ACBBX06, 0, 39}, /* 6 */
116 { 1, 140, 510, 348, ACFBX07, ACBBX07, 10, 1}, /* 7 */
117 { 1, 70, 38, 82, ACFBX08, ACBBX08, 5, 1}, /* 8 */
118 { 40, 70, 94, 82, ACFBX09, ACBBX09, 5, 6}, /* 9 */
119 { 1, 84, 94, 138, ACFBX10, ACBBX10, 6, 1} /* 10 */
120};
121
122int8_t *adbxlb[] = { /* display box labels */
123
124 "Asgnmnt", /* 0 */
125 "Stor/Fetch", /* 1 */
126 "MIDI out", /* 2 */
127 "PrgChng", /* 3 */
128 "Assignment", /* 4 */
129 "Assignmnt of" , /* 5 */
130 "Assignmnt of Instruments,", /* 6 */
131 "G Assignment of Keys to Groups for MIDI Port 1 G", /* 7 */
132 "", /* 8 */
133 "Tun", /* 9 */
134 "PhaseShift" /* 10 */
135};
136
137/*
138
139*/
140
141struct curpak ad_flds = {
142
143 stdctp4, /* curtype */
144 nokey, /* premove */
145 nokey, /* pstmove */
146 cxkstd, /* cx_key */
147 cykstd, /* cy_key */
148 adcxupd, /* cx_upd */
149 adcyupd, /* cy_upd */
150 nokey, /* xy_up */
151 nokey, /* xy_dn */
152 ad_xkey, /* x_key */
153 select, /* e_key */
154 stdmkey, /* m_key */
155 stddkey, /* d_key */
156 nonf, /* not_fld */
157 ad_fet1, /* curfet */
158 adboxes, /* csbp */
159 crate1, /* cratex */
160 crate1, /* cratey */
161 CT_GRAF, /* cmtype */
162 CTOX(0), /* cxval */
163 RTOY(9) /* cyval */
164};
165
166/*
167
168*/
169
170/*
171 =============================================================================
172 adcyupd() -- update cursor y location
173 =============================================================================
174*/
175
176void adcyupd(void)
177{
178 if (adnamsw) {
179
180 vtcrow = YTOR(vtyval += cyrate);
181
182 if (vtcrow > (vtwrow + 2))
183 vtyval = RTOY(vtcrow = vtwrow + 2);
184 else if (vtcrow < vtwrow)
185 vtyval = RTOY(vtcrow = vtwrow);
186
187 } else {
188
189 cyval += cyrate;
190
191 if (cyval GT (CYMAX - 1))
192 cyval = CYMAX - 1;
193 else if (cyval LT 1)
194 cyval = 1;
195 }
196}
197
198/*
199 =============================================================================
200 adcxupd() -- update cursor x location
201 =============================================================================
202*/
203
204void adcxupd(void)
205{
206 if (adnamsw) {
207
208 vtccol = XTOC(vtxval += cxrate);
209
210 if (vtccol > (vtwcol + 29))
211 vtxval = CTOX(vtccol = vtwcol + 29);
212 else if (vtccol < vtwcol)
213 vtxval = CTOX(vtccol = vtwcol);
214
215 } else {
216
217 cxval += cxrate;
218
219 if (cxval GT (CXMAX - 1))
220 cxval = CXMAX - 1;
221 else if (cxval LT 1)
222 cxval = 1;
223 }
224}
225
226/*
227
228*/
229
230/*
231 =============================================================================
232 ad_xkey() -- process the X key
233 =============================================================================
234*/
235
236void ad_xkey(void)
237{
238 register int16_t row, col, grp, i;
239
240 if (astat) {
241
242 if (whatbox()) {
243
244 row = hitcy / 14;
245 col = hitcx >> 3;
246
247 switch (hitbox) {
248
249 case 0: /* name */
250
251 if (row EQ 1) {
252
253 memset(asgtab[curasg].a_name, ' ', 16);
254 asgmod = TRUE;
255 adswin(0);
256 return; /* SUCCESS */
257
258 } else
259 return; /* FAILURE */
260 case 2: /* MIDI output port */
261
262 if ((col GE 1) AND (col LE 10)) {
263
264 curmop = 0;
265 adswin(hitbox);
266 modasg();
267 return; /* SUCCESS */
268 }
269
270 break;
271/*
272
273*/
274 case 4: /* voice to group */
275
276 if (row LT 4)
277 break;
278
279 if ((col GE 13) AND (col LE 16)) {
280
281 grp = row - 4;
282 vce2grp[grp] = -1;
283 adswin(hitbox);
284 modasg();
285 return; /* SUCCESS */
286
287 } else if ((col GE 19) AND (col LE 22)) {
288
289 grp = row + 2;
290 vce2grp[grp] = -1;
291 adswin(hitbox);
292 modasg();
293 return; /* SUCCESS */
294 }
295
296 break;
297
298 case 5: /* controller number */
299
300 if ((row LT 5) OR (row GT 8))
301 break;
302
303 if ((col EQ 35) OR (col EQ 36)) {
304
305 mctlnum[row - 5] = -1;
306 adswin(hitbox);
307 modasg();
308 return; /* SUCCESS */
309 }
310
311 break;
312/*
313
314*/
315 case 6: /* port or channel */
316
317 if (row LT 4)
318 break;
319
320 if (col EQ 46 ) {
321
322 /* port */
323
324 grp = row - 4;
325 grp2prt[grp][0] = 0;
326
327 for (i = 0; i < 88; i++)
328 key2grp[i] &= ~(0x0001 << grp);
329
330 adswin(hitbox);
331 drawk2g(grp);
332 modasg();
333 return; /* SUCCESS */
334
335 } else if ((col EQ 48) OR (col EQ 49)) {
336
337 /* channel */
338
339 grp = row - 4;
340 grp2prt[grp][1] = -1;
341 adswin(hitbox);
342 modasg();
343 return; /* SUCCESS */
344/*
345
346*/
347 } else if (col EQ 59) {
348
349 /* port */
350
351 grp = row + 2;
352 grp2prt[grp][0] = 0;
353
354 for (i = 0; i < 88; i++)
355 key2grp[i] &= ~(0x0001 << grp);
356
357 adswin(hitbox);
358 drawk2g(grp);
359 modasg();
360 return; /* SUCCESS */
361
362 } else if ((col EQ 61) OR (col EQ 62)) {
363
364 /* channel */
365
366 grp = row + 2;
367 grp2prt[grp][1] = -1;
368 adswin(hitbox);
369 modasg();
370 return; /* SUCCESS */
371 }
372
373 break;
374 }
375 }
376 }
377
378 return; /* FAILURE */
379}
380
381/*
382
383*/
384
385/*
386 =============================================================================
387 adfield() -- setup field routines for the assignment editor
388 =============================================================================
389*/
390
391void adfield(void)
392{
393 curslim = 140;
394
395 curset(&ad_flds);
396}
397
Note: See TracBrowser for help on using the repository browser.