HP-10Cシリーズ
プログラミング

HP-10Cシリーズはキーストローク方式のプログラミングが可能である。
しかしながら、同じHP-10Cシリーズでも機種によって利用可能なプログラミング機能は下表の通り様々である。
| 機能 | Function | 12C系 > HP 10C | 12C系 > HP 12C | 12C系 > HP 12C  Platinum | 16C系> HP 16C | 15C系> HP 11C | 15C系> HP 15C | 15C系> DM-15 M80 | 15C系> DM-15 M1B |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| レジスタ数  | Memory Registers | 0...10 | 7...20 | 20 | 1...30 | 1...21 | 3...67 | 3...101 | 3...101 |
| プログラム行数  | Program Steps | 79...9 | 99...8 | 最大399 | 203...0 | 203...63 | 448...0 | 896...210 | 1603...917 |
| バックスペース | BSP / ← | No  | No  | No  | Yes (BSP) | Yes (←) | Yes (←) | Yes (←) | Yes (←) |
| ラベル分岐  | GTO LBL, GSB LBL | No | No | No | Yes (16個) | Yes (15個) | Yes (25個) | Yes (25個) | Yes (25個) |
| 絶対行番号分岐 | GTO n, GTO I  | Yes (n) | Yes (n) | Yes (n) | No | Yes (I) | Yes (I) | Yes (I) | Yes (I) |
| 条件分岐1 | x=0 | Yes | Yes | Yes | Yes | Yes | Yes  | Yes  | Yes  |
| 条件分岐2 | x≤y | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| 条件分岐3 | x≠0, x=y, x≠y | No | No | No | Yes | Yes | Yes  | Yes  | Yes  |
| 条件分岐4 | x>0, x<0, x>y | No | No | No | Yes | Yes | Yes  | Yes  | Yes  |
| 条件分岐5 | x≥0, x≤0, x<y, x≥y | No | No | No | No | No | Yes  | Yes  | Yes  |
| 特殊条件分岐 | MATRIX, SOLVE | No | No | No | No | No | Yes  | Yes  | Yes  |
| 高機能ループ  | DSE, ISG | No  | No  | No  | No | Yes | Yes | Yes | Yes |
| 単純ループ1  | DSZ | No  | No  | No  | Yes | Yes  | Yes  | Yes  | Yes  |
| 単純ループ2  | ISZ | No  | No  | No  | Yes | No  | No  | No  | No  |
| サブルーチン  | GSB, RTN | No  | No  | No  | Yes (4段) | Yes (4段) | Yes (7段) | Yes (7段) | Yes (7段) |
| フラグ  | SF, CF, F? | No | No | No | Yes (6個) | Yes (2個) | Yes (10個) | Yes (10個) | Yes (10個) |
| 間接アドレッシング | I , (I) | No  | No  | No  | Yes | Yes | Yes | Yes | Yes |
Yes:利用可能， No:利用不可
[F 1]...
1 2  10Cは金融電卓ではないが、ことプログラミング機能に関しては12Cに類似している。
1 2  HP-10Cシリーズでは基本的に1個のレジスタが7行のプログラム行に変換される。例えば11Cの場合、レジスタを最大の21個使用するとプログラムは63行しか使用できない。また、プログラムを最大の203行使用するとレジスタは1個しか使用できない。
↑  12Cは、この汎用数値レジスタのほかに金利計算用レジスタ5個(n, i, PV, PMT, FV)と等額継続回数用小レジスタ21個(N0...N20)を持つ。12Cでは汎用数値レジスタがキャッシュフロー用レジスタを兼ねる。
↑  12C Platinumは、この汎用数値レジスタのほかに金利計算用レジスタ5個(n, i, PV, PMT, FV)とキャッシュフロー用レジスタ最小58個(CF0...CF57)から最大81個(CF0...CF80)と等額継続回数用小レジスタ81個(N0...N80)を持つ。
↑  16Cの最大レジスタ数30個というのは、実数モードの場合。整数モードの場合は、ワード長によって例えば、4bit:407個,8bit:204個,16bit:102個,32bit:51個,56bit:30個,64bit:26個、等となる。
1 2 3 4 5  11C、15C及び16Cは、インデックスレジスタ1個(I)を含む。
↑  12C Platinumで240行以上のプログラム行を使用する場合には、プログラム行を7行使用する毎に利用可能なキャッシュフロー用レジスタが1個減少する。最大81個(CF0...CF80)（使用プログラム行が239行以下の場合）、最小でも58個(CF0...CF57)利用可能（プログラム行を394行以上使用している場合）。
1 2 3  15Cで高等数学機能（複素数、行列演算、ルートソルバー及び数値積分）を使用する場合は、利用可能なプログラム行数が減少する。減少数は、複素数でレジスタ5個分、行列演算で使用要素数の合計個分、ルートソルバーで5個分及び数値積分で23個分である。ただし、ルートソルバーと数値積分を同時に使用する場合は併せてレジスタ23個分の減少で済む。
1 2  BSP (backspace) 機能が利用できない機種（10C、12C及び12C Platinum）では、プログラムの最後に新しい行を追加したり、既存のプログラム行を上書きすることはできるが、プログラム内の各行を削除したり、既存のプログラム行の前に新しい行を挿入したりすることはできない。なお、12C Platinumにはバックスペース機能(←)があるがプログラムモードでは使用できない。
↑  11Cでは、15個のラベル（LBL0-9,A-E）が使用可能。15Cでは、25個のラベル（LBL0-9,.0-.9,A-E）が使用可能。16Cでは、16個のラベル（LBL0-9,A-F）が使用可能。
↑  10C、12C及び12C Platinumでは、絶対行番号を即値で直接指定した分岐(GTO n)が可能であり、11C及び15Cでは、絶対行番号をインデックスレジスタで間接指定した分岐(GTO I)が可能である。
1 2  15Cでは、複素数の比較による分岐及び行列記号の比較による分岐も可能。
1 2 3  15Cでは、 g TEST n 機能を通して x=0，x≤y 以外の条件分岐を利用可能。
↑  15Cでは、行列要素ラップアラウンド分岐、行ノルム分岐、フロベニウス・ノルム分岐及びルートソルバー分岐が利用可能。
1 2 3  11C及び16Cでは、ループカウンタとして使用可能なレジスタはインデックスレジスタ(I)のみ。15Cでは、間接アドレッシングを用いることによって、インデックスレジスタ以外のレジスタもループカウンタとして使用可能。
1 2 3 4 5 6  DSE (Decrement and Skip if Equal or less than) 命令、ISG (Increment and Skip if Greater than) 命令、DSZ (Decrement and Skip if Zero) 命令、ISZ (Increment and Skip if Zero) 命令がいずれも利用できない機種（10C、12C及び12C Platinum）でループを記述するには多少の困難がある。（プログラム例参照）
1 2  11C及び15CのDSE命令は、16CのDSZ命令の上位互換となっている。（プログラム例参照）
1 2  11C及び15CのISG命令は、16CのISZ命令の上位互換ではない。
↑  11C及び16Cでは、サブルーチンのネスティングは4段まで可能。15Cでは、サブルーチンのネスティングは7段まで可能。
1 2  GSB (Go Subroutine) / RTN (Return from Subroutine) 命令が利用できない機種（10C、12C及び12C Platinum）では、サブルーチン機能は使用できない。
↑  11Cでは2個のユーザーフラグが使用可能。15Cでは8個のユーザーフラグと2個のシステムフラグが使用可能。16Cでは3個のユーザーフラグと3個のシステムフラグが使用可能。
↑  16Cのインデックスレジスタの大きさは68ビット。11C及び15Cのインデックスレジスタの大きさは他のレジスタと同じく56ビット。
1 2  間接アドレッシング機能が利用できない機種（10C、12C及び12C Platinum）では、最大でも最初の20個のレジスタ(R0-R19)しかアクセスできない。このプログラミングモデルはチューリング完全ではない。