ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
ef936x.h
Go to the documentation of this file.
1#ifndef __UGBC_EF936X__
2#define __UGBC_EF936X__
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(__pc128op__) || defined(__to8__)
37
38 #define COLOR_BLACK 0
39 #define COLOR_WHITE 1
40 #define COLOR_DARK_RED 2 // RED
41 #define COLOR_RED 2
42 #define COLOR_CYAN 3
43 #define COLOR_VIOLET 4
44 #define COLOR_DARK_GREEN 5 // GREEN
45 #define COLOR_GREEN 5
46 #define COLOR_DARK_BLUE 6 // BLUE
47 #define COLOR_BLUE 6
48 #define COLOR_YELLOW 7
49 #define COLOR_ORANGE 8
50 #define COLOR_BROWN 9
51 #define COLOR_LIGHT_RED 10
52 #define COLOR_DARK_GREY 11
53 #define COLOR_GREY 12
54 #define COLOR_LIGHT_GREEN 13
55 #define COLOR_LIGHT_BLUE 14
56 #define COLOR_LIGHT_GREY 15
57 #define COLOR_MAGENTA COLOR_RED
58 #define COLOR_PURPLE COLOR_VIOLET
59 #define COLOR_LAVENDER COLOR_VIOLET
60 #define COLOR_GOLD COLOR_YELLOW
61 #define COLOR_TURQUOISE COLOR_LIGHT_BLUE
62 #define COLOR_TAN COLOR_BROWN
63 #define COLOR_YELLOW_GREEN COLOR_YELLOW
64 #define COLOR_OLIVE_GREEN COLOR_GREEN
65 #define COLOR_PINK COLOR_LIGHT_RED
66 #define COLOR_PEACH COLOR_PINK
67 #define COLOR_DARK_WHITE COLOR_GREY
68 #define COLOR_LIGHT_WHITE COLOR_WHITE
69 #define COLOR_COUNT 16
70
71#elif defined(__mo5__)
72
73 #define COLOR_BLACK 0
74 #define COLOR_DARK_RED 1 // RED
75 #define COLOR_RED 1
76 #define COLOR_DARK_GREEN 2 // GREEN
77 #define COLOR_GREEN 2
78 #define COLOR_YELLOW 3
79 #define COLOR_BLUE 4
80 #define COLOR_VIOLET 5
81 #define COLOR_CYAN 6
82 #define COLOR_DARK_WHITE 7 // WHITE
83 #define COLOR_WHITE 7
84 #define COLOR_GREY 8
85 #define COLOR_OLD_ROSE 9
86 #define COLOR_LIGHT_GREEN 10
87 #define COLOR_SAND 11
88 #define COLOR_SKY_BLUE 12
89 #define COLOR_LIGHT_MAGENTA 13
90 #define COLOR_LIGHT_CYAN 14
91 #define COLOR_ORANGE 15
92
93 #define COLOR_BROWN COLOR_SAND
94
95 #define COLOR_LIGHT_RED COLOR_OLD_ROSE
96 #define COLOR_DARK_GREY COLOR_GREY
97 #define COLOR_LIGHT_BLUE COLOR_SKY_BLUE
98 #define COLOR_LIGHT_GREY COLOR_GREY
99 #define COLOR_DARK_BLUE COLOR_BLUE
100 #define COLOR_PURPLE COLOR_VIOLET
101 #define COLOR_LAVENDER COLOR_VIOLET
102 #define COLOR_GOLD COLOR_YELLOW
103 #define COLOR_TURQUOISE COLOR_LIGHT_BLUE
104 #define COLOR_TAN COLOR_BROWN
105 #define COLOR_YELLOW_GREEN COLOR_YELLOW
106 #define COLOR_OLIVE_GREEN COLOR_GREEN
107 #define COLOR_PINK COLOR_LIGHT_RED
108 #define COLOR_PEACH COLOR_PINK
109 #define COLOR_MAGENTA COLOR_LIGHT_MAGENTA
110 #define COLOR_LIGHT_WHITE COLOR_WHITE
111
112 #define COLOR_COUNT 16
113
114#endif
115
116#define DEFAULT_PEN_COLOR COLOR_WHITE
117#define DEFAULT_PAPER_COLOR COLOR_BLACK
118
119#define BITMAP_MODE_40_COLUMN 0
120#define BITMAP_MODE_80_COLUMN 1
121#define BITMAP_MODE_BITMAP_4 2
122#define BITMAP_MODE_BITMAP_16 3
123#define BITMAP_MODE_PAGE 4
124
125#define BITMAP_MODE_DEFAULT BITMAP_MODE_BITMAP_4
126#define BITMAP_MODE_STANDARD BITMAP_MODE_DEFAULT
127
128#define SPRITE_COUNT 0
129#define SPRITE_WIDTH 0
130#define SPRITE_HEIGHT 0
131
132#define SPRITE_X_MIN 0
133#define SPRITE_Y_MIN 0
134#define SPRITE_X_MAX 0
135#define SPRITE_Y_MAX 0
136
137#define SCREEN_SPRITE_RATIO_X 100
138#define SCREEN_SPRITE_RATIO_Y 100
139#define SCREEN_BORDER_X 0
140#define SCREEN_BORDER_Y 0
141
142#define IMAGE_WIDTH_SIZE 2
143#define IMAGE_WIDTH_OFFSET 0
144#define IMAGE_HEIGHT_SIZE 1
145#define IMAGE_HEIGHT_OFFSET 2
146
147#define TEXT_COLUMNS_COUNT 40
148#define TEXT_ROWS_COUNT 25
149
150#define DOUBLE_BUFFER_PAGE_0 0
151#define DOUBLE_BUFFER_PAGE_1 1
152
153int ef936x_screen_mode_enable( Environment * _environment, ScreenMode * _screen_mode );
154
155void ef936x_initialization( Environment * _environment );
156void ef936x_finalization( Environment * _environment );
157
158void ef936x_back( Environment * _environment );
159void ef936x_background_color( Environment * _environment, int _index, int _background_color );
160void ef936x_background_color_semivars( Environment * _environment, int _index, char * _background_color );
161void ef936x_background_color_vars( Environment * _environment, char * _index, char * _background_color );
162void ef936x_background_color_get_vars( Environment * _environment, char * _index, char * _background_color );
163void ef936x_border_color( Environment * _environment, char * _border_color );
164void ef936x_collision( Environment * _environment, char * _sprite_mask, char * _result );
165void ef936x_hit( Environment * _environment, char * _sprite_mask, char * _result );
166void ef936x_next_raster( Environment * _environment );
167void ef936x_next_raster_at( Environment * _environment, char * _label, char * _positionlo, char * _positionhi );
168void ef936x_raster_at( Environment * _environment, char * _label, char * _positionlo, char * _positionhi );
169void ef936x_sprite_common_color( Environment * _environment, char * _index, char * _common_color );
170void ef936x_bitmap_enable( Environment * _environment, int _width, int _height, int _colors );
171void ef936x_bitmap_disable( Environment * _environment );
172void ef936x_bitmap_at( Environment * _environment, char * _address );
173void ef936x_colormap_at( Environment * _environment, char * _address );
174void ef936x_textmap_at( Environment * _environment, char * _address );
175void ef936x_tiles_at( Environment * _environment, char * _address );
176void ef936x_tilemap_enable( Environment * _environment, int _width, int _height, int _colors, int _tile_width, int _tile_height );
177
178void ef936x_bank_select( Environment * _environment, int _bank );
179void ef936x_screen_on( Environment * _environment );
180void ef936x_screen_off( Environment * _environment );
181void ef936x_screen_rows( Environment * _environment, char * _rows );
182void ef936x_screen_columns( Environment * _environment, char * _columns );
183
184void ef936x_sprite_data_from( Environment * _environment, char * _sprite, char * _address );
185void ef936x_sprite_data_set( Environment * _environment, char * _sprite, char * _address );
186void ef936x_sprite_enable( Environment * _environment, char *_sprite );
187void ef936x_sprite_disable( Environment * _environment, char * _sprite );
188void ef936x_sprite_at( Environment * _environment, char * _sprite, char * _x, char * _y );
189void ef936x_sprite_expand_vertical( Environment * _environment, char * _sprite );
190void ef936x_sprite_expand_horizontal( Environment * _environment, char * _sprite );
191void ef936x_sprite_compress_vertical( Environment * _environment, char * _sprite );
192void ef936x_sprite_compress_horizontal( Environment * _environment, char * _sprite );
193void ef936x_sprite_multicolor( Environment * _environment, char * _sprite );
194void ef936x_sprite_monocolor( Environment * _environment, char * _sprite );
195void ef936x_sprite_color( Environment * _environment, char * _sprite, char * _color );
196void ef936x_sprite_priority( Environment * _environment, char * _sprite, char * _priority );
197void ef936x_vertical_scroll( Environment * _environment, char * _displacement );
198void ef936x_horizontal_scroll( Environment * _environment, char * _displacement );
199
200void ef936x_tiles_get( Environment * _environment, char * _result );
201void ef936x_get_width( Environment * _environment, char * _result );
202void ef936x_get_height( Environment * _environment, char * _result );
203
204void ef936x_pset_int( Environment * _environment, int _x, int _y, int *_c );
205void ef936x_pset_vars( Environment * _environment, char *_x, char *_y, char *_c );
206void ef936x_pget_color_vars( Environment * _environment, char *_x, char *_y, char * _result );
207void ef936x_cls( Environment * _environment );
208void ef936x_cls_box( Environment * _environment, char * _x1, char * _y1, char * _w, char * _h );
209void ef936x_scroll_text( Environment * _environment, int _direction, int _overlap );
210void ef936x_hscroll_line( Environment * _environment, int _direction, int _overlap );
211void ef936x_hscroll_screen( Environment * _environment, int _direction, int _overlap );
212void ef936x_text( Environment * _environment, char * _text, char * _text_size, int _raw );
213void ef936x_cline( Environment * _environment, char * _characters );
214void ef936x_scroll( Environment * _environment, int _dx, int _dy );
215
217
218int ef936x_image_size( Environment * _environment, int _width, int _height, int _mode );
219Variable * ef936x_image_converter( Environment * _environment, char * _data, int _width, int _height, int _depth, int _offset_x, int _offset_y, int _frame_width, int _frame_height, int _mode, int _transparent_color, int _flags );
220void ef936x_put_image( Environment * _environment, Resource * _image, char * _x, char * _y, char * _frame, char * _sequence, int _frame_size, int _frame_count, char * _flags );
221void ef936x_blit_image( Environment * _environment, char * _sources[], int _source_count, char * _blit, char * _x, char * _y, char * _frame, char * _sequence, int _frame_size, int _frame_count, int _flags );
222Variable * ef936x_new_image( Environment * _environment, int _width, int _height, int _mode );
223Variable * ef936x_new_images( Environment * _environment, int _frames, int _width, int _height, int _mode );
224Variable * ef936x_new_sequence( Environment * _environment, int _sequences, int _frames, int _width, int _height, int _mode );
225void ef936x_get_image( Environment * _environment, char * _image, char * _x, char * _y, char * _frame, char * _sequence, int _frame_size, int _frame_count, int _palette );
226
227void ef936x_calculate_sequence_frame_offset( Environment * _environment, char * _offset, char * _sequence, char * _frame, int _frame_size, int _frame_count );
228void ef936x_calculate_sequence_frame_offset_regy( Environment * _environment, char * _sequence, char * _frame, int _frame_size, int _frame_count );
229
230void ef936x_put_tile( Environment * _environment, char * _image, char * _x, char * _y );
231void ef936x_put_tiles( Environment * _environment, char * _image, char * _x, char * _y, char *_w, char *_h );
232void ef936x_move_tiles( Environment * _environment, char * _image, char * _x, char * _y );
233void ef936x_use_tileset( Environment * _environment, char * _tileset );
234void ef936x_tile_at( Environment * _environment, char * _x, char * _y, char * _result );
235
236void ef936x_slice_image( Environment * _environment, char * _image, char * _frame, char * _sequence, int _frame_size, int _frame_count, char * _destination );
237int ef936x_palette_extract( Environment * _environment, char * _data, int _width, int _height, int _depth, int _flags, RGBi * _palette );
238void ef936x_flip_image( Environment * _environment, Resource * _image, char * _frame, char * _sequence, int _frame_size, int _frame_count, char * _direction );
239void ef936x_fade_in( Environment * _environment, char * _period );
240void ef936x_fade_out( Environment * _environment, char * _period );
241
242void ef936x_fade_in_color( Environment * _environment, int _index, int _background_color );
243void ef936x_fade_in_color_semivars( Environment * _environment, int _index, char * _background_color );
244void ef936x_fade_in_color_vars( Environment * _environment, char * _index, char * _background_color );
245
246#endif
int ef936x_palette_extract(Environment *_environment, char *_data, int _width, int _height, int _depth, int _flags, RGBi *_palette)
Definition ef936x.c:2375
void ef936x_sprite_multicolor(Environment *_environment, char *_sprite)
Definition ef936x.c:623
void ef936x_put_image(Environment *_environment, Resource *_image, char *_x, char *_y, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_flags)
Definition ef936x.c:1920
void ef936x_pset_vars(Environment *_environment, char *_x, char *_y, char *_c)
Definition ef936x.c:530
void ef936x_textmap_at(Environment *_environment, char *_address)
Definition ef936x.c:508
void ef936x_background_color_semivars(Environment *_environment, int _index, char *_background_color)
VIC-II: emit code to change background color
Definition ef936x.c:246
void ef936x_screen_on(Environment *_environment)
Definition ef936x.c:571
void ef936x_calculate_sequence_frame_offset(Environment *_environment, char *_offset, char *_sequence, char *_frame, int _frame_size, int _frame_count)
Definition ef936x.c:2285
void ef936x_put_tile(Environment *_environment, char *_image, char *_x, char *_y)
Definition ef936x.c:2202
void ef936x_sprite_data_from(Environment *_environment, char *_sprite, char *_address)
Definition ef936x.c:587
void ef936x_put_tiles(Environment *_environment, char *_image, char *_x, char *_y, char *_w, char *_h)
Definition ef936x.c:2210
void ef936x_sprite_monocolor(Environment *_environment, char *_sprite)
Definition ef936x.c:627
void ef936x_fade_in(Environment *_environment, char *_period)
Definition ef936x.c:2477
void ef936x_tilemap_enable(Environment *_environment, int _width, int _height, int _colors, int _tile_width, int _tile_height)
Definition ef936x.c:484
void ef936x_vertical_scroll(Environment *_environment, char *_displacement)
Definition ef936x.c:643
void ef936x_sprite_priority(Environment *_environment, char *_sprite, char *_priority)
Definition ef936x.c:635
void ef936x_blit_image(Environment *_environment, char *_sources[], int _source_count, char *_blit, char *_x, char *_y, char *_frame, char *_sequence, int _frame_size, int _frame_count, int _flags)
Definition ef936x.c:2321
void ef936x_bitmap_at(Environment *_environment, char *_address)
Definition ef936x.c:500
Variable * ef936x_new_sequence(Environment *_environment, int _sequences, int _frames, int _width, int _height, int _mode)
Definition ef936x.c:2085
void ef936x_hscroll_screen(Environment *_environment, int _direction, int _overlap)
Definition ef936x.c:953
void ef936x_calculate_sequence_frame_offset_regy(Environment *_environment, char *_sequence, char *_frame, int _frame_size, int _frame_count)
Definition ef936x.c:2233
void ef936x_flip_image(Environment *_environment, Resource *_image, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_direction)
Definition ef936x.c:2389
void ef936x_sprite_expand_vertical(Environment *_environment, char *_sprite)
Definition ef936x.c:607
void ef936x_next_raster_at(Environment *_environment, char *_label, char *_positionlo, char *_positionhi)
VIC-II: emit code to wait for next raster irq at different position
Definition ef936x.c:337
int ef936x_image_size(Environment *_environment, int _width, int _height, int _mode)
Definition ef936x.c:988
void ef936x_cline(Environment *_environment, char *_characters)
Definition ef936x.c:968
void ef936x_tile_at(Environment *_environment, char *_x, char *_y, char *_result)
Definition ef936x.c:2215
void ef936x_hscroll_line(Environment *_environment, int _direction, int _overlap)
Definition ef936x.c:939
void ef936x_cls_box(Environment *_environment, char *_x1, char *_y1, char *_w, char *_h)
Definition ef936x.c:680
Variable * ef936x_get_raster_line(Environment *_environment)
Definition ef936x.c:2223
int ef936x_screen_mode_enable(Environment *_environment, ScreenMode *_screen_mode)
Definition ef936x.c:369
void ef936x_raster_at(Environment *_environment, char *_label, char *_positionlo, char *_positionhi)
VIC-II: emit code to set raster irq
Definition ef936x.c:306
void ef936x_pset_int(Environment *_environment, int _x, int _y, int *_c)
Definition ef936x.c:512
void ef936x_fade_in_color_vars(Environment *_environment, char *_index, char *_background_color)
Definition ef936x.c:2498
void ef936x_fade_in_color(Environment *_environment, int _index, int _background_color)
Definition ef936x.c:2491
void ef936x_sprite_enable(Environment *_environment, char *_sprite)
Definition ef936x.c:595
void ef936x_get_height(Environment *_environment, char *_result)
Definition ef936x.c:665
void ef936x_tiles_get(Environment *_environment, char *_result)
Definition ef936x.c:658
void ef936x_slice_image(Environment *_environment, char *_image, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_destination)
Definition ef936x.c:2371
Variable * ef936x_new_images(Environment *_environment, int _frames, int _width, int _height, int _mode)
Definition ef936x.c:2053
void ef936x_move_tiles(Environment *_environment, char *_image, char *_x, char *_y)
Definition ef936x.c:2206
void ef936x_background_color(Environment *_environment, int _index, int _background_color)
VIC-II: emit code to change background color
Definition ef936x.c:185
void ef936x_pget_color_vars(Environment *_environment, char *_x, char *_y, char *_result)
Definition ef936x.c:554
void ef936x_bitmap_disable(Environment *_environment)
Definition ef936x.c:480
void ef936x_sprite_at(Environment *_environment, char *_sprite, char *_x, char *_y)
Definition ef936x.c:603
void ef936x_sprite_common_color(Environment *_environment, char *_index, char *_common_color)
VIC-II: emit code to change common sprite's color
Definition ef936x.c:287
void ef936x_hit(Environment *_environment, char *_sprite_mask, char *_result)
VIC-II: emit code to check for collision
Definition ef936x.c:158
void ef936x_initialization(Environment *_environment)
Definition ef936x.c:731
void ef936x_fade_out(Environment *_environment, char *_period)
Definition ef936x.c:2463
void ef936x_sprite_data_set(Environment *_environment, char *_sprite, char *_address)
Definition ef936x.c:591
void ef936x_screen_rows(Environment *_environment, char *_rows)
Definition ef936x.c:579
Variable * ef936x_new_image(Environment *_environment, int _width, int _height, int _mode)
Definition ef936x.c:2029
void ef936x_use_tileset(Environment *_environment, char *_tileset)
Definition ef936x.c:2219
void ef936x_collision(Environment *_environment, char *_sprite_mask, char *_result)
VIC-II: emit code to check for collision
Definition ef936x.c:143
void ef936x_tiles_at(Environment *_environment, char *_address)
Definition ef936x.c:639
void ef936x_next_raster(Environment *_environment)
VIC-II: emit code to wait for next raster irq
Definition ef936x.c:320
void ef936x_text(Environment *_environment, char *_text, char *_text_size, int _raw)
Definition ef936x.c:706
void ef936x_colormap_at(Environment *_environment, char *_address)
Definition ef936x.c:504
void ef936x_finalization(Environment *_environment)
Definition ef936x.c:861
void ef936x_sprite_expand_horizontal(Environment *_environment, char *_sprite)
Definition ef936x.c:611
void ef936x_sprite_disable(Environment *_environment, char *_sprite)
Definition ef936x.c:599
void ef936x_screen_off(Environment *_environment)
Definition ef936x.c:575
void ef936x_background_color_get_vars(Environment *_environment, char *_index, char *_background_color)
VIC-II: emit code to change background color
Definition ef936x.c:267
void ef936x_horizontal_scroll(Environment *_environment, char *_displacement)
Definition ef936x.c:647
void ef936x_screen_columns(Environment *_environment, char *_columns)
Definition ef936x.c:583
void ef936x_bitmap_enable(Environment *_environment, int _width, int _height, int _colors)
Definition ef936x.c:464
void ef936x_sprite_color(Environment *_environment, char *_sprite, char *_color)
Definition ef936x.c:631
void ef936x_background_color_vars(Environment *_environment, char *_index, char *_background_color)
VIC-II: emit code to change background color
Definition ef936x.c:219
void ef936x_sprite_compress_horizontal(Environment *_environment, char *_sprite)
Definition ef936x.c:619
void ef936x_back(Environment *_environment)
Definition ef936x.c:964
void ef936x_get_image(Environment *_environment, char *_image, char *_x, char *_y, char *_frame, char *_sequence, int _frame_size, int _frame_count, int _palette)
Definition ef936x.c:2118
void ef936x_sprite_compress_vertical(Environment *_environment, char *_sprite)
Definition ef936x.c:615
void ef936x_fade_in_color_semivars(Environment *_environment, int _index, char *_background_color)
Definition ef936x.c:2509
void ef936x_cls(Environment *_environment)
Definition ef936x.c:672
void ef936x_get_width(Environment *_environment, char *_result)
Definition ef936x.c:651
void ef936x_bank_select(Environment *_environment, int _bank)
Definition ef936x.c:341
void ef936x_scroll_text(Environment *_environment, int _direction, int _overlap)
Definition ef936x.c:695
Variable * ef936x_image_converter(Environment *_environment, char *_data, int _width, int _height, int _depth, int _offset_x, int _offset_y, int _frame_width, int _frame_height, int _mode, int _transparent_color, int _flags)
Definition ef936x.c:1809
void ef936x_scroll(Environment *_environment, int _dx, int _dy)
Definition ef936x.c:2186
void ef936x_border_color(Environment *_environment, char *_border_color)
VIC-II: emit code to change border color
Definition ef936x.c:171
struct _ScreenMode ScreenMode
struct _Resource Resource
struct _RGBi RGBi
Structure to store color components (red, green and blue).
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.