home *** CD-ROM | disk | FTP | other *** search
/ Computer Installation Guide - Dragon Clan Series / CD2.iso / DOSTOOLS / PMODEW / UPDATES.DOC < prev    next >
Encoding:
Text File  |  1996-12-31  |  12.7 KB  |  341 lines

  1. ------------------------------------------------------------------------------
  2. ---------------------------- Updates to PMODE/W ------------------------------
  3. ------------------------------------------------------------------------------
  4.  
  5. PMODE/W v1.33:
  6. --------------
  7.  
  8. ) Fixed a bug in PMWLITE which caused an error during compression of
  9.   executables containing zero byte BSS objects.
  10.  
  11. ) INT 31h/AX=204h no longer destroys AL.
  12.  
  13. ) The correct exception number is now displayed in the status dump.
  14.  
  15. PMODE/W v1.32:
  16. --------------
  17.  
  18. ) Fixed a bug in the internal error handler which caused PMODE/W to crash
  19.   Windows in the event of a fatal DPMI error.
  20.  
  21. ) Windows NT Workstation fails to free DPMI callbacks on termination of a
  22.   client program. This would cause PMODE/W to fail during initialization
  23.   after 8 executions at the command prompt. PMODE/W will now manually free
  24.   all callbacks in order to compensate for this bug.
  25.  
  26. ) Corrected memory problems under raw on systems with 64MB of RAM or more.
  27.  
  28. PMODE/W v1.31:
  29. --------------
  30.  
  31. ) Fixed registers which weren't being saved properly in the exception
  32.   handler stack frame.
  33.  
  34. ) Compensated for a bug in Windows which caused INT 21h/AH=51h to return
  35.   a protected mode selector rather than a real mode segment. It appears
  36.   that the Windows DPMI extends this function when it is called from
  37.   a protected mode program. I suppose that Windows uses this for its own
  38.   API and 32bit programs, however it should not be permitted to interfere
  39.   with the operation of DOS protected mode programs.
  40.  
  41. ) Extended INT 21h/AH=62h (see PMODEW.DOC)
  42.  
  43. ) Hooking an exception interrupt with INT 31h/AX=205h will no longer cause
  44.   an error. However, doing so is pointless since the handler will never be
  45.   called. (PMODE/W v1.30+ requires that exceptions be hooked via DPMI
  46.   function INT 31h/AX=203h)
  47.  
  48. PMODE/W v1.30:
  49. --------------
  50.  
  51. ) Added exception handling and DPMI functions 0202h and 0203h.
  52.  
  53. ) Fixed a problem with BSS data on the last page of the executable that was
  54.   not being cleared properly (thanks to Niklas Beisert for this one).
  55.  
  56. ) Changed the behavior of IRQ passup to be more compatible with remapped PICs.
  57.  
  58. ) Compensated for a bug in the old Borland DPMI host which was causing PMODE/W
  59.   to lock up under raw/XMS. Apparently applications making use of the Borland
  60.   DPMI runtime system were leaving the FS and GS segment registers in an
  61.   unusable state.
  62.  
  63. ) Added some new example programs.
  64.  
  65. PMODE/W v1.24:
  66. --------------
  67.  
  68. ) PMWSETUP now supports command line configuration options. See UTILS.DOC
  69.   for important usage information.
  70.  
  71. ) Apparently ECX was being cleared during calls to INT 33h/AX=000Ch when ES
  72.   and EDX were equal to zero. It is now up to the program to set ECX to its
  73.   proper value upon entry to this function.
  74.  
  75. ) Added DPMI function 0002h. (See PMODEW.DOC for more information)
  76.  
  77. ) Fixed problem with only a single page frame of memory being available under
  78.   a VCPI server. This was causing random crashes under EMM386 with the NOEMS
  79.   switch.
  80.  
  81. ) Byte offset fixups are now supported.
  82.  
  83. ) The BIOS data area can now be accessed via selector 40h under Raw/XMS/VCPI.
  84.   Under DPMI, it is up to the host to provide this selector. This should fix
  85.   problems with some buggy DOS/4GW programs.
  86.  
  87. ) DPMI function 0101h should no longer crash if an invalid selector is
  88.   passed in DX.
  89.  
  90. PMODE/W v1.23:
  91. --------------
  92.  
  93. ) Fixed a bug in PMWLITE compressor which sometimes caused compression to fail
  94.   in a few very rare cases.
  95.  
  96. ) DPMI function 400h will no longer destroy the FS register.
  97.  
  98. ) The CPU detection routine now uses the CPUID instruction in order to properly
  99.   identify newer 486 and 586 class processors.
  100.  
  101. ) DOS extender info function added (See INT 31h/AX=EEFFh in PMODEW.DOC).
  102.  
  103. ) Added an optional startup banner (It can be disabled in PMWSETUP).
  104.  
  105. ) Mouse initialization now uses a software reset instead of the slower
  106.   hardware reset.
  107.  
  108. PMODE/W v1.22:
  109. --------------
  110.  
  111. ) UPDATES.DOC is now in reverse order.
  112.  
  113. ) All memory blocks allocated during object loading are now 4096 byte aligned.
  114.  
  115. ) PMWBIND and PMWLITE now include WATCOM's "BINW" directory in their search
  116.   for PMODEW.EXE.
  117.  
  118. ) Fixed a minor inconsistancy in the DOS extender detection function.
  119.  
  120. ) Added DPMI compliant pass-up functionality for the BIOS timer tick interrupt
  121.   1Ch, and the DOS break interrupt 23h and critical error interrupt 24h.
  122.  
  123. ) INT 1Bh is now hooked by PMODE/W and passed up to protected mode for
  124.   compatibility with the WATCOM signal function.
  125.  
  126. ) Returned to simply setting the high bits of ESP to zero in case of a 16bit
  127.   stack in a DPMI real mode callback, seeing as how the previous more complex
  128.   solution had no effect on the problem.
  129.  
  130. ) PMWLITE will now allow compression of EXEs that have objects which are
  131.   2 bytes or smaller.
  132.  
  133. ) PMWSETUP now limits the maximum number of real mode callbacks to 80h in
  134.   order to provide for internal use of callbacks by PMODE/W.
  135.  
  136. PMODE/W v1.21:
  137. --------------
  138.  
  139. ) Fixed a minor internal problem that might crash PMODE/W if the mouse
  140.   real mode callback failed to allocate properly.
  141.  
  142. ) INT 31h function 0Ch will now make sure that the user mouse handler is always
  143.   called using a 32bit stack, even under a DPMI which provides only a 16bit
  144.   stack like OS/2 Warp.
  145.  
  146. ) Fixed INT 31h functions 300h, 301h, 302h behavior of using the real mode
  147.   stack to store some system variables during mode switching in order to
  148.   account for user supplied stacks with parameters already on them.
  149.  
  150. ) Corrected for a problem which seems to be caused by the new HIMEM.SYS which
  151.   is included with Windows 95. When using the combination of HIMEM, EMM386,
  152.   and NDOS/4DOS, a lockup would occur while PMODE/W was attempting to get the
  153.   status of the XMS driver. We tracked this down and it appears to be
  154.   associated with A20 handler #2 of HIMEM.SYS v3.95. When this A20 handler is
  155.   used, the lockup appears. We found that while PMODE/W locked up, other
  156.   programs were working. It was soon discovered that the only difference
  157.   between these other programs and PMODE/W was that there were DOS calls
  158.   in between the calls to the XMS driver. For those technical people out
  159.   there, we see it like this: Unless ANY DOS call is executed after
  160.   INT 2Fh/AX=4300h and before INT 2Fh/AX=4310h, it locks up during the call
  161.   to the XMS API entry point. We have done a lot of testing and we do not
  162.   understand the reasoning behind this. So, we simply stuck a call to
  163.   INT 21h/AH=30h in there and it works just like all the rest of the programs
  164.   we tested. If Microsoft would like to comment (fat chance), we would be
  165.   glad to hear (ignore) their explanation (excuse).
  166.  
  167. PMODE/W v1.20:
  168. --------------
  169.  
  170. ) Added compression of protected mode executables.
  171.  
  172. ) INT 33h function 0Ch will now compensate for OS/2 Warp's obscene habit of
  173.   passing the real mode mouse callback a 16bit stack selector. This behavior
  174.   was sometimes causing slowdowns and lockups with user mouse handlers in
  175.   OS/2 DOS boxes.
  176.  
  177. ) Fixed a problem where the exit code was being destroyed during cleanup.
  178.  
  179. ) Under VCPI/XMS/raw, INT 31h functions 0702h and 0703h will now always return
  180.   with the carry flag clear. Since PMODE/W will never page out memory, these
  181.   functions are unnecessary. Under DPMI however, the DPMI host will handle
  182.   this function. These two functions can now be checked for error while still
  183.   returning successfully even when a DPMI host is not present.
  184.  
  185. ) Fixed minor internal problem with an error not being returned correctly at
  186.   startup if the A20 gate could not be enabled.
  187.  
  188. ) Changed DPMI function 0400h to return DPMI host version number of 0.9
  189.   instead of 1.0.
  190.  
  191. ) Documentation for PMWSETUP, PMWBIND, and PMWLITE can now be found in
  192.   the file UTILS.DOC
  193.  
  194. PMODE/W v1.16:
  195. --------------
  196.  
  197. ) Fixed system crash on exit under a DPMI host like Windows or OS/2.
  198.  
  199. ) INT 33h function 000Ch will work correctly when called with 0000:00000000
  200.   for the function address.
  201.  
  202. ) Fixed DPMI INT 31h functions 0900h, 0901h, and 0902h.
  203.  
  204. PMODE/W v1.15:
  205. --------------
  206.  
  207. ) Fixed a bug with fixup buffer allocation at startup. In rare conditions,
  208.   when not enough low memory was left to relocate the protected mode program
  209.   after it was loaded into low memory, PMODE/W would exit with an out of
  210.   memory error message.
  211.  
  212. ) A 386 instruction had slipped into our code before our 386 detection. This
  213.   caused PMODE/W to lock up under 80286 processors and below instead of
  214.   exiting with the appropriate error message. Needless to say it has been
  215.   fixed.
  216.  
  217. ) Fixed IRQ handling to be compatible with possible hardware remapping of IRQ
  218.   vectors.
  219.  
  220. ) PMODE/W now backs up and restores the entire real mode interrupt vector
  221.   table and the PIC masks upon exit instead of just the IRQ vectors.
  222.  
  223. ) We have changed our licensing policy and added a student discount.
  224.  
  225. ) Addition of ASM example files.
  226.  
  227. ) New custom bind utility! PLEASE READ the "Utilities" section of PMODEW.DOC
  228.   before using it.
  229.  
  230. PMODE/W v1.14:
  231. --------------
  232.  
  233. ) Fixed a bug where INT 21h function 4Fh did not copy the DTA buffer properly.
  234.  
  235. ) Changed initial system memory allocation behavior. Under VCPI memory
  236.   managers, both VCPI and XMS memory will be allocated. This compensates for
  237.   memory managers that do not allow VCPI access to their XMS memory pool.
  238.   Specifically, this fixes a problem with not getting any extended memory
  239.   under EMM386 with EMS turned off.
  240.  
  241. ) INT 31h function 0100h was incorrectly documented in stating the DX register
  242.   was the number of paragraphs to allocate from DOS, the correct register was
  243.   BX. Other minor document errors were also fixed.
  244.  
  245. ) Fixed DPMI function 0503h again, and this time it really works.
  246.  
  247. ) Fixed DPMI function 0500h sometimes returning the wrong size.
  248.  
  249. ) The temporary real mode DTA will now be set in the protected mode INT 21h
  250.   function 1Ah, not just at extender initialization.
  251.  
  252. PMODE/W v1.13:
  253. --------------
  254.  
  255. ) Fixed problems with DOS INT 21h read/write functions for disk full and end
  256.   of file conditions.
  257.  
  258. ) Segments will now be aligned on 256 byte boundaries instead of dword or
  259.   paragraph boundaries.
  260.  
  261. ) Fixed INT 31h function 0503h always failing.
  262.  
  263. PMODE/W v1.12:
  264. --------------
  265.  
  266. ) Fixed a very obscure bug associated with 32bit near call/jmp fixups.
  267.  
  268. PMODE/W v1.11:
  269. --------------
  270.  
  271. ) Added support for DPMI functions 0800h and 0801h.
  272.  
  273. PMODE/W v1.10:
  274. --------------
  275.  
  276. ) Changed the way 16bit objects are handled during loading/relocation.
  277.  
  278. ) Added support for 16/32 bit self-relative fixups.
  279.  
  280. ) INT 21h services 1Bh, 1Ch, 1Fh, 32h, and 34h are now extended.
  281.  
  282. ) MS Mouse INT 33h functions 0009h, 000Ch, 0016h, and 0017h are now extended.
  283.   Please see PMODEW.DOC for more information on mouse-related functions.
  284.  
  285. ) Under VCPI/XMS/raw, INT 31h functions 0600h and 0601h will now always return
  286.   with the carry flag clear. Since PMODE/W will never page out memory, locking
  287.   is unnecessary. Under DPMI however, the DPMI host will handle this function.
  288.   These two functions can now be checked for error while still returning
  289.   successfully even when a DPMI host is not present.
  290.  
  291. ) Changed method of resizing the program DOS memory block at startup to be
  292.   compatible with OS/2 Warp. This fixes a problem with not being able to
  293.   spawn other programs.
  294.  
  295. ) Fixed a very peculiar memory allocation bug. If you tried to allocate a
  296.   memory block of about 2 gigs, the system would be corrupted and lock up.
  297.  
  298. ) Fixed a minor inconsistency in the way memory was allocated for objects.
  299.  
  300. PMODE/W v1.02:
  301. --------------
  302.  
  303. ) Maintenance release (documentation changes, added FAQ).
  304.  
  305. ) Changed the method of restoring real mode IRQ vectors upon program
  306.   termination.
  307.  
  308. PMODE/W v1.01:
  309. --------------
  310.  
  311. ) Now even smaller in size (less than 8k).
  312.  
  313. ) The DOS critical error handler is now included in the clean up process.
  314.  
  315. ) 32bit far pointer fixups are now supported (though we doubt they are used).
  316.  
  317. ) PMWSETUP updated to reflect the fact that the number of real mode callbacks
  318.   allocated cannot exceed 0FFh.
  319.  
  320. ) PMODEW.EXE will no longer crash the system if run by itself (though you
  321.   should not be doing that anyway because its pointless).
  322.  
  323. ) After that, we found a small bug in our INT 31h DOS memory block functions.
  324.   Needless to say, it is fixed now.
  325.  
  326. ) INT 21h function 49h zeroes the ES selector when that block is successfully
  327.   freed.
  328.  
  329. ) INT 21h function 48h now returns error codes correctly.
  330.  
  331. ) After all this, we were bored, so we hunted down and compensated for a
  332.   DOS/4GW and EMM386 bug. EMM386 trashed the high bits of ESP which DOS/4GW
  333.   was assuming to be cleared. This only means that now you can run DOS/4GW
  334.   successfully after a PMODE/W program.
  335.  
  336. PMODE/W v1.0:
  337. -------------
  338.  
  339. ) First release of PMODE/W.
  340.  
  341.