diff options
Diffstat (limited to 'src/mess')
-rw-r--r-- | src/mess/drivers/amstrad.c | 3 | ||||
-rw-r--r-- | src/mess/includes/amstrad.h | 1 | ||||
-rw-r--r-- | src/mess/machine/amstrad.c | 20 |
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(); } |