Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
*** NOTICE: This project will not support Windows 10! *************************

This project will explicitly not support Windows 10. Do not submit bug reports
or patches regarding Windows 10, they will be rejected. Patches and bug reports
for Windows 8 and earlier are still welcome.

*** NOTICE: Win32s support *****************

Win32s binaries compiled from this project will NOT run under
Windows 3.1 unless you use the latest version of the Open Watcom
v2.0 compiler. Earlier versions referred to symbols that don't
exist and make assumptions about the stack in ways that don't
pan out in Windows 3.1 (stack check fail).

*** Support ********************************

If you would like to help fund development, and the videos I produce about
MS-DOS, feel free to subscribe to me on Patreon:

Your contributions help fund video production about MS-DOS and the
purchase of MS-DOS hardware and software to test and develop this
code. Any support is welcome.


This is a collection of source code intended for DOS and DOS-level
use. It is intended to be used in other open source projects as well
as a learning tool for programmers who may want to learn hardware
level programming and low level details of the MS-DOS PC platform.

This code is designed to work with almost any commodity IBM PC/XT/AT/etc.
hardware out there, though most of it is written primarily to work with
mid 1990's Pentium-class hardware, or older, all the way down to the
original 8088-based PCs.

There is also code in this project to support NEC PC-9801 and NEC PC-9821
MS-DOS and Windows systems.

Each major branch of this source tree has a README file to describe
exactly what is provided.

   Run ./ to compile. Make sure the linux build of OpenWatcom
   is present in /usr/watcom/binl.

*** Source code formatting ****************************************

As of November 2016 all source changes should be carried out with your
text editor set to use soft tabs, NOT hard tabs, except for makefiles
or otherwise required.

You can do this in VIM by adding this to your .vimrc:

set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab

*** Debug/Release build modes *************************************

By default, binaries compiled with this project are in "release" mode.
The binaries will not contain debug information, traceable stack frames,
and will not contain the "stack overflow" runtime checks. This is to
keep the size of the binaries down.

To compile debug builds, set a DEBUG=1 environment variable in your
current shell or session before running ./ or ./
You can also immediately invoke a debug build like this:

DEBUG=1 ./

DEBUG=1 ./