]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
PCMCIA attribute image support fix, slot was not enable at reset.
authorToni Wilen <twilen@winuae.net>
Thu, 24 Oct 2019 15:51:11 +0000 (18:51 +0300)
committerToni Wilen <twilen@winuae.net>
Thu, 24 Oct 2019 15:51:11 +0000 (18:51 +0300)
gayle.cpp
include/gayle.h
memory.cpp

index f06e11c3a1f131fe70de954d52ffbac5bb66d789..5628abab5add7606b7717779b99dd3ce52e1c738 100644 (file)
--- a/gayle.cpp
+++ b/gayle.cpp
@@ -173,6 +173,7 @@ static int dataflyer_disable_irq;
 static uae_u8 dataflyer_byte;
 
 static void gayle_reset(int hardreset);
+static void gayle_map_pcmcia(void);
 
 static void pcmcia_reset (void)
 {
@@ -1503,14 +1504,17 @@ static int initpcmcia (const TCHAR *path, int readonly, int type, int reset, str
                        if (pcmcia_disk->hfd.virtsize > 4 * 1024 * 1024) {
                                write_log (_T("PCMCIA SRAM: too large device, %llu bytes\n"), pcmcia_disk->hfd.virtsize);
                                extrasize = pcmcia_disk->hfd.virtsize - 4 * 1024 * 1024;
+                               if (extrasize > 262144)
+                                       extrasize = 262144;
+                               extrasize &= ~511;
                                pcmcia_common_size = 4 * 1024 * 1024;
                        }
                        pcmcia_common = xcalloc (uae_u8, pcmcia_common_size);
                        hdf_read (&pcmcia_disk->hfd, pcmcia_common, 0, pcmcia_common_size);
                        pcmcia_card = 1;
-                       if (extrasize >= 256 && extrasize < 1 * 1024 * 1024) {
-                               hdf_read(&pcmcia_disk->hfd, pcmcia_attrs, pcmcia_common_size, 0x40000);
-                               write_log(_T("PCMCIA SRAM: Attribute data read\n"));
+                       if (extrasize >= 512 && extrasize < 1 * 1024 * 1024) {
+                               hdf_read(&pcmcia_disk->hfd, pcmcia_attrs, pcmcia_common_size, extrasize);
+                               write_log(_T("PCMCIA SRAM: Attribute data read %ld bytes\n"), extrasize);
                                pcmcia_attrs_full = 1;
                        } else {
                                initsramattr(pcmcia_common_size, readonly);
@@ -1837,7 +1841,7 @@ static void REGPARAM2 gayle_common_bput (uaecptr addr, uae_u32 value)
        gayle_common_write_byte (addr, value);
 }
 
-void gayle_map_pcmcia (void)
+static void gayle_map_pcmcia (void)
 {
        if (currprefs.cs_pcmcia == 0)
                return;
@@ -2151,6 +2155,7 @@ static void gayle_reset (int hardreset)
        gayle_dataflyer_enable(false);
 
        pcmcia_card_check(0, -1);
+       gayle_map_pcmcia();
 }
 
 uae_u8 *restore_gayle (uae_u8 *src)
index 94b6dd42215e8f052d49852df8f743d72d3f15d2..7badbd42c8372829cd786b69a7b3eb7b8bd6029a 100644 (file)
@@ -6,7 +6,6 @@
 void gayle_add_ide_unit (int ch, struct uaedev_config_info *ci, struct romconfig *rc);
 bool gayle_ide_init(struct autoconfig_info*);
 void gayle_free_units (void);
-void gayle_map_pcmcia (void);
 bool gayle_init_pcmcia(struct autoconfig_info *aci);
 bool gayle_init_board_io_pcmcia(struct autoconfig_info *aci);
 bool gayle_init_board_common_pcmcia(struct autoconfig_info *aci);
index d20c2a8e9e6dd571c62cb5c32e642b8082ca174f..487d83adc017a838e620bc9fe8cddb3659fd1ac6 100644 (file)
@@ -2723,7 +2723,6 @@ void memory_reset (void)
                        map_banks (&gayle_bank, 0xD8, 6, 0);
                        map_banks (&gayle2_bank, 0xDD, 2, 0);
                }
-               gayle_map_pcmcia ();
                if (currprefs.cs_ide == IDE_A4000 || is_device_rom(&currprefs, ROMTYPE_SCSI_A4000T, 0))
                        map_banks (&gayle_bank, 0xDD, 1, 0);
                if (currprefs.cs_ide < 0 && !currprefs.cs_pcmcia)