ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
pia.h
Go to the documentation of this file.
1#ifndef __UGBC_PIA__
2#define __UGBC_PIA__
3
4/*****************************************************************************
5 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
6 *****************************************************************************
7 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 *----------------------------------------------------------------------------
21 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
22 * (la "Licenza"); è proibito usare questo file se non in conformità alla
23 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
24 *
25 * http://www.apache.org/licenses/LICENSE-2.0
26 *
27 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
28 * il software distribuito nei termini della Licenza è distribuito
29 * "COSì COM'è", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
30 * implicite. Consultare la Licenza per il testo specifico che regola le
31 * autorizzazioni e le limitazioni previste dalla medesima.
32 ****************************************************************************/
33
34#include "../ugbc.h"
35
36#if defined(__d32__) || defined(__d64__) || defined(__d32b__) || defined(__d64b__)
37
38 #define KEY_NONE 255
39 #define KEY_0 0
40 #define KEY_8 1
41 #define KEY_AT 2
42 #define KEY_H 3
43 #define KEY_P 4
44 #define KEY_X 5
45 #define KEY_RETURN 6
46
47 #define KEY_1 8
48 #define KEY_9 9
49 #define KEY_A 10
50 #define KEY_I 11
51 #define KEY_Q 12
52 #define KEY_Y 13
53 #define KEY_CLEAR 14
54
55 #define KEY_2 16
56 #define KEY_ASTERISK 17
57 #define KEY_B 18
58 #define KEY_J 19
59 #define KEY_R 20
60 #define KEY_Z 21
61
62 #define KEY_3 24
63 #define KEY_COMMA 25
64 #define KEY_C 26
65 #define KEY_K 27
66 #define KEY_S 28
67 #define KEY_UP 29
68
69 #define KEY_4 32
70 #define KEY_MINUS 33
71 #define KEY_D 34
72 #define KEY_L 35
73 #define KEY_T 36
74 #define KEY_DOWN 37
75
76 #define KEY_5 40
77
78 #define KEY_E 42
79 #define KEY_M 43
80 #define KEY_U 44
81 #define KEY_LEFT 45
82
83 #define KEY_6 48
84 #define KEY_SLASH 49
85 #define KEY_F 50
86 #define KEY_N 51
87 #define KEY_V 52
88 #define KEY_RIGHT 53
89
90 #define KEY_7 56
91
92 #define KEY_G 58
93 #define KEY_O 59
94 #define KEY_W 60
95 #define KEY_SPACE 61
96
97 #define KEY_SHIFT 63
98
99 #define KEY_COLON 0
100 #define KEY_COMMODORE 0
101 #define KEY_CONTROL 0
102 #define KEY_CRSR_LEFT_RIGHT 0
103 #define KEY_CRSR_UP_DOWN 0
104 #define KEY_DELETE 0
105 #define KEY_EQUAL 0
106 #define KEY_F1 0
107 #define KEY_F2 0
108 #define KEY_F3 0
109 #define KEY_F4 0
110 #define KEY_F5 0
111 #define KEY_F6 0
112 #define KEY_F7 0
113 #define KEY_F8 0
114 #define KEY_HOME 0
115 #define KEY_INSERT 0
116 #define KEY_LEFT_ARROW 0
117 #define KEY_LEFT_SHIFT 0
118 #define KEY_PERIOD 0
119 #define KEY_PLUS 0
120 #define KEY_POUND 0
121 #define KEY_RIGHT_SHIFT 0
122 #define KEY_RUNSTOP 0
123 #define KEY_SEMICOLON 0
124 #define KEY_UP_ARROW 0
125 #define KEY_BACKSLASH 0
126 #define KEY_SQUARE_OPEN 0
127 #define KEY_SQUARE_CLOSED 0
128 #define KEY_SEMICOMMA 0
129 #define KEY_QUOTE 0
130 #define KEY_APIX 0
131 #define KEY_DEAD 0
132 #define KEY_CTRL 0
133 #define KEY_GRAPH 0
134 #define KEY_CAPS 0
135 #define KEY_CODE 0
136 #define KEY_ESC 0
137 #define KEY_TAB 0
138 #define KEY_STOP 0
139 #define KEY_BS 0
140 #define KEY_SELECT 0
141 #define KEY_RET 0
142 #define KEY_INS 0
143 #define KEY_DEL 0
144 #define KEY_DIVISION 0
145
146 #define KEYBOARD_CONFIG_DEFAULT_SYNC 1
147
148 #define JOY_COUNT 2
149 #define JOYSTICK_0 0
150 #define JOYSTICK_1 1
151 #define JOYSTICK_COUNT 2
152
153 #define JOY_UP 0
154 #define JOY_DOWN 1
155 #define JOY_LEFT 2
156 #define JOY_RIGHT 3
157 #define JOY_FIRE 5
158
159 #define INPUT_DEFAULT_SEPARATOR ','
160 #define INPUT_DEFAULT_SIZE 32
161 #define INPUT_DEFAULT_CURSOR 96
162 #define INPUT_DEFAULT_RATE 16
163
164#elif defined(__coco__) || defined(__cocob__)
165
166 #define KEY_NONE 255
167 #define KEY_AT 0
168 #define KEY_H 1
169 #define KEY_P 2
170 #define KEY_X 3
171 #define KEY_0 4
172 #define KEY_8 6
173 #define KEY_RETURN 7
174
175 #define KEY_A 8
176 #define KEY_I 9
177 #define KEY_Q 10
178 #define KEY_Y 11
179 #define KEY_1 12
180 #define KEY_9 13
181
182 #define KEY_B 16
183 #define KEY_J 17
184 #define KEY_R 18
185 #define KEY_Z 19
186 #define KEY_2 20
187 #define KEY_COLON 21
188
189 #define KEY_C 24
190 #define KEY_K 25
191 #define KEY_S 26
192 #define KEY_UP 27
193 #define KEY_3 28
194 #define KEY_SEMICOMMA 29
195
196 #define KEY_D 32
197 #define KEY_L 33
198 #define KEY_T 34
199 #define KEY_DOWN 35
200 #define KEY_4 36
201 #define KEY_COMMA 37
202
203 #define KEY_E 40
204 #define KEY_M 41
205 #define KEY_U 42
206 #define KEY_BS 43
207 #define KEY_LEFT 43
208 #define KEY_5 44
209 #define KEY_MINUS 45
210
211 #define KEY_F 48
212 #define KEY_N 49
213 #define KEY_V 50
214 #define KEY_RIGHT 51
215 #define KEY_6 52
216 #define KEY_PERIOD 53
217
218 #define KEY_G 56
219 #define KEY_O 57
220 #define KEY_W 58
221 #define KEY_SPACE 59
222 #define KEY_7 60
223 #define KEY_SLASH 61
224
225 #define KEY_ASTERISK 0
226 #define KEY_CLEAR 0
227 #define KEY_COMMODORE 0
228 #define KEY_CONTROL 0
229 #define KEY_CRSR_LEFT_RIGHT 0
230 #define KEY_CRSR_UP_DOWN 0
231 #define KEY_EQUAL 0
232 #define KEY_F1 0
233 #define KEY_F2 0
234 #define KEY_F3 0
235 #define KEY_F4 0
236 #define KEY_F5 0
237 #define KEY_F6 0
238 #define KEY_F7 0
239 #define KEY_F8 0
240 #define KEY_HOME 0
241 #define KEY_INSERT 0
242 #define KEY_LEFT_ARROW 0
243 #define KEY_LEFT_SHIFT 0
244 #define KEY_PLUS 0
245 #define KEY_POUND 0
246 #define KEY_RIGHT_SHIFT 0
247 #define KEY_RUNSTOP 0
248 #define KEY_UP_ARROW 0
249 #define KEY_BACKSLASH 0
250 #define KEY_SQUARE_OPEN 0
251 #define KEY_SQUARE_CLOSED 0
252 #define KEY_QUOTE 0
253 #define KEY_APIX 0
254 #define KEY_DEAD 0
255 #define KEY_SHIFT 0
256 #define KEY_CTRL 0
257 #define KEY_GRAPH 0
258 #define KEY_CAPS 0
259 #define KEY_CODE 0
260 #define KEY_ESC 0
261 #define KEY_TAB 0
262 #define KEY_STOP 0
263 #define KEY_SELECT 0
264 #define KEY_RET 0
265 #define KEY_INS 0
266 #define KEY_DEL 0
267 #define KEY_DIVISION 0
268 #define KEY_DELETE 0
269 #define KEY_SEMICOLON 0
270
271 #define KEYBOARD_CONFIG_DEFAULT_SYNC 1
272
273 #define JOY_COUNT 2
274 #define JOYSTICK_0 0
275 #define JOYSTICK_1 1
276 #define JOYSTICK_COUNT 2
277
278 #define JOY_UP 0
279 #define JOY_DOWN 1
280 #define JOY_LEFT 2
281 #define JOY_RIGHT 3
282 #define JOY_FIRE 5
283
284 #define JOYSTICK_CONFIG_DEFAULT_SYNC 1
285
286 #define INPUT_DEFAULT_SEPARATOR ','
287 #define INPUT_DEFAULT_SIZE 32
288 #define INPUT_DEFAULT_CURSOR 32
289 #define INPUT_DEFAULT_RATE 16
290
291#elif defined(__coco3__) || defined(__coco3b__)
292
293 #define KEY_NONE 255
294 #define KEY_AT 0
295 #define KEY_H 1
296 #define KEY_P 2
297 #define KEY_X 3
298 #define KEY_0 4
299 #define KEY_8 6
300 #define KEY_RETURN 7
301
302 #define KEY_A 8
303 #define KEY_I 9
304 #define KEY_Q 10
305 #define KEY_Y 11
306 #define KEY_1 12
307 #define KEY_9 13
308
309 #define KEY_B 16
310 #define KEY_J 17
311 #define KEY_R 18
312 #define KEY_Z 19
313 #define KEY_2 20
314 #define KEY_COLON 21
315
316 #define KEY_C 24
317 #define KEY_K 25
318 #define KEY_S 26
319 #define KEY_UP 27
320 #define KEY_3 28
321 #define KEY_SEMICOMMA 29
322
323 #define KEY_D 32
324 #define KEY_L 33
325 #define KEY_T 34
326 #define KEY_DOWN 35
327 #define KEY_4 36
328 #define KEY_COMMA 37
329
330 #define KEY_E 40
331 #define KEY_M 41
332 #define KEY_U 42
333 #define KEY_BS 43
334 #define KEY_LEFT 43
335 #define KEY_5 44
336 #define KEY_MINUS 45
337
338 #define KEY_F 48
339 #define KEY_N 49
340 #define KEY_V 50
341 #define KEY_RIGHT 51
342 #define KEY_6 52
343 #define KEY_PERIOD 53
344
345 #define KEY_G 56
346 #define KEY_O 57
347 #define KEY_W 58
348 #define KEY_SPACE 59
349 #define KEY_7 60
350 #define KEY_SLASH 61
351
352 #define KEY_ASTERISK 0
353 #define KEY_CLEAR 0
354 #define KEY_COMMODORE 0
355 #define KEY_CONTROL 0
356 #define KEY_CRSR_LEFT_RIGHT 0
357 #define KEY_CRSR_UP_DOWN 0
358 #define KEY_EQUAL 0
359 #define KEY_F1 0
360 #define KEY_F2 0
361 #define KEY_F3 0
362 #define KEY_F4 0
363 #define KEY_F5 0
364 #define KEY_F6 0
365 #define KEY_F7 0
366 #define KEY_F8 0
367 #define KEY_HOME 0
368 #define KEY_INSERT 0
369 #define KEY_LEFT_ARROW 0
370 #define KEY_LEFT_SHIFT 0
371 #define KEY_PLUS 0
372 #define KEY_POUND 0
373 #define KEY_RIGHT_SHIFT 0
374 #define KEY_RUNSTOP 0
375 #define KEY_UP_ARROW 0
376 #define KEY_BACKSLASH 0
377 #define KEY_SQUARE_OPEN 0
378 #define KEY_SQUARE_CLOSED 0
379 #define KEY_QUOTE 0
380 #define KEY_APIX 0
381 #define KEY_DEAD 0
382 #define KEY_SHIFT 0
383 #define KEY_CTRL 0
384 #define KEY_GRAPH 0
385 #define KEY_CAPS 0
386 #define KEY_CODE 0
387 #define KEY_ESC 0
388 #define KEY_TAB 0
389 #define KEY_STOP 0
390 #define KEY_SELECT 0
391 #define KEY_RET 0
392 #define KEY_INS 0
393 #define KEY_DEL 0
394 #define KEY_DIVISION 0
395 #define KEY_DELETE 0
396 #define KEY_SEMICOLON 0
397
398 #define KEYBOARD_CONFIG_DEFAULT_SYNC 1
399
400 #define JOY_COUNT 2
401 #define JOYSTICK_0 0
402 #define JOYSTICK_1 1
403 #define JOYSTICK_COUNT 2
404
405 #define JOY_UP 0
406 #define JOY_DOWN 1
407 #define JOY_LEFT 2
408 #define JOY_RIGHT 3
409 #define JOY_FIRE 5
410
411 #define INPUT_DEFAULT_SEPARATOR ','
412 #define INPUT_DEFAULT_SIZE 32
413 #define INPUT_DEFAULT_CURSOR 127
414 #define INPUT_DEFAULT_RATE 16
415
416#endif
417
418#define KEY2_NONE 0
419#define KEY2_AT '@'
420#define KEY2_H 'H'
421#define KEY2_P 'P'
422#define KEY2_X 'X'
423#define KEY2_0 '0'
424#define KEY2_8 '8'
425#define KEY2_RETURN 13
426
427#define KEY2_A 'A'
428#define KEY2_I 'I'
429#define KEY2_Q 'Q'
430#define KEY2_Y 'Y'
431#define KEY2_1 '1'
432#define KEY2_9 '9'
433
434#define KEY2_B '8'
435#define KEY2_J 'J'
436#define KEY2_R 'R'
437#define KEY2_Z 'Z'
438#define KEY2_2 '2'
439#define KEY2_COLON ','
440
441#define KEY2_C 'C'
442#define KEY2_K 'K'
443#define KEY2_S 'S'
444#define KEY2_UP 0xfa
445#define KEY2_3 '3'
446#define KEY2_SEMICOMMA ';'
447
448#define KEY2_D 'D'
449#define KEY2_L 'L'
450#define KEY2_T 'T'
451#define KEY2_DOWN 0xfb
452#define KEY2_4 '4'
453#define KEY2_COMMA ','
454
455#define KEY2_E 'E'
456#define KEY2_M 'M'
457#define KEY2_U 'U'
458#define KEY2_BS 0x08
459#define KEY2_LEFT 0xfc
460#define KEY2_5 '5'
461#define KEY2_MINUS '-'
462
463#define KEY2_F 'F'
464#define KEY2_N 'N'
465#define KEY2_V 'V'
466#define KEY2_RIGHT 0xfd
467#define KEY2_6 '6'
468#define KEY2_PERIOD '.'
469
470#define KEY2_G 'G'
471#define KEY2_O 'O'
472#define KEY2_W 'W'
473#define KEY2_SPACE 32
474#define KEY2_7 '7'
475#define KEY2_SLASH '/'
476
477#define KEY2_ASTERISK '*'
478#define KEY2_CLEAR 0
479#define KEY2_COMMODORE 0
480#define KEY2_CONTROL 0
481#define KEY2_CRSR_LEFT_RIGHT 0
482#define KEY2_CRSR_UP_DOWN 0
483#define KEY2_EQUAL 0
484#define KEY2_F1 0
485#define KEY2_F2 0
486#define KEY2_F3 0
487#define KEY2_F4 0
488#define KEY2_F5 0
489#define KEY2_F6 0
490#define KEY2_F7 0
491#define KEY2_F8 0
492#define KEY2_HOME 0
493#define KEY2_INSERT 0
494#define KEY2_LEFT_ARROW 0
495#define KEY2_LEFT_SHIFT 0
496#define KEY2_PLUS 0
497#define KEY2_POUND 0
498#define KEY2_RIGHT_SHIFT 0
499#define KEY2_RUNSTOP 0
500#define KEY2_UP_ARROW 0
501#define KEY2_BACKSLASH 0
502#define KEY2_SQUARE_OPEN 0
503#define KEY2_SQUARE_CLOSED 0
504#define KEY2_QUOTE 0
505#define KEY2_APIX 0
506#define KEY2_DEAD 0
507#define KEY2_SHIFT 0
508#define KEY2_CTRL 0
509#define KEY2_GRAPH 0
510#define KEY2_CAPS 0
511#define KEY2_CODE 0
512#define KEY2_ESC 0
513#define KEY2_TAB 0
514#define KEY2_STOP 0
515#define KEY2_SELECT 0
516#define KEY2_RET 0
517#define KEY2_INS 0
518#define KEY2_DEL 0
519#define KEY2_DIVISION 0
520#define KEY2_DELETE 0
521#define KEY2_SEMICOLON 0
522
523#define JOYSTICK_CONFIG_DEFAULT_SYNC 1
524
525void pia_wait_key( Environment * _environment, int _release );
526void pia_wait_fire( Environment * _environment, int _port, int _release );
527void pia_wait_fire_semivar( Environment * _environment, char * _port, int _release );
528void pia_wait_key_or_fire( Environment * _environment, int _port, int _release );
529void pia_wait_key_or_fire_semivar( Environment * _environment, char * _port, int _release );
530void pia_key_state( Environment * _environment, char *_scancode, char * _result );
531void pia_scancode( Environment * _environment, char * _scacode );
532void pia_asciicode( Environment * _environment, char * _asciicode );
533void pia_inkey( Environment * _environment, char * _key );
534void pia_key_pressed( Environment * _environment, char *_scancode, char * _result );
535
536void pia_scanshift( Environment * _environment, char * _shifts );
537void pia_keyshift( Environment * _environment, char * _shifts );
538void pia_clear_key( Environment * _environment );
539void pia_put_key( Environment * _environment, char *_string, char * _size );
540
541#endif
void pia_inkey(Environment *_environment, char *_key)
Definition pia.c:44
void pia_asciicode(Environment *_environment, char *_asciicode)
Definition pia.c:192
void pia_key_pressed(Environment *_environment, char *_scancode, char *_result)
Definition pia.c:209
void pia_wait_key(Environment *_environment, int _release)
Definition pia.c:62
void pia_scancode(Environment *_environment, char *_scacode)
Definition pia.c:175
void pia_scanshift(Environment *_environment, char *_shifts)
Definition pia.c:231
void pia_put_key(Environment *_environment, char *_string, char *_size)
Definition pia.c:264
void pia_key_state(Environment *_environment, char *_scancode, char *_result)
Definition pia.c:156
void pia_keyshift(Environment *_environment, char *_shifts)
Definition pia.c:237
void pia_wait_fire(Environment *_environment, int _port, int _release)
Definition pia.c:124
void pia_wait_fire_semivar(Environment *_environment, char *_port, int _release)
Definition pia.c:140
void pia_wait_key_or_fire_semivar(Environment *_environment, char *_port, int _release)
Definition pia.c:102
void pia_clear_key(Environment *_environment)
Definition pia.c:251
void pia_wait_key_or_fire(Environment *_environment, int _port, int _release)
Definition pia.c:80
struct _Environment Environment
Structure of compilation environment.