mirror of
https://github.com/holub/mame
synced 2025-04-16 21:44:32 +03:00
pce220.cpp: split HD61202 and SED1560 into separate devices. [Sandro Ronco]
Machines promoted to WORKING ---------------------------- Sharp PC-E220 [Sandro Ronco] Sharp PC-G815 [Sandro Ronco]
This commit is contained in:
parent
4726878b3c
commit
2dbfe3db33
@ -351,6 +351,18 @@ if (VIDEOS["HD44780"]~=null) then
|
||||
}
|
||||
end
|
||||
|
||||
--------------------------------------------------
|
||||
--
|
||||
--@src/devices/video/hd61202.h,VIDEOS["HD61202"] = true
|
||||
--------------------------------------------------
|
||||
|
||||
if (VIDEOS["HD61202"]~=null) then
|
||||
files {
|
||||
MAME_DIR .. "src/devices/video/hd61202.cpp",
|
||||
MAME_DIR .. "src/devices/video/hd61202.h",
|
||||
}
|
||||
end
|
||||
|
||||
--------------------------------------------------
|
||||
--
|
||||
--@src/devices/video/hd61603.h,VIDEOS["HD61603"] = true
|
||||
|
@ -345,6 +345,7 @@ VIDEOS["NT7534"] = true
|
||||
VIDEOS["HD44102"] = true
|
||||
VIDEOS["HD44352"] = true
|
||||
VIDEOS["HD44780"] = true
|
||||
VIDEOS["HD61202"] = true
|
||||
VIDEOS["HD61603"] = true
|
||||
VIDEOS["HD61830"] = true
|
||||
--VIDEOS["HD63484"] = true
|
||||
|
132
src/devices/video/hd61202.cpp
Normal file
132
src/devices/video/hd61202.cpp
Normal file
@ -0,0 +1,132 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Sandro Ronco
|
||||
/**********************************************************************
|
||||
|
||||
Hitachi HD61202 LCD Driver
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "hd61202.h"
|
||||
#include "screen.h"
|
||||
|
||||
|
||||
DEFINE_DEVICE_TYPE(HD61202, hd61202_device, "hd61202", "Hitachi HD61202 LCD Driver")
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// hd61202_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
hd61202_device::hd61202_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, HD61202, tag, owner, clock)
|
||||
, m_screen_update_cb(*this)
|
||||
{
|
||||
}
|
||||
|
||||
void hd61202_device::device_resolve_objects()
|
||||
{
|
||||
m_screen_update_cb.resolve();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void hd61202_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_bf));
|
||||
save_item(NAME(m_lcd_on));
|
||||
save_item(NAME(m_out_data));
|
||||
save_item(NAME(m_page));
|
||||
save_item(NAME(m_addr));
|
||||
save_item(NAME(m_start_line));
|
||||
save_item(NAME(m_ddr));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void hd61202_device::device_reset()
|
||||
{
|
||||
m_bf = 0;
|
||||
m_lcd_on = 0;
|
||||
m_out_data = 0;
|
||||
m_page = 0;
|
||||
m_addr = 0;
|
||||
m_start_line = 0;
|
||||
std::fill(std::begin(m_ddr), std::end(m_ddr), 0);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// status_r - status register read
|
||||
//-------------------------------------------------
|
||||
|
||||
uint8_t hd61202_device::status_r()
|
||||
{
|
||||
// x--- ---- Busy
|
||||
// --x- ---- LCD on/off
|
||||
|
||||
uint8_t data = 0;
|
||||
|
||||
data |= (m_lcd_on << 5);
|
||||
data |= (m_bf << 7);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// control_w - instruction register write
|
||||
//-------------------------------------------------
|
||||
|
||||
void hd61202_device::control_w(uint8_t data)
|
||||
{
|
||||
if ((data & 0xfe) == 0x3e) // Display on/off
|
||||
m_lcd_on = data & 0x01;
|
||||
else if ((data & 0xf8) == 0xb8) // Set page
|
||||
m_page = data & 0x07;
|
||||
else if ((data & 0xc0) == 0x40) // Set address
|
||||
m_addr = data & 0x3f;
|
||||
else if ((data & 0xc0) == 0xc0) // Set display start line
|
||||
m_start_line = data & 0x3f;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// data_r - data register read
|
||||
//-------------------------------------------------
|
||||
|
||||
uint8_t hd61202_device::data_r()
|
||||
{
|
||||
uint8_t data = m_out_data;
|
||||
m_out_data = m_ddr[(m_page * 0x40 + m_addr) & 0x1ff];
|
||||
m_addr++;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// data_w - data register write
|
||||
//-------------------------------------------------
|
||||
|
||||
void hd61202_device::data_w(uint8_t data)
|
||||
{
|
||||
m_ddr[(m_page * 0x40 + m_addr) & 0x1ff] = data;
|
||||
m_addr++;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// update_screen - update screen
|
||||
//-------------------------------------------------
|
||||
|
||||
uint32_t hd61202_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
return m_screen_update_cb(bitmap, cliprect, m_lcd_on, m_start_line, m_ddr);
|
||||
}
|
62
src/devices/video/hd61202.h
Normal file
62
src/devices/video/hd61202.h
Normal file
@ -0,0 +1,62 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Sandro Ronco
|
||||
/**********************************************************************
|
||||
|
||||
Hitachi HD61202 LCD Driver
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#ifndef MAME_VIDEO_HD61202_H
|
||||
#define MAME_VIDEO_HD61202_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HD61202_UPDATE_CB(name) uint32_t name(bitmap_ind16 &bitmap, const rectangle &cliprect, bool lcd_on, int start_line, uint8_t *ddr)
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> hd61202_device
|
||||
|
||||
class hd61202_device : public device_t
|
||||
{
|
||||
public:
|
||||
typedef device_delegate<uint32_t (bitmap_ind16 &bitmap, const rectangle &cliprect, bool lcd_on, int start_line, uint8_t *ddr)> screen_update_delegate;
|
||||
|
||||
// construction/destruction
|
||||
hd61202_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
||||
|
||||
// configuration helpers
|
||||
template <typename... T> void set_screen_update_cb(T &&... args) { m_screen_update_cb.set(std::forward<T>(args)...); }
|
||||
|
||||
uint8_t status_r();
|
||||
uint8_t data_r();
|
||||
void control_w(uint8_t data);
|
||||
void data_w(uint8_t data);
|
||||
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_resolve_objects() override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
screen_update_delegate m_screen_update_cb;
|
||||
|
||||
uint8_t m_bf; // busy flag
|
||||
uint8_t m_lcd_on;
|
||||
uint8_t m_out_data;
|
||||
uint8_t m_page;
|
||||
uint8_t m_addr;
|
||||
uint8_t m_start_line;
|
||||
uint8_t m_ddr[0x200]; // 4096 bit Display data RAM
|
||||
};
|
||||
|
||||
|
||||
DECLARE_DEVICE_TYPE(HD61202, hd61202_device)
|
||||
|
||||
#endif // MAME_VIDEO_HD61202_H
|
@ -3,6 +3,7 @@
|
||||
/***************************************************************************
|
||||
|
||||
SED1520 LCD controller
|
||||
SED1560 LCD controller
|
||||
|
||||
TODO:
|
||||
- busy flag
|
||||
@ -20,6 +21,7 @@
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(SED1520, sed1520_device, "sed1520", "Epson SED1520")
|
||||
DEFINE_DEVICE_TYPE(SED1560, sed1560_device, "sed1560", "Epson SED1560")
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
@ -30,10 +32,32 @@ DEFINE_DEVICE_TYPE(SED1520, sed1520_device, "sed1520", "Epson SED1520")
|
||||
// sed1520_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
sed1520_device::sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, SED1520, tag, owner, clock), m_lcd_on(0), m_busy(0), m_page(0), m_column(0), m_old_column(0), m_start_line(0),
|
||||
m_adc(0), m_static_drive(0), m_modify_write(false),
|
||||
m_screen_update_cb(*this)
|
||||
sed15xx_device_base::sed15xx_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t ddr_size, uint32_t page_size)
|
||||
: device_t(mconfig, type, tag, owner, clock)
|
||||
, m_ddr_size(ddr_size)
|
||||
, m_page_size(page_size)
|
||||
, m_lcd_on(0)
|
||||
, m_busy(0)
|
||||
, m_page(0)
|
||||
, m_column(0)
|
||||
, m_old_column(0)
|
||||
, m_start_line(0)
|
||||
, m_adc(0)
|
||||
, m_modify_write(false)
|
||||
, m_data(0)
|
||||
, m_duty(0)
|
||||
{
|
||||
}
|
||||
|
||||
sed1520_device::sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: sed15xx_device_base(mconfig, SED1520, tag, owner, clock, 320, 80) // 2560-bit display RAM
|
||||
, m_screen_update_cb(*this)
|
||||
{
|
||||
}
|
||||
|
||||
sed1560_device::sed1560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: sed15xx_device_base(mconfig, SED1560, tag, owner, clock, 1349, 166) // 166 × 65-bit display RAM
|
||||
, m_screen_update_cb(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -42,9 +66,9 @@ sed1520_device::sed1520_device(const machine_config &mconfig, const char *tag, d
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void sed1520_device::device_start()
|
||||
void sed15xx_device_base::device_start()
|
||||
{
|
||||
m_screen_update_cb.resolve();
|
||||
m_ddr = std::make_unique<uint8_t[]>(m_ddr_size);
|
||||
|
||||
// state saving
|
||||
save_item(NAME(m_lcd_on));
|
||||
@ -54,16 +78,17 @@ void sed1520_device::device_start()
|
||||
save_item(NAME(m_old_column));
|
||||
save_item(NAME(m_start_line));
|
||||
save_item(NAME(m_adc));
|
||||
save_item(NAME(m_static_drive));
|
||||
save_item(NAME(m_modify_write));
|
||||
save_item(NAME(m_vram));
|
||||
save_item(NAME(m_data));
|
||||
save_item(NAME(m_duty));
|
||||
save_pointer(NAME(m_ddr), m_ddr_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void sed1520_device::device_reset()
|
||||
void sed15xx_device_base::device_reset()
|
||||
{
|
||||
m_lcd_on = 0;
|
||||
m_busy = 0;
|
||||
@ -72,32 +97,85 @@ void sed1520_device::device_reset()
|
||||
m_old_column = 0;
|
||||
m_start_line = 0;
|
||||
m_adc = 1;
|
||||
m_static_drive = 0;
|
||||
m_modify_write = false;
|
||||
memset(m_vram, 0x00, sizeof(m_vram));
|
||||
m_data = 0;
|
||||
m_duty = 0;
|
||||
std::fill_n(m_ddr.get(), m_ddr_size, 0x00);
|
||||
}
|
||||
|
||||
void sed1520_device::device_resolve_objects()
|
||||
{
|
||||
m_screen_update_cb.resolve();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void sed1520_device::device_start()
|
||||
{
|
||||
sed15xx_device_base::device_start();
|
||||
|
||||
// state saving
|
||||
save_item(NAME(m_static_drive));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void sed1520_device::device_reset()
|
||||
{
|
||||
sed15xx_device_base::device_reset();
|
||||
|
||||
m_page = 3;
|
||||
m_static_drive = false;
|
||||
}
|
||||
|
||||
|
||||
void sed1560_device::device_resolve_objects()
|
||||
{
|
||||
m_screen_update_cb.resolve();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void sed1560_device::device_start()
|
||||
{
|
||||
sed15xx_device_base::device_start();
|
||||
|
||||
// state saving
|
||||
save_item(NAME(m_contrast));
|
||||
save_item(NAME(m_reverse));
|
||||
save_item(NAME(m_fill));
|
||||
save_item(NAME(m_line_inv));
|
||||
save_item(NAME(m_line_inv_num));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void sed1560_device::device_reset()
|
||||
{
|
||||
sed15xx_device_base::device_reset();
|
||||
|
||||
m_page = 0;
|
||||
m_adc = 0;
|
||||
m_contrast = 0;
|
||||
m_reverse = false;
|
||||
m_fill = false;
|
||||
m_line_inv_num = 16;
|
||||
m_line_inv = false;
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// device interface
|
||||
//**************************************************************************
|
||||
|
||||
uint32_t sed1520_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
if (m_lcd_on)
|
||||
{
|
||||
if (!m_screen_update_cb.isnull())
|
||||
m_screen_update_cb(bitmap, cliprect, m_vram, m_start_line, m_adc);
|
||||
}
|
||||
else if (m_static_drive)
|
||||
return UPDATE_HAS_NOT_CHANGED;
|
||||
else
|
||||
bitmap.fill(0, cliprect);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t sed1520_device::read(offs_t offset)
|
||||
uint8_t sed15xx_device_base::read(offs_t offset)
|
||||
{
|
||||
if (offset & 0x01)
|
||||
return data_read();
|
||||
@ -105,7 +183,7 @@ uint8_t sed1520_device::read(offs_t offset)
|
||||
return status_read();
|
||||
}
|
||||
|
||||
void sed1520_device::write(offs_t offset, uint8_t data)
|
||||
void sed15xx_device_base::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (offset & 0x01)
|
||||
data_write(data);
|
||||
@ -113,33 +191,56 @@ void sed1520_device::write(offs_t offset, uint8_t data)
|
||||
control_write(data);
|
||||
}
|
||||
|
||||
uint8_t sed15xx_device_base::status_read()
|
||||
{
|
||||
return (m_busy << 7) | (m_adc << 6) | (m_lcd_on << 5);
|
||||
}
|
||||
|
||||
void sed15xx_device_base::data_write(uint8_t data)
|
||||
{
|
||||
m_ddr[(m_page * m_page_size + m_column) % m_ddr_size] = data;
|
||||
if (m_column < m_page_size)
|
||||
m_column++;
|
||||
}
|
||||
|
||||
uint8_t sed15xx_device_base::data_read()
|
||||
{
|
||||
uint8_t data = m_data;
|
||||
m_data = m_ddr[(m_page * m_page_size + m_column) % m_ddr_size];
|
||||
if (!m_modify_write && m_column < m_page_size)
|
||||
m_column++;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
void sed1520_device::control_write(uint8_t data)
|
||||
{
|
||||
if((data & 0xfe) == 0xae) // display on/off
|
||||
if ((data & 0xfe) == 0xae) // Display ON/OFF
|
||||
m_lcd_on = data & 0x01;
|
||||
else if((data & 0xe0) == 0xc0) // set start line
|
||||
else if ((data & 0xe0) == 0xc0) // Set start line
|
||||
m_start_line = data & 0x1f;
|
||||
else if((data & 0xfc) == 0xb8) // set page address
|
||||
else if ((data & 0xfc) == 0xb8) // Set page address
|
||||
m_page = data & 0x03;
|
||||
else if((data & 0x80) == 0x00) // set column address
|
||||
m_column = data % 80;
|
||||
else if((data & 0xfe) == 0xa0) // select ADC
|
||||
else if ((data & 0x80) == 0x00) // Set column address
|
||||
m_column = data & 0x7f;
|
||||
else if ((data & 0xfe) == 0xa0) // Select ADC
|
||||
m_adc = data & 0x01;
|
||||
else if((data & 0xfe) == 0xa4) // static drive on/off
|
||||
else if ((data & 0xfe) == 0xa4) // Static drive ON/OFF
|
||||
m_static_drive = data & 0x01;
|
||||
else if((data & 0xfe) == 0xa8) // select duty
|
||||
;
|
||||
else if(data == 0xe0) // read-modify-write on
|
||||
else if ((data & 0xfe) == 0xa8) // Select duty
|
||||
m_duty = data & 0x01;
|
||||
else if (data == 0xe0) // Read Modify Write ON
|
||||
{
|
||||
m_modify_write = true;
|
||||
m_old_column = m_column;
|
||||
}
|
||||
else if(data == 0xee) // read-modify-write off
|
||||
else if (data == 0xee) // Read Modify Write OFF
|
||||
{
|
||||
m_modify_write = false;
|
||||
m_column = m_old_column;
|
||||
}
|
||||
else if(data == 0xe2) // reset
|
||||
else if (data == 0xe2) // Reset
|
||||
{
|
||||
m_start_line = m_column = 0;
|
||||
m_page = 3;
|
||||
@ -148,22 +249,75 @@ void sed1520_device::control_write(uint8_t data)
|
||||
logerror("%s: invalid SED1520 command: %x\n", tag(), data);
|
||||
}
|
||||
|
||||
uint8_t sed1520_device::status_read()
|
||||
|
||||
void sed1560_device::control_write(uint8_t data)
|
||||
{
|
||||
uint8_t data = (m_busy << 7) | (m_adc << 6) | (m_lcd_on << 5);
|
||||
return data;
|
||||
if ((data & 0xfe) == 0xae) // Display ON/OFF
|
||||
m_lcd_on = BIT(data, 0);
|
||||
else if ((data & 0xc0) == 0x40) // Initial display line
|
||||
m_start_line = data & 0x3f;
|
||||
else if ((data & 0xf0) == 0xb0) // Set page
|
||||
m_page = data & 0x0f;
|
||||
else if ((data & 0xf0) == 0x00) // Column address low nibble
|
||||
m_column = (m_column & 0xf0) | (data & 0x0f);
|
||||
else if ((data & 0xf0) == 0x10) // Column address high nibble
|
||||
m_column = (m_column & 0x0f) | ((data << 4) & 0xf0);
|
||||
else if ((data & 0xfe) == 0xa0) // Select ADC
|
||||
m_adc = BIT(data, 0);
|
||||
else if ((data & 0xfe) == 0xa6) // Normal/reverse display
|
||||
m_reverse = BIT(data, 0);
|
||||
else if ((data & 0xfe) == 0xa4) // Display all points ON/OFF
|
||||
m_fill = BIT(data, 0);
|
||||
else if ((data & 0xfe) == 0xa8) // Select duty
|
||||
m_duty = (m_duty & 0x02) | (data & 0x01);
|
||||
else if ((data & 0xfe) == 0xaa) // Duty + 1
|
||||
m_duty = (m_duty & 0x01) | ((data & 0x01) << 1);
|
||||
else if ((data & 0xf0) == 0x30) // Set n-line inversion
|
||||
{
|
||||
m_line_inv = true;
|
||||
m_line_inv_num = data & 0x0f;
|
||||
}
|
||||
else if (data == 0x20) // Cancel n-line inversion
|
||||
m_line_inv = false;
|
||||
else if (data == 0xe2) // Reset
|
||||
{
|
||||
m_start_line = 0;
|
||||
m_column = 0;
|
||||
m_page = 0;
|
||||
m_line_inv_num = 16;
|
||||
}
|
||||
else if (data == 0xe0) // Read Modify Write
|
||||
{
|
||||
m_modify_write = true;
|
||||
m_old_column = m_column;
|
||||
}
|
||||
else if (data == 0xee) // End Modify Write
|
||||
{
|
||||
m_modify_write = false;
|
||||
m_column = m_old_column;
|
||||
}
|
||||
else if (data == 0xed) // Power-on completion
|
||||
logerror("%s: Power-on completion\n", tag());
|
||||
else if ((data & 0xf0) == 0xc0) // Output status set
|
||||
logerror("%s: Output status set %x\n", tag(), data & 0x0f);
|
||||
else if ((data & 0xfe) == 0x24) // LCD power supply ON/OFF
|
||||
logerror("%s: LCD power supply %d\n", tag(), data & 0x01);
|
||||
else if ((data & 0xe0) == 0x80) // Software contrast setting
|
||||
m_contrast = data;
|
||||
else
|
||||
logerror("%s: invalid SED1560 command: %x\n", tag(), data);
|
||||
}
|
||||
|
||||
void sed1520_device::data_write(uint8_t data)
|
||||
|
||||
uint32_t sed1520_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
m_vram[(m_page * 80 + m_column) % sizeof(m_vram)] = data;
|
||||
m_column = (m_column + 1) % 80;
|
||||
if (m_static_drive)
|
||||
return UPDATE_HAS_NOT_CHANGED;
|
||||
|
||||
return m_screen_update_cb(bitmap, cliprect, m_lcd_on, m_ddr.get(), m_start_line, m_adc, m_duty);
|
||||
}
|
||||
|
||||
uint8_t sed1520_device::data_read()
|
||||
uint32_t sed1560_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint8_t data = m_vram[(m_page * 80 + m_column) % sizeof(m_vram)];
|
||||
if (!m_modify_write)
|
||||
m_column = (m_column + 1) % 80;
|
||||
return data;
|
||||
return m_screen_update_cb(bitmap, cliprect, m_lcd_on, m_ddr.get(), m_start_line, m_adc, m_duty, m_reverse, m_fill, m_contrast, m_line_inv, m_line_inv_num);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
/***************************************************************************
|
||||
|
||||
SED1520 LCD controller
|
||||
SED1560 LCD controller
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -12,44 +13,40 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#define SED1520CB_UPDATE(cls, fnc) sed1520_device::screen_update_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, ((cls *)nullptr))
|
||||
#define SED1520CB_DEVUPDATE(tag, cls, fnc) sed1520_device::screen_update_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr))
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
#define SED1520_UPDATE_CB(name) uint32_t name(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc)
|
||||
#define SED1520_UPDATE_CB(name) uint32_t name(bitmap_ind16 &bitmap, const rectangle &cliprect, bool lcd_on, uint8_t *dram, uint8_t start_line, uint8_t adc, uint8_t duty)
|
||||
#define SED1560_UPDATE_CB(name) uint32_t name(bitmap_ind16 &bitmap, const rectangle &cliprect, bool lcd_on, uint8_t *dram, uint8_t start_line, uint8_t adc, uint8_t duty, bool reverse, bool fill, uint8_t contrast, bool line_inv, uint8_t line_inv_num)
|
||||
|
||||
|
||||
// ======================> sed1520_device
|
||||
// ======================> sed15xx_device_base
|
||||
|
||||
class sed1520_device : public device_t
|
||||
class sed15xx_device_base : public device_t
|
||||
{
|
||||
public:
|
||||
typedef device_delegate<uint32_t (bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc)> screen_update_delegate;
|
||||
|
||||
// construction/destruction
|
||||
sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
// sconfiguration helpers
|
||||
template <typename... T> void set_screen_update_cb(T &&... args) { m_screen_update_cb.set(std::forward<T>(args)...); }
|
||||
|
||||
// device interface
|
||||
virtual void write(offs_t offset, uint8_t data);
|
||||
virtual uint8_t read(offs_t offset);
|
||||
virtual void control_write(uint8_t data);
|
||||
virtual void control_write(uint8_t data) = 0;
|
||||
virtual uint8_t status_read();
|
||||
virtual void data_write(uint8_t data);
|
||||
virtual uint8_t data_read();
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
protected:
|
||||
// construction/destruction
|
||||
sed15xx_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t ddr_size, uint32_t page_size);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
protected:
|
||||
const uint32_t m_ddr_size;
|
||||
const uint32_t m_page_size;
|
||||
|
||||
// internal state
|
||||
uint8_t m_lcd_on;
|
||||
uint8_t m_busy;
|
||||
@ -58,15 +55,82 @@ private:
|
||||
uint8_t m_old_column;
|
||||
uint8_t m_start_line;
|
||||
uint8_t m_adc;
|
||||
uint8_t m_static_drive;
|
||||
bool m_modify_write;
|
||||
screen_update_delegate m_screen_update_cb;
|
||||
uint8_t m_data;
|
||||
uint8_t m_duty;
|
||||
|
||||
uint8_t m_vram[0x140];
|
||||
std::unique_ptr<uint8_t[]> m_ddr;
|
||||
};
|
||||
|
||||
|
||||
// ======================> sed1520_device
|
||||
|
||||
class sed1520_device : public sed15xx_device_base
|
||||
{
|
||||
public:
|
||||
typedef device_delegate<uint32_t (bitmap_ind16 &bitmap, const rectangle &cliprect, bool lcd_on, uint8_t *dram, uint8_t start_line, uint8_t adc, uint8_t duty)> sed1520_update_delegate;
|
||||
|
||||
// construction/destruction
|
||||
sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
// configuration helpers
|
||||
template <typename... T> void set_screen_update_cb(T &&... args) { m_screen_update_cb.set(std::forward<T>(args)...); }
|
||||
|
||||
// device interface
|
||||
virtual void control_write(uint8_t data) override;
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_resolve_objects() override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
sed1520_update_delegate m_screen_update_cb;
|
||||
|
||||
// internal state
|
||||
bool m_static_drive;
|
||||
};
|
||||
|
||||
|
||||
// ======================> sed1560_device
|
||||
|
||||
class sed1560_device : public sed15xx_device_base
|
||||
{
|
||||
public:
|
||||
typedef device_delegate<uint32_t (bitmap_ind16 &bitmap, const rectangle &cliprect, bool lcd_on, uint8_t *dram, uint8_t start_line, uint8_t adc, uint8_t duty, bool reverse, bool fill, uint8_t contrast, bool line_inv, uint8_t line_inv_num)> sed1560_update_delegate;
|
||||
|
||||
// construction/destruction
|
||||
sed1560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
// configuration helpers
|
||||
template <typename... T> void set_screen_update_cb(T &&... args) { m_screen_update_cb.set(std::forward<T>(args)...); }
|
||||
|
||||
// device interface
|
||||
virtual void control_write(uint8_t data) override;
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_resolve_objects() override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
sed1560_update_delegate m_screen_update_cb;
|
||||
|
||||
// internal state
|
||||
bool m_reverse;
|
||||
bool m_fill;
|
||||
bool m_line_inv;
|
||||
uint8_t m_line_inv_num;
|
||||
uint8_t m_contrast;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(SED1520, sed1520_device)
|
||||
DECLARE_DEVICE_TYPE(SED1560, sed1560_device)
|
||||
|
||||
#endif // MAME_VIDEO_SED1520_H
|
||||
|
@ -288,7 +288,11 @@ int gl3000s_state::sed1520_screen_update(bitmap_ind16 &bitmap, const rectangle &
|
||||
|
||||
SED1520_UPDATE_CB(gl3000s_state::screen_update_right)
|
||||
{
|
||||
return sed1520_screen_update(bitmap, cliprect, vram, start_line, adc, 119);
|
||||
if (lcd_on)
|
||||
return sed1520_screen_update(bitmap, cliprect, dram, start_line, adc, 119);
|
||||
|
||||
bitmap.fill(0, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
SED1520_UPDATE_CB(gl3000s_state::screen_update_left)
|
||||
@ -301,7 +305,10 @@ SED1520_UPDATE_CB(gl3000s_state::screen_update_left)
|
||||
for (int y=0; y<2; y++)
|
||||
for (int x=59; x<85; x++)
|
||||
{
|
||||
uint8_t data = vram[(y*0x50 + x) % 0x140];
|
||||
uint8_t data = 0;
|
||||
if (lcd_on)
|
||||
data = dram[((y + (start_line >> 3)) * 80 + x) & 0x1ff];
|
||||
|
||||
int32_t dpos = (x - 74) / 2;
|
||||
if (dpos < 0)
|
||||
{
|
||||
@ -348,7 +355,11 @@ SED1520_UPDATE_CB(gl3000s_state::screen_update_left)
|
||||
m_points_out[1][i] = points[0][i];
|
||||
}
|
||||
|
||||
return sed1520_screen_update(bitmap, cliprect, vram, start_line, adc, 58);
|
||||
if (lcd_on)
|
||||
return sed1520_screen_update(bitmap, cliprect, dram, start_line, adc, 58);
|
||||
|
||||
bitmap.fill(0, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,38 +4,56 @@ license:CC0
|
||||
-->
|
||||
<mamelayout version="2">
|
||||
<element name="lev1" defstate="0">
|
||||
<text string="1" state="1">
|
||||
<color red="0.36" green="0.32" blue="0.34" />
|
||||
<rect>
|
||||
<color red="0.541" green="0.572" blue="0.580" />
|
||||
</rect>
|
||||
<text string="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545" />
|
||||
<color state="1" red="0.360" green="0.325" blue="0.345" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="lev2" defstate="0">
|
||||
<text string="2" state="1">
|
||||
<color red="0.36" green="0.32" blue="0.34" />
|
||||
<rect>
|
||||
<color red="0.541" green="0.572" blue="0.580" />
|
||||
</rect>
|
||||
<text string="2">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545" />
|
||||
<color state="1" red="0.360" green="0.325" blue="0.345" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="lev3" defstate="0">
|
||||
<text string="3" state="1">
|
||||
<color red="0.36" green="0.32" blue="0.34" />
|
||||
<rect>
|
||||
<color red="0.541" green="0.572" blue="0.580" />
|
||||
</rect>
|
||||
<text string="3">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545" />
|
||||
<color state="1" red="0.360" green="0.325" blue="0.345" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="lev4" defstate="0">
|
||||
<text string="4" state="1">
|
||||
<color red="0.36" green="0.32" blue="0.34" />
|
||||
<rect>
|
||||
<color red="0.541" green="0.572" blue="0.580" />
|
||||
</rect>
|
||||
<text string="4">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545" />
|
||||
<color state="1" red="0.360" green="0.325" blue="0.345" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="disk" defstate="0">
|
||||
<disk state="1">
|
||||
<color red="0.36" green="0.32" blue="0.34" />
|
||||
<disk>
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545" />
|
||||
<color state="1" red="0.360" green="0.325" blue="0.345" />
|
||||
</disk>
|
||||
</element>
|
||||
<element name="rect" defstate="0">
|
||||
<rect state="1">
|
||||
<color red="0.36" green="0.32" blue="0.34" />
|
||||
<rect>
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545" />
|
||||
<color state="1" red="0.360" green="0.325" blue="0.345" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="digit">
|
||||
<led7seg>
|
||||
<color red="1" green="1" blue="1" />
|
||||
<color red="0.360" green="0.325" blue="0.345" />
|
||||
</led7seg>
|
||||
</element>
|
||||
|
||||
@ -45,16 +63,16 @@ license:CC0
|
||||
</screen>
|
||||
|
||||
<element name="LEV1" ref="lev1">
|
||||
<bounds x="36" y="2" width="3" height="4" />
|
||||
<bounds x="34" y="2" width="2.5" height="4" />
|
||||
</element>
|
||||
<element name="LEV2" ref="lev2">
|
||||
<bounds x="38" y="2" width="3" height="4" />
|
||||
<bounds x="36.5" y="2" width="2.5" height="4" />
|
||||
</element>
|
||||
<element name="LEV3" ref="lev3">
|
||||
<bounds x="40" y="2" width="3" height="4" />
|
||||
<bounds x="39" y="2" width="2.5" height="4" />
|
||||
</element>
|
||||
<element name="LEV4" ref="lev4">
|
||||
<bounds x="42" y="2" width="3" height="4" />
|
||||
<bounds x="41.5" y="2" width="2.5" height="4" />
|
||||
</element>
|
||||
|
||||
<element name="TICK0" ref="rect">
|
||||
|
209
src/mame/layout/pce220.lay
Normal file
209
src/mame/layout/pce220.lay
Normal file
@ -0,0 +1,209 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
<element name="busy">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="BUSY">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="caps">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="CAPS">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="kana">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<!-- カナ -->
|
||||
<text string="KANA">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="syo">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<!-- ⼩ -->
|
||||
<text string="SYO">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="2ndf">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="2ndF">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="text">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="TEXT">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="casl">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="CASL">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="pro">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="PRO">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="run">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="RUN">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="batt">
|
||||
<rect>
|
||||
<bounds x="-0.1" y="0.3" width="0.1" height="0.4"/>
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</rect>
|
||||
<rect>
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</rect>
|
||||
<text string="BATT">
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="e">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="E">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="m">
|
||||
<rect>
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</rect>
|
||||
<text string="M">
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="const">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="CONST">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="rad">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="RAD" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="g">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="G" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="de" align="2">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="DE">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="stat">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="STAT">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="print">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="PRINT">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="background">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
</element>
|
||||
|
||||
<view name="Internal Layout">
|
||||
<element ref="background">
|
||||
<bounds x="0" y="0" width="148" height="39.8"/>
|
||||
</element>
|
||||
<screen index="0">
|
||||
<bounds x="2" y="4" width="144" height="32"/>
|
||||
</screen>
|
||||
|
||||
<!-- top symbols -->
|
||||
<element ref="busy" name="sym.0"> <bounds x="5" y="0.5" width="8" height="3"/> </element>
|
||||
<element ref="caps" name="sym.1"> <bounds x="16" y="0.5" width="8" height="3"/> </element>
|
||||
<element ref="kana" name="sym.2"> <bounds x="28" y="0.5" width="8" height="3"/> </element>
|
||||
<element ref="syo" name="sym.3"> <bounds x="40" y="0.5" width="6" height="3"/> </element>
|
||||
<element ref="2ndf" name="sym.4"> <bounds x="63" y="0.5" width="8" height="3"/> </element>
|
||||
<element ref="de" name="sym.5"> <bounds x="75" y="0.5" width="3" height="3"/> </element>
|
||||
<element ref="g" name="sym.6"> <bounds x="78" y="0.5" width="1.5" height="3"/> </element>
|
||||
<element ref="rad" name="sym.7"> <bounds x="79.5" y="0.5" width="6" height="3"/> </element>
|
||||
<element ref="const" name="sym.8"> <bounds x="100" y="0.5" width="10" height="3"/> </element>
|
||||
<element ref="m" name="sym.9"> <bounds x="112" y="0.5" width="2" height="3"/> </element>
|
||||
<element ref="e" name="sym.10"> <bounds x="124" y="0.5" width="2" height="3"/> </element>
|
||||
<element ref="batt" name="sym.11"> <bounds x="136" y="0.5" width="8" height="3"/> </element>
|
||||
|
||||
<!-- bottom symbols -->
|
||||
<element ref="run" name="sym.12"> <bounds x="14" y="36.3" width="6" height="3"/> </element>
|
||||
<element ref="pro" name="sym.13"> <bounds x="22" y="36.3" width="6" height="3"/> </element>
|
||||
<element ref="casl" name="sym.14"> <bounds x="30" y="36.3" width="8" height="3"/> </element>
|
||||
<element ref="text" name="sym.15"> <bounds x="40" y="36.3" width="8" height="3"/> </element>
|
||||
<element ref="stat" name="sym.16"> <bounds x="124" y="36.3" width="8" height="3"/> </element>
|
||||
<element ref="print" name="sym.17"> <bounds x="134" y="36.3" width="10" height="3"/> </element>
|
||||
</view>
|
||||
</mamelayout>
|
197
src/mame/layout/pcg850v.lay
Normal file
197
src/mame/layout/pcg850v.lay
Normal file
@ -0,0 +1,197 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
<element name="busy">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="BUSY" align="2">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="caps">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="CAPS" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="kana">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<!-- カナ -->
|
||||
<text string="KANA" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="syo">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<!-- ⼩ -->
|
||||
<text string="SYO">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="2ndf">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="2ndF" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="text">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="TEXT" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="casl">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="CASL" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="pro">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="PRO" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="run">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="RUN" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="batt">
|
||||
<rect>
|
||||
<bounds x="-0.1" y="0.3" width="0.1" height="0.4"/>
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</rect>
|
||||
<rect>
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</rect>
|
||||
<text string="BATT">
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="m">
|
||||
<rect>
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</rect>
|
||||
<text string="M">
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="const">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="CONST" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="rad">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="RAD" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="g">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="G" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="de">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="DE" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="stat">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="STAT" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
<element name="print">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
<text string="PRINT" align="1">
|
||||
<color state="0" red="0.514" green="0.533" blue="0.545"/>
|
||||
<color state="1" red="0.200" green="0.165" blue="0.169"/>
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="background">
|
||||
<rect>
|
||||
<color red="0.541" green="0.573" blue="0.580"/>
|
||||
</rect>
|
||||
</element>
|
||||
|
||||
<view name="Internal Layout">
|
||||
<element ref="background">
|
||||
<bounds x="0" y="0" width="166.5" height="52"/>
|
||||
</element>
|
||||
|
||||
<screen index="0">
|
||||
<bounds x="9.5" y="2" width="144" height="48"/>
|
||||
</screen>
|
||||
|
||||
<element ref="busy" name="sym.0"> <bounds x="0.5" y="40.5" width="8" height="4.5"/> </element>
|
||||
<element ref="batt" name="sym.1"> <bounds x="0.5" y="45.5" width="8" height="4.5"/> </element>
|
||||
<element ref="run" name="sym.2"> <bounds x="154" y="1.5" width="6" height="4.5"/> </element>
|
||||
<element ref="pro" name="sym.3"> <bounds x="160" y="1.5" width="6" height="4.5"/> </element>
|
||||
<element ref="text" name="sym.4"> <bounds x="154" y="6.5" width="8" height="4.5"/> </element>
|
||||
<element ref="casl" name="sym.5"> <bounds x="154" y="11.5" width="8" height="4.5"/> </element>
|
||||
<element ref="stat" name="sym.6"> <bounds x="154" y="16.5" width="8" height="4.5"/> </element>
|
||||
<element ref="2ndf" name="sym.7"> <bounds x="154" y="21.5" width="8" height="4.5"/> </element>
|
||||
<element ref="m" name="sym.8"> <bounds x="163" y="21.5" width="2.5" height="4.5"/> </element>
|
||||
<element ref="caps" name="sym.9"> <bounds x="154" y="26.2" width="8" height="4.5"/> </element>
|
||||
<element ref="kana" name="sym.10"> <bounds x="154" y="31.0" width="6" height="4.5"/> </element>
|
||||
<element ref="syo" name="sym.11"> <bounds x="161" y="31.0" width="4" height="4.5"/> </element>
|
||||
<element ref="de" name="sym.12"> <bounds x="154" y="35.7" width="3.5" height="4.5"/> </element>
|
||||
<element ref="g" name="sym.13"> <bounds x="157.5" y="35.7" width="1.8" height="4.5"/> </element>
|
||||
<element ref="rad" name="sym.14"> <bounds x="159.3" y="35.7" width="6.5" height="4.5"/> </element>
|
||||
<element ref="const" name="sym.15"> <bounds x="154" y="40.5" width="10" height="4.5"/> </element>
|
||||
<element ref="print" name="sym.16"> <bounds x="154" y="45.5" width="10" height="4.5"/> </element>
|
||||
</view>
|
||||
</mamelayout>
|
Loading…
Reference in New Issue
Block a user