void devices_rethink(void) { rethink_cias (); #ifdef A2065 rethink_a2065 (); #endif #ifdef A2091 rethink_a2091 (); #endif #ifdef CDTV rethink_cdtv(); rethink_cdtvcr(); #endif #ifdef CD32 rethink_akiko (); rethink_cd32fmv(); #endif #ifdef NCR ncr_rethink(); #endif #ifdef NCR9X ncr9x_rethink(); #endif ncr80_rethink(); #ifdef WITH_PCI pci_rethink(); #endif #ifdef WITH_TOCCATA sndboard_rethink(); #endif rethink_gayle (); idecontroller_rethink(); /* cpuboard_rethink must be last */ cpuboard_rethink(); }
static void card_trigger (int insert) { if (insert) { if (pcmcia_card) { gayle_cs_change (GAYLE_CS_CCDET, 1); gayle_cfg = GAYLE_CFG_100NS; if (!pcmcia_readonly) gayle_cs_change (GAYLE_CS_WR, 1); } } else { gayle_cfg = 0; gayle_cs_change (GAYLE_CS_CCDET, 0); gayle_cs_change (GAYLE_CS_BVD2, 0); gayle_cs_change (GAYLE_CS_BVD1, 0); gayle_cs_change (GAYLE_CS_WR, 0); gayle_cs_change (GAYLE_CS_BSY, 0); } rethink_gayle (); }
static void gayle_cs_change (uae_u8 mask, int onoff) { int changed = 0; if ((gayle_cs & mask) && !onoff) { gayle_cs &= ~mask; changed = 1; } else if (!(gayle_cs & mask) && onoff) { gayle_cs |= mask; changed = 1; } if (changed) { gayle_irq |= mask; rethink_gayle (); if ((mask & GAYLE_CS_CCDET) && (gayle_irq & (GAYLE_IRQ_RESET | GAYLE_IRQ_BERR)) != (GAYLE_IRQ_RESET | GAYLE_IRQ_BERR)) { if (gayle_irq & GAYLE_IRQ_RESET) uae_reset (0, 0); if (gayle_irq & GAYLE_IRQ_BERR) Exception (2); } } }