summaryrefslogtreecommitdiff
path: root/cpu.c
diff options
context:
space:
mode:
authorvin <git@vineetk.net>2024-06-10 12:54:05 +0530
committervin <git@vineetk.net>2024-06-10 14:28:13 +0530
commit454276a50c5843e3401f9bc54d80cb7dda40b782 (patch)
tree301126d2bb95befdd7d7b76e2be29ca1ca608bdd /cpu.c
parente07d5917a1625e207d1ba96b7e0d1e1c493040b2 (diff)
implement sta, stx, sty
Diffstat (limited to 'cpu.c')
-rw-r--r--cpu.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/cpu.c b/cpu.c
index c0e3877..acb4efb 100644
--- a/cpu.c
+++ b/cpu.c
@@ -559,21 +559,21 @@ sei(uint8_t arg)
559} 559}
560 560
561static void 561static void
562sta(uint8_t arg) 562sta(uint16_t mem)
563{ 563{
564/* TODO: complete this */ 564 memwrite(mem, regs.a);
565} 565}
566 566
567static void 567static void
568stx(uint8_t arg) 568stx(uint16_t mem)
569{ 569{
570/* TODO: complete this */ 570 memwrite(mem, regs.x);
571} 571}
572 572
573static void 573static void
574sty(uint8_t arg) 574sty(uint16_t mem)
575{ 575{
576/* TODO: complete this */ 576 memwrite(mem, regs.y);
577} 577}
578 578
579static void 579static void
@@ -1219,59 +1219,59 @@ interpret(void)
1219 cycles += 2; 1219 cycles += 2;
1220 break; 1220 break;
1221 case 0x85: 1221 case 0x85:
1222 sta(opcode_arg(AM_ZP)); 1222 sta(opcode_mem(AM_ZP));
1223 cycles += 4; 1223 cycles += 4;
1224 break; 1224 break;
1225 case 0x95: 1225 case 0x95:
1226 sta(opcode_arg(AM_ZP_X)); 1226 sta(opcode_mem(AM_ZP_X));
1227 cycles += 5; 1227 cycles += 5;
1228 break; 1228 break;
1229 case 0x8d: 1229 case 0x8d:
1230 sta(opcode_arg(AM_ABS)); 1230 sta(opcode_mem(AM_ABS));
1231 cycles += 5; 1231 cycles += 5;
1232 break; 1232 break;
1233 case 0x9d: 1233 case 0x9d:
1234 sta(opcode_arg(AM_ABS_X)); 1234 sta(opcode_mem(AM_ABS_X));
1235 cycles += 6; 1235 cycles += 6;
1236 break; 1236 break;
1237 case 0x99: 1237 case 0x99:
1238 sta(opcode_arg(AM_ABS_Y)); 1238 sta(opcode_mem(AM_ABS_Y));
1239 cycles += 6; 1239 cycles += 6;
1240 break; 1240 break;
1241 case 0x92: 1241 case 0x92:
1242 sta(opcode_arg(AM_IND)); 1242 sta(opcode_mem(AM_IND));
1243 cycles += 6; 1243 cycles += 6;
1244 break; 1244 break;
1245 case 0x81: 1245 case 0x81:
1246 sta(opcode_arg(AM_IND_X)); 1246 sta(opcode_mem(AM_IND_X));
1247 cycles += 7; 1247 cycles += 7;
1248 break; 1248 break;
1249 case 0x91: 1249 case 0x91:
1250 sta(opcode_arg(AM_IND_Y)); 1250 sta(opcode_mem(AM_IND_Y));
1251 cycles += 7; 1251 cycles += 7;
1252 break; 1252 break;
1253 case 0x86: 1253 case 0x86:
1254 stx(opcode_arg(AM_ZP)); 1254 stx(opcode_mem(AM_ZP));
1255 cycles += 4; 1255 cycles += 4;
1256 break; 1256 break;
1257 case 0x96: 1257 case 0x96:
1258 stx(opcode_arg(AM_ZP_Y)); 1258 stx(opcode_mem(AM_ZP_Y));
1259 cycles += 5; 1259 cycles += 5;
1260 break; 1260 break;
1261 case 0x8e: 1261 case 0x8e:
1262 stx(opcode_arg(AM_ABS)); 1262 stx(opcode_mem(AM_ABS));
1263 cycles += 5; 1263 cycles += 5;
1264 break; 1264 break;
1265 case 0x84: 1265 case 0x84:
1266 sty(opcode_arg(AM_ZP)); 1266 sty(opcode_mem(AM_ZP));
1267 cycles += 4; 1267 cycles += 4;
1268 break; 1268 break;
1269 case 0x94: 1269 case 0x94:
1270 sty(opcode_arg(AM_ZP_X)); 1270 sty(opcode_mem(AM_ZP_X));
1271 cycles += 5; 1271 cycles += 5;
1272 break; 1272 break;
1273 case 0x8c: 1273 case 0x8c:
1274 sty(opcode_arg(AM_ABS)); 1274 sty(opcode_mem(AM_ABS));
1275 cycles += 5; 1275 cycles += 5;
1276 break; 1276 break;
1277 case 0xaa: 1277 case 0xaa: