pcd: fix pcx keyboard and display width (nw)

This commit is contained in:
cracyc 2020-05-05 10:51:21 -05:00
parent 5cf1925789
commit 43a1e41737

View File

@ -164,7 +164,7 @@ void pcx_video_device::device_add_mconfig(machine_config &config)
SCN2672(config, m_crtc, 24_MHz_XTAL / 12); // used with SCB2673B SCN2672(config, m_crtc, 24_MHz_XTAL / 12); // used with SCB2673B
m_crtc->intr_callback().set_inputline("graphics", MCS51_INT0_LINE); m_crtc->intr_callback().set_inputline("graphics", MCS51_INT0_LINE);
m_crtc->set_character_width(12); m_crtc->set_character_width(8);
m_crtc->set_display_callback(FUNC(pcx_video_device::display_pixels)); m_crtc->set_display_callback(FUNC(pcx_video_device::display_pixels));
m_crtc->set_screen("screen"); m_crtc->set_screen("screen");
m_crtc->set_addrmap(0, &pcx_video_device::pcx_char_ram); m_crtc->set_addrmap(0, &pcx_video_device::pcx_char_ram);
@ -221,22 +221,16 @@ SCN2672_DRAW_CHARACTER_MEMBER(pcx_video_device::display_pixels)
uint16_t data = m_charrom[charcode * 16 + linecount + (attrcode & 0x20 ? 4096 : 0)]; uint16_t data = m_charrom[charcode * 16 + linecount + (attrcode & 0x20 ? 4096 : 0)];
if (cursor) if (cursor)
data = 0x7ff; data = 0xff;
else
{
data <<= 1;
data |= data << 1;
}
if (BIT(m_p1, 5)) if (BIT(m_p1, 5))
data ^= 0x7ff; data ^= 0xff;
for (int i = 0; i < 12; i++) for (int i = 0; i < 8; i++)
{ {
rgb_t pix = palette().pen(BIT(data, 10) ? 1 : 0); rgb_t pix = palette().pen(BIT(data, 7) ? 1 : 0);
bitmap.pix32(y, x++) = pix; bitmap.pix32(y, x++) = pix;
if (i != 1) data <<= 1;
data <<= 1;
} }
} }
@ -429,7 +423,7 @@ void pcx_video_device::device_start()
m_txd_handler.resolve_safe(); m_txd_handler.resolve_safe();
set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1); set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1);
set_rate(600*2); // FIXME: fix the keyboard when the mc2661 baud rate calc is fixed set_rate(600);
decode_gfx(gfx_pcx); decode_gfx(gfx_pcx);
} }