Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Операционная система MS-DOS / 1-2 Том / 276 / DBSP1A / LIBSRC / FAT
.C/**
*.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);
}