tabe22: Support chargen high bit, document key repeat

This commit is contained in:
Dirk Best 2022-01-03 01:59:07 +01:00
parent 94745408db
commit d15c12809b
2 changed files with 23 additions and 13 deletions

View File

@ -24,6 +24,10 @@
Notes:
- The hardware has some similarities to cit220.cpp
- Everything here is guessed (including the system name), no docs available
- Other (undumped) terminals from Tab:
* 132/15: VT52/VT100/VT132 (1982)
* 132/15-G: Tektronix graphics (1982)
* 132/15-H: Honeywell (1983)
***************************************************************************/
@ -67,6 +71,13 @@ protected:
virtual void machine_start() override;
private:
required_device<i8085a_cpu_device> m_maincpu;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<scn2674_device> m_avdc;
required_region_ptr<uint8_t> m_chargen;
required_device<address_map_bank_device> m_vram_bank;
void mem_map(address_map &map);
void io_map(address_map &map);
void vram_map(address_map &map);
@ -74,13 +85,6 @@ private:
void char_map(address_map &map);
void attr_map(address_map &map);
required_device<i8085a_cpu_device> m_maincpu;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<scn2674_device> m_avdc;
required_region_ptr<uint8_t> m_chargen;
optional_device<address_map_bank_device> m_vram_bank;
void video_ctrl_w(uint8_t data);
void crt_brightness_w(uint8_t data);
SCN2674_DRAW_CHARACTER_MEMBER(draw_character);
@ -155,10 +159,8 @@ void tabe22_state::crt_brightness_w(uint8_t data)
SCN2674_DRAW_CHARACTER_MEMBER( tabe22_state::draw_character )
{
uint16_t data = m_chargen[charcode << 4 | linecount] << 2;
const pen_t *const pen = m_palette->pens();
// 76------ unknown
// 7------- chargen high bit
// -6------ unknown
// --5----- shaded
// ---4---- unknown
// ----3--- bold
@ -166,6 +168,9 @@ SCN2674_DRAW_CHARACTER_MEMBER( tabe22_state::draw_character )
// ------1- underline
// -------0 reverse
uint16_t data = m_chargen[(BIT(attrcode, 7) << 12) | charcode << 4 | linecount] << 2;
const pen_t *const pen = m_palette->pens();
if (ul && (BIT(attrcode, 1)))
data = 0x1ff;

View File

@ -248,10 +248,15 @@ void e22_kbd_hle_device::received_byte(uint8_t byte)
switch (byte)
{
case 0x02: break; // keyclick on
case 0x06: transmit_byte(0x01); break; // can't be 0x00
case 0x07: transmit_byte(0x02); break; // can't be 0x00
case 0x06: transmit_byte(0x01); break; // keyboard model, can't be 0
case 0x07: transmit_byte(0x02); break; // read 3 times, can't be 0 in total
case 0x09: break; // bell?
case 0x12: break; // keyclick off
case 0xf8: logerror("Key repeat disabled\n"); break;
case 0xf9: logerror("Key repeat 6 cps\n"); break;
case 0xfa: logerror("Key repeat 12 cps\n"); break;
case 0xfb: logerror("Key repeat 24 cps\n"); break;
case 0xfc: logerror("Key repeat 30 cps\n"); break;
}
}