Baron-von-Riedesel / HX

Home of the HX DOS Extender and its included DPMI-host HDPMI.
192 stars 14 forks source link

New features #21

Open MrMadguy64 opened 2 years ago

MrMadguy64 commented 2 years ago

First of all, I want to thank you, for work you're doing. I'm old school DOS fan. First time, when I realized, that Borland's Power Pack was actually Win32 emulator, I got the idea of making fully hybrid DOS-Win application. Problem was - Power Pack was very limited. It was pure Win32 console emulator, that lacked some DOS extender features. And then I discovered HX, that was exactly what I wanted.

Here is example of fully hybrid DOS-Win application, that supports DOS, Win3.11+Win32s and Win32.

BmpView.zip

P.S. It would be very nice, if somebody would be able to test VGAX driver on real hardware!

But some features, it currently lacks, would make it ultimate Win32 emulator. 1) May be implement some way to make switching to SVGA mode for Win32 GUI apps optional. My hybrid app has it's own graphic mode handling, so it has to be console app. Problem is - on Windows console app creates console window. Yeah, I can hide it. But this feature is available on NT+ only. Win9x doesn't support it. 2) Win32 debugging API. Dunno. I've got used to TD32 too much. It's just bad, that HX doesn't support it. 3) May be full 64bit support, that would allow hybrid DOS-Win apps to be 64bit?

P.S. I've heard, that FreeDOS team had doubts about FD's future and that FD 1.3 was intended to become 32bit OS. I think, that it would be great for FreeDOS to become some sort of Win console emulator with old DOS apps support. And your project has already done the most of this job.

Baron-von-Riedesel commented 2 years ago

It would be very nice, if somebody would be able to test VGAX driver on real hardware!

Well, it works on my old nvidia card. Didn't notice much difference compared to the vga driver.

I've heard, that FreeDOS team had doubts about FD's future and that FD 1.3 was intended to become 32bit OS.

I doubt they have enough manpower to make any progress in that direction.

MrMadguy64 commented 2 years ago

Well, it works on my old nvidia card. Didn't notice much difference compared to the vga driver.

VGAX disables Chain4, as it's done in Mode X. That's why it's called VGAX. It allows non-standard modes with higher and lower resolutions. See ReadMe for reference.

I've tested it on modern card too. But, I guess, modern cards and monitors have predefined video modes, so they don't allow switching to some non-standard modes. And therefore some modes didn't work as expected. So, I would want it to be tested on real VGA card and monitor, if somebody still has them.

The biggest question - are 160 and 180 modes actually possible? They are possible in theory due to possibility to combine DotClock/2 mode and 2 clocks per pixel in 8bit mode, resulting in DotClock/4. I mean REAL 160 and 180 modes. Everybody can just use double pixels or adjust visible part of horizontal scanline without changing timings. But setting such mode would conflict with standard modes - one would need to use hardware monitor's width/height control to fit picture on screen. My modes are real hardware modes, that have standard timings. Only 180 mode is doubtful, because 160 mode reuses standard 320 mode timings, while there are no timings for 360 mode. I've calculated them by myself from 720 timings, that aren't standard, but seem to be verified, because they're used in 360 mode, via finding patterns in 640->320 timings conversion.

P.S. Which version of WD is supported by HX? Nothing from OW 2.0 works. BINNT version complains about unresolved imports and BINW version complains about DIP files. Well, after updating WD from OW site to latest version, it has started to work. But I still don't understand, how to debug Win32 PE app via this debugger. It seems to be 16bit.

MrMadguy64 commented 2 years ago

Another problem: FPC 3.2.0 is supported, but FPC 3.2.2 isn't - HX complains about unresolved OpenThread import.

Baron-von-Riedesel commented 2 years ago

ok. however, additions in hx's win32 emulation have very low priority - and since FPC supports DOS natively .....

MrMadguy64 commented 2 years ago

ok. however, additions in hx's win32 emulation have very low priority - and since FPC supports DOS natively .....

DPMILD32=128 does it's job for both FPC 3.2.2 application and Win32 version of WD, so I guess some stubs would be enough. WD can't load any app though despite of HDPMI=32 and program being relocatable. I guess, some problems with path to program being truncated.

Baron-von-Riedesel commented 2 years ago

I guess, some problems with path to program being truncated.

How do you come to that conclusion? What's the error msg that WD does display? What program are you trying to debug with WD? A C ( or FP ) program?

MrMadguy64 commented 2 years ago

How do you come to that conclusion? What's the error msg that WD does display? What program are you trying to debug with WD? A C ( or FP ) program?

May be I'm wrong and it's due to having just one line in message box, so path have to be truncated anyway. It says "Task wasn't loaded: " for any program. And program name seems to be truncated. I tried to load program from current directory, so didn't have path. And some garbage like "{x" was shown.

stsp commented 1 year ago

32bit OS. I think, that it would be great for FreeDOS to become some sort of Win console emulator with old DOS apps support.

Take a look at fdpp. From which FreeDOS quite actively cherry-picks, so maybe they will go there too... some 10 years later. :)