diff options
author | Robbbert <Robbbert@users.noreply.github.com> | 2021-05-06 21:47:46 +1000 |
---|---|---|
committer | Robbbert <Robbbert@users.noreply.github.com> | 2021-05-06 21:47:46 +1000 |
commit | 9b09093f1b19739ddde95131059dcf9a3f47aeee (patch) | |
tree | 3843c98bdc01c942c3e566f6548f6ac1e4aed767 | |
parent | fb08f0bb4ef1732cbf6c5e2776870d1f2b9cb6a8 (diff) |
trs80: removed magic number in quickload, better crash protection.
-rw-r--r-- | src/mame/drivers/meritum.cpp | 4 | ||||
-rw-r--r-- | src/mame/machine/trs80.cpp | 4 | ||||
-rw-r--r-- | src/mame/machine/trs80m3.cpp | 5 |
3 files changed, 6 insertions, 7 deletions
diff --git a/src/mame/drivers/meritum.cpp b/src/mame/drivers/meritum.cpp index 6d4487acd20..aa38d7e47ec 100644 --- a/src/mame/drivers/meritum.cpp +++ b/src/mame/drivers/meritum.cpp @@ -421,12 +421,12 @@ QUICKLOAD_LOAD_MEMBER(meritum_state::quickload_cb) image.fread( &addr, 2); u16 address = (addr[1] << 8) | addr[0]; logerror("/CMD object code block: address %04x length %u\n", address, block_length); - if (address < 0x3c00) + ptr = program.get_write_ptr(address); + if (!ptr) { image.message("Attempting to write outside of RAM"); return image_init_result::FAIL; } - ptr = program.get_write_ptr(address); image.fread( ptr, block_length); } break; diff --git a/src/mame/machine/trs80.cpp b/src/mame/machine/trs80.cpp index 27c8e016ec4..806efd20b99 100644 --- a/src/mame/machine/trs80.cpp +++ b/src/mame/machine/trs80.cpp @@ -396,12 +396,12 @@ QUICKLOAD_LOAD_MEMBER(trs80_state::quickload_cb) image.fread( &addr, 2); u16 address = (addr[1] << 8) | addr[0]; if (LOG) logerror("/CMD object code block: address %04x length %u\n", address, block_length); - if (address < 0x3c00) + ptr = program.get_write_ptr(address); + if (!ptr) { image.message("Attempting to write outside of RAM"); return image_init_result::FAIL; } - ptr = program.get_write_ptr(address); image.fread( ptr, block_length); } break; diff --git a/src/mame/machine/trs80m3.cpp b/src/mame/machine/trs80m3.cpp index 85c81ba4d0e..ee1f70da20e 100644 --- a/src/mame/machine/trs80m3.cpp +++ b/src/mame/machine/trs80m3.cpp @@ -675,13 +675,12 @@ QUICKLOAD_LOAD_MEMBER(trs80m3_state::quickload_cb) image.fread( &addr, 2); u16 address = (addr[1] << 8) | addr[0]; if (LOG) logerror("/CMD object code block: address %04x length %u\n", address, block_length); - // Todo: the below only applies for non-ram - if (address < 0x3c00) + ptr = program.get_write_ptr(address); + if (!ptr) { image.message("Attempting to write outside of RAM"); return image_init_result::FAIL; } - ptr = program.get_write_ptr(address); image.fread( ptr, block_length); } break; |