TL;DR (要約)
DECの “32ビットスーパーミニコン” VAX-11が16ビット機PDP-11とどうやって互換性を取っていたか。
- CPUに互換モードフラグがある
- VAX-11に移植されたRSX-11M(PDP-11のOS)がファンクションコールを変換する
互換性
「History of OpenVMS: ミニコンものがたり」に次のように書かれている。
VAXを開発するにあたり問題となったのがPDP-11の多くのアプリケーションをどのようにするかと言うことでした。これは簡単にはいきませんが、PDP-11の互換モードで解決しています。 VAX11の11がPDP11互換性をハードウェアで有していることを意味しています。このことによりアプリケーションがわずかな変更で簡単に互換モードで走らせられ、また新しいアプリケーションはVAXネイティブモードで開発するといったように、非常にスムーズにPDP-11からVAX11への移行ができました。
具体的な部分については「VAX11/780 HARDWARE HANDBOOK」に次の記述がある。
1. 互換モードフラグ
2. ファンクションコールを変換
訳:
互換モード: CPUがPDP-11の非特権命令の実行を許可するモード。 オペレーティングシステムはRSX-11Mタスクイメージ用のRSX-11Mプログラミング環境を提供することで互換モードの実行をサポートします。 オペレーティングシステムの互換モードプロシジャは互換モードイメージを実行するプロセスの制御領域にあります。 そのプロシジャはRSX-11M実行形式への呼び出しを遮って適切なオペレーティングシステム機能へと変換します。
「VAX-11/RSX-11M User's Guide」によるとMCRコマンドはRSX-11MタスクイメージとVAX-11ネイティブイメージの両方を開発・実行できる。
ちなみに OpenVMS「History of OpenVMS」 | HPE 日本 には上記の「ミニコンものがたり」を含めてDECのミニコンピュータに関する資料が置かれている。