source: buchla-68k/ram/ptfield.c@ e225e77

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

Added missing includes and declarations.

  • Property mode set to 100644
File size: 17.0 KB
Line 
1/*
2 =============================================================================
3 ptfield.c -- MIDAS-VII patch display field functions
4 Version 35 -- 1989-11-16 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#define DEBUGXP 0
9
10#define USEVECTR 0 /* to force vector cursor control */
11
12#include "stddefs.h"
13#include "hwdefs.h"
14#include "graphdef.h"
15#include "vsdd.h"
16#include "fields.h"
17#include "curpak.h"
18#include "patch.h"
19#include "macros.h"
20
21#include "midas.h"
22#include "ptdisp.h"
23
24#include "memory.h"
25#include "stdio.h"
26#include "strings.h"
27
28#if DEBUGXP
29extern short debugsw;
30
31short debugxp = 1;
32#endif
33
34#if USEVECTR
35short usevect = TRUE;
36
37extern void (*cx_key)(void);
38extern void (*cy_key)(void);
39#endif
40
41extern void (*xy_up)(void);
42extern void (*xy_dn)(void);
43extern void (*premove)(void);
44extern void (*pstmove)(void);
45extern int16_t (*curtype)(void);
46
47extern uint16_t fromfpu(uint16_t fputime);
48
49extern void select(void);
50extern void nokey(void);
51extern int16_t nonf(int16_t k);
52extern int16_t stdctp5(void);
53extern void cxkstd(void);
54extern void cykstd(void);
55extern void stdmkey(void);
56extern void stddkey(int16_t k);
57extern void stopcm(void);
58extern void smxupd(void);
59extern void smyupd(void);
60extern void aftercm(void);
61extern void ptdkey(int16_t k);
62
63extern int16_t astat;
64extern int16_t chtime;
65extern int16_t chwait;
66extern int16_t cmfirst;
67extern int16_t cmtype;
68extern int16_t curhold;
69extern int16_t cvtime;
70extern int16_t cvwait;
71extern int16_t ncvwait;
72extern int16_t ptbflag;
73extern int16_t ptecpos;
74extern int16_t ptedef;
75extern int16_t ptedfok;
76extern int16_t pteset;
77extern int16_t ptestm;
78extern int16_t ptestok;
79extern int16_t ss_ptsw;
80extern int16_t ss_sqsw;
81extern int16_t stccol;
82extern int16_t stcrow;
83extern int16_t syrate;
84extern int16_t tvcwval;
85extern int16_t vcwval;
86
87extern int16_t crate1[];
88
89extern int8_t ptdebuf[];
90
91extern struct selbox *csbp;
92extern struct selbox ptboxes[];
93
94extern struct patch ptebuf;
95
96void ptxkey(void);
97void ptmkey(void);
98void ptekey(void);
99
100extern int16_t findnxt(int16_t cp);
101extern int16_t findprv(int16_t cp);
102extern int8_t *fr2dec(int16_t v, int8_t *s);
103extern void UpdVid(int16_t row, int16_t col, int8_t *str, uint16_t atr);
104extern void cnvc2p(int8_t *buf, int16_t cv);
105extern void curset(struct curpak *s);
106extern void dptw(void);
107extern void dt_del(uint16_t de);
108extern void int2rat(int16_t rat);
109extern void movectc(int16_t r, int16_t c);
110extern void pt_del(uint16_t pe);
111extern void pte2buf(void);
112extern void voidpb(void);
113
114/*
115
116*/
117
118int8_t *trdata[] = { "Trans", "Stop ", "Start" };
119int8_t *ssdata[] = { "Stop ", "Start" };
120
121int8_t *stdata[] = { "Srce" , "Mult", "Time", "Valu", "Func" };
122
123int8_t *smdata[] = {
124
125 " ", /* SM_NONE 0 No source - always 0 */
126 "Randm", /* SM_RAND 1 Random source */
127 "GPC/V", /* SM_CTL1 2 Control Voltage 1 / MIDI GPC 1 */
128 "??3??", /* ------- 3 -unused- */
129 "??4??", /* ------- 4 -unused- */
130 "Pitch", /* SM_PTCH 5 Key Pitch */
131 "KeyPr", /* SM_KPRS 6 Key Pressure */
132 "KeyVL", /* SM_KVEL 7 Key Velocity */
133 "Pedal", /* SM_PED1 8 Pedal 1 */
134 "??9??", /* ------- 9 -unused- */
135 "Freq ", /* SM_FREQ 10 Key Frequency */
136 "PchWh", /* SM_HTPW 11 Tablet X / MIDI Pitch Wheel */
137 "ModWh", /* SM_VTMW 12 Tablet Y / MIDI Mod Wheel */
138 "Breth", /* SM_LPBR 13 LongPot / MIDI Breath Controller */
139};
140
141struct curpak pt_flds = {
142
143 stdctp5, /* curtype */
144 nokey, /* premove */
145 aftercm, /* pstmove */
146 cxkstd, /* cx_key */
147 cykstd, /* cy_key */
148 smxupd, /* cx_upd */
149 smyupd, /* cy_upd */
150 stopcm, /* xy_up */
151 nokey, /* xy_dn */
152 ptxkey, /* x_key */
153 ptekey, /* e_key */
154 ptmkey, /* m_key */
155 ptdkey, /* d_key */
156 nonf, /* not_fld */
157 (struct fet *)NULL, /* curfet */
158 ptboxes, /* csbp */
159 crate1, /* cratex */
160 crate1, /* cratey */
161 CT_SMTH, /* cmtype */
162 CTOX(2), /* cxval */
163 RTOY(DATAROW) /* cyval */
164};
165
166/*
167
168*/
169
170/*
171 =============================================================================
172 ptmkey() -- M key processing for the patch display
173 =============================================================================
174*/
175
176void ptmkey(void)
177{
178 register int16_t nc;
179
180 if (astat) {
181
182 if (stccol EQ 48) {
183
184 if (ss_sqsw EQ 0) {
185
186 (*xy_dn)(); /* handle KEY_DOWN functions */
187
188 (*premove)(); /* handle PRE-MOVE functions */
189
190 nc = (*curtype)(); /* get new CURSOR TYPE wanted */
191
192 cvtime = syrate;
193 ncvwait = curhold;
194
195 ss_ptsw = -1;
196 cmtype = nc;
197 cvwait = 1;
198 }
199
200 } else
201 stdmkey();
202
203 } else {
204
205 if (stccol EQ 48) {
206
207 ss_ptsw = 0;
208 cvwait = 1;
209 ncvwait = cvtime;
210 cmfirst = TRUE;
211
212 if (ss_sqsw EQ 0)
213 (*xy_up)();
214
215 (*pstmove)(); /* handle POST-MOVE functions */
216
217 } else
218 stdmkey();
219 }
220}
221
222/*
223
224*/
225
226/*
227 =============================================================================
228 ptekey() -- E key processing for the patch display
229 =============================================================================
230*/
231
232void ptekey(void)
233{
234 register int16_t nc;
235
236 if (astat) {
237
238 if (stccol EQ 48) {
239
240 if (ss_sqsw EQ 0) {
241
242 (*xy_dn)(); /* handle KEY_DOWN functions */
243
244 (*premove)(); /* handle PRE-MOVE functions */
245
246 nc = (*curtype)(); /* get new CURSOR TYPE wanted */
247
248 cvtime = syrate;
249 ncvwait = curhold;
250
251 ss_ptsw = 1;
252 cmtype = nc;
253 cvwait = 1;
254 }
255
256 } else
257 select();
258
259 } else {
260
261 if (stccol EQ 48) {
262
263 ss_ptsw = 0;
264 cvwait = 1;
265 ncvwait = cvtime;
266 cmfirst = TRUE;
267
268 if (ss_sqsw EQ 0)
269 (*xy_up)();
270
271 (*pstmove)(); /* handle POST-MOVE functions */
272
273 } else
274 select();
275 }
276}
277
278/*
279
280*/
281
282/*
283 =============================================================================
284 ptxkey() -- X key processing for the patch display
285 =============================================================================
286*/
287
288void ptxkey(void)
289{
290 register int16_t i, cp, pp, sp, stm;
291
292 if (NOT astat) /* only on key closures ... */
293 return;
294
295 if (inrange(stccol, 2, 13)) { /* definer -- clear definer */
296
297 if (ptecpos AND NOT ptbflag) { /* refresh data entry stuff */
298
299 memcpyw(&ptebuf.defnum, &patches[ptecpos].defnum, 6);
300 pteset = TRUE;
301 pte2buf();
302 }
303
304 ptedef = NULL_DEF;
305 ptedfok = TRUE;
306
307 memset(&ptdebuf[2], ' ', 12);
308
309 for (i = 0; i < 48; i++)
310 if (ptdebuf[i] EQ '\0')
311 ptdebuf[i] = ' ';
312
313 ptdebuf[0] = '\260';
314 ptdebuf[48] = '\0';
315
316 UpdVid(7, 0, ptdebuf, PTEATR);
317 movectc(stcrow, stccol);
318
319/*
320
321*/
322 } else if (inrange(stccol, 15, 26)) { /* stimulus -- clear stimulus */
323
324 if (ptecpos AND NOT ptbflag) { /* refresh data entry stuff */
325
326 memcpyw(&ptebuf.defnum, &patches[ptecpos].defnum, 6);
327 pteset = TRUE;
328 pte2buf();
329 }
330
331 ptestm = NULL_DEF;
332 ptestok = FALSE;
333
334 memset(&ptdebuf[15], ' ', 12);
335
336 for (i = 0; i < 48; i++)
337 if (ptdebuf[i] EQ '\0')
338 ptdebuf[i] = ' ';
339
340 ptdebuf[0] = '\260';
341 ptdebuf[48] = '\0';
342
343 UpdVid(7, 0, ptdebuf, PTEATR);
344 movectc(stcrow, stccol);
345
346 } else if (inrange(stccol, 28, 40)) { /* destination -- clear line */
347
348 voidpb(); /* void the patch buffer */
349
350 ptdebuf[0] = '\260';
351 ptdebuf[48] = '\0';
352
353 UpdVid(7, 0, ptdebuf, PTEATR);
354 movectc(stcrow, stccol);
355/*
356
357*/
358 } else if (inrange(stccol, 42, 46)) { /* datum -- delete the patch */
359
360 if (ptecpos) {
361
362 cp = ptecpos; /* setup indices */
363 pp = patches[cp].prevstm;
364 sp = patches[cp].nextstm;
365
366 stm = patches[cp].stmnum; /* get stimulus used */
367#if DEBUGXP
368 if (debugsw AND debugxp)
369 printf("ptxkey(): DELETING PATCH pp = %d cp = %d sp = %d\n",
370 pp, cp, sp);
371#endif
372
373 if (pp) /* adjust predecessor */
374 patches[pp].nextstm = sp;
375 else /* adjust stmptr */
376 stmptr[TRG_MASK & stm] = sp;
377
378 if (sp) /* adjust successor */
379 patches[sp].prevstm = pp;
380
381 if (sp = findnxt(cp)) /* adjust ptecpos */
382 ptecpos = sp;
383 else if (pp = findprv(cp))
384 ptecpos = pp;
385 else
386 ptecpos = 0;
387
388 pt_del(cp); /* delete the patch entry */
389/*
390
391*/
392 for (i = 0; i < NDEFSTMS; ++i) { /* adjust defptr list */
393
394 if (cp = defptr[i]) { /* in use ? */
395
396 pp = 0; /* initial predecessor */
397
398 while (cp) { /* check the chain */
399
400 sp = defents[cp].nextdef; /* successor */
401
402 if (defents[cp].stm EQ stm) {
403
404#if DEBUGXP
405 if (debugsw AND debugxp) {
406
407 printf("ptxkey(): DELETING DEF trg=$%04.4X stm=$%04.4X\n",
408 i, stm);
409
410 printf("ptxkey(): DELETING DEF pp=%d cp=%d sp=%d\n",
411 pp, cp, sp);
412 }
413#endif
414
415 if (pp) /* adjust predecessor */
416 defents[pp].nextdef = sp;
417 else /* adjust defptr */
418 defptr[i] = sp;
419
420 dt_del(cp); /* delete def entry */
421
422 } else {
423
424 pp = cp; /* update predecessor index */
425 }
426
427 cp = sp; /* next defent */
428 }
429 }
430 }
431
432 dptw(); /* update the display */
433 }
434 }
435}
436
437/*
438
439*/
440
441/*
442 =============================================================================
443 dspdfst() -- convert a patch DEF or STM value for display
444 =============================================================================
445*/
446
447void dspdfst(int8_t *buf, uint16_t val)
448{
449 register uint16_t chan, port, stim;
450
451 if (val EQ NULL_DEF) { /* handle possible blank definer */
452
453 strcpy(buf, " ");
454 return;
455 }
456
457 port = (val >> 11) & 0x0003;
458 chan = (val >> 7) & 0x000F;
459 stim = val & 0x007F;
460
461 switch (port) { /* use port to decode possible types */
462
463 case 0: /* MIDI-1 - Keys */
464 case 1: /* MIDI-2 - Keys */
465
466 sprintf(buf, "%s %03u %u %02u",
467 (val & 0x8000) ? "Rel" : "Key",
468 1 + stim, 1 + port, 1 + chan);
469
470 break;
471/*
472
473*/
474
475 case 2: /* Local Keys */
476
477 switch (chan) { /* use channel to further decode */
478
479 case 0: /* Keys - Local Keyboard */
480
481 sprintf(buf, "%s %03u L ",
482 (val & 0x8000) ? "Rel" : "Key",
483 1 + stim);
484
485 break;
486
487 case 2: /* Triggers */
488
489 sprintf(buf, "Trig %02u ", 1 + stim);
490 break;
491
492 case 3: /* Pulses */
493
494 sprintf(buf, "Pulse %u ", 1 + stim);
495 break;
496
497 default: /* spurious type -- shouldn't happen */
498
499 sprintf(buf, "%s?? %03u L %02u",
500 (val & 0x8000) ? "r" : "c",
501 1 + stim, 1 + chan);
502 break;
503
504 }
505
506 break;
507
508 default: /* spurious port -- should never happen */
509
510 sprintf(buf, "??? %03u %u %02u", 1 + stim, 1 + port, 1 + chan);
511 break;
512 }
513}
514
515/*
516
517*/
518
519/*
520 =============================================================================
521 dfpdat() -- convert FPU datum for display
522 =============================================================================
523*/
524
525int8_t *dfpdat(struct patch *pp)
526{
527 static int8_t buf[32];
528 uint16_t sgn, vp1, vp2;
529 int16_t val;
530
531 val = pp->padat2;
532
533 switch (pp->padat1) {
534
535 case PSA_SRC: /* source */
536
537 strcpy(buf, smdata[val]);
538 break;
539
540 case PSA_MLT: /* multiplier */
541
542 fr2dec(val, ebuf);
543
544 buf[0] = ebuf[3];
545 buf[1] = ebuf[0];
546 buf[2] = '.';
547 buf[3] = ebuf[1];
548 buf[4] = ebuf[2];
549 buf[5] = '\0';
550 break;
551/*
552
553*/
554 case PSA_VAL: /* value */
555
556 val >>= 5;
557
558 if (val < 0) {
559
560 val = -val;
561 sgn = '-';
562
563 } else {
564
565 sgn = '+';
566 }
567
568 vp1 = val / 100;
569 vp2 = val - (vp1 * 100);
570
571 if (vp1 > 9) {
572
573 vp1 = 0;
574
575 if (sgn EQ '+')
576 sgn = '\240';
577 else
578 sgn = '\241';
579 }
580
581 sprintf(buf, "%c%u.%02u", sgn, vp1, vp2);
582 break;
583/*
584
585*/
586 case PSA_TIM: /* time */
587
588 vp1 = fromfpu(val);
589
590 sprintf(buf, "%5u", vp1);
591 break;
592
593 case PSA_FNC: /* function / control */
594
595 if ((PE_SPEC & pp->paspec) EQ PA_AUX)
596 sprintf(buf, "%s", (val & 0x0001) ? "On " : "Off ");
597 else
598 sprintf(buf, "%s", (val & 0x0001) ? "Start" : "Stop ");
599
600 break;
601
602 default:
603
604 sprintf(buf, "$%04.4X", val);
605 break;
606 }
607
608 return(buf);
609}
610
611/*
612
613*/
614
615/*
616 =============================================================================
617 pafpu1() -- convert patch for display -- aaaaa ssss tn ddddd
618
619 Level, Filtr, Fil Q, Loctn, Dynmc
620 =============================================================================
621*/
622
623void pafpu1(int8_t *bf, int8_t *ad, uint16_t gt, uint16_t gn, struct patch *pp)
624{
625 sprintf(bf, "%s %s %c%c %s", ad, stdata[pp->padat1], gt, gn, dfpdat(pp));
626}
627
628/*
629 =============================================================================
630 pafpu2() -- convert patch for display -- aaa n ssss tn ddddd
631
632 Index, Freq
633 =============================================================================
634*/
635
636void pafpu2(int8_t *bf, int8_t *ad, uint16_t os, uint16_t gt, uint16_t gn, struct patch *pp)
637{
638 sprintf(bf, "%s %d %s %c%c %s", ad, os, stdata[pp->padat1], gt, gn, dfpdat(pp));
639}
640
641/*
642 =============================================================================
643 pafpu3() -- convert patch for display -- aaaaa ssss ddddd
644
645 Aux, Rate, Inten, Depth, Vlt
646 =============================================================================
647*/
648
649void pafpu3(int8_t *bf, int8_t *ad, struct patch *pp)
650{
651 sprintf(bf, "%s %s %s", ad, stdata[pp->padat1], dfpdat(pp));
652}
653
654/*
655
656*/
657
658/*
659 =============================================================================
660 dspdest() -- convert patch destination and datum for display
661 =============================================================================
662*/
663
664void dspdest(int8_t *buf, struct patch *pp)
665{
666 uint16_t chan, osc, port, stim, vg, vgt, vgn, vp1, vp2, sgn;
667 int16_t val;
668 int8_t buf2[16], *rtype;
669
670 port = (pp->pasuba >> 11) & 0x0003; /* for trg types */
671 chan = (pp->pasuba >> 7) & 0x000F;
672 stim = pp->pasuba & 0x007F;
673
674 vg = (pp->pasuba >> 8) & 0x00FF; /* for vg types */
675 osc = (pp->pasuba & 0x00FF) + 1;
676
677 if (vg > 11) {
678
679 vgt = 'G';
680 vgn = vg - 11;
681
682 } else {
683
684 vgt = 'V';
685 vgn = vg + 1;
686 }
687
688 vgn = vgn + ((vgn > 9) ? '\242' : '0');
689
690/*
691
692*/
693 switch (PE_SPEC & pp->paspec) {
694
695 case PA_KEY: /* key action */
696
697 sprintf(buf, "K %03u %u %02u %s",
698 1 + stim, 1 + port, 1 + chan,
699 trdata[pp->padat2 & 0x0003]);
700
701 break;
702
703 case PA_TRG:
704
705 sprintf(buf, "Trigger %02u %s",
706 1 + stim,
707 ssdata[pp->padat2 & 0x0001]);
708
709 break;
710
711 case PA_PLS:
712
713 sprintf(buf, "Pulse %u %s",
714 1 + stim,
715 trdata[pp->padat2 & 0x0003]);
716
717 break;
718/*
719
720*/
721 case PA_LED:
722
723 if (pp->pasuba & 0x0001) {
724
725 sprintf(buf, "LED %c %c%c%c%c",
726 'A' + pp->pasuba,
727 '0' + ((pp->padat1 >> 14) & 0x0003),
728 '0' + ((pp->padat1 >> 12) & 0x0003),
729 '0' + ((pp->padat1 >> 10) & 0x0003),
730 '0' + ((pp->padat1 >> 8) & 0x0003));
731
732 } else {
733
734 sprintf(buf, "LED %c %c%c%c",
735 'A' + pp->pasuba,
736 '0' + ((pp->padat1 >> 14) & 0x0003),
737 '0' + ((pp->padat1 >> 12) & 0x0003),
738 '0' + ((pp->padat1 >> 10) & 0x0003));
739 }
740
741 break;
742
743 case PA_SLIN:
744
745 sprintf(buf, "Seq %02u Lin %03u",
746 1 + pp->pasuba,
747 pp->padat1);
748
749 break;
750
751 case PA_SCTL:
752
753 sprintf(buf, "Seq %02u Ctl %s",
754 1 + pp->pasuba,
755 ssdata[pp->padat2 & 0x0001]);
756
757 break;
758
759 case PA_TUNE:
760
761 sprintf(buf, "Tune Table %u",
762 pp->padat1);
763
764 break;
765/*
766
767*/
768 case PA_RSET:
769
770 rtype = "Set";
771 goto doregs;
772
773 case PA_RADD:
774
775 rtype = "Add";
776
777doregs:
778
779 if (pp->padat1 & 0x0001) {
780
781 sprintf(buf, "Reg %02u %s R%02u",
782 1 + pp->pasuba, rtype,
783 1 + pp->padat2);
784
785 } else {
786
787 if ((val = pp->padat2) < 0) {
788
789 sgn = '-';
790 val = - val;
791
792 } else {
793
794 sgn = '+';
795 }
796
797 sprintf(buf, "Reg %02u %s %c%02u",
798 1 + pp->pasuba, rtype,
799 sgn, val);
800 }
801
802 break;
803
804 case PA_INST:
805
806 sprintf(buf, "Instrument %c%c %02u",
807 vgt, vgn, pp->padat1);
808
809 break;
810/*
811
812*/
813 case PA_OSC:
814
815 val = pp->padat2 >> 1;
816
817 switch (pp->padat1) {
818
819 case PSO_INT: /* interval */
820
821 if (val < 0) {
822
823 sgn = '-';
824 val = -val;
825
826 } else {
827
828 sgn = '+';
829 }
830
831 sprintf(buf, "Osc %u Int %c%c %c%04u",
832 osc, vgt, vgn, sgn, val);
833
834 break;
835
836 case PSO_RAT: /* ratio */
837
838 int2rat(val);
839
840 sprintf(buf, "Osc %u Rat %c%c %s",
841 osc, vgt, vgn, ebuf);
842
843 break;
844
845 case PSO_FRQ: /* frequency */
846
847 vp1 = val / 10;
848 vp2 = val - (vp1 * 10);
849
850 sprintf(buf, "Osc %u Frq %c%c %02u.%u",
851 osc, vgt, vgn, vp1, vp2);
852
853 break;
854/*
855
856*/
857 case PSO_PCH: /* pitch */
858
859 cnvc2p(ebuf, val);
860
861 sprintf(buf, "Osc %u Pch %c%c %s",
862 osc, vgt, vgn, ebuf);
863
864 break;
865
866 default:
867
868 break;
869 }
870
871 break;
872/*
873
874*/
875 case PA_WAVA:
876
877 sgn = 'A';
878 goto dowaves;
879
880 case PA_WAVB:
881
882 sgn = 'B';
883
884dowaves:
885
886 sprintf(buf, "Waveshape%c %c%c %02u",
887 sgn, vgt, vgn, pp->padat1);
888
889 break;
890
891 case PA_CNFG:
892
893 sprintf(buf, "Configure %c%c %02u",
894 vgt, vgn, pp->padat1);
895
896 break;
897/*
898
899*/
900 case PA_LEVL:
901
902 pafpu1(buf, "Level", vgt, vgn, pp);
903 break;
904
905 case PA_INDX:
906
907 pafpu2(buf, "Ind", osc, vgt, vgn, pp);
908 break;
909
910 case PA_FREQ:
911
912 pafpu2(buf, "Frq", osc, vgt, vgn, pp);
913 break;
914
915 case PA_FILT:
916
917 pafpu1(buf, "Filtr", vgt, vgn, pp);
918 break;
919
920 case PA_FILQ:
921
922 pafpu1(buf, "Fil Q", vgt, vgn, pp);
923 break;
924
925 case PA_LOCN:
926
927 pafpu1(buf, "Loctn", vgt, vgn, pp);
928 break;
929
930 case PA_DYNM:
931
932 pafpu1(buf, "Dynmc", vgt, vgn, pp);
933 break;
934/*
935
936*/
937 case PA_AUX:
938
939 pafpu3(buf, "Aux ", pp);
940 break;
941
942 case PA_RATE:
943
944 pafpu3(buf, "Rate ", pp);
945 break;
946
947 case PA_INTN:
948
949 pafpu3(buf, "Inten", pp);
950 break;
951
952 case PA_DPTH:
953
954 pafpu3(buf, "Depth", pp);
955 break;
956
957 case PA_VOUT:
958
959 sprintf(buf2, "Vlt %u", pp->pasuba);
960 pafpu3(buf, buf2, pp);
961 break;
962
963 default:
964
965 break;
966 }
967}
968
969/*
970
971*/
972
973/*
974 =============================================================================
975 ptfield() -- setup field routines for the patch editor
976 =============================================================================
977*/
978
979void ptfield(void)
980{
981 curset(&pt_flds);
982
983#if USEVECTR
984 if (usevect) {
985
986 cx_key = cxkstd;
987 cy_key = cykstd;
988 }
989#endif
990
991}
Note: See TracBrowser for help on using the repository browser.