source: buchla-68k/ram/scfield.c@ 4aad7a7

Last change on this file since 4aad7a7 was f06df21, checked in by Thomas Lopatic <thomas@…>, 6 years ago

Fixed uninitialized uses.

  • Property mode set to 100644
File size: 19.4 KB
Line 
1/*
2 =============================================================================
3 scfield.c -- score editor field setup
4 Version 62 -- 1989-11-15 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#include "ram.h"
9
10#define PCENTER 256L
11
12struct fet sc_fet1[] = {
13
14 { 0, 2, 4, 0x0000, et_strn, ef_strn, rd_strn, nd_strn},
15 { 0, 11, 15, 0x0000, et_snbt, ef_snbt, rd_snbt, nd_snbt},
16
17 {17, 11, 12, 0x0000, et_ioas, ef_ioas, rd_ioas, nd_ioas},
18 {17, 19, 19, 0x0000, et_tune, ef_tune, rd_tune, nd_tune},
19 {17, 27, 29, 0x0000, et_tmpo, ef_tmpo, rd_tmpo, nd_tmpo},
20 {17, 35, 38, 0x0000, et_intp, ef_intp, rd_intp, nd_intp},
21
22 {18, 7, 8, 0, et_inst, ef_inst, rd_inst, nd_inst},
23 {18, 12, 13, 1, et_inst, ef_inst, rd_inst, nd_inst},
24 {18, 17, 18, 2, et_inst, ef_inst, rd_inst, nd_inst},
25 {18, 22, 23, 3, et_inst, ef_inst, rd_inst, nd_inst},
26 {18, 27, 28, 4, et_inst, ef_inst, rd_inst, nd_inst},
27 {18, 32, 33, 5, et_inst, ef_inst, rd_inst, nd_inst},
28 {18, 37, 38, 6, et_inst, ef_inst, rd_inst, nd_inst},
29 {18, 42, 43, 7, et_inst, ef_inst, rd_inst, nd_inst},
30 {18, 47, 48, 8, et_inst, ef_inst, rd_inst, nd_inst},
31 {18, 52, 53, 9, et_inst, ef_inst, rd_inst, nd_inst},
32 {18, 57, 58, 10, et_inst, ef_inst, rd_inst, nd_inst},
33 {18, 62, 63, 11, et_inst, ef_inst, rd_inst, nd_inst},
34
35 {19, 5, 8, 0, et_trns, ef_trns, rd_trns, nd_trns},
36 {19, 10, 13, 1, et_trns, ef_trns, rd_trns, nd_trns},
37 {19, 15, 18, 2, et_trns, ef_trns, rd_trns, nd_trns},
38 {19, 20, 23, 3, et_trns, ef_trns, rd_trns, nd_trns},
39 {19, 25, 28, 4, et_trns, ef_trns, rd_trns, nd_trns},
40 {19, 30, 33, 5, et_trns, ef_trns, rd_trns, nd_trns},
41 {19, 35, 38, 6, et_trns, ef_trns, rd_trns, nd_trns},
42 {19, 40, 43, 7, et_trns, ef_trns, rd_trns, nd_trns},
43 {19, 45, 48, 8, et_trns, ef_trns, rd_trns, nd_trns},
44 {19, 50, 53, 9, et_trns, ef_trns, rd_trns, nd_trns},
45 {19, 55, 58, 10, et_trns, ef_trns, rd_trns, nd_trns},
46 {19, 60, 63, 11, et_trns, ef_trns, rd_trns, nd_trns},
47
48 {20, 6, 6, 0, et_dyn, ef_dyn, rd_dyn, nd_dyn},
49 {20, 8, 8, 0, et_loc, ef_loc, rd_loc, nd_loc},
50
51 {20, 11, 11, 1, et_dyn, ef_dyn, rd_dyn, nd_dyn},
52 {20, 13, 13, 1, et_loc, ef_loc, rd_loc, nd_loc},
53
54 {20, 16, 16, 2, et_dyn, ef_dyn, rd_dyn, nd_dyn},
55 {20, 18, 18, 2, et_loc, ef_loc, rd_loc, nd_loc},
56
57 {20, 21, 21, 3, et_dyn, ef_dyn, rd_dyn, nd_dyn},
58 {20, 23, 23, 3, et_loc, ef_loc, rd_loc, nd_loc},
59
60 {20, 26, 26, 4, et_dyn, ef_dyn, rd_dyn, nd_dyn},
61 {20, 28, 28, 4, et_loc, ef_loc, rd_loc, nd_loc},
62
63 {20, 31, 31, 5, et_dyn, ef_dyn, rd_dyn, nd_dyn},
64 {20, 33, 33, 5, et_loc, ef_loc, rd_loc, nd_loc},
65
66 {20, 36, 36, 6, et_dyn, ef_dyn, rd_dyn, nd_dyn},
67 {20, 38, 38, 6, et_loc, ef_loc, rd_loc, nd_loc},
68
69 {20, 41, 41, 7, et_dyn, ef_dyn, rd_dyn, nd_dyn},
70 {20, 43, 43, 7, et_loc, ef_loc, rd_loc, nd_loc},
71
72 {20, 46, 46, 8, et_dyn, ef_dyn, rd_dyn, nd_dyn},
73 {20, 48, 48, 8, et_loc, ef_loc, rd_loc, nd_loc},
74
75 {20, 51, 51, 9, et_dyn, ef_dyn, rd_dyn, nd_dyn},
76 {20, 53, 53, 9, et_loc, ef_loc, rd_loc, nd_loc},
77
78 {20, 56, 56, 10, et_dyn, ef_dyn, rd_dyn, nd_dyn},
79 {20, 58, 58, 10, et_loc, ef_loc, rd_loc, nd_loc},
80
81 {20, 61, 61, 11, et_dyn, ef_dyn, rd_dyn, nd_dyn},
82 {20, 63, 63, 11, et_loc, ef_loc, rd_loc, nd_loc},
83
84 {21, 6, 8, 0, et_vel, ef_vel, rd_vel, nd_vel},
85 {21, 11, 13, 1, et_vel, ef_vel, rd_vel, nd_vel},
86 {21, 16, 18, 2, et_vel, ef_vel, rd_vel, nd_vel},
87 {21, 21, 23, 3, et_vel, ef_vel, rd_vel, nd_vel},
88 {21, 26, 28, 4, et_vel, ef_vel, rd_vel, nd_vel},
89 {21, 31, 33, 5, et_vel, ef_vel, rd_vel, nd_vel},
90 {21, 36, 38, 6, et_vel, ef_vel, rd_vel, nd_vel},
91 {21, 41, 43, 7, et_vel, ef_vel, rd_vel, nd_vel},
92 {21, 46, 48, 8, et_vel, ef_vel, rd_vel, nd_vel},
93 {21, 51, 53, 9, et_vel, ef_vel, rd_vel, nd_vel},
94 {21, 56, 58, 10, et_vel, ef_vel, rd_vel, nd_vel},
95 {21, 61, 63, 11, et_vel, ef_vel, rd_vel, nd_vel},
96
97
98 {23, 6, 6, 0, et_res1, ef_res1, rd_res1, nd_res1},
99 {23, 8, 12, 0, et_aval, ef_aval, rd_aval, nd_aval},
100
101 {23, 15, 15, 1, et_res1, ef_res1, rd_res1, nd_res1},
102 {23, 17, 21, 1, et_aval, ef_aval, rd_aval, nd_aval},
103
104 {23, 24, 24, 2, et_res1, ef_res1, rd_res1, nd_res1},
105 {23, 26, 30, 2, et_aval, ef_aval, rd_aval, nd_aval},
106
107 {23, 33, 33, 3, et_res1, ef_res1, rd_res1, nd_res1},
108 {23, 35, 39, 3, et_aval, ef_aval, rd_aval, nd_aval},
109
110 {23, 42, 42, 4, et_res1, ef_res1, rd_res1, nd_res1},
111 {23, 44, 48, 4, et_aval, ef_aval, rd_aval, nd_aval},
112
113 {23, 51, 51, 5, et_res1, ef_res1, rd_res1, nd_res1},
114 {23, 53, 57, 5, et_aval, ef_aval, rd_aval, nd_aval},
115
116 {23, 61, 62, 0, et_agrp, ef_agrp, rd_agrp, nd_agrp},
117
118 {24, 7, 8, 0x0000, et_scor, ef_scor, rd_scor, nd_scor},
119 {24, 10, 25, 0x0000, et_null, ef_null, rd_null, nd_null},
120
121
122 { 0, 0, 0, 0x0000, FN_NULL, FN_NULL, FN_NULL, FN_NULL}
123};
124
125struct curpak sc_flds = {
126
127 stdctp3, /* curtype */
128 nokey, /* premove */
129 nokey, /* pstmove */
130 cxkstd, /* cx_key */
131 cykstd, /* cy_key */
132 sdcxu, /* cx_upd */
133 sdcyu, /* cy_upd */
134 nokey, /* xy_up */
135 nokey, /* xy_dn */
136 sdxkey, /* x_key */
137 select, /* e_key */
138 sdmkey, /* m_key */
139 stddkey, /* d_key */
140 scntfld, /* not_fld */
141 sc_fet1, /* curfet */
142 sdboxes, /* csbp */
143 crate1, /* cratex */
144 crate1, /* cratey */
145 CT_GRAF, /* cmtype */
146 C1X, /* cxval */
147 C1Y /* cyval */
148};
149
150/*
151 =============================================================================
152 et_null() .. nd_null() -- null data entry key processors
153 =============================================================================
154*/
155
156int16_t et_null(int16_t n)
157{
158 (void)n;
159
160 return(SUCCESS);
161}
162
163int16_t ef_null(int16_t n)
164{
165 (void)n;
166
167 return(SUCCESS);
168}
169
170int16_t rd_null(int16_t n)
171{
172 (void)n;
173
174 return(SUCCESS);
175}
176
177int16_t nd_null(int16_t n, int16_t k)
178{
179 (void)n;
180 (void)k;
181
182 return(SUCCESS);
183}
184
185/*
186 =============================================================================
187 istart() -- start insert mode
188 =============================================================================
189*/
190
191void istart(void)
192{
193 register struct s_entry *ep, *pp, *tp;
194
195 if (insmode) /* can't already be inserting */
196 return;
197
198 ep = ep_adj(p_cur, 1, t_cur); /* locate tail */
199
200 if (EV_SCORE EQ (0x007F & ep->e_type)) /* skip begin score event */
201 ep = ep->e_fwd;
202
203 if (EV_FINI EQ (0x007F & ep->e_type)) /* null if at end of score */
204 return;
205
206 tp = scores[curscor]->e_bak; /* locate end of score */
207 pp = ep->e_bak; /* locate end of head */
208
209 ep->e_bak = E_NULL; /* unhook tail from head */
210 pp->e_fwd = tp; /* unhook head from tail */
211 (tp->e_bak)->e_fwd = E_NULL; /* unhook tail from end */
212
213 tp->e_bak = pp; /* connect end to head */
214
215 t_ins = t_cur; /* record tail time */
216 peg = ep; /* hang tail on peg */
217
218 p_cur = ep_adj(pp, 0, t_cur); /* adjust p_cur */
219 p_ctr = p_cur; /* adjust p_ctr */
220 p_bak = ep_adj(p_cur, 0, t_bak); /* adjust p_bak */
221 p_fwd = ep_adj(p_cur, 0, t_fwd); /* adjust p_fwd */
222
223 insmode = TRUE;
224}
225
226/*
227 =============================================================================
228 icancel() -- cancel insert mode
229 =============================================================================
230*/
231
232void icancel(void)
233{
234 register struct s_entry *ep, *tp, *rp;
235 struct s_entry *pp;
236 int32_t endtime;
237
238 if (NOT insmode)
239 return;
240
241 tp = scores[curscor]->e_bak; /* locate end of score */
242 pp = tp->e_bak; /* locate end of head */
243
244 endtime = pp->e_time; /* find last time in score */
245
246 if (t_cur > endtime) /* use max of t_cur, endtime */
247 endtime = t_cur;
248
249 rp = peg; /* point at start of tail */
250 ep = NULL;
251
252 while (E_NULL NE rp) { /* scan each event in the tail */
253
254 ep = rp; /* update pointers */
255 rp = ep->e_fwd;
256
257 ep->e_time = (ep->e_time - t_ins) + endtime; /* adjust time */
258 }
259
260 ep->e_fwd = tp; /* connect tail to end */
261 tp->e_bak = ep; /* connect end to tail */
262
263 pp->e_fwd = peg; /* connect head to tail */
264 peg->e_bak = pp; /* connect tail to head */
265
266 p_cur = ep_adj(pp, 0, t_cur); /* adjust p_cur */
267 p_ctr = p_cur; /* adjust p_ctr */
268 p_bak = ep_adj(p_cur, 0, t_bak); /* adjust p_bak */
269 p_fwd = ep_adj(p_cur, 0, t_fwd); /* adjust p_fwd */
270
271 insmode = FALSE;
272}
273
274/*
275 =============================================================================
276 sdcxu() -- score cursor x update processing
277 =============================================================================
278*/
279
280void sdcxu(void)
281{
282 if (sdmctl EQ 0) { /* typewriter up */
283
284 vtcxupd();
285
286 } else if (sdmctl > 0) { /* menu up */
287
288 vtccol = XTOC(vtxval += cxrate);
289
290 if (vtccol > sdmlim[sdmctl][3])
291 vtxval = CTOX(vtccol = sdmlim[sdmctl][3]);
292 else if (vtccol < sdmlim[sdmctl][1])
293 vtxval = CTOX(vtccol = sdmlim[sdmctl][1]);
294
295 } else { /* no menu showing */
296
297 cxval += cxrate;
298
299 if (cxval > CXMAX)
300 cxval = CXMAX;
301 else if (cxval < 0)
302 cxval = 0;
303 }
304
305 return;
306}
307
308/*
309 =============================================================================
310 sdcyu() -- score cursor y update processing
311 =============================================================================
312*/
313
314void sdcyu(void)
315{
316 if (sdmctl EQ 0) {
317
318 vtcyupd();
319
320 } else if (sdmctl > 0) { /* menu up */
321
322 vtcrow = YTOR(vtyval += cyrate);
323
324 if (vtcrow < sdmlim[sdmctl][0])
325 vtyval = RTOY(vtcrow = sdmlim[sdmctl][0]);
326 else if (vtcrow > sdmlim[sdmctl][2])
327 vtyval = RTOY(vtcrow = sdmlim[sdmctl][2]);
328
329 } else { /* no menu showing */
330
331 cyval += cyrate;
332
333 if (cyval > CYMAX)
334 cyval = CYMAX;
335 else if (cyval < 0)
336 cyval = 0;
337
338 }
339
340 return;
341}
342
343/*
344 =============================================================================
345 scntfld() -- not-in-field data entry key processing
346 =============================================================================
347*/
348
349int16_t scntfld(int16_t k)
350{
351 register int16_t grp, fnc, var;
352
353 if (NOT astat)
354 return(FAILURE);
355
356 if (stcrow EQ 18) { /* group status or mode */
357
358 if (stccol LT 5)
359 return(FAILURE);
360
361 grp = (stccol - 5) / 5; /* group */
362 fnc = (stccol - 5) % 5; /* status or mode */
363
364 if (fnc EQ 0) { /* status */
365
366 if (k EQ 8) { /* '-' */
367
368 grpstat[grp] = FALSE;
369 dsgstat(grp);
370 return(SUCCESS);
371
372 } else if (k EQ 9) { /* '+' */
373
374 grpstat[grp] = TRUE;
375 dsgstat(grp);
376 return(SUCCESS);
377
378 } else
379 return(FAILURE);
380
381 } else if (fnc EQ 1) { /* mode */
382
383 if (k EQ 8) { /* '-' */
384
385 grpmode[grp] = 0;
386 dsgmode(grp);
387 return(SUCCESS);
388
389 } else if (k EQ 9) { /* '+' */
390
391 if (++grpmode[grp] GT 1)
392 grpmode[grp] = 2;
393
394 dsgmode(grp);
395 return(SUCCESS);
396
397 } else
398 return(FAILURE);
399
400 } else
401 return(FAILURE);
402
403 } else if (stcrow EQ 22) { /* analog variables */
404
405 if (stccol < 5)
406 return(FAILURE);
407
408 var = (stccol - 5) / 9; /* variable */
409 fnc = (stccol - 5) % 9; /* field column */
410 grp = abs(angroup) - 1; /* group */
411
412 if (fnc EQ 0) { /* mode column */
413
414 if (k EQ 8) { /* '-' */
415
416 varmode[var][grp] = 0;
417 dsvmode(var);
418 return(SUCCESS);
419
420 } else if (k EQ 9) { /* '+' */
421
422 if (++varmode[var][grp] GT 1)
423 varmode[var][grp] = 2;
424
425 dsvmode(var);
426 return(SUCCESS);
427 }
428 }
429 }
430
431 return(FAILURE);
432}
433
434/*
435 =============================================================================
436 cp2time() -- check cursor position and convert it to time
437
438 Sets 'ctime' if the cursor x argument, 'cx', is within the score.
439 =============================================================================
440*/
441
442int16_t cp2time(int16_t cx)
443{
444 register int32_t ct;
445
446 ct = t_cur + ((int32_t)cx - PCENTER);
447
448 if (ct < 0L) /* if out of score time range */
449 return(FALSE); /* ... return FALSE */
450
451 ctime = ct; /* set ctime */
452 return(TRUE); /* ... and return TRUE */
453}
454
455/*
456 =============================================================================
457 delevts() -- delete record enabled non-note events at current time
458 =============================================================================
459*/
460
461int16_t delevts(int16_t etp, int32_t thetime)
462{
463 register struct s_entry *ep, *np;
464 register int16_t et;
465 register int16_t rc;
466 register int16_t dsw;
467
468 rc = FALSE; /* intialize return code */
469
470 ep = ep_adj(p_cur, 1, thetime); /* start at left end of chain */
471
472
473 while (ep->e_time EQ thetime) { /* for each event at ctime ... */
474
475 np = ep->e_fwd; /* get next event pointer */
476 et = 0x007F & ep->e_type; /* get type */
477 dsw = oktode(ep); /* get deletion status */
478
479 if (dsw AND /* delete event if it's deletable ... */
480 ((etp EQ -1) OR (et EQ etp))) { /* ... and the right kind */
481
482 rc = TRUE;
483
484 if (-1 NE ehdlist[et]) /* if this is a header event ... */
485 eh_rmv(ep, ehdlist[et]); /* remove from hdr list */
486
487 /* fix up any effected pointers */
488
489 if (p_bak EQ ep)
490 p_bak = np;
491
492 if (p_cur EQ ep)
493 p_cur = np;
494
495 if (p_ctr EQ ep)
496 p_ctr = np;
497
498 if (p_fwd EQ ep)
499 p_fwd = np;
500
501 e_del(e_rmv(ep)); /* delete the event */
502 }
503
504 ep = np;
505 }
506
507 if (rc) /* if anything was deleted ... */
508 sc_refr(t_cur); /* ... update the display */
509
510 return(rc);
511}
512
513/*
514 =============================================================================
515 deladat() -- delete analog varaible data
516 =============================================================================
517*/
518
519int16_t deladat(void)
520{
521 register struct s_entry *ep, *rp;
522 register int16_t grp, rc, var, vc, vn;
523
524 rc = FALSE;
525
526 if (stccol < 6) /* pointing at var ? */
527 return(rc);
528
529 vn = (stccol - 6) / 9; /* variable number */
530 vc = (stccol - 6) % 9; /* variable column */
531
532 ep = ep_adj(p_cur, 1, t_cur); /* start at left end of chain */
533
534 if (vc EQ 0) { /* resolution */
535
536 while (t_cur EQ ep->e_time) {
537
538 rp = ep->e_fwd;
539
540 if (EV_ANRS EQ (0x007F & ep->e_type)) {
541
542 grp = 0x000F & ep->e_data1;
543 var = 0x000F & (ep->e_data1 >> 4);
544
545 if ((var EQ vn) AND grpstat[grp] AND
546 (2 EQ (ancmsw ? varmode[var][grp] :
547 grpmode[grp]))) {
548
549 /* fix pointers */
550
551 if (p_bak EQ ep)
552 p_bak = rp;
553
554 if (p_cur EQ ep)
555 p_cur = rp;
556
557 if (p_ctr EQ ep)
558 p_ctr = rp;
559
560 if (p_fwd EQ ep)
561 p_fwd = rp;
562
563 /* delete event */
564
565 eh_rmv(ep, EH_ANRS);
566 e_del(e_rmv(ep));
567 rc = TRUE;
568 }
569 }
570
571 ep = rp; /* next event */
572 }
573
574 } else if ((vc GE 2) AND (vc LE 6)) { /* value */
575
576 while (t_cur EQ ep->e_time) {
577
578 rp = ep->e_fwd;
579
580 if (EV_ANVL EQ (0x007F & ep->e_type)) {
581
582 grp = 0x000F & ep->e_data1;
583 var = 0x000F & (ep->e_data1 >> 4);
584
585 if ((var EQ vn) AND grpstat[grp] AND
586 (2 EQ (ancmsw ? varmode[var][grp] :
587 grpmode[grp]))) {
588
589 /* fix pointers */
590
591 if (p_bak EQ ep)
592 p_bak = rp;
593
594 if (p_cur EQ ep)
595 p_cur = rp;
596
597 if (p_ctr EQ ep)
598 p_ctr = rp;
599
600 if (p_fwd EQ ep)
601 p_fwd = rp;
602
603 e_del(e_rmv(ep)); /* delete */
604 rc = TRUE;
605 }
606 }
607
608 ep = rp; /* next event */
609 }
610 }
611
612 if (rc) { /* refresh the screen if it changed */
613
614 sc_refr(fc_val);
615 ds_anrs();
616 ds_anvl();
617 }
618
619 return(rc);
620}
621
622/*
623 =============================================================================
624 sdxkey() -- score delete key processing
625 =============================================================================
626*/
627
628void sdxkey(void)
629{
630 register int16_t col, grp, sect;
631 register struct s_entry *ep, *rp;
632
633 if (NOT astat) /* only do when key goes down */
634 return;
635
636 if (clkrun) /* ... and not while clock is running */
637 return;
638
639 if (scmctl NE -1) /* ... and area 1 menu is down */
640 return;
641
642 if (sdmctl EQ 4) { /* section menu is up */
643
644 if (((vtcrow EQ 19) OR (vtcrow EQ 20)) AND
645 (vtccol GE 24)) {
646
647 if (NOT recsw)
648 return;
649
650 /* set up to delete a section marker */
651
652 sect = ((vtccol - 24) >> 2) + ((vtcrow EQ 20) ? 10 : 0);
653 col = (vtccol - 24) & 3;
654
655 switch (col) {
656
657 case 0: /* delete begin section */
658
659
660 if (E_NULL NE (ep = seclist[curscor][sect])) {
661
662 /* fix pointers */
663
664 rp = ep->e_fwd;
665
666 if (p_bak EQ ep)
667 p_bak = rp;
668
669 if (p_cur EQ ep)
670 p_cur = rp;
671
672 if (p_ctr EQ ep)
673 p_ctr = rp;
674
675 if (p_fwd EQ ep)
676 p_fwd = rp;
677
678 eh_rmv(ep, EH_SBGN); /* delete */
679 e_del(e_rmv(ep));
680 seclist[curscor][sect] = E_NULL;
681 sdmenu(-1); /* take down menu */
682 sc_refr(fc_val); /* refresh screen */
683 }
684
685 break;
686
687 case 1: /* section number */
688 case 2:
689 break;
690
691 case 3: /* delete end section */
692
693 if (E_NULL NE
694 (ep = ehfind(EV_SEND, -1L, sect, -1))) {
695
696 /* fix pointers */
697
698 rp = ep->e_fwd;
699
700 if (p_bak EQ ep)
701 p_bak = rp;
702
703 if (p_cur EQ ep)
704 p_cur = rp;
705
706 if (p_ctr EQ ep)
707 p_ctr = rp;
708
709 if (p_fwd EQ ep)
710 p_fwd = rp;
711
712 eh_rmv(ep, EH_SEND); /* delete */
713 e_del(e_rmv(ep));
714 sdmenu(-1); /* take down menu */
715 sc_refr(fc_val); /* refresh screen */
716 }
717
718 break;
719 }
720
721 return;
722
723
724 } else if ((vtcrow EQ 23) AND
725 (vtccol GE 28) AND (vtccol LE 62)) {
726
727 /* group map entry */
728
729 col = vtccol - 28;
730
731 if (2 EQ (col % 3))
732 return;
733
734 grp = col / 3;
735 grptmap[grp] = -1;
736 dsgtme(grp);
737 return;
738 }
739 }
740
741 if (NOT recsw) /* do only if recording */
742 return;
743
744 if ((cyval GE 14) AND (cyval LE 223)) { /* notes */
745
746 delnote(); /* delete a note */
747
748 } else if ((cyval GE 224) AND (cyval LE 237)) { /* new data */
749
750 if (cp2time(cxval))
751 delevts(-1, ctime); /* delete all events at cursor */
752
753 } else if (stcrow EQ 17) {
754
755 if ((stccol GE 11) AND (stccol LE 12))
756 delevts(EV_ASGN, t_cur); /* assignment */
757 else if (stccol EQ 19)
758 delevts(EV_TUNE, t_cur); /* tuning */
759 else if ((stccol GE 27) AND (stccol LE 29))
760 delevts(EV_TMPO, t_cur); /* tempo */
761 else if ((stccol GE 36) AND (stccol LE 38))
762 delevts(EV_INTP, t_cur); /* interpolation */
763 else if ((stccol GE 40) AND (stccol LE 43))
764 delevts(EV_STOP, t_cur); /* stop */
765 else if ((stccol GE 45) AND (stccol LE 48))
766 delevts(EV_NEXT, t_cur); /* next */
767 else if ((stccol GE 50) AND (stccol LE 55))
768 delevts(EV_PNCH, t_cur); /* punch in/out */
769
770 } else if ((stcrow EQ 18) AND
771 (0 EQ ((stccol - 5) % 5))) { /* group status */
772
773 delevts(EV_GRP, t_cur);
774
775 } else if ((stcrow EQ 18) AND
776 ((2 EQ ((stccol - 5) % 5)) OR
777 (3 EQ ((stccol - 5) % 5)))) { /* instrument */
778
779 delevts(EV_INST, t_cur);
780
781 } else if (stcrow EQ 19) { /* transposition */
782
783 delevts(EV_TRNS, t_cur);
784
785 } else if ((stcrow EQ 20) AND (stccol GE 6) AND
786 (0 EQ ((stccol - 6) % 5))) { /* dynamics */
787
788 delevts(EV_DYN, t_cur);
789
790 } else if ((stcrow EQ 20) AND (stccol GE 6) AND
791 (2 EQ ((stccol - 6) % 5))) { /* location */
792
793 delevts(EV_LOCN, t_cur);
794
795 } else if (stcrow EQ 23) { /* analog */
796
797 deladat();
798
799 } else if (stcrow EQ 24) { /* score */
800
801 if (stccol LE 4) {
802
803 /* clear score */
804
805 if (insmode) /* cancel insert mode */
806 icancel();
807
808 sc_clr(curscor); /* clear score itself */
809 selscor(curscor); /* refresh the display */
810
811 } else if ((stccol GE 10) AND (stccol LE 25)) {
812
813 /* clear score name */
814
815 memset(scname[curscor], ' ', 16);
816 dswin(13);
817 }
818 }
819}
820
821/*
822 =============================================================================
823 sdmkey() -- score display menu key processor
824 =============================================================================
825*/
826
827void sdmkey(void)
828{
829 if (astat) {
830
831 if (insmode)
832 icancel();
833 }
834
835 stdmkey();
836}
837
838/*
839 =============================================================================
840 scfield() -- setup field routines for the score display
841 =============================================================================
842*/
843
844void scfield(void)
845{
846 curset(&sc_flds);
847}
848
Note: See TracBrowser for help on using the repository browser.