New machines marked as NOT_WORKING

----------------------------------
Iskra Delta Partner [Jernej Jakob]

sfrj/idpartner.cpp : Added bus connector and split GDP into separate card [Miodrag Milanovic]
This commit is contained in:
Miodrag Milanovic 2024-02-11 14:45:03 +01:00
parent 6755bdfea9
commit 6aa0c208da
7 changed files with 465 additions and 70 deletions

View File

@ -1510,6 +1510,20 @@ if (BUSES["HEXBUS"]~=null) then
}
end
---------------------------------------------------
--
--@src/devices/bus/idpartner/bus.h,BUSES["IDPARTNER"] = true
---------------------------------------------------
if (BUSES["IDPARTNER"]~=null) then
files {
MAME_DIR .. "src/devices/bus/idpartner/bus.cpp",
MAME_DIR .. "src/devices/bus/idpartner/bus.h",
MAME_DIR .. "src/devices/bus/idpartner/gdp.cpp",
MAME_DIR .. "src/devices/bus/idpartner/gdp.h",
}
end
---------------------------------------------------
--
--@src/devices/bus/ieee488/ieee488.h,BUSES["IEEE488"] = true

View File

@ -0,0 +1,84 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
/**********************************************************************
Iskra Delta Partner Bus
**********************************************************************/
#include "emu.h"
#include "bus.h"
DEFINE_DEVICE_TYPE(IDPARTNER_BUS, bus::idpartner::bus_device, "idpartner_bus_device", "Iskra Delta Partner Bus")
DEFINE_DEVICE_TYPE(IDPARTNER_BUS_CONNECTOR, bus::idpartner::bus_connector_device, "idpartner_bus_connector", "Iskra Delta Partner Bus Connector")
namespace bus::idpartner {
/***********************************************************************
CARD INTERFACE
***********************************************************************/
device_exp_card_interface::device_exp_card_interface(const machine_config &mconfig, device_t &device)
: device_interface(device, "idpartner_card")
, m_bus(nullptr)
{
}
/***********************************************************************
SLOT DEVICE
***********************************************************************/
bus_connector_device::bus_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, IDPARTNER_BUS_CONNECTOR, tag, owner, clock)
, device_single_card_slot_interface<device_exp_card_interface>(mconfig, *this)
, m_bus(*this, finder_base::DUMMY_TAG)
{
}
/*----------------------------------
device_t implementation
----------------------------------*/
void bus_connector_device::device_resolve_objects()
{
device_exp_card_interface *const exp_card = get_card_device();
if (exp_card)
exp_card->set_bus(m_bus);
}
void bus_connector_device::device_start()
{
}
/***********************************************************************
BUS DEVICE
***********************************************************************/
bus_device::bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, IDPARTNER_BUS, tag, owner, clock)
, m_io(*this, finder_base::DUMMY_TAG, -1)
, m_int_handler(*this)
, m_nmi_handler(*this)
{
}
/*----------------------------------
device_t implementation
----------------------------------*/
void bus_device::device_start()
{
}
void bus_device::device_reset()
{
}
} // namespace bus::idpartner
#include "gdp.h"
void idpartner_exp_devices(device_slot_interface &device)
{
device.option_add("gdp", IDPARTNER_GDP);
}

View File

@ -0,0 +1,138 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
/*********************************************************************
Iskra Delta Partner BUS
**********************************************************************
Pinout:
*********
GND 1 * . | . * 1 GND
GND 2 * . | . * 2 GND
-12V 3 * . | . * 3 -12V
+5V 4 * . | . * 4 +5V
+5V 5 * . | . * 5 +5V
+12V 6 * . | . * 6 +12V
NC 7 * . | . * 7 NC
NC 8 * . | . * 8 IEDB
/BUSACKB 9 * . | . * 9 /DMARQ
NC 10 * . | . * 10 NC
/RESETB 11 * . | . * 11 NC
NC 12 * . | . * 12 /M1B
/MREQB 13 * . | . * 13 /NMI
NC 14 * . | . * 14 /BUSRQ
/INTB 15 * . | . * 15 /HALTB
/WAITB 16 * . | . * 16 /RDB
phiB 17 * . | . * 17 A0B
/IORQB 18 * . | . * 18 A1B
/WTB 19 * . | . * 19 A2B
/RFSHB 20 * . | . * 20 A3B
NC 21 * . | . * 21 A4B
/BINB 22 * . | . * 22 A5B
NC 23 * . | . * 23 A6B
NC 24 * . | . * 24 A7B
/D0B 25 * . | . * 25 NC
/D1B 26 * . | . * 26 NC
/D2B 27 * . | . * 27 NC
/D3B 28 * . | . * 28 NC
/D4B 29 * . | . * 29 NC
/D5B 30 * . | . * 30 NC
/D6B 31 * . | . * 31 NC
/D7B 32 * . | . * 32 NC
*********
**********************************************************************/
#ifndef MAME_BUS_IDPARTNER_BUS_H
#define MAME_BUS_IDPARTNER_BUS_H
#pragma once
namespace bus::idpartner {
class bus_device;
class device_exp_card_interface;
class bus_connector_device : public device_t, public device_single_card_slot_interface<device_exp_card_interface>
{
public:
// construction/destruction
template <typename T, typename U>
bus_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&bus_tag, U &&opts, const char *dflt)
: bus_connector_device(mconfig, tag, owner)
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
m_bus.set_tag(std::forward<T>(bus_tag));
}
bus_connector_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock = 0);
protected:
// device_t implementation
virtual void device_resolve_objects() override;
virtual void device_start() override;
// configuration
required_device<bus_device> m_bus;
};
class bus_device : public device_t
{
public:
// construction/destruction
bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
template <typename T> void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward<T>(tag), spacenum); }
// callbacks
auto int_handler() { return m_int_handler.bind(); }
auto nmi_handler() { return m_nmi_handler.bind(); }
// called from expansion device
void int_w(int state) { m_int_handler(state); }
void nmi_w(int state) { m_nmi_handler(state); }
address_space &io() { return *m_io; }
private:
// device_t implementation
virtual void device_start() override;
virtual void device_reset() override;
// internal state
required_address_space m_io;
devcb_write_line m_int_handler;
devcb_write_line m_nmi_handler;
};
// ======================> device_exp_card_interface
class device_exp_card_interface : public device_interface
{
protected:
// construction/destruction
device_exp_card_interface(const machine_config &mconfig, device_t &device);
public:
// inline configuration
void set_bus(bus_device *bus) { m_bus = bus; }
protected:
bus_device *m_bus;
};
} // namespace bus::idpartner
DECLARE_DEVICE_TYPE_NS(IDPARTNER_BUS, bus::idpartner, bus_device)
DECLARE_DEVICE_TYPE_NS(IDPARTNER_BUS_CONNECTOR, bus::idpartner, bus_connector_device)
void idpartner_exp_devices(device_slot_interface &device);
#endif // MAME_BUS_IDPARTNER_BUS_H

View File

@ -0,0 +1,124 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
/**********************************************************************
Iskra Delta GDP Card
**********************************************************************/
#include "emu.h"
#include "gdp.h"
#include "machine/z80pio.h"
#include "video/ef9365.h"
#include "video/scn2674.h"
#include "screen.h"
namespace {
class idpartner_gdp_device :
public device_t,
public bus::idpartner::device_exp_card_interface
{
public:
// construction/destruction
idpartner_gdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
// device_t implementation
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
private:
void char_w(u8 data);
void attr_w(u8 data);
void scroll_w(u8 data);
void gdc_map(address_map &map);
void int_w(int state) { m_bus->int_w(state); }
void nmi_w(int state) { m_bus->nmi_w(state); }
required_device<ef9365_device> m_gdc;
//required_device<scn2674_device> m_avdc;
required_device<z80pio_device> m_pio;
};
idpartner_gdp_device::idpartner_gdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, IDPARTNER_GDP, tag, owner, clock)
, bus::idpartner::device_exp_card_interface(mconfig, *this)
, m_gdc(*this, "gdc")
//, m_avdc(*this, "avdc")
, m_pio(*this, "pio")
{
}
/*----------------------------------
device_t implementation
----------------------------------*/
void idpartner_gdp_device::device_start()
{
}
void idpartner_gdp_device::device_reset()
{
m_bus->io().install_read_handler (0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_r))); // Thomson GDP EF9367
m_bus->io().install_write_handler(0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_w))); // Thomson GDP EF9367
m_bus->io().install_read_handler (0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::read_alt))); // PIO - Graphics
m_bus->io().install_write_handler(0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::write_alt))); // PIO - Graphics
m_bus->io().install_write_handler(0x34, 0x34, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::char_w))); // char reg
m_bus->io().install_write_handler(0x35, 0x35, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::attr_w))); // attr reg
m_bus->io().install_write_handler(0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::scroll_w))); // scroll reg/common input
//map(0x38,0x3f).rw(m_avdc, FUNC(scn2674_device::read), FUNC(scn2674_device::write)); // AVDC SCN2674
}
void idpartner_gdp_device::char_w(u8 data)
{
//printf("char:%02x\n",data);
}
void idpartner_gdp_device::attr_w(u8 data)
{
//printf("attr:%02x\n",data);
}
void idpartner_gdp_device::scroll_w(u8 data)
{
//printf("scroll:%02x\n",data);
}
void idpartner_gdp_device::gdc_map(address_map &map)
{
map(0x0000, 0x1ffff).ram();
}
void idpartner_gdp_device::device_add_mconfig(machine_config &config)
{
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
screen.set_screen_update(m_gdc, FUNC(ef9365_device::screen_update));
screen.set_size(1024, 512);
screen.set_visarea(0, 1024-1, 0, 512-1);
screen.set_refresh_hz(25);
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
EF9365(config, m_gdc, XTAL(24'000'000) / 16); // EF9367 1.5 MHz
m_gdc->set_screen("screen");
m_gdc->set_addrmap(0, &idpartner_gdp_device::gdc_map);
m_gdc->set_palette_tag("palette");
m_gdc->set_nb_bitplanes(1);
m_gdc->set_display_mode(ef9365_device::DISPLAY_MODE_1024x512);
//SCN2674(config, m_avdc, XTAL(24'000'000) / 16); // SCN2674B
//m_avdc->set_screen("screen");
//m_avdc->set_character_width(12);
//m_avdc->intr_callback().set(FUNC(idpartner_gdp_device::nmi_w));
Z80PIO(config, m_pio, XTAL(8'000'000) / 2);
m_pio->out_int_callback().set(FUNC(idpartner_gdp_device::int_w));
}
} // anonymous namespace
DEFINE_DEVICE_TYPE_PRIVATE(IDPARTNER_GDP, bus::idpartner::device_exp_card_interface, idpartner_gdp_device, "gdp", "Iskra Delta Partner GDP")

View File

@ -0,0 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
#ifndef MAME_BUS_IDPARTNER_GDP_H
#define MAME_BUS_IDPARTNER_GDP_H
#pragma once
#include "bus.h"
DECLARE_DEVICE_TYPE_NS(IDPARTNER_GDP, bus::idpartner, device_exp_card_interface)
#endif // MAME_BUS_IDPARTNER_GDP_H

View File

@ -41073,6 +41073,7 @@ galeb //
hr84 //
@source:sfrj/idpartner.cpp
idpartner // Iskra Delta Partner
partner1fg // Iskra Delta Partner 1F/G
partnerwfg // Iskra Delta Partner WF/G

View File

@ -29,12 +29,10 @@
#include "machine/z80daisy_generic.h"
#include "machine/z80pio.h"
#include "machine/z80sio.h"
#include "video/ef9365.h"
#include "video/scn2674.h"
#include "bus/idpartner/bus.h"
#include "bus/rs232/rs232.h"
#include "imagedev/floppy.h"
#include "screen.h"
namespace {
@ -44,14 +42,15 @@ public:
idpartner_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_gdc(*this, "gdc")
//, m_avdc(*this, "avdc")
, m_pio_gdc(*this, "pio_gdc")
, m_bus(*this, "j2")
, m_conn(*this, "j2:%d", 0U)
, m_sio1(*this, "sio1")
, m_sio2(*this, "sio2")
, m_ctc(*this, "ctc")
, m_fdc(*this, "fdc")
, m_fdc_daisy(*this, "fdc_daisy")
, m_brg(*this, "brg")
, m_serial(*this, "serial_%d",0U)
, m_rom(*this, "maincpu")
, m_bankr0(*this, "bankr0")
, m_bankw0(*this, "bankw0")
@ -59,14 +58,17 @@ public:
, m_bank2(*this, "bank2")
{ }
void partner_base(machine_config &config);
void idpartner(machine_config &config);
void partner1fg(machine_config &config);
void partnerwfg(machine_config &config);
void machine_start() override;
void machine_reset() override;
private:
void io_map(address_map &map);
void mem_map(address_map &map);
void gdc_map(address_map &map);
void update_bank();
@ -76,9 +78,7 @@ private:
void bank1_w(u8 data) { m_bank = 0; update_bank(); }
u8 bank2_r() { m_bank = 1; update_bank(); return 0xff; }
void bank2_w(u8 data) { m_bank = 1; update_bank(); }
void char_w(u8 data);
void attr_w(u8 data);
void fdc_vector_w(u8 data) { m_fdc_daisy->set_vector(data); m_fdc_daisy->int_w(ASSERT_LINE); }
void fdc_vector_w(u8 data) { m_fdc_daisy->set_vector(data); }
void fdc_int_w(int state);
void write_f1_clock(int state);
@ -86,14 +86,15 @@ private:
bool m_rom_enabled;
required_device<z80_device> m_maincpu;
required_device<ef9365_device> m_gdc;
//required_device<scn2674_device> m_avdc;
required_device<z80pio_device> m_pio_gdc;
required_device<bus::idpartner::bus_device> m_bus;
required_device_array<bus::idpartner::bus_connector_device, 2> m_conn;
required_device<z80sio_device> m_sio1;
required_device<z80sio_device> m_sio2;
required_device<z80ctc_device> m_ctc;
required_device<i8272a_device> m_fdc;
required_device<z80daisy_generic_device> m_fdc_daisy;
required_device<mc14411_device> m_brg;
required_device_array<rs232_port_device,4> m_serial;
std::unique_ptr<u8[]> m_ram;
required_region_ptr<u8> m_rom;
required_memory_bank m_bankr0;
@ -102,16 +103,8 @@ private:
required_memory_bank m_bank2;
};
void idpartner_state::char_w(u8 data)
{
}
void idpartner_state::attr_w(u8 data)
{
}
void idpartner_state::fdc_int_w(int state)
{
m_fdc_daisy->mask_w(1);
m_fdc_daisy->int_w(state);
}
@ -167,12 +160,6 @@ void idpartner_state::io_map(address_map &map)
{
map.global_mask(0xff);
map.unmap_value_high();
map(0x20,0x2f).rw(m_gdc, FUNC(ef9365_device::data_r), FUNC(ef9365_device::data_w)); // Thomson GDP EF9367
map(0x30,0x33).rw(m_pio_gdc, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // PIO - Graphics
map(0x34,0x34).w(FUNC(idpartner_state::char_w)); // char reg
map(0x35,0x35).w(FUNC(idpartner_state::attr_w)); // attr reg
//map(0x36,0x36) // scroll reg/common input
//map(0x38,0x3f).rw(m_avdc, FUNC(scn2674_device::read), FUNC(scn2674_device::write)); // AVDC SCN2674
map(0x80,0x87).rw(FUNC(idpartner_state::rom_bank_r), FUNC(idpartner_state::rom_bank_w)); // ROM bank
map(0x88,0x8f).rw(FUNC(idpartner_state::bank1_r), FUNC(idpartner_state::bank1_w)); // RAM bank 1
map(0x90,0x97).rw(FUNC(idpartner_state::bank2_r), FUNC(idpartner_state::bank2_w)); // RAM bank 2
@ -192,24 +179,18 @@ void idpartner_state::io_map(address_map &map)
}
/* Input ports */
static INPUT_PORTS_START( partner1fg )
static INPUT_PORTS_START( idpartner )
INPUT_PORTS_END
static const z80_daisy_config daisy_chain[] =
{
{ "ctc" },
{ "sio1" },
{ "sio2" },
{ "ctc" },
{ "pio_gdc" },
{ "fdc_daisy" },
{ nullptr }
};
void idpartner_state::gdc_map(address_map &map)
{
map(0x0000, 0x1ffff).ram();
}
static void partner_floppies(device_slot_interface &device)
{
device.option_add("fdd", FLOPPY_525_DD);
@ -230,8 +211,16 @@ void idpartner_state::write_f1_clock(int state)
m_sio2->rxcb_w(state);
}
static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 )
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 )
DEVICE_INPUT_DEFAULTS( "RS232_DATABITS", 0xff, RS232_DATABITS_8 )
DEVICE_INPUT_DEFAULTS( "RS232_PARITY", 0xff, RS232_PARITY_NONE )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
/* Machine driver */
void idpartner_state::partner1fg(machine_config &config)
void idpartner_state::partner_base(machine_config &config)
{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(8'000'000) / 2);
@ -240,58 +229,90 @@ void idpartner_state::partner1fg(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &idpartner_state::io_map);
Z80SIO(config, m_sio1, XTAL(8'000'000) / 2);
m_sio1->out_txda_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
m_sio1->out_txdb_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
m_sio1->out_txda_callback().set(m_serial[0], FUNC(rs232_port_device::write_txd));
m_sio1->out_txdb_callback().set(m_serial[1], FUNC(rs232_port_device::write_txd));
m_sio1->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MC14411(config, m_brg, XTAL(1'843'200));
m_brg->rsa_w(0);
m_brg->rsb_w(1);
m_brg->out_f<1>().set(FUNC(idpartner_state::write_f1_clock));
m_brg->out_f<13>().set(m_ctc, FUNC(z80ctc_device::trg0));
rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr));
rs232a.rxd_handler().set(m_sio1, FUNC(z80sio_device::rxa_w));
RS232_PORT(config, m_serial[0], default_rs232_devices, nullptr);
m_serial[0]->rxd_handler().set(m_sio1, FUNC(z80sio_device::rxa_w));
rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr));
rs232b.rxd_handler().set(m_sio1, FUNC(z80sio_device::rxb_w));
RS232_PORT(config, m_serial[1], default_rs232_devices, nullptr);
m_serial[1]->rxd_handler().set(m_sio1, FUNC(z80sio_device::rxb_w));
Z80SIO(config, m_sio2, XTAL(8'000'000) / 2);
m_sio2->out_txda_callback().set(m_serial[2], FUNC(rs232_port_device::write_txd));
m_sio2->out_txdb_callback().set(m_serial[3], FUNC(rs232_port_device::write_txd));
m_sio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
Z80PIO(config, m_pio_gdc, XTAL(8'000'000) / 2);
m_pio_gdc->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
RS232_PORT(config, m_serial[2], default_rs232_devices, nullptr);
m_serial[2]->rxd_handler().set(m_sio2, FUNC(z80sio_device::rxa_w));
z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(8'000'000) / 2));
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
RS232_PORT(config, m_serial[3], default_rs232_devices, nullptr);
m_serial[3]->rxd_handler().set(m_sio2, FUNC(z80sio_device::rxb_w));
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
screen.set_screen_update(m_gdc, FUNC(ef9365_device::screen_update));
screen.set_size(1024, 512);
screen.set_visarea(0, 1024-1, 0, 512-1);
screen.set_refresh_hz(25);
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
EF9365(config, m_gdc, XTAL(24'000'000) / 16); // EF9367 1.5 MHz
m_gdc->set_screen("screen");
m_gdc->set_addrmap(0, &idpartner_state::gdc_map);
m_gdc->set_palette_tag("palette");
m_gdc->set_nb_bitplanes(1);
m_gdc->set_display_mode(ef9365_device::DISPLAY_MODE_1024x512);
//SCN2674(config, m_avdc, XTAL(24'000'000) / 16); // SCN2674B
//m_avdc->set_screen("screen");
//m_avdc->set_character_width(12);
//m_avdc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
Z80CTC(config, m_ctc, XTAL(8'000'000) / 2);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_ctc->zc_callback<0>().set(m_ctc, FUNC(z80ctc_device::trg1));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3)); // optional
Z80DAISY_GENERIC(config, m_fdc_daisy, 0xff);
m_fdc_daisy->int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
I8272A(config, m_fdc, 8_MHz_XTAL / 2);
I8272A(config, m_fdc, 8_MHz_XTAL);
m_fdc->intrq_wr_callback().set(FUNC(idpartner_state::fdc_int_w));
FLOPPY_CONNECTOR(config, "fdc:0", partner_floppies, "fdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
FLOPPY_CONNECTOR(config, "fdc:1", partner_floppies, "fdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
FLOPPY_CONNECTOR(config, "fdc:0", partner_floppies, "fdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
FLOPPY_CONNECTOR(config, "fdc:1", partner_floppies, nullptr, floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
// There is one bus connector J2, but cable goes to up to two devices
IDPARTNER_BUS(config, m_bus, 0);
m_bus->set_io_space(m_maincpu, AS_IO);
m_bus->int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_bus->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
IDPARTNER_BUS_CONNECTOR(config, m_conn[0], m_bus, idpartner_exp_devices, nullptr);
IDPARTNER_BUS_CONNECTOR(config, m_conn[1], m_bus, idpartner_exp_devices, nullptr);
}
void idpartner_state::idpartner(machine_config &config)
{
partner_base(config);
m_serial[0]->set_default_option("terminal");
m_serial[0]->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); // must be below the DEVICE_INPUT_DEFAULTS_START block
}
void idpartner_state::partner1fg(machine_config &config)
{
partner_base(config);
m_serial[0]->set_default_option("keyboard");
m_conn[0]->set_default_option("gdp");
}
void idpartner_state::partnerwfg(machine_config &config)
{
partner_base(config);
m_serial[0]->set_default_option("keyboard");
m_conn[0]->set_default_option("gdp");
}
/* ROM definition */
ROM_START( idpartner )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "partner.e51", 0x0000, 0x800, CRC(cabcf36e) SHA1(9c391bacb8d1a742cf74803c61cc061707ab23f4) )
// e50 is empty
ROM_END
ROM_START( partner1fg )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "partner1fg.e51", 0x0000, 0x800, CRC(571e297a) SHA1(05379c75d6ceb338e49958576f3a1c844f202a00) )
@ -309,6 +330,7 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP( 1987, partner1fg, 0, 0, partner1fg, partner1fg, idpartner_state, empty_init, "Iskra Delta", "Partner 1F/G", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
COMP( 1987, partnerwfg, partner1fg, 0, partner1fg, partner1fg, idpartner_state, empty_init, "Iskra Delta", "Partner WF/G", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP( 1984, idpartner, 0, 0, idpartner, idpartner, idpartner_state, empty_init, "Iskra Delta", "Partner", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
COMP( 1987, partner1fg, idpartner, 0, partner1fg, idpartner, idpartner_state, empty_init, "Iskra Delta", "Partner 1F/G", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
COMP( 1987, partnerwfg, idpartner, 0, partnerwfg, idpartner, idpartner_state, empty_init, "Iskra Delta", "Partner WF/G", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )