From 744b8b91d3005c3b6ea9ba7311ef23c3a3fc2e79 Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 8 Jan 2023 14:18:12 +0100 Subject: pic16c5x: writing to reg 2 takes one more cycle --- src/devices/cpu/i8085/i8085.cpp | 2 +- src/devices/cpu/pic16c5x/pic16c5x.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp index c29ae4a684c..aaaa1f6b288 100644 --- a/src/devices/cpu/i8085/i8085.cpp +++ b/src/devices/cpu/i8085/i8085.cpp @@ -3,7 +3,7 @@ // thanks-to:Marcel De Kogel /***************************************************************************** * - * Portable I8085A emulator V1.2 + * Portable I8085A emulator V1.3 * * Copyright Juergen Buchmueller, all rights reserved. * Partially based on information out of Z80Em by Marcel De Kogel diff --git a/src/devices/cpu/pic16c5x/pic16c5x.cpp b/src/devices/cpu/pic16c5x/pic16c5x.cpp index 8fead367f6c..757a5e02c56 100644 --- a/src/devices/cpu/pic16c5x/pic16c5x.cpp +++ b/src/devices/cpu/pic16c5x/pic16c5x.cpp @@ -466,13 +466,14 @@ void pic16c5x_device::STORE_REGFILE(offs_t addr, uint8_t data) // Write to inter break; case 1: - m_delay_timer = 2; // Timer starts after next two instructions + m_delay_timer = 2; // Timer increment is inhibited for 2 cycles if (PSA == 0) m_prescaler = 0; // Must clear the Prescaler TMR0 = data; break; case 2: SET_PC(((STATUS & PA_REG) << 4) | data); + m_inst_cycles++; break; case 3: @@ -606,7 +607,7 @@ void pic16c5x_device::btfss() { if (BIT(GET_REGFILE(ADDR), BITPOS)) { SET_PC(m_PC + 1); - m_inst_cycles += 1; // Add NOP cycles + m_inst_cycles++; // Add NOP cycles } } @@ -614,7 +615,7 @@ void pic16c5x_device::btfsc() { if (!BIT(GET_REGFILE(ADDR), BITPOS)) { SET_PC(m_PC + 1); - m_inst_cycles += 1; // Add NOP cycles + m_inst_cycles++; // Add NOP cycles } } @@ -664,7 +665,7 @@ void pic16c5x_device::decfsz() STORE_RESULT(ADDR, m_ALU); if (m_ALU == 0) { SET_PC(m_PC + 1); - m_inst_cycles += 1; // Add NOP cycles + m_inst_cycles++; // Add NOP cycles } } @@ -686,7 +687,7 @@ void pic16c5x_device::incfsz() STORE_RESULT(ADDR, m_ALU); if (m_ALU == 0) { SET_PC(m_PC + 1); - m_inst_cycles += 1; // Add NOP cycles + m_inst_cycles++; // Add NOP cycles } } -- cgit v1.2.3