static uae_u8 dataflyer_byte;
static void gayle_reset(int hardreset);
+static void gayle_map_pcmcia(void);
static void pcmcia_reset (void)
{
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);
gayle_common_write_byte (addr, value);
}
-void gayle_map_pcmcia (void)
+static void gayle_map_pcmcia (void)
{
if (currprefs.cs_pcmcia == 0)
return;
gayle_dataflyer_enable(false);
pcmcia_card_check(0, -1);
+ gayle_map_pcmcia();
}
uae_u8 *restore_gayle (uae_u8 *src)
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);
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)