From 4e9ec5a27828ad0f8c92df966d6c58e9ee99cd78 Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 8 Dec 2019 15:13:36 +0100 Subject: tasc: umask doesn't work on ram/share (nw) --- src/mame/drivers/tasc.cpp | 18 ++++++++++++++---- 1 file 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 -- cgit v1.2.3