From 59e2a7bb4f8013121f8ad3897ca4bb019fc496ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felipe=20Corr=C3=AAa=20da=20Silva=20Sanches?= Date: Sun, 29 Nov 2015 19:16:16 -0200 Subject: [PATCH] [patinho] fixing PLA instruction and implementing PUG instruction. --- src/devices/cpu/patinhofeio/patinho_feio.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/devices/cpu/patinhofeio/patinho_feio.cpp b/src/devices/cpu/patinhofeio/patinho_feio.cpp index 966800403ce..cc408b54190 100644 --- a/src/devices/cpu/patinhofeio/patinho_feio.cpp +++ b/src/devices/cpu/patinhofeio/patinho_feio.cpp @@ -125,10 +125,20 @@ void patinho_feio_cpu_device::execute_instruction() switch (opcode & 0xF0){ case 0x00: //PLA = "Pula": Jump to address - addr = READ_BYTE_PATINHO(PC) & 0xFFF; + addr = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC); INCREMENT_PC_4K; PC = addr; return; + case 0xF0: + //PUG = "Pula e guarda": Jump and store. + // It stores the return address to addr and addr+1 + // And then jumps to addr+2 + addr = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC); + INCREMENT_PC_4K; + WRITE_BYTE_PATINHO(addr, 0x12);//(PC >> 8) & 0x0F); + WRITE_BYTE_PATINHO(addr+1, 0x34);//PC & 0xFF); + PC = addr+2; + return; } printf("unimplemented opcode: 0x%02X\n", opcode); }