diff options
author | 2022-02-27 11:08:29 -0500 | |
---|---|---|
committer | 2022-02-27 11:11:44 -0500 | |
commit | 8c20f22955762c85870bdc2ae972018a6acc4258 (patch) | |
tree | a6d3b49a646ccd311932385717e74b8e2bfcafa0 /src/devices/bus/ti99/peb | |
parent | 300206e308c2c5f9ad8898fb62f1873be682df5a (diff) |
Use ioprocs classes instead of emu_file for device_nvram_interface's load and save methods, and have these return false on I/O errors
Diffstat (limited to 'src/devices/bus/ti99/peb')
-rw-r--r-- | src/devices/bus/ti99/peb/evpc.cpp | 11 | ||||
-rw-r--r-- | src/devices/bus/ti99/peb/evpc.h | 6 | ||||
-rw-r--r-- | src/devices/bus/ti99/peb/horizon.cpp | 22 | ||||
-rw-r--r-- | src/devices/bus/ti99/peb/horizon.h | 12 |
4 files changed, 27 insertions, 24 deletions
diff --git a/src/devices/bus/ti99/peb/evpc.cpp b/src/devices/bus/ti99/peb/evpc.cpp index a6a02c3dccd..974d786d8ee 100644 --- a/src/devices/bus/ti99/peb/evpc.cpp +++ b/src/devices/bus/ti99/peb/evpc.cpp @@ -41,7 +41,6 @@ #include "emu.h" #include "evpc.h" -#include "fileio.h" #include "speaker.h" #define LOG_WARN (1U<<1) // Warnings @@ -132,9 +131,10 @@ void snug_enhanced_video_device::nvram_default() // .nv file //------------------------------------------------- -void snug_enhanced_video_device::nvram_read(emu_file &file) +bool snug_enhanced_video_device::nvram_read(util::read_stream &file) { - file.read(m_novram.get(), NOVRAM_SIZE); + size_t actual; + return !file.read(m_novram.get(), NOVRAM_SIZE, actual) && actual == NOVRAM_SIZE; } //------------------------------------------------- @@ -142,9 +142,10 @@ void snug_enhanced_video_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void snug_enhanced_video_device::nvram_write(emu_file &file) +bool snug_enhanced_video_device::nvram_write(util::write_stream &file) { - file.write(m_novram.get(), NOVRAM_SIZE); + size_t actual; + return !file.write(m_novram.get(), NOVRAM_SIZE, actual) && actual == NOVRAM_SIZE; } /* diff --git a/src/devices/bus/ti99/peb/evpc.h b/src/devices/bus/ti99/peb/evpc.h index 98e73f50bda..683933a5780 100644 --- a/src/devices/bus/ti99/peb/evpc.h +++ b/src/devices/bus/ti99/peb/evpc.h @@ -57,9 +57,9 @@ protected: virtual ioport_constructor device_input_ports() const override; virtual void device_add_mconfig(machine_config &config) override; - void nvram_default() override; - void nvram_read(emu_file &file) override; - void nvram_write(emu_file &file) override; + virtual void nvram_default() override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: DECLARE_WRITE_LINE_MEMBER( ready_line ); diff --git a/src/devices/bus/ti99/peb/horizon.cpp b/src/devices/bus/ti99/peb/horizon.cpp index 41ffcc6557d..52827ac324f 100644 --- a/src/devices/bus/ti99/peb/horizon.cpp +++ b/src/devices/bus/ti99/peb/horizon.cpp @@ -126,8 +126,6 @@ #include "emu.h" #include "horizon.h" -#include "fileio.h" - #define LOG_WARN (1U<<1) // Warnings #define LOG_CONFIG (1U<<2) // Configuration #define LOG_32K (1U<<3) // 32K optional RAM r/w @@ -452,14 +450,11 @@ void horizon_ramdisk_device::nvram_default() } -void horizon_ramdisk_device::nvram_read(emu_file &file) +bool horizon_ramdisk_device::nvram_read(util::read_stream &file) { int ramsize, dsrsize; get_mem_size(ramsize, dsrsize); - if (file.size() != ramsize + dsrsize) - LOGMASKED(LOG_WARN, "NVRAM file size (%d) does not match the current configuration. Check settings.\n", file.size()); - // NVRAM plus ROS, according to the current configuration auto buffer = make_unique_clear<uint8_t []>(ramsize + dsrsize); @@ -468,8 +463,10 @@ void horizon_ramdisk_device::nvram_read(emu_file &file) // Read complete file, at most ramsize+dsrsize // Mind that the configuration may have changed - int filesize = file.read(&buffer[0], ramsize + dsrsize); - int nvramsize = filesize - dsrsize; + size_t filesize; + if (file.read(&buffer[0], ramsize + dsrsize, filesize)) + return false; + int nvramsize = int(filesize) - dsrsize; // At least the DSR must be complete if (nvramsize >= 0) @@ -477,10 +474,14 @@ void horizon_ramdisk_device::nvram_read(emu_file &file) // Copy from buffer to NVRAM and ROS if (nvramsize > 0) memcpy(m_ram->pointer(), &buffer[0], nvramsize); memcpy(m_dsrram->pointer(), &buffer[nvramsize], dsrsize); + + return true; } + + return false; } -void horizon_ramdisk_device::nvram_write(emu_file &file) +bool horizon_ramdisk_device::nvram_write(util::write_stream &file) { int ramsize, dsrsize; get_mem_size(ramsize, dsrsize); @@ -492,7 +493,8 @@ void horizon_ramdisk_device::nvram_write(emu_file &file) memcpy(&buffer[ramsize], m_dsrram->pointer(), dsrsize); // Store both parts in one file - file.write(buffer.get(), ramsize + dsrsize); + size_t filesize; + return !file.write(buffer.get(), ramsize + dsrsize, filesize) && filesize == ramsize + dsrsize; } bool horizon_ramdisk_device::nvram_can_write() diff --git a/src/devices/bus/ti99/peb/horizon.h b/src/devices/bus/ti99/peb/horizon.h index 253a1b2c3a0..72ab43a08fc 100644 --- a/src/devices/bus/ti99/peb/horizon.h +++ b/src/devices/bus/ti99/peb/horizon.h @@ -35,16 +35,16 @@ public: DECLARE_INPUT_CHANGED_MEMBER( hs_changed ); protected: - void device_start() override; - void device_reset() override; + virtual void device_start() override; + virtual void device_reset() override; virtual void device_add_mconfig(machine_config &config) override; virtual ioport_constructor device_input_ports() const override; - void nvram_default() override; - void nvram_read(emu_file &file) override; - void nvram_write(emu_file &file) override; - bool nvram_can_write() override; + virtual void nvram_default() override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; + virtual bool nvram_can_write() override; private: required_device<ram_device> m_ram; |