mirror of
https://github.com/holub/mame
synced 2025-04-25 01:40:16 +03:00
Merge pull request #220 from meesokim/patch-1
[MESS] spc1000 added the centronics printer port [meesokim]
This commit is contained in:
commit
47fe92a260
@ -24,6 +24,7 @@ NOTE: 2014-09-13: added code from someone's modified MESS driver for floppy
|
||||
|
||||
2014-10-11: Replaced above code with MESS-compliant code [Meeso Kim]
|
||||
|
||||
2015-06-19: Added code for the centronics printer port
|
||||
|
||||
IMPORTANT NOTE for tape usage: you *FIRST* press PLAY on the tape drive
|
||||
(e.g. by pressing F2 in partial emulated keyboard mode) and *THEN* you
|
||||
@ -140,6 +141,7 @@ IMPORTANT NOTE for tape usage: you *FIRST* press PLAY on the tape drive
|
||||
#include "video/mc6847.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "formats/spc1000_cas.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
|
||||
#include "bus/spc1000/exp.h"
|
||||
#include "bus/spc1000/fdd.h"
|
||||
@ -159,6 +161,7 @@ public:
|
||||
, m_p_videoram(*this, "videoram")
|
||||
, m_io_kb(*this, "LINE")
|
||||
, m_io_joy(*this, "JOY")
|
||||
, m_centronics(*this, "centronics")
|
||||
{}
|
||||
|
||||
DECLARE_WRITE8_MEMBER(iplk_w);
|
||||
@ -167,6 +170,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(gmode_w);
|
||||
DECLARE_READ8_MEMBER(gmode_r);
|
||||
DECLARE_READ8_MEMBER(porta_r);
|
||||
DECLARE_WRITE_LINE_MEMBER( centronics_busy_w ) { m_centronics_busy = state; }
|
||||
DECLARE_READ8_MEMBER(mc6847_videoram_r);
|
||||
DECLARE_WRITE8_MEMBER(cass_w);
|
||||
DECLARE_READ8_MEMBER(keyboard_r);
|
||||
@ -181,6 +185,7 @@ private:
|
||||
UINT16 m_page;
|
||||
UINT8 *m_work_ram;
|
||||
bool m_motor;
|
||||
bool m_centronics_busy;
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
required_device<z80_device> m_maincpu;
|
||||
@ -190,6 +195,7 @@ private:
|
||||
required_shared_ptr<UINT8> m_p_videoram;
|
||||
required_ioport_array<10> m_io_kb;
|
||||
required_ioport m_io_joy;
|
||||
required_device<centronics_device> m_centronics;
|
||||
};
|
||||
|
||||
static ADDRESS_MAP_START(spc1000_mem, AS_PROGRAM, 8, spc1000_state )
|
||||
@ -221,6 +227,7 @@ WRITE8_MEMBER( spc1000_state::cass_w )
|
||||
if (m && !m_motor)
|
||||
m_cass->change_state(m_cass->get_state() & CASSETTE_MASK_MOTOR ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
|
||||
m_motor = m;
|
||||
m_centronics->write_strobe(BIT(data, 2) ? true : false);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(spc1000_state::gmode_w)
|
||||
@ -431,7 +438,7 @@ READ8_MEMBER( spc1000_state::porta_r )
|
||||
data |= (m_cass->input() > 0.0038) ? 0x80 : 0;
|
||||
data |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) != CASSETTE_STOPPED) && ((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED) ? 0x00 : 0x40;
|
||||
data &= ~(m_io_joy->read() & 0x3f);
|
||||
|
||||
data &= ~((m_centronics_busy == 0)<< 5);
|
||||
return data;
|
||||
}
|
||||
|
||||
@ -470,6 +477,7 @@ static MACHINE_CONFIG_START( spc1000, spc1000_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("ay8910", AY8910, XTAL_4MHz / 1)
|
||||
MCFG_AY8910_PORT_A_READ_CB(READ8(spc1000_state, porta_r))
|
||||
MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
@ -477,6 +485,11 @@ static MACHINE_CONFIG_START( spc1000, spc1000_state )
|
||||
MCFG_DEVICE_ADD("ext1", SPC1000_EXP_SLOT, 0)
|
||||
MCFG_DEVICE_SLOT_INTERFACE(spc1000_exp, NULL, false)
|
||||
|
||||
MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
|
||||
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(spc1000_state, centronics_busy_w))
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||
MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
|
||||
|
||||
MCFG_CASSETTE_ADD("cassette")
|
||||
MCFG_CASSETTE_FORMATS(spc1000_cassette_formats)
|
||||
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
|
||||
|
Loading…
Reference in New Issue
Block a user