]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
3200b6
authorToni Wilen <twilen@winuae.net>
Sat, 1 Aug 2015 08:59:06 +0000 (11:59 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 1 Aug 2015 08:59:06 +0000 (11:59 +0300)
expansion.cpp
include/autoconf.h
include/rommgr.h
moduleripper.cpp
od-win32/resources/winuae.rc
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32gui.cpp
od-win32/winuaechangelog.txt
prowizard/misc/misc.c

index fb55953bfa64a35fb2d0ba756948b7d902d02cad..8104d917db1a966ae81b0ebf467dbd0f7065c54b 100644 (file)
@@ -311,9 +311,9 @@ static void expamem_init_clear (void)
 /* autoconfig area is "non-existing" after last device */
 static void expamem_init_clear_zero (void)
 {
-       map_banks (&dummy_bank, 0xe8, 1, 0);
+       map_banks(&dummy_bank, 0xe8, 1, 0);
        if (!currprefs.address_space_24)
-               map_banks (&dummy_bank, 0xff000000 >> 16, 1, 0);
+               map_banks(&dummy_bank, 0xff000000 >> 16, 1, 0);
 }
 
 static void expamem_init_clear2 (void)
@@ -620,7 +620,7 @@ static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value)
                if (expamem_type() == zorroIII) {
                        uaecptr addr;
                        expamem_hi = value & 0xff00;
-                       addr = (expamem_hi | (expamem_lo >> 4)) << 16;;
+                       addr = (expamem_hi | (expamem_lo >> 4)) << 16;
                        if (!expamem_z3hack(&currprefs)) {
                                expamem_z3_pointer = addr;
                        } else {
@@ -945,7 +945,7 @@ static addrbank catweasel_bank = {
 static addrbank *expamem_map_catweasel (void)
 {
        catweasel_start = expamem_z2_pointer;
-       map_banks_z2 (&catweasel_bank, catweasel_start >> 16, 1);
+       map_banks_z2(&catweasel_bank, catweasel_start >> 16, 1);
        return &catweasel_bank;
 }
 
@@ -1109,7 +1109,7 @@ static addrbank *expamem_map_fastcard_2 (int boardnum)
        uae_u32 size = ab->allocated;
        ab->start = start;
        if (ab->start) {
-               map_banks_z2 (ab, ab->start >> 16, size >> 16);
+               map_banks_z2(ab, ab->start >> 16, size >> 16);
        }
        return ab;
 }
@@ -1294,7 +1294,7 @@ static addrbank *expamem_map_filesys (void)
        }
 
        filesys_start = expamem_z2_pointer;
-       map_banks_z2 (&filesys_bank, filesys_start >> 16, 1);
+       map_banks_z2(&filesys_bank, filesys_start >> 16, 1);
        /* 68k code needs to know this. */
        a = here ();
        org (rtarea_base + RTAREA_FSBOARD);
@@ -1368,12 +1368,12 @@ static addrbank * expamem_map_z3fastmem_2 (addrbank *bank, uaecptr *startp, uae_
        if (expamem_z3hack(&currprefs)) {
                if (z3fs && start != z3fs) {
                        write_log (_T("WARNING: Z3MEM mapping changed from $%08x to $%08x\n"), start, z3fs);
-                       map_banks (&dummy_bank, start >> 16, size >> 16, allocated);
+                       map_banks(&dummy_bank, start >> 16, size >> 16, allocated);
                        *startp = z3fs;
-                       map_banks (bank, start >> 16, size >> 16, allocated);
+                       map_banks_z3(bank, start >> 16, size >> 16);
                }
        } else {
-               map_banks (bank, z3fs >> 16, size >> 16, allocated);
+               map_banks_z3(bank, z3fs >> 16, size >> 16);
                start = z3fs;
                *startp = z3fs;
        }
@@ -1408,7 +1408,7 @@ static addrbank *expamem_init_z3fastmem_2(int boardnum, addrbank *bank, uae_u32
 
        expamem_init_clear ();
        fastmem_autoconfig(boardnum, 3, add_memory | zorroIII | code, 1, allocated);
-       map_banks (bank, start >> 16, size >> 16, allocated);
+       map_banks_z3(bank, start >> 16, size >> 16);
        return NULL;
 }
 static addrbank *expamem_init_z3fastmem (int devnum)
@@ -1428,14 +1428,14 @@ static addrbank *expamem_init_z3fastmem2(int devnum)
 static addrbank *expamem_map_gfxcard_z3 (void)
 {
        gfxmem_bank.start = expamem_z3_pointer;
-       map_banks (&gfxmem_bank, gfxmem_bank.start >> 16, gfxmem_bank.allocated >> 16, gfxmem_bank.allocated);
+       map_banks_z3(&gfxmem_bank, gfxmem_bank.start >> 16, gfxmem_bank.allocated >> 16);
        return &gfxmem_bank;
 }
 
 static addrbank *expamem_map_gfxcard_z2 (void)
 {
        gfxmem_bank.start = expamem_z2_pointer;
-       map_banks_z2 (&gfxmem_bank, gfxmem_bank.start >> 16, gfxmem_bank.allocated >> 16);
+       map_banks_z2(&gfxmem_bank, gfxmem_bank.start >> 16, gfxmem_bank.allocated >> 16);
        return &gfxmem_bank;
 }
 
@@ -1661,33 +1661,33 @@ static void allocate_expamem (void)
                                // old statefile compatibility support
                                fastmem_bank.start = 0x00200000;
                        }
-                       map_banks (&fastmem_bank, fastmem_bank.start >> 16, currprefs.fastmem_size >> 16,
+                       map_banks(&fastmem_bank, fastmem_bank.start >> 16, currprefs.fastmem_size >> 16,
                                        fastmem_bank.allocated);
                }
                if (fastmem2_bank.allocated > 0) {
                        restore_ram (fast2_filepos, fastmem2_bank.baseaddr);
-                       map_banks (&fastmem2_bank, fastmem2_bank.start >> 16, currprefs.fastmem2_size >> 16,
+                       map_banks(&fastmem2_bank, fastmem2_bank.start >> 16, currprefs.fastmem2_size >> 16,
                                fastmem2_bank.allocated);
                }
                if (z3fastmem_bank.allocated > 0) {
                        restore_ram (z3_filepos, z3fastmem_bank.baseaddr);
-                       map_banks (&z3fastmem_bank, z3fastmem_bank.start >> 16, currprefs.z3fastmem_size >> 16,
+                       map_banks(&z3fastmem_bank, z3fastmem_bank.start >> 16, currprefs.z3fastmem_size >> 16,
                                z3fastmem_bank.allocated);
                }
                if (z3fastmem2_bank.allocated > 0) {
                        restore_ram (z3_filepos2, z3fastmem2_bank.baseaddr);
-                       map_banks (&z3fastmem2_bank, z3fastmem2_bank.start >> 16, currprefs.z3fastmem2_size >> 16,
+                       map_banks(&z3fastmem2_bank, z3fastmem2_bank.start >> 16, currprefs.z3fastmem2_size >> 16,
                                z3fastmem2_bank.allocated);
                }
                if (z3chipmem_bank.allocated > 0) {
                        restore_ram (z3_fileposchip, z3chipmem_bank.baseaddr);
-                       map_banks (&z3chipmem_bank, z3chipmem_bank.start >> 16, currprefs.z3chipmem_size >> 16,
+                       map_banks(&z3chipmem_bank, z3chipmem_bank.start >> 16, currprefs.z3chipmem_size >> 16,
                                z3chipmem_bank.allocated);
                }
 #ifdef PICASSO96
                if (gfxmem_bank.allocated > 0 && gfxmem_bank.start > 0) {
                        restore_ram (p96_filepos, gfxmem_bank.baseaddr);
-                       map_banks (&gfxmem_bank, gfxmem_bank.start >> 16, currprefs.rtgmem_size >> 16,
+                       map_banks(&gfxmem_bank, gfxmem_bank.start >> 16, currprefs.rtgmem_size >> 16,
                                gfxmem_bank.allocated);
                }
 #endif
@@ -1895,7 +1895,7 @@ void expamem_reset (void)
        } else {
                if (fastmem_bank.baseaddr) {
                        fastmem_bank.name = _T("Fast memory (non-autoconfig)");
-                       map_banks (&fastmem_bank, 0x00200000 >> 16, fastmem_bank.allocated >> 16, 0);
+                       map_banks(&fastmem_bank, 0x00200000 >> 16, fastmem_bank.allocated >> 16, 0);
                }
                if (fastmem2_bank.baseaddr != NULL) {
                        fastmem2_bank.name = _T("Fast memory 2 (non-autoconfig)");
@@ -2011,18 +2011,18 @@ void expamem_reset (void)
                        cards[cardno].initnum = expamem_init_z3fastmem;
                        cards[cardno++].map = expamem_map_z3fastmem;
                        if (expamem_z3hack(&currprefs))
-                               map_banks (&z3fastmem_bank, z3fastmem_bank.start >> 16, currprefs.z3fastmem_size >> 16, z3fastmem_bank.allocated);
+                               map_banks_z3(&z3fastmem_bank, z3fastmem_bank.start >> 16, currprefs.z3fastmem_size >> 16);
                        if (z3fastmem2_bank.baseaddr != NULL) {
                                cards[cardno].flags = 2 | 1;
                                cards[cardno].name = _T("Z3Fast2");
                                cards[cardno].initnum = expamem_init_z3fastmem2;
                                cards[cardno++].map = expamem_map_z3fastmem2;
                                if (expamem_z3hack(&currprefs))
-                                       map_banks (&z3fastmem2_bank, z3fastmem2_bank.start >> 16, currprefs.z3fastmem2_size >> 16, z3fastmem2_bank.allocated);
+                                       map_banks_z3(&z3fastmem2_bank, z3fastmem2_bank.start >> 16, currprefs.z3fastmem2_size >> 16);
                        }
                }
                if (z3chipmem_bank.baseaddr != NULL)
-                       map_banks (&z3chipmem_bank, z3chipmem_bank.start >> 16, currprefs.z3chipmem_size >> 16, z3chipmem_bank.allocated);
+                       map_banks_z3(&z3chipmem_bank, z3chipmem_bank.start >> 16, currprefs.z3chipmem_size >> 16);
 #ifdef PICASSO96
                if (currprefs.rtgmem_type == GFXBOARD_UAE_Z3 && gfxmem_bank.baseaddr != NULL) {
                        cards[cardno].flags = 4 | 1;
@@ -2510,7 +2510,7 @@ static const struct expansionboardsettings x86_bridge_sidecar_settings[] = {
        },
        {
                // 10-11
-               _T("Address sector (SW2:3-4)\0A0000-AFFFF\0A0000-AFFFF\0D0000-DFFFF\0E0000-EFFFF\0"),
+               _T("Address sector (SW2:3-4)\0A0000-AFFFF (1)\0A0000-AFFFF (2)\0D0000-DFFFF\0E0000-EFFFF\0"),
                _T("memory\0sector_a0000_1\0sector_a0000_2\0sector_d0000\0sector_e0000\0"),
                true
        },
@@ -2583,6 +2583,49 @@ static const struct expansionboardsettings adscsi2000_settings[] = {
                NULL
        }
 };
+static const struct expansionboardsettings warpengine_settings[] = {
+       {
+               _T("Jumper H"),
+               _T("jumper_h")
+       },
+       {
+               _T("Jumper J"),
+               _T("jumper_j")
+       },
+       {
+               _T("Jumper K"),
+               _T("jumper_k")
+       },
+       {
+               NULL
+       }
+};
+static const struct expansionboardsettings a4091_settings[] = {
+       {
+               _T("Fast Bus"),
+               _T("fastbus"),
+       },
+       {
+               _T("Delayed autoboot"),
+               _T("delayedautoboot")
+       },
+       {
+               _T("Syncronous mode"),
+               _T("syncmode")
+       },
+       {
+               _T("Termination"),
+               _T("term")
+       },
+       {
+               _T("LUN"),
+               _T("lun")
+       },
+       {
+               NULL
+       }
+};
+
 
 const struct expansionromtype expansionroms[] = {
        {
@@ -2668,13 +2711,13 @@ const struct expansionromtype expansionroms[] = {
                _T("a2090a"), _T("A2090a"), _T("Commodore"),
                a2090_init, NULL, a2090_add_scsi_unit, ROMTYPE_A2090 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, false,
                NULL, 0,
-               true, EXPANSIONTYPE_SCSI
+               true, EXPANSIONTYPE_SCSI | EXPANSIONTYPE_CUSTOM_SECONDARY
        },
        {
                _T("a2091"), _T("A590/A2091"), _T("Commodore"),
                a2091_init, NULL, a2091_add_scsi_unit, ROMTYPE_A2091 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, false,
                a2091_sub, 1,
-               true, EXPANSIONTYPE_SCSI,
+               true, EXPANSIONTYPE_SCSI | EXPANSIONTYPE_CUSTOM_SECONDARY,
                0, 0, 0, true, NULL
        },
        {
@@ -2683,7 +2726,7 @@ const struct expansionromtype expansionroms[] = {
                NULL, 0,
                false, EXPANSIONTYPE_SCSI,
                0, 0, 0, false, NULL,
-               true
+               true, a4091_settings
        },
        {
                _T("dataflyerscsiplus"), _T("DataFlyer SCSI+"), _T("Expansion Systems"),
@@ -2870,9 +2913,37 @@ const struct expansionromtype expansionroms[] = {
                _T("amax"), _T("AMAX ROM dongle"), _T("ReadySoft"),
                NULL, 0, NULL, NULL, NULL, ROMTYPE_AMAX | ROMTYPE_NONE, 0, 0, 0, false
        },
+
+#if 0
+       {
+               _T("x86_xt_hd"), _T("x86 XT"), _T("x86"),
+               x86_xt_hd_init, NULL, x86_add_xt_hd_unit, ROMTYPE_X86_HD | ROMTYPE_NONE, 0, 0, BOARD_NONAUTOCONFIG, true,
+               NULL, 0,
+               false, EXPANSIONTYPE_CUSTOM | EXPANSIONTYPE_SCSI
+       },
+#endif
+       {
+               _T("x86_at_hd_1"), _T("x86 AT IDE Primary"), _T("x86"),
+               x86_at_hd_init_1, NULL, x86_add_at_hd_unit_1, ROMTYPE_X86_AT_HD1 | ROMTYPE_NOT, 0, 0, BOARD_NONAUTOCONFIG, true,
+               NULL, 0,
+               false, EXPANSIONTYPE_IDE
+       },
+       {
+               _T("x86_at_hd_2"), _T("x86 AT IDE Secondary"), _T("x86"),
+               x86_at_hd_init_2, NULL, x86_add_at_hd_unit_2, ROMTYPE_X86_AT_HD2 | ROMTYPE_NOT, 0, 0, BOARD_NONAUTOCONFIG, true,
+               NULL, 0,
+               false, EXPANSIONTYPE_IDE
+       },
+       {
+               _T("x86_at_hd_xt"), _T("x86 XTIDE Universal BIOS HD"), _T("x86"),
+               x86_at_hd_init_xt, NULL, x86_add_at_hd_unit_xt, ROMTYPE_X86_XT_IDE | ROMTYPE_NONE, 0, 0, BOARD_NONAUTOCONFIG, true,
+               NULL, 0,
+               false, EXPANSIONTYPE_IDE
+       },
+
        {
                _T("a1060"), _T("A1060 Sidecar"), _T("Commodore"),
-               a1060_init, NULL, NULL, ROMTYPE_A1060 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, false,
+               a1060_init, NULL, NULL, ROMTYPE_A1060 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, true,
                NULL, 0,
                false, EXPANSIONTYPE_X86_BRIDGE,
                0, 0, 0, false, NULL,
@@ -2881,7 +2952,7 @@ const struct expansionromtype expansionroms[] = {
        },
        {
                _T("a2088"), _T("A2088"), _T("Commodore"),
-               a2088xt_init, NULL, NULL, ROMTYPE_A2088 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, false,
+               a2088xt_init, NULL, NULL, ROMTYPE_A2088 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, true,
                NULL, 0,
                false, EXPANSIONTYPE_X86_BRIDGE,
                0, 0, 0, false, NULL,
@@ -2890,7 +2961,7 @@ const struct expansionromtype expansionroms[] = {
        },
        {
                _T("a2088t"), _T("A2088T"), _T("Commodore"),
-               a2088t_init, NULL, NULL, ROMTYPE_A2088T | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, false,
+               a2088t_init, NULL, NULL, ROMTYPE_A2088T | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, true,
                NULL, 0,
                false, EXPANSIONTYPE_X86_BRIDGE,
                0, 0, 0, false, NULL,
@@ -2899,7 +2970,7 @@ const struct expansionromtype expansionroms[] = {
        },
        {
                _T("a2286"), _T("A2286"), _T("Commodore"),
-               a2286_init, NULL, NULL, ROMTYPE_A2286 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, false,
+               a2286_init, NULL, NULL, ROMTYPE_A2286 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, true,
                NULL, 0,
                false, EXPANSIONTYPE_X86_BRIDGE,
                0, 0, 0, false, NULL,
@@ -2908,13 +2979,29 @@ const struct expansionromtype expansionroms[] = {
        },
        {
                _T("a2386"), _T("A2386SX"), _T("Commodore"),
-               a2386_init, NULL, NULL, ROMTYPE_A2386 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, false,
+               a2386_init, NULL, NULL, ROMTYPE_A2386 | ROMTYPE_NONE, 0, 0, BOARD_AUTOCONFIG_Z2, true,
                NULL, 0,
                false, EXPANSIONTYPE_X86_BRIDGE,
                0, 0, 0, false, NULL,
                false,
                x86at_bridge_settings
        },
+
+       // only here for rom selection
+       {
+               _T("picassoiv"), _T("Picasso IV"), _T("Village Tronic"),
+               NULL, NULL, NULL, ROMTYPE_PICASSOIV | ROMTYPE_NONE, 0, 0, BOARD_NONAUTOCONFIG, true,
+               NULL, 0,
+               false, EXPANSIONTYPE_RTG,
+       },
+       {
+               _T("x86_vga"), _T("x86 VGA"), _T("x86"),
+               NULL, NULL, NULL, ROMTYPE_x86_VGA | ROMTYPE_NONE, 0, 0, BOARD_NONAUTOCONFIG, true,
+               NULL, 0,
+               false, EXPANSIONTYPE_RTG,
+       },
+
+
        {
                NULL
        }
@@ -3077,7 +3164,8 @@ static const struct cpuboardsubtype warpengine_sub[] = {
                BOARD_MEMORY_HIGHMEM,
                128 * 1024 * 1024,
                0x01000000,
-               ncr710_warpengine_autoconfig_init, NULL, BOARD_AUTOCONFIG_Z3, 1
+               ncr710_warpengine_autoconfig_init, NULL, BOARD_AUTOCONFIG_Z3, 1,
+               warpengine_settings
        },
        {
                NULL
index b647d8096c749b867c5250533e4c8e9386a945cc..feae86c8d8be944aaced94224e2d22ad441fe7a2 100644 (file)
@@ -116,6 +116,8 @@ typedef void(*DEVICE_MEMORY_CALLBACK)(struct romconfig*, uae_u8*, int);
 #define EXPANSIONTYPE_PCI_BRIDGE 64
 #define EXPANSIONTYPE_PARALLEL_ADAPTER 128
 #define EXPANSIONTYPE_X86_BRIDGE 256
+#define EXPANSIONTYPE_CUSTOM_SECONDARY 512
+#define EXPANSIONTYPE_RTG 1024
 struct expansionboardsettings
 {
        const TCHAR *name;
index 0cfb364df74f4abc180ebb7d7a279adb524c50dd..d2d0767b0deee31bc564aea980094dc21caa2d02 100644 (file)
@@ -91,6 +91,12 @@ extern int decode_cloanto_rom_do (uae_u8 *mem, int size, int real_size);
 #define ROMTYPE_A2286          0x0010002d
 #define ROMTYPE_A2386          0x0010002e
 #define ROMTYPE_OMTIADAPTER    0x0010002f
+#define ROMTYPE_X86_HD         0x00100030
+#define ROMTYPE_X86_AT_HD1     0x00100031
+#define ROMTYPE_X86_AT_HD2     0x00100032
+#define ROMTYPE_X86_XT_IDE     0x00100033
+#define ROMTYPE_PICASSOIV      0x00100034
+#define ROMTYPE_x86_VGA                0x00100035
 
 #define ROMTYPE_NOT                    0x00800000
 #define ROMTYPE_QUAD           0x01000000
index 57d85e511cfb64f86aa07b3f2cbdddb01296fdfa..50014d99b345506e9a84268842a9f505f52fc184 100644 (file)
@@ -102,18 +102,13 @@ static void namesplit(TCHAR *s)
                memmove(s, s + l, (_tcslen(s + l) + 1) * sizeof (TCHAR));
 }
 
-extern "C"
-{
-
-FILE *moduleripper_fopen (const char *aname, const char *amode)
+static void moduleripper_filename(const char *aname, TCHAR *out, bool fullpath)
 {
-       TCHAR tmp2[MAX_DPATH];
        TCHAR tmp[MAX_DPATH];
        TCHAR img[MAX_DPATH];
-       TCHAR *name, *mode;
-       FILE *f;
+       TCHAR *name;
 
-       fetch_ripperpath (tmp, sizeof tmp / sizeof (TCHAR));
+       fetch_ripperpath(tmp, sizeof tmp / sizeof(TCHAR));
 
        img[0] = 0;
        if (currprefs.floppyslots[0].dfxtype >= 0)
@@ -125,18 +120,34 @@ FILE *moduleripper_fopen (const char *aname, const char *amode)
                _tcscat(img, _T("_"));
        }
 
-       name = au (aname);
+       name = au(aname);
+       if (!fullpath)
+               tmp[0] = 0;
+       _stprintf(out, _T("%s%s%s"), tmp, img, name);
+       xfree(name);
+}
+
+extern "C"
+{
+
+FILE *moduleripper_fopen (const char *aname, const char *amode)
+{
+       TCHAR outname[MAX_DPATH];
+       TCHAR *mode;
+       FILE *f;
+
+       moduleripper_filename(aname, outname, true);
+
        mode = au (amode);
-       _stprintf (tmp2, _T("%s%s%s"), tmp, img, name);
-       f = _tfopen (tmp2, mode);
+       f = _tfopen (outname, mode);
        xfree (mode);
-       xfree (name);
        return f;
 }
 
 FILE *moduleripper2_fopen (const char *name, const char *mode, const char *aid, int addr, int size)
 {
        TCHAR msg[MAX_DPATH], msg2[MAX_DPATH];
+       TCHAR outname[MAX_DPATH];
        TCHAR *id;
        int ret;
 
@@ -144,8 +155,9 @@ FILE *moduleripper2_fopen (const char *name, const char *mode, const char *aid,
                return NULL;
        got++;
        translate_message (NUMSG_MODRIP_SAVE, msg);
+       moduleripper_filename(name, outname, false);
        id = au (aid);
-       _stprintf (msg2, msg, id, addr, size);
+       _stprintf (msg2, msg, id, addr, size, outname);
        ret = gui_message_multibutton (2, msg2);
        xfree (id);
        if (ret < 0)
index 55b9496e700178a36e363212a9e65c1759e642ff..09ca06ab8ea95548a771190098ad3e692669670b 100644 (file)
@@ -1575,7 +1575,6 @@ BEGIN
 
     IDD_EXPANSION2, DIALOG
     BEGIN
-        BOTTOMMARGIN, 302
     END
 END
 #endif    // APSTUDIO_INVOKED
@@ -1839,7 +1838,7 @@ BEGIN
     IDS_NUMSG_NOEXTROM      "No extended ROM found."
     IDS_NUMSG_MODRIP_NOTFOUND "No music modules or packed data found."
     IDS_NUMSG_MODRIP_FINISHED "Scan finished."
-    IDS_NUMSG_MODRIP_SAVE   "Module/packed data found\n%s\nStart address %08.8X, Size %d bytes\nWould you like to save it?"
+    IDS_NUMSG_MODRIP_SAVE   "Module/packed data found\n%s\nStart address %08.8X, Size %d bytes\n'%s'\nWould you like to save it?"
     IDS_NUMSG_KS68020       "The selected system ROM requires a 68020 with 32-bit addressing or 68030 or higher CPU."
     IDS_NUMSG_ROMNEED       "One of the following system ROMs is required:\n\n%s\n\nCheck the System ROM path in the Paths panel and click Rescan ROMs."
     IDS_NUMSG_STATEHD       "WARNING: Current configuration is not fully compatible with state saves.\nThis message will not appear again."
index 5d022dd3b31e09f5c85077006d3ef490f8c39c0b..7860fd4e74967a30200137c14e07199de0862e31 100644 (file)
@@ -3445,6 +3445,8 @@ static struct midiportinfo *getmidiport (struct midiportinfo **mi, int devid)
        return NULL;
 }
 
+extern int scsiromselected;
+
 void target_save_options (struct zfile *f, struct uae_prefs *p)
 {
        struct midiportinfo *midp;
@@ -3542,6 +3544,8 @@ void target_save_options (struct zfile *f, struct uae_prefs *p)
 
        cfgfile_target_dwrite (f, _T("extraframewait"), _T("%d"), extraframewait);
        cfgfile_target_dwrite (f, _T("framelatency"), _T("%d"), forcedframelatency);
+       if (scsiromselected > 0)
+               cfgfile_target_write(f, _T("expansion_gui_page"), expansionroms[scsiromselected].name);
 }
 
 void target_restart (void)
@@ -3629,6 +3633,20 @@ int target_parse_option (struct uae_prefs *p, const TCHAR *option, const TCHAR *
                || cfgfile_intval (option, value, _T("framelatency"), &forcedframelatency, 1)
                || cfgfile_intval (option, value, _T("cpu_idle"), &p->cpu_idle, 1));
 
+
+       if (cfgfile_string(option, value, _T("expansion_gui_page"), tmpbuf, sizeof tmpbuf / sizeof(TCHAR))) {
+               TCHAR *p = _tcschr(tmpbuf, ',');
+               if (p != NULL)
+                       *p = 0;
+               for (int i = 0; expansionroms[i].name; i++) {
+                       if (!_tcsicmp(tmpbuf, expansionroms[i].name)) {
+                               scsiromselected = i;
+                               break;
+                       }
+               }
+               return 1;
+       }
+
        if (cfgfile_yesno (option, value, _T("rtg_match_depth"), &p->win32_rtgmatchdepth))
                return 1;
        if (cfgfile_yesno (option, value, _T("rtg_scale_small"), &tbool)) {
index 102c9f0ae63d6c0fe06c0960a16e45d66a4ca7b2..bb9a00dab45674c9b17246089d384121da32c175 100644 (file)
 #define LANG_DLL_FULL_VERSION_MATCH 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("5")
+#define WINUAEBETA _T("6")
 #else
 #define WINUAEBETA _T("")
 #endif
 
-#define WINUAEDATE MAKEBD(2015, 7, 27)
+#define WINUAEDATE MAKEBD(2015, 8, 1)
 
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index 834a7014f78f60d28f0a6f67df5f0b823bd9751d..59207ab908e2667454c40cefbf766d43b03aa71b 100644 (file)
@@ -180,7 +180,7 @@ static void addaspectratios (HWND hDlg, int id)
        }
 }
 
-static int scsiromselected = 0;
+int scsiromselected = 0;
 static int scsiromselectednum = 0;
 static int scsiromselectedcatnum = 0;
 
@@ -3388,6 +3388,7 @@ static void writeconfigcache (const TCHAR *path)
        TCHAR cachepath[MAX_DPATH];
        TCHAR path2[MAX_DPATH];
        FILETIME t;
+       ULARGE_INTEGER ul;
        SYSTEMTIME st;
 
        if (!configurationcache)
@@ -3403,7 +3404,9 @@ static void writeconfigcache (const TCHAR *path)
        SystemTimeToFileTime (&st, &t);
        fwrite (configcachever, _tcslen (configcachever), sizeof (TCHAR), zcache);
        fwrite (&lf, 1, sizeof (TCHAR), zcache);
-       _stprintf (path2, _T("3\n4\n7\n%I64u\n;\n"), t);
+       ul.HighPart = t.dwHighDateTime;
+       ul.LowPart = t.dwLowDateTime;
+       _stprintf (path2, _T("3\n4\n7\n%I64u\n;\n"), ul.QuadPart);
        fwrite (path2, _tcslen (path2), sizeof (TCHAR), zcache);
        GetFullPathName (path, sizeof path2 / sizeof (TCHAR), path2, NULL);
        for (i = 0; i < configstoresize; i++) {
@@ -8276,54 +8279,52 @@ static void expansion_net (HWND hDlg)
                SendDlgItemMessage (hDlg, IDC_NETDEVICE, CB_SETCURSEL, 0, 0);
 }
 
-static const int scsiromselectedmask[] = { EXPANSIONTYPE_SCSI, EXPANSIONTYPE_IDE, EXPANSIONTYPE_SASI, EXPANSIONTYPE_CUSTOM, EXPANSIONTYPE_PCI_BRIDGE, EXPANSIONTYPE_X86_BRIDGE };
-static void init_expansion2(HWND hDlg)
+static const int scsiromselectedmask[] = { EXPANSIONTYPE_SCSI, EXPANSIONTYPE_IDE, EXPANSIONTYPE_SASI, EXPANSIONTYPE_CUSTOM, EXPANSIONTYPE_PCI_BRIDGE, EXPANSIONTYPE_X86_BRIDGE, EXPANSIONTYPE_RTG };
+static void init_expansion2(HWND hDlg, bool init)
 {
        static int first = -1;
+       bool last = false;
 
-       SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_SETCURSEL, scsiromselectedcatnum, 0);
-
-       SendDlgItemMessage(hDlg, IDC_SCSIROMSELECT, CB_RESETCONTENT, 0, 0);
-       scsiromselect_table[0] = -1;
-       for (int i = 0; expansionroms[i].name; i++) {
-               TCHAR name[256];
-               if (expansionroms[i].romtype & ROMTYPE_CPUBOARD)
-                       continue;
-               if (!(expansionroms[i].deviceflags & scsiromselectedmask[scsiromselectedcatnum]))
-                       continue;
-               if (scsiromselectedcatnum == 0 && (expansionroms[i].deviceflags & (EXPANSIONTYPE_SASI | EXPANSIONTYPE_CUSTOM)))
-                       continue;
-               name[0] = 0;
-               int cnt = 0;
-               for (int j = 0; j < MAX_DUPLICATE_EXPANSION_BOARDS; j++) {
-                       if (cfgfile_board_enabled(&workprefs, expansionroms[i].romtype, j)) {
-                               cnt++;
+       for (;;) {
+               bool matched = false;
+               SendDlgItemMessage(hDlg, IDC_SCSIROMSELECT, CB_RESETCONTENT, 0, 0);
+               scsiromselect_table[0] = -1;
+               for (int i = 0; expansionroms[i].name; i++) {
+                       TCHAR name[256];
+                       if (expansionroms[i].romtype & ROMTYPE_CPUBOARD)
+                               continue;
+                       if (!(expansionroms[i].deviceflags & scsiromselectedmask[scsiromselectedcatnum]))
+                               continue;
+                       if (scsiromselectedcatnum == 0 && (expansionroms[i].deviceflags & (EXPANSIONTYPE_SASI | EXPANSIONTYPE_CUSTOM)))
+                               continue;
+                       name[0] = 0;
+                       int cnt = 0;
+                       for (int j = 0; j < MAX_DUPLICATE_EXPANSION_BOARDS; j++) {
+                               if (cfgfile_board_enabled(&workprefs, expansionroms[i].romtype, j)) {
+                                       cnt++;
+                               }
                        }
+                       if (i == scsiromselected)
+                               matched = true;
+                       if (cnt > 0) {
+                               if (first < 0)
+                                       first = i;
+                       }
+                       if (cnt == 1)
+                               _tcscat(name, _T("* "));
+                       else if (cnt > 1)
+                               _stprintf(name + _tcslen(name), _T("[%d] "), cnt);
+                       _tcscat(name, expansionroms[i].friendlyname);
+                       if (expansionroms[i].friendlymanufacturer) {
+                               _tcscat(name, _T(" ("));
+                               _tcscat(name, expansionroms[i].friendlymanufacturer);
+                               _tcscat(name, _T(")"));
+                       }
+                       gui_add_string(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, i, name);
                }
-               if (cnt > 0) {
-                       if (first < 0)
-                               first = i;
-               }
-               if (cnt == 1)
-                       _tcscat(name, _T("* "));
-               else if (cnt > 1)
-                       _stprintf(name + _tcslen(name), _T("[%d] "), cnt);
-               _tcscat(name, expansionroms[i].friendlyname);
-               if (expansionroms[i].friendlymanufacturer) {
-                       _tcscat(name, _T(" ("));
-                       _tcscat(name, expansionroms[i].friendlymanufacturer);
-                       _tcscat(name, _T(")"));
-               }
-               gui_add_string(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, i, name);
-       }
-       SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_RESETCONTENT, 0, 0);
-       for (int i = 0; i < MAX_DUPLICATE_EXPANSION_BOARDS; i++) {
-               TCHAR tmp[10];
-               _stprintf(tmp, _T("%d"), i + 1);
-               SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_ADDSTRING, 0, (LPARAM) tmp);
-       }
 
-       if (scsiromselected <= 0) {
+               if (scsiromselected > 0 && matched)
+                       break;
                int found = -1;
                for (int i = 0; expansionroms[i].name; i++) {
                        int romtype = expansionroms[i].romtype;
@@ -8342,14 +8343,30 @@ static void init_expansion2(HWND hDlg)
                }
                if (scsiromselected < 0 && found < 0)
                        found = first;
-               if (found >= 0) {
+               if (found > 0) {
                        scsiromselected = found;
+                       break;
+               }
+               if (last || !init)
+                       break;
+               scsiromselectedcatnum++;
+               if (scsiromselectedcatnum > 5) {
+                       last = true;
+                       scsiromselectedcatnum = 0;
+                       scsiromselected = 0;
                }
        }
 
+       SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_RESETCONTENT, 0, 0);
+       for (int i = 0; i < MAX_DUPLICATE_EXPANSION_BOARDS; i++) {
+               TCHAR tmp[10];
+               _stprintf(tmp, _T("%d"), i + 1);
+               SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_ADDSTRING, 0, (LPARAM)tmp);
+       }
+
        if (scsiromselected > 0)
                gui_set_string_cursor(scsiromselect_table, hDlg, IDC_SCSIROMSELECT, scsiromselected);
-
+       SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_SETCURSEL, scsiromselectedcatnum, 0);
        SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTNUM, CB_SETCURSEL, scsiromselectednum, 0);
 
        SendDlgItemMessage(hDlg, IDC_SCSIROMID, CB_RESETCONTENT, 0, 0);
@@ -8444,7 +8461,7 @@ static void values_from_expansion2dlg(HWND hDlg)
                clear_device_rom(&workprefs, expansionroms[scsiromselected].romtype, scsiromselectednum);
        }
        if (changed) {
-               init_expansion2(hDlg);
+               init_expansion2(hDlg, false);
                values_to_expansion2dlg_sub(hDlg);
        }
 
@@ -8679,6 +8696,27 @@ static void updatecpuboardsubtypes(HWND hDlg)
 #endif
 }
 
+static void set_expansion_rtg_rom(void)
+{
+       int idx;
+       uae_u32 romtype = gfxboard_get_romtype(workprefs.rtgmem_type);
+       if (romtype) {
+               struct boardromconfig *bc = get_device_rom_new(&workprefs, romtype, 0, &idx);
+               if (bc && bc->roms[idx].romfile[0] == 0) {
+                       _tcscpy(bc->roms[idx].romfile, _T(":NOROM"));
+               }
+       }
+       for (int i = 0; expansionroms[i].name; i++) {
+               const struct expansionromtype *ert = &expansionroms[i];
+               if (ert->deviceflags & EXPANSIONTYPE_RTG) {
+                       if ((ert->romtype & ROMTYPE_MASK) != (romtype & ROMTYPE_MASK)) {
+                               clear_device_rom(&workprefs, ert->romtype, 0);
+                       }
+               }
+       }
+}
+
+
 static void expansion2filebuttons(HWND hDlg, WPARAM wParam, TCHAR *path)
 {
        switch (LOWORD(wParam))
@@ -8740,11 +8778,12 @@ static INT_PTR CALLBACK Expansion2DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LP
                        SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_ADDSTRING, 0, (LPARAM)_T("Custom Controllers"));
                        SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_ADDSTRING, 0, (LPARAM)_T("PCI Bridgeboards"));
                        SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_ADDSTRING, 0, (LPARAM)_T("x86 Bridgeboards"));
+                       SendDlgItemMessage(hDlg, IDC_SCSIROMSELECTCAT, CB_ADDSTRING, 0, (LPARAM)_T("RTG boards"));
                        reset_expansionrom_gui(hDlg, &expansion_gui_item, IDC_EXPANSIONBOARDITEMSELECTOR, IDC_EXPANSIONBOARDSELECTOR, IDC_EXPANSIONBOARDCHECKBOX);
                        reset_expansionrom_gui(hDlg, &accelerator_gui_item, IDC_ACCELERATORBOARDITEMSELECTOR, IDC_ACCELERATORBOARDSELECTOR, IDC_ACCELERATORBOARDCHECKBOX);
                        hide(hDlg, IDC_SCSIROMSELECTED, 1);
                        expansion_net(hDlg);
-                       init_expansion2(hDlg);
+                       init_expansion2(hDlg, true);
                        updatecpuboardsubtypes(hDlg);
                        setcpuboardmemsize(hDlg);
                        recursive--;
@@ -8865,7 +8904,7 @@ static INT_PTR CALLBACK Expansion2DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LP
                                        if (val != CB_ERR) {
                                                scsiromselectedcatnum = val;
                                                scsiromselected = 0;
-                                               init_expansion2(hDlg);
+                                               init_expansion2(hDlg, false);
                                                values_to_expansion2_expansion_roms(hDlg, NULL);
                                                values_to_expansion2_expansion_settings(hDlg);
                                                values_to_expansion2dlg_sub(hDlg);
@@ -9265,6 +9304,7 @@ static INT_PTR CALLBACK ExpansionDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
                                                        if (workprefs.rtgmem_size == 0)
                                                                workprefs.rtgmem_size = 4096 * 1024;
                                                }
+                                               set_expansion_rtg_rom();
                                                enable_for_expansiondlg (hDlg);
                                        }
                                        break;
@@ -11466,10 +11506,13 @@ static void inithdcontroller (HWND hDlg, int ctype, int ctype_unit, int devtype)
                SendDlgItemMessage (hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("ATA-2+"));
                SendDlgItemMessage (hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("ATA-2+ Strict"));
        } else if (ctype >= HD_CONTROLLER_TYPE_SCSI_FIRST && ctype <= HD_CONTROLLER_TYPE_SCSI_LAST) {
+               const struct expansionromtype *ert = get_unit_expansion_rom(ctype);
                SendDlgItemMessage (hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("SCSI-1"));
                SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("SCSI-2"));
-               SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("SASI"));
-               SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("SASI CHS"));
+               if (ert && (ert->deviceflags & (EXPANSIONTYPE_CUSTOM | EXPANSIONTYPE_CUSTOM_SECONDARY))) {
+                       SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("SASI"));
+                       SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_ADDSTRING, 0, (LPARAM)_T("SASI CHS"));
+               }
        }
 }
 
index 985336e972118b95125bfdbd8a99cff0ff840611..9be49bd6625f9b047b67c7dc8d98d78bbf16830e 100644 (file)
@@ -1,4 +1,55 @@
 
+- Bridgeboard floppy drive motor and click sound supported.
+- x86 CPU status string was visible even when bridgeboard was not active.
+- Added software readable A4091 DIP switches and Warp Engine SCSI jumpers to GUI. Note that default
+  jumper state for Warp Engine is "No autoboot", you need to set all 3 jumpers to re-enable previous
+  autoboot configuration.
+- Even more Z2 and Z3 board address validation, do not map the board if OS attempts to map it over any
+  existing mapped space. Some Z2/Z3 boards didn't use validating memory bank map routines.
+- A590 XT drive emulation uses now generic "custom" HD emulation like all recently added MFM/RLL
+  controllers. Automatic geometry fixing removed, it can cause problems.
+- Fixed A590 XT random bug that tried to start DMA transfer middle of command phase in some situations.
+- Remember last open Expansion panel expansion device, saved to config file.
+- A2286 "The Real Time Clock has not been initialized." message is gone.
+- A2386SX CMOS RAM size fixed, but BIOS still complains about invalid configuration and setup screen
+  shows incorrect extended RAM size. (Why? Early boot phase extended RAM size counter is correct.)
+  Floppy drive access also seems to stall for 5s+ regularly and then work normally again.
+- Added x86 bridgeboard AT IDE drive emulation. Selection under IDE controllers. Only A2286 and A2386SX
+  have BIOS support for AT IDE. At least fdisk and formatting confirmed working.
+- Added IDE commands 0x40 and 0x41 (READ VERIFY SECTOR(S)), BIOS code uses it during formatting.
+- Added support for XTIDE Universal BIOS (https://code.google.com/p/xtideuniversalbios/) See notes.
+- Added supprtt for IDE emulation 8-bit data port width. (XT mode XTIDE Universal BIOS)
+- Only show SASI harddrive types if selected controller uses SASI-like commands.
+- Cirrus Logic hardware emulation text modes used graphics mode resolution when selecting host screen
+  size. Larger than 8 pixel font width text mode was too narrow.
+- Added x86 VGA board emulation (uses already existing Cirrus Logic emulation).
+
+x86 bridgeboard VGA notes:
+- Does not autoswitch, use END+F9 to switch between screens.
+- Empty Amiga-side Janus PC window must still be open to enable keyboard input.
+- It is not possible (at least not yet) to have Amiga RTG board enabled at the same time.
+- VGA uses A0000-BFFFF, make sure bridgeboard "Address Sector" does not conflict. (Bad
+  memories are starting to return from PC DOS era...)
+
+RTG ROM configuration notes:
+- Expansion panel has new "RTG board" category that currently lists 2 boards that need rom image,
+  Picasso IV and x86 bridgeboard VGA ISA card.
+- This selection is currently a special case: selected ROM gets automatically removed when RTG board
+  is changed, always use RTG panel first to select the board, then Expansion panel to set the ROM.
+- If Picasso IV ROM is not selected ("ROM disabled"): old rom loading method is used. In other words,
+  you can ignore whole RTG ROM configuration if you are never going to use x86 bridgeboard VGA card.
+- Probably any old ISA Cirrus Logic GD542x VGA ROM can be used, for example
+  http://www.vgamuseum.info/index.php/component/k2/item/131-cirrus-logic-cl-gd5420
+  or http://www.nongnu.org/vgabios/ seems to work.
+
+XTIDE Universal BIOS notes:
+- BIOS is loaded at 0xEC000 to guarantee it becoming last BIOS extension, it is required to make it
+  work properly if there are other extensions (Janus handler/library). Make sure bridgeboard
+  "Address sector" is not conflicting (D0000-DFFFF works fine, for some reason no BIOS checks A0000
+  to AFFFF region but it is documented as existing option in hardware).
+- Uses Universal BIOS defaults (IO address base 0x300, no interrupt).
+- A1060 and A2088 confirmed working.
+
 Beta 5:
 
 - Added OMTI-Adapter HD controller, same as ALF1 but different hardware base address.
index f93e52783bbf14f3b22173c26f8d79c2f2162faa..cc674e6555cf56644147f29877ff4a58de860620 100644 (file)
@@ -509,7 +509,7 @@ void fillPTKtable (Uchar poss[37][2])
 }
 
 #ifndef _WIN64
-int htonl(int v)
+unsigned int htonl(unsigned int v)
 {
        return ((v >> 24) & 0x000000ff) | ((v >> 8) & 0x0000ff00) | ((v << 8) & 0x00ff0000) | ((v << 24) & 0xff000000);
 }