(MESS) cybiko updates: [R. Belmont]

- Fixed major memory stomp in cybikov2
- Fixed "insert battery" message in cybikoxt; the OS boots up now
- Started general cleanup of I/O handling
This commit is contained in:
R. Belmont 2014-04-23 02:15:35 +00:00
parent 59e7d9a63b
commit 31bed06699
3 changed files with 58 additions and 15 deletions

View File

@ -94,21 +94,59 @@ static ADDRESS_MAP_START( cybikoxt_mem, AS_PROGRAM, 16, cybiko_state )
AM_RANGE( 0xe00000, 0xefffff ) AM_READ( cybikoxt_key_r )
ADDRESS_MAP_END
READ16_MEMBER(cybiko_state::serflash_r)
{
if (m_flash1->so_r())
{
return 0x08;
}
return 0;
}
READ16_MEMBER(cybiko_state::clock_r)
{
if (m_rtc->sda_r())
{
return (0x01|0x04);
}
return 0x04;
}
READ16_MEMBER(cybiko_state::xtclock_r)
{
if (m_rtc->sda_r())
{
return 0x40;
}
return 0;
}
READ16_MEMBER(cybiko_state::xtpower_r)
{
// bit 7 = on/off button
// bit 6 = battery charged if "1"
return 0xc0c0;
}
//////////////////////
// ADDRESS MAP - IO //
//////////////////////
static ADDRESS_MAP_START( cybikov1_io, AS_IO, 16, cybiko_state )
AM_RANGE( 0xfffe40, 0xffffff ) AM_READWRITE( cybikov1_io_reg_r, cybikov1_io_reg_w )
AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_READ(serflash_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( cybikov2_io, AS_IO, 16, cybiko_state )
AM_RANGE( 0xfffe40, 0xffffff ) AM_READWRITE( cybikov2_io_reg_r, cybikov2_io_reg_w )
AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_READ(serflash_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( cybikoxt_io, AS_IO, 16, cybiko_state )
AM_RANGE( 0xfffe40, 0xffffff ) AM_READWRITE( cybikoxt_io_reg_r, cybikoxt_io_reg_w )
ADDRESS_MAP_END
AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READ(xtpower_r)
AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_READ(xtclock_r)
ADDRESS_MAP_END
/////////////////
// INPUT PORTS //
@ -340,10 +378,6 @@ static MACHINE_CONFIG_DERIVED( cybikoxt, cybikov1)
MCFG_CPU_PROGRAM_MAP(cybikoxt_mem )
MCFG_CPU_IO_MAP(cybikoxt_io )
// setup loopback
MCFG_DEVICE_MODIFY("maincpu:sci1")
MCFG_H8_SCI_TX_CALLBACK(DEVWRITELINE("sci1", h8_sci_device, rx_w));
// machine
MCFG_DEVICE_REMOVE("flash1")
MCFG_SST_39VF400A_ADD("flashxt")

View File

@ -58,6 +58,11 @@ public:
m_nvram(*this, "nvram")
{ }
DECLARE_READ16_MEMBER(serflash_r);
DECLARE_READ16_MEMBER(clock_r);
DECLARE_READ16_MEMBER(xtclock_r);
DECLARE_READ16_MEMBER(xtpower_r);
CYBIKO_RS232 m_rs232;
DECLARE_READ16_MEMBER(cybiko_lcd_r);
DECLARE_WRITE16_MEMBER(cybiko_lcd_w);
@ -65,12 +70,6 @@ public:
DECLARE_READ16_MEMBER(cybikov2_key_r);
DECLARE_READ16_MEMBER(cybikoxt_key_r);
DECLARE_WRITE16_MEMBER(cybiko_usb_w);
DECLARE_READ16_MEMBER(cybikov1_io_reg_r);
DECLARE_READ16_MEMBER(cybikov2_io_reg_r);
DECLARE_READ16_MEMBER(cybikoxt_io_reg_r);
DECLARE_WRITE16_MEMBER(cybikov1_io_reg_w);
DECLARE_WRITE16_MEMBER(cybikov2_io_reg_w);
DECLARE_WRITE16_MEMBER(cybikoxt_io_reg_w);
int cybiko_key_r( offs_t offset, int mem_mask);
void cybiko_rs232_write_byte(int data);
void cybiko_rs232_pin_sck(int data);

View File

@ -65,7 +65,15 @@ void cybiko_state::machine_start()
cybiko_rs232_init();
// other
machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(cybiko_state::machine_stop_cybiko),this));
m_nvram->set_base(m_ram->pointer(), RAMDISK_SIZE);
int nvram_size = RAMDISK_SIZE;
if (m_ram->size() < nvram_size)
{
nvram_size = m_ram->size();
}
m_nvram->set_base(m_ram->pointer(), nvram_size);
}
///////////////////
@ -213,6 +221,7 @@ READ16_MEMBER( cybiko_state::cybikoxt_key_r )
return cybiko_key_r(offset, mem_mask);
}
#if 0
READ16_MEMBER( cybiko_state::cybikov1_io_reg_r )
{
UINT16 data = 0;
@ -469,6 +478,7 @@ WRITE16_MEMBER( cybiko_state::cybikoxt_io_reg_w )
}
#endif
}
#endif
// Cybiko Xtreme writes following byte pairs to 0x200003/0x200000
// 00/01, 00/C0, 0F/32, 0D/03, 0B/03, 09/50, 07/D6, 05/00, 04/00, 20/00, 23/08, 27/01, 2F/08, 2C/02, 2B/08, 28/01