pk8020.cpp: Add printer port
This commit is contained in:
parent
037e3c41d3
commit
177a0e8390
@ -249,6 +249,14 @@ void pk8020_state::pk8020(machine_config &config)
|
||||
iop1.out_pc_callback().set(FUNC(pk8020_state::video_page_w));
|
||||
|
||||
i8255_device &iop2(I8255(config, "iop2")); // КР580ВВ55А (D16)
|
||||
iop2.out_pa_callback().set(m_printer, FUNC(centronics_device::write_data0)).bit(0).invert();
|
||||
iop2.out_pa_callback().append(m_printer, FUNC(centronics_device::write_data1)).bit(1).invert();
|
||||
iop2.out_pa_callback().append(m_printer, FUNC(centronics_device::write_data2)).bit(2).invert();
|
||||
iop2.out_pa_callback().append(m_printer, FUNC(centronics_device::write_data3)).bit(3).invert();
|
||||
iop2.out_pa_callback().append(m_printer, FUNC(centronics_device::write_data4)).bit(4).invert();
|
||||
iop2.out_pa_callback().append(m_printer, FUNC(centronics_device::write_data5)).bit(5).invert();
|
||||
iop2.out_pa_callback().append(m_printer, FUNC(centronics_device::write_data6)).bit(6).invert();
|
||||
iop2.out_pa_callback().append(m_printer, FUNC(centronics_device::write_data7)).bit(7).invert();
|
||||
iop2.out_pc_callback().set(FUNC(pk8020_state::ppi_2_portc_w));
|
||||
|
||||
I8255(config, "iop3"); // КР580ВВ55А (D2)
|
||||
@ -301,6 +309,9 @@ void pk8020_state::pk8020(machine_config &config)
|
||||
|
||||
CASSETTE(config, "cassette").set_default_state(CASSETTE_PLAY);
|
||||
|
||||
CENTRONICS(config, m_printer, centronics_devices, nullptr);
|
||||
m_printer->busy_handler().set(m_inr, FUNC(pic8259_device::ir6_w)).invert();
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("258K").set_default_value(0x00); // 64 + 4*48 + 2 = 258
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "imagedev/floppy.h"
|
||||
#include "machine/bankdev.h"
|
||||
@ -37,6 +38,7 @@ public:
|
||||
m_floppy(*this, "fdc:%u", 0U),
|
||||
m_inr(*this, "inr"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_printer(*this, "printer"),
|
||||
m_region_maincpu(*this, "maincpu"),
|
||||
m_region_gfx1(*this, "gfx1"),
|
||||
m_io_port(*this, "LINE%u", 0U),
|
||||
@ -102,6 +104,7 @@ private:
|
||||
required_device_array<floppy_connector, 4> m_floppy;
|
||||
required_device<pic8259_device> m_inr;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<centronics_device> m_printer;
|
||||
required_memory_region m_region_maincpu;
|
||||
required_region_ptr<uint8_t> m_region_gfx1;
|
||||
required_ioport_array<16> m_io_port;
|
||||
|
@ -126,8 +126,10 @@ void pk8020_state::floppy_control_w(uint8_t data)
|
||||
void pk8020_state::ppi_2_portc_w(uint8_t data)
|
||||
{
|
||||
m_sound_gate = BIT(data,3);
|
||||
|
||||
m_speaker->level_w(m_sound_gate ? m_sound_level : 0);
|
||||
|
||||
m_printer->write_select(!BIT(data, 4));
|
||||
m_printer->write_strobe(!BIT(data, 5));
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(pk8020_state::pit_out0)
|
||||
|
Loading…
Reference in New Issue
Block a user