source: buchla-68k/ram/adfield.c@ 6262b5c

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

Added include files for global functions and variables.

  • Property mode set to 100644
File size: 13.4 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 "all.h"
9
10extern void select(void);
11extern int16_t whatbox(void);
12extern void nokey(void);
13extern int16_t nonf(int16_t k);
14extern int16_t stdctp4(void);
15extern void cxkstd(void);
16extern void cykstd(void);
17extern void stdmkey(void);
18extern void stddkey(int16_t k);
19
20extern int16_t et_null(int16_t n);
21extern int16_t ef_null(int16_t n);
22extern int16_t rd_null(int16_t n);
23extern int16_t nd_null(int16_t n, int16_t k);
24extern int16_t et_atab(int16_t n);
25extern int16_t ef_atab(int16_t n);
26extern int16_t rd_atab(int16_t nn);
27extern int16_t nd_atab(int16_t nn, int16_t k);
28extern int16_t et_aopt(int16_t n);
29extern int16_t ef_aopt(int16_t n);
30extern int16_t rd_aopt(int16_t nn);
31extern int16_t nd_aopt(int16_t nn, int16_t k);
32extern int16_t et_avgr(int16_t nn);
33extern int16_t ef_avgr(int16_t nn);
34extern int16_t rd_avgr(int16_t nn);
35extern int16_t nd_avgr(int16_t nn, int16_t k);
36extern int16_t et_accn(int16_t n);
37extern int16_t ef_accn(int16_t n);
38extern int16_t rd_accn(int16_t nn);
39extern int16_t nd_accn(int16_t nn, int16_t k);
40extern int16_t et_agpt(int16_t n);
41extern int16_t ef_agpt(int16_t n);
42extern int16_t rd_agpt(int16_t nn);
43extern int16_t nd_agpt(int16_t nn, int16_t k);
44extern int16_t et_agch(int16_t n);
45extern int16_t ef_agch(int16_t n);
46extern int16_t rd_agch(int16_t nn);
47extern int16_t nd_agch(int16_t nn, int16_t k);
48extern int16_t et_ains(int16_t n);
49extern int16_t ef_ains(int16_t n);
50extern int16_t rd_ains(int16_t nn);
51extern int16_t nd_ains(int16_t nn, int16_t k);
52extern int16_t et_adyn(int16_t n);
53extern int16_t ef_adyn(int16_t n);
54extern int16_t rd_adyn(int16_t nn);
55extern int16_t nd_adyn(int16_t nn, int16_t k);
56extern int16_t et_atun(int16_t n);
57extern int16_t ef_atun(int16_t n);
58extern int16_t rd_atun(int16_t nn);
59extern int16_t nd_atun(int16_t nn, int16_t k);
60extern int16_t et_aprg(int16_t n);
61extern int16_t ef_aprg(int16_t n);
62extern int16_t rd_aprg(int16_t nn);
63extern int16_t nd_aprg(int16_t nn, int16_t k);
64extern int16_t et_aint(int16_t n);
65extern int16_t ef_aint(int16_t n);
66extern int16_t rd_aint(int16_t nn);
67extern int16_t nd_aint(int16_t nn, int16_t k);
68extern int16_t et_arat(int16_t n);
69extern int16_t ef_arat(int16_t n);
70extern int16_t rd_arat(int16_t nn);
71extern int16_t nd_arat(int16_t nn, int16_t k);
72extern int16_t et_adep(int16_t n);
73extern int16_t ef_adep(int16_t n);
74extern int16_t rd_adep(int16_t nn);
75extern int16_t nd_adep(int16_t nn, int16_t k);
76
77extern void vcputsv(int16_t *obase, int16_t nw, int16_t fg, int16_t bg, int16_t row, int16_t col, int8_t *str, int16_t pitch);
78
79extern void *memset(void *vp, int8_t c, int16_t n);
80
81extern int16_t adnamsw;
82extern int16_t asgmod;
83extern int16_t astat;
84extern int16_t cmtype;
85extern int16_t cmfirst;
86extern int16_t curasg;
87extern int16_t curhold;
88extern int16_t curmop;
89extern int16_t curslim;
90extern int16_t cxval;
91extern int16_t cyval;
92extern int16_t cxrate;
93extern int16_t cyrate;
94extern int16_t hcwval;
95extern int16_t hitbox;
96extern int16_t hitcx;
97extern int16_t hitcy;
98extern int16_t stccol;
99extern int16_t stcrow;
100extern int16_t thcwval;
101extern int16_t tvcwval;
102extern int16_t vcwval;
103extern int16_t vtccol;
104extern int16_t vtcrow;
105extern int16_t vtwcol;
106extern int16_t vtwrow;
107extern int16_t vtxval;
108extern int16_t vtyval;
109
110extern int16_t crate1[];
111
112extern uint16_t *asgob;
113
114extern struct asgent asgtab[];
115
116extern struct selbox adboxes[];
117extern struct selbox *csbp;
118
119extern int16_t grp2prt[12][2];
120extern int16_t key2grp[];
121extern int16_t mctlnum[];
122extern int16_t vce2grp[];
123
124/* forward references */
125
126void adcxupd(void);
127void adcyupd(void);
128void ad_xkey(void);
129
130extern void adswin(int16_t n);
131extern void curset(struct curpak *s);
132extern void drawk2g(int16_t grp);
133extern void modasg(void);
134
135/*
136
137*/
138
139struct fet ad_fet1[] = { /* field definitions */
140
141 { 0, 9, 10, 0x0000, et_atab, ef_atab, rd_atab, nd_atab},
142
143 { 1, 1, 10, 0x0000, et_null, ef_null, rd_null, nd_null},
144
145 { 4, 10, 10, 0x0002, et_aopt, ef_aopt, rd_aopt, nd_aopt},
146
147 { 3, 9, 10, 0x0003, et_aprg, ef_aprg, rd_aprg, nd_aprg},
148
149 { 4, 15, 16, 0x0004, et_avgr, ef_avgr, rd_avgr, nd_avgr},
150 { 5, 15, 16, 0x0104, et_avgr, ef_avgr, rd_avgr, nd_avgr},
151 { 6, 15, 16, 0x0204, et_avgr, ef_avgr, rd_avgr, nd_avgr},
152 { 7, 15, 16, 0x0304, et_avgr, ef_avgr, rd_avgr, nd_avgr},
153 { 8, 15, 16, 0x0404, et_avgr, ef_avgr, rd_avgr, nd_avgr},
154 { 9, 15, 16, 0x0504, et_avgr, ef_avgr, rd_avgr, nd_avgr},
155 { 4, 21, 22, 0x0604, et_avgr, ef_avgr, rd_avgr, nd_avgr},
156 { 5, 21, 22, 0x0704, et_avgr, ef_avgr, rd_avgr, nd_avgr},
157 { 6, 21, 22, 0x0804, et_avgr, ef_avgr, rd_avgr, nd_avgr},
158 { 7, 21, 22, 0x0904, et_avgr, ef_avgr, rd_avgr, nd_avgr},
159 { 8, 21, 22, 0x0A04, et_avgr, ef_avgr, rd_avgr, nd_avgr},
160 { 9, 21, 22, 0x0B04, et_avgr, ef_avgr, rd_avgr, nd_avgr},
161
162 { 5, 35, 36, 0x0005, et_accn, ef_accn, rd_accn, nd_accn},
163 { 6, 35, 36, 0x0105, et_accn, ef_accn, rd_accn, nd_accn},
164 { 7, 35, 36, 0x0205, et_accn, ef_accn, rd_accn, nd_accn},
165 { 8, 35, 36, 0x0305, et_accn, ef_accn, rd_accn, nd_accn},
166
167 { 4, 46, 46, 0x0006, et_agpt, ef_agpt, rd_agpt, nd_agpt},
168 { 5, 46, 46, 0x0106, et_agpt, ef_agpt, rd_agpt, nd_agpt},
169 { 6, 46, 46, 0x0206, et_agpt, ef_agpt, rd_agpt, nd_agpt},
170 { 7, 46, 46, 0x0306, et_agpt, ef_agpt, rd_agpt, nd_agpt},
171 { 8, 46, 46, 0x0406, et_agpt, ef_agpt, rd_agpt, nd_agpt},
172 { 9, 46, 46, 0x0506, et_agpt, ef_agpt, rd_agpt, nd_agpt},
173 { 4, 59, 59, 0x0606, et_agpt, ef_agpt, rd_agpt, nd_agpt},
174 { 5, 59, 59, 0x0706, et_agpt, ef_agpt, rd_agpt, nd_agpt},
175 { 6, 59, 59, 0x0806, et_agpt, ef_agpt, rd_agpt, nd_agpt},
176 { 7, 59, 59, 0x0906, et_agpt, ef_agpt, rd_agpt, nd_agpt},
177 { 8, 59, 59, 0x0A06, et_agpt, ef_agpt, rd_agpt, nd_agpt},
178 { 9, 59, 59, 0x0B06, et_agpt, ef_agpt, rd_agpt, nd_agpt},
179
180 { 4, 48, 49, 0x0006, et_agch, ef_agch, rd_agch, nd_agch},
181 { 5, 48, 49, 0x0106, et_agch, ef_agch, rd_agch, nd_agch},
182 { 6, 48, 49, 0x0206, et_agch, ef_agch, rd_agch, nd_agch},
183 { 7, 48, 49, 0x0306, et_agch, ef_agch, rd_agch, nd_agch},
184 { 8, 48, 49, 0x0406, et_agch, ef_agch, rd_agch, nd_agch},
185 { 9, 48, 49, 0x0506, et_agch, ef_agch, rd_agch, nd_agch},
186 { 4, 61, 62, 0x0606, et_agch, ef_agch, rd_agch, nd_agch},
187 { 5, 61, 62, 0x0706, et_agch, ef_agch, rd_agch, nd_agch},
188 { 6, 61, 62, 0x0806, et_agch, ef_agch, rd_agch, nd_agch},
189 { 7, 61, 62, 0x0906, et_agch, ef_agch, rd_agch, nd_agch},
190 { 8, 61, 62, 0x0A06, et_agch, ef_agch, rd_agch, nd_agch},
191 { 9, 61, 62, 0x0B06, et_agch, ef_agch, rd_agch, nd_agch},
192
193 { 4, 41, 42, 0x0006, et_ains, ef_ains, rd_ains, nd_ains},
194 { 5, 41, 42, 0x0106, et_ains, ef_ains, rd_ains, nd_ains},
195 { 6, 41, 42, 0x0206, et_ains, ef_ains, rd_ains, nd_ains},
196 { 7, 41, 42, 0x0306, et_ains, ef_ains, rd_ains, nd_ains},
197 { 8, 41, 42, 0x0406, et_ains, ef_ains, rd_ains, nd_ains},
198 { 9, 41, 42, 0x0506, et_ains, ef_ains, rd_ains, nd_ains},
199 { 4, 54, 55, 0x0606, et_ains, ef_ains, rd_ains, nd_ains},
200 { 5, 54, 55, 0x0706, et_ains, ef_ains, rd_ains, nd_ains},
201 { 6, 54, 55, 0x0806, et_ains, ef_ains, rd_ains, nd_ains},
202 { 7, 54, 55, 0x0906, et_ains, ef_ains, rd_ains, nd_ains},
203 { 8, 54, 55, 0x0A06, et_ains, ef_ains, rd_ains, nd_ains},
204 { 9, 54, 55, 0x0B06, et_ains, ef_ains, rd_ains, nd_ains},
205
206 { 4, 44, 44, 0x0006, et_adyn, ef_adyn, rd_adyn, nd_adyn},
207 { 5, 44, 44, 0x0106, et_adyn, ef_adyn, rd_adyn, nd_adyn},
208 { 6, 44, 44, 0x0206, et_adyn, ef_adyn, rd_adyn, nd_adyn},
209 { 7, 44, 44, 0x0306, et_adyn, ef_adyn, rd_adyn, nd_adyn},
210 { 8, 44, 44, 0x0406, et_adyn, ef_adyn, rd_adyn, nd_adyn},
211 { 9, 44, 44, 0x0506, et_adyn, ef_adyn, rd_adyn, nd_adyn},
212 { 4, 57, 57, 0x0606, et_adyn, ef_adyn, rd_adyn, nd_adyn},
213 { 5, 57, 57, 0x0706, et_adyn, ef_adyn, rd_adyn, nd_adyn},
214 { 6, 57, 57, 0x0806, et_adyn, ef_adyn, rd_adyn, nd_adyn},
215 { 7, 57, 57, 0x0906, et_adyn, ef_adyn, rd_adyn, nd_adyn},
216 { 8, 57, 57, 0x0A06, et_adyn, ef_adyn, rd_adyn, nd_adyn},
217 { 9, 57, 57, 0x0B06, et_adyn, ef_adyn, rd_adyn, nd_adyn},
218
219 { 5, 10, 10, 0x0009, et_atun, ef_atun, rd_atun, nd_atun},
220
221 { 7, 9, 10, 0x000A, et_aint, ef_aint, rd_aint, nd_aint},
222 { 8, 9, 10, 0x000A, et_arat, ef_arat, rd_arat, nd_arat},
223 { 9, 9, 10, 0x000A, et_adep, ef_adep, rd_adep, nd_adep},
224
225 { 0, 0, 0, 0x0000, FN_NULL, FN_NULL, FN_NULL, FN_NULL}
226};
227
228/*
229
230*/
231
232int16_t adbox[][8] = { /* display box parameters */
233
234 { 1, 1, 94, 27, ACFBX00, ACBBX00, 0, 1}, /* 0 */
235 { 1, 28, 94, 40, ACFBX01, ACBBX01, 2, 1}, /* 1 */
236 { 1, 56, 94, 68, ACFBX02, ACBBX02, 4, 1}, /* 2 */
237 { 1, 42, 94, 54, ACFBX03, ACBBX03, 3, 1}, /* 3 */
238 { 96, 1, 190, 138, ACFBX04, ACBBX04, 0, 13}, /* 4 */
239 {192, 1, 302, 138, ACFBX05, ACBBX05, 0, 25}, /* 5 */
240 {304, 1, 510, 138, ACFBX06, ACBBX06, 0, 39}, /* 6 */
241 { 1, 140, 510, 348, ACFBX07, ACBBX07, 10, 1}, /* 7 */
242 { 1, 70, 38, 82, ACFBX08, ACBBX08, 5, 1}, /* 8 */
243 { 40, 70, 94, 82, ACFBX09, ACBBX09, 5, 6}, /* 9 */
244 { 1, 84, 94, 138, ACFBX10, ACBBX10, 6, 1} /* 10 */
245};
246
247int8_t *adbxlb[] = { /* display box labels */
248
249 "Asgnmnt", /* 0 */
250 "Stor/Fetch", /* 1 */
251 "MIDI out", /* 2 */
252 "PrgChng", /* 3 */
253 "Assignment", /* 4 */
254 "Assignmnt of" , /* 5 */
255 "Assignmnt of Instruments,", /* 6 */
256 "G Assignment of Keys to Groups for MIDI Port 1 G", /* 7 */
257 "", /* 8 */
258 "Tun", /* 9 */
259 "PhaseShift" /* 10 */
260};
261
262/*
263
264*/
265
266struct curpak ad_flds = {
267
268 stdctp4, /* curtype */
269 nokey, /* premove */
270 nokey, /* pstmove */
271 cxkstd, /* cx_key */
272 cykstd, /* cy_key */
273 adcxupd, /* cx_upd */
274 adcyupd, /* cy_upd */
275 nokey, /* xy_up */
276 nokey, /* xy_dn */
277 ad_xkey, /* x_key */
278 select, /* e_key */
279 stdmkey, /* m_key */
280 stddkey, /* d_key */
281 nonf, /* not_fld */
282 ad_fet1, /* curfet */
283 adboxes, /* csbp */
284 crate1, /* cratex */
285 crate1, /* cratey */
286 CT_GRAF, /* cmtype */
287 CTOX(0), /* cxval */
288 RTOY(9) /* cyval */
289};
290
291/*
292
293*/
294
295/*
296 =============================================================================
297 adcyupd() -- update cursor y location
298 =============================================================================
299*/
300
301void adcyupd(void)
302{
303 if (adnamsw) {
304
305 vtcrow = YTOR(vtyval += cyrate);
306
307 if (vtcrow > (vtwrow + 2))
308 vtyval = RTOY(vtcrow = vtwrow + 2);
309 else if (vtcrow < vtwrow)
310 vtyval = RTOY(vtcrow = vtwrow);
311
312 } else {
313
314 cyval += cyrate;
315
316 if (cyval GT (CYMAX - 1))
317 cyval = CYMAX - 1;
318 else if (cyval LT 1)
319 cyval = 1;
320 }
321}
322
323/*
324 =============================================================================
325 adcxupd() -- update cursor x location
326 =============================================================================
327*/
328
329void adcxupd(void)
330{
331 if (adnamsw) {
332
333 vtccol = XTOC(vtxval += cxrate);
334
335 if (vtccol > (vtwcol + 29))
336 vtxval = CTOX(vtccol = vtwcol + 29);
337 else if (vtccol < vtwcol)
338 vtxval = CTOX(vtccol = vtwcol);
339
340 } else {
341
342 cxval += cxrate;
343
344 if (cxval GT (CXMAX - 1))
345 cxval = CXMAX - 1;
346 else if (cxval LT 1)
347 cxval = 1;
348 }
349}
350
351/*
352
353*/
354
355/*
356 =============================================================================
357 ad_xkey() -- process the X key
358 =============================================================================
359*/
360
361void ad_xkey(void)
362{
363 register int16_t row, col, grp, i;
364
365 if (astat) {
366
367 if (whatbox()) {
368
369 row = hitcy / 14;
370 col = hitcx >> 3;
371
372 switch (hitbox) {
373
374 case 0: /* name */
375
376 if (row EQ 1) {
377
378 memset(asgtab[curasg].a_name, ' ', 16);
379 asgmod = TRUE;
380 adswin(0);
381 return; /* SUCCESS */
382
383 } else
384 return; /* FAILURE */
385 case 2: /* MIDI output port */
386
387 if ((col GE 1) AND (col LE 10)) {
388
389 curmop = 0;
390 adswin(hitbox);
391 modasg();
392 return; /* SUCCESS */
393 }
394
395 break;
396/*
397
398*/
399 case 4: /* voice to group */
400
401 if (row LT 4)
402 break;
403
404 if ((col GE 13) AND (col LE 16)) {
405
406 grp = row - 4;
407 vce2grp[grp] = -1;
408 adswin(hitbox);
409 modasg();
410 return; /* SUCCESS */
411
412 } else if ((col GE 19) AND (col LE 22)) {
413
414 grp = row + 2;
415 vce2grp[grp] = -1;
416 adswin(hitbox);
417 modasg();
418 return; /* SUCCESS */
419 }
420
421 break;
422
423 case 5: /* controller number */
424
425 if ((row LT 5) OR (row GT 8))
426 break;
427
428 if ((col EQ 35) OR (col EQ 36)) {
429
430 mctlnum[row - 5] = -1;
431 adswin(hitbox);
432 modasg();
433 return; /* SUCCESS */
434 }
435
436 break;
437/*
438
439*/
440 case 6: /* port or channel */
441
442 if (row LT 4)
443 break;
444
445 if (col EQ 46 ) {
446
447 /* port */
448
449 grp = row - 4;
450 grp2prt[grp][0] = 0;
451
452 for (i = 0; i < 88; i++)
453 key2grp[i] &= ~(0x0001 << grp);
454
455 adswin(hitbox);
456 drawk2g(grp);
457 modasg();
458 return; /* SUCCESS */
459
460 } else if ((col EQ 48) OR (col EQ 49)) {
461
462 /* channel */
463
464 grp = row - 4;
465 grp2prt[grp][1] = -1;
466 adswin(hitbox);
467 modasg();
468 return; /* SUCCESS */
469/*
470
471*/
472 } else if (col EQ 59) {
473
474 /* port */
475
476 grp = row + 2;
477 grp2prt[grp][0] = 0;
478
479 for (i = 0; i < 88; i++)
480 key2grp[i] &= ~(0x0001 << grp);
481
482 adswin(hitbox);
483 drawk2g(grp);
484 modasg();
485 return; /* SUCCESS */
486
487 } else if ((col EQ 61) OR (col EQ 62)) {
488
489 /* channel */
490
491 grp = row + 2;
492 grp2prt[grp][1] = -1;
493 adswin(hitbox);
494 modasg();
495 return; /* SUCCESS */
496 }
497
498 break;
499 }
500 }
501 }
502
503 return; /* FAILURE */
504}
505
506/*
507
508*/
509
510/*
511 =============================================================================
512 adfield() -- setup field routines for the assignment editor
513 =============================================================================
514*/
515
516void adfield(void)
517{
518 curslim = 140;
519
520 curset(&ad_flds);
521}
522
Note: See TracBrowser for help on using the repository browser.