mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
(MESS) horizon: WIP. (nw)
This commit is contained in:
parent
4c40273047
commit
53c85ca223
4
.gitattributes
vendored
4
.gitattributes
vendored
@ -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
|
||||
|
@ -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 )
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
121
src/mess/machine/s100_nsmdsa.c
Normal file
121
src/mess/machine/s100_nsmdsa.c
Normal 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;
|
||||
}
|
59
src/mess/machine/s100_nsmdsa.h
Normal file
59
src/mess/machine/s100_nsmdsa.h
Normal 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
|
123
src/mess/machine/s100_nsmdsad.c
Normal file
123
src/mess/machine/s100_nsmdsad.c
Normal 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;
|
||||
}
|
60
src/mess/machine/s100_nsmdsad.h
Normal file
60
src/mess/machine/s100_nsmdsad.h
Normal 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
|
@ -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
|
||||
|
@ -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 \
|
||||
|
Loading…
Reference in New Issue
Block a user