ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
memsave.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 MEMSAVE
43
44@english
45
46The ''MEMSAVE'' instruction stores a previously defined memory area of the
47computer (see ''MEMOR'') of a defined length (see ''MEMLEN'') at an equally
48defined address in an expansion memory (see ''MEMPOS''). The command takes
49into account the settings for the transfer type (see ''MEMCONT'') and for
50the autoload of the address and count registers (see ''MEMRESTORE'').
51
52@italian
53
54L'istruzione ''MEMSAVE'' memorizza un'area di memoria del computer definita
55in precedenza (vedere ''MEMOR'') di una lunghezza definita (vedere ''MEMLEN'')
56a un indirizzo ugualmente definito in una memoria di espansione (vedere ''MEMPOS'').
57Il comando tiene conto delle impostazioni per il tipo di trasferimento (vedere
58''MEMCONT'') e per il caricamento automatico dei registri di indirizzo e conteggio
59(vedere ''MEMRESTORE'').
60
61@syntax MEMSAVE
62
63@example MEMSAVE
64
65@usedInExample tsb_memload.bas
66
67@seeAlso MEMLEN
68@seeAlso MEMPOS
69@seeAlso MEMOR
70@seeAlso MEMCONT
71@seeAlso MEMRESTORE
72@seeAlso MEMLOAD
73@seeAlso MEMDEF
74@seeAlso BANK WRITE
75
76</usermanual> */
77
78void memsave( Environment * _environment ) {
79
80 Variable * bank = variable_retrieve_or_define( _environment, "MEMBANK", VT_BYTE, 0 );
81 Variable * address1 = variable_retrieve_or_define( _environment, "MEMOR", VT_ADDRESS, 0 );
82 Variable * address2 = variable_retrieve_or_define( _environment, "MEMPOS", VT_ADDRESS, 0 );
83 Variable * size = variable_retrieve_or_define( _environment, "MEMLEN", VT_WORD, 0 );
84
85 bank_write_vars( _environment, bank->name, address1->name, address2->name, size->name );
86
87}
Variable * variable_retrieve_or_define(Environment *_environment, char *_name, VariableType _type, int _value)
int size
Definition _optimizer.c:678
void bank_write_vars(Environment *_environment, char *_address1, char *_bank, char *_address2, char *_size)
Emit ASM code for instruction BANK WRITE ....
Definition bank_write.c:49
void memsave(Environment *_environment)
Definition memsave.c:78
char * name
Definition ugbc.h:979
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
@ VT_WORD
Definition ugbc.h:455
@ VT_BYTE
Definition ugbc.h:450
@ VT_ADDRESS
Definition ugbc.h:465