ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
halt.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
50/* <usermanual>
51@keyword HALT
52
53@english
54
55This instruction stops the program execution, in "busy" mode. The implementation is
56by means of an infinite loop, which is executed when the instruction is executed.
57With this expedient, the execution of interrupts will continue without being
58interrupted while all other operations will be interrupted, including multithreading.
59
60@italian
61
62Questa istruzione ferma l'esecuzione del programma, in modo "busy". L'implementazione
63è per mezzo di un loop infinito, che viene eseguito in corrispondenza dell'esecuzione
64dell'istruzione. Con tale espediente, l'esecuzione degli interrupt continuerà senza
65essere interrotta mentre saranno interrotte tutte le altre operazioni, compreso
66quindi il multithreading.
67
68@syntax HALT
69
70@example HALT
71
72@target all
73</usermanual> */
74void halt( Environment * _environment ) {
75
77
78 cpu_label( _environment, label );
79 interleaved_instructions( _environment );
80 cpu_jump( _environment, label );
81
82}
void cpu_label(Environment *_environment, char *_label)
Definition 6309.c:356
void cpu_jump(Environment *_environment, char *_label)
Definition 6309.c:3739
void interleaved_instructions(Environment *_environment)
Definition _init.c:123
void halt(Environment *_environment)
Emit ASM code for HALT.
Definition halt.c:74
struct _Environment Environment
Structure of compilation environment.
#define MAKE_LABEL
Definition ugbc.h:3351