summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/z80dart.c
Commit message (Collapse)AuthorAgeFilesLines
* cleanup of bogus copyright messages and restriction texts, update for Daniel ↵ Miodrag Milanovic2015-05-251-3/+0
| | | | Coulom (nw)
* save: Give the device when available to the state save subsystem [O. Galibert] Olivier Galibert2015-02-141-1/+1
|
* z80dart.c: save diserial state too, fixes bw12.c sio test error after ↵ Osso2014-12-311-0/+1
| | | | loading a state(nw)
* Assorted device name description fixes from MASH (nw) Scott Stone2014-08-101-7/+7
|
* z80dart: Cleanup. (nw) Curt Coder2014-05-121-1/+0
|
* (mess) rmnimbus: extract keyboard and use z80dart and wd_fdc (nw) cracyc2014-05-021-2/+3
|
* z80dart: converted to use devcb2. nw. Fabio Priuli2014-04-291-71/+82
|
* z80dart: quick fix to get CP/M (CPC) to detect the presence of the serial ↵ mahlemiut2014-04-251-2/+6
| | | | interface. (no whatsnew)
* fixed usage of uninitialized member in z80dart_channel (nw) Oliver Stöneberg2014-04-231-0/+1
|
* i8089: channel priorities [Carl] cracyc2014-03-121-1/+3
| | | | | | i8251: fix rx (nw) z80dart: fix rx (nw) imd_dsk: fix free array crash (nw) (mess) isbc_215g: hdd seeks (nw)
* fix array out of bounds access Michaël Banaan Ananas2014-02-261-1/+2
|
* Removed diserial connect(). Converted thomson, mc1502 & wangpc to use DEVCB2 ↵ smf-2014-02-241-48/+4
| | | | instead. [smf]
* Changed parity & stop bits to an enum (you can now pass in 1.5). I've ↵ smf-2014-01-131-14/+14
| | | | updated the uarts that were testing for 1.5 stop bits to pass that in, but there are probably others & 1.5 stop bits is converted to 2 by diserial. However the 68681 requires stop bits to be specified in clocks, so this will change in the future. Replaced synchronous flag with start bit count, as some uarts can use a start bit in synchronous mode & that whether there is a start bit is all the flag is currently controlling. Updated rs232 terminal to allow startbits, stop bits 1.5 to be specified (although that is currently not supported by diserial) and individual transmit and receive baud rates. [smf]
* moved variables (nw) smf-2014-01-101-13/+13
|
* Call set_data_frame() before stc_rcv_rate() in a few more places, as since ↵ smf-2014-01-101-2/+2
| | | | r26274 there is random behaviour if you don't [smf]
* fixed Z80DART parity selection [smf] smf-2014-01-081-2/+2
|
* It makes more sense to mask out the errors that are going to be brought in ↵ smf-2014-01-081-2/+2
| | | | from the error mask rather than throw all the other bits away. However I haven't seen any documentation for Z80DART that says there is an error FIFO at all. [smf]
* Sets RR1_ALL_SENT on reset, previously it relied on tra_complete() being ↵ smf-2014-01-081-0/+1
| | | | called after reset. It's no longer called if there has been no data sent.
* z80dart: add priority and irq vector for 8274 (nw) cracyc2013-12-291-5/+47
|
* Cleanups and version bumpmame0152 Miodrag Milanovic2013-12-241-3/+2
|
* replaced read rx callback in Z80DART (and clones) with a write handler, ↵ smf-2013-12-221-10/+19
| | | | which allows multiple chips to be connected together without using glue methods. [smf]
* diserial: Remove defines, cleanup clocks/timers, add sync support [O. Galibert] Olivier Galibert2013-11-181-26/+34
|
* Lessen log pollution. (nw) Curt Coder2013-11-161-2/+2
|
* License tags. (nw) Curt Coder2013-10-161-0/+2
|
* changed rest of devices (except cpu cores) to have shortname and sourcefile (nw) Miodrag Milanovic2013-06-211-1/+1
|
* Cleanups and version bumpmame0149 Miodrag Milanovic2013-06-111-5/+5
|
* (MESS) superslv: Fixed regression. (nw) Curt Coder2013-06-021-21/+39
|
* (mess) qx10kbd: update to use z80dart (nw) cracyc2013-05-281-0/+6
|
* z80dart: Cleanup. (nw) Curt Coder2013-05-281-63/+80
|
* z80dart: Refactored z80dart_channel to implement device_serial_interface. (nw) Curt Coder2013-05-281-365/+191
|
* z80dart: Refactored dart_channel to be of device_t kin. (nw) Curt Coder2013-05-281-332/+269
|
* (MESS) Refactored drivers to use z80dart.c instead of z80sio.c, the easy ↵ Curt Coder2013-05-271-1/+4
| | | | part. (nw)
* z80dart: Merged in uPD7201 and modernized the interface. [Curt Coder] Curt Coder2013-05-271-61/+65
|
* z80dart: Added modern register accessors. (nw) Curt Coder2013-02-021-0/+30
|
* Cleanups and version bumpmame0148 Miodrag Milanovic2013-01-111-121/+121
|
* (MESS) bw12, xerox820, wangpc: Fixed floppy. [Curt Coder] Curt Coder2013-01-091-0/+1
|
* Memory handler normalization, part 1. Aaron Giles2012-09-171-6/+6
| | | | | | | | | | | | | READ/WRITE_DEVICE*_HANDLERs are now passed an address_space &, and the 8-bit variants get a mem_mask as well. This means they are now directly compatible with the member function delegates. Added a generic address space to the driver_device that can be used when no specific address space is available. Also added DECLARE_READ/WRITE_DEVICE*_HANDLER macros to declare device callbacks with default mem_mask parameters. [Aaron Giles]
* Fixed Z80DART FIFO starting index. [Curt Coder] Curt Coder2011-09-291-1/+1
|
* Exposed the Z80 DART interrupt vector to non-Z80 users. [Curt Coder] Curt Coder2011-09-261-0/+10
|
* Reimplemented devcb using delegates and classes. Unified the logic Aaron Giles2011-05-021-12/+12
| | | | | | for identifying targets and simplified the code. [Aaron Giles] I have some further ideas but this is a good midway point.
* Collapsed device_config and device_t into one class. Updated all Aaron Giles2011-04-271-82/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | existing modern devices and the legacy wrappers to work in this environment. This in general greatly simplifies writing a modern device. [Aaron Giles] General notes: * some more cleanup probably needs to happen behind this change, but I needed to get it in before the next device modernization or import from MESS :) * new template function device_creator which automatically defines the static function that creates the device; use this instead of creating a static_alloc_device_config function * added device_stop() method which is called at around the time the previous device_t's destructor was called; if you auto_free anything, do it here because the machine is gone when the destructor is called * changed the static_set_* calls to pass a device_t & instead of a device_config * * for many devices, the static config structure member names over- lapped the device's names for devcb_* functions; in these cases the members in the interface were renamed to have a _cb suffix * changed the driver_enumerator to only cache 100 machine_configs because caching them all took a ton of memory; fortunately this implementation detail is completely hidden behind the driver_enumerator interface * got rid of the macros for creating derived classes; doing it manually is now clean enough that it isn't worth hiding the details in a macro
* Switch from m_machine to machine() everywhere. In some cases this Aaron Giles2011-04-181-4/+4
| | | | | | | | | | | meant adding a machine() accessor but it's worth it for consistency. This will allow future changes from reference to pointer to happen transparently for devices. [Aaron Giles] Simple S&R: m_machine( *[^ (!=;]) machine()\1
* BIG update. Aaron Giles2011-03-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove redundant machine items from address_space and device_t. Neither machine nor m_machine are directly accessible anymore. Instead a new getter machine() is available which returns a machine reference. So: space->machine->xxx ==> space->machine().xxx device->machine->yyy ==> device->machine().yyy Globally changed all running_machine pointers to running_machine references. Any function/method that takes a running_machine takes it as a required parameter (1 or 2 exceptions). Being consistent here gets rid of a lot of odd &machine or *machine, but it does mean a very large bulk change across the project. Structs which have a running_machine * now have that variable renamed to m_machine, and now have a shiny new machine() method that works like the space and device methods above. Since most of these are things that should eventually be devices anyway, consider this a step in that direction. 98% of the update was done with regex searches. The changes are architected such that the compiler will catch the remaining errors: // find things that use an embedded machine directly and replace // with a machine() getter call S: ->machine-> R: ->machine\(\)\. // do the same if via a reference S: \.machine-> R: \.machine\(\)\. // convert function parameters to running_machine & S: running_machine \*machine([^;]) R: running_machine \&machine\1 // replace machine-> with machine. S: machine-> R: machine\. // replace &machine() with machine() S: \&([()->a-z0-9_]+machine\(\)) R: \1 // sanity check: look for this used as a cast (running_machine &) // and change to this: *(running_machine *)
* Fixed Z80-DART transmit word length. [Curt Coder] Curt Coder2011-03-141-4/+4
|
* Removed short name as parameter from device_config this way it is not ↵ Miodrag Milanovic2011-02-111-1/+1
| | | | | mandatory any more. Most of files is rolled back to previous state. (no whatsnew)
* - Added shortname to devices in order to make ROM loading per device ↵ Miodrag Milanovic2011-02-101-1/+1
| | | | | | possible. [Miodrag Milanovic] - Updated all devices containing ROM regions to have short names and all modern devices too - Created new validation to check existence of short name if device contain ROM region defined
* Get rid of state_save_register_device_* macros in favor of direct Aaron Giles2011-02-091-27/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | calls on the device object. Regex used: state_save_register_device_item( *)\(( *)([^,]+), *([^,]+),( *)([^ )]+)( *)\) \3->save_item\1\(\2NAME\(\6\),\5\4\7\) state_save_register_device_item_array( *)\(( *)([^,]+), *([^,]+),( *)([^ )]+)( *)\) \3->save_item\1\(\2NAME\(\6\),\5\4\7\) state_save_register_device_item_2d_array( *)\(( *)([^,]+), *([^,]+),( *)([^ )]+)( *)\) \3->save_item\1\(\2NAME\(\6\),\5\4\7\) state_save_register_device_item_bitmap( *)\(( *)([^,]+), *([^,]+),( *)([^ )]+)( *)\) \3->save_item\1\(\2NAME\(\*\6\),\5\4\7\) state_save_register_device_item_pointer( *)\(( *)([^,]+), *([^,]+),( *)([^,]+), *([^ )]+)( *)\) \3->save_pointer\1\(\2NAME\(\6\),\5\7,\5\4\8\) this->save_ save_ (save_item[^;]+), *0( *)\); \1\2\); (save_pointer[^;]+), *0( *)\); \1\2\);
* As promised, the bulk update of timer calls: Aaron Giles2011-02-061-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timer_adjust_oneshot(t,...) => t->adjust(...) timer_adjust_periodic(t,...) => t->adjust(...) timer_reset(t,...) => t->reset(...) timer_enable(t,...) => t->enable(...) timer_enabled(t) => t->enabled() timer_get_param(t) => t->param() timer_get_ptr(t) => t->ptr() timer_set_param(t,...) => t->set_param(...) timer_set_ptr(t) => t->set_ptr(...) timer_timeelapsed(t) => t->elapsed() timer_timeleft(t) => t->remaining() timer_starttime(t) => t->start() timer_firetime(t) => t->expire() Also remove some stray legacy cpuexec* macros that were lurking in schedule.h): cpuexec_describe_context(m) => m->describe_context() cpuexec_boost_interleave(m,...) => m->scheduler().boot_interleave(...) cpuexec_trigger(m,...) => m->scheduler().trigger(...) cpuexec_triggertime(m,...) => m->scheduler().trigger(...) Specific regex'es used: timer_adjust_oneshot( *)\(( *)([^,;]+), * \3->adjust\1\(\2 timer_adjust_periodic( *)\(( *)([^,;]+), * \3->adjust\1\(\2 (->adjust.*), *0( *)\) \1\2\) timer_reset( *)\(( *)([^,;]+), * \3->reset\1\(\2 (->reset *\(.*)attotime::never \1 timer_enable( *)\(( *)([^,;]+), * \3->enable\1\(\2 timer_enabled( *)\(( *)([^,;)]+)\) \3->enabled\1\(\2\) timer_get_param( *)\(( *)([^,;)]+)\) \3->param\1\(\2\) timer_get_ptr( *)\(( *)([^,;)]+)\) \3->ptr\1\(\2\) timer_timeelapsed( *)\(( *)([^,;)]+)\) \3->elapsed\1\(\2\) timer_timeleft( *)\(( *)([^,;)]+)\) \3->remaining\1\(\2\) timer_starttime( *)\(( *)([^,;)]+)\) \3->start\1\(\2\) timer_firetime( *)\(( *)([^,;)]+)\) \3->expire\1\(\2\) timer_set_param( *)\(( *)([^,;]+), * \3->set_param\1\(\2 timer_set_ptr( *)\(( *)([^,;]+), * \3->set_ptr\1\(\2 cpuexec_describe_context( *)\(( *)([^,;)]+)\) \3->describe_context\1\(\2\) \&m_machine->describe_context m_machine.describe_context cpuexec_boost_interleave( *)\(( *)([^,;]+), * \3->scheduler().boost_interleave\1\(\2 cpuexec_trigger( *)\(( *)([^,;]+), * \3->scheduler().trigger\1\(\2 cpuexec_triggertime( *)\(( *)([^,;]+), * \3->scheduler().trigger\1\(\2
* Convert emu_timers to objects. Move implementation and management of Aaron Giles2011-02-061-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timers into the scheduler. Retain TIMER devices as a separate wrapper in timer.c/.h. Inline wrappers are currently provided for all timer operations; a future update will bulk clean these up. Rather than using macros which hide generation of a string-ified name for callback functions, the new methods require passing both a function pointer plus a name string. A new macro FUNC() can be used to output both, and another macro MFUNC() can be used to output a stub-wrapped class member as a callback. Also added a time() method on the machine, so that machine->time() gives the current emulated time. A wrapper for timer_get_time is currently provided but will be bulk replaced in the future. For this update, convert all classic timer_alloc, timer_set, timer_pulse, and timer_call_after_resynch calls into method calls on the scheduler. For new device timers, added methods to the device_t class that make creating and managing these much simpler. Modern devices were updated to use these. Here are the regexes used; some manual cleanup (compiler-caught) will be needed since regex doesn't handle nested parentheses cleanly 1. Convert timer_call_after_resynch calls timer_call_after_resynch( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().synchronize\1\(\2FUNC(\6), \5, \4\) 2. Clean up trailing 0, NULL parameters (synchronize[^;]+), 0, NULL\) \1) 3. Clean up trailing NULL parameters (synchronize[^;]+), NULL\) \1) 4. Clean up completely empty parameter lists synchronize\(FUNC\(NULL\)\) synchronize() 5. Convert timer_set calls timer_set( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_set\1\(\2\4, FUNC(\7), \6, \5\) 6. Clean up trailing 0, NULL parameters (timer_set[^;]+), 0, NULL\) \1) 7. Clean up trailing NULL parameters (timer_set[^;]+), NULL\) \1) 8. Convert timer_set calls timer_pulse( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_pulse\1\(\2\4, FUNC(\7), \6, \5\) 9. Clean up trailing 0, NULL parameters (timer_pulse[^;]+), 0, NULL\) \1) 10. Clean up trailing NULL parameters (timer_pulse[^;]+), NULL\) \1) 11. Convert timer_alloc calls timer_alloc( *)\(( *)([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_alloc\1\(\2FUNC(\4), \5\) 12. Clean up trailing NULL parameters (timer_alloc[^;]+), NULL\) \1) 13. Clean up trailing 0 parameters (timer_alloc[^;]+), 0\) \1) 14. Fix oddities introduced \&m_machine->scheduler() m_machine.scheduler()
* Attotime bulk conversion step: Aaron Giles2011-02-031-4/+4
| | | | | | | | | | | | | | | | | | attotime_zero => attotime::zero attotime_never => attotime::never ATTOTIME_IN_SEC(s) => attotime::from_seconds(s) ATTOTIME_IN_MSEC(m) => attotime::from_msec(m) ATTOTIME_IN_USEC(u) => attotime::from_usec(u) ATTOTIME_IN_NSEC(n) => attotime::from_nsec(n) ATTOTIME_IN_HZ(h) => attotime::from_hz(h) Also, changed the following MCFG macros to require a full attotime specification: MCFG_TIMER_ADD_PERIODIC MCFG_QUANTUM_TIME MCFG_WATCHDOG_TIME_INIT