Example #1
0
static int
zxcf_init( void *context )
{
  int error, i;

  last_memctl = 0x00;
                                
  zxcf_idechn = libspectrum_ide_alloc( LIBSPECTRUM_IDE_DATA16 );

  ui_menu_activate( UI_MENU_ITEM_MEDIA_IDE_ZXCF_EJECT, 0 );

  if( settings_current.zxcf_pri_file ) {
    error = libspectrum_ide_insert( zxcf_idechn, LIBSPECTRUM_IDE_MASTER,
				    settings_current.zxcf_pri_file );
    if( error ) return error;
    ui_menu_activate( UI_MENU_ITEM_MEDIA_IDE_ZXCF_EJECT, 1 );
  }

  module_register( &zxcf_module_info );

  zxcf_memory_source = memory_source_register( "ZXCF" );
  for( i = 0; i < MEMORY_PAGES_IN_16K; i++ )
    zxcf_memory_map_romcs[i].source = zxcf_memory_source;

  periph_register( PERIPH_TYPE_ZXCF, &zxcf_periph );
  periph_register_paging_events( event_type_string, &page_event,
                                 &unpage_event );

  return 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;
}
static int
spectranet_init( void *context )
{
  module_register( &spectranet_module_info );
  spectranet_source = memory_source_register( "Spectranet" );
  periph_register( PERIPH_TYPE_SPECTRANET, &spectranet_periph );
  periph_register_paging_events( event_type_string, &page_event,
				 &unpage_event );

  w5100 = nic_w5100_alloc();
  flash_rom = flash_am29f010_alloc();

  return 0;
}
Example #4
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 ] );
    }
}
static int
usource_init( void *context )
{
  int i;

  module_register( &usource_module_info );

  usource_memory_source = memory_source_register( "uSource" );
  for( i = 0; i < MEMORY_PAGES_IN_8K; i++ )
    usource_memory_map_romcs[i].source = usource_memory_source;

  periph_register( PERIPH_TYPE_USOURCE, &usource_periph );

  return 0;
}
Example #6
0
void
speccyboot_init( void )
{
    int i;

    nic = nic_enc28j60_alloc();

    module_register( &speccyboot_module_info );

    speccyboot_memory_source = memory_source_register( "SpeccyBoot" );
    for( i = 0; i < MEMORY_PAGES_IN_8K; i++ )
        speccyboot_memory_map_romcs[i].source = speccyboot_memory_source;

    periph_register( PERIPH_TYPE_SPECCYBOOT, &speccyboot_periph );
}
static int
speccyboot_init( void *context )
{
  int i;

  nic = nic_enc28j60_alloc();

  module_register( &speccyboot_module_info );

  speccyboot_memory_source = memory_source_register( "SpeccyBoot" );
  for( i = 0; i < MEMORY_PAGES_IN_8K; i++ )
    speccyboot_memory_map_romcs[i].source = speccyboot_memory_source;

  periph_register( PERIPH_TYPE_SPECCYBOOT, &speccyboot_periph );

  periph_register_paging_events( event_type_string, &page_event,
                                 &unpage_event );

  return 0;
}
Example #8
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 ] );
  }
}
/* Set up the information about the normal page mappings.
   Memory contention and usable pages vary from machine to machine and must
   be set in the appropriate _reset function */
static int
memory_init( void *context )
{
  size_t i, j;

  memory_sources = g_array_new( FALSE, FALSE, sizeof( const char* ) );

  memory_source_rom = memory_source_register( "ROM" );
  memory_source_ram = memory_source_register( "RAM" );
  memory_source_dock = memory_source_register( "Timex Dock" );
  memory_source_exrom = memory_source_register( "Timex EXROM" );
  memory_source_any = memory_source_register( "Absolute address" );
  memory_source_none = memory_source_register( "None" );

  /* Nothing in the memory pool as yet */
  pool = NULL;

  for( i = 0; i < SPECTRUM_ROM_PAGES; i++ )
    for( j = 0; j < MEMORY_PAGES_IN_16K; j++ ) {
      memory_page *page = &memory_map_rom[i * MEMORY_PAGES_IN_16K + j];
      page->writable = 0;
      page->contended = 0;
      page->source = memory_source_rom;
    }
    
  for( i = 0; i < SPECTRUM_RAM_PAGES; i++ )
    for( j = 0; j < MEMORY_PAGES_IN_16K; j++ ) {
      memory_page *page = &memory_map_ram[i * MEMORY_PAGES_IN_16K + j];
      page->page = &RAM[i][j * MEMORY_PAGE_SIZE];
      page->page_num = i;
      page->offset = j * MEMORY_PAGE_SIZE;
      page->writable = 1;
      page->source = memory_source_ram;
    }

  module_register( &memory_module_info );

  return 0;
}