Fixed addr being reset in include's pass1
This commit is contained in:
parent
a92fd8fb22
commit
08f20d35c8
|
@ -36,6 +36,7 @@ typedef struct {
|
||||||
} Program;
|
} Program;
|
||||||
|
|
||||||
Program p;
|
Program p;
|
||||||
|
static Uint16 addr = 0;
|
||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
|
@ -170,7 +171,7 @@ makemacro(char *name, FILE *f)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
makelabel(char *name, Uint16 addr)
|
makelabel(char *name)
|
||||||
{
|
{
|
||||||
Label *l;
|
Label *l;
|
||||||
if(findlabel(name))
|
if(findlabel(name))
|
||||||
|
@ -303,7 +304,6 @@ static int
|
||||||
pass1(FILE *f)
|
pass1(FILE *f)
|
||||||
{
|
{
|
||||||
int ccmnt = 0;
|
int ccmnt = 0;
|
||||||
Uint16 addr = 0;
|
|
||||||
char w[64], scope[64], subw[64];
|
char w[64], scope[64], subw[64];
|
||||||
while(fscanf(f, "%63s", w) == 1) {
|
while(fscanf(f, "%63s", w) == 1) {
|
||||||
if(skipblock(w, &ccmnt, '(', ')')) continue;
|
if(skipblock(w, &ccmnt, '(', ')')) continue;
|
||||||
|
@ -317,11 +317,11 @@ pass1(FILE *f)
|
||||||
if(!makemacro(w + 1, f))
|
if(!makemacro(w + 1, f))
|
||||||
return error("Pass 1 - Invalid macro", w);
|
return error("Pass 1 - Invalid macro", w);
|
||||||
} else if(w[0] == '@') {
|
} else if(w[0] == '@') {
|
||||||
if(!makelabel(w + 1, addr))
|
if(!makelabel(w + 1))
|
||||||
return error("Pass 1 - Invalid label", w);
|
return error("Pass 1 - Invalid label", w);
|
||||||
scpy(w + 1, scope, 64);
|
scpy(w + 1, scope, 64);
|
||||||
} else if(w[0] == '&') {
|
} else if(w[0] == '&') {
|
||||||
if(!makelabel(sublabel(subw, scope, w + 1), addr))
|
if(!makelabel(sublabel(subw, scope, w + 1)))
|
||||||
return error("Pass 1 - Invalid sublabel", w);
|
return error("Pass 1 - Invalid sublabel", w);
|
||||||
} else if(scmp(w, "include", 8)) {
|
} else if(scmp(w, "include", 8)) {
|
||||||
if(!doinclude(f, pass1))
|
if(!doinclude(f, pass1))
|
||||||
|
|
Loading…
Reference in New Issue