
YouTuberでレトロコンピューティング考古学者のトーマス・チェリーホームズ氏が、古代のMS-DOSの祖先を試乗しました。埃っぽいクローゼットから発掘され、最近インターネットアーカイブに追加された86-DOSバージョン0.1Cをインストール、起動し、CP/M用に書かれたアプリケーションの翻訳とコンパイルに使用しました。さらに、この作業にはディスクフォーマットの調整、Z80から8086アセンブリへの変換、そして両プラットフォームの編集プログラムの使用も含まれていました。彼の作業の様子は、すぐ下に埋め込まれた動画でご覧いただけます。
86-DOS を起動して動作させるのは、PC エミュレータを起動してディスクイメージをブートするほど簡単ではありません。確かにこの OS は Intel 8086 プロセッサ用に開発されましたが、ターゲットシステムは IBM PC アーキテクチャを採用していませんでした。Cherryhomes 氏は Seattle Computer Products 社の Gazelle コンピュータについて詳しく説明し、Microsoft がバージョン 5.0 まで MS-DOS の最終リンク処理に使用していたことを強調しています。メモリボードの拡張性により最大 1MB の RAM を搭載できた Gazelle は、この用途に魅力的な初期のコンピュータシステムでした。
これらのGazelleシステムの構築方法は、今日86-DOSのテストに興味を持つ人々がSIMHエミュレータを設定する方法と似ています。Cherryhomes氏は、仮想Gazelleを構築し、86-DOSを実行してテストするために使用するSIMH設定ファイルについて説明しました。ビデオでは、設定ファイルに追加される各コンポーネントとその必要性について説明しています。簡単に言うと、この設定ファイルは、CPUボードから始まり、コンソール、シリアルポート、ディスクコントローラ、ROMなど、複数のS-100バスボードを仮想コンピュータに追加して、完全に動作するマシンを実現します。
ビデオの 9 分 30 秒あたりで、PC 上で SIMH ウィンドウが開き、86-DOS システムが起動します。Cherryhomes がエミュレータを起動し、リターン キーを押してプロンプトを表示し、次に「B」キーを押して 86-DOS を起動したことがわかります。
チェリーホームズ氏はまず、86-DOSがFATファイルシステムを使用しているという事実について言及します。しかし、この初期バージョンにはタイムスタンプやファイルサイズがありません。彼は、この12ビットファイルシステムのディレクトリエントリには、これらの情報を格納するのに十分なスペースがないと説明します。続いて、コンピュータ考古学者はシステムディスク上の(9つの)ファイルを調べ、それぞれの機能について説明します。
COMMAND.COM は、DOS の最新バージョンと同様にインタープリターです。Dir、Erase、Type など、システムユーザーに多数の組み込みコマンドを提供します。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
RDCPM.COM は、システムが CP/M 形式のディスクを読み取り、86-DOS FAT 形式のディスクにコピーすることを可能にします。これにより、本来は読み取り不可能なデータにアクセスできるようになります。これは、CP/M ディスクの内容を 86-DOS に移植する唯一の方法であったため、重要な機能です。
HEX2BIN.COMは、16 進アセンブリ コードをバイナリに変換するアセンブリ コード ローダーです。
ASM.COMは SCP のアセンブリ言語プログラムです。
TRANS.COM は、Z80 ソース コードを 8086 コードに変換するプログラムです。
SYS.COM は、別のディスクにオペレーティング システムの起動可能なコピーを作成するために使用されます。
EDLIN.COMは基本的なテキストエディタです
CHESS.COM (およびDOC) – これは基本的なコマンドライン(グラフィックなし)のチェスゲームです。Cherryhomes氏は、このディスクへの奇妙な追加要素に気づき、このコピーの所有者が追加したのではないかと考えました。タイムスタンプがないため、元のディスクに後から追加されたものかどうかは判断が困難です…
86-DOS テストドライブ
約13分半後、チェリーホームズは86-DOSのテストドライブを本格的に開始します。彼はCP/Mで小さなソフトウェアを書き、それをディスクに保存し、86-DOSシステムに移植し、変換、アセンブル、そして実行します。テストは、古典的なHello Worldプログラムのバージョンでした。
コンピュータ考古学者は、自分のPCでCP/Mエミュレータプログラムを使ってHello.ASMを作成しました。プログラムは(まだCP/Mで)正常にアセンブルされました。出力ファイルを確認すると、そのうちの1つにHEXファイルが含まれていました。これをエミュレートされたCP/Mシステムにロードして実行したところ、成功しました。CP/Mのまま、ZTRANというツールを使用して、この小さなHello WorldプログラムをZ80から8086コードに変換しました。
次のステップは、このコードをSIMHエミュレータに取り込むことでした。そのためには、ディスクイメージを使ってファイルをコピーする必要があります。コンピュータ考古学者によると、具体的には、システムはIBM 3740形式(73トラック、26セクター、セクターあたり128バイト、合計237.25KB)のディスクイメージを想定しています。
Cherryhomesは、CP/Mで書き込まれたIBM 3740形式のディスクを86-DOSマシンのドライブBに「挿入」しました。ディスクがFATファイルシステムを使用していないため、ディレクトリをざっと読み取ると、ゴミのようなデータが表示されました。そこで、86-DOSのRDCPM.COMツールの出番です。この初歩的な86-DOSユーティリティは、正しいパラメータを与えなければ動作しませんが、ファイル操作が成功したかどうかを示す進捗状況や表示は一切ありません。
AディスクにHello.ASMファイルが表示されました。Typeコマンドで内容を確認すると、Z80アセンブリが存在することがわかります。次にTRANS.COMを使用し、このツールにHello.ASMファイルを入力すると、完了すると「変換完了」と出力されます。エラーは画面出力ではなく、ファイル内に記録されます。
ファイルの読み出し結果を見ると、未知のDEFB命令によるオペコードエラーが発生していることがわかります。EDLIN.COMを使用してDEFBをDBに変更し、コード作成者にエラーを明示するだけの7行目を削除しました。次に、86-DOSに付属のASM.COMを使用してコードをアセンブルすると、エラーなく完了します。
HEX2BIN.COM はプロセス Hello.HEX の次に実行されます。これもまた、フィードバックがほとんどないツールで、プロンプトに戻るだけです。ディレクトリ一覧を見ると、Hello.COM が実際に作成されており、プロンプトに「hello」と入力して Enter キーを押すだけで実行できることが分かります。うまくいきました!
動画の最後に、チェリーホームズ氏は最後の数分を、DOSがCP/Mを盗用したという「根強い逸話」について触れることに決めた。彼は、現在GitHubで公開されている両OSのソースコードを相互参照することで、共有またはコピーされたコードは存在しないと主張している。
マーク・タイソンはトムズ・ハードウェアのニュース編集者です。ビジネスや半導体設計から、理性の限界に迫る製品まで、PCテクノロジーのあらゆる分野を網羅的にカバーすることに情熱を注いでいます。