2025/09/02 18:39 A gentle introduction to CP/M

ロボ子、今日はCP/Mについて学ぶのじゃ!

CP/Mですか? 1970年代後半から80年代初頭にかけて普及したオペレーティングシステムですね。今更なぜそれを?

ふむ、CP/Mを学ぶ理由は二つあるぞ。歴史的な教育と、コンピュータの動作原理の理解じゃ!

なるほど。それで、どうやってCP/Mを体験するんですか?

エミュレータを使うのじゃ! Udo Munkのz80packがおすすめじゃな。Ravenports経由で簡単にインストールできるぞ。

`/raven/sbin/rvn install z80pack~s` ですね。インストール後、PATH環境変数に`/raven/bin`を追加する必要がある、と。

その通り! そして `cpm22` コマンドでCP/Mが起動するぞ。プロンプトは `A>` じゃ。

`A>` はコマンド入力を受け付ける状態を示すんですね。CCP (Console Command Processor) がユーザーとのインタラクションを処理する、と。

よく分かっておるな、ロボ子! 基本的なコマンドは `cls` で画面クリア、`bye` でエミュレータ終了じゃ。

`dir` でディレクトリの内容を表示、ですね。ファイル名は8.3形式で、大文字・小文字は区別しない、と。

そうじゃ! `COM` は実行可能なコマンド、`UTL` はユーティリティファイル、`HLP` はヘルプテキストじゃ。

コマンドにはTransient commandsとBuilt-in commandsがあるんですね。`CLS.COM` はTransient commandsで、`DIR` はBuilt-in commands、と。

`dump dump.com` でDUMPプログラムにdump.comファイルを処理させるのじゃ。`type` コマンドはファイル指定が必要じゃぞ。

`ren rename.tst=wm.hlp` で `WM.HLP` を `RENAME.TST` にリネームするんですね。コピー元とコピー先の順番が逆、と。

その通り! ワイルドカードも使えるぞ。`?` は任意の1文字、`*` は任意の文字列じゃ。

`dir *.com` でCOMファイルのみをリスト表示するんですね。ドライブの指定もできる、と。

`A>` はログオンディスクじゃ。`dir b:*.com` でドライブBのCOMファイルをリスト表示、`B:` でログオンディスクをBに変更できるぞ。

`stat a:` でドライブAの空き容量を表示、`stat` でアクセスしたドライブの概要を表示するんですね。

PIP (Peripheral Interchange Program) はファイルのコピーに使うぞ。`a:pip b:dump.com=a:dump.com` でドライブAからドライブBにDUMP.COMをコピーじゃ。

`ERA (ERAse)` はファイルの削除ですね。`era dump.com` で `DUMP.COM` を削除する、と。

コントロールキャラクターも重要じゃ。`^C` (CTRL-C) でウォームスタート、`^U` (CTRL-U) でコマンドラインを無効化じゃ。

`^X` (CTRL-X) でコマンドラインを消去、`^S` (CTRL-S) で画面表示を一時停止、`^Z` (CTRL-Z) で入力終了、`^E` (CTRL-E) でキャリッジリターンですね。

User areasはファイルを整理するための仕組みじゃが、デフォルトではuser area 0のみ使用するぞ。Command trailはコマンド名の後に続くファイル指定やパラメータのことじゃ。

DevicesはCP/Mが予約しているデバイス名ですね。CON (コンソール), PUN (ペーパーパンチ), LST (プリンタ) など。

最後に、BDOS (Basic Disk Operating System) はディスクとファイルシステムを管理するOSコンポーネントじゃ!

よくわかりました、博士! CP/Mは奥が深いですね。

ところでロボ子、CP/Mの時代には、まだインターネットがなかったから、エラーメッセージも手書きだったらしいぞ。…って、嘘じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
