亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fat.c

?? ATMEL 89c51sndc mp3外接硬盤源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    }
  }

  Hard_read_close();

  fat_get_free_clusters(1);
  cluster = fclusters[0].cluster + 2;
  /* Construct the entry */
  gl_buffer[0] = file_name[0];
  gl_buffer[1] = file_name[1];
  gl_buffer[2] = file_name[2];
  gl_buffer[3] = file_name[3];
  gl_buffer[4] = file_name[4];
  gl_buffer[5] = file_name[5];
  gl_buffer[6] = file_name[6];
  gl_buffer[7] = file_name[7];
  gl_buffer[8] = file_name[8];
  gl_buffer[9] = file_name[9];
  gl_buffer[10] = file_name[10];;
  gl_buffer[11] = attribute;                         /* Attribute : archive */
  gl_buffer[12] = 0x00;                         /* Millisecond stamp at time creation */
  gl_buffer[13] = 0x00;                         /* Time */
  gl_buffer[14] = 0x00;
  gl_buffer[15] = 0x00;                         /* Date */
  gl_buffer[16] = 0x00;
  gl_buffer[18] = 0x00;                         /* Last access date */
  gl_buffer[19] = 0x00;
  gl_buffer[20] = ((Byte*)&cluster)[1];         /* High word First cluster number*/
  gl_buffer[21] = ((Byte*)&cluster)[0];
  gl_buffer[22] = 0x00;                         /* Time of last write */
  gl_buffer[23] = 0x00;
  gl_buffer[24] = 0x00;                         /* Date of last write */
  gl_buffer[25] = 0x00;
  gl_buffer[26] = ((Byte*)&cluster)[3];         /* Low word first cluster number */
  gl_buffer[27] = ((Byte*)&cluster)[2];
  gl_buffer[28] = 0x00;                         /* Size */
  gl_buffer[29] = 0x00;
  gl_buffer[30] = 0x00;
  gl_buffer[31] = 0x00;

  fat_dir_current_sect += ((fat_dclust_byte_count % (fat_cluster_size * SECTOR_SIZE))/512);

  fat_up_down_load_sector(fat_dir_current_sect, 0);
  j = (index % 16) * DIR_SIZE ;                 /* Position of entry in the sector */
  for (i = 0; i < DIR_SIZE; i++)
    fat_buf_sector[j++] = gl_buffer[i];

  fat_up_down_load_sector(fat_dir_current_sect, DOWNLOAD);

  fat_dir_list_last++;                          /* Increase max file number */
  fat_dir_list_index = 0;
  
  fat_current_start_entry_position = index;
  fat_current_end_entry_position = index;
  fat_clear_dir_info();
  fat_dir_current_offs = index * 32;
  fat_calc_cluster();
  fat_fetch_file_info(&fat_cache.current, FETCH_NEXT);
  /* open file in write mode */
  fat_fclust_byte_count = 0;                                        /* byte 0 of cluster */
  fat_file_size.l = 0;
  fat_cache.current.size.l = 0;
  fat_fchain_index = 0;                                             /* reset the allocation list variable */
  fat_fchain_nb_clust = 0;                                          /* start on first contiguous cl */
  fat_open_mode = WRITE;
  return Hard_write_open(fat_ptr_data + ((Uint32)(fclusters[0].cluster) 
                                         * fat_cluster_size));
}


/*F**************************************************************************
* NAME: fat_refresh_dir_file_info
*----------------------------------------------------------------------------
* PARAMS:
*    
* return:
*   
*----------------------------------------------------------------------------
* PURPOSE:
*   Reconstruct the file directory list and seek to the file pointed by
*   fat_dir_list_index
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   
*----------------------------------------------------------------------------
* REQUIREMENTS:
*   
*****************************************************************************/
void fat_refresh_dir_file_info (Byte id)
{
  fat_dir_current_sect = (((Uint32)(dclusters[0].cluster)) * fat_cluster_size)
                           + fat_ptr_data;

  fat_get_dir_file_list(id); /* Refresh file list                          */
  fat_seek_entry_record();
}

/*F**************************************************************************
* NAME: fat_clear_fat
*----------------------------------------------------------------------------
* PARAMS:
*    
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Reset FAT clusters value
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void fat_clear_fat (Uint32 start_cluster)
{
Uint16 i;
Uint16 sector_number;
Uint32 cluster;

  /* init the starting cluster value */
  cluster = start_cluster;
  /* Start at first chain cluster */
  sector_number = cluster / 128;
  /* Bufferize fat sector */
  fat_up_down_load_sector(fat_ptr_fats + sector_number, UPLOAD);
  do 
  {
    if ((cluster / 128) != sector_number)
    {
      fat_update_fat_sector(sector_number);
      sector_number =  (Uint32)(cluster / 128);
      fat_up_down_load_sector(fat_ptr_fats + sector_number, UPLOAD);
    }
    i = (cluster * 4) & 0x1FF;
    ((Byte*)&cluster)[3] = fat_buf_sector[i];
    fat_buf_sector[i++] = 0;
    ((Byte*)&cluster)[2] = fat_buf_sector[i];
    fat_buf_sector[i++] = 0;
    ((Byte*)&cluster)[1] = fat_buf_sector[i];
    fat_buf_sector[i++] = 0;
    ((Byte*)&cluster)[0] = fat_buf_sector[i];
    fat_buf_sector[i] = 0;
  }
  while (cluster != 0x0FFFFFFF);
  fat_update_fat_sector(sector_number);
}


/*F**************************************************************************
* NAME: fat_fdelete
*----------------------------------------------------------------------------
* PARAMS:
*    
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Delete a selected file
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   This function works only on a root directory entry
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
Byte fat_fdelete (void)
{
Uint16 i;

  if (fat_check_ext() != FILE_DIR)
  {
    fat_clear_dir_info();
    fat_dir_current_offs = fat_current_start_entry_position * 32;
    fat_calc_cluster();
    fat_up_down_load_sector(fat_dir_current_sect, UPLOAD);
    i = (fat_current_start_entry_position % 16) * 32 ;                /* Position of entry in the sector */

    while (fat_buf_sector[i+11] == ATTR_LFN_ENTRY)
    {
      fat_buf_sector[i] = FILE_DELETED;               /* mark file as deleted */
      i += 32;
      fat_dclust_byte_count += 32;
  
      if (i == SECTOR_SIZE)
      {
        fat_up_down_load_sector(fat_dir_current_sect, DOWNLOAD);
        if  ((((Byte*)&fat_dclust_byte_count)[1] == 0x00) &&                  /* check if we are at the end of a cluster */
            ((((Byte*)&fat_dclust_byte_count)[0] & fat_cluster_mask) == 0x00))
        {
          /* extract if necessary the next cluster from the allocation list */
          if (dclusters[fat_dchain_index].number == fat_dchain_nb_clust)
          { /* new fragment */
            fat_dchain_index++;
            fat_dchain_nb_clust = 1;
            fat_dir_current_sect = (fat_ptr_data + ((Uint32)(dclusters[fat_dchain_index].cluster) * fat_cluster_size));
          }
          else
          {
            fat_dchain_nb_clust++;                          /* one more cluster read */
            fat_dir_current_sect++;                         /* Contiguous cluster    */
          }
        }
        else
        {
          fat_dir_current_sect++;
        }
        fat_up_down_load_sector(fat_dir_current_sect, UPLOAD);
        i = 0;
      }
  
    }
    fat_buf_sector[i] = FILE_DELETED;
    fat_up_down_load_sector(fat_dir_current_sect, DOWNLOAD);
    fat_clear_fat(fat_cache.current.start_cluster);         /* Clear fat cluster */

    fat_dir_list_last--;
    fat_nb_deleted_entries++;
    fat_last_dir_cluster_full = FALSE;
    fat_no_entries_free = FALSE;

    if ( ((dir_is_root == TRUE) && (fat_dir_list_last == 0)) ||     
         ((dir_is_root == FALSE) && (fat_dir_list_last == 2))      /* . and .. directory */
       )
      return DEL_RET_NO_MORE_FILE;

    if (fat_dir_list_index > fat_dir_list_last )
    {
      fat_dir_list_index = fat_dir_list_last;
    }
    return DEL_RET_OK;
  }
  else
  {
    return DEL_RET_ERROR_DIR;
  }
}


/*F**************************************************************************
* NAME: fat_get_free_clusters
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   - OK: allocation done
*   - KO: allocation cannot be done : no free cluster
*----------------------------------------------------------------------------
* PURPOSE:
*   Prepare a list of the free clusters:
*     chain[n].cluster contains the starting cluster number of a fragment
*     chain[n].number contains the number of contiguous clusters in fragment
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   Free cluster list is limited by the nb_frag parameter.
*   If memory is too much fragmented, created file may be limited in size.
*   Last list item always has single cluster
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit fat_get_free_clusters (bit init)
{
#define NB_MAX_SECTOR             5
#define NB_MAX_CLUSTER_AT_INIT    3000
#define NB_MAX_CLUSTER            256
static idata Uint16 fat_sector;
static bit end_disk;
bit       cluster_free;
Byte      i;
Uint16    max_cluster;
Uint16    max_sector = 0;
Uint32    cluster;
Uint32    tot_cluster;

  if (init)
  {
    cluster = 0;
    fat_sector = 0;
    max_cluster = NB_MAX_CLUSTER_AT_INIT;
    last_free_cluster = 0;
    fat_last_clust_index = 0;
    end_disk = FALSE;
  }
  else
  {
    if (!end_disk)
    {
      cluster = last_free_cluster + 1;
      fat_sector = cluster / 128;
      max_cluster = NB_MAX_CLUSTER;
    }
    else
    {
      return KO;
    }
  }
  cluster_free = FALSE;
  tot_cluster = fat_count_of_clusters + 2;
  Hard_read_open(fat_ptr_fats + fat_sector);

  for (i = (cluster % 128); i != 0; i--)            /* dummy reads */
  {
    Hard_read_long_big_endian();
  }

  do                                      /* search for first free cluster */
  {
    if (Hard_read_long_big_endian() == 0x00000000)
    {
      cluster_free = TRUE;
    }
    else
    {
      cluster++;
      if (!(cluster & 0x7F) && (!init))
      {
        max_sector++;
      }
    }
  }
  while ((cluster != tot_cluster) && (!cluster_free) && (max_sector < NB_MAX_SECTOR));
   
  if (cluster == fat_count_of_clusters)
  {
    end_disk = TRUE;
  }

  if (!cluster_free)
  {
    last_free_cluster = cluster - 1;
    Hard_read_close();
    return KO;                            /* no free cluster found */
  }

  if (init)
  {
    fclusters[fat_last_clust_index].number = 1;  
    fclusters[fat_last_clust_index].cluster = cluster - 2;         /* store first cluster */
  }
  else
  {
    if (cluster == last_free_cluster + 1)
    {
     fclusters[fat_last_clust_index].number++;
    }
    else
    {
      fat_last_clust_index++;
      fclusters[fat_last_clust_index].number = 1;
      fclusters[fat_last_clust_index].cluster = cluster - 2;
    }
  }
  cluster++;
  max_cluster--;

  if (cluster != tot_cluster)
  {
    do     

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va韩国va欧美va精品| 蜜臀精品久久久久久蜜臀| 成人性生交大片免费看中文| 欧美国产日本韩| 99re视频精品| 麻豆国产精品官网| 免费在线看成人av| 玉米视频成人免费看| 久久综合精品国产一区二区三区| 色视频成人在线观看免| 国产综合成人久久大片91| 亚洲一二三四区| 日韩免费看的电影| 欧美性色aⅴ视频一区日韩精品| 久久丁香综合五月国产三级网站| 亚洲男人的天堂在线aⅴ视频 | 国产91精品入口| 五月婷婷综合激情| 亚洲欧美自拍偷拍| 久久久久久亚洲综合影院红桃| 欧美日韩一区二区欧美激情| 99久久精品费精品国产一区二区| 91浏览器在线视频| 99久久综合国产精品| 激情文学综合插| av在线播放一区二区三区| 色94色欧美sute亚洲线路一久| 成人av影院在线| 国产成人亚洲精品青草天美| 另类小说一区二区三区| 国产精品一级片在线观看| 九九在线精品视频| 精品一区二区综合| av午夜一区麻豆| 欧美电影在线免费观看| 欧美视频一区二区| 欧美精品一区二区三区很污很色的| 91精品国产91久久综合桃花| 欧美三级日韩三级国产三级| 久久午夜免费电影| 亚洲国产日韩a在线播放| 国产一区二区在线看| 国产精品一区二区果冻传媒| 色综合激情久久| 国产亚洲一二三区| 国产精品久久久久久久久免费相片| 欧美高清一级片在线观看| 亚洲va欧美va国产va天堂影院| 丁香啪啪综合成人亚洲小说| 日韩免费观看2025年上映的电影| 亚洲欧美在线视频观看| 国产在线播放一区三区四| 欧美日韩久久不卡| 欧美一级黄色片| www精品美女久久久tv| 亚洲理论在线观看| 粉嫩欧美一区二区三区高清影视| 欧美一区二区三区免费| 亚洲成人三级小说| 91视频免费观看| 欧美国产一区在线| 国产在线视频精品一区| 欧美精品一二三四| 亚洲午夜久久久久中文字幕久| 成人午夜视频在线| 国产日韩欧美精品电影三级在线| 亚洲天堂a在线| 日本大胆欧美人术艺术动态| 国产成a人亚洲| 精品电影一区二区三区| 久久精品国产久精国产爱| 欧美精品 日韩| 视频一区二区三区在线| 高清av一区二区| 久久久一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 国产酒店精品激情| 欧美xxxx老人做受| 亚洲色图在线播放| 色综合久久久久久久久| 亚洲精品免费播放| 91久久精品一区二区三区| 又紧又大又爽精品一区二区| 在线免费观看日本一区| 久久精品综合网| 成人在线一区二区三区| 国产精品国产自产拍在线| av电影天堂一区二区在线| 一区二区三区精品在线观看| 国产成人在线视频免费播放| 国产性色一区二区| 色视频欧美一区二区三区| 亚洲与欧洲av电影| 日韩一区二区在线观看| 国产精品66部| 亚洲男人的天堂一区二区| 欧美人与z0zoxxxx视频| 久久99最新地址| 国产精品激情偷乱一区二区∴| 欧美性生活一区| 极品少妇xxxx精品少妇偷拍| 国产精品伦理在线| 成人黄色电影在线| 亚洲一区二区黄色| 欧美xxxxx牲另类人与| 成人午夜私人影院| 午夜久久久影院| 国产亚洲成年网址在线观看| 色综合色综合色综合色综合色综合 | 91在线一区二区三区| 婷婷综合在线观看| 亚洲国产激情av| 欧美日韩国产另类一区| 国产成人av电影在线观看| 亚洲午夜国产一区99re久久| 久久女同精品一区二区| 欧美视频一区二| 成人免费视频免费观看| 麻豆精品国产传媒mv男同| 亚洲色图欧洲色图婷婷| 精品福利av导航| 7777精品伊人久久久大香线蕉完整版| 亚洲一区二区中文在线| 久久久久久久久免费| 制服丝袜亚洲网站| 97se亚洲国产综合自在线观| 国产一区二区三区最好精华液| 亚洲夂夂婷婷色拍ww47| 国产精品情趣视频| 日韩亚洲国产中文字幕欧美| 欧美综合一区二区| av激情综合网| 国产精品 日产精品 欧美精品| 免费观看30秒视频久久| 亚洲综合一区在线| 亚洲三级在线播放| 国产欧美精品一区二区色综合| 日韩一区二区电影在线| 欧美日韩电影在线| 日本高清不卡视频| 91亚洲大成网污www| 国产69精品久久久久毛片| 国产在线播放一区三区四| 麻豆免费精品视频| 美女性感视频久久| 日韩主播视频在线| 午夜激情久久久| 亚洲成av人影院在线观看网| 一级精品视频在线观看宜春院 | 69成人精品免费视频| 91黄色免费观看| 91亚洲精品久久久蜜桃网站| 不卡的av电影| 99国产精品久久久久久久久久久| 成人在线视频一区| 成人在线视频首页| 91在线精品秘密一区二区| www.成人在线| 91亚洲精品乱码久久久久久蜜桃| 色婷婷综合五月| 欧美日韩国产天堂| 日韩欧美综合一区| 精品999在线播放| 久久久国产一区二区三区四区小说 | 福利一区在线观看| 成人ar影院免费观看视频| 不卡大黄网站免费看| 99久久久免费精品国产一区二区| 99久久伊人精品| 精品污污网站免费看| 欧美精品aⅴ在线视频| 精品国产一区二区亚洲人成毛片| 久久亚洲捆绑美女| 亚洲欧美综合网| 亚洲va欧美va人人爽| 国产一区二区91| 99在线精品观看| 欧美精品一二三| 久久久精品影视| 亚洲男人的天堂在线观看| 日本不卡免费在线视频| 国产在线麻豆精品观看| 99久久精品国产一区| 欧美二区三区的天堂| 国产欧美一区二区精品性| 亚洲欧美成人一区二区三区| 免费成人av资源网| www.日韩av| 日韩午夜激情av| 亚洲摸摸操操av| 麻豆传媒一区二区三区| 99这里都是精品| 日韩一区二区三区视频| 中文字幕在线一区二区三区| 日日摸夜夜添夜夜添精品视频 | 成人免费看片app下载| 欧美亚洲图片小说| 国产精品日韩成人| 日韩福利电影在线| 91浏览器入口在线观看|