added HLCD0530 device (nw)

This commit is contained in:
hap 2017-05-30 21:41:58 +02:00
parent dbb99ce29f
commit 13ba56b464
3 changed files with 43 additions and 31 deletions

View File

@ -2,10 +2,11 @@
// copyright-holders:hap // copyright-holders:hap
/* /*
Hughes HLCD 0515/0569 LCD Driver Hughes HLCD 0515 family LCD Driver
0515: 25 columns(also size of buffer/ram) 0515: 25 columns(also size of buffer/ram)
0569: 24 columns, no DATA OUT pin, display blank has no effect 0569: 24 columns, no DATA OUT pin, display blank has no effect
0530: specifications unknown, pinout seems similar to 0569
TODO: TODO:
- read mode is untested - read mode is untested
@ -19,6 +20,7 @@
DEFINE_DEVICE_TYPE(HLCD0515, hlcd0515_device, "hlcd0515", "Hughes HLCD 0515 LCD Driver") 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(HLCD0569, hlcd0569_device, "hlcd0569", "Hughes HLCD 0569 LCD Driver")
DEFINE_DEVICE_TYPE(HLCD0530, hlcd0530_device, "hlcd0530", "Hughes HLCD 0530 LCD Driver")
//------------------------------------------------- //-------------------------------------------------
// constructor // 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)
{
}
//------------------------------------------------- //-------------------------------------------------

View File

@ -2,7 +2,7 @@
// copyright-holders:hap // copyright-holders:hap
/* /*
Hughes HLCD 0515/0569 LCD Driver Hughes HLCD 0515 family LCD Driver
*/ */
@ -14,29 +14,27 @@
// pinout reference // pinout reference
/* /*
____ ____ ____ ____ ____ ____
ROW0 1 |* \_/ | 40 VDD ROW0 1 |* \_/ | 40 VDD ROW0 1 |* \_/ | 40 VDD
ROW1 2 | | 39 OSC ROW1 2 | | 39 OSC ROW1 2 | | 39 VDRIVE?
ROW2 3 | | 38 CLOCK ROW2 3 | | 38 CLOCK ROW2 3 | | 38 OSC
ROW3 4 | | 37 DATA IN ROW3 4 | | 37 DATA IN ROW3 4 | | 37 CLOCK
ROW4 5 | | 36 _CS ROW4 5 | | 36 _CS ROW4 5 | | 36 DATA IN
ROW5 6 | | 35 DATA OUT ROW5 6 | | 35 DATA OUT ROW5 6 | | 35 _CS
ROW6 7 | | 34 COL25 ROW6 7 | | 34 COL25 ROW6 7 | | 34 OSC OUT?
ROW7 8 | | 33 COL24 ROW7 8 | | 33 COL24 ROW7 8 | | 33 COL24
COL1 9 | | 32 COL23 COL1 9 | | 32 COL23 COL1 9 | | 32 COL23
COL2 10 | HLCD 0515 | 31 COL22 COL2 10 | HLCD 0515 | 31 COL22 COL2 10 | HLCD 0569 | 31 COL22
COL3 11 | | 30 COL21 COL3 11 | | 30 COL21 COL3 11 | | 30 COL21
COL4 12 | | 29 COL20 COL4 12 | | 29 COL20 COL4 12 | | 29 COL20
COL5 13 | | 28 COL19 COL5 13 | | 28 COL19 COL5 13 | | 28 COL19
COL6 14 | | 27 COL18 COL6 14 | | 27 COL18 COL6 14 | | 27 COL18
COL7 15 | | 26 COL17 COL7 15 | | 26 COL17 COL7 15 | | 26 COL17
COL8 16 | | 25 COL16 COL8 16 | | 25 COL16 COL8 16 | | 25 COL16
COL9 17 | | 24 COL15 COL9 17 | | 24 COL15 COL9 17 | | 24 COL15
COL10 18 | | 23 COL14 COL10 18 | | 23 COL14 COL10 18 | | 23 COL14
COL11 19 | | 22 COL13 COL11 19 | | 22 COL13 COL11 19 | | 22 COL13
GND 20 |___________| 21 COL12 GND 20 |___________| 21 COL12 GND 20 |___________| 21 COL12
HLCD 0569 doesn't have DATA OUT, instead it has what seems like OSC OUT on pin 34.
OSC is tied to a capacitor, the result frequency is 50000 * cap(in uF), eg. 0.01uF cap = 500Hz. 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. 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; 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(HLCD0515, hlcd0515_device)
DECLARE_DEVICE_TYPE(HLCD0569, hlcd0569_device) DECLARE_DEVICE_TYPE(HLCD0569, hlcd0569_device)
DECLARE_DEVICE_TYPE(HLCD0530, hlcd0530_device)
#endif // MAME_VIDEO_HLCD0515_H #endif // MAME_VIDEO_HLCD0515_H

View File

@ -1665,8 +1665,8 @@ MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
Mattel Computer Gin Mattel Computer Gin
* NEC uCOM-43 MCU, label D650C 060 * NEC uCOM-43 MCU, label D650C 060 (die label same)
* Hughes HLCD0569 LCD driver, 5 by 14 segments LCD panel, no sound * Hughes HLCD0530 LCD driver, 5 by 14 segments LCD panel, no sound
***************************************************************************/ ***************************************************************************/
@ -1678,7 +1678,7 @@ public:
m_lcd(*this, "lcd") m_lcd(*this, "lcd")
{ } { }
required_device<hlcd0569_device> m_lcd; required_device<hlcd0530_device> m_lcd;
DECLARE_WRITE32_MEMBER(lcd_output_w); DECLARE_WRITE32_MEMBER(lcd_output_w);
DECLARE_WRITE8_MEMBER(lcd_w); DECLARE_WRITE8_MEMBER(lcd_w);
@ -1689,7 +1689,7 @@ public:
WRITE32_MEMBER(mcompgin_state::lcd_output_w) WRITE32_MEMBER(mcompgin_state::lcd_output_w)
{ {
// uses ROW0-4, COL11-24 // 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) WRITE8_MEMBER(mcompgin_state::lcd_w)
@ -1721,13 +1721,13 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( mcompgin ) static MACHINE_CONFIG_START( mcompgin )
/* basic machine hardware */ /* 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_A_CB(IOPORT("IN.0"))
MCFG_UCOM4_READ_B_CB(IOPORT("IN.1")) MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
MCFG_UCOM4_WRITE_E_CB(WRITE8(mcompgin_state, lcd_w)) MCFG_UCOM4_WRITE_E_CB(WRITE8(mcompgin_state, lcd_w))
/* video hardware */ /* 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_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_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_mcompgin) MCFG_DEFAULT_LAYOUT(layout_mcompgin)