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