hi,

here is some information about MS-DOS in its various brain deadness.
i'm not sure how much this applies to freedos, i haven't tried that
yet.

i found this out one day while trying to load my cdrom driver as
"cdrom" ie

DEVICE=C:\<vendor>.sys /d:CDROM

this caused a problem when i then tried to create a directory of the
name "CDROM" in which to store said driver.

what happened was that the cdrom driver created a device file (we like
device files) named CDROM.  MS-DOS makes all the device files
available from every directory!  thus you can somewhat check to see if
a directory exists by checking if <dir>\NUL or which ever you choose.
the reasoning (if any) behind this probably stems from a non-rooted
drive system (C:, D:, etc ad nausium) and the need to get at device
files.  somewhere i read that at one point you had to specify
\dev\<device> or some such.  as of MS-DOS 6.xx all you have to specify
is <device>.

so when i went to create the directory, the device file already
existed! taking up that name.  MORAL, give devices weird names like
MSCD000x or SCSIMGR$, *nobody* would want to create a file named that!

another neat trick that MS-DOS does is that you can actually see what
that mysterious device name that our "cdrom.sys" by typing "mem /d/p"
(/d does a lot of diagnostics and /p (like dir) causes the screen to
"page").  doing this while cdrom.sys is loaded shows "mscd0001".
(note:  since these device nodes are using the same namespace as the
directory structure, mscdex might be expecting 8.3 file names...)

if you have multiple cdrom devices, the README-tech.txt advises to add
a line that says 

cdrom { /dev/<CDROMx> }

(this can be done in dosemu.conf, global.conf doesn't appear to make
*any* mention of 'cdrom', and it will get set correctly)

for *each* cdrom you wish to use, where <CDROMx> is cdrom, cdrom1,
(cdroms/cdrom0, cdroms/cdrom1 for us sneaky bastards using devfsd).
then just add 

DEVICE=C:\CDROM.SYS
DEVICE=C:\CDROM.SYS x

for each cdrom, with the second and following lines used for every
cdrom past the first.  (note:  i have two cdroms, one a IDE DVD-ROM and
the other a SCSI Ricoh CDRW, both work in this fashion)

another note:  devfs really stomps on some assumptions which dosemu
makes regarding device files!!!!!  is there any plan to rectify this
in the future?  (personal prejudice, i find having *maybe* forty
device files in a directory sexy, ie non of the pty* vcs* nightmare of
redundancy)  of note is the handling of forms of
"/dev/ide/host0/bus0/target0/lun0/partX" not working at all, thus a
symlink and the resulting confusion that produces (does not correctly
check for mounted filesystems!).

a quick look at the strings dump of ASPI.SYS shows that it defines
SCSIMGR$, but no mention of anything relating to CD.  note:  CDROM.SYS
defines both MSCD0001 and MSCD00z.  i have Adaptec EZ-SCSI.  the
ASPIxDOS.SYS drivers all define SCSIMGR$, like ASPI.SYS.  do we need
another device driver to load in the glue between the SCSIMGR$ and the
MSCD0001?  i'm guessing that if you had a SCSI device with DOS drivers
you might also have a device driver that plugs in to the SCSIMGR$...

HTH,
johnny

Reply via email to