trunk/src/emu/machine/rp5c01.c
| r31544 | r31545 | |
| 66 | 66 | }; |
| 67 | 67 | |
| 68 | 68 | |
| 69 | | // days per month |
| 70 | | //static const int DAYS_PER_MONTH[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; |
| 71 | | |
| 72 | | |
| 73 | 69 | // modes |
| 74 | 70 | enum |
| 75 | 71 | { |
| r31544 | r31545 | |
| 179 | 175 | device_rtc_interface(mconfig, *this), |
| 180 | 176 | device_nvram_interface(mconfig, *this), |
| 181 | 177 | m_out_alarm_cb(*this), |
| 178 | m_battery_backed(true), |
| 182 | 179 | m_mode(0), |
| 183 | 180 | m_reset(0), |
| 184 | 181 | m_alarm(1), |
| r31544 | r31545 | |
| 231 | 228 | // 24 hour mode |
| 232 | 229 | m_reg[MODE01][REGISTER_12_24_SELECT] = 1; |
| 233 | 230 | |
| 234 | | if (clock() > 0) |
| 231 | if (m_battery_backed && clock() > 0) |
| 235 | 232 | set_current_time(machine()); |
| 236 | 233 | } |
| 237 | 234 | |
| r31544 | r31545 | |
| 299 | 296 | |
| 300 | 297 | void rp5c01_device::nvram_read(emu_file &file) |
| 301 | 298 | { |
| 302 | | file.read(m_ram, RAM_SIZE); |
| 299 | if (m_battery_backed) |
| 300 | file.read(m_ram, RAM_SIZE); |
| 303 | 301 | } |
| 304 | 302 | |
| 305 | 303 | |
| r31544 | r31545 | |
| 310 | 308 | |
| 311 | 309 | void rp5c01_device::nvram_write(emu_file &file) |
| 312 | 310 | { |
| 313 | | file.write(m_ram, RAM_SIZE); |
| 311 | if (m_battery_backed) |
| 312 | file.write(m_ram, RAM_SIZE); |
| 314 | 313 | } |
| 315 | 314 | |
| 316 | 315 | |
trunk/src/emu/machine/rp5c01.h
| r31544 | r31545 | |
| 37 | 37 | #define MCFG_RP5C01_OUT_ALARM_CB(_devcb) \ |
| 38 | 38 | devcb = &rp5c01_device::set_out_alarm_callback(*device, DEVCB_##_devcb); |
| 39 | 39 | |
| 40 | // include this macro if the chip is not battery backed |
| 41 | #define MCFG_RP5C01_REMOVE_BATTERY() \ |
| 42 | rp5c01_device::remove_battery(*device); |
| 40 | 43 | |
| 44 | |
| 41 | 45 | //************************************************************************** |
| 42 | 46 | // TYPE DEFINITIONS |
| 43 | 47 | //************************************************************************** |
| r31544 | r31545 | |
| 53 | 57 | rp5c01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 54 | 58 | |
| 55 | 59 | template<class _Object> static devcb_base &set_out_alarm_callback(device_t &device, _Object object) { return downcast<rp5c01_device &>(device).m_out_alarm_cb.set_callback(object); } |
| 60 | static void remove_battery(device_t &device) { downcast<rp5c01_device &>(device).m_battery_backed = false; } |
| 56 | 61 | |
| 57 | 62 | DECLARE_READ8_MEMBER( read ); |
| 58 | 63 | DECLARE_WRITE8_MEMBER( write ); |
| r31544 | r31545 | |
| 83 | 88 | static const device_timer_id TIMER_CLOCK = 0; |
| 84 | 89 | static const device_timer_id TIMER_16HZ = 1; |
| 85 | 90 | |
| 86 | | devcb_write_line m_out_alarm_cb; |
| 91 | devcb_write_line m_out_alarm_cb; |
| 92 | bool m_battery_backed; |
| 87 | 93 | |
| 88 | 94 | UINT8 m_reg[2][13]; // clock registers |
| 89 | 95 | UINT8 m_ram[13]; // RAM |
trunk/src/mame/drivers/punchout.c
| r31544 | r31545 | |
| 12 | 12 | TODO: |
| 13 | 13 | - add useless driver config to choose between pink and white color proms |
| 14 | 14 | - video raw params - pixel clock is derived from 20.16mhz xtal |
| 15 | | - spnchout rtc doesn't have a battery |
| 16 | 15 | - money bag placement might not be 100% correct in Arm Wrestling |
| 17 | 16 | |
| 18 | 17 | |
| r31544 | r31545 | |
| 681 | 680 | MCFG_CPU_IO_MAP(spnchout_io_map) |
| 682 | 681 | |
| 683 | 682 | MCFG_DEVICE_ADD("rtc", RP5C01, 0) // OSCIN -> Vcc |
| 683 | MCFG_RP5C01_REMOVE_BATTERY() |
| 684 | 684 | MCFG_RP5H01_ADD("rp5h01") |
| 685 | 685 | |
| 686 | 686 | MCFG_MACHINE_RESET_OVERRIDE(punchout_state, spnchout) |