diff options
Diffstat (limited to 'src/mame/drivers/nokia_3310.cpp')
-rw-r--r-- | src/mame/drivers/nokia_3310.cpp | 411 |
1 files changed, 205 insertions, 206 deletions
diff --git a/src/mame/drivers/nokia_3310.cpp b/src/mame/drivers/nokia_3310.cpp index b6dd7c934c0..81f15a75ce7 100644 --- a/src/mame/drivers/nokia_3310.cpp +++ b/src/mame/drivers/nokia_3310.cpp @@ -1,11 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Sandro Ronco /* - Driver for Nokia phones based on Texas Instrument MAD2WD1 (ARM7TDMI + DSP) + Driver for Nokia phones based on Texas Instrument MAD2WD1 (ARM7TDMI + DSP) - Driver based on documentations found here: - http://nokix.sourceforge.net/help/blacksphere/sub_050main.htm - http://tudor.rdslink.ro/MADos/ + Driver based on documentations found here: + http://nokix.sourceforge.net/help/blacksphere/sub_050main.htm + http://tudor.rdslink.ro/MADos/ */ @@ -19,8 +19,8 @@ #include "debugger.h" -#define LOG_MAD2_REGISTER_ACCESS (0) -#define LOG_CCONT_REGISTER_ACCESS (0) +#define LOG_MAD2_REGISTER_ACCESS (0) +#define LOG_CCONT_REGISTER_ACCESS (0) class noki3310_state : public driver_device @@ -56,8 +56,8 @@ public: TIMER_CALLBACK_MEMBER(timer_watchdog); TIMER_CALLBACK_MEMBER(timer_fiq8); - DECLARE_READ16_MEMBER(ram_r) { return m_ram[offset] & mem_mask; } - DECLARE_WRITE16_MEMBER(ram_w) { COMBINE_DATA(&m_ram[offset]); } + DECLARE_READ16_MEMBER(ram_r) { return m_ram[offset] & mem_mask; } + DECLARE_WRITE16_MEMBER(ram_w) { COMBINE_DATA(&m_ram[offset]); } DECLARE_READ16_MEMBER(dsp_ram_r); DECLARE_WRITE16_MEMBER(dsp_ram_w); DECLARE_INPUT_CHANGED_MEMBER(key_irq); @@ -72,27 +72,27 @@ private: std::unique_ptr<UINT16[]> m_ram; std::unique_ptr<UINT16[]> m_dsp_ram; - UINT8 m_power_on; - UINT16 m_fiq_status; - UINT16 m_irq_status; - UINT16 m_timer1_counter; - UINT16 m_timer0_counter; + UINT8 m_power_on; + UINT16 m_fiq_status; + UINT16 m_irq_status; + UINT16 m_timer1_counter; + UINT16 m_timer0_counter; - emu_timer * m_timer0; - emu_timer * m_timer1; - emu_timer * m_timer_watchdog; - emu_timer * m_timer_fiq8; + emu_timer * m_timer0; + emu_timer * m_timer1; + emu_timer * m_timer_watchdog; + emu_timer * m_timer_fiq8; // CCONT struct nokia_ccont { - bool dc; - UINT8 cmd; - UINT8 watchdog; - UINT8 regs[0x10]; + bool dc; + UINT8 cmd; + UINT8 watchdog; + UINT8 regs[0x10]; } m_ccont; - UINT8 m_mad2_regs[0x100]; + UINT8 m_mad2_regs[0x100]; }; @@ -101,87 +101,87 @@ static const char * nokia_mad2_reg_desc(UINT8 offset) { switch(offset) { - case 0x00: return "[CTSI] DCT3 ASIC version Primary hardware version (r)"; - case 0x01: return "[CTSI] MCU reset control register (rw)"; - case 0x02: return "[CTSI] DSP reset control register (rw)"; - case 0x03: return "[CTSI] ASIC watchdog write register (w)"; - case 0x04: return "[CTSI] Sleep clock counter (MSB) (r)"; - case 0x05: return "[CTSI] Sleep clock counter (LSB) (r)"; - case 0x06: return "[CTSI] ? (sleep) clock destination (LSB) (r)"; - case 0x07: return "[CTSI] ? (sleep) clock destination (MSB) (r)"; - case 0x08: return "[CTSI] FIQ lines active (rw)"; - case 0x09: return "[CTSI] IRQ lines active (rw)"; - case 0x0A: return "[CTSI] FIQ lines mask (rw)"; - case 0x0B: return "[CTSI] IRQ lines mask (rw)"; - case 0x0C: return "[CTSI] Interrupt control register (rw)"; - case 0x0D: return "[CTSI] Clock control register (rw)"; - case 0x0E: return "[CTSI] Interrupt trigger register (r)"; - case 0x0F: return "[CTSI] Programmable timer clock divider (rw)"; - case 0x10: return "[CTSI] Programmable timer counter (MSB) (r)"; - case 0x11: return "[CTSI] Programmable timer counter (LSB) (r)"; - case 0x12: return "[CTSI] Programmable timer destination (MSB) (rw)"; - case 0x13: return "[CTSI] Programmable timer destination (LSB) (rw)"; - case 0x15: return "[PUP] PUP control (rw)"; - case 0x16: return "[PUP] FIQ 8 (timer?) interrupt control (rw)"; - case 0x18: return "[PUP] MBUS control (rw)"; - case 0x19: return "[PUP] MBUS status (rw)"; - case 0x1A: return "[PUP] MBUS RX/TX (rw)"; - case 0x1B: return "[PUP] Vibrator (w)"; - case 0x1C: return "[PUP] Buzzer clock divider (w)"; - case 0x1E: return "[PUP] Buzzer volume (w)"; - case 0x20: return "[PUP] McuGenIO signal lines (rw)"; - case 0x22: return "[PUP] ? (?)"; - case 0x24: return "[PUP] McuGenIO I/O direction (rw)"; - case 0x28: return "[UIF/KBGPIO] Keyboard ROW signal lines (rw)"; - case 0x29: return "[UIF/KBGPIO] Keyboard ROW ?? (rw)"; - case 0x2A: return "[UIF/KBGPIO] Keyboard COL signal lines (rw)"; - case 0x2B: return "[UIF/KBGPIO] Keyboard COL ?? (rw)"; - case 0x2C: return "[UIF/GENSIO] CCont write (w)"; - case 0x2D: return "[UIF/GENSIO] GENSIO start transaction (w)"; - case 0x2E: return "[UIF/GENSIO] LCD data write (w)"; - case 0x32: return "[UIF] CTRL I/O 2 (rw)"; - case 0x33: return "[UIF] CTRL I/O 3 (rw)"; - case 0x36: return "[SIMI] SIM UART TxD (w)"; - case 0x37: return "[SIMI] SIM UART RxD (r)"; - case 0x38: return "[SIMI] SIM UART Interrupt Identification (r)"; - case 0x39: return "[SIMI] SIM Control (rw)"; - case 0x3A: return "[SIMI] SIM Clock Control (rw)"; - case 0x3B: return "[SIMI] SIM UART TxD Low Water Mark (?)"; - case 0x3C: return "[SIMI] SIM UART RxD queue fill (r)"; - case 0x3D: return "[SIMI] SIM RxD flags (?)"; - case 0x3E: return "[SIMI] SIM TxD flags (?)"; - case 0x3F: return "[SIMI] SIM UART TxD queue fill (r)"; - case 0x68: return "[UIF/KBGPIO] Keyboard ROW ?? 2 (rw)"; - case 0x69: return "[UIF/KBGPIO] Keyboard ROW interrupt (rw)"; - case 0x6A: return "[UIF/KBGPIO] Keyboard COL ?? 2 (rw)"; - case 0x6B: return "[UIF/KBGPIO] Keyboard COL interrupt mask (rw)"; - case 0x6C: return "[UIF/GENSIO] CCont read (r)"; - case 0x6D: return "[UIF/GENSIO] GENSIO status (r)"; - case 0x6E: return "[UIF/GENSIO] LCD command write (w)"; - case 0x6F: return "[UIF/GENSIO] GENSIO ?? (3/SELECT1) (?)"; - case 0x70: return "[UIF] CTRL I/O 0 I/O direction (1) (rw)"; - case 0x71: return "[UIF] CTRL I/O 1 I/O direction (1) (rw)"; - case 0x72: return "[UIF] CTRL I/O 2 I/O direction (1) (rw)"; - case 0x73: return "[UIF] CTRL I/O 3 I/O direction (1) (rw)"; - case 0xA8: return "[UIF/KBGPIO] Keyboard ROW I/O direction (rw)"; - case 0xA9: return "[UIF/KBGPIO] Keyboard ROW ?? 3 (rw)"; - case 0xAA: return "[UIF/KBGPIO] Keyboard COL I/O direction 0=in 1=out (rw)"; - case 0xAB: return "[UIF/KBGPIO] Keyboard COL ?? 3 (rw)"; - case 0xAD: return "[UIF/GENSIO] GENSIO ?? (1/SELECT2) (?)"; - case 0xAE: return "[UIF/GENSIO] GENSIO ?? (2/SELECT2) (?)"; - case 0xAF: return "[UIF/GENSIO] GENSIO ?? (3/SELECT2) (?)"; - case 0xB0: return "[UIF] CTRL I/O 0 I/O direction (2) (rw)"; - case 0xB1: return "[UIF] CTRL I/O 1 I/O direction (2) (rw)"; - case 0xB2: return "[UIF] CTRL I/O 2 I/O direction (2) (rw)"; - case 0xB3: return "[UIF] CTRL I/O 3 I/O direction (2) (rw)"; - case 0xED: return "[UIF/GENSIO] GENSIO ?? (1/SELECT3) (?)"; - case 0xEE: return "[UIF/GENSIO] GENSIO ?? (2/SELECT3) (?)"; - case 0xEF: return "[UIF/GENSIO] GENSIO ?? (3/SELECT3) (?)"; - case 0xF0: return "[UIF] CTRL I/O 0 input (r)"; - case 0xF1: return "[UIF] CTRL I/O 1 input (r)"; - case 0xF2: return "[UIF] CTRL I/O 2 input (r)"; - case 0xF3: return "[UIF] CTRL I/O 3 input (r)"; - default: return "<Unknown>"; + case 0x00: return "[CTSI] DCT3 ASIC version Primary hardware version (r)"; + case 0x01: return "[CTSI] MCU reset control register (rw)"; + case 0x02: return "[CTSI] DSP reset control register (rw)"; + case 0x03: return "[CTSI] ASIC watchdog write register (w)"; + case 0x04: return "[CTSI] Sleep clock counter (MSB) (r)"; + case 0x05: return "[CTSI] Sleep clock counter (LSB) (r)"; + case 0x06: return "[CTSI] ? (sleep) clock destination (LSB) (r)"; + case 0x07: return "[CTSI] ? (sleep) clock destination (MSB) (r)"; + case 0x08: return "[CTSI] FIQ lines active (rw)"; + case 0x09: return "[CTSI] IRQ lines active (rw)"; + case 0x0A: return "[CTSI] FIQ lines mask (rw)"; + case 0x0B: return "[CTSI] IRQ lines mask (rw)"; + case 0x0C: return "[CTSI] Interrupt control register (rw)"; + case 0x0D: return "[CTSI] Clock control register (rw)"; + case 0x0E: return "[CTSI] Interrupt trigger register (r)"; + case 0x0F: return "[CTSI] Programmable timer clock divider (rw)"; + case 0x10: return "[CTSI] Programmable timer counter (MSB) (r)"; + case 0x11: return "[CTSI] Programmable timer counter (LSB) (r)"; + case 0x12: return "[CTSI] Programmable timer destination (MSB) (rw)"; + case 0x13: return "[CTSI] Programmable timer destination (LSB) (rw)"; + case 0x15: return "[PUP] PUP control (rw)"; + case 0x16: return "[PUP] FIQ 8 (timer?) interrupt control (rw)"; + case 0x18: return "[PUP] MBUS control (rw)"; + case 0x19: return "[PUP] MBUS status (rw)"; + case 0x1A: return "[PUP] MBUS RX/TX (rw)"; + case 0x1B: return "[PUP] Vibrator (w)"; + case 0x1C: return "[PUP] Buzzer clock divider (w)"; + case 0x1E: return "[PUP] Buzzer volume (w)"; + case 0x20: return "[PUP] McuGenIO signal lines (rw)"; + case 0x22: return "[PUP] ? (?)"; + case 0x24: return "[PUP] McuGenIO I/O direction (rw)"; + case 0x28: return "[UIF/KBGPIO] Keyboard ROW signal lines (rw)"; + case 0x29: return "[UIF/KBGPIO] Keyboard ROW ?? (rw)"; + case 0x2A: return "[UIF/KBGPIO] Keyboard COL signal lines (rw)"; + case 0x2B: return "[UIF/KBGPIO] Keyboard COL ?? (rw)"; + case 0x2C: return "[UIF/GENSIO] CCont write (w)"; + case 0x2D: return "[UIF/GENSIO] GENSIO start transaction (w)"; + case 0x2E: return "[UIF/GENSIO] LCD data write (w)"; + case 0x32: return "[UIF] CTRL I/O 2 (rw)"; + case 0x33: return "[UIF] CTRL I/O 3 (rw)"; + case 0x36: return "[SIMI] SIM UART TxD (w)"; + case 0x37: return "[SIMI] SIM UART RxD (r)"; + case 0x38: return "[SIMI] SIM UART Interrupt Identification (r)"; + case 0x39: return "[SIMI] SIM Control (rw)"; + case 0x3A: return "[SIMI] SIM Clock Control (rw)"; + case 0x3B: return "[SIMI] SIM UART TxD Low Water Mark (?)"; + case 0x3C: return "[SIMI] SIM UART RxD queue fill (r)"; + case 0x3D: return "[SIMI] SIM RxD flags (?)"; + case 0x3E: return "[SIMI] SIM TxD flags (?)"; + case 0x3F: return "[SIMI] SIM UART TxD queue fill (r)"; + case 0x68: return "[UIF/KBGPIO] Keyboard ROW ?? 2 (rw)"; + case 0x69: return "[UIF/KBGPIO] Keyboard ROW interrupt (rw)"; + case 0x6A: return "[UIF/KBGPIO] Keyboard COL ?? 2 (rw)"; + case 0x6B: return "[UIF/KBGPIO] Keyboard COL interrupt mask (rw)"; + case 0x6C: return "[UIF/GENSIO] CCont read (r)"; + case 0x6D: return "[UIF/GENSIO] GENSIO status (r)"; + case 0x6E: return "[UIF/GENSIO] LCD command write (w)"; + case 0x6F: return "[UIF/GENSIO] GENSIO ?? (3/SELECT1) (?)"; + case 0x70: return "[UIF] CTRL I/O 0 I/O direction (1) (rw)"; + case 0x71: return "[UIF] CTRL I/O 1 I/O direction (1) (rw)"; + case 0x72: return "[UIF] CTRL I/O 2 I/O direction (1) (rw)"; + case 0x73: return "[UIF] CTRL I/O 3 I/O direction (1) (rw)"; + case 0xA8: return "[UIF/KBGPIO] Keyboard ROW I/O direction (rw)"; + case 0xA9: return "[UIF/KBGPIO] Keyboard ROW ?? 3 (rw)"; + case 0xAA: return "[UIF/KBGPIO] Keyboard COL I/O direction 0=in 1=out (rw)"; + case 0xAB: return "[UIF/KBGPIO] Keyboard COL ?? 3 (rw)"; + case 0xAD: return "[UIF/GENSIO] GENSIO ?? (1/SELECT2) (?)"; + case 0xAE: return "[UIF/GENSIO] GENSIO ?? (2/SELECT2) (?)"; + case 0xAF: return "[UIF/GENSIO] GENSIO ?? (3/SELECT2) (?)"; + case 0xB0: return "[UIF] CTRL I/O 0 I/O direction (2) (rw)"; + case 0xB1: return "[UIF] CTRL I/O 1 I/O direction (2) (rw)"; + case 0xB2: return "[UIF] CTRL I/O 2 I/O direction (2) (rw)"; + case 0xB3: return "[UIF] CTRL I/O 3 I/O direction (2) (rw)"; + case 0xED: return "[UIF/GENSIO] GENSIO ?? (1/SELECT3) (?)"; + case 0xEE: return "[UIF/GENSIO] GENSIO ?? (2/SELECT3) (?)"; + case 0xEF: return "[UIF/GENSIO] GENSIO ?? (3/SELECT3) (?)"; + case 0xF0: return "[UIF] CTRL I/O 0 input (r)"; + case 0xF1: return "[UIF] CTRL I/O 1 input (r)"; + case 0xF2: return "[UIF] CTRL I/O 2 input (r)"; + case 0xF3: return "[UIF] CTRL I/O 3 input (r)"; + default: return "<Unknown>"; } } #endif @@ -191,23 +191,23 @@ static const char * nokia_ccont_reg_desc(UINT8 offset) { switch(offset) { - case 0x0: return "Control register (w)"; - case 0x1: return "PWM (charger) (w)"; - case 0x2: return "A/D read (LSB) (r)"; - case 0x3: return "A/D read (MSB) (rw)"; - case 0x4: return "?"; - case 0x5: return "Watchdog (WDReg) (w)"; - case 0x6: return "RTC enabled (w)"; - case 0x7: return "RTC second (rw)"; - case 0x8: return "RTC minute (r)"; - case 0x9: return "RTC hour (r)"; - case 0xA: return "RTC day (rw)"; - case 0xB: return "RTC alarm minute (rw)"; - case 0xC: return "RTC alarm hour (rw)"; - case 0xD: return "RTC calibration value (rw)"; - case 0xE: return "Interrupt lines (rw)"; - case 0xF: return "Interrupt mask (rw)"; - default: return "<Unknown>"; + case 0x0: return "Control register (w)"; + case 0x1: return "PWM (charger) (w)"; + case 0x2: return "A/D read (LSB) (r)"; + case 0x3: return "A/D read (MSB) (rw)"; + case 0x4: return "?"; + case 0x5: return "Watchdog (WDReg) (w)"; + case 0x6: return "RTC enabled (w)"; + case 0x7: return "RTC second (rw)"; + case 0x8: return "RTC minute (r)"; + case 0x9: return "RTC hour (r)"; + case 0xA: return "RTC day (rw)"; + case 0xB: return "RTC alarm minute (rw)"; + case 0xC: return "RTC alarm hour (rw)"; + case 0xD: return "RTC calibration value (rw)"; + case 0xE: return "Interrupt lines (rw)"; + case 0xF: return "Interrupt mask (rw)"; + default: return "<Unknown>"; } } #endif @@ -215,7 +215,7 @@ static const char * nokia_ccont_reg_desc(UINT8 offset) void noki3310_state::machine_start() { m_ram = std::make_unique<UINT16[]>(0x40000); - m_dsp_ram = std::make_unique<UINT16[]>(0x800); // DSP shared RAM + m_dsp_ram = std::make_unique<UINT16[]>(0x800); // DSP shared RAM // allocate timers m_timer0 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(noki3310_state::timer0), this)); @@ -231,10 +231,10 @@ void noki3310_state::machine_reset() m_maincpu->set_state_int(ARM7_R15, 0x200040); memset(m_mad2_regs, 0, 0x100); - m_mad2_regs[0x01] = 0x01; // power-on flag - m_mad2_regs[0x0c] = 0x0a; // disable FIQ and IRQ - m_mad2_regs[0x03] = 0xff; // disable MAD2 watchdog - m_ccont.watchdog = 0; // disable CCONT watchdog + m_mad2_regs[0x01] = 0x01; // power-on flag + m_mad2_regs[0x0c] = 0x0a; // disable FIQ and IRQ + m_mad2_regs[0x03] = 0xff; // disable MAD2 watchdog + m_ccont.watchdog = 0; // disable CCONT watchdog m_ccont.dc = false; m_fiq_status = 0; @@ -242,7 +242,7 @@ void noki3310_state::machine_reset() m_timer1_counter = 0; m_timer0_counter = 0; - m_timer0->adjust(attotime::from_hz(33055 / (255 + 1)), 0, attotime::from_hz(33055 / (255 + 1))); // programmable through port 0x0f + m_timer0->adjust(attotime::from_hz(33055 / (255 + 1)), 0, attotime::from_hz(33055 / (255 + 1))); // programmable through port 0x0f m_timer1->adjust(attotime::from_hz(1057), 0, attotime::from_hz(1057)); m_timer_watchdog->adjust(attotime::from_hz(1), 0, attotime::from_hz(1)); m_timer_fiq8->adjust(attotime::from_hz(1000), 0, attotime::from_hz(1000)); @@ -256,7 +256,7 @@ void noki3310_state::machine_reset() void noki3310_state::assert_fiq(int num) { - if ((m_mad2_regs[0x0c] & 0x01) == 0) // check if FIQ is globally enabled + if ((m_mad2_regs[0x0c] & 0x01) == 0) // check if FIQ is globally enabled return; if (num < 8) @@ -277,7 +277,7 @@ void noki3310_state::assert_fiq(int num) void noki3310_state::assert_irq(int num) { - if ((m_mad2_regs[0x0c] & 0x04) == 0) // check if IRQ is globally enabled + if ((m_mad2_regs[0x0c] & 0x04) == 0) // check if IRQ is globally enabled return; if (num < 8) @@ -327,20 +327,20 @@ void noki3310_state::nokia_ccont_w(UINT8 data) switch(addr) { - case 0x0: // ADC + case 0x0: // ADC { UINT16 ad_id = (data >> 4) & 0x07; UINT16 ad_value = 0; switch(ad_id) { - case 0: ad_value = 0x000; break; // Accessory Detect - case 1: ad_value = 0x3ff; break; // Received signal strength - case 2: ad_value = 0x3ff; break; // Battery voltage - case 3: ad_value = 0x280; break; // Battery type - case 4: ad_value = 0x000; break; // Battery temperature - case 5: ad_value = 0x000; break; // Charger voltage - case 6: ad_value = 0x000; break; // VCX0 (Voltage controlled oscilator) temperature - case 7: ad_value = 0x000; break; // Charging current + case 0: ad_value = 0x000; break; // Accessory Detect + case 1: ad_value = 0x3ff; break; // Received signal strength + case 2: ad_value = 0x3ff; break; // Battery voltage + case 3: ad_value = 0x280; break; // Battery type + case 4: ad_value = 0x000; break; // Battery temperature + case 5: ad_value = 0x000; break; // Charger voltage + case 6: ad_value = 0x000; break; // VCX0 (Voltage controlled oscilator) temperature + case 7: ad_value = 0x000; break; // Charging current } m_ccont.regs[addr] = data; @@ -348,7 +348,7 @@ void noki3310_state::nokia_ccont_w(UINT8 data) m_ccont.regs[3] = ((ad_value >> 8) & 0x03); break; } - case 0x5: // CCONT watchdog + case 0x5: // CCONT watchdog if (data == 0x20) m_ccont.regs[addr] = data; else if (data == 0x31) @@ -382,12 +382,12 @@ UINT8 noki3310_state::nokia_ccont_r() switch(addr) { - case 0x3: data = 0xb0 | (m_ccont.regs[addr] & 0x03); break; - case 0x7: data = systime.local_time.second; break; - case 0x8: data = systime.local_time.minute; break; - case 0x9: data = systime.local_time.hour; break; - case 0xa: data = systime.local_time.mday; break; - case 0xe: data |= 0x01; break; + case 0x3: data = 0xb0 | (m_ccont.regs[addr] & 0x03); break; + case 0x7: data = systime.local_time.second; break; + case 0x8: data = systime.local_time.minute; break; + case 0x9: data = systime.local_time.hour; break; + case 0xa: data = systime.local_time.mday; break; + case 0xe: data |= 0x01; break; } m_ccont.dc = !m_ccont.dc; @@ -460,7 +460,7 @@ TIMER_CALLBACK_MEMBER(noki3310_state::timer_watchdog) { m_maincpu->reset(); machine_reset(); - m_mad2_regs[0x01] |= 0x02; // Last reset was by watchdog + m_mad2_regs[0x01] |= 0x02; // Last reset was by watchdog } } } @@ -468,10 +468,10 @@ TIMER_CALLBACK_MEMBER(noki3310_state::timer_watchdog) READ16_MEMBER(noki3310_state::dsp_ram_r) { // HACK: avoid hangs when ARM try to communicate with the DSP - if (offset <= 0x004 >> 1) return 0x01; - if (offset == 0x0e0 >> 1) return 0x00; - if (offset == 0x0fe >> 1) return 0x01; - if (offset == 0x100 >> 1) return 0x01; + if (offset <= 0x004 >> 1) return 0x01; + if (offset == 0x0e0 >> 1) return 0x00; + if (offset == 0x0fe >> 1) return 0x01; + if (offset == 0x100 >> 1) return 0x01; return m_dsp_ram[offset & 0x7ff]; } @@ -488,7 +488,7 @@ READ8_MEMBER(noki3310_state::mad2_io_r) switch(offset) { case 0x00: - data = 0x40; // ASIC version + data = 0x40; // ASIC version break; case 0x04: data = m_timer1_counter >> 8; @@ -535,7 +535,7 @@ READ8_MEMBER(noki3310_state::mad2_io_r) data = nokia_ccont_r(); break; case 0x6d: - data = 0x07; // GENSIO ready + data = 0x07; // GENSIO ready break; } @@ -553,7 +553,7 @@ WRITE8_MEMBER(noki3310_state::mad2_io_w) { case 0x02: //printf("DSP %s\n", data & 1 ? "RUN" : "HOLD"); - //if (data & 0x01) debugger_break(machine()); + //if (data & 0x01) debugger_break(machine()); break; case 0x08: ack_fiq(data); @@ -624,63 +624,63 @@ WRITE8_MEMBER(noki3310_state::mad2_mcuif_w) static ADDRESS_MAP_START( noki3310_map, AS_PROGRAM, 32, noki3310_state ) ADDRESS_MAP_GLOBAL_MASK(0x00ffffff) - AM_RANGE(0x00000000, 0x0000ffff) AM_MIRROR(0x80000) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // boot ROM / RAM - AM_RANGE(0x00010000, 0x00010fff) AM_MIRROR(0x8f000) AM_READWRITE16(dsp_ram_r, dsp_ram_w, 0xffffffff) // DSP shared memory - AM_RANGE(0x00020000, 0x000200ff) AM_MIRROR(0x8ff00) AM_READWRITE8(mad2_io_r, mad2_io_w, 0xffffffff) // IO (Primary I/O range, configures peripherals) - AM_RANGE(0x00030000, 0x00030003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_dspif_r, mad2_dspif_w, 0xffffffff) // DSPIF (API control register) - AM_RANGE(0x00040000, 0x00040003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_mcuif_r, mad2_mcuif_w, 0xffffffff) // MCUIF (Secondary I/O range, configures memory ranges) - AM_RANGE(0x00100000, 0x0017ffff) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // RAMSelX - AM_RANGE(0x00200000, 0x005fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff) // ROM1SelX - AM_RANGE(0x00600000, 0x009fffff) AM_UNMAP // ROM2SelX - AM_RANGE(0x00a00000, 0x00dfffff) AM_UNMAP // EEPROMSelX - AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // Reserved + AM_RANGE(0x00000000, 0x0000ffff) AM_MIRROR(0x80000) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // boot ROM / RAM + AM_RANGE(0x00010000, 0x00010fff) AM_MIRROR(0x8f000) AM_READWRITE16(dsp_ram_r, dsp_ram_w, 0xffffffff) // DSP shared memory + AM_RANGE(0x00020000, 0x000200ff) AM_MIRROR(0x8ff00) AM_READWRITE8(mad2_io_r, mad2_io_w, 0xffffffff) // IO (Primary I/O range, configures peripherals) + AM_RANGE(0x00030000, 0x00030003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_dspif_r, mad2_dspif_w, 0xffffffff) // DSPIF (API control register) + AM_RANGE(0x00040000, 0x00040003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_mcuif_r, mad2_mcuif_w, 0xffffffff) // MCUIF (Secondary I/O range, configures memory ranges) + AM_RANGE(0x00100000, 0x0017ffff) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // RAMSelX + AM_RANGE(0x00200000, 0x005fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff) // ROM1SelX + AM_RANGE(0x00600000, 0x009fffff) AM_UNMAP // ROM2SelX + AM_RANGE(0x00a00000, 0x00dfffff) AM_UNMAP // EEPROMSelX + AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // Reserved ADDRESS_MAP_END INPUT_CHANGED_MEMBER( noki3310_state::key_irq ) { - if (!newval) // TODO: COL/ROW IRQ mask + if (!newval) // TODO: COL/ROW IRQ mask assert_irq(0); } static INPUT_PORTS_START( noki3310 ) PORT_START("COL.0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) PORT_START("COL.1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DOWN) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DOWN) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) PORT_START("COL.2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) PORT_START("COL.3") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) PORT_START("COL.4") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) PORT_START("PWR") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SPACE) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SPACE) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0) PORT_BIT( 0x1d, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -688,7 +688,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( noki3310, noki3310_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", ARM7_BE, 26000000 / 2) // MAD2WD1 13 MHz, clock internally supplied to ARM core can be divided by 2, in sleep mode a 32768 Hz clock is used + MCFG_CPU_ADD("maincpu", ARM7_BE, 26000000 / 2) // MAD2WD1 13 MHz, clock internally supplied to ARM core can be divided by 2, in sleep mode a 32768 Hz clock is used MCFG_CPU_PROGRAM_MAP(noki3310_map) /* video hardware */ @@ -719,14 +719,14 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( noki3410, noki3330 ) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_SIZE(96, 65) // Philips OM6206 + MCFG_SCREEN_SIZE(96, 65) // Philips OM6206 MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( noki7110, noki3330 ) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_SIZE(96, 65) // Epson SED1565 + MCFG_SCREEN_SIZE(96, 65) // Epson SED1565 MACHINE_CONFIG_END @@ -740,20 +740,19 @@ MACHINE_CONFIG_END // MAD2 internal ROMS #define MAD2_INTERNAL_ROMS \ - ROM_REGION16_BE(0x10000, "boot_rom", ROMREGION_ERASE00 ) \ - ROM_LOAD("boot_rom", 0x00000, 0x10000, NO_DUMP) \ + ROM_REGION16_BE(0x10000, "boot_rom", ROMREGION_ERASE00 ) \ + ROM_LOAD("boot_rom", 0x00000, 0x10000, NO_DUMP) \ \ - ROM_REGION16_BE(0x20000, "dsp", ROMREGION_ERASE00 ) \ - ROM_LOAD("dsp_prom" , 0x00000, 0xc000, NO_DUMP) \ - ROM_LOAD("dsp_drom" , 0x0c000, 0x4000, NO_DUMP) \ - ROM_LOAD("dsp_pdrom", 0x10000, 0x1000, NO_DUMP) \ - + ROM_REGION16_BE(0x20000, "dsp", ROMREGION_ERASE00 ) \ + ROM_LOAD("dsp_prom" , 0x00000, 0xc000, NO_DUMP) \ + ROM_LOAD("dsp_drom" , 0x0c000, 0x4000, NO_DUMP) \ + ROM_LOAD("dsp_pdrom", 0x10000, 0x1000, NO_DUMP) ROM_START( noki3210 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "600", "v6.00") // A 03-10-2000 + ROM_SYSTEM_BIOS(0, "600", "v6.00") // A 03-10-2000 ROMX_LOAD("3210F600A.fls", 0x000000, 0x200000, CRC(6a978478) SHA1(6bdec2ec76aca15bc12b621be4402e455562454b), ROM_BIOS(1)) ROM_REGION16_BE(0x04000, "eeprom", 0 ) @@ -764,9 +763,9 @@ ROM_START( noki3310 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "607", "v6.07") // C 17-06-2003 - ROM_SYSTEM_BIOS(1, "579", "v5.79") // N 11-11-2002 - ROM_SYSTEM_BIOS(2, "513", "v5.13") // C 11-01-2002 + ROM_SYSTEM_BIOS(0, "607", "v6.07") // C 17-06-2003 + ROM_SYSTEM_BIOS(1, "579", "v5.79") // N 11-11-2002 + ROM_SYSTEM_BIOS(2, "513", "v5.13") // C 11-01-2002 ROMX_LOAD("3310_607_PPM_C.fls", 0x000000, 0x200000, CRC(5743f6ba) SHA1(0e80b5f1698909c9850be770c1289566582aa77a), ROM_BIOS(1)) ROMX_LOAD("3310 NR1 v5.79.fls", 0x000000, 0x200000, CRC(26b4f0df) SHA1(649de05ed88205a080693b918cd1295ac691dff1), ROM_BIOS(2)) ROMX_LOAD("3310 v. 5.13 C.fls", 0x000000, 0x1d0000, CRC(0f66d256) SHA1(04d8dabe2c454d6a1161f352d85c69c409895000), ROM_BIOS(3)) @@ -782,7 +781,7 @@ ROM_START( noki3330 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "450", "v4.50") // C 12-10-2001 + ROM_SYSTEM_BIOS(0, "450", "v4.50") // C 12-10-2001 ROMX_LOAD("3330F450C.fls", 0x000000, 0x350000, CRC(259313e7) SHA1(88bcc39d9358fd8a8562fe3a0280f0ce82f5897f), ROM_BIOS(1)) ROM_LOAD("3330 virgin eeprom 005F0000.fls", 0x3f0000, 0x010000, CRC(23459c10) SHA1(68481effb39d90a1639e8f261009c66e97d3e668)) ROM_END @@ -791,7 +790,7 @@ ROM_START( noki3410 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "506", "v5.06") // C 29-11-2002 + ROM_SYSTEM_BIOS(0, "506", "v5.06") // C 29-11-2002 ROMX_LOAD("3410_5-06c.fls", 0x000000, 0x370000, CRC(1483e094) SHA1(ef26026297c779de7b01923a364ded822e720c38), ROM_BIOS(1)) ROM_END @@ -799,9 +798,9 @@ ROM_START( noki5210 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "540", "v5.40") // C 11-10-2003 - ROM_SYSTEM_BIOS(1, "525", "v5.25") // C 26-02-2003 - ROM_SYSTEM_BIOS(2, "520", "v5.20") // C 12-08-2002 + ROM_SYSTEM_BIOS(0, "540", "v5.40") // C 11-10-2003 + ROM_SYSTEM_BIOS(1, "525", "v5.25") // C 26-02-2003 + ROM_SYSTEM_BIOS(2, "520", "v5.20") // C 12-08-2002 ROMX_LOAD("5210_5.40_PPM_C.FLS", 0x000000, 0x380000, CRC(e37d5beb) SHA1(726f000780dd67750b7d2859687f846ce17a1bf7), ROM_BIOS(1)) ROMX_LOAD("5210_5.25_PPM_C.FLS", 0x000000, 0x380000, CRC(13bba458) SHA1(3b5244244743fba48f9061e158f95fc46b86446e), ROM_BIOS(2)) ROMX_LOAD("5210_520_C.fls", 0x000000, 0x380000, CRC(38648cd3) SHA1(9210e15e6bd780f86c467bec33ef54d6393abe5a), ROM_BIOS(3)) @@ -811,7 +810,7 @@ ROM_START( noki6210 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "556", "v5.56") // C 25-01-2002 + ROM_SYSTEM_BIOS(0, "556", "v5.56") // C 25-01-2002 ROMX_LOAD("6210_556C.fls", 0x000000, 0x3a0000, CRC(203fb962) SHA1(3d9ea319503e78ec69b60d72cda23e461e118ea9), ROM_BIOS(1)) ROM_LOAD("6210 virgin eeprom 005FA000.fls", 0x3fa000, 0x006000, CRC(3c6d3437) SHA1(b3a527ede1be87bd715fb3741a81eef5bd422efa)) ROM_END @@ -820,7 +819,7 @@ ROM_START( noki6250 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "503", "v5.03") // C 06-12-2001 + ROM_SYSTEM_BIOS(0, "503", "v5.03") // C 06-12-2001 ROMX_LOAD("6250-503mcuPPMC.fls", 0x000000, 0x3a0000, CRC(8dffb91b) SHA1(95607ce39c383bda75f1e6aeae67a214b787b0a1), ROM_BIOS(1)) ROM_LOAD("6250 virgin eeprom 005FA000.fls", 0x3fa000, 0x006000, CRC(6087ce70) SHA1(57c29c8387caf864603d94a22bfb63ace427b7f9)) ROM_END @@ -829,7 +828,7 @@ ROM_START( noki7110 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "501", "v5.01") // C 08-12-2000 + ROM_SYSTEM_BIOS(0, "501", "v5.01") // C 08-12-2000 ROMX_LOAD("7110F501_ppmC.fls", 0x000000, 0x390000, CRC(919ac753) SHA1(53af8324919f455ba8199d2c05f7a921cfb811d5), ROM_BIOS(1)) ROM_LOAD("7110 virgin eeprom 005FA000.fls", 0x3fa000, 0x006000, CRC(78e7d8c1) SHA1(8b4dd782fc9d1306268ba63124ee463ac646912b)) ROM_END @@ -838,7 +837,7 @@ ROM_START( noki8210 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "531", "v5.31") // C 08-03-2002 + ROM_SYSTEM_BIOS(0, "531", "v5.31") // C 08-03-2002 ROMX_LOAD("8210_5.31PPM_C.FLS", 0x000000, 0x1d0000, CRC(927022b1) SHA1(c1a0fe95cedb89a92b19654208cc4855e1a4988e), ROM_BIOS(1)) ROM_LOAD("8210 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(37fddeea) SHA1(1c01ad3948ff9919890498a84f31052369d93e1d)) ROM_END @@ -847,7 +846,7 @@ ROM_START( noki8250 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "502", "v5.02") // K 28-01-2002 + ROM_SYSTEM_BIOS(0, "502", "v5.02") // K 28-01-2002 ROMX_LOAD("8250-502mcuPPMK.fls", 0x000000, 0x1d0000, CRC(2c58e48b) SHA1(f26c98ffcfffbbd5714889e10cfa41c5f6dd2529), ROM_BIOS(1)) ROM_LOAD("8250 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(7ca585e0) SHA1(a974fb5fddcd0438ac4aaf32b431f1453e8d923c)) ROM_END @@ -856,7 +855,7 @@ ROM_START( noki8850 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "531", "v5.31") // C 08-03-2002 + ROM_SYSTEM_BIOS(0, "531", "v5.31") // C 08-03-2002 ROMX_LOAD("8850v531.fls", 0x000000, 0x1d0000, CRC(8864fcb3) SHA1(9f966787403b68a09530680ad911302403eb1521), ROM_BIOS(1)) ROM_LOAD("8850 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(4823f27e) SHA1(b09455302d98fbedf35072c9ecfd7721a04924b0)) ROM_END @@ -865,7 +864,7 @@ ROM_START( noki8890 ) MAD2_INTERNAL_ROMS ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS(0, "1220", "v12.20") // C 19-03-2001 + ROM_SYSTEM_BIOS(0, "1220", "v12.20") // C 19-03-2001 ROMX_LOAD("8890_12.20_ppmC.FLS", 0x000000, 0x1d0000, CRC(77206f78) SHA1(a214a0d69760ecd8eeca0b9d82f95c94bdfe70ed), ROM_BIOS(1)) ROM_LOAD("8890 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(1d8ef3b5) SHA1(cc0924cfd4c0ce796fca157c640fc3183c2b5f2c)) ROM_END |