diff options
author | 2015-12-14 18:28:45 +0200 | |
---|---|---|
committer | 2015-12-14 18:31:33 +0200 | |
commit | 2847b88e253acea7e27f55c40ec2da338192cef5 (patch) | |
tree | b9ccf3ea1c54d542ba9931cff192bb89f6f6a583 /src/devices/cpu/tms32051/tms32051.cpp | |
parent | 4e0b6882b3cb17f9994cfb1223f68aa4f50a4a01 (diff) |
tms32051: add I/O space (nw)
Diffstat (limited to 'src/devices/cpu/tms32051/tms32051.cpp')
-rw-r--r-- | src/devices/cpu/tms32051/tms32051.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/devices/cpu/tms32051/tms32051.cpp b/src/devices/cpu/tms32051/tms32051.cpp index 881a28fe4e1..110a13d5a9c 100644 --- a/src/devices/cpu/tms32051/tms32051.cpp +++ b/src/devices/cpu/tms32051/tms32051.cpp @@ -74,6 +74,7 @@ tms32051_device::tms32051_device(const machine_config &mconfig, const char *tag, : cpu_device(mconfig, TMS32051, "TMS32051", tag, owner, clock, "tms32051", __FILE__) , m_program_config("program", ENDIANNESS_LITTLE, 16, 16, -1, ADDRESS_MAP_NAME(tms32051_internal_pgm)) , m_data_config("data", ENDIANNESS_LITTLE, 16, 16, -1, ADDRESS_MAP_NAME(tms32051_internal_data)) + , m_io_config("io", ENDIANNESS_LITTLE, 16, 16, -1) { } @@ -81,6 +82,7 @@ tms32051_device::tms32051_device(const machine_config &mconfig, device_type type : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source) , m_program_config("program", ENDIANNESS_LITTLE, 16, 16, -1) , m_data_config("data", ENDIANNESS_LITTLE, 16, 16, -1) + , m_io_config("io", ENDIANNESS_LITTLE, 16, 16, -1) { } @@ -179,6 +181,7 @@ void tms32051_device::device_start() m_program = &space(AS_PROGRAM); m_direct = &m_program->direct(); m_data = &space(AS_DATA); + m_io = &space(AS_IO); m_pcstack_ptr = 0; m_op = 0; @@ -489,6 +492,24 @@ READ16_MEMBER( tms32051_device::cpuregs_r ) case 0x28: // PDWSR return 0; + case 0x50: // Memory-mapped I/O ports + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5a: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x5e: + case 0x5f: + return m_io->read_word(offset << 1); + default: if (!space.debugger_access()) fatalerror("32051: cpuregs_r: unimplemented memory-mapped register %02X at %04X\n", offset, m_pc-1); @@ -581,6 +602,25 @@ WRITE16_MEMBER( tms32051_device::cpuregs_w ) case 0x2a: // CWSR break; + case 0x50: // Memory-mapped I/O ports + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5a: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x5e: + case 0x5f: + m_io->write_word(offset << 1, data); + break; + default: if (!space.debugger_access()) fatalerror("32051: cpuregs_w: unimplemented memory-mapped register %02X, data %04X at %04X\n", offset, data, m_pc-1); @@ -599,6 +639,10 @@ bool tms32051_device::memory_read(address_spacenum spacenum, offs_t offset, int { value = (DM_READ16(offset>>1)); } + else if (spacenum == AS_IO) + { + value = m_io->read_word(offset); + } return 1; } |