====== [hemmerling] DOS Extenders for Protected Mode ( 286 / 386 Mode ) on x86 DOS ====== *Related pages: *[[dos.html|DOS, Microsoft MSDOS, Digital Research DR-DOS, OpenDOS]]. *[[cpp.html|C, C++ for Windows & MSDOS]]. *[[pascal.html|Pascal, Delphi]]. ===== DOS Extenders ===== ==== 386Power 32-bit DOS Extender ==== *[[http://www.thefreecountry.com/programming/dosextenders.shtml|thefreecountry.com "Free DOS Extenders. Run 32 bit protected mode programs on old MSDOS"]] - "386Power 32-bit DOS Extender.[Update: this program is no longer available.] If you write programs in assembly language, you may find this 32 bit DOS extender useful. It comes with source code which you can link with your assembly code to make a program that can run in 32 bit protected mode". *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "386Power 32-bit DOS Extender is an extender for 32-bit Assembly apps. Includes source code". ==== Blinker ==== *[[http://web.archive.org/web/*/http://www.blinkinc.com/|BlincINC]] ( - 2009-05-08 ). *[[http://web.archive.org/web/*/http://www.blinkinc.com/blinker.htm|BlincINC]] ( - 2009-01-31 ). *"Blinker 7.0 - Save time, memory and disk space with the fastest available 16- and 32-bit Windows linker, combined with a royalty-free DOS extender for C/C++, an integrated super "SPAWN" package, and much more. Over 75,000 users worldwide". ==== Borland Power Pack for DOS & TASM ==== *[[http://en.wikipedia.org/wiki/Borland_C%2B%2B|EN.Wikipedia "Borland C++"]] - "Borland Power Pack for DOS: Used to create 16- and 32-bit protected mode DOS applications, which can access a limited scope of the Windows API and call functions in any Windows DLL". *[[http://en.wikipedia.org/wiki/Turbo_Assembler|EN.Wikipedia "Turbo Assembler"]]. *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "TASM, again from Borland, included 32RTM with DPMI32VM and RTM with DPMI16BI, two DPMI hosts". ==== CauseWay ==== *[[http://www.devoresoftware.com/|Devore Software & Consulting]]. *[[http://www.devoresoftware.com:80/freesource/|Devore Software & Consulting "freesource"]] - Download of CauseWay software. *[[http://web.archive.org/web/*/http://www.devoresoftware.com:80/freesource/cwsrc.htm|Archive.org "Devore Software & Consulting: CauseWay Source and Binary Code Release"]] ( - 2019-10-22 ). *[[http://open-watcom.github.io/open-watcom-v2-wikidocs/cw.html|GitHub.io, Open-Watcom "CauseWay User's Guide"]]. *[[http://www.github.com/jmalak/open-watcom/tree/master/contrib/extender/causeway|GitHub "jmalak/open-watcom/tree/master/contrib/extender/causeway"]]. ==== CWSDPMI ==== *[[http://sandmann.dotster.com/cwsdpmi/|Charles W. Sandmann "CWSDPMI - Free DPMI provider for DOS"]]. *[[http://www.delorie.com/djgpp/v2faq/faq4_4.html|DJGPP FAQ "4.4 What Files to Download?"]] - Comparison of DOS extenders. *v2misc/csdpmi4b.zip - CWSDPMI, the DJGPP free DPMI server. DJGPP programs require DPMI services, which provide a way to run 32-bit protected-mode programs under real-mode MS-DOS. (If you can get DPMI services in your environment, like if you run under Windows, QDPMI, or OS/2, you don't need CWSDPMI, but I recommend downloading it nonetheless so you can try it in case you have trouble with other DPMI servers.) *v2misc/pmode11b.zip - This is an alternative DPMI server, PMODE/DJ. Its memory footprint is smaller than CWSDPMI and it can be bundled with DJGPP programs to make a stand-alone executable that doesn't require a DPMI server to run. PMODE/DJ doesn't support virtual memory and its implementation of the DPMI spec is a bit more restricted than that of CWSDPMI, but it is faster, and therefore more appropriate for high-performance interrupt handling. ==== D3X ==== *[[http://web.archive.org/web/*/http://www.geocities.ws/dborca/assembly/d3x/d3x.htm|Archive.org "Daniel Borca: D3X(tm) DOS-Extender v0.90 unleash `h' alpha]] ( - 2020-11-19 ). Advice: Switch off Javascript after loading the content plage ! *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "D3X is an DPMI sever written entirely in Assembly. Still in alpha state, but discontinued before completion". ==== DBOS by Salford Software ==== *[[http://www.techmonitor.ai/technology/as_its_friend_12_employee_salford_software_gets_an_early_look_at_80586|TechMonitor "As its friend, 12-employee Salford Software, gets an early look at the 80586"]], 1992 - "all of which run in full 32-bit protected mode under MS-DOS or Windows 3.0, using Salford’s proprietary MS-DOS extender, DBOS". *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "DBOS by Salford Software, a 32-bit protected mode DOS extender used primarily by their FTN77 Fortran Compiler". *See [[prglang.html|Programming Languages, Platforms and Runtimes]], "FORTRAN". ==== DOS/32 ==== *[[http://dos32a.narechk.net/|Narech Kontcell "DOS/32 Advanced DOS Extender"]]. *[[http://dos32a.narechk.net/content/about.html| "About DOS/32 Advanced DOS Extender"]] - "In May 2002 DOS/32 Advanced DOS Extender was released to the public in the form of 'Liberty Edition' which included the complete set of the latest binaries, documentation manuals and the complete source code of the DOS Extender and its tools under a special Apache-like license allowing unrestricted, royalty-free distribution and use of the released materials in any software projects including commercial products". *[[http://dos32a.sourceforge.net/|SourceForge "DOS/32 Advanced DOS Extender"]], [[http://www.sourceforge.net/projects/dos32a/|SourceForge "DOS/32 Advanced DOS Extender"]]. *[[http://www.github.com/jmalak/open-watcom/tree/master/contrib/extender/dos32a|GitHub "jmalak/open-watcom/tree/master/contrib/extender/dos32a"]]. ==== DosWin32 ==== *[[http://www.doswin32.com/|DosWin32]]. *"The general concept of DosWin32 pack is the same as that in Borland Power Pack: the main task is not to support the DPMI applications (although some DPMI functionality is present), but to support win32 console applications in pure DOS". *"The DOSWIN32.RTM file is the 'core' of the system. It also includes the win9x and WinNT drivers (for development and debugging in the Windows environment) and the DPMI host (for working under DOS)". *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "DosWin32 provides limited Win32 support". ==== DOS/4G and DOS/4GW ==== *[[http://web.archive.org/web/*/http://www.tenberry.com/|Archive.org "Tenberry Software, Inc."]]. *[[http://web.archive.org/web/*/http://www.tenberry.com/web/dpmi/toc.htm|Archive.org "Tenberry Software, Inc.: DOS Protected Mode Interface (DPMI) Specification"]]. *[[http://web.archive.org/web/*/http://www.tenberry.com/dos4g/faq/|Archive.org "Tenberry Software, Inc.: DOS/4G and DOS/4GW FAQ - Index and Questions"]]. *[[http://web.archive.org/web/*/http://www.tenberry.com/dos4g/watcom/|Archive.org "Tenberry Software, Inc.: Special Products for DOS/4GW Users"]]. *[[http://en.wikipedia.org/wiki/DOS/4G|EN.Wikipedia "DOS/4G"]] - "DOS/4GW 1.95 was a free limited edition of DOS/4G and was included with the Watcom C compiler with a commercial re-distribution license". ==== DPMIONE ==== *[[http://www.sudleyplace.com/|Sudley Place Software]]. *[[http://www.github.com/sudleyplace/DPMIONE|GitHub "sudleyplace / DPMIONE"]]. *"DPMI 1.0 Server". *"The program files may be downloaded from [[http://sudleyplace.com/dpmione/dpmione.zip|http://sudleyplace.com/dpmione/dpmione.zip]]". *[[http://en.wikipedia.org/wiki/386MAX|EN.Wikipedia Talk "386MAX"]] - "DPMIONE is a DPMI 1.0 host component from Qualitas, written by Bob Smith of Sudley Place Software". ==== EMX ==== *EMX => See [[cpp.html|C, C++ for Windows & MSDOS]]. *[[http://en.wikipedia.org/wiki/EMX_(programming_environment)|EN.Wikipedia "EMX (programming environment)"]] - "The EMX package consists of: The emx.exe program, a DOS extender, that allows running a 32-bit mode application in DOS...". ==== Ergo ( formerly Eclipse, formerly A. I. Architects ) OS/286 and OS/386 Extender ==== *[[http://www.vogons.org/viewtopic.php?t=10960|Vogons Forum "DOSBOX problem with OS386 dosextender application"]] - "Copyright (c) 1990 Ergo Computing, Inc. os386: OS386 requires 80386 processor". *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "Ergo (formerly Eclipse, formerly A. I. Architects) OS/286 and OS/386 extenders, and DPM16 and DPM32 servers". ==== Go32 ==== *[[http://porthos.ist.utl.pt/docs/fpc/units/node77.html|Michaël Van Canneyt, Florian Klämpfl "Free Pascal manuals" - "The GO32 unit]]. *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "GO32, used in older (pre-v2) versions of DJGPP, and Free Pascal". ==== HX DOS Extender ==== *[[http://www.japheth.de/HX.html|HX DOS Extender]]. *[[http://hx-dos.sourceforge.net/|SourceForge "HX DOS"]], [[http://www.sourceforge.net/projects/hx-dos/|SourceForge "HX DOS"]]. *[[http://www.bttr-software.de/forum/board_entry.php?id=5123|Forum "DOS ain't dead", Thread "HX question - licence (DOSX)"]]. *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "HX DOS Extender provides limited Win32 support to allow Windows console and some Win32 GUI applications to run under DOS. It contains both 16-bit and 32-bit DPMI servers (HDPMI16/HDPMI32) for use with protected mode DOS programs". *[[http://de.wikipedia.org/wiki/HX_DOS_Extender|DE.Wikipedia "HX DOS Extender"]] - "Die fast einzigartige Eigenschaft des HX DOS Extenders ist es, einige für 32-Bit-Versionen von Microsoft Windows geschriebene Programme unter DOS starten zu können. Da die Nachbildung der grafischen Benutzeroberfläche von Windows noch nicht weit entwickelt wurde, wird der HX DOS Extender bisher vor allem für Kommandozeilen-Programme verwendet. Auch einige Programme, die die Windows-Schnittstellen nur zum Darstellen einer komplett eigenen grafischen Oberfläche verwenden, sind ohne Einschränkungen lauffähig". ==== PMODE ( PMODE/W ) ==== *[[http://www.sid6581.net/pmodew/|PMODE/W - 32-bit Protected Mode DOS extender for the Watcom C/C++ Compiler by Charles Scheffold and Tomasz Pytel]]. *"PMODE/W is now FREE" :-). *Current version is "PMODE/W v1.33", of 2018 :-). *[[http://web.archive.org/web/*/http://www.tmt.com:80/helphtml/pmodew.htm|Archive.org "TMT Pascal Documentation '7. PMODE/W MSDOS Extender'"]] ( - 2006-12-30 ). *[[http://www.filegate.net/pub/pdn/pdnasm/|Filegate "PDN: PDNASM"]]. *"pmode307.zip - pmode v3.07 protected mode dos extender by tran. update as of december 5, 1994. small, fast, stable, and free!!!" - Outdated version of 1994 :-(. *[[http://en.wikipedia.org/wiki/PMODE|EN.Wikipedia "PMODE"]] ( "PMODE/W" ) - PMODE/W is one of the four DOS extenders included in the Open Watcom compiler distribution. PMODE/W is also the default DOS extender used by TMT Pascal. ==== PROT by Al Williams ==== *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "PROT by Al Williams, a 32-bit DOS extender published in Dr. Dobb's Journal and in two books. This extender had the virtue of running DOS and BIOS calls in emulated mode instead of switching back to real mode". *DDJ: *Dr. Dobb's Journal of Software Tools, Volume 15, Number 10, October, 1990: Al Williams "Roll your own DOS extender: Part I p16--18, p20, p24". *Dr. Dobb's Journal of Software Tools, Volume 15, Number 11, November, 1990: Al Williams "Roll Your Own DOS Extender: Part II, p74, p76, p80, p81--83, p85, p122--128, p130". *Book [[http://www.amazon.de/exec/obidos/ASIN/0201632187/hemmerling-21|Al Williams: "[(DOS and Windows Protected Mode: Programming with DOS Extenders in C )] [Author: Al Williams] [Feb-1993] "]], 1993. *[[http://www.codeproject.com/Articles/1005442/Bits-on-Bit-Processors-Article-written-in|CodeProject "Toby Opferman: 32 Bits on 64-Bit Processors"]] - "It wasn’t that long ago that most PCs were running 16-bit operating systems on 32-bit processors. In those days, MSDOS reigned, 'Ralf Brown' and 'DPMI' were familiar names, and everyone knew that port 3DAh was for vertical retrace. Okay, so there were a few people who used 32-bit operating systems such as OS/2 or a flavor of UNIX. As for developers, they generally had to target applications for 16-bit operating systems, thereby losing out on the benefits that could be gained from 32 bits. DOS Extenders—libraries that enabled Protected mode and let applications utilize 32-bit instructions without a 66h instruction prefix—addressed this problem. They also let you access memory up to 4 GB, depending on the characteristics of the particular extender you were using. The most popular DOS Extenders were PROT (see 'Roll Your Own DOS Extender,' by Al Williams; DDJ, October 1990), DOS4GW (Microsoft’s 32-bit extension), Pharlap’s DOS Extender, and Trans PMODE (which integrated nicely with Watcom’s C/C++ compiler). Most extenders simply used DOS Protected mode Interrupt (DPMI), which abstracted the implementation of Protected mode through an interrupt. They also provided an easy method for executing 16-bit BIOS interrupts, so you would not need to implement things like switching video modes yourself. Others simply implemented 32-bit protected mode themselves, while some just did 'Big Real mode' (also known as 'Unreal mode')". ==== RSX and RSXWIN ==== *Rainer Schnitker - 386 DOS extenders "RSX" and "RSXWIN". *[[http://web.archive.org/web/*/http://www.mathematik.uni-bielefeld.de/~rainer/|Archive.org "Rainer Schnitker: RSX Tools for GNU C/C++. GNU C/C++ projects for Win32 and DOS"]] ( - 2006-12-07 ). *[[http://web.archive.org/web/*/http://www.math.uni-bielefeld.de/~rainer/|Archive.org "Rainer Schnitker: RSX Tools for GNU C/C++. GNU C/C++ projects for Win32 and DOS"]] ( - 2006-12-14 ). ==== Wuschel's DOS eXtender ( WDOSX )==== *[[http://tippach.business.t-online.de/wdosx/|Wuschel's DOS eXtender ( WDOSX )]]. ==== X-32 VM DOS Extender ==== *[[http://web.archive.org/web/*/http://www.dosextender.com/|Archive.org "Doug Huffman: X-32 VM DOS Extender" ( dosextender.com )]] ( - 2011-02-07 ). *"X-32 and X-32VM are DOS extenders based on the DOSX extender that was shipped with the Zortech and Symantec compilers. Built to be small and fast, these 32 bit DOS extenders offered new capabilities such as protected mode TSR support. X-32VM adds a virtual memory manager to the package". *[[http://www.digitalmars.com/ctg/dos32.html|Digital Mars "DOS 32 (DOSX) Programming Guidelines"]]. *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "X32 and X32VM by FlashTek and supported as a target by Digital Mars compilers". ===== C-Compilers shipped with DOS Extenders ===== *Borland C/C++ => See [[cpp.html|C, C++ for Windows & MSDOS]]. *EMX => See [[cpp.html|C, C++ for Windows & MSDOS]]. *DJGPP => See [[cpp.html|C, C++ for Windows & MSDOS]]. *WATCOM-C => See [[cpp.html|C, C++ for Windows & MSDOS]]. *Zortech C/C++ and Symantec C/C+ compilers => See [[cpp.html|C, C++ for Windows & MSDOS]], "Digital Mars". ===== Literature ===== *Book [[http://www.amazon.de/exec/obidos/ASIN/0321440307/hemmerling-21|Raymond Chen: "Old New Thing, The: Practical Development Throughout the Evolution of Windows: Practical Development Throughout the Evolution of Windows"]], 2006. *Sample chapter [[http://ptgmedia.pearsoncmg.com/images/9780321440303/samplechapter/Chen_bonus_ch01.pdf|Raymond Chen "Tales of Application Compatibility"]]. *Sample chapter [[http://ptgmedia.pearsoncmg.com/images/9780321440303/samplechapter/Chen_bonus_ch02.pdf|Raymond Chen "How to Ensure That Your Program Does Not Run Under Windows 95"]]. ===== Resources ===== *Take care of looking at the license agreements for "free" DOS extenders, for commercial projects :-). *[[http://corexor.wordpress.com/dos-extenders/|Corexor Blog "Dos Extenders"]] - "There is a whole set of in-house DOS Extenders developed by number of application and game developers. The number was so high that the problem got it own chapter 'How to Ensure Your Program Does Not Run under Windows 95' in great book 'The Old New Thing: Practical Development Throughout the Evolution of Windows' by Raymond Chen". *FreeDOS Wiki. *[[http://web.archive.org/web/*/http://wiki.fdos.org/Main/DOSExtender|Archive.org, "FreeDOS Wiki: DOS Extender"]] ( - 2009-03-02 ) - Much informations :-). *[[http://wiki.freedos.org/wiki/index.php/DOS_Extender|FreeDOS Wiki "DOS Extender"]] - Little informations :-(. *[[http://www.os2museum.com/wp/how-to-make-sure-your-program-doesnt-run-on-windows-95/|OS/2 Museum "How to make sure your program doesn’t run on Windows 95"]]. *[[http://www.thefreecountry.com/programming/dosextenders.shtml|thefreecountry.com "Free DOS Extenders. Run 32 bit protected mode programs on old MSDOS"]]. *[[http://en.wikipedia.org/wiki/CWSDPMI|EN.Wikipedia "CWSDPMI"]]. *[[http://en.wikipedia.org/wiki/DOS/32|EN.Wikipedia "DOS/32"]]. *[[http://en.wikipedia.org/wiki/DOS_extender|EN.Wikipedia "DOS extender"]] - "All Microsoft Windows versions since 1990, except NT branch, include both a DPMI server and DOS extender". *[[http://en.wikipedia.org/wiki/DOS_Protected_Mode_Interface|EN.Wikipedia "DOS Protected Mode Interface"]]. *[[http://en.wikipedia.org/wiki/EMX_(programming_environment)|EN.Wikipedia "EMX (programming environment)"]]. *[[http://de.wikipedia.org/wiki/HX_DOS_Extender|EN.Wikipedia "HX DOS Extender"]]. *[[http://en.wikipedia.org/wiki/PMODE|EN.Wikipedia "PMODE"]] ( "PMODE/W" ). *[[http://en.wikipedia.org/wiki/Phar_Lap_(company)|EN.Wikipedia "Phar Lap (company)"]]. *[[http://en.wikipedia.org/wiki/QEMM|EN.Wikipedia "QEMM"]] - "QDPMI. QDPMI is a DPMI 0.9 server driver, authored by Dan Spear. It requires 386 CPU and QEMM386". {{tag>DOS "dos extender" dos extender "Microsoft MSDOS" MSDOS "Digital Research DR-DOS" "DR-DOS" OpenDOS}}