HP-71B

HP-71Bは、ヒューレット・パッカード社が1984年から1989年まで製造していたハンドヘルドコンピュータまたはポケットコンピュータである。
HP-75の後継機として開発された機種であるが、磁気カードリーダーやHP-IL機能はオプションとなっている。
システムROM(ファームウェア)のバージョンは、0AAAA、1AAAA、1BBBB、2CCCC、2CDCCの5種類が存在している。
特徴.
サブルーチンとサブプログラム.
71Bにはサブルーチンとサブプログラムという2種類の副処理機能が用意されている。
サブルーチンはメインルーチンと同じプログラム内に作成され、GOSUBステートメントで呼び出される。
呼出しに引数を使用することはできないが、同じプログラム内であるのでローカル変数が共通で使用できる。
サブプログラムはメインプログラムとは別のプログラムとして作成され、呼び出すにはCALLステートメントを使用する。
サブプログラムの呼出し時には、CALLステートメントの実引数(actual parameters)の渡し方として以下の3種類の方法が用意されている。
グローバル環境とローカル環境.
71Bでは、メモリ内に環境(environment)と呼ばれる領域が確保され、プログラムから利用される。
初期状態では、グローバル環境とメインプログラム用ローカル環境の二つの環境が存在している。
ファイル名、コマンドスタック、フラグ、タイマー、システム設定状態などは、全てのプログラムから参照可能なグローバル環境内に置かれている。
サブプログラムが呼び出されると、呼出し側のプログラムが使用しているローカル環境はメモリへとセーブされ、プログラムからは見えなくなる。
同時に呼び出されたサブプログラム用のローカル環境が生成され、実引数がコピーされる。
サブプログラム内で使用されるローカル変数などもここに確保される。
ユーザー定義関数も呼び出されるとユーザー定義関数ローカル環境がプログラム用ローカル環境の内部に生成される。
このように、サブプログラムが呼び出される毎にローカル環境が生成されるため、メモリ残量の許す限りではあるが、再帰的なプログラムの作成も可能となっている。
ネスティング.
サブルーチン呼出し時の復帰用スタックはローカル環境に確保されるため、ネスティングの深さ(レベル)はメインメモリの残量によって(のみ)制限を受ける。
ただし、復帰用スタックは、POPステートメントを使用して1レベル分づつ破棄することができる。
FOR-NEXTループのワーク領域もローカル環境に確保されるため、FOR-NEXTループのネスティングの深さもメインメモリの残量によって(のみ)制限を受ける。
タイマー.
71Bは、32ビット長のタイマーを1本持っており、32分の1秒単位で割り込みを掛けることが可能である。
このタイマーは、71Bの電源が入っていない場合でも稼働しており、タイマー割り込みサブルーチンを動作させるときだけ電源を入れることもできる。
数値と数学例外.
71Bの浮動小数点数は、IEEE方式に準拠しており、NaN(非数)などにも対応している。
71Bでは、ゼロ除算、オーバーフローなどの数学例外(math exceptions)が発生した場合に、エラーを生起させずに計算結果を省略時値(default value)に設定して、計算を続行することが可能である。
ネットワーク.
71Bは、トークン・パッシング型のHP-IL(インターフェースループ)を使用したネットワーク(LAN)を構築することができるように設計されている。
71Bには、HP 82402A Dual HP-ILアダプタというオプション機器が用意されており、これを用いると二つのネットワークに接続することが可能となる。
例えば、複数の71Bと82402Aを用いると、別々の場所で各71Bが一つ目の各ネットワークを通して各種の計測機器などを管理し、それぞれの71Bを二つ目のネットワークを通してスーパーバイザとなるコンピュータが管理する…という二段階ネットワーク構造を構築することが可能である。