mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
einstein: Fix centronics port
Printing now works.
This commit is contained in:
parent
32b0ea94de
commit
1c35fc11b7
@ -23,6 +23,7 @@
|
||||
#include "machine/clock.h"
|
||||
#include "machine/i8251.h"
|
||||
#include "machine/ram.h"
|
||||
#include "machine/rescap.h"
|
||||
#include "machine/timer.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "machine/z80ctc.h"
|
||||
@ -72,6 +73,7 @@ public:
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_psg(*this, IC_I030),
|
||||
m_centronics(*this, "centronics"),
|
||||
m_strobe_timer(*this, "strobe"),
|
||||
m_bios(*this, "bios"),
|
||||
m_bank1(*this, "bank1"),
|
||||
m_bank2(*this, "bank2"),
|
||||
@ -101,6 +103,8 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_centronics_perror);
|
||||
DECLARE_WRITE_LINE_MEMBER(write_centronics_fault);
|
||||
DECLARE_WRITE_LINE_MEMBER(ardy_w);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(strobe_callback);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
@ -118,6 +122,7 @@ private:
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<ay8910_device> m_psg;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<timer_device> m_strobe_timer;
|
||||
required_memory_region m_bios;
|
||||
required_memory_bank m_bank1;
|
||||
required_memory_bank m_bank2;
|
||||
@ -224,21 +229,35 @@ WRITE8_MEMBER(einstein_state::drsel_w)
|
||||
CENTRONICS
|
||||
***************************************************************************/
|
||||
|
||||
WRITE_LINE_MEMBER(einstein_state::write_centronics_busy)
|
||||
WRITE_LINE_MEMBER( einstein_state::write_centronics_busy )
|
||||
{
|
||||
m_centronics_busy = state;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(einstein_state::write_centronics_perror)
|
||||
WRITE_LINE_MEMBER( einstein_state::write_centronics_perror )
|
||||
{
|
||||
m_centronics_perror = state;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(einstein_state::write_centronics_fault)
|
||||
WRITE_LINE_MEMBER( einstein_state::write_centronics_fault )
|
||||
{
|
||||
m_centronics_fault = state;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( einstein_state::ardy_w )
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
m_centronics->write_strobe(1);
|
||||
m_strobe_timer->adjust(attotime::from_double(TIME_OF_74LS123(RES_K(10), CAP_N(1))));
|
||||
}
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( einstein_state::strobe_callback )
|
||||
{
|
||||
m_centronics->write_strobe(0);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
INTERRUPTS
|
||||
@ -532,7 +551,7 @@ static MACHINE_CONFIG_START( einstein )
|
||||
MCFG_DEVICE_ADD(IC_I063, Z80PIO, XTAL_X002 / 2)
|
||||
MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(IC_I001, INPUT_LINE_IRQ0))
|
||||
MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
|
||||
MCFG_Z80PIO_OUT_ARDY_CB(DEVWRITELINE("centronics", centronics_device, write_strobe))
|
||||
MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(einstein_state, ardy_w))
|
||||
MCFG_Z80PIO_IN_PB_CB(DEVREAD8("user", einstein_userport_device, read))
|
||||
MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("user", einstein_userport_device, write))
|
||||
MCFG_Z80PIO_OUT_BRDY_CB(DEVWRITELINE("user", einstein_userport_device, brdy_w))
|
||||
@ -583,6 +602,8 @@ static MACHINE_CONFIG_START( einstein )
|
||||
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD("strobe", einstein_state, strobe_callback)
|
||||
|
||||
/* uart */
|
||||
MCFG_DEVICE_ADD(IC_I060, I8251, 0)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user