バロース B5000
B5000シリーズでは、それぞれのプログラムが Program Reference Table (PRT)と呼ばれるセグメント情報テーブルを持ち、PRT内にあるプレゼンス情報を参照した存在確認、セグメントサイズを参照したアドレス違反チェックした後に、ベースアドレス情報を利用して、メインメモリ中の絶対アドレスを生成してアクセスする。
B5000シリーズは高速なバスで相互接続されたマルチプロセッサにおいても先駆的役割を果たした。B5000シリーズは2プロセッサ構成が可能であった。B7000シリーズは最大8プロセッサであった。マルチプロセッサに関する操作としては、以下のようなものがある:
HEYU — プロセッサ間割り込みを発生する。
RDLK — 不可分操作。Aレジスタの指すアドレスの内容をAレジスタに読み込むと同時に、Bレジスタの内容をそのアドレスに書き込む。
WHOI — プロセッサを識別する。
IDLE — 割り込みを受け付けるまでアイドル状態となる命令。
RDLKは非常に低レベルなプロセッサ間同期の方法である。ユーザープログラムで使用するのはEVENTデータ型である。
これは24ビットのミニコンピュータで、一般的なレジスタ・アーキテクチャであり、数千の端末を制御する入出力機能を有する。TCPとB6500はメモリ内のメッセージでやりとりし、それは今日のパケットと基本的には同じである。MCSはB6500側でそれらメッセージの処理を受け持っている。TCPにはアセンブラがあるが、そのアセンブラはB6500のALGOLコンパイラに対応していた。TCPの命令ごとに対応するALGOL関数があり、そういった関数を呼び出すと、TCPに対応する命令が発行される。TCPのプログラムは、そういった関数の呼び出しが並んでいるだけのALGOLプログラムであり、アセンブリ言語のプログラムと1対1に対応している。ここではALGOLはマクロアセンブラのように機能する。まず、ALGOLで書かれたTCPプログラムをコンパイルするとB6500上の実行ファイルが生成され、それをB6500上で実行するとTCP用のバイナリがTCPに向かって渡される。
NEWPは汎用のプログラミング言語だが、ALGOLの持つ機能全てをサポートしているわけではない。
NEWPにはALGOLにない制御機能もある。例えばINLINEプロシージャがある。いわゆるインライン展開を可能にするもので、論理的にはプロシージャだが実際には呼び出し側のコード内に直に展開されてコンパイルされる。これにより、プログラムの可読性とコードの効率を両立させている。
NEWPには大規模なソフトウェアの開発を可能とする機能がある。具体的にはコードのモジュール性を高める機能で、インタフェース(関数とデータの組)、インタフェースのグループ、モジュール、スーパーモジュールといったものがある。いずれも基本的には関数とデータをまとめるものであり、ある広域データのスコープを限定するものと言える。インタフェースはモジュール間のインポート/エクスポートを可能とする。