ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
read_end.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
41/* <usermanual>
42@keyword READ END
43
44@english
45
46The ''READ END'' function allows you to know if you have reached the last value
47to read with the ''READ'' command. If the function returns true, this means that
48the next ''READ'' command will ignore the read.
49
50@italian
51
52La funzione ''READ END'' permette di sapere se se è arrivato all'ultimo valore da
53leggere con il comando ''READ''. Se la funzione restituisce true, questo vuol dire
54che il prossimo comando ''READ'' ignorerà la lettura.
55
56@syntax = READ END
57
58@example IF READ END THEN
59@example RESTORE
60@example ENDIF
61
62@usedInExample data_example_04.bas
63@usedInExample data_example_05.bas
64
65</usermanual> */
66Variable * read_end( Environment * _environment ) {
67
69
71
72 Variable * readEnd = variable_temporary( _environment, VT_BYTE, "(flag)" );
73
74 outline0("JSR READNUMERICEOD");
75 outline1("BNE %s", label);
76 outline0("LDA #$FF");
77 outline1("JMP %sdone", label);
78 outhead1("%s:", label);
79 outline0("LDA #$00");
80 outhead1("%sdone:", label);
81 outline1("STA %s", readEnd->realName);
82
83 return readEnd;
84
85}
86
unsigned char src_hw_6502_read_data_unsafe_asm[]
Variable * variable_temporary(Environment *_environment, VariableType _type, char *_meaning)
Define a temporary variable.
void read_data_unsafe(Environment *_environment, char *_variable)
Variable * read_end(Environment *_environment)
Emit code for READ END function.
Definition read_end.c:46
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
@ VT_BYTE
Definition ugbc.h:450
#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