From 13ba56b4641a794c75e6034a38bb624eb31cd5ce Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 30 May 2017 21:41:58 +0200 Subject: added HLCD0530 device (nw) --- src/devices/video/hlcd0515.cpp | 9 ++++++- src/devices/video/hlcd0515.h | 53 +++++++++++++++++++++++------------------- src/mame/drivers/hh_ucom4.cpp | 12 +++++----- 3 files changed, 43 insertions(+), 31 deletions(-) diff --git a/src/devices/video/hlcd0515.cpp b/src/devices/video/hlcd0515.cpp index c930897d0bd..309e4f2d963 100644 --- a/src/devices/video/hlcd0515.cpp +++ b/src/devices/video/hlcd0515.cpp @@ -2,10 +2,11 @@ // copyright-holders:hap /* - Hughes HLCD 0515/0569 LCD Driver + Hughes HLCD 0515 family LCD Driver 0515: 25 columns(also size of buffer/ram) 0569: 24 columns, no DATA OUT pin, display blank has no effect + 0530: specifications unknown, pinout seems similar to 0569 TODO: - read mode is untested @@ -19,6 +20,7 @@ DEFINE_DEVICE_TYPE(HLCD0515, hlcd0515_device, "hlcd0515", "Hughes HLCD 0515 LCD Driver") DEFINE_DEVICE_TYPE(HLCD0569, hlcd0569_device, "hlcd0569", "Hughes HLCD 0569 LCD Driver") +DEFINE_DEVICE_TYPE(HLCD0530, hlcd0530_device, "hlcd0530", "Hughes HLCD 0530 LCD Driver") //------------------------------------------------- // constructor @@ -41,6 +43,11 @@ hlcd0569_device::hlcd0569_device(const machine_config &mconfig, const char *tag, { } +hlcd0530_device::hlcd0530_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : hlcd0515_device(mconfig, HLCD0530, tag, owner, clock, 24) +{ +} + //------------------------------------------------- diff --git a/src/devices/video/hlcd0515.h b/src/devices/video/hlcd0515.h index 16a62d74756..5081a97a857 100644 --- a/src/devices/video/hlcd0515.h +++ b/src/devices/video/hlcd0515.h @@ -2,7 +2,7 @@ // copyright-holders:hap /* - Hughes HLCD 0515/0569 LCD Driver + Hughes HLCD 0515 family LCD Driver */ @@ -14,29 +14,27 @@ // pinout reference /* - ____ ____ - ROW0 1 |* \_/ | 40 VDD - ROW1 2 | | 39 OSC - ROW2 3 | | 38 CLOCK - ROW3 4 | | 37 DATA IN - ROW4 5 | | 36 _CS - ROW5 6 | | 35 DATA OUT - ROW6 7 | | 34 COL25 - ROW7 8 | | 33 COL24 - COL1 9 | | 32 COL23 - COL2 10 | HLCD 0515 | 31 COL22 - COL3 11 | | 30 COL21 - COL4 12 | | 29 COL20 - COL5 13 | | 28 COL19 - COL6 14 | | 27 COL18 - COL7 15 | | 26 COL17 - COL8 16 | | 25 COL16 - COL9 17 | | 24 COL15 - COL10 18 | | 23 COL14 - COL11 19 | | 22 COL13 - GND 20 |___________| 21 COL12 - - HLCD 0569 doesn't have DATA OUT, instead it has what seems like OSC OUT on pin 34. + ____ ____ ____ ____ + ROW0 1 |* \_/ | 40 VDD ROW0 1 |* \_/ | 40 VDD + ROW1 2 | | 39 OSC ROW1 2 | | 39 VDRIVE? + ROW2 3 | | 38 CLOCK ROW2 3 | | 38 OSC + ROW3 4 | | 37 DATA IN ROW3 4 | | 37 CLOCK + ROW4 5 | | 36 _CS ROW4 5 | | 36 DATA IN + ROW5 6 | | 35 DATA OUT ROW5 6 | | 35 _CS + ROW6 7 | | 34 COL25 ROW6 7 | | 34 OSC OUT? + ROW7 8 | | 33 COL24 ROW7 8 | | 33 COL24 + COL1 9 | | 32 COL23 COL1 9 | | 32 COL23 + COL2 10 | HLCD 0515 | 31 COL22 COL2 10 | HLCD 0569 | 31 COL22 + COL3 11 | | 30 COL21 COL3 11 | | 30 COL21 + COL4 12 | | 29 COL20 COL4 12 | | 29 COL20 + COL5 13 | | 28 COL19 COL5 13 | | 28 COL19 + COL6 14 | | 27 COL18 COL6 14 | | 27 COL18 + COL7 15 | | 26 COL17 COL7 15 | | 26 COL17 + COL8 16 | | 25 COL16 COL8 16 | | 25 COL16 + COL9 17 | | 24 COL15 COL9 17 | | 24 COL15 + COL10 18 | | 23 COL14 COL10 18 | | 23 COL14 + COL11 19 | | 22 COL13 COL11 19 | | 22 COL13 + GND 20 |___________| 21 COL12 GND 20 |___________| 21 COL12 OSC is tied to a capacitor, the result frequency is 50000 * cap(in uF), eg. 0.01uF cap = 500Hz. Internally, this is divided by 2, and by number of rows to get display refresh frequency. @@ -106,8 +104,15 @@ protected: virtual void set_control() override; }; +class hlcd0530_device : public hlcd0515_device +{ +public: + hlcd0530_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); +}; + DECLARE_DEVICE_TYPE(HLCD0515, hlcd0515_device) DECLARE_DEVICE_TYPE(HLCD0569, hlcd0569_device) +DECLARE_DEVICE_TYPE(HLCD0530, hlcd0530_device) #endif // MAME_VIDEO_HLCD0515_H diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp index e296a02d786..14484d5ee57 100644 --- a/src/mame/drivers/hh_ucom4.cpp +++ b/src/mame/drivers/hh_ucom4.cpp @@ -1665,8 +1665,8 @@ MACHINE_CONFIG_END /*************************************************************************** Mattel Computer Gin - * NEC uCOM-43 MCU, label D650C 060 - * Hughes HLCD0569 LCD driver, 5 by 14 segments LCD panel, no sound + * NEC uCOM-43 MCU, label D650C 060 (die label same) + * Hughes HLCD0530 LCD driver, 5 by 14 segments LCD panel, no sound ***************************************************************************/ @@ -1678,7 +1678,7 @@ public: m_lcd(*this, "lcd") { } - required_device m_lcd; + required_device m_lcd; DECLARE_WRITE32_MEMBER(lcd_output_w); DECLARE_WRITE8_MEMBER(lcd_w); @@ -1689,7 +1689,7 @@ public: WRITE32_MEMBER(mcompgin_state::lcd_output_w) { // uses ROW0-4, COL11-24 - display_matrix(26, 8, data, 1 << offset); + display_matrix(24, 8, data, 1 << offset); } WRITE8_MEMBER(mcompgin_state::lcd_w) @@ -1721,13 +1721,13 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( mcompgin ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", NEC_D650, 400000) // approximation + MCFG_CPU_ADD("maincpu", NEC_D650, XTAL_400kHz) // TDK FCR400K MCFG_UCOM4_READ_A_CB(IOPORT("IN.0")) MCFG_UCOM4_READ_B_CB(IOPORT("IN.1")) MCFG_UCOM4_WRITE_E_CB(WRITE8(mcompgin_state, lcd_w)) /* video hardware */ - MCFG_DEVICE_ADD("lcd", HLCD0569, 1000) // C=? + MCFG_DEVICE_ADD("lcd", HLCD0530, 500) // C=0.01uF MCFG_HLCD0515_WRITE_COLS_CB(WRITE32(mcompgin_state, lcd_output_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_mcompgin) -- cgit v1.2.3