For my sins I am supporting a large DOS based control system.
As a first stage in upgrading the system the client is looking to run the system on XP.
The major issue I have identified is that the NTVDM maintains the time returned to 16-bit apps independant from the Windows system time, but requests for the date actually return the system date. The NTVDM maintained time is initialised when the app starts but drifts with respect to the system time – this has the effect that the date is not guaranteed to change when the time reaches midnight.
I have found a product called TameDOS which will correct this & always return the system time. Unfortunately, despite several attempts to contact their support dept, I have had no reply – and the client will not use unsupported third-party software.
From what I understand, it should be possible to write a Virtual Device Driver to return the system time but am having difficulty finding information on how to hook into the NTVDM to trap calls to DOS interrupts. I did find reference to an MSDN article “How To Privide Virtual Device Support: VDM-Based Intercepts” – but cant find it on Microsofts site. Can anyone give me any pointers on where to look to find this information ?
Alternatively, I could modify the control system programs so that they load & call a VDD directly (using the 0C4h 0C4h 58h 0Nh mechanism). Can anybody advise if that would be a better solution or if another solution would be appropriate ?