スタック電卓 calcr ver0.14

お応えできるご要望に対応してみました。
また、右ソフトメニューをカスタマイズできるようにしてみました。
メニュー構成がガチャガチャ変わってしまってすみません。
今度こそFIXにしたいけど、要望があれば修正するんだろうなぁ。

変更内容

  • 右ソフトメニューを[CustomKEY]メニューにしました。
    • 起動オプションに "-k" をつけて利用します。
    • たとえば "-kR" オプションにすれば、CustomKEYは[R↓]として働きます。
    • たとえば "-kG" オプションにすれば、CustomKEYは[1/X]として働きます。
    • たとえば "-kM" オプションにすれば、CustomKEYは[CHS]として働きます。
    • なお、-kオプションを指定しなかったときのデフォルトの挙動は[R↓]にしています。
    • "-k"オプションに続く文字列は "-p" オプションと同じです。
    • つまり "-p" とは別にもうひとつプログラムコマンドをワンキーで実行できるようにしたものです。
  • Xレジスタの値をクリップボードにコピーできるように変更。
  • フルキーボード側から小数点、R↓、X⇔Y、1/X、CHS、LSTx、√を入力できるようにしました。四則演算はカーソルキーでよろしくです。
  • フルキーボードの操作にあわせてプログラムコマンドを変更。
  • 入力桁数を整数部+小数部合わせて15桁に設定。
  • 10進表示時の無駄な小数点以下の0を非表示に変更。整数部の桁数+小数部の桁数を合わせた最大桁数を15桁に設定。
  • 10進表示時は"DEC",16進表示時は"HEX"と表示するように変更。

以下

掲示
軽いけどディープな電卓
かなり自分好みと言うか自己満足電卓。

きっかけ

WinodowsMobile用の電卓ソフトはすでにいっぱいあります。
一方、個人的にはhp 12C platinumを愛用していると言うこともあって、どうしてもスタック電卓の操作が体に馴染んでいます。
しかしながら、HP電卓エミュレータは海外にたくさんあるものの、

  • かんたんに使え、
  • アドエスの前面キーボードが利用できる

スタック電卓ってないんですよね。

ないなら作ろう!
できる範囲でorz

ということで、作って見たしだい。
eVC++のHelloWorldスケルトンをいじりました。

というわけで画面は簡素。

超簡素。
10進数モード。実数が扱えます。
http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.14/image10.jpg
16進数モード。整数のみ。*キー(-ckオプションつきのときは#キー)で前面テンキーから直接A-Fが入力できるモードと数字入力モードがトグルします。
http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.14/image16.jpg
プログラムはショートカットへ-pオプションで指定してください。例はBMIを計算するプログラムです。RUNで実行。
http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.14/imageprogram.jpg
Advanced/W-ZERO3[es]でしか動作確認していませんが、多分W-ZERO3[es]でもいけるんじゃないかなぁと思います。
calcrの"r"は、RPN電卓のRをもじってます。
「カルクアール」と呼んでください。

インストール

  1. calcr.CABからCABファイルをダウンロード。
  2. アドエスで実行してインストール。
  3. 普通はこれでおしまい。
  4. もし、"."を"#"キーで入力したい方はcalcr.exeのショートカットオプションに"-ck"を追加してください。
  5. もし、最初から16進モードにしたい方は、calcr.exeのショートカットオプションに"-iZ"を追加してください。
  6. もし、[CustomKEY]でたとえば[CHS]をしたい方は、calcr.exeのショートカットオプションに"-kM"を追加してください。
  7. もし、最初からある程度計算した状態で起動したいときは、calcr.exeのショートカットオプションに"-i・・・"を追加してください。・・・は計算するためのプログラムコマンドです。
  8. なお、"-i・・・"、 "-p・・・"、"-k・・・"は共存できるはずです。たぶん。"・・・"の部分は後述する共通のプログラムコマンドです。

キー

  • 数字キー:数字 16進数モード時に[1⇔A]キーで1〜6キーから直接A〜Fが入力できます。
  • A〜Fキー:数字(0xA〜0xZ)横画面にした時に便利。
  • カーソルキー上:+
  • カーソルキー↓:−
  • カーソルキー←:×
  • カーソルキー→:÷
  • アクションキー:エンター
  • *キー:小数点.16進数モードでは前面テンキーのトグル[1⇔A](-ckオプションを付けた場合はX⇔Y (レジスターXとYを交換))
  • #キー:X⇔Y (レジスターXとYを交換)(-ckオプションを付けた場合は小数点.16進数モードでは前面テンキーのトグル[1⇔A])
  • クリアキー:レジスターXをクリア([CLx]キーですね)
  • ソフトキー左:fメニュー 10-16(基数の10進数と16進数トグル)、RUN(プログラム実行)、COPY X(Xレジスタクリップボードへのコピー)、

Y^X、√、1/X、R↓(スタックロールダウン)、LSTx(計算直前のXレジスタ呼び出し)、CHS

  • ソフトキー右:CustomKEYメニュー "-k"オプションで指定されたプログラムコマンドを即時実行します。

例:"-kR"で[CustomKEY]は[R↓]キーとして利用できます。

  • .キー:フルキー側で小数点を入力できます。
  • Gキー:[1/X]キー
  • Lキー:[LSTx]キー
  • Mキー:[CHS]キー
  • Rキー:[R↓]キー
  • Tキー:[√]キー
  • Wキー:Xレジスタクリップボードにコピー(Ctrl+Cは使えません、Wでコピーしてください。)
  • Xキー:[X⇔Y]キー
  • Zキー:10-16 基数の10進数と16進数トグル
  • [OK]キー:アプリケーション終了(最小化じゃないです。)

ショートカットオプション

  • -ck *キーと#キーを入れ替えます。
  • -p・・・ RUNメニューで実行するプログラムコマンド
  • -i・・・ プログラム起動時に自動実行するプログラムコマンド
  • -k・・・ CustomKEYメニューで実行するプログラムコマンド

使い方

例を使いながら。

12+24=

を計算します。

12
アクションキー(エンター)
34
+(カーソル上)

こんな感じ。

  1. スタックに数字を載せて行きます。
  2. 入力された数字はまずXレジスタにエンターキーで登録され、確定し、YレジスタにPUSHされます。
  3. 次に数字を入力すると、Xレジスタに登録されます。
  4. 次に演算キーを押すと、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をたした結果をかける)

Zレジスタまで使い、結果がXレジスタに残りました。
場合によってはTレジスタまでいくこともあります。

使い方

クリアキーを押すとXレジスタのみ消えます。
全部のレジスタを消したかったら

  1. クリアキーでXレジスタをクリアし
  2. アクションキー連打

アクションキーを押すと、すでに確定されたXレジスタの値がPUSHされていきます。
よって全部のレジスタが0になります。

使い方

逆に計算した結果POPされると、Tレジスタの値がZレジスタにコピーされます。
よって

  1. Xレジスタに定数を入力
  2. アクションキー連打 Tレジスタまでいっぱいにすると。
  3. この定数を煮るもよし、焼くも良し。Tレジスタからどんどんコピーされてきます。

使い方

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クリア
G 逆数1/X
L LSTx実行
M CHS実行
R R↓実行
T √実行
P PAUSE レジスタと現在のプログラムの状態表示 デバッグに使ってね
W Xレジスタクリップボードにコピー
X X⇔Y実行
Y Y ^ X
Z 10進数と16進数の基数切り替え
B プログラム途中で終了 Break
上以外の文字 プログラム終了 Breakに同じ

プログラムコマンドの例

こんな感じでショートカットでプログラムしてください。RUNで実行です。
http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.14/imageprogram.jpg

  • BMIを計算する インプット Y:身長(cm) X:体重(kg) → アウトプット X:BMI
    -pX100/E*/
  • 緯度経度を実数にする インプット Z度 Y分 X秒 → アウトプット X:緯度経度の実数値
    -pE3600/X60/++EERRR

というわけで

私にはHP電卓はおもろい存在なのです。
物好きな方は使って見てね。

超絶にわかりやすいマニュアル

YHPのころの日本後マニュアルがあったので確保しておきました。
HP12C日本語マニュアル
非常にわかりやすいです。
スタックの挙動についてマニュアル188ページ(PDFでは190ページ)以降にすばらしい解説がありますので、ぜひお読みください。
スタックの挙動はこれに準拠しています。

ソース

というわけで、ソース後悔

全ソース

全部後悔

  1. eVC4++
  2. SP4
  3. PocketPC2003SDK

を入れれば見れますよ。

注意事項

  • WithATOKで半角数字をOFFにしている場合は数字入力できません。今後対応できるか自信がありません。申し訳ないです。