------------------------------------------------------------------------------ ---------------------------- Updates to PMODE/W ------------------------------ ------------------------------------------------------------------------------ PMODE/W v1.0: ------------- ) First release of PMODE/W. PMODE/W v1.01: -------------- ) Now even smaller in size (less than 8k). ) The DOS critical error handler is now included in the clean up process. ) 32bit far pointer fixups are now supported (though we doubt they are used). ) PMWSETUP updated to reflect the fact that the number of real mode callbacks allocated cannot exceed 0FFh. ) PMODEW.EXE will no longer crash the system if run by itself (though you should not be doing that anyway because its pointless). ) After that, we found a small bug in our INT 31h DOS memory block functions. Needless to say, it is fixed now. ) INT 21h function 49h zeroes the ES selector when that block is successfully freed. ) INT 21h function 48h now returns error codes correctly. ) After all this, we were bored, so we hunted down and compensated for a DOS/4GW and EMM386 bug. EMM386 trashed the high bits of ESP which DOS/4GW was assuming to be cleared. This only means that now you can run DOS/4GW successfully after a PMODE/W program. PMODE/W v1.02: -------------- ) Maintenance release (documentation changes, added FAQ). ) Changed the method of restoring real mode IRQ vectors upon program termination. PMODE/W v1.10: -------------- ) Changed the way 16bit objects are handled during loading/relocation. ) Added support for 16/32 bit self-relative fixups. ) INT 21h services 1Bh, 1Ch, 1Fh, 32h, and 34h are now extended. ) MS Mouse INT 33h functions 0009h, 000Ch, 0016h, and 0017h are now extended. Please see PMODEW.DOC for more information on mouse-related functions. ) Under VCPI/XMS/raw, INT 31h functions 0600h and 0601h will now always return with the carry flag clear. Since PMODE/W will never page out memory, locking is unnecessary. Under DPMI however, the DPMI host will handle this function. These two functions can now be checked for error while still returning successfully even when a DPMI host is not present. ) Changed method of resizing the program DOS memory block at startup to be compatible with OS/2 Warp. This fixes a problem with not being able to spawn other programs. ) Fixed a very peculiar memory allocation bug. If you tried to allocate a memory block of about 2 gigs, the system would be corrupted and lock up. ) Fixed a minor inconsistency in the way memory was allocated for objects. PMODE/W v1.11: -------------- ) Added support for DPMI functions 0800h and 0801h. PMODE/W v1.12: -------------- ) Fixed a very obscure bug associated with 32bit near call/jmp fixups. PMODE/W v1.13: -------------- ) Fixed problems with DOS INT 21h read/write functions for disk full and end of file conditions. ) Segments will now be aligned on 256 byte boundaries instead of dword or paragraph boundaries. ) Fixed INT 31h function 0503h always failing. PMODE/W v1.14: -------------- ) Fixed a bug where INT 21h function 4Fh did not copy the DTA buffer properly. ) Changed initial system memory allocation behavior. Under VCPI memory managers, both VCPI and XMS memory will be allocated. This compensates for memory managers that do not allow VCPI access to their XMS memory pool. Specifically, this fixes a problem with not getting any extended memory under EMM386 with EMS turned off. ) INT 31h function 0100h was incorrectly documented in stating the DX register was the number of paragraphs to allocate from DOS, the correct register was BX. Other minor document errors were also fixed. ) Fixed DPMI function 0503h again, and this time it really works. ) Fixed DPMI function 0500h sometimes returning the wrong size. ) The temporary real mode DTA will now be set in the protected mode INT 21h function 1Ah, not just at extender initialization. PMODE/W v1.15: -------------- ) Fixed a bug with fixup buffer allocation at startup. In rare conditions, when not enough low memory was left to relocate the protected mode program after it was loaded into low memory, PMODE/W would exit with an out of memory error message. ) A 386 instruction had slipped into our code before our 386 detection. This caused PMODE/W to lock up under 80286 processors and below instead of exiting with the appropriate error message. Needless to say it has been fixed. ) Fixed IRQ handling to be compatible with possible hardware remapping of IRQ vectors. ) PMODE/W now backs up and restores the entire real mode interrupt vector table and the PIC masks upon exit instead of just the IRQ vectors. ) We have changed our licensing policy and added a student discount. ) Addition of ASM example files. ) New custom bind utility! PLEASE READ the "Utilities" section of PMODEW.DOC before using it. PMODE/W v1.16: -------------- ) Fixed system crash on exit under a DPMI host like Windows or OS/2. ) INT 33h function 000Ch will work correctly when called with 0000:00000000 for the function address. ) Fixed DPMI INT 31h functions 0900h, 0901h, and 0902h.