mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
pccard: Add support for 8-bit reads/writes
This commit is contained in:
parent
2eac265eac
commit
3a11560726
@ -90,3 +90,55 @@ void pccard_slot_device::write_reg(offs_t offset, uint16_t data, uint16_t mem_ma
|
||||
if (m_pccard)
|
||||
m_pccard->write_reg(offset, data, mem_mask);
|
||||
}
|
||||
|
||||
uint8_t pccard_slot_device::read_memory_byte(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
||||
if (m_pccard)
|
||||
{
|
||||
if (BIT(offset, 0))
|
||||
data = m_pccard->read_memory(offset / 2, 0xff00) >> 8;
|
||||
else
|
||||
data = m_pccard->read_memory(offset / 2, 0x00ff) >> 0;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
uint8_t pccard_slot_device::read_reg_byte(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
||||
if (m_pccard)
|
||||
{
|
||||
if (BIT(offset, 0))
|
||||
data = m_pccard->read_reg(offset / 2, 0xff00) >> 8;
|
||||
else
|
||||
data = m_pccard->read_reg(offset / 2, 0x00ff) >> 0;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void pccard_slot_device::write_memory_byte(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_pccard)
|
||||
{
|
||||
if (BIT(offset, 0))
|
||||
m_pccard->write_memory(offset / 2, data << 8, 0xff00);
|
||||
else
|
||||
m_pccard->write_memory(offset / 2, data << 0, 0x00ff);
|
||||
}
|
||||
}
|
||||
|
||||
void pccard_slot_device::write_reg_byte(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_pccard)
|
||||
{
|
||||
if (BIT(offset, 0))
|
||||
m_pccard->write_reg(offset / 2, data << 8, 0xff00);
|
||||
else
|
||||
m_pccard->write_reg(offset / 2, data << 0, 0x00ff);
|
||||
}
|
||||
}
|
||||
|
@ -51,16 +51,24 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER( battery_voltage_2_w ) { m_battery_voltage_2_cb(state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( write_protect_w ) { m_write_protect_cb(state); }
|
||||
|
||||
// 16-bit access
|
||||
uint16_t read_memory(offs_t offset, uint16_t mem_mask = ~0);
|
||||
uint16_t read_reg(offs_t offset, uint16_t mem_mask = ~0);
|
||||
void write_memory(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
void write_reg(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
|
||||
// 16-bit access, even/odd swapped
|
||||
uint16_t read_memory_swap(offs_t offset, uint16_t mem_mask = 0xffff) { return swapendian_int16(read_memory(offset, swapendian_int16(mem_mask))); }
|
||||
uint16_t read_reg_swap(offs_t offset, uint16_t mem_mask = 0xffff) { return swapendian_int16(read_reg(offset, swapendian_int16(mem_mask))); }
|
||||
void write_memory_swap(offs_t offset, uint16_t data, uint16_t mem_mask = 0xffff) { write_memory(offset, swapendian_int16(data), swapendian_int16(mem_mask)); }
|
||||
void write_reg_swap(offs_t offset, uint16_t data, uint16_t mem_mask = 0xffff) { write_reg(offset, swapendian_int16(data), swapendian_int16(mem_mask)); }
|
||||
|
||||
// 8-bit access
|
||||
uint8_t read_memory_byte(offs_t offset);
|
||||
uint8_t read_reg_byte(offs_t offset);
|
||||
void write_memory_byte(offs_t offset, uint8_t data);
|
||||
void write_reg_byte(offs_t offset, uint8_t data);
|
||||
|
||||
protected:
|
||||
virtual void device_start() override;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user