DOSの動作環境
アセンブラはDOSで学習するのが良いと言いながら、動作環境に触れないのはどうかと思い、今回は有償・無償・過去の遺産問わず書き残しておきます。
2020年現在、正式に配布されている入手可能なMS-DOS互換OSは恐らくFreeDOSのみです。FreeDOSは正式に日本語をサポートしていませんが、DOS/V時代のフリーウェアを利用して何とかDOS/V化出来るようです。動作確認しているのは今のところ仮想環境のみです。
動作環境
| 親OS | 仮想環境 | MS-DOS/V 6.2 | PC-DOS/V 2000 | DR-DOS 7.03 | FreeDOS 1.2 |
|---|---|---|---|---|---|
| Windows10 | Hyper-V | - | - | - | 〇 |
| Windows10 | 86BOX | 〇 | 〇 | 〇 | 〇 |
| Windows10 | VirtualBox | △ | 〇 | 〇 | 〇 |
| Windows7 | Virtual PC 2007 | 〇 | 〇 | △ | 〇 |
Hyper-V
Windows10のHyper-Vでは古いOSを除外しているのでFreeDOSしかインストールできませんでした。
DOSの動作環境はメインメモリ数メガ・HDD数十メガの時代のものなので、Hyper-Vはオーバースペックです。
86BOX
86BOXをHyper-VやVirtualBOX等と同列に扱って良いのかわかりませんが・・・
仮想マシンではなく、x86エミュレーターです。90年代当時とはハード構成が違うので、新しいPCでは古いOSではサポートしてない新しい機構があり、誤動作の原因になる事があります。そういった意味では古いOSを動作させるには一番都合が良い環境と言えます。
86BOXを動作させるには実機のBIOSが必要になります。BIOSはアップデート用ファイルで動作するようです。2000年頃のDOS/V PowerReportの付録CDには、各メーカーの最新BIOSが入っていました。
VirtualBox
VirtualBoxはフロッピーイメージ等の読み込みが速く、本来実機では数秒~数十秒かかるような読み込みが一瞬で終わります。そのためメディアのロード時間にメッセージを表示するような古いゲームで使用することには向いていません。
例えばRPG等でステータス異常の攻撃を受けたことを示すメッセージをフロッピーのロード時に表示する動作があると一瞬で消えてしまうので、ステータス異常に気付けず突然死なんて事が起こるかもしれません。
86BOXは処理が遅いと評価されているようですが、遅いのではなくて意図的に遅らせてるのではないかとも思えます。
VirtualBoxではMS-DOS/V 6.2が起動できませんでした。
CONFIG.SYS内でJDISP.SYSが問題を起こしているようで、引数に/HS=LCを付けると問題なく起動できました。
VirtualPC 2007
Windows7のVirtualPC2007ではDR-DOSはEMM386.EXEが誤動作して起動できませんでした。動作させるだけなら、CONFIG.SYSとAUTOEXEC.BATの拡張メモリに関する定義を外せば起動しますが、メモリ不足になると思います。
PC-DOS/VのEMM386.EXEを使いまわすことが出来ましたが、PC-DOS/Vを所有していてDR-DOSにこだわる意味は無いと思います。フリーの拡張メモリドライバが無いか探してみましたが、PC-9800シリーズ用にはVEM386というドライバがありましたが、IBM-PC用は見当たりませんでした。
MS-DOS,PC-DOS,DR-DOSは、Starting ** DOS...が表示されている間にF8キーを押すとCONFIG.SYSとAUTOEXEC.BATの命令を1行毎に実行を選択できるようになります。CONFIG.SYSやAUTOEXEC.BATで問題が起きて起動できないときは、この方法で問題が起きている個所を実行しなければコマンドプロンプトまでたどり着けると思います。
FreeDOSのFDCONFIG.SYSにはブートセレクターのような機能があるので、SafeModeで起動すれば良いでしょう。
Windowsのソフトウェア
フロッピーイメージファイル書き込み
外部とのファイルのやり取りを行うのにフロッピーディスクイメージファイルに書き込むソフトが必需品になると思います。拡張子VFDファイルが一番使いまわしがきくと思います。
ImDisk Virtual Disk Driver
実機に仮想フロッピードライブを作成するドライバー
ディスク操作やファイル操作はWindowsの機能で行います。
ND
FATパーティション ファイル操作ツール
PC-9801エミュレーターで使用されているツールですが、仮想マシンでも利用可能です。
フォーマット機能やイメージファイル作成機能はありませんが、レジストリを使用しないのでイメージへのファイルの読み書きはVirtual Floppy Drive等をインストールせずこれを使用しています。
フロッピーイメージファイル作成
fsutil
Windows標準のコマンドラインファイル処理ユーティリティ
ファイル作成機能を用いてvfdファイルを作成
Nullで埋められたファイルが作成されます。vfdファイルにはEXE形式ファイルにあるMZのようなEXE形式ファイルを示す署名が無いのでこの方法で作成可能なようです。
バッチファイル
@echo off
if "%1" == "" (
@echo %0 [filename]
) else (
fsutil file createnew %1.VFD 1474560
)
未フォーマット状態のVFDイメージファイルが作成されます。
| フォーマット | 1セクター バイト数 |
1トラック セクター数 |
1面 トラック数 |
盤面数 | バイト数 | プラットフォーム |
|---|---|---|---|---|---|---|
| 1.44M 2HD | 512 | 18 | 80 | 2 | 1,474,560 | PC/AT互換機 |
| 1.25M 2HD | 1024 | 8 | 77 | 2 | 1,261,568 | PC-9801シリーズ |
| 720K 2DD | 512 | 9 | 80 | 2 | 737,280 | PC/AT互換機 |
| 640K 2DD | 512 | 8 | 80 | 2 | 655,360 | PC-9801シリーズ |
3モードFDDでも640Kの2DDフロッピーは読めないと思いますが資料として残しておきます。2DDフロッピーを買う理由は無かったと思いますが、90年代以前のパソコン書籍に2DDフロッピーが付属してくることがありました。
DOSのソフトウェア
| ジャンル | 名前 | 提供 | 説明 |
|---|---|---|---|
| ファイル管理 | FILMTN | フリー | - |
| ファイル管理 | FD | フリー | FILMTNの前に使用していたファイル管理ソフト |
| ページャー | MIEL | フリー | 高機能more |
| テキストエディタ | VZエディタ | 市販 | 入手困難 |
| テキストエディタ | NEED | フリー | - |
| バイナリエディタ | HexIt | フリー | 英語DOS |
| バイナリエディタ | Pat | フリー | PC-9800 |
| デバッガ | EXDEB | フリー | シンボリックデバッガー |
| 圧縮・解凍 | LHA | フリー | LZH形式ファイル圧縮解凍 |
| 圧縮・解凍 | PKZIP | フリー | ZIP形式ファイル解凍 |
日本語化ソフトウェア
DR-DOSやFreeDOSを日本語化するために必要なドライバーソフトウェア類
| ジャンル | 名前 | 提供 | 説明 |
|---|---|---|---|
| 日本語キーボード | KEYB | 標準 | FreeDOS付属 |
| 日本語キーボード | JIS_A01 | - | DR-DOSで使用 |
| フォントドライバ | FONTX | - | 日本語フォントドライバーマルチフォント |
| 16ドット半角フォント | - | - | $FONTX.SYS用フォント等 |
| 19ドット半角フォント | - | - | $FONTX.SYS用フォント等 |
| 16ドット全角フォント | - | - | $FONTX.SYS用フォント等 |
| ディスプレイドライバ | DISPV | - | 日本語フォントを表示するのに必要 |
| 言語モード切替 | CHEJ | - | CHEV互換 ディスプレイドライバのモード切替 |
| 言語モード自動切替 | RCHEV | - | プログラム実行時に自動切換えする常駐ソフト |
| 日本語入力サポート | LPKKC | - | 日本語FEPの動作切替ドライバ |
| 日本語入力FEP | 鳳 | - | 日本語入力フロントエンドプロセッサ |
| 日本語入力FEP | 嵐 | - | 日本語入力フロントエンドプロセッサ |
配布先がVectorなら古いファイルも残っていますが、GeoCitiesやInfoseek等のWebサイトスペースを無料で提供していたサービスが何年か前から終了していてサイトが閉鎖されています。特にフォントファイルの様な素材を提供していたサイトはリンク切れが多くなっています。