Make sysVarAttribute local in variable.c

This commit is contained in:
kichikuou
2021-10-24 16:28:02 +09:00
parent 78cc181271
commit 8e4070e91e
3 changed files with 17 additions and 18 deletions
+4 -4
View File
@@ -77,15 +77,15 @@ void commandDR() {
void commandDF() {
int *data_var = getCaliVariable();
int varno = preVarNo;
int page = preVarPage;
int offset = preVarIndex;
int cnt = getCaliValue();
int data = getCaliValue();
DEBUG_COMMAND("DF %p,%d,%d:\n", data_var, cnt, data);
const arrayVarStruct* array = &sysVarAttribute[varno];
if (array->page) {
int maxlen = arrayVarBuffer[array->page - 1].size - array->offset - *array->pointvar;
if (page) {
int maxlen = arrayVarBuffer[page - 1].size - offset;
if (cnt > maxlen) {
WARNING("%03d:%05x: count exceeds array boundary (%d > %d)\n", sl_getPage(), sl_getIndex(), cnt, maxlen);
cnt = maxlen;
+13 -7
View File
@@ -30,10 +30,16 @@
#include "xsystem35.h"
#include "scenario.h"
typedef struct {
int *pointvar;
int page;
int offset;
} VariableAttributes;
/* システム変数 */
int sysVar[SYSVAR_MAX];
/* 配列変数の情報 */
arrayVarStruct sysVarAttribute[SYSVAR_MAX];
static VariableAttributes attributes[SYSVAR_MAX];
/* 配列本体 */
arrayVarBufferStruct arrayVarBuffer[ARRAYVAR_PAGEMAX];
/* 64bit変数 */
@@ -57,7 +63,7 @@ static char *advance(const char *s, int n) {
}
int *v_ref(int var) {
arrayVarStruct *attr = &sysVarAttribute[var];
VariableAttributes *attr = &attributes[var];
preVarPage = attr->page;
preVarNo = var;
@@ -80,7 +86,7 @@ int *v_ref(int var) {
}
int *v_ref_indexed(int var, int index) {
arrayVarStruct *attr = &sysVarAttribute[var];
VariableAttributes *attr = &attributes[var];
preVarPage = attr->page;
preVarNo = var;
@@ -131,15 +137,15 @@ extern boolean v_defineArrayVar(int datavar, int *pointvar, int offset, int page
if (page < 0 || page > ARRAYVAR_PAGEMAX - 1) { return false; }
if (offset < 0 || offset >= arrayVarBuffer[page - 1].size) { return false; }
sysVarAttribute[datavar].pointvar = pointvar;
sysVarAttribute[datavar].page = page;
sysVarAttribute[datavar].offset = offset;
attributes[datavar].pointvar = pointvar;
attributes[datavar].page = page;
attributes[datavar].offset = offset;
return true;
}
/* 配列変数の割り当て解除 DR */
extern boolean v_releaseArrayVar(int datavar) {
sysVarAttribute[datavar].page = 0;
attributes[datavar].page = 0;
return true;
}
-7
View File
@@ -39,14 +39,7 @@ typedef struct {
int *value;
} arrayVarBufferStruct;
typedef struct {
int *pointvar;
int page;
int offset;
} arrayVarStruct;
extern int sysVar[];
extern arrayVarStruct sysVarAttribute[];
extern arrayVarBufferStruct arrayVarBuffer[];
extern double longVar[];