Read callbacks now need a default return value supplied at construction.
Replaced isnull() with isunset() which tells you if the callback wasn't
configured rather than whether it isn't safe to call.
Enabled validation of device callbacks (it seems it was disabled at some
point, probably accidentally).
Device callbacks and object finders now implement the same interface for
resolution.
This reverts commit 2c0246059f.
This PR obviously wasn't reviewed properly. It has very obvious issues,
in particular:
* Resetting child devices from device_reset/machine_reset. Child
devices are automatically reset when a device is reset.
* Changing input state on reset. This leads to state getting out of
sync. Devices that change their outputs on reset are responsible for
pushing out the update.
New systems marked not working
------------------
Roland Music Style Card TN-SC2 Software List holder
New software list items marked not working
------------------
r8_card: SN-R8-09 Power Drums U.S.A.
roland_tnsc2: TN-SC2-04 Dance
u110_card: SN-SPLA-01 Sound Elements Vol. 1 (U-01)
Uses decay rules, so if a delegate returns a reference and you want to
supply a referene to an object you don't want copied as the default
result, remember to use std::ref.
Updated a few devices to use resolve_safe on device delegates to
streamline code.
- Add I2C EEPROM and RTC
- Hook up YMZ280B IRQ properly
- Use standard VGA screen parameters
* h8: Add PC to unhooked port logging message; add notes about and slightly adjust cycle counts
taito/taitowlf.cpp: convert to new PCI model
taito/taitowlf.cpp: add proper pf2012 main BIOS [Guru]
video/atirage.cpp: hookup ATI Rage II+ DVD variant to p5txla
taito/taitowlf.cpp: virtualize CMOS and RTC as MB resources, initial implementation of Taito Wolf ROM DISK ISA
* pf2012 now manages to start loading the DOS process, failing with EMM386
- use address_maps instead of catch-all handlers;
- implement rd4 and rd5 line views;
- converted a800_rom_williams_device to the new system, make almost every entry in mega* and prisma* SW to actually boot;
- bus/a800: implement maxflash_1mb / maxflash_8mb devices.
* This allows loading arbitrary collection of .xex files built thru Maxflash Cartridge Studio program as flash ROM binaries;
- bus/a800: implement sic_128kb / sic_256kb / sic_512kb flash ROM devices;
- bus/a800: implement ast2k, atrax, Blizzard 32kb, Adawliah, SpartaDOS 128KB, A5200 Super Cart variants;
- bus/a800: implement Super Charger math unit device;
- a800_slot.cpp: fix xegs cart default slot for loose cart loading;
- a800_carts.h: merge a800_turbo64 and a800_turbo128 into single a800_turbo slot option;
- bus/a800/a800_slot: split a5200 to own interface
New working software list additions
-----------------------------------
a800.xml: Maxflash Cartridge Studio - Demonstration Workbook [Atarimax Team], SIC! 31-in-1 Demonstration [SIC! Team]
a800.xml: Atrax 01, Atrax 02, Atrax 03, Atrax 04, Atrax 05, Atrax 06, Atrax 08, Atrax 09, Atrax 10, Atrax 11, Atrax 12, Atrax 13, Atrax 15 [Atarimania]
a800.xml: Prince of Persia (AtariMAX i/f), Prince of Persia (SIC! i/f) [AtariAge]
New software list items marked not working
------------------------------------------
a800.xml: Atrax 14, Atrax 16 [Atarimania], Turbo Hit (Blizzard 32kb) [atari.area]
a5200.xml: Bosconian 5200 - Star Destroyer (Ultimate Version) [AtariAge]
There are two parts to the change. First is a correction to the coco_fdc
hardware emulation. Second is file format ordering adjustments wich make
things easier for using FLEX on CoCos.
For the hardware change: Before the change FLEX was unable to boot on CoCo
machines. The behaviour and troubleshooting showed that while the FLEX
kernel started up it was unable to read anything from Track 0. Standard
FLEX disks have SD(FM) on Track 0, and the remainder of the disks (for CoCo
FLEX) are normally DD(MFM) or could also be SD(FM). The bug was in the
handling of the WDC FDC's INTRQ line. Reviewing the available
documentation and schematics showed that when the FDC asserts INTRQ two
things happen. NMI is asserted on the CoCo bus and the HALT signal is
cleared. The MAME code added an incorrect condition on clearing HALT: It
only happened when Double-Density operation was selected. This change
fixes the logic to work the same way as is shown in the schematics, that
HALT is cleared any time INTRQ is asserted. SD(FM) disk operations work
properly and FLEX boots completely and runs correctly after making this
change.
File Format Ordering Adjustments: This part of the change makes it easiser
to use FLEX in CoCo emulation with a wider variety of FLEX-formatted disk
images. The issue here is that due to the way the JVC disk format works it
winds up being a catch-all for disk images. Because FLEX has specific
formatting requirements and code to handle this and JVC has no support for
this special formatting, FLEX formats along with DMK and SDF are moved to
come before JVC in the formats list. This allows a wider variery of
FLEX-formatted disk images to be properly detected.
The DMK disk image from the following recent restoration of FHL Color FLEX
was used for testing:
https://archive.org/details/color-flex-5.0.4-frank-hogg-laboratory
This simplifies looking up the target device during configuration. It
is useful when configuring child devices in things like CPUs with
integrated peripherals.
emu/device.h: Allow templated subdevice() and siblingdevice() to work
with classes that don't derive from device_t (e.g. classes that derive
from device_interface).
util/delegate.h: Added more noexcept. Won't make much difference as
most of the affected member functions are inline anyway.