aboutsummaryrefslogtreecommitdiff
path: root/src/6502.c
diff options
context:
space:
mode:
authorIan C <ianc@noddybox.co.uk>2016-04-18 12:14:21 +0100
committerIan C <ianc@noddybox.co.uk>2016-04-18 12:14:21 +0100
commit5dfc8ddb515c17b7c61a6e56d3ce3c57f6da2622 (patch)
tree8670d146ac6c2c4ebdfce7c41857f9a5ed0b16b6 /src/6502.c
parenta8131ea5ed00c11517c2cb605834eb103ecac250 (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.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/6502.c b/src/6502.c
index a6b377e..50ae07c 100644
--- a/src/6502.c
+++ b/src/6502.c
@@ -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: