Raspberry Pi2で懐かしいCP/Mを実行

CP/M on Raspberry Pi

CP/M on Raspberry Pi

Raspberry PiでCP/M

2018年9月、懐かしいCP/MをRaspberry Pi2で実行しました。

Raspberry Pi

Raspberry Pi

CP/M(Control Program for Microcomputer)は、デジタルリサーチ社が開発したIntel8080プロセッサー用のオペレーティングシステム(OS)です。1976年に発売されたので、現在(2018年)から42年も昔のOSです。

以前に、Altair 8800 simulatorを使用してCP/MをWindowsで実行しました。このシミュレーターは、SIMHシミュレーターを使用してi8080/Z80をシミュレートすることによりCP/Mが動作します。

懐かしいCP/MをSIMHシミュレータで実行

今回は、Raspberry PiでSIMHシミュレーターを実行することによりCP/Mの実行ができました。

CP/M on Raspbian

CP/M on Raspbian

SIMHとは

SIMHとは、「The Computer History Simulation Project」による移植性の高いマルチシステムシミュレーターです。

SIMH WEB

SIMH WEB

SIMH is a highly portable, multi-system simulator.

SimH (History Simulator) is a loose Internet-based collective of people interested in restoring historically significant computer hardware and software systems by simulation.
The goal of the project is to create highly portable system simulators and to publish them as freeware on the Internet, with freely available copies of significant or representative software.


【要約】SIMHは移植性の高いマルチシステムシミュレーターです。

SimH(History Simulator)は、シミュレーションによって歴史的に重要なコンピューターハードウェアとソフトウェアシステムを復元することに関心を持つ、インターネットベースの自由な集団です。このプロジェクトの目的は、可搬性の高いシステムシミュレーターを作成し、インターネットでフリーウェアとして公開し、重要または代表的なソフトウェアの自由に入手できるコピーを公開することです。

 

コンピューター史上で貴重なソフトウェアシステムをシミュレーションによって復元することを目的としています。DEC社のPDPシリーズなど貴重なソフトウェア資産が残っていますが、ソフトウェアを実行するハードウェアは現存しなくなりました。そのソフトウェア資産を復活させるために、SIMHシステムシミュレーターが開発されました。SIMHシミュレーターは、DEC社のPDPシリーズやVAX、MITS Altair 8800(with 8080/Z80)など、いろいろなシステムが含まれます。

ソフトウェア技術者にとって触れたことも無いシステムの体験や、懐かしいシステムを利用できます。とてもすばらしいプロジェクトです。

現在の最新リリースは、SIMH (V3.10-0 RC1)updated 01-Jun-2018です。

SIMH(Altair 8800 simulator)インストール

Raspberry Pi2のOSはRaspbianです。システム情報とバージョンを下記に示します。

Raspberry Pi2にSIMH(Altair 8800 simulator)をインストールします。
ソースコードをダウンロードしてLinuxでビルドします。

ホームディレクトリーに~/MyHome/simh/ディレクトリーを作成して、ソースコードをダウンロードして展開します。

PDP11、VAX、Altairなどいろいろなプロセッサーのシミュレーターソースコードを展開しました。

展開したディレクトリーの中に、ネットワークに関するドキュメント(0readme_ethernet.txt)があります。

This file contains information about the SIMH Ethernet package.

このファイルには、SIMHイーサネットパッケージに関する情報が含まれています。

ドキュメントに従って前提条件パッケージを最初にインストールします。

 

Altair用のシミュレーター(altairz80)をビルドします。

./BIN/altairz80を生成しました。

Altairシミュレーターを実行するターゲットディレクトリー(~/MyHome/exAltair/)をセットアップします。生成したaltairz80をターゲットディレクトリーにコピーします。

Altairシミュレーターのバイナリーの準備ができました。

CP/Mの入手

AltairでCP/Mを実行するために、CP/Mを入手します。

SIMHを使用してCP/Mが動作する「Altair 8800 simulator」を公開しているWEBサイトがあります。

Altair シミュレーター WEB

Altair シミュレーター WEB

このサイトでは、Windows用/Macintosh (OS X)用/Linux (Intel x86)用などのAltairシミュレーターのバイナリーとCP/M2.2を公開しています。

以前にWindowsでCP/Mを実行したときに利用しました。今回は、CP/M2.2だけをダウンロードします。

CP/M 2.2 イメージディスク

CP/M 2.2 イメージディスク

ターゲットディレクトリーにCP/Mをインストールします。

Altair 8800 simulatorの実行

Altairシミュレーターを実行します。コマンドの引数にcpm2を指定します。

CP/M 2.2の実行

CP/M 2.2の実行



Altair 8800 (Z80) simulator V4.0-0 Currentが起動して、CP/M Version 2.2 が起動します。SIMHシミュレーターのバージョンは V3.10-0 RC1でしたが、V3.9の次なのでV4.0と表示されました。

カレントドライブは、Aドライブです。CP/Mのビルドインコマンドdirで、Jドライブのディレクトリーを見るとMBASICが入っています。

haltコマンドを入力すると、CP/Mの実行を終了してシミュレーターコマンドレベルになります。

シミュレーターコマンドで 「quit」と入力するとシミュレーターを終了し、コマンドプロンプトレベルとなります。

CP/Mのhaltコマンドでシミュレーターを終了しましたが、CP/Mコマンド入力時にCTRL+Eを入力するとCP/Mを中断してシミュレーターコマンド待ちとなります。goコマンドでCP/Mを再開します。


引数で指定したcpm2は、シミュレーターコマンドにより実行環境を設定します。
例えば、attachコマンドでディスクを割り付けて、reset cpuコマンドでリセットし、boot dskコマンドでブートします。

SIMHのコマンドの説明は、ここを参照してください。

ワードマスターを使う

Raspberry Pi2にTera Termからssh接続して、CP/Mを起動しています。Tera TermはVT100互換のターミナルなので、そのままワードマスターを使用できました。

ワードマスターのコマンドは、ここを参照してください。

WMの実行

WMの実行



CTRL+Jで、HELP画面を表示します。

WM ヘルプ

WM ヘルプ

WindowsでCP/Mを実行したときは、DOSコマンドプロンプトからCP/Mを起動していました。VT100互換のターミナルから接続するために、SIOの設定でコンソールIOをTelnet接続ポート23経由にしました。

今回はVT100互換のターミナルでLinuxに接続してCP/Mを実行したため、SIOの設定は不要となったわけです。

ネットワークからCP/Mを使う

SIOを設定して、コンソールIOをTelnet接続ポート23経由にします。シミュレーターコマンドcpm2sioを作成します。

cpm2sioを引数に与えてAltairシミュレーターを実行します。

CP/Mコンソール SIO割り付け 失敗

CP/Mコンソール SIO割り付け 失敗



コマンド「attach sio 23」でエラーが発生しました。アクセス権限(Permission denied)でエラーとなり、ネットワークOpenに失敗しました。
CP/Mがコンソールで起動したので、CTRL+Eで中断し、quitコマンドで終了します。

アクセス権限が無いというエラーなので、管理者権限で実行してみます。

CP/Mコンソール SIO割り付け 成功

CP/Mコンソール SIO割り付け 成功

 

ネットワークのポート23待ちとなりました。

Tera TermからTelnet接続します。

Tera Term テレネット接続

Tera Term テレネット接続

接続先(IPアドレス)は、Raspberry Piのホスト名を指定します。

CP/M SIO接続

CP/M SIO接続

ネットワークからCP/Mに接続しました。

CP/Mはhaltコマンドにより停止します。

CP/M SIO接続 HALT

CP/M SIO接続 HALT

シミュレーターが停止しました。

この様子を下記に示します。

CP/M Telnet接続 概要図

CP/M Telnet接続 概要図

最後に

Raspberry Pi2にSIMH(Altair 8800 simulator)をインストールして、懐かしのCP/Mが動作しました。

昔CP/Mを使用したときは、RS-232CでターミナルとCP/M PCを接続していました。現在では、RS-232Cの代わりにtelnet接続してRaspberry Piで動作するCP/Mをネットワークから使用できるようになったわけです。

もう少し、遊んでみようと思います。

関連するブログ

懐かしいCP/MをSIMHシミュレータで実行

懐かしのワードマスターをCP/Mシミュレータで使う

CP/Mシミュレータで懐かしのインテル8080アセンブラを使う