Hi,
I found a bug in your patched version, you always forgot the comma for the ordinal leading to bad forwards:
Code:
#pragma comment(linker,"/export:ScsiPortNotification=vidprt0.ScsiPortNotification@4")
#pragma #pragma comment(linker,"/export:VideoPortDbgReportComplete=vidprt0.VideoPortDbgReportComplete@22")
#pragma comment(linker,"/export:VideoPortDbgReportCreate=vidprt0.VideoPortDbgReportCreate@23")
#pragma comment(linker,"/export:VideoPortDbgReportSecondaryData=vidprt0.VideoPortDbgReportSecondaryData@24")
#pragma comment(linker,"/export:VideoPortIsNoVesa=vidprt0.VideoPortIsNoVesa@55")
#pragma comment(linker,"/export:VideoPortNotification=vidprt0.VideoPortNotification@63")
etc.
You forgot comma, should read:
Code:
#pragma comment(linker,"/export:ScsiPortNotification=vidprt0.ScsiPortNotification,@4")
...
I attached a fixed version of videoprt.sys driver that has corrected forwards, to be sure, better use the fixed version.
Using this version of VIDEOPRT.SYS, I was able to get my Mode 13h running flawleassly, as can be tested with my litte test program TESTVGA.COM which I also attached. It switches to mode 13h, displays a text string, waits for a keypress and switches back.
Now as it doesn't work for you, I found a simple method to verify if the IO port range got passed through or not.
I extended my 32BITIOFIX with a logging function that also logs other in/out commands, not only 32bit I/O to
Debugview console. When an IO port gets passed through, it doesn't get handed off to the NTVDM Monitor but gets directed directly to the hardware, so no log entry should be created in this case.
If it is a blocked port, it gets passed to the Monitor and therefore a log entry should be created.
Frem what I saw from my machine, it tries to access the PCI Config registers without success (therefore gets back FFFF). This isn't a problem for my BIOS here, as this generally is a valid state (PCI bus not present/supported), but maybe your BIOS is picky about it?
So as a next step in diagnostics:
1) Install the supplied VIDEOPRT.SYS driver
2) Install the supported 32bit IO fix using INSTALL.BAT
3) Open DebugView as administrator
4) Run the test program TESTVGA.COM and check its results
5) If it fails, check the ouput from DebugView if I/O ports are still blocked and which IO ports it tries to access.
6) You can try to manually unblock the required ports in the VIDEOPRT.SYS driver and check the results, however I'm not sure if Windows is happy with unblocking PCIe bus ports, but it can be tried.
Hope that helps.