summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess')
-rw-r--r--src/mess/drivers/amstrad.c3
-rw-r--r--src/mess/includes/amstrad.h1
-rw-r--r--src/mess/machine/amstrad.c20
3 files changed, 21 insertions, 3 deletions
diff --git a/src/mess/drivers/amstrad.c b/src/mess/drivers/amstrad.c
index 814dd3098b0..edc221a1b25 100644
--- a/src/mess/drivers/amstrad.c
+++ b/src/mess/drivers/amstrad.c
@@ -815,6 +815,7 @@ SLOT_INTERFACE_START(cpc_exp_cards)
SLOT_INTERFACE("pds", CPC_PDS)
SLOT_INTERFACE("rs232", CPC_RS232)
SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
+ SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
SLOT_INTERFACE_END
SLOT_INTERFACE_START(cpcplus_exp_cards)
@@ -824,6 +825,7 @@ SLOT_INTERFACE_START(cpcplus_exp_cards)
SLOT_INTERFACE("pds", CPC_PDS)
SLOT_INTERFACE("rs232", CPC_RS232)
SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
+ SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
SLOT_INTERFACE_END
static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state )
@@ -896,6 +898,7 @@ static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("128K")
+ MCFG_RAM_EXTRA_OPTIONS("64K,320K,576K")
MACHINE_CONFIG_END
FLOPPY_FORMATS_MEMBER( amstrad_state::floppy_formats )
diff --git a/src/mess/includes/amstrad.h b/src/mess/includes/amstrad.h
index 0417fae3731..3556209619d 100644
--- a/src/mess/includes/amstrad.h
+++ b/src/mess/includes/amstrad.h
@@ -20,6 +20,7 @@
#include "bus/cpc/mface2.h"
#include "bus/cpc/cpc_pds.h"
#include "bus/cpc/cpc_rs232.h"
+#include "bus/cpc/symbfac2.h"
#include "machine/ram.h"
#include "imagedev/cassette.h"
#include "bus/centronics/ctronics.h"
diff --git a/src/mess/machine/amstrad.c b/src/mess/machine/amstrad.c
index 263e6dc9172..69fb4a30084 100644
--- a/src/mess/machine/amstrad.c
+++ b/src/mess/machine/amstrad.c
@@ -1270,20 +1270,34 @@ void amstrad_state::AmstradCPC_GA_SetRamConfiguration()
int ConfigurationIndex = m_GateArray_RamConfiguration & 0x07;
int BankIndex,i;
unsigned char *BankAddr;
+ UINT8 banknum = (m_GateArray_RamConfiguration & 0x38) >> 3;
/* if b5 = 0 */
- if(((m_GateArray_RamConfiguration) & (1<<5)) == 0)
+ if(m_ram->size() > 65536)
{
for (i=0;i<4;i++)
{
BankIndex = RamConfigurations[(ConfigurationIndex << 2) + i];
- BankAddr = m_ram->pointer() + (BankIndex << 14);
+ if(BankIndex > 3)
+ {
+ UINT8 maxbank = ((m_ram->size()-65536) / 65536);
+ BankAddr = m_ram->pointer() + (BankIndex << 14) + ((banknum%maxbank)*0x10000);
+ }
+ else
+ BankAddr = m_ram->pointer() + (BankIndex << 14);
m_Aleste_RamBanks[i] = BankAddr;
m_AmstradCPC_RamBanks[i] = BankAddr;
}
}
else
- {/* Need to add the ram expansion configuration here ! */
+ {
+ // set normal 64k RAM mapping
+ for (i=0;i<4;i++)
+ {
+ BankAddr = m_ram->pointer() + (i << 14);
+ m_Aleste_RamBanks[i] = BankAddr;
+ m_AmstradCPC_RamBanks[i] = BankAddr;
+ }
}
amstrad_rethinkMemory();
}