| CP/M | |
|---|---|
CP/M-86のスクリーンショット | |
| 開発者 | デジタル・リサーチ社、ゲイリー・キルドール |
| 書かれた | PL/M、アセンブリ言語 |
| 作業状態 | 歴史的 |
| ソースモデル | 元々はクローズドソースだったが、現在はオープンソース[ 1 ] |
| 初回リリース | 1974 (1974年) |
| 最新リリース | 1983年3月1日[ 2 ] (1983年) |
| 入手可能な | 英語 |
| 更新方法 | 再インストール |
| パッケージマネージャー | なし |
| サポートされているプラットフォーム | インテル 8080、インテル 8085、ザイログ Z80、ザイログ Z8000、インテル 8086、モトローラ 68000 |
| カーネルタイプ | モノリシックカーネル |
| 影響を受けた | RT-11、OS/8 |
| デフォルトのユーザーインターフェース | コマンドラインインターフェース(CCP.COM) |
| ライセンス | 元々はプロプライエタリだったが、現在はBSDライク |
| 後継者 | MP/M、CP/M-86 |
| 公式サイト | デジタルリサーチ CP/M ページ |
CP/M [ 3 ]は元々 Control Program/Monitor [ 4 ]の略で、後にControl Program for Microcomputers [ 5 ] [ 6 ] [ 7 ]となった、1974年にDigital Research, IncのGary KildallがIntel 8080 / 85ベースのマイクロコンピュータ向けに作成した量販向けオペレーティングシステムです。CP/M はディスクオペレーティングシステム[ 8 ]であり、その目的は磁気記憶媒体上のファイルを整理し、ディスクに格納されたプログラムを読み込んで実行することです。当初は8 ビットプロセッサ上でのシングルタスクと 64キロバイト以下のメモリに制限されていましたが、後のバージョンの CP/M ではマルチユーザーバリエーションが追加され、 16 ビットプロセッサに移行されました。
CP/Mの中核コンポーネントは、基本入出力システム(BIOS)、基本ディスクオペレーティングシステム(BDOS)、およびコンソールコマンドプロセッサ(CCP)です。BIOSは、デバイスとシステムハードウェアを処理するドライバで構成されています。BDOSはファイルシステムを実装し、アプリケーションにシステムサービスを提供します。CCPはコマンドラインインタープリタであり、いくつかの組み込みコマンドを提供します。
CP/Mは最終的に、S-100バスコンピュータと組み合わせて、マイクロコンピュータの事実上の標準および主要なオペレーティングシステムになりました。 [ 9 ]このコンピュータプラットフォームは、1970年代後半から1980年代半ばにかけてビジネスで広く使用されました。[ 10 ] CP/Mは、アプリケーションを新しいメーカーのコンピュータに移植するために必要なプログラミングの量を大幅に削減したため、ハードウェアとソフトウェアの両方の市場規模を拡大しました。[ 11 ] [ 12 ]ソフトウェア革新の重要な推進力となったのは、CP/Mで動作する(比較的)安価なマイクロコンピュータの出現であり、独立したプログラマやハッカーがそれらを購入し、ユーザーグループで作品を共有しました。[ 13 ] 1981年にIBM PCが登場すると、 CP/Mの人気は最終的にDOSに取って代わられました。

ゲイリー・キルドールは1974年にCP/Mを開発した。[ 5 ] [ 6 ]インテルIntellec-8開発システム上で動作するオペレーティングシステムとして開発された。このシステムには、カスタムフロッピーディスクコントローラを介してインタフェースされたシュガート・アソシエイツの8インチフロッピーディスクドライブが搭載されていた。[ 14 ]これはキルドール独自のPL/M(マイクロコンピュータ用プログラミング言語)で書かれていた。[ 15 ] CP/Mの様々な側面は、キルドールが開発環境として使用していたDECsystem-10メインフレームコンピュータのTOPS-10オペレーティングシステムの影響を受けていた。[ 16 ] [ 17 ] [ 18 ]
CP/Mは、 8080およびZ80 CPUをベースにした幅広いコンピュータをサポートしました。[ 19 ] CP/Mの初期の外部ライセンシーには、カリフォルニア州サンディエゴの初期のマイクロコンピュータ開発会社であるGnat Computersがありました。1977年、同社は90ドルで、希望するあらゆるマイクロコンピュータにCP/M 1.0を使用するライセンスを取得しました。その年のうちにCP/Mの需要は非常に高まり、Digital Researchはライセンス価格を数万ドルにまで引き上げることができました。[ 20 ]
キルドールの指揮の下、1978年のCP/M 2.0の開発は主にジョン・ピアースによって進められた。海軍大学院(NPS)時代のキルドールの友人であるキャサリン・ストルティンスキーは、1979年初頭にデジタル・リサーチ社の4人目の社員となった。彼女はCP/M 2.0のデバッグから始め、後にCP/M 2.2およびCP/M Plusの主要開発者として影響力を持つようになった。CP/Mベースの初期の開発者には、ロバート・「ボブ」・シルバースタインとデビッド・「デイブ」・K・ブラウンもいた。[ 21 ] [ 22 ]
CP/Mはもともと「Control Program/Monitor」の略称で、[ 3 ]オペレーティングシステムの原始的な前身である常駐モニタを暗示する名称であった。しかし、CP/Mを商用製品に変換する過程で、1977年11月に提出された商標登録書類では製品名が「Control Program for Microcomputers」とされた。[ 6 ] CP/Mという名称は、キルドールのPL/M言語やプライムコンピュータのPL/P ( Programming Language for Prime )など、当時の一般的な命名規則に従っており、どちらもIBMのPL/Iや、キルドールがNPSで働いていたときに使用していたIBMのCP/CMSオペレーティングシステムを連想させる。このCP/Mの改名は、キルドールとその妻、そしてビジネスパートナーのドロシー・マクイーエン[ 4 ]が、キルドールの個人プロジェクトであったCP/Mとインテルと契約したPL/Mコンパイラを商用事業へと転換しようとした、より大きな取り組みの一環であった。キルドール兄弟は、デジタル・リサーチのブランドとその製品ラインを、消費者の心の中で「マイクロコンピュータ」と同義語にすることを意図していました。これは、後にIBMとマイクロソフトが共同で「パーソナルコンピュータ」を自社製品と同義語にすることに成功したのと同様です。インターギャラクティック・デジタル・リサーチ社は、後に社名変更申請によりデジタル・リサーチ社に改名されました。[ 4 ]
1981年9月までに、デジタルリサーチはCP/Mライセンスは25万件。InfoWorld誌は、サブライセンスの影響で実際の市場規模はこれよりさらに大きいと指摘した。多くの企業が様々な市場向けにCP/Mベースのコンピュータを製造しており、同誌は「CP/Mは小型コンピュータ向けオペレーティングシステムとしての地位を確立しつつある」と述べている。 [ 23 ] Heath /Zenith ( HDOS )などの独自オペレーティングシステムを持つ企業でさえ、8080/Z80ベースのシステムの代替としてCP/Mを提供していた。対照的に、同じく人気のあった6502 CPUを搭載したコンピュータには、同等の標準は存在しなかった。[ 19 ]彼らがCP/Mを支持したのは、そのソフトウェアライブラリが充実していたためである。Xerox 820でこのオペレーティングシステムが採用されたのは、「文字通り何千ものプログラムが書かれている以上、それを利用しないのは賢明ではない」とXerox社は述べている。[ 24 ](ゼロックス社は、デジタル・リサーチ社のドキュメントの代償としてハワード・W・サムズ氏によるCP/M のマニュアルを同梱していたが、インフォワールド誌は、そのドキュメントをひどいもの、[ 25 ]不完全で、理解しにくく、索引も貧弱だと評した。[ 26 ]その評判を知っていたデジタル・リサーチ社のゴードン・ユーバンクス氏は、1982年に自社のドキュメントを改善すると約束した。[ 27 ])1984年までに、コロンビア大学は同じソースコードを使用して、12種類以上の異なるCP/Mシステムと2つの汎用バージョン用のカーミットバイナリをビルドした。 [ 28 ]このオペレーティングシステムは「ソフトウェアバス」と表現され、[ 29 ] [ 30 ]複数のプログラムが標準化された方法で異なるハードウェアと対話することを可能にした。[ 31 ] CP/M 用に書かれたプログラムは、通常、異なるマシン間で移植可能で、通常は画面とプリンターの制御用のエスケープシーケンスの指定のみを必要とした。この移植性によりCP/Mは人気を博し、特定のハードウェアブランドのみで動作するオペレーティングシステムよりも多くのソフトウェアがCP/M向けに書かれました。移植性に関する制約の一つは、一部のプログラムがZ80の拡張命令セットを使用していたことです。8080や8085プロセッサでは動作しませんでした。また、特にゲームやグラフィックプログラムにおけるグラフィックスルーチンは、OSやBIOSを介さずにハードウェアに直接アクセスして速度を向上させるため、一般的に機種依存でした(これは初期のDOSマシンでもよく見られた問題でした)。
ビル・ゲイツは、 Z-80 ソフトカードを搭載したApple II が最も人気のある CP/M ハードウェアプラットフォームであると主張しました。 [ 32 ]デジタルリサーチ社は 1982 年に、このオペレーティングシステムが 450 種類以上のコンピュータシステムにライセンス供与されていると述べています。[ 33 ]多くの異なるブランドのマシンがオペレーティングシステムを実行しましたが、有名なものとしてはAltair 8800、IMSAI 8080、Osborne 1および Kaypro のラガブル、MSXコンピュータがあります。史上最も売れた CP/M 対応システムは、おそらくAmstrad PCWでしょう。英国では、 CP/M はResearch Machinesの教育用コンピュータ (CP/M のソースコードは教育リソースとして公開されていました) や、Z80 コプロセッサを搭載したBBC Microでも利用できました。さらに、 Amstrad CPCシリーズ、Commodore 128、TRS-80、およびZX Spectrumのそれ以降のモデルでも使用できました。CP/M 3 は、 AC Nielsenの社内使用向けに設計された 1 MBのSSDメモリ を搭載したカスタム ハンドヘルド コンピュータである NIAT でも使用されました。
1979年、CP/Mのマルチユーザー対応派生版がリリースされました。MP /Mでは、複数のユーザーが1台のコンピュータに接続し、複数の端末を使用して各ユーザーに画面とキーボードを提供することができました。後のバージョンは16ビットプロセッサで動作しました。

CP/M の最後の 8 ビット版はバージョン 3 で、CP/M Plus とも呼ばれ、1983 年にリリースされました。[ 21 ]その BDOS は David K. Brown が設計しました。[ 21 ]これは、CP/M 2.2 アプリケーションと互換性のあるシングルユーザー、シングルタスクのオペレーティングシステムに MP/M のバンクスイッチングメモリ管理を組み込みました。そのため、CP/M 3 は、8080 または Z80 プロセッサ上で 64 KB を超えるメモリを使用できました。システムは、ファイルの日付スタンプをサポートするように構成できました。[ 21 ]オペレーティングシステムの配布ソフトウェアには、再配置アセンブラとリンカーも含まれていました。[ 2 ] CP/M 3 は、Amstrad PCW、 Amstrad CPC、ZX Spectrum +3、Commodore 128、MSXマシン、Radio Shack TRS-80 Model 4などの最終世代の 8 ビットコンピュータで使用できました。[ 34 ]

一部の16 ビットCPU用の CP/M バージョンもありました。
16ビットファミリーの最初のバージョンは、1981年11月にIntel 8086用にリリースされたCP/M-86でした。 [ 35 ] Kathryn Strutynskiは、進化を続けるCP/M-86オペレーティングシステムシリーズのプロジェクトマネージャーでした。[ 21 ] [ 22 ]この時点で、元の8ビットCP/Mは、混乱を避けるためにCP/M-80というレトロニムで知られるようになりました。[ 35 ]
CP/M-86は新しいIBM PCの標準オペレーティングシステムになると期待されていたが、DRIとIBMは開発およびライセンス条件の交渉に失敗した。IBMは代わりにマイクロソフトに目を向け、マイクロソフトは86-DOSをベースにしたPC DOSを開発した。DRIが訴訟を示唆した後、CP/M-86はIBM PCのオプションとなったが、マイクロソフトのシステムを追い抜くことはなかった。IBMがCP/M-86にPC DOSよりも大幅に高い価格(それぞれ240ドルと40ドル)を課したことで、ほとんどの顧客は反発した。[ 36 ]
デジタル・イクイップメント・コーポレーション(DEC)がIBMに対抗するためRainbow 100を発売したとき、Z80チップを使用したCP/M-80、8088マイクロプロセッサを使用したCP/M-86またはMS-DOS、またはその両方を使用したCP/M-86/80が付属していた。Z80と8088のCPUは同時に動作した。[ 37 ] [ 38 ] Rainbowの利点は、8ビットのCP/Mソフトウェアを引き続き実行できるため、ユーザーが16ビットのMS-DOSの世界に移行しても、かなりの投資が無駄にならないことだった。[ 37 ] CompuPro System 816用の同様のデュアルプロセッサ版はCP/M 8-16と名付けられた。8085/8088ベースのZenith Z-100用のCP/M-86版も、両方のCPUでプログラムを実行することをサポートした。
CP/M-86のすぐ後に、モトローラ68000用のCP/Mの16ビット版であるCP/M-68Kが登場した。1982年のCP/M-68Kのオリジナル版はPascal/MT+68kで書かれていたが、後にC言語に移植された。モトローラEXORmacsシステムで既に動作していたCP/M-68Kは、当初Atari STコンピュータで使用される予定だったが、AtariはGEMDOSと呼ばれる新しいディスクオペレーティングシステムの採用を決定した。CP/M-68KはSORD M68およびM68MXコンピュータでも使用された。[ 39 ]
1982年には、オリベッティM20向けにCP/M-68Kから16ビットのZilog Z8000への移植版もC言語で書かれ、CP/M-8000と呼ばれた。[ 40 ] [ 41 ]
CP/Mのこれらの16ビット版では、アプリケーションプログラムを新しいCPU用に再コンパイルする必要があった。アセンブリ言語で書かれたプログラムの中には、新しいプロセッサ用に自動的に変換できるものもあった。そのためのツールの一つが、Digital ResearchのXLT86で、これはIntel 8080プロセッサ用の.ASMソースコードをIntel 8086用の.A86ソースコードに変換するものだった。このトランスレータは出力のコードサイズを最適化し、呼び出し規約も考慮するため、CP/M-80およびMP/M-80のプログラムはCP/M-86およびMP/M-86プラットフォームに自動的に移植できる。XLT86自体はPL/I-80で書かれており、CP/M-80プラットフォームだけでなくVAX/VMSでも利用可能だった。[ 42 ]
1980年代初頭までに、CP/Mアプリケーションは推定2000種類存在し[ 43 ] 、 HDOSのようなプロプライエタリオペレーティングシステムのアプリケーションをはるかに上回っていました[ 44 ]。多くの人がCP/Mが16ビットコンピュータの標準オペレーティングシステムになると予想していました[ 45 ]。 1980年、IBMはビル・ゲイツの提案により[ 46 ] 、デジタルリサーチ社に接触し、新製品であるIBMパーソナルコンピュータ向けにCP/Mの次期バージョンのライセンスを取得しました。一方的な秘密保持契約の締結に失敗したため交渉は失敗に終わり、IBMは代わりにマイクロソフト社と契約してオペレーティングシステムを提供しました[ 47 ] 。
初期の MS-DOS の基本概念やメカニズムの多くは CP/M のものと類似しています。ファイル処理データ構造などの内部構造は同一で、どちらもディスクドライブを文字 ( A:、など) で参照します。MS-DOS の主な革新はFATB:ファイルシステムでした。この類似性により、 WordStarやdBaseなどの人気の CP/M ソフトウェアの移植が容易になりました。ただし、同一ディスク上のファイルに別々のユーザー領域を割り当てるという CP/M の概念は、MS-DOS には移植されませんでした。MS-DOS はより多くのメモリにアクセスできるため (64 KB 未満のメモリを搭載した IBM PC はほとんど販売されていませんでしたが、CP/M は必要に応じて 16 KB でも実行できます)、コマンドラインシェルに多くのコマンドが組み込まれており、MS-DOS はフロッピーディスクベースのコンピュータでいくぶん高速で使いやすくなっています。
IBM PC 用の最初の周辺機器の 1 つが Baby Blue カードであったが、これは SoftCard に似た拡張カードで、当時はまだ利用できなかった WordStar などの 8 ビット CP/M ソフトウェアを PC で実行できるようにしたものである。[ 43 ]また、BYTE誌は1982 年に MS-DOS と CP/M をダビデとゴリアテに例え、MS-DOS は「はるかにユーザーフレンドリーで、高速で、多くの利点があり、欠点は少ない」と述べている。[ 33 ] InfoWorld 誌は 1984 年に、CP/M を家庭市場に導入する取り組みはほとんど成功せず、ほとんどの CP/M ソフトウェアは家庭ユーザーには高価すぎると述べている。[ 48 ] 1986 年に同誌は、Kaypro 社が 8 ビット CP/M ベースのモデルの製造を中止し、MS-DOS 互換システムの販売に集中したと述べているが、これは他のほとんどのベンダーが CP/M 用の新しい機器やソフトウェアの製造を中止してからかなり後のことである。[ 49 ]マイクロコンピュータ市場がIBM互換プラットフォームに移行すると、CP/Mは急速に市場シェアを失い、かつての人気を取り戻すことはありませんでした。マイクロコンピュータ業界を代表する雑誌の一つであるByte誌は、IBM PCの発売から数年以内にCP/M製品の取り扱いを事実上中止しました。例えば、1983年にはS-100ボードの広告やCP/Mソフトウェアに関する記事がいくつか掲載されていましたが、1987年にはこれらの記事は掲載されなくなりました。
CP/M-86の後継バージョンでは、パフォーマンスと使いやすさが大幅に向上し、MS-DOSとの互換性も確保されました。この互換性を反映するため、名称が変更され、CP/M-86はDOS Plusとなり、さらにDR-DOSとなりました。
ZCPR [ 50 ](Z80コマンドプロセッサ代替)は、1982年2月2日に、標準的なDigital Researchコンソールコマンドプロセッサ(CCP)の代替として発表されました。当初は「CCPグループ」と名乗るコンピュータ愛好家のグループによって開発されました。メンバーは、フランク・ワンチョ、キース・ピーターセン(当時Simtelのアーキビスト)、ロン・ファウラー、チャーリー・ストロム、ボブ・マティアス、そしてリチャード・コンでした。実際、リチャードはこのグループの推進力となっていました(メンバー全員と連絡を取り合っていました)。
ZCPR1 は、ニュージャージー州のアマチュア コンピュータ クラブの一部である SIG/M (Special Interest Group/Microcomputers) が発行したディスクでリリースされました。
ZCPR2 は 1983 年 2 月 14 日にリリースされました。SIG/M から 10 枚のディスク セットとしてリリースされました。ZCPR2 は 2.3 にアップグレードされ、8080 コードでもリリースされ、8080 および 8085 システムで ZCPR2 を使用できるようになりました。
Conn と Frank Gaude は Echelon Inc. を設立し、ZCPR の次期バージョンを商用製品として公開しつつ、フリーソフトウェアとして配布することを継続した。[ 51 ] ZCPR3 [ 52 ]は 1984 年 7 月 14 日に SIG/M から 9 枚のディスクセットとしてリリースされた。ZCPR3 のコードは (機能は削減されたものの) 8080 用にコンパイルすることもでき、必須のZ80マイクロプロセッサを持たないシステムでも実行できた。バージョン 3 の時点での ZCPR の機能には、シェル、エイリアス、I/O リダイレクト、フロー制御、名前付きディレクトリ、検索パス、カスタム メニュー、パスワード、オンライン ヘルプが含まれていた。1987 年 1 月、Richard Conn は ZCPR の開発を中止し、Echelon は Jay Sage (既に個人的に強化した ZCPR 3.1 を所有していた) に開発の継続を依頼した。こうして ZCPR 3.3 が開発され、リリースされた。 ZCPR 3.3では8080シリーズマイクロプロセッサのサポートが終了し、ZCPRシリーズのアップグレードの中で最も多くの機能が追加されました。また、ZCPR 3.3には、大幅に拡張された機能を備えたユーティリティも豊富に含まれていました。当時のCP/Mユーザーから熱狂的な支持を得ていたものの、ZCPRだけではCP/Mの衰退を遅らせるには不十分でした。

.jpg/440px-Commodore_CP-M_cartridge_for_the_C64_(main).jpg)
最小限の 8 ビット CP/M システムには、次のコンポーネントが含まれます。
Digital Research社が販売したCP/Mがサポートしていた唯一のハードウェアシステムは、Intel 8080開発システムでした。CP/M互換システムのメーカーは、搭載メモリ、ディスクドライブ、コンソールデバイスの組み合わせに合わせてオペレーティングシステムの一部をカスタマイズしていました。Z80は8080コードと互換性があったため、CP/MはZilog Z80プロセッサベースのシステムでも動作しました。Digital Research社が配布したCP/Mコア(BDOS、CCP、コアトランジェントコマンド)はZ80固有の命令を一切使用していませんでしたが、多くのZ80ベースシステムはシステム固有のBIOSでZ80コードを使用しており、多くのアプリケーションはZ80ベースのCP/Mマシン専用でした。
その後、デジタル・リサーチ社はザイログ社およびアメリカン・マイクロシステムズ社と提携し、ディスクドライブを搭載しない低価格システム向けのROMベース版オペレーティングシステムであるパーソナルCP/Mを開発した。[ 55 ]シャープのMZ-800(オプションのディスクドライブ搭載カセットベースシステム)に初めて搭載された。 [ 56 ]パーソナルCP/Mは、8080との移植性を維持するのではなく、「拡張されたZ-80命令セットを活用するために書き直された」と説明されている。アメリカン・マイクロシステムズは、オペレーティングシステムとBIOS用の8KBのインパッケージROMと、64KBのダイナミックRAMデバイスとのインターフェースのための包括的なロジックを備えたZ80互換マイクロプロセッサS83を発表した。[ 57 ] S83の単価は、1,000個注文で32ドルと見積もられた。[ 58 ]
ほとんどのマシンでは、ブートストラップは、最小限のバンク切り替え手段またはバスにコードを挿入する手段と組み合わせたROM内の最小限のブートローダでした(8080 は起動時にアドレス 0 のブート コードを確認する必要があり、CP/M はそこに RAM を必要とするため)。他のマシンでは、システムが起動されるたびに、フロント パネルのコントロールを使用してこのブートストラップをメモリに入力する必要がありました。
CP/Mは7ビットのASCII文字セットを使用していました。8ビットバイトで可能になった残りの128文字は標準化されていませんでした。例えば、あるKaypro社はギリシャ文字に使用し、Osborne社のマシンは8番目のビットセットを下線付き文字を示すために使用しました。WordStarは8番目のビットを単語の終わりのマーカーとして使用しました。国際的なCP/Mシステムでは、ローカライズされた文字セットとしてISO 646規格が最も一般的に使用されており、特定のASCII文字を7ビット境界を超えて追加するのではなく、ローカライズされた文字に置き換えていました。
実行中、メモリにロードされるCP/Mオペレーティングシステムには、3つのコンポーネントがあります。[ 3 ] [ 59 ]:2 [ 60 ]:1 [ 61 ]:3、4~5 [ 62 ]:1-4~1-6
BIOSとBDOSはメモリ常駐ですが、CCPはアプリケーションによって上書きされない限りメモリ常駐です。上書きされた場合は、アプリケーションの実行終了後に自動的に再ロードされます。標準ユーティリティ用の一時コマンドも多数提供されています。これらの一時コマンドは、ディスク上の拡張子が.COMのファイルに保存されます。
BIOSは、CPUとメインメモリ以外のハードウェアコンポーネントを直接制御します。BIOSには、文字入出力やディスクセクタの読み書きなどの機能が含まれています。BDOSは、CP/Mファイルシステムと、リダイレクトなどの入出力抽象化をBIOS上に実装します。CCPはユーザーコマンドを受け取り、それを直接実行するか(ディレクトリを表示するDIRやファイルを削除するERAなどの内部コマンド)、指定された名前の実行可能ファイルをロードして起動します(ファイルをコピーするPIP.COMや、さまざまなファイルおよびシステム情報を表示するSTAT.COMなどの一時コマンド)。CP/M用のサードパーティ製アプリケーションも、基本的には一時コマンドです。
BDOS、CCP、および標準の一時コマンドは、CP/M の特定のリビジョンのすべてのインストールで同じですが、BIOS 部分は常に特定のハードウェアに合わせて調整されます。
たとえば、コンピュータにメモリを追加するということは、一時的なプログラムが追加のメモリ空間を使用できるように、CP/M システムを再インストールする必要があることを意味します。システム配布には、オブジェクト コードを別のメモリ領域に再配置できるユーティリティ プログラム (MOVCPM) が付属しています。ユーティリティ プログラムは、絶対ジャンプおよびサブルーチン呼び出し命令のアドレスを、プロセッサ メモリ内のオペレーティング システムの新しい場所で必要な新しいアドレスに調整します。この新しくパッチを適用したバージョンは新しいディスクに保存できるため、アプリケーション プログラムは、システム コンポーネントの移動によって使用可能になった追加メモリにアクセスできるようになります。インストールされると、オペレーティング システム (BIOS、BDOS、および CCP) は、システムのブートに使用できるディスクの先頭の予約領域に保存されます。起動時に、ブートローダ (通常は ROM ファームウェア チップに含まれる) が、ドライブ のディスクからオペレーティング システムをロードしますA:。
CP/Mは、プログラムサイズが極端に制約されているため、現代の基準からすると原始的なものです。バージョン1.0では、ディスクの変更を検出する機能がありません。ユーザーがディスクディレクトリを手動で再読み込みせずにディスクを交換すると、システムは古いディスクのディレクトリ情報を使用して新しいディスクに書き込みを行い、ディスクに保存されているデータを破壊します。バージョン1.1または1.2以降では、ディスクを交換した後、ディレクトリが読み込まれる前に書き込みを試みると、致命的なエラーが発生します。これによりディスクの上書きは回避されますが、再起動が必要となり、ディスクに保存されているデータが失われます。
CP/Mの複雑さの大部分はBDOSに集約されており、CCPコマンドとトランジェントコマンドも多少は軽減されています。つまり、BIOS内の限られた数の単純なルーチンを特定のハードウェアプラットフォームに移植するだけで、OS全体が動作するということです。これにより、新しいマシンのサポートに必要な開発時間が大幅に短縮され、CP/Mが広く普及した主な理由の一つとなりました。今日では、このような抽象化(ハードウェア抽象化レイヤー)はほとんどのOSで一般的ですが、CP/Mが誕生した当時は、OSは通常、単一のマシンプラットフォームでのみ動作することを想定しており、多層設計は不要と考えられていました。

DIRCommodore 128 ホームコンピュータでコマンドを使用して CP/M 3.0 ディレクトリ リストを表示したスクリーンショットコンソール コマンド プロセッサ (CCP) は、キーボードからの入力を受け入れ、結果を端末に伝えます。 CP/M 自体は、印刷端末またはビデオ端末で動作します。すべての CP/M コマンドは、コマンド ラインに入力する必要があります。コンソールには、ほとんどの場合A>、現在のデフォルトのディスク ドライブを示すプロンプトが表示されます。ビデオ端末で使用する場合は、通常、この後に端末によって提供される点滅するカーソルが表示されます。 CCP は、ユーザーからの入力を待機します。ドライブ文字の後にコロンが続く形式の CCP 内部コマンドを使用して、デフォルトのドライブを選択できます。たとえば、B:コマンド プロンプトで と入力して Enter キーを押すと、デフォルトのドライブが B に変更され、コマンド プロンプトは になりB>、この変更が示されます。
CP/M のコマンドラインインターフェースは、 PDP-11用のRT-11やPDP-8用のOS/8など、Digital Equipment社のオペレーティングシステムで使用されているConcise Command Language ( CCL) をモデルにしています。コマンドは、キーワードと、それに続くスペースまたは特殊文字で区切られたパラメータのリストという形式をとります。 Unixシェルの組み込みコマンドと同様に、内部コマンドが認識された場合は CCP 自体によって実行されます。そうでない場合は、現在ログインしているディスクドライブおよび (後のバージョンでは) ユーザー領域で実行可能ファイルを見つけてロードし、コマンドラインから追加のパラメータを渡します。これらは「一時」プログラムと呼ばれます。完了時に、CCP がアプリケーションプログラムによって上書きされている場合は、BDOS によって CCP が再ロードされます。これにより、一時プログラムに大規模なメモリ空間が与えられます。
コマンド自体が分かりにくい場合もあります。例えば、ファイルを複製するコマンドPIPは(Peripheral-Interchange-Program)という名前で呼ばれていますが、これはその目的で使用されていた古いDECユーティリティの名前です。プログラムに渡すパラメータの形式は標準化されておらず、オプションとファイル名を区別する単一のオプション文字は存在しません。プログラムによって異なる文字が使用される場合があり、実際に使用されています。
CP/Mコンソールコマンドプロセッサには、組み込みコマンドとしてDIR、ERA、REN、SAVE、TYPE、USERが含まれています。[ 63 ] CP/Mの一時コマンドにはASM、DDT、DUMP、ED、LOAD、MOVCPM、PIP、STAT、SUBMIT、SYSGENが含まれています。[ 63 ]
CP/M Plus(CP/Mバージョン3)には、DIR(SYS属性が付けられたファイルを除くディレクトリのファイル一覧を表示)、DIRSYS / DIRS(ディレクトリ内のSYS属性が付けられたファイルを一覧表示)、ERASE / ERA(ファイルを削除)、RENAME / REN(ファイルの名前を変更)、TYPE / TYP(ASCII文字ファイルの内容を表示)、USER / USE(ユーザー番号を変更)が組み込みコマンドとして含まれています。[ 64 ] CP/M 3では、ユーザーが組み込みコマンドを省略することができます。[ 65 ] CP/M 3の一時コマンドには、COPYSYS、DATE、DEVICE、DUMP、ED、GET、HELP、HEXCOM、INITDIR、LINK、MAC、PIP、PUT、RMAC、SET、SETDEF、SHOW、SID、SUBMIT 、 XREFなどがあります。[ 65 ]
ベーシックディスクオペレーティングシステム(BDOS)[ 15 ] [ 14 ] [ 15 ] [ 14 ]は、ファイルのオープン、コンソールへの出力、印刷などの操作へのアクセスを提供します。アプリケーションプログラムは、操作の機能コードとパラメータまたはメモリバッファのアドレスをプロセッサレジスタにロードし、メモリ内の固定アドレスを呼び出します。アドレスはシステムのメモリ容量に関わらず一定であるため、アプリケーションプログラムはハードウェアの種類や構成に関係なく同じように動作します。

基本入出力システム(BIOS)[ 15 ] [ 14 ]は、オペレーティングシステムに必要な最低レベルの機能を提供します。
これらには、システムコンソールへの単一文字の読み書き、およびディスクからの単一セクタのデータの読み書きが含まれます。BDOSはディスケットからのデータのバッファリングの一部を処理しますが、CP/M 3.0より前では、ディスクセクタサイズは単密度8インチフロッピーディスクで使用される128バイトに固定されていました。ほとんどの5.25インチディスクフォーマットはより大きなセクタを使用するため、ブロッキングとデブロッキング、およびディスクバッファ領域の管理は、BIOS内のモデル固有のコードによって処理されます。
ハードウェアの選択は、特定の一般的な標準との互換性によって制約されないため、カスタマイズが必要となります。たとえば、組み込み統合ビデオ ディスプレイ システムを設計したメーカーもあれば、独立したコンピュータ ターミナルを使用するメーカーもあります。プリンタとモデムのシリアル ポートでは、異なる種類のUARTチップを使用でき、ポート アドレスは固定ではありません。マシンによっては、8080 I/O アドレス空間ではなく、メモリ マップド I/O を使用するものもあります。ハードウェアのこれらのバリエーションはすべて、BIOS によってシステムの他のモジュールから隠蔽されます。BIOS は、文字 I/O やディスク ブロックへのアクセスなど、CP/M の実行に必要なサービスに標準のエントリ ポイントを使用します。モデムへのシリアル通信のサポートは BIOS では非常に基本的なものであるか、まったくサポートされていない場合があるため、モデムを使用する CP/M プログラムでは、特定のマシンのシリアル ポートにアクセスするために必要なすべてのコードを含む、ユーザーがインストールするオーバーレイを使用するのが一般的です。

広く使われた初期のワードプロセッサの 1 つである WordStarと、マイクロコンピュータ用の初期の人気データベース プログラムであるdBase は、もともと CP/M 用に書かれました。初期のアウトライナー2 つ、KAMAS (Knowledge and Mind Amplification System) とその縮小版である Out-Think (プログラミング機能がなく、8080/V20 互換性のために作り直されたもの) も CP/M 用に書かれましたが、後に MS-DOS 用に書き直されました。Borland Delphiの祖先であるTurbo PascalとMicrosoft Excelの祖先であるMultiplanも、MS-DOS 版が登場する前に CP/M でデビューしました。史上初のスプレッドシート プログラムであるVisiCalc は、CP/M で使用できるようになりました。別の会社であるSorcim は、 CP/M 用にSuperCalcスプレッドシートを作成しました。これは後に CP/M のマーケット リーダーとなり、事実上の標準になりました。Supercalc は、MS-DOS の世界のスプレッドシート市場で競合するようになりました。オートデスクのCADアプリケーションであるAutoCADはCP/Mでデビューしました。当時人気のプログラミング言語( BASIC、ボーランドのTurbo Pascal、FORTRAN、さらにはPL/I [ 66 ]など)用のコンパイラとインタープリタが多数提供されており、その中には初期のマイクロソフト製品もいくつか含まれていました。
CP/Mソフトウェアには、様々なコンピュータに適応させるためのインストーラが付属していることが多い。 [ 67 ] 例えば、Kaypro IIの所有者は、Xerox 820フォーマットのソフトウェアを入手し、それをKayproフォーマットのディスクにコピーして実行する。[ 68 ] BASICプログラムのソースコードは簡単にアクセスでき、ほとんどのコピープロテクトはオペレーティングシステムでは効果がない。[ 69 ]現代のオペレーティングシステムのコピープロテクトされたプログラムは、他のソフトウェアが読み取れない非標準のディスクフォーマットを使用することが多いが、CP/Mユーザーはファイルのソフトウェア間の互換性を期待しており、読み取れないディスクは定義上CP/Mフォーマットではない。[ 70 ]
標準化されたグラフィックスのサポートが不足していたため、ビデオゲームは限られたものしか提供されませんでしたが、 Telengard、[ 71 ] Gorillas、[ 72 ] Hamurabi、Lunar Landerなどの様々なキャラクターベースおよびテキストベースのゲームが移植されました。また、 ZorkシリーズやColossal Cave Adventureなどの初期のインタラクティブフィクションも移植されました。テキストアドベンチャー専門のInfocomは、CP/M形式でゲームを継続的にリリースしている数少ない出版社の1つでした。Lifeboat Associatesは、ユーザーが作成した「フリー」ソフトウェアの収集と配布を開始しました。その最初の1つがXMODEMで、モデムと電話回線を介して信頼性の高いファイル転送を可能にしました。CP/Mネイティブの別のプログラムには、アウトラインプロセッサKAMASがありました。
8080、8085、Z80 用の CP/M のオリジナルバージョンでは、16 進数でアドレス 0100 と、0006H に格納されているアドレスの直前の位置 (BDOS の最下位アドレス) の間の読み取り/書き込みメモリが、CP/M アプリケーションプログラムで使用できる一時プログラム領域(TPA) です。 [ 59 ] : 2, 233 すべての Z80 および 8080 プロセッサは 64 キロバイトのメモリをアドレス指定できましたが、アプリケーションプログラムに使用できる量は、特定のコンピュータの設計によって変わる可能性があります。一部のコンピュータでは、アドレス空間の大部分を BIOS ROM やビデオディスプレイメモリなどに使用していました。その結果、一部のシステムは他のシステムよりも多くの TPA メモリを使用できました。バンク切り替えは、必要に応じて ROM またはビデオメモリ空間を切り替えながらシステムが大きな TPA を持つことを可能にした一般的な手法でした。CP/M 3.0 では、BDOS の一部をバンク切り替えメモリに配置できるようになりました。
CP/MにはDDT(殺虫剤、つまりバグキラーにちなんで)というニックネームの動的デバッグツールが付属しており、メモリとプログラムモジュールを検査および操作し、プログラムを1ステップずつ実行できるようになりました。[ 73 ] [ 74 ] [ 75 ]
CP/Mは当初、DOSのような終了して常駐する(TSR)プログラムをサポートしていませんでした。プログラマーは特定のオペレーティングシステムコールを傍受し、その機能を拡張または変更できるソフトウェアを書くことができました。この機能を利用して、プログラマーは任意のバイト文字列を任意のキーに割り当てるキーボードユーティリティであるSmartKeyなどの補助的なデスクアクセサリプログラムを開発し、販売しました。 [ 76 ] しかし、CP/M 3では、動的にロード可能な常駐システム拡張(RSX)のサポートが追加されました。[ 64 ] [ 21 ]いわゆるヌルコマンドファイルを使用することで、CCPは一時プログラムなしでRSXをロードできました。[ 64 ] [ 21 ] RSM(常駐システムモジュール)などの同様のソリューションも、サードパーティによってCP/M 2.2システムに後付けされました。[ 77 ] [ 78 ] [ 79 ]
CP/M は、ディスク I/O やコンソール I/O へのインタフェースを標準化するためにハードウェアの抽象化をいくらか提供していますが、プリンタや端末などの機器のすべての機能を使用するには、アプリケーション プログラムのインストールが依然として必要です。これらの機能は、デバイスごとに変更する必要があるエスケープ シーケンスによって制御されることがよくあります。たとえば、プリンタで太字を選択するためのエスケープ シーケンスは、製造元によって異なり、場合によっては製造元の製品ライン内でもモデルごとに異なります。この手順はオペレーティング システムでは定義されていません。ユーザーは通常、インストール プログラムを実行して、さまざまなデバイスから選択するか、機能にアクセスするために必要なエスケープ シーケンスを機能ごとに編集できるようにします。これらのデバイスに対しては、オペレーティング システムから中央のサービスが提供されていないため、アプリケーション プログラムごとにこの操作を繰り返す必要があります。
各プリンタモデルの初期化コードをアプリケーションに書き込む必要があります。Wordstarのようなプログラムを複数のプリンタ(例えば、高速のドットマトリックスプリンタや、低速だがプレゼンテーション品質のデイジーホイールプリンタなど)で使用するには、Wordstarの別バージョンを用意し、ユーザーは選択したプリンタに対応するバージョンのWordstarをロードする必要があります(プリンタを変更するには、アプリケーションを終了して再ロードする必要があります)。
特定のコンピュータや端末に対応していると記載されているインストールソフトウェアは、必ずしもそのすべての機能に対応しているわけではありません。1983年にHeath/Zenithコンピュータ用のスプレッドシート8種類を評価した際、Sextantのレビュー担当者は、端末のキーボードを完全に使いこなすにはほとんどのソフトでカスタマイズが必要だと指摘しました。彼は「なぜほとんどのメーカーがH19に36個のキーしかなく、巨大なCtrlキーしかないと考えているのか理解できない」と疑問を呈しました。[ 80 ]
IBM System/34とIBM 3740の128バイト/セクター、単密度、片面フォーマットは、CP/Mの標準8インチフロッピーディスクフォーマットです。5.25インチCP/Mディスクの標準フォーマットは存在せず、Kaypro、Morrow Designs、Osborneなどがそれぞれ独自のフォーマットを使用しています。[ 81 ] [ 82 ] [ 25 ] [ 83 ] [ 70 ]フォーマットによっては、他のフォーマットよりも人気がありました。ほとんどのソフトウェアはXerox 820フォーマットで提供されており、Kaypro IIなどの他のコンピュータもこのフォーマットと互換性がありました。[ 68 ] [ 84 ]対照的に、Heathのオーナーは1983年に、Heathの5.25インチディスクでソフトウェアを提供しているベンダーはほとんどなく、「提供しているベンダーも断続的に提供している」と不満を述べています。[ 85 ]
InfoWorldは1981年9月に、「約24のフォーマットが普及しており、ソフトウェア開発者は可能な限り広い市場にリーチするためにそれらを考慮する必要があった」と推定した。[ 23 ] 例えばJRT Pascalは、 North Star、Osborne、Apple、Heath/Zenithハードセクターおよびソフトセクター、Superbrain向けに5.25インチディスク版を提供し、さらに8インチ版も1つ提供した。[ 86 ] Ellis ComputingもHeathの両フォーマットと、2つの異なるTRS-80 CP/M改造版を含む16の他の5.25インチフォーマット向けにソフトウェアを提供した。[ 87 ] Lifetreeなどのソフトウェア配布業者もCP/Mアプリケーションを様々なシステム向けに変換した。[ 88 ]
様々なフォーマットが、個々のシステムの特性や、ある程度は設計者の選択に応じて使用されました。CP/Mは、ディスク上の予約領域とディレクトリ領域のサイズ、および論理ディスクセクター(CP/Mプログラムが認識する)とディスク上に割り当てられた物理セクター間のマッピングを制御するオプションをサポートしています。これらのパラメータをシステムごとにカスタマイズする方法は多数ありますが[ 89 ]、一度設定すると、別のシステムでフォーマットされたディスクからパラメータを読み込むための標準的な方法は存在しません。
8インチドライブを搭載したほぼすべてのCP/Mシステムは、前述のIBM片面単密度フォーマットを読み取ることができますが、他のフォーマットについては、CP/M時代には8インチと5.25インチの両方のサイズで多くの異なるタイプのフロッピーが存在していたため、異なるCP/Mマシン間の移植性の程度は、使用されるディスクドライブとコントローラのタイプに依存しました。[ 82 ]ディスクは、ハードセクターまたはソフトセクター、単密度または倍密度、片面または両面、35トラック、40トラック、77トラック、または80トラックにすることができ、セクターレイアウト、サイズ、インターリーブも大きく異なります。変換プログラムを使用すると、ユーザーは異なるマシンからディスクタイプを読み取ることができますが、ドライブタイプとコントローラも要因となります。 1982年までに、片面40トラックのソフトセクター5.25インチディスクは、Apple II、TRS-80、Osborne 1、Kaypro II、IBM PCといった当時の最も一般的なコンシューマー向けマシンで使用されていたため、CP/Mソフトウェアを配布するための最も一般的なフォーマットとなりました。変換プログラムを使用することで、ユーザーは同様のフォーマットのディスクを自分のマシンで読み取ることができます。例えば、Kaypro IIはTRS-80、Osborne、IBM PC、Epsonのディスクを読み取ることができます。80トラックやハードセクターなどの他のディスクタイプは、全く読み取ることができません。両面ディスク(Epson QX-10 など)の前半部分は、CP/M がディスク トラックに順番にアクセスし、トラック 0 がサイド 1 の最初の(最も外側の)トラック、トラック 79(40 トラックのディスクの場合)がサイド 2 の最後の(最も内側の)トラックとなるため、読み取ることができます。Apple II ユーザーは Apple の GCR 形式以外を使用できないため、Apple 形式のディスクで CP/M ソフトウェアを入手するか、シリアル リンク経由で転送する必要があります。
CP/M 市場が断片化しており、 IBM PC のディスク形式がより標準化されていたため、販売業者は複数の形式のディスクを在庫するか、マルチ形式複製装置に投資する必要がありました。これが、1981 年以降 CP/M が急速に廃れていく一因となりました。
CP/M対応マシンとして最後に登場した注目すべきマシンの一つは、1985年に登場したコモドール128です。このマシンは、6502派生CPUを使用したネイティブモードに加え、CP/MをサポートするZ80を搭載していました。CP/Mを使用するには、ソフトセクター40トラックMFMフォーマットディスクを読み取れる1571または1581ディスクドライブが必要でした。
3.5インチフロッピードライブを採用した最初のコンピュータはソニーのSMC-70 [ 90 ]で、CP/M 2.2 で動作していた。コモドール 128、Bondwell-2ラップトップ、Micromint/Ciarcia SB-180 [ 91 ] MSX、TRS-80 Model 4 (Montezuma CP/M 2.2 で動作) も 3.5 インチフロッピーディスクで CP/M の使用をサポートしていた。CP/AM ( Applied Engineeringの Apple II 用 CP/M バージョン) も 3.5 インチディスク (および Apple II メモリ拡張カードと互換性のある RAM カード上の RAM ディスク) をサポートしていた。[ 92 ] Amstrad PCW は当初 3 インチフロッピードライブで CP/M を動作させていたが、後に 3.5 インチドライブに切り替えた。
ファイル名は、最大8文字の文字列、ピリオド、そして最大3文字のファイル名拡張子(「8.3」ファイル名形式)で指定されます。拡張子は通常、ファイルの種類を識別します。例えば、.COMは実行可能プログラムファイル、 はASCII.TXTテキストを含むファイルを示します。コマンドプロンプトで入力されたファイル名の文字は大文字に変換されますが、これはオペレーティングシステムによって強制されませんでした。プログラム(MBASICがその顕著な例です)は小文字を含むファイル名を作成できましたが、コマンドラインで簡単に参照できませんでした。
各ディスクドライブはドライブ文字で識別されます(例:ドライブAと ドライブB)。特定のドライブ上のファイルを参照するには、ファイル名の前にドライブ文字をコロンで区切って付けます(例:A:FILE.TXT)。ドライブ文字が付いていない場合、現在のデフォルトドライブ上のファイルにアクセスします。[ 93 ]
ファイルサイズは、ディスク上のファイルが占める128 バイトのレコード数 (8 インチ ドライブのディスク セクターに直接対応) として指定されました。バイト単位でのファイル サイズを正確に指定する方法は一般にサポートされていませんでした。ファイルの現在のサイズは、オペレーティング システムによってファイルのファイル制御ブロック(FCB) に保持されていました。多くのアプリケーション プログラム (テキスト エディタなど) は、ファイルをレコードのシーケンスではなく文字のシーケンスとして扱うことを好むため、慣例によりテキスト ファイルは制御Z文字 (ASCII SUB、16 進数1A) で終了していました。したがって、テキスト ファイルの末尾を判別するには、ファイルの最後のレコードを調べて終了の制御 Z を見つける必要がありました。これはまた、ファイルの途中に制御 Z 文字を挿入すると、通常はファイルのテキスト内容が切り捨てられることを意味していました。
大容量のリムーバブルディスクドライブや固定ディスクドライブの登場に伴い、ディスクのデブロッキング方式が採用され、論理ファイルアロケーションブロックあたりのディスクブロック数が増加しました。これによりファイルサイズは拡大しましたが、割り当てられる最小のファイルサイズは1KB (単密度ドライブ)から2KB(倍密度ドライブ)へと増加し、1バイトしか含まれないファイルでも最大32KBまで増加しました。そのため、ディスクに多数の小さなファイルが含まれている場合、ディスク領域の使用効率が低下しました。
ファイル変更タイムスタンプはCP/M 2.2までのリリースではサポートされていませんでしたが、MP/MおよびCP/M 3.0ではオプション機能でした。[ 21 ]
CP/M 2.2 のファイル構造にはサブディレクトリはありませんでしたが、ディスク上のファイルを整理するために 16 個の番号付きユーザー領域が用意されていました。ユーザーを変更するには、コマンドプロンプトで「User X」と入力するだけで済みます。X はユーザー番号です。セキュリティは存在せず、パーソナルコンピュータでは不要と考えられていました。ユーザー領域の概念は、シングルユーザー版の CP/M をマルチユーザー版の MP/M システムとある程度互換性を持たせるためのものでした。CP/M および派生オペレーティングシステムに共通するパッチは、現在設定されているユーザー領域とは独立して、ユーザーがアクセス可能なユーザー領域を 1 つ作成することでした。USER コマンドを使用すると、ユーザー領域を 0 から 15 までの任意の領域に変更できました。デフォルトはユーザー 0 でした。別のユーザー(例えば USER 1)に変更した場合、そのユーザー用にディスクに保存されたデータは USER 1 のみがアクセスでき、USER 2 はそれを見ることもアクセスすることもできません。ただし、USER 0 領域に保存されたファイルは他のすべてのユーザーがアクセス可能でした。USER 0のファイルはUSER 0としてログインしたユーザーのみに見えるため、それらの場所は前置パスで指定されていました。ユーザーエリア機能は、小型のフロッピーディスクではあまり役に立たなかったかもしれませんが、ハードドライブを搭載したマシンでファイルを整理するのには便利でした。この機能の目的は、同じコンピュータを異なる作業に使いやすくすることでした。例えば、秘書がデータ入力を行い、その後USERエリアを切り替えて別の従業員が同じマシンで請求書処理を行っても、ファイルが混在することはありません。

グラフィックス対応の S-100 システムはS-100 バスの商用化以降存在していたが、CP/M では 1982 年にGSX (Graphics System Extension) が登場するまで標準化されたグラフィックス サポートは提供されなかった。使用可能なメモリ量が少なかったため、8 ビットの CP/M オペレーティング システムではグラフィックスが一般的な機能になることはなかった。ほとんどのシステムでは、テキスト モードかカスタム文字セットを使用して、基本的なASCII アートチャートとダイアグラムを表示することしかできなかった。Kaypro シリーズの一部のコンピュータとTRS -80 Model 4には、ブロック グラフィックス文字をサポートするビデオ ハードウェアがあり、アセンブラ プログラマや BASIC プログラマは コマンドを使用してこれらにアクセスできた。Model 4 では、オプションの高解像度ボードを使用することで 640 x 240 ピクセルのグラフィックスを表示できた。 CHR$

いくつかの企業は、Digital Researchのソースコードに基づいてCP/Mの公式な機能拡張を行いました。一例として、 IMS Associates, Inc.製のIMSAI 8080コンピュータ用のIMDOSが挙げられます。これは有名なAltair 8800のクローンです。
その他のCP/M互換OSは独立して開発されており、Digital Researchのコードは使用されていませんでした。当時の例としては、以下のようなものがあります。
一部の CP/M 互換オペレーティング システムでは、基本機能が拡張され、元のオペレーティング システムをはるかに超えるものもありました (たとえば、マルチプロセッサ対応のTurboDOS )。
旧東側諸国には、SCP(シングル・ユーザー・コントロール・プログラム)、SCP/M、CP/A、[ 94 ] CP/J、CP/KC、CP/KSOB、CP/L、CP/Z、MICRODOS、BCU880、ZOAZ、OS/M、TOS/M、ZSDOS、M/OS、COS-PSA、DOS-PSA、CSOC、CSOS、CZ-CPM、DAC、HCなど、様々な名前で多くのCP/M-80派生プログラムが存在した。[ 95 ] [ 96 ]また、 SCP1700、CP/K、K8918-OSという名前のCP/M-86派生プログラムもあった。[ 96 ]これらは東ドイツのVEBロボトロン社などで製造された。[ 96 ] [ 95 ] [ 94 ]
Microsoft Windowsの動作の多くはMS-DOS との下位互換性を保つためのものであり、 MS-DOS も CP/M との下位互換性を維持しようと試みました。MS-DOS (および初期の Windows) のドライブ文字と8.3 ファイル名規則は、もともと CP/M から採用されたものです。 [ 97 ] Windows で使用されるワイルドカード一致文字 (? および *) は CP/M の文字に基づいています。[ 98 ]出力をプリンター("PRN:") やコンソール("CON:")にリダイレクトするために予約されているファイル名も同様です。ドライブ名 A と B は、CP/M システムで一般的に使用されていた 2 つのフロッピー ディスク ドライブを示すために使用されました。ハード ドライブが登場すると、それらは C と指定され、これはコマンド プロンプトとして MS-DOS にも引き継がれました。[ 99 ]一部のテキスト ファイルの末尾を示す制御文字も CP/M に由来します。[ 100 ] DOS のさまざまなコマンドは CP/M コマンドをモデルにしています。中には、DIR、REN/RENAME、TYPE(DR-DOSではERA/ERASEも)など、同じ名前を持つものもありました。やのようなファイル拡張子は、多くのオペレーティングシステムでファイルの種類を識別するために今でも使用されています。 C:\>^Z.TXT.COM
1997年と1998年に、Calderaは、オープンソースライセンスの下でCP/M 2.2のバイナリとソースコードをリリースし、1997年以来ティム・オルムステッドの「非公式CP/M Webサイト」を通じてCP/MとMP/Mファミリーに関連してさらに収集されたDigital Researchファイルの再配布と改変も許可した。[ 101 ] [ 102 ] [ 103 ] 2001年9月12日のオルムステッドの死後、[ 104 ]配布ライセンスは、2001年10月19日に、その間にそれらのDigital Research資産の所有者となったLineoによって更新され、拡張された。 [ 105 ] [ 106 ] [ 1 ] [ 107 ] 2014年10月、CP/Mの最初の発表から40周年を記念して、コンピュータ歴史博物館はCP/Mの初期のソースコードバージョンをリリースした。[ 108 ]
2018 年現在、 CP/M (主に 2.2) をホスト オペレーティング システムとして使用するコンピュータ プラットフォームの開発とサポートを現在も行っている、ビンテージ、趣味、レトロ コンピュータに携わるアクティブな個人やグループ、およびいくつかの小規模な商業企業が存在します。