mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-09-22 22:48:08 +03:00
Make sysVarAttribute local in variable.c
This commit is contained in:
+4
-4
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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[];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user