cpu/z80/z84c015.cpp: Isolated cpu-specific memory translate functions (#13581)

This commit is contained in:
holub 2025-04-11 11:04:01 -04:00 committed by GitHub
parent f34dcc20ec
commit 08ff607f3f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 37 additions and 11 deletions

View File

@ -179,12 +179,12 @@ uint32_t t6a84_device::stack_address(uint16_t address)
uint8_t t6a84_device::stack_read(uint16_t addr)
{
return m_stack.read_byte(translate_memory_address(addr));
return m_stack.read_byte(addr);
}
void t6a84_device::stack_write(uint16_t addr, uint8_t value)
{
m_stack.write_byte(translate_memory_address((uint32_t) addr), value);
m_stack.write_byte(addr, value);
}
uint8_t t6a84_device::data_page_r()

View File

@ -73,7 +73,7 @@ void z80_device::leave_halt()
***************************************************************/
u8 z80_device::data_read(u16 addr)
{
return m_data.read_interruptible(translate_memory_address(addr));
return m_data.read_interruptible(addr);
}
/***************************************************************
@ -81,7 +81,7 @@ u8 z80_device::data_read(u16 addr)
***************************************************************/
void z80_device::data_write(u16 addr, u8 value)
{
m_data.write_interruptible(translate_memory_address((u32)addr), value);
m_data.write_interruptible(addr, value);
}
/***************************************************************
@ -91,7 +91,7 @@ void z80_device::data_write(u16 addr, u8 value)
***************************************************************/
u8 z80_device::opcode_read()
{
return m_opcodes.read_byte(translate_memory_address(PC));
return m_opcodes.read_byte(PC);
}
/****************************************************************
@ -103,7 +103,7 @@ u8 z80_device::opcode_read()
***************************************************************/
u8 z80_device::arg_read()
{
return m_args.read_byte(translate_memory_address(PC));
return m_args.read_byte(PC);
}
/***************************************************************
@ -467,14 +467,13 @@ void z80_device::set_f(u8 f)
void z80_device::illegal_1()
{
LOGMASKED(LOG_UNDOC, "ill. opcode $%02x $%02x ($%04x)\n",
m_opcodes.read_byte(translate_memory_address((PC - 1) & 0xffff)),
m_opcodes.read_byte(translate_memory_address(PC)), PC - 1);
m_opcodes.read_byte((PC - 1) & 0xffff), m_opcodes.read_byte(PC), PC - 1);
}
void z80_device::illegal_2()
{
LOGMASKED(LOG_UNDOC, "ill. opcode $ed $%02x\n",
m_opcodes.read_byte(translate_memory_address((PC - 1) & 0xffff)));
m_opcodes.read_byte((PC - 1) & 0xffff));
}
/****************************************************************************

View File

@ -66,7 +66,6 @@ protected:
// device_memory_interface implementation
virtual space_config_vector memory_space_config() const override;
virtual u32 translate_memory_address(u16 address) { return address; }
// device_state_interface implementation
virtual void state_import(const device_state_entry &entry) override;

View File

@ -9,6 +9,8 @@
#include "emu.h"
#include "z84c015.h"
#include "z80.inc"
DEFINE_DEVICE_TYPE(Z84C015, z84c015_device, "z84c015", "Zilog Z84C015")
void z84c015_device::internal_io_map(address_map &map) const
@ -60,6 +62,26 @@ u32 z84c015_device::translate_memory_address(u16 addr)
? 0x20000 : 0) | addr;
}
u8 z84c015_device::data_read(u16 addr)
{
return m_data.read_interruptible(translate_memory_address(addr));
}
void z84c015_device::data_write(u16 addr, u8 value)
{
m_data.write_interruptible(translate_memory_address(addr), value);
}
u8 z84c015_device::opcode_read()
{
return m_opcodes.read_byte(translate_memory_address(PC));
}
u8 z84c015_device::arg_read()
{
return m_args.read_byte(translate_memory_address(PC));
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------

View File

@ -40,9 +40,15 @@ protected:
void internal_io_map(address_map &map) const;
virtual space_config_vector memory_space_config() const override;
virtual bool memory_translate(int spacenum, int intention, offs_t &address, address_space *&target_space) override;
virtual u32 translate_memory_address(u16 address) override;
u8 data_read(u16 addr) override;
void data_write(u16 addr, u8 value) override;
u8 opcode_read() override;
u8 arg_read() override;
private:
u32 translate_memory_address(u16 address);
// system control registers
u8 m_scrp;
u8 m_wcr;