joncampbell123 / doslib

Hackipedia DOSLIB, a general collection of useful libraries for writing MS-DOS software
GNU Lesser General Public License v2.1
200 stars 16 forks source link

* 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:

https://www.patreon.com/thegreatcodeholio

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.

Linux: Run ./buildall.sh 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 ./make.sh or ./buildall.sh. You can also immediately invoke a debug build like this:

DEBUG=1 ./make.sh

DEBUG=1 ./buildall.sh