(MESS) lx800: Refactored Epson LX-800 from a driver into a Centronics device. (nw)

This commit is contained in:
Curt Coder 2014-06-11 11:47:08 +00:00
parent c0d70c155e
commit 2030df63b2
8 changed files with 391 additions and 222 deletions

5
.gitattributes vendored
View File

@ -727,6 +727,8 @@ src/emu/bus/centronics/ctronics.c svneol=native#text/plain
src/emu/bus/centronics/ctronics.h svneol=native#text/plain
src/emu/bus/centronics/dsjoy.c svneol=native#text/plain
src/emu/bus/centronics/dsjoy.h svneol=native#text/plain
src/emu/bus/centronics/epson_lx800.c svneol=native#text/plain
src/emu/bus/centronics/epson_lx800.h svneol=native#text/plain
src/emu/bus/centronics/printer.c svneol=native#text/plain
src/emu/bus/centronics/printer.h svneol=native#text/plain
src/emu/bus/coco/coco_232.c svneol=native#text/plain
@ -2407,6 +2409,7 @@ src/emu/layout/dualhuov.lay svneol=native#text/xml
src/emu/layout/horizont.lay svneol=native#text/xml
src/emu/layout/lcd.lay svneol=native#text/xml
src/emu/layout/lcd_rot.lay svneol=native#text/xml
src/emu/layout/lx800.lay svneol=native#text/xml
src/emu/layout/noscreens.lay svneol=native#text/xml
src/emu/layout/quadhsxs.lay svneol=native#text/xml
src/emu/layout/snap.lay svneol=native#text/xml
@ -8013,7 +8016,6 @@ src/mess/drivers/lisa.c svneol=native#text/plain
src/mess/drivers/llc.c svneol=native#text/plain
src/mess/drivers/lola8a.c svneol=native#text/plain
src/mess/drivers/lviv.c svneol=native#text/plain
src/mess/drivers/lx800.c svneol=native#text/plain
src/mess/drivers/lynx.c svneol=native#text/plain
src/mess/drivers/m20.c svneol=native#text/plain
src/mess/drivers/m5.c svneol=native#text/plain
@ -8608,7 +8610,6 @@ src/mess/layout/k1003.lay svneol=native#text/xml
src/mess/layout/kim1.lay svneol=native#text/xml
src/mess/layout/lc80.lay svneol=native#text/xml
src/mess/layout/llc1.lay svneol=native#text/xml
src/mess/layout/lx800.lay svneol=native#text/xml
src/mess/layout/lynx.lay svneol=native#text/xml
src/mess/layout/mac.lay svneol=native#text/xml
src/mess/layout/megacd.lay svneol=native#text/xml

View File

@ -738,7 +738,9 @@ BUSOBJS += $(BUSOBJ)/centronics/ctronics.o
BUSOBJS += $(BUSOBJ)/centronics/comxpl80.o
BUSOBJS += $(BUSOBJ)/centronics/covox.o
BUSOBJS += $(BUSOBJ)/centronics/dsjoy.o
BUSOBJS += $(BUSOBJ)/centronics/epson_lx800.o
BUSOBJS += $(BUSOBJ)/centronics/printer.o
$(BUSOBJ)/centronics/epson_lx800.o: $(EMUOBJ)/layout/lx800.lh
endif
#-------------------------------------------------

View File

@ -116,8 +116,14 @@ device_centronics_peripheral_interface::~device_centronics_peripheral_interface(
}
#include "comxpl80.h"
#include "epson_lx800.h"
#include "printer.h"
SLOT_INTERFACE_START(centronics_printers)
SLOT_INTERFACE("pl80", COMX_PL80)
SLOT_INTERFACE("lx800", EPSON_LX800)
SLOT_INTERFACE("lx810l", EPSON_LX810L)
SLOT_INTERFACE("ap2000", EPSON_AP2000)
SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
SLOT_INTERFACE_END

View File

@ -1,6 +1,8 @@
/***************************************************************************
// license:MAME, GPL-2.0+
// copyright-holders:Dirk Best
/**********************************************************************
Epson LX-800 dot matrix printer
Epson LX-800 dot matrix printer
license: MAME, GPL-2.0+
copyright-holders: Dirk Best
@ -26,188 +28,87 @@
2014-06-10 Added AP2000, gets caught in the same place as LX810L.
**********************************************************************/
***************************************************************************/
#include "emu.h"
#include "cpu/upd7810/upd7810.h"
#include "machine/e05a03.h"
#include "sound/beep.h"
#include "epson_lx800.h"
#include "lx800.lh"
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
class lx800_state : public driver_device
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
const device_type EPSON_LX800 = &device_creator<epson_lx800_t>;
const device_type EPSON_LX810L = &device_creator<epson_lx810l_t>;
const device_type EPSON_AP2000 = &device_creator<epson_ap2000_t>;
//-------------------------------------------------
// ROM( lx800 )
//-------------------------------------------------
ROM_START( lx800 )
ROM_REGION(0x8000, "maincpu", 0)
ROM_LOAD("lx800.ic3c", 0x0000, 0x8000, CRC(da06c45b) SHA1(9618c940dd10d5b43cd1edd5763b90e6447de667) )
ROM_END
//-------------------------------------------------
// ROM( lx810l )
//-------------------------------------------------
ROM_START( lx810l )
ROM_REGION(0x8000, "maincpu", 0)
ROM_LOAD("lx810l.ic3c", 0x0000, 0x8000, CRC(a66454e1) SHA1(8e6f2f98abcbd8af6e34b9ba746edf0d18aef843) )
ROM_END
//-------------------------------------------------
// ROM( ap2000 )
//-------------------------------------------------
ROM_START( ap2000 )
ROM_REGION(0x8000, "maincpu", 0)
ROM_LOAD("ap2k.ic3c", 0x0000, 0x8000, CRC(ee7294b7) SHA1(219ffa6ff661ce95d5772c9fc1967093718f04e9) )
ROM_END
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
const rom_entry *epson_lx800_t::device_rom_region() const
{
public:
lx800_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_beep(*this, "beeper")
{ }
DECLARE_READ8_MEMBER(lx800_porta_r);
DECLARE_WRITE8_MEMBER(lx800_porta_w);
DECLARE_READ8_MEMBER(lx800_portc_r);
DECLARE_WRITE8_MEMBER(lx800_portc_w);
DECLARE_READ8_MEMBER(lx800_centronics_data_r);
DECLARE_WRITE_LINE_MEMBER(lx800_centronics_pe_w);
DECLARE_WRITE_LINE_MEMBER(lx800_paperempty_led_w);
DECLARE_WRITE_LINE_MEMBER(lx800_reset_w);
DECLARE_READ_LINE_MEMBER(an0_r);
DECLARE_READ_LINE_MEMBER(an1_r);
DECLARE_READ_LINE_MEMBER(an2_r);
DECLARE_READ_LINE_MEMBER(an3_r);
DECLARE_READ_LINE_MEMBER(an4_r);
DECLARE_READ_LINE_MEMBER(an5_r);
private:
required_device<cpu_device> m_maincpu;
required_device<beep_device> m_beep;
virtual void machine_start();
};
/***************************************************************************
I/O PORTS
***************************************************************************/
/* PA0 W CRCOM carriage motor, 0 = holding voltage, 1 = drive voltage
* PA1 not used
* PA2 W PFCOM paper feed motor, 0 = holding voltage, 1 = drive voltage
* PA3 R LF SW line feed switch
* PA4 R FF SW form feed switch
* PA5 R PE SW paper end sensor, 0 = no paper, 1 = paper
* PA6 not used
* PA7 R P/S P/S signal from the optional interface
*/
READ8_MEMBER( lx800_state::lx800_porta_r )
{
UINT8 result = 0;
logerror("%s: lx800_porta_r(%02x)\n", machine().describe_context(), offset);
result |= ioport("LINEFEED")->read() << 3;
result |= ioport("FORMFEED")->read() << 4;
result |= 1 << 5;
result |= 1 << 7;
return result;
}
WRITE8_MEMBER( lx800_state::lx800_porta_w )
{
logerror("%s: lx800_porta_w(%02x): %02x\n", machine().describe_context(), offset, data);
logerror("--> carriage: %d, paper feed: %d\n", BIT(data, 0), BIT(data, 2));
}
/* PC0 W TXD serial i/o txd
* PC1 R RXD serial i/o rxd
* PC2 W ONLINE LP online led
* PC3 R ONLINE SW online switch
* PC4 W ERR centronics error
* PC5 W ACK centronics acknowledge
* PC6 W FIRE drive pulse width signal
* PC7 W BUZZER buzzer signal
*/
READ8_MEMBER( lx800_state::lx800_portc_r )
{
UINT8 result = 0;
logerror("%s: lx800_portc_r(%02x)\n", machine().describe_context(), offset);
result |= ioport("ONLINE")->read() << 3;
return result;
}
WRITE8_MEMBER( lx800_state::lx800_portc_w )
{
logerror("%s: lx800_portc_w(%02x): %02x\n", machine().describe_context(), offset, data);
logerror("--> err: %d, ack: %d, fire: %d, buzzer: %d\n", BIT(data, 4), BIT(data, 5), BIT(data, 6), BIT(data, 7));
output_set_value("online_led", !BIT(data, 2));
m_beep->set_state(!BIT(data, 7));
}
READ_LINE_MEMBER( lx800_state::an0_r )
{
return BIT(ioport("DIPSW2")->read(), 0);
}
READ_LINE_MEMBER( lx800_state::an1_r )
{
return BIT(ioport("DIPSW2")->read(), 1);
}
READ_LINE_MEMBER( lx800_state::an2_r )
{
return BIT(ioport("DIPSW2")->read(), 2);
}
READ_LINE_MEMBER( lx800_state::an3_r )
{
return BIT(ioport("DIPSW2")->read(), 3); // can also read an external line AUTO_FEED_XT
}
READ_LINE_MEMBER( lx800_state::an4_r )
{
return 0; // Printer select line (0=always selected)
}
READ_LINE_MEMBER( lx800_state::an5_r )
{
return 1; // Monitors 24v line, should return 4.08 volts
return ROM_NAME( lx800 );
}
/***************************************************************************
GATE ARRAY
***************************************************************************/
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
READ8_MEMBER( lx800_state::lx800_centronics_data_r )
const rom_entry *epson_lx810l_t::device_rom_region() const
{
logerror("centronics: data read\n");
return 0x55;
}
WRITE_LINE_MEMBER( lx800_state::lx800_centronics_pe_w )
{
logerror("centronics: pe = %d\n", state);
}
WRITE_LINE_MEMBER( lx800_state::lx800_paperempty_led_w )
{
logerror("setting paperout led: %d\n", state);
output_set_value("paperout_led", state);
}
WRITE_LINE_MEMBER( lx800_state::lx800_reset_w )
{
logerror("cpu reset");
m_maincpu->reset();
return ROM_NAME( lx810l );
}
/***************************************************************************
MACHINE EMULATION
***************************************************************************/
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
void lx800_state::machine_start()
const rom_entry *epson_ap2000_t::device_rom_region() const
{
m_beep->set_state(0);
m_beep->set_frequency(4000); /* ? */
return ROM_NAME( ap2000 );
}
/***************************************************************************
ADDRESS MAPS
***************************************************************************/
//-------------------------------------------------
// ADDRESS_MAP( lx800_mem )
//-------------------------------------------------
static ADDRESS_MAP_START( lx800_mem, AS_PROGRAM, 8, lx800_state )
static ADDRESS_MAP_START( lx800_mem, AS_PROGRAM, 8, epson_lx800_t )
AM_RANGE(0x0000, 0x7fff) AM_ROM /* 32k firmware */
AM_RANGE(0x8000, 0x9fff) AM_RAM /* 8k external RAM */
AM_RANGE(0xa000, 0xbfff) AM_NOP /* not used */
@ -216,18 +117,66 @@ static ADDRESS_MAP_START( lx800_mem, AS_PROGRAM, 8, lx800_state )
AM_RANGE(0xff00, 0xffff) AM_RAM /* internal CPU RAM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( lx800_io, AS_IO, 8, lx800_state )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(lx800_porta_r, lx800_porta_w)
//-------------------------------------------------
// ADDRESS_MAP( lx800_io )
//-------------------------------------------------
static ADDRESS_MAP_START( lx800_io, AS_IO, 8, epson_lx800_t )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(porta_r, porta_w)
AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_READ_PORT("DIPSW1")
AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_READWRITE(lx800_portc_r, lx800_portc_w)
AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_READWRITE(portc_r, portc_w)
ADDRESS_MAP_END
/***************************************************************************
INPUT PORTS
***************************************************************************/
//-------------------------------------------------
// MACHINE_DRIVER( epson_lx800 )
//-------------------------------------------------
static INPUT_PORTS_START( lx800 )
static MACHINE_CONFIG_FRAGMENT( epson_lx800 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_14_7456MHz)
MCFG_CPU_PROGRAM_MAP(lx800_mem)
MCFG_CPU_IO_MAP(lx800_io)
MCFG_UPD7810_AN0(READLINE(epson_lx800_t, an0_r))
MCFG_UPD7810_AN1(READLINE(epson_lx800_t, an1_r))
MCFG_UPD7810_AN2(READLINE(epson_lx800_t, an2_r))
MCFG_UPD7810_AN3(READLINE(epson_lx800_t, an3_r))
MCFG_UPD7810_AN4(READLINE(epson_lx800_t, an4_r))
MCFG_UPD7810_AN5(READLINE(epson_lx800_t, an5_r))
MCFG_DEFAULT_LAYOUT(layout_lx800)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("beeper", BEEP, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
/* gate array */
MCFG_DEVICE_ADD("ic3b", E05A03, 0)
MCFG_E05A03_PE_LP_CALLBACK(WRITELINE(epson_lx800_t, paperempty_led_w))
MCFG_E05A03_RESO_CALLBACK(WRITELINE(epson_lx800_t, reset_w))
MCFG_E05A03_PE_CALLBACK(WRITELINE(epson_lx800_t, centronics_pe_w))
MCFG_E05A03_DATA_CALLBACK(READ8(epson_lx800_t, centronics_data_r))
MACHINE_CONFIG_END
//-------------------------------------------------
// machine_config_additions - device-specific
// machine configurations
//-------------------------------------------------
machine_config_constructor epson_lx800_t::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( epson_lx800 );
}
//-------------------------------------------------
// INPUT_PORTS( epson_lx800 )
//-------------------------------------------------
INPUT_PORTS_START( epson_lx800 )
PORT_START("ONLINE")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("On Line") PORT_CODE(KEYCODE_O)
@ -289,63 +238,176 @@ static INPUT_PORTS_START( lx800 )
INPUT_PORTS_END
/***************************************************************************
MACHINE DRIVERS
***************************************************************************/
//-------------------------------------------------
// input_ports - device-specific input ports
//-------------------------------------------------
static MACHINE_CONFIG_START( lx800, lx800_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_14_7456MHz)
MCFG_CPU_PROGRAM_MAP(lx800_mem)
MCFG_CPU_IO_MAP(lx800_io)
MCFG_UPD7810_AN0(READLINE(lx800_state, an0_r))
MCFG_UPD7810_AN1(READLINE(lx800_state, an1_r))
MCFG_UPD7810_AN2(READLINE(lx800_state, an2_r))
MCFG_UPD7810_AN3(READLINE(lx800_state, an3_r))
MCFG_UPD7810_AN4(READLINE(lx800_state, an4_r))
MCFG_UPD7810_AN5(READLINE(lx800_state, an5_r))
ioport_constructor epson_lx800_t::device_input_ports() const
{
return INPUT_PORTS_NAME( epson_lx800 );
}
MCFG_DEFAULT_LAYOUT(layout_lx800)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("beeper", BEEP, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
/* gate array */
MCFG_DEVICE_ADD("ic3b", E05A03, 0)
MCFG_E05A03_PE_LP_CALLBACK(WRITELINE(lx800_state, lx800_paperempty_led_w))
MCFG_E05A03_RESO_CALLBACK(WRITELINE(lx800_state, lx800_reset_w))
MCFG_E05A03_PE_CALLBACK(WRITELINE(lx800_state, lx800_centronics_pe_w))
MCFG_E05A03_DATA_CALLBACK(READ8(lx800_state, lx800_centronics_data_r))
MACHINE_CONFIG_END
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// epson_lx800_t - constructor
//-------------------------------------------------
epson_lx800_t::epson_lx800_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, EPSON_LX800, "Epson LX-800", tag, owner, clock, "lx800", __FILE__),
device_centronics_peripheral_interface(mconfig, *this),
m_maincpu(*this, "maincpu"),
m_beep(*this, "beeper")
{
}
epson_lx800_t::epson_lx800_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
device_centronics_peripheral_interface(mconfig, *this),
m_maincpu(*this, "maincpu"),
m_beep(*this, "beeper")
{
}
epson_lx810l_t::epson_lx810l_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: epson_lx800_t(mconfig, EPSON_LX810L, "Epson LX-810L", tag, owner, clock, "lx810l", __FILE__) { }
epson_ap2000_t::epson_ap2000_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: epson_lx800_t(mconfig, EPSON_AP2000, "Epson ActionPrinter 2000", tag, owner, clock, "ap2000", __FILE__) { }
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void epson_lx800_t::device_start()
{
m_beep->set_state(0);
m_beep->set_frequency(4000); /* ? */
}
/***************************************************************************
ROM DEFINITIONS
I/O PORTS
***************************************************************************/
ROM_START( lx800 )
ROM_REGION(0x8000, "maincpu", 0)
ROM_LOAD("lx800.ic3c", 0x0000, 0x8000, CRC(da06c45b) SHA1(9618c940dd10d5b43cd1edd5763b90e6447de667) )
ROM_END
/* PA0 W CRCOM carriage motor, 0 = holding voltage, 1 = drive voltage
* PA1 not used
* PA2 W PFCOM paper feed motor, 0 = holding voltage, 1 = drive voltage
* PA3 R LF SW line feed switch
* PA4 R FF SW form feed switch
* PA5 R PE SW paper end sensor, 0 = no paper, 1 = paper
* PA6 not used
* PA7 R P/S P/S signal from the optional interface
*/
READ8_MEMBER( epson_lx800_t::porta_r )
{
UINT8 result = 0;
ROM_START( lx810l )
ROM_REGION(0x8000, "maincpu", 0)
ROM_LOAD("lx810l.ic3c", 0x0000, 0x8000, CRC(a66454e1) SHA1(8e6f2f98abcbd8af6e34b9ba746edf0d18aef843) )
ROM_END
logerror("%s: lx800_porta_r(%02x)\n", machine().describe_context(), offset);
ROM_START( ap2000 )
ROM_REGION(0x8000, "maincpu", 0)
ROM_LOAD("ap2k.ic3c", 0x0000, 0x8000, CRC(ee7294b7) SHA1(219ffa6ff661ce95d5772c9fc1967093718f04e9) )
ROM_END
result |= ioport("LINEFEED")->read() << 3;
result |= ioport("FORMFEED")->read() << 4;
result |= 1 << 5;
result |= 1 << 7;
return result;
}
WRITE8_MEMBER( epson_lx800_t::porta_w )
{
logerror("%s: lx800_porta_w(%02x): %02x\n", machine().describe_context(), offset, data);
logerror("--> carriage: %d, paper feed: %d\n", BIT(data, 0), BIT(data, 2));
}
/* PC0 W TXD serial i/o txd
* PC1 R RXD serial i/o rxd
* PC2 W ONLINE LP online led
* PC3 R ONLINE SW online switch
* PC4 W ERR centronics error
* PC5 W ACK centronics acknowledge
* PC6 W FIRE drive pulse width signal
* PC7 W BUZZER buzzer signal
*/
READ8_MEMBER( epson_lx800_t::portc_r )
{
UINT8 result = 0;
logerror("%s: lx800_portc_r(%02x)\n", machine().describe_context(), offset);
result |= ioport("ONLINE")->read() << 3;
return result;
}
WRITE8_MEMBER( epson_lx800_t::portc_w )
{
logerror("%s: lx800_portc_w(%02x): %02x\n", machine().describe_context(), offset, data);
logerror("--> err: %d, ack: %d, fire: %d, buzzer: %d\n", BIT(data, 4), BIT(data, 5), BIT(data, 6), BIT(data, 7));
output_set_value("online_led", !BIT(data, 2));
m_beep->set_state(!BIT(data, 7));
}
READ_LINE_MEMBER( epson_lx800_t::an0_r )
{
return BIT(ioport("DIPSW2")->read(), 0);
}
READ_LINE_MEMBER( epson_lx800_t::an1_r )
{
return BIT(ioport("DIPSW2")->read(), 1);
}
READ_LINE_MEMBER( epson_lx800_t::an2_r )
{
return BIT(ioport("DIPSW2")->read(), 2);
}
READ_LINE_MEMBER( epson_lx800_t::an3_r )
{
return BIT(ioport("DIPSW2")->read(), 3); // can also read an external line AUTO_FEED_XT
}
READ_LINE_MEMBER( epson_lx800_t::an4_r )
{
return 0; // Printer select line (0=always selected)
}
READ_LINE_MEMBER( epson_lx800_t::an5_r )
{
return 1; // Monitors 24v line, should return 4.08 volts
}
/***************************************************************************
GAME DRIVERS
GATE ARRAY
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1987, lx800, 0, 0, lx800, lx800, driver_device, 0, "Epson", "LX-800 Printer", GAME_NOT_WORKING )
COMP( 19??, lx810l,lx800, 0, lx800, lx800, driver_device, 0, "Epson", "LX-810L Printer", GAME_NOT_WORKING )
COMP( 19??, ap2000,lx800, 0, lx800, lx800, driver_device, 0, "Epson", "Action Printer 2000", GAME_NOT_WORKING )
READ8_MEMBER( epson_lx800_t::centronics_data_r )
{
logerror("centronics: data read\n");
return 0x55;
}
WRITE_LINE_MEMBER( epson_lx800_t::centronics_pe_w )
{
logerror("centronics: pe = %d\n", state);
}
WRITE_LINE_MEMBER( epson_lx800_t::paperempty_led_w )
{
logerror("setting paperout led: %d\n", state);
output_set_value("paperout_led", state);
}
WRITE_LINE_MEMBER( epson_lx800_t::reset_w )
{
logerror("cpu reset");
m_maincpu->reset();
}

View File

@ -0,0 +1,103 @@
// license:MAME, GPL-2.0+
// copyright-holders:Dirk Best
/**********************************************************************
Epson LX-800 dot matrix printer emulation
Copyright MESS Team.
Visit http://mamedev.org for licensing and usage restrictions.
**********************************************************************/
#pragma once
#ifndef __EPSON_LX800__
#define __EPSON_LX800__
#include "emu.h"
#include "ctronics.h"
#include "cpu/upd7810/upd7810.h"
#include "machine/e05a03.h"
#include "sound/beep.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> epson_lx800_t
class epson_lx800_t : public device_t,
public device_centronics_peripheral_interface
{
public:
// construction/destruction
epson_lx800_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
epson_lx800_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
// optional information overrides
virtual const rom_entry *device_rom_region() const;
virtual machine_config_constructor device_mconfig_additions() const;
virtual ioport_constructor device_input_ports() const;
DECLARE_READ8_MEMBER(porta_r);
DECLARE_WRITE8_MEMBER(porta_w);
DECLARE_READ8_MEMBER(portc_r);
DECLARE_WRITE8_MEMBER(portc_w);
DECLARE_READ8_MEMBER(centronics_data_r);
DECLARE_WRITE_LINE_MEMBER(centronics_pe_w);
DECLARE_WRITE_LINE_MEMBER(paperempty_led_w);
DECLARE_WRITE_LINE_MEMBER(reset_w);
DECLARE_READ_LINE_MEMBER(an0_r);
DECLARE_READ_LINE_MEMBER(an1_r);
DECLARE_READ_LINE_MEMBER(an2_r);
DECLARE_READ_LINE_MEMBER(an3_r);
DECLARE_READ_LINE_MEMBER(an4_r);
DECLARE_READ_LINE_MEMBER(an5_r);
protected:
// device-level overrides
virtual void device_start();
private:
required_device<cpu_device> m_maincpu;
required_device<beep_device> m_beep;
};
// ======================> epson_lx810l_t
class epson_lx810l_t : public epson_lx800_t
{
public:
// construction/destruction
epson_lx810l_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// optional information overrides
virtual const rom_entry *device_rom_region() const;
};
// ======================> epson_ap2000_t
class epson_ap2000_t : public epson_lx800_t
{
public:
// construction/destruction
epson_ap2000_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// optional information overrides
virtual const rom_entry *device_rom_region() const;
};
// device type definition
extern const device_type EPSON_LX800;
extern const device_type EPSON_LX810L;
extern const device_type EPSON_AP2000;
#endif

View File

@ -1986,9 +1986,6 @@ fanucs15 // 1990
//********** Misc **********************************************************
ex800 // Epson EX-800 printer
lx800 // Epson LX-800 printer
lx810l // Epson LX-810L printer
ap2000 // Epson Action Printer 2000
ssem // Manchester Small-Scale Experimental Machine, "Baby"
craft // Craft, by [lft]

View File

@ -1268,7 +1268,6 @@ $(MESSOBJ)/epoch.a: \
$(MESSOBJ)/epson.a: \
$(MESS_DRIVERS)/ex800.o \
$(MESS_DRIVERS)/hx20.o \
$(MESS_DRIVERS)/lx800.o \
$(MESS_MACHINE)/e05a03.o \
$(MESS_DRIVERS)/px4.o \
$(MESS_DRIVERS)/px8.o \
@ -2286,7 +2285,6 @@ $(MESS_DRIVERS)/junior.o: $(MESS_LAYOUT)/junior.lh
$(MESS_DRIVERS)/lc80.o: $(MESS_LAYOUT)/lc80.lh
$(MESS_DRIVERS)/llc.o: $(MESS_LAYOUT)/llc1.lh
$(MESS_DRIVERS)/lynx.o: $(MESS_LAYOUT)/lynx.lh
$(MESS_DRIVERS)/lx800.o: $(MESS_LAYOUT)/lx800.lh
$(MESS_DRIVERS)/mac.o: $(MESS_LAYOUT)/mac.lh
$(MESS_MACHINE)/megacd.o: $(MESS_LAYOUT)/megacd.lh
$(MESS_DRIVERS)/mekd2.o: $(MESS_LAYOUT)/mekd2.lh