mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
(MESS) Cybiko: hooked up serial flash to H8 sync serial. Gremlins occur. (nw)
This commit is contained in:
parent
19f0fe0e0b
commit
ba41c4f6da
@ -45,14 +45,16 @@ const device_type AT45DB161 = &device_creator<at45db161_device>;
|
||||
|
||||
at45db041_device::at45db041_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, AT45DB041, "AT45DB041", tag, owner, clock, "at45db041", __FILE__),
|
||||
device_nvram_interface(mconfig, *this)
|
||||
device_nvram_interface(mconfig, *this),
|
||||
write_so(*this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
at45db041_device::at45db041_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
|
||||
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
|
||||
device_nvram_interface(mconfig, *this)
|
||||
device_nvram_interface(mconfig, *this),
|
||||
write_so(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -90,6 +92,8 @@ void at45db041_device::device_start()
|
||||
save_item(NAME(m_pin.wp));
|
||||
save_item(NAME(m_pin.reset));
|
||||
save_item(NAME(m_pin.busy));
|
||||
|
||||
write_so.resolve_safe();
|
||||
}
|
||||
|
||||
|
||||
@ -369,6 +373,7 @@ WRITE_LINE_MEMBER(at45db041_device::sck_w)
|
||||
}
|
||||
// output (part 2)
|
||||
m_pin.so = (m_so_byte >> m_so_bits) & 1;
|
||||
write_so(m_pin.so);
|
||||
m_so_bits++;
|
||||
}
|
||||
// save sck
|
||||
|
@ -29,6 +29,9 @@
|
||||
#define MCFG_AT45DB161_ADD(_tag) \
|
||||
MCFG_DEVICE_ADD(_tag, AT45DB161, 0)
|
||||
|
||||
#define MCFG_AT45DBXXX_SO_CALLBACK(_cb) \
|
||||
devcb = &at45db041_device::set_so_cb(*device, DEVCB2_##_cb);
|
||||
|
||||
|
||||
// ======================> at45db041_device
|
||||
|
||||
@ -46,6 +49,9 @@ public:
|
||||
|
||||
UINT8 *get_ptr() { return m_data; }
|
||||
|
||||
template<class _Object> static devcb2_base &set_so_cb(device_t &device, _Object object) { return downcast<at45db041_device &>(device).write_so.set_callback(object); }
|
||||
devcb2_write_line write_so;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
|
@ -94,21 +94,9 @@ 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;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(cybiko_state::serflash_w)
|
||||
{
|
||||
m_flash1->cs_w ((data & 0x10) ? 0 : 1);
|
||||
m_flash1->si_w ((data & 0x02) ? 1 : 0);
|
||||
m_flash1->sck_w((data & 0x20) ? 1 : 0);
|
||||
}
|
||||
|
||||
READ16_MEMBER(cybiko_state::clock_r)
|
||||
@ -155,11 +143,11 @@ READ16_MEMBER(cybiko_state::xtpower_r)
|
||||
//////////////////////
|
||||
|
||||
static ADDRESS_MAP_START( cybikov1_io, AS_IO, 16, cybiko_state )
|
||||
AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_READWRITE(serflash_r, serflash_w)
|
||||
AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_WRITE(serflash_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( cybikov2_io, AS_IO, 16, cybiko_state )
|
||||
AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_READWRITE(serflash_r, serflash_w)
|
||||
AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_WRITE(serflash_w)
|
||||
AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_READWRITE(clock_r, clock_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -347,6 +335,10 @@ static MACHINE_CONFIG_START( cybikov1, cybiko_state )
|
||||
MCFG_CPU_PROGRAM_MAP( cybikov1_mem )
|
||||
MCFG_CPU_IO_MAP( cybikov1_io )
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu:sci1")
|
||||
MCFG_H8_SCI_TX_CALLBACK(DEVWRITELINE("^flash1", at45db041_device, si_w))
|
||||
MCFG_H8_SCI_CLK_CALLBACK(DEVWRITELINE("^flash1", at45db041_device, sck_w))
|
||||
|
||||
// screen
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE( 60 )
|
||||
@ -365,6 +357,7 @@ static MACHINE_CONFIG_START( cybikov1, cybiko_state )
|
||||
/* rtc */
|
||||
MCFG_PCF8593_ADD("rtc")
|
||||
MCFG_AT45DB041_ADD("flash1")
|
||||
MCFG_AT45DBXXX_SO_CALLBACK(DEVWRITELINE("maincpu:sci1", h8_sci_device, rx_w))
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
||||
@ -380,8 +373,12 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_DERIVED( cybikov2, cybikov1)
|
||||
// cpu
|
||||
MCFG_CPU_REPLACE("maincpu", H8S2246, XTAL_11_0592MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(cybikov2_mem )
|
||||
MCFG_CPU_IO_MAP(cybikov2_io )
|
||||
MCFG_CPU_PROGRAM_MAP(cybikov2_mem)
|
||||
MCFG_CPU_IO_MAP(cybikov2_io)
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu:sci1")
|
||||
MCFG_H8_SCI_TX_CALLBACK(DEVWRITELINE("^flash1", at45db041_device, si_w))
|
||||
MCFG_H8_SCI_CLK_CALLBACK(DEVWRITELINE("^flash1", at45db041_device, sck_w))
|
||||
|
||||
// machine
|
||||
MCFG_SST_39VF020_ADD("flash2")
|
||||
|
Loading…
Reference in New Issue
Block a user