ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
d32b.c
Go to the documentation of this file.
1/*****************************************************************************
2 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
3 *****************************************************************************
4 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *----------------------------------------------------------------------------
18 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
19 * (la "Licenza"); è proibito usare questo file se non in conformità alla
20 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
25 * il software distribuito nei termini della Licenza è distribuito
26 * "COSì COM'è", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
27 * implicite. Consultare la Licenza per il testo specifico che regola le
28 * autorizzazioni e le limitazioni previste dalla medesima.
29 ****************************************************************************/
30
31/****************************************************************************
32 * INCLUDE SECTION
33 ****************************************************************************/
34
35#include "../ugbc.h"
36#include <math.h>
37
38/****************************************************************************
39 * CODE SECTION
40 ****************************************************************************/
41
42#ifdef __d32b__
43
44void d32b_xpen( Environment * _environment, char * _destination ) {
45
47
48 outline0("LDA $FF60");
49 outline1("STA %s", address_displacement(_environment, _destination, "1"));
50 outline0("LDA #0");
51 outline1("STA %s", _destination);
52
53}
54
55void d32b_ypen( Environment * _environment, char * _destination ) {
56
58
59 outline0("LDA $FF61");
60 outline1("STA %s", address_displacement(_environment, _destination, "1"));
61 outline0("LDA #0");
62 outline1("STA %s", _destination);
63
64}
65
66void d32b_color_border( Environment * _environment, char * _color ) {
67
68}
69
70void d32b_vscroll( Environment * _environment, int _displacement ) {
71
72}
73
74void d32b_text_at( Environment * _environment, char * _text, char * _text_size, char * _pen, char * _paper ) {
75
76}
77
78void d32b_cls( Environment * _environment, char * _pen, char * _paper ) {
79
80}
81
82void d32b_initialization( Environment * _environment ) {
83
84}
85
86int d32b_screen_mode_enable( Environment * _environment, ScreenMode * _screen_mode ) {
87
88}
89
90void d32b_bitmap_enable( Environment * _environment, int _width, int _height, int _colors ) {
91
92}
93
94void d32b_tilemap_enable( Environment * _environment, int _width, int _height, int _colors, int _tile_width, int _tile_height ) {
95
96}
97
98void d32b_back( Environment * _environment ) {
99
100}
101
102void d32b_busy_wait( Environment * _environment, char * _timing ) {
103
105
106 outline1("LDD %s", _timing );
107 outline0("LDX DRGTIMER");
108 outline0("LEAX D, X");
109 outhead1("%sfirst", label );
110 outline0("CMPX DRGTIMER");
111 outline1("BGT %sfirst", label);
112}
113
114void d32b_sys_call( Environment * _environment, int _destination ) {
115
116 _environment->sysCallUsed = 1;
117
118 outline0("PSHS D");
119 outline1("LDD #$%4.4x", _destination );
120 outline0("STD SYSCALL0+1");
121 outline0("PULS D");
122 outline0("JSR SYSCALL");
123
124}
125
126void d32b_timer_set_status_on( Environment * _environment, char * _timer ) {
127
128 deploy( timer, src_hw_6309_timer_asm);
129
130 if ( _timer ) {
131 outline1("LDB %s", _timer );
132 } else {
133 outline0("LDB #0" );
134 }
135 outline0("LDA #$1" );
136 outline0("STA <MATHPTR0" );
137 outline0("JSR TIMERSETSTATUS" );
138
139}
140
141void d32b_timer_set_status_off( Environment * _environment, char * _timer ) {
142
143 deploy( timer, src_hw_6309_timer_asm);
144
145 if ( _timer ) {
146 outline1("LDB %s", _timer );
147 } else {
148 outline0("LDB #0" );
149 }
150 outline0("LDA #$0" );
151 outline0("STA <MATHPTR0" );
152 outline0("JSR TIMERSETSTATUS" );
153
154}
155
156void d32b_timer_set_counter( Environment * _environment, char * _timer, char * _counter ) {
157
158 deploy( timer, src_hw_6309_timer_asm);
159
160 if ( _counter ) {
161 outline1("LDD %s", _counter );
162 } else {
163 outline0("LDD #0" );
164 }
165 outline0("STD <MATHPTR2");
166 if ( _timer ) {
167 outline1("LDB %s", _timer );
168 } else {
169 outline0("LDB #0" );
170 }
171 outline0("JSR TIMERSETCOUNTER" );
172
173}
174
175void d32b_timer_set_init( Environment * _environment, char * _timer, char * _init ) {
176
177 deploy( timer, src_hw_6309_timer_asm);
178
179 outline1("LDD %s", _init );
180 outline0("STD <MATHPTR2");
181 if ( _timer ) {
182 outline1("LDB %s", _timer );
183 } else {
184 outline0("LDB #0" );
185 }
186 outline0("JSR TIMERSETINIT" );
187
188}
189
190void d32b_timer_set_address( Environment * _environment, char * _timer, char * _address ) {
191
192 deploy( timer, src_hw_6309_timer_asm);
193
194 outline1("LDD #%s", _address );
195 outline0("STD <MATHPTR2");
196 if ( _timer ) {
197 outline1("LDB %s", _timer );
198 } else {
199 outline0("LDB #0" );
200 }
201 outline0("JSR TIMERSETADDRESS" );
202
203}
204
205
206#endif
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
void d32b_timer_set_status_on(Environment *_environment, char *_timer)
Definition d32b.c:126
int d32b_screen_mode_enable(Environment *_environment, ScreenMode *_screen_mode)
Definition d32b.c:86
void d32b_text_at(Environment *_environment, char *_text, char *_text_size, char *_pen, char *_paper)
Definition d32b.c:74
void d32b_xpen(Environment *_environment, char *_destination)
Definition d32b.c:44
void d32b_cls(Environment *_environment, char *_pen, char *_paper)
Definition d32b.c:78
void d32b_timer_set_address(Environment *_environment, char *_timer, char *_address)
Definition d32b.c:190
void d32b_busy_wait(Environment *_environment, char *_timing)
Definition d32b.c:102
void d32b_timer_set_counter(Environment *_environment, char *_timer, char *_counter)
Definition d32b.c:156
void d32b_ypen(Environment *_environment, char *_destination)
Definition d32b.c:55
void d32b_bitmap_enable(Environment *_environment, int _width, int _height, int _colors)
Definition d32b.c:90
void d32b_initialization(Environment *_environment)
Definition d32b.c:82
void d32b_timer_set_init(Environment *_environment, char *_timer, char *_init)
Definition d32b.c:175
void d32b_color_border(Environment *_environment, char *_color)
Definition d32b.c:66
void d32b_timer_set_status_off(Environment *_environment, char *_timer)
Definition d32b.c:141
void d32b_sys_call(Environment *_environment, int _destination)
Definition d32b.c:114
void d32b_tilemap_enable(Environment *_environment, int _width, int _height, int _colors, int _tile_width, int _tile_height)
Definition d32b.c:94
void d32b_back(Environment *_environment)
Definition d32b.c:98
void d32b_vscroll(Environment *_environment, int _displacement)
Definition d32b.c:70
int sysCallUsed
Definition ugbc.h:3162
struct _ScreenMode ScreenMode
struct _Environment Environment
Structure of compilation environment.
#define outline0(s)
Definition ugbc.h:4252
#define outline1(s, a)
Definition ugbc.h:4253
#define deploy(s, e)
Definition ugbc.h:4288
#define MAKE_LABEL
Definition ugbc.h:3351
#define outhead1(s, a)
Definition ugbc.h:4247