Hi, Pavel Novy, author of some tiny tool which Tyler found useful, writes me some explanation for "if you want to keep it tiny, then why does it start with mov ah,30h / int 21h (but does not do any- thing with the returned DOS version information)?". He found that the following code sequence would hang in Virtual PC:
(com program) > Start: jmp Begin > XMSControl dd ? > Begin: mov ax,4300h > int 2fh > cmp al,80h > jne _errexit > mov ax,4310h > int 2fh > mov word ptr [XMSControl],bx > mov word ptr [XMSControl + 2],es > mov ah,00h > call dword ptr [XMSControl] > _errexit: > mov ax,4c00h > int 21h Can somebody try to reproduce? Should we add some handling to our HIMEM / EMM386 for it? I think this is A20 related, something like "disable A20 on exec() and reenable it again on the first int 21 call". Which is, by the way, a very useless feature: LOADFIX (should be part of every FreeDOS distro! Do we have one? It takes care to load programs outside the first 64k) is, as far as I know, taking care of possible "program might expect wraparound at 1 MB" in a better way. And of course I vote - again - for some HIMEM command line option "switch A20 on at HIMEM start time but refuse to switch it off later". Thanks. Thanks to Pavel for checking his archives about the background of this "use int 21.30 before releasing the environment of the program" (which is where it was used in the binary found by Tyler) trick. Eric ------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285 _______________________________________________ Freedos-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freedos-devel
