summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/aim65.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/aim65.cpp')
-rw-r--r--src/mame/drivers/aim65.cpp26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp
index 930a254ea84..619c8c4fe99 100644
--- a/src/mame/drivers/aim65.cpp
+++ b/src/mame/drivers/aim65.cpp
@@ -7,9 +7,7 @@ Rewrite in progress, Dirk Best, 2007-07-31
Updated by Robbbert 2019-04-14
ToDo:
- - Printer. Tried to implement this but it was not working, currently disabled.
- Implement punchtape reader/writer
- - Front panel Reset switch (switch S1)
- Front panel Run/Step switch (switch S2)
@@ -161,6 +159,12 @@ INPUT_CHANGED_MEMBER(aim65_state::reset_button)
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
}
+void aim65_state::aim65_palette(palette_device &palette) const
+{
+ palette.set_pen_color(0, rgb_t(0x20, 0x02, 0x05));
+ palette.set_pen_color(1, rgb_t(0xc0, 0x00, 0x00));
+}
+
/***************************************************************************
MACHINE DRIVERS
@@ -220,6 +224,17 @@ MACHINE_CONFIG_START(aim65_state::aim65)
DL1416T(config, m_ds[4], u32(0));
m_ds[4]->update().set(FUNC(aim65_state::update_ds<5>));
+ // pseudo-"screen" for the thermal printer. Index 0.
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_screen_update(FUNC(aim65_state::screen_update));
+ screen.set_size(160, 200);
+ screen.set_visarea_full();
+ screen.set_palette("palette");
+
+ PALETTE(config, m_palette, FUNC(aim65_state::aim65_palette), 2);
+
/* Sound - wave sound only */
SPEAKER(config, "mono").front_center();
WAVE(config, "wave", m_cassette1).add_route(ALL_OUTPUTS, "mono", 0.1);
@@ -233,6 +248,7 @@ MACHINE_CONFIG_START(aim65_state::aim65)
VIA6522(config, m_via0, AIM65_CLOCK);
m_via0->readpb_handler().set([this] () { return aim65_state::z32_pb_r(); });
+ m_via0->writepa_handler().set([this] (u8 data) { aim65_state::z32_pa_w(data); });
m_via0->writepb_handler().set([this] (u8 data) { aim65_state::z32_pb_w(data); });
// in CA1 printer ready?
// out CA2 cass control (H=in)
@@ -240,7 +256,7 @@ MACHINE_CONFIG_START(aim65_state::aim65)
// out CB1 printer start
//m_via0->cb1_handler().set(FUNC(aim65_state::z32_cb1_w));
// out CB2 turn printer on
- //m_via0->cb2_handler().set(FUNC(aim65_state::z32_cb2_w));
+ m_via0->cb2_handler().set([this] (bool state) { aim65_state::z32_cb2_w(state); });
m_via0->irq_handler().set_inputline(m_maincpu, M6502_IRQ_LINE);
VIA6522(config, m_via1, AIM65_CLOCK);
@@ -255,8 +271,8 @@ MACHINE_CONFIG_START(aim65_state::aim65)
CASSETTE(config, m_cassette2);
m_cassette2->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- /* TTY interface */
- RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
+ // Screen for TTY interface. Index 1.
+ RS232_PORT(config, m_rs232, default_rs232_devices, "terminal");
//m_rs232->rxd_handler().set(m_via0, FUNC(via6522_device::write_pb6)); // function disabled in 6522via.cpp
m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(serial_term));