Recent Changes - Search:

Recently Written

News

edit SideBar

Development

1.  General DOS development information and examples

Here are some very useful programs, libraries and compilers which focus on modern DOS development, as well as some documentation.

  • If you need information about interrupts (hardware and software: BIOS, DOS, DPMI) then please go to: Ralf Brown’s Interrupt List - includes also:
    • Memory map
    • Port list
    • MSR’s (newer CPU’s, “MTRR”)
    • A CPU BUG list (well … there ARE bugs)
    • LE and LX executable structure (in “INTERRUP.G” )
    • … and some other infos
Note that the “latest” version is from year 2000 - no FAT+, no DOS/32A , no HX-DOS, no newer hardware.
  • If you want to write drivers, AMISLIB will be a choice. It is a function library to write self-highloading, removable TSR’s in assembler.
  • Some DOS development information and tools are also at “Forever Young Software” frontiernet.net/~fys/index.htm (not newest, but still useful).
  • Two similar very useful sources with much information (officially intended for OS developers, but good for DOS (kernel, driver & application) development as well:
Much info on: CPU, XMS, EMS, VCPI, DPMI, PMODE, UnrealMode, Booting, Partitions, Filesystems, Executables, Serial & Parallel ports, Sound-Cards&-Chips, some other hardware, VGA, VESA … almost everything !
  • ata-atapi.com has information and example code for IDE and SATA drivers
  • Some DOS development information in German (mostly about TurboPascal) can be found at “Webplain”: http://webplain.de/ .
  • Much DOS development information is also available here: http://www.phatcode.net - assembly, VGA & VESA, hardware.
  • Alex Russell’s Game Programming Tutorial is a cool resource if you want to learn developing of games, uses VGA 320×200×8bpp mode, 16-bit Real Mode “C” language, contains some animation tricks & low-level keyboard access code.
  • lpjjl.net/pgm “site de LPJJl Software dédiées à la programmation” - much (also DOS, low level, fileformats, …) programming information and many examples, page is in French, but most (linked and hosted) docs are in English.
  • litux.wz.cz - LITUX/LITOS by Ing. Miroslav Němeček - various source code in NASM, generously commented (English), also a minimal DOS kernel (?), page is in Czech only.
  • x-ways.net provides also (besides WinHex) some development infos: filesystems, fileformats, hash/crypto, Unicode, ASM.
  • openwatcom.org…VGA - A VGA manual, OpenWATCOM (see below) Wiki

2.  DOS kernel development

DOS kernels more or less actively maintained are

  • Enhanced Dr-DOS: Udo Kuhnt? is developing this kernel at the moment. Current versions of EDR-DOS do support FAT32 natively.
  • RxDOS?: Cm? works on this currently. Old 7.xx versions from 1998 do include FAT32 and LFN support, but regrettably they are buggy, and no updates have been released since that time. It is written in assembler (originally MASM 5.1), open source and under GPL.
  • FreeDOS: Eric Auer? is maintaining this kernel. Most of the kernel is written in C, it supports FAT32, but no LFN. FreeDOS is open source and under GPL.

Help is welcome. If you want to help, ask one of the maintainers.

3.  Compilers - PASCAL

3.1  FreePascal

32-bit protected mode Pascal. It’s a very powerful language, but also a minority language, DOS support isn’t so good as it used to be and some versions are unusable in DOS. Project started in 1994, after Borland announced that there will be never a Turbo PASCAL 8 , as a 16-bit DOS compiler, and changed to 32-bit DOS soon, and later various non-DOS systems were added. Unfortunately after year 2000 the support for DOS decayed, and almost stopped after 1.0.10 release in 2003, but got somewhat “recovered” in 2008 with the 2.2.2 release … later added even 16-bit 8086 support (?).

Project page: http://www.freepascal.org

Some relevant versions:

  • 1.0.10 - gold standard, released 2003/06/27 , final version of 1.x.x line: perfect compatibility with Turbo pascal, partially also with Delphi, some bugs in the IDE and memory management (?)
  • 2.2.2 Released 2008-Aug-11, currently last version of FPC and the first version of second generation of FPC which usably supports DOS. Only bigger regression from 1.0.10 is partially broken unit Graph what leads to bugs in saving graphical output screen while debugging.
  • 3.0.0 2015-Nov-25

3.2  Delphi / DWPL

Delphi is the product from Boreland following the old “TurboPascal” line, in fact it’s still just the PASCAL language with a more fancy IDE. The only supported platform is Win32, but there exists the Delphi WDOSX Project Library (DWPL), which is for creating native 32-bit protected mode DOS programs with Delphi 5–7 using the WDOSX DOS extender as the core. It is a very interesting project and you will find it at http://delphi.icm.edu.pl/ftp/d50free/dwpl.htm and sf.net/projects/dwpl. Regrettably it seems to be abandoned since 2004.

Nowadays WDOSX is far behind HX Extender in compatibility with newer Win32 compilers and programs, but it is also possible to run several Delphi programs under DOS using HX instead.

3.3  Other PASCAL

  • http://vpascal.ning.com (OK) & http://www.vpascal.com (dead) - Virtual PASCAL, 32-bit PASCAL compiler, officially dead, DOS supported but tricky, maybe (?) better than FreePASCAL, some additional (mostly DOS related) files are provided by Veit Kannegieser: kannegieser.net/veit/vpascal
  • frameworkpascal.com - Framework PASCAL (was TMT PASCAL in the past): 32-bit compiler, also DOS, obscure license (free for uncommercial use???) In 2006 TMT Pascal was sold to company Framework so official name of this compiler changed to TMT Framework pascal . It is unclear in this time whether Framework company will continue with further development of the product.
  • freenet-homepage.de/dieterp - (dead) “Dpas” PASCAL compiler, 32-bit DOS

4.  Compilers - C/C++

See separate page: DevelCandCPP .

5.  BASIC compilers and interpreters

  • http://www.freebasic.net/ - BASIC compiler, new (old version 0.20 is from 2008–08–11 ), 1.05 is out, mostly compatible with QBASIC, 32-bit (only), also DOS version (host & target, but not self-compiling). DOS support is quite good and interest from side of FB programmers too - look at their discussion forum at the DOS branch.
  • powerbasic.com - PowerBASIC, a commercial BASIC compiler, has DOS (old, 16-bit only) and Win32 versions. Now decaying in favor of FreeBASIC.
  • programmersheaven.com/download/ - MBASIC, freeware BASIC interpreter (no compiler!), runs with HX, source of interpreter (MASM) is included.

6.  Misc programming languages

7.  Assemblers

See separate page: DevelAsm .

8.  “reverse” tools, Disassemblers & Debuggers

Make sure to remain legal when using following tools.

8.1  HIEW

File editor, EXE analyzer and disassembler. Commercial, latest DOS version seems to be 6.70 from 2001, available only from warez collections.

8.2  BIEW

Project pages:

Clone of HIEW (Hint: “H” → Hex // “B” → Binary), by Nick Kurshev , free and open source. Latest versions:

  • 5.6.2 from 2004–09–19 DOES have a DOS version provided by the author
  • 5.6.4 from 2007–04–14 was ported to DOS (recompiled with DJGPP) by bttr , then added to “official” download list also
Features:
  • File editor, EXE analyzer (MZ, NE, LE, PE, …) and disassembler
  • Supports CPU’s from 8086 to latest Pentium (beyond usefulness in DOS)
  • Highlights instructions by minimal CPU required (one can “test” compatibility)
  • Can save disassembly into a file
  • Text, HEX or binary view

Some startup and exit problems but seems to work. Contains generous manuals about itself but also Intel CPU’s and assembler, and some executable formats.

8.3  NDISASM

Commandline disassembler coming with NASM, has a 32-bit DOS version, outputs to console, can be redirected with “>” to a file.

NDISASM WAIT.COM > WAIT.ASM

8.4  DISTORM

A disassembler written in C, supporting latest 64-bit and SSE-xxx instructions, but also 16- and 32-bit code, contained in a surprisingly compact executable (PE, needs HX-DOS Extender), an alternative to NDISASM.

8.5  FreeDOS DEBUG & ENHDEBUG

Clone of MS-DOG DEBUG, some improvements, created and maintained by Paul Vojta in the past, then by Japheth up to version 1.25 . Used to lack a manual, since 1.06 there is a preliminary one included. Includes a DEBUGX version allowing to debug DPMI code.

8.6  GRDB

This free “Get Real” debugger is included in CC386, but also available stand-alone. It has the simple line-oriented user interface known from DEBUG. Disassembler supports MMX instruction set. Recent versions support debugging of protected-mode applications (DPMI) also.

8.7  deb32f & deb16f

DPMI Debuggers by Japheth , more complicated, commandline oriented, design similar to DEBUG, manuals included.

8.8  Insight

Insight is a real-mode DOS debugger, by Victor M. Gamayunov, Sergey Pimenov, Oleg O. Chukaev, Dmitry Vodyannikov, GNU GPL.

8.9  PE, GT2

PE by Japheth provides info about COFF (also DGJPP) and PE-files (Win32, HX-DOS executables): header, sections, exports, imports, … . GT2 by Philip Helger provides very similar info, but supports also other EXE types (MZ, NE, LE), tries to guess the compiler/linker, and supports non-EXE files also (and is much bigger than PE, uses DLL’s). See also HXDOScomplists.

8.10  IDE, Editors

While most old 16-bit interpreters and compilers (QB, TP/BP, BC) did have IDE’s, newer 32-bit ones unfortunately don’t in DOS versions. Latest version of RHIDE can be found at http://ap1.pp.fi/djgpp/. Date of this version is 2005/02/15. RHIDE is the “official” DJGPP’s IDE and text editor, but is supposed to be usable with other compilers and other programming languages also. Seems no longer under development and some recent complaints about it subject mostly to “horrible” bugs occurring when running in XP. When running in DOS it unfortunately also exposes bugs. It is possible to compile some projects with it, but it also crashes occasionally, and provides some installation problems. It is based on the “SETEDIT” text editor. About text editors, see the Editors section.

Following recent free compilers do have an IDE for DOS:

  • FASM (see DevelAsm) has a DOS version with a simple built-in working IDE. Syntax highlight for ASM, compiling with built-in FASM core.
  • CC386 (see DevelCandCPP) compiler comes with an “INFOPAD” editor, intended (?) to be turned into an IDE, no longer under development by now. Optional syntax highlight for ASM and C, no compiling support.
  • FreePASCAL (see above) has a full featured IDE, working again in version 2.2.2, still has many bugs however. Syntax highlight for PASCAL.

9.  DPMI / DOS extender

See separate article: DPMI .

10.  See also

Edit - History - Print - Recent Changes - Search
Page last modified on August 03, 2016, at 08:06 AM