Awesome DOS
DOSを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
開発ツール
- bcc - Bruce’s C Compiler - tiny/small メモリーモデル用の 8086 アセンブラーを生成する、シンプルな C コンパイラー。
- DJGPP - Intel 80386 向けの DJ Delorie による完全な32ビット C/C++ 開発環境。Quake で使用されました。
- GCC IA-16 toolchain - DJGPP の16ビット版に相当する GCC ベースのツールチェーン。16ビット(8086〜80286、別名 IA-16)DOS アプリケーションを開発でき、現在は TK Chia が保守しています。
- Insight - Borland Turbo 風 UI を備えた、リアルモード DOS プログラム向けの非常に小さなデバッガー。i80486 ディスアセンブラーと i8086 アセンブラーを搭載。
- Open Watcom - 以前は商用だった16・32ビット DOS および
Windows 向け C/C++ 開発環境。現在の公式版は1.9で、GitHub フォークもあります。Doom I-II、Warcraft I-II、Duke Nukem 3D、Full Throttle、Dark Forces、Retro City Rampage で使用されました。
- ドキュメントは、バージョン1.9とV2フォークの両方を扱ううえで非常に有用です。
- Arch Wiki ページ
- Open Watcom V2 - 活発に保守され、64ビット Windows と Linux に移植された GitHub フォーク。
- Turbo C 2.01 - Borland が1987年に初公開した C IDE とコンパイラー。
- Turbo C++ 1.01 - Borland が1991年に公開した C++ IDE とコンパイラー。
- Turbo C++ 3.0 - Borland が1992年に公開した C++ IDE とコンパイラー。
- DIV Games Studio 2 - 2D、Mode 7、3D の DOS ゲームを開発する IDE。1998年公開。
- T3X - Nils M. Holm による、小型で移植可能な手続き型・ブロック構造・再帰対応・ほぼ型なしで、ある程度オブジェクト指向のプログラミング言語。
- SmallerC - Alexei A. Frounze による、リアル/プロテクトモード DOS プログラムを含む複数プラットフォーム向け実行ファイルを生成できる、移植可能なセルフホスト C コンパイラー。
- Small-C Toolkit - K&R C コンパイラー、Make、リンカー、アセンブラーを備えた DOS(8086)向けセルフホスト Small-C Compiler Toolkit。Jim E. Hendrix が1982年に初公開。
メモリーマネージャー
- 386MAX - 386以上の CPU を搭載した DOS PC 向けメモリーマネージャー。Qualitas が1992年に公開し、2022年6月に GPL-3.0 でソースコードが GitHub 公開されました。
DOS 向けスクリプト言語とインタープリター
- DOjS - MS-DOS、FreeDOS、または DOS ベースの Windows(95、98、ME)向け JavaScript プログラミング環境。
- Lua for DOS - Intel 80486 上の MS-DOS 用にコンパイルされた Lua 5.3.5 のオンラインデモ。
- Micropython for FreeDOS - micropython 向け FreeDOS アドホックモジュール。
- perldos - DOS 向け Perl。
- PythonD - マルチスレッド、ネットワーク、OpenGL を含む DOS 向け Python。
チュートリアルとプログラミング資料
歴史
- Brendan Byers による The Life of MS-DOS - CP/M、Q-DOS/86-DOS、MS-DOS、PC-DOS を含む DOS 系譜の歴史。DOS オペレーティングシステムのタイムラインと系統図も掲載。
コンパイル
- Alexei A. Frounze による 80x86 16-bit Compiling How-to - Borland/Turbo C/C++ と Open Watcom の16ビットコンパイルチュートリアル。メモリーアドレス指定とメモリーモデルを詳しく解説。
- Open Watcom による32ビット DOS 開発 - Open Watcom の32ビットコンパイルチュートリアル。
- Chris Wellons による GCC で DOS COM ファイルをビルドする方法 - DJGPP を使った DOS Defender のビルド工程。32ビット80386 COM 実行ファイルの作成が目的です。
全般
-
David Brackeen - C による256色 VGA プログラミング - 1996年に書かれた、DOS 上でのグラフィックス作成を学ぶチュートリアルシリーズ。
-
Robert W. Oliver II による 640k Really is Enough for Anyone - FreeDOS で Turbo C を動かし、ピクセルを移動させる短い記事。
-
Just keeping it real… old skool style - Scali’s OpenBlog - Scali が CGA、EGA、VGA プログラミングへ取り組んだ過程を記したブログ記事。
-
Alex Russell’s Dos Game Programming in C for Beginners - C の基礎、グラフィックス、アニメーション、入力処理、衝突判定を含む DOS ゲームプログラミングシリーズ。バッファー入力処理のチュートリアルもあり、最終章には DOS 版 Break Out の完全なソースコードがあります。
-
The Artevida Game Programming Tutorials - Kevin Matz による、C/C++ と 80x86 アセンブリーを使った DOS システムプログラミングと VGA の基礎を扱う書籍級の解説。未完のまま2001年以降放棄されています。
-
PC Game Programmer’s Encyclopedia - アセンブリー、サウンド(Sound Blaster、Gravis UltraSound、PC Speaker、GameBlaster、Adlib)、入力、メモリー(EMS、XMS、DMA 転送)、PIT、VGA、SVGA、アルゴリズム、ファイル形式を扱うガイド集。
-
flipcode による The Art of Demomaking - DOS のグラフィックスプログラミングを紹介する1999年のシリーズ。元サイトには1990年代後半〜2000年代初頭のゲームプログラミング記事もあります。
-
Programming MS-DOS with Power - DOS Programming, Undocumented DOS, and DOS Secrets - ディスク処理、割り込み、入力、サウンド、グラフィックスなどのシステムプログラミングチュートリアル。
-
Programmer’s Heaven (InfoMagic)(March 1997) CD-ROM - MS-DOS、ネットワーク、C、C++、Pascal、Visual Basic、Delphi、3D、PC Speaker、Soundblaster、Gravis Ultrasound、MIDI などのソースコードとファイル。
DOS API
- Digital Mars による bios.h ヘッダードキュメント - BIOS 操作へ直接アクセスするルーチン(ディスク、キーボード、プリンター、時刻、メモリー、シリアル、割り込み)の API ドキュメント。
- Digital Mars による dos.h ヘッダードキュメント パート1 パート2 - DOS オペレーティングシステム自体と連携する関数の API ドキュメント。
割り込み
- Ralph Brown’s Interrupt List - HTML 版 - 既知の文書化済み・未文書化割り込み呼び出しを網羅し、検索、カテゴリー、割り込み番号から参照できます。
メモリー
- 16ビット MS-DOS のメモリーモデルを振り返る - near/far ポインターを含むセグメントメモリーについての Raymond Chen による解説。
映像
- 標準ビデオモードの値 - BIOS 割り込み番号、テキスト/ピクセル解像度、色数、ビデオメモリーアドレスを含む既知のビデオモード一覧。
CGA
- Color Graphics Adapter: Notes - IBM オリジナル CGA のハードウェア、メモリーマップ、レジスター I/O、互換ハードウェアを説明する文書。
VGA
- VGA Hardware - OSDev wiki - NVidia や ATI を含む現代のグラフィックスカードにも関係する VGA カードのハードウェアガイド。
- アセンブリーによるグラフィカルプログラミング(DOS) - 冒頭にテキスト、CGA、EGA、VGA、SVGA のビデオモード一覧も示す VGA プログラミングチュートリアル。
- VGA programming lessons - Pascal とアセンブリーによる VGA プログラミングチュートリアルシリーズ。
SVGA
- Myles による DOS Super VGA / VESA programming notes - 冒頭に歴史、VESA VBE 規格の短い説明がある記事。残念ながらサンプルコードは Wayback Machine にもありません。
- VESA Video Modes - OSDev wiki - VESA モードを照会するチュートリアル。
- DJGPP VESA guide - VESA モードを照会するチュートリアル。
- High-res high-speed VESA tutorial - VESA モード(プロテクトまたはリアル)でのピクセル描画を含むチュートリアルシリーズ。
- VESA 2.0 モードで描画する C コード例 - VESA モードで楕円を描くコードリスト。
サウンド
- Programming Sound Cards CD - Adlib、Gravis、Pro-Audio、Roland、Sound Blaster 向けソースコードを収録した1995年の CD-ROM。各フォルダーの説明はCD-ROM ケースの裏面に掲載。
PC Speaker
- Mark Feldman による Making some noise with the PC speaker! - PIT を使って PC Speaker の周波数を生成する非常に短いチュートリアル。
- Frequencies of Musical Notes - PC Speaker のパラメーター設定に使える周波数表。
- Sound Programming with PC Speaker - A to Z of C 第23章 - ソースコードを含む「A to Z of C」の PC Speaker プログラミング章。
AdLib/OPL2
- Yamaha YM3812 (OPL2) サウンドチップの Wikipedia 記事 - 8-bit Guy の YouTube 動画と並ぶ、OPL2 サウンドチップを学ぶ最初の資料。
- Tero Töttö による The Ad Lib Music Synthesizer Card Programming Guide - OPL2 の操作とレジスターのリファレンス。
Sound Blaster/OPL3
- Programmer’s Guide to the Yamaha YMF 262/OPL3 FM Music Synthesizer - リバースエンジニアリングによる OPL3 リファレンス。
- Ethan Brodsky による Sound Blaster 16 Programming Document 3.5 - デジタル音声の録音と再生に使う Sound Blaster 16 DSP CT1341 チップのプログラミング。
- Soundblaster Programming Information v0.90 - Sound Blaster のモデルとレジスター一覧。
その他
- プロセッサー種類別 DOSBox サイクル数一覧 - CPU 種類(IBM XT 88、286、386、486、Pentium I、Pentium II)に応じた適切な DOSBox サイクル数の設定表。DOS ゲームの想定実行環境を再現するときに便利です。
書籍
無料
- Game Engine Black Book: Wolfenstein 3D - Fabien Sanglard - IBM PC ハードウェア上の id Software 製 Wolfenstein 3D のゲームエンジン構造を Fabien Sanglard が解説。John Carcmack、Tom Hall、John Romero の序文を収録。
- Game Engine Black Book: Doom - Fabien Sanglard - Intel 486 とゲーム機移植版における id Software オリジナル Doom のゲームエンジン構造を Fabien Sanglard が解説。John Carcmack、Dave Taylor、John Romero の序文を収録。
- A to Z of C - K. Joseph Wesley と R. Rajesh Jeba Anbiah による C/DOS プログラミング書 - DOS 上の C プログラミングに関する非営利書籍。DOS システムプログラミングは第II部から始まります。
- Michael Abrash’s Graphics Programming Black Book Special Edition - Michael Abrash による Dr. Dobb’s Journal のグラフィックスプログラミング記事と、Quake のグラフィックスサブシステムに関する成果のコレクション(ミラー)。
有料
- Tricks of the Game-Programming Gurus - Andre Lamothe、John Ratcliff、Denise Tyler - DOS ゲーム開発を始めるための包括的な書籍。キーボード、マウス、ジョイスティック入力、2D・3D VGA、レイキャスター、サウンドと音楽、ゲームアルゴリズム、割り込みサービスルーチン(ISR)、タイマー、AI、シリアルポートとヌルモデムによるネットワーク対戦、ツール、視差スクロール、最適化を扱います。
- ライセンス上、貸出形式で利用できるオンライン図書館の電子書籍:Open Library、Internet Archive
- More Tricks of the Game Programming Gurus - Greg Anderson - Tricks of the Game Programming Gurus の続編。SVGA、Binary Space Partition(BSP)、UI、ボクセルグラフィックス、リアル/プロテクトモードのメモリー管理、高度なサウンド、デバッグ、最適化を扱います。
- ライセンス上、貸出形式で利用できるオンライン図書館の電子書籍:Open Library、Internet Archive
動画
- Why DOS Was (and Is) a Thing - FreeDOS - Unix から始まり、CPM、DOS 1.x〜6.x、Windows 3.1、Windows 95 を経て FreeDOS に至る歴史講演。
- CGA Graphics - Not as bad as you thought! - 8-bit Guy - IBM CGA システムの歴史と技術詳細。4色 RGBI と16色 Composite モードも解説。
- How Oldschool Sound/Music worked - 8-bit Guy - PC Speaker、NES と Commodore 64 の FM シンセサイザー、AdLib と Sound Blaster の Yamaha OPL、PCM サンプル、MOD 音楽を扱う動画。
- Let’s Code - MS DOS - root42 - VGA、SoundBlaster、VGA Mode X を含む DOS プログラミングシリーズ。
- LGR - Evolution of PC Audio - As Told by Secret of Monkey Island - Secret of Monkey Island の導入曲を PC Speaker、IBM PCjr/Tandy、AdLib、Game Blaster、Roland LAPC-1/MT-32、Gravis Ultrasound、Roland SCC-1 MIDI、SB16 Waveblaster/AWE32、CD品質デジタル音声で再生して比較。
- Porting Retro City Rampage to MS-DOS: From PS4 to 1.44MB Floppy - Retro City Rampage を PlayStation 4 から DOS へ移植した Brian Provinciano の GDC 講演。最適化、割り込み、タイミング、PC Speaker、ジョイスティック、メモリー管理、固定小数点演算を扱います。
- DOS Executables Explained - Nostalgia Nerd -
.COM、.BAT、.EXEを含む DOS 実行ファイル形式の動画。 - Why does DOS use 8.3 Filenames? - Nostalgia Nerd - DOS の8.3ファイル名制限、FAT、NTFS、VFAT、FatGo、
LFN.EXEを扱う動画。 - What is DOS Protected Mode? / DOS Extenders- Nostalgia Nerd - PC のメモリー構成、コンベンショナル/拡張メモリー、DPMI と DOS/4GW などのエクステンダーが必要な理由を説明。
- MS-DOS has been Open-Sourced! We Build and Run it! - Dave’s Garage - 元 Microsoft 社員 David Plummer が MS-DOS 開発を語り、Microsoft が公開した MS-DOS 4.00 のソースをコンパイルします。
ソースコード
オープンソースの DOS オペレーティングシステム
- MS-DOS - Microsoft がオープンソース化した MS-DOS v1.25、v2.0、v4.0 のオリジナルソースコードリポジトリ。
- FreeDOS - 古典的 DOS ゲーム、旧式業務ソフト、組み込みシステム開発に使えるオープンソースの DOS 互換 OS。MS-DOS で動くプログラムは FreeDOS でも動作するはずです。
オープンソースの DOS ライブラリ
- Allegro 4.2 - DOS、Windows、Linux 向けゲーム開発ライブラリ。4.2版は DOS に対応。
- LoveDOS - Lua で2D DOS ゲームを作るフレームワーク。LÖVE API のサブセットを基盤とします。
- DOS-VGA-Game - Marco A. Marrero がアセンブリーと Turbo Pascal で実装した DOS VGA/ハードウェアライブラリ。
- DIGPAK sound drivers source code - John W. Ratcliff が GitHub に公開した DIGPAK サウンドドライバーのオリジナルソース。
オープンソースの DOS ゲーム
ソースコード付き Homebrew ゲーム
Homebrew DOS ゲームの全リスト:http://www.doshaven.eu
- DOS Defender - Christopher Wellons が Ludum Dare #31 向けに作成した x86 リアルモード DOS の Asteroids クローン。
- Dungeons of Noudar - プロテクトモードの一人称2.5Dダンジョンクローラー。C++製で、ソフトウェアレンダリング、固定小数点演算、テスト、サウンド(PC Speaker、Adlib、OPL2LPT)を搭載。
- Emeritus Pong - DOS、Windows、Linux 向け Pong クローン。DOS では PC Speaker を使用。
- Floppy Bird - 16ビットアセンブリー製 Flappy Bird クローン。DOS プログラムではなく PC-Booter アプリですが、DOS 用 COM 実行ファイルもビルドできます。
- George M. Tzoumas の MS-DOS ゲーム・ユーティリティ集 - 主に Turbo Pascal、一部 C/C++ 製。Nibbles、Connect Four、Ms Pacman クローン、アーケード/プラットフォームゲーム2作を収録し、ra2 は Allegro 製。ユーティリティは Turbo Pascal 製で、ゲームシステムルーチン、ファイル/ディスク、TSR を含みます。
- Gold Mine Run! - DJGPP を使って C で書かれたプラットフォーマー。
- Gridfighter 3D - QuickBasic 製の1980年代風アーケードシューティング。Oculus Rift VR に対応した最初の既知の DOS ゲームでもあります。
- Hangman - BASIC 製ハングマンクローン。80286以上で動作し EGA を使用。
- Magenta’s Maze - 代数学を題材にした CGA グラフィックスの3D迷路ゲーム。
- Mario - Turbo Pascal 製 Super Mario Bros クローン。
- NetHack - 1987年に初公開され、複数プラットフォームで利用できるオリジナルの NetHack ローグライクの後継。
- Piskworks - C 製五目並べクローン。DOS、ZX Spectrum、ZX81、ZX80、APPLE1、AS400、Windows で動作。
- Plutonium Caverns - C 製の見下ろし型パズルゲーム。Web 版は Emscripten 移植の DOSBox を使って HTML5 に埋め込み。オリジナル実行ファイルもダウンロードでき、Open Watcom でビルドできます。
- Ptakovina - C 製 Tetris クローン。DOS、Unix/Linux、ZX Spectrum、Windows で動作。
- sudoku86 - C 製 Sudoku クローン。8086/8088 CPU、CGA/MCGA/VGA、マウスに対応。
- Tetris - アセンブリー製 Tetris クローン。
- Towers of Hanoi - Turbo Pascal で書かれ、1996年に初公開されたハノイの塔パズルゲーム。
- x86 pong - C 製テキストモード Pong クローン。PC-Booter と DOS の両方で動作。
- zmiy - C 製テキストモード Snake クローン。8086 DOS で動作。
ソースコード付き Freeware ゲーム
- Cyberdogs - 傭兵として資金を稼ぐ見下ろし型2Dシューティング。Turbo Pascal 製で2人プレイ対応。
- ソースコードのダウンロード
- C-Dogs - Cyberdogs の続編。原作者 Ronny Wester はオリジナル C-Dogs のサイトを保守していませんが、cdogs-sdlなど複数の移植版があります。
ソースコードが公開された商用ゲーム
- Abuse - SF 横スクロールプラットフォームゲーム。革新的なカルトクラシックとされ、最大1280x1024の SVGA に対応。C 製で Lisp スクリプトエンジンを内蔵。
- Beneath a Steel Sky - ディストピアの未来を舞台にしたポイント&クリック式アドベンチャー。アセンブリー製。
- Catacomb - Softdisk(後の id Software)が開発した見下ろし型2Dシューティング。EGA/CGA 対応で Turbo Pascal とアセンブリー製。
- Catacomb 3D - Softdisk(後の id Software)によるファンタジー一人称シューティング。レイキャスティングによる疑似3D、EGA に対応。C とアセンブリー製で Borland C++ 3.1 を使用。
- Commander Keen in Keen Dreams - id Software 開発の横スクロールプラットフォームゲーム。Keen 3 と Keen 4 の間に作られた(「Keen 3.5」とも呼ばれる)ものの広く公開されなかった作品。C とアセンブリー製。
- Descent - 完全な真の3Dグラフィックスを初めて採用した SF FPS/宇宙シューティング。C とアセンブリー製。
- Descent II - Descent の続編。C とアセンブリー製。
- Doom - 火星で地獄の悪魔と戦う id Software 製 SF FPS。ライセンスされた DMX サウンドライブラリへの依存により DOS 固有コードは公開できず、整理された Linux ソースのみがあります。Heretic と Hexen には DMX 関連コードを除去したオリジナル DOS コードが含まれます。
- Duke Nukem 3D - 象徴的な Duke Nukem を主役とする Apogee 製 FPS。C 製で Watcom C/C++ 10.0 を使用。
- Heretic - id Software の Doom エンジンで動くダークファンタジー FPS。
- Hexen: Beyond Heretic - Heretic の間接的続編。
- Heretic/Hexen のオリジナル SourceForge リンクheretic/hexenのため
- Hovertank 3D - id Software が Catacomb 3D と Wolfenstein 3D より前に開発した FPS。レイキャスティングによる疑似3D。C とアセンブリー製。
- Quake - 完全な3D世界を舞台にした id Software 製 FPS。C で書かれ、DOS 用には DJGPP でコンパイル。
- Quake Engine Code Review シリーズ - Fabien Sanglard によるコード分析。
- Rise of the Triad: Dark War - Apogee 製 FPS。Wolfenstein 3D の後継として開発された後、独立作品へ変更。大幅に改変した Wolfenstein 3D エンジンを使用し、C 製。
- Sopwith - David L. Clark が1984年に制作した横スクロールシューティング。Sopwith 複葉機を操縦し、敵機などを避けながら敵の建物を爆撃します。
- MaiZure’s Projects - Decoded: Sopwith - MaiZure によるコード分析。
- Wolfenstein 3D - ナチス・ドイツの Castle Wolfenstein 刑務所を舞台にした id Software 製 FPS。レイキャスティングによる疑似3D。C とアセンブリー製。