Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
287 changes: 228 additions & 59 deletions src/mame/ensoniq/esq1.cpp

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/mame/ensoniq/esqlcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ void esq2x16_sq1_device::device_add_mconfig(machine_config &config)
}

//--------------------------------------------------------------------------------------------------------------------------------------------
void esq2x16_sq1_device::write_char(int data)
void esq2x16_sq1_device::write_char(uint8_t data)
{
int DisplayCode = data;
int LedState;
Expand Down
2 changes: 1 addition & 1 deletion src/mame/ensoniq/esqlcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class esq2x16_sq1_device : public esqvfd_device {
public:
esq2x16_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);

virtual void write_char(int data) override;
virtual void write_char(uint8_t data) override;
virtual void update_display() override;

protected:
Expand Down
29 changes: 17 additions & 12 deletions src/mame/ensoniq/esqvfd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -151,12 +151,12 @@ void esqvfd_device::update_display()
{
uint32_t segdata = conv_segments(font[m_chars[row][col]]);

// force bottom bar on all underlined chars
if (m_attrs[row][col] & AT_UNDERLINE)
segdata |= 0x0008;

// digits:
m_vfds->set((row * m_cols) + col, segdata);

// underlines:
m_vfds->set((row * m_cols) + col + (m_rows * m_cols), (m_attrs[row][col] & AT_UNDERLINE) ? 1 : 0);

m_dirty[row][col] = 0;
}
}
Expand All @@ -170,17 +170,22 @@ void esq2x40_device::device_add_mconfig(machine_config &config)
config.set_default_layout(layout_esq2by40);
}

void esq2x40_device::write_char(int data)
void esq2x40_device::write_char(uint8_t data)
{
// ESQ-1 sends (cursor move) 0xfa 0xYY to mark YY characters as underlined at the current cursor location
if (m_lastchar == 0xfa)
{
if ((m_cursx + data) > m_rows)
data = m_rows - m_cursx;
for (int i = 0; i < data; i++)
for (uint8_t j = 0; j < m_rows; j++)
{
m_attrs[m_cursy][m_cursx + i] |= AT_UNDERLINE;
m_dirty[m_cursy][m_cursx + i] = 1;
for (uint8_t i = 0; i < m_cols; i++)
{
if (m_cursy == j && i >= m_cursx && i < m_cursx + data)
m_attrs[j][i] |= AT_UNDERLINE;
else
m_attrs[j][i] &= ~AT_UNDERLINE;

m_dirty[j][i] = 1;
}
}

m_lastchar = 0;
Expand Down Expand Up @@ -305,7 +310,7 @@ void esq1x22_device::device_add_mconfig(machine_config &config)
}


void esq1x22_device::write_char(int data)
void esq1x22_device::write_char(uint8_t data)
{
if (data >= 0x60)
{
Expand Down Expand Up @@ -352,7 +357,7 @@ void esq2x40_sq1_device::device_add_mconfig(machine_config &config)
config.set_default_layout(layout_esq2by40); // we use the normal 2x40 layout
}

void esq2x40_sq1_device::write_char(int data)
void esq2x40_sq1_device::write_char(uint8_t data)
{
if (data == 0x09) // musical note
{
Expand Down
10 changes: 5 additions & 5 deletions src/mame/ensoniq/esqvfd.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class esqvfd_device : public device_t {
public:
void write(uint8_t data) { write_char(data); }

virtual void write_char(int data) = 0;
virtual void write_char(uint8_t data) = 0;
virtual void update_display();
virtual bool write_contents(std::ostream &o) { return false; }

Expand All @@ -36,7 +36,7 @@ class esqvfd_device : public device_t {

typedef std::tuple<output_helper::ptr, int, int> dimensions_param;

template <int R, int C> static dimensions_param make_dimensions(device_t &device) { return dimensions_param(std::make_unique<output_helper_impl<R * C> >(device), R, C); }
template <int R, int C> static dimensions_param make_dimensions(device_t &device) { return dimensions_param(std::make_unique<output_helper_impl<2 * R * C> >(device), R, C); }

esqvfd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, dimensions_param &&dimensions);

Expand Down Expand Up @@ -64,7 +64,7 @@ class esq1x22_device : public esqvfd_device {
public:
esq1x22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);

virtual void write_char(int data) override;
virtual void write_char(uint8_t data) override;

protected:
virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
Expand All @@ -76,7 +76,7 @@ class esq2x40_device : public esqvfd_device {
public:
esq2x40_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);

virtual void write_char(int data) override;
virtual void write_char(uint8_t data) override;
virtual bool write_contents(std::ostream &o) override;

protected:
Expand All @@ -87,7 +87,7 @@ class esq2x40_sq1_device : public esqvfd_device {
public:
esq2x40_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);

virtual void write_char(int data) override;
virtual void write_char(uint8_t data) override;

protected:
virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
Expand Down
Loading
Loading