|
Post by carlos on Feb 16, 2023 9:47:47 GMT 1
Hello I am still develop/maintain applications for DOS. I am working with the DWPL library and Delphi to produce TVISION applications. They are fast, with text mode windows and mouse support. I have used vDos version, signed may, 30, 2018 without problems in the past with my programs. I have also used the 32 bit Delphi console versions in the past, but now with the latest version of Windows 11, console apps are broken in the new terminal/cmd app. So my only possibility to run my programs combined with wdosx extender is FreeDOS or of course VDOS which is my choice because it can run in windows 11 host. After upgrading VDOS to the latest version, my programs doesn't work anymore and give an INT 31 error in VDOS. Is there a solution for this? Please find attached an example program. I worked with old vDOS without problems. Best regards Carlos Attachments:dagnacht.zip (256.1 KB)
|
|
|
Post by Jos on Feb 16, 2023 10:06:04 GMT 1
Can you provide another example?
dagnacht.zip is blocked by Windows Defender (Trojan:Script/Wacatac.H!ml).
Jos
|
|
|
Post by carlos on Feb 16, 2023 10:14:34 GMT 1
Hello
I can garantee that the file is clean. It is compiled with delphi 7 and every delphi 7 program will give this false positive. I always report my false positives to microsoft and the false positive will be removed.
I will do the same with dagnacht.exe and will come back if the false positive is removed.
Carlos
|
|
|
Post by carlos on Feb 16, 2023 12:37:50 GMT 1
|
|
|
Post by Jos on Feb 16, 2023 14:46:02 GMT 1
The Virustotal report doesn’t always match the offline scanners, and Defender is not among the online ones. The Microsoft report isn’t accessible to others: Defender still shows (tested at 2 PC’s): Jos
|
|
|
Post by carlos on Feb 16, 2023 15:55:31 GMT 1
Hello Even a delphi 7 console program with only this code: Begin Writeln('Hello'); End. Gives this False positive... All delphi 7 programs are marked positive... Attached is the Microsoft report as screenshot... There is nothing more, I can do to prove it's clean. Strange that your defender report this. I have not this behaviour on WinXP, 7, 8.1, 10 and 11... Best regards Carlos Attachments:
|
|
|
Post by Jos on Feb 16, 2023 18:21:46 GMT 1
Don’t know why Defender detects a virus. The two PC’s I used are both Windows 11 and fully updated.
Whitelisted your program, and get the same error.
“INT 31 error!” however isn’t really informative. INT 31 is the DPMI interface installed by your program (wdosx). Additional complication is your program uses virtual memory paging.
With that little to go on it could very well take considerable time to track down what your program is essentially complaining about.
Will inform you if/when I found it. For now you should revert to using version 2018.
Jos
|
|
|
Post by carlos on Feb 17, 2023 5:59:26 GMT 1
Thank you, Jos for your support!
Best regards Carlos
|
|
|
Post by Jos on Feb 20, 2023 13:26:31 GMT 1
Found the mishap:
As the name implies, in virtual memory paging mode addresses are virtual. Real mode programs can be compiled so those can (assisted by a DOS extender) address memory beyond the first 1MB.
The upper 10 bits of a 32-bit virtual address specify a page directory entry (PDE). The next 10 bits a page table entry (PTE) within the PDE. The lower 12 bits the offset within the PTE. Before virtual addresses can be used, the PDE and PTE tables are setup in memory by the DOS extender. Converting a virtual to a physical address by the CPU requires time consuming shifting, masking and PDE/PTE table accesses. A real CPU uses a small cache to speedup this process.
This is however no option for vDos, maintaining and searching such a cache costs as much time as translating the virtual memory address. So version 2019 introduced an internal virtual to physical address table of a whopping 1MB entries. All possible 1024 PDE’s x 1024 PTE’s, so the translation is a mere shifting to get the index, and adding the 12 bit offset once the index value is established. Resulting in some 30% overall speed gain of virtual page mode programs.
This strategy relies on static PDE’s and PTE’s. All DOS extenders I encountered so far initialize those at startup once. WDOSX however occasionally modifies those later on, no idea why. With that the 1MB table becomes invalid, with incorrect physical addresses. vDos will now trap WDOSX doing that and clear its 1MB table so that is rebuild during following memory accesses.
After cleaning the source of tests etc., I’ll send you a vDos.exe to have a look at.
Jos
|
|
|
Post by carlos on Feb 20, 2023 18:48:05 GMT 1
Hello Jos
I can confirm that all my WDOSX / Delphi DWPL programs now work in the test version you sent!
I am not so technical that I understand what exactly you modified, but it is incredible that you were able to solve this problem so quickly!
Best regards Carlos
|
|