| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|\
| |
| | |
interpro lle keyboard: expand mappings (nw)
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* interpro: devcb3 goodness (nw)
* interpro: more mcfg and some devcb3 (nw)
Please excuse the mess in the edge driver for now - this is a major WIP and not understood at all well at this point.
* interpro: various fixes/improvements (nw)
clipper: fix bugs in carry flag handling, prefer sign bit for tests
cammu: implement tlb, use memory_access_cache, remove device address map
interpro: use locals for mouse and bus
ioga: use memory_access_cache
* interpro: doh (nw)
|
| |
|
| |
|
| |
|
|
|
|
| |
boot. [R. Belmont]
|
| |
|
| |
|
|
|
|
|
|
| |
tv950, vectrex, victor9k, wicat: [Ryan Holtz]
* Removed MACHINE_CONFIG and MCFG usage where possible.
|
| |
|
|
|
|
|
|
|
|
| |
usage. [Ryan Holtz]
-model3: Some basic MACHINE_CONFIG cleanup, nw
-pla: Added PLS100 device, nw
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
econet/e01, ieee488/d9060, video/huc622, x68k_scsiext:
device_add_mconfig modernization. [Ryan Holtz]
-amiga_dmac: Replaced old devcb with devcb3. [Ryan Holtz]
-mc6854, ataintf, mb89352, mc6854, wd33c93: Added devcb3 support. [Ryan Holtz]
-8042kbdc, i8255, idectrl, intelfsh, mb89352, ram, wd33c93, volt_reg: Default clocks to 0 (nw)
-bebox, indy_indigo2: machine_config modernization. [Ryan Holtz]
|
| |
|
| |
|
|
|
|
|
|
| |
* Make more #include guards follow standard format - using MAME_ as the prefix makes it easy to see which ones come from our code in a preprocessor dump, and having both src/devices/machine/foo.h and src/mame/machine/foo.h causes issues anyway
* Get #include "emu.h" out of headers - it should only be the first thing in a complilation unit or we get differences in behaviour with PCH on/off
* Add out-of-line destructors to some devices - it forces the compiler to instantiate the vtable in a certain location and avoids some non-deterministic compiler behaviours
|
| |
|
| |
|
|
|
|
|
|
| |
handler to clock output from TPB (nw)
comx35: Add SC and TPB handlers for the expansion bus (nw)
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Input and screen tags are now resolved relative to a layout's owner
device.
Easy way to demonstrate is with: mame64 intlc440 -tty ie15
Previously you'd only get the IE15 terminal's layout and you'd be unable
to use the INTELLEC 4/40 front panel. Now you'll get the choice of
layouts from both the system and the terminal device in video options.
|
|
|
|
| |
Kossow]
|
| |
|
| |
|
|
|
|
| |
build, tidy some stuff
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Acorn Atom:
- AtomSID
- Acorn Atom Disc Pack
- Econet Board
Acorn System:
- 32K Dynamic RAM Board
- 8K Static RAM Board
- Cassette Interface Board
- Econet Board
- Floppy Disc Controller Board
- 40 Column VDU Board
- 80x25 VDU Board
- Versatile Interface Board
CMS:
- CMS 40/80 Video Terminal Card
- CMS Floppy Disc Controller
- CMS High Resolution Colour Graphics Card
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are multiple issues with the current device callbacks:
* They always dispatch through a pointer-to-member
* Chained callbacks are a linked list so the branch unit can't predict the early
* There's a runtime decision made on the left/right shift direction
* There are runtime NULL checks on various objects
* Binding a lambda isn't practical
* Arbitrary transformations are not supported
* When chaining callbacks it isn't clear what the MCFG_DEVCB_ modifiers apply to
* It isn't possible to just append to a callback in derived configuration
* The macros need a magic, hidden local called devcb
* Moving code that uses the magic locals around is error-prone
* Writing the MCFG_ macros to make a device usable is a pain
* You can't discover applicable MCFG_ macros with intellisense
* Macros are not scoped
* Using an inappropriate macro isn't detected at compile time
* Lots of other things
This changeset overcomes the biggest obstacle to remving MCFG_ macros
altogether. Essentially, to allow a devcb to be configured, call
.bind() and expose the result (a bind target for the callback). Bind
target methods starting with "set" repace the current callbacks; methods
starting with "append" append to them. You can't reconfigure a callback
after resolving it. There's no need to use a macro matching the
handler signatures - use FUNC for everything. Current device is implied
if no tag/finder is supplied (no need for explicit this).
Lambdas are supported, and the memory space and offset are optional.
These kinds of things work:
* .read_cb().set([this] () { return something; });
* .read_cb().set([this] (offs_t offset) { return ~offset; });
* .write_cb().set([this] (offs_t offset, u8 data) { m_array[offset] = data; });
* .write_cb().set([this] (int state) { some_var = state; });
Arbitrary transforms are allowed, and they can modify offset/mask for example:
* .read_cb().set(FUNC(my_state::handler)).transform([] (u8 data) { return bitswap<4>(data, 1, 3, 0, 2); });
* .read_cb().set(m_dev, FUNC(some_device::member)).transform([] (offs_t &offset, u8 data) { offset ^= 3; return data; });
It's possible to stack arbitrary transforms, at the cost of compile
time (the whole transform stack gets inlined at compile time). Shifts
count as an arbitrary transform, but mask/exor does not.
Order of mask/shift/exor now matters. Modifications are applied in the
specified order. These are NOT EQUIVALENT:
* .read_cb().set(FUNC(my_state::handler)).mask(0x06).lshift(2);
* .read_cb().set(FUNC(my_state::handler)).lshift(2).mask(0x06);
The bit helper no longer reverses its behaviour for read callbacks, and
I/O ports are no longer aware of the field mask. Binding a read
callback to no-op is not supported - specify a constant. The GND and
VCC aliases have been removed intentionally - they're TTL-centric, and
were already being abused.
Other quirks have been preserved, including write logger only logging
when the data is non-zero (quite unhelpful in many of the cases where
it's used). Legacy syntax is still supported for simple cases, but will
be phased out. New devices should not have MCFG_ macros.
I don't think I've missed any fundamental issues, but if I've broken
something, let me know.
|
|
|
| |
Too many changes to describe in detail. A rewrite of the interrupt and dma code in the ioga, and fixes to the cpu and mmu were the most important things.
|
| |
|
|
|
|
| |
logmacro. (nw)
|
|\
| |
| | |
Avoid multiple explicit instantiations definition of templates
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
According to the C++ standard 14.7 clause 5, "an explicit
instantiation definition shall appear at most once in a program".
Move the instantiation from the individual implementation files
to the interface implementation file.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
|
|/ |
|
|\
| |
| |
| | |
MAME 0.199
|
| | |
|
| | |
|
| | |
|