summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ieee488
Commit message (Collapse)AuthorAgeFilesLines
* Remove a few outdated references to MESS Dirk Best2021-12-021-2/+2
|
* floppies: Turn the format arrays into function calls. Create a default ↵ Olivier Galibert2021-03-0210-55/+58
| | | | "mfm", "fm" and "pc" list of formats. Their contents, and which driver uses what, may need some tuning.
* Eliminate ARRAY_LENGTH template in favor of C++17's std::size AJR2021-02-141-1/+1
| | | | | | | | | | * osdcomm.h: Move definition of EQUIVALENT_ARRAY to coretmpl.h * sharc.cpp, gt64xxx.cpp, ym2413.cpp, gb_lcd.cpp, snes_ppu.cpp: Use STRUCT_MEMBER for save state registration * gio/newport.cpp, megadrive/svp.cpp, nes_ctrl/bcbattle.cpp, arm7.cpp, tms9995.cpp, pckeybrd.cpp, sa1110.cpp, sa1111.cpp, jangou_blitter.cpp, vic4567.cpp: Use std::fill(_n) instead of memset * emucore.h: Remove obsolete typedef
* rs232: HLE updates AJR2021-01-261-1/+0
| | | | | | | - Remove option to change the number of start bits (1 was always the default, and the RS232 protocol requires one start bit) - Add many historically significant baud rates ranging from 50 to 7200 * ccs2810.cpp, sb8085.cpp: Update notes
* 6522via.cpp: Distinguish some different VIA types AJR2021-01-214-5/+5
|
* Got rid of global_alloc/global_free. Vas Crabb2020-10-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | The global_alloc/global_free functions have outlived their usefulness. They don't allow consistently overriding the default memory allocation behaviour because they aren't used consistently, and we don't have standard library allocator wrappers for them that we'd need to use them consistently with all the standard library containers we're using. If you need to change the default allocator behaviour, you can override the new/delete operators, and there are ways to get more fine-grained control that way. We're already doing that to pre-fill memory in debug builds. Code was already starting to depend on global_alloc/global_free wrapping new/delete. For example some parts of the code (including the UI and Windows debugger) was putting the result of global_alloc in a std::unique_ptr wrappers without custom deleters, and the SPU sound device was assuming it could use global_free to release memory allocated with operator new. There was also code misunderstanding the behaviour of global_alloc, for example the GROM port cartridge code was checking for nullptr when a failure will actually throw std::bad_alloc. As well as substituting new/delete, I've made several things use smart pointers to reduce the chance of leaks, and fixed a couple of leaks, too.
* Restore some standard library #includes, add some things that were used but ↵ Vas Crabb2020-07-191-0/+2
| | | | not #included, and clean up some #include guards.
* Pruning of redundant #includes located in src/devices/bus/* (nw) Scott Stone2020-07-101-1/+0
|
* various devices and drivers: removed superfluous semicolons (nw) Ivan Vangelista2020-06-291-2/+2
|
* srcclean and cleanup (nw) Vas Crabb2020-06-211-211/+211
|
* finally retired the READ8/16/32/64 and WRITE8/16/32/64 macros (nw) Ivan Vangelista2020-06-188-42/+38
|
* Bug fixes for hp9845c & remote488 (#6772) fulivi2020-05-311-8/+0
| | | | | * hp9845: fixed a graphic memory addressing bug (nw) * remote488: fixed a signal corruption bug in IEEE488 remotizer (nw)
* drivers starting with f, g and h: some macro removal (nw) Ivan Vangelista2020-05-271-1/+1
|
* devices/bus: a few macro removals (nw) Ivan Vangelista2020-05-2022-113/+113
|
* fix for vs2019, expression does not evaluate to a constant (nw) smf-2020-05-151-2/+2
|
* simplified some handlers (nw) Ivan Vangelista2020-05-1312-16/+14
|
* Fix compile. (nw) couriersud2020-05-081-0/+1
|
* Heavily improved emulation of GRiD Compass 1101 (#6599) usernameak2020-04-264-0/+444
| | | | | | | | | | | | | | | | | Changes: - added known dump checksums of 1101 BIOS - high-level emulation of GPIB disk devices - partial implementation of DMA (currently ignores ACCRQ so devices must have zero latency in order for it to work) - serial is now properly memory-mapped - modem stub in order to make system properly ignore modem device - it now boots without any patches and debug scripts - merged #6597 (needed in order to make disk devices work) Still not implemented: - RTC/MACHINE_ID - modem - has problems with multiple disk devices working simultaneously (possibly BIOS bug because this BIOS had some problems with that on real device)
* devices/machine: simplified more handlers (nw) Ivan Vangelista2020-03-252-2/+2
|
* Spring cleaning: Vas Crabb2019-11-014-6/+5
| | | | | | | | | | | | * Changed emu_fatalerror to use util::string_format semantics * Fixed some incorrectly marked up stuff in build scripts * Make internal layout compression type a scoped enum (only zlib is supported still, but at least the values aren't magic numbers now) * Fixed memory leaks in Xbox USB * There can only be one "perfect quantum" device - enforce that only the root machine can set it, as allowing subdevices to will cause weird issues with slot cards overiding it * Allow multiple devices to set maximum quantum and use the most restrictive one (it's maximum quantum, it would be minimum interleave) * Got rid of device_slot_card_interface as it wasn't providing value * Added a helper template to reduce certain kinds of boilerplate in slots/buses * Cleaned up some particularly bad slot code (plenty more of that to do), and made some slots more idiomatic
* (nw) misc cleanup: Vas Crabb2019-10-021-8/+8
| | | | | | | | * subhuntr.cpp: S2636 PVI was seemingly uncommented by mistake in 93308b483ee73cecc46a6b44fccc126edf3c512a - offsets and sound routing seem to be copy/pasted from somewhere * phi: prettier config * scramble.cpp, wallc.cpp: avoid some calls to subdevice<...>(...) * makedep.py: open source files as UTF-8 (GitHub #5482) * minimaws: be less trusting
* via6522: Change most mappings into m() [O. Galibert] Olivier Galibert2019-07-072-3/+3
|
* (nw) Clean up the mess on master Vas Crabb2019-03-267-160/+88
| | | | | | | | | | | | | This effectively reverts b380514764cf857469bae61c11143a19f79a74c5 and c24473ddff715ecec2e258a6eb38960cf8c8e98e, restoring the state at 598cd5227223c3b04ca31f0dbc1981256d9ea3ff. Before pushing, please check that what you're about to push is sane. Check your local commit log and ensure there isn't anything out-of-place before pushing to mainline. When things like this happen, it wastes everyone's time. I really don't need this in a week when real work™ is busting my balls and I'm behind where I want to be with preparing for MAME release.
* Revert "conflict resolution (nw)" andreasnaive2019-03-257-88/+160
| | | | | This reverts commit c24473ddff715ecec2e258a6eb38960cf8c8e98e, reversing changes made to 009cba4fb8102102168ef32870892438327f3705.
* devices\bus: some more MACHINE_CONFIG removal (nw) Ivan Vangelista2019-02-101-14/+11
|
* -devices/bus/bbc/1mhzbus/ieee488: Removed MACHINE_CONFIG macros, nw mooglyguy2019-02-032-95/+46
| | | | | | | | | | | | | | -devices/bus/cbmiec/interpod: Removed MACHINE_CONFIG macros, nw -devices/bus/ieee488/ieee488: Removed MCFG macros, nw -devices/bus/ieee488/softbox: Removed MACHINE_CONFIG macros, nw -devices/bus/imi7000/imi7000: Removed MCFG macro, nw -devices/imagedev/harddriv: Added constructor for setting interface tag, nw -gridcomp, hp_ipc, hp64k, sage2, softbox: Removed MACHINE_CONFIG macros, nw
* -devices/bus/kc, nasbus, s100: Removed MCFG macros, nw mooglyguy2019-02-031-1/+1
| | | | | | -devices/bus/kc/d002: Removed MACHINE_CONFIG macro, nw -drivers/horizon, kc, mpz80, nascom1, tek405x, vixen, xor100, zorba: Removed MACHINE_CONFIG macros, nw
* com8116: Simplify read/write handlers (nw) AJR2019-02-021-2/+2
| | | | adm23: Add baud rate switches (nw)
* devices\bus: some MCFG macros removal (nw) Ivan Vangelista2019-01-311-19/+0
|
* imagedev\floppy: removed MCFG macros (nw) Ivan Vangelista2019-01-281-11/+8
|
* imagedev\bitbngr: removed MCFG macros (nw) Ivan Vangelista2019-01-191-3/+4
|
* src\devices\machine: more MCFG macros removal (nw) Ivan Vangelista2019-01-171-15/+16
|
* -bus/gameboy/gb_slot, ieee488/hp9895, psx/gamebooster, snes/sgb: Removed ↵ mooglyguy2018-12-171-10/+9
| | | | | | | | | | MCFG and MACHINE_CONFIG macros. [Ryan Holtz] -cpu/jaguar, lh5801, lr35902, z80: Removed MCFG macros. [Ryan Holtz] -video/sed1520: Removed MCFG macros. [Ryan Holtz] -drivers/gb, jaguar, monty, osborne1, pc1500, pc2000, popeye: Removed MACHINE_CONFIG macros. [Ryan Holtz]
* Include floppy.h explicitly in drivers and bus cards, rather than indirectly ↵ AJR2018-11-252-0/+2
| | | | through popular FDC headers (nw)
* hp9122: add layout (nw) Sven Schnelle2018-11-232-11/+26
|
* bus/rs232.cpp: completed removal of MCFG macros (nw) Ivan Vangelista2018-10-232-11/+12
|
* hp9k_3xx: timer fixes (#4131) dxl2018-10-122-3/+3
| | | | | | | | * hp9k_3xx: use delegate for timer * mb87030: use delegate for timer * hp9122c: use delegate for timer
* wd_fdc: removed MCFG macros (nw) Ivan Vangelista2018-09-062-8/+8
|
* i8291a, i8355: De-MCFG, nw mooglyguy2018-09-041-11/+10
|
* -i8255: Removed MCFG, nw mooglyguy2018-09-032-20/+20
|
* hp9122c: add motor off timer (nw) Sven Schnelle2018-08-312-0/+17
|
* i8251: Removed MCFG, nw mooglyguy2018-08-291-4/+4
|
* Fixed validation, nw mooglyguy2018-08-101-6/+6
|
* -via6522: Removed MCFG acessors, nw mooglyguy2018-08-095-262/+107
|
* Make OG happier about output latches, nw mooglyguy2018-08-021-8/+1
|
* -oric, pet, prodigy, rmnimbus, ssystem3, swtpc09, swyft, sym1, trvquest, ↵ mooglyguy2018-08-012-5/+25
| | | | | | tv950, vectrex, victor9k, wicat: [Ryan Holtz] * Removed MACHINE_CONFIG and MCFG usage where possible.
* -c1541, c1571, c2031, c1551, rastersp: Removed MCFG and MACHINE_CONFIG ↵ mooglyguy2018-08-013-36/+42
| | | | | | | | usage. [Ryan Holtz] -model3: Some basic MACHINE_CONFIG cleanup, nw -pla: Added PLS100 device, nw
* -abcbus/hdc, abcbus/lux21056, abcbus/lux4105, zorro/a590:, cbmiec/cmdhd, ↵ mooglyguy2018-07-302-60/+61
| | | | | | | | | | | | | | 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]
* remove more MCFG_ (nw) Vas Crabb2018-07-071-9/+7
|
* devcb3 Vas Crabb2018-07-075-140/+122
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.