📄 c.c
字号:
#include <stdio.h>
#include <dos.h>
#include <bios.h>
struct direct {
char name[10];
unsigned char mode;
char reserved[10];
struct stamp {
unsigned int mtime;
unsigned int mdate;
} stamp;
unsigned int first;
unsigned long fsize;
};
struct param {
short int sysid[9];
int bytes_sector;
short int sectors_cluster;
int sectors_reserved;
short int total_fats;
unsigned int root_entries;
int total_sectors;
short int media_descriptor;
int sectors_fat;
int sectors_track;
int number_heads;
int hidden_sectors;
};
struct param *bbp();
main(argc,argv)
int argc;
char **argv;
{
int i, j, retry, strt;
unsigned ch, status = 0;
char buf[512];
void far *pbuf;
struct diskinfo_t info;
struct direct *d;
struct param *p;
memset(buf,'\0', sizeof (buf));
pbuf = (void far *)(&buf[0]);
info.buffer = pbuf;
info.drive = (argc > 1) ? atoi(argv[1]) : 0;
info.head = 0;
info.track = 0;
info.sector = 1;
info.nsectors = 1;
for (retry = 0; retry <= 3; retry++) {
if ((status = _bios_disk(_DISK_READ, &info)) == info.nsectors) {
printf("read OK: sizeof direct=%d\n", sizeof (struct direct));
printf("read OK: sizeof params=%d\n", sizeof (struct param));
/*
d = (struct direct *)buf;
for (i = 0; i < 10; i++) {
printf("[%11.11s] first=%x size=%d\n", d->name, d->first, d->fsize);
++d;
}
*/
p = (struct param *)bbp(pbuf);
printf(" sysid=%8.8s\n", p->sysid);
printf(" bytes_sector=%d\n", p->bytes_sector);
printf(" sectors_cluster=%d\n", p->sectors_cluster);
printf("sectors_reserved=%d\n", p->sectors_reserved);
printf(" total_fats=%d\n", p->total_fats);
printf(" root_entries=%u\n", p->root_entries);
printf(" total_sectors=%d\n", p->total_sectors);
printf("media_descriptor=%x\n", p->media_descriptor);
printf(" sectors_fat=%d\n", p->sectors_fat);
printf(" sectors_track=%d\n", p->sectors_track);
printf(" number_heads=%d\n", p->number_heads);
printf(" hidden_sectors=%d\n", p->hidden_sectors);
exit(0);
}
}
}
struct param *
bbp(p)
char far *p;
{
static struct param d;
strncpy(d.sysid,&p[0x3],8);
d.bytes_sector = (int )p[0xb];
d.sectors_cluster = (short int )p[0xd];
d.sectors_reserved = (int )p[0xe];
d.total_fats = (short int )p[0x10];
d.root_entries = (unsigned int)p[0x11];
d.total_sectors = (int )p[0x13];
d.media_descriptor = (short int )p[0x15];
d.sectors_fat = (int )p[0x16];
d.sectors_track = (int )p[0x18];
d.number_heads = (int )p[0x1a];
d.hidden_sectors = (int )p[0x1c];
return (&d);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -