nec/pc9821.cpp: bump 7220 couple to use A revision

* fix win95 overlaying startup text on desktop graphics
This commit is contained in:
angelosa 2025-04-24 11:44:29 +02:00
parent d991883a09
commit b6df288773
4 changed files with 27 additions and 8 deletions

View File

@ -69,7 +69,6 @@ public:
set_screen(std::forward<T>(screen_tag));
}
template <typename... T> void set_display_pixels(T &&... args) { m_display_cb.set(std::forward<T>(args)...); }
template <typename... T> void set_draw_text(T &&... args) { m_draw_text_cb.set(std::forward<T>(args)...); }
@ -233,6 +232,13 @@ public:
// construction/destruction
upd7220a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <typename T>
upd7220a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock, T &&screen_tag)
: upd7220a_device(mconfig, tag, owner, clock)
{
set_screen(std::forward<T>(screen_tag));
}
protected:
virtual const tiny_rom_entry *device_rom_region() const override ATTR_COLD;

View File

@ -2231,6 +2231,18 @@ void pc9801_atapi_devices(device_slot_interface &device)
device.option_add("pc98_cd", PC98_CD);
}
void pc9801_state::config_video(machine_config &config)
{
m_hgdc[0]->set_addrmap(0, &pc9801_state::upd7220_1_map);
m_hgdc[0]->set_draw_text(FUNC(pc9801_state::hgdc_draw_text));
m_hgdc[0]->vsync_wr_callback().set(m_hgdc[1], FUNC(upd7220_device::ext_sync_w));
m_hgdc[0]->vsync_wr_callback().append(FUNC(pc9801_state::vrtc_irq));
m_hgdc[1]->set_addrmap(0, &pc9801_state::upd7220_2_map);
m_hgdc[1]->set_display_pixels(FUNC(pc9801_state::hgdc_display_pixels));
}
void pc9801_state::config_keyboard(machine_config &config)
{
I8251(config, m_sio_kbd, 0);
@ -2432,14 +2444,8 @@ void pc9801_state::pc9801_common(machine_config &config)
m_screen->set_screen_update(FUNC(pc9801_state::screen_update));
UPD7220(config, m_hgdc[0], 21.0526_MHz_XTAL / 8, "screen");
m_hgdc[0]->set_addrmap(0, &pc9801_state::upd7220_1_map);
m_hgdc[0]->set_draw_text(FUNC(pc9801_state::hgdc_draw_text));
m_hgdc[0]->vsync_wr_callback().set(m_hgdc[1], FUNC(upd7220_device::ext_sync_w));
m_hgdc[0]->vsync_wr_callback().append(FUNC(pc9801_state::vrtc_irq));
UPD7220(config, m_hgdc[1], 21.0526_MHz_XTAL / 8, "screen");
m_hgdc[1]->set_addrmap(0, &pc9801_state::upd7220_2_map);
m_hgdc[1]->set_display_pixels(FUNC(pc9801_state::hgdc_display_pixels));
config_video(config);
SPEAKER(config, "mono").front_center();

View File

@ -199,6 +199,7 @@ protected:
DECLARE_MACHINE_START(pc9801_common);
DECLARE_MACHINE_RESET(pc9801_common);
void config_video(machine_config &config);
void config_keyboard(machine_config &config);
void pc9801_mouse(machine_config &config);
void pc9801_cbus(machine_config &config);

View File

@ -803,6 +803,12 @@ void pc9821_state::pc9821(machine_config &config)
PALETTE(config.replace(), m_palette, FUNC(pc9821_state::pc9801_palette), 16 + 16 + 256);
// win95 expects to be A revision, otherwise it will overlay startup text prompts over desktop GFX
// NOTE: possibly this bump happened around PC-9801BX series
UPD7220A(config.replace(), m_hgdc[0], 21.0526_MHz_XTAL / 8, "screen");
UPD7220A(config.replace(), m_hgdc[1], 21.0526_MHz_XTAL / 8, "screen");
config_video(config);
PC98_119_KBD(config.replace(), m_keyb, 0);
m_keyb->rxd_callback().set("sio_kbd", FUNC(i8251_device::write_rxd));