summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/swtpc8212.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/swtpc8212.cpp')
-rw-r--r--src/devices/machine/swtpc8212.cpp50
1 files changed, 17 insertions, 33 deletions
diff --git a/src/devices/machine/swtpc8212.cpp b/src/devices/machine/swtpc8212.cpp
index fffd6eefe7f..e7e739b4373 100644
--- a/src/devices/machine/swtpc8212.cpp
+++ b/src/devices/machine/swtpc8212.cpp
@@ -136,8 +136,10 @@ swtp|ct8212|southwest technical products ct8212,
****************************************************************************/
#include "emu.h"
-#include "machine/swtpc8212.h"
+#include "swtpc8212.h"
+
#include "machine/input_merger.h"
+
#include "screen.h"
#include "speaker.h"
@@ -271,12 +273,6 @@ void swtpc8212_device::pia1_pa_w(uint8_t data)
m_printer_data = data;
}
-int swtpc8212_device::pia1_ca1_r()
-{
- // External parallel printer busy input.
- return 0;
-}
-
void swtpc8212_device::pia1_ca2_w(int state)
{
// External parallel printer data ready.
@@ -329,14 +325,9 @@ MC6845_UPDATE_ROW(swtpc8212_device::update_row)
}
}
-void swtpc8212_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+TIMER_CALLBACK_MEMBER(swtpc8212_device::bell_off)
{
- switch (id)
- {
- case BELL_TIMER_ID:
- m_beeper->set_state(0);
- break;
- }
+ m_beeper->set_state(0);
}
void swtpc8212_device::rs232_conn_dcd_w(int state)
@@ -379,16 +370,9 @@ void swtpc8212_device::write_rts(int state)
m_rs232_conn_rts_handler(state);
}
-void swtpc8212_device::device_resolve_objects()
-{
- m_rs232_conn_dtr_handler.resolve_safe();
- m_rs232_conn_rts_handler.resolve_safe();
- m_rs232_conn_txd_handler.resolve_safe();
-}
-
void swtpc8212_device::device_start()
{
- m_bell_timer = timer_alloc(BELL_TIMER_ID);
+ m_bell_timer = timer_alloc(FUNC(swtpc8212_device::bell_off), this);
save_item(NAME(m_latch_data));
save_item(NAME(m_keyboard_data));
@@ -441,22 +425,22 @@ INPUT_PORTS_START(swtpc8212)
PORT_BIT(0x0002U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7 / Form") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
PORT_BIT(0x0004U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8 / Xmit") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
PORT_BIT(0x0001U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9 / ??") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
- PORT_BIT(0x0008U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("\xC3\xB7 / ??") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
+ PORT_BIT(0x0008U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(u8"÷ / ??") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
PORT_BIT(0x0200U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4 / Scroll Up") PORT_CODE(KEYCODE_PGDN) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
- PORT_BIT(0x0400U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5 / \xE2\x86\x91") PORT_CODE(KEYCODE_UP) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
+ PORT_BIT(0x0400U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(u8"5 / \u2191") PORT_CODE(KEYCODE_UP) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0) // U+2191 = ↑
PORT_BIT(0x0100U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6 / Insert") PORT_CODE(KEYCODE_0_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
- PORT_BIT(0x0800U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("\xC3\x97 / ??") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
- PORT_BIT(0x0020U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1 / \xE2\x86\x90") PORT_CODE(KEYCODE_LEFT) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
+ PORT_BIT(0x0800U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(u8"× / ??") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
+ PORT_BIT(0x0020U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(u8"1 / \u2190") PORT_CODE(KEYCODE_LEFT) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0) // U+2190 = ←
PORT_BIT(0x0040U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2 / Home") PORT_CODE(KEYCODE_HOME) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
- PORT_BIT(0x0010U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3 / \xE2\x86\x92") PORT_CODE(KEYCODE_RIGHT) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
+ PORT_BIT(0x0010U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(u8"3 / \u2192") PORT_CODE(KEYCODE_RIGHT) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0) // U+2192 = →
PORT_BIT(0x0080U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("- / LF") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
PORT_BIT(0x2000U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0 / Scroll Down") PORT_CODE(KEYCODE_PGUP) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
- PORT_BIT(0x4000U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0 / \xE2\x86\x93") PORT_CODE(KEYCODE_DOWN) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
+ PORT_BIT(0x4000U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(u8"0 / \u2193") PORT_CODE(KEYCODE_DOWN) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0) // U+2193 = ↓
PORT_BIT(0x1000U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(". / Delete") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
PORT_BIT(0x8000U, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("+ / CR") PORT_CHANGED_MEMBER(DEVICE_SELF, swtpc8212_device, keypad_changed, 0)
PORT_START("DIP_SWITCHES")
- PORT_DIPNAME(0x1f, 0x19, "Baud Rate") PORT_DIPLOCATION("DIP:4,3,2,1,0")
+ PORT_DIPNAME(0x1f, 0x19, "Baud Rate") PORT_DIPLOCATION("DIP:5,4,3,2,1")
PORT_DIPSETTING(0x04, "110")
PORT_DIPSETTING(0x0a, "300")
PORT_DIPSETTING(0x0d, "600")
@@ -467,13 +451,13 @@ INPUT_PORTS_START(swtpc8212)
PORT_DIPSETTING(0x19, "9600")
PORT_DIPSETTING(0x1c, "19200")
PORT_DIPSETTING(0x1f, "38400")
- PORT_DIPNAME(0x20, 0x00, "Mode switch") PORT_DIPLOCATION("DIP:5")
+ PORT_DIPNAME(0x20, 0x00, "Mode switch") PORT_DIPLOCATION("DIP:6")
PORT_DIPSETTING(0x00, "Conversational")
PORT_DIPSETTING(0x20, "Page edit")
- PORT_DIPNAME(0x40, 0x00, "No Parity") PORT_DIPLOCATION("DIP:6")
+ PORT_DIPNAME(0x40, 0x00, "No Parity") PORT_DIPLOCATION("DIP:7")
PORT_DIPSETTING(0x00, "No Parity")
PORT_DIPSETTING(0x40, "Parity")
- PORT_DIPNAME(0x80, 0x00, "Parity Select") PORT_DIPLOCATION("DIP:7")
+ PORT_DIPNAME(0x80, 0x00, "Parity Select") PORT_DIPLOCATION("DIP:8")
PORT_DIPSETTING(0x00, "Odd or Mark")
PORT_DIPSETTING(0x80, "Even or Space")
@@ -538,7 +522,7 @@ void swtpc8212_device::device_add_mconfig(machine_config &config)
// CB2 - Handshake output?
PIA6821(config, m_pia1);
m_pia1->writepa_handler().set(FUNC(swtpc8212_device::pia1_pa_w));
- m_pia1->readca1_handler().set(FUNC(swtpc8212_device::pia1_ca1_r));
+ m_pia1->ca1_w(0); // External parallel printer busy input.
m_pia1->ca2_handler().set(FUNC(swtpc8212_device::pia1_ca2_w));
m_pia1->readpb_handler().set_ioport("DIP_SWITCHES");