}
// fallback
- // if no previous section was declared we fall back to the
- // old default output
+ // if no previous section was declared we fall back to the
+ // old default output
switch (ulas.arch.type) {
case ULAS_ARCH_SM83:
if (addr >= 0x0000 && addr <= 0x7FFF) {
break;
case ULAS_SYM_FMT_SYM:
fprintf(dst, "%02d:", ulas.bank);
-
+
switch (s->tok.type) {
case ULAS_INT:
fprintf(dst, "%x", ulas_valint(&s->tok, &rc));
return 0;
}
-int ulas_asmdirbank(FILE *dst, FILE *src, const char **line,
- unsigned long n, int *rc) {
+int ulas_asmdirbank(FILE *dst, FILE *src, const char **line, unsigned long n,
+ int *rc) {
ULAS_EVALEXPRS(ulas.bank = ulas_intexpr(line, strnlen(*line, n), rc));
return *rc;
}
}
if (ulas.tok.buf[0] == ULAS_TOK_ASMDIR_BEGIN) {
- const char *dirstrs[] = {ULAS_ASMSTR_ORG,
- ULAS_ASMSTR_SET,
- ULAS_ASMSTR_BYTE,
- ULAS_ASMSTR_STR,
- ULAS_ASMSTR_FILL,
- ULAS_ASMSTR_PAD,
- ULAS_ASMSTR_INCBIN,
- ULAS_ASMSTR_DEF,
- ULAS_ASMSTR_CHKSM,
- ULAS_ASMSTR_ADV,
- ULAS_ASMSTR_SET_ENUM_DEF,
- ULAS_ASMSTR_DEFINE_ENUM,
- ULAS_ASMSTR_SETCHRCODE,
- ULAS_ASMSTR_CHR,
- ULAS_ASMSTR_REP,
- ULAS_ASMSTR_SECTION,
- ULAS_ASMSTR_BANK,
- NULL};
+ const char *dirstrs[] = {ULAS_ASMSTR_ORG, ULAS_ASMSTR_SET,
+ ULAS_ASMSTR_BYTE, ULAS_ASMSTR_STR,
+ ULAS_ASMSTR_FILL, ULAS_ASMSTR_PAD,
+ ULAS_ASMSTR_INCBIN, ULAS_ASMSTR_DEF,
+ ULAS_ASMSTR_CHKSM, ULAS_ASMSTR_ADV,
+ ULAS_ASMSTR_SET_ENUM_DEF, ULAS_ASMSTR_DEFINE_ENUM,
+ ULAS_ASMSTR_SETCHRCODE, ULAS_ASMSTR_CHR,
+ ULAS_ASMSTR_REP, ULAS_ASMSTR_SECTION,
+ ULAS_ASMSTR_BANK, ULAS_ASMSTR_BEGIN_SCOPE,
+ ULAS_ASMSTR_END_SCOPE, NULL};
enum ulas_asmdir dirs[] = {
ULAS_ASMDIR_ORG, ULAS_ASMDIR_SET,
ULAS_ASMDIR_BYTE, ULAS_ASMDIR_STR,
ULAS_ASMDIR_CHKSM, ULAS_ASMDIR_ADV,
ULAS_ASMDIR_SET_ENUM_DEF, ULAS_ASMDIR_DEFINE_ENUM,
ULAS_ASMDIR_SETCHRCODE, ULAS_ASMDIR_CHR,
- ULAS_ASMDIR_REP, ULAS_ASMDIR_SECTION, ULAS_ASMDIR_BANK};
+ ULAS_ASMDIR_REP, ULAS_ASMDIR_SECTION,
+ ULAS_ASMDIR_BANK, ULAS_ASMDIR_BEGIN_SCOPE,
+ ULAS_ASMDIR_END_SCOPE};
enum ulas_asmdir dir = ULAS_ASMDIR_NONE;
break;
case ULAS_ASMDIR_BANK:
rc = ulas_asmdirbank(dst, src, &line, n, &rc);
- break;
+ break;
+ case ULAS_ASMDIR_BEGIN_SCOPE:
+ ulas.scope++;
+ break;
+ case ULAS_ASMDIR_END_SCOPE:
+ ulas.scope--;
+ break;
case ULAS_ASMDIR_PAD:
// TODO: pad is the same as .fill n, $ - n
case ULAS_ASMDIR_NONE: