summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ti99/peb
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2022-02-27 11:08:29 -0500
committer AJR <ajrhacker@users.noreply.github.com>2022-02-27 11:11:44 -0500
commit8c20f22955762c85870bdc2ae972018a6acc4258 (patch)
treea6d3b49a646ccd311932385717e74b8e2bfcafa0 /src/devices/bus/ti99/peb
parent300206e308c2c5f9ad8898fb62f1873be682df5a (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.cpp11
-rw-r--r--src/devices/bus/ti99/peb/evpc.h6
-rw-r--r--src/devices/bus/ti99/peb/horizon.cpp22
-rw-r--r--src/devices/bus/ti99/peb/horizon.h12
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;