summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ti99/internal/genboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/ti99/internal/genboard.cpp')
-rw-r--r--src/devices/bus/ti99/internal/genboard.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/devices/bus/ti99/internal/genboard.cpp b/src/devices/bus/ti99/internal/genboard.cpp
index e9815a9a806..7e2ea7e3630 100644
--- a/src/devices/bus/ti99/internal/genboard.cpp
+++ b/src/devices/bus/ti99/internal/genboard.cpp
@@ -33,6 +33,9 @@
out: CSR*: v9938 read
out: RAMENX*: SRAM expansion
+ out: RAMENU*: Ultimate SRAM expansion. This is actually done by a small
+ daughterboard, not directly in the Gate Array.
+
out: RAMEN*: SRAM
out: ROMEN*: EPROM
out: AB0, AB1, AB2: Mapped address bits (2^15, 2^14, 2^13)
@@ -145,9 +148,9 @@
1 0111 110. .... .... .... address block cxxx
1 0111 111. .... .... .... address block exxx
- 1 1... .... .... .... .... on-board bus or external bus (unclear)
- 1 10.. .... .... .... .... Future expansion
- 1 1100 .... .... .... .... Future expansion
+ 1 1... .... .... .... .... on-board bus
+ 1 10.. .... .... .... .... Future expansion (Ultimate SRAM expansion)
+ 1 1100 .... .... .... .... Future expansion (Ultimate SRAM expansion)
1 1101 0... .... .... .... on-board sram (32K) - Optional 32 KiB expansion, 0 WS
1 1101 1... .... .... .... on-board sram (32K) - stock 32 KiB SRAM, 0 WS
@@ -734,10 +737,12 @@ void geneve_gate_array_device::get_page(geneve_gate_array_device::decdata* dec)
}
}
-const geneve_gate_array_device::physentry_t geneve_gate_array_device::s_physmap[7] =
+const geneve_gate_array_device::physentry_t geneve_gate_array_device::s_physmap[8] =
{
{ 0x00, 0x3f, MPDRAM, "DRAM" },
{ 0x40, 0x3f, MPEXP, "Future exp (on-board)" },
+ { 0xc0, 0x1f, MPSRAMU, "Ultimate SRAM exp" },
+ { 0xe0, 0x07, MPSRAMU, "Ultimate SRAM exp" },
{ 0xe8, 0x03, MPSRAMX, "SRAM exp" },
{ 0xec, 0x03, MPSRAM, "SRAM" },
{ 0xf0, 0x0f, MPEPROM, "Boot ROM/PFM" },
@@ -774,7 +779,7 @@ void geneve_gate_array_device::decode_physical(geneve_gate_array_device::decdata
// Search for the matching page interval. Cartridge space will be decoded as DRAM.
bool found = false;
- for (int i = 0; (i < 6) && !found; i++)
+ for (int i = 0; (i < 8) && !found; i++)
{
if ((dec->physpage & ~s_physmap[i].mask) == s_physmap[i].base)
{
@@ -814,7 +819,7 @@ bool geneve_gate_array_device::accessing_dram_s(int function)
bool geneve_gate_array_device::accessing_sram_s(int function)
{
- return (function == MPSRAM) || (function == MPSRAMX);
+ return (function == MPSRAM) || (function == MPSRAMX) || (function == MPSRAMU);
}
bool geneve_gate_array_device::accessing_devs_s(int function)
@@ -951,6 +956,12 @@ int geneve_gate_array_device::ramenx_out()
return (dec->function == MPSRAMX)? ASSERT_LINE : CLEAR_LINE;
}
+int geneve_gate_array_device::ramenu_out()
+{
+ decdata* dec = (m_debug)? &m_decdebug : &m_decoded;
+ return (dec->function == MPSRAMU)? ASSERT_LINE : CLEAR_LINE;
+}
+
int geneve_gate_array_device::rtcen_out()
{
decdata* dec = (m_debug)? &m_decdebug : &m_decoded;