函数名: 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 );

}

取消

评论

c语言字符括号怎么表示什么意思,请问C语言中的bioskey(0)是啥意思,括号里的值又有啥用?...相关推荐

  1. c语言中用两个n表示什么格式,C语言中‘\n'为什么能表示CRLF两个字节

    为什么要说这个简单的问题? 众所周知,在Windows下文本文件的换行符是CRLF,占两个字节.在Unix下是LF,占一个字节.(还有奇葩的Mac是CR).但是C语言中直接printf一个 '\n', ...

  2. c语言中保存字符串实质上是,在C语言中,保存字符串“B”实质上是保存字符B和\0两个符号。...

    在C语言中,保存字符串"B"实质上是保存字符B和\0两个符号. 中字符字符下列哪个选项不属于授权的事项?() 保存保存四大()之首卢浮宫是人类最伟大的一个建筑. 实质上1889年庆 ...

  3. c语言4钟存储类型关键字用法,求C语言中的32个关键字及其意思? C语言中32个关键字的意思和用法~!...

    C语言中的32个关键字及其意思如下: 1.auto    声明自动变量 2.short    声明短整型变量或函数 3.int    声明整型变量或函数 4.long    声明长整型变量或函数 5. ...

  4. 字符斜杠是合法常量吗_C语言中,下列不合法的字符常量是

    C语言中,不合法的字符常量是"A.'\xff'",因为这虽然属于ASCII码字符,但是"ff"超出了ASCII码最大的"7f",所以不合法. ...

  5. c语言include的用法 相对目录 绝对目录,c语言中include的用法

    <c语言中include的用法>由会员分享,可在线阅读,更多相关<c语言中include的用法(3页珍藏版)>请在人人文库网上搜索. 1.c语言中in elude 的用法c语言 ...

  6. c语言switch语句最大嵌套数,浅谈C语言中switch 语句的嵌套使用

    浅谈C语言中switch 语句的嵌套使用 作者:未知 [摘要]switch语句是一种分支控制语句,它的应用在程序设计中起至了很重要的作用.由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套 ...

  7. case是c语言变量名吗,case是什么意思_c语言中case是什么意思

    c语言中case是什么意思 是程序的入口,一般结合switch使用 举个例子: int a=2; switch(a){ case 1:prinf("1");break; case ...

  8. c语言字母意义,%C是什么意思? c语言中?和:是什么意思

    导航:网站首页 > %C是什么意思? c语言中?和:是什么意思 %C是什么意思? c语言中?和:是什么意思 相关问题: 匿名网友: %c单个字符输出的意思. %s是输出字符串. %d是输出整型. ...

  9. c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...

    上一节较为详细的讨论了C++语言中基类被派生类继承过程中的内存模型,尤其较为详细的分析了虚函数及其虚表.虚表指针在内存中是如何分布,如何存储的,这对于理解C++语言中的"动态绑定" ...

最新文章

  1. 不相交轮换的乘积怎么求_谁能告诉我 轮换的乘积 怎么做?具体题目是
  2. SpringBoot 编写ajax可以访问的接口
  3. observable.unsubscribeOn(Schedulers.io())
  4. 四则运算---Java、C语言 写法
  5. linux命令添加文件权限,linux 的常用命令及文件权限管理
  6. 函数无法识别_PostgreSQL找不到最佳函数问题解析
  7. linux 权限测试,linux下检测root权限的shell脚本
  8. selenium+python自动化测试系列(二):AutoIt工具实现本地文件上传
  9. Oracle BIEE 链接oracle 数据库的问题,报:Check if 'Oracle OCI 10G' database client is installed
  10. 用户需求分析:背后隐藏的门槛
  11. vue+html5实现分类、商品分类、类别、菜单的左右层级布局两种不同精美样式
  12. 文档数据库和关系数据库的区别
  13. pci-e服务器显卡性能,旗舰显卡不同PCI-E模式下性能对比测试
  14. [18调剂]中国科学院深圳先进技术研究院“视频信号处理”课题组招聘
  15. 灰太狼大王讲java之抽象类
  16. iOS开发监测手机流量使用情况
  17. vc++之windows api
  18. 半导体的基础-三极管的工作原理,史上绝无仅有的理解方式
  19. matlab离散系统pid控制系统,离散系统的数字PID控制仿真
  20. kali工具熟悉——情报分析

热门文章

  1. MySQL更新行和插入列的语句
  2. 好朋友的爬虫共享资料,真佩服
  3. Progressive Web App:模仿原生应用的Web应用
  4. js进栈出栈_[js]数组栈和队列操作
  5. unity 如何获取到屏幕中间_【Unity】屏幕空间位置变换到世界空间位置的方法
  6. Ztree勾选节点后取消勾选其父子节点
  7. RPM部署MYSQL
  8. 二进制安装kubernetes v1.11.2 (第十章 kube-scheduler集群部署)
  9. (转)Vue-初步了解vue-router的三要素:路由map 、路由视图、路由导航
  10. 将Tomcat配置到你的mac电脑上,命令行启动tomcat