From 00cec5678e546c2eacceff9da5a342e3963ef5b7 Mon Sep 17 00:00:00 2001 From: Bradford Lamson-Scribner Date: Sun, 31 May 2020 08:59:09 -0600 Subject: [PATCH] internal/vm/{exec_funcs,opcodes}: add support for executing INX --- internal/vm/exec_funcs.go | 10 ++++++++++ internal/vm/opcodes.go | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/internal/vm/exec_funcs.go b/internal/vm/exec_funcs.go index 55607b5..858f8bb 100644 --- a/internal/vm/exec_funcs.go +++ b/internal/vm/exec_funcs.go @@ -69,3 +69,13 @@ func execINX(a *Appleone, o op) error { a.setNegativeIfOverflow(b) return nil } + +// Y + 1 -> Y N Z C I D V +// + + - - - - +func execINY(a *Appleone, o op) error { + b := a.cpu.y + 1 + a.cpu.y = b + a.setZeroIfNeeded(b) + a.setNegativeIfOverflow(b) + return nil +} diff --git a/internal/vm/opcodes.go b/internal/vm/opcodes.go index 1601278..2896aa0 100644 --- a/internal/vm/opcodes.go +++ b/internal/vm/opcodes.go @@ -113,13 +113,13 @@ var opcodes = map[uint8]op{ // addressing assembler opc bytes cyles // -------------------------------------------- // implied INX E8 1 2 - 0xE8: newOp("INX", 0xE8, 1, implied, todo), + 0xE8: newOp("INX", 0xE8, 1, implied, execINX), // INY Increment Index Y by One // addressing assembler opc bytes cyles // -------------------------------------------- // implied INY C8 1 2 - 0xC8: newOp("INY", 0xC8, 1, implied, todo), + 0xC8: newOp("INY", 0xC8, 1, implied, execINY), // TAX Transfer Accumulator to Index X // addressing assembler opc bytes cyles