source: buchla-68k/orig/RAM/ETRES1.C@ 4b63bf3

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

Imported original source code.

  • Property mode set to 100755
File size: 7.8 KB
Line 
1/*
2 =============================================================================
3 etres1.c -- analog variable field handlers
4 Version 16 -- 1988-06-28 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#include "stddefs.h"
9#include "fields.h"
10#include "smdefs.h"
11#include "hwdefs.h"
12#include "graphdef.h"
13#include "vsdd.h"
14#include "vsddsw.h"
15#include "score.h"
16#include "scfns.h"
17#include "macros.h"
18
19#include "midas.h"
20#include "scdsp.h"
21
22extern short ancmsw;
23extern short angroup;
24extern short ctrsw;
25extern short recsw;
26extern short stccol;
27
28extern unsigned *obj8;
29
30extern short anrs[8][16];
31extern short grpmode[12];
32extern short grpstat[12];
33extern short var2src[6];
34extern short varmode[8][16];
35
36extern struct gdsel *gdstbc[];
37extern struct valent valents[];
38
39/*
40 =============================================================================
41 et_res1() -- load edit buffer
42 =============================================================================
43*/
44
45short
46et_res1(n)
47short n;
48{
49 ebuf[0] = anrs[n][abs(angroup)-1];
50 ebflag = TRUE;
51 return(SUCCESS);
52}
53
54/*
55
56*/
57
58/*
59 =============================================================================
60 ef_res1() -- parse edit buffer
61 =============================================================================
62*/
63
64short
65ef_res1(n)
66short n;
67{
68 register short ival, grp, vg;
69 register struct s_entry *ep;
70
71 ebflag = FALSE;
72 grp = abs(angroup)-1;
73 ival = ebuf[0] & 0x00FF;
74
75 if ((ival < 3) OR (ival > 8))
76 return(FAILURE);
77
78 anrs[n][grp] = ival;
79
80 if (recsw AND grpstat[grp] AND
81 (2 EQ (ancmsw ? varmode[n][grp] : grpmode[grp]))) {
82
83 vg = ((n << 4) | grp);
84
85 if (E_NULL NE (ep = findev(p_cur, t_cur, EV_ANRS, vg, -1))) {
86
87 ep->e_data2 = ival;
88
89 } else if (E_NULL NE (ep = e_alc(E_SIZE2))) {
90
91 ep->e_type = EV_ANRS;
92 ep->e_data1 = vg;
93 ep->e_data2 = ival;
94 ep->e_time = t_cur;
95 p_cur = e_ins(ep, ep_adj(p_cur, 0, t_cur))->e_fwd;
96 eh_ins(ep, EH_ANRS);
97 ctrsw = TRUE;
98 se_disp(ep, D_FWD, gdstbc, 1);
99 scupd();
100 }
101 }
102
103 return(SUCCESS);
104}
105
106/*
107
108*/
109
110/*
111 =============================================================================
112 rd_res1() -- (re)display the field
113 =============================================================================
114*/
115
116short
117rd_res1(n)
118short n;
119{
120 register short grp, chr;
121
122 grp = abs(angroup) - 1;
123
124 chr = anrs[n][grp] + '0';
125
126 if (v_regs[5] & 0x0180)
127 vbank(0);
128
129 vputc(obj8, 7, 6 + (n * 9), chr, SDW12ATR);
130
131 return(SUCCESS);
132}
133
134/*
135
136*/
137
138/*
139 =============================================================================
140 nd_res1() -- data entry function
141 =============================================================================
142*/
143
144short
145nd_res1(n, k)
146short n, k;
147{
148 ebuf[0] = k;
149
150 if (v_regs[5] & 0x0180)
151 vbank(0);
152
153 vputc(obj8, 7, stccol, k + '0', SDW12DEA);
154
155 return(SUCCESS);
156}
157
158/*
159
160*/
161
162/*
163 =============================================================================
164 et_aval() -- load edit buffer
165 =============================================================================
166*/
167
168short
169et_aval(n)
170short n;
171{
172 register short val, grp, gs;
173 short val1, val2, val3;
174
175 grp = abs(angroup) - 1;
176 gs = (grp << 4) | var2src[n];
177 val = (valents[gs].val) >> 5;
178
179 if (val < 0 ) {
180
181 ebuf[0] = 8;
182 val = -val;
183
184 } else {
185
186 ebuf[0] = 9;
187 }
188
189 val1 = val / 100;
190 ebuf[4] = (val - (val1 * 100)) / 10;
191 val2 = val1 / 10;
192 ebuf[2] = val1 - (val2 * 10);
193 ebuf[1] = val2;
194
195 ebflag = TRUE;
196
197 return(SUCCESS);
198}
199
200/*
201
202*/
203
204/*
205 =============================================================================
206 ef_res1() -- parse edit buffer
207 =============================================================================
208*/
209
210short
211ef_aval(n)
212short n;
213{
214 register short val, grp, src, vg;
215 register struct s_entry *ep;
216
217 ebflag = FALSE;
218 grp = abs(angroup) - 1;
219 src = var2src[n];
220 val = ((ebuf[1] * 100) + (ebuf[2] * 10) + ebuf[4]) * 10;
221
222 if (val > 1000)
223 return(FAILURE);
224
225 if (ebuf[0] EQ 8)
226 val = -val;
227
228 val = val << 5;
229
230 setsv(grp, src, val);
231
232 if (recsw AND grpstat[grp] AND
233 (2 EQ (ancmsw ? varmode[n][grp] : grpmode[grp]))) {
234
235 vg = (n << 4) | grp;
236
237 if (E_NULL NE (ep = findev(p_cur, t_cur, EV_ANVL, vg, -1))) {
238
239 ep->e_dn = (struct s_entry *)((long)val << 16);
240
241 } else if (E_NULL NE (ep = e_alc(E_SIZE2))) {
242
243 ep->e_type = EV_ANVL;
244 ep->e_data1 = vg;
245 ep->e_dn = (struct s_entry *)((long)val << 16);
246 ep->e_time = t_cur;
247 p_cur = e_ins(ep, ep_adj(p_cur, 0, t_cur))->e_fwd;
248 ctrsw = TRUE;
249 se_disp(ep, D_FWD, gdstbc, 1);
250 scupd();
251 }
252 }
253
254 return(SUCCESS);
255}
256
257/*
258
259*/
260
261/*
262 =============================================================================
263 rd_aval() -- (re)display the field
264 =============================================================================
265*/
266
267short
268rd_aval(n)
269short n;
270{
271 register short grp, val, gs;
272 short val1, val2;
273 char buf[6];
274
275 grp = abs(angroup) - 1;
276 gs = (grp << 4) | var2src[n];
277 val = (valents[gs].val) >> 5;
278
279 if (val < 0) {
280
281 buf[0] = '-';
282 val = -val;
283
284 } else {
285
286 buf[0] = '+';
287 }
288
289 val1 = val / 100;
290 buf[4] = '0' + ((val - (val1 * 100)) / 10);
291 val2 = val1 / 10;
292 buf[2] = '0' + (val1 - (val2 * 10));
293 buf[1] = '0' + val2;
294 buf[3] = '.';
295 buf[5] = '\0';
296
297 if (v_regs[5] & 0x0180)
298 vbank(0);
299
300 vputs(obj8, 7, 8 + (n * 9), buf, SDW12ATR);
301
302 return(SUCCESS);
303}
304
305/*
306
307*/
308
309/*
310 =============================================================================
311 nd_aval() -- data entry function
312 =============================================================================
313*/
314
315short
316nd_aval(n, k)
317register short n, k;
318{
319 register short ec;
320
321 ec = stccol - cfetp->flcol;
322
323 if (ec EQ 3)
324 return(FAILURE);
325
326 ebuf[ec] = k;
327
328 if (ec EQ 0)
329 k = (k EQ 8) ? '-' : '+';
330 else
331 k += '0';
332
333 if (v_regs[5] & 0x0180)
334 vbank(0);
335
336 vputc(obj8, 7, stccol, k, SDW12DEA);
337
338 if (ec EQ 4)
339 return(SUCCESS);
340
341 advscur();
342
343 if (ec EQ 2)
344 advscur();
345
346 return(SUCCESS);
347}
348
349/*
350
351*/
352
353/*
354 =============================================================================
355 et_agrp() -- load edit buffer
356 =============================================================================
357*/
358
359short
360et_agrp(n)
361short n;
362{
363 sprintf(ebuf, "%02.2d", abs(angroup));
364 ebflag = TRUE;
365 return(SUCCESS);
366}
367
368/*
369
370*/
371
372/*
373 =============================================================================
374 ef_agrp() -- parse edit buffer
375 =============================================================================
376*/
377
378short
379ef_agrp(n)
380short n;
381{
382 register short ival;
383
384 ebflag = FALSE;
385 ival = (10 * (ebuf[0] - '0')) + (ebuf[1] - '0');
386
387 if ((ival >12) OR (ival < 1))
388 return(FAILURE);
389
390 angroup = sign(angroup, ival);
391
392 ds_anmd();
393 ds_anrs();
394 ds_anvl();
395 return(SUCCESS);
396}
397
398/*
399
400*/
401
402/*
403 =============================================================================
404 rd_agrp() -- (re)display the field
405 =============================================================================
406*/
407
408short
409rd_agrp(n)
410short n;
411{
412 char buf[4];
413
414 sprintf(buf, "%02.2d", abs(angroup));
415
416 if (v_regs[5] & 0x0180)
417 vbank(0);
418
419 vputs(obj8, 7, 61, buf, SDW12ATR);
420
421 return(SUCCESS);
422}
423
424/*
425
426*/
427
428/*
429 =============================================================================
430 nd_agrp() -- data entry function
431 =============================================================================
432*/
433
434short
435nd_agrp(n, k)
436short n, k;
437{
438 register short ec;
439
440 ec = stccol - cfetp->flcol;
441
442 ebuf[ec] = k + '0';
443
444 if (v_regs[5] & 0x0180)
445 vbank(0);
446
447 vputc(obj8, 7, stccol, k + '0', SDW12DEA);
448 advscur();
449
450 return(SUCCESS);
451}
Note: See TracBrowser for help on using the repository browser.