summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/pps41/pps41base.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/pps41/pps41base.cpp')
-rw-r--r--src/devices/cpu/pps41/pps41base.cpp35
1 files changed, 12 insertions, 23 deletions
diff --git a/src/devices/cpu/pps41/pps41base.cpp b/src/devices/cpu/pps41/pps41base.cpp
index 1c148f5dafc..dc37d66bf5f 100644
--- a/src/devices/cpu/pps41/pps41base.cpp
+++ b/src/devices/cpu/pps41/pps41base.cpp
@@ -6,6 +6,7 @@
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.
+It also has a lot in common with Rockwell's previous MCU series (A/B5000).
Part numbers:
- A75xx = MM75 - 28 pin dip
@@ -46,15 +47,14 @@ TODO:
- add MCU mask options, there's one for inverting interrupts
- does MM78LA support interrupts? the sparse documentation available says it does
- MM78LA mnemonics for changed opcodes is unknown
-- no known documentation exists for MM77LA, mcu name is guessed
+- no known documentation exists for MM77LA, mcu name is guessed (maybe it was
+ designed in collaboration with Mattel, and later evolved into MM78LA)
*/
#include "emu.h"
#include "pps41base.h"
-#include "debugger.h"
-
pps41_base_device::pps41_base_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) :
cpu_device(mconfig, type, tag, owner, clock),
@@ -63,12 +63,12 @@ pps41_base_device::pps41_base_device(const machine_config &mconfig, device_type
m_prgwidth(prgwidth),
m_datawidth(datawidth),
m_opla(*this, "opla"),
- m_read_p(*this),
- m_read_d(*this),
+ m_read_p(*this, 0xff),
+ m_read_d(*this, 0),
m_write_d(*this),
- m_read_r(*this),
+ m_read_r(*this, 0xff),
m_write_r(*this),
- m_read_sdi(*this),
+ m_read_sdi(*this, 1),
m_write_sdo(*this),
m_write_ssc(*this),
m_write_spk(*this)
@@ -86,17 +86,6 @@ void pps41_base_device::device_start()
m_prgmask = (1 << m_prgwidth) - 1;
m_datamask = (1 << m_datawidth) - 1;
- // resolve callbacks
- m_read_p.resolve_safe(0xff);
- m_read_d.resolve_safe(0);
- m_write_d.resolve_safe();
- m_read_r.resolve_safe(0xff);
- m_write_r.resolve_safe();
- m_read_sdi.resolve_safe(1);
- m_write_sdo.resolve_safe();
- m_write_ssc.resolve_safe();
- m_write_spk.resolve_safe();
-
// init RAM with 0xf
for (int i = 0; i <= m_datamask; i++)
m_data->write_byte(i, 0xf);
@@ -175,11 +164,11 @@ void pps41_base_device::device_start()
state_add(STATE_GENPCBASE, "CURPC", m_prev_pc).formatstr("%03X").noshow();
m_state_count = 0;
- state_add(++m_state_count, "PC", m_pc).formatstr("%03X");
- state_add(++m_state_count, "A", m_a).formatstr("%01X");
- state_add(++m_state_count, "C", m_c_in).formatstr("%01X");
- state_add(++m_state_count, "B", m_b).formatstr("%02X");
- state_add(++m_state_count, "S", m_s).formatstr("%01X");
+ state_add(++m_state_count, "PC", m_pc).formatstr("%03X"); // 1
+ state_add(++m_state_count, "A", m_a).formatstr("%01X"); // 2
+ state_add(++m_state_count, "C", m_c_in).formatstr("%01X"); // 3
+ state_add(++m_state_count, "B", m_b).formatstr("%02X"); // 4
+ state_add(++m_state_count, "S", m_s).formatstr("%01X"); // 5
set_icountptr(m_icount);
}