Example #1
0
void roster_page_init(struct roster_page *page)
{
	page->main = gtk_table_new(1 , 2, FALSE);
	page->lineup = lineup_init();
	page->rotation = rotation_init();
	
	gtk_table_attach_defaults(GTK_TABLE(page->main), page->lineup,
								0, 1, 0, 1);
	gtk_table_attach_defaults(GTK_TABLE(page->main), page->rotation,
								1, 2, 0, 1);
}
Example #2
0
void drivesync_set_1571(int new_sync, struct drive_context_s *drv)
{
    unsigned int dnr;

    dnr = drv->mynumber;

    if (rom_loaded) {
        if (drv->drive->byte_ready_active == 0x06)
            rotation_rotate_disk(drv->drive);
        rotation_init(new_sync ? 1 : 0, dnr);
        drv->drive->clock_frequency = (new_sync) ? 2 : 1;
        drivesync_factor(drv);
    }
}
Example #3
0
int drive_set_disk_drive_type(unsigned int type, struct drive_context_s *drv)
{
    unsigned int dnr;
    drive_t *drive;
    drive_t *drive1;

    dnr = drv->mynumber;

    if (machine_drive_rom_check_loaded(type) < 0) {
        return -1;
    }

    drive = drv->drive;
    rotation_rotate_disk(drive);

    drivesync_clock_frequency(type, drive);

    rotation_init(0, dnr);
    drive->type = type;
    if (type == DRIVE_TYPE_2000 || type == DRIVE_TYPE_4000) {
        drivecpu65c02_setup_context(drv, 0);
    } else {
        drivecpu_setup_context(drv, 0);
    }
    drive->side = 0;
    machine_drive_rom_setup_image(dnr);
    drivesync_factor(drv);
    drive_set_active_led_color(type, dnr);

    /* set up (relatively) easy detection of dual drives */
    drive1 = drive_context[mk_drive1(dnr)]->drive;
    drive->drive0 = NULL;
    drive1->drive1 = NULL;
    if (is_drive0(dnr) && drive_check_dual(type)) {
        drive->drive1 = drive1;
        drive1->drive0 = drive;
    } else {
        drive->drive1 = NULL;
        drive1->drive0 = NULL;
    }

    if (type == DRIVE_TYPE_2000 || type == DRIVE_TYPE_4000) {
        drivecpu65c02_init(drv, type);
    } else {
        drivecpu_init(drv, type);
    }

    return 0;
}
Example #4
0
int drive_set_disk_drive_type(unsigned int type, struct drive_context_s *drv)
{
    unsigned int dnr;

    dnr = drv->mynumber;

    if (machine_drive_rom_check_loaded(type) < 0)
        return -1;

    rotation_rotate_disk(drv->drive);

    drivesync_clock_frequency(type, drv->drive);

    rotation_init(0, dnr);
    drv->drive->type = type;
    drv->drive->side = 0;
    machine_drive_rom_setup_image(dnr);
    drivesync_factor(drv);
    drive_set_active_led_color(type, dnr);

    drivecpu_init(drv, type);

    return 0;
}
Example #5
0
/* Initialize the hardware-level drive emulation (should be called at least
   once before anything else).  Return 0 on success, -1 on error.  */
int drive_init(void)
{
    unsigned int dnr;
    drive_t *drive;

    if (rom_loaded) {
        return 0;
    }

    drive_init_was_called = 1;

    driverom_init();
    drive_image_init();

    drive_log = log_open("Drive");

    for (dnr = 0; dnr < DRIVE_NUM; dnr++) {
        char *logname;

        drive = drive_context[dnr]->drive;
        logname = lib_msprintf("Drive %i", dnr + 8);
        drive->log = log_open(logname);
        lib_free(logname);

        drive_clk[dnr] = 0L;
        drive->clk = &drive_clk[dnr];
        drive->mynumber = dnr;
    }

    if (driverom_load_images() < 0) {
        resources_set_int("Drive8Type", DRIVE_TYPE_NONE);
        resources_set_int("Drive9Type", DRIVE_TYPE_NONE);
        resources_set_int("Drive10Type", DRIVE_TYPE_NONE);
        resources_set_int("Drive11Type", DRIVE_TYPE_NONE);
        return -1;
    }

    log_message(drive_log, "Finished loading ROM images.");
    rom_loaded = 1;

    drive_overflow_init();

    for (dnr = 0; dnr < DRIVE_NUM; dnr++) {
        drive = drive_context[dnr]->drive;

        machine_drive_port_default(drive_context[dnr]);

        if (drive_check_type(drive->type, dnr) < 1) {
            resources_set_int_sprintf("Drive%iType", DRIVE_TYPE_NONE, dnr + 8);
        }

        machine_drive_rom_setup_image(dnr);
    }

    for (dnr = 0; dnr < DRIVE_NUM; dnr++) {
        drive = drive_context[dnr]->drive;
        drive->gcr = gcr_create_image();
        drive->p64 = lib_calloc(1, sizeof(TP64Image));
        P64ImageCreate(drive->p64);
        drive->byte_ready_level = 1;
        drive->byte_ready_edge = 1;
        drive->GCR_dirty_track = 0;
        drive->GCR_write_value = 0x55;
        drive->GCR_track_start_ptr = NULL;
        drive->GCR_current_track_size = 0;
        drive->attach_clk = (CLOCK)0;
        drive->detach_clk = (CLOCK)0;
        drive->attach_detach_clk = (CLOCK)0;
        drive->old_led_status = 0;
        drive->old_half_track = 0;
        drive->side = 0;
        drive->GCR_image_loaded = 0;
        drive->P64_image_loaded = 0;
        drive->P64_dirty = 0;
        drive->read_only = 0;
        drive->clock_frequency = 1;
        drive->led_last_change_clk = *(drive->clk);
        drive->led_last_uiupdate_clk = *(drive->clk);
        drive->led_active_ticks = 0;

        rotation_reset(drive);

        /* Position the R/W head on the directory track.  */
        drive_set_half_track(36, 0, drive);
        drive_set_active_led_color(drive->type, dnr);
    }

    for (dnr = 0; dnr < DRIVE_NUM; dnr++) {
        drive = drive_context[dnr]->drive;
        driverom_initialize_traps(drive);

        drivesync_clock_frequency(drive->type, drive);

        rotation_init((drive->clock_frequency == 2) ? 1 : 0, dnr);

        if (drive->type == DRIVE_TYPE_2000 || drive->type == DRIVE_TYPE_4000) {
            drivecpu65c02_init(drive_context[dnr], drive->type);
        } else {
            drivecpu_init(drive_context[dnr], drive->type);
        }

        /* Make sure the sync factor is acknowledged correctly.  */
        drivesync_factor(drive_context[dnr]);

        /* Make sure the traps are moved as needed.  */
        if (drive->enable) {
            drive_enable(drive_context[dnr]);
        }
    }

    return 0;
}
Example #6
0
/* Initialize the hardware-level drive emulation (should be called at least
   once before anything else).  Return 0 on success, -1 on error.  */
int drive_init(void)
{
	unsigned int dnr;
	drive_t *drive;

	if (rom_loaded)
		return 0;

	driverom_init();
	drive_image_init();

	for (dnr = 0; dnr < DRIVE_NUM; dnr++)
	{
		char *logname;

		drive = drive_context[dnr]->drive;
		logname = lib_msprintf("Drive %i", dnr + 8);
		lib_free(logname);

		drive_clk[dnr] = 0L;
		drive->clk = &drive_clk[dnr];
		drive->mynumber = dnr;
	}

	if (driverom_load_images() < 0) {
		resources_set_int("Drive8Type", DRIVE_TYPE_NONE);
		resources_set_int("Drive9Type", DRIVE_TYPE_NONE);
		return -1;
	}

#ifdef CELL_DEBUG
	printf("INFO: Finished loading ROM images.\n");
#endif

	rom_loaded = 1;

	drive_overflow_init();

	for (dnr = 0; dnr < DRIVE_NUM; dnr++) {
		drive = drive_context[dnr]->drive;
		drive->drive_ram_expand2 = NULL;
		drive->drive_ram_expand4 = NULL;
		drive->drive_ram_expand6 = NULL;
		drive->drive_ram_expand8 = NULL;
		drive->drive_ram_expanda = NULL;

		machine_drive_port_default(drive_context[dnr]);

		if (drive_check_type(drive->type, dnr) < 1)
			resources_set_int_sprintf("Drive%iType", DRIVE_TYPE_NONE, dnr + 8);

		machine_drive_rom_setup_image(dnr);
	}

	for (dnr = 0; dnr < DRIVE_NUM; dnr++) {
		drive = drive_context[dnr]->drive;
		drive->gcr = gcr_create_image();
		drive->byte_ready_level = 1;
		drive->byte_ready_edge = 1;
		drive->GCR_dirty_track = 0;
		drive->GCR_write_value = 0x55;
		drive->GCR_track_start_ptr = drive->gcr->data;
		drive->GCR_current_track_size = 0;
		drive->attach_clk = (CLOCK)0;
		drive->detach_clk = (CLOCK)0;
		drive->attach_detach_clk = (CLOCK)0;
		drive->old_led_status = 0;
		drive->old_half_track = 0;
		drive->side = 0;
		drive->GCR_image_loaded = 0;
		drive->read_only = 0;
		drive->clock_frequency = 1;
		drive->led_last_change_clk = *(drive->clk);
		drive->led_last_uiupdate_clk = *(drive->clk);
		drive->led_active_ticks = 0;

		rotation_reset(drive);
		drive_image_init_track_size_d64(drive);

		/* Position the R/W head on the directory track.  */
		drive_set_half_track(36, drive);
		drive_led_color[dnr] = DRIVE_ACTIVE_RED;
	}

	for (dnr = 0; dnr < DRIVE_NUM; dnr++) {
		drive = drive_context[dnr]->drive;
		driverom_initialize_traps(drive);

		drivesync_clock_frequency(drive->type, drive);

		rotation_init((drive->clock_frequency == 2) ? 1 : 0, dnr);

		drivecpu_init(drive_context[dnr], drive->type);

		/* Make sure the sync factor is acknowledged correctly.  */
		drivesync_factor(drive_context[dnr]);

		/* Make sure the traps are moved as needed.  */
		if (drive->enable)
			drive_enable(drive_context[dnr]);
	}

	return 0;
}