Here is an assorted collection of sample programs and tools for MS-DOS that I've written over the years. Perhaps a very useful resource to the would-be DOS programmer considering the difficulty of obtaining programming documentation for the platform outside of purchasing old books nowadays.
|DRVSCAN.ZIP||December 5, 2021||Assembler/x86 (TASM)||A simple .COM program that scans for hard drives on both primary and secondary (if available) IDE channels of a PC/AT system and displays their drive parameters, all in 750 bytes. This is useful when dealing with hard drives that do not indicate their drive parameters on really old computers that lack hard drive auto-detection. Written entirely in assembly, source code included (released under MPLv2).|
|romhello.zip||May 30, 2022||Assembler/x86 (NASM)||Option ROM example that displays the obligatory 'Hello World' message after the POST screen. Includes a simple ROM fix-up tool written in C.|
|tridraw.zip||May 30, 2022||C/DOS32 (DJGPP & OpenWatcom)||Demonstrates drawing of triangles using only fixed-point arithmetic in VGA mode 12h with a 640x400 resolution tweak. The example also demonstrates image masking by means of planar trickery.|
Written entirely in C, it was originally made to compare code optimization performance between OpenWatcom and DJGPP (spoiler: DJGPP produces faster code, on top of a faster loading DPMI server).
|EGATEST.C||February 27, 2021||C/DOS16 (OpenWatcom)||A simple sample program that details basic graphics programming for EGA and VGA planar graphics modes. While the operation of EGA graphics manipulation is identical to that of VGA in planar modes, keep in mind that write mode 3 described in most VGA programming documents is not supported on real EGA cards.|
|EGASCRL.ZIP||April 21, 2021||C/DOS16 (Borland C/Turbo C)||Demonstrates four-directional hardware scrolling on EGA 320x200 graphics mode much like the Commander Keen games. It does not demonstrate adaptive tile refresh for continuously scrolling playfields however, but should provide a decent starting point for writing a EGA scrolling engine.|