プログラム
電卓は、
コンピュータのようにプログラムを格納し、そのプログラムによって複雑な計算を自動で行うことができる
電卓です。初期のプログラム
電卓は、細長い磁気カードやROMカートリッジにプログラムを保存していました。後に、バッテリーバックアップされたRAMにプログラムを格納する方式も登場しました。
BASICのような高水準言語でプログラミングできるものは、ポケット
コンピュータと呼ばれることもあります。
1990年代初頭以降、プログラム
電卓は
グラフ電卓へと進化しました。
ドットマトリクス方式の
液晶ディスプレイが安価に大量生産されるようになるまでは、プログラム
電卓のディスプレイは1行の数字や
英数字しか表示できませんでした。「プログラマブル
電卓」という異称もあります。
プログラミング
プログラム
電卓は、プログラムを書いて格納することで、複雑な手順を自動化したり、難解な問題を解いたりすることができます。初期は
電卓独自のコマンド言語によるプログラミングでしたが、
ハッカーが
電卓の主要インタフェースを迂回する方法を発見し、
アセンブリ言語でプログラムを書くようになりました。これを受け、TIをはじめとする
電卓メーカーは、ネイティブモードでのプログラミングをサポートし始めました。まず、そのようなコードを利用可能にするフックを公開し、後に通常のユーザーインターフェースで直接そのようなプログラムを扱えるように機能を整えていきました。
電卓向けのプログラムは
インターネット上に多数存在し、PCにダウンロードして専用のケーブルや赤外線リンク、メモリカード経由で
電卓にアップロードできます。また、エミュレータを使えばPC上で直接実行することも可能です。これを利用して、プログラム
電卓向けに他の
プログラミング言語の
インタプリタや
コンパイラを作成することもできます。例えば、TI-83やTI-84には
BBC Microの
BASICが既に移植されており、他にもFORTRAN、AWK、
Pascal、
REXX、
Perl、
Common Lisp、
Python、tcl、
UNIX上の各種
シェルなどの移植が議論されています。
プログラム
電卓向けのソフトウェアとしては、
数学や
科学に関連した問題を解くもの、ゲーム、デモなどがあります。多くは一般ユーザーが作成し、
フリーウェアやオープンソースとして公開されていますが、教育および
科学技術計算市場向けの有償ソフトウェアも存在します。
グラフ電卓は表示画面が大きいため、
スクロールせずに
ソースコードを複数行表示でき、通常のプログラム
電卓よりもプログラミングが容易です。
キーストローク方式
初期のプログラム
電卓は、キーを押す順序を記録する方式や、複数のキーストロークを
バイトコードのようなものに変換して記録する、非常にシンプルな
プログラミング言語を採用していました。条件分岐と間接アドレッシングが可能であれば、このような方式でも
チューリング完全なプログラミングが可能です。キーストローク方式で
チューリング完全なプログラム
電卓としては、カシオのFX-602Pシリーズ、HP-41、TI-59などがあります。キーストローク方式のプログラム
電卓は現在でも販売されており、HP 35s、カシオのfx-5800Pなどがあります。
BASICは、デスクトップ
コンピュータやポケット
コンピュータで広く採用された
プログラミング言語です。
シャープ、カシオ、TIなどがプログラム
電卓やポケット
コンピュータの
プログラミング言語として採用しました。これらの
BASICの方言は、キーストローク方式の長所を取り入れた
電卓向けに最適化されており、一般的な
BASICとの共通点は少ないです。
RPL
RPLは、
ヒューレット・パッカードがプログラム
電卓向けに採用した、逆ポーランド記法順などを特徴とする言語です。1987年リリースのHP-28Cから導入されました。
初期のプログラム
電卓では
機械語を直接使うことはできませんでしたが、
ハッカーが
インタプリタのインターフェースを迂回する方法を発見し、
アセンブリ言語で直接プログラミングできるようになりました。最初にこの技法が使われるようになったのはTI-85で、モード切り替えにプログラミング上の欠陥があったためです。TI-83でも同様の技法が使われるようになると、TIとHPは愛好家がそのようなニーズを持っていることを認識し、
アセンブリ言語用ライブラリの開発や開発者向けの詳細文書の公開を始めました。
携帯型ゲーム機のゲームに似たようなものが、プログラム
電卓(特に
グラフ電卓)ですぐに開発されるようになりました。TIはTI-83やTI-89で正式に
アセンブリ言語をパッケージとしてサポートし始めました。HPは2012年現在の最上位機種HP 50gで
アセンブリ言語を内蔵しています。カシオはPB-1000で
アセンブリ言語を搭載し、PB-1000Cでは搭載CPUの
アセンブリ言語ではなく
情報処理技術者試験のCASLを搭載していました。
その他
gcc開発スイートはHPおよびTIの一部機種にも対応しており、PC上でC、C++、Fortran 77、
アセンブリ言語などを使ってプログラム
電卓向けのソフトウェアを開発し、
電卓にアップロードして使用できます。
電卓上またはPC上でコンバータ、
インタプリタ、コードジェネレータ、マクロアセンブラ、
コンパイラなどを開発するプロジェクトがいくつかあります。言語としては、FORTRAN、
BASIC、AWK、
C言語、
COBOL、
REXX、
Perl、
Python、
Tcl、
Pascal、
Delphi、各種
シェル(DOS、OS/2のバッチやWindowsの
シェル、Unix系の
シェルなどがあります)などがあります。
プログラムの保存手段
プログラム
電卓の重要な機能の一つに、プログラムを永続的に保存できる機能があります。この機能がないと、電池を交換した際にプログラムが消えてしまいます。プログラム
電卓内に電池を取り外しても内容が消えないメモリを搭載する方式と、別の周辺機器を接続する方式があります。複数の保存手段を備える場合もあります。
磁気カードリーダ/ライタ
初期のプログラム
電卓では、オプションの永続的保存手段として磁気カードリーダを採用していました。入力したプログラムを細長い磁気カードに保存します。磁気カードとそのリーダは小型で持ち運びが容易ですが、一般に非常に高価でした。磁気カードを採用していた最後の機種として、HP-41CとTI-59があります。
バッテリーバックアップ式メモリ
主電源を切ってもメモリの内容が消えないようにバッテリーバックアップを行う方式で、HPが最初に採用し、continuous memoryと名付けました。これにより、電池交換の際にもプログラムが失われないようになっています。なお、メモリ容量が増えてくると、完全なバッテリーバックアップは困難になってきました。そのため、電池交換にかける時間を2分以内などと制限する方式や、電池を2つ搭載して一度に1つしか交換できないとする方式などが登場しました。
カセットテープ
コンパクトカセットは、磁気カードよりも安価でシンプルな保存手段です。例えば、カシオはFA-1というインターフェースモジュールを発売し、プログラム
電卓と一般的なカセットデッキを接続可能にしました。周波数偏移変調でデジタルデータを音響信号に変換して録音します。
シャープとHPは、
電卓に直接接続可能な
マイクロカセットを使った専用レコーダーを発売しました。こちらの方が信頼性が高く便利でしたが、カシオの方式よりも高価でした。
フロッピーディスクは適度に安価で扱いやすい便利な保存手段です。例えば、
ヒューレット・パッカードは
HP-ILインターフェースを使用して
フロッピーディスクドライブを接続可能にしました。この
フロッピーディスクドライブ(HP 9114A/B)を利用すると、3.5インチ2DD
フロッピーディスクに保存することができます。
HP-ILを採用していた機種としては、HP-41C、HP-71B、HP-75C/Dなどがあります。
PCとの接続
プログラムやデータはパーソナル
コンピュータに転送でき、PC上で保存できます。PCとの接続手段としては、登場年代順にRS-232、
IrDA、USBなどがあります。PCを所有していることが前提ですが、ケーブルだけで済むので安価であり、カセットテープよりも高速です。初期の例としては、カシオのFX-603PとFA-6インターフェースがあります。この場合、プログラムやデータは
プレーンテキストとして転送されるため、保存だけでなく、PC上の
テキストエディタで
編集も可能です。
最近では、
フラッシュメモリなどの不揮発性メモリを挿入するスロットを備えているものもあります。
1980年代には、ハイエンドの
電卓としてプログラム
電卓とポケット
コンピュータが存在し、両者はよく似ていました。例えば、どちらも非構造化
BASICでプログラミング可能で、ほぼ例外なく
QWERTY配列のキーボードを備えていました。
しかし、次のような違いがあります。
BASIC搭載のプログラム
電卓には
電卓型のキーパッドもあり、関数
電卓のように扱えるモードを備えている。
ポケット
[コンピュータ]]は、オプションで別のプログラミング言語を提供することが多い。例えば、
カシオ計算機のAI-1000(日本国外ではPB-2000)には、C、
BASIC、[[Prolog]、アセンブラ、(PB-2000のみ)LISPが提供されていた。
メーカーは両方の機器を製品として取り揃えていることが多く、カシオは当初、型番においてプログラム
電卓に"fx-"をつけ、ポケット
コンピュータには"pb-"をつけていました(後にFX型番でもフルキーで
電卓モードなしのポケコンも出しています)。
シャープは
BASIC搭載の全ての製品をポケット
コンピュータとして販売していました。
主なプログラム電卓
カシオ計算機: FX-502P、FX-602P、FX-603P、FX-702P、FX-850P、Casio 9850シリーズ、Casio 9860シリーズ、Casio ClassPad 300
ヒューレット・パッカード: HP-10Cシリーズ、HP-25、HP-28シリーズ、HP 35s、HP-41C、HP 48シリーズ、HP-65、HP 49/50シリーズ、HP 38G、HP Prime
シャープ: PC-1401、PC-1403
テキサス・インスツルメンツ: TI-58 C、TI-59、TI-66、TI-84 Plus シリーズ、TI-Nspireシリーズ、
TI-89 シリーズ、
TI-92シリーズ
Elektronika(ソ連・ロシアのブランド): B3-21、B3-34、MK-61、MK-52、MK-85、MK-90、MK-92、MK-98、MK-152、MK-161
Sinclair(英国): Sinclair Cambridge Programmable