mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
3b785a1ffe
@ -1099,6 +1099,21 @@ if (BUSES["SPC1000"]~=null) then
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------
|
||||
--
|
||||
--@src/devices/bus/tiki100/exp.h,BUSES["TIKI100"] = true
|
||||
---------------------------------------------------
|
||||
|
||||
if (BUSES["TIKI100"]~=null) then
|
||||
files {
|
||||
MAME_DIR .. "src/devices/bus/tiki100/exp.c",
|
||||
MAME_DIR .. "src/devices/bus/tiki100/exp.h",
|
||||
MAME_DIR .. "src/devices/bus/tiki100/8088.c",
|
||||
MAME_DIR .. "src/devices/bus/tiki100/8088.h",
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------
|
||||
--
|
||||
--@src/devices/bus/tvc/tvc.h,BUSES["TVC"] = true
|
||||
@ -2018,10 +2033,10 @@ if (BUSES["TI99X"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/ti99x/mecmouse.h",
|
||||
MAME_DIR .. "src/devices/bus/ti99x/ti99defs.h",
|
||||
MAME_DIR .. "src/devices/bus/ti99x/videowrp.c",
|
||||
MAME_DIR .. "src/devices/bus/ti99x/videowrp.h",
|
||||
MAME_DIR .. "src/devices/bus/ti99x/videowrp.h",
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------
|
||||
--
|
||||
--@src/devices/bus/ti99_peb/peribox.h,BUSES["TI99PEB"] = true
|
||||
|
@ -645,6 +645,7 @@ BUSES["SNES_CTRL"] = true
|
||||
BUSES["SPC1000"] = true
|
||||
BUSES["TI99PEB"] = true
|
||||
BUSES["TI99X"] = true
|
||||
BUSES["TIKI100"] = true
|
||||
BUSES["TVC"] = true
|
||||
BUSES["VBOY"] = true
|
||||
BUSES["VC4000"] = true
|
||||
@ -1231,9 +1232,9 @@ files {
|
||||
}
|
||||
|
||||
createMESSProjects(_target, _subtarget, "canon")
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/cat.c",
|
||||
MAME_DIR .. "src/mame/drivers/x07.c",
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/cat.c",
|
||||
MAME_DIR .. "src/mame/drivers/x07.c",
|
||||
MAME_DIR .. "src/mame/drivers/canon_s80.c",
|
||||
}
|
||||
|
||||
@ -1640,8 +1641,8 @@ files {
|
||||
}
|
||||
|
||||
createMESSProjects(_target, _subtarget, "heurikon")
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/hk68v10.c",
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/hk68v10.c",
|
||||
}
|
||||
|
||||
createMESSProjects(_target, _subtarget, "intel")
|
||||
@ -1803,8 +1804,8 @@ files {
|
||||
}
|
||||
|
||||
createMESSProjects(_target, _subtarget, "mizar")
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/mzr8105.c",
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/mzr8105.c",
|
||||
}
|
||||
|
||||
createMESSProjects(_target, _subtarget, "morrow")
|
||||
|
152
src/devices/bus/tiki100/8088.c
Normal file
152
src/devices/bus/tiki100/8088.c
Normal file
@ -0,0 +1,152 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/**********************************************************************
|
||||
|
||||
TIKI-100 8/16 8088/8087 expansion card emulation
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "8088.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACROS/CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define I8088_TAG "u3"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
const device_type TIKI100_8088 = &device_creator<tiki100_8088_t>;
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( tiki100_8088 )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( tiki100_8088 )
|
||||
ROM_REGION( 0x1000, I8088_TAG, 0 )
|
||||
ROM_LOAD( "boot 1.0.u3", 0x0000, 0x1000, CRC(436974aa) SHA1(837087b3ab982d047e4f15799fef3daa37dd6c01) )
|
||||
|
||||
ROM_REGION( 0x100, "u26", 0 )
|
||||
ROM_LOAD( "53ls140.u26", 0x000, 0x100, CRC(fc5902e1) SHA1(afb9cb54ab6fc449e7544ddb3cbebc3770c4f937) )
|
||||
ROM_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// rom_region - device-specific ROM region
|
||||
//-------------------------------------------------
|
||||
|
||||
const rom_entry *tiki100_8088_t::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( tiki100_8088 );
|
||||
}
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( i8088_mem, AS_PROGRAM, 8, tiki100_8088_t )
|
||||
AM_RANGE(0xff000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( i8088_io, AS_IO, 8, tiki100_8088_t )
|
||||
AM_RANGE(0x7f, 0x7f) AM_READWRITE(read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// MACHINE_CONFIG_FRAGMENT( tiki100_8088 )
|
||||
//-------------------------------------------------
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( tiki100_8088 )
|
||||
MCFG_CPU_ADD("maincpu", I8088, 4000000)
|
||||
MCFG_CPU_PROGRAM_MAP(i8088_mem)
|
||||
MCFG_CPU_IO_MAP(i8088_io)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// machine_config_additions - device-specific
|
||||
// machine configurations
|
||||
//-------------------------------------------------
|
||||
|
||||
machine_config_constructor tiki100_8088_t::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( tiki100_8088 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// tiki100_8088_t - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
tiki100_8088_t::tiki100_8088_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
device_t(mconfig, TIKI100_8088, "TIKI-100 8/16", tag, owner, clock, "tiki100_8088", __FILE__),
|
||||
device_tiki100bus_card_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void tiki100_8088_t::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void tiki100_8088_t::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// tiki100bus_iorq_r - I/O read
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8 tiki100_8088_t::tiki100_iorq_r(address_space &space, offs_t offset, UINT8 data)
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// tiki100bus_iorq_w - I/O write
|
||||
//-------------------------------------------------
|
||||
|
||||
void tiki100_8088_t::tiki100_iorq_w(address_space &space, offs_t offset, UINT8 data)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// read -
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER( tiki100_8088_t::read )
|
||||
{
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// write -
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( tiki100_8088_t::write )
|
||||
{
|
||||
}
|
55
src/devices/bus/tiki100/8088.h
Normal file
55
src/devices/bus/tiki100/8088.h
Normal file
@ -0,0 +1,55 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/**********************************************************************
|
||||
|
||||
TIKI-100 8/16 8088/8087 expansion card emulation
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __TIKI100_8088__
|
||||
#define __TIKI100_8088__
|
||||
|
||||
#include "emu.h"
|
||||
#include "bus/tiki100/exp.h"
|
||||
#include "cpu/i86/i86.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> tiki100_8088_t
|
||||
|
||||
class tiki100_8088_t : public device_t,
|
||||
public device_tiki100bus_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
tiki100_8088_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// optional information overrides
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
// device_tiki100bus_card_interface overrides
|
||||
virtual UINT8 tiki100_iorq_r(address_space &space, offs_t offset, UINT8 data);
|
||||
virtual void tiki100_iorq_w(address_space &space, offs_t offset, UINT8 data);
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type TIKI100_8088;
|
||||
|
||||
|
||||
#endif
|
177
src/devices/bus/tiki100/exp.c
Normal file
177
src/devices/bus/tiki100/exp.c
Normal file
@ -0,0 +1,177 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/**********************************************************************
|
||||
|
||||
TIKI-100 expansion bus emulation
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "exp.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
const device_type TIKI100_BUS = &device_creator<tiki100_bus_t>;
|
||||
const device_type TIKI100_BUS_SLOT = &device_creator<tiki100_bus_slot_t>;
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// tiki100_bus_slot_t - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
tiki100_bus_slot_t::tiki100_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
device_t(mconfig, TIKI100_BUS_SLOT, "TIKI-100 expansion bus slot", tag, owner, clock, "tiki100bus_slot", __FILE__),
|
||||
device_slot_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void tiki100_bus_slot_t::device_start()
|
||||
{
|
||||
m_bus = machine().device<tiki100_bus_t>(TIKI100_BUS_TAG);
|
||||
device_tiki100bus_card_interface *dev = dynamic_cast<device_tiki100bus_card_interface *>(get_card_device());
|
||||
if (dev) m_bus->add_card(dev);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// tiki100_bus_t - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
tiki100_bus_t::tiki100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
device_t(mconfig, TIKI100_BUS, "TIKI-100 expansion bus", tag, owner, clock, "tiki100bus", __FILE__),
|
||||
m_irq_cb(*this),
|
||||
m_nmi_cb(*this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void tiki100_bus_t::device_start()
|
||||
{
|
||||
// resolve callbacks
|
||||
m_irq_cb.resolve_safe();
|
||||
m_nmi_cb.resolve_safe();
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// add_card - add card
|
||||
//-------------------------------------------------
|
||||
|
||||
void tiki100_bus_t::add_card(device_tiki100bus_card_interface *card)
|
||||
{
|
||||
m_device_list.append(*card);
|
||||
|
||||
card->m_bus = this;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// mrq_r - memory read
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8 tiki100_bus_t::mrq_r(address_space &space, offs_t offset, UINT8 data, bool &mdis)
|
||||
{
|
||||
device_tiki100bus_card_interface *entry = m_device_list.first();
|
||||
|
||||
while (entry)
|
||||
{
|
||||
data &= entry->tiki100_mrq_r(space, offset, data, mdis);
|
||||
entry = entry->next();
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// mrq_w - memory write
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( tiki100_bus_t::mrq_w )
|
||||
{
|
||||
device_tiki100bus_card_interface *entry = m_device_list.first();
|
||||
|
||||
while (entry)
|
||||
{
|
||||
entry->tiki100_mrq_w(space, offset, data);
|
||||
entry = entry->next();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// iorq_r - I/O read
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8 tiki100_bus_t::iorq_r(address_space &space, offs_t offset, UINT8 data)
|
||||
{
|
||||
device_tiki100bus_card_interface *entry = m_device_list.first();
|
||||
|
||||
while (entry)
|
||||
{
|
||||
data &= entry->tiki100_iorq_r(space, offset, data);
|
||||
entry = entry->next();
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// iorq_w - I/O write
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( tiki100_bus_t::iorq_w )
|
||||
{
|
||||
device_tiki100bus_card_interface *entry = m_device_list.first();
|
||||
|
||||
while (entry)
|
||||
{
|
||||
entry->tiki100_iorq_w(space, offset, data);
|
||||
entry = entry->next();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE TIKI-100 BUS CARD INTERFACE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_tiki100bus_card_interface - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
device_tiki100bus_card_interface::device_tiki100bus_card_interface(const machine_config &mconfig, device_t &device) :
|
||||
device_slot_card_interface(mconfig, device)
|
||||
{
|
||||
m_slot = dynamic_cast<tiki100_bus_slot_t *>(device.owner());
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// SLOT_INTERFACE( tiki100_cards )
|
||||
//-------------------------------------------------
|
||||
|
||||
// slot devices
|
||||
#include "8088.h"
|
||||
|
||||
SLOT_INTERFACE_START( tiki100_cards )
|
||||
SLOT_INTERFACE("8088", TIKI100_8088)
|
||||
SLOT_INTERFACE_END
|
154
src/devices/bus/tiki100/exp.h
Normal file
154
src/devices/bus/tiki100/exp.h
Normal file
@ -0,0 +1,154 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/**********************************************************************
|
||||
|
||||
TIKI-100 expansion bus emulation
|
||||
|
||||
**********************************************************************
|
||||
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __TIKI100_BUS__
|
||||
#define __TIKI100_BUS__
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define TIKI100_BUS_TAG "tiki100bus"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_TIKI100_BUS_ADD() \
|
||||
MCFG_DEVICE_ADD(TIKI100_BUS_TAG, TIKI100_BUS, 0)
|
||||
|
||||
#define MCFG_TIKI100_BUS_SLOT_ADD(_tag, _def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, TIKI100_BUS_SLOT, 0) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(tiki100_cards, _def_slot, false)
|
||||
|
||||
|
||||
#define MCFG_TIKI100_BUS_IRQ_CALLBACK(_write) \
|
||||
devcb = &tiki100_bus_t::set_irq_wr_callback(*device, DEVCB_##_write);
|
||||
|
||||
#define MCFG_TIKI100_BUS_NMI_CALLBACK(_write) \
|
||||
devcb = &tiki100_bus_t::set_nmi_wr_callback(*device, DEVCB_##_write);
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> tiki100_bus_slot_t
|
||||
|
||||
class tiki100_bus_t;
|
||||
|
||||
class tiki100_bus_slot_t : public device_t,
|
||||
public device_slot_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
tiki100_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
|
||||
private:
|
||||
// configuration
|
||||
tiki100_bus_t *m_bus;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type TIKI100_BUS_SLOT;
|
||||
|
||||
|
||||
class device_tiki100bus_card_interface;
|
||||
|
||||
|
||||
// ======================> tiki100_bus_t
|
||||
|
||||
class tiki100_bus_t : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
tiki100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
~tiki100_bus_t() { m_device_list.detach_all(); }
|
||||
|
||||
template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_irq_cb.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_nmi_cb.set_callback(object); }
|
||||
|
||||
void add_card(device_tiki100bus_card_interface *card);
|
||||
|
||||
// computer interface
|
||||
UINT8 mrq_r(address_space &space, offs_t offset, UINT8 data, bool &mdis);
|
||||
DECLARE_WRITE8_MEMBER( mrq_w );
|
||||
|
||||
UINT8 iorq_r(address_space &space, offs_t offset, UINT8 data);
|
||||
DECLARE_WRITE8_MEMBER( iorq_w );
|
||||
|
||||
// peripheral interface
|
||||
DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_cb(state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_cb(state); }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
|
||||
private:
|
||||
devcb_write_line m_irq_cb;
|
||||
devcb_write_line m_nmi_cb;
|
||||
|
||||
simple_list<device_tiki100bus_card_interface> m_device_list;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type TIKI100_BUS;
|
||||
|
||||
|
||||
// ======================> device_tiki100bus_card_interface
|
||||
|
||||
// class representing interface-specific live tiki100bus card
|
||||
class device_tiki100bus_card_interface : public device_slot_card_interface
|
||||
{
|
||||
friend class tiki100_bus_t;
|
||||
|
||||
public:
|
||||
// construction/destruction
|
||||
device_tiki100bus_card_interface(const machine_config &mconfig, device_t &device);
|
||||
virtual ~device_tiki100bus_card_interface() { }
|
||||
|
||||
device_tiki100bus_card_interface *next() const { return m_next; }
|
||||
|
||||
// memory access
|
||||
virtual UINT8 tiki100_mrq_r(address_space &space, offs_t offset, UINT8 data, bool &mdis) { mdis = 1; return data; };
|
||||
virtual void tiki100_mrq_w(address_space &space, offs_t offset, UINT8 data) { };
|
||||
|
||||
// I/O access
|
||||
virtual UINT8 tiki100_iorq_r(address_space &space, offs_t offset, UINT8 data) { return data; };
|
||||
virtual void tiki100_iorq_w(address_space &space, offs_t offset, UINT8 data) { };
|
||||
|
||||
tiki100_bus_t *m_bus;
|
||||
tiki100_bus_slot_t *m_slot;
|
||||
|
||||
device_tiki100bus_card_interface *m_next;
|
||||
};
|
||||
|
||||
|
||||
SLOT_INTERFACE_EXTERN( tiki100_cards );
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -346,16 +346,19 @@ int ata_hle_device::bit_to_mode(UINT16 word)
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Return the currently selected single word dma mode, -1 if none selected
|
||||
int ata_hle_device::single_word_dma_mode()
|
||||
{
|
||||
return bit_to_mode(m_identify_buffer[62]);
|
||||
}
|
||||
|
||||
// Return the currently selected multi word dma mode, -1 if none selected
|
||||
int ata_hle_device::multi_word_dma_mode()
|
||||
{
|
||||
return bit_to_mode(m_identify_buffer[63]);
|
||||
}
|
||||
|
||||
// Return the currently selected ultra dma mode, -1 if none selected
|
||||
int ata_hle_device::ultra_dma_mode()
|
||||
{
|
||||
return bit_to_mode(m_identify_buffer[88]);
|
||||
@ -459,7 +462,7 @@ void ata_hle_device::read_buffer_empty()
|
||||
|
||||
m_status &= ~IDE_STATUS_DRQ;
|
||||
|
||||
if (multi_word_dma_mode() >= 0)
|
||||
if ((multi_word_dma_mode() >= 0) || (ultra_dma_mode() >= 0))
|
||||
set_dmarq(CLEAR_LINE);
|
||||
|
||||
fill_buffer();
|
||||
@ -471,7 +474,7 @@ void ata_hle_device::write_buffer_full()
|
||||
|
||||
m_status &= ~IDE_STATUS_DRQ;
|
||||
|
||||
if (multi_word_dma_mode() >= 0)
|
||||
if ((multi_word_dma_mode() >= 0) || (ultra_dma_mode() >= 0))
|
||||
set_dmarq(CLEAR_LINE);
|
||||
|
||||
process_buffer();
|
||||
@ -547,6 +550,10 @@ UINT16 ata_hle_device::read_dma()
|
||||
{
|
||||
logerror( "%s: %s dev %d read_dma ignored (!DMARQ)\n", machine().describe_context(), tag(), dev() );
|
||||
}
|
||||
else if (!m_dmarq && ultra_dma_mode() >= 0)
|
||||
{
|
||||
logerror("%s: %s dev %d read_dma ignored (!DMARQ)\n", machine().describe_context(), tag(), dev());
|
||||
}
|
||||
else if (m_status & IDE_STATUS_BSY)
|
||||
{
|
||||
logerror( "%s: %s dev %d read_dma ignored (BSY)\n", machine().describe_context(), tag(), dev() );
|
||||
@ -767,6 +774,10 @@ void ata_hle_device::write_dma( UINT16 data )
|
||||
{
|
||||
logerror( "%s: %s dev %d write_dma %04x ignored (!DMARQ)\n", machine().describe_context(), tag(), dev(), data );
|
||||
}
|
||||
else if (!m_dmarq && ultra_dma_mode() >= 0)
|
||||
{
|
||||
logerror("%s: %s dev %d write_dma %04x ignored (!DMARQ)\n", machine().describe_context(), tag(), dev(), data);
|
||||
}
|
||||
else if (m_status & IDE_STATUS_BSY)
|
||||
{
|
||||
logerror( "%s: %s dev %d write_dma %04x ignored (BSY)\n", machine().describe_context(), tag(), dev(), data );
|
||||
|
@ -149,7 +149,7 @@ void ata_mass_storage_device::ide_build_identify_device()
|
||||
m_identify_buffer[85] = 0x00; /* 85: command set/feature enabled */
|
||||
m_identify_buffer[86] = 0x00; /* 86: command set/feature enabled */
|
||||
m_identify_buffer[87] = 0x00; /* 87: command set/feature default */
|
||||
m_identify_buffer[88] = 0x00; /* 88: additional DMA modes */
|
||||
m_identify_buffer[88] = 0x00; /* 88: additional DMA modes (ultra dma) */
|
||||
m_identify_buffer[89] = 0x00; /* 89: time required for security erase unit completion */
|
||||
m_identify_buffer[90] = 0x00; /* 90: time required for enhanced security erase unit completion */
|
||||
m_identify_buffer[91] = 0x00; /* 91: current advanced power management value */
|
||||
|
@ -516,6 +516,7 @@ void digitalker_device::digitalker_step()
|
||||
return;
|
||||
}
|
||||
} else if(m_stop_after == 1) {
|
||||
digitalker_set_intr(1);
|
||||
m_bpos = 0xffff;
|
||||
m_zero_count = 81920;
|
||||
m_stop_after = 2;
|
||||
@ -525,7 +526,6 @@ void digitalker_device::digitalker_step()
|
||||
m_repeats = 0;
|
||||
} else {
|
||||
m_stop_after = 0;
|
||||
digitalker_set_intr(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,18 +26,18 @@
|
||||
*/
|
||||
|
||||
#include "includes/tiki100.h"
|
||||
#include "bus/rs232/rs232.h"
|
||||
|
||||
/* Memory Banking */
|
||||
|
||||
READ8_MEMBER( tiki100_state::read )
|
||||
{
|
||||
int mdis = 1;
|
||||
bool mdis = 1;
|
||||
|
||||
UINT8 data = m_exp->mrq_r(space, offset, 0xff, mdis);
|
||||
|
||||
offs_t prom_addr = mdis << 5 | m_vire << 4 | m_rome << 3 | (offset >> 13);
|
||||
UINT8 prom = m_prom->base()[prom_addr] ^ 0xff;
|
||||
|
||||
UINT8 data = 0xff;
|
||||
|
||||
if (prom & ROM0)
|
||||
{
|
||||
data = m_rom->base()[offset & 0x3fff];
|
||||
@ -65,7 +65,7 @@ READ8_MEMBER( tiki100_state::read )
|
||||
|
||||
WRITE8_MEMBER( tiki100_state::write )
|
||||
{
|
||||
int mdis = 1;
|
||||
bool mdis = 1;
|
||||
offs_t prom_addr = mdis << 5 | m_vire << 4 | m_rome << 3 | (offset >> 13);
|
||||
UINT8 prom = m_prom->base()[prom_addr] ^ 0xff;
|
||||
|
||||
@ -80,6 +80,8 @@ WRITE8_MEMBER( tiki100_state::write )
|
||||
{
|
||||
m_ram->pointer()[offset] = data;
|
||||
}
|
||||
|
||||
m_exp->mrq_w(space, offset, data);
|
||||
}
|
||||
|
||||
/* Read/Write Handlers */
|
||||
@ -621,6 +623,13 @@ static MACHINE_CONFIG_START( tiki100, tiki100_state )
|
||||
MCFG_PALETTE_ADD("palette", 16)
|
||||
// pixel clock 20.01782 MHz
|
||||
|
||||
MCFG_TIKI100_BUS_ADD()
|
||||
//MCFG_TIKI100_BUS_IRQ_CALLBACK()
|
||||
//MCFG_TIKI100_BUS_NMI_CALLBACK()
|
||||
MCFG_TIKI100_BUS_SLOT_ADD("slot1", "8088")
|
||||
MCFG_TIKI100_BUS_SLOT_ADD("slot2", NULL)
|
||||
MCFG_TIKI100_BUS_SLOT_ADD("slot3", NULL)
|
||||
|
||||
/* devices */
|
||||
MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_8MHz/4, 0, 0, 0, 0 )
|
||||
MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd))
|
||||
@ -706,12 +715,6 @@ ROM_START( tiki100 )
|
||||
|
||||
ROM_REGION( 0x100, "u4", 0 )
|
||||
ROM_LOAD( "53ls140.u4", 0x000, 0x100, CRC(894b756f) SHA1(429e10de0e0e749246895801b18186ff514c12bc) )
|
||||
|
||||
ROM_REGION( 0x1000, "8088", 0 )
|
||||
ROM_LOAD( "boot 1.0.u3", 0x0000, 0x1000, CRC(436974aa) SHA1(837087b3ab982d047e4f15799fef3daa37dd6c01) )
|
||||
|
||||
ROM_REGION( 0x100, "8088_proms", 0 )
|
||||
ROM_LOAD( "53ls140.u26", 0x000, 0x100, CRC(fc5902e1) SHA1(afb9cb54ab6fc449e7544ddb3cbebc3770c4f937) )
|
||||
ROM_END
|
||||
|
||||
/* System Drivers */
|
||||
|
@ -5,9 +5,10 @@
|
||||
#ifndef __TIKI100__
|
||||
#define __TIKI100__
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "bus/rs232/rs232.h"
|
||||
#include "bus/tiki100/exp.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/z80/z80daisy.h"
|
||||
#include "formats/tiki100_dsk.h"
|
||||
@ -53,6 +54,7 @@ public:
|
||||
m_floppy1(*this, FD1797_TAG":1"),
|
||||
m_cassette(*this, CASSETTE_TAG),
|
||||
m_centronics(*this, CENTRONICS_TAG),
|
||||
m_exp(*this, TIKI100_BUS_TAG),
|
||||
m_rom(*this, Z80_TAG),
|
||||
m_prom(*this, "u4"),
|
||||
m_video_ram(*this, "video_ram"),
|
||||
@ -83,6 +85,7 @@ public:
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<tiki100_bus_t> m_exp;
|
||||
required_memory_region m_rom;
|
||||
required_memory_region m_prom;
|
||||
optional_shared_ptr<UINT8> m_video_ram;
|
||||
|
Loading…
Reference in New Issue
Block a user