awesome-dos

DOS development suite

A curated list of references and tools for developing applications on MS-DOS and similar systems.

Curated list of references for development of DOS applications.

GitHub

496 stars
20 watching
29 forks
last commit: almost 2 years ago
Linked from 2 awesome lists

awesomeawesome-listdoslistsms-dosresourcesretrogamingretroprogramming

Awesome DOS / Development tools

bcc - Bruce's CompilerBruce's C compiler is a simple C compiler that produces 8086 assembler for tiny/small memory models
DJGPPDJ Delorie's complete 32-bit C/C++ development environment for Intel 80386. Used for Quake
GCC IA-16 toolchainA 16-bit counterpart to DJGPP, a GCC-based toolchain for developing 16-bit (8086 to 80286, a.k.a. IA-16) DOS applications, currently maintained by TK Chia
Open WatcomFormerly commercial C/C++ development environment for 16- and 32-bit DOS and Windows. The current official version is 1.9. A GitHub fork is also available. Used for Doom I-II, Warcraft I-II, Duke Nukem 3D, Full Throttle, Dark Forces and Retro City Rampage

Awesome DOS / Development tools / Open Watcom

documentationThe is very valuable in order to understand working with both version 1.9 and the V2 fork
Arch Wiki page

Awesome DOS / Development tools

Open Watcom V2998almost 2 years agoGitHub fork which is actively maintained and is ported to 64-bit Windows and Linux
Turbo C 2.01C IDE and compiler from Borland first released in 1987
Turbo C++ 1.01C++ IDE and compiler from Borland released in 1991
Turbo C++ 3.0C++ IDE and compiler from Borland released in 1992

Awesome DOS / Development tools / Turbo C++ 3.0

Online version.

Awesome DOS / Development tools

DIV Games Studio 2IDE to develop DOS games in 2d, mode 7 and 3d. Released in 1998

Awesome DOS / Development tools / DIV Games Studio 2

Online version.

Awesome DOS / Development tools

T3XA small, portable, procedural, block-structured, recursive, almost typeless, and to some degree object-oriented programming language by Nils M. Holm
SmallerCPortable self-hosting C compiler capable of producing executables for a number of platforms, including real and protected mode DOS programs, by Alexei A. Frounze
Small-C ToolkitA self-hosting Small-C Compiler Toolkit for DOS(8086) with: K&R C Compiler, Make, Linker, Assembler. First released in 1982 by Jim E. Hendrix

Awesome DOS / Development tools / Memory managers

386MAX119about 4 years agoMemory manager for DOS PCs with 386 or higher CPUs, . Source code was released in June 2022 on GitHub with GPL-3.0 license

Awesome DOS / Development tools / Scripting languages and interpreters for DOS

DOjS877almost 2 years agoJavaScript programming environment for MS-DOS, FreeDOS or any DOS-based Windows (like 95, 98, ME)
Lua for DOSOnline demo of Lua 5.3.5, compiled for MS-DOS on the Intel 80486 processor
Micropython for FreeDOS25almost 10 years agoFreeDOS ad-hoc module for
perldosPerl for DOS
PythonDPython for DOS, including multi-threading, networking and OpenGL

Awesome DOS / Tutorials and programming resources / History

The Life of MS-DOS by Brendan ByersHistory of the DOS family including CP/M, Q-DOS/86-DOS, MS-DOS and PC-DOS. Article also includes a diagram of the timeline and family tree of DOS operating systems

Awesome DOS / Tutorials and programming resources / Compiling

80x86 16-bit Compiling How-to by Alexei A. Frounze16-bit compilation tutorial for Borland/Turbo C/C++ and Open Watcom. Goes into depth of memory addressing and memory models
32bit DOS development with Open Watcom32-bit compilation tutorial for Open Watcom
How to build DOS COM files with GCC by Chris WellonsBuild process of Chris Wellons's DOS Defender game using DJGPP. Goal was to create a 32-bit 80386 COM executable

Awesome DOS / Tutorials and programming resources / General

David Brackeen - 256-Color VGA Programming in CTutorial series to learn how to create graphics on DOS, written in 1996
640k Really is Enough for Anyone by Robert W. Oliver IIShort article about getting Turbo C running on FreeDOS and moving a pixel around
Just keeping it real... old skool style - Scali's OpenBlogBlog post about Scali's journey of doing CGA, EGA and VGA programming
Alex Russell's Dos Game Programming in C for BeginnersDOS game programming tutorial series including a primer on C, graphics, animation, input handling and collision detection. This series contains a tutorial for making . Last chapter contains full source code of a Break Out game on DOS
The Artevida Game Programming TutorialsKevin Matz's almost book-length treatment of DOS system programming and VGA programming fundamentals using C/C++ and 80x86 assembly. Unfortunately it is incomplete and was abandoned since 2001
PC Game Programmer's EncyclopediaCollection of guides covering assembly, sound (Sound Blaster, Gravis UltraSound, PC Speaker, GameBlaster, Adlib), input, memory (EMS, XMS, DMA Transfers), PIT, VGA, SVGA, algorithms and file formats
The Art of Demomaking by flipcodeSeries from 1999 that introduces to graphics programming under DOS. The home site contains other late 90s/early 2000s game programming articles as well
Programming MS-DOS with Power - DOS Programming, Undocumented DOS, and DOS SecretsSystem programming tutorials like disk handling, interrupts, inputs, sound, graphics
Programmer's Heaven (InfoMagic)(March 1997) CD-ROMSource code and files for the following topics: MS-DOS, networking, C, C++, Pascal, Visual Basic, Delphi, 3D, PC speaker, Soundblaster, Gravis Ultrasound, MIDI and many more

Awesome DOS / Tutorials and programming resources / DOS API

bios.h header documentation by Digital MarsAPI documentation for routines accessing BIOS operations directly (disk operations, BIOS keyboard, printer, time, memory, serial, interrupts)
Part 1dos.h header documentation by Digital Mars - API documentation of functions for interfacing with the DOS operating system itself

Awesome DOS / Tutorials and programming resources / Interrupts

Ralph Brown's Interrupt List - HTML versionList of every documented and undocumented interrupt call known, accessible through search, categories and interrupt numbers

Awesome DOS / Tutorials and programming resources / Interrupts / Ralph Brown's Interrupt List - HTML version

Ralph Brown's websiteOriginal in downloadable .zip files from

Awesome DOS / Tutorials and programming resources / Memory

A look back at memory models in 16-bit MS-DOSRaymond Chen's explanation of segmented memory, including near- and far pointers

Awesome DOS / Tutorials and programming resources / Video

Values for standard video modeList of all known video modes including BIOS interrupt numbers, text/pixel resolution, number of colors and video memory addresses
Color Graphics Adapter: NotesDocument describing the hardware, memory map, register I/O and hardware clones of the IBM's original CGA
VGA Hardware - OSDev wikiHardware guide for VGA cards that is also relevant for modern graphics cards including NVidia and ATI
Graphical programming in Assembly (DOS)A VGA programming tutorial that also shows the list of video modes (text, CGA, EGA, VGA, SVGA) in a table at the beginning
VGA programming lessonsVGA programming tutorial series in Pascal and Assembly
DOS Super VGA / VESA programming notes - by MylesVESA article with history at the beginning and short mention of the VESA VBE standard, but unfortunately the example codes aren't even available through Wayback Machine
VESA Video Modes - OSDev wikiTutorial about querying VESA modes
DJGPP VESA guideTutorial about querying VESA modes
High-res high-speed VESA tutorialSeries of tutorials that include drawing pixels in VESA mode (protected or real)
C code sample for drawing in VESA 2.0 modeJust code listing for drawing an ellipse in VESA mode

Awesome DOS / Tutorials and programming resources / Sound

Programming Sound Cards CDA 1995 CD-ROM containing source code for Adlib, Gravis, Pro-Audio, Roland and Sound Blaster sound cards. The description for the folders on the CD-ROM is listed
Making some noise with the PC speaker! - by Mark FeldmanVery short tutorial on using the PIT for generating PC speaker frequency
Frequencies of Musical NotesFreqency table usable to parameterize the PC speaker
Sound Programming with PC Speaker - Chapter 23 of A to Z of CPC speaker programming chapter of the "A to Z of C" book with source code
Yamaha YM3812 (OPL2) sound chip Wikipedia articleBest starting point to learn about the OPL2 sound chip besides 8-bit guy's YouTube video
The Ad Lib Music Synthesizer Card Programming Guide - by Tero TöttöReference of OPL2 operations and registers
Programmer's Guide to the Yamaha YMF 262/OPL3 FM Music SynthesizerReverse-engineered reference on OPL3
Sound Blaster 16 Programming Document 3.5 by Ethan BrodskyProgramming the Sound Blaster 16 DSP CT1341 chip for recording and playback of digitized audio

Awesome DOS / Tutorials and programming resources / Sound / Sound Blaster 16 Programming Document 3.5 by Ethan Brodsky

GameDev.net archiveversion 3.4 on

Awesome DOS / Tutorials and programming resources / Sound

Soundblaster Programming Information v0.90List of Sound Blaster models and registers

Awesome DOS / Tutorials and programming resources / Other

Table of DOSBox cyclecounts according to processor typesA table for setting the appropriate DOSBox cycle count according to CPU types (IBM XT 88, 286, 386, 486, Pentium I, Pentium II). Comes handy when you are developing a DOS game and want to simulate the environment where you intend to execute it

Awesome DOS / Books / Free

Game Engine Black Book: Wolfenstein 3D - by Fabien SanglardFabien Sanglard's walkthrough on the game engine architecture of id Software's Wolfenstein 3D on the IBM PC's hardware. Contains forewords by John Carcmack, Tom Hall and John Romero
Game Engine Black Book: Doom - by Fabien SanglardFabien Sanglard's walkthrough on the game engine architecture of id Software's original Doom on Intel 486 system and game console ports. Contains forewords by John Carcmack, Dave Taylor and John Romero
A to Z of C - a book on C/DOS programming by K. Joseph Wesley and R. Rajesh Jeba AnbiahNon-profit book on programming in C on DOS. DOS system programming starts from Part II
Michael Abrash's Graphics Programming Black Book Special EditionCollection of Michael Abrash's Dr. Dobb's Journal graphics programming articles and his work on the graphics subsystem of Quake ( )

Awesome DOS / Books / Paid

Tricks of the Game-Programming Gurus - by Andre Lamothe, John Ratcliff and Denise TylerComprehensive DOS game development book about starting out. Topics include keyboard, mouse- and joystick input handling, creating 2D and 3D VGA graphics, raycaster rendering, sound and music, game algorithms, Interrupt Service Routines (ISR), timers, artificial intelligence, networked multiplayer through serial port and null-modem cable, tooling, parallax scrolling and optimization techniques

Awesome DOS / Books / Paid / Tricks of the Game-Programming Gurus - by Andre Lamothe, John Ratcliff and Denise Tyler

Open Library linkEbook available from online libraries to borrow (required due to licensing): ,

Awesome DOS / Books / Paid

More Tricks of the Game Programming Gurus - by Greg AndersonCompanion book to , continuing where the original left off. Topics include SVGA, Binary Space Partition (BSP), UI, voxel graphics, memory management in real and protected mode, advanced sound programming, debugging and optimization techniques

Awesome DOS / Books / Paid / More Tricks of the Game Programming Gurus - by Greg Anderson

Open Library linkEbook available from online libraries to borrow (required due to licensing): ,

Awesome DOS / Videos

Why DOS Was (and Is) a Thing - FreeDOSHistorical talk starting from Unix, going through CPM, DOS 1.x, DOS 2.x, DOS 3.x, DOS 4.x, DOS 6.x, Windows 3.1, Windows 95 and ending with FreeDOS
CGA Graphics - Not as bad as you thought! - by 8-bit GuyHistory and technical details about IBM's CGA system. Also describes 4-color RGBI and 16-color Composite modes
How Oldschool Sound/Music worked - by 8-bit GuyVideo about PC speaker, FM synthesizers in NES and Commodore 64, Yamaha OPL chip in AdLib and Sound Blaster sound cards, PCM samples and MOD music
Let's Code - MS DOS - by root42DOS programming tutorial series including VGA, SoundBlaster and VGA Mode X
LGR - Evolution of PC Audio - As Told by Secret of Monkey IslandComparison of playing the intro theme of Secret of Monkey Island through PC speaker, IBM PCjr/Tandy, AdLib, Game Blaster, Roland LAPC-1/MT-32, Gravis Ultrasound, Roland SCC-1 MIDI, SB16 Waveblaster/AWE32 and CD quality digital audio
Porting Retro City Rampage to MS-DOS: From PS4 to 1.44MB FloppyGDC talk. Brian Provinciano's presentation on porting Retro City Rampage from PlayStation 4 to DOS. Topics include optimization, using interrupts, timing, PC speaker sound, joystick, memory management and fixed-point math
DOS Executables Explained - Nostalgia NerdVideo about DOS executable formats including , and
Why does DOS use 8.3 Filenames? - Nostalgia NerdVideo about the 8.3 limitation of filenames under DOS, FAT partitioning scheme, NTFS, VFAT, FatGo, and
What is DOS Protected Mode? / DOS Extenders- Nostalgia NerdVideo about how PC memory looks like, conventional memory, extender memory and reasons for the need of DOS Protected Mode Interface (DPMI) and extenders like DOS/4GW
MS-DOS has been Open-Sourced! We Build and Run it! - Dave's GarageFormer Microsoft employee David Plummer tells stories about development of MS-DOS and compiles MS-DOS 4.00 source code which has been open-sourced by Microsoft

Awesome DOS / Source code / Open source DOS operating systems

MS-DOS30,820over 2 years agoGitHub repository of the original source code for MS-DOS v1.25, v2.0 and v4.0, open-sourced by Microsoft
FreeDOSFreeDOS is an open source DOS-compatible operating system that you can use to play classic DOS games, run legacy business software, or develop embedded systems. Any program that works on MS-DOS should also run on FreeDOS

Awesome DOS / Source code / Open source DOS libraries

Allegro 4.21,903almost 2 years agoGame development library for DOS, Windows and Linux. 4.2 version supports DOS platform

Awesome DOS / Source code / Open source DOS libraries / Allegro 4.2

Allegro 4.2.1 PDF documentation.

Awesome DOS / Source code / Open source DOS libraries

LoveDOS677over 9 years agoA framework for making 2D DOS games in Lua. API based on a subset of the LÖVE API
DOS-VGA-Game13about 9 years agoMarco A. Marrero's DOS VGA/hardware library implemented in assembly and Turbo Pascal
DIGPAK sound drivers source code34almost 5 years agoOriginal source code for the DIGPAK sound drivers uploaded to GitHub by John W. Ratcliff

Awesome DOS / Source code / Open source DOS games

DOS Defender131about 3 years agoChristopher Wellons's x86 real mode DOS Asteroids clone created as an entry for Lundum Dare #31
Dungeons of Noudar54almost 4 years agoFirst-person 2.5D dungeon-crawler on protected mode. Written in C++, includes software rendering, fixed point math, test coverage and sound (PC speaker, Adlib, OPL2LPT)
Emeritus PongPong clone for DOS, Windows and Linux. Uses PC speaker for sound on DOS
Floppy Bird917over 6 years agoFlappy Bird clone written in 16 bit assembly. Not a DOS program, but a PC-Booter application instead (although it's also possible to build a COM executable for DOS)
George M. Tzoumas's collection of MS-DOS games and utilitiesTurbo Pascal with few games in C and C++. Games include Nibbles, Connect Four, Ms Pacman clone and two arcade/platform games. One of them (ra2) was written using Allegro. Utilities are all written in Turbo Pascal, these include game system routines, file and disk utilities and terminate-and-stay-resident programs (TSR)
Gold Mine Run!Platformer written in C using DJGPP
Gridfighter 3D'80s style arcade shooter written in Quickbasic. Also the very first known DOS game that supports Oculus Rift VR headset

Awesome DOS / Source code / Open source DOS games / Gridfighter 3D

GitHub repository4over 7 years ago

Awesome DOS / Source code / Open source DOS games

HangmanHangman clone written in Basic. Runs on at least 80286 processors and uses EGA graphics
Magenta's Maze3D maze game using CGA graphics with algebra as theme

Awesome DOS / Source code / Open source DOS games / Magenta's Maze

Source code download link

Awesome DOS / Source code / Open source DOS games

MarioSuper Mario Bros clone written in Turbo Pascal
NetHack3,033almost 2 years agoDescendant of the original rougelike game first released in 1987 available on multiple platforms
Piskworks9almost 2 years agoGomoku clone written in C. Works on DOS, ZX Spectrum, ZX81, ZX80, APPLE1, AS400 and Windows
Plutonium Caverns10over 7 years agoOverhead puzzle game written in C. Web version uses to embed DOSBox into HTML5. However, the original executable is also downloadable and buildable with Open Watcom
Ptakovina20almost 2 years agoTetris clone written in C. Runs on DOS, Unix/Linux, ZX Spectrum and Windows
sudoku86Sudoku clone written in C. Runs on 8086/8088 CPU, uses CGA, MCGA or VGA graphics and uses a mouse
TetrisTetris clone written in assembly

Awesome DOS / Source code / Open source DOS games / Tetris

Source code download link

Awesome DOS / Source code / Open source DOS games

Towers of Hanoi4almost 11 years agopuzzle game written in Turbo Pascal. Originally released in 1996
x86 pong9almost 8 years agoText-mode Pong clone written in C. Runs as PC-Booter game and under DOS
zmiyText-mode Snake clone written in C. Runs on 8086 DOS
CyberdogsTop-down 2D shooter playing as a mercenary to earn money. Written in Turbo Pascal. Supports two player mode

Awesome DOS / Source code / Open source DOS games / Cyberdogs

Source code download link
C-DogsSequel to the original Cyberdogs. Ronny Wester, the original creator no longer maintains the website for the original C-Dogs, but multiple ports exists, including

Awesome DOS / Source code / Open source DOS games

AbuseSci-fi side-scrolling platform game. Regarded as an innovative cult classic by most people. Supports SVGA mode up to 1280x1024 resolution. Written in C, the architecture includes a Lisp-scripting engine

Awesome DOS / Source code / Open source DOS games / Abuse

Source code download link

Awesome DOS / Source code / Open source DOS games

Beneath a Steel SkyPoint-and-click adventure game set in a dystopian future. Written in assembly

Awesome DOS / Source code / Open source DOS games / Beneath a Steel Sky

Source code download link

Awesome DOS / Source code / Open source DOS games

Catacomb143over 12 years ago2D top-down shooter developed by Softdisk (later becoming id Software). Supports EGA and CGA graphics. Written in Turbo Pascal and assembly
Catacomb 3D191over 12 years agoFirst-person shooter in fantasy setting developed by Softdisk (later becoming id Software). Features pseudo-3D graphics with raycasting technique. Supports EGA graphics. Written in C and assembly. Compiled with Borland C++ 3.1
Commander Keen in Keen Dreams1,931almost 12 years agoSide-scrolling platform game developed by id Software. Keen Dreams is the Commander Keen game created between Keen 3 and Keen 4 (often considered "Keen 3.5"), but was not widely released. Written in C and assembly
Descent390almost 8 years agoFirst sci-fi FPS/space shooter to feature entirely true 3D graphics. Written in C and assembly
Descent II88almost 14 years agoSequel to Descent. Written in C and assembly
Doom14,572over 2 years agoSci-fi FPS developed by id Software where you fight demons from hell on Mars. The DOS-specific code for Doom could not be published because of a dependency to the licensed DMX sound library, hence why it's cleaned up and only the Linux source is there. However, the Heretic and Hexen projects contain the original DOS code in a way where DMX-related code is removed
Duke Nukem 3DFPS developed by Apogee featuring the iconic character Duke Nukem. Written in C. Compiled with Watcom C/C++ 10.0

Awesome DOS / Source code / Open source DOS games / Duke Nukem 3D

Source code download link

Awesome DOS / Source code / Open source DOS games

Heretic45over 13 years agoDark fantasy FPS running on id Software's Doom engine
Hexen: Beyond Heretic36over 13 years agoIndirect sequel to Heretic

Awesome DOS / Source code / Open source DOS games / Hexen: Beyond Heretic

SourceForge linkOriginal for Heretic/Hexen

Awesome DOS / Source code / Open source DOS games

Hovertank 3D242over 12 years agoFPS developed by id Software. Features pseudo-3D graphics with raycasting technique, before Catacomb 3D and Wolfeinstein 3D. Written in C and assembly
Quake4,959over 2 years agoFPS developed by id Software set in a fully 3D world. Written in C. Compiled with DJGPP for DOS

Awesome DOS / Source code / Open source DOS games / Quake

Quake Engine Code Review seriesCode analysis by Fabien Sanglard

Awesome DOS / Source code / Open source DOS games

Rise of the Triad: Dark War87almost 8 years agoFPS developed by Apogee. It was developed as a follow-up to Wolfenstein 3D, but was altered and became a standalone game instead. Uses a heavily modified Wolfenstein 3D engine. Written in C
SopwithSide-scrolling shoot 'em up created by David L. Clark in 1984. The game involves piloting a Sopwith biplane, attempting to bomb enemy buildings while avoiding fire from enemy planes and various other obstacles

Awesome DOS / Source code / Open source DOS games / Sopwith

MaiZure's Projects - Decoded: SopwithCode analysis by MaiZure

Awesome DOS / Source code / Open source DOS games

Wolfenstein 3D2,209over 14 years agoFPS developed by id Software set in the Nazi German prison Castle Wolfenstein. Features pseudo-3D graphics with raycasting technique. Written in C and assembly

Awesome DOS / Drivers and emulators / Sound card emulators

SBEMU628almost 2 years agoA TSR that emulates Sound Blaster and OPL3 in pure DOS using modern PCI-based (onboard and add-in card) sound cards. Supports both real mode and protected mode games!
VSB65over 2 years agoA fork of SBEMU (see above), which also aims to offer Sound Blaster emulation for modern PC hardware, in both real mode and protected mode games

Backlinks from these awesome lists:

More related projects: