]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
DKB and Fusion Forty accelerator board.
authorToni Wilen <twilen@winuae.net>
Thu, 1 Jan 2015 11:19:30 +0000 (13:19 +0200)
committerToni Wilen <twilen@winuae.net>
Thu, 1 Jan 2015 11:19:30 +0000 (13:19 +0200)
cpuboard.cpp
include/cpuboard.h

index 8b4c59f7f859339e3cf19b67890d6e999e8aa34f..e6b59e0125230b55415fd0266bb66c92ffac0031 100644 (file)
@@ -258,6 +258,14 @@ static bool is_a2630(void)
 {
        return currprefs.cpuboard_type == BOARD_A2630;
 }
+static bool is_dkb(void)
+{
+       return currprefs.cpuboard_type == BOARD_DKB1200;
+}
+static bool is_fusionforty(void)
+{
+       return currprefs.cpuboard_type == BOARD_FUSIONFORTY;
+}
 
 DECLARE_MEMORY_FUNCTIONS(blizzardio);
 static addrbank blizzardio_bank = {
@@ -973,7 +981,9 @@ static void REGPARAM2 blizzardio_bput(uaecptr addr, uae_u32 v)
 #if CPUBOARD_IO_LOG > 1
        write_log(_T("CS IO XBPUT %08x %02x PC=%08x\n"), addr, v & 0xff, M68K_GETPC);
 #endif
-       if (is_csmk2()) {
+       if (is_fusionforty()) {
+               ;
+       } else if (is_csmk2()) {
                csmk2_flashaddressing = addr & 3;
                if (addr == 0x880000e3 && v == 0x2a) {
                        maprom_state = 1;
@@ -1170,7 +1180,9 @@ static void REGPARAM2 blizzardio_wput(uaecptr addr, uae_u32 v)
 #ifdef JIT
        special_mem |= S_WRITE;
 #endif
-       if (is_blizzard()) {
+       if (is_fusionforty()) {
+               ;
+       } else if (is_blizzard()) {
                write_log(_T("CS IO WPUT %08x %04x\n"), addr, v);
                if((addr & 65535) == (BLIZZARD_BOARD_DISABLE & 65535)) {
                        if (v != 0xcafe)
@@ -1292,6 +1304,12 @@ void cpuboard_map(void)
                map_banks(&blizzardf0_bank, 0xf00000 >> 16, 131072 >> 16, 0);
                map_banks(&blizzardea_bank, 0xf40000 >> 16, 65536 >> 16, 0);
        }
+       if (is_fusionforty()) {
+               map_banks(&blizzardf0_bank, 0x00f40000 >> 16, 131072 >> 16, 0);
+               map_banks(&blizzardf0_bank, 0x05000000 >> 16, 131072 >> 16, 0);
+               map_banks(&blizzardio_bank, 0x021d0000 >> 16, 65536 >> 16, 0);
+               map_banks(&blizzardram_bank, blizzardram_bank.start >> 16, cpuboard_size >> 16, 0);
+       }
 }
 
 void cpuboard_reset(void)
@@ -1385,6 +1403,20 @@ void cpuboard_init(void)
                blizzardea_bank.mask = blizzardea_bank.allocated - 1;
                mapped_malloc(&blizzardea_bank);
 
+       } else if (is_fusionforty()) {
+
+               blizzardf0_bank.start = 0x00f40000;
+               blizzardf0_bank.allocated = 262144;
+               blizzardf0_bank.mask = blizzardf0_bank.allocated - 1;
+               mapped_malloc(&blizzardf0_bank);
+
+               blizzardram_bank.start = 0x11000000;
+               blizzardram_bank.allocated = cpuboard_size;
+               blizzardram_bank.mask = blizzardram_bank.allocated - 1;
+               blizzardram_bank.startmask = 0x11000000;
+               blizzardram_bank.label = _T("fusionforty");
+               mapped_malloc(&blizzardram_bank);
+
        } else if (is_tekmagic()) {
 
                blizzardf0_bank.start = 0x00f00000;
@@ -1601,6 +1633,8 @@ int cpuboard_memorytype(struct uae_prefs *p)
                case BOARD_CSPPC:
                case BOARD_WARPENGINE_A4000:
                case BOARD_TEKMAGIC:
+               case BOARD_FUSIONFORTY:
+               case BOARD_DKB1200: // ??
                return BOARD_MEMORY_HIGHMEM;
                case BOARD_A2630:
                return BOARD_MEMORY_Z2;
@@ -1783,6 +1817,8 @@ addrbank *cpuboard_autoconfig_init(void)
                break;
        case BOARD_WARPENGINE_A4000:
                return &expamem_null;
+       case BOARD_DKB1200:
+               return &expamem_null;
        case BOARD_TEKMAGIC:
                roms[0] = 104;
                break;
@@ -1806,6 +1842,9 @@ addrbank *cpuboard_autoconfig_init(void)
                roms[0] = currprefs.cpu_model == 68040 ? 99 : 100;
                isflashrom = true;
                break;
+       case BOARD_FUSIONFORTY:
+               roms[0] = 113;
+               break;
        default:
                return &expamem_null;
        }
@@ -1864,6 +1903,10 @@ addrbank *cpuboard_autoconfig_init(void)
                zfile_fread(blizzardf0_bank.baseaddr, 1, f0rom_size, autoconfig_rom);
                autoconf = false;
                autoconf_stop = true;
+       } else if (is_fusionforty()) {
+               f0rom_size = 262144;
+               zfile_fread(blizzardf0_bank.baseaddr, 1, 131072, autoconfig_rom);
+               autoconf = false;
        } else if (is_tekmagic()) {
                earom_size = 65536;
                f0rom_size = 131072;
@@ -1973,6 +2016,10 @@ addrbank *cpuboard_autoconfig_init(void)
                                map_banks(&blizzardf0_bank, 0xf80000 >> 16, f0rom_size >> 16, 0);
                        if (!(a2630_io & 1))
                                map_banks(&blizzardf0_bank, 0x000000 >> 16, f0rom_size >> 16, 0);
+               } else if (is_fusionforty()) {
+                       map_banks(&blizzardf0_bank, 0x00f40000 >> 16, f0rom_size >> 16, 0);
+                       map_banks(&blizzardf0_bank, 0x05000000 >> 16, f0rom_size >> 16, 0);
+                       map_banks(&blizzardf0_bank, 0x00000000 >> 16, f0rom_size >> 16, 0);
                } else {
                        map_banks(&blizzardf0_bank, 0xf00000 >> 16, (f0rom_size > 262144 ? 262144 : f0rom_size) >> 16, 0);
                }
index 0a7d650ccbf6399a67aecb9f81d75f0121eb33a3..6779989e6d39ae97439fed4432e7f3e853558ae9 100644 (file)
@@ -42,6 +42,9 @@ extern uae_u8 *REGPARAM3 cyberstorm_scsi_ram_xlate(uaecptr addr) REGPARAM;
 #define BOARD_WARPENGINE_A4000 11
 #define BOARD_TEKMAGIC 12
 #define BOARD_A2630 13
+#define BOARD_DKB1200 14
+#define BOARD_FUSIONFORTY 15
+