summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/i86
Commit message (Collapse)AuthorAgeFilesLines
* srcclean and manual cleanup Vas Crabb4 days1-18/+18
|
* i86/i86.cpp: Emulate undocumented DIV/IDIV behavior for the 80(1)8x as ↵ arbee9 days1-6/+23
| | | | relied on by mpc60. [R. Belmont]
* Ran srcclean across the source. Vas Crabb2026-03-221-3/+3
|
* z80,6502,i86: no need for that m_reset_time local variable hap2026-03-152-4/+1
|
* z80,6502,i86: don't accept nmi at reset time hap2026-03-142-7/+5
|
* i80186: Improve BOUND logging. Curt Coder2026-03-021-1/+1
|
* i80186: Fix iRMX interrupt mode. [Curt Coder] Curt Coder2026-03-021-35/+71
|
* i80186: BOUND is signed. [Curt Coder] Curt Coder2026-03-021-5/+6
|
* i80186: The invalid opcode is a trap. [Curt Coder] Curt Coder2026-03-021-2/+0
|
* i8086: initialize m_ea_timing table hap2026-03-025-34/+34
|
* i86: correction to adc/sbb overflow flag calculation hap2026-03-023-74/+60
|
* i86.cpp: Effective Address calculatation time varies greatly from one (#14632) donohoe002025-12-037-31/+54
| | | | | | | | | CPU variant to the next. On the 286, it's effectively free, unless two additions are required, in which case it takes 1 cycle. On the 8088/8086 on the other hand, it can take up to 12 cycles. There needs to be a different set of timings for each CPU variant. I tested on a 286 system (att6300p) with https://thandor.net/benchmark/36, and the score went from 29 to 46 - almost a 60% speedup! Also added a few minor cycle count fixes.
* akai/mpc60.cpp: Updates [R. Belmont, Guru] arbee2025-11-022-18/+45
| | | | | | | | | * Hooked up MIDI I/O and LEDs * Finalized a detail of the floppy hookup * Added layout cpu/i86/i186.cpp: Added latency when writiing DMA registers before the next DMA starts. [R. Belmont, crazyc, Angelo Salese] * Fixes mpc60 crashing, and the other drivers using a '186 all behave identically to 0.280.
* att6300p.cpp: Initial driver for AT&T 6300 Plus (#14149) donohoe002025-09-281-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | * cpu/i86/i86.cpp: Avoid clearing working registers upon device reset This change is required in order for BIOS for the AT&T 6300 Plus to work. The 6300 Plus has external logic to reset the 80286 via the reset pin, so that it can return to Real Mode from protected mode. Upon return to Real Mode, the BIOS code is clearly depending on the fact that SP register is preserved upon reset (the BIOS does however explicitly load the SS register after reset, before it is used). The 8086 and 80286 documentation call out which registers are to be initialized upon reset, and SS is one of them. For AX, BX, CX, DX, BP, SP, SI and DI, the behaviour is not specified. However, based on what the 6300 Plus BIOS is doing, it appears the actual hardware behaviour is to leave them untouched. Although we can only be fully confident that the real 286 behaves this way with respect to the SP register, it's likely that the other registers which do not have explicitly defined initialization behavior are also not touched during reset. Note that this observed behaviour only pertains to reset via the reset pin, and not to power-on initialization.
* i86/nec: correction to idiv overflow hap2025-07-312-8/+15
|
* Fix cases where specific segment register settings could cause the ↵ Lord-Nightmare2025-04-091-4/+4
| | | | i80186/188 peripherals to fail to be properly mapped into memory space. [crazyc, Lord Nightmare]
* i86: don't clear physical irq pins state at reset hap2024-12-213-23/+9
|
* diexec: Add callback to allow debugger to break into the middle of wait-type ↵ AJR2024-11-173-0/+3
| | | | | | | | | | instructions whose execution time is normally indefinite. When this happens, a special message may be printed to the debug console stating the location of the last actual instruction executed before the wait (if there was one). Note that since the callback ignores the current value of the program counter, this special type of debugger break cannot be entered through breakpoints or instruction stepping commands. The callback also leaves no effect on PC history tracking or trace logs. * cpu/hd61700, cpu/tms32031: Add standard IRQ callback * cpu/m68000gen.py: Change name of invoked executable to bin/python3 * cpu/m6809: Eliminate PC "massaging" for SYNC and similar instructions
* Added ATTR_COLD to common lifecycle methods for many files in src/devices. ↵ holub2024-09-273-7/+7
| | | | (#12822)
* diexec: remove vestigal execute_input_lines() hap2024-09-183-3/+0
|
* altos/altos586.cpp: Added preliminary Altos ACS586 emulation. (#11670) Lubomir Rintel2024-08-033-3/+12
| | | | | | | | | | | | * cpu/i86: Make "out dx,al" output masked AX on data bus. * altos/altos586_hdc.cpp: Added Altos 586 Hard Disk Controller emulation. New systems marked not working ----------------------- Altos Computer Systems ACS586 New working software list items (altos586) ---------------------------------- Altos Diagnostic Executive
* isa/dectalk: hack it to work until it can be better understood cracyc2024-07-021-0/+3
| | | | i386: some limit checks
* leland: fix rom samples playback cracyc2024-06-061-4/+4
|
* i186: Use cycles_to_attotime and attotime_to_cycles for timer period ↵ AJR2024-04-101-3/+3
| | | | calculation. Gives better timings for Am188EM-based games in subsino/subsino2.cpp.
* i186: remove outdated error message cracyc2024-04-071-5/+0
|
* i186: fix dma on timer2 and timer2 as prescaler (#12223) Hannes Janetzek2024-04-061-2/+6
| | | | | * i186: fix drq_callback case when used with timer 2 * i186: only run timer 0,1 when not incremented via timer 2 pre-scaler
* emu/devcb.h: Eliminated the need to call resolve() on callbacks. (#11333) Vas Crabb2023-06-173-18/+4
| | | | | | | | | | | | 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.
* m6801: add i/o ports tri-state callback, hap2023-06-161-1/+1
| | | | misc: correct some typos
* emu/devdelegate.h: Added resolve_safe and resolve_all_safe helpers. Vas Crabb2023-06-133-9/+10
| | | | | | | | | 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.
* emu/device.h: Removed device (READ|WRITE)_LINE_MEMBER in favor of explicit ↵ MooglyGuy2023-06-011-8/+8
| | | | function signatures. (#11283) [Ryan Holtz]
* dimemory: Add the target address space to translate, wrap the constants Olivier Galibert2023-03-182-2/+3
| | | | divtlb: Wrap the constants
* Interrupt callback rationalization AJR2023-03-112-2/+2
| | | | | | | | | | | - Make CPUs pass interrupt return PC as a second argument to standard_irq_callback - Add interrupt return PC to "Stopped at interrupt" message produced by debugger 'gint' command - Add messages to trace logs whenever interrupts are accepted - Attempt to step over interrupt routines for applicable debugger commands - Eliminate standard_irq_callback_member wrapper method - Update many CPU cores to invoke standard_irq_callback at the start of or during interrupt processing, rather than at the end or when the input line changes - Remove IRQ callbacks for some input lines that never cause interrupts - mb88xx, mcs48: Add IRQ callbacks for internal interrupts
* Revert "emu_timer: undo prev commit, add running() getter and change some ↵ hap2022-11-011-2/+2
| | | | | | enabled() calls to that" This reverts commit 957cfaa53d8c44904b62372ed120ccb684afd08c.
* emu_timer: undo prev commit, add running() getter and change some enabled() ↵ hap2022-10-251-2/+2
| | | | calls to that
* i186: Add Am186EM and Am188EM variant types AJR2022-07-262-6/+45
|
* srcclean and cleanup in preparation for branching MAME 0.245 Vas Crabb2022-06-261-1/+1
|
* pwrview: display and sio wip cracyc2022-06-092-0/+9
|
* - Removed device_timer, device_timer_id, et al in favor of direct callback ↵ MooglyGuy2022-06-042-356/+369
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | members. (#9788) Primarily, this removes device_t::device_timer, device_t::timer_set, device_t::synchronize, device_t::timer_expired, and device_timer_id. Use of device_timer often resulted in unnecessary trampolining in addition to switch/case overhead on a driver/device level, and additional logic to manage delegated vs. ID-based timers on a core level. In the worst cases, devices were performing a switch/case with only one valid case. device_scheduler::timer_set is marked deprecated as the only remaining direct uses are via the Lua engine and a few drivers that need refactoring anyway. The remaining uses occur via device_scheduler::synchronize. As a middle ground between the extremely short timer_alloc() and the extremely long machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(widget_device::contoso_tick), this)), a helper function in device_t has been added which can be invoked with the following syntax: timer_alloc(FUNC(widget_device::contoso_tick), this) - Additional changes/cleanups performed along the way: - Converted to use logmacro: * src/devices/bus/ieee488/hp9895.cpp * src/devices/bus/ieee488/remote488.cpp * src/devices/bus/isa/hdc.cpp * src/devices/bus/isa/omti8621.cpp * src/devices/bus/isa/sc499.cpp * src/devices/bus/vip/vp550.cpp * src/devices/cpu/i86/i186.cpp * src/devices/cpu/lc8670/lc8670.cpp * src/devices/machine/68230pit.cpp * src/devices/machine/corvushd.cpp * src/devices/machine/ds1994.cpp * src/devices/machine/ticket.cpp * src/mame/audio/pinsnd88.cpp * src/mame/drivers/notetaker.cpp * src/mame/machine/asic65.cpp * src/mame/machine/rmnimbus.cpp * src/mame/machine/victor9k_fdc.cpp * src/mame/video/uv201.cpp - Made usage of m_member prefix consistent: * src/devices/bus/isa/hdc.cpp * src/devices/bus/isa/omti8621.cpp * src/devices/bus/vme/vme_fccpu20.cpp * src/devices/machine/ds1386.cpp * src/devices/machine/i7220.cpp - Spacing consistency pass: * src/devices/bus/isa/hdc.cpp * src/devices/bus/isa/omti8621.cpp * src/devices/bus/thomson/nanoresau.cpp * src/devices/bus/ti99/internal/992board.cpp * src/devices/bus/ti99/internal/genkbd.cpp * src/devices/bus/ti99/internal/joyport/handset.cpp * src/devices/bus/vme/vme_fccpu20.cpp * src/devices/cpu/i86/i186.cpp * src/devices/cpu/lc8670/lc8670.cpp * src/devices/machine/68230pit.cpp * src/devices/machine/cop452.cpp * src/devices/machine/corvushd.cpp * src/devices/machine/hp_dc100_tape.cpp * src/devices/machine/hp_taco.cpp * src/devices/machine/meters.cpp * src/devices/machine/microtch.cpp * src/devices/machine/phi.cpp * src/devices/video/ef9365.cpp * src/devices/video/v9938.cpp * src/mame/drivers/alphaskop41xx.cpp * src/mame/drivers/myb3k.cpp * src/mame/drivers/notetaker.cpp * src/mame/drivers/wpc_an.cpp * src/mame/machine/midikbd.cpp * src/mame/machine/rmnimbus.cpp * src/mame/machine/wpc_lamp.cpp * src/mame/machine/wpc_out.cpp - Removed string-based ioport lookups: * src/devices/bus/ti99/internal/joyport/handset.cpp * src/devices/bus/ti99/internal/joyport/mecmouse.cpp * src/devices/bus/vme/vme_hcpu30.cpp * src/mame/machine/k7659kb.cpp * src/mame/machine/ti85.cpp - Adjustments to grammar/wording in comments * src/devices/bus/sms_ctrl/lphaser.cpp * src/devices/bus/sms_ctrl/sports.cpp * src/devices/bus/snes/event.cpp * src/devices/bus/snes/sa1.cpp * src/devices/bus/thomson/nanoresau.cpp * src/devices/bus/z88/z88.cpp * src/devices/machine/ds1386.cpp * src/devices/machine/vic_pl192.cpp - Favored BIT() macro for single-bit checks * src/devices/bus/ti99/internal/992board.cpp * src/devices/bus/ti99/joyport/handset.cpp * src/mame/drivers/notetaker.cpp * src/mame/machine/wpc_lamp.cpp * src/mame/machine/wpc_out.cpp - Removed C89-style variable declarations when noticed * src/devices/bus/isa/hdc.cpp * src/devices/bus/sms_ctrl/lphaser.cpp * src/devices/bus/ti99/joyport/mecmouse.cpp * src/devices/machine/acorn_vidc.cpp * src/devices/sound/ymz280b.cpp * src/devices/video/vic4567.cpp - Removed FUNCNAME to avoid compiler-specific #define checks in devices * src/devices/bus/vme/vme_fccpu20.cpp * src/devices/bus/vme/vme_hcpu30.cpp * src/devices/machine/68230pit.cpp * src/devices/machine/mc14411.cpp * src/mame/drivers/myb3k.cpp - Removed unecessary member prefixes/suffixes * src/devices/video/ef9340_1.cpp * src/mame/drivers/fuukifg2.cpp * src/mame/drivers/fuukifg3.cpp * src/mame/drivers/intv.cpp * src/mame/drivers/simpsons.cpp * src/mame/drivers/socrates.cpp * src/mame/drivers/special_gambl.cpp * src/mame/drivers/sprint4.cpp * src/mame/drivers/ti990_10.cpp * src/mame/drivers/tubep.cpp * src/mame/drivers/vectrex.cpp * src/mame/drivers/wpc_an.cpp * src/mame/drivers/wpc_dot.cpp * src/mame/drivers/wpc_flip1.cpp * src/mame/drivers/wpc_flip2.cpp * src/mame/machine/z80ne.cpp * src/mame/video/rollerg.cpp - Switched to lower-case hex constants * src/devices/video/ef9365.cpp * src/mame/machine/rmnimbus.cpp - Re-ordered driver overrides and function members * src/mame/drivers/boxer.cpp * src/mame/drivers/eurocom2.cpp * src/mame/drivers/exidy.cpp * src/mame/drivers/gpworld.cpp * src/mame/drivers/h19.cpp * src/mame/drivers/ibmpcjr.cpp * src/mame/drivers/mekd5.cpp * src/mame/drivers/mgolf.cpp * src/mame/drivers/myb3k.cpp * src/mame/drivers/nightmare.cpp * src/mame/drivers/notetaker.cpp * src/mame/drivers/ptcsol.cpp * src/mame/drivers/pwrview.cpp * src/mame/drivers/rabbit.cpp * src/mame/drivers/sitcom.cpp * src/mame/drivers/socrates.cpp * src/mame/drivers/sprint4.cpp * src/mame/drivers/techno.cpp * src/mame/drivers/thayers.cpp * src/mame/drivers/ti990_10.cpp * src/mame/drivers/ti990_4.cpp * src/mame/drivers/tv912.cpp * src/mame/drivers/tv990.cpp * src/mame/drivers/uchroma68.cpp * src/mame/drivers/vk100.cpp * src/mame/drivers/votrhv.cpp * src/mame/drivers/wicat.cpp * src/mame/drivers/wpc_an.cpp * src/mame/includes/abc80.h * src/mame/includes/asterix.h * src/mame/includes/fuukifg2.h * src/mame/includes/fuukifg3.h * src/mame/includes/gunbustr.h * src/mame/includes/intv.h * src/mame/includes/namcona1.h * src/mame/includes/newbrain.h * src/mame/includes/poly.h * src/mame/includes/prof80.h * src/mame/includes/rollerg.h * src/mame/includes/s11.h * src/mame/includes/segahang.h * src/mame/includes/simpsons.h * src/mame/includes/spacefb.h * src/mame/includes/tandy2k.h * src/mame/includes/trucocl.h * src/mame/includes/tubebp.h * src/mame/includes/vidbrain.h * src/mame/includes/wolfpack.h * src/mame/includes/wpc_dot.h - Made capitalization consistent on class members * src/devices/machine/meters.cpp * src/mame/drivers/namcona1.cpp * src/mame/drivers/notetaker.cpp -src/devices/bus/isa/hdc.cpp: * Removed fixed-size std::vector in favor of std::unique_ptr -src/devices/bus/isa/s3virge.cpp: * Moved unusually large (for a header) functions into .cpp from header -src/devices/bus/vip/vp550.cpp * Switched to required_device_array to simplify code paths -src/devices/machine/arm_iomd.cpp * Added initializers to constructor * Favored std::size over fixed static sizes -src/devices/machine/ds1386.cpp * Moved register #defines into header enums -src/devices/machine/mc68901.cpp * Removed unnecessary parameters and emu_timer::enable calls -src/devices/machine/mccs1850.cpp * Removed inline overuse -src/devices/machine/meters.cpp * Removed unused members -src/devices/machine/mos6526.cpp * Removed inline overuse -src/devices/machine/nsc810.cpp * Converted to arrays rather than individually-numbered members -src/devices/machine/pxa255.cpp * Simplified DMA transfer code -src/devices/machine/saa1043.cpp * Removed extraneous members in favor of resolve_all_safe -src/devices/machine/vic_pl192.cpp * Shifted constructors, start-up, and maps to be at the top of the source file -src/devices/machine/z8536.cpp * Removed stray uses of device_timer_id -src/devices/sound/cdp1869.cpp * Removed inline overuse -src/devices/sound/mos7360.cpp * Converted to arrays rather than individually-numbered members -src/emu/device.cpp * Removed ID-based timer_alloc * Removed timer_set * Removed synchronize * Removed timer_expired * Added shorthand timer_alloc to avoid lengthy machine().scheduler().timer_alloc() calls -src/emu/schedule.cpp * Removed now-unused m_id and m_device members -src/mame/audio/alesis.cpp * Added initializers to constructor -src/mame/drivers/alto2.cpp * Removed custom-named driver init in favor of driver_init override * Removed octal constant in favor of more standard hex -src/mame/drivers/astinvad.cpp * Fixed 'kamizake' typo -src/mame/drivers/tm990189.cpp * Removed unnecessary machine reset override -src/mame/drivers/unichamp.cpp * Removed custom-named driver init in favor of driver_init override -src/mame/drivers/votrhv.cpp * Fixed ROM_LOAD macros and region() usage in memory maps -src/mame/machine/victor9k_fdc.cpp * Made bracing style consistent across the file -src/mame/video/gime.cpp * Removed unnecessary void specifiers in function prototypes
* src/devices/cpu: Remove #include "debugger.h" where no longer necessary AJR2022-04-063-3/+0
|
* i86: wrap at end of segment not at 64k boundary cracyc2022-02-061-1/+1
|
* Remove void *ptr parameter from emu_timer, timer_device and all related ↵ AJR2022-01-262-4/+4
| | | | callbacks
* i286: clear m_fire_trap before interrupt cracyc2021-05-171-1/+1
|
* srcclean in preparation for release Vas Crabb2021-03-281-1/+1
|
* i186: Timer updates AJR2021-03-152-60/+53
| | | | | | - Implement retrigger mode - Clean up code a little, removing redundant "active_count" flag - Modernize save state registration
* Enable GCC implicit fallthrough warning. Vas Crabb2020-11-151-1/+2
| | | | | | I've guessed whether break or [[fallthrough]] is appropriate. In cases where it looked particularly suspicious, I added a FIXME comment. All of these changes should be reviewed by someone familiar with the code.
* -Switch to building MAME as C++17. Vas Crabb2020-11-151-1/+1
| | | | | | | * Updated sol2 to 3.2.2 * Updated pugixml to 1.10 * Increased minimum clang version to 6 * Cleaned up some stuff that can use new features
* i86: forgot carry flag for neg opcode (nw) hap2020-06-251-2/+2
|
* i86: Fixed old regression with NEG opcode flags. [dink/fbneo] hap2020-06-251-8/+8
|
* finally retired the READ8/16/32/64 and WRITE8/16/32/64 macros (nw) Ivan Vangelista2020-06-182-20/+20
|
* consola_emt.cpp: Correct MCU type (nw) AJR2020-06-031-0/+4
| | | | i186.cpp: Add clock note (nw)