diff options
Diffstat (limited to 'src/devices/cpu/asap/asap.cpp')
-rw-r--r-- | src/devices/cpu/asap/asap.cpp | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp index 4b2505d847a..9df9049d5ba 100644 --- a/src/devices/cpu/asap/asap.cpp +++ b/src/devices/cpu/asap/asap.cpp @@ -151,9 +151,7 @@ asap_device::asap_device(const machine_config &mconfig, const char *tag, device_ m_ppc(0), m_nextpc(0), m_irq_state(0), - m_icount(0), - m_program(nullptr), - m_cache(nullptr) + m_icount(0) { // initialize the src2val table to contain immediates for low values for (int i = 0; i < REGBASE; i++) @@ -183,8 +181,8 @@ asap_device::asap_device(const machine_config &mconfig, const char *tag, device_ void asap_device::device_start() { // get our address spaces - m_program = &space(AS_PROGRAM); - m_cache = m_program->cache<2, 0, ENDIANNESS_LITTLE>(); + space(AS_PROGRAM).cache(m_cache); + space(AS_PROGRAM).specific(m_program); // register our state for the debugger state_add(STATE_GENPC, "GENPC", m_pc).noshow(); @@ -321,7 +319,7 @@ std::unique_ptr<util::disasm_interface> asap_device::create_disassembler() inline uint32_t asap_device::readop(offs_t pc) { - return m_cache->read_dword(pc); + return m_cache.read_dword(pc); } @@ -332,7 +330,7 @@ inline uint32_t asap_device::readop(offs_t pc) inline uint8_t asap_device::readbyte(offs_t address) { // no alignment issues with bytes - return m_program->read_byte(address); + return m_program.read_byte(address); } @@ -344,10 +342,10 @@ inline uint16_t asap_device::readword(offs_t address) { // aligned reads are easy if (WORD_ALIGNED(address)) - return m_program->read_word(address); + return m_program.read_word(address); // misaligned reads are tricky - return m_program->read_dword(address & ~3) >> (address & 3); + return m_program.read_dword(address & ~3) >> (address & 3); } @@ -359,10 +357,10 @@ inline uint32_t asap_device::readlong(offs_t address) { // aligned reads are easy if (DWORD_ALIGNED(address)) - return m_program->read_dword(address); + return m_program.read_dword(address); // misaligned reads are tricky - return m_program->read_dword(address & ~3) >> (address & 3); + return m_program.read_dword(address & ~3) >> (address & 3); } @@ -373,7 +371,7 @@ inline uint32_t asap_device::readlong(offs_t address) inline void asap_device::writebyte(offs_t address, uint8_t data) { // no alignment issues with bytes - m_program->write_byte(address, data); + m_program.write_byte(address, data); } @@ -386,18 +384,18 @@ inline void asap_device::writeword(offs_t address, uint16_t data) // aligned writes are easy if (WORD_ALIGNED(address)) { - m_program->write_word(address, data); + m_program.write_word(address, data); return; } // misaligned writes are tricky if (!(address & 2)) { - m_program->write_byte(address + 1, data); - m_program->write_byte(address + 2, data >> 8); + m_program.write_byte(address + 1, data); + m_program.write_byte(address + 2, data >> 8); } else - m_program->write_byte(address + 1, data); + m_program.write_byte(address + 1, data); } @@ -410,7 +408,7 @@ inline void asap_device::writelong(offs_t address, uint32_t data) // aligned writes are easy if (DWORD_ALIGNED(address)) { - m_program->write_dword(address, data); + m_program.write_dword(address, data); return; } @@ -418,14 +416,14 @@ inline void asap_device::writelong(offs_t address, uint32_t data) switch (address & 3) { case 1: - m_program->write_byte(address, data); - m_program->write_word(address + 1, data >> 8); + m_program.write_byte(address, data); + m_program.write_word(address + 1, data >> 8); break; case 2: - m_program->write_word(address, data); + m_program.write_word(address, data); break; case 3: - m_program->write_byte(address, data); + m_program.write_byte(address, data); break; } } |