source: buchla-68k/ram/ettpch.c@ 4810254

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

Removed form-feed comments.

  • Property mode set to 100644
File size: 4.5 KB
Line 
1/*
2 =============================================================================
3 ettpch.c -- MIDAS tuning table pitch field handlers
4 Version 6 -- 1987-12-21 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#define DEBUGIT 0
9
10#include "ram.h"
11
12/*
13 =============================================================================
14 loc2key() -- convert a screen location to a key number or field code
15 =============================================================================
16*/
17
18int16_t loc2key(int16_t row, int16_t col)
19{
20 if (row EQ 24) {
21
22 if ((col > 6) AND (col < 39))
23 return(-1); /* -1 = name */
24 else if (col > 52)
25 return(-9); /* -9 = table # */
26 else
27 return(-10); /* -10 = not a field */
28
29 } else if (col < 12)
30 return(row); /* 0..23 = key 0..23 */
31 else if ((col > 11) AND (col < 22))
32 return(row + 24); /* 24..47 = key 24..47 */
33 else if ((col > 21) AND (col < 32))
34 return(row + 48); /* 48..71 = key 48..71 */
35 else if ((col > 31) AND (col < 42))
36 return(row + 72); /* 72..95 = key 72..95 */
37 else if ((col > 41) AND (col < 53))
38 return(row + 96); /* 96..119 = key 96..119 */
39 else if ((col > 52) AND (row < 8))
40 return(row + 120); /* 120..127 = key 120..127 */
41 else if (col > 52) {
42
43 if ((row EQ 9) OR (row EQ 10))
44 return(-2); /* -2 = transpose and copy */
45 else if (row EQ 12)
46 return(-3); /* -3 = increment */
47 else if (row EQ 14)
48 return(-4); /* -4 = interpolate */
49 else if (row EQ 16)
50 return(-5); /* -5 = undo */
51 else if (row EQ 18)
52 return(-6); /* -6 = value */
53 else if (row EQ 20)
54 return(-7); /* -7 = store */
55 else if (row EQ 22)
56 return(-8); /* -8 = retrieve */
57 else
58 return(-10); /* -10 = not a field */
59 } else
60 return(-10); /* -10 = not a field */
61}
62
63/*
64 =============================================================================
65 et_tpch() -- load the edit buffer
66 =============================================================================
67*/
68
69int16_t et_tpch(int16_t nn)
70{
71 register int16_t key, val;
72
73 key = loc2key(stcrow, stccol);
74
75 if (key < 0)
76 return(FAILURE);
77
78 val = tuntab[key];
79 cnvc2p(ebuf, (val >> 1));
80 ebflag = TRUE;
81 return(SUCCESS);
82}
83
84/*
85 =============================================================================
86 ef_tpch() -- unload (parse) edit buffer
87 =============================================================================
88*/
89
90int16_t ef_tpch(int16_t nn)
91{
92 register int16_t key;
93
94 ebflag = FALSE;
95 key = loc2key(stcrow, stccol);
96
97 if (key < 0)
98 return(FAILURE);
99
100 if (cnvp2c() EQ FAILURE)
101 return(FAILURE);
102
103 modtun();
104 tuntab[key] = cents << 1;
105 return(SUCCESS);
106}
107
108/*
109 =============================================================================
110 rd_tpch() -- (re)display the field
111 =============================================================================
112*/
113
114int16_t rd_tpch(int16_t nn)
115{
116 register int16_t val, key, n;
117
118 n = nn & 0xFF;
119 key = loc2key(cfetp->frow, cfetp->flcol);
120 val = tuntab[key];
121
122 cnvc2p(dspbuf, (val >> 1));
123
124 dspbuf[0] += '0';
125 dspbuf[1] += 'A';
126 dspbuf[2] = sfdsp[dspbuf[2] - 7];
127 dspbuf[3] += '0';
128 dspbuf[4] += '0';
129 dspbuf[5] = '\0';
130
131 vbank(0);
132 vcputsv(tunob, 64,
133 ((val EQ 320) OR (val EQ 21920))
134 ? TDMKEYC : tdbox[n][4], tdbox[n][5],
135 cfetp->frow, cfetp->flcol, dspbuf, 14);
136
137 return(SUCCESS);
138}
139
140/*
141 =============================================================================
142 nd_tpch() -- handle new data entry
143 =============================================================================
144*/
145
146int16_t nd_tpch(int16_t nn, int16_t k)
147{
148 register int16_t col, n;
149
150 n = nn & 0xFF;
151
152 if (stccol < 11)
153 col = stccol - 6;
154 else if (stccol < 21)
155 col = stccol - 16;
156 else if (stccol < 31)
157 col = stccol - 26;
158 else if (stccol < 41)
159 col = stccol - 36;
160 else if (stccol < 52)
161 col = stccol - 47;
162 else
163 col = stccol - 58;
164
165 switch (col) {
166
167 case 0:
168
169 ebuf[0] = k;
170 dspbuf[0] = k + '0';
171 break;
172
173 case 1:
174
175 if (k GT 6)
176 return(FAILURE);
177
178 ebuf[1] = k;
179 dspbuf[0] = k + 'A';
180 break;
181
182 case 2:
183
184 if (k EQ 7) { /* blank */
185
186 ebuf[2] = k;
187 dspbuf[0] = sfdsp[0];
188 break;
189
190 } else if (k EQ 8) { /* flat */
191
192 ebuf[2] = k;
193 dspbuf[0] = sfdsp[1];
194 break;
195
196 } else if (k EQ 9) { /* sharp */
197
198 ebuf[2] = k;
199 dspbuf[0] = sfdsp[2];
200 break;
201
202 } else
203 return(FAILURE);
204
205 case 3:
206 case 4:
207
208 ebuf[col] = k;
209 dspbuf[0] = k + '0';
210 break;
211 }
212
213 dspbuf[1] = '\0';
214
215 vbank(0);
216 vcputsv(tunob, 64, TDENTRY, tdbox[n][5], stcrow, stccol, dspbuf, 14);
217
218 if (col EQ 4)
219 return(SUCCESS);
220
221 advtcur();
222 return(SUCCESS);
223}
224
Note: See TracBrowser for help on using the repository browser.