やっつけな日常(56) AltairZ80シミュレータで懐かしのCP/M 2.2を動かす

Joseph Halfmoon

キツネのシッポ先生がPC98互換機について新連載を始められたので、この年寄も「レトロなパソコン」やりたくなりました。物置の奥底には数々のレトロな奴らが眠っています。しかしちょっと新しすぎなんだな。この年寄がやりたいのは1980年前後の8ビット機です。残念なことに遥か昔に手元から消えてます。どうする?

※「やっつけな日常」投稿順 Index はこちら

魅惑のレトロPC

レトロPCはノスタルジーに浸る魅惑の装置といってよいでしょう。無骨な筐体、とっても低い性能、粗い表示。その全てが過去の記憶を蘇らせるフレーバーです(なんじゃそれ。)ネット通販のお陰でそれらを再び入手しようとすればできないこともないのです。「しかしま、ハード買っちゃうと置き場に困るよ。捨てられないし。」

しかし現代のパソコンの性能はその時代のスパコンの性能を軽く凌駕しとります。現代のパソコンをもってすればレトロPCのエミュレーション(シミュレーション)など一撃とな。そして、エミュレータ開発に勤しむ先達の方々のお陰でちょっとクリクリやっていればすぐに目の前の画面ウインドウの中にレトロPCが復活すると。

ソフトウエア・エミュレータ?

年寄はエミュレータというと、ICE(イン・サーキット・エミュレータ)というハードウエアを思いだすのですが、既にICEの時代は過ぎにけり。いまやもっとお手軽なJTAGプローブ、デバッグプローブといったものに置き換わってます。

一方、パソコン上で動作するソフトウエア・エミュレータなるものは多数。ただし、その指向性は2極化しておるように見受けられます。

一方はソフトウエア・エンジニアリング指向の流れ、QEMUなどに代表されるエミュレータかと。他方はDOSBOXに代表されるようなゲーム指向の多くのエミュレータです。どちらも「精度」は高いのです。しかし「高さ」の方向が違うようです。ソフトウエア・エンジニアリング指向の場合、存在しないハード上のソフト動作を確認するだけでなくサイクル数とかボトルネックとか種々の解析に使ったりする目的の精度の高さでありましょう。一方ゲーム指向は、画像や音声のクオリティと操作のフィーリングがいかにレトロな実機に近いかという「精度」の高さかと思います。

どちらかというとゲーム指向の方が多数の人々が寄ってたかって?精力をつぎ込んでいるだけあって、マニアックに充実しているかも。例えばRaspberry Piシリーズは比較的非力なマシンですが、レトロPCやレトロゲーム機をエミュレートするための「専用ディストリビューション」まで存在します。インストールすればラズパイがレトロゲーム機になるっと。

Retropie

レトロパイ、まだインストールしておりませんが、上記からインストール可能なレトロなマシンのバラエティを拝見するに熱狂的です。勿論、国内でもPC98系、PC80系などで頑張られている方々多いようです。

さて今回導入を試みますシミュレータは以下のサイトからたどれるSimHというものの末です。

Computer Simulation and History

ゲーム指向の流れとは一線を画しつつ(ほんとか?)、QEMUのように最新CPUのエンジニアリング指向ではなく、あくまでレトロ機だと。コンピュータの歴史を愛する人のためのもののようです。知らんけど。

そして忘れていけないのは、その上で走らせるソフトウエアです。レトロ・ゲーム機などの場合、著作権的に「ちょっと怪しい」ものもチラホラしている感じですが、今回使用させていただく、かって一世を風靡したオペレーティング・システム CP/M に関しては大丈夫そうです。その辺が以下に。

Tim Olmstead Memorial Digital Research CP/M Library

今は亡きティム様が、CP/Mを開発販売していたDigital Research社の権利継承会社(DRIも既になく)と「交渉」してくださっていたお陰で、各種のソースコード、ドキュメントなどをホビイストが用途限定的に使用する分には大丈夫だあ~ということみたいっす。知らんけど。ともかく上記からたどれるリソースは莫大。

CP/M 2.2をWSL2上のUbuntu20.04LTSで動かす

さて、SimHをつかって CP/M を走らせようとした場合、Ubuntu系のLinuxではSimHそのものがレポジトリに入っているのが見つかります。aptでインストール可能。お楽ね。しかしよく見てみると。simhINFO

SimHそのものは、インテル8080を搭載した80系の標準機ともいえるAltairもエミュレートできる筈なのです。しかし上記をみるとそのリストの中にAltairは含まれておりません。なんと。これはソースを拾ってきて自前でビルドせにゃならんかの?

しかし、調べていたら「完璧」な以下のサイトが見つかりました。

https://schorn.ch/altair.html

上記サイトからは、Altairのエミュレータ(CPUはZ80版。Z80はインテル8080の上位互換の命令セット)本体に加えて、CP/M 2.2のブートディスク+数々のアプリまで含めたバイナリが即ダウンロード可能となってます。Linuxだけでなく、Windows、MACも対応。

今回はLinux版をWindows上のWSL2のUbuntu20.04LTSにダウンロードしました。インストールは簡単 tar ボールを解凍するだけ。以下のようになにやら警告メッセージが出ますが、これは元の tar ボールが MAC上でBSD系のtarツールで生成されているのを、今回、Linux上のtarで解凍しているためらしいです。これまた知らんけど。tarWarning

ファイルを解凍した結果は以下のようです。altairz80がソフトウエア本体です。cpm2という小さいテキストファイルが、多数含まれている .dsk という拡張子のディスクイメージファイルをどこに「マウント」するかなどを決めているコンフィギュレーション用のファイルです。ls_files

CP/M 2.2をブート!

さてBashのコマンドラインから CP/M 2.2 をブートしてみます。こんな感じ。おお、懐かしのA>プロンプト(今Aディスクにいるよ)ではないかしら。cp/m_2_2_AfterBoot

実はAltairは触ったことなどないのですが、CP/Mのプロンプトが出ていれば、操作は皆共通(でも、PIPの使い方など忘れておったよ。)

まずはAディクス上で dir、ありがち。DIR_A

ASMとかDDT(8080のデバッガ)などCP/Mツールの懐かしーものどもが大量に。よくみればMBASICとかWMまで入っています。マイクロソフトはBASICのソースコードを公開したと聞いたけど、WMとか権利大丈夫なんだろうね。

Bディスクをみたらば、こちらにはどうもPASCALとかPROLOGとか入ってるみたい。昔買えなかったソフトが並んでいる感じ。DISK_B

なお、存在しないディスクを見ようとするとBad Sectorとかいって怒られました。disk_not_exist

ディスクの空き容量を調べてみるとこんな感じ。Iディスクに「大容量」8Mバイトの空のHDDイメージをマウントしてくれているみたいです。statI

Jディスクを見たらば、こちらにもMBASICが入ってました。先ほどのAディスクにもMBASICあったのに。DIR_J

AディスクのMBASICは、以下のように「普通の」MBASICみたいです。A_MBASIC

一方、Jディスクの方は[Apple CP/M Version]なんだそれ、知らんぞ。でもま、動くみたいだし。MBASIC

でもなんだか、画面の制御シーケンスの残骸なのかsSとかキャラクタが見えてるわいな。

MicrosoftベーシックからCP/Mに戻るのは、そうだ system だった。えい。system

制御シーケンスの残骸がちょっと見えるけど問題ない感じ。

さて、CP/Mを終わらせるときは、halt とすれば、SimHのプロンプトに落ちてくるみたいです。そこでHelpしてみるとこんな感じ。HALT

上記、多数のコマンドは、SimHでマウントしているディスクイメージと外のLinuxあるいは他のホストOSの間での操作に使えるものみたいです。

SimHからの脱出は quit っと。quit

CP/M動いたな~。超簡単だった。

※この先のCP/MとAltairZ80シミュレータの使い方については以下の別シリーズで。

レトロな(1) CPM 2.2とAltairZ80シミュレータの操作方法 その1

※やっつけな日常の前後へのリンクは以下です。

やっつけな日常(55) Raspberry Pi、SD Card Copier、便利 へ戻る

やっつけな日常(57) Gplatesでプレートテクトニクスをしみじみ眺める? へ進む