summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2023-05-06 23:53:50 +0200
committer hap <happppp@users.noreply.github.com>2023-05-06 23:53:50 +0200
commit4e1d6d8547f3f577ec2703871f30b1709b044cab (patch)
tree52d5b65bce15d97f5f286549f4d596f3466ecbce
parent0d002a80b5f8579dbb4ddaef03cc1e745ae1326d (diff)
mn1400: add pinout reference
-rw-r--r--src/devices/cpu/mn1400/mn1400.cpp3
-rw-r--r--src/devices/cpu/mn1400/mn1400.h21
-rw-r--r--src/devices/cpu/mn1400/mn1400base.cpp20
-rw-r--r--src/mame/handheld/hh_mn1400.cpp7
4 files changed, 46 insertions, 5 deletions
diff --git a/src/devices/cpu/mn1400/mn1400.cpp b/src/devices/cpu/mn1400/mn1400.cpp
index 1d0dc807ee9..e1a2b46965b 100644
--- a/src/devices/cpu/mn1400/mn1400.cpp
+++ b/src/devices/cpu/mn1400/mn1400.cpp
@@ -47,7 +47,8 @@ std::unique_ptr<util::disasm_interface> mn1400_cpu_device::create_disassembler()
bool mn1400_cpu_device::op_has_param(u8 op)
{
- return false;
+ // branch opcodes are 2 bytes
+ return ((op & 0xf8) == 0x38 || (op & 0xf0) == 0x40 || (op & 0xf0) == 0xe0);
}
void mn1400_cpu_device::execute_one()
diff --git a/src/devices/cpu/mn1400/mn1400.h b/src/devices/cpu/mn1400/mn1400.h
index 2f9907fa889..c69a926c24e 100644
--- a/src/devices/cpu/mn1400/mn1400.h
+++ b/src/devices/cpu/mn1400/mn1400.h
@@ -16,6 +16,27 @@
// pinout reference
/*
+ ____ ____ ____ ____
+ Vss 1 | \_/ | 40 OSC Vss 1 | \_/ | 28 OSC
+ CO11 2 | | 39 Vdd CO9 2 | | 27 Vdd
+ CO10 3 | | 38 DO7 CO8 3 | | 26 SNS1
+ CO9 4 | | 37 DO6 CO7 4 | | 25 SNS0
+ CO8 5 | | 36 DO5 CO6 5 | | 24 DO0
+ CO7 6 | | 35 DO4 CO5 6 | MN1400 | 23 DO1
+ CO6 7 | | 34 DO3 AI3 7 | MN1402 | 22 DO2
+ CO5 8 | MN1400 | 33 DO2 AI2 8 | MN1432 | 21 DO3
+ CO4 9 | MN1405 | 32 DO1 AI1 9 | | 20 TST
+ CO3 10 | MN1430 | 31 DO0 AI0 10 | | 19 RST
+ CO2 11 | MN1435 | 30 SNS1 BI3 11 | | 18 EO3
+ CO1 12 | MN1450 | 29 SNS0 BI2 12 | | 17 EO2
+ CO0 13 | MN1455 | 28 CSLCT BI1 13 | | 16 EO1
+ AI3 14 | | 27 RST BI0 14 |___________| 15 EO0
+ AI2 15 | | 26 TST
+ AI1 16 | | 25 EO3
+ AI0 17 | | 24 EO2
+ BI3 18 | | 23 EO1
+ BI2 19 | | 22 EO0
+ BI1 20 |___________| 21 BI0
*/
diff --git a/src/devices/cpu/mn1400/mn1400base.cpp b/src/devices/cpu/mn1400/mn1400base.cpp
index 812480fc0ac..01543bd4ae3 100644
--- a/src/devices/cpu/mn1400/mn1400base.cpp
+++ b/src/devices/cpu/mn1400/mn1400base.cpp
@@ -4,7 +4,25 @@
Matsushita (Panasonic) MN1400 family MCU cores
-x
+4-bit microcontroller introduced in 1977, possibly Matsushita's first MCU.
+
+Basic models:
+
+MN1400: 1KB ROM, 64 nibbles RAM
+MN1402: 768 bytes ROM, 32 nibbles RAM
+MN1403: 0.5KB ROM, 16 nibbles RAM, 18 pins
+MN1404: 0.5KB ROM, 16 nibbles RAM, 16 pins
+MN1405: 2KB ROM, 128 nibbles RAM
+
+MN1420: MN1400 with LED driver
+MN1421: 28-pin version of MN1420
+MN1425: MN1405 with LED driver
+
+MN1430: high-voltage version of MN1400
+MN1435: high-voltage version of MN1405
+
+MN1450/MN1460: CMOS version of MN1400
+MN1455/MN1465: CMOS version of MN1405
*/
diff --git a/src/mame/handheld/hh_mn1400.cpp b/src/mame/handheld/hh_mn1400.cpp
index a026286d69c..862a2c0ee1b 100644
--- a/src/mame/handheld/hh_mn1400.cpp
+++ b/src/mame/handheld/hh_mn1400.cpp
@@ -109,7 +109,8 @@ u8 hh_mn1400_state::read_inputs(int columns)
/*******************************************************************************
Lakeside Computer Perfection
- * MN1400ML MCU (die label: 1400 ML-0)
+ * PCB label: Lakeside, PANASONIC, TCI-A4H94HB
+ * MN1400ML MCU (28 pins, die label: 1400 ML-0)
* 10 LEDs, 2-bit sound
*******************************************************************************/
@@ -138,7 +139,7 @@ INPUT_PORTS_END
void compperf_state::compperf(machine_config &config)
{
// basic machine hardware
- MN1400(config, m_maincpu, 300000);
+ MN1400(config, m_maincpu, 300000); // approximation - RC osc. R=18K, C=100pF
// video hardware
PWM_DISPLAY(config, m_display).set_size(1, 10);
@@ -195,7 +196,7 @@ INPUT_PORTS_END
void scrablexa_state::scrablexa(machine_config &config)
{
// basic machine hardware
- MN1405(config, m_maincpu, 300000);
+ MN1405(config, m_maincpu, 300000); // approximation - RC osc. R=15K, C=100pF
// video hardware
PWM_DISPLAY(config, m_display).set_size(1, 1);