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