mirror of
https://github.com/yourtion/30dayMakeOS.git
synced 2026-02-03 01:53:24 +08:00
36 lines
670 B
C
36 lines
670 B
C
/* 文件相关函数 */
|
|
|
|
#include "bootpack.h"
|
|
|
|
void file_readfat(int *fat, unsigned char *img)
|
|
/*将磁盘映像中的FAT解压缩 */
|
|
{
|
|
int i, j = 0;
|
|
for (i = 0; i < 2880; i += 2) {
|
|
fat[i + 0] = (img[j + 0] | img[j + 1] << 8) & 0xfff;
|
|
fat[i + 1] = (img[j + 1] >> 4 | img[j + 2] << 4) & 0xfff;
|
|
j += 3;
|
|
}
|
|
return;
|
|
}
|
|
|
|
void file_loadfile(int clustno, int size, char *buf, int *fat, char *img)
|
|
{
|
|
int i;
|
|
for (;;) {
|
|
if (size <= 512) {
|
|
for (i = 0; i < size; i++) {
|
|
buf[i] = img[clustno * 512 + i];
|
|
}
|
|
break;
|
|
}
|
|
for (i = 0; i < 512; i++) {
|
|
buf[i] = img[clustno * 512 + i];
|
|
}
|
|
size -= 512;
|
|
buf += 512;
|
|
clustno = fat[clustno];
|
|
}
|
|
return;
|
|
}
|