HP-71Bは、ヒューレット・パッカード社以下「HP」と省略が1984年から1989年まで製造していたハンドヘルドコンピュータまたはポケットコンピュータである。HP-71 Owner's Manual (00071-90001 Rev.D English), 1985 (以下「OM」と省略)HP-71 Reference Manual (00071-90110 Edition 4), 1987 (以下「RM」と省略)

HP-75の後継機として開発された機種であるが、磁気カードリーダーやHP-IL機能はオプションとなっている。

システムROM(ファームウェア)のバージョンは、0AAAA、1AAAA、1BBBB、2CCCC、2CDCCの5種類が存在している。

概要 搭載機能 言語: BASIC言語(HP独自方言例えば、マルチステートメントの区切り記号が「@」であったり、注釈記号がUNIXのように「!」だったりする。) 最大数値: 整数(INTEGER) +99999、低精度実数(SHORT) +9.9999×10499、高精度実数(REAL) 9.99999999999×10499 OM P58 数学機能: IEEE方式準拠の浮動小数点数OM P59-P61RM P338-P345、四則演算、冪乗、整数除算OM P47、絶対値、整数部、小数部、10進16進変換OM P48、平方根、階乗、最大値、最小値、剰余、符号OM P49、対数関数、指数関数、指数部、1近傍での対数関数、零近傍での指数関数OM P50、三角関数OM P50-P52、疑似乱数71Bの乱数は「The Art of Computer Programming, Donald E.Knuth, Massachusetts, 1969, vol.2, section 3.4」のSpectral Testをパスしている。OM P52-P53 その他の機能の例: 条件実行(IF-THEN-ELSE)71BのIF-THEN-ELSEは、構造化されていない旧式のもので、1行96文字以内に収める必要がある。OM P187-P189、フラグOM P190-P201、ループ(FOR-NEXT)OM P185-P187、文字列操作機能OM P71-P77、統計機能OM P78-P89、リアルタイムクロックOM P17-P18OM P90-P96、プログラマブル・タイマーOM P182-P183OM P184、サブプログラムOM P202-P218、ユーザー定義関数OM P218-P222 ハードウェア 内蔵メモリ: システムROM 64kバイト、ユーザーRAM 17.5kバイト 入力装置: 55キー (写真参照) 出力装置: LCD 1行22桁 電源: 単4形電池4本 または ACアダプタ 内蔵可能オプション 磁気カードリーダー専用スロット: HP 82400A 磁気カードリーダーOM P284-P293。各磁気カードカードと言うよりも、とても細長い短冊あるいは短くて弾性のあるテープと言った方が形状が伝わり易いかもしれない。は1枚あたり2本のトラックがあり、1トラックあたり650バイトの容量を持っている。OM P287 HP-ILコントローラ専用スロット: HP 82401A HP-ILモジュール、HP 82402A Dual HP-IL アダプタ 汎用オプションスロット: 4スロット。アプリケーションROMまたは増設RAMを追加可能

特徴 サブルーチンとサブプログラム 71Bにはサブルーチンとサブプログラムという2種類の副処理機能が用意されている。

サブルーチンはメインルーチンと同じプログラム内に作成され、GOSUBステートメントで呼び出される。 呼出しに引数を使用することはできないが、同じプログラム内であるのでローカル変数が共通で使用できる。

サブプログラムはメインプログラムとは別のプログラムとして作成され、呼び出すにはCALLステートメントを使用する。

サブプログラムの呼出し時には、CALLステートメントの実引数(actual parameters)の渡し方として以下の3種類の方法が用意されている。OM P206 値パラメータ(value parameters) - 値渡しに相当 実引数を丸括弧「()」でくくると値パラメータとなる。サブプログラム内で変更された値は反映されない。 参照パラメータ(reference parameters) - 参照渡しに相当 実引数を丸括弧でくくらないでおくと参照パラメータとなる。サブプログラム内で変更された値が呼出し元に反映される。変数のみに使用できる。配列は参照パラメータでしか渡せない。 チャネル番号(channel numbers) チャネル番号はデータファイルに紐付けされた番号であり、データファイルを指し示している。OM P248 ただし、サブプログラム内でのチャネル番号のスコープは、サブプログラムの仮引数(formal parameters)リストの状況によって大きく変わる。(1)仮引数リストが無い場合は、呼び出し側のプログラム内のものが使われる。(2)仮引数リストがある場合で、仮引数リスト内にチャネル番号が無いときは、ローカルスコープとなる。(3)仮引数リスト内にチャネル番号があるときは、仮引数で指定されたチャネル番号は、実引数から値渡しされたチャネル番号を指し示す。OM P263-P264

グローバル環境とローカル環境 71Bでは、メモリ内に環境(environment)と呼ばれる領域が確保され、プログラムから利用される。

初期状態では、グローバル環境とメインプログラム用ローカル環境の二つの環境が存在している。OM P211

ファイル名、コマンドスタック、フラグ、タイマー、システム設定状態などは、全てのプログラムから参照可能なグローバル環境内に置かれている。

サブプログラムが呼び出されると、呼出し側のプログラムが使用しているローカル環境はメモリへとセーブされ、プログラムからは見えなくなる。 同時に呼び出されたサブプログラム用のローカル環境が生成され、実引数がコピーされる。 サブプログラム内で使用されるローカル変数などもここに確保される。OM P211-P212

ユーザー定義関数も呼び出されるとユーザー定義関数ローカル環境がプログラム用ローカル環境の内部に生成される。OM P220-P222

このように、サブプログラムが呼び出される毎にローカル環境が生成されるため、メモリ残量の許す限りではあるが、再帰的なプログラムの作成も可能となっている。OM P214-P218

ネスティング サブルーチン呼出し時の復帰用スタックはローカル環境に確保されるため、ネスティングの深さ(レベル)はメインメモリの残量によって(のみ)制限を受ける。OM P179 ただし、復帰用スタックは、POPステートメントを使用して1レベル分ずつ破棄することができる。OM P179-P180

FOR-NEXTループのワーク領域もローカル環境に確保されるため、FOR-NEXTループのネスティングの深さもメインメモリの残量によって(のみ)制限を受ける。OM P186

タイマー 71Bは、32ビット長のタイマーを1本持っており、32分の1秒単位で割り込みを掛けることが可能である。 このタイマーは、71Bの電源が入っていない場合でも稼働しており、タイマー割り込みサブルーチンを動作させるときだけ電源を入れることもできる。

数値と数学例外 71Bの浮動小数点数は、IEEE方式に準拠しており、NaN(非数)などにも対応している。

71Bでは、ゼロ除算、オーバーフローなどの数学例外(math exceptions)が発生した場合に、エラーを生起させずに計算結果を省略時値(default value)例えば、高精度実数(REAL)のゼロ除算の場合は被除数の符号によって、+9.99999999999E499または-9.99999999999E499に設定して、計算を続行することが可能である。

ネットワーク 71Bは、トークン・パッシング型のHP-IL(インターフェースループ)を使用したネットワーク(LAN)を構築することができるように設計されている。

71Bには、HP 82402A Dual HP-ILアダプタというオプション機器が用意されており、これを用いると二つのネットワークに接続することが可能となる。 例えば、複数の71Bと82402Aを用いると、別々の場所で各71Bが一つ目の各ネットワークを通して各種の計測機器などを管理し、それぞれの71Bを二つ目のネットワークを通してスーパーバイザとなるコンピュータが管理する…という二段階ネットワーク構造を構築することが可能である。Networking the HP-71 to a Supervisory Computer, Hewlett-Packard, The HP-71 In: Production Process Monitoring and Low-Cost Test , 1985, P9-P10.

ギャラリー

脚注

外部リンク