ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
dsave.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#include "../../libs/msc1.h"
37
38/****************************************************************************
39 * CODE SECTION
40 ****************************************************************************/
41
48 /* <usermanual>
49@keyword DSAVE
50
51@english
52Dynamically (at run-time) save a file to a mass storage. The DSAVE command
53allows you to (dynamically) save a file to a mass device. The syntax allows
54you to save a specific file (''filename'') starting from a specific ''offset''
55within the file, from a specific ''address'' in memory for a certain
56number of ''bytes''. Note that the behavior of this instruction strictly
57depends on the target where it is executed. It follows that not all options
58are necessarily available on every target.
59
60@italian
61Il comando DLOAD permette di salvare (dinamicamente) un file verso una periferica
62di massa. La sintassi permette di salvare un file specifico (''filename'') a
63partire da uno specifico ''offset'' all'interno del file, da uno specifico
64indirizzo (''address'') in memoria per un certo numero di ''bytes''.
65Da notare che il comportamento di questa istruzione dipende strettamente
66dal target dove viene eseguito. Ne consegue che non è detto che tutte
67le opzioni siano disponibili.
68
69@syntax DSAVE filename [TO offset] [FROM address] [SIZE size]
70
71@example DSAVE "test" FROM finalAddress SIZE 16
72
73@target c128
74
75@seeAlso DSAVE ERROR
76
77</usermanual> */
78/* <usermanual>
79@keyword DSAVE ERROR
80
81@english
82
83The ''DSAVE ERROR'' function lets you know whether the last
84''DSAVE'' instruction returned an error or not.
85
86@italian
87
88La funzione ''DSAVE ERROR'' consente di sapere se l'ultima istruzione
89''DSAVE'' ha dato errore o meno.
90
91@syntax = DSAVE ERROR
92
93@target c128
94
95@seeAlso DSAVE
96
97</usermanual> */
98void dsave( Environment * _environment, char * _filename, char * _offset, char * _address, char * _size ) {
99
100 if ( _environment->emptyProcedure ) {
101 return;
102 }
103
104 if ( _environment->tenLinerRulesEnforced ) {
106 }
107
108 if ( _environment->sandbox ) {
110 }
111
112 if ( ! _address ) {
114 }
115
116 if ( ! _size ) {
117 CRITICAL_DSAVE_MISSING_SIZE( _filename );
118 }
119
120 c128_dsave( _environment, _filename, _offset, _address, _size );
121
122}
void dsave(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Emit code for DLOAD(...).
Definition dsave.c:58
void c128_dsave(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Definition c128.c:226
int sandbox
Definition ugbc.h:2990
int tenLinerRulesEnforced
Definition ugbc.h:2985
int emptyProcedure
Definition ugbc.h:2932
#define CRITICAL_DSAVE_MISSING_ADDRESS(v)
Definition ugbc.h:3696
#define CRITICAL_10_LINE_RULES_ENFORCED(v)
Definition ugbc.h:3550
struct _Environment Environment
Structure of compilation environment.
#define CRITICAL_DSAVE_MISSING_SIZE(v)
Definition ugbc.h:3697
#define CRITICAL_SANDBOX_ENFORCED(v)
Definition ugbc.h:3687