HP-71Bは、ヒューレット・パッカード[1]1984年から1989年まで製造していたハンドヘルドコンピュータまたはポケットコンピュータである。[2][3]

HP-71B

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

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

概要 編集

  • 搭載機能
  • ハードウェア
    • 内蔵メモリ: システムROM 64kバイト、ユーザーRAM 17.5kバイト
    • 入力装置: 55キー (写真参照)
    • 出力装置: LCD 1行22桁
    • 電源: 単4形電池4本 または ACアダプタ
    • 内蔵可能オプション
      • 磁気カードリーダー専用スロット: HP 82400A 磁気カードリーダー[28]。各磁気カード[29]は1枚あたり2本のトラックがあり、1トラックあたり650バイトの容量を持っている。[30]
      • HP-ILコントローラ専用スロット: HP 82401A HP-ILモジュール、HP 82402A Dual HP-IL アダプタ
      • 汎用オプションスロット: 4スロット。アプリケーションROMまたは増設RAMを追加可能

特徴 編集

サブルーチンとサブプログラム 編集

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

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

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

サブプログラムの呼出し時には、CALLステートメントの実引数(actual parameters)の渡し方として以下の3種類の方法が用意されている。[31]

  • 値パラメータ(value parameters) - 値渡しに相当
    • 実引数を丸括弧「()」でくくると値パラメータとなる。サブプログラム内で変更された値は反映されない。
  • 参照パラメータ(reference parameters) - 参照渡しに相当
    • 実引数を丸括弧でくくらないでおくと参照パラメータとなる。サブプログラム内で変更された値が呼出し元に反映される。変数のみに使用できる。配列は参照パラメータでしか渡せない。
  • チャネル番号(channel numbers)
    • チャネル番号はデータファイルに紐付けされた番号であり、データファイルを指し示している。[32] ただし、サブプログラム内でのチャネル番号のスコープは、サブプログラムの仮引数(formal parameters)リストの状況によって大きく変わる。[33][34]

グローバル環境とローカル環境 編集

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

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

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

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

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

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

ネスティング 編集

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

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

タイマー 編集

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

数値と数学例外 編集

71Bの浮動小数点数は、IEEE方式に準拠しており、NaN(非数)などにも対応している。[7][8]

71Bでは、ゼロ除算オーバーフローなどの数学例外(math exceptions)が発生した場合に、エラーを生起させずに計算結果を省略時値(default value)[42]に設定して、計算を続行することが可能である。[6]

ネットワーク 編集

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

71Bには、HP 82402A Dual HP-ILアダプタというオプション機器が用意されており、これを用いると二つのネットワークに接続することが可能となる。 例えば、複数の71Bと82402Aを用いると、別々の場所で各71Bが一つ目の各ネットワークを通して各種の計測機器などを管理し、それぞれの71Bを二つ目のネットワークを通してスーパーバイザとなるコンピュータが管理する…という二段階ネットワーク構造を構築することが可能である。[43]

ギャラリー 編集

脚注 編集

  1. ^ 以下「HP」と省略
  2. ^ HP-71 Owner's Manual (00071-90001 Rev.D English), 1985 (以下「OM」と省略)
  3. ^ HP-71 Reference Manual (00071-90110 Edition 4), 1987 (以下「RM」と省略)
  4. ^ HP-71B COMPENDIUM PART 2”. HP Forums. 2021年5月21日閲覧。
  5. ^ 例えば、マルチステートメントの区切り記号が「@」であったり、注釈記号がUNIXのように「!」だったりする。
  6. ^ a b OM P58
  7. ^ a b OM P59-P61
  8. ^ a b RM P338-P345
  9. ^ OM P47
  10. ^ OM P48
  11. ^ OM P49
  12. ^ OM P50
  13. ^ OM P50-P52
  14. ^ 71Bの乱数は「The Art of Computer Programming, Donald E.Knuth, Massachusetts, 1969, vol.2, section 3.4」のSpectral Testをパスしている。
  15. ^ OM P52-P53
  16. ^ 71BのIF-THEN-ELSEは、構造化されていない旧式のもので、1行96文字以内に収める必要がある。
  17. ^ OM P187-P189
  18. ^ OM P190-P201
  19. ^ OM P185-P187
  20. ^ OM P71-P77
  21. ^ OM P78-P89
  22. ^ OM P17-P18
  23. ^ OM P90-P96
  24. ^ a b OM P182-P183
  25. ^ a b OM P184
  26. ^ OM P202-P218
  27. ^ OM P218-P222
  28. ^ OM P284-P293
  29. ^ カードと言うよりも、とても細長い短冊あるいは短くて弾性のあるテープと言った方が形状が伝わり易いかもしれない。
  30. ^ OM P287
  31. ^ OM P206
  32. ^ OM P248
  33. ^ (1)仮引数リストが無い場合は、呼び出し側のプログラム内のものが使われる。(2)仮引数リストがある場合で、仮引数リスト内にチャネル番号が無いときは、ローカルスコープとなる。(3)仮引数リスト内にチャネル番号があるときは、仮引数で指定されたチャネル番号は、実引数から値渡しされたチャネル番号を指し示す。
  34. ^ OM P263-P264
  35. ^ a b OM P211
  36. ^ OM P211-P212
  37. ^ OM P220-P222
  38. ^ OM P214-P218
  39. ^ OM P179
  40. ^ OM P179-P180
  41. ^ OM P186
  42. ^ 例えば、高精度実数(REAL)のゼロ除算の場合は被除数の符号によって、+9.99999999999E499または-9.99999999999E499
  43. ^ 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に関するカテゴリがあります。