ugBASIC
1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
text_get_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
48
/* <usermanual>
49
@keyword AT (function)
50
51
@english
52
53
The ''AT'' function is used to create a string to position the cursor to an exact position on the screen,
54
when it will be printed on the screen. It's like telling a painter where to start painting on a canvas,
55
not moving immediately but storing the command in a string.
56
57
The ''AT'' function is followed by two expressions,
58
separated by a comma: ''x'' indicates the column in which move the cursor, while ''y'' will be the line
59
in which to start writing.
60
61
The string that is returned takes the standard format. So whenever this string
62
is printed, the text cursor will be moved to the text coordinates held by ''x'' and y.
63
64
@italian
65
La funzione ''AT'' viene utilizzata per creare una stringa per posizionare il cursore in una
66
posizione esatta sullo schermo, quando verrà stampato sullo schermo. È come dire a un pittore
67
dove iniziare a dipingere su una tela, non muovendosi immediatamente ma memorizzando il
68
comando in una stringa.
69
70
La funzione ''AT'' è seguita da due espressioni, separate da una virgola: ''x'' indica la
71
colonna in cui spostare il cursore, mentre ''y'' sarà la riga in cui iniziare a scrivere.
72
73
La stringa restituita assume il formato standard. Quindi ogni volta che questa stringa
74
viene stampata, il cursore del testo verrà spostato alle coordinate del testo mantenute
75
da ''x'' e y.
76
77
@syntax = AT$( x , y )
78
@syntax = AT( x , y )
79
80
@example PRINT AT$(10,10); "at 10, 10"
81
82
@usedInExample texts_position_05.bas
83
@usedInExample texts_position_06.bas
84
85
@seeAlso LOCATE (function)
86
87
</usermanual> */
88
89
/* <usermanual>
90
@keyword LOCATE (function)
91
92
@english
93
94
@italian
95
96
@syntax = LOCATE$( x , y )
97
@syntax = LOCATE( x , y )
98
99
@example PRINT LOCATE$(10,10); "at 10, 10"
100
101
@usedInExample texts_position_05.bas
102
@usedInExample texts_position_06.bas
103
104
@seeAlso AT (function)
105
106
</usermanual> */
107
108
Variable
*
get_at
(
Environment
* _environment,
char
* _x,
char
* _y ) {
109
110
Variable
* x =
variable_retrieve_or_define
( _environment, _x,
VT_BYTE
, 0 );
111
Variable
* y =
variable_retrieve_or_define
( _environment, _y,
VT_BYTE
, 0 );
112
113
Variable
* result =
variable_temporary
( _environment,
VT_DSTRING
, 0 );
114
115
char
resultString[
MAX_TEMPORARY_STORAGE
]; sprintf( resultString,
"\x4 "
);
116
117
variable_store_string
(_environment, result->
name
, resultString );
118
119
cpu_dswrite
( _environment, result->
realName
);
120
121
Variable
* address =
variable_temporary
( _environment,
VT_ADDRESS
,
"(address of DSTRING)"
);
122
Variable
*
size
=
variable_temporary
( _environment,
VT_BYTE
,
"(size of DSTRING)"
);
123
cpu_dsdescriptor
( _environment, result->
realName
, address->
realName
,
size
->realName );
124
125
cpu_move_8bit_indirect_with_offset
(_environment, x->
realName
, address->
realName
, 1 );
126
cpu_move_8bit_indirect_with_offset
(_environment, y->
realName
, address->
realName
, 2 );
127
128
return
result;
129
130
}
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
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
get_at
Variable * get_at(Environment *_environment, char *_x, char *_y)
Emit code for = AT$(...,...).
Definition
text_get_at.c:48
_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_DSTRING
@ VT_DSTRING
Definition
ugbc.h:483
Z:
ugbasic
ugbc
src
targets
c64reu
text_get_at.c
Generated by
1.16.1