source: buchla-68k/ram/etmcfn.c@ fa38804

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

Removed form-feed comments.

  • Property mode set to 100644
File size: 5.1 KB
Line 
1/*
2 =============================================================================
3 etmcfn.c -- instrument editor - ws/cf menu field handlers
4 Version 7 -- 1988-08-26 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#include "ram.h"
9
10/*
11 =============================================================================
12 et_mcfn() -- load the edit buffer
13 =============================================================================
14*/
15
16int16_t et_mcfn(int16_t n)
17{
18 sprintf(ebuf, "%02d", vbufs[curvce].idhcfg);
19 ebflag = TRUE;
20
21 return(SUCCESS);
22}
23
24/*
25 =============================================================================
26 ef_mcfn() -- parse (unload) the edit buffer
27 =============================================================================
28*/
29
30int16_t ef_mcfn(int16_t n)
31{
32 register int16_t tmpval;
33
34 wmctag = FALSE;
35 ebuf[2] = '\0'; /* terminate the string in ebuf */
36 ebflag = FALSE;
37
38 tmpval = ((ebuf[0] - '0') * 10) + (ebuf[1] - '0');
39
40 if (tmpval GE NUMCFG) /* check against limit */
41 return(FAILURE);
42
43 vbufs[curvce].idhcfg = tmpval;
44 dosync(curvce);
45 wmctag = TRUE;
46 return(SUCCESS);
47}
48
49/*
50 =============================================================================
51 rd_mcfn() -- (re)display the field
52 =============================================================================
53*/
54
55int16_t rd_mcfn(int16_t n)
56{
57 sprintf(dspbuf, "%02d", vbufs[curvce].idhcfg);
58
59 if (v_regs[5] & 0x0180)
60 vbank(0);
61
62 vcputsv(instob, 64, CFBX18, CBBX18, 24, 16, dspbuf, 14);
63
64 return(SUCCESS);
65}
66
67/*
68 =============================================================================
69 nd_mcfn() -- handle new data entry
70 =============================================================================
71*/
72
73int16_t nd_mcfn(int16_t n, int16_t k)
74{
75 register int16_t ec, c;
76
77 ec = stccol - cfetp->flcol; /* setup edit buffer column */
78 ebuf[ec] = k + '0'; /* enter new data in buffer */
79 ebuf[2] = '\0'; /* make sure string is terminated */
80
81 dspbuf[0] = k + '0'; /* setup for display */
82 dspbuf[1] = '\0';
83
84 if (v_regs[5] & 0x0180)
85 vbank(0);
86
87 /* display the new data */
88
89 vcputsv(instob, 64, ID_ENTRY, CBBX18, stcrow, stccol, dspbuf, 14);
90
91 advicur(); /* advance cursor */
92
93 return(SUCCESS);
94}
95
96/*
97 =============================================================================
98 et_mwsn() -- load the edit buffer
99 =============================================================================
100*/
101
102int16_t et_mwsn(int16_t nn)
103{
104 wmcsel = (nn & 0xFF00) ? 1 : 0;
105
106 sprintf(ebuf, "%02d", 1 + (wmcsel ? vbufs[curvce].idhwsb
107 : vbufs[curvce].idhwsa));
108
109 ebflag = TRUE;
110
111 return(SUCCESS);
112}
113
114/*
115 =============================================================================
116 ef_mwsn() -- parse (unload) the edit buffer
117 =============================================================================
118*/
119
120int16_t ef_mwsn(int16_t nn)
121{
122 register int16_t tmpval;
123 register int16_t *fpuws;
124
125 wmcsel = (nn & 0xFF00) ? 1 : 0;
126
127 wmctag = FALSE;
128 ebuf[2] = '\0'; /* terminate the string in ebuf */
129 ebflag = FALSE;
130
131 /* convert from ASCII to binary */
132
133 tmpval = ((ebuf[0] -'0') * 10) + (ebuf[1] - '0');
134
135 if ((tmpval < 1) OR (tmpval > NUMWAVS))
136 return(FAILURE);
137
138 if (wmcsel) {
139
140 /* slot B */
141 vbufs[curvce].idhwsb = tmpval - 1;
142
143 memcpyw(vbufs[curvce].idhwvbf, &wslib[tmpval - 1],
144 NUMHARM + (2 * NUMWPNT));
145
146 fpuws = io_fpu + FPU_OWST + (curvce << 9) + 1;
147
148 memcpyw(fpuws, vbufs[curvce].idhwvbf, NUMWPNT);
149
150 *(fpuws - 1) = vbufs[curvce].idhwvbf[0];
151 *(fpuws + NUMWPNT) = vbufs[curvce].idhwvbf[NUMWPNT - 1];
152
153 } else {
154
155 /* slot A */
156
157 vbufs[curvce].idhwsa = tmpval - 1;
158
159 memcpyw(vbufs[curvce].idhwvaf, &wslib[tmpval - 1],
160 NUMHARM + (2 * NUMWPNT));
161
162 fpuws = io_fpu + FPU_OWST + (curvce << 9) + 0x100 + 1;
163
164 memcpyw(fpuws, vbufs[curvce].idhwvaf, NUMWPNT);
165
166 *(fpuws - 1) = vbufs[curvce].idhwvaf[0];
167 *(fpuws + NUMWPNT) = vbufs[curvce].idhwvaf[NUMWPNT - 1];
168 }
169
170 wmctag = TRUE;
171 return(SUCCESS);
172}
173
174/*
175 =============================================================================
176 rd_mwsn() -- (re)display the field
177 =============================================================================
178*/
179
180int16_t rd_mwsn(int16_t nn)
181{
182 wmcsel = (nn & 0xFF00) ? 1 : 0;
183
184 sprintf(dspbuf, "%02d", 1 + (wmcsel ? vbufs[curvce].idhwsb
185 : vbufs[curvce].idhwsa));
186
187 if (v_regs[5] & 0x0180)
188 vbank(0);
189
190 vcputsv(instob, 64, CFBX23, CBBX23, 24, wmcsel ? 16 : 12, dspbuf, 14);
191
192 return(SUCCESS);
193}
194
195/*
196 =============================================================================
197 nd_mwsn() -- handle new data entry
198 =============================================================================
199*/
200
201int16_t nd_mwsn(int16_t nn, int16_t k)
202{
203 register int16_t ec, c;
204
205 ec = stccol - cfetp->flcol; /* setup edit buffer column */
206 ebuf[ec] = k + '0'; /* enter new data in buffer */
207 ebuf[2] = '\0'; /* make sure string is terminated */
208
209 dspbuf[0] = k + '0'; /* setup for display */
210 dspbuf[1] = '\0';
211
212 if (v_regs[5] & 0x0180)
213 vbank(0); /* display the new data */
214
215 vcputsv(instob, 64, ID_ENTRY, CBBX23, stcrow, stccol, dspbuf, 14);
216
217 advicur(); /* advance cursor */
218
219 return(SUCCESS);
220}
221
Note: See TracBrowser for help on using the repository browser.