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;
}
示例#2
0
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 ] );
    }
}
示例#3
0
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 ] );
  }
}