summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/hmcs40/hmcs40.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/hmcs40/hmcs40.cpp')
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp
index 33ee981e512..abcde1d500a 100644
--- a/src/devices/cpu/hmcs40/hmcs40.cpp
+++ b/src/devices/cpu/hmcs40/hmcs40.cpp
@@ -7,7 +7,8 @@
References:
- 1985 #AP1 Hitachi 4-bit Single-Chip Microcomputer Data Book
- 1988 HMCS400 Series Handbook (note: *400 is a newer MCU series, with similarities)
- - opcode decoding by Tatsuyuki Satoh, Olivier Galibert, Kevin Horton, Lord Nightmare - and verified
+ - opcode decoding by Tatsuyuki Satoh, Olivier Galibert, Kevin Horton, Lord Nightmare
+ (verified a while later after new documentation was found)
*/
@@ -56,16 +57,20 @@ DEFINE_DEVICE_TYPE(HD44828, hd44828_device, "hd44828", "Hitachi HD44828") // CMO
// internal memory maps
+
+// On HMCS42/3/4/5, only half of the ROM address range contains user-executable code,
+// there is up to 128 bytes of pattern data in the 2nd half. The 2nd half also includes
+// a couple of pages with factory test code by Hitachi, only executable when MCU test
+// mode is enabled externally. This data can still be accessed with the P opcode.
+
void hmcs40_cpu_device::program_1k(address_map &map)
{
- map(0x0000, 0x03ff).rom();
- map(0x0780, 0x07bf).rom(); // patterns on page 30
+ map(0x0000, 0x07ff).rom();
}
void hmcs40_cpu_device::program_2k(address_map &map)
{
- map(0x0000, 0x07ff).rom();
- map(0x0f40, 0x0fbf).rom(); // patterns on page 61,62
+ map(0x0000, 0x0fff).rom();
}