summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/i8x41
Commit message (Collapse)AuthorAgeFilesLines
* Merged i8x41 (UPI-41) core into MCS-48 core: Aaron Giles2008-12-304-3062/+0
| | | | | | | | | | | | | | | | | | | | | | | | * all code now lives in mcs48.c * rewrote disassembler as unified MCS-48/UPI-41 disassembler * changed UPI-41 interfaces to match MCS-48 * added new master read/write interfaces for external access * unified interface to 8243 expander chip * converted tnzs and decocass to the new interfaces DECO Cassette fixes/cleanups: * converted tape handling to a device * changed tape handling to use a timer callback * updated to work with new UPI-41 core * corrected clock speeds for all chips (esp. the 8041) * fixed very wrong CRC implementation (how did it ever work?) * corrected sound IRQ rate * corrected video timing Burger Time hardware fixes: * corrected sound IRQ rate and handling * removed lnc audio reset hack * full audio memory maps based on schematics * corrected video timing
* More cleanup. Added address-space-specific constants for the various Aaron Giles2008-12-201-14/+14
| | | | | | | | | | | | | | bus width and shift CPU interface constants. Changed all the cores to use them. Minor spacing cleanup in Z80, Z180, TMS34010, ADSP21xx cores. Changed ADSP21xx cores to accept a configuration struct instead of using set_info to specify serial port callbacks. Simplified the ADSP21xx get/set info significantly. Removed support for only including certain variants of the chips; they are now either all supported or all unsupported.
* Renamed CPUINFO_PTR_* to CPUINFO_FCT_* for function get infos. Aaron Giles2008-12-191-8/+8
| | | | Changed Z80 over to the new cpu_state_table mechanism.
* From: Atari Ace [atari_ace@verizon.net] Aaron Giles2008-12-171-0/+6
| | | | | | | | | | | | | | | | | | | | | Sent: Tuesday, December 16, 2008 12:20 PM To: submit@mamedev.org Cc: atariace@hotmail.com Subject: [patch] Migrate CPU defines to cpu header files Hi mamedev, This patch migrates all the CPU definitions into the cpu header files. The #defines and CPU_GET_INFO declarations were added by hand to the cpu cores in the first patch, plus a few partly related fixes to the non-DRC cores. The second patch was produced by the attached script which inserts all needed #includes, except for two that were added by hand in the first patch. The first patch also removed an extra define of N2A03_DEFAULTCLOCK that would have caused problems with the second patch. ~aa
* Removed get context/set context calls from the CPU interface entirely. Aaron Giles2008-12-111-2/+0
| | | | Pointer-ified the TMS99xx core (missed that one!)
* Re-routed empty get/set context calls to the dummy CPU's, and removed them Aaron Giles2008-12-091-15/+2
| | | | | | | | | from the CPU cores. Disabled the use of PULSE_LINE for any input lines except NMI and RESET. Added a helper function generic_pulse_irq_line() for doing a single-cycle assert/deassert for those few drivers remaining that were trying to use PULSE_LINE directly.
* Changed save state system to accept machine parameters where Aaron Giles2008-12-051-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | appropriate, and to keep all global variables hanging off the machine structure. Once again, this means all state registration call sites have been touched: - state_save_register_global* now takes a machine parameter - state_save_register_item* now takes a machine parameter - added new state_save_register_device_item* which now uses the device name and tag to generate the base name Extended the fake sound devices to have more populated fields. Modified sound cores to use tags from the devices and simplified the start function. Renumbered CPU and sound get/set info constants to align with the device constants, and shared values where they were perfectly aligned. Set the type field in the fake device_configs for CPU and sound chips to a get_info stub which calls through to the CPU and sound specific get_info functions. This means the device_get_info() functions work for CPU and sound cores, even in their fake state. Changed device information getters from device_info() to device_get_info() to match the CPU and sound macros.
* CPU_IS_LE -> ENDIANNESS_LITTLE Aaron Giles2008-12-041-1/+1
| | | | | | CPU_IS_BE -> ENDIANNESS_BIG Also fixed help for step over/in to specify correct keys.
* Moves empty brackets to the same line as CPU_(GET|SET)_CONTEXT calls. Andrew Gardner2008-11-301-6/+2
| | | This makes it easy to grep the CPU code to figure out which cores still need pointer-ification.
* Removed cpunum_get_active() calls from a number of CPU cores. Aaron Giles2008-11-262-3/+3
| | | | | Normalized 6502 state variable to the generic 'cpustate' which makes the macros work more cleanly.
* Cleanups and version bump for 0.128u4.mame0128u4 Aaron Giles2008-11-241-8/+8
|
* Removed NO_LEGACY_MEMORY_HANDLERS defines. Aaron Giles2008-11-241-1/+0
|
* Converted a bunch of CPU cores over to the new memory functions. Aaron Giles2008-11-222-138/+145
|
* Debugger interfaces cleanup. Still more to do but this compiles and Aaron Giles2008-11-211-1/+1
| | | | | | | works. Added callback parameters to the expression engine. Improved CPU parsing so you can use a CPU tag or index in most commands that take one. Switched to passing CPU and address space objects around where appropriate. Lots of other minor tweaks.
* Generalized the concept of opbase access into "direct" access. Aaron Giles2008-11-171-3/+3
| | | | | | | | Removed opbase globals to the address_space structure. Cleaned up names of pointers (decrypted and raw versus rom and ram). Added inline functions to read/write data via any address space. Added macros for existing functions to point them to the new functions. Other related cleanups.
* Added "tag" parameter to state_save_register_item_* calls. Removed Aaron Giles2008-11-171-15/+15
| | | | | | state_save_combine_module_and_tag() function in favor of passing the tag when registering. Revisited all save state item registrations and changed them to use the tag where appropriate.
* This patch replaces the Machine parameter where an running_machine * Aaron Giles2008-11-131-2/+1
| | | | | | is available and removes the deprecat.h where unnecessary. [Oliver Stoeneberg]
* Added CPU device parameters to all CPU callbacks except for the Aaron Giles2008-11-101-9/+3
| | | | | | | | context ones (which are going away), the disassembler (which should have no dependencies on the live CPU), and the validity check. Removed global token from all pointer-ified CPU cores that don't have internal read/write callbacks (which still need to reference it).
* Major cpuintrf changes: Aaron Giles2008-11-102-3/+3
| | | | | | | | | | | | | | | | | | | | | | * added a set of cpu_* calls which accept a CPU device object; these are now the preferred means of manipulating a CPU * removed the cpunum_* calls; added an array of cpu[] to the running_machine object; converted all existing cpunum_* calls to cpu_* calls, pulling the CPU device object from the new array in the running_machine * removed the activecpu_* calls; added an activecpu member to the running_machine object; converted all existing activecpu_* calls to cpu_* calls, pulling the active CPU device object from the running_machine * changed cpuintrf_push_context() to cpu_push_context(), taking a CPU object pointer; changed cpuintrf_pop_context() to cpu_pop_context(); eventually these will go away * many other similar changes moving toward a model where all CPU references are done by the CPU object and not by index
* Converted i8x41 to use pointers for state access Couriersud2008-11-092-1416/+1453
| | | Separated opcodes into i8x41ops.c
* i8x41: fixed missing space at the end of file Roberto Zandona2008-11-091-1/+1
|
* UPI-41/42 (still I8x41.c) changes: Couriersud2008-11-092-70/+151
| | | | | | | | | | | | * cpu/i8x41 should be renamed to UPI-4x, since UPI-41/42 was an intel chip family postponed for now until core moved to pointers. * removed I8041 definition from mcs48 * removed I8x41 cpu definition and config struct * added I8041, I8741, I8042, I8242 and I8742 cpus to i8x41.c * added internal memory maps * internal ram now uses DATA memory space * updated drivers * increased interleave to 70 in decocass. This fixes decocass hanging in countdown around 13 No idea when this bug was introduced.
* Added macros for all CPU callbacks to ease future changes. Aaron Giles2008-11-083-127/+127
| | | | Updated all CPU cores to use them.
* WARNING: This is a significant change. If you are risk-averse and Aaron Giles2008-11-061-11/+15
| | | | | | | | | | | | | | | | | | | | | working on something, hold off syncing. Defined macros for core CPU functions: CPU_INIT, CPU_RESET, CPU_EXIT, CPU_EXECUTE, along with macros for the name and for calling, in the spirit of the devintrf.h macros. More will come later. Changed init, reset, exit, and execute interfaces to be passed a const device_config * object. This is a fake object for the moment, but encapsulates the machine pointer and token. Eventually this will be a real device. Changed the CPU IRQ callbacks to a proper type, and added a device parameter to them. Updated all CPU cores to the new macros and parameters. Note that this changes the way we "pointer"-ify cores. I'll send an update shortly.
* From Oliver Stoeneberg [oliverst@online.de] Aaron Giles2008-09-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | This contains three different patches: 20080829.patch Introducing the running_machine* parameter in a few more places. Next step would be to make the execute_* function aware of it, if that's OK. Also used the machine parameter in memory.c were it's available. 20080829_1.patch The already discussed and probably being rejected removal of dreprecat.h from debugger.h. I think this is a low-risk patch (we had worse cleanups) and it lowers the risk of new code using deprecated function beign introduced in MAME/MESS, because there is no invisible inclusion of deprecat.h anymore (I think one driver - kofball.c - got it with deprecated code). 20080829_2.patch The last Machine -> machine conversion I had sitting in my local tree. I know the proper way is to turn them into devices, but I still haven't looked into that.
* Final CPU header updates. Mostly just re-naming the re-inclusions. Derrick Renaud2008-08-131-1/+2
| | | | | The structures/names were getting too complex for my macros to handle. They would require hand editing and my computer is too slow to keep re-compiling. Passes a clean compile.
* structure, lower-casing functions and re-inclusion updates of the ↵ Derrick Renaud2008-08-111-7/+13
| | | | | src\emu\cpu headers up to I. It's mostly just re-inclusion renaming, but there are few other re-nameings.
* Removed DEBUGGER flag from makefile and ENABLE_DEBUGGER Aaron Giles2008-06-262-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | macro from the source code. All MAME builds now include the debugger, and it is enabled/disabled exclusively by the runtime command-line/ini settings. This is a minor speed hit for now, but will be further optimized going forward. Changed the 'd' suffix in the makefile to apply to DEBUG builds (versus DEBUGGER builds as it did before). Changed machine->debug_mode to machine->debug_flags. These flags now indicate several things, such as whether debugging is enabled, whether CPU cores should call the debugger on each instruction, and whether there are live watchpoints on each address space. Redesigned a significant portion of debugcpu.c around the concept of maintaining these flags globally and a similar, more complete set of flags internally for each CPU. All previous functionality should work as designed but should be more robust and faster to work with. Added new debugger hooks for starting/stopping CPU execution. This allows the debugger to decide whether or not a given CPU needs to call the debugger on each instruction during the coming timeslice. Added new debugger hook for reporting exceptions. Proper exception breakpoints are not yet implemented. Added new module debugger.c which is where global debugger functions live.
* Fixed typo in changelog Wilbert Pol2008-06-241-1/+1
|
* i8x41 cpu core changes: Wilbert Pol2008-06-241-22/+33
| | | | | | | | | - Updated the ram sizes. 8041 uses 128 bytes, 8042 8042 uses 256 bytes. - Added support for re-enabling interrupts inside an interrupt handler. - Fixed cycle count for DJNZ instruction.
* I8x41 cpu core fixes: Wilbert Pol2008-06-232-6/+28
| | | | | | | - Added configurable i8x41/i8x42 subtype support. - Fixed carry flag handling in ADDC A,#N instruction. - Fixed carry flag handling in RLC A instruction.
* i8x41: Fixed disassembly for opcode 0x67. Wilbert Pol2008-06-231-1/+1
|
* From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2008-06-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | Subject: [patch] memory_region madness reloaded Hi mamedev, The memory_region and memory_region_length functions are probably the two most common functions in MAME that don't take a machine parameter but should given the syntax of the related apis memory_region_type and memory_region_flags. Clearly they didn't get the parameter because of the sheer number of changes needed to change the apis. This pair of patches makes the change, and deals with the consequences. The second patch then changes the api for memory_region and memory_region_length, and fixes the fallout. It generally plumbs through machine parameters where needed, except for the case of sound apis which I deferred doing so till later. This increased the number of deprecat.h includes by ~50. Given it is a massive patch, there are bound to be a few mistakes in it (I had to make ~20% of the changes by hand), but I exercised care and reviewed the patch several times to minimize the problems.
* Removed i8x41.ram hack from the i8x41 cpu core. Wilbert Pol2008-06-221-42/+33
|
* From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2008-04-241-1/+0
| | | | | | | | | | | | | | | | | | | Subject: [patch] Remove more Machine globals, #include "deprecat.h" Hi mamedev, The attached patch goes through and converts a number of Machine globals to machine locals, and then removes #include "deprecat.h" if appropriate. The script that generated it is included, since the patch itself is rather large and would have been time consuming to produce otherwise. The script doesn't convert cases of Machine that aren't in common macros. I'll try to tackle those later if someone doesn't beat me to it. ~aa
* Rewrote core memory handlers as inline functions. These should be easier to Aaron Giles2008-04-091-4/+4
| | | | | | | | | | | | | | | | trace through in a debug build, yet should operate the same as before. Created a complete set of functions for all databus sizes (8,16,32,64) and all endiannesses. A few functions are redundant, but it is now very clear which functions to use in which scenarios. It is also now possible to rely on being able to access values of 8, 16, 32 or 64 bits via the built-in accessors without fear of crashing. Updated all cores using 8-bit handlers to explicitly call the 8-bit handlers with the appropriate endianness. Fixed a few games which were calling n-bit handlers directly to use the generic forms. In the future, this is all the access drivers will have.
* fixed collision of TIMER define smf-2008-03-141-11/+10
|
* Changed debugger-related code to be based off a new makefile define ↵ Aaron Giles2008-02-022-4/+4
| | | | | | | | | | | | | (DEBUGGER) which sets a new compile-time define (ENABLE_DEBUGGER). This means that MAME_DEBUG no longer means "enable debugger", it simply enables debugging features such as assertions and debug code in drivers. Also removed the various levels of opbase protection in memory.h and always just turned on full bounds checking. Fixed build break due to missing ampoker.lay -> ampoker2.lay renaming.
* - Added deprecat.h that contains some deprecated/discouraged contructs (see ↵ Zsolt Vasvari2008-01-251-0/+1
| | | | | | | | | below) The idea is to create extra work if a driver wants to use these and hopefully gives an incentive to look for an alternate solution - Added #include of deprecat.h that rely on these contructs - Removed a bunch of unneccassary #include's from these files
* Added CPUINFO_INT_CLOCK_MULTIPLIER to support CPU clock multipliers. Aaron Giles2008-01-142-1/+2
| | | | | | | | | | | | | | | | | | | | | | | Updated all CPU cores to return a CPUINFO_INT_CLOCK_MULTIPLIER of 1. Changed the core to actually respect both CPUINFO_INT_CLOCK_MULTIPLIER and CPUINFO_INT_CLOCK_DIVIDER. Updated a number of drivers to use cpunum_get_clock() instead of Machine->drv->cpu[x].clock. ***** Raw input clock speeds should now be specified for all CPUs in the MACHINE_DRIVER. ***** Removed explicit divisors from all drivers using the following CPU types, which were already specifying non-1 values for CPUINFO_INT_CLOCK_DIVIDER: * COP4x0 * I8039/8048 families * M68(7)05, HD63705 * M6809E * PIC16C5X * TMS32010 * TMS340x0 In a few cases, it appears that the divisor was not being used, so I guessed in those cases whether or not the specified clock speed was raw.
* Copyright cleanup: Aaron Giles2008-01-062-5/+3
| | | | | | - removed years from copyright notices - removed redundant (c) from copyright notices - updated "the MAME Team" to be "Nicola Salmoria and the MAME Team"
* Changes for MAME 0.121u3.mame0121u3 Aaron Giles2007-12-171-1/+1
|
* Changes for MAME 0.121u1.mame0121u1 Aaron Giles2007-12-171-1/+1
|
* Initial checkin of MAME 0.121.mame0121 Aaron Giles2007-12-173-0/+2927