Скачиваний:
40
Добавлен:
01.05.2014
Размер:
1.24 Кб
Скачать
/**
*.Name      fat
*
*.Title     ‚лЎа вм н«Ґ¬Ґ­в Ё§ FAT
*
*.Descr     ”г­ЄжЁп ўлЎЁа Ґв н«Ґ¬Ґ­в б § ¤ ­­л¬ ­®¬Ґа®¬ Ё§ в Ў«Ёжл
*           а §¬ҐйҐ­Ёп д ©«®ў FAT. ”®а¬ в FAT ЇҐаҐ¤ Ґвбп
*           дг­ЄжЁЁ Є Є Ї а ¬Ґва.
*
*.Proto     int fat(b_fat, t_fat, idx);
*
*.Params    char _far *b_fat  - ЎгдҐа, ᮤҐа¦ йЁ© FAT
*
*           int t_fat         - д®а¬ в FAT, ¬®¦Ґв Ўлвм
*                               а ўҐ­ 12 Ё«Ё 16
*
*           int idx           - ­®¬Ґа н«Ґ¬Ґ­в  FAT, Є®в®ал©
*                               ¤®«¦Ґ­ Ўлвм ўлЎа ­
*
*.Return    ‘®¤Ґа¦Ё¬®Ґ п祩ЄЁ FAT б гЄ § ­­л¬ ­®¬Ґа®¬
*
*.Sample    dirlist.c
**/

#include <stdio.h>
#include <stdlib.h>
#include "sysp.h"

int fat(char _far *b_fat, int t_fat, int idx) {

  div_t clust_nu ;
  int cluster;

  if(t_fat == 12) {

		/*  FAT -  12  */

	  clust_nu = div(idx * 3, 2);

	  if( clust_nu.rem != 0 )

			cluster = (*((int*)(b_fat + clust_nu.quot)) >> 4) & 0xfff;

	  else

			cluster = *((int*)(b_fat + clust_nu.quot)) & 0xfff;
  }

  else if(t_fat == 16) {

		/*  FAT - 16  */

	  cluster = *((int*)(b_fat + idx * 2));
  }

  else {
		printf("*FAT()* FAT format error\n");
		exit(-100);
  }

  return(cluster);
}
Соседние файлы в папке LIBSRC