]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Expansion device support.
authorToni Wilen <twilen@winuae.net>
Mon, 6 Jul 2015 17:24:59 +0000 (20:24 +0300)
committerToni Wilen <twilen@winuae.net>
Mon, 6 Jul 2015 17:24:59 +0000 (20:24 +0300)
devices.cpp
gfxboard.cpp
include/autoconf.h
include/gfxboard.h
od-win32/mman.cpp

index 60cb50c9c1dfdc095a8eef8e0bb0d48f6620cd6d..e6025c5b21869736b7d49992814412162476b55f 100644 (file)
@@ -129,7 +129,10 @@ void devices_vsync_post(void)
 
 void devices_hsync(void)
 {
-       #ifdef A2065
+#ifdef GFXBOARD
+       gfxboard_hsync_handler();
+#endif
+#ifdef A2065
        a2065_hsync_handler ();
 #endif
 #ifdef CD32
@@ -155,6 +158,9 @@ void devices_hsync(void)
        uae_ppc_hsync_handler();
        cpuboard_hsync();
 #endif
+#ifdef WITH_PCI
+       pci_hsync();
+#endif
 #ifdef WITH_TOCCATA
        sndboard_hsync();
 #endif
index 34bd3600e7b31ae9fb060fe98902d9f213533197..ae060095c8b0c08472d99af15e9b3a65eca2682b 100644 (file)
@@ -159,6 +159,11 @@ static struct gfxboard boards[] =
                _T("Picasso IV Zorro III"),
                BOARD_MANUFACTURER_PICASSO, BOARD_MODEL_MEMORY_PICASSOIV, 0,
                0x00000000, 0x00400000, 0x00400000, 0x04000000, CIRRUS_ID_CLGD5446, true, 2, false
+       },
+       {
+               _T("A2410"),
+               1030, 0, 0,
+               0x00000000, 0x00200000, 0x00200000, 0x00000000, 0,false, 2, false
        }
 };
 
@@ -238,6 +243,10 @@ static void init_board (void)
 
 bool gfxboard_toggle (int mode)
 {
+       if (currprefs.rtgmem_type == GFXBOARD_A2410) {
+               return tms_toggle(mode);
+       }
+
        if (vram == NULL)
                return false;
        if (monswitch_current) {
@@ -356,8 +365,20 @@ void gfxboard_refresh (void)
        fullrefresh = 2;
 }
 
+void gfxboard_hsync_handler(void)
+{
+       if (currprefs.rtgmem_type == GFXBOARD_A2410) {
+               tms_hsync_handler();
+       }
+}
+
 void gfxboard_vsync_handler (void)
 {
+       if (currprefs.rtgmem_type == GFXBOARD_A2410) {
+               tms_vsync_handler();
+               return;
+       }
+
        if (!configured_mem || !configured_regs)
                return;
 
index ac2226c717f7c15796a8b84c795a70b2fa726994..7006991a1737e90ed84c4ce76bf5a0f92244038f 100644 (file)
@@ -112,8 +112,9 @@ typedef void(*DEVICE_MEMORY_CALLBACK)(struct romconfig*, uae_u8*, int);
 #define EXPANSIONTYPE_24BIT 4
 #define EXPANSIONTYPE_IDE_PORT_DOUBLED 8
 #define EXPANSIONTYPE_SASI 16
-#define EXPANSIONTYPE_PCI_BRIDGE 32
-#define EXPANSIONTYPE_PARALLEL_ADAPTER 64
+#define EXPANSIONTYPE_CUSTOM 32
+#define EXPANSIONTYPE_PCI_BRIDGE 64
+#define EXPANSIONTYPE_PARALLEL_ADAPTER 128
 struct expansionboardsettings
 {
        const TCHAR *name;
index ed9be1c8a946a3d56b19d6bfb89934ec54641012..fe1e227b3a6743ca398f0e4267986573d24f0d06 100644 (file)
@@ -8,6 +8,7 @@ extern addrbank *gfxboard_init_registers(int devnum);
 extern void gfxboard_free (void);
 extern void gfxboard_reset (void);
 extern void gfxboard_vsync_handler (void);
+extern void gfxboard_hsync_handler(void);
 extern bool gfxboard_is_z3 (int);
 extern bool gfxboard_is_registers (int);
 extern int gfxboard_get_vram_min (int);
@@ -19,6 +20,23 @@ extern void gfxboard_refresh (void);
 extern bool gfxboard_toggle (int mode);
 extern int gfxboard_num_boards (int type);
 
+extern addrbank *tms_init(int devnum);
+extern void tms_hsync_handler(void);
+extern void tms_vsync_handler(void);
+extern bool tms_toggle(int);
+
 #define GFXBOARD_UAE_Z2 0
 #define GFXBOARD_UAE_Z3 1
 #define GFXBOARD_HARDWARE 2
+
+#define GFXBOARD_PICASSO2 2
+#define GFXBOARD_PICASSO2PLUS 3
+#define GFXBOARD_PICCOLO_Z2 4
+#define GFXBOARD_PICCOLO_Z3 5
+#define GFXBOARD_SD64_Z2 6
+#define GFXBOARD_SD64_Z3 7
+#define GFXBOARD_SPECTRUM_Z2 8
+#define GFXBOARD_SPECTRUM_Z3 9
+#define GFXBOARD_PICASSO4_Z2 10
+#define GFXBOARD_PICASSO4_Z3 11
+#define GFXBOARD_A2410 12
index 99ccbe3700a93f9c7b4a595380289e91174f74df..7f155a6d99c9f0b1fbc419399913856af552efb7 100644 (file)
@@ -765,8 +765,12 @@ void *shmat (addrbank *ab, int shmid, void *shmaddr, int shmflg)
                        shmaddr=natmem_offset + 0x00d00000;
                        size += BARRIER;
                        got = TRUE;
-               } else if(!_tcscmp (shmids[shmid].name, _T("superiv_e0"))) {
-                       shmaddr=natmem_offset + 0x00e00000;
+               } else if (!_tcscmp(shmids[shmid].name, _T("superiv_e0"))) {
+                       shmaddr = natmem_offset + 0x00e00000;
+                       size += BARRIER;
+                       got = TRUE;
+               } else if (!_tcscmp(shmids[shmid].name, _T("x_a0"))) {
+                       shmaddr = natmem_offset + 0x00a00000;
                        size += BARRIER;
                        got = TRUE;
                }