HP-71B

HP-71Bは、ヒューレット・パッカード社が1984年から1989年まで製造していたハンドヘルドコンピュータまたはポケットコンピュータである。 HP-75の後継機として開発された機種であるが、磁気カードリーダーやHP-IL機能はオプションとなっている。 システムROM(ファームウェア)のバージョンは、0AAAA、1AAAA、1BBBB、2CCCC、2CDCCの5種類が存在している。 搭載機能 言語： BASIC言語(HP独自方言) 最大数値： 整数(INTEGER) +99999、低精度実数(SHORT) +9.9999×10499、高精度実数(REAL) 9.99999999999×10499 数学機能： IEEE方式準拠の浮動小数点数、四則演算、冪乗、整数除算、絶対値、整数部、小数部、10進16進変換、平方根、階乗、最大値、最小値、剰余、符号、対数関数、指数関数、指数部、1近傍での対数関数、零近傍での指数関数、三角関数、疑似乱数 その他の機能の例： 条件実行(IF-THEN-ELSE)、フラグ、ループ(FOR-NEXT)、文字列操作機能、統計機能、リアルタイムクロック、プログラマブル・タイマー、サブプログラム、ユーザー定義関数 ハードウェア 内蔵メモリ： システムROM 64kバイト、ユーザーRAM 17.5kバイト 入力装置： 55キー (写真参照) 出力装置： LCD 1行22桁 電源： 単4形電池4本 または ACアダプタ 内蔵可能オプション 磁気カードリーダー専用スロット： HP 82400A 磁気カードリーダー。各磁気カードは1枚あたり2本のトラックがあり、1トラックあたり650バイトの容量を持っている。 HP-ILコントローラ専用スロット： HP 82401A HP-ILモジュール、HP 82402A Dual HP-IL アダプタ 汎用オプションスロット： 4スロット。アプリケーションROMまたは増設RAMを追加可能 71Bにはサブルーチンとサブプログラムという2種類の副処理機能が用意されている。 サブルーチンはメインルーチンと同じプログラム内に作成され、GOSUBステートメントで呼び出される。 呼出しに引数を使用することはできないが、同じプログラム内であるのでローカル変数が共通で使用できる。 サブプログラムはメインプログラムとは別のプログラムとして作成され、呼び出すにはCALLステートメントを使用する。 サブプログラムの呼出し時には、CALLステートメントの実引数(actual parameters)の渡し方として以下の3種類の方法が用意されている。 値パラメータ(value parameters) - 値渡しに相当 実引数を丸括弧「()」でくくると値パラメータとなる。サブプログラム内で変更された値は反映されない。 参照パラメータ(reference parameters) - 参照渡しに相当 実引数を丸括弧でくくらないでおくと参照パラメータとなる。サブプログラム内で変更された値が呼出し元に反映される。変数のみに使用できる。配列は参照パラメータでしか渡せない。 チャネル番号(channel numbers) チャネル番号はデータファイルに紐付けされた番号であり、データファイルを指し示している。 ただし、サブプログラム内でのチャネル番号のスコープは、サブプログラムの仮引数(formal parameters)リストの状況によって大きく変わる。 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を二つ目のネットワークを通してスーパーバイザとなるコンピュータが管理する…という二段階ネットワーク構造を構築することが可能である。 専用ACアダプタで稼働中のHP-71B 磁気カードリーダーを内蔵したHP-71B (同左) [脚注の使い方] ^ 以下「HP」と省略 ^ HP-71 Owner's Manual (00071-90001 Rev.D English), 1985 (以下「OM」と省略) ^ HP-71 Reference Manual (00071-90110 Edition 4), 1987 (以下「RM」と省略) ^ “HP-71B COMPENDIUM PART 2”. HP Forums. 2021年5月21日閲覧。 ^ 例えば、マルチステートメントの区切り記号が「@」であったり、注釈記号がUNIXのように「!」だったりする。 ^ a b OM P58 ^ a b OM P59-P61 ^ a b RM P338-P345 ^ OM P47 ^ OM P48 ^ OM P49 ^ 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 ^ 71BのIF-THEN-ELSEは、構造化されていない旧式のもので、1行96文字以内に収める必要がある。 ^ OM P187-P189 ^ OM P190-P201 ^ OM P185-P187 ^ OM P71-P77 ^ OM P78-P89 ^ OM P17-P18 ^ OM P90-P96 ^ a b OM P182-P183 ^ a b OM P184 ^ OM P202-P218 ^ OM P218-P222 ^ OM P284-P293 ^ カードと言うよりも、とても細長い短冊あるいは短くて弾性のあるテープと言った方が形状が伝わり易いかもしれない。 ^ OM P287 ^ OM P206 ^ OM P248 ^ (1)仮引数リストが無い場合は、呼び出し側のプログラム内のものが使われる。(2)仮引数リストがある場合で、仮引数リスト内にチャネル番号が無いときは、ローカルスコープとなる。(3)仮引数リスト内にチャネル番号があるときは、仮引数で指定されたチャネル番号は、実引数から値渡しされたチャネル番号を指し示す。 ^ OM P263-P264 ^ a b OM P211 ^ OM P211-P212 ^ OM P220-P222 ^ OM P214-P218 ^ OM P179 ^ OM P179-P180 ^ OM P186 ^ 例えば、高精度実数(REAL)のゼロ除算の場合は被除数の符号によって、+9.99999999999E499または-9.99999999999E499 ^ Networking the HP-71 to a Supervisory Computer, Hewlett-Packard, The HP-71 In: Production Process Monitoring and Low-Cost Test , 1985, P9-P10. ウィキメディア・コモンズには、HP-71Bに関するカテゴリがあります。 表示 編集