summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2019-12-08 15:13:36 +0100
committer hap <happppp@users.noreply.github.com>2019-12-08 15:13:36 +0100
commit4e9ec5a27828ad0f8c92df966d6c58e9ee99cd78 (patch)
tree0e21d0cba6bd9f92cd807043ad541add977eb536
parent5d2285479002b66548e719b3b351d795542dd198 (diff)
tasc: umask doesn't work on ram/share (nw)
-rw-r--r--src/mame/drivers/tasc.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mame/drivers/tasc.cpp b/src/mame/drivers/tasc.cpp
index 16f3b5709fb..05d42ee89cc 100644
--- a/src/mame/drivers/tasc.cpp
+++ b/src/mame/drivers/tasc.cpp
@@ -10,13 +10,14 @@ on PC, however the prototype Gideon 2.1(internally: Rebel 2.01) is not.
R30 hardware notes:
- ARM6 CPU(P60ARM/CG) @ 30MHz
-- 256KB ROM, 512KB program RAM, 128KB permanent RAM
+- 256KB system ROM (2*27C010)
+- 512KB program RAM (4*MT5C1008), 128KB permanent RAM (KM681000ALP-7L)
- Toshiba LCD drivers (3*T7778A, T7900, T6963C), TC5565AFL-15
- SB20 or SB30 "Smartboard" chessboard with piece recognition
R40 hardware notes:
- ARM6 CPU(VY86C061PSTC) @ 40MHz
-- +512KB extra RAM
+- +512KB extra RAM piggybacked
- rest same as R30
Documentation for the Toshiba chips is hard to find, but similar chips exist:
@@ -40,6 +41,7 @@ TODO:
#include "emu.h"
#include "cpu/arm/arm.h"
+#include "machine/bankdev.h"
#include "machine/nvram.h"
#include "machine/smartboard.h"
#include "machine/timer.h"
@@ -87,6 +89,7 @@ private:
output_finder<2> m_out_leds;
void main_map(address_map &map);
+ void nvram_map(address_map &map);
bool m_bootrom_enabled;
uint32_t m_mux;
@@ -170,7 +173,13 @@ void tasc_state::main_map(address_map &map)
map(0x00000000, 0x0000000b).r(FUNC(tasc_state::bootrom_r));
map(0x01000000, 0x01000003).rw(FUNC(tasc_state::p1000_r), FUNC(tasc_state::p1000_w));
map(0x02000000, 0x0203ffff).rom().region("maincpu", 0);
- map(0x03000000, 0x0307ffff).ram().share("nvram").umask32(0x000000ff);
+ map(0x03000000, 0x0307ffff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0x000000ff);
+}
+
+void tasc_state::nvram_map(address_map &map)
+{
+ // nvram is 8-bit (128KB)
+ map(0x00000, 0x1ffff).ram().share("nvram");
}
@@ -217,7 +226,8 @@ void tasc_state::tasc(machine_config &config)
TIMER(config, "disable_bootrom").configure_generic(FUNC(tasc_state::disable_bootrom));
- NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+ ADDRESS_MAP_BANK(config, "nvram_map").set_map(&tasc_state::nvram_map).set_options(ENDIANNESS_LITTLE, 8, 17);
LM24014H(config, m_lcd, 0);
m_lcd->set_fs(1); // font size 6x8