VOGONS


Windows NT 3.1/4.0 STOP 0x0000007B?

Topic actions

First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

It keeps reporting the disk as unbootable(STOP 0x0000007b unaccessable boot device)?

I do see the kernel executing some basic register and drive selects, but no commands are being sent to the hdd controller?

Anyone knows how the NT 3.1/4.0 kernel detects and starts it's first bits when using the hard disk drivers(fastfat.sys is loaded)?

See also: UniPCemu Windows 95/NT progress and issues

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 2 of 24, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Yes, maybe it is related to this. I once tried to boot OS/2 Warp with XT-IDE BIOS - v2.0.0ß3 (AT), I believe - and failed.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 3 of 24, by BushLin

User metadata
Rank Member
Rank
Member

Did you use Ghost to image the partition from elsewhere?

If so, take a look at boot.ini as Ghost modifies it to change the partition number which becomes very unhelpful if you're using a boot manager like Plop.

Screw period correct; I wanted a faster system back then. I choose no dropped frames, super fast loading, fully compatible and quiet operation.

Reply 4 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

I didn't use any Ghost. I just installed it from disk 1 through 9 as floppy disks(the first half of the installation).

Just wanted to flash the 80386 XT-IDE ROM instead of the current AT one I'm using on the Compaq Deskpro 386 system. It seems that, for some odd reason, it cannot properly boot MS-DOS from the floppy disks anymore(so far tested with 6.22 and 3.3). I only see about three floppy disk reads, then nothing?

The last access ends in reading sector LBA 15 to address 204h? The last int13h that was issued was a verify command(AH=04h)?
Edit: It's a verify of sector at LBA 0x10?
That's kind of odd, it's supposed to directly transfer to the boot sector and continue booting. Perhaps some oddity in the booting of the Plop BIOS?
Edit: Now trying again with the Plop BIOS cleared with an empty ROM as well(just like the XT-IDE 8KB ROM I've simply made for flashing the new BIOS ROM in)...

One thing that's actually different about the Plop BOOT ROM, is that I've modified it's settings to hook INT18 instead of INT19(for compatibility with the XT-IDE BIOS, allowing it to be used as a fallback boot ROM(pressing F8)).

Edit: Disabling said Plop ROM didn't help. It's still doing the same thing, reading the disk in an odd way.

Edit: Then the final test, boot normally using the XT-IDE BIOS to harddisk, then flash it from the floppy disk at drive B to the actual ROM(at segment C800, since it's the second 8KB ROM, directly after the VGA ROM at segment C000).

Edit: Just verified. With the XT-IDE BIOS in place, it's properly booting the floppy disk without issues. Hmmm... So perhaps a problem in the Compaq BIOS regarding booting the floppy disk(loading sector 0 and jumping to it)?

Edit: Ran the flashing and configuration using that method. Now I have a properly flashed XT-IDE 386 ROM for 32-bit purposes(e.g. Compaq Deskpro 386 and up). Nice for Windows 95 and perhaps NT as well.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 5 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just finished flashing said 386 ROM(from xtideuniversalbios.org/binaries latest version). Then configured both IDE drive types for type 42h(which seems to be the largest according to gsetup). Tried booting to MS-DOS. Worked fine, except the Compaq BIOS complains about something of an invalid hard disk BIOS failure(as http://www.vcfed.org/forum/archive/index.php/t-51437.html documents).

Edit: I think the esdi_506.pdr now no longer crashes? I see the fdc leds lighting up(the driver that's loaded immediately before it, floppy.pdr), then some hdd activity on c, then the second harddisk... Fingers crossed... =X

Edit: Nope, still crashed directly after logging the initing esdi_506.pdr(the second one)...

Could that perhaps be the CD-ROM driver? UniPCemu has two harddisks(primary master Windows 95, primary slave second harddisk(if present, usually ommitted during setup before reboot) on the primary channel. The secondary channel only got the two CD-ROM drives(containing Win95 setup on the first disc, second disk being unmounted(empty CD tray)).

Could that mean a CD-ROM issue?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 6 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Hmmm,.... The detlog.txt file lists the following:

Checking for: Standard IDE/ESDI Hard Disk Controller
QueryIOMem: Caller=DETECTESDI, rcQuery=0
IO=1f0-1f7
QueryIOMem: Caller=DETECTESDI, rcQuery=0
IO=3f6-3f6
QueryIOMem: Caller=DETECTESDI, rcQuery=0
IO=1171-1171
Detected: *PNP0600\0000 = [14] Standard IDE/ESDI Hard Disk Controller
IO=1f0-1f7,3f6-3f6
IRQ=14
QueryIOMem: Caller=DETECTESDI, rcQuery=0
IO=170-177
QueryIOMem: Caller=DETECTESDI, rcQuery=0
IO=1171-1171
QueryIOMem: Caller=DETECTESDI, rcQuery=0
IO=376-376
Detected: *PNP0600\0001 = [15] Standard IDE/ESDI Hard Disk Controller
IO=170-177,376-376
IRQ=15

The primary controller at 1f0-1f7 and 3f7 is indeed the hard disk controller.
BUT, The other 'hard disk controller' PNP0600\0001 170-177 and 376 is actually the ATAPI CD-ROM's controller. Could that be the issue here? How does it know the difference between HDD and ATAPI drive during detection?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 7 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just took the ATAPI protocol(https://www.bswd.com/sff8020i.pdf) again and searched for 'detection' information... Then I found this:

5.18.2.3 Other SRST Related Issues A value other than 00h in the status register prior to the receipt of the first ATAPI Command […]
Show full quote

5.18.2.3 Other SRST Related Issues
A value other than 00h in the status register prior to the receipt of the first ATAPI Command Packet from the host may
cause ATAPI Devices to be incorrectly identified by pre-ATAPI host BIOS as an ATA-compatible disk drive.
Initializing the task file upon receipt of an SRST works since only immediate commands will be executing when an ATA
disk driver issues an SRST. To prevent interruption of ATAPI immediate commands which have not finished executing,
the function of the DSC bit (i.e. command complete) shall be maintained. On a warm boot the BIOS and/or drivers may
see a status of 00h or 10h, depending on whether or not an ATAPI immediate command completed at the same time the
system performed the WARM BOOT.
The signature placed in the task file following an SRST shall remain until the ATAPI device receives its first ATAPI
command, i.e., the ATAPI device will look NOT READY (DRDY=0). This will not affect the ATAPI device drivers
ability to send ATAPI commands to the ATAPI device since it is not required to wait for DRDY=1. However, it will prevent ATA-compatible drivers, such as those performing power management, from sending commands to an ATAPI device until the ATAPI device has received its first ATAPI command: ATAPI Packet Command, ATAPI Identify Device,
ATAPI Soft Reset.
ATAPI drivers wishing to use ATA power management commands must poll DRDY and, if it is not set, they must also
look at the Cylinder registers for the ATAPI signature. If the signature is present, the ATAPI driver must issue the ATAPI device an ATAPI command, re-enabling DRDY, before it can issue an ATA Power management command. Operating systems wishing to use a common ATA power management driver must also be changed to perform this detection
and recovery sequence, if they intend to power-manage ATAPI devices.

I didn't implement this at all. Could that be the issue?

Edit: Implementing this spec, now the XT-IDE configurator no longer detects the CD-ROM drive as hard disks. So that's one.
Now to check Windows 95 setup...
Edit: So far, booting the bootable Windows 95 CD-ROM works. The floppy disk image on the CD-ROM is booting(displaying "Starting Windows 95..."). Now, what will OAKCDROM.SYS do...
Edit: OAKCDROM sees the CD-ROM drives properly 😁

Edit: Well, the setup wizard is starting slowly(it's in Cycle-accurate mode). It's still configured as as Pentium(without FPU), which I remember caused issues somewhere around the serial key input?
The same with the Tseng Labs ET4000, which messed up the screen during hardware detection:S
Edit: Now restarting setup with the correct configuration(it was using a Pentium in cycle-accurate mode with ET4000 instead of a proper 386DX in IPS mode with VGA, which is both faster and less error-prone in this case).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 8 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just finished reinstalling Windows 95a. No notable difference spotted in the device detection: still two IDE HDD detections(including the CD-ROM drive). Perhaps better luck when the driver loads?

It still crashes on the second driver esdi_506.pdr being loaded. But now I see what seems to be two large/long hdd reads before the crash?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 9 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Why would it think that the IDE CD-ROM is a harddisk? It only supports ATAPI mandatory commands, erroring out on any IDE commands, and displays as not ready/busy all the time, until it receives ATAPI commands?

Anyone? Dosbox guys, does one of you know anything sbout Windows 95's CD-ROM driver and it's detection? Does it also use ESDI_506.PDR for that one?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 10 of 24, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Hi, good to see your emulator is improving!

superfury wrote:

It still crashes on the second driver esdi_506.pdr being loaded. But now I see what seems to be two large/long hdd reads before the crash?

Hi, Isn't esdi_506.pdr Windows 95's HDD Protected-Mode driver ? If so, it might be in parts related to FastDisk (aka WDCTRL) from Windows 3.1x.
Since Microsoft included the terms "ESDI" and "506" (->ST506 from ST506/ST412 standard ?), maybe it wasn't fully ATA/IDE compliant or contained legacy code still (just a wild guess).
This is probably old news, but there was a blog entry at OS/2 Museum that described the issues the original FastDisk had with ATA-2 hardware,
since it was originally written for real WD1003 controllers which interfaced with Shugart ST506/ST412 MFM/RLL fixed disks.
Here's the link (archived, since os2museum.com is offline for a while): https://web.archive.org/web/20180102102201/ht … -please-wdctrl/

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 11 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Perhaps that second esdi_506.pdr being loaded is for the secondary ATA(PI) controller? So in UniPCemu's case, the CD-ROM drive controller(except when there's no hard disks installed, in which case the CD-ROM drive controller becomes primary and there is no secondary controller).

Could there be an issue with my ATAPI controller emulation? Afaik, the main stuff should be implemented(at least the mandatory commands)?

UniPCemu's IDE/ATAPI emulation: https://bitbucket.org/superfury/unipcemu/src/ … /hardware/ide.c

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 12 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

That WD-specific stuff shouldn't affect Windows 95/NT4 and onwards, as they're supposed to run on various hardware? So it had to be compliant, shouldn't it?

Edit: After some more bugfixing, it seemed that wasn't the cause(bootlog.txt : ):

[00128814] Loading Device = C:\WINDOWS\HIMEM.SYS
[00128816] LoadSuccess = C:\WINDOWS\HIMEM.SYS
[00128816] Loading Device = C:\WINDOWS\IFSHLP.SYS
[00128816] LoadSuccess = C:\WINDOWS\IFSHLP.SYS
[00128816] Loading Device = C:\WINDOWS\SETVER.EXE
[00128816] LoadSuccess = C:\WINDOWS\SETVER.EXE
[00128981] Loading Vxd = VMM
[00128994] LoadSuccess = VMM
[00128995] Loading Vxd = CONFIGMG
[0012899A] LoadSuccess = CONFIGMG
[0012899A] Loading Vxd = VSHARE
[0012899C] LoadSuccess = VSHARE
[0012899C] Loading Vxd = VWIN32
[0012899F] LoadSuccess = VWIN32
[001289A0] Loading Vxd = VFBACKUP
[001289A0] LoadSuccess = VFBACKUP
[001289A0] Loading Vxd = VCOMM
[001289A2] LoadSuccess = VCOMM
[001289A2] Loading Vxd = COMBUFF
[001289A2] LoadSuccess = COMBUFF
[001289A3] Loading Vxd = IFSMGR
[001289B0] LoadSuccess = IFSMGR
[001289B0] Loading Vxd = IOS
[001289B5] LoadSuccess = IOS
[001289B5] Loading Vxd = SPOOLER
[001289B7] LoadSuccess = SPOOLER
[001289B7] Loading Vxd = VFAT
[001289BC] LoadSuccess = VFAT
[001289BC] Loading Vxd = VCACHE
[001289BE] LoadSuccess = VCACHE
[001289BE] Loading Vxd = VCOND
[001289C0] LoadSuccess = VCOND
[001289C1] Loading Vxd = VCDFSD
[001289C2] LoadSuccess = VCDFSD
[001289C2] Loading Vxd = VXDLDR
[001289C3] LoadSuccess = VXDLDR
[001289C4] Loading Vxd = VDEF
[001289C4] LoadSuccess = VDEF
[001289C4] Loading Vxd = VPICD
[001289C6] LoadSuccess = VPICD
[001289C6] Loading Vxd = VTD
[001289C8] LoadSuccess = VTD
[001289C8] Loading Vxd = REBOOT
[001289C9] LoadSuccess = REBOOT
[001289C9] Loading Vxd = VDMAD
[001289CA] LoadSuccess = VDMAD
[001289CA] Loading Vxd = VSD
[001289CB] LoadSuccess = VSD
[001289CB] Loading Vxd = V86MMGR
[001289CF] LoadSuccess = V86MMGR
[001289CF] Loading Vxd = PAGESWAP
[001289D0] LoadSuccess = PAGESWAP
[001289D0] Loading Vxd = DOSMGR
[001289D5] LoadSuccess = DOSMGR
[001289D5] Loading Vxd = VMPOLL
[001289D6] LoadSuccess = VMPOLL
[001289D6] Loading Vxd = SHELL
[001289D9] LoadSuccess = SHELL
[001289D9] Loading Vxd = PARITY
[001289DA] LoadSuccess = PARITY
Show last 303 lines
[001289DA] Loading Vxd = BIOSXLAT
[001289DA] LoadSuccess = BIOSXLAT
[001289DB] Loading Vxd = VMCPD
[001289DB] LoadSuccess = VMCPD
[001289DB] Loading Vxd = VTDAPI
[001289DC] LoadSuccess = VTDAPI
[001289DC] Loading Vxd = PERF
[001289DD] LoadSuccess = PERF
[001289DE] Loading Vxd = ebios
[001289DE] LoadSuccess = ebios
[001289DE] Loading Vxd = vshare
[001289DF] LoadFailed = vshare
[001289DF] Loading Vxd = dynapage
[001289E1] LoadSuccess = dynapage
[001289E1] Loading Vxd = vcd
[001289E2] LoadSuccess = vcd
[001289E2] Loading Vxd = vpd
[001289E4] LoadSuccess = vpd
[001289E4] Loading Vxd = int13
[001289E4] LoadSuccess = int13
[001289E4] Loading Vxd = vdd
[001289E9] LoadSuccess = vdd
[001289E9] Loading Vxd = vflatd
[001289EA] LoadSuccess = vflatd
[001289EA] Loading Vxd = vmouse
[001289EC] LoadSuccess = vmouse
[001289EC] Loading Vxd = msmouse.vxd
[001289ED] LoadSuccess = msmouse.vxd
[001289ED] Loading Vxd = vkd
[001289EF] LoadSuccess = vkd
[001289EF] Loading Vxd = enable
[001289F1] LoadSuccess = enable
[001289F7] SYSCRITINIT = VMM
[001289F8] SYSCRITINITSUCCESS = VMM
[001289F8] SYSCRITINIT = VCACHE
[001289F8] SYSCRITINITSUCCESS = VCACHE
[001289F8] SYSCRITINIT = PERF
[001289F8] SYSCRITINITSUCCESS = PERF
[001289F8] SYSCRITINIT = VPICD
[001289F9] SYSCRITINITSUCCESS = VPICD
[001289F9] SYSCRITINIT = VTD
[001289F9] SYSCRITINITSUCCESS = VTD
[001289F9] SYSCRITINIT = VXDLDR
[001289F9] SYSCRITINITSUCCESS = VXDLDR
[001289FA] SYSCRITINIT = CONFIGMG
[001289FA] SYSCRITINITSUCCESS = CONFIGMG
[001289FA] SYSCRITINIT = VCDFSD
[001289FA] SYSCRITINITSUCCESS = VCDFSD
[001289FA] SYSCRITINIT = IOS
[001289FA] SYSCRITINITSUCCESS = IOS
[001289FB] SYSCRITINIT = PAGEFILE
[001289FB] SYSCRITINITSUCCESS = PAGEFILE
[001289FB] SYSCRITINIT = PAGESWAP
[001289FB] SYSCRITINITSUCCESS = PAGESWAP
[001289FB] SYSCRITINIT = PARITY
[001289FC] SYSCRITINITSUCCESS = PARITY
[001289FC] SYSCRITINIT = REBOOT
[001289FC] SYSCRITINITSUCCESS = REBOOT
[001289FC] SYSCRITINIT = EBIOS
[001289FC] SYSCRITINITSUCCESS = EBIOS
[001289FC] SYSCRITINIT = VDD
[001289FD] SYSCRITINITSUCCESS = VDD
[001289FD] SYSCRITINIT = VSD
[001289FD] SYSCRITINITSUCCESS = VSD
[001289FD] SYSCRITINIT = COMBUFF
[001289FD] SYSCRITINITSUCCESS = COMBUFF
[001289FD] SYSCRITINIT = VCD
[001289FE] SYSCRITINITSUCCESS = VCD
[001289FE] SYSCRITINIT = VMOUSE
[001289FE] SYSCRITINITSUCCESS = VMOUSE
[001289FE] SYSCRITINIT = MSMINI
[001289FE] SYSCRITINITSUCCESS = MSMINI
[001289FF] SYSCRITINIT = VKD
[001289FF] SYSCRITINITSUCCESS = VKD
[001289FF] SYSCRITINIT = ENABLE
[001289FF] SYSCRITINITSUCCESS = ENABLE
[001289FF] SYSCRITINIT = VPD
[00128A00] SYSCRITINITSUCCESS = VPD
[00128A00] SYSCRITINIT = INT13
[00128A00] SYSCRITINITSUCCESS = INT13
[00128A00] SYSCRITINIT = VMCPD
[00128A00] SYSCRITINITSUCCESS = VMCPD
[00128A00] SYSCRITINIT = BIOSXLAT
[00128A01] SYSCRITINITSUCCESS = BIOSXLAT
[00128A01] SYSCRITINIT = DOSMGR
[00128A01] SYSCRITINITSUCCESS = DOSMGR
[00128A01] SYSCRITINIT = VSHARE
[00128A01] SYSCRITINITSUCCESS = VSHARE
[00128A02] SYSCRITINIT = VMPOLL
[00128A02] SYSCRITINITSUCCESS = VMPOLL
[00128A02] SYSCRITINIT = VWIN32
[00128A02] SYSCRITINITSUCCESS = VWIN32
[00128A02] SYSCRITINIT = VCOMM
[00128A02] SYSCRITINITSUCCESS = VCOMM
[00128A03] SYSCRITINIT = VCOND
[00128A03] SYSCRITINITSUCCESS = VCOND
[00128A03] SYSCRITINIT = VTDAPI
[00128A03] SYSCRITINITSUCCESS = VTDAPI
[00128A03] SYSCRITINIT = VFLATD
[00128A04] SYSCRITINITSUCCESS = VFLATD
[00128A04] SYSCRITINIT = VDMAD
[00128A04] SYSCRITINITSUCCESS = VDMAD
[00128A04] SYSCRITINIT = V86MMGR
[00128A04] SYSCRITINITSUCCESS = V86MMGR
[00128A04] SYSCRITINIT = SPOOLER
[00128A05] SYSCRITINITSUCCESS = SPOOLER
[00128A05] SYSCRITINIT = VFAT
[00128A05] SYSCRITINITSUCCESS = VFAT
[00128A05] SYSCRITINIT = VDEF
[00128A05] SYSCRITINITSUCCESS = VDEF
[00128A06] SYSCRITINIT = IFSMGR
[00128A06] SYSCRITINITSUCCESS = IFSMGR
[00128A06] SYSCRITINIT = VFBACKUP
[00128A06] SYSCRITINITSUCCESS = VFBACKUP
[00128A06] SYSCRITINIT = SHELL
[00128A06] SYSCRITINITSUCCESS = SHELL
[00128A08] DEVICEINIT = VMM
[00128A08] DEVICEINITSUCCESS = VMM
[00128A08] DEVICEINIT = VCACHE
[00128A09] DEVICEINITSUCCESS = VCACHE
[00128A0A] DEVICEINIT = PERF
[00128A0A] DEVICEINITSUCCESS = PERF
[00128A0B] DEVICEINIT = VPICD
[00128A0B] DEVICEINITSUCCESS = VPICD
[00128A0B] DEVICEINIT = VTD
[00128A0B] DEVICEINITSUCCESS = VTD
[00128A2A] DEVICEINIT = VXDLDR
[00128A2A] DEVICEINITSUCCESS = VXDLDR
[00128A30] Dynamic load device isapnp.vxd
[00128A3A] Dynamic init device ISAPNP
[00128A3B] Dynamic init success ISAPNP
[00128A3B] Dynamic load success isapnp.vxd
[00128A3B] Dynamic load device mmdevldr.vxd
[00128A4B] Dynamic init device MMDEVLDR
[00128A4B] Dynamic init success MMDEVLDR
[00128A4B] Dynamic load success mmdevldr.vxd
[00128A4C] Dynamic load device vjoyd.vxd
[00128A4F] Dynamic init device VJOYD
[00128A4F] Dynamic init success VJOYD
[00128A50] Dynamic load success vjoyd.vxd
[00128A50] Dynamic load device mmdevldr.vxd
[00128A52] Dynamic load success mmdevldr.vxd
[00128A52] Dynamic load device msmpu401.vxd
[00128A55] Dynamic init device MSMPUVXD
[00128A55] Dynamic init success MSMPUVXD
[00128A56] Dynamic load success msmpu401.vxd
[00128A56] DEVICEINIT = CONFIGMG
[00128A58] DEVICEINITSUCCESS = CONFIGMG
[00128A58] DEVICEINIT = VCDFSD
[00128A58] DEVICEINITSUCCESS = VCDFSD
[00128A59] DEVICEINIT = IOS
[00128A6B] Dynamic load device C:\WINDOWS\system\IOSUBSYS\apix.vxd
[00128A6C] Dynamic load success C:\WINDOWS\system\IOSUBSYS\apix.vxd
[00128A6D] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdfs.vxd
[00128A6E] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdfs.vxd
[00128A6E] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdtsd.vxd
[00128A6F] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdtsd.vxd
[00128A6F] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdvsd.vxd
[00128A70] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdvsd.vxd
[00128A70] Dynamic load device C:\WINDOWS\system\IOSUBSYS\disktsd.vxd
[00128A71] Dynamic load success C:\WINDOWS\system\IOSUBSYS\disktsd.vxd
[00128A71] Dynamic load device C:\WINDOWS\system\IOSUBSYS\diskvsd.vxd
[00128A72] Dynamic load success C:\WINDOWS\system\IOSUBSYS\diskvsd.vxd
[00128A72] Dynamic load device C:\WINDOWS\system\IOSUBSYS\voltrack.vxd
[00128A73] Dynamic load success C:\WINDOWS\system\IOSUBSYS\voltrack.vxd
[00128A73] Dynamic load device C:\WINDOWS\system\IOSUBSYS\necatapi.vxd
[00128A74] Dynamic load success C:\WINDOWS\system\IOSUBSYS\necatapi.vxd
[00128A74] Dynamic load device C:\WINDOWS\system\IOSUBSYS\scsi1hlp.vxd
[00128A75] Dynamic load success C:\WINDOWS\system\IOSUBSYS\scsi1hlp.vxd
[00128A75] Dynamic load device C:\WINDOWS\system\IOSUBSYS\rmm.pdr
[00128A76] Dynamic load success C:\WINDOWS\system\IOSUBSYS\rmm.pdr
[00128A77] DEVICEINITSUCCESS = IOS
[00128A78] DEVICEINIT = PAGEFILE
[00128A78] DEVICEINITSUCCESS = PAGEFILE
[00128A78] DEVICEINIT = PAGESWAP
[00128A78] DEVICEINITSUCCESS = PAGESWAP
[00128A79] DEVICEINIT = PARITY
[00128A79] DEVICEINITSUCCESS = PARITY
[00128A79] DEVICEINIT = REBOOT
[00128A79] DEVICEINITSUCCESS = REBOOT
[00128A79] DEVICEINIT = EBIOS
[00128A7A] DEVICEINITSUCCESS = EBIOS
[00128A7A] DEVICEINIT = VDD
[00128A7C] DEVICEINITSUCCESS = VDD
[00128A7C] DEVICEINIT = VSD
[00128A7C] DEVICEINITSUCCESS = VSD
[00128A7C] DEVICEINIT = COMBUFF
[00128A7C] DEVICEINITSUCCESS = COMBUFF
[00128A7D] DEVICEINIT = VCD
[00128A7D] DEVICEINITSUCCESS = VCD
[00128A7E] DEVICEINIT = VMOUSE
[00128A7E] DEVICEINITSUCCESS = VMOUSE
[00128A7E] DEVICEINIT = MSMINI
[00128A80] DEVICEINITSUCCESS = MSMINI
[00128A81] DEVICEINIT = VKD
[00128A81] DEVICEINITSUCCESS = VKD
[00128A81] DEVICEINIT = ENABLE
[00128A81] DEVICEINITSUCCESS = ENABLE
[00128A81] DEVICEINIT = VPD
[00128A82] DEVICEINITSUCCESS = VPD
[00128A82] DEVICEINIT = INT13
[00128A82] DEVICEINITSUCCESS = INT13
[00128A82] DEVICEINIT = VMCPD
[00128A83] DEVICEINITSUCCESS = VMCPD
[00128A83] DEVICEINIT = BIOSXLAT
[00128A83] DEVICEINITSUCCESS = BIOSXLAT
[00128A83] DEVICEINIT = DOSMGR
[00128A84] DEVICEINITSUCCESS = DOSMGR
[00128A84] DEVICEINIT = VSHARE
[00128A84] DEVICEINITSUCCESS = VSHARE
[00128A84] DEVICEINIT = VMPOLL
[00128A85] DEVICEINITSUCCESS = VMPOLL
[00128A86] DEVICEINIT = VWIN32
[00128A86] DEVICEINITSUCCESS = VWIN32
[00128A86] DEVICEINIT = VCOMM
[00128A86] DEVICEINITSUCCESS = VCOMM
[00128A86] DEVICEINIT = VCOND
[00128A86] DEVICEINITSUCCESS = VCOND
[00128A87] DEVICEINIT = VTDAPI
[00128A87] DEVICEINITSUCCESS = VTDAPI
[00128A87] DEVICEINIT = VFLATD
[00128A87] DEVICEINITSUCCESS = VFLATD
[00128A88] DEVICEINIT = VDMAD
[00128A88] DEVICEINITSUCCESS = VDMAD
[00128A88] DEVICEINIT = V86MMGR
[00128A89] DEVICEINITSUCCESS = V86MMGR
[00128A89] DEVICEINIT = SPOOLER
[00128A89] DEVICEINITSUCCESS = SPOOLER
[00128A8A] DEVICEINIT = VFAT
[00128A8A] DEVICEINITSUCCESS = VFAT
[00128A8A] DEVICEINIT = VDEF
[00128A8A] DEVICEINITSUCCESS = VDEF
[00128A8C] Initing hsflop.pdr
[00128ADF] Init Success hsflop.pdr
[00128AE2] Initing esdi_506.pdr
[00128B7A] Init Success esdi_506.pdr
[00128C0F] Initing esdi_506.pdr
[00128C10] Init Success esdi_506.pdr
[00129024] INITCOMPLETE = VMM
[00129024] INITCOMPLETESUCCESS = VMM
[0012938D] INITCOMPLETE = VCACHE
[0012938F] INITCOMPLETESUCCESS = VCACHE
[0012938F] INITCOMPLETE = PERF
[00129390] INITCOMPLETESUCCESS = PERF
[00129390] INITCOMPLETE = VPICD
[00129390] INITCOMPLETESUCCESS = VPICD
[00129391] INITCOMPLETE = VTD
[00129391] INITCOMPLETESUCCESS = VTD
[00129391] INITCOMPLETE = VXDLDR
[00129391] INITCOMPLETESUCCESS = VXDLDR
[00129391] INITCOMPLETE = ISAPNP
[00129391] INITCOMPLETESUCCESS = ISAPNP
[00129391] INITCOMPLETE = CONFIGMG
[00129391] INITCOMPLETESUCCESS = CONFIGMG
[0012939A] INITCOMPLETE = VCDFSD
[0012939A] INITCOMPLETESUCCESS = VCDFSD
[0012939A] INITCOMPLETE = IOS
[0012A54D] INITCOMPLETESUCCESS = IOS
[0012A550] INITCOMPLETE = PAGEFILE
[0012A552] INITCOMPLETESUCCESS = PAGEFILE
[0012A552] INITCOMPLETE = PAGESWAP
[0012A552] INITCOMPLETESUCCESS = PAGESWAP
[0012A553] INITCOMPLETE = PARITY
[0012A553] INITCOMPLETESUCCESS = PARITY
[0012A553] INITCOMPLETE = REBOOT
[0012A553] INITCOMPLETESUCCESS = REBOOT
[0012A553] INITCOMPLETE = EBIOS
[0012A553] INITCOMPLETESUCCESS = EBIOS
[0012A553] INITCOMPLETE = VDD
[0012A553] INITCOMPLETESUCCESS = VDD
[0012A554] INITCOMPLETE = VSD
[0012A554] INITCOMPLETESUCCESS = VSD
[0012A554] INITCOMPLETE = COMBUFF
[0012A554] INITCOMPLETESUCCESS = COMBUFF
[0012A554] INITCOMPLETE = VCD
[0012A554] INITCOMPLETESUCCESS = VCD
[0012A554] INITCOMPLETE = VMOUSE
[0012A554] INITCOMPLETESUCCESS = VMOUSE
[0012A555] INITCOMPLETE = MSMINI
[0012A555] INITCOMPLETESUCCESS = MSMINI
[0012A555] INITCOMPLETE = VKD
[0012A555] INITCOMPLETESUCCESS = VKD
[0012A556] INITCOMPLETE = ENABLE
[0012A556] INITCOMPLETESUCCESS = ENABLE
[0012A58E] INITCOMPLETE = VPD
[0012A58E] INITCOMPLETESUCCESS = VPD
[0012A58E] INITCOMPLETE = INT13
[0012A58E] INITCOMPLETESUCCESS = INT13
[0012A58F] INITCOMPLETE = VMCPD
[0012A58F] INITCOMPLETESUCCESS = VMCPD
[0012A58F] INITCOMPLETE = BIOSXLAT
[0012A58F] INITCOMPLETESUCCESS = BIOSXLAT
[0012A58F] INITCOMPLETE = DOSMGR
[0012A745] INITCOMPLETESUCCESS = DOSMGR
[0012A745] INITCOMPLETE = VSHARE
[0012A745] INITCOMPLETESUCCESS = VSHARE
[0012A746] INITCOMPLETE = VMPOLL
[0012A746] INITCOMPLETESUCCESS = VMPOLL
[0012A746] INITCOMPLETE = VWIN32
[0012A747] INITCOMPLETESUCCESS = VWIN32
[0012A747] INITCOMPLETE = VCOMM
[0012A747] Dynamic load device serenum.vxd

It seems that it was one of two bugs:
- ATAPI status register is zeroed and other registers contain read-only values (only writable one being the command and I believe feature registers).
- SRST being set(from 0 to 1) needs to set the active drive to the Master of the used channel.
- A small NEG instruction 'fix' to set carry flag based on the input value(original value being negated) instead of the output value(the (~x)+1 value).

It's still booting, but at least it's passed said point now 😁

Edit: So far, lots of progress indeed, almost at the KERNEL:

[00128814] Loading Device = C:\WINDOWS\HIMEM.SYS
[00128816] LoadSuccess = C:\WINDOWS\HIMEM.SYS
[00128816] Loading Device = C:\WINDOWS\IFSHLP.SYS
[00128816] LoadSuccess = C:\WINDOWS\IFSHLP.SYS
[00128816] Loading Device = C:\WINDOWS\SETVER.EXE
[00128816] LoadSuccess = C:\WINDOWS\SETVER.EXE
[00128981] Loading Vxd = VMM
[00128994] LoadSuccess = VMM
[00128995] Loading Vxd = CONFIGMG
[0012899A] LoadSuccess = CONFIGMG
[0012899A] Loading Vxd = VSHARE
[0012899C] LoadSuccess = VSHARE
[0012899C] Loading Vxd = VWIN32
[0012899F] LoadSuccess = VWIN32
[001289A0] Loading Vxd = VFBACKUP
[001289A0] LoadSuccess = VFBACKUP
[001289A0] Loading Vxd = VCOMM
[001289A2] LoadSuccess = VCOMM
[001289A2] Loading Vxd = COMBUFF
[001289A2] LoadSuccess = COMBUFF
[001289A3] Loading Vxd = IFSMGR
[001289B0] LoadSuccess = IFSMGR
[001289B0] Loading Vxd = IOS
[001289B5] LoadSuccess = IOS
[001289B5] Loading Vxd = SPOOLER
[001289B7] LoadSuccess = SPOOLER
[001289B7] Loading Vxd = VFAT
[001289BC] LoadSuccess = VFAT
[001289BC] Loading Vxd = VCACHE
[001289BE] LoadSuccess = VCACHE
[001289BE] Loading Vxd = VCOND
[001289C0] LoadSuccess = VCOND
[001289C1] Loading Vxd = VCDFSD
[001289C2] LoadSuccess = VCDFSD
[001289C2] Loading Vxd = VXDLDR
[001289C3] LoadSuccess = VXDLDR
[001289C4] Loading Vxd = VDEF
[001289C4] LoadSuccess = VDEF
[001289C4] Loading Vxd = VPICD
[001289C6] LoadSuccess = VPICD
[001289C6] Loading Vxd = VTD
[001289C8] LoadSuccess = VTD
[001289C8] Loading Vxd = REBOOT
[001289C9] LoadSuccess = REBOOT
[001289C9] Loading Vxd = VDMAD
[001289CA] LoadSuccess = VDMAD
[001289CA] Loading Vxd = VSD
[001289CB] LoadSuccess = VSD
[001289CB] Loading Vxd = V86MMGR
[001289CF] LoadSuccess = V86MMGR
[001289CF] Loading Vxd = PAGESWAP
[001289D0] LoadSuccess = PAGESWAP
[001289D0] Loading Vxd = DOSMGR
[001289D5] LoadSuccess = DOSMGR
[001289D5] Loading Vxd = VMPOLL
[001289D6] LoadSuccess = VMPOLL
[001289D6] Loading Vxd = SHELL
[001289D9] LoadSuccess = SHELL
[001289D9] Loading Vxd = PARITY
[001289DA] LoadSuccess = PARITY
Show last 357 lines
[001289DA] Loading Vxd = BIOSXLAT
[001289DA] LoadSuccess = BIOSXLAT
[001289DB] Loading Vxd = VMCPD
[001289DB] LoadSuccess = VMCPD
[001289DB] Loading Vxd = VTDAPI
[001289DC] LoadSuccess = VTDAPI
[001289DC] Loading Vxd = PERF
[001289DD] LoadSuccess = PERF
[001289DE] Loading Vxd = ebios
[001289DE] LoadSuccess = ebios
[001289DE] Loading Vxd = vshare
[001289DF] LoadFailed = vshare
[001289DF] Loading Vxd = dynapage
[001289E1] LoadSuccess = dynapage
[001289E1] Loading Vxd = vcd
[001289E2] LoadSuccess = vcd
[001289E2] Loading Vxd = vpd
[001289E4] LoadSuccess = vpd
[001289E4] Loading Vxd = int13
[001289E4] LoadSuccess = int13
[001289E4] Loading Vxd = vdd
[001289E9] LoadSuccess = vdd
[001289E9] Loading Vxd = vflatd
[001289EA] LoadSuccess = vflatd
[001289EA] Loading Vxd = vmouse
[001289EC] LoadSuccess = vmouse
[001289EC] Loading Vxd = msmouse.vxd
[001289ED] LoadSuccess = msmouse.vxd
[001289ED] Loading Vxd = vkd
[001289EF] LoadSuccess = vkd
[001289EF] Loading Vxd = enable
[001289F1] LoadSuccess = enable
[001289F7] SYSCRITINIT = VMM
[001289F8] SYSCRITINITSUCCESS = VMM
[001289F8] SYSCRITINIT = VCACHE
[001289F8] SYSCRITINITSUCCESS = VCACHE
[001289F8] SYSCRITINIT = PERF
[001289F8] SYSCRITINITSUCCESS = PERF
[001289F8] SYSCRITINIT = VPICD
[001289F9] SYSCRITINITSUCCESS = VPICD
[001289F9] SYSCRITINIT = VTD
[001289F9] SYSCRITINITSUCCESS = VTD
[001289F9] SYSCRITINIT = VXDLDR
[001289F9] SYSCRITINITSUCCESS = VXDLDR
[001289FA] SYSCRITINIT = CONFIGMG
[001289FA] SYSCRITINITSUCCESS = CONFIGMG
[001289FA] SYSCRITINIT = VCDFSD
[001289FA] SYSCRITINITSUCCESS = VCDFSD
[001289FA] SYSCRITINIT = IOS
[001289FA] SYSCRITINITSUCCESS = IOS
[001289FB] SYSCRITINIT = PAGEFILE
[001289FB] SYSCRITINITSUCCESS = PAGEFILE
[001289FB] SYSCRITINIT = PAGESWAP
[001289FB] SYSCRITINITSUCCESS = PAGESWAP
[001289FB] SYSCRITINIT = PARITY
[001289FC] SYSCRITINITSUCCESS = PARITY
[001289FC] SYSCRITINIT = REBOOT
[001289FC] SYSCRITINITSUCCESS = REBOOT
[001289FC] SYSCRITINIT = EBIOS
[001289FC] SYSCRITINITSUCCESS = EBIOS
[001289FC] SYSCRITINIT = VDD
[001289FD] SYSCRITINITSUCCESS = VDD
[001289FD] SYSCRITINIT = VSD
[001289FD] SYSCRITINITSUCCESS = VSD
[001289FD] SYSCRITINIT = COMBUFF
[001289FD] SYSCRITINITSUCCESS = COMBUFF
[001289FD] SYSCRITINIT = VCD
[001289FE] SYSCRITINITSUCCESS = VCD
[001289FE] SYSCRITINIT = VMOUSE
[001289FE] SYSCRITINITSUCCESS = VMOUSE
[001289FE] SYSCRITINIT = MSMINI
[001289FE] SYSCRITINITSUCCESS = MSMINI
[001289FF] SYSCRITINIT = VKD
[001289FF] SYSCRITINITSUCCESS = VKD
[001289FF] SYSCRITINIT = ENABLE
[001289FF] SYSCRITINITSUCCESS = ENABLE
[001289FF] SYSCRITINIT = VPD
[00128A00] SYSCRITINITSUCCESS = VPD
[00128A00] SYSCRITINIT = INT13
[00128A00] SYSCRITINITSUCCESS = INT13
[00128A00] SYSCRITINIT = VMCPD
[00128A00] SYSCRITINITSUCCESS = VMCPD
[00128A00] SYSCRITINIT = BIOSXLAT
[00128A01] SYSCRITINITSUCCESS = BIOSXLAT
[00128A01] SYSCRITINIT = DOSMGR
[00128A01] SYSCRITINITSUCCESS = DOSMGR
[00128A01] SYSCRITINIT = VSHARE
[00128A01] SYSCRITINITSUCCESS = VSHARE
[00128A02] SYSCRITINIT = VMPOLL
[00128A02] SYSCRITINITSUCCESS = VMPOLL
[00128A02] SYSCRITINIT = VWIN32
[00128A02] SYSCRITINITSUCCESS = VWIN32
[00128A02] SYSCRITINIT = VCOMM
[00128A02] SYSCRITINITSUCCESS = VCOMM
[00128A03] SYSCRITINIT = VCOND
[00128A03] SYSCRITINITSUCCESS = VCOND
[00128A03] SYSCRITINIT = VTDAPI
[00128A03] SYSCRITINITSUCCESS = VTDAPI
[00128A03] SYSCRITINIT = VFLATD
[00128A04] SYSCRITINITSUCCESS = VFLATD
[00128A04] SYSCRITINIT = VDMAD
[00128A04] SYSCRITINITSUCCESS = VDMAD
[00128A04] SYSCRITINIT = V86MMGR
[00128A04] SYSCRITINITSUCCESS = V86MMGR
[00128A04] SYSCRITINIT = SPOOLER
[00128A05] SYSCRITINITSUCCESS = SPOOLER
[00128A05] SYSCRITINIT = VFAT
[00128A05] SYSCRITINITSUCCESS = VFAT
[00128A05] SYSCRITINIT = VDEF
[00128A05] SYSCRITINITSUCCESS = VDEF
[00128A06] SYSCRITINIT = IFSMGR
[00128A06] SYSCRITINITSUCCESS = IFSMGR
[00128A06] SYSCRITINIT = VFBACKUP
[00128A06] SYSCRITINITSUCCESS = VFBACKUP
[00128A06] SYSCRITINIT = SHELL
[00128A06] SYSCRITINITSUCCESS = SHELL
[00128A08] DEVICEINIT = VMM
[00128A08] DEVICEINITSUCCESS = VMM
[00128A08] DEVICEINIT = VCACHE
[00128A09] DEVICEINITSUCCESS = VCACHE
[00128A0A] DEVICEINIT = PERF
[00128A0A] DEVICEINITSUCCESS = PERF
[00128A0B] DEVICEINIT = VPICD
[00128A0B] DEVICEINITSUCCESS = VPICD
[00128A0B] DEVICEINIT = VTD
[00128A0B] DEVICEINITSUCCESS = VTD
[00128A2A] DEVICEINIT = VXDLDR
[00128A2A] DEVICEINITSUCCESS = VXDLDR
[00128A30] Dynamic load device isapnp.vxd
[00128A3A] Dynamic init device ISAPNP
[00128A3B] Dynamic init success ISAPNP
[00128A3B] Dynamic load success isapnp.vxd
[00128A3B] Dynamic load device mmdevldr.vxd
[00128A4B] Dynamic init device MMDEVLDR
[00128A4B] Dynamic init success MMDEVLDR
[00128A4B] Dynamic load success mmdevldr.vxd
[00128A4C] Dynamic load device vjoyd.vxd
[00128A4F] Dynamic init device VJOYD
[00128A4F] Dynamic init success VJOYD
[00128A50] Dynamic load success vjoyd.vxd
[00128A50] Dynamic load device mmdevldr.vxd
[00128A52] Dynamic load success mmdevldr.vxd
[00128A52] Dynamic load device msmpu401.vxd
[00128A55] Dynamic init device MSMPUVXD
[00128A55] Dynamic init success MSMPUVXD
[00128A56] Dynamic load success msmpu401.vxd
[00128A56] DEVICEINIT = CONFIGMG
[00128A58] DEVICEINITSUCCESS = CONFIGMG
[00128A58] DEVICEINIT = VCDFSD
[00128A58] DEVICEINITSUCCESS = VCDFSD
[00128A59] DEVICEINIT = IOS
[00128A6B] Dynamic load device C:\WINDOWS\system\IOSUBSYS\apix.vxd
[00128A6C] Dynamic load success C:\WINDOWS\system\IOSUBSYS\apix.vxd
[00128A6D] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdfs.vxd
[00128A6E] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdfs.vxd
[00128A6E] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdtsd.vxd
[00128A6F] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdtsd.vxd
[00128A6F] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdvsd.vxd
[00128A70] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdvsd.vxd
[00128A70] Dynamic load device C:\WINDOWS\system\IOSUBSYS\disktsd.vxd
[00128A71] Dynamic load success C:\WINDOWS\system\IOSUBSYS\disktsd.vxd
[00128A71] Dynamic load device C:\WINDOWS\system\IOSUBSYS\diskvsd.vxd
[00128A72] Dynamic load success C:\WINDOWS\system\IOSUBSYS\diskvsd.vxd
[00128A72] Dynamic load device C:\WINDOWS\system\IOSUBSYS\voltrack.vxd
[00128A73] Dynamic load success C:\WINDOWS\system\IOSUBSYS\voltrack.vxd
[00128A73] Dynamic load device C:\WINDOWS\system\IOSUBSYS\necatapi.vxd
[00128A74] Dynamic load success C:\WINDOWS\system\IOSUBSYS\necatapi.vxd
[00128A74] Dynamic load device C:\WINDOWS\system\IOSUBSYS\scsi1hlp.vxd
[00128A75] Dynamic load success C:\WINDOWS\system\IOSUBSYS\scsi1hlp.vxd
[00128A75] Dynamic load device C:\WINDOWS\system\IOSUBSYS\rmm.pdr
[00128A76] Dynamic load success C:\WINDOWS\system\IOSUBSYS\rmm.pdr
[00128A77] DEVICEINITSUCCESS = IOS
[00128A78] DEVICEINIT = PAGEFILE
[00128A78] DEVICEINITSUCCESS = PAGEFILE
[00128A78] DEVICEINIT = PAGESWAP
[00128A78] DEVICEINITSUCCESS = PAGESWAP
[00128A79] DEVICEINIT = PARITY
[00128A79] DEVICEINITSUCCESS = PARITY
[00128A79] DEVICEINIT = REBOOT
[00128A79] DEVICEINITSUCCESS = REBOOT
[00128A79] DEVICEINIT = EBIOS
[00128A7A] DEVICEINITSUCCESS = EBIOS
[00128A7A] DEVICEINIT = VDD
[00128A7C] DEVICEINITSUCCESS = VDD
[00128A7C] DEVICEINIT = VSD
[00128A7C] DEVICEINITSUCCESS = VSD
[00128A7C] DEVICEINIT = COMBUFF
[00128A7C] DEVICEINITSUCCESS = COMBUFF
[00128A7D] DEVICEINIT = VCD
[00128A7D] DEVICEINITSUCCESS = VCD
[00128A7E] DEVICEINIT = VMOUSE
[00128A7E] DEVICEINITSUCCESS = VMOUSE
[00128A7E] DEVICEINIT = MSMINI
[00128A80] DEVICEINITSUCCESS = MSMINI
[00128A81] DEVICEINIT = VKD
[00128A81] DEVICEINITSUCCESS = VKD
[00128A81] DEVICEINIT = ENABLE
[00128A81] DEVICEINITSUCCESS = ENABLE
[00128A81] DEVICEINIT = VPD
[00128A82] DEVICEINITSUCCESS = VPD
[00128A82] DEVICEINIT = INT13
[00128A82] DEVICEINITSUCCESS = INT13
[00128A82] DEVICEINIT = VMCPD
[00128A83] DEVICEINITSUCCESS = VMCPD
[00128A83] DEVICEINIT = BIOSXLAT
[00128A83] DEVICEINITSUCCESS = BIOSXLAT
[00128A83] DEVICEINIT = DOSMGR
[00128A84] DEVICEINITSUCCESS = DOSMGR
[00128A84] DEVICEINIT = VSHARE
[00128A84] DEVICEINITSUCCESS = VSHARE
[00128A84] DEVICEINIT = VMPOLL
[00128A85] DEVICEINITSUCCESS = VMPOLL
[00128A86] DEVICEINIT = VWIN32
[00128A86] DEVICEINITSUCCESS = VWIN32
[00128A86] DEVICEINIT = VCOMM
[00128A86] DEVICEINITSUCCESS = VCOMM
[00128A86] DEVICEINIT = VCOND
[00128A86] DEVICEINITSUCCESS = VCOND
[00128A87] DEVICEINIT = VTDAPI
[00128A87] DEVICEINITSUCCESS = VTDAPI
[00128A87] DEVICEINIT = VFLATD
[00128A87] DEVICEINITSUCCESS = VFLATD
[00128A88] DEVICEINIT = VDMAD
[00128A88] DEVICEINITSUCCESS = VDMAD
[00128A88] DEVICEINIT = V86MMGR
[00128A89] DEVICEINITSUCCESS = V86MMGR
[00128A89] DEVICEINIT = SPOOLER
[00128A89] DEVICEINITSUCCESS = SPOOLER
[00128A8A] DEVICEINIT = VFAT
[00128A8A] DEVICEINITSUCCESS = VFAT
[00128A8A] DEVICEINIT = VDEF
[00128A8A] DEVICEINITSUCCESS = VDEF
[00128A8C] Initing hsflop.pdr
[00128ADF] Init Success hsflop.pdr
[00128AE2] Initing esdi_506.pdr
[00128B7A] Init Success esdi_506.pdr
[00128C0F] Initing esdi_506.pdr
[00128C10] Init Success esdi_506.pdr
[00129024] INITCOMPLETE = VMM
[00129024] INITCOMPLETESUCCESS = VMM
[0012938D] INITCOMPLETE = VCACHE
[0012938F] INITCOMPLETESUCCESS = VCACHE
[0012938F] INITCOMPLETE = PERF
[00129390] INITCOMPLETESUCCESS = PERF
[00129390] INITCOMPLETE = VPICD
[00129390] INITCOMPLETESUCCESS = VPICD
[00129391] INITCOMPLETE = VTD
[00129391] INITCOMPLETESUCCESS = VTD
[00129391] INITCOMPLETE = VXDLDR
[00129391] INITCOMPLETESUCCESS = VXDLDR
[00129391] INITCOMPLETE = ISAPNP
[00129391] INITCOMPLETESUCCESS = ISAPNP
[00129391] INITCOMPLETE = CONFIGMG
[00129391] INITCOMPLETESUCCESS = CONFIGMG
[0012939A] INITCOMPLETE = VCDFSD
[0012939A] INITCOMPLETESUCCESS = VCDFSD
[0012939A] INITCOMPLETE = IOS
[0012A54D] INITCOMPLETESUCCESS = IOS
[0012A550] INITCOMPLETE = PAGEFILE
[0012A552] INITCOMPLETESUCCESS = PAGEFILE
[0012A552] INITCOMPLETE = PAGESWAP
[0012A552] INITCOMPLETESUCCESS = PAGESWAP
[0012A553] INITCOMPLETE = PARITY
[0012A553] INITCOMPLETESUCCESS = PARITY
[0012A553] INITCOMPLETE = REBOOT
[0012A553] INITCOMPLETESUCCESS = REBOOT
[0012A553] INITCOMPLETE = EBIOS
[0012A553] INITCOMPLETESUCCESS = EBIOS
[0012A553] INITCOMPLETE = VDD
[0012A553] INITCOMPLETESUCCESS = VDD
[0012A554] INITCOMPLETE = VSD
[0012A554] INITCOMPLETESUCCESS = VSD
[0012A554] INITCOMPLETE = COMBUFF
[0012A554] INITCOMPLETESUCCESS = COMBUFF
[0012A554] INITCOMPLETE = VCD
[0012A554] INITCOMPLETESUCCESS = VCD
[0012A554] INITCOMPLETE = VMOUSE
[0012A554] INITCOMPLETESUCCESS = VMOUSE
[0012A555] INITCOMPLETE = MSMINI
[0012A555] INITCOMPLETESUCCESS = MSMINI
[0012A555] INITCOMPLETE = VKD
[0012A555] INITCOMPLETESUCCESS = VKD
[0012A556] INITCOMPLETE = ENABLE
[0012A556] INITCOMPLETESUCCESS = ENABLE
[0012A58E] INITCOMPLETE = VPD
[0012A58E] INITCOMPLETESUCCESS = VPD
[0012A58E] INITCOMPLETE = INT13
[0012A58E] INITCOMPLETESUCCESS = INT13
[0012A58F] INITCOMPLETE = VMCPD
[0012A58F] INITCOMPLETESUCCESS = VMCPD
[0012A58F] INITCOMPLETE = BIOSXLAT
[0012A58F] INITCOMPLETESUCCESS = BIOSXLAT
[0012A58F] INITCOMPLETE = DOSMGR
[0012A745] INITCOMPLETESUCCESS = DOSMGR
[0012A745] INITCOMPLETE = VSHARE
[0012A745] INITCOMPLETESUCCESS = VSHARE
[0012A746] INITCOMPLETE = VMPOLL
[0012A746] INITCOMPLETESUCCESS = VMPOLL
[0012A746] INITCOMPLETE = VWIN32
[0012A747] INITCOMPLETESUCCESS = VWIN32
[0012A747] INITCOMPLETE = VCOMM
[0012A747] Dynamic load device serenum.vxd
[0012A98E] Dynamic init device SERENUM
[0012A98F] Dynamic init success SERENUM
[0012A98F] Dynamic load success serenum.vxd
[0012A98F] Dynamic load device serenum.vxd
[0012A991] Dynamic load success serenum.vxd
[0012A992] Dynamic load device lptenum.vxd
[0012ABD7] Dynamic init device LPTENUM
[0012ABD8] Dynamic init success LPTENUM
[0012ABD8] Dynamic load success lptenum.vxd
[0012ABD8] INITCOMPLETESUCCESS = VCOMM
[0012ABD8] Dynamic load device C:\WINDOWS\system\serial.vxd
[0012AEB2] Dynamic init device SERIAL
[0012AEB2] Dynamic init success SERIAL
[0012AEB3] Dynamic load success C:\WINDOWS\system\serial.vxd
[0012AEBD] INITCOMPLETE = VCOND
[0012AEC0] INITCOMPLETESUCCESS = VCOND
[0012AEC0] INITCOMPLETE = VTDAPI
[0012AEC0] INITCOMPLETESUCCESS = VTDAPI
[0012AEC0] INITCOMPLETE = VFLATD
[0012AEC0] INITCOMPLETESUCCESS = VFLATD
[0012AEC0] INITCOMPLETE = mmdevldr
[0012AEC0] INITCOMPLETESUCCESS = mmdevldr
[0012AEC0] INITCOMPLETE = vjoyd
[0012AEC0] INITCOMPLETESUCCESS = vjoyd
[0012AEC0] INITCOMPLETE = msmpu401
[0012AEC0] INITCOMPLETESUCCESS = msmpu401
[0012AEC1] INITCOMPLETE = DiskTSD
[0012AEC1] INITCOMPLETESUCCESS = DiskTSD
[0012AEC1] INITCOMPLETE = voltrack
[0012AEC1] INITCOMPLETESUCCESS = voltrack
[0012AEC1] INITCOMPLETE = HSFLOP
[0012AEC1] INITCOMPLETESUCCESS = HSFLOP
[0012AEC1] INITCOMPLETE = ESDI_506
[0012AEC1] INITCOMPLETESUCCESS = ESDI_506
[0012AEC1] INITCOMPLETE = SERENUM
[0012AEC2] INITCOMPLETESUCCESS = SERENUM
[0012AEC2] INITCOMPLETE = LPTENUM
[0012AEC2] INITCOMPLETESUCCESS = LPTENUM
[0012AEC2] INITCOMPLETE = VDMAD
[0012AEC2] INITCOMPLETESUCCESS = VDMAD
[0012AEC3] INITCOMPLETE = V86MMGR
[0012AEC3] INITCOMPLETESUCCESS = V86MMGR
[0012AEC3] INITCOMPLETE = SPOOLER
[0012AEC3] INITCOMPLETESUCCESS = SPOOLER
[0012AEC3] INITCOMPLETE = VFAT
[0012AEC3] INITCOMPLETESUCCESS = VFAT
[0012AECA] INITCOMPLETE = VDEF
[0012AECA] INITCOMPLETESUCCESS = VDEF
[0012AECA] INITCOMPLETE = IFSMGR
[0012AECA] INITCOMPLETESUCCESS = IFSMGR
[0012AECB] INITCOMPLETE = VFBACKUP
[0012AECB] INITCOMPLETESUCCESS = VFBACKUP
[0012AECB] INITCOMPLETE = SHELL
[0012AECB] INITCOMPLETESUCCESS = SHELL

Still running, though.

Edit: It seems said problem with the drivers is fixed now:D
Bootlog is now getting until the Windows 'KERNEL' being initialized, at which point it crashes at the same address as the Safe Mode boot.

[00128814] Loading Device = C:\WINDOWS\HIMEM.SYS
[00128816] LoadSuccess = C:\WINDOWS\HIMEM.SYS
[00128816] Loading Device = C:\WINDOWS\IFSHLP.SYS
[00128816] LoadSuccess = C:\WINDOWS\IFSHLP.SYS
[00128816] Loading Device = C:\WINDOWS\SETVER.EXE
[00128816] LoadSuccess = C:\WINDOWS\SETVER.EXE
[00128981] Loading Vxd = VMM
[00128994] LoadSuccess = VMM
[00128995] Loading Vxd = CONFIGMG
[0012899A] LoadSuccess = CONFIGMG
[0012899A] Loading Vxd = VSHARE
[0012899C] LoadSuccess = VSHARE
[0012899C] Loading Vxd = VWIN32
[0012899F] LoadSuccess = VWIN32
[001289A0] Loading Vxd = VFBACKUP
[001289A0] LoadSuccess = VFBACKUP
[001289A0] Loading Vxd = VCOMM
[001289A2] LoadSuccess = VCOMM
[001289A2] Loading Vxd = COMBUFF
[001289A2] LoadSuccess = COMBUFF
[001289A3] Loading Vxd = IFSMGR
[001289B0] LoadSuccess = IFSMGR
[001289B0] Loading Vxd = IOS
[001289B5] LoadSuccess = IOS
[001289B5] Loading Vxd = SPOOLER
[001289B7] LoadSuccess = SPOOLER
[001289B7] Loading Vxd = VFAT
[001289BC] LoadSuccess = VFAT
[001289BC] Loading Vxd = VCACHE
[001289BE] LoadSuccess = VCACHE
[001289BE] Loading Vxd = VCOND
[001289C0] LoadSuccess = VCOND
[001289C1] Loading Vxd = VCDFSD
[001289C2] LoadSuccess = VCDFSD
[001289C2] Loading Vxd = VXDLDR
[001289C3] LoadSuccess = VXDLDR
[001289C4] Loading Vxd = VDEF
[001289C4] LoadSuccess = VDEF
[001289C4] Loading Vxd = VPICD
[001289C6] LoadSuccess = VPICD
[001289C6] Loading Vxd = VTD
[001289C8] LoadSuccess = VTD
[001289C8] Loading Vxd = REBOOT
[001289C9] LoadSuccess = REBOOT
[001289C9] Loading Vxd = VDMAD
[001289CA] LoadSuccess = VDMAD
[001289CA] Loading Vxd = VSD
[001289CB] LoadSuccess = VSD
[001289CB] Loading Vxd = V86MMGR
[001289CF] LoadSuccess = V86MMGR
[001289CF] Loading Vxd = PAGESWAP
[001289D0] LoadSuccess = PAGESWAP
[001289D0] Loading Vxd = DOSMGR
[001289D5] LoadSuccess = DOSMGR
[001289D5] Loading Vxd = VMPOLL
[001289D6] LoadSuccess = VMPOLL
[001289D6] Loading Vxd = SHELL
[001289D9] LoadSuccess = SHELL
[001289D9] Loading Vxd = PARITY
[001289DA] LoadSuccess = PARITY
Show last 358 lines
[001289DA] Loading Vxd = BIOSXLAT
[001289DA] LoadSuccess = BIOSXLAT
[001289DB] Loading Vxd = VMCPD
[001289DB] LoadSuccess = VMCPD
[001289DB] Loading Vxd = VTDAPI
[001289DC] LoadSuccess = VTDAPI
[001289DC] Loading Vxd = PERF
[001289DD] LoadSuccess = PERF
[001289DE] Loading Vxd = ebios
[001289DE] LoadSuccess = ebios
[001289DE] Loading Vxd = vshare
[001289DF] LoadFailed = vshare
[001289DF] Loading Vxd = dynapage
[001289E1] LoadSuccess = dynapage
[001289E1] Loading Vxd = vcd
[001289E2] LoadSuccess = vcd
[001289E2] Loading Vxd = vpd
[001289E4] LoadSuccess = vpd
[001289E4] Loading Vxd = int13
[001289E4] LoadSuccess = int13
[001289E4] Loading Vxd = vdd
[001289E9] LoadSuccess = vdd
[001289E9] Loading Vxd = vflatd
[001289EA] LoadSuccess = vflatd
[001289EA] Loading Vxd = vmouse
[001289EC] LoadSuccess = vmouse
[001289EC] Loading Vxd = msmouse.vxd
[001289ED] LoadSuccess = msmouse.vxd
[001289ED] Loading Vxd = vkd
[001289EF] LoadSuccess = vkd
[001289EF] Loading Vxd = enable
[001289F1] LoadSuccess = enable
[001289F7] SYSCRITINIT = VMM
[001289F8] SYSCRITINITSUCCESS = VMM
[001289F8] SYSCRITINIT = VCACHE
[001289F8] SYSCRITINITSUCCESS = VCACHE
[001289F8] SYSCRITINIT = PERF
[001289F8] SYSCRITINITSUCCESS = PERF
[001289F8] SYSCRITINIT = VPICD
[001289F9] SYSCRITINITSUCCESS = VPICD
[001289F9] SYSCRITINIT = VTD
[001289F9] SYSCRITINITSUCCESS = VTD
[001289F9] SYSCRITINIT = VXDLDR
[001289F9] SYSCRITINITSUCCESS = VXDLDR
[001289FA] SYSCRITINIT = CONFIGMG
[001289FA] SYSCRITINITSUCCESS = CONFIGMG
[001289FA] SYSCRITINIT = VCDFSD
[001289FA] SYSCRITINITSUCCESS = VCDFSD
[001289FA] SYSCRITINIT = IOS
[001289FA] SYSCRITINITSUCCESS = IOS
[001289FB] SYSCRITINIT = PAGEFILE
[001289FB] SYSCRITINITSUCCESS = PAGEFILE
[001289FB] SYSCRITINIT = PAGESWAP
[001289FB] SYSCRITINITSUCCESS = PAGESWAP
[001289FB] SYSCRITINIT = PARITY
[001289FC] SYSCRITINITSUCCESS = PARITY
[001289FC] SYSCRITINIT = REBOOT
[001289FC] SYSCRITINITSUCCESS = REBOOT
[001289FC] SYSCRITINIT = EBIOS
[001289FC] SYSCRITINITSUCCESS = EBIOS
[001289FC] SYSCRITINIT = VDD
[001289FD] SYSCRITINITSUCCESS = VDD
[001289FD] SYSCRITINIT = VSD
[001289FD] SYSCRITINITSUCCESS = VSD
[001289FD] SYSCRITINIT = COMBUFF
[001289FD] SYSCRITINITSUCCESS = COMBUFF
[001289FD] SYSCRITINIT = VCD
[001289FE] SYSCRITINITSUCCESS = VCD
[001289FE] SYSCRITINIT = VMOUSE
[001289FE] SYSCRITINITSUCCESS = VMOUSE
[001289FE] SYSCRITINIT = MSMINI
[001289FE] SYSCRITINITSUCCESS = MSMINI
[001289FF] SYSCRITINIT = VKD
[001289FF] SYSCRITINITSUCCESS = VKD
[001289FF] SYSCRITINIT = ENABLE
[001289FF] SYSCRITINITSUCCESS = ENABLE
[001289FF] SYSCRITINIT = VPD
[00128A00] SYSCRITINITSUCCESS = VPD
[00128A00] SYSCRITINIT = INT13
[00128A00] SYSCRITINITSUCCESS = INT13
[00128A00] SYSCRITINIT = VMCPD
[00128A00] SYSCRITINITSUCCESS = VMCPD
[00128A00] SYSCRITINIT = BIOSXLAT
[00128A01] SYSCRITINITSUCCESS = BIOSXLAT
[00128A01] SYSCRITINIT = DOSMGR
[00128A01] SYSCRITINITSUCCESS = DOSMGR
[00128A01] SYSCRITINIT = VSHARE
[00128A01] SYSCRITINITSUCCESS = VSHARE
[00128A02] SYSCRITINIT = VMPOLL
[00128A02] SYSCRITINITSUCCESS = VMPOLL
[00128A02] SYSCRITINIT = VWIN32
[00128A02] SYSCRITINITSUCCESS = VWIN32
[00128A02] SYSCRITINIT = VCOMM
[00128A02] SYSCRITINITSUCCESS = VCOMM
[00128A03] SYSCRITINIT = VCOND
[00128A03] SYSCRITINITSUCCESS = VCOND
[00128A03] SYSCRITINIT = VTDAPI
[00128A03] SYSCRITINITSUCCESS = VTDAPI
[00128A03] SYSCRITINIT = VFLATD
[00128A04] SYSCRITINITSUCCESS = VFLATD
[00128A04] SYSCRITINIT = VDMAD
[00128A04] SYSCRITINITSUCCESS = VDMAD
[00128A04] SYSCRITINIT = V86MMGR
[00128A04] SYSCRITINITSUCCESS = V86MMGR
[00128A04] SYSCRITINIT = SPOOLER
[00128A05] SYSCRITINITSUCCESS = SPOOLER
[00128A05] SYSCRITINIT = VFAT
[00128A05] SYSCRITINITSUCCESS = VFAT
[00128A05] SYSCRITINIT = VDEF
[00128A05] SYSCRITINITSUCCESS = VDEF
[00128A06] SYSCRITINIT = IFSMGR
[00128A06] SYSCRITINITSUCCESS = IFSMGR
[00128A06] SYSCRITINIT = VFBACKUP
[00128A06] SYSCRITINITSUCCESS = VFBACKUP
[00128A06] SYSCRITINIT = SHELL
[00128A06] SYSCRITINITSUCCESS = SHELL
[00128A08] DEVICEINIT = VMM
[00128A08] DEVICEINITSUCCESS = VMM
[00128A08] DEVICEINIT = VCACHE
[00128A09] DEVICEINITSUCCESS = VCACHE
[00128A0A] DEVICEINIT = PERF
[00128A0A] DEVICEINITSUCCESS = PERF
[00128A0B] DEVICEINIT = VPICD
[00128A0B] DEVICEINITSUCCESS = VPICD
[00128A0B] DEVICEINIT = VTD
[00128A0B] DEVICEINITSUCCESS = VTD
[00128A2A] DEVICEINIT = VXDLDR
[00128A2A] DEVICEINITSUCCESS = VXDLDR
[00128A30] Dynamic load device isapnp.vxd
[00128A3A] Dynamic init device ISAPNP
[00128A3B] Dynamic init success ISAPNP
[00128A3B] Dynamic load success isapnp.vxd
[00128A3B] Dynamic load device mmdevldr.vxd
[00128A4B] Dynamic init device MMDEVLDR
[00128A4B] Dynamic init success MMDEVLDR
[00128A4B] Dynamic load success mmdevldr.vxd
[00128A4C] Dynamic load device vjoyd.vxd
[00128A4F] Dynamic init device VJOYD
[00128A4F] Dynamic init success VJOYD
[00128A50] Dynamic load success vjoyd.vxd
[00128A50] Dynamic load device mmdevldr.vxd
[00128A52] Dynamic load success mmdevldr.vxd
[00128A52] Dynamic load device msmpu401.vxd
[00128A55] Dynamic init device MSMPUVXD
[00128A55] Dynamic init success MSMPUVXD
[00128A56] Dynamic load success msmpu401.vxd
[00128A56] DEVICEINIT = CONFIGMG
[00128A58] DEVICEINITSUCCESS = CONFIGMG
[00128A58] DEVICEINIT = VCDFSD
[00128A58] DEVICEINITSUCCESS = VCDFSD
[00128A59] DEVICEINIT = IOS
[00128A6B] Dynamic load device C:\WINDOWS\system\IOSUBSYS\apix.vxd
[00128A6C] Dynamic load success C:\WINDOWS\system\IOSUBSYS\apix.vxd
[00128A6D] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdfs.vxd
[00128A6E] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdfs.vxd
[00128A6E] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdtsd.vxd
[00128A6F] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdtsd.vxd
[00128A6F] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdvsd.vxd
[00128A70] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdvsd.vxd
[00128A70] Dynamic load device C:\WINDOWS\system\IOSUBSYS\disktsd.vxd
[00128A71] Dynamic load success C:\WINDOWS\system\IOSUBSYS\disktsd.vxd
[00128A71] Dynamic load device C:\WINDOWS\system\IOSUBSYS\diskvsd.vxd
[00128A72] Dynamic load success C:\WINDOWS\system\IOSUBSYS\diskvsd.vxd
[00128A72] Dynamic load device C:\WINDOWS\system\IOSUBSYS\voltrack.vxd
[00128A73] Dynamic load success C:\WINDOWS\system\IOSUBSYS\voltrack.vxd
[00128A73] Dynamic load device C:\WINDOWS\system\IOSUBSYS\necatapi.vxd
[00128A74] Dynamic load success C:\WINDOWS\system\IOSUBSYS\necatapi.vxd
[00128A74] Dynamic load device C:\WINDOWS\system\IOSUBSYS\scsi1hlp.vxd
[00128A75] Dynamic load success C:\WINDOWS\system\IOSUBSYS\scsi1hlp.vxd
[00128A75] Dynamic load device C:\WINDOWS\system\IOSUBSYS\rmm.pdr
[00128A76] Dynamic load success C:\WINDOWS\system\IOSUBSYS\rmm.pdr
[00128A77] DEVICEINITSUCCESS = IOS
[00128A78] DEVICEINIT = PAGEFILE
[00128A78] DEVICEINITSUCCESS = PAGEFILE
[00128A78] DEVICEINIT = PAGESWAP
[00128A78] DEVICEINITSUCCESS = PAGESWAP
[00128A79] DEVICEINIT = PARITY
[00128A79] DEVICEINITSUCCESS = PARITY
[00128A79] DEVICEINIT = REBOOT
[00128A79] DEVICEINITSUCCESS = REBOOT
[00128A79] DEVICEINIT = EBIOS
[00128A7A] DEVICEINITSUCCESS = EBIOS
[00128A7A] DEVICEINIT = VDD
[00128A7C] DEVICEINITSUCCESS = VDD
[00128A7C] DEVICEINIT = VSD
[00128A7C] DEVICEINITSUCCESS = VSD
[00128A7C] DEVICEINIT = COMBUFF
[00128A7C] DEVICEINITSUCCESS = COMBUFF
[00128A7D] DEVICEINIT = VCD
[00128A7D] DEVICEINITSUCCESS = VCD
[00128A7E] DEVICEINIT = VMOUSE
[00128A7E] DEVICEINITSUCCESS = VMOUSE
[00128A7E] DEVICEINIT = MSMINI
[00128A80] DEVICEINITSUCCESS = MSMINI
[00128A81] DEVICEINIT = VKD
[00128A81] DEVICEINITSUCCESS = VKD
[00128A81] DEVICEINIT = ENABLE
[00128A81] DEVICEINITSUCCESS = ENABLE
[00128A81] DEVICEINIT = VPD
[00128A82] DEVICEINITSUCCESS = VPD
[00128A82] DEVICEINIT = INT13
[00128A82] DEVICEINITSUCCESS = INT13
[00128A82] DEVICEINIT = VMCPD
[00128A83] DEVICEINITSUCCESS = VMCPD
[00128A83] DEVICEINIT = BIOSXLAT
[00128A83] DEVICEINITSUCCESS = BIOSXLAT
[00128A83] DEVICEINIT = DOSMGR
[00128A84] DEVICEINITSUCCESS = DOSMGR
[00128A84] DEVICEINIT = VSHARE
[00128A84] DEVICEINITSUCCESS = VSHARE
[00128A84] DEVICEINIT = VMPOLL
[00128A85] DEVICEINITSUCCESS = VMPOLL
[00128A86] DEVICEINIT = VWIN32
[00128A86] DEVICEINITSUCCESS = VWIN32
[00128A86] DEVICEINIT = VCOMM
[00128A86] DEVICEINITSUCCESS = VCOMM
[00128A86] DEVICEINIT = VCOND
[00128A86] DEVICEINITSUCCESS = VCOND
[00128A87] DEVICEINIT = VTDAPI
[00128A87] DEVICEINITSUCCESS = VTDAPI
[00128A87] DEVICEINIT = VFLATD
[00128A87] DEVICEINITSUCCESS = VFLATD
[00128A88] DEVICEINIT = VDMAD
[00128A88] DEVICEINITSUCCESS = VDMAD
[00128A88] DEVICEINIT = V86MMGR
[00128A89] DEVICEINITSUCCESS = V86MMGR
[00128A89] DEVICEINIT = SPOOLER
[00128A89] DEVICEINITSUCCESS = SPOOLER
[00128A8A] DEVICEINIT = VFAT
[00128A8A] DEVICEINITSUCCESS = VFAT
[00128A8A] DEVICEINIT = VDEF
[00128A8A] DEVICEINITSUCCESS = VDEF
[00128A8C] Initing hsflop.pdr
[00128ADF] Init Success hsflop.pdr
[00128AE2] Initing esdi_506.pdr
[00128B7A] Init Success esdi_506.pdr
[00128C0F] Initing esdi_506.pdr
[00128C10] Init Success esdi_506.pdr
[00129024] INITCOMPLETE = VMM
[00129024] INITCOMPLETESUCCESS = VMM
[0012938D] INITCOMPLETE = VCACHE
[0012938F] INITCOMPLETESUCCESS = VCACHE
[0012938F] INITCOMPLETE = PERF
[00129390] INITCOMPLETESUCCESS = PERF
[00129390] INITCOMPLETE = VPICD
[00129390] INITCOMPLETESUCCESS = VPICD
[00129391] INITCOMPLETE = VTD
[00129391] INITCOMPLETESUCCESS = VTD
[00129391] INITCOMPLETE = VXDLDR
[00129391] INITCOMPLETESUCCESS = VXDLDR
[00129391] INITCOMPLETE = ISAPNP
[00129391] INITCOMPLETESUCCESS = ISAPNP
[00129391] INITCOMPLETE = CONFIGMG
[00129391] INITCOMPLETESUCCESS = CONFIGMG
[0012939A] INITCOMPLETE = VCDFSD
[0012939A] INITCOMPLETESUCCESS = VCDFSD
[0012939A] INITCOMPLETE = IOS
[0012A54D] INITCOMPLETESUCCESS = IOS
[0012A550] INITCOMPLETE = PAGEFILE
[0012A552] INITCOMPLETESUCCESS = PAGEFILE
[0012A552] INITCOMPLETE = PAGESWAP
[0012A552] INITCOMPLETESUCCESS = PAGESWAP
[0012A553] INITCOMPLETE = PARITY
[0012A553] INITCOMPLETESUCCESS = PARITY
[0012A553] INITCOMPLETE = REBOOT
[0012A553] INITCOMPLETESUCCESS = REBOOT
[0012A553] INITCOMPLETE = EBIOS
[0012A553] INITCOMPLETESUCCESS = EBIOS
[0012A553] INITCOMPLETE = VDD
[0012A553] INITCOMPLETESUCCESS = VDD
[0012A554] INITCOMPLETE = VSD
[0012A554] INITCOMPLETESUCCESS = VSD
[0012A554] INITCOMPLETE = COMBUFF
[0012A554] INITCOMPLETESUCCESS = COMBUFF
[0012A554] INITCOMPLETE = VCD
[0012A554] INITCOMPLETESUCCESS = VCD
[0012A554] INITCOMPLETE = VMOUSE
[0012A554] INITCOMPLETESUCCESS = VMOUSE
[0012A555] INITCOMPLETE = MSMINI
[0012A555] INITCOMPLETESUCCESS = MSMINI
[0012A555] INITCOMPLETE = VKD
[0012A555] INITCOMPLETESUCCESS = VKD
[0012A556] INITCOMPLETE = ENABLE
[0012A556] INITCOMPLETESUCCESS = ENABLE
[0012A58E] INITCOMPLETE = VPD
[0012A58E] INITCOMPLETESUCCESS = VPD
[0012A58E] INITCOMPLETE = INT13
[0012A58E] INITCOMPLETESUCCESS = INT13
[0012A58F] INITCOMPLETE = VMCPD
[0012A58F] INITCOMPLETESUCCESS = VMCPD
[0012A58F] INITCOMPLETE = BIOSXLAT
[0012A58F] INITCOMPLETESUCCESS = BIOSXLAT
[0012A58F] INITCOMPLETE = DOSMGR
[0012A745] INITCOMPLETESUCCESS = DOSMGR
[0012A745] INITCOMPLETE = VSHARE
[0012A745] INITCOMPLETESUCCESS = VSHARE
[0012A746] INITCOMPLETE = VMPOLL
[0012A746] INITCOMPLETESUCCESS = VMPOLL
[0012A746] INITCOMPLETE = VWIN32
[0012A747] INITCOMPLETESUCCESS = VWIN32
[0012A747] INITCOMPLETE = VCOMM
[0012A747] Dynamic load device serenum.vxd
[0012A98E] Dynamic init device SERENUM
[0012A98F] Dynamic init success SERENUM
[0012A98F] Dynamic load success serenum.vxd
[0012A98F] Dynamic load device serenum.vxd
[0012A991] Dynamic load success serenum.vxd
[0012A992] Dynamic load device lptenum.vxd
[0012ABD7] Dynamic init device LPTENUM
[0012ABD8] Dynamic init success LPTENUM
[0012ABD8] Dynamic load success lptenum.vxd
[0012ABD8] INITCOMPLETESUCCESS = VCOMM
[0012ABD8] Dynamic load device C:\WINDOWS\system\serial.vxd
[0012AEB2] Dynamic init device SERIAL
[0012AEB2] Dynamic init success SERIAL
[0012AEB3] Dynamic load success C:\WINDOWS\system\serial.vxd
[0012AEBD] INITCOMPLETE = VCOND
[0012AEC0] INITCOMPLETESUCCESS = VCOND
[0012AEC0] INITCOMPLETE = VTDAPI
[0012AEC0] INITCOMPLETESUCCESS = VTDAPI
[0012AEC0] INITCOMPLETE = VFLATD
[0012AEC0] INITCOMPLETESUCCESS = VFLATD
[0012AEC0] INITCOMPLETE = mmdevldr
[0012AEC0] INITCOMPLETESUCCESS = mmdevldr
[0012AEC0] INITCOMPLETE = vjoyd
[0012AEC0] INITCOMPLETESUCCESS = vjoyd
[0012AEC0] INITCOMPLETE = msmpu401
[0012AEC0] INITCOMPLETESUCCESS = msmpu401
[0012AEC1] INITCOMPLETE = DiskTSD
[0012AEC1] INITCOMPLETESUCCESS = DiskTSD
[0012AEC1] INITCOMPLETE = voltrack
[0012AEC1] INITCOMPLETESUCCESS = voltrack
[0012AEC1] INITCOMPLETE = HSFLOP
[0012AEC1] INITCOMPLETESUCCESS = HSFLOP
[0012AEC1] INITCOMPLETE = ESDI_506
[0012AEC1] INITCOMPLETESUCCESS = ESDI_506
[0012AEC1] INITCOMPLETE = SERENUM
[0012AEC2] INITCOMPLETESUCCESS = SERENUM
[0012AEC2] INITCOMPLETE = LPTENUM
[0012AEC2] INITCOMPLETESUCCESS = LPTENUM
[0012AEC2] INITCOMPLETE = VDMAD
[0012AEC2] INITCOMPLETESUCCESS = VDMAD
[0012AEC3] INITCOMPLETE = V86MMGR
[0012AEC3] INITCOMPLETESUCCESS = V86MMGR
[0012AEC3] INITCOMPLETE = SPOOLER
[0012AEC3] INITCOMPLETESUCCESS = SPOOLER
[0012AEC3] INITCOMPLETE = VFAT
[0012AEC3] INITCOMPLETESUCCESS = VFAT
[0012AECA] INITCOMPLETE = VDEF
[0012AECA] INITCOMPLETESUCCESS = VDEF
[0012AECA] INITCOMPLETE = IFSMGR
[0012AECA] INITCOMPLETESUCCESS = IFSMGR
[0012AECB] INITCOMPLETE = VFBACKUP
[0012AECB] INITCOMPLETESUCCESS = VFBACKUP
[0012AECB] INITCOMPLETE = SHELL
[0012AECB] INITCOMPLETESUCCESS = SHELL
Initializing KERNEL

It's once again crashing at 117:06522. But this time it's in Normal booting mode instead of Safe mode, which means it should be a CPU problem only now?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 13 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just reinstalled Windows 95 with the new bugfixes. It once again crashes during esdi_506.pdr(the second one). Perhaps some RTC timing related issue? It's the only compomemt out of sync due to being realtime instead of emulated(for the RTC clock only, synched with Windows 10 in this case, but with a static time divergeance(stored with BIOS settings as differential seconds and nanoseconds compared to the host OS, being updated every RTC tick(at it's clock rate, which, like all hardware, is ticked by the 14MHz clock based on the CPU clock ticks).

Hmmm... The only things changed are the ATA/ATAPI drives SRST emulation(which should be fine) and the NEG instruction(operating on it's input instead of output for the carry flag). Perhaps it's supposed to act based on the output after all?

Edit: OK. The disk installed 95 without those changes to CPU(NEG) and IDE emulation boots to the 117:6522 bsod crash 'correctly'. The newer freshly installed CPU bugfixed one doesn't. So perhaps an NEG(gging) issue?

Edit: Applied the NEG instruction to once again operate it's carry flag based on the output, but this time no special tricks(checking the resulting NEGated value itself), so it's now just executing the equivalent of a SUB instruction(SUB 0,r/m) and let the SUB flags determine the carry flag instead of determining it manually.

Edit: Nope. It's still crashing on the second esdi_506.pdr with the new code(having setup ran from a blank disk all the way until the reboot).
Edit: Rebooting the machine after the crash seems to make it continue past the ESDI_506.pdr loading, loading it and initializing it with success? So perhaps there's some timing-related issue here? Afaik the only timing variable that's not machine-specific/input-specific is the RTC(CMOS clock)? That one is timed(in it's RTC time) by the real clock of the machine UniPCemu is running on(as a high frequency clock). It's timed in a cycle-accurate way(in the RTC clocking and IRQ8-specific timer), while updating the timestamp(CMOS registers 0-F) each clock from the time divergeance applies to the most accurate clock it can find on the host OS(a nanosecond clock for Windows).

Edit: Random timing indeed. It made it past now, on the second run(with the crashed image), still booting:

[00075ACD] Loading Device = C:\WINDOWS\HIMEM.SYS
[00075ACF] LoadSuccess = C:\WINDOWS\HIMEM.SYS
[00075ACF] Loading Device = C:\WINDOWS\IFSHLP.SYS
[00075ACF] LoadSuccess = C:\WINDOWS\IFSHLP.SYS
[00075ACF] Loading Device = C:\WINDOWS\SETVER.EXE
[00075AD0] LoadSuccess = C:\WINDOWS\SETVER.EXE
[00075ADF] Loading Vxd = VMM
[00075AF0] LoadSuccess = VMM
[00075AF1] Loading Vxd = CONFIGMG
[00075AF7] LoadSuccess = CONFIGMG
[00075AF7] Loading Vxd = VSHARE
[00075AF9] LoadSuccess = VSHARE
[00075AF9] Loading Vxd = VWIN32
[00075AFD] LoadSuccess = VWIN32
[00075AFD] Loading Vxd = VFBACKUP
[00075AFE] LoadSuccess = VFBACKUP
[00075AFE] Loading Vxd = VCOMM
[00075AFF] LoadSuccess = VCOMM
[00075AFF] Loading Vxd = COMBUFF
[00075B00] LoadSuccess = COMBUFF
[00075B00] Loading Vxd = IFSMGR
[00075B0E] LoadSuccess = IFSMGR
[00075B0E] Loading Vxd = IOS
[00075B13] LoadSuccess = IOS
[00075B13] Loading Vxd = SPOOLER
[00075B15] LoadSuccess = SPOOLER
[00075B15] Loading Vxd = VFAT
[00075B19] LoadSuccess = VFAT
[00075B19] Loading Vxd = VCACHE
[00075B1B] LoadSuccess = VCACHE
[00075B1C] Loading Vxd = VCOND
[00075B1E] LoadSuccess = VCOND
[00075B1E] Loading Vxd = VCDFSD
[00075B1F] LoadSuccess = VCDFSD
[00075B1F] Loading Vxd = VXDLDR
[00075B21] LoadSuccess = VXDLDR
[00075B21] Loading Vxd = VDEF
[00075B22] LoadSuccess = VDEF
[00075B22] Loading Vxd = VPICD
[00075B24] LoadSuccess = VPICD
[00075B24] Loading Vxd = VTD
[00075B25] LoadSuccess = VTD
[00075B25] Loading Vxd = REBOOT
[00075B26] LoadSuccess = REBOOT
[00075B26] Loading Vxd = VDMAD
[00075B28] LoadSuccess = VDMAD
[00075B28] Loading Vxd = VSD
[00075B28] LoadSuccess = VSD
[00075B28] Loading Vxd = V86MMGR
[00075B2D] LoadSuccess = V86MMGR
[00075B2D] Loading Vxd = PAGESWAP
[00075B2E] LoadSuccess = PAGESWAP
[00075B2E] Loading Vxd = DOSMGR
[00075B32] LoadSuccess = DOSMGR
[00075B33] Loading Vxd = VMPOLL
[00075B34] LoadSuccess = VMPOLL
[00075B34] Loading Vxd = SHELL
[00075B37] LoadSuccess = SHELL
[00075B37] Loading Vxd = PARITY
[00075B37] LoadSuccess = PARITY
Show last 241 lines
[00075B37] Loading Vxd = BIOSXLAT
[00075B38] LoadSuccess = BIOSXLAT
[00075B38] Loading Vxd = VMCPD
[00075B39] LoadSuccess = VMCPD
[00075B39] Loading Vxd = VTDAPI
[00075B3A] LoadSuccess = VTDAPI
[00075B3A] Loading Vxd = PERF
[00075B3B] LoadSuccess = PERF
[00075B3B] Loading Vxd = ebios
[00075B3C] LoadSuccess = ebios
[00075B3D] Loading Vxd = vshare
[00075B3E] LoadFailed = vshare
[00075B3E] Loading Vxd = dynapage
[00075B3F] LoadSuccess = dynapage
[00075B3F] Loading Vxd = vcd
[00075B41] LoadSuccess = vcd
[00075B41] Loading Vxd = vpd
[00075B42] LoadSuccess = vpd
[00075B42] Loading Vxd = int13
[00075B43] LoadSuccess = int13
[00075B43] Loading Vxd = vkd
[00075B45] LoadSuccess = vkd
[00075B45] Loading Vxd = vdd
[00075B49] LoadSuccess = vdd
[00075B49] Loading Vxd = vflatd
[00075B4A] LoadSuccess = vflatd
[00075B4A] Loading Vxd = vmouse
[00075B4C] LoadSuccess = vmouse
[00075B4C] Loading Vxd = msmouse.vxd
[00075B4D] LoadSuccess = msmouse.vxd
[00075B4D] Loading Vxd = enable
[00075B4F] LoadSuccess = enable
[00075B55] SYSCRITINIT = VMM
[00075B56] SYSCRITINITSUCCESS = VMM
[00075B56] SYSCRITINIT = VCACHE
[00075B56] SYSCRITINITSUCCESS = VCACHE
[00075B56] SYSCRITINIT = PERF
[00075B56] SYSCRITINITSUCCESS = PERF
[00075B57] SYSCRITINIT = VPICD
[00075B57] SYSCRITINITSUCCESS = VPICD
[00075B57] SYSCRITINIT = VTD
[00075B57] SYSCRITINITSUCCESS = VTD
[00075B57] SYSCRITINIT = VXDLDR
[00075B58] SYSCRITINITSUCCESS = VXDLDR
[00075B58] SYSCRITINIT = CONFIGMG
[00075B58] SYSCRITINITSUCCESS = CONFIGMG
[00075B58] SYSCRITINIT = VCDFSD
[00075B58] SYSCRITINITSUCCESS = VCDFSD
[00075B58] SYSCRITINIT = IOS
[00075B59] SYSCRITINITSUCCESS = IOS
[00075B59] SYSCRITINIT = PAGEFILE
[00075B59] SYSCRITINITSUCCESS = PAGEFILE
[00075B59] SYSCRITINIT = PAGESWAP
[00075B59] SYSCRITINITSUCCESS = PAGESWAP
[00075B5A] SYSCRITINIT = PARITY
[00075B5A] SYSCRITINITSUCCESS = PARITY
[00075B5A] SYSCRITINIT = REBOOT
[00075B5A] SYSCRITINITSUCCESS = REBOOT
[00075B5A] SYSCRITINIT = EBIOS
[00075B5A] SYSCRITINITSUCCESS = EBIOS
[00075B5B] SYSCRITINIT = VDD
[00075B5B] SYSCRITINITSUCCESS = VDD
[00075B5B] SYSCRITINIT = VSD
[00075B5B] SYSCRITINITSUCCESS = VSD
[00075B5B] SYSCRITINIT = COMBUFF
[00075B5B] SYSCRITINITSUCCESS = COMBUFF
[00075B5C] SYSCRITINIT = VCD
[00075B5C] SYSCRITINITSUCCESS = VCD
[00075B5C] SYSCRITINIT = VMOUSE
[00075B5C] SYSCRITINITSUCCESS = VMOUSE
[00075B5C] SYSCRITINIT = MSMINI
[00075B5C] SYSCRITINITSUCCESS = MSMINI
[00075B5D] SYSCRITINIT = VKD
[00075B5D] SYSCRITINITSUCCESS = VKD
[00075B5D] SYSCRITINIT = ENABLE
[00075B5D] SYSCRITINITSUCCESS = ENABLE
[00075B5D] SYSCRITINIT = VPD
[00075B5E] SYSCRITINITSUCCESS = VPD
[00075B5E] SYSCRITINIT = INT13
[00075B5E] SYSCRITINITSUCCESS = INT13
[00075B5E] SYSCRITINIT = VMCPD
[00075B5E] SYSCRITINITSUCCESS = VMCPD
[00075B5E] SYSCRITINIT = BIOSXLAT
[00075B5F] SYSCRITINITSUCCESS = BIOSXLAT
[00075B5F] SYSCRITINIT = DOSMGR
[00075B5F] SYSCRITINITSUCCESS = DOSMGR
[00075B5F] SYSCRITINIT = VSHARE
[00075B5F] SYSCRITINITSUCCESS = VSHARE
[00075B60] SYSCRITINIT = VMPOLL
[00075B60] SYSCRITINITSUCCESS = VMPOLL
[00075B60] SYSCRITINIT = VWIN32
[00075B60] SYSCRITINITSUCCESS = VWIN32
[00075B60] SYSCRITINIT = VCOMM
[00075B60] SYSCRITINITSUCCESS = VCOMM
[00075B61] SYSCRITINIT = VCOND
[00075B61] SYSCRITINITSUCCESS = VCOND
[00075B61] SYSCRITINIT = VTDAPI
[00075B61] SYSCRITINITSUCCESS = VTDAPI
[00075B62] SYSCRITINIT = VFLATD
[00075B62] SYSCRITINITSUCCESS = VFLATD
[00075B62] SYSCRITINIT = VDMAD
[00075B62] SYSCRITINITSUCCESS = VDMAD
[00075B62] SYSCRITINIT = V86MMGR
[00075B62] SYSCRITINITSUCCESS = V86MMGR
[00075B63] SYSCRITINIT = SPOOLER
[00075B63] SYSCRITINITSUCCESS = SPOOLER
[00075B63] SYSCRITINIT = VFAT
[00075B63] SYSCRITINITSUCCESS = VFAT
[00075B63] SYSCRITINIT = VDEF
[00075B63] SYSCRITINITSUCCESS = VDEF
[00075B64] SYSCRITINIT = IFSMGR
[00075B64] SYSCRITINITSUCCESS = IFSMGR
[00075B64] SYSCRITINIT = VFBACKUP
[00075B64] SYSCRITINITSUCCESS = VFBACKUP
[00075B64] SYSCRITINIT = SHELL
[00075B64] SYSCRITINITSUCCESS = SHELL
[00075B66] DEVICEINIT = VMM
[00075B66] DEVICEINITSUCCESS = VMM
[00075B66] DEVICEINIT = VCACHE
[00075B67] DEVICEINITSUCCESS = VCACHE
[00075B68] DEVICEINIT = PERF
[00075B68] DEVICEINITSUCCESS = PERF
[00075B69] DEVICEINIT = VPICD
[00075B6A] DEVICEINITSUCCESS = VPICD
[00075B6A] DEVICEINIT = VTD
[00075B6A] DEVICEINITSUCCESS = VTD
[00075B6A] DEVICEINIT = VXDLDR
[00075B6A] DEVICEINITSUCCESS = VXDLDR
[00075B8E] Dynamic load device isapnp.vxd
[00075B98] Dynamic init device ISAPNP
[00075B98] Dynamic init success ISAPNP
[00075B99] Dynamic load success isapnp.vxd
[00075B99] Dynamic load device mmdevldr.vxd
[00075BA8] Dynamic init device MMDEVLDR
[00075BA9] Dynamic init success MMDEVLDR
[00075BA9] Dynamic load success mmdevldr.vxd
[00075BA9] Dynamic load device vjoyd.vxd
[00075BAD] Dynamic init device VJOYD
[00075BAD] Dynamic init success VJOYD
[00075BAD] Dynamic load success vjoyd.vxd
[00075BAD] Dynamic load device mmdevldr.vxd
[00075BAF] Dynamic load success mmdevldr.vxd
[00075BB0] Dynamic load device msmpu401.vxd
[00075BB3] Dynamic init device MSMPUVXD
[00075BB3] Dynamic init success MSMPUVXD
[00075BB4] Dynamic load success msmpu401.vxd
[00075BB4] DEVICEINIT = CONFIGMG
[00075BB4] DEVICEINITSUCCESS = CONFIGMG
[00075BB5] DEVICEINIT = VCDFSD
[00075BB5] DEVICEINITSUCCESS = VCDFSD
[00075BB5] DEVICEINIT = IOS
[00075BC7] Dynamic load device C:\WINDOWS\system\IOSUBSYS\apix.vxd
[00075BC8] Dynamic load success C:\WINDOWS\system\IOSUBSYS\apix.vxd
[00075BC8] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdfs.vxd
[00075BCA] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdfs.vxd
[00075BCA] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdtsd.vxd
[00075BCB] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdtsd.vxd
[00075BCB] Dynamic load device C:\WINDOWS\system\IOSUBSYS\cdvsd.vxd
[00075BCB] Dynamic load success C:\WINDOWS\system\IOSUBSYS\cdvsd.vxd
[00075BCC] Dynamic load device C:\WINDOWS\system\IOSUBSYS\disktsd.vxd
[00075BCC] Dynamic load success C:\WINDOWS\system\IOSUBSYS\disktsd.vxd
[00075BCD] Dynamic load device C:\WINDOWS\system\IOSUBSYS\diskvsd.vxd
[00075BCD] Dynamic load success C:\WINDOWS\system\IOSUBSYS\diskvsd.vxd
[00075BCE] Dynamic load device C:\WINDOWS\system\IOSUBSYS\voltrack.vxd
[00075BCE] Dynamic load success C:\WINDOWS\system\IOSUBSYS\voltrack.vxd
[00075BCF] Dynamic load device C:\WINDOWS\system\IOSUBSYS\necatapi.vxd
[00075BCF] Dynamic load success C:\WINDOWS\system\IOSUBSYS\necatapi.vxd
[00075BD0] Dynamic load device C:\WINDOWS\system\IOSUBSYS\scsi1hlp.vxd
[00075BD0] Dynamic load success C:\WINDOWS\system\IOSUBSYS\scsi1hlp.vxd
[00075BD1] Dynamic load device C:\WINDOWS\system\IOSUBSYS\rmm.pdr
[00075BD1] Dynamic load success C:\WINDOWS\system\IOSUBSYS\rmm.pdr
[00075BD2] DEVICEINITSUCCESS = IOS
[00075BD3] DEVICEINIT = PAGEFILE
[00075BD3] DEVICEINITSUCCESS = PAGEFILE
[00075BD4] DEVICEINIT = PAGESWAP
[00075BD4] DEVICEINITSUCCESS = PAGESWAP
[00075BD4] DEVICEINIT = PARITY
[00075BD4] DEVICEINITSUCCESS = PARITY
[00075BD4] DEVICEINIT = REBOOT
[00075BD4] DEVICEINITSUCCESS = REBOOT
[00075BD5] DEVICEINIT = EBIOS
[00075BD5] DEVICEINITSUCCESS = EBIOS
[00075BD5] DEVICEINIT = VDD
[00075BD7] DEVICEINITSUCCESS = VDD
[00075BD7] DEVICEINIT = VSD
[00075BD7] DEVICEINITSUCCESS = VSD
[00075BD8] DEVICEINIT = COMBUFF
[00075BD8] DEVICEINITSUCCESS = COMBUFF
[00075BD8] DEVICEINIT = VCD
[00075BD9] DEVICEINITSUCCESS = VCD
[00075BD9] DEVICEINIT = VMOUSE
[00075BD9] DEVICEINITSUCCESS = VMOUSE
[00075BD9] DEVICEINIT = MSMINI
[00075BDB] DEVICEINITSUCCESS = MSMINI
[00075BDC] DEVICEINIT = VKD
[00075BDC] DEVICEINITSUCCESS = VKD
[00075BDC] DEVICEINIT = ENABLE
[00075BDC] DEVICEINITSUCCESS = ENABLE
[00075BDC] DEVICEINIT = VPD
[00075BDD] DEVICEINITSUCCESS = VPD
[00075BDD] DEVICEINIT = INT13
[00075BDE] DEVICEINITSUCCESS = INT13
[00075BDE] DEVICEINIT = VMCPD
[00075BDE] DEVICEINITSUCCESS = VMCPD
[00075BDE] DEVICEINIT = BIOSXLAT
[00075BDE] DEVICEINITSUCCESS = BIOSXLAT
[00075BDE] DEVICEINIT = DOSMGR
[00075BDF] DEVICEINITSUCCESS = DOSMGR
[00075BDF] DEVICEINIT = VSHARE
[00075BDF] DEVICEINITSUCCESS = VSHARE
[00075BE0] DEVICEINIT = VMPOLL
[00075BE1] DEVICEINITSUCCESS = VMPOLL
[00075BE1] DEVICEINIT = VWIN32
[00075BE1] DEVICEINITSUCCESS = VWIN32
[00075BE1] DEVICEINIT = VCOMM
[00075BE1] DEVICEINITSUCCESS = VCOMM
[00075BE2] DEVICEINIT = VCOND
[00075BE2] DEVICEINITSUCCESS = VCOND
[00075BE2] DEVICEINIT = VTDAPI
[00075BE2] DEVICEINITSUCCESS = VTDAPI
[00075BE2] DEVICEINIT = VFLATD
[00075BE2] DEVICEINITSUCCESS = VFLATD
[00075BE3] DEVICEINIT = VDMAD
[00075BE3] DEVICEINITSUCCESS = VDMAD
[00075BE3] DEVICEINIT = V86MMGR
[00075BE4] DEVICEINITSUCCESS = V86MMGR
[00075BE4] DEVICEINIT = SPOOLER
[00075BE5] DEVICEINITSUCCESS = SPOOLER
[00075BE5] DEVICEINIT = VFAT
[00075BE5] DEVICEINITSUCCESS = VFAT
[00075BE6] DEVICEINIT = VDEF
[00075BE6] DEVICEINITSUCCESS = VDEF
[00075BE8] Initing hsflop.pdr
[00075C39] Init Success hsflop.pdr
[00075C3D] Initing esdi_506.pdr
[00075CD7] Init Success esdi_506.pdr
[00075D6C] Initing esdi_506.pdr
[00075D6D] Init Success esdi_506.pdr
[000760F1] INITCOMPLETE = VMM
[000760F1] INITCOMPLETESUCCESS = VMM

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 14 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just tried NT 3.1 again with the latest bugfixes. Now I still see a STOP 0x0000007B (0xFF8FCD30,0x00000000,0x00000000,0x00000000)?

One good point is that I do actually see the protected mode driver doing some hard disk accesses? I see it setting up device parameters, then reading the master boot sector, then sector 40(I believe this is the boot record of the first partition), then the same for slave boot sector(nothing else on the primary slave), then another initialize device parameters command again on the primary master?

Edit: So, so far I'm seeing(From NT 3.1 in protected mode):
- Primary master(=2GB disk) command 0xEF(set features 0x66).
- Primary master command 0xEF(set features 0x82).
- Primary master command 0x91(Initialize device parameters C,H,S=0x1041,0x10,0x3F).
- Primary master command 0x10(recalibrate).
- Primary master command 0x20(reading sector 0).
- Primary slave(=100MB disk) command 0xEF(set features 0x82).
- Primary slave command 0xEF(set features 0x82).
- Primary slave command 0x91(Initialize device parameters C,H,S=0xCB,0x10,0x3F).
- Primary slave command 0x10(recalibrate).
- Primary slave command 0x20(reading sector 0).
- Primary master command 0x20(reading sector 1).
- Primary master command 0x91(Initialize device parameters C,H,S=0x1041,0x10,0x3F).

Then I'm getting the inaccessable boot device BSOD?
What kind of disk acesses am I supposed to see from the boot drive?

Edit: Improving the busy signal, I've managed to change the final 0x91 command into a read from sector 0x40. Then it's followed by that 0x91 command again.

Edit: It seems the Initialize Device Parameters(command 0x91) is supposed to raise INTRQ after clearing BSY(which is set for some time while it's executing)?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 15 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Interestingly enough, with those timing bugfixed and BSY signaling being implemented, I see the NT kernel keep reading sectors 0x3F and 0x40 over and over again?

Edit: Seeing as it's programmed for n heads and 3F sectors per track, it's testing the track border(head 0 sector 3F and head 1 sector 1)?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 16 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

I just fixed some bugs and made the reads/writes using 0 sectors(which actually are 256 sectors) work properly(it was actually reading 0 sectors in that sense, reading a junk buffer).

I've also fixed the cases of being able to read past the end of the disk(LBA out of bounds), which caused a wrong error when it's in read multiple and write multiple commands(it now reports the error when the CPU has finished reading the block or partly block(when it encounters read errors or LBA out of bounds)). In the case of the LBA out of bounds, it will now read until the final LBA of the disk normally, but everything after that is filled with zeroes(since you can't read past the end of a physical disk).

The strange thing that's now happening with Windows NT 3.1 is that I see it trying to read 100h(a value of 0 sectors) and 3Fh sectors from the disk using the 0x20 read sector(s) command.
But the main issue with those seems to be, that once it starts reading the data(done using a REP INSW), it seems to give up(resetting the ATA controller) before the transfer of all sectors is completed?

The entire transfer of 256 sectors would take about 7000ns times 200(according to PCem: https://bitbucket.org/pcem_emulator/pcem/src/ … fault/src/ide.c ).

UniPCemu currently bases the timing information on the timing that IDE_TIME is a duration of 7 microseconds?

Edit: Looking at the code again, it seems IDE_TIME is actually 10*TIMER_USEC, while TIMER_USEC is 1us? so IDE_TIME is 10us. And that means that UniPCemu's timing is too small and fast?

Since IDE_TIME is 10us, that would mean that transferring one sector from disk is actually 200*IDE_TIME, thus 2000us for the initial sector, then 6*IDE_TIME, thus 60us? So it's 2ms for the first sector, then 60us for each sector after that? Wouldn't that result in a extremely slow hard disk(top speed about 8.5MB/s(for all sectors in a row), but seeing as you can only ask it to transfer 256 in a row, that's limited. So those 256 take 2ms for the first + 60us for each of the other 255 ones, thus 256 sectors in 17.3ms. So that's 0.0173 seconds for 256 sectors, thus ~14797 seconds/second, so a rate of 7.22MB/s?

Thinking about it, the largest delay is 200 times that, so 2 microseconds? But 60us to transfer a whole sector isn't much, is it(since a clock takes about 30ns)? That doesn't leave much time to do much else? Thinking a 33MHz 80386 that's running instructions in 1 cycle would be able to fit about 1980 instructions? But that's taking 80486+ speeds, which a 80386 doesn't even have, looking at Dosbox's/UniPCemu's 3MIPS, it would take about 333.333~ns to execute an instruction at that speed. Thus a result of moving 180 bytes out of said buffer before another interrupt hits in that time?

Edit: Whoops, made a mistake there. It's not that it takes the time of 180 bytes to move the buffer itself. It's actually about 90 instructions(assuming 2 cycles/instruction) for the hard disk to get ready for it's next task, not the other way around.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 17 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Hmmm... Now, when it gets to sector 0x47, something strange happens. It triggers the IRQ, expecting the CPU to start reading in data, (status register has value 0x58), but instead it executes a software reset(using the SRST bit)?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 18 of 24, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just have been looking at the resulting status register when it's updating it during the disk read(PIO read) phase. I see it keeps returning to being 0x58 for all running transfers, but at the point it crashes(when it issues a reset) it suddenly becomes 0xD8?

When does said HDD timing set bits 7&8(DRDY and BSY)? Does it do that when reading the hard disk in between transfers(IRQs)?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io