見出し画像

CP/M - DOSってなんドス?

そもそもインテルの4004というCPUは電卓に使う目的で用途も限られていましたが、8ビットCPUである8080は汎用的に使うことを目指していました。そうなると必要になるのが、いわゆる開発環境です。この時代にコードを書くような人は既に大型機であるとかミニコンで経験を積んだ人たちですから、彼らが好む環境を用意することが普及には効果的です。

インテルとしては自ら開発環境を構築するために8080向けのコンパイラなどをいろいろな会社に発注していました。実は今でもインテルはコンパイラなどをリリースしており、C/C++コンパイラは有名です。

Intel C++ Compiler

当時、大型機などで広く使われていたPL/I風の言語であるPL/Mを開発したデジタルリサーチの創業者であるゲイリー・キルドールは、既に普及していたフロッピーディスクを使うOSであるDOSを既に開発していましたが、この採用をインテルに断られたために自ら販売するようになったのがCP/Mです。

CP/M

デジタルリサーチ

ゲイリー・キルドール

OSと言っても8080の割り込み制御も貧弱でしたしメモリ保護などの機能は持っていなかったので、シングルユーザ・シングルタスクです。8080のアドレス空間のウチ、最初の0番地から256バイトはリセットベクタなどが格納されるのでOSのワークエリアとし、0x100からTPAと呼ばれる実行されるプログラムのアドレスとして使われることが決まっていました。最低限必要なメモリは16Kということになっていましたが、より多くのメモリを使うプログラムを走らせるには、そのままメモリを増やしていけば良く、BIOSやDOSなどはメモリ空間の最後の方に固めて置かれることになっていました。これは実行ファイルが8080のバイナリそのもので絶対アドレスが使われるために常に決まった場所にプログラムを置く必要があったためです。

リロケータブルとバイナリローダ - 絶対アドレスの扱い

実にシンプルなレイアウトなのですが、普通のパソコンでは8080のリセットベクタが0番地なので、そこはROMが割り当てられており、ハードウェア的に少しばかり工夫が必要になるのと、大きなTPAを使うには64Kのアドレス空間の中にVRAMを置くわけにもいきません。何せ開発環境なので画面はせいぜいテキストだけでしたし、場合によれば画面は持たずシリアル接続で端末から使うことも多かったと思います。

フロッピーディスク自身は大型機やミニコンでは1970年代には一般的になっていたので、マイコンでも使おうとするのは自然なことでした。実際、当時のフロッピーは、これら大型機との互換性のある8インチが主流でした。

コマンドは必要最低限の機能を持つCCPと呼ばれるプログラムで、ここからフロッピーディスクに記録された実行可能なファイルをTPAに読み込んで走らせることで、いろいろな処理を行うようになっていました。コンパイラやアセンブラ、それらで作られたアプリケーションを起動する程度で、CCP自身はあまりいろいろな機能はありませんでしたが、既にバッチファイルという概念はありました。

CP/Mでもっとも悪評が高いのがフロッピーディスクの入れ替え時にCTRL-Cを押す必要があることで、これを忘れると見事にディスクの内容が破壊されたり、リブートが必要になることでした(これとPC8001のDISK-BASICにおけるMOUNTが悪評の双璧かも)。フロッピーの時代はディスクの入れ替えをハードウェアが検出できるとは限らなかったので、これをどう処理するかは頭の痛い問題でもあり、逆に言えば、これをどう解決するかが設計者の腕の見せどころでした(その意味ではAPPLE][のDOSは、なかなかうまくやってます)。

CP/Mは、要求するハードウェア仕様がシンプルで8080とその互換CPUであれば移植が容易だったので、8085やZ-80を積んだシステムでも主流のOSとなりました。CP/Mを動かすだけであればボードの設計も容易だったので、自作した人も多かったですし、多くの中小メーカーがCP/Mが動くPCを発売しました。大抵はテキストだけの画面しか持たないものでしたが、CP/Mを動かすのが目的であれば、それで十分でした。

その後、非常に多くのソフトが供給されることとなり80系マシンであればフロッピーディスクを繋いだらCP/Mを動かすというのが必須のこととなっていきます。ただパソコンで先行していたTRS-80もそうですし、多くの日本製パソコンがハードウェア構成の問題でそのままでは動かせなかったりしたので、最初は限られた範囲で使われていたような気もしれます。何せ英語のみですしグラフィックも基本的にはサポートされていません、それにフロッピーディスクがなかなか普及していませんでしたしね。

ただ、その勢いは止まらず APPLE][でさえもCPUをZ-80にすげ替えてでもCP/ Mを使えるようになり、FM-8と同時に発売されたBUBCOM80では標準でCP/ Mを使うことを想定していました。その後、シャープも積極的に採用するようになり、ソニーもSMCシリーズでは標準的な機能として搭載するようになりました。そしてMSX-DOSは表面的にはMS-DOSに似せていましたが、実体はCP/Mでした。

その後、CP/Mは8086や68000向けの16ビット版もリリースされたのですが、残念ながら8ビット版のアプリケーションの移植が進まず、IBMがPCを出すに当たりマイクロソフト製のDOSを採用したことから、急速に勢いを失い、マルチユーザをサポートしたMP/MやマルチプロセスをサポートしたコンカレントCP/M(CCP/M)といった進化を遂げて生きながらえましたが、結局1991年にデジタルリサーチはノベルに買収され事実上、役割を終えました。

業界に痕跡を残して消えたメーカー MS-DOS誕生のきっかけとなったOS「CP/M」を生みだしたDigital Research

マイクロソフトWindowsの基盤となっているMS-DOSのコマンド体系は、このCP/Mの仕様を引き継いたものが多く、ドライブレターやワイルドカード、オプションのスラッシュやパスをバックスラッシュで区切ると言った UNIX(linux)と微妙に異なり、多くの人を悩ませている違いは、ここから来ています。その意味では静かに今でも影響は続いているのでしょう。

今はフリーで手に入れることもできるようです。

CP/Mシミュレータ

CP/Mいろいろ

ヘッダ画像は、以下のものを使わせていただきました。https://commons.wikimedia.org/wiki/File:C128cpmboot.jpg
Alex Lozupone - 投稿者自身による著作物, CC 表示-継承 3.0, https://commons.wikimedia.org/w/index.php?curid=8338666による

#8ビット #CP /M #デジタルリサーチ #DOS  

この記事が気に入ったらサポートをしてみませんか?