summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-03-19 17:52:26 +0100
committer hap <happppp@users.noreply.github.com>2021-03-19 17:53:12 +0100
commit001eadf2941cfe74ab77f5c5b4993f8882261e12 (patch)
tree80f86f8c7b94a1f09335696ab41178f103ee9d97
parenta860495f6c485ec69f92586254b9f698bfb3d553 (diff)
pps41: add preliminary mm78la/mm77la
-rw-r--r--scripts/src/cpu.lua4
-rw-r--r--src/devices/cpu/pps41/mm75.cpp3
-rw-r--r--src/devices/cpu/pps41/mm76.cpp1
-rw-r--r--src/devices/cpu/pps41/mm76.h1
-rw-r--r--src/devices/cpu/pps41/mm76op.cpp5
-rw-r--r--src/devices/cpu/pps41/mm78.cpp8
-rw-r--r--src/devices/cpu/pps41/mm78.h9
-rw-r--r--src/devices/cpu/pps41/mm78la.cpp64
-rw-r--r--src/devices/cpu/pps41/mm78la.h84
-rw-r--r--src/devices/cpu/pps41/mm78laop.cpp47
-rw-r--r--src/devices/cpu/pps41/mm78op.cpp2
-rw-r--r--src/devices/cpu/pps41/pps41base.cpp33
-rw-r--r--src/devices/cpu/pps41/pps41base.h17
-rw-r--r--src/mame/drivers/fidel_eag68k.cpp2
-rw-r--r--src/mame/drivers/hh_pps41.cpp35
-rw-r--r--src/mame/layout/drdunk.lay6
-rw-r--r--src/mame/layout/dunksunk.lay6
-rw-r--r--src/mame/layout/f2pbball.lay30
-rw-r--r--src/mame/layout/ftri1.lay18
-rw-r--r--src/mame/layout/hccbaskb.lay6
20 files changed, 295 insertions, 86 deletions
diff --git a/scripts/src/cpu.lua b/scripts/src/cpu.lua
index 09ce5e98a23..24884592d70 100644
--- a/scripts/src/cpu.lua
+++ b/scripts/src/cpu.lua
@@ -2881,6 +2881,7 @@ end
--@src/devices/cpu/pps41/mm75.h,CPUS["PPS41"] = true
--@src/devices/cpu/pps41/mm76.h,CPUS["PPS41"] = true
--@src/devices/cpu/pps41/mm78.h,CPUS["PPS41"] = true
+--@src/devices/cpu/pps41/mm78la.h,CPUS["PPS41"] = true
--------------------------------------------------
if CPUS["PPS41"] then
@@ -2896,6 +2897,9 @@ if CPUS["PPS41"] then
MAME_DIR .. "src/devices/cpu/pps41/mm78.cpp",
MAME_DIR .. "src/devices/cpu/pps41/mm78.h",
MAME_DIR .. "src/devices/cpu/pps41/mm78op.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78la.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78la.h",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78laop.cpp",
}
end
diff --git a/src/devices/cpu/pps41/mm75.cpp b/src/devices/cpu/pps41/mm75.cpp
index d1d4a324235..f787e6f1a46 100644
--- a/src/devices/cpu/pps41/mm75.cpp
+++ b/src/devices/cpu/pps41/mm75.cpp
@@ -23,6 +23,5 @@ mm75_device::mm75_device(const machine_config &mconfig, const char *tag, device_
void mm75_device::device_start()
{
mm76_device::device_start();
- m_d_pins--;
- m_d_mask >>= 1;
+ set_d_pins(9);
}
diff --git a/src/devices/cpu/pps41/mm76.cpp b/src/devices/cpu/pps41/mm76.cpp
index 5ebda16f281..7833fa12d2a 100644
--- a/src/devices/cpu/pps41/mm76.cpp
+++ b/src/devices/cpu/pps41/mm76.cpp
@@ -82,7 +82,6 @@ std::unique_ptr<util::disasm_interface> mm76_device::create_disassembler()
void mm76_device::device_start()
{
pps41_base_device::device_start();
- m_stack_levels = 1;
}
void mm76_device::device_reset()
diff --git a/src/devices/cpu/pps41/mm76.h b/src/devices/cpu/pps41/mm76.h
index 6e858c35669..82956e1829e 100644
--- a/src/devices/cpu/pps41/mm76.h
+++ b/src/devices/cpu/pps41/mm76.h
@@ -69,6 +69,7 @@ protected:
void pop_pc();
void push_pc();
void op_illegal();
+ void op_todo();
virtual bool op_is_tr(u8 op) override { return (op & 0xf0) == 0x30; };
virtual bool op_is_eob(u8 op) { return (op & 0xfc) == 0x1c; };
diff --git a/src/devices/cpu/pps41/mm76op.cpp b/src/devices/cpu/pps41/mm76op.cpp
index 99f6e87f9bf..6cef3dae06d 100644
--- a/src/devices/cpu/pps41/mm76op.cpp
+++ b/src/devices/cpu/pps41/mm76op.cpp
@@ -38,6 +38,11 @@ void mm76_device::op_illegal()
logerror("unknown opcode $%02X at $%03X\n", m_op, m_prev_pc);
}
+void mm76_device::op_todo()
+{
+ logerror("unimplemented opcode $%02X at $%03X\n", m_op, m_prev_pc);
+}
+
// opcodes
diff --git a/src/devices/cpu/pps41/mm78.cpp b/src/devices/cpu/pps41/mm78.cpp
index ae5948b9663..99550886a45 100644
--- a/src/devices/cpu/pps41/mm78.cpp
+++ b/src/devices/cpu/pps41/mm78.cpp
@@ -50,17 +50,17 @@ void mm78_device::program_2k(address_map &map)
map(0x000, 0x7ff).rom();
}
-void mm77_device::program_1_3k(address_map &map)
+void mm78_device::program_1_3k(address_map &map)
{
map(0x040, 0x1ff).rom();
map(0x240, 0x3ff).rom();
map(0x640, 0x7ff).rom();
}
-void mm77l_device::program_1_5k(address_map &map)
+void mm78_device::program_1_5k(address_map &map)
{
map(0x000, 0x3ff).rom();
- map(0x600, 0x7ff).rom();
+ map(0x400, 0x5ff).mirror(0x200).rom();
}
void mm78_device::data_128x4(address_map &map)
@@ -68,7 +68,7 @@ void mm78_device::data_128x4(address_map &map)
map(0x00, 0x7f).ram();
}
-void mm77_device::data_96x4(address_map &map)
+void mm78_device::data_96x4(address_map &map)
{
map(0x00, 0x3f).ram();
map(0x40, 0x47).mirror(0x18).ram(); // not to 0x50
diff --git a/src/devices/cpu/pps41/mm78.h b/src/devices/cpu/pps41/mm78.h
index b4b8868584d..a858cf94f3e 100644
--- a/src/devices/cpu/pps41/mm78.h
+++ b/src/devices/cpu/pps41/mm78.h
@@ -60,7 +60,10 @@ protected:
// device_execute_interface overrides
virtual void execute_one() override;
+ void data_96x4(address_map &map);
void data_128x4(address_map &map);
+ void program_1_3k(address_map &map);
+ void program_1_5k(address_map &map);
void program_2k(address_map &map);
// opcode helpers
@@ -107,18 +110,12 @@ public:
protected:
mm77_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
-
- void data_96x4(address_map &map);
- void program_1_3k(address_map &map);
};
class mm77l_device : public mm77_device
{
public:
mm77l_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
-
-protected:
- void program_1_5k(address_map &map);
};
diff --git a/src/devices/cpu/pps41/mm78la.cpp b/src/devices/cpu/pps41/mm78la.cpp
new file mode 100644
index 00000000000..205763a01e8
--- /dev/null
+++ b/src/devices/cpu/pps41/mm78la.cpp
@@ -0,0 +1,64 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/*
+
+ Rockwell MM77LA/MM78LA MCU
+
+*/
+
+#include "emu.h"
+#include "mm78la.h"
+
+
+DEFINE_DEVICE_TYPE(MM78LA, mm78la_device, "mm78la", "Rockwell MM78LA") // MM78L + output PLA and tone generator
+DEFINE_DEVICE_TYPE(MM77LA, mm77la_device, "mm77la", "Rockwell MM77LA") // MM77L + output PLA and tone generator
+
+
+// constructor
+mm78la_device::mm78la_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ mm78la_device(mconfig, MM78LA, tag, owner, clock, 11, address_map_constructor(FUNC(mm78la_device::program_2k), this), 7, address_map_constructor(FUNC(mm78la_device::data_128x4), this))
+{ }
+
+mm78la_device::mm78la_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data) :
+ mm78_device(mconfig, type, tag, owner, clock, prgwidth, program, datawidth, data)
+{ }
+
+mm77la_device::mm77la_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ mm78la_device(mconfig, MM77LA, tag, owner, clock, 11, address_map_constructor(FUNC(mm77la_device::program_1_5k), this), 7, address_map_constructor(FUNC(mm77la_device::data_96x4), this))
+{ }
+
+
+// machine config
+void mm78la_device::device_add_mconfig(machine_config &config)
+{
+ PLA(config, "opla", 5, 14, 32).set_format(pla_device::FMT::BERKELEY);
+}
+
+void mm77la_device::device_add_mconfig(machine_config &config)
+{
+ PLA(config, "opla", 4, 10, 16).set_format(pla_device::FMT::BERKELEY);
+}
+
+
+// initialize
+void mm78la_device::device_start()
+{
+ mm78_device::device_start();
+ set_r_pins(14);
+}
+
+void mm78la_device::device_reset()
+{
+ mm78_device::device_reset();
+}
+
+void mm77la_device::device_start()
+{
+ mm78la_device::device_start();
+ set_r_pins(10);
+}
+
+void mm77la_device::device_reset()
+{
+ mm78la_device::device_reset();
+}
diff --git a/src/devices/cpu/pps41/mm78la.h b/src/devices/cpu/pps41/mm78la.h
new file mode 100644
index 00000000000..6b6c1862b82
--- /dev/null
+++ b/src/devices/cpu/pps41/mm78la.h
@@ -0,0 +1,84 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/*
+
+ Rockwell MM77LA/MM78LA MCU
+
+*/
+
+#ifndef MAME_CPU_PPS41_MM78LA_H
+#define MAME_CPU_PPS41_MM78LA_H
+
+#pragma once
+
+#include "mm78.h"
+
+// pinout reference
+
+/*
+ ____ ____ ____ ____
+ BP 1 |* \_/ | 42 DIO9 BP 1 |* \_/ | 40 DIO9
+ A 2 | | 41 DIO8 A 2 | | 39 DIO8
+ Vdd 3 | | 40 DIO7 N/C 3 | | 38 DIO7
+ VC 4 | | 39 DIO6 VC 4 | | 37 DIO6
+ TEST 5 | | 38 DIO5 Vdd 5 | | 36 DIO5
+ Vss 6 | | 37 DIO4 Vss 6 | | 35 DIO4
+ PI4 7 | | 36 DIO3 TEST 7 | | 34 DIO3
+ PI8 8 | | 35 DIO2 PI4 8 | | 33 DIO2
+ PI3 9 | | 34 DIO1 PI8 9 | | 32 DIO1
+ PI7 10 | MM78LA | 33 DIO0 PI3 10 | MM77LA | 31 DIO0
+ PI6 11 | | 32 Vdd SPK PI7 11 | | 30 INT0
+ PI2 12 | | 31 SPK R2 PI6 12 | | 29 SPK R2
+ PI5 13 | | 30 SPK R1 PI2 13 | | 28 Vdd SPK
+ PI1 14 | | 29 RO01 PI5 14 | | 27 SPK R1
+ PO 15 | | 28 RO02 PI1 15 | | 26 RO01
+ RO14 16 | | 27 RO03 PO 16 | | 25 RO02
+ RO13 17 | | 26 RO04 RO10 17 | | 24 RO03
+ RO12 18 | | 25 RO05 RO09 18 | | 23 RO04
+ RO11 19 | | 24 RO06 RO08 19 | | 22 RO05
+ RO10 20 | | 23 RO07 RO07 20 |___________| 21 RO06
+ RO09 21 |___________| 22 RO08
+
+ MM78LA = aka MM95, MM77LA = aka B80xx (no official documentation known for latter, pinout has guesses)
+*/
+
+class mm78la_device : public mm78_device
+{
+public:
+ mm78la_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ mm78la_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ // opcode handlers
+ virtual void op_sos() override;
+ virtual void op_ros() override;
+ virtual void op_skisl() override;
+ virtual void op_ix() override;
+ virtual void op_ox() override;
+ virtual void op_ioa() override;
+ virtual void op_ios() override;
+};
+
+class mm77la_device : public mm78la_device
+{
+public:
+ mm77la_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+};
+
+
+DECLARE_DEVICE_TYPE(MM78LA, mm78la_device)
+DECLARE_DEVICE_TYPE(MM77LA, mm77la_device)
+
+#endif // MAME_CPU_PPS41_MM78LA_H
diff --git a/src/devices/cpu/pps41/mm78laop.cpp b/src/devices/cpu/pps41/mm78laop.cpp
new file mode 100644
index 00000000000..18b2aa80fe2
--- /dev/null
+++ b/src/devices/cpu/pps41/mm78laop.cpp
@@ -0,0 +1,47 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+
+// MM77LA/MM78LA opcode handlers
+
+#include "emu.h"
+#include "mm78la.h"
+
+
+// opcodes
+
+// changed opcodes
+
+void mm78la_device::op_sos()
+{
+ op_todo();
+}
+
+void mm78la_device::op_ros()
+{
+ op_todo();
+}
+
+void mm78la_device::op_skisl()
+{
+ op_todo();
+}
+
+void mm78la_device::op_ix()
+{
+ op_todo();
+}
+
+void mm78la_device::op_ox()
+{
+ op_todo();
+}
+
+void mm78la_device::op_ioa()
+{
+ op_todo();
+}
+
+void mm78la_device::op_ios()
+{
+ op_todo();
+}
diff --git a/src/devices/cpu/pps41/mm78op.cpp b/src/devices/cpu/pps41/mm78op.cpp
index 05c2dac9d36..13db81d05b8 100644
--- a/src/devices/cpu/pps41/mm78op.cpp
+++ b/src/devices/cpu/pps41/mm78op.cpp
@@ -164,7 +164,7 @@ void mm78_device::op_tab()
void mm78_device::op_ix()
{
// IX: input to X from channel X(aka B)
- m_x = (m_read_r() & m_r_output) >> 4;
+ m_x = (m_read_r() & m_r_output) >> 4 & 0xf;
}
void mm78_device::op_ox()
diff --git a/src/devices/cpu/pps41/pps41base.cpp b/src/devices/cpu/pps41/pps41base.cpp
index e03443da73e..0d3cb8e6d78 100644
--- a/src/devices/cpu/pps41/pps41base.cpp
+++ b/src/devices/cpu/pps41/pps41base.cpp
@@ -8,17 +8,19 @@ This is the single-chip evolution of Rockwell's older PPS-4 CPU. It is similar,
but a lot of things were simplified, the ALU instructions are less diverse.
Part numbers:
-- A75xx = MM75 - 28 pin dip
-- A76xx = MM76 - 42 pin spider
-- A77xx = MM77 - 42 pin spider
-- A78xx = MM78 - 42 pin spider
-- A79xx = MM76C - 52 pin spider - counter
-- A86xx = MM76E - 42 pin spider - extended ROM
-- B76xx = MM76L - 40 pin dip
-- B77xx = MM77L - 40 pin dip
-- B78xx = MM78L - 40 pin dip
-- B86xx = MM76EL - 40 pin dip
-- B90xx = MM78LA - 42 pin spider
+- A75xx = MM75 - 28 pin dip
+- A76xx = MM76 - 42 pin spider
+- A77xx = MM77 - 42 pin spider
+- A78xx = MM78 - 42 pin spider
+- A79xx = MM76C - 52 pin spider - high-speed counter
+- A??xx = MM76D - 52 pin spider - 12-bit ADC
+- A86xx = MM76E - 42 pin spider - extended ROM
+- B76xx = MM76L - 40 pin dip
+- B77xx = MM77L - 40 pin dip
+- B80xx = MM77LA? - 40 pin dip
+- B78xx = MM78L - 40 pin dip
+- B86xx = MM76EL - 40 pin dip
+- B90xx = MM78LA - 42 pin spider
"spider" = 2 rows of pins on each side, just like standard PPS-4 CPUs.
"L" main difference is low-power
@@ -42,7 +44,7 @@ TODO:
but again does not explain why
- allowed opcode after TAB should be limited
- add MCU mask options, there's one for inverting interrupts
-- add MM78LA
+- finish MM78LA emulation
*/
@@ -103,6 +105,7 @@ void pps41_base_device::device_start()
m_prev2_op = 0;
m_prev3_op = 0;
memset(m_stack, 0, sizeof(m_stack));
+ m_stack_levels = 1;
m_a = 0;
m_b = 0;
@@ -123,9 +126,9 @@ void pps41_base_device::device_start()
m_sclock_in = 0;
m_sclock_count = 0;
- m_d_pins = 10;
- m_d_mask = (1 << m_d_pins) - 1;
+ set_d_pins(10);
m_d_output = 0;
+ set_r_pins(8);
m_r_output = 0;
m_int_line[0] = m_int_line[1] = 1; // GND = 1
m_int_ff[0] = m_int_ff[1] = 0;
@@ -198,7 +201,7 @@ void pps41_base_device::device_reset()
m_skip_count = 0;
// clear outputs
- m_write_r(m_r_output = 0xff);
+ m_write_r(m_r_output = m_r_mask);
m_write_d(m_d_output = 0);
m_s = 0;
diff --git a/src/devices/cpu/pps41/pps41base.h b/src/devices/cpu/pps41/pps41base.h
index 7a780e15d73..faeb6234723 100644
--- a/src/devices/cpu/pps41/pps41base.h
+++ b/src/devices/cpu/pps41/pps41base.h
@@ -29,11 +29,11 @@ public:
// 8-bit P(parallel) input
auto read_p() { return m_read_p.bind(); }
- // 10-bit D(discrete) I/O
+ // 10/12-bit D(discrete) I/O
auto read_d() { return m_read_d.bind(); }
auto write_d() { return m_write_d.bind(); }
- // 8-bit R I/O
+ // 8/10/14-bit R I/O
auto read_r() { return m_read_r.bind(); }
auto write_r() { return m_write_r.bind(); }
@@ -44,7 +44,7 @@ public:
// I/O access
u16 d_output_r() { return m_d_output; }
- u8 r_output_r() { return m_r_output; }
+ u16 r_output_r() { return m_r_output; }
int sdo_r() { return BIT(m_s, 3); }
void ssc_w(int state);
@@ -89,8 +89,8 @@ protected:
devcb_read8 m_read_p;
devcb_read16 m_read_d;
devcb_write16 m_write_d;
- devcb_read8 m_read_r;
- devcb_write8 m_write_r;
+ devcb_read16 m_read_r;
+ devcb_write16 m_write_r;
devcb_read_line m_read_sdi;
devcb_write_line m_write_sdo;
devcb_write_line m_write_ssc;
@@ -127,12 +127,17 @@ protected:
int m_d_pins;
u16 m_d_mask;
u16 m_d_output;
- u8 m_r_output;
+ int m_r_pins;
+ u16 m_r_mask;
+ u16 m_r_output;
int m_int_line[2];
int m_int_ff[2];
// misc handlers
+ void set_d_pins(u8 p) { m_d_pins = p; m_d_mask = (1 << p) - 1; }
+ void set_r_pins(u8 p) { m_r_pins = p; m_r_mask = (1 << p) - 1; }
virtual bool op_is_tr(u8 op) = 0;
+
void serial_shift(int state);
void serial_clock();
void cycle();
diff --git a/src/mame/drivers/fidel_eag68k.cpp b/src/mame/drivers/fidel_eag68k.cpp
index dd16ef8b581..ff6018052c7 100644
--- a/src/mame/drivers/fidel_eag68k.cpp
+++ b/src/mame/drivers/fidel_eag68k.cpp
@@ -559,7 +559,7 @@ void excel68k_state::fex68k(machine_config &config)
const attotime irq_period = attotime::from_hz(600); // 556 timer (22nF, 91K + 20K POT @ 14.8K, 0.1K), ideal is 600Hz (measured 580Hz, 604Hz, 632Hz)
TIMER(config, m_irq_on).configure_periodic(FUNC(excel68k_state::irq_on<M68K_IRQ_2>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(1528)); // active for 1.525us
+ m_irq_on->set_start_delay(irq_period - attotime::from_nsec(1525)); // active for 1.525us
TIMER(config, "irq_off").configure_periodic(FUNC(excel68k_state::irq_off<M68K_IRQ_2>), irq_period);
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
diff --git a/src/mame/drivers/hh_pps41.cpp b/src/mame/drivers/hh_pps41.cpp
index 0134f12a861..b2db23137b9 100644
--- a/src/mame/drivers/hh_pps41.cpp
+++ b/src/mame/drivers/hh_pps41.cpp
@@ -15,6 +15,7 @@ ROM source notes when dumped from another publisher, but confident it's the same
#include "cpu/pps41/mm75.h"
#include "cpu/pps41/mm76.h"
#include "cpu/pps41/mm78.h"
+#include "cpu/pps41/mm78la.h"
#include "video/pwm.h"
#include "sound/beep.h"
#include "sound/spkrdev.h"
@@ -58,7 +59,7 @@ public:
// MCU output pin state
u16 m_d = 0;
- u8 m_r = ~0;
+ u16 m_r = 0;
u8 read_inputs(int columns);
virtual DECLARE_INPUT_CHANGED_MEMBER(reset_button);
@@ -148,7 +149,7 @@ public:
void update_display();
void write_d(u16 data);
- void write_r(u8 data);
+ void write_r(u16 data);
void ftri1(machine_config &config);
};
@@ -169,7 +170,7 @@ void ftri1_state::write_d(u16 data)
m_speaker->level_w(BIT(data, 9));
}
-void ftri1_state::write_r(u8 data)
+void ftri1_state::write_r(u16 data)
{
// RIO1-RIO8: digit/led data
m_r = data;
@@ -253,7 +254,7 @@ public:
void update_display();
void write_d(u16 data);
- void write_r(u8 data);
+ void write_r(u16 data);
u8 read_p();
void mastmind(machine_config &config);
@@ -279,7 +280,7 @@ void mastmind_state::write_d(u16 data)
m_beeper->set_state(BIT(data, 8));
}
-void mastmind_state::write_r(u8 data)
+void mastmind_state::write_r(u16 data)
{
// RIO1-RIO7: digit segment data
m_r = data;
@@ -401,7 +402,7 @@ public:
void update_display();
void write_d(u16 data);
- void write_r(u8 data);
+ void write_r(u16 data);
void dunksunk(machine_config &config);
};
@@ -430,7 +431,7 @@ void dunksunk_state::write_d(u16 data)
update_display();
}
-void dunksunk_state::write_r(u8 data)
+void dunksunk_state::write_r(u16 data)
{
// RIO1-RIO7: led data
m_r = data;
@@ -526,7 +527,7 @@ public:
void update_display();
void write_d(u16 data);
- void write_r(u8 data);
+ void write_r(u16 data);
u8 read_p();
void memoquiz(machine_config &config);
};
@@ -556,7 +557,7 @@ void memoquiz_state::write_d(u16 data)
// DIO8: N/C, looks like they planned to add sound, but didn't
}
-void memoquiz_state::write_r(u8 data)
+void memoquiz_state::write_r(u16 data)
{
// RIO1-RIO7: digit segment data
m_r = data;
@@ -660,11 +661,11 @@ public:
void main_write_d(u16 data);
u16 main_read_d();
- void main_write_r(u8 data);
+ void main_write_r(u16 data);
u8 main_read_p();
void sub_write_d(u16 data);
- void sub_write_r(u8 data);
+ void sub_write_r(u16 data);
void mwcfootb(machine_config &config);
};
@@ -695,7 +696,7 @@ u16 mwcfootb_state::main_read_d()
return m_subcpu->d_output_r() & 0x200;
}
-void mwcfootb_state::main_write_r(u8 data)
+void mwcfootb_state::main_write_r(u16 data)
{
// RIO1-RIO7: vfd plate 0-6
m_plate = (m_plate & 0xfff00) | (~data & 0x7f);
@@ -723,7 +724,7 @@ void mwcfootb_state::sub_write_d(u16 data)
m_maincpu->set_input_line(0, (data & 0x200) ? ASSERT_LINE : CLEAR_LINE);
}
-void mwcfootb_state::sub_write_r(u8 data)
+void mwcfootb_state::sub_write_r(u16 data)
{
// RIO1-RIO8: vfd plate 7-14
m_plate = (m_plate & 0xf00ff) | (~data << 8 & 0xff00);
@@ -855,7 +856,7 @@ public:
void update_display();
void write_d(u16 data);
- void write_r(u8 data);
+ void write_r(u16 data);
u8 read_p();
void scrabsen(machine_config &config);
};
@@ -884,7 +885,7 @@ void scrabsen_state::write_d(u16 data)
m_speaker->level_w(BIT(data, 8));
}
-void scrabsen_state::write_r(u8 data)
+void scrabsen_state::write_r(u16 data)
{
// RIO1-RIO8: led data
m_r = data;
@@ -1006,7 +1007,7 @@ public:
void update_display();
void write_d(u16 data);
- void write_r(u8 data);
+ void write_r(u16 data);
u8 read_p();
void rdqa(machine_config &config);
};
@@ -1035,7 +1036,7 @@ void rdqa_state::write_d(u16 data)
m_speaker->level_w(data >> 8 & 3);
}
-void rdqa_state::write_r(u8 data)
+void rdqa_state::write_r(u16 data)
{
// RIO1-RIO7: digit segment data
m_r = data;
diff --git a/src/mame/layout/drdunk.lay b/src/mame/layout/drdunk.lay
index 772d391e4cb..af3856e36df 100644
--- a/src/mame/layout/drdunk.lay
+++ b/src/mame/layout/drdunk.lay
@@ -15,10 +15,10 @@ license:CC0
<element name="text_l2"><text string="VISITOR" align="2"><color red="0.85" green="0.85" blue="0.85" /></text></element>
<element name="led" defstate="0">
- <text string=" ">
+ <rect>
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
- <color red="0.0" green="0.0" blue="0.0" />
- </text>
+ <color alpha="0" />
+ </rect>
<disk state="0">
<bounds x="0.25" y="0.25" width="0.5" height="0.5" />
<color red="0.14" green="0.02" blue="0.03" />
diff --git a/src/mame/layout/dunksunk.lay b/src/mame/layout/dunksunk.lay
index ba41d3911ed..3b580eb467a 100644
--- a/src/mame/layout/dunksunk.lay
+++ b/src/mame/layout/dunksunk.lay
@@ -17,10 +17,10 @@ license:CC0
<element name="text_l4"><text string="Visitor/Destroyer Score"><color red="0.8" green="0.8" blue="0.8" /></text></element>
<element name="led" defstate="0">
- <text string=" ">
+ <rect>
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
- <color red="0.0" green="0.0" blue="0.0" />
- </text>
+ <color alpha="0" />
+ </rect>
<disk state="0">
<bounds x="0.25" y="0.25" width="0.5" height="0.5" />
<color red="0.14" green="0.02" blue="0.03" />
diff --git a/src/mame/layout/f2pbball.lay b/src/mame/layout/f2pbball.lay
index 7ce4594eac6..831c9eac433 100644
--- a/src/mame/layout/f2pbball.lay
+++ b/src/mame/layout/f2pbball.lay
@@ -30,7 +30,7 @@ license:CC0
<element name="black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
<element name="blackd"><disk><color red="0.0" green="0.0" blue="0.0" /></disk></element>
- <element name="green"><rect><color red="0.0" green="0.38" blue="0.149" /></rect></element>
+ <element name="green"><rect><color red="0.0" green="0.3804" blue="0.1491" /></rect></element>
<element name="white"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element>
<element name="led" defstate="0">
@@ -53,59 +53,59 @@ license:CC0
</element>
<element name="text_p">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="P"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_1st">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="1st"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_2nd">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="2nd"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_3rd">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="3rd"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_foul">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="FOUL"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_curve">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="CURVE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_ball">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="BALL"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_strike">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="STRIKE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_flyout">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="FLY OUT"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_homerun">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="HOME RUN"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_grout">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="GR. OUT"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_single">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="SINGLE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_double">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="DOUBLE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_triple">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="TRIPLE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
diff --git a/src/mame/layout/ftri1.lay b/src/mame/layout/ftri1.lay
index 05886f028c0..3cf14759898 100644
--- a/src/mame/layout/ftri1.lay
+++ b/src/mame/layout/ftri1.lay
@@ -30,7 +30,7 @@ license:CC0
<element name="black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
<element name="blackd"><disk><color red="0.0" green="0.0" blue="0.0" /></disk></element>
- <element name="green"><rect><color red="0.0" green="0.38" blue="0.149" /></rect></element>
+ <element name="green"><rect><color red="0.0" green="0.3804" blue="0.1491" /></rect></element>
<element name="white"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element>
<element name="whited"><disk><color red="0.8" green="0.8" blue="0.8" /></disk></element>
@@ -54,38 +54,38 @@ license:CC0
</element>
<element name="text_foul">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="FOUL"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_ball">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="BALL"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_strike">
<text string="STRIKE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_flyout">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="FLY OUT"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_homerun">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="HOME RUN"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_grdout">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="GRD. OUT"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_single">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="SINGLE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_double">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="DOUBLE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="text_triple">
- <rect><color red="0.0" green="0.38" blue="0.15" /></rect>
+ <rect><color red="0.0" green="0.3804" blue="0.1491" /></rect>
<text string="TRIPLE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
diff --git a/src/mame/layout/hccbaskb.lay b/src/mame/layout/hccbaskb.lay
index 6fde4d92a1a..00fec34531d 100644
--- a/src/mame/layout/hccbaskb.lay
+++ b/src/mame/layout/hccbaskb.lay
@@ -16,10 +16,10 @@ license:CC0
<element name="text_l3"><text string="HOME" align="2"><color red="0.85" green="0.85" blue="0.85" /></text></element>
<element name="led" defstate="0">
- <text string=" ">
+ <rect>
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
- <color red="0.0" green="0.0" blue="0.0" />
- </text>
+ <color alpha="0" />
+ </rect>
<disk state="0">
<bounds x="0.25" y="0.25" width="0.5" height="0.5" />
<color red="0.14" green="0.02" blue="0.03" />