Exemplo n.º 1
0
static void
opus_reset( int hard_reset )
{
    int i;

    opus_active = 0;
    opus_available = 0;

    if( !periph_is_active( PERIPH_TYPE_OPUS ) ) {
        return;
    }

    if( machine_load_rom_bank( opus_memory_map_romcs_rom, 0,
                               settings_current.rom_opus,
                               settings_default.rom_opus, 0x2000 ) ) {
        settings_current.opus = 0;
        periph_activate_type( PERIPH_TYPE_OPUS, 0 );
        return;
    }

    for( i = 0; i < MEMORY_PAGES_IN_2K; i++ ) {
        struct memory_page *page =
                &opus_memory_map_romcs_ram[ i ];
        page->page = opus_ram + i * MEMORY_PAGE_SIZE;
        page->offset = i * MEMORY_PAGE_SIZE;
    }

    machine_current->ram.romcs = 0;

    for( i = 0; i < MEMORY_PAGES_IN_2K; i++ )
        opus_memory_map_romcs_ram[ i ].writable = 1;

    data_reg_a = 0;
    data_dir_a = 0;
    control_a  = 0;
    data_reg_b = 0;
    data_dir_b = 0;
    control_b  = 0;

    opus_available = 1;

    if( hard_reset )
        memset( opus_ram, 0, sizeof( opus_ram ) );

    wd_fdc_master_reset( opus_fdc );

    for( i = 0; i < OPUS_NUM_DRIVES; i++ ) {
        ui_media_drive_update_menus( &opus_ui_drives[ i ],
                                     UI_MEDIA_DRIVE_UPDATE_ALL );
    }

    opus_fdc->current_drive = &opus_drives[ 0 ];
    fdd_select( &opus_drives[ 0 ], 1 );
    machine_current->memory_map();

    ui_statusbar_update( UI_STATUSBAR_ITEM_DISK, UI_STATUSBAR_STATE_INACTIVE );
}
Exemplo n.º 2
0
static void
didaktik_reset( int hard_reset )
{
  int i;

  didaktik80_active = 0;
  didaktik80_available = 0;

  ui_menu_activate( UI_MENU_ITEM_MACHINE_DIDAKTIK80_SNAP, 0 );
  if( !periph_is_active( PERIPH_TYPE_DIDAKTIK80 ) ) {
    return;
  }

  if( machine_load_rom_bank( didaktik_memory_map_romcs_rom, 0,
                             settings_current.rom_didaktik80,
                             settings_default.rom_didaktik80, ROM_SIZE ) ) {
    settings_current.didaktik80 = 0;
    periph_activate_type( PERIPH_TYPE_DIDAKTIK80, 0 );
    return;
  }

  ui_menu_activate( UI_MENU_ITEM_MACHINE_DIDAKTIK80_SNAP, 1 );

  for( i = 0; i < MEMORY_PAGES_IN_2K; i++ ) {
    struct memory_page *page =
      &didaktik_memory_map_romcs_ram[ i ];
    page->page = ram + i * MEMORY_PAGE_SIZE;
    page->offset = i * MEMORY_PAGE_SIZE;
    page->writable = 1;
  }

  machine_current->ram.romcs = 0;

  aux_register = 0;

  didaktik80_available = 1;

  if( hard_reset )
    memset( ram, 0, sizeof( ram ) );

  wd_fdc_master_reset( didaktik_fdc );

  for( i = 0; i < DIDAKTIK80_NUM_DRIVES; i++ ) {
    ui_media_drive_update_menus( &didaktik_ui_drives[ i ],
                                 UI_MEDIA_DRIVE_UPDATE_ALL );
  }

  didaktik_fdc->current_drive = &didaktik_drives[ 0 ];
  fdd_select( &didaktik_drives[ 0 ], 1 );
  fdd_select( &didaktik_drives[ 1 ], 0 );
  machine_current->memory_map();

}
Exemplo n.º 3
0
static void
plusd_reset( int hard_reset )
{
  int i;

  plusd_active = 0;
  plusd_available = 0;

  if( !periph_is_active( PERIPH_TYPE_PLUSD ) ) {
    return;
  }

  if( machine_load_rom_bank( plusd_memory_map_romcs_rom, 0,
			     settings_current.rom_plusd,
			     settings_default.rom_plusd, 0x2000 ) ) {
    settings_current.plusd = 0;
    periph_activate_type( PERIPH_TYPE_PLUSD, 0 );
    return;
  }

  machine_current->ram.romcs = 0;

  for( i = 0; i < MEMORY_PAGES_IN_8K; i++ ) {
    plusd_memory_map_romcs_ram[ i ].page = &plusd_ram[ i * MEMORY_PAGE_SIZE ];
    plusd_memory_map_romcs_ram[ i ].writable = 1;
  }

  plusd_available = 1;
  plusd_active = 1;

  if( hard_reset )
    memset( plusd_ram, 0, 0x2000 );

  wd_fdc_master_reset( plusd_fdc );

  for( i = 0; i < PLUSD_NUM_DRIVES; i++ ) {
    ui_media_drive_update_menus( &plusd_ui_drives[ i ],
                                 UI_MEDIA_DRIVE_UPDATE_ALL );
  }

  plusd_fdc->current_drive = &plusd_drives[ 0 ];
  fdd_select( &plusd_drives[ 0 ], 1 );
  machine_current->memory_map();

  ui_statusbar_update( UI_STATUSBAR_ITEM_DISK, UI_STATUSBAR_STATE_INACTIVE );
}