diff --git a/src/expansion.cpp b/src/expansion.cpp index aa671e5a..c284ec49 100644 --- a/src/expansion.cpp +++ b/src/expansion.cpp @@ -2775,7 +2775,7 @@ const struct expansionromtype expansionroms[] = { }, { _T("pcmcia_mb"), _T("A600/A1200 PCMCIA"), _T("Commodore"), - NULL, gayle_init_pcmcia, NULL, NULL, ROMTYPE_MB_PCMCIA | ROMTYPE_NOT, 0, 0, BOARD_NONAUTOCONFIG_BEFORE, true, + NULL, gayle_pcmcia_init, NULL, NULL, ROMTYPE_MB_PCMCIA | ROMTYPE_NOT, 0, 0, BOARD_NONAUTOCONFIG_BEFORE, true, NULL, 0, false, EXPANSIONTYPE_INTERNAL }, diff --git a/src/gayle.cpp b/src/gayle.cpp index a751816d..dc8c6cd9 100644 --- a/src/gayle.cpp +++ b/src/gayle.cpp @@ -164,9 +164,6 @@ static int dataflyer_state; 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) { memset (pcmcia_configuration, 0, sizeof pcmcia_configuration); @@ -212,7 +209,7 @@ bool isideint(void) return checkgayleideirq() != 0; } -static void rethink_gayle (void) +void rethink_gayle (void) { int lev2 = 0; int lev6 = 0; @@ -1553,7 +1550,7 @@ static void REGPARAM2 gayle_common_bput (uaecptr addr, uae_u32 value) gayle_common_write_byte(addr, value); } -static void gayle_map_pcmcia (void) +void gayle_map_pcmcia (void) { if (currprefs.cs_pcmcia == 0) return; @@ -1632,12 +1629,20 @@ bool gayle_init_pcmcia(struct autoconfig_info *aci) return true; } -static void gayle_hsync(void) +void gayle_hsync(void) { if (ide_interrupt_hsync(idedrive[0]) || ide_interrupt_hsync(idedrive[2]) || ide_interrupt_hsync(idedrive[4])) devices_rethink_all(rethink_gayle); } +bool gayle_pcmcia_init(struct autoconfig_info* aci) +{ + aci->start = 0x600000; + aci->size = 0xa80000 - aci->start; + aci->zorro = 0; + return true; +} + static void initide (void) { gayle_its.idetable = idedrive; @@ -1656,20 +1661,20 @@ static void initide (void) gayle_irq = gayle_int = 0; } -static void gayle_free (void) +void gayle_free (void) { stop_ide_thread(&gayle_its); //stop_ide_thread(&pcmcia_its); } -static void check_prefs_changed_gayle(void) +void check_prefs_changed_gayle(void) { if (!currprefs.cs_pcmcia) return; //pcmcia_card_check(1, -1); } -static void gayle_reset (int hardreset) +void gayle_reset (int hardreset) { static TCHAR bankname[100]; diff --git a/src/include/gayle.h b/src/include/gayle.h index 7badbd42..a477b4fb 100644 --- a/src/include/gayle.h +++ b/src/include/gayle.h @@ -3,15 +3,23 @@ #include "uae/types.h" -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); -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); -void pcmcia_eject(struct uae_prefs *p); -void pcmcia_reinsert(struct uae_prefs*); -bool pcmcia_disk_reinsert(struct uae_prefs *p, struct uaedev_config_info *uci, bool ejectonly); +extern void gayle_reset(int); +extern void gayle_hsync(void); +extern void gayle_free(void); +extern void gayle_add_ide_unit(int ch, struct uaedev_config_info* ci, struct romconfig* rc); +extern bool gayle_ide_init(struct autoconfig_info*); +extern int gayle_modify_pcmcia_sram_unit(struct uaedev_config_info*, int insert); +extern int gayle_modify_pcmcia_ide_unit(struct uaedev_config_info*, int insert); +extern int gayle_add_pcmcia_sram_unit(struct uaedev_config_info*); +extern int gayle_add_pcmcia_ide_unit(struct uaedev_config_info*); +extern void gayle_free_units(void); +extern void rethink_gayle(void); +extern void gayle_map_pcmcia(void); +extern void check_prefs_changed_gayle(void); +extern void gayle_add_pcmcia_unit(int ch, struct uaedev_config_info* ci, struct romconfig* rc); +extern bool gayle_pcmcia_init(struct autoconfig_info*); +extern bool gayle_init_ne2000_pcmcia(struct autoconfig_info* aci); +bool isideint(void); extern int gary_toenb; // non-existing memory access = bus error. extern int gary_timeout; // non-existing memory access = delay diff --git a/src/include/memory.h b/src/include/memory.h index 3dd662c0..68567c6d 100644 --- a/src/include/memory.h +++ b/src/include/memory.h @@ -487,7 +487,9 @@ extern addrbank *get_mem_bank_real(uaecptr); (mem_banks[bankindex(addr)] = (b)); #endif +extern void memory_init(void); extern void memory_cleanup (void); +extern void restore_banks(void); extern void map_banks (addrbank *bank, int first, int count, int realsize); extern void map_banks_z2 (addrbank *bank, int first, int count); extern void map_banks_z3(addrbank *bank, int first, int count); @@ -762,19 +764,18 @@ extern void REGPARAM3 chipmem_wput (uaecptr, uae_u32) REGPARAM; extern void REGPARAM3 chipmem_bput (uaecptr, uae_u32) REGPARAM; extern uae_u32 REGPARAM3 chipmem_agnus_wget (uaecptr) REGPARAM; -extern void REGPARAM3 chipmem_agnus_wput (uaecptr, uae_u32) REGPARAM; +extern void REGPARAM3 chipmem_agnus_wput(uaecptr, uae_u32) REGPARAM; -extern uae_u32 chipmem_full_mask; extern addrbank dummy_bank; -STATIC_INLINE uae_u32 chipmem_lget_indirect(uae_u32 PT) { - return do_get_mem_long((uae_u32 *)&chipmem_bank.baseaddr[PT & chipmem_bank.mask]); -} -STATIC_INLINE uae_u32 chipmem_wget_indirect (uae_u32 PT) { - return do_get_mem_word((uae_u16 *)&chipmem_bank.baseaddr[PT & chipmem_full_mask]); -} - -#define chipmem_wput_indirect chipmem_agnus_wput +extern uae_u32(REGPARAM3* chipmem_lget_indirect)(uaecptr) REGPARAM; +extern uae_u32(REGPARAM3* chipmem_wget_indirect)(uaecptr) REGPARAM; +extern uae_u32(REGPARAM3* chipmem_bget_indirect)(uaecptr) REGPARAM; +extern void (REGPARAM3* chipmem_lput_indirect)(uaecptr, uae_u32) REGPARAM; +extern void (REGPARAM3* chipmem_wput_indirect)(uaecptr, uae_u32) REGPARAM; +extern void (REGPARAM3* chipmem_bput_indirect)(uaecptr, uae_u32) REGPARAM; +extern int (REGPARAM3* chipmem_check_indirect)(uaecptr, uae_u32) REGPARAM; +extern uae_u8* (REGPARAM3* chipmem_xlate_indirect)(uaecptr) REGPARAM; extern bool mapped_malloc (addrbank*); extern void mapped_free (addrbank*);