source: buchla-68k/ram/etres1.c@ 06f6615

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

Zero redundant declarations.

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