static void set_firetrk_service(int enable) { /* watchdog is disabled during service mode */ watchdog_enable(!enable); /* change CPU clock speed according to service switch change */ cpunum_set_clock(0, enable ? FIRETRK_CPU_CLOCK_750KZ : FIRETRK_CPU_CLOCK_1MHZ); }
static void apple3_update_memory(void) { UINT16 bank; UINT8 page; if (LOG_MEMORY) { logerror("apple3_update_memory(): via_0_b=0x%02x via_1_a=0x0x%02x\n", via_0_b, via_1_a); } cpunum_set_clock(0, (via_0_a & 0x80) ? 1000000 : 2000000); /* bank 2 (0100-01FF) */ if (!(via_0_a & 0x04)) { if (via_0_b < 0x20) { bank = ~0; /* system bank */ page = via_0_b ^ 0x01; } else if (via_0_b >= 0xA0) { bank = ~0; /* system bank */ page = (via_0_b ^ 0x01) - 0x80; } else { bank = via_1_a; page = (via_0_b ^ 0x01) - 0x20; } } else { bank = ~0; page = 0x01; } apple3_setbank(2, bank, ((offs_t) page) * 0x100); /* bank 3 (0200-1FFF) */ apple3_setbank(3, ~0, 0x0200); /* bank 4 (2000-9FFF) */ apple3_setbank(4, via_1_a, 0x0000); /* bank 5 (A000-BFFF) */ apple3_setbank(5, ~0, 0x2000); /* install bank 8 (C000-CFFF) */ if (via_0_a & 0x40) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC000, 0xC0FF, 0, 0, apple3_c0xx_r); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC000, 0xC0FF, 0, 0, apple3_c0xx_w); } else { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC000, 0xC0FF, 0, 0, MRA8_BANK8); if (via_0_a & 0x08) memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC000, 0xC0FF, 0, 0, MWA8_ROM); else memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC000, 0xC0FF, 0, 0, MWA8_BANK8); apple3_setbank(8, ~0, 0x4000); } /* install bank 9 (C100-C4FF) */ if (via_0_a & 0x40) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC100, 0xC4FF, 0, 0, MRA8_NOP); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC100, 0xC4FF, 0, 0, MWA8_NOP); } else { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC100, 0xC4FF, 0, 0, MRA8_BANK9); if (via_0_a & 0x08) memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC100, 0xC4FF, 0, 0, MWA8_ROM); else memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC100, 0xC4FF, 0, 0, MWA8_BANK9); apple3_setbank(9, ~0, 0x4100); } /* install bank 10 (C500-C7FF) */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC500, 0xC7FF, 0, 0, MRA8_BANK10); if (via_0_a & 0x08) memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC500, 0xC7FF, 0, 0, MWA8_ROM); else memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC500, 0xC7FF, 0, 0, MWA8_BANK10); apple3_setbank(10, ~0, 0x4500); /* install bank 11 (C800-CFFF) */ if (via_0_a & 0x40) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC800, 0xCFFF, 0, 0, MRA8_NOP); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC800, 0xCFFF, 0, 0, MWA8_NOP); } else { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC800, 0xCFFF, 0, 0, MRA8_BANK11); if (via_0_a & 0x08) memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC800, 0xCFFF, 0, 0, MWA8_ROM); else memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xC800, 0xCFFF, 0, 0, MWA8_BANK11); apple3_setbank(11, ~0, 0x4800); } /* install bank 6 (D000-EFFF) */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xD000, 0xEFFF, 0, 0, MRA8_BANK6); if (via_0_a & 0x08) memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xD000, 0xEFFF, 0, 0, MWA8_ROM); else memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xD000, 0xEFFF, 0, 0, MWA8_BANK6); apple3_setbank(6, ~0, 0x5000); /* install bank 7 (F000-FFFF) */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xF000, 0xFFFF, 0, 0, MRA8_BANK7); if (via_0_a & 0x09) memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xF000, 0xFFFF, 0, 0, MWA8_ROM); else memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xF000, 0xFFFF, 0, 0, MWA8_BANK7); if (via_0_a & 0x01) memory_set_bankptr(7, memory_region(REGION_CPU1)); else apple3_setbank(7, ~0, 0x7000); /* reinstall VIA handlers */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xFFD0, 0xFFDF, 0, 0, via_0_r); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xFFD0, 0xFFDF, 0, 0, via_0_w); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xFFE0, 0xFFEF, 0, 0, via_1_r); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xFFE0, 0xFFEF, 0, 0, via_1_w); }