README.TXT
1. 描述
-----------------------------------------------------------------------
QCACHE,QSCACHE,QDBOOT 是一系列DOS平台下的硬盘驱动.
QCACHE 是一个DOS 硬盘缓存驱动。它接管DOS Int13h 中断对BIOS的I-O请求,并
可缓存8个以上硬盘的数据,其中4个可以是UltraDMA磁盘。它支持一些新型、超
过128GB的数据。QCACHE接受48位 LBA 模式和 24位 CHS 模式的 DOS I-O请求,
所以可以工作于新旧DOS操作系统。QCACHE可以缓存高达250MB以上的硬盘数据!对
于UltraDMA 硬盘, 所有可能的磁盘I-O 通过 XMS缓存缓冲区立即处理, 可以带来
更好的速度并避免主要内存中的中间缓冲区。QCACHE在磁盘I-O调用BIOS或其他驱
动之前就在缓存。所以,它可以在DOS系统下对所有的硬盘提供缓存,只需要SATA
和其他非-UltraDMA硬盘有他们的BIOS逻辑。DOS Int13h 驱动可以在QCACHE 之前
加载,这样就可以缓存他们的磁盘(比如USB驱动)!
QCACHE包含有"内建的" UltraDMA程序!支持UltraDMA 和"SATA-to-IDE转接型" 硬
盘(所有来自Intel, VIA,SIS, ALi等等拥有常规UltraDMA接口的PC系统和主板)的
全部处理。通过内建的UltraDMA程序,QCACHE可以支持4个UltraDMA、4非Ultra-
DMA磁盘。如果使用了参数 "/N" 或者没有找到支持UltraDMA磁盘,QCACHE会关闭
UltraDMA逻辑并可处理8个以上任一形式的硬盘,并与它们的DOS驱动一起工作(假
如可用的话)。
QCACHE占用7.5~22K内存,取决于所需缓存大小。驱动只需2.5K,剩下的都被缓存
表占用。一个XMS管理程序(如QHIMEM等) 和 8~250MB XMS内存是缓存所必需的。
所需XMS内存中的64K是"主要 I-O 缓冲区",用于不适合UltraDMA的请求。QCACHE
与QCDROM驱动 "共享"缓存区。QCACHE 也可独自以UltraDMA 驱动的形式 (没有逻
辑缓存) 用于诊断或测试。这样QCACHE只需1376字节的系统内存,包括自己512字
节的堆栈。建议有128K以上的XMS内存, 但不是必需。"主要 I-O 缓冲区"也会和
QCDROM共享。在这种形式中,QCACHE 本来取代旧的QDMA驱动现在被删除。缓存大
小可用 /S 或其他开关,参看下面的第4部分。
QSCACHE 是一个很小的扇区缓存驱动。它可以缓存254 个单面扇区至XMS 内存。
DOS系统通过很多简单的扇区I-O来处理目录,但是QSCACHE可以通过立即缓存目录
扇区在速度上获得非常大的改进!QSCACHE 的缓存和I-O缓冲区占用4K 常规内存和
192K XMS内存,并与QCDROM共享。它也可作为一个UltraDMA驱动独自加载(1392字
节, 128K 的可选XMS)。与缓存全部数据的QCACHE相比,较小的QSCACHE可以给用
户提供一个有效的"最小缓存"解决方案!
README 文件中, 所有有关QCACHE应用的介绍与小巧的QSCACHE驱动是一样的。
QDBOOT 是用于一两个磁盘或8个以上的硬盘的DOS "启动" 驱动。很多用户喜欢
"Uwe Sieber"写的 UMBPCI驱动管理上位内存,因为它占用的常规内存比EMM386要
少。为了避免在UMBPCI"Shadow RAM"上位内存中的DMA 问题,QDBOOT 首先加载并
在常规内存640k之上"缓存" 磁盘和硬盘I-O。它处理这些I-O是每次一个扇区,使
用常规内存中一个安全的缓冲区和 BIOS I-O 调用。像QCACHE 等驱动可以加载到
上位内存来为它们自己的处理I-O 。磁盘或SATA 磁盘可以继续使用BIOS I-O,
QDBOOT 继续 "缓存" 它们的 I-O 至上位内存。这样UMBPCI 就可安全的运行。
QDBOOT's /W 选项会使得它在临时内存中使用DOS 工作区缓冲区,/R 选项会使得
它在临时内存加载逻辑。UMBPCI加载后,QDREL可以移动 QDBOOT's 逻辑到上位内
存。同时使用 /W and /R选项,QDBOOT 将只占用 32 字节的常规内存! 当前,
QHIMEM 也有类似的逻辑但QDBOOT/QDREL 可与其他XMS 驱动一起使用。
FLUSH.COM 程序用来在文件被QCACHE写入后帮助校验。在DOS控制台输入FLUSH,
将对每个磁盘发出BIOS "重置"命令。这将导致 QCACHE丢弃所有的缓存数据。这
样硬盘数据 (而不是缓存中的数据!),就可与初始输出比较了。
V5.4+ QCACHE 在32K XMS内存中保持了70% 的缓存表并且常驻-驱动尺寸更小!
用户可以使用提供120MB 中等缓存(占用常规内存12K)或250MB 巨大缓存(占22k)
的QCACHE。V5.4 QSCACHE, QDBOOT, and QDREL 无改变。
*** 注意 ***
由于FreeDOS论坛上一些无休止、不受欢迎的言论,这些驱动被禁止与FreeDOS
一起使用。并且现在这些驱动在那个系统中会自动终止。可以在所有其他DOS
系统(MS-DOS,EDR-DOS等)中使用这些驱动且不受影响。
2. 无担保条款
-----------
所有这些驱动都是作为免费软件提供的,由于没有任何保证,使用请自担风险。
同时也暗示不保证任何特定目的普适性!
驱动有问题可以发到Johnson Lam的邮箱地址: <
johnson@tmfc.net>。
如有需要,驱动的作者(U.S.A.-美国)将试着解答或更新驱动。
3. 更新说明
---------------------------------------------------------------------
V5.4 23-Mar-07 QCACHE更小! 12K "中等" 驱动缓存120MB, 22K "巨大"驱动
缓存250MB!
V5.3 20-Mar-07 更改QCACHE独立的UltraDMA 驱动以显示所有的错误号
QCACHE 最多可设定30MB XMS。(V2.0 XMS 驱动,ROM-DOS等)
V5.2 18-Mar-07 QCACHE新的"huge"选项可达250 MB!去掉"Large"选项,增加
"medium"选项。QCACHE现为UltraDMA 块I-O使用缓存
V5.1 14-Mar-07 QCACHE可在XMS内存"缓存全部"8~200MB磁盘数据!感谢Lucho
帮助保持QCACHE为5k大小!旧的扇区缓存驱动更名为QSCACHE
V5.0 29-Jan-07 QCACHE保留高端XMS内存,在16MB以下提供更多空间给一些
老的软件。谢谢Erwin Veermans的这个idea。修正QCACHE /N
的问题:没有找到UltraDMA磁盘会发生错误
V4.9 23-Jan-07 QCACHE"VDS-锁"错误影响到JEMM386/EMM386的用户的问题得到
解决,UMBPCI用户无影响
V4.8 14-Jan-07 更新QCACHE与V3.8+ QHIMEM一起工作。
V4.7 8-Jan-07 QCACHE现在是"N合1",并可作为UltraDMA磁盘驱动独自运行,
删除QDMA。谢谢Luchezar Georgiev 的这个idea!
V4.6 26-Dec-06 QCACHE 内建了UltraDMA逻辑! 删除QDMA-C
V4.5 21-Dec-06 QDMA-C和QDMA可再次运行于VMWare!非常感谢Erwin Veermans
的帮助!
V4.4 17-Dec-06 QDMA-C "A20" 逻辑修正,0BBh 设置为错误号
V4.3 11-Dec-06 为只支持"UltraDMA"系统加入 QDMA-C
V4.2 8-Dec-06 改正一个QDMA 载入时间错误
V4.1 6-Dec-06 删除QCACHE /X 选项, 加入QDMA /Q 数据请求选项。
从现在起,驱动被禁止用于FreeDOS
V4.0 12-Nov-06 改正了QCACHE/QDMA "A20 line" 的处理
V3.9 9-Nov-06 加入QCACHE /X 选项,QCACHE/QDMA 堆栈增加
V3.8 24-Oct-06 QDMA 更新了QXHIMEM,删除了V3.7的更改
V3.7 15-Oct-06 QDMA与UMBPCI一起使用,不再需要XMS内存
V3.6 8-Oct-06 为了通用,QDBOOT开始支持UMBPCI
V3.5 1-Oct-06 加入QDMA and QDBOOT /A 选项
V3.4 28-Sep-06 加入 QCACHE 驱动,自QDMA分离
V3.3 21-Sep-06 QDMA和QDBOOT可处理Intel 82801EB 芯片
V3.2 8-Sep-06 为了简单,删除输出-重叠,双重-缓冲区
V3.1 16-Aug-06 加入QDBOOT "磁盘捕捉" /I 选项
V3.0 14-Aug-06 加入非-重叠QDMA 扇区缓存
...
...
...
V1.0 20-Feb-06 最初正式版
4. 参数说明
QDREL和 FLUSH无需参数就可使用。
QCACHE和 QSCACHE 参数说明如下:
/386 QCACHE才有,指定系统使用旧的80386 或 80486 CPU。
/486 新型的CPU无需这两个参数。前面旧的CPU 必须用小点的区段数据作
"保护模式"的XMS移动,所以高速中断才不会有错误!
/A 请求使用旧的"交替的" EIDE 控制地址。
/A 用的相当少。下面第7部分有细节说明。
/F 激活"快速 DMA"。横越UltraDMA "64K边界"的I-O在边界之上与边界之下
分两部分完成,以此来改善速度。假如使用了 /B,不规则(没对齐)的
I-O(访问地址并非4字节整)使用驱动XMS 缓冲区或者直接由BIOS处理。
没有 /F参数,横越"边界的"I-O也会使用驱动XMS 缓冲区。
--- 注意 ---
不是所有的芯片和主板都可正确地做多部分的 DMA!
/F 必须先在各个系统上仔细测试!
/L 限制DMA在640K内存以下。/L是UMBPCI或其他使用"Shadow RAM"上位内存
而不能做DMA的驱动所必需的。使用JEMM386/EMM386或其他设置常规上
位内存的驱动可以省略/L。/L 在640K之上使用I-O数据XMS缓冲区。
假如作为独立驱动与/B和/L一起使用,这些I-O 直接由BIOS处理。
/N 不使用"内建的" UltraDMA 逻辑并允许处理8个以上任一模式的硬盘(不是
4 UltraDMA,4 非-UltraDMA)。假如没有 /U 和 /B 参数,并且驱动只
是缓存(无UltraDMA逻辑),/N 导致/A /F /L /Q 参数被忽略。
/Q 在UltraDMA数据传输开始之前激活等待 "数据请求" 。对Sabrent这些新
的SATA-to-IDE适配器,/Q必须省略,因为这些适配器可能不能模仿来
来自SATA磁盘的"数据请求"! 对多数新型控制器和IDE磁盘来说,/Q
是不需要的。只有在一些"旧的"系统并且正确加载的情况下才可使用。
但是这样它将不能传输任何数据。
/Sn QCACHE 才有,指定所需缓存尺寸,如下:
/S1 8MB缓存,驱动占内存7.5K (小), 8K 区块.
/S2 16MB缓存,驱动占内存7.5K (小), 16K 区块.
/S3 30MB缓存, 驱动占内存12K (中), 16K 区块.
/S4 60MB缓存, 驱动占内存12K (中), 32K 区块.
/S5 120MB缓存, 驱动占内存12K (中), 64K 区块.
/S6 180MB缓存, 驱动占内存16K (大), 64K 区块. (? 5.2中Large不是去掉了吗)
/S7 250MB缓存, 驱动占内存22K (巨), 64K 区块.
假如省略/S,默认为/S2.假如没有足够内存,会按S7->S6->S5->S4->
S3->S2的顺序依次指向下一个。假如7.5K内存都没有或者使用DOS5.0
以下的系统,QCACHE会退出。驱动的自由内存测试需要MS-DOS V5.0以
上。"旧的"DOS系统可以使用QSCACHE。与V2.0 XMS管理程序(ROM-DOS
等)使用,/S3 或者说30MB是最大允许。
下面第七部分有更多关于全部缓存驱动的。
/U 以UltraDMA驱动独立加载,并且 --
/B 以UltraDMA驱动独立加载但没有XMS内存。
假如 /B 或 /N使用了,/N 和 /S将忽略。以上其他参数都可按需使用。
/B 会将所有不适于UltraDMA的I-O丢给BIOS并可能丢失一些速度。
假如是绝对需要或为了诊断才是最后的选择。
QDBOOT 参数说明如下:
/Mn 指定QDBOOT和它的I-O缓冲区需要"临时的"内存区域:
/M1 = 00010000h (64K). /M5 = 00050000h (320K).
/M2 = 00020000h (128K). /M6 = 00060000h (384K).
/M3 = 00030000h (192K). /M7 = 00070000h (448K).
/M4 = 00040000h (256K). /M8 = 00080000h (512K).
没有/M的话,默认QDBOOT为/M5并使用320K 的区域作为需要的临时内
存。DOS可能不是有地址0之上加载,并且内存也可能有些临时数据。
假如需要,/M 可以用来改变QDBOOT的地址并找一段安全区域来给它自
己使用。
/R 请求"重定位"QDBOOT的逻辑到上位内存。逻辑首先在临时内存中。
当上位内存由UMBPCI激活,QDREL驱动复制QDBOOT的逻辑到它最终的上
位内存。
/W 请求使用DOS"工作区"I-O 缓冲区。MS-DOS V5.0+等需要这个参数。
假如省略了 /W 参数,使用了"旧的" DOS ,或者工作区逻辑不是由DOS
提供,QDBOOT将设置自己的缓冲区。第7部分有更多细节。
大多数QCACHE用户希望 /F 参数激活"Fast DMA" 和 /L 参数(使用了UMBPCI)。
QDBOOT用户希望/R 和 /W 参数来节省常规内存。需要的话再使用其他参数。
所有参数中,可用小写字母,也可以连线号(英文) - 代替斜杠 /。
5. 加载配置
所有驱动在CONFIG.SYS文件中以命令行加载。CONFIG.SYS中内容类似以下形式:
DEVICE = QCACHE.SYS
DEVICE = QSCACHE.SYS
DEVICE = QDBOOT.SYS
DEVICEHIGH = QDREL.SYS
V3.70+ UMBPCI和QHIMEM一起使用的话,不需要"启动"驱动(QDBOOT,QDREL)!
这种情况下,UMBPCI首先加载并激活上位内存,然后QHIMEM提供UMBPCI和XMS给DOS
以及其他驱动。也可同时使用使用JEMM386/EMM386。
以下是CONFIG.SYS中同时使用V3.70+ UMBPCI和QHIMEM的一个例子:
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:512 /P
DEVICE=C:\BIN\UMBPCI.SYS
DEVICE=C:\BIN\QHIMEM /N32 /W
DOS=HIGH,UMB
DEVICE=C:\BIN\EMM386.EXE I=B000-B7FF X=C400-EFFF
DEVICEHIGH=C:\BIN\QSCACHE.SYS /F /L
DEVICEHIGH=C:\BIN\QCDROM.SYS /D:CDROM1 /UF /L
..
.. Etc.
..
使用JEMM386/EMM386 的话,QHIMEM 通常以"启动"模式加载,然后是"EMM"驱动,
接着QHIMEM 加载到上位内存。QCACHE 和 QCDROM不需要 /L 参数,因为"EMM"驱动
并不设置"Shadow RAM"为上位内存。
下面是QHIMEM以"启动"模式加载的一个例子:
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:512 /P
DEVICE=C:\BIN\QHIMEM.SYS /N32 /B
DOS=HIGH,UMB
DEVICE=C:\DOS\EMM386.EXE I=B000-B7FF NOEMS
DEVICEHIGH=C:\BIN\QHIMEM.SYS
DEVICEHIGH=C:\BIN\QCACHE.SYS /F /S7
DEVICEHIGH=C:\BIN\QCDROM.SYS /D:CDROM1 /UF
..
.. Etc.
..
QCACHE 或 QCDROM 在UMBPCI上位内存中运行都需要 /L 参数。
JEMM386 或 EMM386 代替UMBPCIZ的话,QDBOOT/QDREL 驱动不需要 /L 参数,
但是假如使用了也会正常运行。对不常见、需要"I-O 捕捉"来处理上位内存I-O的系统,
QDBOOT 和 QDREL 可以这样使用:
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:512 /P
DEVICE=C:\BIN\QHIMEM.SYS /N32 /B
DOS=HIGH,UMB
DEVICE=C:\BIN\QDBOOT.SYS /R /W
DEVICE=C:\DOS\EMM386.EXE I=B000-B7FF NOEMS
DEVICEHIGH=C:\BIN\QDREL.SYS
DEVICEHIGH=C:\BIN\QHIMEM.SYS
DEVICEHIGH=C:\BIN\QCACHE.SYS /L /S5
DEVICEHIGH=C:\BIN\QCDROM.SYS /D:CDROM1 /UF /L
..
.. Etc.
..
在这些例子中,QHIMEM 加 /B 参数临时性处理XMS 请求,同时QDBOOT (假如用了)
安全加载驱动到上位内存。JEMM386/EMM386 下一步加载激活上位内存。QDREL (假
如用了) 可将QDBOOT程序放到上位内存。主要的 QHIMEM 就可在下一步加载。
QCACHE可在QHIMEM后加载,这样它就可请求XMS 内存。当使用QCDROM驱动时,应该
在QCACHE之后加载来"共享" XMS 缓冲区。其他"Int 13h"型磁盘驱动使用须在QCACHE
之前,QHIMEM之后加载,这样它就可为其他驱动也提供缓存。更多细节,见QHIMEM
和 QCDROM "README" 文件。其他的驱动(如SETVER.EXE, ANSI.SYS等) 可无序加载。
请确保BIOS中每个硬盘的位置正确。将其设置为"Auto", "LBA" or "LBA Assisted"
而不是"None", "Normal","CHS", "ECHS"。设置为"User Cylinders/Heads/Sectors",
"Revised ECHS"或者"Bit Shift" 可以运行但不是优先。假如BIOS 有像"UDMA Capable"
的磁盘设置,将其激活。节约-电源的特性如"drive spin-down timeout" 应该禁用
否则磁盘I-O请求将超时!当然,确保是使用80-针接口的UltraDMA磁盘,并支持
"mode 3" ATA-44 (44 MB/sec) 以上的操作。当接入单IDE口的硬盘,注意必须用IDE线
的两端的接口接入,而不是用一端与中间的接口! 这个可以避免没有使用的那端产生噪音
的错误。产生噪音的原理是无线电天线。
6. 错误报告
--------
I-O中的错误由QDBOOT返回到调用的程序。QCACHE以"BIOS 驱动"工作并以常规BIOS
方式提交I-O错误。从成功的I-O退出,寄存器AH会清零,进位位重置。错误的I-O,
进位位置1,寄存器AH有如下错误号:
Code 08h - DMA t超时. BBh - "没有指定" (QSCACHE 才有).
0Fh - DMA 错误. CCh - 磁盘失败.
20h - 控制器忙. E0h - 硬件 I-O 错误.
AAh - 磁盘没准备好. FFh - XMS 内存错误.
注意: 新的"主板固件型"磁盘很少发生错误,并且DOS程序通常只显示"Disk Error"
而无错误号!所以QSCACHE只有以"缓存"模式运行,遇到磁盘错误保存内存并提交BBh
- "没有指定"的错误号。假如是以UltraDMA驱动独立运行,0BBh会省略,会以其他错
误号代替。V5.4+ QCACHE 以UltraDMA驱动独立或缓存器运行现在提交全部的错误号。
假如DOS系统提交"磁盘错误"信息,应马上进行磁盘诊断以找出症结所在。QCACHE或
QSCACHE 作为独立的UltraDMA驱动,假如问题包括UltraDMA磁盘,也可这样用。
Last edited by cchessbd on 2007-3-30 at 01:53 AM ]