diff options
Diffstat (limited to 'src/emu/debug/debugcmd.cpp')
-rw-r--r-- | src/emu/debug/debugcmd.cpp | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp index cc3b8d4c481..f6f3a876235 100644 --- a/src/emu/debug/debugcmd.cpp +++ b/src/emu/debug/debugcmd.cpp @@ -1819,29 +1819,37 @@ void debugger_commands::execute_save(int ref, const std::vector<std::string> &pa case -3: for (offs_t i = offset; i != endoffset; i++) { - u64 data = space->read_qword(i); + offs_t curaddr = i; + u64 data = space->device().memory().translate(space->spacenum(), TRANSLATE_READ_DEBUG, curaddr) ? + space->read_qword(curaddr) : space->unmap(); fwrite(&data, 8, 1, f); } break; case -2: for (offs_t i = offset; i != endoffset; i++) { - u32 data = space->read_dword(i); + offs_t curaddr = i; + u32 data = space->device().memory().translate(space->spacenum(), TRANSLATE_READ_DEBUG, curaddr) ? + space->read_dword(curaddr) : space->unmap(); fwrite(&data, 4, 1, f); } break; case -1: for (offs_t i = offset; i != endoffset; i++) { - u16 byte = space->read_word(i); - fwrite(&byte, 2, 1, f); + offs_t curaddr = i; + u16 data = space->device().memory().translate(space->spacenum(), TRANSLATE_READ_DEBUG, curaddr) ? + space->read_word(curaddr) : space->unmap(); + fwrite(&data, 2, 1, f); } break; case 0: for (offs_t i = offset; i != endoffset; i++) { - u8 byte = space->read_byte(i); - fwrite(&byte, 1, 1, f); + offs_t curaddr = i; + u8 data = space->device().memory().translate(space->spacenum(), TRANSLATE_READ_DEBUG, curaddr) ? + space->read_byte(curaddr) : space->unmap(); + fwrite(&data, 1, 1, f); } break; case 3: @@ -1849,8 +1857,10 @@ void debugger_commands::execute_save(int ref, const std::vector<std::string> &pa endoffset &= ~15; for (offs_t i = offset; i != endoffset; i+=16) { - u16 byte = space->read_word(i >> 4); - fwrite(&byte, 2, 1, f); + offs_t curaddr = i >> 4; + u16 data = space->device().memory().translate(space->spacenum(), TRANSLATE_READ_DEBUG, curaddr) ? + space->read_word(curaddr) : space->unmap(); + fwrite(&data, 2, 1, f); } break; } @@ -1909,37 +1919,41 @@ void debugger_commands::execute_load(int ref, const std::vector<std::string> &pa case -3: for (i = offset; f.good() && (i <= endoffset || endoffset == offset - 1); i++) { + offs_t curaddr = i; u64 data; f.read((char *)&data, 8); - if (f) - space->write_qword(i, data); + if (f && space->device().memory().translate(space->spacenum(), TRANSLATE_WRITE_DEBUG, curaddr)) + space->write_qword(curaddr, data); } break; case -2: for (i = offset; f.good() && (i <= endoffset || endoffset == offset - 1); i++) { + offs_t curaddr = i; u32 data; f.read((char *)&data, 4); - if (f) - space->write_dword(i, data); + if (f && space->device().memory().translate(space->spacenum(), TRANSLATE_WRITE_DEBUG, curaddr)) + space->write_dword(curaddr, data); } break; case -1: for (i = offset; f.good() && (i <= endoffset || endoffset == offset - 1); i++) { + offs_t curaddr = i; u16 data; f.read((char *)&data, 2); - if (f) - space->write_word(i, data); + if (f && space->device().memory().translate(space->spacenum(), TRANSLATE_WRITE_DEBUG, curaddr)) + space->write_word(curaddr, data); } break; case 0: for (i = offset; f.good() && (i <= endoffset || endoffset == offset - 1); i++) { + offs_t curaddr = i; u8 data; f.read((char *)&data, 1); - if (f) - space->write_byte(i, data); + if (f && space->device().memory().translate(space->spacenum(), TRANSLATE_WRITE_DEBUG, curaddr)) + space->write_byte(curaddr, data); } break; case 3: @@ -1947,10 +1961,11 @@ void debugger_commands::execute_load(int ref, const std::vector<std::string> &pa endoffset &= ~15; for (i = offset; f.good() && (i <= endoffset || endoffset == offset - 16); i+=16) { + offs_t curaddr = i >> 4; u16 data; f.read((char *)&data, 2); - if (f) - space->write_word(i >> 4, data); + if (f && space->device().memory().translate(space->spacenum(), TRANSLATE_WRITE_DEBUG, curaddr)) + space->write_word(curaddr, data); } break; } |