source: buchla-68k/ram/sqfield.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: 5.4 KB
Line 
1/*
2 =============================================================================
3 sqfield.c -- MIDAS-VII sequence display field functions
4 Version 9 -- 1989-11-16 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
8#define DEBUGIT 0
9
10#include "stddefs.h"
11#include "hwdefs.h"
12#include "graphdef.h"
13#include "vsdd.h"
14#include "fields.h"
15#include "curpak.h"
16#include "patch.h"
17#include "macros.h"
18
19#include "midas.h"
20#include "ptdisp.h"
21
22#include "memory.h"
23
24#if DEBUGIT
25extern short debugsw;
26
27short debugqf = 1;
28#endif
29
30extern void (*xy_up)(void);
31extern void (*xy_dn)(void);
32extern void (*premove)(void);
33extern void (*pstmove)(void);
34extern int16_t (*curtype)(void);
35
36extern void select(void);
37extern void nokey(void);
38extern int16_t nonf(int16_t k);
39extern int16_t stdctp5(void);
40extern void cxkstd(void);
41extern void cykstd(void);
42extern void stdmkey(void);
43extern void stddkey(int16_t k);
44extern void stopsm(void);
45extern void smxupd(void);
46extern void sqyupd(void);
47extern void postcm(void);
48
49extern int16_t astat;
50extern int16_t cmfirst;
51extern int16_t cmtype;
52extern int16_t curhold;
53extern int16_t curslin;
54extern int16_t cvtime;
55extern int16_t cvwait;
56extern int16_t ncvwait;
57extern int16_t sqdeflg;
58extern int16_t stccol;
59extern int16_t ss_ptsw;
60extern int16_t ss_sqsw;
61extern int16_t syrate;
62extern int16_t tvcwval;
63extern int16_t vcwval;
64
65extern int16_t crate1[];
66
67extern struct selbox *csbp;
68extern struct selbox sqboxes[];
69
70extern struct seqent seqbuf;
71extern struct seqent seqtab[];
72
73extern int8_t sqdebuf[];
74
75void sqxkey(void);
76void sqekey(void);
77void sqmkey(void);
78void sqdkey(int16_t k);
79
80extern void curset(struct curpak *s);
81extern void dcursq(void);
82extern void dsqlin(int8_t *buf, int16_t slin);
83
84/*
85
86*/
87
88struct curpak sq_flds = {
89
90 stdctp5, /* curtype */
91 nokey, /* premove */
92 postcm, /* pstmove */
93 cxkstd, /* cx_key */
94 cykstd, /* cy_key */
95 smxupd, /* cx_upd */
96 sqyupd, /* cy_upd */
97 stopsm, /* xy_up */
98 nokey, /* xy_dn */
99 sqxkey, /* x_key */
100 sqekey, /* e_key */
101 sqmkey, /* m_key */
102 sqdkey, /* d_key */
103 nonf, /* not_fld */
104 (struct fet *)NULL, /* curfet */
105 sqboxes, /* csbp */
106 crate1, /* cratex */
107 crate1, /* cratey */
108 CT_SMTH, /* cmtype */
109 CTOX(2), /* cxval */
110 RTOY(DATAROW) /* cyval */
111};
112
113/*
114
115*/
116
117/*
118 =============================================================================
119 sqmkey() -- M key processing for the sequence display
120 =============================================================================
121*/
122
123void sqmkey(void)
124{
125 register int16_t nc;
126
127 if (astat) {
128
129 if (stccol EQ 48) {
130
131 if (ss_ptsw EQ 0) {
132
133 (*xy_dn)(); /* handle KEY_DOWN functions */
134
135 (*premove)(); /* handle PRE-MOVE functions */
136
137 nc = (*curtype)(); /* get new CURSOR TYPE wanted */
138
139 cvtime = syrate;
140 ncvwait = curhold;
141
142 ss_sqsw = -1;
143 cmtype = nc;
144 cvwait = 1;
145 }
146
147 } else
148 stdmkey();
149
150 } else {
151
152 if (stccol EQ 48) {
153
154 ss_sqsw = 0;
155 cvwait = 1;
156 ncvwait = cvtime;
157 cmfirst = TRUE;
158
159 if (ss_ptsw EQ 0)
160 (*xy_up)();
161
162 (*pstmove)(); /* handle POST-MOVE functions */
163
164 } else
165 stdmkey();
166 }
167}
168
169/*
170
171*/
172
173/*
174 =============================================================================
175 sqekey() -- E key processing for the sequence display
176 =============================================================================
177*/
178
179void sqekey(void)
180{
181 register int16_t nc;
182
183 if (astat) {
184
185 if (stccol EQ 48) {
186
187 if (ss_ptsw EQ 0) {
188
189 (*xy_dn)(); /* handle KEY_DOWN functions */
190
191 (*premove)(); /* handle PRE-MOVE functions */
192
193 nc = (*curtype)(); /* get new CURSOR TYPE wanted */
194
195 cvtime = syrate;
196 ncvwait = curhold;
197
198 ss_sqsw = 1;
199 cmtype = nc;
200 cvwait = 1;
201 }
202
203 } else
204 select();
205
206 } else {
207
208 if (stccol EQ 48) {
209
210 ss_sqsw = 0;
211 cvwait = 1;
212 ncvwait = cvtime;
213 cmfirst = TRUE;
214
215 if (ss_ptsw EQ 0)
216 (*xy_up)();
217
218 (*pstmove)(); /* handle POST-MOVE functions */
219
220 } else
221 select();
222 }
223}
224
225/*
226
227*/
228
229/*
230 =============================================================================
231 sqxkey() -- delete key handler
232 =============================================================================
233*/
234
235void sqxkey(void)
236{
237 if (NOT astat)
238 return;
239
240 if (inrange(stccol, 2, 4)) {
241
242 memsetw(&seqbuf, 0, NSEQW);
243 memsetw(&seqtab[curslin], 0, NSEQW);
244 dsqlin(sqdebuf, curslin);
245 sqdeflg = TRUE;
246 dcursq();
247
248 } else if (inrange(stccol, 12, 22)) {
249
250 seqtab[curslin].seqact1 = 0;
251 seqtab[curslin].seqdat1 = 0;
252 memcpyw(&seqbuf, &seqtab[curslin], NSEQW);
253 dsqlin(sqdebuf, curslin);
254 sqdeflg = TRUE;
255 dcursq();
256
257 } else if (inrange(stccol, 24, 34)) {
258
259 seqtab[curslin].seqact2 = 0;
260 seqtab[curslin].seqdat2 = 0;
261 memcpyw(&seqbuf, &seqtab[curslin], NSEQW);
262 dsqlin(sqdebuf, curslin);
263 sqdeflg = TRUE;
264 dcursq();
265
266 } else if (inrange(stccol, 36, 46)) {
267
268 seqtab[curslin].seqact3 = 0;
269 seqtab[curslin].seqdat3 = 0;
270 memcpyw(&seqbuf, &seqtab[curslin], NSEQW);
271 dsqlin(sqdebuf, curslin);
272 sqdeflg = TRUE;
273 dcursq();
274 }
275}
276
277/*
278
279*/
280
281/*
282 =============================================================================
283 sqfield() -- setup field routines for the sequence editor
284 =============================================================================
285*/
286
287void sqfield(void)
288{
289
290#if DEBUGIT
291 if (debugsw AND debugqf)
292 printf("sqfield(): ENTRY\n");
293#endif
294
295 curset(&sq_flds);
296
297#if DEBUGIT
298 if (debugsw AND debugqf)
299 printf("sqfield(): EXIT\n");
300#endif
301
302}
Note: See TracBrowser for help on using the repository browser.