Explicitly define a clock for all HD44780 and derivative LCD controllers, and add a validity check to ensure the defined clock is non-zero. [Lord Nightmare]

This commit is contained in:
Lord-Nightmare 2023-11-15 17:15:33 -05:00
parent 06910ab5de
commit 6ca98f5f7b
62 changed files with 107 additions and 98 deletions

View File

@ -37,7 +37,7 @@ void bbc_lcd_device::device_add_mconfig(machine_config &config)
PALETTE(config, "palette", FUNC(bbc_lcd_device::lcd_palette), 3);
HD44780(config, m_lcdc);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(4, 20);
m_lcdc->set_pixel_update_cb(FUNC(bbc_lcd_device::lcd_pixel_update));
}

View File

@ -237,7 +237,7 @@ void saitekosa_analyst_device::device_add_mconfig(machine_config &config)
saitekosa_maestro_device::device_add_mconfig(config);
// video hardware
HD44780(config, m_lcd, 0);
HD44780(config, m_lcd, 250'000); // TODO: clock not measured, datasheet typical clock used
}

View File

@ -189,6 +189,14 @@ void hd44780_device::device_reset()
set_busy_flag(1520);
}
//-------------------------------------------------
// device validity check
//-------------------------------------------------
void hd44780_device::device_validity_check(validity_checker &valid) const
{
if (clock() == 0)
osd_printf_error("LCDC clock cannot be zero!\n");
}
//-------------------------------------------------
// timer events

View File

@ -27,7 +27,7 @@ public:
typedef device_delegate<void (bitmap_ind16 &bitmap, u8 line, u8 pos, u8 y, u8 x, int state)> pixel_update_delegate;
// construction/destruction
hd44780_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
hd44780_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
void set_lcd_size(int lines, int chars) { m_lines = lines; m_chars = chars; }
@ -58,6 +58,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_validity_check(validity_checker &valid) const override;
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;

View File

@ -431,7 +431,7 @@ void alesis_state::hr16(machine_config &config)
m_cassette->set_default_state(CASSETTE_STOPPED);
m_cassette->set_interface("hr16_cass");
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 16);
/* sound hardware */

View File

@ -103,10 +103,10 @@ class ax145_state : public driver_device
public:
ax145_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
maincpu(*this, "maincpu"),
lcdc(*this, "hd44780"),
ram(*this, "ram", 0x8000, ENDIANNESS_LITTLE),
rom(*this, "maincpu"),
m_maincpu(*this, "maincpu"),
m_lcdc(*this, "hd44780"),
m_ram(*this, "ram", 0x8000, ENDIANNESS_LITTLE),
m_rom(*this, "maincpu"),
dictionary_bank(*this, "dictionary")
{ }
@ -123,10 +123,10 @@ private:
static constexpr uint8_t ID = 1;
// devices
required_device<hd64180rp_device> maincpu;
required_device<hd44780_device> lcdc;
memory_share_creator<uint8_t> ram;
required_region_ptr<uint8_t> rom;
required_device<hd64180rp_device> m_maincpu;
required_device<hd44780_device> m_lcdc;
memory_share_creator<uint8_t> m_ram;
required_region_ptr<uint8_t> m_rom;
required_memory_bank dictionary_bank;
// config switch
@ -199,17 +199,17 @@ private:
uint8_t lcd_data_r()
{
if(BIT(lcd_signal, 1)) // RS
return lcdc->data_r();
return m_lcdc->data_r();
else
return lcdc->control_r();
return m_lcdc->control_r();
}
void lcd_data_w(uint8_t data)
{
if(BIT(lcd_signal, 0)) { // E
if(BIT(lcd_signal, 1)) // RS
lcdc->data_w(data << 4);
m_lcdc->data_w(data << 4);
else
lcdc->control_w(data << 4);
m_lcdc->control_w(data << 4);
}
}
@ -221,13 +221,13 @@ private:
// int2
TIMER_DEVICE_CALLBACK_MEMBER(int2_timer_callback)
{
maincpu->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
m_maincpu->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
}
uint8_t irq_ack_r()
{
if(!machine().side_effects_disabled())
maincpu->set_input_line(INPUT_LINE_IRQ2, CLEAR_LINE);
m_maincpu->set_input_line(INPUT_LINE_IRQ2, CLEAR_LINE);
return 0;
}
};
@ -238,8 +238,8 @@ void ax145_state::video_start()
void ax145_state::machine_start()
{
maincpu->space(AS_PROGRAM).install_ram(0x02000, 0x03fff, ram); // first 0x2000 bytes of RAM
maincpu->space(AS_PROGRAM).install_ram(0x62000, 0x69fff, ram); // complete 0x8000 bytes of RAM
m_maincpu->space(AS_PROGRAM).install_ram(0x02000, 0x03fff, m_ram); // first 0x2000 bytes of RAM
m_maincpu->space(AS_PROGRAM).install_ram(0x62000, 0x69fff, m_ram); // complete 0x8000 bytes of RAM
dictionary_bank->configure_entries(0, 4, memregion("dictionary")->base(), 0x20000);
// TODO: ROM patch
@ -251,9 +251,9 @@ void ax145_state::machine_reset()
void ax145_state::ax145(machine_config &config) {
// basic machine hardware
HD64180RP(config, maincpu, 12'000'000 / 2);
maincpu->set_addrmap(AS_PROGRAM, &ax145_state::map_program);
maincpu->set_addrmap(AS_IO, &ax145_state::map_io);
HD64180RP(config, m_maincpu, 12'000'000 / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &ax145_state::map_program);
m_maincpu->set_addrmap(AS_IO, &ax145_state::map_io);
TIMER(config, "1khz").configure_periodic(FUNC(ax145_state::int2_timer_callback), attotime::from_hz(1000)); // just guessing frequency, based on LW-30, 350, 450
@ -269,8 +269,8 @@ void ax145_state::ax145(machine_config &config) {
PALETTE(config, "palette", FUNC(ax145_state::palette), 2);
HD44780(config, lcdc, 0);
lcdc->set_lcd_size(2, 40);
HD44780(config, m_lcdc, 250'000); // TODO: Wrong device type, should be HD44780-B02 custom character set mask; clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 40);
}
static INPUT_PORTS_START(ax145)

View File

@ -320,7 +320,7 @@ void canons80_state::canons80(machine_config &config)
screen.set_visarea(0, 16*6-1, 0, 16-1);
screen.set_palette("palette");
hd44780_device &hd44780(HD44780(config, "lcdc"));
hd44780_device &hd44780(HD44780(config, "lcdc", 250'000)); // TODO: Wrong device type, should be T1719A; clock not measured, datasheet typical clock used
hd44780.set_lcd_size(2, 16);
hd44780.set_pixel_update_cb(FUNC(canons80_state::pixel_update));

View File

@ -113,7 +113,7 @@ void ctk2000_state::ctk2000(machine_config &config)
m_maincpu->adc_cb<3>().set_ioport("AIN3");
// LCD
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: Wrong device type, should be ST7066U_0A; clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
m_lcdc->set_pixel_update_cb(FUNC(ctk2000_state::lcd_update));

View File

@ -574,7 +574,7 @@ void ctk551_state::ctk601(machine_config& config)
m_maincpu->write_sci_tx<0>().set(mdout, FUNC(midi_port_device::write_txd));
// LCD
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: Wrong device type, should be SED1278F2A (custom mask variant of SED1278F0A?); clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
auto& screen = SCREEN(config, "screen", SCREEN_TYPE_SVG);
@ -617,7 +617,7 @@ void ctk551_state::ctk551(machine_config &config)
m_maincpu->write_sci_tx<0>().set(mdout, FUNC(midi_port_device::write_txd));
// LCD
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: Wrong device type, should be SED1278F2A (custom mask variant of SED1278F0A?); clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
auto &screen = SCREEN(config, "screen", SCREEN_TYPE_SVG);

View File

@ -475,7 +475,7 @@ void cz101_state::cz101(machine_config &config)
PALETTE(config, "palette", FUNC(cz101_state::cz101_palette), 3);
HD44780(config, m_hd44780, 0);
HD44780(config, m_hd44780, 250'000); // TODO: clock not measured, datasheet typical clock used
m_hd44780->set_lcd_size(2, 16);
m_hd44780->set_function_set_at_any_time();
m_hd44780->set_pixel_update_cb(FUNC(cz101_state::lcd_pixel_update));

View File

@ -277,7 +277,7 @@ void ld50_state::ld50(machine_config &config)
m_maincpu->port_out_cb<3>().set(FUNC(ld50_state::port3_w));
// LCD
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
m_lcdc->set_pixel_update_cb(FUNC(ld50_state::lcd_update));

View File

@ -430,7 +430,7 @@ void rz1_state::rz1(machine_config &config)
PALETTE(config, "palette", FUNC(rz1_state::rz1_palette), 3);
HD44780(config, m_hd44780, 0);
HD44780(config, m_hd44780, 250'000); // TODO: clock not measured, datasheet typical clock used
m_hd44780->set_lcd_size(1, 16);
m_hd44780->set_pixel_update_cb(FUNC(rz1_state::lcd_pixel_update));

View File

@ -287,7 +287,7 @@ void avrmax_state::atm18mcc(machine_config &config)
screen.set_visarea_full();
screen.set_screen_update(FUNC(avrmax_state::screen_update));
HD44780(config, m_lcd, 0);
HD44780(config, m_lcd, 250'000); // TODO: Wrong device type, should be HD44780U_A00; clock not measured, datasheet typical clock used
config.set_default_layout(layout_atm18mcc);
}

View File

@ -222,7 +222,7 @@ void emax_state::emax(machine_config &config)
screen.set_visarea(0, 16*6-1, 0, 16-1);
screen.set_palette("palette");
HD44780(config, m_lcdc);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 16);
m_lcdc->set_pixel_update_cb(FUNC(emax_state::pixel_update));
@ -262,7 +262,7 @@ void emax_state::emax2(machine_config &config)
screen.set_visarea(0, 16*6-1, 0, 16-1);
screen.set_palette("palette");
HD44780(config, m_lcdc);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 16);
m_lcdc->set_pixel_update_cb(FUNC(emax_state::pixel_update));

View File

@ -251,7 +251,7 @@ void emu3_state::emu3(machine_config &config)
SCC85230(config, m_scc, 16_MHz_XTAL / 4);
m_scc->out_int_callback().set(*this, FUNC(emu3_state::irq_w<SCCINT>)).invert();
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(4, 20);
PALETTE(config, "palette", FUNC(emu3_state::palette_init), 2);

View File

@ -142,7 +142,7 @@ void emu68k_state::add_lcd(machine_config &config)
PALETTE(config, "palette", FUNC(emu68k_state::palette_init), 2);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 16);
lcdc.set_pixel_update_cb(FUNC(emu68k_state::lcd_pixel_update));
}

View File

@ -46,7 +46,7 @@ void mephisto_display2_device::device_add_mconfig(machine_config &config)
PALETTE(config, "palette", FUNC(mephisto_display2_device::lcd_palette), 3);
HD44780(config, m_lcd, 0);
HD44780(config, m_lcd, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcd->set_lcd_size(2, 16);
m_lcd->set_pixel_update_cb(FUNC(mephisto_display2_device::lcd_pixel_update));

View File

@ -132,7 +132,7 @@ void kawai_r100_state::r100(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 16);
m_lcdc->set_pixel_update_cb(FUNC(kawai_r100_state::pixel_update));
}

View File

@ -229,7 +229,7 @@ void korg_ds8_state::ds8(machine_config &config)
PALETTE(config, "palette", FUNC(korg_ds8_state::palette_init_ds8), 2);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 40);
lcdc.set_pixel_update_cb(FUNC(korg_ds8_state::lcd_pixel_update));

View File

@ -466,7 +466,7 @@ void korg_dss1_state::klm780(machine_config &config)
PALETTE(config, "palette", FUNC(korg_dss1_state::palette_init_dss1), 2);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 20);
m_lcdc->set_pixel_update_cb(FUNC(korg_dss1_state::lcd_pixel_update));
}

View File

@ -251,7 +251,7 @@ void korgm1_state::korgm1(machine_config &config)
PALETTE(config, "palette", FUNC(korgm1_state::palette_init), 2);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 40);
m_lcdc->set_pixel_update_cb(FUNC(korgm1_state::lcd_pixel_update));

View File

@ -734,7 +734,7 @@ void replicator_state::replicator(machine_config &config)
PALETTE(config, "palette", FUNC(replicator_state::palette_init), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_replicator);
HD44780(config, "hd44780", 0).set_lcd_size(4, 20);
HD44780(config, "hd44780", 250'000).set_lcd_size(4, 20); // TODO: clock not measured, datasheet typical clock used
/* sound hardware */
/* A piezo is connected to the PORT G bit 5 (OC0B pin driven by Timer/Counter #4) */

View File

@ -212,7 +212,7 @@ void piggypas_state::piggypas(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
screen.set_refresh_hz(50);
screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
screen.set_screen_update(m_hd44780, FUNC(hd44780_device::screen_update));
screen.set_size(16*6, 8);
screen.set_visarea(0, 16*6-1, 0, 8-1);
screen.set_palette("palette");
@ -220,9 +220,9 @@ void piggypas_state::piggypas(machine_config &config)
PALETTE(config, "palette").set_entries(2);
config.set_default_layout(layout_piggypas);
hd44780_device &hd44780(HD44780(config, "hd44780"));
hd44780.set_lcd_size(1, 16);
hd44780.set_pixel_update_cb(FUNC(piggypas_state::piggypas_pixel_update));
HD44780(config, m_hd44780, 250'000); // TODO: clock not measured, datasheet typical clock used
m_hd44780->set_lcd_size(1, 16);
m_hd44780->set_pixel_update_cb(FUNC(piggypas_state::piggypas_pixel_update));
/* sound hardware */
SPEAKER(config, "mono").front_center();

View File

@ -338,7 +338,7 @@ void mpf1_88_state::mpf1_88(machine_config &config)
PALETTE(config, "palette", FUNC(mpf1_88_state::lcd_palette), 3);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 20);
lcdc.set_pixel_update_cb(FUNC(mpf1_88_state::lcd_pixel_update));
lcdc.set_function_set_at_any_time(true);

View File

@ -301,7 +301,7 @@ void diablo_state::diablo68k(machine_config &config)
PALETTE(config, "palette", FUNC(diablo_state::lcd_palette), 3);
HD44780(config, m_lcd, 0);
HD44780(config, m_lcd, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcd->set_lcd_size(2, 8);
m_lcd->set_pixel_update_cb(FUNC(diablo_state::lcd_pixel_update));

View File

@ -445,7 +445,7 @@ void sexpert_state::sexpert(machine_config &config)
PALETTE(config, "palette", FUNC(sexpert_state::lcd_palette), 3);
HD44780(config, m_lcd, 0);
HD44780(config, m_lcd, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcd->set_lcd_size(2, 8);
m_lcd->set_pixel_update_cb(FUNC(sexpert_state::lcd_pixel_update));

View File

@ -548,7 +548,7 @@ void psion_state::psion_2lines(machine_config &config)
PALETTE(config, "palette", FUNC(psion_state::psion_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_psion);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: Wrong device? Custom? clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 16);
/* sound hardware */

View File

@ -142,7 +142,7 @@ void alphajuno_state::ajuno1(machine_config &config)
PALETTE(config, "palette", FUNC(alphajuno_state::palette_init), 2);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
m_lcdc->set_pixel_update_cb(FUNC(alphajuno_state::lcd_pixel_update));
m_lcdc->set_busy_factor(0.005f);
@ -181,7 +181,7 @@ void alphajuno_state::mks50(machine_config &config)
PALETTE(config, "palette", FUNC(alphajuno_state::palette_init), 2);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
m_lcdc->set_pixel_update_cb(FUNC(alphajuno_state::lcd_pixel_update));
m_lcdc->set_busy_factor(0.05f);

View File

@ -238,7 +238,7 @@ void roland_s10_state::s10(machine_config &config)
PALETTE(config, "palette", FUNC(roland_s10_state::palette_init), 2);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
m_lcdc->set_pixel_update_cb(FUNC(roland_s10_state::lcd_pixel_update));
m_lcdc->set_busy_factor(0.005f);

View File

@ -199,7 +199,7 @@ void model1io2_device::device_add_mconfig(machine_config &config)
PALETTE(config, "palette", FUNC(model1io2_device::lcd_palette), 3);
HD44780(config, m_lcd, 0);
HD44780(config, m_lcd, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcd->set_lcd_size(2, 20);
m_lcd->set_pixel_update_cb(FUNC(model1io2_device::lcd_pixel_update));
}

View File

@ -452,7 +452,7 @@ void speedbsk_state::speedbsk(machine_config &config)
PALETTE(config, "palette", FUNC(speedbsk_state::lcd_palette), 3);
HD44780(config, m_lcd, 0);
HD44780(config, m_lcd, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcd->set_lcd_size(2, 20);
m_lcd->set_pixel_update_cb(FUNC(speedbsk_state::lcd_pixel_update));

View File

@ -142,7 +142,7 @@ void _600cat_state::_600cat(machine_config &config)
PALETTE(config, m_palette, FUNC(_600cat_state::lcd_palette), 3);
HD44780(config, m_lcdc);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(4, 20);
m_lcdc->set_pixel_update_cb(FUNC(_600cat_state::lcd_pixel_update));

View File

@ -216,7 +216,7 @@ void adacp150_state::adacp150(machine_config &config)
screen.set_visarea(0, 16*6-1, 0, 16-1);
screen.set_palette("palette");
HD44780(config, m_lcdc);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 20);
m_lcdc->set_pixel_update_cb(FUNC(adacp150_state::pixel_update));

View File

@ -73,7 +73,7 @@ void airbase99_state::airbase99(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 20);
lcdc.set_pixel_update_cb(FUNC(airbase99_state::pixel_update));
}

View File

@ -572,9 +572,9 @@ void alphasmart_state::alphasmart(machine_config &config)
m_maincpu->in_pd_callback().set(FUNC(alphasmart_state::port_d_r));
m_maincpu->out_pd_callback().set(FUNC(alphasmart_state::port_d_w));
KS0066_F05(config, m_lcdc[0], 0);
KS0066_F05(config, m_lcdc[0], 270'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc[0]->set_lcd_size(2, 40);
KS0066_F05(config, m_lcdc[1], 0);
KS0066_F05(config, m_lcdc[1], 270'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc[1]->set_lcd_size(2, 40);
/* video hardware */

View File

@ -113,9 +113,9 @@ void alphasmart3k_state::alphasmart3k(machine_config &config)
// Values from AlphaSmart 2000, not confirmed for AlphaSmart 3000
// AlphaSmart 3000 uses a Data Image CM4040 LCD display, LCD is 40x4 according to ref
KS0066_F05(config, m_lcdc0, 0);
KS0066_F05(config, m_lcdc0, 270'000); // TODO: Possibly wrong device type, needs confirmation; clock not measured, datasheet typical clock used
m_lcdc0->set_lcd_size(4, 40);
KS0066_F05(config, m_lcdc1, 0);
KS0066_F05(config, m_lcdc1, 270'000); // TODO: Possibly wrong device type, needs confirmation; clock not measured, datasheet typical clock used
m_lcdc1->set_lcd_size(4, 40);
RAM(config, RAM_TAG).set_default_size("256K");

View File

@ -279,7 +279,7 @@ void consoemt_state::consoemt(machine_config &config)
PALETTE(config, "palette", FUNC(consoemt_state::consoemt_palette), 3);
KS0066_F05(config, m_lcdc, 0);
KS0066_F05(config, m_lcdc, 270'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 20);
m_lcdc->set_pixel_update_cb(FUNC(consoemt_state::lcd_pixel_update));
}

View File

@ -172,7 +172,7 @@ void eurit_state::eurit30(machine_config &config)
PALETTE(config, "palette", FUNC(eurit_state::palette_init), 2);
hd44780_device &lcdc(SED1278_0B(config, "lcdc", 0));
hd44780_device &lcdc(SED1278_0B(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 20);
lcdc.set_pixel_update_cb(FUNC(eurit_state::lcd_pixel_update));
}

View File

@ -101,7 +101,7 @@ void gm1000_state::gm1000(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 24);
lcdc.set_pixel_update_cb(FUNC(gm1000_state::lcd_pixel_update));
lcdc.set_function_set_at_any_time(true);

View File

@ -272,7 +272,7 @@ void hprot1_state::hprot1(machine_config &config)
PALETTE(config, "palette", FUNC(hprot1_state::hprot1_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_hprot1);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); /* TODO: clock not measured, datasheet typical clock used */
m_lcdc->set_lcd_size(2, 16);
m_lcdc->set_pixel_update_cb(FUNC(hprot1_state::hprot1_pixel_update));

View File

@ -263,7 +263,7 @@ void icatel_state::icatel(machine_config &config)
PALETTE(config, "palette", FUNC(icatel_state::icatel_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_icatel);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); /* TODO: clock not measured, datasheet typical clock used */
m_lcdc->set_lcd_size(2, 16);
m_lcdc->set_pixel_update_cb(FUNC(icatel_state::icatel_pixel_update));
}

View File

@ -274,7 +274,7 @@ void ml20_state::ml20(machine_config &config)
PALETTE(config, "palette", FUNC(ml20_state::lcd_palette), 3);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 16);
m_lcdc->set_pixel_update_cb(FUNC(ml20_state::lcd_pixel_update));

View File

@ -138,7 +138,7 @@ void mtd1256_state::mtd1256(machine_config &config)
screen.set_visarea(0, 20*6-1, 0, 32-1);
screen.set_palette("palette");
hd44780_device &hd44780(HD44780(config, "lcdc"));
hd44780_device &hd44780(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
hd44780.set_lcd_size(2, 16);
hd44780.set_pixel_update_cb(FUNC(mtd1256_state::pixel_update));

View File

@ -264,7 +264,7 @@ void rd100_state::rd100(machine_config &config)
screen.set_visarea(0, 16*6-1, 0, 16-1);
screen.set_palette("palette");
hd44780_device &hd44780(HD44780(config, "hd44780"));
hd44780_device &hd44780(HD44780(config, "hd44780", 250'000)); // TODO: clock not measured, datasheet typical clock used
hd44780.set_lcd_size(2, 16);
hd44780.set_pixel_update_cb(FUNC(rd100_state::pixel_update));

View File

@ -170,7 +170,7 @@ void sk101bl_state::sk101bl(machine_config &config)
screen.set_visarea(0, 16*6-1, 0, 10-1);
screen.set_palette("palette");
HD44780(config, m_lcdc).set_lcd_size(1, 16);
HD44780(config, m_lcdc, 250'000).set_lcd_size(1, 16); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_pixel_update_cb(FUNC(sk101bl_state::pixel_update));
PALETTE(config, "palette").set_entries(2);

View File

@ -88,9 +88,9 @@ void ti630_state::init_ti630()
void ti630_state::i80c31_io(address_map &map)
{
map(0x0000, 0x0000) /*.mirror(?)*/ .w("hd44780", FUNC(hd44780_device::control_w));
map(0x1000, 0x1000) /*.mirror(?)*/ .w("hd44780", FUNC(hd44780_device::data_w));
map(0x2000, 0x2000) /*.mirror(?)*/ .r("hd44780", FUNC(hd44780_device::control_r));
map(0x0000, 0x0000) /*.mirror(?)*/ .w(m_lcdc, FUNC(hd44780_device::control_w));
map(0x1000, 0x1000) /*.mirror(?)*/ .w(m_lcdc, FUNC(hd44780_device::data_w));
map(0x2000, 0x2000) /*.mirror(?)*/ .r(m_lcdc, FUNC(hd44780_device::control_r));
map(0x8000, 0xffff).ram(); /*TODO: verify the ammont of RAM and the correct address range to which it is mapped. This is just a first reasonable guess that apparently yields good results in the emulation */
}
@ -154,7 +154,7 @@ void ti630_state::ti630(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
screen.set_refresh_hz(50);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
screen.set_screen_update(m_lcdc, FUNC(hd44780_device::screen_update));
screen.set_size(6*16, 9*2);
screen.set_visarea(0, 6*16-1, 0, 9*2-1);
screen.set_palette("palette");
@ -162,7 +162,7 @@ void ti630_state::ti630(machine_config &config)
PALETTE(config, "palette", FUNC(ti630_state::ti630_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_ti630);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 16);
}

View File

@ -104,7 +104,7 @@ void dpsv55_state::dpsv55(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 20);
m_lcdc->set_pixel_update_cb(FUNC(dpsv55_state::pixel_update));

View File

@ -639,7 +639,7 @@ void cc40_state::cc40(machine_config &config)
PALETTE(config, "palette", FUNC(cc40_state::cc40_palette), 3);
hd44780_device &hd44780(HD44780(config, "hd44780", 0));
hd44780_device &hd44780(HD44780(config, "hd44780", 250'000)); // TODO: clock not measured, datasheet typical clock used
hd44780.set_lcd_size(2, 16); // 2*16 internal
hd44780.set_pixel_update_cb(FUNC(cc40_state::cc40_pixel_update));

View File

@ -536,7 +536,7 @@ void ti74_state::ti74(machine_config &config)
PALETTE(config, "palette", FUNC(ti74_state::ti74_palette), 3);
hd44780_device &hd44780(HD44780(config, "hd44780", 0)); // 270kHz
hd44780_device &hd44780(HD44780(config, "hd44780", 270'000)); // 270kHz, measured? HD44780A00
hd44780.set_lcd_size(2, 16); // 2*16 internal
hd44780.set_pixel_update_cb(FUNC(ti74_state::ti74_pixel_update));
@ -569,7 +569,7 @@ void ti74_state::ti95(machine_config &config)
PALETTE(config, "palette", FUNC(ti74_state::ti74_palette), 3);
hd44780_device &hd44780(HD44780(config, "hd44780", 0));
hd44780_device &hd44780(HD44780(config, "hd44780", 250'000)); // TODO: clock not measured, datasheet typical clock used
hd44780.set_lcd_size(2, 16);
hd44780.set_pixel_update_cb(FUNC(ti74_state::ti95_pixel_update));

View File

@ -255,7 +255,7 @@ void lcmate2_state::lcmate2(machine_config &config)
PALETTE(config, "palette", FUNC(lcmate2_state::lcmate2_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_lcmate2);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 20);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);

View File

@ -745,14 +745,14 @@ void pc2000_state::pc2000gen(machine_config &config)
void pc2000_state::pc2000(machine_config &config)
{
pc2000gen(config);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 20);
}
void pc2000_state::pc2000eur(machine_config &config)
{
pc2000gen(config);
SED1278_0B(config, m_lcdc, 0);
SED1278_0B(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 20);
}

View File

@ -182,7 +182,7 @@ void fb01_state::fb01(machine_config &config)
PALETTE(config, "palette", FUNC(fb01_state::fb01_palette), 2);
hd44780_device &hd44780(HD44780(config, "hd44780", 0));
hd44780_device &hd44780(HD44780(config, "hd44780", 250'000)); // TODO: clock not measured, datasheet typical clock used
hd44780.set_lcd_size(2, 8); // 2x8 displayed as 1x16
hd44780.set_pixel_update_cb(FUNC(fb01_state::fb01_pixel_update));

View File

@ -77,7 +77,7 @@ void mulcd_device::render_w(int state)
void mulcd_device::device_add_mconfig(machine_config &config)
{
HD44780(config, m_lcd);
HD44780(config, m_lcd, 250'000); // TODO: Wrong device type, should be a custom mask part of unknown mask number; clock not measured, datasheet typical clock used
m_lcd->set_lcd_size(4, 20);
auto &screen = SCREEN(config, "screen", SCREEN_TYPE_SVG);

View File

@ -7,7 +7,7 @@ Yamaha DX27 and DX100 digital synthesizers
The DX27 and DX100 are mid-tier professional synthesizers released by Yamaha
around 1985. The DX27 is a full-size keyboard with 61 full-size keys that can
only run on AC power. The DX100 is a smaller, wearable keyboard with only 49
small-size keys and can run on either AC power or batteries. Both keybaords have
small-size keys and can run on either AC power or batteries. Both keyboards have
full MIDI in/out/thru, and can also hook up to a Yamaha foot pedal and breath
controller.
@ -133,7 +133,7 @@ service manual, but is still readily available.
1 2 3 4 5 6 7 8 9 0 - = -> 1 2 3 4 5 6 7 8 9 10 11 12
Q W T Y O P -> PBend KeyShift Store Func BankA BankB
E R U I [ ] -> -1 +1 Edit Internal BankC BankD
Octave 3 will be avaible over [Z S X D C V G B H N J M]
Octave 3 will be available over [Z S X D C V G B H N J M]
Pitch bend will be ' /
Mod wheel will be ; .
Data entry slider will be L ,
@ -622,7 +622,7 @@ void yamaha_dx100_state::dx100(machine_config &config)
PALETTE(config, "palette", FUNC(yamaha_dx100_state::palette_init), 3);
hd44780_device &lcdc(HD44780(config, "lcdc", 0)); // HD44780RA00
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // HD44780RA00; TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(1, 16);
lcdc.set_pixel_update_cb(FUNC(yamaha_dx100_state::lcd_pixel_update));

View File

@ -113,7 +113,7 @@ void yamaha_dx11_state::dx11(machine_config &config)
PALETTE(config, "palette", FUNC(yamaha_dx11_state::palette_init), 2);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 16);
lcdc.set_pixel_update_cb(FUNC(yamaha_dx11_state::lcd_pixel_update));

View File

@ -295,14 +295,14 @@ void yamaha_dx7_state::dx7(machine_config &config)
screen.set_color(rgb_t::green());
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
screen.set_screen_update(m_lcdc, FUNC(hd44780_device::screen_update));
screen.set_size(6*16, 8*2);
screen.set_visarea_full();
screen.set_palette("palette");
PALETTE(config, "palette", FUNC(yamaha_dx7_state::palette_init), 2);
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 16);
m_lcdc->set_pixel_update_cb(FUNC(yamaha_dx7_state::lcd_pixel_update));
}

View File

@ -277,7 +277,7 @@ void yamaha_dx9_state::dx9(machine_config &config)
PALETTE(config, "palette", FUNC(yamaha_dx9_state::palette_init), 3);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 16);
lcdc.set_pixel_update_cb(FUNC(yamaha_dx9_state::lcd_pixel_update));

View File

@ -429,7 +429,7 @@ void psr150_state::psr190_base(machine_config &config)
m_maincpu->port_in_cb<2>().set_ioport("PC_R");
m_maincpu->port_out_cb<2>().set_ioport("PC_W");
HD44780(config, m_lcdc);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
screen_device& screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));

View File

@ -82,7 +82,7 @@ void psr260_state::psr260(machine_config &config)
// TODO: MIDI in/out
// LCD
HD44780(config, m_lcdc, 0);
HD44780(config, m_lcdc, 250'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 8);
m_lcdc->set_pixel_update_cb(FUNC(psr260_state::lcd_update));
// code never checks the busy flag, it just delays for a fixed amount and assumes it's ready

View File

@ -275,7 +275,7 @@ void psr340_state::psr340(machine_config &config)
// SCI0 is externally clocked at the 31250 Hz MIDI rate
m_maincpu->sci_set_external_clock_period(0, attotime::from_hz(31250 * 16));
KS0066_F05(config, m_lcdc, 0);
KS0066_F05(config, m_lcdc, 270'000); // TODO: clock not measured, datasheet typical clock used
m_lcdc->set_lcd_size(2, 40);
/* video hardware */

View File

@ -75,7 +75,7 @@ void rx15_state::rx15(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 8);
lcdc.set_pixel_update_cb(FUNC(rx15_state::pixel_update));

View File

@ -155,7 +155,7 @@ void ymtx81z_state::tx81z(machine_config &config)
config.set_default_layout(layout_tx81z);
hd44780_device &lcdc(HD44780(config, "lcdc", 0));
hd44780_device &lcdc(HD44780(config, "lcdc", 250'000)); // TODO: clock not measured, datasheet typical clock used
lcdc.set_lcd_size(2, 16);
lcdc.set_pixel_update_cb(FUNC(ymtx81z_state::lcd_pixel_update));