hd44780_pixel_update_func to delegate (nw)

This commit is contained in:
Miodrag Milanovic 2016-05-06 10:56:19 +02:00
parent 87cca4d3f9
commit 05c516cd26
13 changed files with 50 additions and 44 deletions

View File

@ -47,7 +47,6 @@ ROM_END
hd44780_device::hd44780_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : hd44780_device::hd44780_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, HD44780, "HD44780 A00", tag, owner, clock, "hd44780_a00", __FILE__), device_t(mconfig, HD44780, "HD44780 A00", tag, owner, clock, "hd44780_a00", __FILE__),
m_pixel_update_func(nullptr),
m_cgrom(*this, DEVICE_SELF) m_cgrom(*this, DEVICE_SELF)
{ {
set_charset_type(CHARSET_HD44780_A00); set_charset_type(CHARSET_HD44780_A00);
@ -55,7 +54,6 @@ hd44780_device::hd44780_device(const machine_config &mconfig, const char *tag, d
hd44780_device::hd44780_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : hd44780_device::hd44780_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
device_t(mconfig, type, name, tag, owner, clock, shortname, source), device_t(mconfig, type, name, tag, owner, clock, shortname, source),
m_pixel_update_func(nullptr),
m_cgrom(*this, DEVICE_SELF) m_cgrom(*this, DEVICE_SELF)
{ {
} }
@ -91,6 +89,8 @@ void hd44780_device::device_start()
if (!m_cgrom.found()) if (!m_cgrom.found())
m_cgrom.set_target(memregion("cgrom")->base(), 0x1000); m_cgrom.set_target(memregion("cgrom")->base(), 0x1000);
m_pixel_update_cb.bind_relative_to(*owner());
m_busy_timer = timer_alloc(TIMER_BUSY); m_busy_timer = timer_alloc(TIMER_BUSY);
m_blink_timer = timer_alloc(TIMER_BLINKING); m_blink_timer = timer_alloc(TIMER_BLINKING);
m_blink_timer->adjust(attotime::from_msec(409), 0, attotime::from_msec(409)); m_blink_timer->adjust(attotime::from_msec(409), 0, attotime::from_msec(409));
@ -235,9 +235,9 @@ void hd44780_device::update_nibble(int rs, int rw)
inline void hd44780_device::pixel_update(bitmap_ind16 &bitmap, UINT8 line, UINT8 pos, UINT8 y, UINT8 x, int state) inline void hd44780_device::pixel_update(bitmap_ind16 &bitmap, UINT8 line, UINT8 pos, UINT8 y, UINT8 x, int state)
{ {
if (m_pixel_update_func != nullptr) if (!m_pixel_update_cb.isnull())
{ {
m_pixel_update_func(*this, bitmap, line, pos, y, x, state); m_pixel_update_cb(bitmap, line, pos, y, x, state);
} }
else else
{ {

View File

@ -21,15 +21,15 @@
#define MCFG_HD44780_LCD_SIZE(_lines, _chars) \ #define MCFG_HD44780_LCD_SIZE(_lines, _chars) \
hd44780_device::static_set_lcd_size(*device, _lines, _chars); hd44780_device::static_set_lcd_size(*device, _lines, _chars);
#define MCFG_HD44780_PIXEL_UPDATE_CB(_cb) \ #define MCFG_HD44780_PIXEL_UPDATE_CB(_class, _method) \
hd44780_device::static_set_pixel_update_cb(*device, _cb); hd44780_device::static_set_pixel_update_cb(*device, hd44780_pixel_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
//************************************************************************** //**************************************************************************
// TYPE DEFINITIONS // TYPE DEFINITIONS
//************************************************************************** //**************************************************************************
typedef void (*hd44780_pixel_update_func)(device_t &device, bitmap_ind16 &bitmap, UINT8 line, UINT8 pos, UINT8 y, UINT8 x, int state); typedef device_delegate<void (bitmap_ind16 &bitmap, UINT8 line, UINT8 pos, UINT8 y, UINT8 x, int state)> hd44780_pixel_update_delegate;
#define HD44780_PIXEL_UPDATE(name) void name(device_t &device, bitmap_ind16 &bitmap, UINT8 line, UINT8 pos, UINT8 y, UINT8 x, int state) #define HD44780_PIXEL_UPDATE(name) void name(bitmap_ind16 &bitmap, UINT8 line, UINT8 pos, UINT8 y, UINT8 x, int state)
// ======================> hd44780_device // ======================> hd44780_device
@ -43,7 +43,7 @@ public:
// static configuration helpers // static configuration helpers
static void static_set_lcd_size(device_t &device, int _lines, int _chars) { hd44780_device &dev=downcast<hd44780_device &>(device); dev.m_lines = _lines; dev.m_chars = _chars; } static void static_set_lcd_size(device_t &device, int _lines, int _chars) { hd44780_device &dev=downcast<hd44780_device &>(device); dev.m_lines = _lines; dev.m_chars = _chars; }
static void static_set_pixel_update_cb(device_t &device, hd44780_pixel_update_func _cb) { downcast<hd44780_device &>(device).m_pixel_update_func = _cb; } static void static_set_pixel_update_cb(device_t &device, hd44780_pixel_update_delegate callback) { downcast<hd44780_device &>(device).m_pixel_update_cb = callback; }
// device interface // device interface
virtual DECLARE_WRITE8_MEMBER(write); virtual DECLARE_WRITE8_MEMBER(write);
@ -100,7 +100,7 @@ private:
UINT8 m_lines; // number of lines UINT8 m_lines; // number of lines
UINT8 m_chars; // chars for line UINT8 m_chars; // chars for line
hd44780_pixel_update_func m_pixel_update_func; // pixel update callback hd44780_pixel_update_delegate m_pixel_update_cb; // pixel update callback
bool m_busy_flag; // busy flag bool m_busy_flag; // busy flag
UINT8 m_ddram[0x80]; // internal display data RAM UINT8 m_ddram[0x80]; // internal display data RAM

View File

@ -346,12 +346,10 @@ void alesis_state::machine_reset()
} }
static HD44780_PIXEL_UPDATE(sr16_pixel_update) HD44780_PIXEL_UPDATE(alesis_state::sr16_pixel_update)
{ {
alesis_state *driv_state = device.machine().driver_data<alesis_state>();
if (line == 1 && pos >= 6 && pos < 8) // last 2 characters of the second line are used to control the LCD symbols if (line == 1 && pos >= 6 && pos < 8) // last 2 characters of the second line are used to control the LCD symbols
driv_state->update_lcd_symbols(bitmap, pos, y, x, state); update_lcd_symbols(bitmap, pos, y, x, state);
else if (pos < 8) else if (pos < 8)
bitmap.pix16(line*9 + y, pos*6 + x) = state; bitmap.pix16(line*9 + y, pos*6 + x) = state;
} }
@ -402,7 +400,7 @@ static MACHINE_CONFIG_DERIVED( sr16, hr16 )
MCFG_DEVICE_MODIFY("hd44780") MCFG_DEVICE_MODIFY("hd44780")
MCFG_HD44780_LCD_SIZE(2, 8) MCFG_HD44780_LCD_SIZE(2, 8)
MCFG_HD44780_PIXEL_UPDATE_CB(sr16_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(alesis_state, sr16_pixel_update)
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mmt8, hr16 ) static MACHINE_CONFIG_DERIVED( mmt8, hr16 )

View File

@ -145,6 +145,7 @@ public:
DECLARE_PALETTE_INIT(cc40); DECLARE_PALETTE_INIT(cc40);
DECLARE_INPUT_CHANGED_MEMBER(sysram_size_changed); DECLARE_INPUT_CHANGED_MEMBER(sysram_size_changed);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cc40_cartridge); DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cc40_cartridge);
HD44780_PIXEL_UPDATE(cc40_pixel_update);
}; };
@ -198,7 +199,7 @@ void cc40_state::update_lcd_indicator(UINT8 y, UINT8 x, int state)
output().set_lamp_value(y * 10 + x, state); output().set_lamp_value(y * 10 + x, state);
} }
static HD44780_PIXEL_UPDATE(cc40_pixel_update) HD44780_PIXEL_UPDATE(cc40_state::cc40_pixel_update)
{ {
// char size is 5x7 + cursor // char size is 5x7 + cursor
if (x > 4 || y > 7) if (x > 4 || y > 7)
@ -207,8 +208,7 @@ static HD44780_PIXEL_UPDATE(cc40_pixel_update)
if (line == 1 && pos == 15) if (line == 1 && pos == 15)
{ {
// the last char is used to control the 18 lcd indicators // the last char is used to control the 18 lcd indicators
cc40_state *driver_state = device.machine().driver_data<cc40_state>(); update_lcd_indicator(y, x, state);
driver_state->update_lcd_indicator(y, x, state);
} }
else if (line < 2 && pos < 16) else if (line < 2 && pos < 16)
{ {
@ -606,7 +606,7 @@ static MACHINE_CONFIG_START( cc40, cc40_state )
MCFG_HD44780_ADD("hd44780") MCFG_HD44780_ADD("hd44780")
MCFG_HD44780_LCD_SIZE(2, 16) // 2*16 internal MCFG_HD44780_LCD_SIZE(2, 16) // 2*16 internal
MCFG_HD44780_PIXEL_UPDATE_CB(cc40_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(cc40_state, cc40_pixel_update)
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -42,6 +42,7 @@ public:
virtual void machine_reset() override; virtual void machine_reset() override;
DECLARE_PALETTE_INIT(fb01); DECLARE_PALETTE_INIT(fb01);
HD44780_PIXEL_UPDATE(fb01_pixel_update);
private: private:
required_device<z80_device> m_maincpu; required_device<z80_device> m_maincpu;
@ -150,7 +151,7 @@ void fb01_state::update_int()
} }
static HD44780_PIXEL_UPDATE(fb01_pixel_update) HD44780_PIXEL_UPDATE(fb01_state::fb01_pixel_update)
{ {
if ( pos < 8 && line < 2 ) if ( pos < 8 && line < 2 )
{ {
@ -189,7 +190,7 @@ static MACHINE_CONFIG_START( fb01, fb01_state )
MCFG_HD44780_ADD("hd44780") MCFG_HD44780_ADD("hd44780")
MCFG_HD44780_LCD_SIZE(2, 8) // 2x8 displayed as 1x16 MCFG_HD44780_LCD_SIZE(2, 8) // 2x8 displayed as 1x16
MCFG_HD44780_PIXEL_UPDATE_CB(fb01_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(fb01_state,fb01_pixel_update)
MCFG_DEVICE_ADD("upd71051", I8251, XTAL_4MHz) MCFG_DEVICE_ADD("upd71051", I8251, XTAL_4MHz)
MCFG_I8251_RXRDY_HANDLER(WRITELINE(fb01_state, upd71051_rxrdy_w)) MCFG_I8251_RXRDY_HANDLER(WRITELINE(fb01_state, upd71051_rxrdy_w))

View File

@ -74,6 +74,7 @@ public:
DECLARE_READ8_MEMBER(henry_io_r); DECLARE_READ8_MEMBER(henry_io_r);
DECLARE_DRIVER_INIT(hprot1); DECLARE_DRIVER_INIT(hprot1);
DECLARE_PALETTE_INIT(hprot1); DECLARE_PALETTE_INIT(hprot1);
HD44780_PIXEL_UPDATE(hprot1_pixel_update);
private: private:
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override; virtual void machine_reset() override;
@ -284,7 +285,7 @@ static GFXDECODE_START( hprot1 )
GFXDECODE_ENTRY( "hd44780:cgrom", 0x0000, henry_prot_charlayout, 0, 1 ) GFXDECODE_ENTRY( "hd44780:cgrom", 0x0000, henry_prot_charlayout, 0, 1 )
GFXDECODE_END GFXDECODE_END
static HD44780_PIXEL_UPDATE(hprot1_pixel_update) HD44780_PIXEL_UPDATE(hprot1_state::hprot1_pixel_update)
{ {
if ( pos < 16 && line==0 ) if ( pos < 16 && line==0 )
{ {
@ -319,7 +320,7 @@ static MACHINE_CONFIG_START( hprot1, hprot1_state )
MCFG_HD44780_ADD("hd44780") MCFG_HD44780_ADD("hd44780")
MCFG_HD44780_LCD_SIZE(2, 16) MCFG_HD44780_LCD_SIZE(2, 16)
MCFG_HD44780_PIXEL_UPDATE_CB(hprot1_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(hprot1_state,hprot1_pixel_update)
/* TODO: figure out which RTC chip is in use. */ /* TODO: figure out which RTC chip is in use. */

View File

@ -56,6 +56,8 @@ public:
DECLARE_DRIVER_INIT(icatel); DECLARE_DRIVER_INIT(icatel);
DECLARE_PALETTE_INIT(icatel); DECLARE_PALETTE_INIT(icatel);
HD44780_PIXEL_UPDATE(icatel_pixel_update);
private: private:
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override; virtual void machine_reset() override;
@ -220,7 +222,7 @@ static GFXDECODE_START( icatel )
GFXDECODE_ENTRY( "hd44780:cgrom", 0x0000, prot_charlayout, 0, 1 ) GFXDECODE_ENTRY( "hd44780:cgrom", 0x0000, prot_charlayout, 0, 1 )
GFXDECODE_END GFXDECODE_END
static HD44780_PIXEL_UPDATE(icatel_pixel_update) HD44780_PIXEL_UPDATE(icatel_state::icatel_pixel_update)
{ {
if ( pos < 16 && line==0 ) if ( pos < 16 && line==0 )
{ {
@ -256,7 +258,7 @@ static MACHINE_CONFIG_START( icatel, icatel_state )
MCFG_HD44780_ADD("hd44780") MCFG_HD44780_ADD("hd44780")
MCFG_HD44780_LCD_SIZE(2, 16) MCFG_HD44780_LCD_SIZE(2, 16)
MCFG_HD44780_PIXEL_UPDATE_CB(icatel_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(icatel_state, icatel_pixel_update)
MACHINE_CONFIG_END MACHINE_CONFIG_END
ROM_START( icatel ) ROM_START( icatel )

View File

@ -89,6 +89,7 @@ public:
{ } { }
virtual void machine_start() override; virtual void machine_start() override;
HD44780_PIXEL_UPDATE(gl4000_pixel_update);
}; };
class pc1000_state : public pc2000_state class pc1000_state : public pc2000_state
@ -107,6 +108,7 @@ public:
DECLARE_WRITE8_MEMBER( lcdc_data_w ); DECLARE_WRITE8_MEMBER( lcdc_data_w );
DECLARE_READ8_MEMBER( lcdc_control_r ); DECLARE_READ8_MEMBER( lcdc_control_r );
DECLARE_WRITE8_MEMBER( lcdc_control_w ); DECLARE_WRITE8_MEMBER( lcdc_control_w );
HD44780_PIXEL_UPDATE(pc1000_pixel_update);
}; };
@ -331,7 +333,7 @@ WRITE8_MEMBER( pc1000_state::lcdc_control_w )
m_lcdc->control_write(space, 0, data<<4); m_lcdc->control_write(space, 0, data<<4);
} }
static HD44780_PIXEL_UPDATE(pc1000_pixel_update) HD44780_PIXEL_UPDATE(pc1000_state::pc1000_pixel_update)
{ {
UINT8 layout[] = { 0x00, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37 }; UINT8 layout[] = { 0x00, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37 };
//UINT8 layout[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49 }; //UINT8 layout[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49 };
@ -862,7 +864,7 @@ static MACHINE_CONFIG_DERIVED( gl2000, pc2000 )
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx") MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
MACHINE_CONFIG_END MACHINE_CONFIG_END
static HD44780_PIXEL_UPDATE(gl4000_pixel_update) HD44780_PIXEL_UPDATE(gl4004_state::gl4000_pixel_update)
{ {
if (pos < 40) if (pos < 40)
{ {
@ -907,7 +909,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( gl4000, pc2000, gl4004_state )
MCFG_DEVICE_MODIFY("hd44780") MCFG_DEVICE_MODIFY("hd44780")
MCFG_HD44780_LCD_SIZE(4, 20) MCFG_HD44780_LCD_SIZE(4, 20)
MCFG_HD44780_PIXEL_UPDATE_CB(gl4000_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(gl4004_state,gl4000_pixel_update)
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000") MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx") MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
@ -927,7 +929,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( misterx, pc2000, pc1000_state )
MCFG_DEVICE_MODIFY("hd44780") MCFG_DEVICE_MODIFY("hd44780")
MCFG_HD44780_LCD_SIZE(1, 20) MCFG_HD44780_LCD_SIZE(1, 20)
MCFG_HD44780_PIXEL_UPDATE_CB(pc1000_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(pc1000_state,pc1000_pixel_update)
/* Software lists */ /* Software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list", "misterx") MCFG_SOFTWARE_LIST_ADD("cart_list", "misterx")

View File

@ -32,6 +32,7 @@ public:
DECLARE_WRITE8_MEMBER(mcs51_tx_callback); DECLARE_WRITE8_MEMBER(mcs51_tx_callback);
DECLARE_INPUT_CHANGED_MEMBER(ball_sensor); DECLARE_INPUT_CHANGED_MEMBER(ball_sensor);
DECLARE_CUSTOM_INPUT_MEMBER(ticket_r); DECLARE_CUSTOM_INPUT_MEMBER(ticket_r);
HD44780_PIXEL_UPDATE(piggypas_pixel_update);
required_device<mcs51_cpu_device> m_maincpu; required_device<mcs51_cpu_device> m_maincpu;
required_device<ticket_dispenser_device> m_ticket; required_device<ticket_dispenser_device> m_ticket;
@ -123,7 +124,7 @@ void piggypas_state::machine_reset()
m_digit_idx = 0; m_digit_idx = 0;
} }
static HD44780_PIXEL_UPDATE(piggypas_pixel_update) HD44780_PIXEL_UPDATE(piggypas_state::piggypas_pixel_update)
{ {
if (pos < 8) if (pos < 8)
bitmap.pix16(y, (line * 8 + pos) * 6 + x) = state; bitmap.pix16(y, (line * 8 + pos) * 6 + x) = state;
@ -149,7 +150,7 @@ static MACHINE_CONFIG_START( piggypas, piggypas_state )
MCFG_HD44780_ADD("hd44780") MCFG_HD44780_ADD("hd44780")
MCFG_HD44780_LCD_SIZE(1, 16) MCFG_HD44780_LCD_SIZE(1, 16)
MCFG_HD44780_PIXEL_UPDATE_CB(piggypas_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(piggypas_state, piggypas_pixel_update)
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -608,7 +608,7 @@ static MACHINE_CONFIG_DERIVED( psion_4lines, psion_2lines )
MCFG_DEVICE_MODIFY("hd44780") MCFG_DEVICE_MODIFY("hd44780")
MCFG_HD44780_LCD_SIZE(4, 20) MCFG_HD44780_LCD_SIZE(4, 20)
MCFG_HD44780_PIXEL_UPDATE_CB(psion_state::lz_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(psion_state,lz_pixel_update)
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED_CLASS( psion1, psion_2lines, psion1_state ) static MACHINE_CONFIG_DERIVED_CLASS( psion1, psion_2lines, psion1_state )
@ -624,7 +624,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( psion1, psion_2lines, psion1_state )
MCFG_DEVICE_MODIFY("hd44780") MCFG_DEVICE_MODIFY("hd44780")
MCFG_HD44780_LCD_SIZE(1, 16) MCFG_HD44780_LCD_SIZE(1, 16)
MCFG_HD44780_PIXEL_UPDATE_CB(psion1_state::psion1_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(psion1_state,psion1_pixel_update)
/* Software lists */ /* Software lists */
MCFG_SOFTWARE_LIST_REMOVE("pack_list") MCFG_SOFTWARE_LIST_REMOVE("pack_list")

View File

@ -112,6 +112,8 @@ public:
DECLARE_PALETTE_INIT(ti74); DECLARE_PALETTE_INIT(ti74);
DECLARE_INPUT_CHANGED_MEMBER(battery_status_changed); DECLARE_INPUT_CHANGED_MEMBER(battery_status_changed);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ti74_cartridge); DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ti74_cartridge);
HD44780_PIXEL_UPDATE(ti74_pixel_update);
HD44780_PIXEL_UPDATE(ti95_pixel_update);
}; };
@ -171,7 +173,7 @@ void ti74_state::update_lcd_indicator(UINT8 y, UINT8 x, int state)
output().set_lamp_value(y * 10 + x, state); output().set_lamp_value(y * 10 + x, state);
} }
static HD44780_PIXEL_UPDATE(ti74_pixel_update) HD44780_PIXEL_UPDATE(ti74_state::ti74_pixel_update)
{ {
// char size is 5x7 + cursor // char size is 5x7 + cursor
if (x > 4 || y > 7) if (x > 4 || y > 7)
@ -180,8 +182,7 @@ static HD44780_PIXEL_UPDATE(ti74_pixel_update)
if (line == 1 && pos == 15) if (line == 1 && pos == 15)
{ {
// the last char is used to control the 14 lcd indicators // the last char is used to control the 14 lcd indicators
ti74_state *driver_state = device.machine().driver_data<ti74_state>(); update_lcd_indicator(y, x, state);
driver_state->update_lcd_indicator(y, x, state);
} }
else if (line < 2 && pos < 16) else if (line < 2 && pos < 16)
{ {
@ -191,7 +192,7 @@ static HD44780_PIXEL_UPDATE(ti74_pixel_update)
} }
} }
static HD44780_PIXEL_UPDATE(ti95_pixel_update) HD44780_PIXEL_UPDATE(ti74_state::ti95_pixel_update)
{ {
// char size is 5x7 + cursor // char size is 5x7 + cursor
if (x > 4 || y > 7) if (x > 4 || y > 7)
@ -200,8 +201,7 @@ static HD44780_PIXEL_UPDATE(ti95_pixel_update)
if (line == 1 && pos == 15) if (line == 1 && pos == 15)
{ {
// the last char is used to control the 17 lcd indicators // the last char is used to control the 17 lcd indicators
ti74_state *driver_state = device.machine().driver_data<ti74_state>(); update_lcd_indicator(y, x, state);
driver_state->update_lcd_indicator(y, x, state);
} }
else if (line == 0 && pos < 16) else if (line == 0 && pos < 16)
{ {
@ -532,7 +532,7 @@ static MACHINE_CONFIG_START( ti74, ti74_state )
MCFG_HD44780_ADD("hd44780") // 270kHz MCFG_HD44780_ADD("hd44780") // 270kHz
MCFG_HD44780_LCD_SIZE(2, 16) // 2*16 internal MCFG_HD44780_LCD_SIZE(2, 16) // 2*16 internal
MCFG_HD44780_PIXEL_UPDATE_CB(ti74_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(ti74_state,ti74_pixel_update)
/* cartridge */ /* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "ti74_cart") MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "ti74_cart")
@ -566,7 +566,7 @@ static MACHINE_CONFIG_START( ti95, ti74_state )
MCFG_HD44780_ADD("hd44780") MCFG_HD44780_ADD("hd44780")
MCFG_HD44780_LCD_SIZE(2, 16) MCFG_HD44780_LCD_SIZE(2, 16)
MCFG_HD44780_PIXEL_UPDATE_CB(ti95_pixel_update) MCFG_HD44780_PIXEL_UPDATE_CB(ti74_state,ti95_pixel_update)
/* cartridge */ /* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "ti95_cart") MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "ti95_cart")

View File

@ -94,6 +94,7 @@ public:
DECLARE_READ8_MEMBER( mmt8_p3_r ); DECLARE_READ8_MEMBER( mmt8_p3_r );
DECLARE_WRITE8_MEMBER( mmt8_p3_w ); DECLARE_WRITE8_MEMBER( mmt8_p3_w );
DECLARE_WRITE8_MEMBER( sr16_lcd_w ); DECLARE_WRITE8_MEMBER( sr16_lcd_w );
HD44780_PIXEL_UPDATE(sr16_pixel_update);
private: private:
UINT8 m_kb_matrix; UINT8 m_kb_matrix;

View File

@ -81,7 +81,7 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(psion_on); DECLARE_INPUT_CHANGED_MEMBER(psion_on);
TIMER_DEVICE_CALLBACK_MEMBER(nmi_timer); TIMER_DEVICE_CALLBACK_MEMBER(nmi_timer);
static HD44780_PIXEL_UPDATE(lz_pixel_update); HD44780_PIXEL_UPDATE(lz_pixel_update);
}; };
@ -98,7 +98,7 @@ public:
DECLARE_READ8_MEMBER( inc_kb_counter_r ); DECLARE_READ8_MEMBER( inc_kb_counter_r );
DECLARE_READ8_MEMBER( switchoff_r ); DECLARE_READ8_MEMBER( switchoff_r );
static HD44780_PIXEL_UPDATE(psion1_pixel_update); HD44780_PIXEL_UPDATE(psion1_pixel_update);
}; };
#endif // _PSION_H_ #endif // _PSION_H_