GPIB 制御用簡易言語 - gpx

Unix の大きな楽しみの1つがプログラミングですが、 業務に特化したプログラミング言語を設計して、 インタプリータやコンパイラを作ることで、 事務処理や試験研究の仕事を劇的に効率化することができます。

Unix はこういった仕事に向いていて、 インタプリータやコンパイラを書くのは楽しい仕事の1つですから、 長年、いろいろな言語を設計しては、社内のあらゆる分野の自動化に使ってきました。

それらのほとんどは、アイデアを含めて非公開ソフトウェアとして、 こっそり使われてきたわけですが、 VXI-11 GPIB ライブラリの公開を機に、 関連する GPIB 制御用インタプリータも公開できるようにしてみました。

社内では gpx と呼ばれるこのプログラムの最初の版を書いたのは、 今から 30 年近く前の Hewlett Packard の Calculator 時代になりますが、 Unix が使えるようになるとすぐ、 awk(1) の仕様にあわせて再設計し、 MS-DOS、ミニコンの Unix、Sun ワークステーションの Unix、 Minix、FreeBSD などいろいろな版が、社内で使われ続けてきました。

もともとは、GPIB を使うプログラムのプロトタイピングを目的に設計したものですが、 SRQ の処理が自動化され、制御の流れが構造化されているのが特徴で、 Unix の利用者には理解が容易です。

この公開版では Minix 版を元に、GPIB 制御を VXI11 GPIB ライブラリを使うように書き換えて、 増設カード等、GPIB のハードウェアに依存しないようにしています。

Unix の定番ツールである yacc(1) や lex(1) が使われていないのは、 当時の Minix が 16 bit CPU を前提にしたもので、 64kB+64kB という小さなメモリ空間しか使えなかったためでした。 他の版では lex(1) と yacc(1) の組合せとか、 yacc(1) だけを使って lexical analyzer を直接 C で書いたものなどがあります。

このプログラムの元になった Minix 用 awk は Minix の中に含まれています。

READMEファイルと プログラミング説明書をご覧のうえ、 ご希望なら ソースコードをお持ちください。

なお、将来仕様変更やバグ修正が行われる可能性がありますので、ご了承ください。

また、「すべてを LAN で、世界のどこからも、簡単に」という目標実現の手段1つと して、 VXI-11 Gateway 経由の GPIB と同時に LAN インタフェースを有する計測機器 や Device Server を使って LAN 収容した RS-232/422/485 デバイスを扱えるようにし た版も社内で使われています。

平林 浩一, 2008-07-10)