HP-41

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
HP-41CX と磁気カードリーダーと感熱式プリンタ

HP-41 シリーズは、ヒューレット・パッカード1979年から1990年まで製造していたプログラム電卓である。拡張性があり、逆ポーランド記法を特徴とする。最初のモデル HP-41C英数字を表示できる最初の電卓だった。その後 HP-41CVHP-41CX と機能やメモリ容量を拡張していった。

目次

英数字表示という「革命」 [編集]

HP-41C の英数字液晶ディスプレイは電卓の使い方に革命を起こした。当時としては画期的な使いやすさを実現し、電卓のキーにない関数や機能でも英数字を直接打ち込むことで使用可能だった。また、計算途中で何が起きているかを表示可能で、読んで意味の分かるエラーメッセージ(例えば "ZERO DIVIDE")を表示したり、入力を促すプロンプト(例えば "ENTER RADIUS")を表示できた。

初期の電卓は演算や関数は1つのキーあるいはキーの組み合わせに対応している必要があった。HP-67 には3つのシフトキーがあり、テキサス・インスツルメンツの電卓には2つのシフトキー(2ndINV)を含む50以上のキーを持つものもあった。それらに比べるとHP-41Cのキー数は少なく、1つのシフトキーしかないが、数百個の演算や関数を提供している。キーに割り当てられていない関数は XEQ (execute) を押下してから英数字で関数名を打ち込めばよい。例えば XEQ FACT は階乗関数である。

この電卓には特別なモードがあり、ユーザーが任意のキーに任意の関数を割り当てることができ、デフォルトの関数割り当てではユーザーの用途に適さない場合に対応可能であった。このモードのためにHP-41Cには何も書かれていないキーボードテンプレート(オーバーレイシート)が付属していて、ユーザーがカスタマイズしたキー配列に合わせて説明を記述することができた。ヒューレット・パッカードはキーに関数名が刻印されていないバージョンも発売しており、常にキーをカスタマイズして使用する用途を意図していた。HP-41Cの社内コード名が "coconut" だったことから、この関数名が刻印されていないバージョンは "blanknut" と呼んでいた[1]

英数字ディスプレイによって関数名をフルに入力できるようになり、プログラムの編集も大いに改善された。それまでの数字しか表示できないプログラム電卓では、キーの位置を表す数の羅列になっていた。それをユーザーはマニュアルにある対応表を見ながら解釈する必要があった。さらに言えば、ユーザーはその数の羅列について、関数を表す数と実際の数を区別する必要があった。

HP-41Cの液晶ディスプレイで "HELLO WORLD" を表示した様子

HP-41C は14セグメントディスプレイで文字を表示する(7セグメントディスプレイに似ているが、7セグメントでは基本的に数字しか表示できない)。また、当時はLED表示が多かったが、HP-41C は消費電力を抑えるために液晶を使っている。このディスプレイによってアルファベットの大文字と数字と一部の記号を表示できるが、例えば "5" と "S" を区別するために若干のデザイン的工夫が必要になっている。また、アルファベットの小文字は表示できない("a" から "e" までの小文字は表示可能)。ライバルのシャープが1980年にリリースした PC-1211 は5×7ドットのドットマトリクス液晶を使い、今日コンピュータで表示するのとほとんど同じように文字を表示できた。HPがドットマトリクスを採用したのは1984年の HP-71B からである。

拡張性 [編集]

HP-41シリーズには拡張モジュールを装着することができ、機能を拡張可能である。メモリ拡張用に4スロットがあり、プログラムの格納されたソリューションパックとして、技術計算用、物理計算用、数学用、金融用、ゲームなどが発売された。拡張機器としてはサーマルプリンター、磁気カードリーダー、バーコードリーダーなどがある。

また、Interface Loop というモジュールを使うとさらに様々な周辺機器を接続できる。より大きなプリンター、マイクロカセットテープレコーダー、3.5インチフロッピーディスクドライブ、RS-232通信インタフェース、ビデオディスプレイインタフェースなどである。Interface Loop はその後の HP-71B、HP-75、HP-110 にも装備されている。

HP-41CV/CX [編集]

HP-41Cは63レジスタのメモリを搭載していたが、ユーザーの多くは4つの拡張スロット全てをメモリ拡張(64レジスタ×4)に使ったため、他のモジュールを装備できないでいた。そこでHPは容量を4倍の256レジスタにしたメモリモジュールを発売し、1個で最大の319レジスタまでメモリ容量を拡張できるようにした。HP-41CV(V はローマ数字の5を意味する)は当初から最大の319レジスタまでメモリを搭載し、HP-41Cに比べてメモリ容量が5倍になっており、同時に4つの拡張スロットが全て空いていた。

仕様上、メモリはそれ以上拡張できないため、HPは補助記憶装置として使える拡張メモリモジュール[2]を設計した。そのメモリには直接アクセスできないが、その内容を本体のメモリにロードしたり、本体のメモリ上の内容をそこにセーブできる。したがって、拡張メモリモジュール上の内容は言わばファイルである。

HP-41シリーズの最後のモデル HP-41CX ではその拡張メモリも126レジスタ内蔵し、他にも時計機能などの追加機能を内蔵していた。1983年に発売され、1990年に販売終了となった。

プログラミング [編集]

HP-41シリーズはキーストローク方式のプログラミングが可能である。プログラムには、無条件分岐条件分岐ループなどのプログラミング機能も使用可能である。

プログラム例 [編集]

2 以上 69 以下の指定した整数の階乗を計算するプログラムの例を示す。このプログラムは2レジスタ分(約14バイト)のメモリを使用する。

行    コード         コメント
01    LBL'Fac      XEQ 'Fac' によってプログラムを開始するラベル'Fac'を設置(LABEL ALPHA)
02    STO 00       スタックXをレジスタ0に入れる(STORE)
03    1            スタックXに1を置数 (スタックは上昇)
04    LBL 00       ラベル0を設置(LABEL)
05    RCL 00       レジスタ0からスタックXに入れる(RECALL) (スタックは上昇)
06    *            スタックXとスタックYを掛けてスタックXに入れる(乗算) (スタックは下降)
07    DSE 00       レジスタ0から1を減じ、 その結果レジスタ0がゼロ以下ならば次の行をスキップする
                       (Decrement and Skip if less than or Equal to)
08    GTO 00       ラベル0へ行く(GO TO LABEL)
09    END          プログラムを停止し、スタックXを表示する

HP-41C コミュニティと合成的プログラミング [編集]

HP-41C には巨大なユーザーコミュニティが形成された。世界中の愛好者が新たなプログラミング方法を発見し、独自の拡張モジュールを作り、クロックアップ(オーバークロック)に挑戦した。

コミュニティの発見の1つにエディタのバグを利用して特殊な関数をキーに割り当てる方法がある。重要な関数としてバイトジャンパーと呼ばれるものがあり、プログラムの命令を通常では許されない方法で編集できる。この機能を使って命令列を生成することを「合成的プログラミング (synthetic programming)」と呼ぶ。合成的プログラミングではオペレーティングシステムが確保しているメモリにアクセスでき、マシンを完全にロックするなど様々な奇妙なことが可能である。ヒューレット・パッカードは公式には合成的プログラミングをサポートしなかったが、特に禁止もしなかった。そして最終的にはユーザーグループに対して内部文書を開示した。

脚注 [編集]

  1. ^ HPは1980年代初期にHP-41Cファンのために各種文書を公開していた。それが現在も HP-41 Internal Documentation にある。
  2. ^ 例えば238レジスタ搭載で最大2モジュールまで装備可能なもの。拡張メモリ自体は他のモジュールを含めて最大603レジスタまで拡張可能

参考文献 [編集]

外部リンク [編集]