static int set_ethernetcart_enabled(int value, void *param) { int val = value ? 1 : 0; if (!val) { /* Ethernet Cart should be deactived */ if (ethernetcart_enabled) { ethernetcart_enabled = 0; if (ethernetcart_deactivate() < 0) { return -1; } io_source_unregister(ethernetcart_list_item); ethernetcart_list_item = NULL; export_remove(&export_res); } } else { if (!ethernetcart_enabled) { if (ethernetcart_activate() < 0) { return -1; } export_res.io1 = ðernetcart_device; if (export_add(&export_res) < 0) { return -1; } ethernetcart_enabled = 1; ethernetcart_list_item = io_source_register(ðernetcart_device); } } return 0; }
void ross_detach(void) { export_remove(&export_res); io_source_unregister(ross_io1_list_item); io_source_unregister(ross_io2_list_item); ross_io1_list_item = NULL; ross_io2_list_item = NULL; }
static void sidcart_disable(void) { if (sidcart_list_item != NULL) { export_remove(&export_res); io_source_unregister(sidcart_list_item); sidcart_list_item = NULL; } }
void freezemachine_detach(void) { export_remove(&export_res); io_source_unregister(freezemachine_io1_list_item); io_source_unregister(freezemachine_io2_list_item); freezemachine_io1_list_item = NULL; freezemachine_io2_list_item = NULL; }
void mach5_detach(void) { export_remove(&export_res); io_source_unregister(mach5_io1_list_item); io_source_unregister(mach5_io2_list_item); mach5_io1_list_item = NULL; mach5_io2_list_item = NULL; }
void behrbonz_detach(void) { mem_cart_blocks = 0; mem_initialize_memory(); lib_free(cart_rom); cart_rom = NULL; export_remove(&export_res); if (behrbonz_io3_list_item != NULL) { io_source_unregister(behrbonz_io3_list_item); behrbonz_io3_list_item = NULL; } }
static int set_tfe_enabled(int value, void *param) { int val = value ? 1 : 0; if (!tfe_cannot_use) { if (!val) { /* TFE should be deactived */ if (tfe_enabled) { tfe_enabled = 0; if (tfe_deactivate() < 0) { DBG(("TFE: set disabled: error\n")); return -1; } io_source_unregister(tfe_list_item); tfe_list_item = NULL; export_remove(&export_res); } tfe_clockport_changed(); return 0; } else { if (!tfe_enabled) { tfe_enabled = 1; if (tfe_activate() < 0) { return -1; } export_res.io1 = tfe_current_device; if (export_add(&export_res) < 0) { DBG(("TFE: set enabled: error\n")); tfe_list_item = NULL; tfe_enabled = 0; return -1; } if (machine_class == VICE_MACHINE_VIC20) { /* set correct addresses for masC=uerade */ if (tfe_io_swap) { tfe_current_device->start_address = 0x9c00; tfe_current_device->end_address = 0x9fff; } else { tfe_current_device->start_address = 0x9800; tfe_current_device->end_address = 0x9bff; } } tfe_list_item = io_source_register(tfe_current_device); } tfe_clockport_changed(); return 0; } } return 0; }
void tfe_clockport_changed(void) { if (!tfe_as_rr_net) { tfe_current_device = &tfe_io1_device; } else { tfe_current_device = &rrnet_io1_device; if (mmc64_cart_enabled() && (mmc64_hw_clockport == 0xde02) && mmc64_clockport_enabled) { tfe_current_device = &rrnet_io1_mmc64_device; } if (mmc64_cart_enabled() && (mmc64_hw_clockport == 0xdf12) && mmc64_clockport_enabled) { tfe_current_device = &rrnet_io2_mmc64_device; } if (retroreplay_cart_enabled() && rr_clockport_enabled) { tfe_current_device = &rrnet_io1_retroreplay_device; } if (mmcreplay_cart_enabled() && mmcr_clockport_enabled) { tfe_current_device = &rrnet_io1_mmcreplay_device; } if (rrnetmk3_cart_enabled()) { tfe_current_device = &rrnet_io1_mk3_device; } } /* if adapter is already enabled then reset the LAN chip */ if (tfe_enabled) { io_source_unregister(tfe_list_item); export_remove(&export_res); export_res.io1 = tfe_current_device; if (export_add(&export_res) < 0) { DBG(("TFE: set tfe_clockport_changed: error\n")); tfe_list_item = NULL; tfe_enabled = 0; return; } if (machine_class == VICE_MACHINE_VIC20) { /* set correct addresses for masC=uerade */ if (tfe_io_swap) { tfe_current_device->start_address = 0x9c00; tfe_current_device->end_address = 0x9fff; } else { tfe_current_device->start_address = 0x9800; tfe_current_device->end_address = 0x9bff; } } tfe_list_item = io_source_register(tfe_current_device); tfe_reset(); } }
void vic_fp_detach(void) { /* try to write back cartridge contents if write back is enabled and cartridge wasn't from a snapshot */ if (vic_fp_writeback && !cartridge_is_from_snapshot) { if (flash_state.flash_dirty) { int n; FILE *fd; n = 0; log_message(fp_log, "Flash dirty, trying to write back..."); fd = fopen(cartfile, "wb"); if (fd) { n = fwrite(flash_state.flash_data, (size_t)CART_ROM_SIZE, 1, fd); fclose(fd); } if (n < 1) { log_message(fp_log, "Failed to write back image `%s'!", cartfile); } else { log_message(fp_log, "Wrote back image `%s'.", cartfile); } } else { log_message(fp_log, "Flash clean, skipping write back."); } } mem_cart_blocks = 0; mem_initialize_memory(); lib_free(cart_ram); lib_free(cart_rom); lib_free(cartfile); cart_ram = NULL; cart_rom = NULL; cartfile = NULL; if (vfp_list_item != NULL) { export_remove(&export_res); io_source_unregister(vfp_list_item); vfp_list_item = NULL; } }
static int set_ramcart_enabled(int value, void *param) { int val = value ? 1 : 0; if (!ramcart_enabled && val) { cart_power_off(); if (ramcart_activate() < 0) { return -1; } if (export_add(&export_res) < 0) { return -1; } ramcart_io1_list_item = io_source_register(&ramcart_io1_device); ramcart_io2_list_item = io_source_register(&ramcart_io2_device); ramcart_enabled = 1; if (machine_class == VICE_MACHINE_C128) { ramcart_exrom_check(); } else { cart_set_port_exrom_slot1(1); cart_port_config_changed_slot1(); } } else if (ramcart_enabled && !val) { cart_power_off(); if (ramcart_deactivate() < 0) { return -1; } io_source_unregister(ramcart_io1_list_item); io_source_unregister(ramcart_io2_list_item); ramcart_io1_list_item = NULL; ramcart_io2_list_item = NULL; export_remove(&export_res); ramcart_enabled = 0; if (machine_class == VICE_MACHINE_C128) { ramcart_exrom_check(); } else { cart_set_port_exrom_slot1(0); cart_port_config_changed_slot1(); } } return 0; }
static int set_ieee488_enabled(int value, void *param) { int val = value ? 1 : 0; if (!ieee488_enabled && val) { if (export_add(&export_res) < 0) { return -1; } ieee488_list_item = io_source_register(&ieee488_device); ieee488_enabled = 1; } else if (ieee488_enabled && !val) { export_remove(&export_res); io_source_unregister(ieee488_list_item); ieee488_list_item = NULL; ieee488_enabled = 0; } ui_update_menus(); return 0; }
void magicdesk_detach(void) { export_remove(&export_res); io_source_unregister(magicdesk_list_item); magicdesk_list_item = NULL; }
void rex_detach(void) { export_remove(&export_res_rex); io_source_unregister(rex_list_item); rex_list_item = NULL; }
void simon_detach(void) { export_remove(&export_res_simon); io_source_unregister(simon_list_item); simon_list_item = NULL; }
static void acia1_disable(void) { export_remove(&export_res); io_source_unregister(acia_list_item); acia_list_item = NULL; }