oric: Re-modernize (last time was in 2014, so...)

This commit is contained in:
Olivier Galibert 2023-04-07 10:13:28 +02:00
parent 2b424f5a80
commit 48477df39f
7 changed files with 169 additions and 190 deletions

View File

@ -31,10 +31,21 @@ INPUT_PORTS_START( jasmin )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Boot") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_CHANGED_MEMBER(DEVICE_SELF, oric_jasmin_device, boot_pressed, 0)
INPUT_PORTS_END
void oric_jasmin_device::map(address_map &map)
void oric_jasmin_device::map_io(address_space_installer &space)
{
map(0x3f4, 0x3f7).rw("fdc", FUNC(wd1770_device::read), FUNC(wd1770_device::write));
map(0x3f8, 0x3ff).w(m_fdlatch, FUNC(ls259_device::write_d0));
space.install_read_handler(0x3f4, 0x3f7, read8sm_delegate(m_fdc, FUNC(wd1770_device::read)));
space.install_write_handler(0x3f4, 0x3f7, write8sm_delegate(m_fdc, FUNC(wd1770_device::write)));
space.install_write_handler(0x3f8, 0x3ff, write8sm_delegate(m_fdlatch, FUNC(ls259_device::write_d0)));
}
void oric_jasmin_device::map_rom()
{
(*view)[2].unmap_write(0xf800, 0xffff);
(*view)[2].install_rom(0xf800, 0xffff, m_jasmin_rom);
(*view)[3].unmap_readwrite(0xc000, 0xffff);
(*view)[3].install_rom(0xf800, 0xffff, m_jasmin_rom);
}
oric_jasmin_device::oric_jasmin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
@ -54,7 +65,6 @@ oric_jasmin_device::~oric_jasmin_device()
void oric_jasmin_device::device_start()
{
cpu->space(AS_PROGRAM).install_device(0x0000, 0xffff, *this, &oric_jasmin_device::map);
}
const tiny_rom_entry *oric_jasmin_device::device_rom_region() const
@ -91,37 +101,15 @@ ioport_constructor oric_jasmin_device::device_input_ports() const
void oric_jasmin_device::remap()
{
if(m_fdlatch->q3_r()) {
if(m_fdlatch->q2_r()) {
bank_c000_r->set_base(ram+0xc000);
bank_e000_r->set_base(ram+0xe000);
bank_f800_r->set_base(m_jasmin_rom.target());
bank_c000_w->set_base(ram+0xc000);
bank_e000_w->set_base(ram+0xe000);
bank_f800_w->set_base(junk_write);
} else {
bank_c000_r->set_base(junk_read);
bank_e000_r->set_base(junk_read);
bank_f800_r->set_base(m_jasmin_rom.target());
bank_c000_w->set_base(junk_write);
bank_e000_w->set_base(junk_write);
bank_f800_w->set_base(junk_write);
}
if(m_fdlatch->q2_r())
view->select(3);
else
view->select(2);
} else {
if(m_fdlatch->q2_r()) {
bank_c000_r->set_base(ram+0xc000);
bank_e000_r->set_base(ram+0xe000);
bank_f800_r->set_base(ram+0xf800);
bank_c000_w->set_base(ram+0xc000);
bank_e000_w->set_base(ram+0xe000);
bank_f800_w->set_base(ram+0xf800);
} else {
bank_c000_r->set_base(rom+0x0000);
bank_e000_r->set_base(rom+0x2000);
bank_f800_r->set_base(rom+0x3800);
bank_c000_w->set_base(junk_write);
bank_e000_w->set_base(junk_write);
bank_f800_w->set_base(junk_write);
}
if(m_fdlatch->q2_r())
view->select(1);
else
view->select(0);
}
}
@ -129,7 +117,8 @@ INPUT_CHANGED_MEMBER(oric_jasmin_device::boot_pressed)
{
if(newval) {
m_fdlatch->write_bit(3, 1);
cpu->reset();
reset_w(1);
reset_w(0);
}
}

View File

@ -26,6 +26,9 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual ioport_constructor device_input_ports() const override;
virtual void map_io(address_space_installer &space) override;
virtual void map_rom() override;
private:
void remap();
@ -34,8 +37,6 @@ private:
DECLARE_WRITE_LINE_MEMBER(rom_access_w);
DECLARE_WRITE_LINE_MEMBER(select_w);
void map(address_map &map);
static void floppy_formats(format_registration &fr);
required_device<wd1770_device> m_fdc;

View File

@ -22,17 +22,28 @@ static void microdisc_floppies(device_slot_interface &device)
device.option_add("3dsdd", FLOPPY_3_DSDD);
}
void oric_microdisc_device::map(address_map &map)
void oric_microdisc_device::map_io(address_space_installer &space)
{
map(0x310, 0x313).rw("fdc", FUNC(fd1793_device::read), FUNC(fd1793_device::write));
map(0x314, 0x314).rw(FUNC(oric_microdisc_device::port_314_r), FUNC(oric_microdisc_device::port_314_w));
map(0x318, 0x318).r(FUNC(oric_microdisc_device::port_318_r));
space.install_read_handler(0x310, 0x313, read8sm_delegate(fdc, FUNC(fd1793_device::read)));
space.install_write_handler(0x310, 0x313, write8sm_delegate(fdc, FUNC(fd1793_device::write)));
space.install_read_handler(0x314, 0x314, read8smo_delegate(*this, FUNC(oric_microdisc_device::port_314_r)));
space.install_write_handler(0x314, 0x314, write8smo_delegate(*this, FUNC(oric_microdisc_device::port_314_w)));
space.install_read_handler(0x318, 0x318, read8smo_delegate(*this, FUNC(oric_microdisc_device::port_318_r)));
}
void oric_microdisc_device::map_rom()
{
(*view)[2].unmap_write(0xe000, 0xffff);
(*view)[2].install_rom(0xe000, 0xffff, microdisc_rom);
}
oric_microdisc_device::oric_microdisc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, ORIC_MICRODISC, tag, owner, clock),
device_oricext_interface(mconfig, *this),
fdc(*this, "fdc"), microdisc_rom(nullptr),
fdc(*this, "fdc"),
microdisc_rom(*this, "microdisc"),
floppies(*this, "fdc:%u", 0U),
port_314(0), intrq_state(false), drq_state(false), hld_state(false)
{
@ -44,22 +55,15 @@ oric_microdisc_device::~oric_microdisc_device()
void oric_microdisc_device::device_start()
{
microdisc_rom = device().machine().root_device().memregion(this->subtag("microdisc").c_str())->base();
cpu->space(AS_PROGRAM).install_device(0x0000, 0xffff, *this, &oric_microdisc_device::map);
intrq_state = drq_state = hld_state = false;
}
void oric_microdisc_device::device_reset()
{
port_314 = 0x00;
view->select(2);
irq_w(false);
remap();
fdc->set_floppy(floppies[0]->get_device());
// The bootstrap checksums part of the high ram and if the sum is
// 0 it goes wrong.
ram[0xe000] = 0x42;
}
const tiny_rom_entry *oric_microdisc_device::device_rom_region() const
@ -81,36 +85,16 @@ void oric_microdisc_device::device_add_mconfig(machine_config &config)
FLOPPY_CONNECTOR(config, "fdc:3", microdisc_floppies, nullptr, oric_microdisc_device::floppy_formats);
}
void oric_microdisc_device::remap()
{
if(port_314 & P_ROMDIS) {
bank_c000_r->set_base(rom+0x0000);
bank_e000_r->set_base(rom+0x2000);
bank_f800_r->set_base(rom+0x3800);
bank_c000_w->set_base(junk_write);
bank_e000_w->set_base(junk_write);
bank_f800_w->set_base(junk_write);
} else {
bank_c000_r->set_base(ram+0xc000);
bank_c000_w->set_base(ram+0xc000);
if(port_314 & P_EPROM) {
bank_e000_r->set_base(ram+0xe000);
bank_f800_r->set_base(ram+0xf800);
bank_e000_w->set_base(ram+0xe000);
bank_f800_w->set_base(ram+0xf800);
} else {
bank_e000_r->set_base(microdisc_rom+0x0000);
bank_f800_r->set_base(microdisc_rom+0x1800);
bank_e000_w->set_base(junk_write);
bank_f800_w->set_base(junk_write);
}
}
}
void oric_microdisc_device::port_314_w(uint8_t data)
{
port_314 = data;
remap();
if(port_314 & P_ROMDIS)
view->select(0);
else if(port_314 & P_EPROM)
view->select(1);
else
view->select(2);
floppy_image_device *floppy = floppies[(port_314 >> 5) & 3]->get_device();
fdc->set_floppy(floppy);
fdc->dden_w(port_314 & P_DDEN);
@ -144,7 +128,6 @@ WRITE_LINE_MEMBER(oric_microdisc_device::fdc_drq_w)
WRITE_LINE_MEMBER(oric_microdisc_device::fdc_hld_w)
{
logerror("hld %d\n", state);
hld_state = state;
floppy_image_device *floppy = floppies[(port_314 >> 5) & 3]->get_device();
if(floppy)

View File

@ -26,21 +26,22 @@ protected:
P_EPROM = 0x80
};
required_device<fd1793_device> fdc;
uint8_t *microdisc_rom;
required_device_array<floppy_connector, 4> floppies;
uint8_t port_314;
bool intrq_state, drq_state, hld_state;
virtual void device_start() override;
virtual void device_reset() override;
const tiny_rom_entry *device_rom_region() const override;
virtual void device_add_mconfig(machine_config &config) override;
void remap();
virtual void map_io(address_space_installer &space) override;
virtual void map_rom() override;
private:
required_device<fd1793_device> fdc;
required_region_ptr<uint8_t> microdisc_rom;
required_device_array<floppy_connector, 4> floppies;
uint8_t port_314;
bool intrq_state, drq_state, hld_state;
DECLARE_WRITE_LINE_MEMBER(fdc_irq_w);
DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
DECLARE_WRITE_LINE_MEMBER(fdc_hld_w);
@ -49,8 +50,6 @@ private:
uint8_t port_314_r();
uint8_t port_318_r();
void map(address_map &map);
static void floppy_formats(format_registration &fr);
};

View File

@ -11,7 +11,7 @@ oricext_connector::oricext_connector(const machine_config &mconfig, const char *
device_t(mconfig, ORICEXT_CONNECTOR, tag, owner, clock),
device_single_card_slot_interface<device_oricext_interface>(mconfig, *this),
irq_handler(*this),
cpu(*this, finder_base::DUMMY_TAG)
reset_handler(*this)
{
}
@ -22,6 +22,7 @@ oricext_connector::~oricext_connector()
void oricext_connector::device_start()
{
irq_handler.resolve_safe();
reset_handler.resolve_safe();
}
void oricext_connector::irq_w(int state)
@ -29,36 +30,42 @@ void oricext_connector::irq_w(int state)
irq_handler(state);
}
void oricext_connector::reset_w(int state)
{
reset_handler(state);
}
void oricext_connector::set_view(memory_view &_view)
{
auto card = get_card_device();
if(card)
card->set_view(_view);
}
void oricext_connector::map_io(address_space_installer &space)
{
auto card = get_card_device();
if(card)
card->map_io(space);
}
void oricext_connector::map_rom()
{
auto card = get_card_device();
if(card)
card->map_rom();
}
device_oricext_interface::device_oricext_interface(const machine_config &mconfig, device_t &device) :
device_interface(device, "oricext"),
cpu(nullptr),
connector(nullptr),
bank_c000_r(nullptr),
bank_e000_r(nullptr),
bank_f800_r(nullptr),
bank_c000_w(nullptr),
bank_e000_w(nullptr),
bank_f800_w(nullptr),
rom(nullptr),
ram(nullptr)
view(nullptr),
connector(nullptr)
{
}
void device_oricext_interface::interface_pre_start()
{
connector = downcast<oricext_connector *>(device().owner());
cpu = connector->cpu.target();
bank_c000_r = device().membank(":bank_c000_r");
bank_e000_r = device().membank(":bank_e000_r");
bank_f800_r = device().membank(":bank_f800_r");
bank_c000_w = device().membank(":bank_c000_w");
bank_e000_w = device().membank(":bank_e000_w");
bank_f800_w = device().membank(":bank_f800_w");
rom = (uint8_t *)cpu->memregion(DEVICE_SELF)->base();
ram = (uint8_t *)device().memshare(":ram")->ptr();
memset(junk_read, 0xff, sizeof(junk_read));
memset(junk_write, 0x00, sizeof(junk_write));
}
WRITE_LINE_MEMBER(device_oricext_interface::irq_w)
@ -66,6 +73,16 @@ WRITE_LINE_MEMBER(device_oricext_interface::irq_w)
connector->irq_w(state);
}
WRITE_LINE_MEMBER(device_oricext_interface::reset_w)
{
connector->reset_w(state);
}
void device_oricext_interface::set_view(memory_view &_view)
{
view = &_view;
}
void oricext_intf(device_slot_interface &device)
{
device.option_add("jasmin", ORIC_JASMIN);

View File

@ -20,46 +20,53 @@ class oricext_connector: public device_t, public device_single_card_slot_interfa
friend class device_oricext_interface;
public:
template <typename T, typename U>
oricext_connector(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt, U &&cputag)
template <typename T>
oricext_connector(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: oricext_connector(mconfig, tag, owner, (uint32_t)0)
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
set_cputag(std::forward<U>(cputag));
}
oricext_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~oricext_connector();
template <typename T> void set_cputag(T &&tag) { cpu.set_tag(std::forward<T>(tag)); }
auto irq_callback() { return irq_handler.bind(); }
auto reset_callback() { return reset_handler.bind(); }
void irq_w(int state);
void reset_w(int state);
void set_view(memory_view &view);
void map_io(address_space_installer &space);
void map_rom();
protected:
virtual void device_start() override;
devcb_write_line irq_handler;
required_device<m6502_device> cpu;
devcb_write_line reset_handler;
};
class device_oricext_interface : public device_interface
{
public:
DECLARE_WRITE_LINE_MEMBER(irq_w);
DECLARE_WRITE_LINE_MEMBER(reset_w);
void set_view(memory_view &view);
virtual void map_io(address_space_installer &space) = 0;
virtual void map_rom() = 0;
protected:
device_oricext_interface(const machine_config &mconfig, device_t &device);
virtual void interface_pre_start() override;
m6502_device *cpu;
memory_view *view;
oricext_connector *connector;
memory_bank *bank_c000_r, *bank_e000_r, *bank_f800_r, *bank_c000_w, *bank_e000_w, *bank_f800_w;
uint8_t *rom, *ram;
uint8_t junk_read[8192], junk_write[8192];
};
DECLARE_DEVICE_TYPE(ORICEXT_CONNECTOR, oricext_connector)

View File

@ -71,14 +71,10 @@ public:
, m_via(*this, "via6522")
, m_ram(*this, "ram")
, m_rom(*this, "maincpu")
, m_bank_c000_r(*this, "bank_c000_r")
, m_bank_e000_r(*this, "bank_e000_r")
, m_bank_f800_r(*this, "bank_f800_r")
, m_bank_c000_w(*this, "bank_c000_w")
, m_bank_e000_w(*this, "bank_e000_w")
, m_bank_f800_w(*this, "bank_f800_w")
, m_c000_view(*this, "c000")
, m_config(*this, "CONFIG")
, m_kbd_row(*this, "ROW%u", 0U)
, m_ext(*this, "ext")
, m_tape_timer(nullptr)
{ }
@ -98,9 +94,11 @@ public:
uint32_t screen_update_oric(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(vblank_w);
void oric(machine_config &config, bool add_ext = true);
void oric_common(machine_config &config);
void oric(machine_config &config);
void prav8d(machine_config &config);
void oric_mem(address_map &map);
protected:
required_device<m6502_device> m_maincpu;
required_device<palette_device> m_palette;
@ -111,14 +109,10 @@ protected:
required_device<via6522_device> m_via;
required_shared_ptr<uint8_t> m_ram;
optional_memory_region m_rom;
required_memory_bank m_bank_c000_r;
optional_memory_bank m_bank_e000_r;
optional_memory_bank m_bank_f800_r;
required_memory_bank m_bank_c000_w;
optional_memory_bank m_bank_e000_w;
optional_memory_bank m_bank_f800_w;
memory_view m_c000_view;
required_ioport m_config;
required_ioport_array<8> m_kbd_row;
optional_device<oricext_connector> m_ext;
emu_timer *m_tape_timer;
@ -188,14 +182,13 @@ protected:
required_ioport m_joy2;
required_device_array<floppy_connector, 4> m_floppies;
uint8_t m_port_314;
uint8_t m_via2_a, m_via2_b;
bool m_via2_ca2, m_via2_cb2, m_via2_irq;
bool m_acia_irq;
bool m_fdc_irq, m_fdc_drq, m_fdc_hld;
uint8_t m_junk_read[0x4000], m_junk_write[0x4000];
virtual void update_irq() override;
void remap();
void port_314_w(u8 data);
@ -206,11 +199,13 @@ protected:
/* Ram is 64K, with 16K hidden by the rom. The 300-3ff is also hidden by the i/o */
void oric_state::oric_mem(address_map &map)
{
map(0x0000, 0xffff).ram().share("ram");
map(0x0000, 0xffff).ram().share(m_ram);
map(0x0300, 0x030f).m(m_via, FUNC(via6522_device::map)).mirror(0xf0);
map(0xc000, 0xdfff).bankr("bank_c000_r").bankw("bank_c000_w");
map(0xe000, 0xf7ff).bankr("bank_e000_r").bankw("bank_e000_w");
map(0xf800, 0xffff).bankr("bank_f800_r").bankw("bank_f800_w");
map(0xc000, 0xffff).view(m_c000_view);
m_c000_view[0](0xc000, 0xffff).rom().region(m_rom, 0);
m_c000_view[0](0xc000, 0xffff).unmapw();
m_c000_view[1]; // Ram range, ensure it exists
m_c000_view[2]; // FDC rom range, ensure it exists
}
/*
@ -225,7 +220,24 @@ void telestrat_state::telestrat_mem(address_map &map)
map(0x0318, 0x0318).r(FUNC(telestrat_state::port_318_r));
map(0x031c, 0x031f).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
map(0x0320, 0x032f).m(m_via2, FUNC(via6522_device::map));
map(0xc000, 0xffff).bankr("bank_c000_r").bankw("bank_c000_w");
// Theorically, these are cartridges. There's no real point to
// making them configurable, when only 4 existed and there are 7
// slots.
map(0xc000, 0xffff).view(m_c000_view);
m_c000_view[0]; // Ram range, ensure it exists
m_c000_view[1](0xc000, 0xffff).unmaprw(); // Nothing in that slot
m_c000_view[2](0xc000, 0xffff).unmaprw(); // Nothing in that slot
m_c000_view[3](0xc000, 0xffff).unmaprw(); // Nothing in that slot
m_c000_view[4](0xc000, 0xffff).rom().region(m_telmatic, 0);
m_c000_view[4](0xc000, 0xffff).unmapw();
m_c000_view[5](0xc000, 0xffff).rom().region(m_teleass, 0);
m_c000_view[5](0xc000, 0xffff).unmapw();
m_c000_view[6](0xc000, 0xffff).rom().region(m_hyperbas, 0);
m_c000_view[6](0xc000, 0xffff).unmapw();
m_c000_view[7](0xc000, 0xffff).rom().region(m_telmon24, 0);
m_c000_view[7](0xc000, 0xffff).unmapw();
}
uint32_t oric_state::screen_update_oric(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
@ -406,7 +418,7 @@ void oric_state::machine_start_common()
m_via_irq = false;
m_ext_irq = false;
if (!m_tape_timer)
if(!m_tape_timer)
m_tape_timer = timer_alloc(FUNC(oric_state::update_tape), this);
save_item(NAME(m_blink_counter));
@ -423,13 +435,17 @@ void oric_state::machine_start_common()
void oric_state::machine_start()
{
machine_start_common();
m_bank_c000_r->set_base(m_rom->base());
m_bank_e000_r->set_base(m_rom->base() + 0x2000);
m_bank_f800_r->set_base(m_rom->base() + 0x3800);
m_c000_view.select(0);
m_ext->set_view(m_c000_view);
m_ext->map_io(m_maincpu->space(AS_PROGRAM));
m_ext->map_rom();
}
void oric_state::machine_reset()
{
m_ram[0xe000] = 0x42; // Microdisc needs a non-fully-zero high ram
m_tape_timer->adjust(attotime::from_hz(4800), 0, attotime::from_hz(4800));
}
@ -439,9 +455,6 @@ void telestrat_state::machine_start()
m_fdc_irq = m_fdc_drq = m_fdc_hld = false;
m_acia_irq = false;
memset(m_junk_read, 0x00, sizeof(m_junk_read));
memset(m_junk_write, 0x00, sizeof(m_junk_write));
save_item(NAME(m_port_314));
save_item(NAME(m_via2_a));
save_item(NAME(m_via2_b));
@ -459,7 +472,7 @@ void telestrat_state::machine_reset()
m_tape_timer->adjust(attotime::from_hz(4800), 0, attotime::from_hz(4800));
m_port_314 = 0x00;
m_via2_a = 0xff;
remap();
m_c000_view.select(7);
}
void telestrat_state::update_irq()
@ -475,7 +488,7 @@ void telestrat_state::update_irq()
void telestrat_state::via2_a_w(uint8_t data)
{
m_via2_a = data;
remap();
m_c000_view.select(data & 7);
}
void telestrat_state::via2_b_w(uint8_t data)
@ -552,43 +565,6 @@ WRITE_LINE_MEMBER(telestrat_state::fdc_hld_w)
m_fdc_hld = state;
}
void telestrat_state::remap()
{
// Theorically, these are cartridges. There's no real point to
// making them configurable, when only 4 existed and there are 7
// slots.
switch(m_via2_a & 7) {
case 0:
m_bank_c000_r->set_base(m_ram+0xc000);
m_bank_c000_w->set_base(m_ram+0xc000);
break;
case 1:
case 2:
case 3:
m_bank_c000_r->set_base(m_junk_read);
m_bank_c000_w->set_base(m_junk_write);
break;
case 4:
m_bank_c000_r->set_base(m_telmatic->base());
m_bank_c000_w->set_base(m_junk_write);
break;
case 5:
m_bank_c000_r->set_base(m_teleass->base());
m_bank_c000_w->set_base(m_junk_write);
break;
case 6:
m_bank_c000_r->set_base(m_hyperbas->base());
m_bank_c000_w->set_base(m_junk_write);
break;
case 7:
m_bank_c000_r->set_base(m_telmon24->base());
m_bank_c000_w->set_base(m_junk_write);
break;
}
}
static INPUT_PORTS_START(oric)
PORT_START("ROW0")
@ -806,7 +782,7 @@ static INPUT_PORTS_START(telstrat)
INPUT_PORTS_END
void oric_state::oric(machine_config &config, bool add_ext) // this variable not used
void oric_state::oric_common(machine_config &config)
{
/* basic machine hardware */
M6502(config, m_maincpu, 12_MHz_XTAL / 12);
@ -853,14 +829,21 @@ void oric_state::oric(machine_config &config, bool add_ext) // this variable not
m_via->ca2_handler().set(FUNC(oric_state::via_ca2_w));
m_via->cb2_handler().set(FUNC(oric_state::via_cb2_w));
m_via->irq_handler().set(FUNC(oric_state::via_irq_w));
}
void oric_state::oric(machine_config &config)
{
oric_common(config);
/* extension port */
ORICEXT_CONNECTOR(config, "ext", oricext_intf, nullptr, "maincpu").irq_callback().set(FUNC(oric_state::ext_irq_w));
ORICEXT_CONNECTOR(config, m_ext, oricext_intf, nullptr);
m_ext->irq_callback().set(FUNC(oric_state::ext_irq_w));
m_ext->reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
}
void oric_state::prav8d(machine_config &config)
{
oric(config, true);
oric(config);
}
void telestrat_state::floppy_formats(format_registration &fr)
@ -876,7 +859,7 @@ static void telestrat_floppies(device_slot_interface &device)
void telestrat_state::telstrat(machine_config &config)
{
oric(config, false);
oric(config);
m_maincpu->set_addrmap(AS_PROGRAM, &telestrat_state::telestrat_mem);
/* acia */