目录 1
序 1
第一章 简介 1
§1.1 巨大的硬盘支持 2
§1.2 扩展内存规范4.0版本的支持 2
§1.3 增强的设备支持 2
§1.4 命令和实用程序的增强 3
§1.5 性能改进 3
§1.6 非标准接口 4
第二章 DOS如何运行 5
§2.1 DOS的核心 5
§2.2 应用程序、IBMDOS、IBMBIOS、ROMBIOS的关系 6
§2.3.2 BUFFERS 12
§2.3.1 BREAK 12
§2.3 配置参数 12
§2.3.3 COUNTRY 15
§2.3.4 FCBS 15
§2.3.5 FILES 16
§2.3.6 LASTDRIVE 18
§2.3.7 SHELL 20
§2.3.8 STACKS 20
§2.3.9 SWITCHES 20
§2.4 设备驱动程序 20
§2.4.1 ANSI.SYS 20
§2.4.2 DISPLAY.SYS 24
§2.4.3 DRIVER.SYS 25
§2.4.5 PRINTER.SYS 26
§2.4 IBMCAACHA.SYS 26
§2.4.7 XMA2EMS.SYS 27
§2.4.8 XMAEM.SYS 27
§2.4.6 VDISK.SYS 27
§2.5 系统扩展 28
§2.5.1 APPEND 28
§2.5.2 APPEND API 28
§2.5.3 ASSIGN 29
§2.5.4 ASSIGN API 29
§2.5.5 SHELLB 30
§2.5.6 FASTOPEN 30
§2.5.7 GRAPHICS 31
§2.5.8 IFSFUNC 32
§2.5.11 NLFUNC 33
§2.5.12 PRINT 33
§2.5.9 IFSFUNC API 33
§2.5.10 KEYB 33
§2.5.13 PRINT API 34
§2.5.14 MODE 35
§2.5.15 SHARE 35
§2.5.16 SHARE API 36
§2.6 COMMAND 36
§2.7 实用程序 38
§2.8 SEHLL 39
第三章 组织DOS的应用程序 40
§3.1.1 程序环境段 41
§3.1 一般的程序组织 41
§3.1.2 程序段 42
§3.2 什么是.COM程序 45
§3.2.1 程序终止 46
§3.3 什么是.EXE程序 47
§3.3.1 .EXE文件头 47
§3.3.1.1 .EXE文件头控制信息 47
§3.4 程序覆盖 51
§3.4.1 管理程序覆盖 51
§3.4.2 建立覆盖内存区 52
§3.4.3 加载覆盖程序 52
§3.4.4 调用覆盖 52
§3.5 执行子程序 63
§3.6 什么是重入程序 68
第四章 显示信息 73
§4.1 视频显示 73
§4.2 视频模式 73
§4.3 设置需要的视频模式 73
§4.4 改变视频模式 75
§4.5 字符 75
§4.6 属性 75
§4.7 文本模式(字母数字模式) 76
§4.8 图形模式 77
§4.8.1 交替图形视频模式 78
§4.8.2 图形多位平面视频显示 79
§4.9.1 使用DOS功能 81
§4.9 显示文本 81
§5.8.3 图形平面视频模式 81
§4.9.2 使用DOS功能调用 83
§4.10 使用直接硬件显示技术 84
§4.10.1 文本模式 84
§4.10.2 图形模式 88
§4.11 建立窗口管理程序 99
§4.11.1 物理视频缓冲区 99
§4.11.2 逻辑视频缓冲区 99
§4.11.2.1 逻辑视频缓冲区准备 100
§4.11.2.2 逻辑视频缓冲区结构 100
§4.11.3 物理视频缓冲区更新 102
§4.11.4 显示新窗口 103
§4.11.5 移动窗口 104
§4.11.6 滚动窗口内容 105
§4.11.7 透明窗口区 107
§4.11.8 窗口管理程序例子 108
§4.12 控制视频模式中断 121
§4.12.1 用图形或文本模式的TSR显示中断文本模式显示 121
§4.12.2 用文本模式TSR显示中断图模式显示 122
第五章 获得键盘数据 124
§5.1 中断级键盘支持 124
§5.2 使用BIOS键盘支持 130
§5.3 使用DOS键盘支持 131
§5.4 管理Ctrl+Break和Ctrl+C 131
§6.2 鼠标和键盘编程 133
§6.1 鼠标输入设备 133
第六章 用鼠标做为点设备 133
§6.2.1 处理按钮开关 134
§6.2.2 文本方式显示指针 134
§6.2.3 图形方式显示指针 135
§6.2.4 驱动事件应用程序 135
第七章 内存管理 162
§7.1 内存块状态 165
§7.2 活动区头控制块 166
§7.2.1 ArenaIndicator 166
§7.2.2 ArenaOwner 166
§7.2.3 ArenaSIze 166
§7.2.4 ArenaName 167
§7.3.1 初始化分配 168
§7.3 具有不变内存数据的程序 168
§7.3.2 减少初始化内存分配 169
§7.3.3 分配附加内存 170
§7.3.4 释放分配的内存 172
§7.3.5 重新确定分配的内存段大小 173
§7.3.6 管理内存分配的算法 174
§7.4 扩充内存 174
§7.5 LOTOUS/INTEL/MICROSOFT/AST扩充内存定义 177
§7.6 LOTUS/INTEL/MICROSOFT扩展内存规范 178
第八章 程序操作 183
§8.1 执行程序(EXEC) 185
§8.2 程序覆盖 186
§8.3 终止并驻留程序 186
§8.3.2 激活TSR 187
§8.3.1 安装TSR 187
§8.3.3 从内存椅走TSR 188
§8.4 过滤程序 189
第九章 DOS磁盘的使用 190
§9.1 磁盘特性 190
§9.1.1 驱动器 190
§9.1.2 温盘 191
§9.1.3 磁头 191
§9.1.4 磁道 192
§9.1.5 扇区 193
§9.1.6 性能参数 193
§9.2 分解大磁盘 194
§9.2.1 分区 194
§9.3 DOS文件系统 197
§9.4 FAT文件系统控制信息 198
§9.4.1 处理BIOS参数块(BPB) 200
§9.5 处理目录项 203
§9.6 处理文件分配表 206
§9.7 处理数据区 210
第十章 应用程序的文件处理 211
§10.1 DOS的数据定义规则 211
§10.1.1 字符设备 211
§10.1.2 块设备 211
§10.1.3 DOS树结构 211
§10.1.3.1 文件名和目录名 212
§10.1.3 传递名给DOS 213
§10.1.3.5 部分名 213
§10.1.4 子目录中的特殊名 213
§10.1.3.2 完全限定名 213
§10.1.3.3 当前驱动器 213
§10.1.3.4 当前目录 213
§10.2 FCB和文件句柄 214
§10.2.1 文件句柄与FCB使用比较 215
§10.2.2 磁盘复位与文件确认 216
§10.3 管理目录和树 217
§10.3.1 创建子目录 217
§10.3.2 查找当前目录 217
§10.3.3 改变当前目录 218
§10.4 文件管理 219
§10.4.1 创建一个文件 219
§10.3.4 删除子目录 219
§10.4.2 创建一个新文件 220
§10.4.3 创建唯一文件 221
§10.4.4 打开已有文件 222
§10.4.5 关闭文件 223
§10.4.6 文件属性 223
§10.4.6.1 取文件属性 223
§10.4.6.2 设置文件属性 224
§10.4.7 文件改名 225
§10.4.8 文件删除 226
§10.4.9 日期/时间引用 227
§10.4.9.1 取文件的最后更改日期/时间 227
§10.4.9.2 设置文件的最后更改日期/时间 227
§10.4.10 判定文件大小 228
§10.4.11 查找文件和目录 229
§10.4.11.1 通配符 229
§10.4.11.2 遍历目录树 229
§10.5 读写文件中的数据 230
§10.5.1 文件中的定位 230
§10.5.2 判定文件中当前位置 231
§10.5.3 从文件中读数据 231
§10.5.4 写文件数据 232
§10.5.5 确认更新一文件 232
§10.5.6 更新文件记录 233
§10.5.7 文件共享 234
§10.6 有效驱动器的测试 235
§10.5.9 打开多个文件 235
§10.5.8 锁住文件 235
第十一章 错误处理 237
§11.1 INT 21——功能调用错误 238
§11.2 INT 24——严重错误处理程序指针 241
§11.2.1 严重错误处理程序返回到应用程序 243
§11.2.2 返回到DOS的严重错误处理程序 244
§11.3 INT 25H和26H——绝对磁盘读和写 245
§11.4 INT 2FH——多路错误 246
§11.5 设备驱动程序错误返回 246
第十二章 可翻译程序的编写 249
§12.1 信息翻译 249
§12.2 特定的国家信息 251
§12.3 排序注意事项 257
§12.4 双字节字符串注意事项 259
第十三章 打印数据 260
§13.1 通过ROM BIOS打印 260
§13.2 通过DOS前台打印 261
§13.3 通过DOS后台打印 264
§13.4 串行打印机打印数据 266
第十四章 中断处理 267
§14.1 硬件中断 267
§14.2 外部中断 269
§14.3 软中断 271
§14.4 中断处理技术 272
§14.5 处理器中断 273
§14.6 通过中断对API编程(BIOS DOS) 274
§15.1.1 良态应用程序 279
第十五章 程序设计的标准 279
§15.1 兼容性概念 279
§15.1.2 硬件兼容 281
§15.1.3 OS/2兼容 282
§15.2 使用结构化程序设计技术 284
§15.2.1 自顶向下编程和编程配合的要求 284
§15.2.2 结构化程序构造 286
§15.3 公共用户存取(CUA)接口 290
§15.3.1 公共用户存取协议 290
第十六章 设备驱动程序 294
§15.1 设备驱动程序链 294
§16.2 设备驱动程序类型 294
§16.2.2 ASCII与二进制方式 295
§16.2.1 字符设备驱动程序 295
§16.2.3 块设备驱动程序 296
§16.3 设备驱动程序 297
§16.3.1 设备头 298
§16.3.2 策略子程序 300
§16.3.3 中断子程序 300
§16.3.4 请求包 301
§16.3.4.1 请求头 301
§16.3.4.2 请求相关的数据 302
§16.4 设备驱动程序功能 302
附录A DOS功能调用一览 304
§A.1 DOS INT 21H功能总结 304
§A.2 DOS INT 21H扩展错误代码一览 308
§A.3 DOS INT 21H扩展错误类型一览 310
§A.4 DOS INT 21H扩展错误处理一览 311
§A.5 DOS INT 21H扩展错误位置一览 311
§A.6 常用功能使用建议 311
00H——程序终止 311
01H——带回显的控制台输入 312
02H——显示输出 312
03H——辅助输入 312
04H——辅助输出 313
05H——打印机输出 313
06H——直接控制台I/O 313
09H——显示字符串 314
08H——无回显、控制台输入 314
07H——无回显,直接控制台输入 314
07H——无回显,直接控制台输入 314
0AH——缓冲键盘输入 315
0BH——检查标准输入状态 315
0CH——清键盘缓冲区、调用键盘功能 316
0DH——磁盘复位 316
0EH——选择磁盘 316
0FH——FCB打开文件 317
10H——FCB关闭文件 317
11H——FCB查找第一目录项 317
12H——FCB查找下一项 319
14H——FCB顺序读 320
13H——FCB删除文件 320
15H——FCB顺序写 321
16H——FCB创建议文件 322
17H——FCB重命名文件 323
19H——当前磁盘 323
1AH——置磁盘传送地址 324
1BH——分配表信息 324
1CH——给定设备的分配表信息 325
1FH——取缺省设备参数块 325
21H——FCB随机读 326
22H——FCB随机写 326
23H——FCB文件尺寸 327
24H——设置相对记录域 328
26H——创建新程序段前缀 329
25H——置中断向量 329
27H——FCB随机决读 330
28H——FCB随机块写 330
29H——分析文件名 331
2AH——取日期 332
2BH——置日期 332
2CH——取时间 333
2DH——置时间 333
2E00H——复位确认状态 334
2E01H——置确认状态 334
2FH——取盘传送区地址 334
30H——取DOS版本号 334
31H—结束并驻留 335
32H——取设备参数块 336
3300H——取Break状态 336
3301H——置Break状态 336
3305H——取引导驱动器 336
34H——取DOS内部标志地址 337
35H——取中断向量 337
36H——取磁盘自由空间 337
3700H——取开关字符 338
3701H——设置开关字符 338
38H——取/置国家信息 339
39H——建子目录 340
3AH——删除子目录 340
3CH——创建一个文件 341
3DH——打开文件 341
3BH——改变目录 341
3EH——关闭文件句柄 343
3FH——读文件或设备 343
40H——写文件或设备 343
41H——删除一个文件 344
42H——移动文件读/写指针 344
4300H——取文件属性 345
4301H——置文件属性 345
4400H(IOCTL)——取设备状态 345
4401H(IOCTL)——置设备状态 346
4402H/4403H(IOCTL)——读/写字符设备 347
4404H/4405H(IOCTL)——读/写块设备 347
4406H/4407H(IOCTL)——取I/O状态 347
4408H(IOCTL)——测试块设备是否可移动 348
4409H——测试逻辑设备是本/远地 348
440AH(IOCTL)——测试句柄为本/远地 348
440BH(IOCTL)——设置共享重入重试计数 349
440CH/440DH(IOCTL)——句柄/块设备通用IOCT请求 349
45H——复制文件句柄 350
440EH/440FH(IOCTL)——取/置逻辑驱动器 350
46H——强迫复制文件句柄 351
47H——取当前目录 351
48H——分配内存块 351
49H——释放内存块 352
4AH——修改分配的内存块 352
4B00H——执行程序(EXEC) 352
4B01H——装入程序 353
4CH——终止进程(Exit) 354
4B03H——装入覆盖 354
4DH——取子进程的返回码 355
4EH——查找第一个匹配文件 355
4FH——查找下一个匹配文件 355
50H——设置活动进程数据块。 356
51H——取活动进程数据块 357
52H——取DOS内部值 357
54H——取验证状态 358
55H——复制PDB 358
5800H——取分配策略 359
5801H——设置分配策略 360
59H——取扩展错误信息 360
5AH——以唯一名创建文件 361
5BH——创建新文件 361
5C01H——打开文件锁定 362
5C00H——锁定文件存取 362
5D00H——DOS调用服务器 363
5D02H——以名字关闭文件 364
5D01H——提交所有文件 364
5D03H——关闭特定计算机的所有文件 364
5D04H——关闭特定进程的所有文件。 365
5D05H——取打开文件列表项 365
5D06H和5D07H——取DOS数据区地址 365
5D08H——设置打印流状态 366
5D09H——截断打印流 367
5D0AH——设置扩展错误信息 367
5E00H——取机器名字 368
5E01H——设置机器名 368
5E02H——置打印机设置(Set up) 368
50E03H——取打印机设置 369
5E04H——设置打印机模式 369
5E05H——取打印机模式 370
5F00H——取重定向模式 370
5F01H——置重定向模式 370
5F02H——取重定向列表项 371
5F03H——重定向设备 371
5F05H——取扩展的重定向列表项 372
5F04H——取消重定向 372
60H——翻译文件规范 373
62H——取PSP地址 373
6300H——取DBCS前景字节表 374
6301H——置/复位Hongeul模式 374
6302H——取Hongeul模式 374
6501H——取扩展国家信息 375
6502H/6504H——取文本/文件大写(UpperCase)表地址 376
6506H——取对照表地址 377
6507H——取DBCS向量 377
6520H/6521H/6522H——大写映射功能 378
6523H——YES/NO检查 378
6601H——设置全局代码页 379
6600H——取全局(Global)代码页 379
67H——设置句柄计数 379
68H——提交文件 380
6900H——取介质ID 380
6901H——置介质ID 380
6CH——扩展打开/创建文件 381
§B1 EMS功能一览表 383
附录B 扩展内存规范参考 383
§B.2 EMS错误信息一览表 394
§B.2.1 检测EMS支持 395
§B.2.2 EMS编程注意点 396
§B.2.3 EMS样本应用程序 397
§C.1 XMS功能一览表 398
附录C 扩充内存规范参考 398
§C.2 XMS错误码一览表 402
§C.2.1 测试XMS支持 403
§C.2.2 XMS编程建议 404
§C.2.3 XMS样本程序 404
附录D 样本程序 405
§D.1 样本DOS示例1 414
§D.2 样本DOS例子程序 415
§D.3 CONTROL BREAK和严重错误处理 418
§D.4 DOS过虑程序样本 423
§D.5 树遍历程序 428
§D.6 执行一个程序 444
§D.7 终止并驻留程序 447
5700H——取文件日期和时间 459
56H——重命名/移动文件(重命名目录) 459
§D.8 使用EMS/XMS内存的方法 462