Reply 1860 of 1863, by crazii
- Rank
- Oldbie
RayeR wrote on Today, 12:00:Did you write vdpmi from scratch? Maybe could start with cwsdpmi that is mostly in TurboC with some assembly parts. I understand you, for me it's also not easy to read huge asm projects even well documented one, better with C...
Yes. USBDDOS has a minimal "local-builtin DPMI" (extender-like) code and I re-used some of it, adding memory & LDT APIs. compiled by Openwatcom, assembly codes are coupled with watcom register calling convention. it has taken shape and there's no going back to other compiler options. besides TurboC generate less efficient codes although it compiles fast.
The VDPMI core is in pure 32 bit flat model, much more easy and efficient like normal win32/linux programming, with tiny amount of assembly for mode switches and interrupt/exception entries, its optimized memory layout needs the features of the powerful linker - wlink. TurboC on the other hand is a 16bit compiler, despite the fact that it can use 32 bit registers.
the core is linked in dos4gnz mode, but it is not a dos4g(w) program, instead it is a 32bit LX image stubbed with a custom 16bit loader, not using the dos4gw loader.
since the loader can load LE/LX images and the windows VxDs are in LE format, the loader can load VxDs with some fixes & improvements.
Toshiba Satellite Pro 4300 - YMF744, Savage IX
Toshiba Satellite 2805-S501 - YMF754, GeForce 2Go
IBM Thinkpad A21p - CS4624, Mobility Radeon 128
main: Intel NUC11PHKi7C Phantom Canyon: i7-1165G7 RTX2060 64G 2T760PSDD