ugBASIC
1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
text_get_pen.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
48
/* <usermanual>
49
@keyword PEN (function)
50
51
@english
52
53
The ''PEN$'' command create a special control sequence (string) that define the foreground color of
54
the screen. This means that, whenever the string is printed on the screen, the pre-set pen colour
55
is automatically assigned to it. The format of the string returned by ''PEN$'' is not specific
56
for the target. The parameter ''color'' is represented by a value in the available colors,
57
from 0 to maximum (''PEN COLORS'').
58
59
@italian
60
61
Il comando ''PEN$'' crea una sequenza di controllo speciale (stringa) che definisce il colore di
62
sfondo dello schermo. Ciò significa che, ogni volta che la stringa viene stampata sullo schermo,
63
le viene automaticamente assegnato il colore della carta preimpostato. Il formato della stringa
64
restituita da ''PEN$'' non è specifico per il target. Il parametro ''color'' è rappresentato
65
da un valore nei colori disponibili, da 0 al massimo (''PEN COLORS'').
66
67
@syntax = PEN$(expression)
68
69
@example PRINT PEN$(RED)
70
71
@UsedInExample texts_options_02.bas
72
73
@seeAlso PEN (instruction)
74
@seeAlso PAPER (function)
75
76
@target all
77
</usermanual> */
78
Variable
*
get_pen
(
Environment
* _environment,
char
* _color ) {
79
80
Variable
*
color
=
variable_retrieve_or_define
( _environment, _color,
VT_COLOR
,
COLOR_WHITE
);
81
82
Variable
* result =
variable_temporary
( _environment,
VT_DSTRING
, 0 );
83
Variable
* address =
variable_temporary
( _environment,
VT_ADDRESS
, 0 );
84
Variable
*
size
=
variable_temporary
( _environment,
VT_BYTE
, 0 );
85
86
char
resultString[
MAX_TEMPORARY_STORAGE
]; sprintf( resultString,
"\x1 "
);
87
88
variable_store_string
(_environment, result->
name
, resultString );
89
90
cpu_dswrite
( _environment, result->
realName
);
91
cpu_dsdescriptor
( _environment, result->
realName
, address->
realName
,
size
->realName );
92
93
cpu_move_8bit_indirect_with_offset
(_environment,
color
->realName, address->
realName
, 1 );
94
95
return
result;
96
97
}
cpu_dswrite
void cpu_dswrite(Environment *_environment, char *_index)
Definition
6309.c:5927
cpu_move_8bit_indirect_with_offset
void cpu_move_8bit_indirect_with_offset(Environment *_environment, char *_source, char *_value, int _offset)
Definition
6309.c:5250
cpu_dsdescriptor
void cpu_dsdescriptor(Environment *_environment, char *_index, char *_address, char *_size)
Definition
6309.c:5977
COLOR_WHITE
#define COLOR_WHITE
Definition
6847.h:39
variable_retrieve_or_define
Variable * variable_retrieve_or_define(Environment *_environment, char *_name, VariableType _type, int _value)
Definition
_infrastructure.c:1040
variable_store_string
Variable * variable_store_string(Environment *_environment, char *_destination, char *_value)
Store a string to a variable.
Definition
_infrastructure.c:1995
variable_temporary
Variable * variable_temporary(Environment *_environment, VariableType _type, char *_meaning)
Define a temporary variable.
Definition
_infrastructure.c:1388
size
int size
Definition
_optimizer.c:678
color
void color(Environment *_environment, int _index, int _shade)
Emit ASM code for instruction COLOR [int], [int].
Definition
color.c:59
get_pen
Variable * get_pen(Environment *_environment, char *_color)
Emit code for the PEN$(...).
Definition
text_get_pen.c:78
_Variable::name
char * name
Definition
ugbc.h:979
_Variable::realName
char * realName
Definition
ugbc.h:982
ugbc.h
MAX_TEMPORARY_STORAGE
#define MAX_TEMPORARY_STORAGE
Definition
ugbc.h:563
Variable
struct _Variable Variable
Structure of a single variable.
Environment
struct _Environment Environment
Structure of compilation environment.
VT_BYTE
@ VT_BYTE
Definition
ugbc.h:450
VT_ADDRESS
@ VT_ADDRESS
Definition
ugbc.h:465
VT_COLOR
@ VT_COLOR
Definition
ugbc.h:471
VT_DSTRING
@ VT_DSTRING
Definition
ugbc.h:483
Z:
ugbasic
ugbc
src
targets
c16
text_get_pen.c
Generated by
1.16.1