implement se?() opcodes and remove extra 65c02 opcodes

This commit is contained in:
Vineet K 2024-06-10 12:50:00 +05:30
parent 23008662ce
commit e07d5917a1

420
cpu.c
View File

@ -206,18 +206,6 @@ asl(uint8_t arg)
STATUS_UPDATE_NEGATIVE(regs.a); STATUS_UPDATE_NEGATIVE(regs.a);
} }
static void
bbr(uint8_t arg)
{
/* TODO: complete this */
}
static void
bbs(uint8_t arg)
{
/* TODO: complete this */
}
static void static void
bcc(uint8_t arg) bcc(uint8_t arg)
{ {
@ -268,12 +256,6 @@ bpl(uint8_t arg)
regs.pc += arg; regs.pc += arg;
} }
static void
bra(uint8_t arg)
{
/* TODO: complete this */
}
static void static void
brk(void) brk(void)
{ {
@ -527,12 +509,6 @@ ply(uint8_t arg)
/* TODO: complete this */ /* TODO: complete this */
} }
static void
rmb(uint8_t arg)
{
/* TODO: complete this */
}
static void static void
rol(uint8_t arg) rol(uint8_t arg)
{ {
@ -567,25 +543,19 @@ sbc(uint8_t arg)
static void static void
sec(uint8_t arg) sec(uint8_t arg)
{ {
/* TODO: complete this */ regs.status.carry = 1;
} }
static void static void
sed(uint8_t arg) sed(uint8_t arg)
{ {
/* TODO: complete this */ regs.status.decimal_mode = 1;
} }
static void static void
sei(uint8_t arg) sei(uint8_t arg)
{ {
/* TODO: complete this */ regs.status.interrupt_disable = 1;
}
static void
smb(uint8_t arg)
{
/* TODO: complete this */
} }
static void static void
@ -594,12 +564,6 @@ sta(uint8_t arg)
/* TODO: complete this */ /* TODO: complete this */
} }
static void
stp(uint8_t arg)
{
/* TODO: complete this */
}
static void static void
stx(uint8_t arg) stx(uint8_t arg)
{ {
@ -612,12 +576,6 @@ sty(uint8_t arg)
/* TODO: complete this */ /* TODO: complete this */
} }
static void
stz(uint8_t arg)
{
/* TODO: complete this */
}
static void static void
tax(void) tax(void)
{ {
@ -633,18 +591,6 @@ tay(uint8_t arg)
/* TODO: complete this */ /* TODO: complete this */
} }
static void
trb(uint8_t arg)
{
/* TODO: complete this */
}
static void
tsb(uint8_t arg)
{
/* TODO: complete this */
}
static void static void
tsx(uint8_t arg) tsx(uint8_t arg)
{ {
@ -669,18 +615,6 @@ tya(uint8_t arg)
/* TODO: complete this */ /* TODO: complete this */
} }
static void
wai(uint8_t arg)
{
/* TODO: complete this */
}
static void
unp(uint8_t arg)
{
/* TODO: complete this */
}
static void static void
interpret(void) interpret(void)
{ {
@ -784,70 +718,6 @@ interpret(void)
asl(opcode_arg(AM_ABS_X)); asl(opcode_arg(AM_ABS_X));
cycles += 6; cycles += 6;
break; break;
case 0x0f:
bbr(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x1f:
bbr(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x2f:
bbr(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x3f:
bbr(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x4f:
bbr(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x5f:
bbr(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x6f:
bbr(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x7f:
bbr(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x8f:
bbs(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x9f:
bbs(opcode_arg(AM_REL));
cycles += 4;
break;
case 0xaf:
bbs(opcode_arg(AM_REL));
cycles += 4;
break;
case 0xbf:
bbs(opcode_arg(AM_REL));
cycles += 4;
break;
case 0xcf:
bbs(opcode_arg(AM_REL));
cycles += 4;
break;
case 0xdf:
bbs(opcode_arg(AM_REL));
cycles += 4;
break;
case 0xef:
bbs(opcode_arg(AM_REL));
cycles += 4;
break;
case 0xff:
bbs(opcode_arg(AM_REL));
cycles += 4;
break;
case 0x90: case 0x90:
bcc(opcode_arg(AM_IMM)); bcc(opcode_arg(AM_IMM));
cycles += 2; cycles += 2;
@ -892,10 +762,6 @@ interpret(void)
bpl(opcode_arg(AM_IMM)); bpl(opcode_arg(AM_IMM));
cycles += 2; cycles += 2;
break; break;
case 0x80:
bra(opcode_arg(AM_IMM));
cycles += 3;
break;
case 0x00: case 0x00:
brk(); brk();
cycles += 7; cycles += 7;
@ -1256,38 +1122,6 @@ interpret(void)
ply(opcode_arg(AM_ACC)); ply(opcode_arg(AM_ACC));
cycles += 4; cycles += 4;
break; break;
case 0x07:
rmb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x17:
rmb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x27:
rmb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x37:
rmb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x47:
rmb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x57:
rmb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x67:
rmb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x77:
rmb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x2a: case 0x2a:
rol(opcode_arg(AM_ACC)); rol(opcode_arg(AM_ACC));
cycles += 2; cycles += 2;
@ -1384,38 +1218,6 @@ interpret(void)
sei(opcode_arg(AM_ACC)); sei(opcode_arg(AM_ACC));
cycles += 2; cycles += 2;
break; break;
case 0x87:
smb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x97:
smb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0xa7:
smb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0xb7:
smb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0xc7:
smb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0xd7:
smb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0xe7:
smb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0xf7:
smb(opcode_arg(AM_REL));
cycles += 5;
break;
case 0x85: case 0x85:
sta(opcode_arg(AM_ZP)); sta(opcode_arg(AM_ZP));
cycles += 4; cycles += 4;
@ -1448,10 +1250,6 @@ interpret(void)
sta(opcode_arg(AM_IND_Y)); sta(opcode_arg(AM_IND_Y));
cycles += 7; cycles += 7;
break; break;
case 0xdb:
stp(opcode_arg(AM_ACC));
cycles += 2;
break;
case 0x86: case 0x86:
stx(opcode_arg(AM_ZP)); stx(opcode_arg(AM_ZP));
cycles += 4; cycles += 4;
@ -1476,22 +1274,6 @@ interpret(void)
sty(opcode_arg(AM_ABS)); sty(opcode_arg(AM_ABS));
cycles += 5; cycles += 5;
break; break;
case 0x64:
stz(opcode_arg(AM_ZP));
cycles += 4;
break;
case 0x74:
stz(opcode_arg(AM_ZP_X));
cycles += 5;
break;
case 0x9c:
stz(opcode_arg(AM_ABS));
cycles += 5;
break;
case 0x9e:
stz(opcode_arg(AM_ABS_X));
cycles += 6;
break;
case 0xaa: case 0xaa:
tax(); tax();
cycles += 2; cycles += 2;
@ -1500,22 +1282,6 @@ interpret(void)
tay(opcode_arg(AM_ACC)); tay(opcode_arg(AM_ACC));
cycles += 2; cycles += 2;
break; break;
case 0x14:
trb(opcode_arg(AM_ZP));
cycles += 5;
break;
case 0x1c:
trb(opcode_arg(AM_ABS));
cycles += 6;
break;
case 0x04:
tsb(opcode_arg(AM_ZP));
cycles += 5;
break;
case 0x0c:
tsb(opcode_arg(AM_ABS));
cycles += 6;
break;
case 0xba: case 0xba:
tsx(opcode_arg(AM_ACC)); tsx(opcode_arg(AM_ACC));
cycles += 2; cycles += 2;
@ -1532,186 +1298,6 @@ interpret(void)
tya(opcode_arg(AM_ACC)); tya(opcode_arg(AM_ACC));
cycles += 2; cycles += 2;
break; break;
case 0xcb:
wai(opcode_arg(AM_ACC));
cycles += 5;
break;
case 0x03:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x0b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x13:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x1b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x23:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x2b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x33:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x3b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x43:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x4b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x53:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x5b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x63:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x6b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x73:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x7b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x83:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x8b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x93:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x9b:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xa3:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xab:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xb3:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xbb:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xc3:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xd3:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xe3:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xeb:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xf3:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0xfb:
unp(opcode_arg(AM_ACC));
cycles += 1;
break;
case 0x02:
unp(opcode_arg(AM_IMM));
cycles += 2;
break;
case 0x22:
unp(opcode_arg(AM_IMM));
cycles += 2;
break;
case 0x42:
unp(opcode_arg(AM_IMM));
cycles += 2;
break;
case 0x62:
unp(opcode_arg(AM_IMM));
cycles += 2;
break;
case 0x82:
unp(opcode_arg(AM_IMM));
cycles += 2;
break;
case 0xc2:
unp(opcode_arg(AM_IMM));
cycles += 2;
break;
case 0xe2:
unp(opcode_arg(AM_IMM));
cycles += 2;
break;
case 0x44:
unp(opcode_arg(AM_ZP));
cycles += 3;
break;
case 0x54:
unp(opcode_arg(AM_ZP_X));
cycles += 4;
break;
case 0xd4:
unp(opcode_arg(AM_ZP_X));
cycles += 4;
break;
case 0xf4:
unp(opcode_arg(AM_ZP_X));
cycles += 4;
break;
case 0x5c:
unp(opcode_arg(AM_ABS));
cycles += 8;
break;
case 0xdc:
unp(opcode_arg(AM_ABS_X));
cycles += 4;
break;
case 0xfc:
unp(opcode_arg(AM_ABS_X));
cycles += 4;
break;
default: default:
printf("opcode $%02X not implemented\n", opcode); printf("opcode $%02X not implemented\n", opcode);
break; break;