diff options
author | Ian C <ianc@noddybox.co.uk> | 2016-04-18 12:14:21 +0100 |
---|---|---|
committer | Ian C <ianc@noddybox.co.uk> | 2016-04-18 12:14:21 +0100 |
commit | 5dfc8ddb515c17b7c61a6e56d3ce3c57f6da2622 (patch) | |
tree | 8670d146ac6c2c4ebdfce7c41857f9a5ed0b16b6 /src/6502.c | |
parent | a8131ea5ed00c11517c2cb605834eb103ecac250 (diff) |
Fixed problem with zero page detection.
Zero page detection wasn't aggressive enough; by only doing the test on the
last past, labels weren't being updated till the final pass.
Diffstat (limited to 'src/6502.c')
-rw-r--r-- | src/6502.c | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -145,7 +145,7 @@ do \ break; \ \ case ZP_AUTO: \ - if (IsFinalPass() && *address >= 0 && *address <= 255) \ + if (*address >= 0 && *address <= 255) \ { \ *mode = ZP_mode; \ } \ @@ -834,6 +834,7 @@ static CommandStatus JMP(const char *label, int argc, char *argv[], switch(mode) { case ABSOLUTE: + case ZERO_PAGE: PCWrite(0x4c); PCWriteWord(address); return CMD_OK; @@ -861,6 +862,7 @@ static CommandStatus JSR(const char *label, int argc, char *argv[], switch(mode) { case ABSOLUTE: + case ZERO_PAGE: PCWrite(0x20); PCWriteWord(address); return CMD_OK; @@ -1493,6 +1495,7 @@ static const HandlerTable handler_table[] = void Init_6502(void) { option.zp_mode = ZP_AUTO; + SetNeededPasses(3); } @@ -1513,11 +1516,6 @@ CommandStatus SetOption_6502(int opt, int argc, char *argv[], CMD_TABLE(argv[0], zp_table, val); option.zp_mode = val->value; - - if (option.zp_mode == ZP_AUTO) - { - SetNeededPasses(3); - } break; default: |