void z8002_device::WRMEM_B(address_spacenum spacenum, uint32_t addr, uint8_t value) { addr = adjust_addr_for_nonseg_mode(addr); if (spacenum == AS_PROGRAM) m_program->write_byte(addr, value); else m_data->write_byte(addr, value); }
INLINE void WRMEM_B(z8000_state *cpustate, address_spacenum spacenum, UINT32 addr, UINT8 value) { addr = adjust_addr_for_nonseg_mode(cpustate, addr); if (spacenum == AS_PROGRAM) cpustate->program->write_byte(addr, value); else cpustate->data->write_byte(addr, value); }
uint8_t z8002_device::RDMEM_B(address_spacenum spacenum, uint32_t addr) { addr = adjust_addr_for_nonseg_mode(addr); if (spacenum == AS_PROGRAM) return m_program->read_byte(addr); else return m_data->read_byte(addr); }
INLINE UINT8 RDMEM_B(z8000_state *cpustate, address_spacenum spacenum, UINT32 addr) { addr = adjust_addr_for_nonseg_mode(cpustate, addr); if (spacenum == AS_PROGRAM) return cpustate->program->read_byte(addr); else return cpustate->data->read_byte(addr); }
void z8002_device::WRMEM_L(address_spacenum spacenum, uint32_t addr, uint32_t value) { addr = adjust_addr_for_nonseg_mode(addr); addr &= ~1; if (spacenum == AS_PROGRAM) { m_program->write_word(addr, value >> 16); m_program->write_word(addr_add(addr, 2), value & 0xffff); }
void z8002_device::WRMEM_W(address_spacenum spacenum, UINT32 addr, UINT16 value) { addr = adjust_addr_for_nonseg_mode(addr); addr &= ~1; if (spacenum == AS_PROGRAM) m_program->write_word(addr, value); else m_data->write_word(addr, value); }
INLINE void WRMEM_L(z8000_state *cpustate, address_spacenum spacenum, UINT32 addr, UINT32 value) { addr = adjust_addr_for_nonseg_mode(cpustate, addr); addr &= ~1; if (spacenum == AS_PROGRAM) { cpustate->program->write_word(addr, value >> 16); cpustate->program->write_word(addr_add(cpustate, addr, 2), value & 0xffff); }
uint16_t z8002_device::RDMEM_W(address_spacenum spacenum, uint32_t addr) { addr = adjust_addr_for_nonseg_mode(addr); addr &= ~1; /* hack for m20 driver: BIOS accesses 0x7f0000 and expects a segmentation violation */ if (addr >= 0x7f0000) { m_irq_req = Z8000_SEGTRAP; return 0xffff; } if (spacenum == AS_PROGRAM) return m_program->read_word(addr); else return m_data->read_word(addr); }
INLINE UINT16 RDMEM_W(z8000_state *cpustate, address_spacenum spacenum, UINT32 addr) { addr = adjust_addr_for_nonseg_mode(cpustate, addr); addr &= ~1; /* hack for m20 driver: BIOS accesses 0x7f0000 and expects a segmentation violation */ if (addr >= 0x7f0000) { cpustate->irq_req = Z8000_SEGTRAP; return 0xffff; } if (spacenum == AS_PROGRAM) return cpustate->program->read_word(addr); else return cpustate->data->read_word(addr); }
uint32_t z8002_device::RDMEM_L(address_spacenum spacenum, uint32_t addr) { uint32_t result; addr = adjust_addr_for_nonseg_mode(addr); addr &= ~1; if (spacenum == AS_PROGRAM) { result = m_program->read_word(addr) << 16; return result + m_program->read_word(addr_add(addr, 2)); } else { result = m_data->read_word(addr) << 16; return result + m_data->read_word(addr_add(addr, 2)); } }
INLINE UINT32 RDMEM_L(z8000_state *cpustate, address_spacenum spacenum, UINT32 addr) { UINT32 result; addr = adjust_addr_for_nonseg_mode(cpustate, addr); addr &= ~1; if (spacenum == AS_PROGRAM) { result = cpustate->program->read_word(addr) << 16; return result + cpustate->program->read_word(addr_add(cpustate, addr, 2)); } else { result = cpustate->data->read_word(addr) << 16; return result + cpustate->data->read_word(addr_add(cpustate, addr, 2)); } }