ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
next_raster_at.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
37/****************************************************************************
38 * CODE SECTION
39 ****************************************************************************/
40
53/* <usermanual>
54@keyword NEXT RASTER AT
55
56@english
57
58The ''NEXT RASTER AT'' instruction will resume execution of the main program from
59where it had stopped, before serving the interrupt for the raster, and will set
60the next raster line where the main program will be interrupted.
61
62@italian
63
64L'istruzione ''NEXT RASTER AT'' riprenderà l'esecuzione del programma principale
65dal punto in cui si era interrotta, prima di servire l'interruzione per il raster,
66e imposterà la successiva riga raster in cui il programma principale verrà
67interrotto.
68
69@syntax NEXT RASTER AT line WITH label
70@syntax NEXT RASTER label AT line
71
72@example NEXT RASTER AT #&H42 WITH myRasterRoutine
73
74@target c128
75
76@seeAlso NEXT RASTER
77@seeAlso RASTER AT
78
79</usermanual> */
80void next_raster_at_with( Environment * _environment, int _position, char * _label ) {
81
82 char positionlo[MAX_TEMPORARY_STORAGE]; sprintf( positionlo, "#$%2.2x", (unsigned char) ( _position & 0xff ) );
83 char positionhi[MAX_TEMPORARY_STORAGE]; sprintf( positionhi, "#$%2.2x", (unsigned char) ( ( ( _position >> 8 ) & 0x01 ) << 8 ) );
84
85 vic2_next_raster_at( _environment, _label, positionlo, positionhi );
86
87}
88
101void next_raster_at_with_var( Environment * _environment, char * _position, char * _label ) {
102
103
104
106
107 Variable * var = variable_retrieve( _environment, _position );
108
109 char positionlo[MAX_TEMPORARY_STORAGE]; sprintf( positionlo, "%s", var->realName );
110 char positionhi[MAX_TEMPORARY_STORAGE]; sprintf( positionhi, "%s", address_displacement(_environment, var->realName, "1") );
111
112 vic2_next_raster_at( _environment, _label, positionlo, positionhi );
113
114}
Variable * variable_retrieve(Environment *_environment, char *_name)
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
void next_raster_at_with_var(Environment *_environment, char *_position, char *_label)
Emit ASM code for NEXT RASTER AT [expresssion] WITH label.
void next_raster_at_with(Environment *_environment, int _position, char *_label)
Emit ASM code for NEXT RASTER AT [int] WITH [label].
#define MAX_TEMPORARY_STORAGE
Definition ugbc.h:563
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
#define MAKE_LABEL
Definition ugbc.h:3351
void vic2_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 vic2.c:871