mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
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:
parent
6755bdfea9
commit
6aa0c208da
@ -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
|
||||
|
84
src/devices/bus/idpartner/bus.cpp
Normal file
84
src/devices/bus/idpartner/bus.cpp
Normal 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);
|
||||
}
|
138
src/devices/bus/idpartner/bus.h
Normal file
138
src/devices/bus/idpartner/bus.h
Normal 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
|
124
src/devices/bus/idpartner/gdp.cpp
Normal file
124
src/devices/bus/idpartner/gdp.cpp
Normal 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")
|
12
src/devices/bus/idpartner/gdp.h
Normal file
12
src/devices/bus/idpartner/gdp.h
Normal 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
|
@ -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
|
||||
|
||||
|
@ -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 )
|
||||
|
Loading…
Reference in New Issue
Block a user