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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? root.c

?? TI DSP系列讀下CF卡程序,可用做圖象存儲(chǔ)產(chǎn)品的開發(fā)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*
 **************************************************************
 *
 *  hyperstone MS-DOS FAT File System Drivers
 *
 *  FAT and Directory related routines
 *
 *  Christoph Baumhof 2000-03-21
 *  Reinhard K乭ne 2000-03-21
 *  Mihajlo Varga 2000-03-21
 *
 *  Copyright (C) 1997-2000 hyperstone electronics GmbH Konstanz
 *
 *  2000-03-21 initial release
 *
 * $Id$
 *
 * $Log$
 *
 **************************************************************
 *
 * Changes:
 *
 **************************************************************
 */


#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>
#include  <io.h>
#include  "hybios.h"
#include  "hy_dos.h"

extern int _fat12to16(int fatentry, char *);
extern int _fat16to12(int fatentry, char *, unsigned short);

#define   FREE_CLUSTER_CODE     0
#define   RESERVED_CLUSTER_CODE 0xFFF7
#define   BAD_CLUSTER_CODE      0xFFF7
#define   LAST_CLUSTER_CODE     0xFFF8

/*   converts file name into directory entry format

     for example:    "demo.bat" -->     "demo____bat"
                     " demo.s " -->     "demo____s__"
*/

static int  expand_fn8_3(char * destn, const char *srcnam) {
    int i, count_n=0;
    const char * srcn;

    srcn = &srcnam[2];
    while ((*srcn == ' ') || (*srcn == '\t') )
        srcn++;

    while ( (*srcn != ' ') && (*srcn != '.') && (*srcn) && (count_n < 8)) {
        *destn++ = *srcn++;
	count_n++;
    }
    if ((*srcn == ' ') || (!*srcn)) {
	for (i=count_n; i < 11; i++)
           *destn++ = ' ';
	*destn = 0;
	return 0;
    }
    srcn++;
    for (i=count_n; i < 8; i++)
       *destn++ = ' ';
    count_n = 0;
    while ( (*srcn != ' ') && (*srcn) && (count_n < 3)) {
	*destn++ = *srcn++;
	count_n++;
    }
    for (i=count_n; i < 3; i++)
       *destn++ = ' ';
    *destn = 0;
    return 0;
}

static int MaxCluster(int drive, int partnum)
{
struct  msdos_b_sect *b_sect;

  b_sect = _hd_ident[drive].bootptr[partnum];
  return b_sect->MaxCluster;
}

static int ClusterOk(unsigned int drive,
		     unsigned int partnum,
		     unsigned int cluster)
{
  if (cluster < 2)
    {
      fprintf(stderr, "Error: cluster = %d\n", cluster);
      return  0;
    }
  if ((cluster > RESERVED_CLUSTER_CODE) && (cluster < BAD_CLUSTER_CODE))
    {
      fprintf(stderr, "Reserved cluster = %d\n",  cluster);
      return 0;
    }
  if (cluster == BAD_CLUSTER_CODE)
    {
      fprintf(stderr, "Bad cluster = %d\n", cluster);
      return 0;
    }
  if (cluster >= MaxCluster(drive, partnum))
    {
      fprintf(stderr, "cluster out of FAT = %d\n", cluster);
      return 0;
    }
  return 1;
}

static int read_Fat(int drive, int partnum, int cluster_idx)
{
struct  msdos_b_sect *b_sect;
unsigned short *tempbuf;
int FatMode;
char *tempchar;

  b_sect = _hd_ident[drive].bootptr[partnum];
  tempbuf  = b_sect->FatStart;
  tempchar = (unsigned char *)b_sect->FatStart;
  FatMode  = b_sect->FatSystem;

  if (FatMode == 12)
    return _fat12to16(cluster_idx, tempchar);
  if (FatMode == 16)
    return CvtByteOrder16(tempbuf[cluster_idx]);
//  fprintf(stderr, "Bad FatMode = %d\n", FatMode);
  return 0;
}

int ActFatSector = ILLEGAL_FATSECTOR;

int Flush_Fat(int drive, int partnum)
{
struct  msdos_b_sect *b_sect;
int i;

  b_sect = _hd_ident[drive].bootptr[partnum];
  if (ActFatSector != ILLEGAL_FATSECTOR)
    for (i=0; i<b_sect->nFats; i++)
      r_w_Disk(drive, b_sect->nHidden+b_sect->resSectors+ActFatSector+
	i*b_sect->sectPerFat,
	1, b_sect->FatStart+(ActFatSector*SECTOR_SHORTS), WRITE);
  ActFatSector = ILLEGAL_FATSECTOR;
}

static int write_Fat(unsigned int drive, unsigned int partnum,
		     unsigned int cluster_idx, unsigned int pattern)
{
struct  msdos_b_sect *b_sect;
unsigned short *tempbuf;
int FatMode, NewFatSector;
char *tempchar;

  b_sect = _hd_ident[drive].bootptr[partnum];
  tempbuf  = b_sect->FatStart;
  tempchar = (unsigned char *)b_sect->FatStart;
  FatMode  = b_sect->FatSystem;

  if (FatMode == 12)
    {
      _fat16to12(cluster_idx, tempchar, pattern);
      NewFatSector = (cluster_idx*3)/FAT12_ENTRIES_FOR_3SECS;
      if ((cluster_idx*3)%FAT12_ENTRIES_FOR_3SECS >= (FAT12_ENTRIES_FOR_3SECS-2))
	{
	  if ((ActFatSector != ILLEGAL_FATSECTOR) &&
	      (ActFatSector != NewFatSector))
	    Flush_Fat(drive, partnum);
	  ActFatSector = NewFatSector;
	  NewFatSector++;
	}
      if ((ActFatSector != ILLEGAL_FATSECTOR) &&
	  (ActFatSector != NewFatSector))
	Flush_Fat(drive, partnum);
      ActFatSector = NewFatSector;
      return 1;
    }
  if (FatMode == 16)
    {
      tempbuf[cluster_idx] = CvtByteOrder16(pattern);
      NewFatSector = cluster_idx/FAT16_ENTRIES;
      if ((ActFatSector != ILLEGAL_FATSECTOR) &&
	  (ActFatSector != NewFatSector))
	Flush_Fat(drive, partnum);
      ActFatSector = NewFatSector;
      return 1;
    }
//  fprintf(stderr, "Bad FatMode = %d\n", FatMode);
  return 0;
}

/**********************************************************/
/*  delete all Fatentries of a file (unlink)              */
/**********************************************************/

int delete_FatEntrys(int drive, int partnum, int startCluster)
{
unsigned short tmp, cluster;

  cluster  = startCluster;
  do
    {
      if (!ClusterOk(drive, partnum, cluster))
	return 0;
      tmp = read_Fat(drive, partnum, cluster);
      if (!write_Fat(drive, partnum, cluster, 0))
	return 0;
      cluster = tmp;
    }
  while (cluster < LAST_CLUSTER_CODE);
  return 1;
}

int LastClusterFound = 1;

#if 0
static int find_free_FatEntry(int drive, int partnum)
{
int cluster;

  cluster = 2;
  while (read_Fat(drive, partnum, cluster) != FREE_CLUSTER_CODE)
    {
      cluster++;
      if (cluster >= MaxCluster(drive, partnum))
	return 0;
    }
  return cluster;
}
#else
static int find_free_FatEntry(int drive, int partnum)
{
int cluster;

  for (cluster=LastClusterFound+1;
       cluster<MaxCluster(drive, partnum) &&
       read_Fat(drive, partnum, cluster)!=FREE_CLUSTER_CODE;
       cluster++);
  if (cluster<MaxCluster(drive, partnum))
    {
      LastClusterFound = cluster;
      return cluster;
    }
  for (cluster=2; cluster<=LastClusterFound &&
       cluster<MaxCluster(drive, partnum) &&
       read_Fat(drive, partnum, cluster)!=FREE_CLUSTER_CODE;
       cluster++);
  LastClusterFound = cluster;
  return (cluster<=LastClusterFound && cluster<MaxCluster(drive, partnum))?
    cluster:0;
}
#endif

static int insert_FatEntry (int drive, int partnum,
			    int old_cluster_idx, int new_cluster_idx)
{
  if (old_cluster_idx)
    {
      if (!write_Fat(drive, partnum, old_cluster_idx, new_cluster_idx))
	return 0;
    }
  return write_Fat(drive, partnum, new_cluster_idx, LAST_CLUSTER_CODE);
}

static int appendFatEntry (int drive, int partnum, int cluster_idx)
{
int free_cluster_idx;

  free_cluster_idx = find_free_FatEntry(drive, partnum);
  if (free_cluster_idx)
    {
      if (cluster_idx)
	{
	  if (!write_Fat(drive, partnum, cluster_idx, free_cluster_idx))
	    return 0;
	}
      if (!write_Fat(drive, partnum, free_cluster_idx, LAST_CLUSTER_CODE))
	return 0;
      return free_cluster_idx;
    }
  return 0;
}

#if 0
/**********************************************************/
/*          returns count of true read/written Cluster    */
/**********************************************************/
int r_w_Cluster(unsigned int drive, unsigned int partnum,
		unsigned int startCluster, void *buf,
		unsigned int ClusterCnt, unsigned int ClusterOffs, int rw)
{
struct  msdos_b_sect *b_sect;
unsigned int FatMode, i;

  b_sect = _hd_ident[drive].bootptr[partnum];
  FatMode = b_sect->FatSystem;
  if ((FatMode == 12)  || (FatMode == 16))
    {
      unsigned int SectorNumber, j, PreviousCluster;
      char *xbuf = (char *)buf;

      if ((ClusterCnt == 0) || (!ClusterOk(drive, partnum, startCluster)))
	return 0;
      PreviousCluster = 0;
      while ((startCluster < LAST_CLUSTER_CODE) && ClusterOffs)
	{
//	  if (!ClusterOk(drive, partnum, startCluster))
//	    return 0;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲人成人精品| 欧美一区二区不卡视频| 日韩在线一二三区| 久久久美女艺术照精彩视频福利播放| 91色乱码一区二区三区| 精品一区二区av| 亚洲国产精品久久人人爱| 国产日本亚洲高清| 亚洲精品日韩一| 国产亚洲精品aa| 日韩精品一区二| 911精品产国品一二三产区 | 国产精品18久久久久久久久久久久| 亚洲综合成人网| 中文字幕在线观看不卡视频| 精品国产一区二区在线观看| 欧美精品在线一区二区| 色婷婷精品久久二区二区蜜臀av| 国产精品一区一区三区| 久久精品国产一区二区三 | 欧美日韩国产三级| 色综合久久综合网欧美综合网| 国产成人综合亚洲91猫咪| 久久精品久久精品| 麻豆精品国产传媒mv男同| 婷婷六月综合网| 亚洲一线二线三线视频| 亚洲精品国产视频| 国产精品三级av| 中文字幕成人网| 日本一区二区免费在线观看视频 | 久久久91精品国产一区二区三区| 91精品欧美一区二区三区综合在| 欧美性受xxxx黑人xyx性爽| 色国产综合视频| 91理论电影在线观看| 波多野结衣视频一区| 99久久夜色精品国产网站| 成人午夜在线免费| 成人精品免费看| fc2成人免费人成在线观看播放| 国产成人精品三级| 成人免费黄色大片| 99久久精品免费观看| 色综合夜色一区| 欧美午夜电影网| 欧美精品黑人性xxxx| 欧美一级日韩一级| 精品粉嫩超白一线天av| 久久精品亚洲麻豆av一区二区 | 国产又粗又猛又爽又黄91精品| 久久疯狂做爰流白浆xx| 日韩一区二区三区电影| 精品国产三级a在线观看| 国产欧美精品在线观看| 综合激情成人伊人| 午夜精品久久一牛影视| 看电视剧不卡顿的网站| 国产91综合网| 在线精品视频免费播放| 制服丝袜一区二区三区| 精品国产一区二区三区忘忧草| 国产喷白浆一区二区三区| 亚洲天堂中文字幕| 午夜久久久影院| 国产中文一区二区三区| 97国产精品videossex| 欧美日本韩国一区| 久久久精品tv| 亚洲一区在线看| 国产在线精品免费| 不卡一二三区首页| 欧美精品99久久久**| 国产校园另类小说区| 夜夜亚洲天天久久| 久久精品二区亚洲w码| 91丨九色porny丨蝌蚪| 欧美一卡2卡三卡4卡5免费| 欧美激情中文字幕一区二区| 亚洲午夜av在线| 国产成人自拍在线| 欧美精品久久一区| 中文字幕人成不卡一区| 日本一区中文字幕 | 91精品国产免费| 国产午夜久久久久| 五月婷婷久久丁香| 不卡高清视频专区| 欧美一区二区美女| 亚洲欧美日韩国产一区二区三区 | 日韩一区二区免费视频| 亚洲天堂成人在线观看| 精品一区二区影视| 91视频免费观看| wwww国产精品欧美| 亚洲成在人线免费| 成人晚上爱看视频| 欧美美女激情18p| 中文字幕在线观看不卡视频| 免费看精品久久片| 在线精品视频一区二区三四| 欧美激情一区二区三区蜜桃视频 | 亚洲成人综合在线| 成人免费看片app下载| 日韩你懂的在线播放| 亚洲综合在线观看视频| 国产成人99久久亚洲综合精品| 欧美一区二区视频网站| 亚洲精品日日夜夜| av男人天堂一区| 国产日韩一级二级三级| 麻豆91在线观看| 3atv在线一区二区三区| 一区二区免费在线| 99久久婷婷国产综合精品电影| 久久精品国产第一区二区三区| 欧美日韩精品系列| 亚洲一区精品在线| 91日韩一区二区三区| 国产精品久久国产精麻豆99网站| 国产一区二区不卡| 精品国产三级电影在线观看| 麻豆成人在线观看| 日韩欧美成人激情| 青青草国产精品亚洲专区无| 欧美日韩国产在线观看| 亚洲va韩国va欧美va| 欧美日免费三级在线| 亚洲综合无码一区二区| 91久久精品一区二区三区| 亚洲日本免费电影| 色综合天天天天做夜夜夜夜做| 国产精品麻豆视频| 99精品偷自拍| 亚洲欧美色一区| 在线免费观看日韩欧美| 亚洲一区二区精品久久av| 欧美又粗又大又爽| 性感美女极品91精品| 欧美日韩不卡一区| 男男gaygay亚洲| 欧美va亚洲va在线观看蝴蝶网| 美脚の诱脚舐め脚责91| 精品1区2区在线观看| 国产一区二区三区在线观看免费视频 | 久久久99免费| 岛国一区二区三区| 亚洲欧美激情在线| 欧美日韩国产免费一区二区 | 秋霞影院一区二区| 26uuu久久综合| 成人性生交大片| 亚洲自拍另类综合| 欧美一卡二卡在线观看| 国产精品羞羞答答xxdd| 亚洲色图欧美偷拍| 欧美高清视频www夜色资源网| 久久99久久精品| 国产精品免费丝袜| 欧日韩精品视频| 久久精品久久综合| 国产精品的网站| 91黄视频在线观看| 日本欧美一区二区三区| 欧美国产丝袜视频| 在线区一区二视频| 精品制服美女久久| 自拍偷在线精品自拍偷无码专区 | 国产日韩精品一区二区三区| 91浏览器打开| 另类欧美日韩国产在线| 成人免费一区二区三区在线观看| 欧美三级电影一区| 国产精品白丝jk黑袜喷水| av午夜一区麻豆| 日本vs亚洲vs韩国一区三区二区 | 久久99精品国产.久久久久| 欧美激情一区二区三区四区| 欧美人xxxx| 风间由美性色一区二区三区| 亚洲国产精品欧美一二99| 欧美电影免费观看高清完整版在线| 成年人网站91| 捆绑调教一区二区三区| 亚洲精品国产无天堂网2021| 欧美mv和日韩mv国产网站| 一本久久精品一区二区| 久久精品国产99| 亚洲一区二区三区四区在线免费观看 | 国产精品久久久久精k8| 欧美另类高清zo欧美| 成人国产亚洲欧美成人综合网| 日韩不卡免费视频| 亚洲精品乱码久久久久久| 久久久国产精品不卡| 欧美一区二区三区在线视频| 色综合久久中文字幕综合网| 国产风韵犹存在线视精品| 日本中文字幕一区二区有限公司| 亚洲乱码中文字幕综合|