ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
dload.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 DLOAD
50
51@english
52
53The ''DLOAD'' command load data from a mass storage (normally, a floppy disk) into
54the computer's memory. This data can be programs, numeric data, text, or any
55other information that has previously been saved to disk.
56
57The ''DLOAD'' command was primarily used to load numeric data, text, or
58images for use within a program. Some games allowed you to save the current
59state of the game to a disk using ''DLOAD'' so you could resume playing
60at a later time.
61
62The syntax allows
63you to load a specific file (''filename'') starting from a specific ''offset''
64within the file, towards a specific ''address'' in memory for a certain
65number of ''bytes''. Note that the behavior of this instruction strictly
66depends on the target where it is executed. It follows that not all options
67are necessarily available on every target.
68
69The time it takes to load a file depended on the speed of the drive and
70the size of the file. Files loaded had to be in the correct format for
71the computer and the program using them. The amount of data that could
72be loaded was limited by the available RAM.
73
74On the ''atari'' and ''atarixl'' target, it is not possible to omit
75the number of bytes and the starting address.
76
77On the ''c128'' and ''c128'' target, you cannot indicate
78the offset and the size.
79
80@italian
81
82Il comando ''DLOAD'' carica dati da un archivio di massa (normalmente
83un floppy disk) nella memoria del computer. Questi dati possono
84essere programmi, dati numerici, testo o qualsiasi altra informazione
85precedentemente salvata su disco.
86
87Il comando ''DLOAD'' era utilizzato principalmente per caricare dati
88numerici, testo o immagini da utilizzare all'interno di un programma.
89Alcuni giochi ti consentivano di salvare lo stato corrente del gioco
90su un disco utilizzando ''DLOAD'' in modo da poter riprendere a
91giocare in un secondo momento.
92
93La sintassi ti consente di caricare un file specifico (''nomefile'')
94a partire da uno specifico ''offset'' all'interno del file, verso
95uno specifico ''indirizzo'' in memoria per un certo numero di
96''byte''. Il comportamento di questa istruzione dipende strettamente
97dal target in cui viene eseguita. Ne consegue che non tutte le
98opzioni sono necessariamente disponibili su ogni target.
99
100Il tempo necessario per caricare un file dipende dalla velocità
101dell'unità e dalle dimensioni del file. I file caricati dovevano
102essere nel formato corretto per il computer e il programma che
103li utilizzava. La quantità di dati che potevano essere caricati
104era limitata dalla RAM disponibile.
105
106Sul target ''atari'' e ''atarixl'', non è possibile omettere il
107numero di byte e l'indirizzo di partenza.
108
109@syntax DLOAD filename [FROM offset] [TO address] [SIZE size]
110
111@example DLOAD "test" TO finalAddress SIZE 16
112
113@target c128
114
115@seeAlso DLOAD ERROR
116
117</usermanual> */
118/* <usermanual>
119@keyword DLOAD ERROR
120
121@english
122
123The ''DLOAD ERROR'' function lets you know whether the last
124''DLOAD'' instruction returned an error or not.
125
126@italian
127
128La funzione ''DLOAD ERROR'' consente di sapere se l'ultima istruzione
129''DLOAD'' ha dato errore o meno.
130
131@syntax = DLOAD ERROR
132
133@target c128
134
135@seeAlso DLOAD
136
137</usermanual> */
138
139void dload( Environment * _environment, char * _filename, char * _offset, char * _address, char * _bank, char * _size ) {
140
141 if ( _environment->emptyProcedure ) {
142 return;
143 }
144
145 if ( _environment->tenLinerRulesEnforced ) {
147 }
148
149 if ( _environment->sandbox ) {
151 }
152
153 if ( _offset ) {
154 WARNING_DLOAD_IGNORED_OFFSET( _filename );
155 }
156
157 if ( _size ) {
158 WARNING_DLOAD_IGNORED_SIZE( _filename );
159 }
160
161 c128_dload( _environment, _filename, _offset, _address, _size );
162
163}
void dload(Environment *_environment, char *_filename, char *_offset, char *_address, char *_bank, char *_size)
Emit code for DLOAD(...).
Definition dload.c:60
void c128_dload(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Definition c128.c:170
int sandbox
Definition ugbc.h:2990
int tenLinerRulesEnforced
Definition ugbc.h:2985
int emptyProcedure
Definition ugbc.h:2932
#define CRITICAL_10_LINE_RULES_ENFORCED(v)
Definition ugbc.h:3550
#define WARNING_DLOAD_IGNORED_SIZE(f)
Definition ugbc.h:3882
struct _Environment Environment
Structure of compilation environment.
#define WARNING_DLOAD_IGNORED_OFFSET(f)
Definition ugbc.h:3883
#define CRITICAL_SANDBOX_ENFORCED(v)
Definition ugbc.h:3687