電卓アプリの試作:レジスタと加算器

今後の電卓アプリ(昭和な電卓のシミュレータ)開発のための練習として, 固定小数点形式のレジスタ(電卓内部のデータ入力・計算の主要部品)を実装し, 加算器を実現してみる.

固定小数点形式?

現代のPCの内部では,数値は浮動小数点形式の二進数となっており, 表示の際にだけ,浮動小数点形式や固定小数点形式の十進数に 自動的あるいは強制的に変換されている.

一方,開発予定の昭和な電卓の内部および表示では, 数値データは常に固定小数点形式の十進数に留められるべき. そこで,1個のデータを,1個の数値としてではなく, 3個の文字列(符号部sgn,整数部ip,小数部fp)として管理.

そして,固定小数点形式の数値の入力処理には,状態遷移モデルを利用予定.

固定小数点入力の状態遷移図
  • 丸:状態
    • 0:未入力
    • sgn:符号部入力中
    • ip:整数部入力中
    • fp:小数部入力中
    • f0:小数部ゼロ連続入力中
  • 矢印:遷移,イベント/アクション
  • イベント:文字入力
  • アクション:
    • 変数k:入力中の文字
    • 変数sgn:符号部バッファ
    • 変数ip:整数部バッファ
    • 変数fp:小数部バッファ
    • 変数fz:小数部ゼロ連続バッファ
    • NOP:処理なし(no operation)
デモンストレーション
dat:
acc: