ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
bank_get_count.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#if defined(__c128__)
38
48/* <usermanual>
49@keyword BANK COUNT (constant)
50
51@english
52
53This function returns the number of expanded memory banks available to the program.
54Depending on the target, this number can range from zero to the actual number of banks.
55
56@italian
57
58Questa funzione restituisce il numero di banchi di memoria espansa, disponibili per
59il programma. A seconda del target, questo numero può andare da zero al numero
60effettivo di banchi.
61
62@syntax = BANK COUNT
63
64@example IF BANK COUNT > 0 THEN
65@example PRINT "there are banks!"
66@example ENDIF
67
68@usedInExample expansion_bank_01.bas
69@usedInExample expansion_bank_02.bas
70@usedInExample expansion_bank_03.bas
71@usedInExample expansion_bank_04.bas
72@usedInExample expansion_bank_05.bas
73
74@seeAlso BANK
75@seeAlso BANK ADDRESS
76@target all
77</usermanual> */
78Variable * bank_get_count( Environment * _environment ) {
79
80 Variable * result = variable_temporary( _environment, VT_BYTE, "(bank count)" );
81
82 int bankCount = 0;
83 Bank * bank = _environment->expansionBanks;
84 while( bank ) {
85 ++bankCount;
86 bank = bank->next;
87 }
88
89 variable_store( _environment, result->name, bankCount );
90
91 return result;
92
93}
94
95#endif
Variable * variable_temporary(Environment *_environment, VariableType _type, char *_meaning)
Define a temporary variable.
Variable * variable_store(Environment *_environment, char *_destination, unsigned int _value)
Store a direct value to a variable.
Variable * bank_get_count(Environment *_environment)
Emit ASM code for instruction = BANK COUNT.
struct _Bank * next
Definition ugbc.h:185
Bank * expansionBanks
Definition ugbc.h:3005
char * name
Definition ugbc.h:979
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
@ VT_BYTE
Definition ugbc.h:450
struct _Bank Bank
Structure of a single bank.