(MESS) horizon: WIP. (nw)

This commit is contained in:
Curt Coder 2013-05-19 20:50:40 +00:00
parent 4c40273047
commit 53c85ca223
12 changed files with 600 additions and 101 deletions

4
.gitattributes vendored
View File

@ -7645,6 +7645,10 @@ src/mess/machine/s100_djdma.c svneol=native#text/plain
src/mess/machine/s100_djdma.h svneol=native#text/plain
src/mess/machine/s100_mm65k16s.c svneol=native#text/plain
src/mess/machine/s100_mm65k16s.h svneol=native#text/plain
src/mess/machine/s100_nsmdsa.c svneol=native#text/plain
src/mess/machine/s100_nsmdsa.h svneol=native#text/plain
src/mess/machine/s100_nsmdsad.c svneol=native#text/plain
src/mess/machine/s100_nsmdsad.h svneol=native#text/plain
src/mess/machine/s100_wunderbus.c svneol=native#text/plain
src/mess/machine/s100_wunderbus.h svneol=native#text/plain
src/mess/machine/s1410.c svneol=native#text/plain

View File

@ -8,119 +8,273 @@
succesfully loaded. The memory range EA00-EB40 appears to be
used by devices, particularly the FDC.
http://www.hartetechnologies.com/manuals/Northstar/
****************************************************************************/
/*
TODO:
- connect to S-100 bus
- USARTs
- parallel I/O
- motherboard ports
- RTC
- RAM boards
- floppy boards
- floating point board
- SOROC IQ 120 CRT terminal
- NEC 5530-2 SPINWRITER printer
- Anadex DP-8000 printer
*/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/terminal.h"
#include "machine/i8251.h"
#include "machine/serial.h"
#include "machine/s100.h"
#include "machine/s100_nsmdsa.h"
#include "machine/s100_nsmdsad.h"
#define Z80_TAG "z80"
#define I8251_L_TAG "3a"
#define I8251_R_TAG "4a"
#define RS232_A_TAG "rs232a"
#define RS232_B_TAG "rs232b"
class horizon_state : public driver_device
{
public:
horizon_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_terminal(*this, TERMINAL_TAG)
m_maincpu(*this, Z80_TAG),
m_usart_l(*this, I8251_L_TAG),
m_usart_r(*this, I8251_L_TAG)
{ }
required_device<cpu_device> m_maincpu;
required_device<generic_terminal_device> m_terminal;
DECLARE_WRITE8_MEMBER( kbd_put );
//UINT8 m_term_data;
virtual void machine_reset();
DECLARE_MACHINE_RESET(horizon_sd);
required_device<i8251_device> m_usart_l;
required_device<i8251_device> m_usart_r;
};
static ADDRESS_MAP_START(horizon_mem, AS_PROGRAM, 8, horizon_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0xe7ff) AM_RAM
AM_RANGE(0xe800, 0xe8ff) AM_ROM
AM_RANGE(0xec00, 0xffff) AM_RAM
//**************************************************************************
// ADDRESS MAPS
//**************************************************************************
//-------------------------------------------------
// ADDRESS_MAP( horizon_mem )
//-------------------------------------------------
static ADDRESS_MAP_START( horizon_mem, AS_PROGRAM, 8, horizon_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START(horizon_io, AS_IO, 8, horizon_state)
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
//-------------------------------------------------
// ADDRESS_MAP( horizon_io )
//-------------------------------------------------
static ADDRESS_MAP_START( horizon_io, AS_IO, 8, horizon_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START(horizon_sd_mem, AS_PROGRAM, 8, horizon_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0xe8ff) AM_RAM
AM_RANGE(0xe900, 0xe9ff) AM_ROM
AM_RANGE(0xec00, 0xffff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START(horizon_sd_io, AS_IO, 8, horizon_state)
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
ADDRESS_MAP_END
/* Input ports */
//**************************************************************************
// INPUT PORTS
//**************************************************************************
//-------------------------------------------------
// INPUT_PORTS( sage2 )
//-------------------------------------------------
static INPUT_PORTS_START( horizon )
INPUT_PORTS_END
void horizon_state::machine_reset()
{
m_maincpu->set_state_int(Z80_PC, 0xe800);
}
MACHINE_RESET_MEMBER(horizon_state,horizon_sd)
{
m_maincpu->set_state_int(Z80_PC, 0xe900);
}
//**************************************************************************
// DEVICE CONFIGURATION
//**************************************************************************
WRITE8_MEMBER( horizon_state::kbd_put )
{
}
//-------------------------------------------------
// i8251_interface usart_l_intf
//-------------------------------------------------
static GENERIC_TERMINAL_INTERFACE( terminal_intf )
static const i8251_interface usart_l_intf =
{
DEVCB_DRIVER_MEMBER(horizon_state, kbd_put)
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
//-------------------------------------------------
// i8251_interface usart_r_intf
//-------------------------------------------------
static const i8251_interface usart_r_intf =
{
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
//-------------------------------------------------
// rs232_port_interface rs232a_intf
//-------------------------------------------------
static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x06 ) // 9600
DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x00 ) // 8N1
DEVICE_INPUT_DEFAULTS_END
static const rs232_port_interface rs232a_intf =
{
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
//-------------------------------------------------
// rs232_port_interface rs232b_intf
//-------------------------------------------------
static const rs232_port_interface rs232b_intf =
{
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
//-------------------------------------------------
// S100_INTERFACE( s100_intf )
//-------------------------------------------------
static SLOT_INTERFACE_START( horizon_s100_cards )
SLOT_INTERFACE("mdsa", S100_MDS_A)
SLOT_INTERFACE("mdsad", S100_MDS_AD)
//SLOT_INTERFACE("hram", S100_HRAM)
//SLOT_INTERFACE("ram32a", S100_RAM32A)
//SLOT_INTERFACE("ram16a", S100_RAM16A)
//SLOT_INTERFACE("fpb", S100_FPB)
SLOT_INTERFACE_END
static S100_INTERFACE( s100_intf )
{
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_CPU_INPUT_LINE(Z80_TAG, Z80_INPUT_LINE_WAIT),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
//**************************************************************************
// MACHINE DRIVERS
//**************************************************************************
//-------------------------------------------------
// MACHINE_CONFIG( horizon )
//-------------------------------------------------
static MACHINE_CONFIG_START( horizon, horizon_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz)
// basic machine hardware
MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(horizon_mem)
MCFG_CPU_IO_MAP(horizon_io)
// devices
MCFG_I8251_ADD(I8251_L_TAG, usart_l_intf)
MCFG_I8251_ADD(I8251_R_TAG, usart_r_intf)
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal", terminal)
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL, NULL)
/* video hardware */
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
// S-100
MCFG_S100_BUS_ADD(s100_intf)
//MCFG_S100_SLOT_ADD("s100_1", horizon_s100_cards, NULL, NULL) // CPU
MCFG_S100_SLOT_ADD("s100_2", horizon_s100_cards, NULL, NULL) // RAM
MCFG_S100_SLOT_ADD("s100_3", horizon_s100_cards, "mdsad", NULL) // MDS
MCFG_S100_SLOT_ADD("s100_4", horizon_s100_cards, NULL, NULL) // FPB
MCFG_S100_SLOT_ADD("s100_5", horizon_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_6", horizon_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_7", horizon_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_8", horizon_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_9", horizon_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_10", horizon_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_11", horizon_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_12", horizon_s100_cards, NULL, NULL)
// software list
MCFG_SOFTWARE_LIST_ADD("flop_list", "horizon")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( horizsd, horizon )
MCFG_CPU_MODIFY( "maincpu" )
MCFG_CPU_PROGRAM_MAP( horizon_sd_mem)
MCFG_CPU_IO_MAP(horizon_sd_io)
MCFG_MACHINE_RESET_OVERRIDE(horizon_state,horizon_sd)
MACHINE_CONFIG_END
/* ROM definition */
ROM_START( horizdd )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "horizon.bin", 0xe800, 0x0100, CRC(7aafa134) SHA1(bf1552c4818f30473798af4f54e65e1957e0db48))
//**************************************************************************
// ROMS
//**************************************************************************
//-------------------------------------------------
// ROM( horizon )
//-------------------------------------------------
ROM_START( horizon )
ROM_REGION( 0x400, Z80_TAG, 0 )
ROM_LOAD( "option.prom", 0x000, 0x400, NO_DUMP )
ROM_END
ROM_START( horizsd )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "horizon-sd.bin", 0xe900, 0x0100, CRC(754e53e5) SHA1(875e42942d639b972252b87d86c3dc2133304967))
ROM_END
//-------------------------------------------------
// ROM( vector1 )
//-------------------------------------------------
ROM_START( vector1 ) // This one have different I/O
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
ROM_REGION( 0x10000, Z80_TAG, ROMREGION_ERASEFF )
ROM_LOAD( "horizon.bin", 0xe800, 0x0100, CRC(7aafa134) SHA1(bf1552c4818f30473798af4f54e65e1957e0db48))
ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1979, horizdd, 0, 0, horizon, horizon, driver_device, 0, "NorthStar", "Horizon (DD drive)", GAME_NOT_WORKING | GAME_NO_SOUND)
COMP( 1979, horizsd, horizdd, 0, horizsd, horizon, driver_device, 0, "NorthStar", "Horizon (SD drive)", GAME_NOT_WORKING | GAME_NO_SOUND)
COMP( 1979, vector1, horizdd, 0, horizon, horizon, driver_device, 0, "Vector Graphic", "Vector 1+ (DD drive)", GAME_NOT_WORKING | GAME_NO_SOUND)
//**************************************************************************
// SYSTEM DRIVERS
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
COMP( 1976, horizon, 0, 0, horizon, horizon, driver_device, 0, "North Star Computers", "Horizon", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
COMP( 1979, vector1, horizon, 0, horizon, horizon, driver_device, 0, "Vector Graphic", "Vector 1+ (DD drive)", GAME_NOT_WORKING | GAME_NO_SOUND_HW )

View File

@ -739,7 +739,7 @@ static MACHINE_CONFIG_START( mpz80, mpz80_state )
MCFG_CPU_IO_MAP(mpz80_io)
// S-100
MCFG_S100_BUS_ADD(Z80_TAG, s100_intf)
MCFG_S100_BUS_ADD(s100_intf)
MCFG_S100_SLOT_ADD("s100_1", mpz80_s100_cards, "mm65k16s", NULL)
MCFG_S100_SLOT_ADD("s100_2", mpz80_s100_cards, "wunderbus", NULL)
MCFG_S100_SLOT_ADD("s100_3", mpz80_s100_cards, "dj2db", NULL)

View File

@ -616,7 +616,7 @@ static MACHINE_CONFIG_START( xor100, xor100_state )
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, "serial_terminal", terminal)
// S-100
MCFG_S100_BUS_ADD(Z80_TAG, s100_intf)
MCFG_S100_BUS_ADD(s100_intf)
MCFG_S100_SLOT_ADD("s100_1", xor100_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_2", xor100_s100_cards, NULL, NULL)
MCFG_S100_SLOT_ADD("s100_3", xor100_s100_cards, NULL, NULL)

View File

@ -31,12 +31,6 @@ s100_slot_device::s100_slot_device(const machine_config &mconfig, const char *ta
{
}
void s100_slot_device::static_set_s100_slot(device_t &device, const char *tag)
{
s100_slot_device &s100_card = dynamic_cast<s100_slot_device &>(device);
s100_card.m_bus_tag = tag;
}
//-------------------------------------------------
// device_start - device-specific startup
@ -44,7 +38,7 @@ void s100_slot_device::static_set_s100_slot(device_t &device, const char *tag)
void s100_slot_device::device_start()
{
m_bus = machine().device<s100_device>(m_bus_tag);
m_bus = machine().device<s100_device>(S100_TAG);
device_s100_card_interface *dev = dynamic_cast<device_s100_card_interface *>(get_card_device());
if (dev) m_bus->add_s100_card(dev);
}
@ -58,13 +52,6 @@ void s100_slot_device::device_start()
const device_type S100 = &device_creator<s100_device>;
void s100_device::static_set_cputag(device_t &device, const char *tag)
{
s100_device &s100 = downcast<s100_device &>(device);
s100.m_cputag = tag;
}
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
@ -126,8 +113,6 @@ s100_device::s100_device(const machine_config &mconfig, const char *tag, device_
void s100_device::device_start()
{
m_maincpu = machine().device<cpu_device>(m_cputag);
// resolve callbacks
m_out_int_func.resolve(m_out_int_cb, *this);
m_out_nmi_func.resolve(m_out_nmi_cb, *this);

View File

@ -81,10 +81,10 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_S100_BUS_ADD(_cpu_tag, _config) \
#define MCFG_S100_BUS_ADD(_config) \
MCFG_DEVICE_ADD(S100_TAG, S100, 0) \
MCFG_DEVICE_CONFIG(_config) \
s100_device::static_set_cputag(*device, _cpu_tag);
MCFG_DEVICE_CONFIG(_config)
#define S100_INTERFACE(_name) \
const s100_bus_interface (_name) =
@ -92,8 +92,8 @@
#define MCFG_S100_SLOT_ADD(_tag, _slot_intf, _def_slot, _def_inp) \
MCFG_DEVICE_ADD(_tag, S100_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false) \
s100_slot_device::static_set_s100_slot(*device, S100_TAG);
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false)
//**************************************************************************
@ -114,12 +114,7 @@ public:
// device-level overrides
virtual void device_start();
// inline configuration
static void static_set_s100_slot(device_t &device, const char *tag);
private:
// configuration
const char *m_bus_tag;
s100_device *m_bus;
};
@ -163,8 +158,6 @@ class s100_device : public device_t,
public:
// construction/destruction
s100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
void add_s100_card(device_s100_card_interface *card);
@ -203,9 +196,6 @@ protected:
virtual void device_config_complete();
private:
// internal state
cpu_device *m_maincpu;
devcb_resolved_write_line m_out_int_func;
devcb_resolved_write_line m_out_nmi_func;
devcb_resolved_write_line m_out_vi0_func;
@ -226,7 +216,6 @@ private:
devcb_resolved_write8 m_out_terminal_func;
simple_list<device_s100_card_interface> m_device_list;
const char *m_cputag;
};

View File

@ -0,0 +1,121 @@
/**********************************************************************
North Star MICRO-DISK System MDS-A (Single Density) emulation
Copyright MESS Team.
Visit http://mamedev.org for licensing and usage restrictions.
**********************************************************************/
#include "s100_nsmdsa.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
const device_type S100_MDS_A = &device_creator<s100_mds_a_device>;
//-------------------------------------------------
// ROM( mds_a )
//-------------------------------------------------
ROM_START( mds_a )
ROM_REGION( 0x100, "psel", 0 )
ROM_LOAD( "psel.7g", 0x000, 0x100, NO_DUMP ) // 74S287
ROM_REGION( 0x100, "pgm", 0 )
ROM_LOAD( "pgml.3f", 0x000, 0x100, NO_DUMP ) // 74S287
ROM_LOAD( "pgmr.3e", 0x000, 0x100, NO_DUMP ) // 74S287
ROM_LOAD( "horizon.bin", 0x000, 0x100, CRC(754e53e5) SHA1(875e42942d639b972252b87d86c3dc2133304967) BAD_DUMP )
ROM_END
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
const rom_entry *s100_mds_a_device::device_rom_region() const
{
return ROM_NAME( mds_a );
}
//-------------------------------------------------
// SLOT_INTERFACE( mds_a_floppies )
//-------------------------------------------------
static SLOT_INTERFACE_START( mds_a_floppies )
SLOT_INTERFACE( "525sd", FLOPPY_525_SD ) // Shugart SA-400
SLOT_INTERFACE_END
//-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( mds_a )
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( mds_a )
MCFG_FLOPPY_DRIVE_ADD("floppy0", mds_a_floppies, "525sd", NULL, floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("floppy1", mds_a_floppies, "525sd", NULL, floppy_image_device::default_floppy_formats)
MACHINE_CONFIG_END
//-------------------------------------------------
// machine_config_additions - device-specific
// machine configurations
//-------------------------------------------------
machine_config_constructor s100_mds_a_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( mds_a );
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// s100_mds_a_device - constructor
//-------------------------------------------------
s100_mds_a_device::s100_mds_a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, S100_MDS_A, "MDS-A", tag, owner, clock, "nsmdsa", __FILE__),
device_s100_card_interface(mconfig, *this),
m_floppy0(*this, "floppy0"),
m_floppy1(*this, "floppy1"),
m_psel_rom(*this, "psel"),
m_pgm_rom(*this, "pgm")
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void s100_mds_a_device::device_start()
{
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void s100_mds_a_device::device_reset()
{
}
//-------------------------------------------------
// s100_smemr_r - memory read
//-------------------------------------------------
UINT8 s100_mds_a_device::s100_smemr_r(address_space &space, offs_t offset)
{
return 0;
}

View File

@ -0,0 +1,59 @@
/**********************************************************************
North Star MICRO-DISK System MDS-A (Single Density) emulation
Copyright MESS Team.
Visit http://mamedev.org for licensing and usage restrictions.
**********************************************************************/
#pragma once
#ifndef __S100_MDS_A__
#define __S100_MDS_A__
#include "emu.h"
#include "imagedev/floppy.h"
#include "machine/s100.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> s100_mds_a_device
class s100_mds_a_device : public device_t,
public device_s100_card_interface
{
public:
// construction/destruction
s100_mds_a_device(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;
protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
// device_s100_card_interface overrides
virtual UINT8 s100_smemr_r(address_space &space, offs_t offset);
private:
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_memory_region m_psel_rom;
required_memory_region m_pgm_rom;
};
// device type definition
extern const device_type S100_MDS_A;
#endif

View File

@ -0,0 +1,123 @@
/**********************************************************************
North Star MICRO-DISK System MDS-A-D (Double Density) emulation
Copyright MESS Team.
Visit http://mamedev.org for licensing and usage restrictions.
**********************************************************************/
#include "s100_nsmdsad.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
const device_type S100_MDS_AD = &device_creator<s100_mds_ad_device>;
//-------------------------------------------------
// ROM( mds_ad )
//-------------------------------------------------
ROM_START( mds_ad )
ROM_REGION( 0x100, "dsel", 0 )
ROM_LOAD( "dsel.11c", 0x000, 0x100, NO_DUMP ) // 82S129
ROM_REGION( 0x100, "dpgm", 0 )
ROM_LOAD( "dpgm.9d", 0x000, 0x100, CRC(7aafa134) SHA1(bf1552c4818f30473798af4f54e65e1957e0db48) )
ROM_REGION( 0x100, "dwe", 0 )
ROM_LOAD( "dwe.4c", 0x000, 0x100, NO_DUMP ) // 82S129
ROM_END
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
const rom_entry *s100_mds_ad_device::device_rom_region() const
{
return ROM_NAME( mds_ad );
}
//-------------------------------------------------
// SLOT_INTERFACE( mds_ad_floppies )
//-------------------------------------------------
static SLOT_INTERFACE_START( mds_ad_floppies )
SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) // Shugart SA-400
SLOT_INTERFACE_END
//-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( mds_ad )
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( mds_ad )
MCFG_FLOPPY_DRIVE_ADD("floppy0", mds_ad_floppies, "525dd", NULL, floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("floppy1", mds_ad_floppies, "525dd", NULL, floppy_image_device::default_floppy_formats)
MACHINE_CONFIG_END
//-------------------------------------------------
// machine_config_additions - device-specific
// machine configurations
//-------------------------------------------------
machine_config_constructor s100_mds_ad_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( mds_ad );
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// s100_mds_ad_device - constructor
//-------------------------------------------------
s100_mds_ad_device::s100_mds_ad_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, S100_MDS_AD, "MDS-A-D", tag, owner, clock, "nsmdsad", __FILE__),
device_s100_card_interface(mconfig, *this),
m_floppy0(*this, "floppy0"),
m_floppy1(*this, "floppy1"),
m_dsel_rom(*this, "dsel"),
m_dpgm_rom(*this, "dpgm"),
m_dwe_rom(*this, "dwe")
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void s100_mds_ad_device::device_start()
{
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void s100_mds_ad_device::device_reset()
{
}
//-------------------------------------------------
// s100_smemr_r - memory read
//-------------------------------------------------
UINT8 s100_mds_ad_device::s100_smemr_r(address_space &space, offs_t offset)
{
return 0;
}

View File

@ -0,0 +1,60 @@
/**********************************************************************
North Star MICRO-DISK System MDS-A-D (Double Density) emulation
Copyright MESS Team.
Visit http://mamedev.org for licensing and usage restrictions.
**********************************************************************/
#pragma once
#ifndef __S100_MDS_AD__
#define __S100_MDS_AD__
#include "emu.h"
#include "imagedev/floppy.h"
#include "machine/s100.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> s100_mds_ad_device
class s100_mds_ad_device : public device_t,
public device_s100_card_interface
{
public:
// construction/destruction
s100_mds_ad_device(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;
protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
// device_s100_card_interface overrides
virtual UINT8 s100_smemr_r(address_space &space, offs_t offset);
private:
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_memory_region m_dsel_rom;
required_memory_region m_dpgm_rom;
required_memory_region m_dwe_rom;
};
// device type definition
extern const device_type S100_MDS_AD;
#endif

View File

@ -2012,8 +2012,7 @@ pro80
pimps
sage2
zexall // zexall z80 test suite with kevtris' preloader/serial interface at 0000-00ff
horizdd
horizsd
horizon
vector1
tricep
indiana

View File

@ -351,6 +351,7 @@ DRVLIBS += \
$(MESSOBJ)/next.a \
$(MESSOBJ)/nintendo.a \
$(MESSOBJ)/nokia.a \
$(MESSOBJ)/northstar.a \
$(MESSOBJ)/novag.a \
$(MESSOBJ)/olivetti.a \
$(MESSOBJ)/omnibyte.a \
@ -1480,6 +1481,11 @@ $(MESSOBJ)/nokia.a: \
$(MESS_DRIVERS)/mikromik.o \
$(MESS_VIDEO)/mikromik.o \
$(MESSOBJ)/northstar.a: \
$(MESS_DRIVERS)/horizon.o \
$(MESS_MACHINE)/s100_nsmdsa.o \
$(MESS_MACHINE)/s100_nsmdsad.o \
$(MESSOBJ)/novag.a: \
$(MESS_DRIVERS)/mk1.o \
$(MESS_DRIVERS)/mk2.o \
@ -2112,7 +2118,6 @@ $(MESSOBJ)/skeleton.a: \
$(MESS_DRIVERS)/eti660.o \
$(MESS_DRIVERS)/fk1.o \
$(MESS_DRIVERS)/fidelz80.o \
$(MESS_DRIVERS)/horizon.o \
$(MESS_DRIVERS)/hpz80unk.o \
$(MESS_DRIVERS)/ht68k.o \
$(MESS_DRIVERS)/ie15.o \