void digimax_userport_store(WORD addr, BYTE value) { switch (addr & 0x1f) { case 0: digimax_userport_address = value; break; case 1: if (digimax_cart_enabled() && digimax_is_userport()) { digimax_userport_sound_store(value); } break; case 2: digimax_userport_direction_A = value; break; case 3: digimax_userport_direction_B = value; break; } }
static int set_digimax_enabled(int value, void *param) { int val = value ? 1 : 0; if (!digimax_sound_chip.chip_enabled && val) { if (!digimax_is_userport()) { if (c64export_add(&export_res) < 0) { return -1; } digimax_list_item = io_source_register(&digimax_device); } digimax_sound_chip.chip_enabled = 1; } else if (digimax_sound_chip.chip_enabled && !val) { if (digimax_list_item != NULL) { c64export_remove(&export_res); io_source_unregister(digimax_list_item); digimax_list_item = NULL; } digimax_sound_chip.chip_enabled = 0; } return 0; }