VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

Are there OEM PCI bus master drivers that work with Windows 2000 setup (including the required txtsetup.oem to load it) for the Triton I/II PCI busmastering IDE?
The default drivers of 2000 Pro don't seem to detect the CD-ROM/hard disk (resulting in the dreaded 0x7B BSOD)?

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

Reply 1 of 3, by superfury

User metadata
Rank l33t++
Rank
l33t++

The UNIATA driver fails as well. So there might be a hardware problem there?

For comparison, I've went and tried to link ReactOS booting it to a Putty client on Windows 10 (although the same can be done using a CHK build of Windows 2000 for the same effect).
It looks like it has the same kind of issue?

(ntoskrnl/kd/kdio.c:106) -----------------------------------------------------
(ntoskrnl/kd/kdio.c:107) ReactOS 0.4.14 (Build 20220311-0.4.14-release-15-gb6088 a6) (Commit b6088a6adb1383d029acaac892aa5bfed25ea00a)
(ntoskrnl/kd/kdio.c:108) 1 System Processor [512 MB Memory]
(ntoskrnl/kd/kdio.c:109) Command Line: NOGUIBOOT KDSERIAL DEBUGPORT=COM1 FIRSTCH ANCE
(ntoskrnl/kd/kdio.c:110) ARC Paths: multi(0)disk(0)cdrom(31) \ multi(0)disk(0)cd rom(31) \reactos\
(ntoskrnl/ke/i386/cpu.c:450) Supported CPU features : KF_V86_VIS KF_RDTSC KF_CR4 KF_CMOV KF_GLOBAL_PAGE KF_LARGE_PAGE KF_CMPXCHG8B KF_FAST_SYSCALL
(ntoskrnl/ke/i386/cpu.c:722) Prefetch Cache: 32 bytes L2 Cache: 0 bytes L 2 Cache Line: 64 bytes L2 Cache Associativity: 0
(ntoskrnl/mm/ARM3/mminit.c:1452) HAL I/O Mapping at FFFE0000 is unsafe
(ntoskrnl/mm/mminit.c:131) 0x80000000 - 0x83000000 Boot Loaded Imag e
(ntoskrnl/mm/mminit.c:135) 0xB0000000 - 0xB0381000 PFN Database
(ntoskrnl/mm/mminit.c:139) 0xB0381000 - 0xB1339000 ARM3 Non Paged P ool
(ntoskrnl/mm/mminit.c:143) 0xB9400000 - 0xBB400000 System View Spac e
(ntoskrnl/mm/mminit.c:147) 0xBB400000 - 0xC0000000 Session Space
(ntoskrnl/mm/mminit.c:150) 0xC0000000 - 0xC03FFFFF Page Tables
(ntoskrnl/mm/mminit.c:153) 0xC0300000 - 0xC0300FFF Page Directories
(ntoskrnl/mm/mminit.c:156) 0xC0400000 - 0xC07FFFFF Hyperspace
(ntoskrnl/mm/mminit.c:159) 0xC1000000 - 0xE0FFFFFF System Cache
(ntoskrnl/mm/mminit.c:163) 0xE1000000 - 0xEDC00000 ARM3 Paged Pool
(ntoskrnl/mm/mminit.c:166) 0xEDC00000 - 0xF8B98000 System PTE Space
(ntoskrnl/mm/mminit.c:169) 0xF8B98000 - 0xFFBE0000 Non Paged Pool E xpansion PTE Space
(ntoskrnl/config/cmcheck.c:25) CmCheckRegistry(0xB10B6008, 2) is UNIMPLEMENTED!
(hal/halx86/legacy/bussupp.c:728) Found parent bus (indicating PCI Bridge). PCI devices may fail!

====== PCI BUS HARDWARE DETECTION =======

00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 00)
Subsystem: Unknown [0000:0000]
Flags: bus master, medium devsel, latency 32
Device has Extended Address Decoding. It may fail to work on older BIOSes!

00:01.0 ISA bridge [0601]: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] [8086:7000] (rev 02)
Subsystem: Unknown [0000:0000]
Flags: bus master, medium devsel, latency 32

00:01.1 IDE interface [0101]: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] [8086:7010] (rev 02)
Subsystem: Unknown [0000:0000]
Flags: bus master, fast devsel, latency 0
I/O ports at e800 [size=2K]

====== PCI BUS DETECTION COMPLETE =======

PC Compatible Eisa/Isa HAL Detected
WARNING: ArbInitializeArbiterInstance at sdk/lib/drivers/arbiter/arbiter.c:38 is UNIMPLEMENTED!
WARNING: ArbInitializeArbiterInstance at sdk/lib/drivers/arbiter/arbiter.c:38 is UNIMPLEMENTED!
WARNING: ArbInitializeArbiterInstance at sdk/lib/drivers/arbiter/arbiter.c:38 is UNIMPLEMENTED!
WARNING: ArbInitializeArbiterInstance at sdk/lib/drivers/arbiter/arbiter.c:38 is UNIMPLEMENTED!
WARNING: ArbInitializeArbiterInstance at sdk/lib/drivers/arbiter/arbiter.c:38 is UNIMPLEMENTED!
(sdk/lib/rtl/image.c:171) Invalid base address: 00000000
(ntoskrnl/io/iomgr/driver.c:1650) '\Driver\sacdrv' initialization failed, status (0xc0000037)
(ntoskrnl/io/iomgr/driver.c:64) Deleting driver object '\Driver\sacdrv'
(drivers/filesystems/fastfat/iface.c:161) FastFAT KDBG extension registered: yes
WARNING: NtNotifyChangeMultipleKeys at ntoskrnl/config/ntapi.c:1470 is UNIMPLEMENTED!
Btrfs ERR : watch_registry : ZwNotifyChangeKey returned c0000002
(drivers/storage/class/ramdisk/ramdisk.c:2486) FIXME: Installing from RamDisk is UNSUPPORTED!
(drivers/storage/port/scsiport/scsiport.c:5859) ZwOpenKey() failed with Status=0xC0000034
(hal/halx86/legacy/bussupp.c:1275) Slot assignment for 5 on bus 0
(hal/halx86/legacy/bus/pcibus.c:742) WARNING: PCI Slot Resource Assignment is FOOBAR
(ntoskrnl/io/iomgr/iorsrce.c:874) IoReportResourceUsage is halfplemented!
(ntoskrnl/io/iomgr/iorsrce.c:874) IoReportResourceUsage is halfplemented!
(ntoskrnl/io/iomgr/driver.c:1650) '\Driver\buslogic' initialization failed, status (0xc00000c0)
Show last 34 lines
(ntoskrnl/io/iomgr/driver.c:64) Deleting driver object '\Driver\buslogic'
(drivers/storage/port/storport/storport.c:961) StorPortInitialize(B108C900 F8619A4C F8619880 00000000)
(drivers/storage/port/storport/storport.c:963) HwInitializationDataSize: 84
(drivers/storage/port/storport/storport.c:964) AdapterInterfaceType: 5
(drivers/storage/port/storport/storport.c:965) HwInitialize: F8A435F5
(drivers/storage/port/storport/storport.c:966) HwStartIo: F8A46073
(drivers/storage/port/storport/storport.c:967) HwInterrupt: F8A4466A
(drivers/storage/port/storport/storport.c:968) HwFindAdapter: F8A46410
(drivers/storage/port/storport/storport.c:969) HwResetBus: F8A4351C
(drivers/storage/port/storport/storport.c:970) HwDmaStarted: 00000000
(drivers/storage/port/storport/storport.c:971) HwAdapterState: 00000000
(drivers/storage/port/storport/storport.c:972) DeviceExtensionSize: 75584
(drivers/storage/port/storport/storport.c:973) SpecificLuExtensionSize: 0
(drivers/storage/port/storport/storport.c:974) SrbExtensionSize: 1320
(drivers/storage/port/storport/storport.c:975) NumberOfAccessRanges: 6
(drivers/storage/port/storport/storport.c:1001) No driver object extension!
(drivers/storage/port/storport/storport.c:1013) Driver object extension created!
(drivers/storage/port/storport/storport.c:31) PortAddDriverInitData()
(drivers/storage/port/storport/storport.c:1044) StorPortInitialize() done (Status 0x00000000)
(ntoskrnl/fstub/disksup.c:1494) FSTUB: (IoReadPartitionTable) No 0xaa55 found in partition table 0
(ntoskrnl/io/iomgr/driver.c:1650) '\Driver\floppy' initialization failed, status (0xc000000e)
(ntoskrnl/io/iomgr/driver.c:64) Deleting driver object '\Driver\floppy'
(drivers/storage/port/storport/storport.c:461) DriverEntry(B1059140 F8619A4C)
(ntoskrnl/ex/work.c:352) EX: Work Queue Deadlock detected: 1
(ntoskrnl/fstub/disksup.c:1494) FSTUB: (IoReadPartitionTable) No 0xaa55 found in partition table 0
(ntoskrnl/io/iomgr/iomgr.c:573) IopCreateArcNames failed: c0000034

*** Fatal System Error: 0x00000069
(0x00000000,0x00000000,0x00000000,0x00000000)


Entered debugger on embedded INT3 at 0x0008:0x80958d48.
kdb:>

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

Reply 2 of 3, by superfury

User metadata
Rank l33t++
Rank
l33t++

The "I/O ports at e800 [ size=2K ]" line sounds weird though? UniPCemu simply masks the writable bits with the port size (3 for the control BARs,7 for the data BARs or 0xF for the DMA BAR).
Although on the i440fx, the register is forced cleared (value 0)? Is that correct behaviour?

Looking at the PCI BARs themselves, that size=2K BAR is the PCI IDE BAR5 register, which is the DMA controller (it should have a size of 16 instead of 2K).

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

Reply 3 of 3, by superfury

User metadata
Rank l33t++
Rank
l33t++

Even with PCI IRQs disabled (using legacy IRQs 14/15 as seems to be the case for that chipset), booting 2000 and ReactOS (now testing with ReactOS due to logging support through the serial port) still fails when the kernel starts?

Is there something going on with the BARs themselves that I'm unaware of?
Currently the BARs are plainly ignored (any value can be set and (with some bits cleared) read back by the OS detecting BAR size), but are they supposed to be used in some cases? If so, when are the values to be used?
The BIOS never seems to set the values to 0x0001, so that won't trigger legacy I/O ports to be used?

Their values is always E800/E400/E000/D800/D400 (in order from BAR0-5). So definitely not legacy IDE required to boot?
But the OS requires the I/O ports to be at those registers when the kernel starts running (in other words, it's in PCI mode and not in legacy mode anymore).

Anyone?

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