ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
colormap_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
57/* <usermanual>
58@keyword COLORMAP AT
59
60@english
61Set the starting address, in memory, for the colormap. The input parameter
62is decoded and declined according to the hardware limits. So it is not said
63that exactly the given address is set.
64
65@italian
66Imposta l'indirizzo di partenza, in memoria, per la mappa dei colori. Il parametro di input
67viene decodificato e declinato in base ai limiti hardware. Quindi non è detto
68che sia impostato esattamente l'indirizzo specificato.
69
70@syntax COLORMAP AT #address
71
72@example COLORMAP AT #$B800
73
74@seeAlso BITMAP ENABLE
75
76@target c128
77</usermanual> */
78void colormap_at( Environment * _environment, int _address ) {
79
80 // Let's define the special variable and fill up with the value.
81 Variable * colormapAddress = variable_retrieve_or_define( _environment, "COLORMAPADDRESS", VT_ADDRESS, _address );
82
83 variable_store( _environment, colormapAddress->name, ( ( ( _address >> 10 ) & 0x0f ) * 0x8400 ) );
84
85 char addressString[MAX_TEMPORARY_STORAGE]; sprintf(addressString, "%2.2x", ( _address >> 10 ) & 0x0f );
86
87 vic2_colormap_at( _environment, addressString );
88
89}
90
106/* <usermanual>
107@keyword COLORMAP AT
108</usermanual> */
109void colormap_at_var( Environment * _environment, char * _address ) {
110
111 // Let's define the special variable and fill up with the value.
112 Variable * colormapAddress = variable_retrieve_or_define( _environment, "COLORMAPADDRESS", VT_ADDRESS, 0x8400 );
113 Variable * address = variable_retrieve( _environment, _address );
114
115 // variable_store( _environment, colormapAddress->name, ( ( ( _address >> 10 ) & 0x0f ) * 0x8400 ) );
116
117 char addressString[MAX_TEMPORARY_STORAGE]; sprintf(addressString, "%s", address_displacement(_environment, address->realName, "1") );
118
119 vic2_colormap_at( _environment, addressString );
120
121}
Variable * variable_retrieve(Environment *_environment, char *_name)
Variable * variable_retrieve_or_define(Environment *_environment, char *_name, VariableType _type, int _value)
Variable * variable_store(Environment *_environment, char *_destination, unsigned int _value)
Store a direct value to a variable.
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
void colormap_at_var(Environment *_environment, char *_address)
Emit ASM implementation for COLORMAP AT [expression] instruction.
Definition colormap_at.c:82
void colormap_at(Environment *_environment, int _address)
Emit ASM implementation for COLORMAP AT [int] instruction.
Definition colormap_at.c:60
char * name
Definition ugbc.h:979
char * realName
Definition ugbc.h:982
#define MAX_TEMPORARY_STORAGE
Definition ugbc.h:563
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
@ VT_ADDRESS
Definition ugbc.h:465
void vic2_colormap_at(Environment *_environment, char *_address)
Definition vic2.c:1305