はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

VAX-11はどのようにPDP-11との互換性を取っていたか

TL;DR (要約)

DECの “32ビットスーパーミニコン” VAX-11が16ビット機PDP-11とどうやって互換性を取っていたか。

  1. CPUに互換モードフラグがある
  2. 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. 互換モードフラグ

f:id:paz3:20210214232906p:plain
Process Status Longword Register (p.303)

2. ファンクションコールを変換

f:id:paz3:20210214233129p:plain
Glossary - compatibility mode (p.330)

訳:

互換モード: 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のミニコンピュータに関する資料が置かれている。