summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Jeff Tranter <tranter@pobox.com>2024-07-26 19:41:37 -0400
committer GitHub <noreply@github.com>2024-07-26 19:41:37 -0400
commit8f82bd0a7ebfbf6a445db5cf7824eee6e9a3f339 (patch)
treebd173f1132fb4071ecccc70aa20475b504661784 /src
parent06879c3cb7f1889efad480c3b6e5d24bf4c83503 (diff)
heathzenith/h8.cpp: Add front panel keypad and serial console to Heathkit H8. (#12590)
Diffstat (limited to 'src')
-rw-r--r--src/mame/heathzenith/h8.cpp45
-rw-r--r--src/mame/layout/h8.lay209
2 files changed, 250 insertions, 4 deletions
diff --git a/src/mame/heathzenith/h8.cpp b/src/mame/heathzenith/h8.cpp
index 236ce61f9bd..25aea75c1d0 100644
--- a/src/mame/heathzenith/h8.cpp
+++ b/src/mame/heathzenith/h8.cpp
@@ -10,6 +10,8 @@
STATUS:
It runs, keyboard works, you can enter data.
+ Serial console works. You can make it visible by setting Video
+ Options in settings.
Meaning of LEDs:
PWR = power is turned on
@@ -50,6 +52,7 @@ Official test program from pages 4 to 8 of the operator's manual:
#include "machine/i8251.h"
#include "machine/clock.h"
#include "machine/timer.h"
+#include "bus/rs232/rs232.h"
#include "imagedev/cassette.h"
#include "sound/beep.h"
#include "speaker.h"
@@ -66,6 +69,7 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_uart(*this, "uart")
+ , m_console(*this, "console")
, m_cass(*this, "cassette")
, m_beep(*this, "beeper")
, m_io_keyboard(*this, "X%u", 0U)
@@ -90,6 +94,7 @@ private:
void portf1_w(u8 data);
void h8_status_callback(u8 data);
void h8_inte_callback(int state);
+ void h8_level3_irq_callback(int state);
TIMER_DEVICE_CALLBACK_MEMBER(h8_irq_pulse);
TIMER_DEVICE_CALLBACK_MEMBER(kansas_r);
TIMER_DEVICE_CALLBACK_MEMBER(kansas_w);
@@ -112,6 +117,7 @@ private:
required_device<i8080_cpu_device> m_maincpu;
required_device<i8251_device> m_uart;
+ required_device<i8251_device> m_console;
required_device<cassette_image_device> m_cass;
required_device<beep_device> m_beep;
required_ioport_array<2> m_io_keyboard;
@@ -122,6 +128,16 @@ private:
output_finder<> m_run_led;
};
+// The usual baud rate is 600. The H8 supported baud rates from 110 to
+// 9600. You can change the baud rate if it is changed here and in the
+// other places that specify 600 baud.
+static DEVICE_INPUT_DEFAULTS_START(terminal)
+ DEVICE_INPUT_DEFAULTS("RS232_RXBAUD", 0xff, RS232_BAUD_600)
+ DEVICE_INPUT_DEFAULTS("RS232_TXBAUD", 0xff, RS232_BAUD_600)
+ DEVICE_INPUT_DEFAULTS("RS232_DATABITS", 0xff, RS232_DATABITS_8)
+ DEVICE_INPUT_DEFAULTS("RS232_PARITY", 0xff, RS232_PARITY_NONE)
+ DEVICE_INPUT_DEFAULTS("RS232_STOPBITS", 0xff, RS232_STOPBITS_1)
+DEVICE_INPUT_DEFAULTS_END
TIMER_DEVICE_CALLBACK_MEMBER(h8_state::h8_irq_pulse)
{
@@ -211,8 +227,8 @@ void h8_state::io_map(address_map &map)
map(0xf0, 0xf0).rw(FUNC(h8_state::portf0_r), FUNC(h8_state::portf0_w));
map(0xf1, 0xf1).w(FUNC(h8_state::portf1_w));
map(0xf8, 0xf9).rw(m_uart, FUNC(i8251_device::read), FUNC(i8251_device::write));
- // optional connection to a serial terminal @ 600 baud
- //map(0xfa, 0xfb).rw("uart1", FUNC(i8251_device::read), FUNC(i8251_device::write));
+ // Connection to a serial terminal @ 600 baud
+ map(0xfa, 0xfb).rw(m_console, FUNC(i8251_device::read), FUNC(i8251_device::write));
}
/* Input ports */
@@ -320,6 +336,13 @@ But, all of this can only occur if bit 4 of port F0 is low. */
m_run_led = state;
}
+void h8_state::h8_level3_irq_callback(int state)
+{
+ if (state) {
+ m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xdf); // RST3
+ }
+}
+
TIMER_DEVICE_CALLBACK_MEMBER(h8_state::kansas_w)
{
m_cass_data[3]++;
@@ -370,10 +393,28 @@ void h8_state::h8(machine_config &config)
I8251(config, m_uart, 0);
m_uart->txd_handler().set([this] (bool state) { m_cassbit = state; });
+ I8251(config, m_console, 0);
+ m_console->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
+ m_console->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
+ m_console->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
+ // The RxRdy pin on the 8251 USART is normally jumpered to generate a level 3 i/o interrupt.
+ m_console->rxrdy_handler().set(FUNC(h8_state::h8_level3_irq_callback));
+
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
+ rs232.rxd_handler().set(m_console, FUNC(i8251_device::write_rxd));
+ rs232.cts_handler().set(m_console, FUNC(i8251_device::write_cts));
+ rs232.dsr_handler().set(m_console, FUNC(i8251_device::write_dsr));
+ rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
+
clock_device &cassette_clock(CLOCK(config, "cassette_clock", 4800));
cassette_clock.signal_handler().set(m_uart, FUNC(i8251_device::write_txc));
cassette_clock.signal_handler().append(m_uart, FUNC(i8251_device::write_rxc));
+ // Console UART clock is 16X the baud rate.
+ clock_device &console_clock(CLOCK(config, "console_clock", 600*16));
+ console_clock.signal_handler().set(m_console, FUNC(i8251_device::write_txc));
+ console_clock.signal_handler().append(m_console, FUNC(i8251_device::write_rxc));
+
CASSETTE(config, m_cass);
m_cass->set_formats(h8_cassette_formats);
m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
diff --git a/src/mame/layout/h8.lay b/src/mame/layout/h8.lay
index 0ecb7c44d5d..b571a4cc4b5 100644
--- a/src/mame/layout/h8.lay
+++ b/src/mame/layout/h8.lay
@@ -31,10 +31,181 @@ license:CC0-1.0
<color red="1.0" green="1.0" blue="1.0" /></text>
</element>
- <view name="Default Layout">
+ <element name="btn_0">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="0"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_1">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="1"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="SP"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_2">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="2"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="AF"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_3">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="3"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="BC"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_4">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="4"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="DE"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="GO"><bounds x="0.2" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_5">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="5"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="HL"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="IN"><bounds x="0.2" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_6">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="6"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="PC"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="OUT"><bounds x="0.2" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_7">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="7"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="SI"><bounds x="0.22" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_8">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="8"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="LOAD"><bounds x="0.22" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_9">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="9"><bounds x="0.15" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="DUMP"><bounds x="0.22" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_a">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="+"><bounds x="0.1" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_b">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="-"><bounds x="0.1" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_c">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="*"><bounds x="0.1" y="0.3" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="CANCEL"><bounds x="0.1" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_d">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="/"><bounds x="0.1" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="ALTER"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="RST 0"><bounds x="0.2" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_e">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="#"><bounds x="0.1" y="0.2" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="MEM"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="RTM 0"><bounds x="0.2" y="0.7" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+ <element name="btn_f">
+ <rect state="0"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect state="1"><bounds x="0.0" y="0.0" width="1.0" height="1.0" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="0"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.1" green="0.1" blue="0.1" /></rect>
+ <rect state="1"><bounds x="0.1" y="0.1" width="0.9" height="0.9" /><color red="0.2" green="0.2" blue="0.2" /></rect>
+ <rect><bounds x="0.1" y="0.1" width="0.8" height="0.8" /><color red="0.15" green="0.15" blue="0.15" /></rect>
+ <text string="."><bounds x="0.1" y="0.1" width="0.8" height="0.6" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ <text string="REG"><bounds x="0.0" y="0.1" width="0.8" height="0.2" /><color red="1.0" green="1.0" blue="1.0" /></text>
+ </element>
+
+ <group name="keypad">
+ <bounds x="0" y="0" width="4.35" height="4.275" />
+
+ <element ref="btn_7" inputtag="X0" inputmask="0x80"><bounds x="0.20" y="0.125" width="1.0" height="1.0" /></element>
+ <element ref="btn_8" inputtag="X1" inputmask="0x01"><bounds x="1.25" y="0.125" width="1.0" height="1.0" /></element>
+ <element ref="btn_9" inputtag="X1" inputmask="0x02"><bounds x="2.30" y="0.125" width="1.0" height="1.0" /></element>
+ <element ref="btn_a" inputtag="X1" inputmask="0x04"><bounds x="3.35" y="0.125" width="1.0" height="1.0" /></element>
+
+ <element ref="btn_4" inputtag="X0" inputmask="0x10"><bounds x="0.20" y="1.175" width="1.0" height="1.0" /></element>
+ <element ref="btn_5" inputtag="X0" inputmask="0x20"><bounds x="1.25" y="1.175" width="1.0" height="1.0" /></element>
+ <element ref="btn_6" inputtag="X0" inputmask="0x40"><bounds x="2.30" y="1.175" width="1.0" height="1.0" /></element>
+ <element ref="btn_b" inputtag="X1" inputmask="0x08"><bounds x="3.35" y="1.175" width="1.0" height="1.0" /></element>
+
+ <element ref="btn_1" inputtag="X0" inputmask="0x02"><bounds x="0.20" y="2.225" width="1.0" height="1.0" /></element>
+ <element ref="btn_2" inputtag="X0" inputmask="0x04"><bounds x="1.25" y="2.225" width="1.0" height="1.0" /></element>
+ <element ref="btn_3" inputtag="X0" inputmask="0x08"><bounds x="2.30" y="2.225" width="1.0" height="1.0" /></element>
+ <element ref="btn_c" inputtag="X1" inputmask="0x10"><bounds x="3.35" y="2.225" width="1.0" height="1.0" /></element>
+
+ <element ref="btn_0" inputtag="X0" inputmask="0x01"><bounds x="0.20" y="3.275" width="1.0" height="1.0" /></element>
+ <element ref="btn_f" inputtag="X1" inputmask="0x80"><bounds x="1.25" y="3.275" width="1.0" height="1.0" /></element>
+ <element ref="btn_e" inputtag="X1" inputmask="0x40"><bounds x="2.30" y="3.275" width="1.0" height="1.0" /></element>
+ <element ref="btn_d" inputtag="X1" inputmask="0x20"><bounds x="3.35" y="3.275" width="1.0" height="1.0" /></element>
+ </group>
+
+ <group name="leds">
<!-- Black background -->
<element ref="background">
- <bounds left="1" top="65" right="600" bottom="200" />
+ <bounds left="1" top="65" right="900" bottom="200" />
</element>
<element name="digit1" ref="digit">
<bounds left="107" top="075" right="154" bottom="146" />
@@ -93,5 +264,39 @@ license:CC0-1.0
<element name="pwr_txt" ref="DAT">
<bounds left="437" right="593" top="175" bottom="190" />
</element>
+ </group>
+
+ <view name="LEDs and Keypad">
+ <bounds x="0" y="0" width="1000" height="400" />
+ <collection name="LEDs and Keypad">
+ <group ref="leds">
+ <bounds x="5" y="15" width="1000" height="150" />
+ </group>
+ <group ref="keypad">
+ <bounds x="720" y="15" width="220" height="220" />
+ </group>
+ </collection>
+ </view>
+
+ <view name="LEDs">
+ <bounds x="0" y="0" width="600" height="150" />
+ <collection name="LEDs">
+ <group ref="leds">
+ <bounds x="0" y="8" width="900" height="130" />
+ </group>
+ </collection>
+ </view>
+
+ <view name="LEDs, Keypad, and Terminal">
+ <bounds x="0" y="0" width="1000" height="400" />
+ <collection name="LEDs and Keypad">
+ <group ref="leds">
+ <bounds x="5" y="15" width="1000" height="150" />
+ </group>
+ <group ref="keypad">
+ <bounds x="720" y="15" width="220" height="220" />
+ </group>
+ </collection>
+ <screen index="0"><bounds x="120" y="160" width="400" height="300" /></screen>
</view>
</mamelayout>