source: buchla-68k/ram/etidin.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: 4.0 KB
Line 
1/*
2 =============================================================================
3 etidin.c -- MIDAS instrument editor - instrument number field handlers
4 Version 28 -- 1988-09-15 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#include "all.h"
9
10extern void advicur(void);
11extern void allwins(void);
12extern void dswin(int16_t n);
13extern void execins(int16_t vce, int16_t ins, int16_t tag);
14extern void idcpfch(void);
15extern void idvlblc(void);
16extern void newinst(int16_t inst);
17extern void ttcpos(int16_t row, int16_t col);
18
19#define DIN_OFF 14
20
21extern uint16_t *instob;
22
23extern int16_t vtcrow, vtccol, stccol, curinst, curvce, idcfsw, idintmp;
24extern int16_t editsw, curfunc, submenu;
25
26extern int16_t idbox[][8];
27extern int16_t instmod[];
28extern int16_t vce2grp[];
29
30extern int8_t dspbuf[];
31
32extern struct instdef idefs[];
33extern struct instdef vbufs[];
34
35/*
36
37*/
38
39/*
40 =============================================================================
41 et_idin() -- load the edit buffer
42 =============================================================================
43*/
44
45int16_t et_idin(int16_t n)
46{
47 sprintf(ebuf, "%02d", curinst);
48 ebflag = TRUE;
49
50 return(SUCCESS);
51}
52
53
54/*
55 =============================================================================
56 ef_idin() -- parse (unload) the edit buffer
57 =============================================================================
58*/
59
60int16_t ef_idin(int16_t n)
61{
62 register int16_t i, tmpval, j;
63 register struct instdef *ip;
64
65 if (idcfsw) { /* 'E' with menu up */
66
67 if (vtcrow EQ 22) { /* fetch or escape */
68
69 if (vtccol LT 35) {
70
71 newinst(idintmp);
72 execins(curvce, curinst, 1);
73
74 if (NOT editsw) {
75
76 if ((i = vce2grp[curvce]) > 0) {
77
78 for (j =0; j < 12; j++)
79 if (vce2grp[j] EQ i)
80 execins(j, curinst, 1);
81 }
82 }
83 }
84
85 objclr(TTCPRI);
86 idvlblc();
87 idcfsw = FALSE;
88 submenu = FALSE;
89
90 if (vtccol LT 35) {
91
92 allwins();
93
94 } else {
95
96 dswin(22);
97 dswin(19);
98 }
99/*
100
101*/
102 } else if (vtcrow EQ 23) { /* copy to library */
103
104 if (idintmp) {
105
106 memcpyw(&idefs[idintmp], &vbufs[curvce],
107 (sizeof (struct instdef) / 2));
108
109 curinst = idintmp;
110 instmod[curvce] = FALSE;
111 }
112
113 objclr(TTCPRI);
114 idvlblc();
115 idcfsw = FALSE;
116 submenu = FALSE;
117 dswin(22);
118 dswin(19);
119
120 if (idintmp EQ 0)
121 return(FAILURE);
122
123 } else
124 return(FAILURE);
125
126 return(SUCCESS);
127/*
128
129*/
130 } else { /* 'E' with menu not up */
131
132 ebuf[2] = '\0'; /* terminate the string in ebuf */
133 ebflag = FALSE;
134
135 tmpval = 0;
136
137 for (i = 0; i < 2; i++) /* convert from ASCII to binary */
138 tmpval = (tmpval * 10) + (ebuf[i] - '0');
139
140 if (tmpval GE NINST) /* check the range */
141 return(FAILURE);
142
143 idintmp = tmpval; /* save selected value */
144 idcpfch(); /* put up copy/fetch menu */
145 dswin(22);
146 SetPri(TTCURS, TTCPRI);
147 ttcpos(22, 17);
148 idcfsw = TRUE;
149 submenu = TRUE;
150 return(SUCCESS);
151 }
152}
153
154/*
155
156*/
157
158/*
159 =============================================================================
160 rd_idin() -- (re)display the field
161 =============================================================================
162*/
163
164int16_t rd_idin(int16_t n)
165{
166 if (idcfsw) /* don't display if copy/fetch is up */
167 return(FAILURE);
168
169 /* convert to ASCII */
170
171 sprintf(dspbuf, "%02d", curinst);
172
173 vbank(0); /* display the value */
174
175 vcputsv(instob, 64, (instmod[curvce] ? ID_CHGD : idbox[n][4]),
176 idbox[n][5], idbox[n][6], idbox[n][7] + DIN_OFF, dspbuf, 14);
177
178 return(SUCCESS);
179}
180
181/*
182
183*/
184
185/*
186 =============================================================================
187 nd_idin() -- handle new data entry
188 =============================================================================
189*/
190
191int16_t nd_idin(int16_t n, int16_t k)
192{
193 register int16_t ec, c;
194
195 ec = stccol - cfetp->flcol; /* setup edit buffer column */
196 ebuf[ec] = k + '0';
197 ebuf[2] = '\0';
198
199 dspbuf[0] = k + '0';
200 dspbuf[1] = '\0';
201
202 vbank(0);
203
204 vcputsv(instob, 64, ID_ENTRY, idbox[n][5],
205 idbox[n][6], stccol, dspbuf, 14);
206
207 advicur();
208
209 return(SUCCESS);
210}
211
212
Note: See TracBrowser for help on using the repository browser.