Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-dos
Curated list of references for development of DOS applications.
https://github.com/balintkissdev/awesome-dos
Last synced: 4 days ago
JSON representation
-
Development tools
-
- bcc - Bruce's Compiler - Bruce's C compiler is a simple C compiler that produces 8086 assembler for tiny/small memory models.
- DJGPP - DJ Delorie's complete 32-bit C/C++ development environment for Intel 80386. Used for Quake.
- Open Watcom - Formerly commercial C/C++ development environment for 16- and 32-bit DOS and
- documentation
- Arch Wiki page
- Turbo C 2.01 - C IDE and compiler from Borland first released in 1987.
- Turbo C++ 1.01 - C++ IDE and compiler from Borland released in 1991.
- DIV Games Studio 2 - IDE to develop DOS games in 2d, mode 7 and 3d. Released in 1998.
- Online version.
- T3X - A small, portable, procedural, block-structured, recursive, almost typeless, and to some degree object-oriented programming language by Nils M. Holm.
- Arch Wiki page
- Online version.
- SmallerC - Portable 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 Toolkit - A 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.
- GCC IA-16 toolchain - A 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 Watcom V2 - GitHub fork which is actively maintained and is
- Turbo C++ 3.0 - C++ IDE and compiler from Borland released in 1992.
- Online version.
-
Scripting languages and interpreters for DOS
- Lua for DOS - Online demo of Lua 5.3.5, compiled for MS-DOS on the Intel 80486 processor.
- perldos - Perl for DOS.
- PythonD - Python for DOS, including multi-threading, networking and OpenGL.
-
-
Tutorials and programming resources
-
History
- The Life of MS-DOS by Brendan Byers - History 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
-
Compiling
- 80x86 16-bit Compiling How-to by Alexei A. Frounze - 16-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 Watcom - 32-bit compilation tutorial for Open Watcom.
- How to build DOS COM files with GCC by Chris Wellons - Build process of Chris Wellons's DOS Defender game using DJGPP. Goal was to create a 32-bit 80386 COM executable.
-
General
- David Brackeen - 256-Color VGA Programming in C - Tutorial series to learn how to create graphics on DOS.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- Just keeping it real... old skool style - Scali's OpenBlog - Blog post about Scali's journey of doing CGA, EGA and VGA programming.
- Alex Russell's Dos Game Programming in C for Beginners - DOS game programming tutorial series including a primer on C, graphics, animation, input handling and collision detection. This series contains a tutorial for making [buffered input handling](https://web.archive.org/web/20200203195410/http://www3.telus.net/alexander_russell/course/chapter_4.htm). Last chapter contains full source code of a Break Out game on DOS.
- The Artevida Game Programming Tutorials - Kevin 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 Encyclopedia - Collection 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 flipcode - Series 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 Secrets - System programming tutorials like disk handling, interrupts, inputs, sound, graphics.
- Programmer's Heaven (InfoMagic)(March 1997) CD-ROM - Source 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.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
- 640k Really is Enough for Anyone by Robert W. Oliver II - Short article about getting Turbo C running on FreeDOS and moving a pixel around.
-
DOS API
- bios.h header documentation by Digital Mars - API documentation for routines accessing BIOS operations directly (disk operations, BIOS keyboard, printer, time, memory, serial, interrupts).
- Part 1 - API documentation of functions for interfacing with the DOS operating system itself.
-
Interrupts
- Ralph Brown's Interrupt List - HTML version - List of every documented and undocumented interrupt call known, accessible through search, categories and interrupt numbers.
- Ralph Brown's website
-
Video
- Values for standard video mode - List of all known video modes including BIOS interrupt numbers, text/pixel resolution, number of colors and video memory addresses.
- Color Graphics Adapter: Notes - Document describing the hardware, memory map, register I/O and hardware clones of the IBM's original CGA.
- VGA Hardware - OSDev wiki - Hardware 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.
- DOS Super VGA / VESA programming notes - by Myles - VESA 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 wiki - Tutorial about querying VESA modes.
- DJGPP VESA guide - Tutorial about querying VESA modes.
- High-res high-speed VESA tutorial - Series of tutorials that include drawing pixels in VESA mode (protected or real).
- C code sample for drawing in VESA 2.0 mode - Just code listing for drawing an ellipse in VESA mode.
- VGA programming lessons - VGA programming tutorial series in Pascal and Assembly.
-
Sound
- Programming Sound Cards CD - A 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 [on the back of the CD-ROM case.](https://archive.org/details/programming-sound-cards/Programming%20Sound%20Cards_back.jpg)
- Making some noise with the PC speaker! - by Mark Feldman - Very short tutorial on using the PIT for generating PC speaker frequency.
- Frequencies of Musical Notes - Freqency table usable to parameterize the PC speaker.
- Sound Programming with PC Speaker - Chapter 23 of A to Z of C - PC speaker programming chapter of the "A to Z of C" book with source code.
- Yamaha YM3812 (OPL2) sound chip Wikipedia article - Best 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 Synthesizer - Reverse-engineered reference on OPL3.
- Sound Blaster 16 Programming Document 3.5 by Ethan Brodsky - Programming the Sound Blaster 16 DSP CT1341 chip for recording and playback of digitized audio.
- GameDev.net archive
- Soundblaster Programming Information v0.90 - List of Sound Blaster models and registers.
-
Other
- Table of DOSBox cyclecounts according to processor types - A 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.
-
Memory
- A look back at memory models in 16-bit MS-DOS - Raymond Chen's explanation of segmented memory, including near- and far pointers.
-
-
Books
-
Free
- Game Engine Black Book: Wolfenstein 3D - by Fabien Sanglard - Fabien 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 Sanglard - Fabien 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 Anbiah - Non-profit book on programming in C on DOS. DOS system programming starts from Part II.
- Michael Abrash's Graphics Programming Black Book Special Edition - Collection of Michael Abrash's Dr. Dobb's Journal graphics programming articles and his work on the graphics subsystem of Quake.
- Game Engine Black Book: Wolfenstein 3D - by Fabien Sanglard - Fabien 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 Sanglard - Fabien 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.
- Michael Abrash's Graphics Programming Black Book Special Edition - Collection of Michael Abrash's Dr. Dobb's Journal graphics programming articles and his work on the graphics subsystem of Quake ([mirror](https://web.archive.org/web/20201112020812/http://www.phatcode.net/res/224/files/html/index.html)).
-
Paid
- Tricks of the Game-Programming Gurus - by Andre Lamothe, John Ratcliff and Denise Tyler - Comprehensive DOS game development book about starting out, creating 2D and basic 3D graphics, I/O and game algorithms.
-
-
Videos
-
Paid
- Why DOS Was (and Is) a Thing - FreeDOS - Historical 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 Guy - History 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 Guy - Video 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 root42 - DOS programming tutorial series including VGA, SoundBlaster and VGA Mode X.
- LGR - Evolution of PC Audio - As Told by Secret of Monkey Island - Comparison 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 Floppy - GDC 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 Nerd - Video about DOS executable formats including `.COM`, `.BAT` and `.EXE`.
- Why does DOS use 8.3 Filenames? - Nostalgia Nerd - Video about the 8.3 limitation of filenames under DOS, FAT partitioning scheme, NTFS, VFAT, FatGo, and `LFN.EXE`.
- What is DOS Protected Mode? / DOS Extenders- Nostalgia Nerd - Video 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.
- Let's Code - MS DOS - by root42 - DOS programming tutorial series including VGA, SoundBlaster and VGA Mode X.
- MS-DOS has been Open-Sourced! We Build and Run it! - Dave's Garage - Former 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.
-
-
Source code
-
Open source DOS operating systems
- FreeDOS - FreeDOS 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.
-
Open source DOS libraries
- Allegro 4.2 - Game development library for DOS, Windows and Linux.
-
Open source DOS games
- Emeritus Pong - Pong clone for DOS, Windows and Linux. Uses PC speaker for sound on DOS.
- George M. Tzoumas's collection of MS-DOS games and utilities - Turbo 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.
- Hangman - Hangman clone written in Basic. Runs on at least 80286 processors and uses EGA graphics.
- Magenta's Maze - 3D maze game using CGA graphics with algebra as theme.
- Source code download link
- Mario - Super Mario Bros clone written in Turbo Pascal.
- sudoku86 - Sudoku clone written in C. Runs on 8086/8088 CPU, uses CGA, MCGA or VGA graphics and uses a mouse.
- Tetris - Tetris clone written in assembly.
- Source code download link
- zmiy - Text-mode Snake clone written in C. Runs on 8086 DOS.
- Cyberdogs - Top-down 2D shooter playing as a mercenary to earn money. Written in Turbo Pascal. Supports two player mode.
- Source code download link
- C-Dogs - Sequel to the original Cyberdogs. Ronny Wester, the original creator no longer maintains the website for the original C-Dogs, but multiple ports exists, including [cdogs-sdl](https://congusbongus.itch.io/cdogs-sdl).
- Abuse - Sci-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.
- Source code download link
- Beneath a Steel Sky - Point-and-click adventure game set in a dystopian future. Written in assembly.
- Source code download link
- Duke Nukem 3D - FPS developed by Apogee featuring the iconic character Duke Nukem. Written in C. Compiled with Watcom C/C++ 10.0.
- Source code download link
- SourceForge link
- Quake Engine Code Review series - Code analysis by Fabien Sanglard.
- Sopwith - Side-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.
- MaiZure's Projects - Decoded: Sopwith - Code analysis by MaiZure.
-
Categories