mirror of
https://github.com/holub/mame
synced 2025-07-01 08:18:59 +03:00
cit101, cit101_kbd: Update notes; minor keyboard tweaks
This commit is contained in:
parent
01d5d49518
commit
01438a2cf8
@ -30,6 +30,8 @@ CIT-101e (released 1983)
|
|||||||
Ergonomic redesign of CIT-101.
|
Ergonomic redesign of CIT-101.
|
||||||
Competitive with DEC VT220 (which was released several months later).
|
Competitive with DEC VT220 (which was released several months later).
|
||||||
14-inch monochrome screen with tilt/swivel, 24 lines of 80 or 132 characters.
|
14-inch monochrome screen with tilt/swivel, 24 lines of 80 or 132 characters.
|
||||||
|
10 x 12 (80 columns)/9 x 12 (132 columns) display cell.
|
||||||
|
19,610 Hz (80 columns)/18,870 Hz (132 columns) horizontal frequency.
|
||||||
85-key low-profile keyboard.
|
85-key low-profile keyboard.
|
||||||
CIG-201
|
CIG-201
|
||||||
Plug-in graphics card for CIT-101 and CIT-101e.
|
Plug-in graphics card for CIT-101 and CIT-101e.
|
||||||
@ -47,7 +49,9 @@ Special SET-UP control codes:
|
|||||||
* CTRL+D: Restore default NVR settings
|
* CTRL+D: Restore default NVR settings
|
||||||
* CTRL+A: Set answerback message
|
* CTRL+A: Set answerback message
|
||||||
* CTRL+X: Enable/disable Bidirectional Auxiliary I/O Channel and SET-UP D Mode
|
* CTRL+X: Enable/disable Bidirectional Auxiliary I/O Channel and SET-UP D Mode
|
||||||
(undocumented; SET-UP B Mode only)
|
(SET-UP B Mode only; documented only for CIT-101e but also valid on original)
|
||||||
|
|
||||||
|
The NVR checksum error reported when the terminal is first used is nonfatal. Default settings will be used and can be saved.
|
||||||
|
|
||||||
************************************************************************************************************************************/
|
************************************************************************************************************************************/
|
||||||
|
|
||||||
@ -301,6 +305,7 @@ void cit101_state::screen_control_101e_w(u8 data)
|
|||||||
{
|
{
|
||||||
if ((m_extraram[0] & 0x06) != (data & 0x06))
|
if ((m_extraram[0] & 0x06) != (data & 0x06))
|
||||||
{
|
{
|
||||||
|
// TODO: interlace mode
|
||||||
const int height = 300;
|
const int height = 300;
|
||||||
if (BIT(data, 1))
|
if (BIT(data, 1))
|
||||||
screen_reconfigure(19.6608_MHz_XTAL, 800, 1000, 288, height);
|
screen_reconfigure(19.6608_MHz_XTAL, 800, 1000, 288, height);
|
||||||
|
@ -46,8 +46,8 @@
|
|||||||
9F (Invalid key)
|
9F (Invalid key)
|
||||||
|
|
||||||
Two types of host commands are processed. Commands with bit 0
|
Two types of host commands are processed. Commands with bit 0
|
||||||
set affect the LEDs (TODO: identify which LEDs are which), and
|
set affect the LEDs, and commands with bit 0 clear affect the
|
||||||
commands with bit 0 clear are needed to initiate a new scan.
|
beeper. Sending a command is necessary to initiate a new scan.
|
||||||
|
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ cit101_keyboard_device::cit101_keyboard_device(const machine_config &mconfig, de
|
|||||||
, m_beeper(*this, "beeper")
|
, m_beeper(*this, "beeper")
|
||||||
, m_keys(*this, "KEYS%d", 0U)
|
, m_keys(*this, "KEYS%d", 0U)
|
||||||
, m_kbid(*this, "KBID")
|
, m_kbid(*this, "KBID")
|
||||||
, m_leds(*this, "led%d", 1U)
|
, m_leds(*this, "led%d", 0U)
|
||||||
, m_txd_callback(*this)
|
, m_txd_callback(*this)
|
||||||
, m_kbid_enabled(false)
|
, m_kbid_enabled(false)
|
||||||
{
|
{
|
||||||
@ -110,8 +110,16 @@ void cit101_keyboard_device::p2_w(u8 data)
|
|||||||
void cit101_keyboard_device::leds_w(u8 data)
|
void cit101_keyboard_device::leds_w(u8 data)
|
||||||
{
|
{
|
||||||
m_kbid_enabled = !BIT(data, 0);
|
m_kbid_enabled = !BIT(data, 0);
|
||||||
|
|
||||||
|
// Bit 7 = ON LINE
|
||||||
|
// Bit 6 = OFF LINE
|
||||||
|
// Bit 5 = KBD LOCKED
|
||||||
|
// Bit 4 = L1
|
||||||
|
// Bit 3 = L2
|
||||||
|
// Bit 2 = L3
|
||||||
|
// Bit 1 = L4
|
||||||
for (int i = 0; i < 7; i++)
|
for (int i = 0; i < 7; i++)
|
||||||
m_leds[i] = !BIT(data, i + 1);
|
m_leds[i] = !BIT(data, 7 - i);
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cit101_keyboard_device::keys_r()
|
u8 cit101_keyboard_device::keys_r()
|
||||||
@ -147,8 +155,8 @@ INPUT_PORTS_START(cit101_keyboard)
|
|||||||
PORT_BIT(0xe7, IP_ACTIVE_LOW, IPT_UNUSED)
|
PORT_BIT(0xe7, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
|
||||||
PORT_START("MODIFIERS")
|
PORT_START("MODIFIERS")
|
||||||
PORT_BIT(1, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Repeat") PORT_CODE(KEYCODE_RCONTROL)
|
PORT_BIT(1, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rept") PORT_CODE(KEYCODE_RCONTROL)
|
||||||
PORT_BIT(2, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_SHIFT_2) PORT_CODE(KEYCODE_LCONTROL)
|
PORT_BIT(2, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CHAR(UCHAR_SHIFT_2) PORT_CODE(KEYCODE_LCONTROL)
|
||||||
|
|
||||||
PORT_START("KEYS0")
|
PORT_START("KEYS0")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF3") PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_CODE(KEYCODE_F3)
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF3") PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_CODE(KEYCODE_F3)
|
||||||
@ -263,11 +271,23 @@ INPUT_PORTS_START(cit101_keyboard)
|
|||||||
PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED)
|
PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
INPUT_PORTS_START(cit101e_keyboard)
|
||||||
|
PORT_INCLUDE(cit101_keyboard)
|
||||||
|
|
||||||
|
PORT_MODIFY("KEYS0")
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad Enter (Print)") PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) PORT_CODE(KEYCODE_ENTER_PAD)
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
ioport_constructor cit101_keyboard_device::device_input_ports() const
|
ioport_constructor cit101_keyboard_device::device_input_ports() const
|
||||||
{
|
{
|
||||||
return INPUT_PORTS_NAME(cit101_keyboard);
|
return INPUT_PORTS_NAME(cit101_keyboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ioport_constructor cit101e_keyboard_device::device_input_ports() const
|
||||||
|
{
|
||||||
|
return INPUT_PORTS_NAME(cit101e_keyboard);
|
||||||
|
}
|
||||||
|
|
||||||
void cit101_keyboard_device::device_add_mconfig(machine_config &config)
|
void cit101_keyboard_device::device_add_mconfig(machine_config &config)
|
||||||
{
|
{
|
||||||
I8035(config, m_mcu, 2.376_MHz_XTAL); // TMP8048P in EA mode (location marked "8048/8035/8748" on original keyboard)
|
I8035(config, m_mcu, 2.376_MHz_XTAL); // TMP8048P in EA mode (location marked "8048/8035/8748" on original keyboard)
|
||||||
@ -280,7 +300,7 @@ void cit101_keyboard_device::device_add_mconfig(machine_config &config)
|
|||||||
m_mcu->t1_in_cb().set_ioport("MODIFIERS").bit(1);
|
m_mcu->t1_in_cb().set_ioport("MODIFIERS").bit(1);
|
||||||
|
|
||||||
SPEAKER(config, "mono").front_center();
|
SPEAKER(config, "mono").front_center();
|
||||||
BEEP(config, m_beeper, 786).add_route(ALL_OUTPUTS, "mono", 0.5); // unknown frequency
|
BEEP(config, m_beeper, 786).add_route(ALL_OUTPUTS, "mono", 0.5); // unknown frequency (original keyboard has a NE555)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,6 +27,8 @@ public:
|
|||||||
// device type constructor
|
// device type constructor
|
||||||
cit101_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
cit101_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
||||||
|
|
||||||
|
static constexpr feature_type unemulated_features() { return feature::SOUND; }
|
||||||
|
|
||||||
// callback configuration
|
// callback configuration
|
||||||
auto txd_callback() { return m_txd_callback.bind(); }
|
auto txd_callback() { return m_txd_callback.bind(); }
|
||||||
|
|
||||||
@ -77,6 +79,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
|
virtual ioport_constructor device_input_ports() const override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user