c语言中bios函数,c语言中dos.h和bios.h中有哪些库函数?具体的
函数名: biosdisk功能: 软硬盘I/O用法: int biosdisk(int cmd, int drive, int head, int track, int sectorint nsects, void *buffer);本函数用来对驱动器作一定的操作,cmd为功能号,drive为驱动器号(0=A,1=B,0x80=C,0x81=D,0x82=E等)。cmd可为...
函数名: biosdisk
功 能: 软硬盘I/O
用 法: int biosdisk(int cmd, int drive, int head, int track, int sector
int nsects, void *buffer); 本函数用来对驱动器作一定的操作,cmd为功能号,
drive为驱动器号(0=A,1=B,0x80=C,0x81=D,0x82=E等)。
cmd可为以下值:
0 重置软磁盘系统.这强迫驱动器控制器来执行硬复位.忽略所有其它参数.
1 返回最后的硬盘操作状态.忽略所有其它参数
2 读一个或多个磁盘扇区到内存.读开始的扇区由head、track、sector给出。
扇区号由nsects给出。把每个扇区512个字节的数据读入buffer
3 从内存读数据写到一个或多个扇区。写开始的扇区由head、track、sector
给出。扇区号由nsects给出。所写数据在buffer中,每扇区512个字节。
4 检验一个或多个扇区。开始扇区由head、track、sector给出。扇区号由
nsects给出。
5 格式化一个磁道,该磁道由head和track给出。buffer指向写在指定track上
的扇区磁头器的一个表。
以下cmd值只允许用于XT或AT微机:
6 格式化一个磁道,并置坏扇区标志。
7 格式化指定磁道上的驱动器开头。
8 返回当前驱动器参数,驱动器信息返回写在buffer中(以四个字节表示)。
9 初始化一对驱动器特性。
10 执行一个长的读,每个扇区读512加4个额外字节
11 执行一个长的写,每个扇区写512加4个额外字节
12 执行一个磁盘查找
13 交替磁盘复位
14 读扇区缓冲区
15 写扇区缓冲区
16 检查指定的驱动器是否就绪
17 复核驱动器
18 控制器RAM诊断
19 驱动器诊断
20 控制器内部诊 函数返回由下列位组合成的状态字节:
0x00 操作成功
0x01 坏的命令
0x02 地址标记找不到
0x04 记录找不到
0x05 重置失败
0x07 驱动参数活动失败
0x09 企图DMA经过64K界限
0x0B 检查坏的磁盘标记
0x10 坏的ECC在磁盘上读
0x11 ECC校正的数据错误(注意它不是错误)
0x20 控制器失效
0x40 查找失败
0x80 响应的连接失败
0xBB 出现无定义错误
0xFF 读出操作失败程序例:
// main.c
#include
#include
#include "floppyio.h"
int main(void)
{
char buf[512] = "Hello, world!"; int r; FILE *fp = fopen("booter.exe", "rb");
fread(buf, 1, 512, fp);
fclose(fp); printf("floppy ready : %d\n", IsFloppyReady());
buf[510] = 0x55;
buf[511] = 0xaa; printf("write: %d,%d\n", buf[510], buf[511]);
r = WriteFloppyBootSection(buf);
printf("r=%d\n", r);
return 0;
}
// FloppyIO.h
/* defines */
#define FLOPPY_READ 2
#define FLOPPY_WRITE 3
#define FLOPPY_READY 4/* test if floppy is ready now, if so return 1, else 0 */
int IsFloppyReady(void); /* write first head 0 /track 0 /sector 1 of floppy disk (boot section, 512 bytes) */
int WriteFloppyBootSection(char* buffer);/* read first head 0 /track 0 /sector 1 of floppy disk (boot section, 512 bytes) */
int ReadFloppyBootSection(char* buffer);
// FloppyIO.c
#include "FloppyIO.h"
int IsFloppyReady(void)
{
int result;
char buffer[512]; result = biosdisk(FLOPPY_READY, 0, 0, 0, 1, 1, buffer);
return ( result == 0 ? 1 : 0 );
}int WriteFloppyBootSection(char* buffer)
{
int result; result = biosdisk(FLOPPY_WRITE, 0, 0, 0, 1, 1, buffer);
return ( result == 0 ? 1 : 0 );
}int ReadFloppyBootSection(char* buffer)
{
int result;
result = biosdisk(FLOPPY_READ, 0, 0, 0, 1, 1, buffer);
return ( result == 0 ? 1 : 0 );
}
取消
评论
更多推荐
所有评论(0)