source: buchla-68k/ram/etres1.c@ 6262b5c

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

Added include files for global functions and variables.

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