DOSBox-x branch update:
Basic IDE emulation added. There is code for both ATA (hard disk) and ATAPI (CD-ROM) emulation. The ATA disk emulation does not fully work yet. ATAPI emulation is enough to satisfy MSCDEX.EXE and the OAK CD-ROM driver I have in the VM. For whatever reason, Windows 95 currently ignores the devices (I see it emit IDENTIFY DEVICE and then boot up without further conversation). There is debugging code active, prepare to see your console fill up with "ATAPI command" debug info when using the CD-ROM drive.
How to enable the emulation.
Add to your dosbox.conf:
(and so on for 3rd and 4th controller if you like)
For ease of use I wrote the IDE emulation to tie into DOSBox's INT 13h and MSCDEX.EXE CD-ROM code and through the "imgmount" command. The way it's written now, if you use imgmount to attach hard drives or CD-ROM drives the command will automatically also attach it also to the IDE emulation as ATA and ATAPI device respectively. I added a "-ide" switch that allows you to specify exactly which IDE port to attach it to:
-ide 1m - Attach to primary IDE controller as master
-ide 1s - Attach to primary IDE controller as slave
-ide 2m - Attach to secondary IDE controller as master
-ide 2s - Attach to secondary IDE controller as slave
-ide auto - Attach to unused slot (default)
-ide none - Do not attach to IDE port
In my test environment, I boot to windows 95 like this:
# floppy disk from DOSlib test code by ./make.sh and ./make.sh disk
imgmount 0 "/usr/src/dos/hw/ide/test.dsk" -t floppy -fs none
# C: drive for Win95
imgmount 2 "drive_c.hdd" -size 512,63,64,1023 -t hdd -fs none -ide 1m
# D: drive with Windows 95 install CD-ROM
imgmount 3 "win95-install-cdrom.iso" -t iso -fs iso -ide 2m
# Now start Win95
boot -l c
The emulation is enough to permit using OAKCDROM.SYS and MSCDEX.EXE to install Windows 95 straight from the CD-ROM drive. As usual, make sure you don't have S3 VGA enabled. Currently Windows 95 installs correctly, but will fall back on "MS-DOS compatibility mode" to talk to the hard disk using INT 13h and MSCDEX.EXE for CD-ROM access. But it's enough now that you can at least run and install things from CD-ROM in Win95.
The DOSlib source code has been updated to allow you to experiment with some ATAPI CD-ROM commands. The device reset now shows you the IDE registers after reset so you can see for yourself some of the "magic bytes" that ATAPI devices show to identify themselves.