xcdrom22
所属分类:驱动编程
开发工具:Asm
文件大小:39KB
下载次数:9
上传日期:2007-05-17 07:50:13
上 传 者:
overlap
说明: XCDROM是DOS下CD-ROM设备驱动程序,采用UltraDMA传输.
支持PC主板有Intel,VIA,SiS,ALi.
该版本为v2.2,NASM编译.
(XCDROM is DOS CD-ROM device driver. UltraDMA using transmission. PC support is the main board Intel, VIA, SiS, ALi. The version v2.2, Assemble compiler.)
文件列表:
GNU_GPL.TXT (19524, 2003-09-29)
XCDMSGS.ENG (2816, 2006-02-08)
XCDROM.ASM (72192, 2006-02-08)
XCDROM.BAT (101, 2006-02-08)
XCDROM.SYS (3745, 2006-02-08)
XCDROM -- DOS CD-ROM Disk Driver, V2.2
==========================================
1. General Description
-------------------
XCDROM is a DOS driver for PC system CD-ROM drives. It is for use on
"end user" PC systems with normal IDE channels, including 1997 or later
mainboards using an Intel/VIA/SiS/ALi or other UltraDMA controller chip
set to "Legacy IDE mode". XCDROM is NOT for SCSI, Serial-ATA, "Native
PCI mode" servers, or any "add-on" IDE adapter card offered by Promise,
SiiG, etc. XCDROM handles normal mainboard IDE channels and AVOIDS a
need for an "add-on" card!
XCDROM runs from 1 to 3 CD-ROM drives. On loading, it checks both IDE
channels, in order from primary-master to secondary-slave, and runs the
first two CD-ROM drives found. It has switch options (see below) that
specify the "driver name" and request testing of specific IDE units for
CD-ROM drives, instead of checking all units in "IDE order". Both old
PIO-mode drives and newer UltraDMA drives may be used, as XCDROM checks
for and uses a mainboard UltraDMA controller as well. XCDROM handles
requests from a "CD-ROM redirector" program (SHCDX33A, MSCDEX etc.) for
its CD-ROM drives, and it supports the same "audio functions" and other
features as any DOS-compatible CD-ROM driver program.
XCDROM runs only the normal IDE channels at their "default" I-O address
ranges of 1F0h-1F7h (primary) and 170h-177h (secondary). It does not
use interrupts, and it defaults to normal "PIO mode" for data transfers
when no UltraDMA controller is found. This allows XCDROM to work with
older mainboards and with plug-in "IDE cards" used on pre-1997 systems.
XCDROM sets a local-stack, does a load-time 80386+ test and I-O timeout
tests, and it has other items that make the driver SAFE! XCDROM uses
less than 2560 bytes of memory and has a file size of under 4096 bytes.
If the version 3.1 (or newer) XDMA disk driver is present and using its
output-overlap feature, XCDROM will "synchronize" CD-ROM functions with
disk I-O. This ELIMINATES the previous restriction of "no overlap" if
an IDE channel must "share" an UltraDMA disk and a CD-ROM drive! When
a channel is busy with XDMA overlap, XCDROM "delays" CD-ROM I-O on that
channel until overlap ends. Letting IDE channels "share" an UltraDMA
disk and a CD-ROM drive makes system setup easier, and allowing XDMA to
use output-overlap in such a configuration improves system performance!
For this to work, XCDROM must load after XDMA, so XCDROM can "find" the
disk driver and access common variables. XCDROM does so by using the
"Int13 vector" set by XDMA for disk I-O. If a disk "cache" program is
also loaded, the "cache" must load AFTER both XDMA and XCDROM ("caches"
also set Int13). If V3.1+ XDMA is absent or not using overlap, XCDROM
runs independently (NO "synchronization"!).
[NOTE: Even if XCDROM and V3.1+ XDMA "synchronize", system performance
is LOWER if an UltraDMA disk and a CD-ROM "share" a channel. The disk
and CD-ROM cannot BOTH be running at the same time! More speed can be
achieved if UltraDMA disks use the primary IDE channel and ATAPI drives
use the secondary channel. The "no overlap" restriction is eliminated
ONLY if XDMA V3.1+ and XCDROM are used together and are "synchronized".
Overlap still CANNOT be used when XDMA "shares" an IDE channel with any
other driver except XCDROM!]
2. Revision History
----------------
V2.2 8-Feb-06 Corrected DVD handling and "regular" UltraDMA.
V2.1 31-Jan-06 Deleted init "Set Mode" commands (BIOS will do
them anyway) to avoid conflicts.
V2.0 27-Jan-06 Startup and seek timeouts increased. Added up
to ATA-133 support. Minor size reductions.
V1.9 20-Jan-06 Fixed errors in Multi-Session and I-O logic.
V1.8 17-Jan-06 Fixed Multi-Session "TOC input" to support ALL
drives, added a drive "reset" on I-O errors.
V1.7 14-Jan-06 Updated XCDROM to read a "Multi Session" disk.
V1.6 10-Jan-06 XCDROM now has stand-alone UltraDMA capability
and no longer requires XDMA/XDMAJR! "Audio
Busy" status is now updated on ALL requests.
V1.5 5-Jan-06 Fixed "Audio Status" & /AX device-status flags
and added support for up to 3 CD-ROM drives.
V1.4 2-Jan-06 Initial release, added /AX and dual drives.
V1.3 30-Dec-05 4th "Beta" issue, uses V3.1+ XDMA "OCheck".
V1.2 23-Dec-05 3rd "Beta" issue, new /UF and /UX switches.
V1.1 15-Dec-05 2nd "Beta" issue, improved XDMA linkage.
V1.0 14-Dec-05 Original "Beta" XCDROM issue.
3. Switch Options
--------------
XCDROM switch options are as follows:
/AX Excludes ALL audio functions. This makes the driver report
on a Device-Status request that it reads DATA tracks only!
/AX reduces the resident driver by 480 bytes. UltraDMA,
multi-drives, and other driver features are NOT affected!
/D: Specifies the desired "device name" which SHCDX33A or MSCDEX
will use during their initialization to address the CD-ROM
drives. Examples are: /D:CDROM1 /D:MYCDROM etc. The
device name must be from 1 to 8 bytes valid for use in DOS
filenames. If /D: is omitted, or the "device name" after
a /D: is missing or invalid, "XCDROM" will be the default.
/L Limits UltraDMA to "low memory" below ***0K. /L is REQUIRED
to use UMBPCI or a similar driver whose upper-memory areas
cannot do UltraDMA. If /L is given, the driver must load
in LOW memory so its DMA command-lists can fetch preperly,
or driver loading will ABORT! /L causes any I-O requests
above ***0K to use "PIO mode" input. Note that /L will be
IGNORED if /UX is also given.
/Mn Specifies the MAXIMUM UltraDMA "mode" to be set for a CD-ROM
drive, where n is a number between 0 and 6, as follows:
0 = ATA-16, 16 MB/sec. 4 = ATA-66, 66 MB/sec.
1 = ATA-25, 25 MB/sec. 5 = ATA-100, 100 MB/sec.
2 = ATA-33, 33 MB/sec. 6 = ATA-133, 133 MB/sec.
3 = ATA-44, 44 MB/sec.
A CD-ROM drive designed to use "modes" LESS than the given
value will be limited to its own highest "mode". /M will
be IGNORED for CD-ROM drives which cannot do UltraDMA, and
it will be ignored for ALL drives if /UX is also given.
/PM Requests the driver to check the IDE primary-master unit for
a CD-ROM drive during driver init. If a CD-ROM drive is
NOT found as primary-master, driver loading will ABORT!
/PS Same as /PM but tests the primary-slave unit only.
/SM Same as /PM but tests the secondary-master unit only.
/SS Same as /PM but tests the secondary-slave unit only.
--- NOTE ---
Using multiple drives, multiple /PM /PS /SM /SS switches
can be given. The first-specified drive is addressed as
"unit 0", the second as "unit 1", etc. If fewer switches
than drives are given, the unreferenced drives will NOT be
used. If NO such switches are given, the driver "scans"
for CD-ROM drives, from primary-master to secondary-slave.
The first drive found will be "unit 0", the second will be
"unit 1", etc.
/UF Enables "Fast UltraDMA". Data input requests that cross an
UltraDMA "***K boundary" are executed using a 2-element DMA
command list, one for data up to the boundary, and one for
data beyond it. CD-ROM speed is increased significantly.
"PIO mode" input is still needed for user buffers that are
misaligned (not at an even 4-byte address). /UF will be
IGNORED for CD-ROM drives which cannot do UltraDMA.
--- NOTE ---
Despite any UltraDMA specs, NOT ALL chipsets or mainboards
can run multi-element DMA commands properly! Although it
is valuable, /UF must be TESTED on every system, and "Fast
UltraDMA" should be enabled with CARE!!
/UX Disables ALL UltraDMA, even for CD-ROM drives capable of it.
The driver then uses "PIO mode" for all data input. /UX
should be needed only for tests and diagnostic work.
For each switch, a dash may replace the slash and lower-case characters
may be used.
4. Setup and Configuration
-----------------------
XCDROM is loaded by the CONFIG.SYS file, which must have a command line
similar to:
DEVICE[HIGH] = [path]XCDROM.SYS [/D:DeviceNm] [...]
Examples: DEVICE=C:\DOS\XCDROM.SYS
DEVICEHIGH=C:\BIN\XCDROM.SYS /D:CDROM1 /SM /SS
If the CD-ROM drive "shares" an IDE channel with an UltraDMA disk which
will use XDMA output-overlap, the following RULES apply:
A) The version 3.1+ XDMA disk driver (or later) must be used.
B) V3.1+ XDMA must be loaded before XCDROM.
C) XDMA and XCDROM must BOTH load before any disk "cache" program.
Without IDE channel "sharing", XCDROM may be loaded at any point in the
CONFIG.SYS file. See section 1 above, which explains these rules.
5. Error Reporting
---------------
XCDROM reports an I-O error to its "CD-ROM redirector" program the same
as all other DOS CD-ROM drivers. For full details, see the Microsoft
"MS-DOS CD-ROM Extensions 2.1", which includes information about CD-ROM
device drivers for use with SHCDX33A or MSCDEX.
6. SPECIAL NOTES
-------------
Some CD-ROM drives (Sony, etc.) DO NOT follow all ATAPI "standards" and
may require DISABLING UltraDMA with the /UX switch!
Be sure to "enable" your CD-ROM drive(s) with the BIOS set-up routines!
A drive that is "disabled" may cause the BIOS to clear all its UltraDMA
flags and leave the drive in "PIO mode" zero, which is terribly SLOW!
When cabling a CD-ROM drive by itself to an IDE channel, note that both
"ends" of the cable must be used, NOT one end and the middle connector!
This prevents ERRORS, as an unused cable-end CAN pick up "noise" like a
RADIO antenna!
If the driver "scans" for CD-ROM drives to use, error events WILL occur
(select error, not a CD-ROM found, etc.). Such events cause that IDE
unit to be ignored. However, the driver WILL display an error message
when "told" with the /PM /PS /SM /SS switches to check a specific IDE
unit, and the unit is a problem. If an actual CD-ROM drive is ignored
during a normal scan, users can add the proper /PM /PS /SM /SS switch
to the XCDROM line in their CONFIG.SYS file, then re-boot. This will
force the error condition to be "displayed".
If no CD-ROM drives are found, XCDROM displays "No CD-ROM drive to use;
XCDROM not loaded!" and aborts. But note that some BIOS programs will
NOT "configure" mainboard UltraDMA chips when they find no IDE devices!
Users who get the above message must first verify that the CD-ROM drive
is "enabled" through the BIOS set-up routines. If this HAS been done,
"No CD-ROM drive found" says the UltraDMA chip was NOT set for "legacy"
IDE channel addresses (1F0h/170h), and the BIOS may need to be UPDATED!
近期下载者:
相关文件:
收藏者: