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

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

?? iso9660.c

?? 該源碼是基于atmel公司的89C51SND1C的mp3解決方案
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*C**************************************************************************
* NAME:         iso9660.c
*----------------------------------------------------------------------------
* Copyright (c) 2003 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-refd-nf-4_0_3      
* REVISION:     1.3     
*----------------------------------------------------------------------------
* PURPOSE:
* ISO9660 file-system basics functions
* 
* NOTES:
*   Some variables are shared with fat.c module :
*     data  Uint32 fat_ptr_data
*     data  Uint16 fat_fclust_byte_count
*     idata Uint16 fat_dclust_byte_count
*     idata Uint32 fat_dir_current_sect
*     idata Uint16 fat_dir_list_index
*     xdata char   ext[]
*     xdata Byte   fat_buf_sector[]
*   Global variable :
*     pdata Byte   gl_buffer[]
*
*****************************************************************************/

/*_____ I N C L U D E S ____________________________________________________*/

#include "config.h"                         /* system configuration */
#include "..\mem\hard.h"                    /* low level function definition */
#include "file.h"                           /* file function definition */
#include "iso9660.h"                        /* iso9660 file-system definition */


/*_____ M A C R O S ________________________________________________________*/


/*_____ D E F I N I T I O N ________________________________________________*/

/* shared variables with fat.c module */
extern  data  Uint32 fat_ptr_data;
extern  data  Uint16 fat_fclust_byte_count;
extern  idata Uint16 fat_dclust_byte_count;
extern  idata Uint32 fat_dir_current_sect;
extern  xdata Uint16 fat_dir_list_index;   
extern  xdata char   ext[]; 
extern  xdata Byte   fat_buf_sector[];
extern  pdata Byte   gl_buffer[];
extern  xdata Uint32 fat_dir_start_sect;   
extern  xdata Uint16  fat_dir_list_last;    
extern  xdata Byte current_ext;
extern  idata Uint16  fat_dchain_index;
extern  idata Uint16  fat_fchain_nb_clust;  


extern xdata  Byte    fat_fchain_index_save;         
extern xdata  Byte    fat_fchain_nb_clust_save;
extern xdata  Uint16  fat_fclust_byte_count_save;



#define iso_dir_current_sect      fat_dir_current_sect
#define iso_dir_byte_count        fat_dclust_byte_count
#define iso_f_current_sect        fat_ptr_data
#define iso_current_byte_counter  fat_fclust_byte_count
#define iso_current_dir_file      fat_buf_sector
#define iso_file_index            fat_dir_list_index
#define iso_file_max_index        fat_dir_list_last
#define iso_dir_start_sect        fat_dir_start_sect
#define iso_dir_size              fat_dchain_index

#define iso_f_nb_sector_save      fat_fclust_byte_count_save
#define iso_f_nb_byte_save        fat_fchain_nb_clust


extern  char    pdata *lfn_name;                  /* long filename limited to MAX_FILENAME_LEN chars  */
extern  xdata iso_VolumeDescriptor iso_header;    /* iso header informations                          */
extern  xdata iso_cache  iso_file_cache;          /* cache for the current file                       */
extern  idata Uint16  iso_f_nb_sector;
extern  idata Uint16  iso_f_max_sector;
extern  bdata bit     iso_cd;                     /* if set to one cd is iso else cd is joliet format  */

/*_____ D E C L A R A T I O N ______________________________________________*/
Uint16 iso_dgetw(void);




/*F**************************************************************************
* NAME: fat_install
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   - OK: intallation succeeded
*   - KO: no primary or supplementary volume descriptor found
*         
*----------------------------------------------------------------------------
* PURPOSE:
*   Install the iso file system
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit iso_install(void)
{

  iso_f_current_sect = Hard_iso_read_toc() + 1 + 16;
  iso_cd = 0;

  if (Hard_iso_read_open(iso_f_current_sect) == OK)
  {
    if ((Hard_iso_read_word() & 0xFF) == 0x01)                    /* ISO CD */
    {
      iso_f_current_sect--;
      iso_cd = 1;
    }
    Hard_iso_read_close();
  }
  
  if (iso_read_volume_descriptor(iso_f_current_sect) == OK)   /* read volume descriptor */
    return OK;
  else
    return KO;
}


/*F**************************************************************************
* NAME: iso_read_volume_descriptor
*----------------------------------------------------------------------------
* PARAMS:
*   sector: firt sector of ISO block location
* return:
*   - OK: intallation succeeded
*   - KO: error
*----------------------------------------------------------------------------
* PURPOSE:
*   Read CD volumes descriptors.
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit iso_read_volume_descriptor (Uint32 sector)
{
Byte i;
Uint16 tmp_word;

  /* settting current offset */
  iso_dir_current_sect = sector;
  
  if (Hard_iso_read_open(iso_dir_current_sect) == OK)
  {
    /* Byte 1 - 2 : Volume descriptor type & Standard identifier                          */
    /* Byte 3 - 4 : Standard identifier                                                   */
    /* Byte 5 - 6 : Standard identifier                                                   */
    /* Standard identifier is 'CD001'                                                     */
    tmp_word  = Hard_iso_read_word();
    if ( (((Byte*)&tmp_word)[0] != 0x43) ||   /* check if it is a standard iso cd volume  */
         (Hard_iso_read_word() != 0x3044) ||  /* string 0D                                */
         (Hard_iso_read_word() != 0x3130))    /* string 10                                */
    {
      Hard_iso_read_close();
      return KO;
    }
    
    switch (((Byte*)&tmp_word)[1])
    {
      case TYPE_BOOT_RECORD:                  /* Boot record                              */
      {
        break;
      }

      case TYPE_PRIMARY_VD:                   /* Primary Volume Descriptor or             */
      case TYPE_SUPPLEMENTARY_VD:             /* Supplementary Volume Descriptor          */
      {
        i = 3;
        while (i != 40)
        {
          Hard_iso_read_word();               /* dummy read                               */
          i++;
        }
        
        iso_header.volume_size = Hard_iso_read_word();                /* Byte 81 - 82 */
        iso_header.volume_size += ((Uint32)(Hard_iso_read_word()) << 16);          /* Byte 83 - 84 */
        Hard_iso_read_word();                                         /* Byte 85 - 86 */
        Hard_iso_read_word();                                         /* Byte 87 - 88 */
        i = 44;
        while (i != 64)
        {
          Hard_iso_read_word();               /* dummy read                               */
          i++;
        }
        
        /* Byte 129 - 132 : Logical Block Size - Both byte order                          */
        iso_header.logical_block_size = Hard_iso_read_word();
        Hard_iso_read_word();

        while (i != 76)
        {
          tmp_word = Hard_iso_read_word();    /* dummy read                               */
          i++;
        }
        /* Byte 157 - 190 : Directory record for root directory                           */
        /* Sbyte 1 : Length of directoy record                                            */
        /* Sbyte 2 : Extended attribute record length                                     */ 
        iso_header.root.length = (Hard_iso_read_word() & 0xFF); 
        /* Sbyte 3 - 10 : Location of extent - Both byte order                            */
        iso_header.root.extend_location = Hard_iso_read_word();
        iso_header.root.extend_location += ((Uint32)(Hard_iso_read_word()) << 16);
        Hard_iso_read_word();
        Hard_iso_read_word();
        /* Sbyte 11 - 18 : Data Length - Both Byte order                                  */ 
        iso_header.root.data_length = Hard_iso_read_word();
        iso_header.root.data_length += ((Uint32)(Hard_iso_read_word()) << 16);
        iso_dir_size = iso_header.root.data_length / iso_header.logical_block_size;
        break;
      }
  
      case TYPE_PARTITION_VD:               /* Partition Volume Descriptor                */
      {
        break;
      }
      case TYPE_VOLUME_SET_TERMINATOR:      /* Volume set terminator                      */
      {
        break;
      }

      default:                              /* error                                      */
      {
        return KO;
      }
    }
    Hard_iso_read_close();
    return OK;
  }
  else
    return KO;
}


/*F**************************************************************************
* NAME: iso_fseek
*----------------------------------------------------------------------------
* PARAMS:
*   offset: relative signed seek offset in file
*
* return:
*   seek status:  - OK: seek done
*                 - KO: out of file seek
*----------------------------------------------------------------------------
* PURPOSE:
*   Change file pointer of an openned file
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   Seek is done with byte boundary
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit iso_fseek(Int16 offset)
{
Uint16 i;         /* generic counter */
Uint32 file_pos;

  file_pos = ((iso_f_current_sect - iso_file_cache.info.extend_location) * iso_header.logical_block_size) 
             + (Uint32)(iso_current_byte_counter);

  if ((file_pos + offset) < 0)
    return KO;

  file_pos += offset;

  iso_f_nb_sector = (file_pos / iso_header.logical_block_size);
  iso_f_current_sect = (Uint32)(iso_f_nb_sector) + iso_file_cache.info.extend_location;
  iso_current_byte_counter =  ((Uint16)file_pos % iso_header.logical_block_size);

  Hard_iso_read_close();
  Hard_iso_read_open(iso_f_current_sect);
  for (i = 0; i < iso_current_byte_counter; i++)
  {
    Hard_iso_read_byte();
  }
  return OK;
}



/*F**************************************************************************
* NAME: iso_fseek_abs
*----------------------------------------------------------------------------
* PARAMS:
*   offset: absolute seek offset in file
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Move ahead file read pointer of an openned file
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit iso_fseek_abs(Uint32 offset)
{
Uint16 i;         /* generic counter           */

  iso_f_nb_sector = (Uint16)(offset / iso_header.logical_block_size);
  iso_current_byte_counter = (Uint16)(offset % iso_header.logical_block_size);
  iso_f_current_sect = (Uint32)(iso_f_nb_sector) + iso_file_cache.info.extend_location;
  Hard_iso_read_close();
  Hard_iso_read_open(iso_f_current_sect);
  for (i = 0; i < iso_current_byte_counter; i++)
  {
    Hard_iso_read_byte();
  }
  return OK;
}

/*F**************************************************************************
* NAME: iso_dseek
*----------------------------------------------------------------------------
* PARAMS:
*   offset: offset to current position in signed word value
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Seek from the current position to a new offset computing relative 
*   poisition +/- scan size limited to a 16 bit offset
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/ 
bit iso_dseek(Int16 offset)
{
Uint16 i;         /* generic counter */
Uint32 dir_pos;

  dir_pos = ((iso_dir_current_sect - iso_header.root.extend_location) * iso_header.logical_block_size) 
            + iso_dir_byte_count;
  if ((dir_pos + offset) < 0)
    return KO;

  dir_pos += offset;

  iso_dir_current_sect = (dir_pos / iso_header.logical_block_size) 
                        + iso_header.root.extend_location;
  iso_dir_byte_count = dir_pos % iso_header.logical_block_size;

  Hard_iso_read_close();
  Hard_iso_read_open(iso_dir_current_sect);
  for (i = 0; i < iso_dir_byte_count; i++)
  {
    Hard_iso_read_byte();
  }
  return OK;
}


/*F**************************************************************************
* NAME: iso_get_file_dir
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Give information about the directory :
*     - total number of entries
*----------------------------------------------------------------------------
* EXAMPLE:
*
*----------------------------------------------------------------------------
* NOTE:
*   
*----------------------------------------------------------------------------
* REQUIREMENTS:
*   
*****************************************************************************/
void iso_get_file_dir(void)
{
Byte attributes;
Byte len;
Byte i;
Byte j;
Byte k;
Byte entry_len;
Byte tmp_byte;
Byte byte_to_read;
Byte padding_byte;
Byte entry_rel;
Uint16 tmp_word;
bit no_more_entry;
bit end_of_name;


  no_more_entry = FALSE;
  entry_rel = 0;
  fat_dir_list_index = 0;
  do
  {
    padding_byte = 0;
    do
    {
      tmp_word = iso_dgetw();
      padding_byte++;
      if ((iso_dir_current_sect - iso_dir_start_sect) >= iso_dir_size)
      {
        no_more_entry = TRUE;
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米888四色在线精品| 色婷婷久久一区二区三区麻豆| 91免费在线视频观看| 欧美色综合网站| 国产日韩欧美高清| 麻豆精品新av中文字幕| 久久一日本道色综合| 一区二区三区免费观看| 国产精品一区二区三区网站| 欧美日韩日日摸| 国产精品久久久久一区二区三区| 中文字幕中文字幕一区二区| 成人高清伦理免费影院在线观看| 久久综合久久鬼色中文字| 亚洲欧美激情一区二区| 在线中文字幕不卡| 亚洲综合在线电影| 久久精品国内一区二区三区| 国产精品国产a级| 丁香婷婷综合色啪| 一区二区三区四区在线播放| 欧美精品电影在线播放| 日韩三级伦理片妻子的秘密按摩| 高清国产一区二区| 91视频在线观看| 久久中文娱乐网| 免费av成人在线| 欧美精品v日韩精品v韩国精品v| 亚洲欧洲日韩在线| 成人精品在线视频观看| 2023国产精华国产精品| 蜜臀精品一区二区三区在线观看 | 欧美日韩国产a| 欧美videossexotv100| 国产精品视频一区二区三区不卡| 亚洲成人av资源| 日本精品一级二级| 一区免费观看视频| 成人性生交大片| 久久久久免费观看| 国产福利电影一区二区三区| 精品福利视频一区二区三区| 秋霞电影一区二区| 欧美一级生活片| 日韩av电影天堂| 91精品在线一区二区| 午夜精品成人在线视频| 欧美精品亚洲一区二区在线播放| 亚洲午夜免费电影| 欧美乱妇一区二区三区不卡视频| 亚洲欧美一区二区久久| 91黄视频在线观看| 亚洲综合一区二区| 欧美男人的天堂一二区| 国产麻豆成人传媒免费观看| 精品av久久707| 狠狠色丁香婷综合久久| 欧美一区二区三区在线看 | 国产精品视频观看| 色老头久久综合| 亚洲成a人片在线观看中文| 欧美一区午夜视频在线观看| 天天色图综合网| 日韩欧美成人一区| 国产成人日日夜夜| 成人欧美一区二区三区| 91视频.com| 亚洲亚洲精品在线观看| 欧美乱妇一区二区三区不卡视频 | 国产亚洲人成网站| 成人h精品动漫一区二区三区| 亚洲人成网站精品片在线观看| 处破女av一区二区| 亚洲图片欧美色图| 精品伦理精品一区| 国内精品免费**视频| 一区二区在线免费观看| 日韩一区和二区| 国产盗摄视频一区二区三区| 亚洲影院免费观看| 久久无码av三级| 日本黄色一区二区| 久国产精品韩国三级视频| 国产精品乱人伦中文| 欧美日产在线观看| 韩国成人福利片在线播放| 国产精品沙发午睡系列990531| 91久久线看在观草草青青| 久久超碰97中文字幕| 亚洲天堂成人网| 精品成人一区二区| 欧美乱妇20p| 成人国产一区二区三区精品| 日产国产欧美视频一区精品 | 午夜精品一区二区三区免费视频 | 一本大道久久a久久精品综合| 欧美日韩国产系列| 亚洲男同1069视频| 欧美日韩成人一区二区| 中文字幕在线播放不卡一区| 久久精品免费观看| 日韩精品自拍偷拍| 国产在线不卡视频| 91精品国产高清一区二区三区蜜臀| 亚洲毛片av在线| caoporn国产精品| 国产精品综合一区二区三区| 亚洲最新视频在线播放| 日韩精品一区国产麻豆| 国产不卡视频一区二区三区| 亚洲午夜久久久久久久久电影院 | 国产91丝袜在线播放0| 精品国产一区久久| 99麻豆久久久国产精品免费| 国产精品久久综合| 欧美优质美女网站| 久久99久久99精品免视看婷婷 | 日韩精品乱码免费| 91精品午夜视频| 国产麻豆9l精品三级站| 一区二区三区四区五区视频在线观看| 岛国一区二区三区| 日日摸夜夜添夜夜添国产精品| 久久久精品欧美丰满| 一本大道久久a久久综合婷婷| 美日韩一区二区| 水野朝阳av一区二区三区| 亚洲综合一区二区精品导航| 亚洲欧洲精品一区二区三区 | 国产亚洲欧美日韩俺去了| 麻豆国产精品视频| 美女被吸乳得到大胸91| 在线观看免费亚洲| 亚洲一区在线观看免费观看电影高清| 色哟哟一区二区在线观看| 色综合久久精品| www.视频一区| 99精品久久只有精品| 成人性生交大合| 色综合中文字幕国产 | 国产日韩精品久久久| 欧美大片拔萝卜| 成人v精品蜜桃久久一区| 美女网站色91| 午夜私人影院久久久久| 亚洲成人精品在线观看| 亚洲主播在线观看| 一区二区三区加勒比av| 综合欧美一区二区三区| 亚洲免费资源在线播放| 亚洲精品免费播放| 亚洲高清不卡在线观看| 亚洲午夜国产一区99re久久| 欧美在线观看一区二区| 免费成人在线视频观看| 国产精品女同一区二区三区| 日本一区二区三区高清不卡| 中文字幕一区二| 亚洲大片免费看| 久久97超碰色| 97精品久久久久中文字幕| 在线精品视频一区二区三四| 欧美一区二区精品在线| 视频一区中文字幕国产| 国产一区亚洲一区| 91一区二区在线| 日韩欧美www| 亚洲精品日韩综合观看成人91| 三级在线观看一区二区| 国产精品亚洲一区二区三区妖精| 91麻豆蜜桃一区二区三区| 日韩欧美二区三区| 亚洲精选视频免费看| 激情成人午夜视频| 91麻豆国产自产在线观看| 日韩免费观看高清完整版| 自拍偷自拍亚洲精品播放| 狠狠色综合日日| 91精品国产欧美一区二区| 一区二区三区四区视频精品免费 | 色综合天天天天做夜夜夜夜做| 日韩免费视频一区| 亚洲高清久久久| 欧美色综合久久| 一区二区三区日韩精品视频| 成人激情动漫在线观看| 久久精品亚洲一区二区三区浴池| 日韩专区中文字幕一区二区| 欧美色综合网站| 亚洲国产精品一区二区久久恐怖片 | 精品av综合导航| 日本中文字幕不卡| 欧美日韩一卡二卡三卡| 亚洲综合精品自拍| 欧美性猛片xxxx免费看久爱| 亚洲天堂2016| 在线一区二区三区四区五区| 一区二区视频在线看| 一本久道中文字幕精品亚洲嫩| 亚洲欧洲av一区二区三区久久|