add lsr, rol, ror
This commit is contained in:
parent
ebdf50cdf3
commit
dbb952a52b
27
cpu.c
27
cpu.c
@ -443,7 +443,12 @@ ldy(uint8_t arg)
|
|||||||
static void
|
static void
|
||||||
lsr(uint8_t arg)
|
lsr(uint8_t arg)
|
||||||
{
|
{
|
||||||
/* TODO: complete this */
|
regs.status.carry = regs.a & 1; // bit 0 in carry
|
||||||
|
regs.a >>= 1;
|
||||||
|
regs.a &= ~(1 << 7); // bit 7 cleared
|
||||||
|
|
||||||
|
STATUS_UPDATE_ZERO(regs.a);
|
||||||
|
STATUS_UPDATE_NEGATIVE(regs.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -512,13 +517,29 @@ ply(uint8_t arg)
|
|||||||
static void
|
static void
|
||||||
rol(uint8_t arg)
|
rol(uint8_t arg)
|
||||||
{
|
{
|
||||||
/* TODO: complete this */
|
uint8_t tmp;
|
||||||
|
tmp = (regs.a & (1 << 7)) > 0;
|
||||||
|
|
||||||
|
regs.a <<= 1;
|
||||||
|
regs.a |= regs.status.carry;
|
||||||
|
|
||||||
|
regs.status.carry = tmp;
|
||||||
|
STATUS_UPDATE_ZERO(regs.a);
|
||||||
|
STATUS_UPDATE_NEGATIVE(regs.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ror(uint8_t arg)
|
ror(uint8_t arg)
|
||||||
{
|
{
|
||||||
/* TODO: complete this */
|
uint8_t tmp;
|
||||||
|
tmp = regs.a & 1;
|
||||||
|
|
||||||
|
regs.a >>= 1;
|
||||||
|
regs.a |= regs.status.carry << 7;
|
||||||
|
|
||||||
|
regs.status.carry = tmp;
|
||||||
|
STATUS_UPDATE_ZERO(regs.a);
|
||||||
|
STATUS_UPDATE_NEGATIVE(regs.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user