cit101, cit101_kbd: Update notes; minor keyboard tweaks

This commit is contained in:
AJR 2020-08-05 20:43:00 -04:00
parent 01d5d49518
commit 01438a2cf8
3 changed files with 36 additions and 8 deletions

View File

@ -30,6 +30,8 @@ CIT-101e (released 1983)
Ergonomic redesign of CIT-101.
Competitive with DEC VT220 (which was released several months later).
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.
CIG-201
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+A: Set answerback message
* 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))
{
// TODO: interlace mode
const int height = 300;
if (BIT(data, 1))
screen_reconfigure(19.6608_MHz_XTAL, 800, 1000, 288, height);

View File

@ -46,8 +46,8 @@
9F (Invalid key)
Two types of host commands are processed. Commands with bit 0
set affect the LEDs (TODO: identify which LEDs are which), and
commands with bit 0 clear are needed to initiate a new scan.
set affect the LEDs, and commands with bit 0 clear affect the
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_keys(*this, "KEYS%d", 0U)
, m_kbid(*this, "KBID")
, m_leds(*this, "led%d", 1U)
, m_leds(*this, "led%d", 0U)
, m_txd_callback(*this)
, m_kbid_enabled(false)
{
@ -110,8 +110,16 @@ void cit101_keyboard_device::p2_w(u8 data)
void cit101_keyboard_device::leds_w(u8 data)
{
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++)
m_leds[i] = !BIT(data, i + 1);
m_leds[i] = !BIT(data, 7 - i);
}
u8 cit101_keyboard_device::keys_r()
@ -147,8 +155,8 @@ INPUT_PORTS_START(cit101_keyboard)
PORT_BIT(0xe7, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("MODIFIERS")
PORT_BIT(1, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Repeat") PORT_CODE(KEYCODE_RCONTROL)
PORT_BIT(2, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_SHIFT_2) PORT_CODE(KEYCODE_LCONTROL)
PORT_BIT(1, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rept") PORT_CODE(KEYCODE_RCONTROL)
PORT_BIT(2, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CHAR(UCHAR_SHIFT_2) PORT_CODE(KEYCODE_LCONTROL)
PORT_START("KEYS0")
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)
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
{
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)
{
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);
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)
}

View File

@ -27,6 +27,8 @@ public:
// device type constructor
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
auto txd_callback() { return m_txd_callback.bind(); }
@ -77,6 +79,7 @@ public:
protected:
// device-level overrides
virtual ioport_constructor device_input_ports() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
};