mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
(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:
parent
59e7d9a63b
commit
31bed06699
@ -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")
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user