mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
pps41: add preliminary mm78la/mm77la
This commit is contained in:
parent
a860495f6c
commit
001eadf294
@ -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
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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()
|
||||
|
@ -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; };
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
64
src/devices/cpu/pps41/mm78la.cpp
Normal file
64
src/devices/cpu/pps41/mm78la.cpp
Normal file
@ -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();
|
||||
}
|
84
src/devices/cpu/pps41/mm78la.h
Normal file
84
src/devices/cpu/pps41/mm78la.h
Normal file
@ -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
|
47
src/devices/cpu/pps41/mm78laop.cpp
Normal file
47
src/devices/cpu/pps41/mm78laop.cpp
Normal file
@ -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();
|
||||
}
|
@ -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()
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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" />
|
||||
|
@ -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" />
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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" />
|
||||
|
Loading…
Reference in New Issue
Block a user