コード例 #1
0
ファイル: wd1770.c プロジェクト: AreaScout/vice
/* Functions using drive context.  */
void wd1770d_init(drive_context_t *drv)
{
    if (wd1770_log == LOG_ERR) {
        wd1770_log = log_open("WD1770");
    }

    drv->wd1770 = lib_calloc(1, sizeof(wd1770_t));
    drv->wd1770->fdd = fdd_init(0, drv->drive);
    drv->wd1770->cpu_clk_ptr = drv->clk_ptr;
    drv->wd1770->is1772 = 0;
    drv->wd1770->clock_frequency = 2;

    clk_guard_add_callback(drv->cpu->clk_guard, clk_overflow_callback,
                           drv->wd1770);
}
コード例 #2
0
ファイル: pc8477.c プロジェクト: Yifei0727/emu-ex-plus-alpha
void pc8477_setup_context(drive_context_t *drv)
{
    int i;
    drv->pc8477 = lib_calloc(1, sizeof(pc8477_t));
    drv->pc8477->myname = lib_msprintf("PC8477_%d", drv->mynumber);
    for (i = 0; i < 4; i++) {
        drv->pc8477->fdds[i].num = i;
        drv->pc8477->fdds[i].fdd = NULL;
        drv->pc8477->fdds[i].motor_on = NULL;
        drv->pc8477->fdds[i].motor_on_data = NULL;
    }
    drv->pc8477->fdds[0].motor_on = (pc8477_motor_on_callback_t)drivesync_set_4000;
    drv->pc8477->fdds[0].motor_on_data = (void *)drv;
    drv->pc8477->fdds[1].fdd = fdd_init(1, drv->drive);
    drv->pc8477->fdds[1].motor_on = (pc8477_motor_on_callback_t)fdd_set_motor;
    drv->pc8477->fdds[1].motor_on_data = (void *)drv->pc8477->fdds[1].fdd;
    drv->pc8477->mycontext = drv;
}
コード例 #3
0
static int
didaktik80_init( void *context )
{
  int i;
  fdd_t *d;

  didaktik_fdc = wd_fdc_alloc_fdc( WD2797, 0, WD_FLAG_DRQ | WD_FLAG_RDY );

  for( i = 0; i < DIDAKTIK80_NUM_DRIVES; i++ ) {
    d = &didaktik_drives[ i ];
    fdd_init( d, FDD_SHUGART, NULL, 0 );       /* drive geometry 'autodetect' */
    d->disk.flag = DISK_FLAG_NONE;
  }

  didaktik_fdc->current_drive = &didaktik_drives[ 0 ];
  fdd_select( &didaktik_drives[ 0 ], 1 );
  didaktik_fdc->extra_signal = 1;
  didaktik_fdc->dden = 1;
  didaktik_fdc->set_intrq = didaktik_set_intrq;
  didaktik_fdc->reset_intrq = NULL;
  didaktik_fdc->set_datarq = didaktik_set_datarq;
  didaktik_fdc->reset_datarq = NULL;

  module_register( &didaktik_module_info );

  didaktik_rom_memory_source = memory_source_register( "Didaktik 80 ROM" );
  didaktik_ram_memory_source = memory_source_register( "Didaktik 80 RAM" );
  for( i = 0; i < MEMORY_PAGES_IN_14K; i++ )
    didaktik_memory_map_romcs_rom[i].source = didaktik_rom_memory_source;

  for( i = 0; i < MEMORY_PAGES_IN_2K; i++ )
    didaktik_memory_map_romcs_ram[i].source = didaktik_ram_memory_source;

  periph_register( PERIPH_TYPE_DIDAKTIK80, &didaktik_periph );
  for( i = 0; i < DIDAKTIK80_NUM_DRIVES; i++ ) {
    didaktik_ui_drives[ i ].fdd = &didaktik_drives[ i ];
    ui_media_drive_register( &didaktik_ui_drives[ i ] );
  }

  periph_register_paging_events( event_type_string, &page_event,
                                 &unpage_event );

  return 0;
}
コード例 #4
0
ファイル: opus.c プロジェクト: jacadym/fuse-emulator
void
opus_init( void )
{
    int i;
    fdd_t *d;

    opus_fdc = wd_fdc_alloc_fdc( WD1770, 0, WD_FLAG_DRQ );

    for( i = 0; i < OPUS_NUM_DRIVES; i++ ) {
        d = &opus_drives[ i ];
        fdd_init( d, FDD_SHUGART, NULL, 0 );	/* drive geometry 'autodetect' */
        d->disk.flag = DISK_FLAG_NONE;
    }

    opus_fdc->current_drive = &opus_drives[ 0 ];
    fdd_select( &opus_drives[ 0 ], 1 );
    opus_fdc->dden = 1;
    opus_fdc->set_intrq = NULL;
    opus_fdc->reset_intrq = NULL;
    opus_fdc->set_datarq = opus_set_datarq;
    opus_fdc->reset_datarq = NULL;

    module_register( &opus_module_info );

    opus_rom_memory_source = memory_source_register( "Opus ROM" );
    opus_ram_memory_source = memory_source_register( "Opus RAM" );
    for( i = 0; i < MEMORY_PAGES_IN_8K; i++ )
        opus_memory_map_romcs_rom[i].source = opus_rom_memory_source;
    for( i = 0; i < MEMORY_PAGES_IN_2K; i++ )
        opus_memory_map_romcs_ram[i].source = opus_ram_memory_source;

    periph_register( PERIPH_TYPE_OPUS, &opus_periph );
    for( i = 0; i < OPUS_NUM_DRIVES; i++ ) {
        opus_ui_drives[ i ].fdd = &opus_drives[ i ];
        ui_media_drive_register( &opus_ui_drives[ i ] );
    }
}
コード例 #5
0
ファイル: plusd.c プロジェクト: jacadym/fuse-emulator
void
plusd_init( void )
{
  int i;
  fdd_t *d;

  plusd_fdc = wd_fdc_alloc_fdc( WD1770, 0, WD_FLAG_NONE );

  for( i = 0; i < PLUSD_NUM_DRIVES; i++ ) {
    d = &plusd_drives[ i ];
    fdd_init( d, FDD_SHUGART, NULL, 0 );
    d->disk.flag = DISK_FLAG_NONE;
  }

  plusd_fdc->current_drive = &plusd_drives[ 0 ];
  fdd_select( &plusd_drives[ 0 ], 1 );
  plusd_fdc->dden = 1;
  plusd_fdc->set_intrq = NULL;
  plusd_fdc->reset_intrq = NULL;
  plusd_fdc->set_datarq = NULL;
  plusd_fdc->reset_datarq = NULL;

  module_register( &plusd_module_info );

  plusd_memory_source = memory_source_register( "PlusD" );
  for( i = 0; i < MEMORY_PAGES_IN_8K; i++ )
    plusd_memory_map_romcs_rom[ i ].source = plusd_memory_source;
  for( i = 0; i < MEMORY_PAGES_IN_8K; i++ )
    plusd_memory_map_romcs_ram[ i ].source = plusd_memory_source;

  periph_register( PERIPH_TYPE_PLUSD, &plusd_periph );

  for( i = 0; i < PLUSD_NUM_DRIVES; i++ ) {
    plusd_ui_drives[ i ].fdd = &plusd_drives[ i ];
    ui_media_drive_register( &plusd_ui_drives[ i ] );
  }
}
コード例 #6
0
ファイル: pc.c プロジェクト: richardg867/PCem-X
void initpc()
{
    char *p;
//        allegro_init();
    get_executable_name(pcempath,511);
    pclog("executable_name = %s\n", pcempath);
    p=get_filename(pcempath);
    *p=0;
    pclog("path = %s\n", pcempath);

    fdd_init();
    keyboard_init();
    mouse_init();
    joystick_init();
    midi_init();

    loadconfig(NULL);
    pclog("Config loaded\n");

    loadfont("mda.rom", 0, cga_fontdat, cga_fontdatm);
    loadfont("roms/pc1512/40078.ic127", 0, pc1512_fontdat, pc1512_fontdatm);
    loadfont("roms/pc200/40109.bin", 0, pc200_fontdat, pc200_fontdatm);

    codegen_init();

    cpuspeed2=(AT)?2:1;
//        cpuspeed2=cpuspeed;
    atfullspeed=0;

    device_init();

    initvideo();
    mem_init();
    loadbios();
    mem_add_bios();

    timer_reset();
    sound_reset();
    fdc_init();
// #ifdef USE_NETWORKING
    vlan_reset();	//NETWORK
    network_card_init(network_card_current);
// #endif

    loaddisc(0,discfns[0]);
    loaddisc(1,discfns[1]);

    //loadfont();
    loadnvr();
    sound_init();
    resetide();
#if __unix
    if (cdrom_drive == -1)
        cdrom_null_open(cdrom_drive);
    else
#endif
        ioctl_open(cdrom_drive);

    pit_reset();
    /*        if (romset==ROM_AMI386 || romset==ROM_AMI486) */fullspeed();
    ali1429_reset();
//        CPUID=(is486 && (cpuspeed==7 || cpuspeed>=9));
//        pclog("Init - CPUID %i %i\n",CPUID,cpuspeed);
    shadowbios=0;

#if __unix
    if (cdrom_drive == -1)
        cdrom_null_reset();
    else
#endif
        ioctl_reset();
}