source: buchla-68k/ram/showcfg.c@ e225e77

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

Added missing includes and declarations.

  • Property mode set to 100644
File size: 15.4 KB
Line 
1/*
2 =============================================================================
3 showcfg.c -- display a configuration diagram
4 Version 14 -- 1988-08-26 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#include "stddefs.h"
9#include "fields.h"
10#include "graphdef.h"
11#include "vsdd.h"
12#include "vsddsw.h"
13#include "vsddvars.h"
14#include "hwdefs.h"
15
16#include "midas.h"
17#include "instdsp.h"
18#include "wsdsp.h"
19
20#define MAXPAT 35
21
22#include "configs.h"
23
24#include "memory.h"
25#include "stdio.h"
26
27/* instrument display configuration box parameters */
28
29#define LFT_EDGE 1 /* left edge of configuration box */
30#define TOP_EDGE 238 /* top edge of configuration box */
31#define RGT_EDGE 131 /* right edge of configuration box */
32#define BOT_EDGE 348 /* bottom edge of configuration box */
33
34/* external functions */
35
36extern uint16_t exp_c(uint16_t c);
37
38extern void enterit(void);
39extern void idpoint(int16_t x, int16_t y, int16_t pen);
40extern void nokey(void);
41
42extern int16_t et_mcfn(int16_t n);
43extern int16_t ef_mcfn(int16_t n);
44extern int16_t rd_mcfn(int16_t n);
45extern int16_t nd_mcfn(int16_t n, int16_t k);
46extern int16_t et_mwsn(int16_t nn);
47extern int16_t ef_mwsn(int16_t nn);
48extern int16_t rd_mwsn(int16_t nn);
49extern int16_t nd_mwsn(int16_t nn, int16_t k);
50
51/* forward references */
52
53int16_t imfnbox(int16_t n);
54
55extern void modinst(void);
56extern void reshowi(void);
57extern void settc(int16_t rv, int16_t cv);
58
59/*
60
61*/
62
63/* variables defined elsewhere */
64
65extern void (*point)(int16_t x, int16_t y, int16_t pen);
66 /* point plotting function pointer */
67extern void (*x_key)(void); /* "X" key handler pointer */
68
69extern int16_t LftEdge; /* left edge of current box */
70extern int16_t TopEdge; /* top edge of current box */
71extern int16_t RgtEdge; /* right edge of current box */
72extern int16_t BotEdge; /* bottom edge of current box */
73
74extern int16_t curslim; /* cursor changeover point */
75extern int16_t curvce; /* currently edited voice */
76extern int16_t hitbox; /* selected box number */
77extern int16_t hitcx; /* selection cursor x value */
78extern int16_t hitcy; /* selection cursor y value */
79extern int16_t stccol; /* text cursor column */
80extern int16_t stcrow; /* text cursor row */
81extern int16_t wcflag; /* ws/cf menu select flag (cf=0, ws=1) */
82extern int16_t wcmcol; /* ws/cf menu label column */
83extern int16_t wcmrow; /* ws/cf menu label row */
84extern int16_t wcpage; /* ws/cf menu page */
85extern int16_t wmcsel; /* ws slot select */
86extern int16_t wmctag; /* ws/cf display update flag */
87
88extern uint16_t *instob; /* instrument display object pointer */
89
90extern struct octent *idoct; /* object control table pointer */
91
92extern struct selbox *csbp; /* current box select table pointer */
93
94extern struct instdef vbufs[]; /* voice buffers */
95
96extern struct wstbl wslib[]; /* waveshape library */
97
98/*
99
100*/
101
102struct fet id_fet2[] = { /* waveshape number fet */
103
104 {24, 12, 13, 0x0000, et_mwsn, ef_mwsn, rd_mwsn, nd_mwsn},
105 {24, 16, 17, 0x0100, et_mwsn, ef_mwsn, rd_mwsn, nd_mwsn},
106 { 0, 0, 0, 0x0000, FN_NULL, FN_NULL, FN_NULL, FN_NULL}
107};
108
109struct fet id_fet3[] = { /* configuration number fet */
110
111 {24, 16, 17, 0, et_mcfn, ef_mcfn, rd_mcfn, nd_mcfn},
112 { 0, 0, 0, 0x0000, FN_NULL, FN_NULL, FN_NULL, FN_NULL}
113};
114
115struct selbox idmbox[] = {
116
117 { 1, 1, 127, 111, 0, imfnbox}, /* slot 00 */
118 {129, 1, 255, 111, 1, imfnbox}, /* slot 01 */
119 {257, 1, 383, 111, 2, imfnbox}, /* slot 02 */
120 {385, 1, 510, 111, 3, imfnbox}, /* slot 03 */
121
122 { 1, 113, 127, 223, 4, imfnbox}, /* slot 04 */
123 {129, 113, 255, 223, 5, imfnbox}, /* slot 05 */
124 {257, 113, 383, 223, 6, imfnbox}, /* slot 06 */
125 {385, 113, 510, 223, 7, imfnbox}, /* slot 07 */
126
127 { 1, 225, 127, 334, 8, imfnbox}, /* slot 08 */
128 {129, 225, 255, 334, 9, imfnbox}, /* slot 09 */
129 {257, 225, 383, 334, 10, imfnbox}, /* slot 10 */
130 {385, 225, 510, 334, 11, imfnbox}, /* slot 11 */
131
132 { 1, 336, 510, 349, 12, imfnbox}, /* number */
133};
134
135/*
136
137*/
138
139int16_t patctab[MAXPAT] = { /* pattern colors */
140
141 0, /* 1 */
142 0, /* 2 */
143 0, /* 3 */
144 0, /* 4 */
145 0, /* 5 */
146 0, /* 6 */
147 12, /* 7 */
148 12, /* 8 */
149 12, /* 9 */
150 12, /* 10 */
151 0, /* 11 */
152 0, /* 12 */
153 0, /* 13 */
154 0, /* 14 */
155 13, /* 15 */
156 8, /* 16 */
157 0, /* 17 */
158 0, /* 18 */
159 2, /* 19 */
160 2, /* 20 */
161 2, /* 21 */
162 2, /* 22 */
163 2, /* 23 */
164 2, /* 24 */
165 2, /* 25 */
166 2, /* 26 */
167 0, /* 27 */
168 0, /* 28 */
169 0, /* 29 */
170 0, /* 30 */
171 0, /* 31 */
172 0, /* 32 */
173 0, /* 33 */
174 0, /* 34 */
175 4 /* 35 */
176};
177
178/*
179
180*/
181
182int16_t pat[MAXPAT][16] = { /* configuration pattern elements */
183
184 {0x0000, 0x0000, 0x0000, 0x0000, /* 1 */
185 0x0080, 0x0180, 0x0080, 0x0080,
186 0x0080, 0x0080, 0x0080, 0x01C0,
187 0x0000, 0x0000, 0x0000, 0x0000},
188
189 {0x0000, 0x0000, 0x0000, 0x0000, /* 2 */
190 0x03C0, 0x0420, 0x0020, 0x0020,
191 0x03C0, 0x0400, 0x0400, 0x07E0,
192 0x0000, 0x0000, 0x0000, 0x0000},
193
194 {0x0000, 0x0000, 0x0000, 0x0000, /* 3 */
195 0x03C0, 0x0420, 0x0020, 0x01C0,
196 0x0020, 0x0020, 0x0420, 0x03C0,
197 0x0000, 0x0000, 0x0000, 0x0000},
198
199 {0x0000, 0x0000, 0x0000, 0x0000, /* 4 */
200 0x0040, 0x00C0, 0x0140, 0x0240,
201 0x0440, 0x07E0, 0x0040, 0x0040,
202 0x0000, 0x0000, 0x0000, 0x0000},
203
204 {0x0000, 0x0000, 0x0000, 0x0000, /* 5 */
205 0x03C0, 0x0200, 0x0200, 0x03C0,
206 0x0020, 0x0020, 0x0420, 0x03C0,
207 0x0000, 0x0000, 0x0000, 0x0000},
208
209 {0x0000, 0x0000, 0x0000, 0x0000, /* 6 */
210 0x03C0, 0x0400, 0x0400, 0x07C0,
211 0x0420, 0x0420, 0x0420, 0x03C0,
212 0x0000, 0x0000, 0x0000, 0x0000},
213
214 {0x0000, 0x03C0, 0x07E0, 0x0FF0, /* 7 */
215 0x1FF8, 0x1FF8, 0x3FFC, 0x3FFC,
216 0x7FFE, 0x7FFE, 0x7FFE, 0xFFFF,
217 0xFFFF, 0xFFFF, 0x0000, 0x0000},
218
219 {0x0000, 0x0000, 0xFFFF, 0xFFFF, /* 8 */
220 0xFFFF, 0x7FFE, 0x7FFE, 0x7FFE,
221 0x3FFC, 0x3FFC, 0x1FF8, 0x1FF8,
222 0x0FF0, 0x07E0, 0x03C0, 0x0000},
223
224 {0x3800, 0x3F00, 0x3FC0, 0x3FF0, /* 9 */
225 0x3FF8, 0x3FFC, 0x3FFE, 0x3FFE,
226 0x3FFE, 0x3FFE, 0x3FFC, 0x3FF8,
227 0x3FF0, 0x3FC0, 0x3F00, 0x3800},
228
229 {0x001C, 0x00FC, 0x03FC, 0x0FFC, /* 10 */
230 0x1FFC, 0x3FFC, 0x7FFC, 0x7FFC,
231 0x7FFC, 0x7FFC, 0x3FFC, 0x1FFC,
232 0x0FFC, 0x03FC, 0x00FC, 0x001C},
233/*
234
235*/
236 {0x0000, 0x0000, 0x0000, 0x0000, /* 11 */
237 0x0080, 0x0180, 0x0080, 0x0000,
238 0x0000, 0x0000, 0x0000, 0x01C0,
239 0x0000, 0x0000, 0x0000, 0x0000},
240
241 {0x0000, 0x0000, 0x0000, 0x0000, /* 12 */
242 0x03C0, 0x0420, 0x0020, 0x0000,
243 0x03C0, 0x0400, 0x0000, 0x07E0,
244 0x0000, 0x0000, 0x0000, 0x0000},
245
246 {0x0000, 0x0000, 0x0000, 0x0000, /* 13 */
247 0x03C0, 0x0420, 0x0020, 0x01C0,
248 0x0020, 0x0000, 0x0420, 0x03C0,
249 0x0000, 0x0000, 0x0000, 0x0000},
250
251 {0x0000, 0x0000, 0x0000, 0x0000, /* 14 */
252 0x0000, 0x0000, 0x0000, 0x0000,
253 0x0000, 0x0000, 0x0000, 0x0000,
254 0x0000, 0x0000, 0x0000, 0x0000},
255
256 {0x0000, 0x07E0, 0x1FF8, 0x3FFC, /* 15 */
257 0x7FFE, 0x7FFE, 0xFFFF, 0xFFFF,
258 0xFFFF, 0xFFFF, 0x7FFE, 0x7FFE,
259 0x3FFC, 0x1FF8, 0x07E0, 0x0000},
260
261 {0x0000, 0x7FFE, 0x7FFE, 0x7FFE, /* 16 */
262 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,
263 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,
264 0x7FFE, 0x7FFE, 0x7FFE, 0x0000},
265
266 {0x0000, 0x0000, 0x0000, 0x0000, /* 17 */
267 0x03C0, 0x0420, 0x0420, 0x0420,
268 0x07E0, 0x0420, 0x0420, 0x0420,
269 0x0000, 0x0000, 0x0000, 0x0000},
270
271 {0x0000, 0x0000, 0x0000, 0x0000, /* 18 */
272 0x07C0, 0x0220, 0x0220, 0x03C0,
273 0x0220, 0x0220, 0x0220, 0x07C0,
274 0x0000, 0x0000, 0x0000, 0x0000},
275
276 {0x0000, 0x0000, 0x0000, 0x0000, /* 19 */
277 0x0000, 0x0000, 0x0000, 0x007F,
278 0x00FF, 0x01C0, 0x0180, 0x0180,
279 0x0180, 0x0180, 0x0180, 0x0180},
280
281 {0x0180, 0x0180, 0x0180, 0x0180, /* 20 */
282 0x0180, 0x0180, 0x0380, 0xFF00,
283 0xFE00, 0x0000, 0x0000, 0x0000,
284 0x0000, 0x0000, 0x0000, 0x0000},
285/*
286
287*/
288 {0x0000, 0x0000, 0x0000, 0x0000, /* 21 */
289 0x0000, 0x0000, 0x0000, 0xFE00,
290 0xFF00, 0x0380, 0x0180, 0x0180,
291 0x0180, 0x0180, 0x0180, 0x0180},
292
293 {0x0180, 0x0180, 0x0180, 0x0180, /* 22 */
294 0x0180, 0x0180, 0x01C0, 0x00FF,
295 0x007F, 0x0000, 0x0000, 0x0000,
296 0x0000, 0x0000, 0x0000, 0x0000},
297
298 {0x0000, 0x0000, 0x0000, 0x0000, /* 23 */
299 0x0000, 0x0000, 0x0000, 0xFFFF,
300 0xFFFF, 0x0000, 0x0000, 0x0000,
301 0x0000, 0x0000, 0x0000, 0x0000},
302
303 {0x0180, 0x0180, 0x0180, 0x0180, /* 24 */
304 0x0180, 0x0180, 0x0180, 0x0180,
305 0x0180, 0x0180, 0x0180, 0x0180,
306 0x0180, 0x0180, 0x0180, 0x0180},
307
308 {0x0003, 0x0007, 0x000E, 0x001C, /* 25 */
309 0x0038, 0x0070, 0x00E0, 0x01C0,
310 0x0380, 0x0700, 0x0E00, 0x1C00,
311 0x3800, 0x7000, 0xE000, 0xC000},
312
313 {0xC000, 0xE000, 0x7000, 0x3800, /* 26 */
314 0x1C00, 0x0E00, 0x0700, 0x0380,
315 0x01C0, 0x00E0, 0x0070, 0x0038,
316 0x001C, 0x000E, 0x0007, 0x0003},
317
318 {0x0000, 0x0000, 0x0000, 0x03C0, /* 27 */
319 0x07E0, 0x0E70, 0x0C30, 0x0C30,
320 0x0FF0, 0x0FF0, 0x0C30, 0x0C30,
321 0x0C30, 0x0000, 0x0000, 0x0000},
322
323 {0x0000, 0x0000, 0x0000, 0x0FE0, /* 28 */
324 0x0FF0, 0x0630, 0x0630, 0x07E0,
325 0x07E0, 0x0630, 0x0630, 0x0FF0,
326 0x0FE0, 0x0000, 0x0000, 0x0000},
327
328 {0x0000, 0x0000, 0x0000, 0x0080, /* 29 */
329 0x0180, 0x0380, 0x0180, 0x0180,
330 0x0180, 0x0180, 0x0180, 0x03C0,
331 0x03C0, 0x0000, 0x0000, 0x0000},
332
333 {0x0000, 0x0000, 0x0000, 0x03C0, /* 30 */
334 0x07E0, 0x0660, 0x0060, 0x03E0,
335 0x07C0, 0x0600, 0x0600, 0x07E0,
336 0x07E0, 0x0000, 0x0000, 0x0000},
337/*
338
339*/
340 {0x0000, 0x0000, 0x0000, 0x03C0, /* 31 */
341 0x07E0, 0x0660, 0x0060, 0x01C0,
342 0x01C0, 0x0060, 0x0660, 0x07E0,
343 0x03C0, 0x0000, 0x0000, 0x0000},
344
345 {0x0000, 0x0000, 0x0000, 0x0000, /* 32 */
346 0x0060, 0x0660, 0x0660, 0x0660,
347 0x07F0, 0x07F0, 0x0060, 0x0060,
348 0x0060, 0x0000, 0x0000, 0x0000},
349
350 {0x0000, 0x0000, 0x0000, 0x07C0, /* 33 */
351 0x07C0, 0x0600, 0x0600, 0x07C0,
352 0x07E0, 0x0060, 0x0060, 0x07E0,
353 0x03C0, 0x0000, 0x0000, 0x0000},
354
355 {0x0000, 0x0000, 0x0000, 0x03C0, /* 34 */
356 0x07C0, 0x0600, 0x0600, 0x07C0,
357 0x07E0, 0x0660, 0x0660, 0x07E0,
358 0x03C0, 0x0000, 0x0000, 0x0000},
359
360 {0x0000, 0x7FFE, 0x7FFE, 0x7FFE, /* 35 */
361 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,
362 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,
363 0x7FFE, 0x7FFE, 0x7FFE, 0x0000}
364};
365
366/*
367
368*/
369
370/*
371 =============================================================================
372 putpat() -- display a pattern in a configuration diagram
373 =============================================================================
374*/
375
376void putpat(int16_t pn, int16_t px, int16_t py, int16_t patc)
377{
378 register int16_t xp, yp, pr, pc;
379 register uint16_t pw;
380
381 if (v_regs[5] & 0x0180)
382 vbank(0);
383
384 for (pr = 0; pr < 16; pr++) {
385
386 pw = pat[pn - 1][pr];
387 yp = py - 8 + pr + TopEdge;
388
389 if ((yp GE TopEdge) AND
390 (yp LE BotEdge)) {
391
392 for (pc = 0; pc < 16; pc++) {
393
394 xp = px - 8 + pc + LftEdge;
395
396 if ((xp GE LftEdge) AND
397 (xp LE RgtEdge) AND
398 (pw & (1 << (15 - pc)))) {
399
400 vputp(idoct, xp, yp, patc);
401 }
402 }
403 }
404 }
405}
406
407/*
408
409*/
410
411/*
412 =============================================================================
413 dispcfg() -- display a configuration on the screen
414 =============================================================================
415*/
416
417void dispcfg(int16_t nn)
418{
419 register int16_t i, np;
420 int16_t idbuf[8];
421 register int8_t *cfgdat, *cfp;
422
423 if (v_regs[5] & 0x0180)
424 vbank(0);
425
426 tsplot4(instob, 64, CFBX18, wcmrow, 4 + wcmcol, "Config #", 14);
427
428 sprintf(idbuf, "%02d", nn);
429 tsplot4(instob, 64, CFBX18, wcmrow, 12 + wcmcol, idbuf, 14);
430
431 cfgdat = cfgptr[nn];
432
433 for (i = 0; i < 64; i++) {
434
435 cfp = cfgdat + (i << 1) + i;
436 np = *cfp;
437
438 if (np)
439 putpat(np, *(cfp + 1), *(cfp + 2), patctab[np - 1]);
440 }
441}
442
443/*
444
445*/
446
447/*
448 =============================================================================
449 showcfg() -- display a configuration in the configuration window
450 =============================================================================
451*/
452
453void showcfg(int16_t nn)
454{
455 LftEdge = LFT_EDGE;
456 TopEdge = TOP_EDGE;
457 RgtEdge = RGT_EDGE;
458 BotEdge = BOT_EDGE;
459 wcmrow = 17;
460 wcmcol = 0;
461
462 if (v_regs[5] & 0x0180)
463 vbank(0);
464
465 vbfill4(instob, 128, LftEdge, TopEdge, RgtEdge, BotEdge,
466 exp_c(CBBX18));
467
468 dispcfg(nn);
469}
470
471/*
472
473*/
474
475/*
476 =============================================================================
477 dispws() -- display a waveshape
478 =============================================================================
479*/
480
481void dispws(int16_t ws)
482{
483 register uint16_t *wsp;
484 register int16_t i, x, y;
485 int8_t buf[64];
486
487 if (ws GE NUMWAVS) /* number must be valid */
488 return;
489
490 wsp = wslib[ws].final; /* point at the data */
491
492 /* label the waveshape */
493
494 sprintf(buf, "Waveshape #%02d", ws + 1);
495 tsplot4(instob, 64, CFBX21, wcmrow, wcmcol + 2, buf, 14);
496
497 for (i = 1; i < 254; i++) { /* draw the points */
498
499 x = LftEdge + (i >> 1);
500 y = BotEdge - ((wsp[i] ^ 0x8000) / 676);
501
502 idpoint(x, y, WSBFC);
503 }
504}
505
506/*
507
508*/
509
510/*
511 =============================================================================
512 wcmenu() -- setup the display for a waveshape or configuration menu
513 =============================================================================
514*/
515
516void wcmenu(int16_t wc)
517{
518 register int16_t i;
519 int8_t buf[32];
520
521 wcflag = wc; /* set menu page type */
522
523 if (v_regs[5] & 0x0180)
524 vbank(0);
525
526 vbfill4(instob, 128, 0, 0, 511, 349, exp_c(CBBX18));
527
528 point = idpoint;
529
530 lseg( 0, 0, 511, 0, CBORD); /* outside border */
531 lseg(511, 0, 511, 349, CBORD);
532 lseg(511, 349, 0, 349, CBORD);
533 lseg( 0, 349, 0, 0, CBORD);
534
535 lseg( 0, 112, 511, 112, CBORD); /* horizontal lines */
536 lseg( 0, 224, 511, 224, CBORD);
537 lseg( 0, 335, 511, 335, CBORD);
538
539 lseg(128, 0, 128, 335, CBORD); /* vertical lines */
540 lseg(256, 0, 256, 335, CBORD);
541 lseg(384, 0, 384, 335, CBORD);
542
543 ebflag = FALSE; /* clear edit buffer */
544 memset(ebuf, '\0', sizeof ebuf);
545
546 curslim = RTOY(24)-1; /* text cursor in bottom row */
547
548 x_key = nokey;
549 csbp = idmbox;
550
551/*
552
553*/
554 if (wc) { /* waveshape */
555
556 for (i = 0; i < 12; i++) { /* fill in waveshapes */
557
558 LftEdge = ((i % 4) * 128) + 1;
559 BotEdge = ((i / 4) * 112) + 111;
560 wcmrow = (i / 4) << 3;
561 wcmcol = (i % 4) << 4;
562
563 dispws(i + (wcpage * 12));
564 }
565
566 /* label data entry area and show page number */
567
568 sprintf(buf, "Waveshape A%02d B%02d Page",
569 1 + vbufs[curvce].idhwsb,
570 1 + vbufs[curvce].idhwsa);
571
572 tsplot4(instob, 64, CFBX18, 24, 1, buf, 14);
573
574 tsplot4(instob, 64, wcpage ? CFBX18 : ID_ENTRY,
575 24, 26, "1", 14);
576
577 tsplot4(instob, 64, wcpage ? ID_ENTRY : CFBX18,
578 24, 28, "2", 14);
579
580 curfet = id_fet2;
581 settc(24, 12);
582/*
583
584*/
585 } else { /* configuration */
586
587 for (i = 0; i < 12; i++) { /* fill in configurations */
588
589 LftEdge = ((i % 4) * 128) + 1;
590 TopEdge = ((i / 4) * 112) + 1;
591 RgtEdge = LftEdge + 128;
592 BotEdge = TopEdge + 112;
593 wcmrow = (i / 4) << 3;
594 wcmcol = (i % 4) << 4;
595
596 dispcfg(i);
597 }
598
599 /* label data entry area */
600
601 tsplot4(instob, 64, CFBX18, 24, 1, "Configuration #", 14);
602
603 sprintf(buf, "%02d", vbufs[curvce].idhcfg);
604 tsplot4(instob, 64, CFBX18, 24, 16, buf, 14);
605
606 curfet = id_fet3;
607 settc(24, 16);
608 }
609}
610
611/*
612
613*/
614
615/*
616 =============================================================================
617 imfnbox() -- instrument menu box hit processor
618 =============================================================================
619*/
620
621int16_t imfnbox(int16_t n)
622{
623 register int16_t row, col;
624
625 row = hitcy / 14;
626 col = hitcx >> 3;
627
628 if (hitbox EQ 12) {
629
630 if (wcflag) { /* waveshape */
631
632 if (col < 10) { /* take down menu */
633
634 reshowi();
635 settc(17, wmcsel ? 61 : 57);
636
637 } else if ((col GE 19) AND (col LE 22)) {
638
639 /* toggle waveshape display page */
640
641 if (wcpage)
642 wcpage = 0; /* to page 1 */
643 else
644 wcpage = 1; /* to page 2 */
645
646 wcmenu(1);
647 return(SUCCESS);
648
649 } else { /* data entry */
650
651 wmctag = FALSE;
652 enterit();
653
654 if (wmctag)
655 modinst();
656
657 return(SUCCESS);
658 }
659/*
660
661*/
662 } else { /* configuration */
663
664 if (col < 14) { /* take down menu */
665
666 reshowi();
667 settc(17, 12);
668
669 } else { /* data entry */
670
671 wmctag = FALSE;
672 enterit();
673
674 if (wmctag)
675 modinst();
676
677 return(SUCCESS);
678 }
679 }
680 }
681
682 return(FAILURE);
683}
Note: See TracBrowser for help on using the repository browser.