mirror of
https://github.com/pevans/erc-c.git
synced 2024-12-21 08:30:55 +00:00
Missing status modifications in a number of instructions
This commit is contained in:
parent
b0aa6d400a
commit
3954b1647f
@ -17,6 +17,8 @@ DEFINE_INST(adc)
|
||||
{
|
||||
CARRY_BIT();
|
||||
cpu->A += oper + carry;
|
||||
|
||||
mos6502_modify_status(cpu, NEGATIVE | OVERFLOW | CARRY | ZERO, cpu->A);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -59,6 +61,7 @@ DEFINE_INST(dec)
|
||||
{
|
||||
if (cpu->last_addr) {
|
||||
vm_segment_set(cpu->memory, cpu->last_addr, oper - 1);
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, oper - 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,6 +71,7 @@ DEFINE_INST(dec)
|
||||
DEFINE_INST(dex)
|
||||
{
|
||||
cpu->X--;
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, cpu->X);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -76,6 +80,7 @@ DEFINE_INST(dex)
|
||||
DEFINE_INST(dey)
|
||||
{
|
||||
cpu->Y--;
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, cpu->Y);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -87,6 +92,7 @@ DEFINE_INST(inc)
|
||||
{
|
||||
if (cpu->last_addr) {
|
||||
vm_segment_set(cpu->memory, cpu->last_addr, oper + 1);
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, oper + 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -96,6 +102,7 @@ DEFINE_INST(inc)
|
||||
DEFINE_INST(inx)
|
||||
{
|
||||
cpu->X++;
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, cpu->X);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -104,6 +111,7 @@ DEFINE_INST(inx)
|
||||
DEFINE_INST(iny)
|
||||
{
|
||||
cpu->Y++;
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, cpu->Y);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -116,4 +124,6 @@ DEFINE_INST(sbc)
|
||||
{
|
||||
CARRY_BIT();
|
||||
cpu->A = cpu->A - oper - carry;
|
||||
|
||||
mos6502_modify_status(cpu, NEGATIVE | OVERFLOW | CARRY | ZERO, cpu->A);
|
||||
}
|
||||
|
@ -15,6 +15,7 @@
|
||||
DEFINE_INST(and)
|
||||
{
|
||||
cpu->A &= oper;
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, cpu->A);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -42,6 +43,8 @@ DEFINE_INST(asl)
|
||||
} else {
|
||||
cpu->A = oper;
|
||||
}
|
||||
|
||||
mos6502_modify_status(cpu, NEGATIVE | CARRY | ZERO, oper);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -75,6 +78,7 @@ DEFINE_INST(bit)
|
||||
DEFINE_INST(eor)
|
||||
{
|
||||
cpu->A ^= oper;
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, cpu->A);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -98,6 +102,9 @@ DEFINE_INST(lsr)
|
||||
} else {
|
||||
cpu->A = oper;
|
||||
}
|
||||
|
||||
// NEGATIVE is intentionally not included here.
|
||||
mos6502_modify_status(cpu, CARRY | ZERO, oper);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -107,6 +114,7 @@ DEFINE_INST(lsr)
|
||||
DEFINE_INST(ora)
|
||||
{
|
||||
cpu->A |= oper;
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, cpu->A);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -133,6 +141,8 @@ DEFINE_INST(rol)
|
||||
} else {
|
||||
cpu->A = oper;
|
||||
}
|
||||
|
||||
mos6502_modify_status(cpu, NEGATIVE | CARRY | ZERO, oper);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -158,4 +168,6 @@ DEFINE_INST(ror)
|
||||
} else {
|
||||
cpu->A = oper;
|
||||
}
|
||||
|
||||
mos6502_modify_status(cpu, NEGATIVE | CARRY | ZERO, oper);
|
||||
}
|
||||
|
@ -58,6 +58,7 @@ DEFINE_INST(php)
|
||||
DEFINE_INST(pla)
|
||||
{
|
||||
cpu->A = mos6502_pop_stack(cpu);
|
||||
mos6502_modify_status(cpu, NEGATIVE | ZERO, cpu->A);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user