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