Cuando preparaba el artículo Portabilidad, me di cuenta que dentro de contrib\extender\dos32a estaba todavía incluído DOS/32 Advanced 7.20, la versión en la que tuve mucho que ver. Como en MAME y yo, es algo que tenía hace tiempo olvidado.
A principios de 2000, con el abandono de Watcom C/C++ por parte de Sybase, y el subsiguiente anuncio de liberarlo como código abierto, fue una decisión que me entusiasmó, por lo que no es de extrañar que tuviera cierta implicación personal en aquellos años.
En 2001, con la primera versión 11.0c, me centré en los extensores DOS. Watcom soportaba una gran variedad de ellos, y no quedaba muy claro cual era el mejor, pero probablemente no era DOS/4GW. Así es como llegué a descubrir DOS/32 Advanced, un producto que por aquella época era comercial, extremadamente compacto (casi tanto como PMODE/W), pero muy rápido, estable y con bastantes funciones.
DOS32/A, había comenzado su andadura en 1996 como producto comercial desarrollado por Narech Koumar (Supernar Systems/SUNSYS), lamentablemente nunca llegó a cosechar el éxito que su calidad merecía. Así que cuando contacté con él en 2002, explicándole el futuro de Watcom, y la posibilidad de hacer una versión gratuita, enseguida concluyó que dado que ya no le reportaba ingresos, lo mejor sería hacerlo libre, y así es como salió DOS/32 Advanced 7.10 Liberty Edition.
Nos pusimos juntos a preparar la siguiente versión 7.2, creamos un espacio en el por entonces innovador Sourceforge y me dediqué a crear una nueva documentación, y más tarde como mantenedor oficial, ya que Narech no tenía mucho tiempo ni motivación para continuar desarrollándolo.
Así fui aplicando pequeñas mejoras, e integrando parches de Narech, hasta que oficialmente se publicó la versión 7.20 de 2002, ya como obra de el DOS/32 Advanced Team.
Lo comuniqué al equipo de Open Watcom, y estuvieron encantados de incluir el ahora opensource DOS32/A 7.20 como parte de Open Watcom 1.0 de 2003.
La versión 7.20, entre otros cambios, prescindía del instalador, cosa que a Narech no le gustó demasiado, y fue la única que se consideró como de la comunidad.
En 2005 volvió a tomar los mandos del proyecto, con las versiones 7.33 y 7.35, 9.1.0, y 9.1.1 también sin instalador, pero esta vez bajo la autoría de Narech Kontcell Todas eran bugfixes, salvo la 9.1.0, que demostraba con la cantidad de novedades que el proyecto había revivido. Finalmente en 2006, el proyecto quedaría congelado con la versión 9.1.2.
Durante aquellos años, ya no era un desarrollador activo en Open Watcom, y mis pequeñas colaboraciones en WASM y la CRTL se habían integrado hacía tiempo en la rama oficial, por lo que aunque insistí varias veces en que actualizaran el DOS32/A incluido en la distribución, nunca llegó a hacerse. Algo que me molestó en su momento, y que me alegra hoy en día, ya que si se hubiera actualizado, hoy no habría encontrado sus vestigios.
Por motivos históricos, y antes de que se pierda por completo, he decidido hacer una copia de la documentación y la web de 2003/2004, que podéis consultar aquí.
A continuación rescato el changelog completo, que incluye las actualizaciones relativas a la versión 7.2, incluyendo unos elaborados benchmarks, que muestran su capacidad y superioridad.
***************************************** *** DOS/32A DOS Extender -- ChangeLog *** ***************************************** [2006-04-20] DOS/32 Advanced DOS Extender, version 9.1.2 =========================================== DOS Extender (DOS32A.EXE): -------------------------- + Bugfix: Int 21h function 3Fh refused to return when reading from STDIN (reported by Gianni Gallucci) + Bugfix: in irq_fail fn, hardware exception #9 doesn't have exception code (reported by Charles Hyde) + applied mode.asm patch (also by Charles Hyde from Infineon) with minor formatting changes; I'm rather ambivalent about implementing the others into the mainstream builds (in particular the PAE one), will make those available from the development (beta) page... [2005-12-12] DOS/32 Advanced DOS Extender, version 9.1.1 =========================================== DOS Extender (DOS32A.EXE): -------------------------- + improved memory allocation under Clean system: INT 15h, AX=0E801h is used if AX=0E820h fails (based on patch provided by Arthur Kalliokoski) [2005-11-08] DOS/32 Advanced DOS Extender, version 9.1.0 =========================================== DOS Extender (DOS32A.EXE): -------------------------- + added support for SSE/SSE2/SSE3 capable processors + added preliminary support for PE file format (recognized but not yet implemented) + with verbose mode turned on the DOS Extender will pause prompting to press a key; this gives a chance to read loader info before the app kicks in + internal debugger has been dropped, CLIENT/debug.asm has been heavily rewritten + INT 1 and INT 3 op-codes are now treated by DOS/32A as no-ops, this works around some lame anti-debugging protections (Null-pointer protection works as expected) + "VCPI/DPMI Detection Order" option has been removed, DOS/32A unconditionally favours VCPI over DPMI, if and when possible + "Internal Exception Control" option has been removed, DOS/32A is always in control of the exception handling + "Trap and Report Emulated IRQs" option has been removed, this simplifies IRQ handling + "Extended Memory Blocks Checking" option has been removed, DOS/32A unconditionally checks EMB integrity + DPMITST environment option is no longer supported; it is still recognized but is now a no-op + whenever possible, DOS/32A will favour INT 15h/XMS systems over VCPI/DPMI, (thanks wd) + INT 31h DPMI last function entry is cached so that subsequent calls with the same function number do no search the lookup table + INT 31h DPMI functions 0E00h & 0E01h no longer virtualize FPU EM & MP flags + additional PIC constraint: slave PIC may not be mapped onto INT 8 + slightly reduced run-time complexity of the IRQ handling code + exception handlers are now invoked with the correct stack frame (as mandated by DPMI v0.9 spec) + all the exception vectors are now hooked under external DPMI (symmetric with built-in DPMI and using the same exception handlers) SUNSYS Setup Utility (SS.EXE): ------------------------------ + the following options in the Kernel menu have been deprecated: "VCPI/DPMI Detection Order" "Internal Exception Control" "Trap and Report Emulated IRQs" "Extended Memory Blocks Checking" it is still possible to toggle the state of these options, but the changes have no effect on the DOS Extender SUNSYS Debugger (SD.EXE): ------------------------- + R.I.P. [2005-05-19] DOS/32 Advanced DOS Extender, version 7.35 ========================================== DOS Extender (DOS32A.EXE): -------------------------- + mouse callback code cleanup + allocation of up to 2Gig under Clean system (Int 15h, AX=E820h) + with verbose mode active and not under external DPMI the entry point of application will trap to internal debugger [2005-01-12] DOS/32 Advanced DOS Extender version 7.33 ========================================= DOS Extender (DOS32A.EXE): -------------------------- + Bugfix: exec loader could crash the DOS Extender during startup in rare situations + Bugfix: DPMI function 0301h can not transfer data on stack to real mode procedure + Int 21h functions 4402h, 4403h, 4404h, 4405h, (DOS IOCTL) have been extended + Int 21h functions 3Fh & 40h (DOS IO) have been rewritten + mouse callback can now handle non-standard stack frames SUNSYS Bind Utility (SB.EXE): ----------------------------- + Bugfix: minor binding problems with unbound LE/LX execs + removed check for DOS32A environment string SUNSYS Compress Utility (SC.EXE): --------------------------------- + removed check for DOS32A environment string SUNSYS Setup Utility (SS.EXE): ------------------------------ + removed Lock and Version checks ******************************************************************************* Release 9 DOS/32 Advanced DOS Extender version 7.2 ======================================== News: ----- + Now Javier Gutierrez has the exclusive rights for using the DOS/32 Advanced name and in the main project mantainer. So, I am looking for contributors. + Improved a bit the build system. DOS Extender: ------------- + Applied Narech Koumar patch for the bug reported by Bart Oldeman on OpenWatcom newsgroups. + Recompiled using Watcom C++ 11.0c beta and Turbo Assembler 5.3. + Stubs now uses 8088/8086 instructions, so DOS/32 binded programs do not hang on those machines. Other: ------ + All utilities are linked against DOS32A. + Documentation has been improved, and is now compatible with Netscape 4.xx. ******************************************************************************* Release 8 DOS/32 Advanced DOS Extender version 7.1 ======================================== News: ----- + This release of DOS/32A is distributed under a new license. See "license.txt" for more information. + The complete source code of the DOS Extender and its tools is included with this release. DOS Extender: ------------- + Fixed bug in DPMI function 0503h when in certain cases the contents of the memory block being reallocated was not copied to the new location. + Minor fix: DOS/32A environment configuration option /NOWARN can now accept several warnings separated by a comma (eg /NOWARN:9003,9004). Other: ------ + Minor updates to the documentation manuals, mainly to reflect the new licensing issues. ******************************************************************************* Service Pack 1 (Revision [C]) DOS/32 Advanced DOS Extender version 7.0 ======================================== News: ----- + SVER Utility program. This utility can be used to find out the version of DOS/32A, STUB/32A or STUB/32C and to display the OEM Information appended to the LC-style executables by Original Equipment Vendors. DOS Extender: ------------- + Fixed problem in DOS/32A DPMI kernel causing the DOS Extender not being able to properly callback the IRQs of the second PIC to the protected mode handlers. SUNSYS Setup Utility: --------------------- + Fixed minor problem when in Kernel Config window setting VCPI PhysTables to 0 and switching to Hex mode caused the number to flash red incorrectly indicating an errorneously enered value. ******************************************************************************* Release 7 DOS/32 Advanced DOS Extender version 7.0 ======================================== News ---- + A new high performance D32A C/C++ Run-Time Library is now included with DOS/32 Advanced DOS Extender. The Library is located in .\L32 directory and its C/C++ header in .\H32 directory. + The documentation manuals supplied with DOS/32 Advanced DOS Extender are now in the HTML format. The plain-text based manuals have been dropped. To view the new HTML based manuals use an internet browser (Netscape Navigator is highly recommended although Explorer will also do fine), select "File -> Open File" from the browser's menu and open "manual.htm" file located in the .\DOCS directory. DOS Extender ------------ + Year 2000 compliance has been added for DOS/32 Advanced DOS Extender and all of the utilities accompanying it. + When running under _external_ DPMI host, DOS/32A will remove its own DPMI Kernel from memory, thus freeing up up to 10KB of conventional DOS memory. + Added exception handling under _external_ DPMI, DOS/32A will trap exceptions #0, #6, #13 and #14 (ie the most common) and report the complete machine state; DOS/32A will now also report where the exception came from by specifying "KERNEL" for ADPMI Kernel, "CLIENT" for DOS/32A Client, "APP/32" for the currently running application and "APP/??" if exception's origin is unknown. + Added support for "Performance Counters" which monitor the number of mode switches for INTs, IRQs, and Callbacks; a new Extended DPMI API function (AX=0A00h, then AL=09h) provides access to these. + Added support for protected mode TSRs installed with INT 21h, AH=31h function; contents of DX register passed to this function are ignored when called from protected mode. + Added new warning (9006): "incompatible version of DOS/32A already running" issued when the parent and the child applications are running under different versions of DOS/32A (when spawn() programs). + Added new environment option "/NOWARN:xxxx" to disable particular warnings, ie /NOWARN:9003. + Added new environment option "/NOC" to disable explictly the copyright banner. The warnings are still displayed on the screen. + Increased the maximum of loadable Objects from 32 to 64 per application. + Improved CTRL-C and CTRL-Break handling in the DOS Extender's Client code, which solves problems with these key combinations not properly detected when running under some external DPMI hosts (in particular Windows). + Improved Interrupt switching algorithm in DOS/32A DPMI Kernel, also improved algorithm enabling A20 gate when running in Clean system. + Improved error checking in Extended DOS functions 0FF95h and 0FF97h: they will now fail calls that allocate 0 bytes or >1MB. + Improved support for VCPI system software; fixed bug in VCPI initialization code which caused the DOS Extender's kernel to fail to free all the allocated PageTables on exit in some situations. You are now also allowed to set VCPI PhysTables value to zero to save some conventional memory if not using physical memory mapping DPMI functions 0800h and 0801h. + Minor fix: DPMI function 0001h (Free Selector) will now fail any calls that try to free the current CS (Kernel) or SS (App. stack) selectors. + Minor fix: Extended DOS function 4Ch (Terminate) will release ZERO selector before exiting to DOS. + Minor improvements in the LC-style file format loader: uncompressed Objects are loaded slightly faster. + Fixed bug in Extended DOS function AH=40h (Write to file) when DOS/32A would crash when running under external DPMI and writing to disk with no free space left. + Fixed bug in DOS/32 Advanced environment configuration reading functions, when the DOS Extender would sometimes at startup take off into "hyperspace" reading the whole environment, instead of just one line (DOS32A=...). + Removed check for invalid limits in DPMI function 0008h; DOS/32A will now unconditionally perform auto-correction of selector's limit if it is out of range. + Removed support for bottom-up allocation scheme when running under Clean (INT 15h) system software. Instead improved support for top-down allocation scheme which yields better performance and more extended memory. + Reduced the default number of Page Tables reserved for physical memory mapping from 4 down to 2 (eq 8MB). + Reduced the default size of DOS Transfer Buffer from 16KB down to 8KB, does not affect disk I/O performance but brings the memory requirements down. SUNSYS Bind Utility: -------------------- + Fixed all known problems. + Added support for OEM title information for LC-style execs. + Otherwise no major changes visible to the user. SUNSYS Compress Utility: ------------------------ + Fixed all known problems. + Improved (rewritten) "Advanced Preprocessing" algorithm. + Added support for OEM title information for LC-style execs. + Otherwise no major changes visible to the user. SUNSYS Setup Utility: --------------------- + Removed "Selector Invalid Limit Check" option. + Otherwise no major changes visible to the user. SUNSYS Debugger: ---------------- + No major changes. ******************************************************************************* Release 6 DOS/32 Advanced DOS Extender version 6.00 ========================================= News ---- + New SUNSYS Compress Utility program which allows compression of LE- and LX-style Linear Executables into the new LC-style Linear Compressed file format (see "sc.txt" help file located in .\DOCS directory). + Configurable stub file STUB/32C which can be configured by SUNSYS Setup Utility program, located in .\BINW directory and named "stub32c.exe". DOS Extender ------------ + Removed fatal error (0008): "configuration header corrupted", which was never used unless the DOS Extender was linked incorrectly. + Upon a crash (exception) in protected mode application the DOS Extender will report the unrelocated crash address for _any_ Object, not the only one that had entry point in it as it did before. + DOS/32 Advanced now supports allocation of more than 64MB of memory without using Virtual Memory. The maximum amount of memory the DOS Extender can allocate is limited to 2GB when running under XMS and to 256MB under VCPI. + Fixed problem with Verbose Mode when the DOS Extender would report the incorrect size of DPMI memory when allocated >64MB. The DPMI memory size is now reported in KB when below 64MB, and in MB when above. + Added support for LC-style Linear Compressed protected mode executables. By using SUNSYS Compress Utility the users can compress LE and LX applications into the new LC file format. + Added new run-time error (4007): "not enough DOS Transfer Buffer space to load LC-exec" which is reported when loading Linear Compressed executables and the size of DOS Transfer Buffer is set below 8KB. + The Loader will skip allocation of selectors for subsequently loaded 32bit Objects, and will make the application happy with only one 32bit CODE and one 32bit DATA selectors respective. This will prevent wasting of selectors in applications which contain more than two 32bit Objects. + DPMI functions 0602h and 0603h are supported and will return with CF clear without actually doing anything good. SUNSYS Bind Utility: -------------------- + Added new commands and options "/BC", "/RC", "/BN", "/UN", "/Q", "/S" and "/H" (or "/?"). Refer to "sb.txt" help file for more information. SUNSYS Compress Utility: ------------------------ + This one is new for this release. See "sc.txt" for help. SUNSYS Setup Utility: --------------------- + Added support for configurable stubs, STUB/32C files. + Added (actually documented) options "/INFO", "/LOCK", "/UNLOCK", "/QUIET", "/SILENT" and "/H" (or "/?"). See "ss.txt" help file. SUNSYS Debugger: ---------------- + Minor changes, fixed mouse problem with some mouse drivers when the cursor would disappear when moving it below the bottom of the screen. ******************************************************************************* Release 5 DOS/32 Advanced DOS Extender version 5.00 ========================================= DOS Extender ------------ + Resolved problem with WATCOM Linker v11.0(a) when the DOS Extender was not able to correctly recognize and load the LX-style executables. + The DOS Extender now supports, and will correctly load Objects with the size of zero. However, as such Objects will in most cases indicate an error in the protected mode application (wlink dead code elimination should kill'em), the DOS Extender will issue a new warning (9005) to inform the user about this situation. + The default size of the DOS Transfer Buffer is now 16KB instead of 64KB. This not only reduced the DOS memory requirements, but also improved the DOS Extender's disk I/O throughoutput. + When showing information about Selectors in the exception report listing the DOS Extender will no longer list the DPL of a Selector as it always was equal to 0. Instead, DOS/32 Advanced will show a better explanation of Selector's attributes (CODE/DATA and 16/32 bit). + DPMI function 0008h, Set Segment Limit, will now report invalid limits as a new run-time error (6006), which will result in application termination. You can always turn off this feature, by using the SUNSYS Setup Utility. + Fatal error (3005) will now report message "error in app exec" which means that the application was corrupted or an error occurred at link time. + With VERBOSE mode turned on the DOS Extender will now list the PSP_Sel, Env_Sel and Env_Seg to provide additional information about PSP Selector, Environment Selector and Environment real mode Segment allocated by the DOS Extender for application. In addition, the DOS Extender will report Process_ID and Module Name in the exception listing which can be useful when spawning applications. + Added new feature: "Start Full-Screen under Windows". DOS/32 Advanced will switch the application to the full-screen mode when running under Windows in a DOS-box window. Can be turned off (the default is off). + Another new option in the DOS Extender: "Ignore DOS/4G API Extension Calls". Documented in the "ss.txt" help file. Certain programs which otherwise use DOS/4G API extensions can now be run under DOS/32 Advanced. + The DOS Extender will now automatically deinstall the possibly installed mouse ISR by issuing INT 33h with AX=000Ch and ES:EDI=0 on exit to DOS. + New extended DOS functions 0FF94h..0FF97h are now supported for allocation of DOS memory. These functions work in exactly the same way as functions 0FF90h..0FF93h. Look into "Programmer's Reference" ("prog_ref.doc" file) documentation for more information about those. + The spawning techniques of DOS/32 Advanced have been greatly improved. The required size of the "DOS Transfer Buffer" is now 1KB instead of 4KB when using extended DOS function AH=4Bh to spawn. Read more about this in the "Technical Reference" ("rech_ref.doc" file) documentation. + Memory management ADPMI functions have been rewritten and now offer improved performance and security. Allocated Extended Memory Blocks are now aligned on Paragraph (16-byte) boundary and protection against EMB overwriting is now 99% safe. + Once again, DOS/32 Advanced DOS Extender requires no extended memory to load and execute a protected mode program. The relocations are now loaded into DOS memory first, only when not enough DOS memory, will they be loaded into extended memory (a very rare situation). + Fixed minor problem in DPMI functions 0800h/0801h when the last mapped page was not marked as last. + Fixed bug in extended DOS function AH=40h, Write to File, when truncation of files (using ECX = 0) did not work as expected. + Corrected DPMI function 050Ah, Get Base and Size of Memory Block. The base reported now points to the actual address of memory block instead of block header. + Fixed problem with IRQ 7 which was not processed by DOS/32 Advanced built-in DPMI correctly. + Fixed a small problem when the DOS Extender could not load and execute the "raw" LE/LX programs, ie applications not bound to any stub. + The ADPMI function 0EEFFh now returns EAX with "D32A" ID-string instead of "PMDW". This function has been pretty much standardized and can be used for effective detection of the currently running DOS Extender. + The Free Package version now supports DPMI functions 0800h and 0801h for mapping of linear memory. + Support for Win95 Long File Names has been included into this version of DOS/32 Advanced. Look for information on these functions (INT 21h, AX=71xxh) in the "Programmer's Reference" documentation ("prog_ref.doc" file). SUNSYS Setup Utility: --------------------- + Two new options have been added: "Ignore DOS/4G API Extension Calls" in the "Configure DOS/32A DPMI Kernel" menu, and "Start Full-Screen under Windows" in the "Configure DOS/32A DOS Extender" menu. + Several options have been renamed, and placed in a more proper (logical) order. You really should not have problems with recognizing them though. SUNSYS Bind Utility: -------------------- + Unbinding of LE/LX executables is now supported in the Free Package version. SUNSYS Debugger: ---------------- + Fully functional, except for the "System Interrupt History" which is supported in the Pro version only. Otherwise no major changes. ******************************************************************************* Release 4 DOS/32 Advanced DOS Extender version 4.30 ========================================= Install Program: ---------------- + The Install program will now automatically copy file "dos32a.lnk" into WATCOM's BINW or BIN directory (depending on which version of WATCOM C/C++ you have) if you select auto-system-update (which is strongly recommended). + You can now install DOS/32 Advanced in any directory, not just "DRV:\DIR" as it was before. You can install it for example in "C:\WATCOM\DOS32A" or anything like that. + File "dos4gw.exe" which was located in .\PCTEST directory has been removed to reduce the size of Compressed Data File. DOS Extender: ------------- + Bug fixed in DPMI function 0500h when the reported information was written to DS instead of ES selector (I know, I know...). + The DOS Extender will now correctly recognize and execute all types of DOS/4G(W) Professional bound applications. + Mode switching routines have been optimized for Pentium MMX/II and AMD K6 processors (or any CPU with multiple execution units supporting RISC86). This does not really improve mode switching speed though. + Bug fixed: the DOS Extender can now display decimal numbers greater than 0x7FFF within strings containing "%d" option. + DOS/32 Advanced now supports the "Verbose Mode". This one can be useful when you need to know exactly what is going on while the DOS Extender is loading your application, amount of allocated memory and so on. + New environment option: /VERBOSE[:ON|OFF]. Refer to the "User's Reference" ("user_ref.doc" file) documentation for more information. + New "undocumented" DOS API function AX=Magic. This function is mentioned somewhere in this package, but you will have to discover it yourself! SUNSYS Setup Utility: --------------------- + The Setup Utility now supports new option: "Verbose Mode". SUNSYS Bind Utility: -------------------- + The Bind Utility will now correctly recognize and process all types of DOS/4G(W) Professional bound applications. + Two new commands: "-BS", bind STUB/32A to a file, and "-RS" replace existing stub with STUB/32A, now supported. SUNSYS Debugger: ---------------- + The Debugger will now correctly recognize and load all types of DOS/4G(W) Professional bound applications. + The Debugger shipped with the Free Package version of the DOS Extender now supports all commands except "Here" (F4-key) and "Run" (F9-key). ******************************************************************************* Release 3 DOS/32 Advanced DOS Extender version 4.00 ========================================= News: ----- + Installation program that installs DOS/32 Advanced DOS Extender on your computer. + New stub file, 538 bytes in size! DOS Extender: ------------- + DOS/32 Advanced DOS Extender does not check for 8086 anymore. This should not be a problem since PC/XTs are quite dead nowdays. + DOS API function AH=0Ah is no longer supported and has been removed. It is not used in WATCOM libraries and nobody uses it anyway. + Support for Slow Object Loading Scheme has been dropped. The DOS Extender now requires some Extended memory in order to load application fixups, even if the application itself is loaded in DOS memory. + Error code (4004) has been changed: not enough extended memory to load application fixups. + Page Offset Shifts other than 0 are now supported by the loader for LX-style executables. + Fixed bug in startup code causing no errors being reported when protected mode was not entered successfully. + Fixed bug in exteded VBE API AX=4F00h when the CX register was not passed down to the real mode. + VBE API is now truly extended: function AX=4F00h now translates the pointers returned in the VBE structure to protected mode values. + New extended VBE functions have been added: AX=4F09h and AX=4F0Ah. + Bug fixed: options /QUIET and /PRINT:OFF defined in the environment now disable the copyright string (Pro version only) as well as warnings. + Bug fixed: on exit under "Clean" system the DOS Extender will not disable the A20 gate. This will solve problems when spawning programs with no memory manager installed, but this will also produce a problem with A20 line enabled after you run DOS/32 Advanced under "Clean" system. I guess we will have to live with that, since there ain't many programs that rely on memory wraparound under 1MB today, and you probably use a memory manager anyway. + Fixed a little bug in DPMI API function AX=0300h when parameters pushed on stack that were to be copied to the real mode stack were not being copied properly. + Bug fixed: extended DOS function AH=34h, get InDOS flag, will now work as expected (no GPEs or crashes no more). + Bug fixed: the loader was not able to correctly load the last object of the protected mode application, especially when the application was linked with debug info which was placed directly after the last object's data. An incorrect amount of bytes was read causing the _BSS segment being trashed while it should contain zeroes only (by default, WATCOM startup code will clear only the first 4K of _BSS segment if it thinks it runs under DOS/4GW). + Extended DOS API function AH=4Ch (terminate program), now will not restore real mode environment segment in PSP at offset 002Ch to be compatible with external DPMIs since they might need the protected mode selector at that offset to perform their cleanup on the way to DOS,.. or some place else. + Extended DOS API now supports new functions: AX=0FF8Ah, AX=0FF90h, AX=0FF91h, ... and so on (see "prog_ref.doc" file). SUNSYS Setup Utility: --------------------- + Option Use Fast Loading Object Scheme is no longer supported. SUNSYS Bind Utility: -------------------- + No major changes. SUNSYS Debugger: ---------------- + No major changes. ******************************************************************************* Release 2 DOS/32 Advanced DOS Extender version 3.00 ========================================= DOS Extender: ------------- + When a file name is specified at the command line, the DOS Extender will now apply an ".exe" extension to it, if it could not open the original file. This will solve some compatibility problems when replacing DOS/4GW DOS Extenders with DOS/32 Advanced. + The loader now supports Fast Object Loading Scheme. This feature allows the DOS Extender to load protected mode applications much faster (as fast as DOS/4GW does). Though it requires some extended memory to be allocated. Note that if no extended memory was allocated by the DOS Extender at startup, this feature will not be used, and the DOS Extender will automatically use the old, slow Object Loading Scheme, rather than reporting an error. + The loader now supports Paragraph (16 byte) alignment along with Page alignment (4096 byte) for objects that are loaded into extended memory. If a program has a large number of objects, this feature will greatly increase the amount of free extended memory available after the application was loaded. + Invented new DOS function in the DOS Extender: AX=0FF89h - DOS/32 Advanced Get Configuration Info (see "prog_ref.doc" file). + Invented new DPMI API function (AX=0A00h): AL=06h - Get DOS/32 Advanced Kernel Selectors (see "prog_ref.doc" file). + When spawning DOS/32 Advanced from another (incompatible) DOS Extender under VCPI, DOS/32 Advanced startup code will no longer cause the system to crash. + DPMI function 0500h will no longer return error 8013h when no extended memory was allocated at startup. Instead it will simply fill all the fields in the structure with zeroes. + DPMI function 0500h will no longer return the incorrect size of the largest available extended memory block as it did before in rare cases. SUNSYS Setup Utility: --------------------- + Option Console Output has been replaced with two new options: Show Warnings and Show Copyright Banner at Startup. + New option in DOS Extender Configuration window: Use Fast Loading Object Scheme. + New option in DOS Extender Configuration window: Object Alignment when Loaded High. + New option in DOS Extender Configuration window: Show Copyright Banner at Startup. This function replaces the old Console Output option, and allows the user to separately disable warnings (with Show Warnings option) and the copyright banner. SUNSYS Debugger: ---------------- + The Debugger now supports WATCOM-style assembly text screen along with Borland's Turbo Debugger-style. Use key '1' to switch between TD and WD text screens. ******************************************************************************* Release 1 DOS/32 Advanced DOS Extender version 2.25 ========================================= + The first publicly available version of DOS/32 Advanced DOS Extender.
Genial, que buen aporte 🙂