abc800: Added skeleton for Databoard 4112-23 floppy disk controller. [Curt Coder]

This commit is contained in:
Curt Coder 2017-10-04 21:21:28 +03:00
parent 4e440057dc
commit fa612073a6
4 changed files with 273 additions and 0 deletions

View File

@ -66,6 +66,8 @@ if (BUSES["ABCBUS"]~=null) then
MAME_DIR .. "src/devices/bus/abcbus/abcbus.h",
MAME_DIR .. "src/devices/bus/abcbus/abc890.cpp",
MAME_DIR .. "src/devices/bus/abcbus/abc890.h",
MAME_DIR .. "src/devices/bus/abcbus/db411223.cpp",
MAME_DIR .. "src/devices/bus/abcbus/db411223.h",
MAME_DIR .. "src/devices/bus/abcbus/fd2.cpp",
MAME_DIR .. "src/devices/bus/abcbus/fd2.h",
MAME_DIR .. "src/devices/bus/abcbus/hdc.cpp",

View File

@ -80,6 +80,7 @@ void abcbus_slot_device::device_start()
// slot devices
#include "abc890.h"
#include "db411223.h"
#include "fd2.h"
#include "hdc.h"
#include "lux10828.h"
@ -106,6 +107,7 @@ SLOT_INTERFACE_START( abc80_cards )
SLOT_INTERFACE("16k", ABC80_16KB_RAM_CARD)
SLOT_INTERFACE("slow", LUXOR_55_10828)
SLOT_INTERFACE("abc830", ABC830)
SLOT_INTERFACE("db411223", DATABOARD_4112_23)
SLOT_INTERFACE("unidisk", UNIDISK)
SLOT_INTERFACE_END
@ -125,6 +127,7 @@ SLOT_INTERFACE_START( abcbus_cards )
SLOT_INTERFACE("abc856", ABC856)
SLOT_INTERFACE("abc890", ABC890)
SLOT_INTERFACE("abc894", ABC894)
SLOT_INTERFACE("db411223", DATABOARD_4112_23)
SLOT_INTERFACE("hdc", ABC_HDC)
SLOT_INTERFACE("sio", ABC_SIO)
SLOT_INTERFACE("slow", LUXOR_55_10828)

View File

@ -0,0 +1,208 @@
// license:BSD-3-Clause
// copyright-holders:Curt Coder
/**********************************************************************
Databoard 4112-23 floppy disk controller emulation
*********************************************************************/
#include "emu.h"
#include "db411223.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
#define Z80_TAG "maincpu"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE(DATABOARD_4112_23, databoard_4112_23_t, "db411223", "Databoard 4112-23")
//-------------------------------------------------
// ROM( databoard_4112_23 )
//-------------------------------------------------
ROM_START( databoard_4112_23 )
ROM_REGION( 0x2000, Z80_TAG, 0 )
ROM_LOAD("fpy_int_4112-23_teac_fd55.bin", 0x0000, 0x2000, CRC(9175ceb8) SHA1(95c150d3152df318abd9267915d5669d2ec33895))
ROM_END
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
const tiny_rom_entry *databoard_4112_23_t::device_rom_region() const
{
return ROM_NAME( databoard_4112_23 );
}
//-------------------------------------------------
// ADDRESS_MAP( databoard_4112_23_mem )
//-------------------------------------------------
static ADDRESS_MAP_START( databoard_4112_23_mem, AS_PROGRAM, 8, databoard_4112_23_t )
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION(Z80_TAG, 0)
ADDRESS_MAP_END
//-------------------------------------------------
// ADDRESS_MAP( databoard_4112_23_io )
//-------------------------------------------------
static ADDRESS_MAP_START( databoard_4112_23_io, AS_IO, 8, databoard_4112_23_t )
ADDRESS_MAP_END
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
MACHINE_CONFIG_MEMBER( databoard_4112_23_t::device_add_mconfig )
MCFG_CPU_ADD(Z80_TAG, Z80, 4000000)
MCFG_CPU_PROGRAM_MAP(databoard_4112_23_mem)
MCFG_CPU_IO_MAP(databoard_4112_23_io)
MACHINE_CONFIG_END
//-------------------------------------------------
// INPUT_PORTS( databoard_4112_23 )
//-------------------------------------------------
INPUT_PORTS_START( databoard_4112_23 )
INPUT_PORTS_END
//-------------------------------------------------
// input_ports - device-specific input ports
//-------------------------------------------------
ioport_constructor databoard_4112_23_t::device_input_ports() const
{
return INPUT_PORTS_NAME( databoard_4112_23 );
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// databoard_4112_23_t - constructor
//-------------------------------------------------
databoard_4112_23_t::databoard_4112_23_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, DATABOARD_4112_23, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG)
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void databoard_4112_23_t::device_start()
{
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void databoard_4112_23_t::device_reset()
{
m_cs = false;
}
//**************************************************************************
// ABC BUS INTERFACE
//**************************************************************************
//-------------------------------------------------
// abcbus_cs -
//-------------------------------------------------
void databoard_4112_23_t::abcbus_cs(uint8_t data)
{
}
//-------------------------------------------------
// abcbus_stat -
//-------------------------------------------------
uint8_t databoard_4112_23_t::abcbus_stat()
{
uint8_t data = 0xff;
if (m_cs)
{
}
return data;
}
//-------------------------------------------------
// abcbus_inp -
//-------------------------------------------------
uint8_t databoard_4112_23_t::abcbus_inp()
{
uint8_t data = 0xff;
if (m_cs)
{
}
return data;
}
//-------------------------------------------------
// abcbus_out -
//-------------------------------------------------
void databoard_4112_23_t::abcbus_out(uint8_t data)
{
if (!m_cs) return;
}
//-------------------------------------------------
// abcbus_c1 -
//-------------------------------------------------
void databoard_4112_23_t::abcbus_c1(uint8_t data)
{
if (m_cs)
{
}
}
//-------------------------------------------------
// abcbus_c3 -
//-------------------------------------------------
void databoard_4112_23_t::abcbus_c3(uint8_t data)
{
if (m_cs)
{
m_maincpu->reset();
}
}

View File

@ -0,0 +1,60 @@
// license:BSD-3-Clause
// copyright-holders:Curt Coder
/**********************************************************************
Databoard 4112-23 floppy disk controller emulation
*********************************************************************/
#ifndef MAME_BUS_ABCBUS_DATABOARD_4112_23_H
#define MAME_BUS_ABCBUS_DATABOARD_4112_23_H
#pragma once
#include "abcbus.h"
#include "cpu/z80/z80.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> databoard_4112_23_t
class databoard_4112_23_t : public device_t,
public device_abcbus_card_interface
{
public:
// construction/destruction
databoard_4112_23_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
virtual void device_add_mconfig(machine_config &config) override;
virtual ioport_constructor device_input_ports() const override;
// device_abcbus_interface overrides
virtual void abcbus_cs(uint8_t data) override;
virtual uint8_t abcbus_inp() override;
virtual void abcbus_out(uint8_t data) override;
virtual uint8_t abcbus_stat() override;
virtual void abcbus_c1(uint8_t data) override;
virtual void abcbus_c3(uint8_t data) override;
private:
required_device<cpu_device> m_maincpu;
bool m_cs;
};
// device type definition
DECLARE_DEVICE_TYPE(DATABOARD_4112_23, databoard_4112_23_t)
#endif // MAME_BUS_ABCBUS_DATABOARD_4112_23_H