スタック電卓 calcr ver0.16b
仕様とは思えない不具合があったので力ずくでねじ伏せました。
3桁カンマ区切りも欲しかったので。
変更内容
- 3桁カンマ区切り表示できるようになりました(デフォルト)。桁区切りなしの表示にすることもできます。
- 小数点以下0を入力し続けても表示されない不具合を修正。
- -f -ck オプション廃止。-iオプションに統合。
"-iIK15FC"について
"-k"について(ついでに)
右ソフトキーはユーザがカスタマイズできるキーです。
"-k"オプションで右ソフトキーに何をさせるか設定できます。
デフォルトでは[R↓]です。
上の例では
"-kM"とあります。Mは[CHS]ですので、右ソフトキーは[CHS]として働きます。
"-i" "-k" "-p"オプション以下に続く文字列は共通
後述のプログラムコマンドの羅列です。
"-i" ではcalcr実行開始時に処理されるプログラムを記述します。
"-k" では右ソフトキーを押した時に処理されるプログラムを記述します。
"-p" では "RUN" メニューを選択した時に処理されるプログラムを記述します。
処理される内容は同じです。
以下
再掲示。
軽いけどディープな電卓。
かなり自分好みと言うか自己満足電卓。
きっかけ
WinodowsMobile用の電卓ソフトはすでにいっぱいあります。
一方、個人的にはhp 12C platinumを愛用していると言うこともあって、どうしてもスタック電卓の操作が体に馴染んでいます。
しかしながら、HP電卓のエミュレータは海外にたくさんあるものの、
- かんたんに使え、
- アドエスの前面キーボードが利用できる
スタック電卓ってないんですよね。
ないなら作ろう!
できる範囲でorz
ということで、作って見たしだい。
eVC++のHelloWorldスケルトンをいじりました。
というわけで画面は簡素。
超簡素。
10進数モード。実数が扱えます。
16進数モード。整数のみ。*キー(-iIオプションつきのときは#キー)で前面テンキーから直接A-Fが入力できるモードと数字入力モードがトグルします。
メニュー構成。少し変わりました。
プログラムはショートカットへ"-p"オプションで指定してください。例はBMIを計算するプログラムです。RUNで実行。
※3月5日追記
とーたく様からコメントをいただき、とりいそぎ、0入力後小数点以下表示されない不具合を修正し、ver 0.16bにしました。
上画面、左上隅に"0.16"とありますが、修正版では"0.16b"と表示されます。
ご了承願います。
動作確認
- Advanced/W-ZERO3[es]
- W-ZERO3[es](とーたく様ありがとうございます。)
インストール
- calcr.CABからCABファイルをダウンロード。
- アドエスで実行してインストール。
- 普通はこれでおしまい。
- もし、"."を"#"キーで入力したい方はcalcr.exeのショートカットオプションに"-iI"を追加してください。
- もし、最初から16進モードにしたい方は、calcr.exeのショートカットオプションに"-iZ"を追加してください。
- もし、[CustomKEY]でたとえば[CHS]をしたい方は、calcr.exeのショートカットオプションに"-kM"を追加してください。
- もし、最初からある程度計算した状態で起動したいときは、calcr.exeのショートカットオプションに"-i・・・"を追加してください。・・・は計算するためのプログラムコマンドです。
- なお、"-i・・・"、 "-p・・・"、"-k・・・"は共存します。"・・・"の部分は後述する共通のプログラムコマンドです。
キー
- 数字キー:数字 16進数モード時に[1⇔A]キーで1〜6キーから直接A〜Fが入力できます。
- A〜Fキー:数字(0xA〜0xZ)横画面にした時に便利。
- カーソルキー上:+
- カーソルキー↓:−
- カーソルキー←:×
- カーソルキー→:÷
- アクションキー:エンター
- *キー:小数点.16進数モードでは前面テンキーのトグル[1⇔A](-iIオプションを付けた場合はX⇔Y (レジスターXとYを交換))
- #キー:X⇔Y (レジスターXとYを交換)(-iIオプションを付けた場合は小数点.16進数モードでは前面テンキーのトグル[1⇔A])
- クリアキー:レジスターXをクリア([CLx]キーですね)
- ソフトキー左:fメニュー 10-16(基数の10進数と16進数トグル)、RUN(プログラム実行)、COPY X(Xレジスタのクリップボードへのコピー)、カンマ区切りトグル、フォントサイズ変更(Xレジスタにあらかじめフォントサイズをテキトウに数字で入力しておいて下さい。デフォルトは20です。)、*#キー入れ替え、Y^X、√、1/X、R↓(スタックロールダウン)、LSTx(計算直前のXレジスタ呼び出し)、CHS
- ソフトキー右:CustomKEYメニュー "-k"オプションで指定されたプログラムコマンドを即時実行します。例:"-kM"で[CustomKEY]は[CHS]キーとして利用できます。
- .キー:フルキー側で小数点を入力できます。
- Gキー:[1/X]キー
- Iキー:#*キーを入れ替えます。
- Lキー:[LSTx]キー
- Mキー:[CHS]キー
- Rキー:[R↓]キー
- Sキー:[X^2]キー
- Tキー:[√]キー
- Wキー:Xレジスタをクリップボードにコピー(Ctrl+Cは使えません、Wでコピーしてください。)
- Xキー:[X⇔Y]キー
- Yキー:[Y^X]キー
- Zキー:10-16 基数の10進数と16進数トグル
- [OK]キー:アプリケーション終了(最小化じゃないです。)
ショートカットオプション
- -i・・・ プログラム起動時に自動実行するプログラムコマンド
- -p・・・ RUNメニューで実行するプログラムコマンド
- -k・・・ CustomKEYメニューで実行するプログラムコマンド
使い方
例を使いながら。
12+24=
を計算します。
12
アクションキー(エンター)
34
+(カーソル上)
こんな感じ。
- スタックに数字を載せて行きます。
- 入力された数字はまずXレジスタにエンターキーで登録され、確定し、YレジスタにPUSHされます。
- 次に数字を入力すると、Xレジスタに登録されます。
- 次に演算キーを押すと、XレジスタとYレジスタで演算され、演算結果がXレジスタに格納されます。
こんな感じ。
使い方
じゃZレジスタとかTレジスタとか、使わないでいいじゃんと思うかもしれませんが、次の例を。
(12+34)/(56+78)*(89+12)=
この場合は
12
アクションキー
34
+ (12と34をたして)
56
アクションキー
78
+ (56と78をたして)
÷ (12と34をたした結果を56と78をたした結果で割って)・・・A
89
アクションキー
12
+ (89と12をたして)
× (Aの値と89と12をたした結果をかける)
使い方
使い方
10進と16進は基数を切り替えることになります。
16進時は基数が16になります。
だからHEXで"X=10"と表示されているとき、10進に表示を切り替えると"X=16"になりますよ。
基数が10進のときは小数点以下表示されますが、基数が16進のときは整数限定です。
基数が16進のとき、前面の小数点キーは[1⇔A]キーとなります。このキーは、1〜6キーがA〜Fを直接入力できるモードとトグルするキーになります。
プログラムコマンド
-p、-i、-kオプションのプログラムコマンドです。共通です。
大文字小文字区別します。
0 | 0キー入力 |
1 | 1キー入力 |
2 | 2キー入力 |
3 | 3キー入力 |
4 | 4キー入力 |
5 | 5キー入力 |
6 | 6キー入力 |
7 | 7キー入力 |
8 | 8キー入力 |
9 | 9キー入力 |
. | .キー入力 |
a | Aキー入力 |
b | Bキー入力 |
c | Cキー入力 |
d | Dキー入力 |
e | Eキー入力 |
f | Fキー入力 |
E | Enterキー入力 |
+ | +実行 |
- | −実行 |
* | ×実行 |
/ | ÷実行 |
C | Xクリア |
F | Xレジスタの値にフォントサイズを変更 |
G | 逆数1/X |
I | #*キー入れ替え |
K | 桁区切り表示のトグル |
L | LSTx実行 |
M | CHS実行 |
R | R↓実行 |
S | X^2実行 |
T | √実行 |
W | Xレジスタをクリップボードにコピー |
X | X⇔Y実行 |
Y | Y ^ X |
Z | 10進数と16進数の基数切り替え |
P | PAUSE レジスタと現在のプログラムの状態表示 デバッグに使ってね |
B | プログラム途中で終了 Break |
上以外の文字 | プログラム終了 Breakに同じ |
プログラムコマンドの例
というわけで
私にはHP電卓はおもろい存在なのです。
物好きな方は使って見てね。
超絶にわかりやすいマニュアル
YHPのころの日本後マニュアルがあったので確保しておきました。
HP12C日本語マニュアル
非常にわかりやすいです。
スタックの挙動についてマニュアル188ページ(PDFでは190ページ)以降にすばらしい解説がありますので、ぜひお読みください。
スタックの挙動はこれに準拠しています。
ソース
というわけで、ソース後悔。
注意事項
- [f]メニューを閉じる際、左カーソルキーで閉じると、もれなく演算×が行われてしまいます。いろいろ手を尽くしましたが回避方法がわかりませんでした。[f]メニューはソフトキーで閉じてください。申し訳ないです。
- 小数点以下数字を思い切り入力すると思わぬ誤差が表示されます。Cのdoubleとprintfの%gの限界です。表示ルーチンを自作すればいいんでしょうけど今のところ予定はないです。すみません。
- WithATOKで半角数字をOFFにしている場合は数字入力できません。今後対応できるか自信がありません。申し訳ないです。