コード例 #1
0
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 = &ethernetcart_device;
            if (export_add(&export_res) < 0) {
                return -1;
            }
            ethernetcart_enabled = 1;
            ethernetcart_list_item = io_source_register(&ethernetcart_device);
        }
    }
    return 0;
}
コード例 #2
0
ファイル: ross.c プロジェクト: OpenEmu/VICE-Core
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;
}
コード例 #3
0
static void sidcart_disable(void)
{
    if (sidcart_list_item != NULL) {
        export_remove(&export_res);
        io_source_unregister(sidcart_list_item);
        sidcart_list_item = NULL;
    }
}
コード例 #4
0
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;
}
コード例 #5
0
ファイル: mach5.c プロジェクト: aerdnar/emu-ex-plus-alpha
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;
}
コード例 #6
0
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;
    }
}
コード例 #7
0
ファイル: tfe.c プロジェクト: EdCornejo/emu-ex-plus-alpha
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;
}
コード例 #8
0
ファイル: tfe.c プロジェクト: EdCornejo/emu-ex-plus-alpha
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();
    }
}
コード例 #9
0
ファイル: vic-fp.c プロジェクト: aerdnar/emu-ex-plus-alpha
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;
    }
}
コード例 #10
0
ファイル: ramcart.c プロジェクト: OpenEmu/VICE-Core
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;
}
コード例 #11
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;
}
コード例 #12
0
void magicdesk_detach(void)
{
    export_remove(&export_res);
    io_source_unregister(magicdesk_list_item);
    magicdesk_list_item = NULL;
}
コード例 #13
0
void rex_detach(void)
{
    export_remove(&export_res_rex);
    io_source_unregister(rex_list_item);
    rex_list_item = NULL;
}
コード例 #14
0
void simon_detach(void)
{
    export_remove(&export_res_simon);
    io_source_unregister(simon_list_item);
    simon_list_item = NULL;
}
コード例 #15
0
static void acia1_disable(void)
{
    export_remove(&export_res);
    io_source_unregister(acia_list_item);
    acia_list_item = NULL;
}