From 8c20f22955762c85870bdc2ae972018a6acc4258 Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 27 Feb 2022 11:08:29 -0500 Subject: 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 --- src/devices/bus/a2bus/a2cffa.cpp | 31 ++++++----- src/devices/bus/abcbus/ssa.h | 5 +- src/devices/bus/ata/cr589.cpp | 12 ++--- src/devices/bus/ata/cr589.h | 4 +- src/devices/bus/c64/dqbb.h | 5 +- src/devices/bus/c64/fcc.h | 5 +- src/devices/bus/c64/neoram.h | 5 +- src/devices/bus/pasopia/rampac2.cpp | 12 ++--- src/devices/bus/pasopia/rampac2.h | 4 +- src/devices/bus/pce/pce_rom.cpp | 12 ++--- src/devices/bus/pce/pce_rom.h | 4 +- src/devices/bus/pofo/hpc104.h | 5 +- src/devices/bus/pofo/ram.h | 5 +- src/devices/bus/s100/seals8k.cpp | 16 +++--- src/devices/bus/saturn/bram.cpp | 20 +++++++ src/devices/bus/saturn/bram.h | 7 ++- src/devices/bus/ti99/gromport/gkracker.cpp | 14 ++--- src/devices/bus/ti99/gromport/gkracker.h | 6 +-- src/devices/bus/ti99/internal/buffram.cpp | 14 +++-- src/devices/bus/ti99/internal/buffram.h | 9 ++-- src/devices/bus/ti99/peb/evpc.cpp | 11 ++-- src/devices/bus/ti99/peb/evpc.h | 6 +-- src/devices/bus/ti99/peb/horizon.cpp | 22 ++++---- src/devices/bus/ti99/peb/horizon.h | 12 ++--- src/devices/bus/vic20/megacart.h | 5 +- src/devices/cpu/m6805/m68705.cpp | 12 ++--- src/devices/cpu/m6805/m68705.h | 4 +- src/devices/cpu/mcs51/mcs51.cpp | 21 +++++--- src/devices/cpu/mcs51/mcs51.h | 4 +- src/devices/machine/28fxxx.cpp | 12 ++--- src/devices/machine/28fxxx.h | 4 +- src/devices/machine/at28c16.cpp | 15 +++--- src/devices/machine/at28c16.h | 4 +- src/devices/machine/at28c64b.cpp | 15 +++--- src/devices/machine/at28c64b.h | 4 +- src/devices/machine/at29x.cpp | 13 ++--- src/devices/machine/at29x.h | 6 +-- src/devices/machine/at45dbxx.cpp | 12 ++--- src/devices/machine/at45dbxx.h | 4 +- src/devices/machine/bq4847.cpp | 12 ++--- src/devices/machine/bq4847.h | 4 +- src/devices/machine/bq48x2.cpp | 16 +++--- src/devices/machine/bq48x2.h | 4 +- src/devices/machine/dp8573.cpp | 15 +++--- src/devices/machine/dp8573.h | 4 +- src/devices/machine/ds1204.cpp | 26 ++++----- src/devices/machine/ds1204.h | 4 +- src/devices/machine/ds1205.cpp | 30 +++++++---- src/devices/machine/ds1205.h | 4 +- src/devices/machine/ds1302.cpp | 12 ++--- src/devices/machine/ds1302.h | 4 +- src/devices/machine/ds1386.cpp | 12 ++--- src/devices/machine/ds1386.h | 4 +- src/devices/machine/ds1994.cpp | 30 ++++++----- src/devices/machine/ds1994.h | 4 +- src/devices/machine/ds2404.cpp | 12 ++--- src/devices/machine/ds2404.h | 4 +- src/devices/machine/eeprom.cpp | 12 ++--- src/devices/machine/eeprom.h | 4 +- src/devices/machine/er1400.cpp | 16 +++--- src/devices/machine/er1400.h | 4 +- src/devices/machine/er2055.cpp | 12 ++--- src/devices/machine/er2055.h | 4 +- src/devices/machine/hd64610.cpp | 11 ++-- src/devices/machine/hd64610.h | 4 +- src/devices/machine/i2cmem.cpp | 12 ++--- src/devices/machine/i2cmem.h | 4 +- src/devices/machine/icm7170.cpp | 11 ++-- src/devices/machine/icm7170.h | 4 +- src/devices/machine/intelfsh.cpp | 12 ++--- src/devices/machine/intelfsh.h | 4 +- src/devices/machine/m3002.cpp | 12 ++--- src/devices/machine/m3002.h | 4 +- src/devices/machine/m6m80011ap.cpp | 12 ++--- src/devices/machine/m6m80011ap.h | 4 +- src/devices/machine/mc146818.cpp | 16 ++++-- src/devices/machine/mc146818.h | 4 +- src/devices/machine/mccs1850.cpp | 12 ++--- src/devices/machine/mccs1850.h | 4 +- src/devices/machine/msm58321.cpp | 14 ++--- src/devices/machine/msm58321.h | 4 +- src/devices/machine/nmc9306.cpp | 12 ++--- src/devices/machine/nmc9306.h | 4 +- src/devices/machine/nvram.cpp | 12 ++--- src/devices/machine/nvram.h | 4 +- src/devices/machine/pcf8583.cpp | 12 ++--- src/devices/machine/pcf8583.h | 4 +- src/devices/machine/pcf8593.cpp | 12 ++--- src/devices/machine/pcf8593.h | 4 +- src/devices/machine/rp5c01.cpp | 14 +++-- src/devices/machine/rp5c01.h | 4 +- src/devices/machine/rtc65271.cpp | 85 ++++++++++++++++-------------- src/devices/machine/rtc65271.h | 4 +- src/devices/machine/rtc9701.cpp | 12 ++--- src/devices/machine/rtc9701.h | 4 +- src/devices/machine/s3520cf.cpp | 12 ++--- src/devices/machine/s3520cf.h | 4 +- src/devices/machine/sda2006.cpp | 12 ++--- src/devices/machine/sda2006.h | 4 +- src/devices/machine/sensorboard.cpp | 12 ++--- src/devices/machine/sensorboard.h | 4 +- src/devices/machine/serflash.cpp | 35 +++++++----- src/devices/machine/serflash.h | 4 +- src/devices/machine/strata.cpp | 15 +++--- src/devices/machine/strata.h | 4 +- src/devices/machine/timekpr.cpp | 14 ++--- src/devices/machine/timekpr.h | 4 +- src/devices/machine/x2201.cpp | 12 ++--- src/devices/machine/x2201.h | 4 +- src/devices/machine/x2212.cpp | 12 ++--- src/devices/machine/x2212.h | 4 +- src/devices/machine/x76f041.cpp | 34 ++++++------ src/devices/machine/x76f041.h | 4 +- src/devices/machine/x76f100.cpp | 26 ++++----- src/devices/machine/x76f100.h | 4 +- src/emu/dinvram.h | 8 +-- src/emu/machine.cpp | 8 +-- src/mame/drivers/ngp.cpp | 21 +++++--- src/mame/machine/cuda.cpp | 19 ++++--- src/mame/machine/cuda.h | 4 +- src/mame/machine/docg3.cpp | 22 ++++---- src/mame/machine/docg3.h | 4 +- src/mame/machine/egret.cpp | 18 ++++--- src/mame/machine/egret.h | 4 +- src/mame/machine/kr1601rr1.cpp | 12 ++--- src/mame/machine/kr1601rr1.h | 4 +- src/mame/machine/macrtc.cpp | 12 ++--- src/mame/machine/macrtc.h | 4 +- src/mame/machine/midwayic.cpp | 12 ++--- src/mame/machine/midwayic.h | 4 +- src/mame/machine/msx_matsushita.cpp | 12 ++--- src/mame/machine/msx_matsushita.h | 4 +- src/mame/machine/msx_s1985.cpp | 12 ++--- src/mame/machine/msx_s1985.h | 4 +- src/mame/machine/pc9801_memsw.cpp | 11 ++-- src/mame/machine/pc9801_memsw.h | 4 +- src/mame/machine/tosh1000_bram.cpp | 12 ++--- src/mame/machine/tosh1000_bram.h | 4 +- src/mame/machine/zs01.cpp | 30 ++++++----- src/mame/machine/zs01.h | 4 +- 140 files changed, 775 insertions(+), 671 deletions(-) diff --git a/src/devices/bus/a2bus/a2cffa.cpp b/src/devices/bus/a2bus/a2cffa.cpp index 83124c4a51a..3839b338ae1 100644 --- a/src/devices/bus/a2bus/a2cffa.cpp +++ b/src/devices/bus/a2bus/a2cffa.cpp @@ -17,8 +17,7 @@ #include "imagedev/harddriv.h" #include "bus/ata/ataintf.h" -#include "fileio.h" -#include "softlist.h" +#include "softlist_dev.h" namespace { @@ -79,8 +78,8 @@ public: protected: // device_config_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; }; class a2bus_cffa2_6502_device : public a2bus_cffa2000_device, public device_nvram_interface @@ -92,8 +91,8 @@ public: protected: // device_config_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; }; /*************************************************************************** @@ -296,14 +295,16 @@ void a2bus_cffa2_device::nvram_default() memcpy(m_eeprom, m_rom, 0x1000); } -void a2bus_cffa2_device::nvram_read(emu_file &file) +bool a2bus_cffa2_device::nvram_read(util::read_stream &file) { - file.read(m_eeprom, 0x1000); + size_t actual; + return !file.read(m_eeprom, 0x1000, actual) && actual == 0x1000; } -void a2bus_cffa2_device::nvram_write(emu_file &file) +bool a2bus_cffa2_device::nvram_write(util::write_stream &file) { - file.write(m_eeprom, 0x1000); + size_t actual; + return !file.write(m_eeprom, 0x1000, actual) && actual == 0x1000; } void a2bus_cffa2_6502_device::nvram_default() @@ -311,14 +312,16 @@ void a2bus_cffa2_6502_device::nvram_default() memcpy(m_eeprom, m_rom, 0x1000); } -void a2bus_cffa2_6502_device::nvram_read(emu_file &file) +bool a2bus_cffa2_6502_device::nvram_read(util::read_stream &file) { - file.read(m_eeprom, 0x1000); + size_t actual; + return !file.read(m_eeprom, 0x1000, actual) && actual == 0x1000; } -void a2bus_cffa2_6502_device::nvram_write(emu_file &file) +bool a2bus_cffa2_6502_device::nvram_write(util::write_stream &file) { - file.write(m_eeprom, 0x1000); + size_t actual; + return !file.write(m_eeprom, 0x1000, actual) && actual == 0x1000; } } // anonymous namespace diff --git a/src/devices/bus/abcbus/ssa.h b/src/devices/bus/abcbus/ssa.h index d6376cd9d4b..f8f94bd2f93 100644 --- a/src/devices/bus/abcbus/ssa.h +++ b/src/devices/bus/abcbus/ssa.h @@ -12,7 +12,6 @@ #pragma once #include "abcbus.h" -#include "fileio.h" @@ -41,8 +40,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override { } - virtual void nvram_read(emu_file &file) override { if (m_nvram != nullptr) { file.read(m_nvram, m_nvram.bytes()); } } - virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram, m_nvram.bytes()); } } + virtual bool nvram_read(util::read_stream &file) override { size_t actual; return !file.read(m_nvram, m_nvram.bytes(), actual) && actual == m_nvram.bytes(); } + virtual bool nvram_write(util::write_stream &file) override { size_t actual; return !file.write(m_nvram, m_nvram.bytes(), actual) && actual == m_nvram.bytes(); } // device_abcbus_interface overrides virtual void abcbus_cs(uint8_t data) override { m_bus->write_cs(data); } diff --git a/src/devices/bus/ata/cr589.cpp b/src/devices/bus/ata/cr589.cpp index 8f0cfed6556..5905a54bd54 100644 --- a/src/devices/bus/ata/cr589.cpp +++ b/src/devices/bus/ata/cr589.cpp @@ -3,8 +3,6 @@ #include "emu.h" #include "cr589.h" -#include "fileio.h" - static constexpr int identity_offset = 0x3ab; static constexpr char download_identity[] = "MATSHITA CD98Q4 DOWNLOADGS0N"; @@ -27,9 +25,10 @@ void matsushita_cr589_device::nvram_default() // .nv file //------------------------------------------------- -void matsushita_cr589_device::nvram_read(emu_file &file) +bool matsushita_cr589_device::nvram_read(util::read_stream &file) { - file.read(buffer, sizeof(buffer)); + size_t actual; + return !file.read(buffer, sizeof(buffer), actual) && actual == sizeof(buffer); } @@ -39,9 +38,10 @@ void matsushita_cr589_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void matsushita_cr589_device::nvram_write(emu_file &file) +bool matsushita_cr589_device::nvram_write(util::write_stream &file) { - file.write(buffer, sizeof(buffer)); + size_t actual; + return !file.write(buffer, sizeof(buffer), actual) && actual == sizeof(buffer); } diff --git a/src/devices/bus/ata/cr589.h b/src/devices/bus/ata/cr589.h index 77df277a4b0..9b2f89d172c 100644 --- a/src/devices/bus/ata/cr589.h +++ b/src/devices/bus/ata/cr589.h @@ -34,8 +34,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: int download; diff --git a/src/devices/bus/c64/dqbb.h b/src/devices/bus/c64/dqbb.h index 0fbbff1afd5..9770793bdd0 100644 --- a/src/devices/bus/c64/dqbb.h +++ b/src/devices/bus/c64/dqbb.h @@ -13,7 +13,6 @@ #include "exp.h" -#include "fileio.h" @@ -38,8 +37,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override { } - virtual void nvram_read(emu_file &file) override { if (m_nvram != nullptr) { file.read(m_nvram.get(), 0x4000); } } - virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram.get(), 0x4000); } } + virtual bool nvram_read(util::read_stream &file) override { size_t actual; return !file.read(m_nvram.get(), 0x4000, actual) && actual == 0x4000; } + virtual bool nvram_write(util::write_stream &file) override { size_t actual; return !file.write(m_nvram.get(), 0x4000, actual) && actual == 0x4000; } // device_c64_expansion_card_interface overrides virtual uint8_t c64_cd_r(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) override; diff --git a/src/devices/bus/c64/fcc.h b/src/devices/bus/c64/fcc.h index 5f7a180fe20..33baea0707c 100644 --- a/src/devices/bus/c64/fcc.h +++ b/src/devices/bus/c64/fcc.h @@ -14,7 +14,6 @@ #include "exp.h" #include "cpu/m6502/m65sc02.h" #include "machine/gen_latch.h" -#include "fileio.h" @@ -43,8 +42,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override { } - virtual void nvram_read(emu_file &file) override { if (m_nvram != nullptr) { file.read(m_nvram.get(), 0x2000); } } - virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram.get(), 0x2000); } } + virtual bool nvram_read(util::read_stream &file) override { size_t actual; return !file.read(m_nvram.get(), 0x2000, actual) && actual == 0x2000; } + virtual bool nvram_write(util::write_stream &file) override { size_t actual; return !file.write(m_nvram.get(), 0x2000, actual) && actual == 0x2000; } // device_c64_expansion_card_interface overrides virtual uint8_t c64_cd_r(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) override; diff --git a/src/devices/bus/c64/neoram.h b/src/devices/bus/c64/neoram.h index 295b893b5c7..d54e8e18cc4 100644 --- a/src/devices/bus/c64/neoram.h +++ b/src/devices/bus/c64/neoram.h @@ -13,7 +13,6 @@ #include "exp.h" -#include "fileio.h" @@ -38,8 +37,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override { } - virtual void nvram_read(emu_file &file) override { if (m_nvram != nullptr) { file.read(m_nvram.get(), 0x200000); } } - virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram.get(), 0x200000); } } + virtual bool nvram_read(util::read_stream &file) override { size_t actual; return !file.read(m_nvram.get(), 0x200000, actual) && actual == 0x200000; } + virtual bool nvram_write(util::write_stream &file) override { size_t actual; return !file.write(m_nvram.get(), 0x200000, actual) && actual == 0x200000; } // device_c64_expansion_card_interface overrides virtual uint8_t c64_cd_r(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) override; diff --git a/src/devices/bus/pasopia/rampac2.cpp b/src/devices/bus/pasopia/rampac2.cpp index e1d912b92d4..3c128a10266 100644 --- a/src/devices/bus/pasopia/rampac2.cpp +++ b/src/devices/bus/pasopia/rampac2.cpp @@ -12,8 +12,6 @@ #include "emu.h" #include "rampac2.h" -#include "fileio.h" - //************************************************************************** // GLOBAL VARIABLES //************************************************************************** @@ -88,9 +86,10 @@ void pasopia_rampac2_device::device_start() // nvram_read - read NVRAM from the file //------------------------------------------------- -void pasopia_rampac2_device::nvram_read(emu_file &file) +bool pasopia_rampac2_device::nvram_read(util::read_stream &file) { - file.read(&m_ram[0], m_ram_size); + size_t actual; + return !file.read(&m_ram[0], m_ram_size, actual) && actual == m_ram_size; } @@ -98,9 +97,10 @@ void pasopia_rampac2_device::nvram_read(emu_file &file) // nvram_write - write NVRAM to the file //------------------------------------------------- -void pasopia_rampac2_device::nvram_write(emu_file &file) +bool pasopia_rampac2_device::nvram_write(util::write_stream &file) { - file.write(&m_ram[0], m_ram_size); + size_t actual; + return !file.write(&m_ram[0], m_ram_size, actual) && actual == m_ram_size; } diff --git a/src/devices/bus/pasopia/rampac2.h b/src/devices/bus/pasopia/rampac2.h index b2ad3633394..54e8a652049 100644 --- a/src/devices/bus/pasopia/rampac2.h +++ b/src/devices/bus/pasopia/rampac2.h @@ -25,8 +25,8 @@ protected: virtual void device_start() override; // device_nvram_interface overrides - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; virtual void nvram_default() override; // pac2_card_interface overrides diff --git a/src/devices/bus/pce/pce_rom.cpp b/src/devices/bus/pce/pce_rom.cpp index 1b532e7f081..fea0d9f7dcc 100644 --- a/src/devices/bus/pce/pce_rom.cpp +++ b/src/devices/bus/pce/pce_rom.cpp @@ -12,8 +12,6 @@ #include "emu.h" #include "pce_rom.h" -#include "fileio.h" - //------------------------------------------------- @@ -114,14 +112,16 @@ void pce_tennokoe_device::nvram_default() memcpy(m_bram + 0x1800, m_rom + 0x8800, 0x800); } -void pce_tennokoe_device::nvram_read(emu_file &file) +bool pce_tennokoe_device::nvram_read(util::read_stream &file) { - file.read(m_bram, m_bram_size); + size_t actual_size; + return !file.read(m_bram, m_bram_size, actual_size) && actual_size == m_bram_size; } -void pce_tennokoe_device::nvram_write(emu_file &file) +bool pce_tennokoe_device::nvram_write(util::write_stream &file) { - file.write(m_bram, m_bram_size); + size_t actual_size; + return !file.write(m_bram, m_bram_size, actual_size) && actual_size == m_bram_size; } /*------------------------------------------------- diff --git a/src/devices/bus/pce/pce_rom.h b/src/devices/bus/pce/pce_rom.h index 8d77b94e0e9..43499851eb7 100644 --- a/src/devices/bus/pce/pce_rom.h +++ b/src/devices/bus/pce/pce_rom.h @@ -96,8 +96,8 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: const uint32_t m_bram_size = 0x800*4; diff --git a/src/devices/bus/pofo/hpc104.h b/src/devices/bus/pofo/hpc104.h index 0522090614e..d5d1c36c3d3 100644 --- a/src/devices/bus/pofo/hpc104.h +++ b/src/devices/bus/pofo/hpc104.h @@ -13,7 +13,6 @@ #include "exp.h" #include "bus/pofo/ccm.h" -#include "fileio.h" @@ -44,8 +43,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override { } - virtual void nvram_read(emu_file &file) override { if (m_nvram != nullptr) { file.read(m_nvram, 0x40000); } } - virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram, 0x40000); } } + virtual bool nvram_read(util::read_stream &file) override { size_t actual; return !file.read(m_nvram, 0x40000, actual) && actual == 0x40000; } + virtual bool nvram_write(util::write_stream &file) override { size_t actual; return !file.write(m_nvram, 0x40000, actual) && actual == 0x40000; } // device_portfolio_expansion_slot_interface overrides virtual bool nmd1() override { return m_ccm->cdet_r(); } diff --git a/src/devices/bus/pofo/ram.h b/src/devices/bus/pofo/ram.h index fe956525896..7217299a989 100644 --- a/src/devices/bus/pofo/ram.h +++ b/src/devices/bus/pofo/ram.h @@ -12,7 +12,6 @@ #pragma once #include "ccm.h" -#include "fileio.h" @@ -36,8 +35,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override { } - virtual void nvram_read(emu_file &file) override { if (m_nvram != nullptr) { file.read(m_nvram, m_nvram.bytes()); } } - virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram, m_nvram.bytes()); } } + virtual bool nvram_read(util::read_stream &file) override { size_t actual; return !file.read(m_nvram, m_nvram.bytes(), actual) && actual == m_nvram.bytes(); } + virtual bool nvram_write(util::write_stream &file) override { size_t actual; return !file.write(m_nvram, m_nvram.bytes(), actual) && actual == m_nvram.bytes(); } // device_portfolio_memory_card_slot_interface overrides virtual bool cdet() override { return 0; } diff --git a/src/devices/bus/s100/seals8k.cpp b/src/devices/bus/s100/seals8k.cpp index da3699f7244..58a040efad4 100644 --- a/src/devices/bus/s100/seals8k.cpp +++ b/src/devices/bus/s100/seals8k.cpp @@ -29,8 +29,6 @@ #include "emu.h" #include "seals8k.h" -#include "fileio.h" - //************************************************************************** // TYPE DEFINITIONS @@ -77,8 +75,8 @@ public: protected: // device_nvram_interface overrides - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; virtual void nvram_default() override; }; @@ -164,9 +162,10 @@ void s100_8k_sc_device::device_start() // nvram_read - read NVRAM from the file //------------------------------------------------- -void s100_8k_sc_bb_device::nvram_read(emu_file &file) +bool s100_8k_sc_bb_device::nvram_read(util::read_stream &file) { - file.read(m_ram.get(), 0x2000); + size_t actual; + return !file.read(m_ram.get(), 0x2000, actual) && actual == 0x2000; } @@ -174,9 +173,10 @@ void s100_8k_sc_bb_device::nvram_read(emu_file &file) // nvram_write - write NVRAM to the file //------------------------------------------------- -void s100_8k_sc_bb_device::nvram_write(emu_file &file) +bool s100_8k_sc_bb_device::nvram_write(util::write_stream &file) { - file.write(m_ram.get(), 0x2000); + size_t actual; + return !file.write(m_ram.get(), 0x2000, actual) && actual == 0x2000; } diff --git a/src/devices/bus/saturn/bram.cpp b/src/devices/bus/saturn/bram.cpp index 4fac71dcd83..979d1c4ceb1 100644 --- a/src/devices/bus/saturn/bram.cpp +++ b/src/devices/bus/saturn/bram.cpp @@ -61,6 +61,26 @@ void saturn_bram_device::device_reset() { } +bool saturn_bram_device::nvram_read(util::read_stream &file) +{ + size_t actual; + if (m_ext_bram.empty()) + return true; + else + return !file.read(&m_ext_bram[0], m_ext_bram.size(), actual) && actual == m_ext_bram.size(); +} + +bool saturn_bram_device::nvram_write(util::write_stream &file) +{ + size_t actual; + return !file.write(&m_ext_bram[0], m_ext_bram.size(), actual) && actual == m_ext_bram.size(); +} + +bool saturn_bram_device::nvram_can_write() +{ + return !m_ext_bram.empty(); +} + void saturn_bram_device::nvram_default() { static const uint8_t init[16] = diff --git a/src/devices/bus/saturn/bram.h b/src/devices/bus/saturn/bram.h index 9d5b0eab1f8..2cee3467dea 100644 --- a/src/devices/bus/saturn/bram.h +++ b/src/devices/bus/saturn/bram.h @@ -5,8 +5,6 @@ #include "sat_slot.h" -#include "fileio.h" - // ======================> saturn_bram_device @@ -29,8 +27,9 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override { if (!m_ext_bram.empty()) file.read(&m_ext_bram[0], m_ext_bram.size()); } - virtual void nvram_write(emu_file &file) override { if (!m_ext_bram.empty()) file.write(&m_ext_bram[0], m_ext_bram.size()); } + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; + virtual bool nvram_can_write() override; }; class saturn_bram4mb_device : public saturn_bram_device diff --git a/src/devices/bus/ti99/gromport/gkracker.cpp b/src/devices/bus/ti99/gromport/gkracker.cpp index df0967d54cd..212207665e2 100644 --- a/src/devices/bus/ti99/gromport/gkracker.cpp +++ b/src/devices/bus/ti99/gromport/gkracker.cpp @@ -97,8 +97,6 @@ #include "emu.h" #include "gkracker.h" -#include "fileio.h" - #define LOG_WARN (1U<<1) // Warnings #define LOG_CHANGE (1U<<2) // Cartridge change #define LOG_GKRACKER (1U<<3) // Gram Kracker operation @@ -378,21 +376,25 @@ void ti99_gkracker_device::nvram_default() m_ram_ptr[0x6100] = 0x0b; // GPL EXIT } -void ti99_gkracker_device::nvram_read(emu_file &file) +bool ti99_gkracker_device::nvram_read(util::read_stream &file) { - int readsize = file.read(m_ram_ptr, 81920); + size_t readsize; + if (file.read(m_ram_ptr, 81920, readsize)) + return false; LOGMASKED(LOG_GKRACKER, "Reading NVRAM\n"); // If we increased the size, fill the remaining parts with 0 if (readsize < 81920) { memset(m_ram_ptr + readsize, 0, 81920-readsize); } + return true; } -void ti99_gkracker_device::nvram_write(emu_file &file) +bool ti99_gkracker_device::nvram_write(util::write_stream &file) { LOGMASKED(LOG_GKRACKER, "Writing NVRAM\n"); - file.write(m_ram_ptr, 81920); + size_t writesize; + return !file.write(m_ram_ptr, 81920, writesize) && writesize == 81920; } void ti99_gkracker_device::device_start() diff --git a/src/devices/bus/ti99/gromport/gkracker.h b/src/devices/bus/ti99/gromport/gkracker.h index c80049ac22b..76bc457a11e 100644 --- a/src/devices/bus/ti99/gromport/gkracker.h +++ b/src/devices/bus/ti99/gromport/gkracker.h @@ -42,9 +42,9 @@ protected: virtual ioport_constructor device_input_ports() const override; // device_nvram_interface - 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: int m_gk_switch[6]; // Used to cache the switch settings. diff --git a/src/devices/bus/ti99/internal/buffram.cpp b/src/devices/bus/ti99/internal/buffram.cpp index 76d84d2d6da..bc07ad4b4ed 100644 --- a/src/devices/bus/ti99/internal/buffram.cpp +++ b/src/devices/bus/ti99/internal/buffram.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "buffram.h" -#include "fileio.h" - #define VERBOSE ( LOG_GENERAL ) #include "logmacro.h" @@ -48,16 +46,16 @@ void buffered_ram_device::nvram_default() std::fill_n(m_mem.get(), m_size, 0x00); } -void buffered_ram_device::nvram_read(emu_file &file) +bool buffered_ram_device::nvram_read(util::read_stream &file) { - if (m_buffered) - file.read(m_mem.get(), m_size); + size_t actual; + return !file.read(m_mem.get(), m_size, actual) && actual == m_size; } -void buffered_ram_device::nvram_write(emu_file &file) +bool buffered_ram_device::nvram_write(util::write_stream &file) { - if (m_buffered) - file.write(m_mem.get(), m_size); + size_t actual; + return !file.write(m_mem.get(), m_size, actual) && actual == m_size; } } // end namespace bus::ti99::internal diff --git a/src/devices/bus/ti99/internal/buffram.h b/src/devices/bus/ti99/internal/buffram.h index ad44ba3dd2a..9d0a18c34fe 100644 --- a/src/devices/bus/ti99/internal/buffram.h +++ b/src/devices/bus/ti99/internal/buffram.h @@ -30,12 +30,13 @@ public: void set_buffered(bool on) { m_buffered = on; } private: - void device_start() override; + virtual void device_start() override; // derived class overrides - 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; + virtual bool nvram_can_write() override { return m_buffered; } bool m_buffered; int m_size; 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(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 m_ram; diff --git a/src/devices/bus/vic20/megacart.h b/src/devices/bus/vic20/megacart.h index 090e0c7d60c..e1c691a9a4b 100644 --- a/src/devices/bus/vic20/megacart.h +++ b/src/devices/bus/vic20/megacart.h @@ -12,7 +12,6 @@ #pragma once #include "exp.h" -#include "fileio.h" @@ -40,8 +39,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override { } - virtual void nvram_read(emu_file &file) override { file.read(m_nvram, 0x2000); } - virtual void nvram_write(emu_file &file) override { file.write(m_nvram, 0x2000); } + virtual bool nvram_read(util::read_stream &file) override { size_t actual; return !file.read(m_nvram, 0x2000, actual) && actual == 0x2000; } + virtual bool nvram_write(util::write_stream &file) override { size_t actual; return !file.write(m_nvram, 0x2000, actual) && actual == 0x2000; } // device_vic20_expansion_card_interface overrides virtual uint8_t vic20_cd_r(offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3) override; diff --git a/src/devices/cpu/m6805/m68705.cpp b/src/devices/cpu/m6805/m68705.cpp index 1c7ceb2617b..845d46bb31f 100644 --- a/src/devices/cpu/m6805/m68705.cpp +++ b/src/devices/cpu/m6805/m68705.cpp @@ -16,8 +16,6 @@ #include "m6805defs.h" #include "6805dasm.h" -#include "fileio.h" - /**************************************************************************** * Configurable logging ****************************************************************************/ @@ -538,14 +536,16 @@ void m68705_device::nvram_default() { } -void m68705_device::nvram_read(emu_file &file) +bool m68705_device::nvram_read(util::read_stream &file) { - file.read(&m_user_rom[0], m_user_rom.bytes()); + size_t actual; + return !file.read(&m_user_rom[0], m_user_rom.bytes(), actual) && actual == m_user_rom.bytes(); } -void m68705_device::nvram_write(emu_file &file) +bool m68705_device::nvram_write(util::write_stream &file) { - file.write(&m_user_rom[0], m_user_rom.bytes()); + size_t actual; + return !file.write(&m_user_rom[0], m_user_rom.bytes(), actual) && actual == m_user_rom.bytes(); } void m6805_hmos_device::interrupt() diff --git a/src/devices/cpu/m6805/m68705.h b/src/devices/cpu/m6805/m68705.h index 9f5354f9f6f..919a47f71ed 100644 --- a/src/devices/cpu/m6805/m68705.h +++ b/src/devices/cpu/m6805/m68705.h @@ -260,8 +260,8 @@ protected: virtual void device_reset() override; virtual void execute_set_input(int inputnum, int state) override; virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; u8 *const get_user_rom() const { return &m_user_rom[0]; } virtual u8 get_mask_options() const = 0; diff --git a/src/devices/cpu/mcs51/mcs51.cpp b/src/devices/cpu/mcs51/mcs51.cpp index a2c538e9cca..1da1752ba79 100644 --- a/src/devices/cpu/mcs51/mcs51.cpp +++ b/src/devices/cpu/mcs51/mcs51.cpp @@ -135,7 +135,6 @@ #include "mcs51dasm.h" #include "debugger.h" -#include "fileio.h" #define VERBOSE 0 @@ -2553,16 +2552,24 @@ void ds5002fp_device::nvram_default() } } -void ds5002fp_device::nvram_read( emu_file &file ) +bool ds5002fp_device::nvram_read( util::read_stream &file ) { - file.read( m_scratchpad, 0x80 ); - file.read( m_sfr_ram, 0x80 ); + size_t actual; + if (file.read( m_scratchpad, 0x80, actual ) || actual != 0x80) + return false; + if (file.read( m_sfr_ram, 0x80, actual ) || actual != 0x80) + return false; + return true; } -void ds5002fp_device::nvram_write( emu_file &file ) +bool ds5002fp_device::nvram_write( util::write_stream &file ) { - file.write( m_scratchpad, 0x80 ); - file.write( m_sfr_ram, 0x80 ); + size_t actual; + if (file.write( m_scratchpad, 0x80, actual ) || actual != 0x80) + return false; + if (file.write( m_sfr_ram, 0x80, actual ) || actual != 0x80) + return false; + return true; } std::unique_ptr mcs51_cpu_device::create_disassembler() diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h index f050ce8d210..a4c081be0d5 100644 --- a/src/devices/cpu/mcs51/mcs51.h +++ b/src/devices/cpu/mcs51/mcs51.h @@ -595,8 +595,8 @@ public: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read( emu_file &file ) override; - virtual void nvram_write( emu_file &file ) override; + virtual bool nvram_read( util::read_stream &file ) override; + virtual bool nvram_write( util::write_stream &file ) override; protected: virtual std::unique_ptr create_disassembler() override; diff --git a/src/devices/machine/28fxxx.cpp b/src/devices/machine/28fxxx.cpp index 7841f15470e..60351ee7565 100644 --- a/src/devices/machine/28fxxx.cpp +++ b/src/devices/machine/28fxxx.cpp @@ -32,8 +32,6 @@ #include "emu.h" #include "28fxxx.h" -#include "fileio.h" - #define VERBOSE 0 #include "logmacro.h" @@ -105,14 +103,16 @@ void base_28fxxx_device::nvram_default() erase(); } -void base_28fxxx_device::nvram_read(emu_file &file) +bool base_28fxxx_device::nvram_read(util::read_stream &file) { - file.read(m_data.get(), m_size); + size_t actual; + return !file.read(m_data.get(), m_size, actual) && actual == m_size; } -void base_28fxxx_device::nvram_write(emu_file &file) +bool base_28fxxx_device::nvram_write(util::write_stream &file) { - file.write(m_data.get(), m_size); + size_t actual; + return !file.write(m_data.get(), m_size, actual) && actual == m_size; } void base_28fxxx_device::erase() diff --git a/src/devices/machine/28fxxx.h b/src/devices/machine/28fxxx.h index 153fd785960..9ec25a6a7d9 100644 --- a/src/devices/machine/28fxxx.h +++ b/src/devices/machine/28fxxx.h @@ -31,8 +31,8 @@ protected: virtual void device_start() override; virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; optional_memory_region m_region; diff --git a/src/devices/machine/at28c16.cpp b/src/devices/machine/at28c16.cpp index f9664fd3dc9..575b7e71308 100644 --- a/src/devices/machine/at28c16.cpp +++ b/src/devices/machine/at28c16.cpp @@ -10,8 +10,6 @@ #include "emu.h" #include "machine/at28c16.h" -#include "fileio.h" - #define AT28C16_DATA_BYTES ( 0x800 ) #define AT28C16_ID_BYTES ( 0x20 ) #define AT28C16_TOTAL_BYTES ( AT28C16_DATA_BYTES + AT28C16_ID_BYTES ) @@ -109,16 +107,20 @@ void at28c16_device::nvram_default() // .nv file //------------------------------------------------- -void at28c16_device::nvram_read( emu_file &file ) +bool at28c16_device::nvram_read( util::read_stream &file ) { std::vector buffer( AT28C16_TOTAL_BYTES ); + size_t actual; - file.read( &buffer[0], AT28C16_TOTAL_BYTES ); + if (file.read( &buffer[0], AT28C16_TOTAL_BYTES, actual ) || actual != AT28C16_TOTAL_BYTES) + return false; for( offs_t offs = 0; offs < AT28C16_TOTAL_BYTES; offs++ ) { space(AS_PROGRAM).write_byte( offs, buffer[ offs ] ); } + + return true; } //------------------------------------------------- @@ -126,16 +128,17 @@ void at28c16_device::nvram_read( emu_file &file ) // .nv file //------------------------------------------------- -void at28c16_device::nvram_write( emu_file &file ) +bool at28c16_device::nvram_write( util::write_stream &file ) { std::vector buffer ( AT28C16_TOTAL_BYTES ); + size_t actual; for( offs_t offs = 0; offs < AT28C16_TOTAL_BYTES; offs++ ) { buffer[ offs ] = space(AS_PROGRAM).read_byte( offs ); } - file.write( &buffer[0], AT28C16_TOTAL_BYTES ); + return !file.write( &buffer[0], AT28C16_TOTAL_BYTES, actual ) && actual == AT28C16_TOTAL_BYTES; } diff --git a/src/devices/machine/at28c16.h b/src/devices/machine/at28c16.h index bdb51c3a4d3..cdfe55243f1 100644 --- a/src/devices/machine/at28c16.h +++ b/src/devices/machine/at28c16.h @@ -42,8 +42,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: // internal state diff --git a/src/devices/machine/at28c64b.cpp b/src/devices/machine/at28c64b.cpp index b3552c90f4b..098454a771e 100644 --- a/src/devices/machine/at28c64b.cpp +++ b/src/devices/machine/at28c64b.cpp @@ -10,8 +10,6 @@ #include "emu.h" #include "machine/at28c64b.h" -#include "fileio.h" - static constexpr int AT28C64B_DATA_BYTES = 0x10000; static constexpr int AT28C64B_ID_BYTES = 0x40; static constexpr int AT28C64B_TOTAL_BYTES = AT28C64B_DATA_BYTES + AT28C64B_ID_BYTES; @@ -113,16 +111,20 @@ void at28c64b_device::nvram_default() // .nv file //------------------------------------------------- -void at28c64b_device::nvram_read( emu_file &file ) +bool at28c64b_device::nvram_read( util::read_stream &file ) { std::vector buffer( AT28C64B_TOTAL_BYTES ); + size_t actual; - file.read( &buffer[0], AT28C64B_TOTAL_BYTES ); + if (file.read( &buffer[0], AT28C64B_TOTAL_BYTES, actual ) || actual != AT28C64B_TOTAL_BYTES) + return false; for( offs_t offs = 0; offs < AT28C64B_TOTAL_BYTES; offs++ ) { space(AS_PROGRAM).write_byte( offs, buffer[ offs ] ); } + + return true; } //------------------------------------------------- @@ -130,16 +132,17 @@ void at28c64b_device::nvram_read( emu_file &file ) // .nv file //------------------------------------------------- -void at28c64b_device::nvram_write( emu_file &file ) +bool at28c64b_device::nvram_write( util::write_stream &file ) { std::vector buffer ( AT28C64B_TOTAL_BYTES ); + size_t actual; for( offs_t offs = 0; offs < AT28C64B_TOTAL_BYTES; offs++ ) { buffer[ offs ] = space(AS_PROGRAM).read_byte( offs ); } - file.write( &buffer[0], AT28C64B_TOTAL_BYTES ); + return !file.write( &buffer[0], AT28C64B_TOTAL_BYTES, actual ) && actual == AT28C64B_TOTAL_BYTES; } diff --git a/src/devices/machine/at28c64b.h b/src/devices/machine/at28c64b.h index 9a449d0510b..83d74cda5a4 100644 --- a/src/devices/machine/at28c64b.h +++ b/src/devices/machine/at28c64b.h @@ -42,8 +42,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: // internal state diff --git a/src/devices/machine/at29x.cpp b/src/devices/machine/at29x.cpp index 775a6cb42b5..c701c13c557 100644 --- a/src/devices/machine/at29x.cpp +++ b/src/devices/machine/at29x.cpp @@ -40,8 +40,6 @@ #include "emu.h" #include "at29x.h" -#include "fileio.h" - #define LOG_DETAIL (1U<<1) // More detail #define LOG_WARN (1U<<2) // Warning #define LOG_PRG (1U<<3) // Programming @@ -116,9 +114,10 @@ void at29x_device::nvram_default() // .nv file //------------------------------------------------- -void at29x_device::nvram_read(emu_file &file) +bool at29x_device::nvram_read(util::read_stream &file) { - file.read(m_eememory.get(), m_memory_size+2); + size_t actual; + return !file.read(m_eememory.get(), m_memory_size+2, actual) && actual == m_memory_size+2; } //------------------------------------------------- @@ -126,12 +125,14 @@ void at29x_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void at29x_device::nvram_write(emu_file &file) +bool at29x_device::nvram_write(util::write_stream &file) { // If we don't write (because there were no changes), the file will be wiped LOGMASKED(LOG_PRG, "Write to NVRAM file\n"); m_eememory[0] = m_version; - file.write(m_eememory.get(), m_memory_size+2); + + size_t actual; + return !file.write(m_eememory.get(), m_memory_size+2, actual) && actual == m_memory_size+2; } /* diff --git a/src/devices/machine/at29x.h b/src/devices/machine/at29x.h index a0188437c1f..d32c159b8b6 100644 --- a/src/devices/machine/at29x.h +++ b/src/devices/machine/at29x.h @@ -31,9 +31,9 @@ protected: virtual void device_stop(void) override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param) 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; int get_sector_number(offs_t address) { return address / m_sector_size; } diff --git a/src/devices/machine/at45dbxx.cpp b/src/devices/machine/at45dbxx.cpp index 268c485dc4c..890cd78ac59 100644 --- a/src/devices/machine/at45dbxx.cpp +++ b/src/devices/machine/at45dbxx.cpp @@ -15,8 +15,6 @@ #include "emu.h" #include "at45dbxx.h" -#include "fileio.h" - #define LOG_LEVEL 1 #define _logerror(level,x) do { if (LOG_LEVEL > level) logerror x; } while (0) @@ -161,9 +159,10 @@ void at45db041_device::nvram_default() // .nv file //------------------------------------------------- -void at45db041_device::nvram_read(emu_file &file) +bool at45db041_device::nvram_read(util::read_stream &file) { - file.read(&m_data[0], m_size); + size_t actual; + return !file.read(&m_data[0], m_size, actual) && actual == m_size; } //------------------------------------------------- @@ -171,9 +170,10 @@ void at45db041_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void at45db041_device::nvram_write(emu_file &file) +bool at45db041_device::nvram_write(util::write_stream &file) { - file.write(&m_data[0], m_size); + size_t actual; + return !file.write(&m_data[0], m_size, actual) && actual == m_size; } uint8_t at45db041_device::read_byte() diff --git a/src/devices/machine/at45dbxx.h b/src/devices/machine/at45dbxx.h index ecea6472c46..2521ac10acc 100644 --- a/src/devices/machine/at45dbxx.h +++ b/src/devices/machine/at45dbxx.h @@ -44,8 +44,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; virtual int num_pages() const { return 2048; } virtual int page_size() const { return 264; } diff --git a/src/devices/machine/bq4847.cpp b/src/devices/machine/bq4847.cpp index f3d8a7ec4d8..7c8b2060869 100644 --- a/src/devices/machine/bq4847.cpp +++ b/src/devices/machine/bq4847.cpp @@ -21,8 +21,6 @@ #include "emu.h" #include "bq4847.h" -#include "fileio.h" - #define LOG_WARN (1U<<1) // Warnings #define LOG_CLOCK (1U<<2) // Clock operation #define LOG_REG (1U<<3) // Register write @@ -504,12 +502,14 @@ void bq4847_device::nvram_default() } } -void bq4847_device::nvram_read(emu_file& file) +bool bq4847_device::nvram_read(util::read_stream& file) { - file.read(m_register, std::size(m_register)); + size_t actual; + return !file.read(m_register, std::size(m_register), actual) && actual == std::size(m_register); } -void bq4847_device::nvram_write(emu_file& file) +bool bq4847_device::nvram_write(util::write_stream& file) { - file.write(m_register, std::size(m_register)); + size_t actual; + return !file.write(m_register, std::size(m_register), actual) && actual == std::size(m_register); } diff --git a/src/devices/machine/bq4847.h b/src/devices/machine/bq4847.h index ef9dadb4313..2658e207962 100644 --- a/src/devices/machine/bq4847.h +++ b/src/devices/machine/bq4847.h @@ -41,8 +41,8 @@ protected: // device_nvram_interface virtual void nvram_default() override; - virtual void nvram_read(emu_file& file) override; - virtual void nvram_write(emu_file& file) override; + virtual bool nvram_read(util::read_stream& file) override; + virtual bool nvram_write(util::write_stream& file) override; // device_rtc_interface virtual bool rtc_feature_y2k() const override { return false; } diff --git a/src/devices/machine/bq48x2.cpp b/src/devices/machine/bq48x2.cpp index 6098e5f04ae..55434819a10 100644 --- a/src/devices/machine/bq48x2.cpp +++ b/src/devices/machine/bq48x2.cpp @@ -8,8 +8,6 @@ #include "emu.h" #include "bq48x2.h" -#include "fileio.h" - #define LOG_WARN (1U<<1) // Warnings #define LOG_CLOCK (1U<<2) // Clock operation #define LOG_REGW (1U<<3) // Register write @@ -543,18 +541,24 @@ void bq48x2_device::nvram_default() std::fill_n(m_sram.get(), m_memsize, 0); } -void bq48x2_device::nvram_read(emu_file &file) +bool bq48x2_device::nvram_read(util::read_stream &file) { - file.read(m_sram.get(), m_memsize); + size_t actual; + if (file.read(m_sram.get(), m_memsize, actual) || actual != m_memsize) + return false; transfer_to_access(); // Transfer the system time into the readable registers // Clear the saved flags set_register(reg_flags, 0xf8, true); + + return true; } -void bq48x2_device::nvram_write(emu_file &file) +bool bq48x2_device::nvram_write(util::write_stream &file) { transfer_to_access(); - file.write(m_sram.get(), m_memsize); + + size_t actual; + return !file.write(m_sram.get(), m_memsize, actual) && actual == m_memsize; } diff --git a/src/devices/machine/bq48x2.h b/src/devices/machine/bq48x2.h index ddf4505b44f..f19b9778c7c 100644 --- a/src/devices/machine/bq48x2.h +++ b/src/devices/machine/bq48x2.h @@ -56,8 +56,8 @@ protected: TIMER_CALLBACK_MEMBER(rtc_watchdog_cb); void nvram_default() override; - void nvram_read(emu_file &file) override; - void nvram_write(emu_file &file) override; + bool nvram_read(util::read_stream &file) override; + bool nvram_write(util::write_stream &file) override; void device_start() override; diff --git a/src/devices/machine/dp8573.cpp b/src/devices/machine/dp8573.cpp index 10f5960d6d3..86682d1c7a3 100644 --- a/src/devices/machine/dp8573.cpp +++ b/src/devices/machine/dp8573.cpp @@ -10,8 +10,6 @@ #include "machine/dp8573.h" #include "machine/timehelp.h" -#include "fileio.h" - #define LOG_GENERAL (1 << 0) #define LOG_TICKS (1 << 1) #define LOG_ALL (LOG_GENERAL | LOG_TICKS) @@ -348,13 +346,18 @@ void dp8573_device::nvram_default() sync_time(); } -void dp8573_device::nvram_read(emu_file &file) +bool dp8573_device::nvram_read(util::read_stream &file) { - file.read(m_ram, 32); + size_t actual; + if (file.read(m_ram, 32, actual) || actual != 32) + return false; + sync_time(); + return true; } -void dp8573_device::nvram_write(emu_file &file) +bool dp8573_device::nvram_write(util::write_stream &file) { - file.write(m_ram, 32); + size_t actual; + return !file.write(m_ram, 32, actual) && actual == 32; } diff --git a/src/devices/machine/dp8573.h b/src/devices/machine/dp8573.h index d86c6d2c63b..6a184ae8c6b 100644 --- a/src/devices/machine/dp8573.h +++ b/src/devices/machine/dp8573.h @@ -35,8 +35,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; void sync_time(); void save_registers(); diff --git a/src/devices/machine/ds1204.cpp b/src/devices/machine/ds1204.cpp index abdbca4421b..e1070113277 100644 --- a/src/devices/machine/ds1204.cpp +++ b/src/devices/machine/ds1204.cpp @@ -10,8 +10,6 @@ #include "emu.h" #include "ds1204.h" -#include "fileio.h" - #include @@ -93,20 +91,24 @@ void ds1204_device::nvram_default() } } -void ds1204_device::nvram_read( emu_file &file ) +bool ds1204_device::nvram_read( util::read_stream &file ) { - file.read( m_unique_pattern, sizeof( m_unique_pattern ) ); - file.read( m_identification, sizeof( m_identification ) ); - file.read( m_security_match, sizeof( m_security_match ) ); - file.read( m_secure_memory, sizeof( m_secure_memory ) ); + size_t actual; + bool result = !file.read( m_unique_pattern, sizeof( m_unique_pattern ), actual ) && actual == sizeof( m_unique_pattern ); + result = result && !file.read( m_identification, sizeof( m_identification ), actual ) && actual == sizeof( m_identification ); + result = result && !file.read( m_security_match, sizeof( m_security_match ), actual ) && actual == sizeof( m_security_match ); + result = result && !file.read( m_secure_memory, sizeof( m_secure_memory ), actual ) && actual == sizeof( m_secure_memory ); + return result; } -void ds1204_device::nvram_write( emu_file &file ) +bool ds1204_device::nvram_write( util::write_stream &file ) { - file.write( m_unique_pattern, sizeof( m_unique_pattern ) ); - file.write( m_identification, sizeof( m_identification ) ); - file.write( m_security_match, sizeof( m_security_match ) ); - file.write( m_secure_memory, sizeof( m_secure_memory ) ); + size_t actual; + bool result = !file.write( m_unique_pattern, sizeof( m_unique_pattern ), actual ) && actual == sizeof( m_unique_pattern ); + result = result && !file.write( m_identification, sizeof( m_identification ), actual ) && actual == sizeof( m_identification ); + result = result && !file.write( m_security_match, sizeof( m_security_match ), actual ) && actual == sizeof( m_security_match ); + result = result && !file.write( m_secure_memory, sizeof( m_secure_memory ), actual ) && actual == sizeof( m_secure_memory ); + return result; } void ds1204_device::new_state( int state ) diff --git a/src/devices/machine/ds1204.h b/src/devices/machine/ds1204.h index 59dc5718989..7a51463ac67 100644 --- a/src/devices/machine/ds1204.h +++ b/src/devices/machine/ds1204.h @@ -30,8 +30,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read( emu_file &file ) override; - virtual void nvram_write( emu_file &file ) override; + virtual bool nvram_read( util::read_stream &file ) override; + virtual bool nvram_write( util::write_stream &file ) override; private: inline void ATTR_PRINTF( 3, 4 ) verboselog( int n_level, const char *s_fmt, ... ); diff --git a/src/devices/machine/ds1205.cpp b/src/devices/machine/ds1205.cpp index 25c98f441e7..5a723d5f259 100644 --- a/src/devices/machine/ds1205.cpp +++ b/src/devices/machine/ds1205.cpp @@ -10,8 +10,6 @@ #include "emu.h" #include "ds1205.h" -#include "fileio.h" - #include @@ -95,24 +93,36 @@ void ds1205_device::nvram_default() } } -void ds1205_device::nvram_read( emu_file &file ) +bool ds1205_device::nvram_read( util::read_stream &file ) { for(int i = 0; i < 3; i++) { - file.read( m_identification[i], sizeof( m_identification[i] ) ); - file.read( m_security_match[i], sizeof( m_security_match[i] ) ); - file.read( m_secure_memory[i], sizeof( m_secure_memory[i] ) ); + size_t actual; + if( file.read( m_identification[i], sizeof( m_identification[i] ), actual ) || actual != sizeof( m_identification[i] ) ) + return false; + if( file.read( m_security_match[i], sizeof( m_security_match[i] ), actual ) || actual != sizeof( m_security_match[i] ) ) + return false; + if( file.read( m_secure_memory[i], sizeof( m_secure_memory[i] ), actual ) || actual != sizeof( m_secure_memory[i] ) ) + return false; } + + return true; } -void ds1205_device::nvram_write( emu_file &file ) +bool ds1205_device::nvram_write( util::write_stream &file ) { for(int i = 0; i < 3; i++) { - file.write( m_identification[i], sizeof( m_identification[i] ) ); - file.write( m_security_match[i], sizeof( m_security_match[i] ) ); - file.write( m_secure_memory[i], sizeof( m_secure_memory[i] ) ); + size_t actual; + if( file.write( m_identification[i], sizeof( m_identification[i] ), actual ) || actual != sizeof( m_identification[i] ) ) + return false; + if( file.write( m_security_match[i], sizeof( m_security_match[i] ), actual ) || actual != sizeof( m_security_match[i] ) ) + return false; + if( file.write( m_secure_memory[i], sizeof( m_secure_memory[i] ), actual ) || actual != sizeof( m_secure_memory[i] ) ) + return false; } + + return true; } void ds1205_device::new_state( int state ) diff --git a/src/devices/machine/ds1205.h b/src/devices/machine/ds1205.h index ad7432e1ac7..0098142e65f 100644 --- a/src/devices/machine/ds1205.h +++ b/src/devices/machine/ds1205.h @@ -30,8 +30,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read( emu_file &file ) override; - virtual void nvram_write( emu_file &file ) override; + virtual bool nvram_read( util::read_stream &file ) override; + virtual bool nvram_write( util::write_stream &file ) override; private: inline void ATTR_PRINTF( 3, 4 ) verboselog( int n_level, const char *s_fmt, ... ); diff --git a/src/devices/machine/ds1302.cpp b/src/devices/machine/ds1302.cpp index 34d75224748..7bc8689f3a2 100644 --- a/src/devices/machine/ds1302.cpp +++ b/src/devices/machine/ds1302.cpp @@ -18,8 +18,6 @@ #include "emu.h" #include "ds1302.h" -#include "fileio.h" - //#define VERBOSE 1 #include "logmacro.h" @@ -159,9 +157,10 @@ void ds1302_device::nvram_default() // .nv file //------------------------------------------------- -void ds1302_device::nvram_read(emu_file &file) +bool ds1302_device::nvram_read(util::read_stream &file) { - file.read(&m_ram[0], m_ram_size); + size_t actual; + return !file.read(&m_ram[0], m_ram_size, actual) && actual == m_ram_size; } @@ -170,9 +169,10 @@ void ds1302_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void ds1302_device::nvram_write(emu_file &file) +bool ds1302_device::nvram_write(util::write_stream &file) { - file.write(&m_ram[0], m_ram_size); + size_t actual; + return !file.write(&m_ram[0], m_ram_size, actual) && actual == m_ram_size; } diff --git a/src/devices/machine/ds1302.h b/src/devices/machine/ds1302.h index 8325e7bd21b..ea0a0d4e809 100644 --- a/src/devices/machine/ds1302.h +++ b/src/devices/machine/ds1302.h @@ -50,8 +50,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; // device_rtc_interface overrides virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; diff --git a/src/devices/machine/ds1386.cpp b/src/devices/machine/ds1386.cpp index edbd46f07b5..e9455585242 100644 --- a/src/devices/machine/ds1386.cpp +++ b/src/devices/machine/ds1386.cpp @@ -12,8 +12,6 @@ #include "ds1386.h" #include "machine/timehelp.h" -#include "fileio.h" - #define DISABLE_OSC (0x80) #define DISABLE_SQW (0x40) @@ -414,14 +412,16 @@ void ds1386_device::nvram_default() m_ram[REGISTER_COMMAND] = COMMAND_TE | COMMAND_WAM | COMMAND_TDM; } -void ds1386_device::nvram_read(emu_file &file) +bool ds1386_device::nvram_read(util::read_stream &file) { - file.read(&m_ram[0], m_ram_size); + size_t actual; + return !file.read(&m_ram[0], m_ram_size, actual) && actual == m_ram_size; } -void ds1386_device::nvram_write(emu_file &file) +bool ds1386_device::nvram_write(util::write_stream &file) { - file.write(&m_ram[0], m_ram_size); + size_t actual; + return !file.write(&m_ram[0], m_ram_size, actual) && actual == m_ram_size; } void ds1386_device::data_w(offs_t offset, uint8_t data) diff --git a/src/devices/machine/ds1386.h b/src/devices/machine/ds1386.h index 3c28782a351..4029fe558b0 100644 --- a/src/devices/machine/ds1386.h +++ b/src/devices/machine/ds1386.h @@ -129,8 +129,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; // device_rtc_interface overrides virtual bool rtc_feature_y2k() const override { return false; } diff --git a/src/devices/machine/ds1994.cpp b/src/devices/machine/ds1994.cpp index 2d16d3eed54..d6dacf90815 100644 --- a/src/devices/machine/ds1994.cpp +++ b/src/devices/machine/ds1994.cpp @@ -15,8 +15,6 @@ #include "emu.h" #include "machine/ds1994.h" -#include "fileio.h" - #include #define VERBOSE_LEVEL 0 @@ -753,13 +751,15 @@ void ds1994_device::nvram_default() // .nv file //------------------------------------------------- -void ds1994_device::nvram_read(emu_file &file) +bool ds1994_device::nvram_read(util::read_stream &file) { - file.read(m_rom, ROM_SIZE); - file.read(m_ram, SPD_SIZE); - file.read(m_sram, DATA_SIZE); - file.read(m_rtc, RTC_SIZE); - file.read(m_regs, REGS_SIZE); + size_t actual; + bool result = !file.read(m_rom, ROM_SIZE, actual) && actual == ROM_SIZE; + result = result && !file.read(m_ram, SPD_SIZE, actual) && actual == SPD_SIZE; + result = result && !file.read(m_sram, DATA_SIZE, actual) && actual == DATA_SIZE; + result = result && !file.read(m_rtc, RTC_SIZE, actual) && actual == RTC_SIZE; + result = result && !file.read(m_regs, REGS_SIZE, actual) && actual == REGS_SIZE; + return result; } //------------------------------------------------- @@ -767,11 +767,13 @@ void ds1994_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void ds1994_device::nvram_write(emu_file &file) +bool ds1994_device::nvram_write(util::write_stream &file) { - file.write(m_rom, ROM_SIZE); - file.write(m_ram, SPD_SIZE); - file.write(m_sram, DATA_SIZE); - file.write(m_rtc, RTC_SIZE); - file.write(m_regs, REGS_SIZE); + size_t actual; + bool result = !file.write(m_rom, ROM_SIZE, actual) && actual == ROM_SIZE; + result = result && !file.write(m_ram, SPD_SIZE, actual) && actual == SPD_SIZE; + result = result && !file.write(m_sram, DATA_SIZE, actual) && actual == DATA_SIZE; + result = result && !file.write(m_rtc, RTC_SIZE, actual) && actual == RTC_SIZE; + result = result && !file.write(m_regs, REGS_SIZE, actual) && actual == REGS_SIZE; + return result; } diff --git a/src/devices/machine/ds1994.h b/src/devices/machine/ds1994.h index d624bef7dee..df5c5216e30 100644 --- a/src/devices/machine/ds1994.h +++ b/src/devices/machine/ds1994.h @@ -41,8 +41,8 @@ class ds1994_device : public device_t, public device_nvram_interface // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: enum { diff --git a/src/devices/machine/ds2404.cpp b/src/devices/machine/ds2404.cpp index f488b116aec..6a279d80986 100644 --- a/src/devices/machine/ds2404.cpp +++ b/src/devices/machine/ds2404.cpp @@ -16,8 +16,6 @@ #include "emu.h" #include "ds2404.h" -#include "fileio.h" - #include #include // FIXME: re-write in terms of device_rtc_interface and remove this @@ -355,9 +353,10 @@ void ds2404_device::nvram_default() // .nv file //------------------------------------------------- -void ds2404_device::nvram_read(emu_file &file) +bool ds2404_device::nvram_read(util::read_stream &file) { - file.read(m_sram, sizeof(m_sram)); + size_t actual; + return !file.read(m_sram, sizeof(m_sram), actual) && actual == sizeof(m_sram); } @@ -366,7 +365,8 @@ void ds2404_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void ds2404_device::nvram_write(emu_file &file) +bool ds2404_device::nvram_write(util::write_stream &file) { - file.write(m_sram, sizeof(m_sram)); + size_t actual; + return !file.write(m_sram, sizeof(m_sram), actual) && actual == sizeof(m_sram); } diff --git a/src/devices/machine/ds2404.h b/src/devices/machine/ds2404.h index b4cc69134c5..4301c2a050f 100644 --- a/src/devices/machine/ds2404.h +++ b/src/devices/machine/ds2404.h @@ -43,8 +43,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param) override; diff --git a/src/devices/machine/eeprom.cpp b/src/devices/machine/eeprom.cpp index 791e5c88ec5..2ee3b1697c1 100644 --- a/src/devices/machine/eeprom.cpp +++ b/src/devices/machine/eeprom.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "machine/eeprom.h" -#include "fileio.h" - //#define VERBOSE 1 #include "logmacro.h" @@ -251,12 +249,13 @@ void eeprom_base_device::nvram_default() // .nv file //------------------------------------------------- -void eeprom_base_device::nvram_read(emu_file &file) +bool eeprom_base_device::nvram_read(util::read_stream &file) { uint32_t eeprom_length = 1 << m_address_bits; uint32_t eeprom_bytes = eeprom_length * m_data_bits / 8; + size_t actual_bytes; - file.read(&m_data[0], eeprom_bytes); + return !file.read(&m_data[0], eeprom_bytes, actual_bytes) && actual_bytes == eeprom_bytes; } @@ -265,12 +264,13 @@ void eeprom_base_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void eeprom_base_device::nvram_write(emu_file &file) +bool eeprom_base_device::nvram_write(util::write_stream &file) { uint32_t eeprom_length = 1 << m_address_bits; uint32_t eeprom_bytes = eeprom_length * m_data_bits / 8; + size_t actual_bytes; - file.write(&m_data[0], eeprom_bytes); + return !file.write(&m_data[0], eeprom_bytes, actual_bytes) && actual_bytes == eeprom_bytes; } diff --git a/src/devices/machine/eeprom.h b/src/devices/machine/eeprom.h index eb0a64b9234..9484357915a 100644 --- a/src/devices/machine/eeprom.h +++ b/src/devices/machine/eeprom.h @@ -63,8 +63,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; optional_memory_region m_region; diff --git a/src/devices/machine/er1400.cpp b/src/devices/machine/er1400.cpp index 7f73983e173..79ec1bc7d6e 100644 --- a/src/devices/machine/er1400.cpp +++ b/src/devices/machine/er1400.cpp @@ -24,8 +24,6 @@ #include "emu.h" #include "machine/er1400.h" -#include "fileio.h" - #define VERBOSE 0 #include "logmacro.h" @@ -106,9 +104,12 @@ void er1400_device::nvram_default() // .nv file //------------------------------------------------- -void er1400_device::nvram_read(emu_file &file) +bool er1400_device::nvram_read(util::read_stream &file) { - file.read(&m_data_array[0], 100 * sizeof(m_data_array[0])); + size_t size = 100 * sizeof(m_data_array[0]); + size_t actual; + + return !file.read(&m_data_array[0], size, actual) && actual == size; } @@ -117,9 +118,12 @@ void er1400_device::nvram_read(emu_file &file) // specified file //------------------------------------------------- -void er1400_device::nvram_write(emu_file &file) +bool er1400_device::nvram_write(util::write_stream &file) { - file.write(&m_data_array[0], 100 * sizeof(m_data_array[0])); + size_t size = 100 * sizeof(m_data_array[0]); + size_t actual; + + return !file.write(&m_data_array[0], size, actual) && actual == size; } diff --git a/src/devices/machine/er1400.h b/src/devices/machine/er1400.h index 6d9a4685980..f8c6edb5614 100644 --- a/src/devices/machine/er1400.h +++ b/src/devices/machine/er1400.h @@ -49,8 +49,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: enum diff --git a/src/devices/machine/er2055.cpp b/src/devices/machine/er2055.cpp index 80faafe3a46..678c044122a 100644 --- a/src/devices/machine/er2055.cpp +++ b/src/devices/machine/er2055.cpp @@ -14,8 +14,6 @@ #include "emu.h" #include "machine/er2055.h" -#include "fileio.h" - #include "logmacro.h" @@ -85,9 +83,10 @@ void er2055_device::nvram_default() // .nv file //------------------------------------------------- -void er2055_device::nvram_read(emu_file &file) +bool er2055_device::nvram_read(util::read_stream &file) { - file.read(&m_rom_data[0], SIZE_DATA); + size_t actual; + return !file.read(&m_rom_data[0], SIZE_DATA, actual) && actual == SIZE_DATA; } @@ -96,9 +95,10 @@ void er2055_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void er2055_device::nvram_write(emu_file &file) +bool er2055_device::nvram_write(util::write_stream &file) { - file.write(&m_rom_data[0], SIZE_DATA); + size_t actual; + return !file.write(&m_rom_data[0], SIZE_DATA, actual) && actual == SIZE_DATA; } diff --git a/src/devices/machine/er2055.h b/src/devices/machine/er2055.h index 74cbfe6f68e..95517abc542 100644 --- a/src/devices/machine/er2055.h +++ b/src/devices/machine/er2055.h @@ -58,8 +58,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: void update_state(); diff --git a/src/devices/machine/hd64610.cpp b/src/devices/machine/hd64610.cpp index bb62c11cb36..5090e162b41 100644 --- a/src/devices/machine/hd64610.cpp +++ b/src/devices/machine/hd64610.cpp @@ -18,7 +18,6 @@ #include "hd64610.h" #include "coreutil.h" -#include "fileio.h" #define VERBOSE 1 #include "logmacro.h" @@ -257,9 +256,10 @@ void hd64610_device::nvram_default() // .nv file //------------------------------------------------- -void hd64610_device::nvram_read(emu_file &file) +bool hd64610_device::nvram_read(util::read_stream &file) { - file.read(m_regs, 0x10); + size_t actual; + return !file.read(m_regs, 0x10, actual) && actual == 0x10; } @@ -268,9 +268,10 @@ void hd64610_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void hd64610_device::nvram_write(emu_file &file) +bool hd64610_device::nvram_write(util::write_stream &file) { - file.write(m_regs, 0x10); + size_t actual; + return !file.write(m_regs, 0x10, actual) && actual == 0x10; } diff --git a/src/devices/machine/hd64610.h b/src/devices/machine/hd64610.h index a082a0175d2..ebbb1356042 100644 --- a/src/devices/machine/hd64610.h +++ b/src/devices/machine/hd64610.h @@ -55,8 +55,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: void set_irq_line(); diff --git a/src/devices/machine/i2cmem.cpp b/src/devices/machine/i2cmem.cpp index c7ba56e7a93..e21d8c6b6ee 100644 --- a/src/devices/machine/i2cmem.cpp +++ b/src/devices/machine/i2cmem.cpp @@ -25,8 +25,6 @@ there are two standard values. #include "emu.h" #include "machine/i2cmem.h" -#include "fileio.h" - constexpr int STATE_IDLE(0); constexpr int STATE_DEVSEL(1); constexpr int STATE_ADDRESSHIGH(2); @@ -252,9 +250,10 @@ void i2cmem_device::nvram_default() // .nv file //------------------------------------------------- -void i2cmem_device::nvram_read( emu_file &file ) +bool i2cmem_device::nvram_read( util::read_stream &file ) { - file.read( &m_data[0], m_data_size ); + size_t actual; + return !file.read( &m_data[0], m_data_size, actual ) && actual == m_data_size; } //------------------------------------------------- @@ -262,9 +261,10 @@ void i2cmem_device::nvram_read( emu_file &file ) // .nv file //------------------------------------------------- -void i2cmem_device::nvram_write( emu_file &file ) +bool i2cmem_device::nvram_write( util::write_stream &file ) { - file.write( &m_data[0], m_data_size ); + size_t actual; + return !file.write( &m_data[0], m_data_size, actual ) && actual == m_data_size; } diff --git a/src/devices/machine/i2cmem.h b/src/devices/machine/i2cmem.h index 92cb3c4e444..9ea431faab2 100644 --- a/src/devices/machine/i2cmem.h +++ b/src/devices/machine/i2cmem.h @@ -57,8 +57,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read( emu_file &file ) override; - virtual void nvram_write( emu_file &file ) override; + virtual bool nvram_read( util::read_stream &file ) override; + virtual bool nvram_write( util::write_stream &file ) override; // configuration helpers void set_devsel_address_low(bool devsel_address_low) { m_devsel_address_low = devsel_address_low; } diff --git a/src/devices/machine/icm7170.cpp b/src/devices/machine/icm7170.cpp index 097fadf3b57..3960545ee94 100644 --- a/src/devices/machine/icm7170.cpp +++ b/src/devices/machine/icm7170.cpp @@ -10,7 +10,6 @@ #include "icm7170.h" #include "coreutil.h" -#include "fileio.h" #define VERBOSE (0) #include "logmacro.h" @@ -261,9 +260,10 @@ void icm7170_device::nvram_default() // .nv file //------------------------------------------------- -void icm7170_device::nvram_read(emu_file &file) +bool icm7170_device::nvram_read(util::read_stream &file) { - file.read(m_regs, 0x20); + size_t actual; + return !file.read(m_regs, 0x20, actual) && actual == 0x20; } @@ -272,9 +272,10 @@ void icm7170_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void icm7170_device::nvram_write(emu_file &file) +bool icm7170_device::nvram_write(util::write_stream &file) { - file.write(m_regs, 0x20); + size_t actual; + return !file.write(m_regs, 0x20, actual) && actual == 0x20; } // non-inherited device functions diff --git a/src/devices/machine/icm7170.h b/src/devices/machine/icm7170.h index e7f2e9db63a..384dd00af8b 100644 --- a/src/devices/machine/icm7170.h +++ b/src/devices/machine/icm7170.h @@ -68,8 +68,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: void recalc_irqs(); diff --git a/src/devices/machine/intelfsh.cpp b/src/devices/machine/intelfsh.cpp index 92561edc32a..917ca444215 100644 --- a/src/devices/machine/intelfsh.cpp +++ b/src/devices/machine/intelfsh.cpp @@ -16,8 +16,6 @@ #include "emu.h" #include "intelfsh.h" -#include "fileio.h" - //************************************************************************** // CONSTANTS @@ -600,9 +598,10 @@ void intelfsh_device::nvram_default() // .nv file //------------------------------------------------- -void intelfsh_device::nvram_read(emu_file &file) +bool intelfsh_device::nvram_read(util::read_stream &file) { - file.read(&m_data[0], m_size); + size_t actual; + return !file.read(&m_data[0], m_size, actual) && actual == m_size; } @@ -611,9 +610,10 @@ void intelfsh_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void intelfsh_device::nvram_write(emu_file &file) +bool intelfsh_device::nvram_write(util::write_stream &file) { - file.write(&m_data[0], m_size); + size_t actual; + return !file.write(&m_data[0], m_size, actual) && actual == m_size; } diff --git a/src/devices/machine/intelfsh.h b/src/devices/machine/intelfsh.h index cf3d38df15f..7752a6d8379 100644 --- a/src/devices/machine/intelfsh.h +++ b/src/devices/machine/intelfsh.h @@ -70,8 +70,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; // derived helpers uint32_t read_full(uint32_t offset); diff --git a/src/devices/machine/m3002.cpp b/src/devices/machine/m3002.cpp index 9a51792f11d..a6a674c19e3 100644 --- a/src/devices/machine/m3002.cpp +++ b/src/devices/machine/m3002.cpp @@ -14,8 +14,6 @@ #include "emu.h" #include "m3002.h" -#include "fileio.h" - #define VERBOSE 0 #include "logmacro.h" @@ -112,9 +110,10 @@ void m3002_device::device_clock_changed() // nvram_read - read NVRAM from the file //------------------------------------------------- -void m3002_device::nvram_read(emu_file &file) +bool m3002_device::nvram_read(util::read_stream &file) { - file.read(&m_ram[0], 0x10); + size_t actual; + return !file.read(&m_ram[0], 0x10, actual) && actual == 0x10; } @@ -122,9 +121,10 @@ void m3002_device::nvram_read(emu_file &file) // nvram_write - write NVRAM to the file //------------------------------------------------- -void m3002_device::nvram_write(emu_file &file) +bool m3002_device::nvram_write(util::write_stream &file) { - file.write(&m_ram[0], 0x10); + size_t actual; + return !file.write(&m_ram[0], 0x10, actual) && actual == 0x10; } diff --git a/src/devices/machine/m3002.h b/src/devices/machine/m3002.h index ef13c360e47..b02d13429eb 100644 --- a/src/devices/machine/m3002.h +++ b/src/devices/machine/m3002.h @@ -56,8 +56,8 @@ protected: virtual void device_clock_changed() override; // device_nvram_interface overrides - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; virtual void nvram_default() override; // device_rtc_interface overrides diff --git a/src/devices/machine/m6m80011ap.cpp b/src/devices/machine/m6m80011ap.cpp index 56d9911dc6c..937f9e815e1 100644 --- a/src/devices/machine/m6m80011ap.cpp +++ b/src/devices/machine/m6m80011ap.cpp @@ -4,8 +4,6 @@ #include "emu.h" #include "machine/m6m80011ap.h" -#include "fileio.h" - //************************************************************************** @@ -78,9 +76,10 @@ void m6m80011ap_device::nvram_default() // .nv file //------------------------------------------------- -void m6m80011ap_device::nvram_read(emu_file &file) +bool m6m80011ap_device::nvram_read(util::read_stream &file) { - file.read(m_eeprom_data, 0x100); + size_t actual; + return !file.read(m_eeprom_data, 0x100, actual) && actual == 0x100; } @@ -89,9 +88,10 @@ void m6m80011ap_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void m6m80011ap_device::nvram_write(emu_file &file) +bool m6m80011ap_device::nvram_write(util::write_stream &file) { - file.write(m_eeprom_data, 0x100); + size_t actual; + return !file.write(m_eeprom_data, 0x100, actual) && actual == 0x100; } //************************************************************************** diff --git a/src/devices/machine/m6m80011ap.h b/src/devices/machine/m6m80011ap.h index 01ccfe2f31a..c288b9da633 100644 --- a/src/devices/machine/m6m80011ap.h +++ b/src/devices/machine/m6m80011ap.h @@ -26,8 +26,8 @@ protected: virtual void device_reset() override; virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: enum eeprom_cmd_t diff --git a/src/devices/machine/mc146818.cpp b/src/devices/machine/mc146818.cpp index 49f77a3a012..ead6f1de5a7 100644 --- a/src/devices/machine/mc146818.cpp +++ b/src/devices/machine/mc146818.cpp @@ -15,7 +15,6 @@ #include "machine/mc146818.h" #include "coreutil.h" -#include "fileio.h" //#define VERBOSE 1 #include "logmacro.h" @@ -279,13 +278,18 @@ void mc146818_device::nvram_default() // .nv file //------------------------------------------------- -void mc146818_device::nvram_read(emu_file &file) +bool mc146818_device::nvram_read(util::read_stream &file) { - file.read(&m_data[0], data_size()); + size_t size = data_size(); + size_t actual; + if (file.read(&m_data[0], size, actual) || actual != size) + return false; set_base_datetime(); update_timer(); update_irq(); + + return true; } @@ -294,9 +298,11 @@ void mc146818_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void mc146818_device::nvram_write(emu_file &file) +bool mc146818_device::nvram_write(util::write_stream &file) { - file.write(&m_data[0], data_size()); + size_t size = data_size(); + size_t actual; + return !file.write(&m_data[0], size, actual) && actual == size; } diff --git a/src/devices/machine/mc146818.h b/src/devices/machine/mc146818.h index baea2104c1c..cceb83b8848 100644 --- a/src/devices/machine/mc146818.h +++ b/src/devices/machine/mc146818.h @@ -57,8 +57,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; static constexpr unsigned char ALARM_DONTCARE = 0xc0; static constexpr unsigned char HOURS_PM = 0x80; diff --git a/src/devices/machine/mccs1850.cpp b/src/devices/machine/mccs1850.cpp index f422d769cea..abbddf5b9be 100644 --- a/src/devices/machine/mccs1850.cpp +++ b/src/devices/machine/mccs1850.cpp @@ -18,8 +18,6 @@ #include "emu.h" #include "mccs1850.h" -#include "fileio.h" - //#define VERBOSE 0 #include "logmacro.h" @@ -396,9 +394,10 @@ void mccs1850_device::nvram_default() // .nv file //------------------------------------------------- -void mccs1850_device::nvram_read(emu_file &file) +bool mccs1850_device::nvram_read(util::read_stream &file) { - file.read(m_ram, RAM_SIZE); + size_t actual; + return !file.read(m_ram, RAM_SIZE, actual) && actual == RAM_SIZE; } @@ -407,9 +406,10 @@ void mccs1850_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void mccs1850_device::nvram_write(emu_file &file) +bool mccs1850_device::nvram_write(util::write_stream &file) { - file.write(m_ram, RAM_SIZE); + size_t actual; + return !file.write(m_ram, RAM_SIZE, actual) && actual == RAM_SIZE; } diff --git a/src/devices/machine/mccs1850.h b/src/devices/machine/mccs1850.h index 19b0a635e97..87def943008 100644 --- a/src/devices/machine/mccs1850.h +++ b/src/devices/machine/mccs1850.h @@ -59,8 +59,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; // device_rtc_interface overrides virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; diff --git a/src/devices/machine/msm58321.cpp b/src/devices/machine/msm58321.cpp index 7f7ba37b1a2..9dc1f8df642 100644 --- a/src/devices/machine/msm58321.cpp +++ b/src/devices/machine/msm58321.cpp @@ -17,8 +17,6 @@ #include "emu.h" #include "msm58321.h" -#include "fileio.h" - //#define VERBOSE 1 #include "logmacro.h" @@ -352,11 +350,14 @@ void msm58321_device::nvram_default() // .nv file //------------------------------------------------- -void msm58321_device::nvram_read(emu_file &file) +bool msm58321_device::nvram_read(util::read_stream &file) { - file.read(m_reg.data(), m_reg.size()); + size_t actual; + if (file.read(m_reg.data(), m_reg.size(), actual) || actual != m_reg.size()) + return false; clock_updated(); + return true; } @@ -365,9 +366,10 @@ void msm58321_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void msm58321_device::nvram_write(emu_file &file) +bool msm58321_device::nvram_write(util::write_stream &file) { - file.write(m_reg.data(), m_reg.size()); + size_t actual; + return !file.write(m_reg.data(), m_reg.size(), actual) && actual == m_reg.size(); } //------------------------------------------------- diff --git a/src/devices/machine/msm58321.h b/src/devices/machine/msm58321.h index 7b9cfc3a1dc..323e2e9daa2 100644 --- a/src/devices/machine/msm58321.h +++ b/src/devices/machine/msm58321.h @@ -81,8 +81,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; virtual bool rtc_feature_leap_year() const override { return true; } private: diff --git a/src/devices/machine/nmc9306.cpp b/src/devices/machine/nmc9306.cpp index c977bee7925..b2fd50626f9 100644 --- a/src/devices/machine/nmc9306.cpp +++ b/src/devices/machine/nmc9306.cpp @@ -9,8 +9,6 @@ #include "emu.h" #include "nmc9306.h" -#include "fileio.h" - //#define VERBOSE 1 #include "logmacro.h" @@ -152,9 +150,10 @@ void nmc9306_device::nvram_default() // .nv file //------------------------------------------------- -void nmc9306_device::nvram_read(emu_file &file) +bool nmc9306_device::nvram_read(util::read_stream &file) { - file.read(m_register, RAM_SIZE); + size_t actual; + return !file.read(m_register, RAM_SIZE, actual) && actual == RAM_SIZE; } @@ -163,9 +162,10 @@ void nmc9306_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void nmc9306_device::nvram_write(emu_file &file) +bool nmc9306_device::nvram_write(util::write_stream &file) { - file.write(m_register, RAM_SIZE); + size_t actual; + return !file.write(m_register, RAM_SIZE, actual) && actual == RAM_SIZE; } diff --git a/src/devices/machine/nmc9306.h b/src/devices/machine/nmc9306.h index 07aa6b36db0..98566a9ab82 100644 --- a/src/devices/machine/nmc9306.h +++ b/src/devices/machine/nmc9306.h @@ -44,8 +44,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: inline uint16_t read(offs_t offset); diff --git a/src/devices/machine/nvram.cpp b/src/devices/machine/nvram.cpp index b6adb230ea5..84c07477e9a 100644 --- a/src/devices/machine/nvram.cpp +++ b/src/devices/machine/nvram.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "machine/nvram.h" -#include "fileio.h" - //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -104,12 +102,13 @@ void nvram_device::nvram_default() // .nv file //------------------------------------------------- -void nvram_device::nvram_read(emu_file &file) +bool nvram_device::nvram_read(util::read_stream &file) { // make sure we have a valid base pointer determine_final_base(); - file.read(m_base, m_length); + size_t actual; + return !file.read(m_base, m_length, actual) && actual == m_length; } @@ -118,9 +117,10 @@ void nvram_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void nvram_device::nvram_write(emu_file &file) +bool nvram_device::nvram_write(util::write_stream &file) { - file.write(m_base, m_length); + size_t actual; + return !file.write(m_base, m_length, actual) && actual == m_length; } diff --git a/src/devices/machine/nvram.h b/src/devices/machine/nvram.h index f497a02976e..219d433195e 100644 --- a/src/devices/machine/nvram.h +++ b/src/devices/machine/nvram.h @@ -55,8 +55,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) 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 { return m_base && m_length; } // internal helpers diff --git a/src/devices/machine/pcf8583.cpp b/src/devices/machine/pcf8583.cpp index fb1eb2b2a79..ebad0d9e90e 100644 --- a/src/devices/machine/pcf8583.cpp +++ b/src/devices/machine/pcf8583.cpp @@ -12,8 +12,6 @@ #include "emu.h" #include "pcf8583.h" -#include "fileio.h" - #define LOG_DATA (1 << 1) #define LOG_LINE (1 << 2) @@ -188,9 +186,10 @@ void pcf8583_device::nvram_default() // .nv file //------------------------------------------------- -void pcf8583_device::nvram_read(emu_file &file) +bool pcf8583_device::nvram_read(util::read_stream &file) { - file.read(m_data, sizeof(m_data)); + size_t actual; + return !file.read(m_data, sizeof(m_data), actual) && actual == sizeof(m_data); } //------------------------------------------------- @@ -198,9 +197,10 @@ void pcf8583_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void pcf8583_device::nvram_write(emu_file &file) +bool pcf8583_device::nvram_write(util::write_stream &file) { - file.write(m_data, sizeof(m_data)); + size_t actual; + return !file.write(m_data, sizeof(m_data), actual) && actual == sizeof(m_data); } diff --git a/src/devices/machine/pcf8583.h b/src/devices/machine/pcf8583.h index 3ece2f2d3f2..0a2b45696b7 100644 --- a/src/devices/machine/pcf8583.h +++ b/src/devices/machine/pcf8583.h @@ -97,8 +97,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: static constexpr uint8_t PCF8583_SLAVE_ADDRESS = 0xa0; diff --git a/src/devices/machine/pcf8593.cpp b/src/devices/machine/pcf8593.cpp index c0ed932c5fe..b2ed3a49272 100644 --- a/src/devices/machine/pcf8593.cpp +++ b/src/devices/machine/pcf8593.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "pcf8593.h" -#include "fileio.h" - /*************************************************************************** PARAMETERS/CONSTANTS/MACROS @@ -136,9 +134,10 @@ void pcf8593_device::nvram_default() // .nv file //------------------------------------------------- -void pcf8593_device::nvram_read(emu_file &file) +bool pcf8593_device::nvram_read(util::read_stream &file) { - file.read(m_data, sizeof(m_data)); + size_t actual; + return !file.read(m_data, sizeof(m_data), actual) && actual == sizeof(m_data); } @@ -147,9 +146,10 @@ void pcf8593_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void pcf8593_device::nvram_write(emu_file &file) +bool pcf8593_device::nvram_write(util::write_stream &file) { - file.write(m_data, sizeof(m_data)); + size_t actual; + return !file.write(m_data, sizeof(m_data), actual) && actual == sizeof(m_data); } diff --git a/src/devices/machine/pcf8593.h b/src/devices/machine/pcf8593.h index c51ebadc454..419aebad224 100644 --- a/src/devices/machine/pcf8593.h +++ b/src/devices/machine/pcf8593.h @@ -40,8 +40,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: void clear_buffer_rx(); diff --git a/src/devices/machine/rp5c01.cpp b/src/devices/machine/rp5c01.cpp index 61e523afe51..50443421ba5 100644 --- a/src/devices/machine/rp5c01.cpp +++ b/src/devices/machine/rp5c01.cpp @@ -19,8 +19,6 @@ #include "emu.h" #include "rp5c01.h" -#include "fileio.h" - // device type definitions DEFINE_DEVICE_TYPE(RP5C01, rp5c01_device, "rp5c01", "Ricoh RP5C01 RTC") @@ -289,10 +287,10 @@ void rp5c01_device::nvram_default() // .nv file //------------------------------------------------- -void rp5c01_device::nvram_read(emu_file &file) +bool rp5c01_device::nvram_read(util::read_stream &file) { - if (m_battery_backed) - file.read(m_ram, RAM_SIZE); + size_t actual; + return !file.read(m_ram, RAM_SIZE, actual) && actual == RAM_SIZE; } @@ -301,10 +299,10 @@ void rp5c01_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void rp5c01_device::nvram_write(emu_file &file) +bool rp5c01_device::nvram_write(util::write_stream &file) { - if (m_battery_backed) - file.write(m_ram, RAM_SIZE); + size_t actual; + return !file.write(m_ram, RAM_SIZE, actual) && actual == RAM_SIZE; } diff --git a/src/devices/machine/rp5c01.h b/src/devices/machine/rp5c01.h index ab62fc81cca..14c44b385a5 100644 --- a/src/devices/machine/rp5c01.h +++ b/src/devices/machine/rp5c01.h @@ -63,8 +63,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) 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 { return m_battery_backed; } private: diff --git a/src/devices/machine/rtc65271.cpp b/src/devices/machine/rtc65271.cpp index a74c9ecd06d..5ddc59ddb5f 100644 --- a/src/devices/machine/rtc65271.cpp +++ b/src/devices/machine/rtc65271.cpp @@ -21,8 +21,6 @@ #include "emu.h" #include "rtc65271.h" -#include "fileio.h" - /* Delay between the beginning (UIP asserted) and the end (UIP cleared and update interrupt asserted) of the update cycle */ #define UPDATE_CYCLE_TIME attotime::from_usec(1984) @@ -166,9 +164,9 @@ void rtc65271_device::nvram_default() { if (m_default_data.found()) { - emu_file file(OPEN_FLAG_READ); - file.open_ram(m_default_data, m_default_data.bytes()); - nvram_read(file); + auto file = util::ram_read(m_default_data, m_default_data.bytes()); + if (file != nullptr) + nvram_read(*file); } else { @@ -183,39 +181,40 @@ void rtc65271_device::nvram_default() // .nv file //------------------------------------------------- -void rtc65271_device::nvram_read(emu_file &file) +bool rtc65271_device::nvram_read(util::read_stream &file) { uint8_t buf; + size_t actual; /* version flag */ - if (file.read(&buf, 1) != 1) - return; + if (file.read(&buf, 1, actual) || actual != 1) + return false; if (buf != 0) - return; + return false; /* control registers */ - if (file.read(&buf, 1) != 1) - return; + if (file.read(&buf, 1, actual) || actual != 1) + return false; m_regs[reg_A] = buf & (reg_A_DV /*| reg_A_RS*/); - if (file.read(&buf, 1) != 1) - return; + if (file.read(&buf, 1, actual) || actual != 1) + return false; m_regs[reg_B] = buf & (reg_B_SET | reg_B_DM | reg_B_24h | reg_B_DSE); /* alarm registers */ - if (file.read(&m_regs[reg_alarm_second], 1) != 1) - return; - if (file.read(&m_regs[reg_alarm_minute], 1) != 1) - return; - if (file.read(&m_regs[reg_alarm_hour], 1) != 1) - return; + if (file.read(&m_regs[reg_alarm_second], 1, actual) || actual != 1) + return false; + if (file.read(&m_regs[reg_alarm_minute], 1, actual) || actual != 1) + return false; + if (file.read(&m_regs[reg_alarm_hour], 1, actual) || actual != 1) + return false; /* user RAM */ - if (file.read(m_regs+14, 50) != 50) - return; + if (file.read(m_regs+14, 50, actual) || actual != 50) + return false; /* extended RAM */ - if (file.read(m_xram, 4096) != 4096) - return; + if (file.read(m_xram, 4096, actual) || actual != 4096) + return false; m_regs[reg_D] |= reg_D_VRT; /* the data was backed up successfully */ /*m_dirty = false;*/ @@ -262,6 +261,8 @@ void rtc65271_device::nvram_read(emu_file &file) m_regs[reg_year] = binary_to_BCD(m_regs[reg_year]); } } + + return true; } //------------------------------------------------- @@ -269,39 +270,41 @@ void rtc65271_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void rtc65271_device::nvram_write(emu_file &file) +bool rtc65271_device::nvram_write(util::write_stream &file) { uint8_t buf; - + size_t actual; /* version flag */ buf = 0; - if (file.write(& buf, 1) != 1) - return; + if (file.write(&buf, 1, actual) || actual != 1) + return false; /* control registers */ buf = m_regs[reg_A] & (reg_A_DV | reg_A_RS); - if (file.write(&buf, 1) != 1) - return; + if (file.write(&buf, 1, actual) || actual != 1) + return false; buf = m_regs[reg_B] & (reg_B_SET | reg_B_DM | reg_B_24h | reg_B_DSE); - if (file.write(&buf, 1) != 1) - return; + if (file.write(&buf, 1, actual) || actual != 1) + return false; /* alarm registers */ - if (file.write(&m_regs[reg_alarm_second], 1) != 1) - return; - if (file.write(&m_regs[reg_alarm_minute], 1) != 1) - return; - if (file.write(&m_regs[reg_alarm_hour], 1) != 1) - return; + if (file.write(&m_regs[reg_alarm_second], 1, actual) || actual != 1) + return false; + if (file.write(&m_regs[reg_alarm_minute], 1, actual) || actual != 1) + return false; + if (file.write(&m_regs[reg_alarm_hour], 1, actual) || actual != 1) + return false; /* user RAM */ - if (file.write(m_regs+14, 50) != 50) - return; + if (file.write(m_regs+14, 50, actual) || actual != 50) + return false; /* extended RAM */ - if (file.write(m_xram, 4096) != 4096) - return; + if (file.write(m_xram, 4096, actual) || actual != 4096) + return false; + + return true; } /* diff --git a/src/devices/machine/rtc65271.h b/src/devices/machine/rtc65271.h index e249491cf48..70ea033953e 100644 --- a/src/devices/machine/rtc65271.h +++ b/src/devices/machine/rtc65271.h @@ -36,8 +36,8 @@ protected: virtual void device_start() override; // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: void field_interrupts(); diff --git a/src/devices/machine/rtc9701.cpp b/src/devices/machine/rtc9701.cpp index f022d9fe329..a16ce296dde 100644 --- a/src/devices/machine/rtc9701.cpp +++ b/src/devices/machine/rtc9701.cpp @@ -14,8 +14,6 @@ #include "emu.h" #include "machine/rtc9701.h" -#include "fileio.h" - ALLOW_SAVE_TYPE(rtc9701_device::state_t); @@ -162,9 +160,10 @@ void rtc9701_device::nvram_default() // .nv file //------------------------------------------------- -void rtc9701_device::nvram_read(emu_file &file) +bool rtc9701_device::nvram_read(util::read_stream &file) { - file.read(rtc9701_data, 0x200); + size_t actual; + return !file.read(rtc9701_data, 0x200, actual) && actual == 0x200; } @@ -173,9 +172,10 @@ void rtc9701_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void rtc9701_device::nvram_write(emu_file &file) +bool rtc9701_device::nvram_write(util::write_stream &file) { - file.write(rtc9701_data, 0x200); + size_t actual; + return !file.write(rtc9701_data, 0x200, actual) && actual == 0x200; } //------------------------------------------------- diff --git a/src/devices/machine/rtc9701.h b/src/devices/machine/rtc9701.h index 922fc6a0ad6..49d8e56582d 100644 --- a/src/devices/machine/rtc9701.h +++ b/src/devices/machine/rtc9701.h @@ -60,8 +60,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; inline uint8_t rtc_read(uint8_t offset); inline void rtc_write(uint8_t offset,uint8_t data); diff --git a/src/devices/machine/s3520cf.cpp b/src/devices/machine/s3520cf.cpp index 6cc780e7175..6bc9bbf64eb 100644 --- a/src/devices/machine/s3520cf.cpp +++ b/src/devices/machine/s3520cf.cpp @@ -17,8 +17,6 @@ TODO: #include "emu.h" #include "machine/s3520cf.h" -#include "fileio.h" - //************************************************************************** @@ -174,9 +172,10 @@ void s3520cf_device::nvram_default() // .nv file //------------------------------------------------- -void s3520cf_device::nvram_read(emu_file &file) +bool s3520cf_device::nvram_read(util::read_stream &file) { - file.read(m_nvdata, 15); + size_t actual; + return !file.read(m_nvdata, 15, actual) && actual == 15; } //------------------------------------------------- @@ -184,9 +183,10 @@ void s3520cf_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void s3520cf_device::nvram_write(emu_file &file) +bool s3520cf_device::nvram_write(util::write_stream &file) { - file.write(m_nvdata, 15); + size_t actual; + return !file.write(m_nvdata, 15, actual) && actual == 15; } //------------------------------------------------- diff --git a/src/devices/machine/s3520cf.h b/src/devices/machine/s3520cf.h index 11e739c9b9e..5c8f0c8614b 100644 --- a/src/devices/machine/s3520cf.h +++ b/src/devices/machine/s3520cf.h @@ -48,8 +48,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; optional_memory_region m_region; diff --git a/src/devices/machine/sda2006.cpp b/src/devices/machine/sda2006.cpp index e44cf48881c..815cb829d85 100644 --- a/src/devices/machine/sda2006.cpp +++ b/src/devices/machine/sda2006.cpp @@ -4,8 +4,6 @@ #include "emu.h" #include "machine/sda2006.h" -#include "fileio.h" - //------------------------------------------------- // // Siemens SDA2006 512-bit (32x16) NV EEPROM @@ -116,9 +114,10 @@ void sda2006_device::nvram_default() // .nv file //------------------------------------------------- -void sda2006_device::nvram_read(emu_file &file) +bool sda2006_device::nvram_read(util::read_stream &file) { - file.read(m_eeprom_data, EEPROM_CAPACITY); + size_t actual; + return !file.read(m_eeprom_data, EEPROM_CAPACITY, actual) && actual == EEPROM_CAPACITY; } //------------------------------------------------- @@ -126,9 +125,10 @@ void sda2006_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void sda2006_device::nvram_write(emu_file &file) +bool sda2006_device::nvram_write(util::write_stream &file) { - file.write(m_eeprom_data, EEPROM_CAPACITY); + size_t actual; + return !file.write(m_eeprom_data, EEPROM_CAPACITY, actual) && actual == EEPROM_CAPACITY; } READ_LINE_MEMBER( sda2006_device::read_data ) diff --git a/src/devices/machine/sda2006.h b/src/devices/machine/sda2006.h index 31657be6344..1ae1748f5c2 100644 --- a/src/devices/machine/sda2006.h +++ b/src/devices/machine/sda2006.h @@ -29,8 +29,8 @@ protected: virtual void device_reset() override; virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: enum { diff --git a/src/devices/machine/sensorboard.cpp b/src/devices/machine/sensorboard.cpp index 0889e80a016..e9edf3a892a 100644 --- a/src/devices/machine/sensorboard.cpp +++ b/src/devices/machine/sensorboard.cpp @@ -59,8 +59,6 @@ sensor state instead. #include "emu.h" #include "machine/sensorboard.h" -#include "fileio.h" - DEFINE_DEVICE_TYPE(SENSORBOARD, sensorboard_device, "sensorboard", "Sensorboard") @@ -217,15 +215,17 @@ void sensorboard_device::nvram_default() m_custom_init_cb(1); } -void sensorboard_device::nvram_read(emu_file &file) +bool sensorboard_device::nvram_read(util::read_stream &file) { - file.read(m_curstate, sizeof(m_curstate)); + size_t actual; + return !file.read(m_curstate, sizeof(m_curstate), actual) && actual == sizeof(m_curstate); } -void sensorboard_device::nvram_write(emu_file &file) +bool sensorboard_device::nvram_write(util::write_stream &file) { // save last board position - file.write(m_curstate, sizeof(m_curstate)); + size_t actual; + return !file.write(m_curstate, sizeof(m_curstate), actual) && actual == sizeof(m_curstate); } bool sensorboard_device::nvram_can_write() diff --git a/src/devices/machine/sensorboard.h b/src/devices/machine/sensorboard.h index 7a6daa17d28..328599d7b4d 100644 --- a/src/devices/machine/sensorboard.h +++ b/src/devices/machine/sensorboard.h @@ -86,8 +86,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) 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: diff --git a/src/devices/machine/serflash.cpp b/src/devices/machine/serflash.cpp index 801a212a592..c7589e6f58e 100644 --- a/src/devices/machine/serflash.cpp +++ b/src/devices/machine/serflash.cpp @@ -8,8 +8,6 @@ #include "emu.h" #include "machine/serflash.h" -#include "fileio.h" - #include ALLOW_SAVE_TYPE(serflash_device::flash_state_t); @@ -100,24 +98,27 @@ void serflash_device::nvram_default() // .nv file //------------------------------------------------- -void serflash_device::nvram_read(emu_file &file) +bool serflash_device::nvram_read(util::read_stream &file) { - if (m_length % m_flash_page_size) return; // region size must be multiple of flash page size + if (m_length % m_flash_page_size) return false; // region size must be multiple of flash page size int size = m_length / m_flash_page_size; - - if (file.is_open()) { uint32_t page; - file.read(&page, 4); + size_t actual; + if (file.read(&page, 4, actual) || actual != 4) + return false; while (page < size) { m_flashwritemap[page] = 1; - file.read(m_region + page * m_flash_page_size, m_flash_page_size); - file.read(&page, 4); + if (file.read(m_region + page * m_flash_page_size, m_flash_page_size, actual) || actual != m_flash_page_size) + return false; + if (file.read(&page, 4, actual) || actual != 4) + return false; } } + return true; } @@ -126,22 +127,28 @@ void serflash_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void serflash_device::nvram_write(emu_file &file) +bool serflash_device::nvram_write(util::write_stream &file) { - if (m_length % m_flash_page_size) return; // region size must be multiple of flash page size + if (m_length % m_flash_page_size) return false; // region size must be multiple of flash page size int size = m_length / m_flash_page_size; uint32_t page = 0; + size_t actual; while (page < size) { if (m_flashwritemap[page]) { - file.write(&page, 4); - file.write(m_region + page * m_flash_page_size, m_flash_page_size); + if (file.write(&page, 4, actual) || actual != 4) + return false; + if (file.write(m_region + page * m_flash_page_size, m_flash_page_size, actual) || actual != m_flash_page_size) + return false; } page++; } - file.write(&page, 4); + if (file.write(&page, 4, actual) || actual != 4) + return false; + + return true; } void serflash_device::flash_hard_reset() diff --git a/src/devices/machine/serflash.h b/src/devices/machine/serflash.h index 03181dec73a..1c9e5ab7afc 100644 --- a/src/devices/machine/serflash.h +++ b/src/devices/machine/serflash.h @@ -47,8 +47,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; void flash_change_state(flash_state_t state); diff --git a/src/devices/machine/strata.cpp b/src/devices/machine/strata.cpp index 57383ef8e11..15841fe4597 100644 --- a/src/devices/machine/strata.cpp +++ b/src/devices/machine/strata.cpp @@ -23,8 +23,6 @@ #include "emu.h" #include "strata.h" -#include "fileio.h" - #define FEEPROM_SIZE 0x800000 // 64Mbit #define BLOCK_SIZE 0x020000 @@ -68,9 +66,11 @@ void strataflash_device::nvram_default() // .nv file //------------------------------------------------- -void strataflash_device::nvram_read(emu_file &file) +bool strataflash_device::nvram_read(util::read_stream &file) { - file.read(m_flashmemory.get(), COMPLETE_SIZE); + size_t actual; + if (file.read(m_flashmemory.get(), COMPLETE_SIZE, actual) || actual != COMPLETE_SIZE) + return false; // TODO @@ -113,6 +113,8 @@ void strataflash_device::nvram_read(emu_file &file) return 0; */ + + return true; } //------------------------------------------------- @@ -120,7 +122,7 @@ void strataflash_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void strataflash_device::nvram_write(emu_file &file) +bool strataflash_device::nvram_write(util::write_stream &file) { // TODO @@ -174,7 +176,8 @@ void strataflash_device::nvram_write(emu_file &file) return 0; */ - file.write(m_flashmemory.get(), COMPLETE_SIZE); + size_t actual; + return !file.write(m_flashmemory.get(), COMPLETE_SIZE, actual) && actual == COMPLETE_SIZE; } //------------------------------------------------- diff --git a/src/devices/machine/strata.h b/src/devices/machine/strata.h index 1a3acbbd9dd..0c6f487c50e 100644 --- a/src/devices/machine/strata.h +++ b/src/devices/machine/strata.h @@ -24,8 +24,8 @@ protected: void device_start() override; void nvram_default() override; - void nvram_read(emu_file &file) override; - void nvram_write(emu_file &file) override; + bool nvram_read(util::read_stream &file) override; + bool nvram_write(util::write_stream &file) override; private: diff --git a/src/devices/machine/timekpr.cpp b/src/devices/machine/timekpr.cpp index bf3225103b8..645a4604c8a 100644 --- a/src/devices/machine/timekpr.cpp +++ b/src/devices/machine/timekpr.cpp @@ -18,8 +18,6 @@ #include "machine/timekpr.h" #include "machine/timehelp.h" -#include "fileio.h" - #define LOG_GENERAL (1U << 0) #define LOG_TICKS (1U << 1) @@ -459,11 +457,14 @@ void timekeeper_device::nvram_default() // .nv file //------------------------------------------------- -void timekeeper_device::nvram_read(emu_file &file) +bool timekeeper_device::nvram_read(util::read_stream &file) { - file.read(&m_data[0], m_size); + size_t actual; + if (file.read(&m_data[0], m_size, actual) || actual != m_size) + return false; counters_to_ram(); + return true; } @@ -472,7 +473,8 @@ void timekeeper_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void timekeeper_device::nvram_write(emu_file &file) +bool timekeeper_device::nvram_write(util::write_stream &file) { - file.write(&m_data[0], m_size); + size_t actual; + return !file.write(&m_data[0], m_size, actual) && actual == m_size; } diff --git a/src/devices/machine/timekpr.h b/src/devices/machine/timekpr.h index e32b135576c..4c38a4e1784 100644 --- a/src/devices/machine/timekpr.h +++ b/src/devices/machine/timekpr.h @@ -50,8 +50,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; TIMER_CALLBACK_MEMBER(watchdog_callback); devcb_write_line m_reset_cb; diff --git a/src/devices/machine/x2201.cpp b/src/devices/machine/x2201.cpp index 50be117403e..30ee78a8cfd 100644 --- a/src/devices/machine/x2201.cpp +++ b/src/devices/machine/x2201.cpp @@ -25,8 +25,6 @@ #include "emu.h" #include "machine/x2201.h" -#include "fileio.h" - #include @@ -99,9 +97,10 @@ void x2201_device::nvram_default() // specified file //------------------------------------------------- -void x2201_device::nvram_read(emu_file &file) +bool x2201_device::nvram_read(util::read_stream &file) { - file.read(&m_eeprom[0], 1024 / 8); + size_t actual; + return !file.read(&m_eeprom[0], 1024 / 8, actual) && actual == 1024 / 8; } @@ -110,9 +109,10 @@ void x2201_device::nvram_read(emu_file &file) // specified file //------------------------------------------------- -void x2201_device::nvram_write(emu_file &file) +bool x2201_device::nvram_write(util::write_stream &file) { - file.write(&m_eeprom[0], 1024 / 8); + size_t actual; + return !file.write(&m_eeprom[0], 1024 / 8, actual) && actual == 1024 / 8; } diff --git a/src/devices/machine/x2201.h b/src/devices/machine/x2201.h index 1d873850df1..1e23493fdb7 100644 --- a/src/devices/machine/x2201.h +++ b/src/devices/machine/x2201.h @@ -51,8 +51,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: // optional default data diff --git a/src/devices/machine/x2212.cpp b/src/devices/machine/x2212.cpp index e055f860640..f8c7fb906e3 100644 --- a/src/devices/machine/x2212.cpp +++ b/src/devices/machine/x2212.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "machine/x2212.h" -#include "fileio.h" - #include @@ -82,9 +80,10 @@ void x2212_device::nvram_default() // .nv file //------------------------------------------------- -void x2212_device::nvram_read(emu_file &file) +bool x2212_device::nvram_read(util::read_stream &file) { - file.read(&m_e2prom[0], m_size_data); + size_t actual; + return !file.read(&m_e2prom[0], m_size_data, actual) && actual == m_size_data; } @@ -93,13 +92,14 @@ void x2212_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void x2212_device::nvram_write(emu_file &file) +bool x2212_device::nvram_write(util::write_stream &file) { // auto-save causes an implicit store prior to exiting (writing) if (m_auto_save) do_store(); - file.write(&m_e2prom[0], m_size_data); + size_t actual; + return !file.write(&m_e2prom[0], m_size_data, actual) && actual == m_size_data; } diff --git a/src/devices/machine/x2212.h b/src/devices/machine/x2212.h index 5fbcb23f532..feeb91a0d23 100644 --- a/src/devices/machine/x2212.h +++ b/src/devices/machine/x2212.h @@ -59,8 +59,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: // configuration state diff --git a/src/devices/machine/x76f041.cpp b/src/devices/machine/x76f041.cpp index 0f2f0f87f09..01a858df8e5 100644 --- a/src/devices/machine/x76f041.cpp +++ b/src/devices/machine/x76f041.cpp @@ -16,8 +16,6 @@ #include "emu.h" #include "machine/x76f041.h" -#include "fileio.h" - #define VERBOSE_LEVEL ( 0 ) inline void ATTR_PRINTF( 3, 4 ) x76f041_device::verboselog( int n_level, const char *s_fmt, ... ) @@ -744,22 +742,26 @@ void x76f041_device::nvram_default() } } -void x76f041_device::nvram_read( emu_file &file ) +bool x76f041_device::nvram_read( util::read_stream &file ) { - file.read( m_response_to_reset, sizeof( m_response_to_reset ) ); - file.read( m_write_password, sizeof( m_write_password ) ); - file.read( m_read_password, sizeof( m_read_password ) ); - file.read( m_configuration_password, sizeof( m_configuration_password ) ); - file.read( m_configuration_registers, sizeof( m_configuration_registers ) ); - file.read( m_data, sizeof( m_data ) ); + size_t actual; + bool result = !file.read( m_response_to_reset, sizeof( m_response_to_reset ), actual ) && actual == sizeof( m_response_to_reset ); + result = result && !file.read( m_write_password, sizeof( m_write_password ), actual ) && actual == sizeof( m_write_password ); + result = result && !file.read( m_read_password, sizeof( m_read_password ), actual ) && actual == sizeof( m_read_password ); + result = result && !file.read( m_configuration_password, sizeof( m_configuration_password ), actual ) && actual == sizeof( m_configuration_password ); + result = result && !file.read( m_configuration_registers, sizeof( m_configuration_registers ), actual ) && actual == sizeof( m_configuration_registers ); + result = result && !file.read( m_data, sizeof( m_data ), actual ) && actual == sizeof( m_data ); + return result; } -void x76f041_device::nvram_write( emu_file &file ) +bool x76f041_device::nvram_write( util::write_stream &file ) { - file.write( m_response_to_reset, sizeof( m_response_to_reset ) ); - file.write( m_write_password, sizeof( m_write_password ) ); - file.write( m_read_password, sizeof( m_read_password ) ); - file.write( m_configuration_password, sizeof( m_configuration_password ) ); - file.write( m_configuration_registers, sizeof( m_configuration_registers ) ); - file.write( m_data, sizeof( m_data ) ); + size_t actual; + bool result = !file.write( m_response_to_reset, sizeof( m_response_to_reset ), actual ) && actual == sizeof( m_response_to_reset ); + result = result && !file.write( m_write_password, sizeof( m_write_password ), actual ) && actual == sizeof( m_write_password ); + result = result && !file.write( m_read_password, sizeof( m_read_password ), actual ) && actual == sizeof( m_read_password ); + result = result && !file.write( m_configuration_password, sizeof( m_configuration_password ), actual ) && actual == sizeof( m_configuration_password ); + result = result && !file.write( m_configuration_registers, sizeof( m_configuration_registers ), actual ) && actual == sizeof( m_configuration_registers ); + result = result && !file.write( m_data, sizeof( m_data ), actual ) && actual == sizeof( m_data ); + return result; } diff --git a/src/devices/machine/x76f041.h b/src/devices/machine/x76f041.h index 44f6baf52db..bd0a792cf9c 100644 --- a/src/devices/machine/x76f041.h +++ b/src/devices/machine/x76f041.h @@ -33,8 +33,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read( emu_file &file ) override; - virtual void nvram_write( emu_file &file ) override; + virtual bool nvram_read( util::read_stream &file ) override; + virtual bool nvram_write( util::write_stream &file ) override; private: inline void ATTR_PRINTF( 3, 4 ) verboselog( int n_level, const char *s_fmt, ... ); diff --git a/src/devices/machine/x76f100.cpp b/src/devices/machine/x76f100.cpp index 825486c0e27..dde7cf95161 100644 --- a/src/devices/machine/x76f100.cpp +++ b/src/devices/machine/x76f100.cpp @@ -14,8 +14,6 @@ #include "emu.h" #include "machine/x76f100.h" -#include "fileio.h" - #define VERBOSE_LEVEL ( 0 ) inline void ATTR_PRINTF( 3, 4 ) x76f100_device::verboselog( int n_level, const char *s_fmt, ... ) @@ -493,18 +491,22 @@ void x76f100_device::nvram_default() } } -void x76f100_device::nvram_read( emu_file &file ) +bool x76f100_device::nvram_read( util::read_stream &file ) { - file.read( m_response_to_reset, sizeof( m_response_to_reset ) ); - file.read( m_write_password, sizeof( m_write_password ) ); - file.read( m_read_password, sizeof( m_read_password ) ); - file.read( m_data, sizeof( m_data ) ); + size_t actual; + bool result = !file.read( m_response_to_reset, sizeof( m_response_to_reset ), actual ) && actual == sizeof( m_response_to_reset ); + result = result && !file.read( m_write_password, sizeof( m_write_password ), actual ) && actual == sizeof( m_write_password ); + result = result && !file.read( m_read_password, sizeof( m_read_password ), actual ) && actual == sizeof( m_read_password ); + result = result && !file.read( m_data, sizeof( m_data ), actual ) && actual == sizeof( m_data ); + return result; } -void x76f100_device::nvram_write( emu_file &file ) +bool x76f100_device::nvram_write( util::write_stream &file ) { - file.write( m_response_to_reset, sizeof( m_response_to_reset ) ); - file.write( m_write_password, sizeof( m_write_password ) ); - file.write( m_read_password, sizeof( m_read_password ) ); - file.write( m_data, sizeof( m_data ) ); + size_t actual; + bool result = !file.write( m_response_to_reset, sizeof( m_response_to_reset ), actual ) && actual == sizeof( m_response_to_reset ); + result = result && !file.write( m_write_password, sizeof( m_write_password ), actual ) && actual == sizeof( m_write_password ); + result = result && !file.write( m_read_password, sizeof( m_read_password ), actual ) && actual == sizeof( m_read_password ); + result = result && !file.write( m_data, sizeof( m_data ), actual ) && actual == sizeof( m_data ); + return result; } diff --git a/src/devices/machine/x76f100.h b/src/devices/machine/x76f100.h index 63f51815ec2..38302f7caeb 100644 --- a/src/devices/machine/x76f100.h +++ b/src/devices/machine/x76f100.h @@ -32,8 +32,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read( emu_file &file ) override; - virtual void nvram_write( emu_file &file ) override; + virtual bool nvram_read( util::read_stream &file ) override; + virtual bool nvram_write( util::write_stream &file ) override; private: inline void verboselog(int n_level, const char *s_fmt, ...) ATTR_PRINTF(3,4); diff --git a/src/emu/dinvram.h b/src/emu/dinvram.h index fb02a9c6e14..0549e183c6a 100644 --- a/src/emu/dinvram.h +++ b/src/emu/dinvram.h @@ -35,15 +35,15 @@ public: // public accessors... for now void nvram_reset() { nvram_default(); } - void nvram_load(emu_file &file) { nvram_read(file); } - void nvram_save(emu_file &file) { nvram_write(file); } + bool nvram_load(util::read_stream &file) { return nvram_read(file); } + bool nvram_save(util::write_stream &file) { return nvram_write(file); } bool nvram_can_save() { return nvram_can_write(); } protected: // derived class overrides virtual void nvram_default() = 0; - virtual void nvram_read(emu_file &file) = 0; - virtual void nvram_write(emu_file &file) = 0; + virtual bool nvram_read(util::read_stream &file) = 0; + virtual bool nvram_write(util::write_stream &file) = 0; virtual bool nvram_can_write() { return true; } }; diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp index a5d30974f90..6613c5654bf 100644 --- a/src/emu/machine.cpp +++ b/src/emu/machine.cpp @@ -1135,8 +1135,8 @@ void running_machine::nvram_load() emu_file file(options().nvram_directory(), OPEN_FLAG_READ); if (!file.open(nvram_filename(nvram.device()))) { - // FIXME: don't swallow errors - nvram.nvram_load(file); + if (!nvram.nvram_load(file)) + osd_printf_error("Error reading NVRAM file %s\n", file.filename()); file.close(); } else @@ -1158,8 +1158,8 @@ void running_machine::nvram_save() emu_file file(options().nvram_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (!file.open(nvram_filename(nvram.device()))) { - // FIXME: don't swallow errors - nvram.nvram_save(file); + if (!nvram.nvram_save(file)) + osd_printf_error("Error writing NVRAM file %s\n", file.filename()); file.close(); } } diff --git a/src/mame/drivers/ngp.cpp b/src/mame/drivers/ngp.cpp index e4a57483617..6739569a331 100644 --- a/src/mame/drivers/ngp.cpp +++ b/src/mame/drivers/ngp.cpp @@ -105,7 +105,6 @@ the Neogeo Pocket. #include "sound/t6w28.h" #include "sound/dac.h" #include "video/k1ge.h" -#include "fileio.h" #include "screen.h" #include "softlist_dev.h" #include "speaker.h" @@ -217,8 +216,8 @@ private: required_ioport m_io_power; virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; }; @@ -811,16 +810,22 @@ void ngp_state::nvram_default() } -void ngp_state::nvram_read(emu_file &file) +bool ngp_state::nvram_read(util::read_stream &file) { - file.read(m_mainram, 0x3000); - m_nvram_loaded = true; + size_t actual; + if (!file.read(m_mainram, 0x3000, actual) && actual == 0x3000) + { + m_nvram_loaded = true; + return true; + } + return false; } -void ngp_state::nvram_write(emu_file &file) +bool ngp_state::nvram_write(util::write_stream &file) { - file.write(m_mainram, 0x3000); + size_t actual; + return !file.write(m_mainram, 0x3000, actual) && actual == 0x3000; } diff --git a/src/mame/machine/cuda.cpp b/src/mame/machine/cuda.cpp index 4442c6f9287..39cad3032c0 100644 --- a/src/mame/machine/cuda.cpp +++ b/src/mame/machine/cuda.cpp @@ -43,8 +43,6 @@ #include "cpu/m6805/m6805.h" #include "sound/asc.h" -#include "fileio.h" - //************************************************************************** // MACROS / CONSTANTS //************************************************************************** @@ -537,13 +535,20 @@ void cuda_device::nvram_default() pram_loaded = false; } -void cuda_device::nvram_read(emu_file &file) +bool cuda_device::nvram_read(util::read_stream &file) { - file.read(disk_pram, 0x100); - pram_loaded = false; + size_t actual; + if (!file.read(disk_pram, 0x100, actual) && actual == 0x100) + { + pram_loaded = false; + return true; + } + return false; } -void cuda_device::nvram_write(emu_file &file) + +bool cuda_device::nvram_write(util::write_stream &file) { - file.write(pram, 0x100); + size_t actual; + return !file.write(pram, 0x100, actual) && actual == 0x100; } diff --git a/src/mame/machine/cuda.h b/src/mame/machine/cuda.h index c786622a21b..513f49e5f5a 100644 --- a/src/mame/machine/cuda.h +++ b/src/mame/machine/cuda.h @@ -40,8 +40,8 @@ public: // device_config_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; uint8_t ddr_r(offs_t offset); void ddr_w(offs_t offset, uint8_t data); diff --git a/src/mame/machine/docg3.cpp b/src/mame/machine/docg3.cpp index e9210144b31..0b53b52f64b 100644 --- a/src/mame/machine/docg3.cpp +++ b/src/mame/machine/docg3.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "machine/docg3.h" -#include "fileio.h" - #define VERBOSE_LEVEL ( 0 ) static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, const char *s_fmt, ... ) @@ -821,11 +819,13 @@ void diskonchip_g3_device::nvram_default() // .nv file //------------------------------------------------- -void diskonchip_g3_device::nvram_read(emu_file &file) +bool diskonchip_g3_device::nvram_read(util::read_stream &file) { - file.read(m_data[0].get(), m_data_size[0]); - file.read(m_data[1].get(), m_data_size[1]); - file.read(m_data[2].get(), m_data_size[2]); + size_t actual; + bool result = !file.read(m_data[0].get(), m_data_size[0], actual) && actual == m_data_size[0]; + result = result && !file.read(m_data[1].get(), m_data_size[1], actual) && actual == m_data_size[1]; + result = result && !file.read(m_data[2].get(), m_data_size[2], actual) && actual == m_data_size[2]; + return result; } //------------------------------------------------- @@ -833,9 +833,11 @@ void diskonchip_g3_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void diskonchip_g3_device::nvram_write(emu_file &file) +bool diskonchip_g3_device::nvram_write(util::write_stream &file) { - file.write(m_data[0].get(), m_data_size[0]); - file.write(m_data[1].get(), m_data_size[1]); - file.write(m_data[2].get(), m_data_size[2]); + size_t actual; + bool result = !file.write(m_data[0].get(), m_data_size[0], actual) && actual == m_data_size[0]; + result = result && !file.write(m_data[1].get(), m_data_size[1], actual) && actual == m_data_size[1]; + result = result && !file.write(m_data[2].get(), m_data_size[2], actual) && actual == m_data_size[2]; + return result; } diff --git a/src/mame/machine/docg3.h b/src/mame/machine/docg3.h index fa0f8033587..f795c562db0 100644 --- a/src/mame/machine/docg3.h +++ b/src/mame/machine/docg3.h @@ -29,8 +29,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; public: uint16_t sec_1_r(offs_t offset); void sec_1_w(offs_t offset, uint16_t data); diff --git a/src/mame/machine/egret.cpp b/src/mame/machine/egret.cpp index fa3d641545e..9af4be4d36e 100644 --- a/src/mame/machine/egret.cpp +++ b/src/mame/machine/egret.cpp @@ -42,8 +42,6 @@ #include "cpu/m6805/m6805.h" #include "sound/asc.h" -#include "fileio.h" - //************************************************************************** // MACROS / CONSTANTS //************************************************************************** @@ -522,13 +520,19 @@ void egret_device::nvram_default() pram_loaded = false; } -void egret_device::nvram_read(emu_file &file) +bool egret_device::nvram_read(util::read_stream &file) { - file.read(disk_pram, 0x100); - pram_loaded = false; + size_t actual; + if (!file.read(disk_pram, 0x100, actual) && actual == 0x100) + { + pram_loaded = false; + return true; + } + return false; } -void egret_device::nvram_write(emu_file &file) +bool egret_device::nvram_write(util::write_stream &file) { - file.write(pram, 0x100); + size_t actual; + return !file.write(pram, 0x100, actual) && actual == 0x100; } diff --git a/src/mame/machine/egret.h b/src/mame/machine/egret.h index d58d2e5d00f..a2994035925 100644 --- a/src/mame/machine/egret.h +++ b/src/mame/machine/egret.h @@ -45,8 +45,8 @@ public: // device_config_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; uint8_t ddr_r(offs_t offset); void ddr_w(offs_t offset, uint8_t data); diff --git a/src/mame/machine/kr1601rr1.cpp b/src/mame/machine/kr1601rr1.cpp index 836fd981813..561d3f212db 100644 --- a/src/mame/machine/kr1601rr1.cpp +++ b/src/mame/machine/kr1601rr1.cpp @@ -15,8 +15,6 @@ #include "emu.h" #include "kr1601rr1.h" -#include "fileio.h" - #include @@ -120,9 +118,10 @@ void kr1601rr1_device::nvram_default() // .nv file //------------------------------------------------- -void kr1601rr1_device::nvram_read(emu_file &file) +bool kr1601rr1_device::nvram_read(util::read_stream &file) { - file.read(m_earom, EAROM_SIZE); + size_t actual; + return !file.read(m_earom, EAROM_SIZE, actual) && actual == EAROM_SIZE; } //------------------------------------------------- @@ -130,9 +129,10 @@ void kr1601rr1_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void kr1601rr1_device::nvram_write(emu_file &file) +bool kr1601rr1_device::nvram_write(util::write_stream &file) { - file.write(m_earom, EAROM_SIZE); + size_t actual; + return !file.write(m_earom, EAROM_SIZE, actual) && actual == EAROM_SIZE; } //------------------------------------------------- diff --git a/src/mame/machine/kr1601rr1.h b/src/mame/machine/kr1601rr1.h index 8185840f1e4..49837e42c32 100644 --- a/src/mame/machine/kr1601rr1.h +++ b/src/mame/machine/kr1601rr1.h @@ -55,8 +55,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: enum { EAROM_SIZE = 1024 }; diff --git a/src/mame/machine/macrtc.cpp b/src/mame/machine/macrtc.cpp index fcd64f34604..0d31c3585fd 100644 --- a/src/mame/machine/macrtc.cpp +++ b/src/mame/machine/macrtc.cpp @@ -14,8 +14,6 @@ #include "emu.h" #include "macrtc.h" -#include "fileio.h" - #ifdef MAME_DEBUG #define LOG_RTC 0 #else @@ -354,12 +352,14 @@ void rtc3430042_device::nvram_default() memset(m_pram, 0, 0x100); } -void rtc3430042_device::nvram_read(emu_file &file) +bool rtc3430042_device::nvram_read(util::read_stream &file) { - file.read(m_pram, 0x100); + size_t actual; + return !file.read(m_pram, 0x100, actual) && actual == 0x100; } -void rtc3430042_device::nvram_write(emu_file &file) +bool rtc3430042_device::nvram_write(util::write_stream &file) { - file.write(m_pram, 0x100); + size_t actual; + return !file.write(m_pram, 0x100, actual) && actual == 0x100; } diff --git a/src/mame/machine/macrtc.h b/src/mame/machine/macrtc.h index bb19f49828f..183c55815b7 100644 --- a/src/mame/machine/macrtc.h +++ b/src/mame/machine/macrtc.h @@ -46,8 +46,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: /* state of rTCEnb and rTCClk lines */ diff --git a/src/mame/machine/midwayic.cpp b/src/mame/machine/midwayic.cpp index 8f6ed497403..5f85d4002dd 100644 --- a/src/mame/machine/midwayic.cpp +++ b/src/mame/machine/midwayic.cpp @@ -9,8 +9,6 @@ #include "emu.h" #include "midwayic.h" -#include "fileio.h" - #define LOG_NVRAM (0) @@ -634,14 +632,16 @@ void midway_serial_pic2_device::nvram_default() memcpy(m_nvram, m_default_nvram, sizeof(m_nvram)); } -void midway_serial_pic2_device::nvram_read(emu_file &file) +bool midway_serial_pic2_device::nvram_read(util::read_stream &file) { - file.read(m_nvram, sizeof(m_nvram)); + size_t actual; + return !file.read(m_nvram, sizeof(m_nvram), actual) && actual == sizeof(m_nvram); } -void midway_serial_pic2_device::nvram_write(emu_file &file) +bool midway_serial_pic2_device::nvram_write(util::write_stream &file) { - file.write(m_nvram, sizeof(m_nvram)); + size_t actual; + return !file.write(m_nvram, sizeof(m_nvram), actual) && actual == sizeof(m_nvram); } diff --git a/src/mame/machine/midwayic.h b/src/mame/machine/midwayic.h index a0979d99b36..a1384f18d91 100644 --- a/src/mame/machine/midwayic.h +++ b/src/mame/machine/midwayic.h @@ -121,8 +121,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: diff --git a/src/mame/machine/msx_matsushita.cpp b/src/mame/machine/msx_matsushita.cpp index 10e989419c6..1153b3c21b3 100644 --- a/src/mame/machine/msx_matsushita.cpp +++ b/src/mame/machine/msx_matsushita.cpp @@ -3,8 +3,6 @@ #include "emu.h" #include "msx_matsushita.h" -#include "fileio.h" - const uint8_t manufacturer_id = 0x08; DEFINE_DEVICE_TYPE(MSX_MATSUSHITA, msx_matsushita_device, "msx_matsushita", "Matsushita switched device") @@ -59,15 +57,17 @@ void msx_matsushita_device::nvram_default() } -void msx_matsushita_device::nvram_read(emu_file &file) +bool msx_matsushita_device::nvram_read(util::read_stream &file) { - file.read(&m_sram[0], m_sram.size()); + size_t actual; + return !file.read(&m_sram[0], m_sram.size(), actual) && actual == m_sram.size(); } -void msx_matsushita_device::nvram_write(emu_file &file) +bool msx_matsushita_device::nvram_write(util::write_stream &file) { - file.write(&m_sram[0], m_sram.size()); + size_t actual; + return !file.write(&m_sram[0], m_sram.size(), actual) && actual == m_sram.size(); } diff --git a/src/mame/machine/msx_matsushita.h b/src/mame/machine/msx_matsushita.h index 4766b54fe21..f03a2d9a866 100644 --- a/src/mame/machine/msx_matsushita.h +++ b/src/mame/machine/msx_matsushita.h @@ -29,8 +29,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: required_ioport m_io_config; diff --git a/src/mame/machine/msx_s1985.cpp b/src/mame/machine/msx_s1985.cpp index fbe6ccafb8a..fddbd56315e 100644 --- a/src/mame/machine/msx_s1985.cpp +++ b/src/mame/machine/msx_s1985.cpp @@ -3,8 +3,6 @@ #include "emu.h" #include "msx_s1985.h" -#include "fileio.h" - const uint8_t manufacturer_id = 0xfe; DEFINE_DEVICE_TYPE(MSX_S1985, msx_s1985_device, "msx_s1985", "MSX-Engine S1985") @@ -38,15 +36,17 @@ void msx_s1985_device::nvram_default() } -void msx_s1985_device::nvram_read(emu_file &file) +bool msx_s1985_device::nvram_read(util::read_stream &file) { - file.read(m_backup_ram, sizeof(m_backup_ram)); + size_t actual; + return !file.read(m_backup_ram, sizeof(m_backup_ram), actual) && actual == sizeof(m_backup_ram); } -void msx_s1985_device::nvram_write(emu_file &file) +bool msx_s1985_device::nvram_write(util::write_stream &file) { - file.write(m_backup_ram, sizeof(m_backup_ram)); + size_t actual; + return !file.write(m_backup_ram, sizeof(m_backup_ram), actual) && actual == sizeof(m_backup_ram); } diff --git a/src/mame/machine/msx_s1985.h b/src/mame/machine/msx_s1985.h index cf7defd3e27..edf463c69ee 100644 --- a/src/mame/machine/msx_s1985.h +++ b/src/mame/machine/msx_s1985.h @@ -27,8 +27,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: bool m_selected; diff --git a/src/mame/machine/pc9801_memsw.cpp b/src/mame/machine/pc9801_memsw.cpp index e636eebc841..5efcd07b9d9 100644 --- a/src/mame/machine/pc9801_memsw.cpp +++ b/src/mame/machine/pc9801_memsw.cpp @@ -80,7 +80,6 @@ #include "pc9801_memsw.h" #include "coreutil.h" -#include "fileio.h" //************************************************************************** // GLOBAL VARIABLES @@ -143,14 +142,16 @@ void pc9801_memsw_device::nvram_default() m_bram[0xf] = dec_2_bcd(systime.local_time.year - 2000) & 0xff; } -void pc9801_memsw_device::nvram_read(emu_file &file) +bool pc9801_memsw_device::nvram_read(util::read_stream &file) { - file.read(m_bram, m_bram_size); + size_t actual_size; + return !file.read(m_bram, m_bram_size, actual_size) && actual_size == m_bram_size; } -void pc9801_memsw_device::nvram_write(emu_file &file) +bool pc9801_memsw_device::nvram_write(util::write_stream &file) { - file.write(m_bram, m_bram_size); + size_t actual_size; + return !file.write(m_bram, m_bram_size, actual_size) && actual_size == m_bram_size; } //************************************************************************** diff --git a/src/mame/machine/pc9801_memsw.h b/src/mame/machine/pc9801_memsw.h index 22d4d568108..4c0bf46d080 100644 --- a/src/mame/machine/pc9801_memsw.h +++ b/src/mame/machine/pc9801_memsw.h @@ -41,8 +41,8 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: uint8_t m_bram[0x10]; diff --git a/src/mame/machine/tosh1000_bram.cpp b/src/mame/machine/tosh1000_bram.cpp index 401467c078e..6dce3a8ad78 100644 --- a/src/mame/machine/tosh1000_bram.cpp +++ b/src/mame/machine/tosh1000_bram.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "tosh1000_bram.h" -#include "fileio.h" - #include @@ -56,9 +54,10 @@ void tosh1000_bram_device::nvram_default() // .nv file //------------------------------------------------- -void tosh1000_bram_device::nvram_read(emu_file &file) +bool tosh1000_bram_device::nvram_read(util::read_stream &file) { - file.read(m_bram, BRAM_SIZE); + size_t actual; + return !file.read(m_bram, BRAM_SIZE, actual) && actual == BRAM_SIZE; } //------------------------------------------------- @@ -66,9 +65,10 @@ void tosh1000_bram_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void tosh1000_bram_device::nvram_write(emu_file &file) +bool tosh1000_bram_device::nvram_write(util::write_stream &file) { - file.write(m_bram, BRAM_SIZE); + size_t actual; + return !file.write(m_bram, BRAM_SIZE, actual) && actual == BRAM_SIZE; } //------------------------------------------------- diff --git a/src/mame/machine/tosh1000_bram.h b/src/mame/machine/tosh1000_bram.h index e0c557f017f..e4a4d6c4180 100644 --- a/src/mame/machine/tosh1000_bram.h +++ b/src/mame/machine/tosh1000_bram.h @@ -32,8 +32,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; private: enum { BRAM_SIZE = 160 }; diff --git a/src/mame/machine/zs01.cpp b/src/mame/machine/zs01.cpp index eb93c5c6ead..5edfbe60e94 100644 --- a/src/mame/machine/zs01.cpp +++ b/src/mame/machine/zs01.cpp @@ -14,8 +14,6 @@ #include "emu.h" #include "machine/zs01.h" -#include "fileio.h" - #define VERBOSE_LEVEL ( 0 ) inline void ATTR_PRINTF( 3, 4 ) zs01_device::verboselog( int n_level, const char *s_fmt, ... ) @@ -688,20 +686,24 @@ void zs01_device::nvram_default() } } -void zs01_device::nvram_read( emu_file &file ) +bool zs01_device::nvram_read( util::read_stream &file ) { - file.read( m_response_to_reset, sizeof( m_response_to_reset ) ); - file.read( m_command_key, sizeof( m_command_key ) ); - file.read( m_data_key, sizeof( m_data_key ) ); - file.read( m_configuration_registers, sizeof( m_configuration_registers ) ); - file.read( m_data, sizeof( m_data ) ); + std::size_t actual; + bool result = !file.read( m_response_to_reset, sizeof( m_response_to_reset ), actual ) && actual == sizeof( m_response_to_reset ); + result = result && !file.read( m_command_key, sizeof( m_command_key ), actual ) && actual == sizeof( m_command_key ); + result = result && !file.read( m_data_key, sizeof( m_data_key ), actual ) && actual == sizeof( m_data_key ); + result = result && !file.read( m_configuration_registers, sizeof( m_configuration_registers ), actual ) && actual == sizeof( m_configuration_registers ); + result = result && !file.read( m_data, sizeof( m_data ), actual ) && actual == sizeof( m_data ); + return result; } -void zs01_device::nvram_write( emu_file &file ) +bool zs01_device::nvram_write( util::write_stream &file ) { - file.write( m_response_to_reset, sizeof( m_response_to_reset ) ); - file.write( m_command_key, sizeof( m_command_key ) ); - file.write( m_data_key, sizeof( m_data_key ) ); - file.write( m_configuration_registers, sizeof( m_configuration_registers ) ); - file.write( m_data, sizeof( m_data ) ); + std::size_t actual; + bool result = !file.write( m_response_to_reset, sizeof( m_response_to_reset ), actual ) && actual == sizeof( m_response_to_reset ); + result = result && !file.write( m_command_key, sizeof( m_command_key ), actual ) && actual == sizeof( m_command_key ); + result = result && !file.write( m_data_key, sizeof( m_data_key ), actual ) && actual == sizeof( m_data_key ); + result = result && !file.write( m_configuration_registers, sizeof( m_configuration_registers ), actual ) && actual == sizeof( m_configuration_registers ); + result = result && !file.write( m_data, sizeof( m_data ), actual ) && actual == sizeof( m_data ); + return result; } diff --git a/src/mame/machine/zs01.h b/src/mame/machine/zs01.h index 715228798a9..5c8645d12f3 100644 --- a/src/mame/machine/zs01.h +++ b/src/mame/machine/zs01.h @@ -42,8 +42,8 @@ protected: // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read( emu_file &file ) override; - virtual void nvram_write( emu_file &file ) override; + virtual bool nvram_read( util::read_stream &file ) override; + virtual bool nvram_write( util::write_stream &file ) override; private: inline void ATTR_PRINTF( 3, 4 ) verboselog( int n_level, const char *s_fmt, ... ); -- cgit v1.2.3