[表紙へ]
▼ 変更履歴

第2章 SwissMicros DM42

この章では、SwissMicros社のプログラマブル関数電卓DM42について紹介します。 この章を読むためには、HP-42Sの知識が必要です。 HP-42Sについては、「第1章 HP-42S」を参照してください。

このレビューは、電卓OS DMCP v3.15と電卓アプリケーション DM42PGM v3.14 に基づいています。

DM42正面

目次

  1. SwissMicros DM42 とは?
    1. エミュレータ"Free42"
    2. DMCPとDM42PGM
    3. DM42の主な半導体
  2. SwissMicros DM42 の特徴
    1. 高級感のある筐体
    2. CPUが高速化
    3. SHARP製メモリー液晶
    4. 計算精度の向上
  3. DM42に関する資料
  4. DM42に追加された機能
    1. USBディスク
    2. 仮想変数
    3. F-ボタン
    4. フラグ状態インジケーター
    5. LCDスクリーンショット
    6. 電源OFF時に画像が表示される
    7. グラフィックス解像度の向上
    8. キーによる直接文字入力が可能になった
    9. プリンタ出力をファイルに出力できる
    10. 時計機能
    11. SETUPメニュー
  5. ファームウェアの更新
    1. ファームウェアの更新方法
    2. dm_toolとdfu_util
    3. QSPI領域のファームウェア更新
  6. RTC補正
    1. RTC補正の方法
    2. CALIBプログラム
  7. DM42の電池交換
  8. 総評

SwissMicros DM42 とは?

SwissMicros DM42は、HP-42Sのエミュレータ"Free42"をSwissMicros社独自のハードウェアに搭載したものです。 そのため、HP-42Sのクローン電卓ということになっています。 しかし、DM42は、HP-42Sと比べて追加・改良された機能も多く、HP-42Sの進化版とも言えます。

エミュレータ"Free42"

Free42は、HP-42Sのエミュレータです。名前の通り無料です。 Windows, Mac, Linux, iOS, Android上で動作します。

Free42 : An HP-42S Calculator Simulator

2020年3月現在でも頻繁に更新されていますので、安定して動作します。 単にHP-42Sをエミュレーションするだけでなく、プログラムのファイル出力ができたり、プリンタの出力をファイル出力することもできます。 PCやスマホ上で動作するので、実機と違って非常に高速に動作します。

Free42は、Free42 DecimalとFree42 Binaryの2種類があります。
Free42 Decimalは、10進数で計算するので、2進数と10進数の相互変換時に生じる丸め誤差がありません。その反面、計算速度は低下します。
Free42 Binaryは、2進数で計算するので、丸め誤差があります。その代わり、CPUのFPUを使用するので、より高速に動作します。
通常はFree42 Decimalを使うのが無難と思われます。Free42 Decimalでも十分高速に計算できます。
Free42 Binaryを使うときは、よほど計算速度が必要なときだけでしょう。

Free42には、エミュレータならではの便利な機能もあります。 PC用Free42がプログラム入力モード([SHIFT][PRGM]と操作)になっている状態でFree42のメニューバーのEditメニューのCopyを実行すると、クリップボードにテキスト化されたプログラムが入ります。

Free42 : プログラムをコピーする

それをテキストエディタへペーストすることができます。テキストエディタでプログラムを読めるので、非常に便利です。

逆にクリップボードからFree42へプログラムのペーストも可能です。

スマホ用のFree42でも液晶画面に相当する部分をタッチするとメニューが表示されて同様の機能が使えます。

▲目次へ

DMCPとDM42PGM

DMCPは、DM42のOSです。DM42PGM(DM42 program)は、Free42をDM42用に移植したものです。 これらの用語はファームウェアの更新(後述)のために必要ですので、覚えておく必要があります。

DMCPは、シングルタスクOSで同時に1つだけのプログラムを実行できます。 通常、DMCPは、DM42PGMを自動的にロードして起動するだけですので、ファームウェアの更新時以外にDMCPの存在を意識する必要はありません。 DMCPの必要性ですが、おそらくはOSがないとFree42をDM42へ移植できなかったからと思われます。

2020年3月現在、DMCP用の本格的なアプリケーションはDM42PGMしかないようですが、SDKが公開されています。

DMCP_SDK
SDKdemo

将来的にDM42でDM42PGM以外のアプリケーションが登場するかもしれません。

▲目次へ

DM42の主な半導体

DM42に使われている半導体は、HP-42Sに使われているものと完全に異なっています。 半導体の違いは、DMCPとDM42PGMが吸収します。

下の写真は、DM42の基板の写真と主要な半導体を拡大した写真です。

▲目次へ

SwissMicros DM42 の特徴

高級感のある筐体

DM42は、関数電卓としては高級感のある筐体になっています。 大きさはHP-42Sよりもわずかに小型になっています。 液晶パネルの上にゴリラガラスが装着されており、透明プラスチックよりも透明度が高く光沢があります。 背面カバーが金属でできているため本体重量は178g(筆者の実測値)とかなり重くなっています。

残念なことに両端のキーを押すと、下の写真のように本体が傾きます(右側が浮いている)。
そのため、両端のキーを押す度に本体がグラグラと揺れます。

両端のキーを押すと、筐体が傾く

裏面のゴム足をもっと左右に広げて配置してくれれば改善したと思われます。

裏面のゴム足

キーの感触は、硬すぎると思います。 キーの感触が硬めの HP 12c Platinum よりもはるかにキーの感触が硬いのです。 そのため、キーを素早く押すことが難しくなっています。

▲目次へ

CPUが高速化

HP-42SのCPUは、HP Saturn (Lewis) 1MHzという性能が良いとは言えないものでした。 HP Saturnは、CISCかつパイプラインもないので、1命令の実行に多くのクロック数を必要とします。

一方、DM42のCPUは、ARM Cortex-M4 80MHzという遥かに強力なものが搭載されています。 クロック周波数だけで比較すると80倍です。しかし、ARMは、RISCですので、1命令の実行に必要なクロック数はHP Saturnよりも少ないのです。 そのため、クロック周波数の差以上にDM42のCPUは高性能なのです。

DM42は、電池で動作しているとき、節電のために24MHzで動作します。 DM42とPCをmicro USBケーブルで接続すると、PCから給電されるので、DM42はクロック周波数80MHzで動作します。

参考ですが、80MHz時にHP-42Sの約750倍、24MHz時に約250倍という報告もあります。

電子工作やってみたよ「HP電卓(DM42)機種ごとの演算速度の比較 4」

この報告は、単純ループを実行したときの結果なので、関数電卓的な計算は行っていません。 あくまでも参考にした方が良いと思われます。

▲目次へ

SHARP製メモリー液晶

DM42は、解像度400×240画素のSHARP製メモリー液晶を搭載しています。 HP-42Sの狭い液晶と違って、全スタックレジスタX,Y,Z,Tを同時に表示できます。 さらに全スタックレジスタと一緒にALPHAレジスタも表示できます。

4段スタックレジスタとALPHAレジスタが同時に表示

HP-42Sはプログラムを2行しか表示できませんでしたが、DM42は8行も表示できます。

DM42でプログラムを表示

SHARP製メモリー液晶は、DM42の電源をOFFにしたときでも画像を表示できます。

電源OFF時に画像を表示

メモリー液晶は、それ自体で画像情報を記憶することができるので、CPUが停止していても画像を表示できます。 もちろん電源OFF時でもメモリー液晶が消費する電力はわずかですので、電池の消耗を気にする必要はありません。

▲目次へ

計算精度の向上

HP-42Sの計算精度は、表示12桁、内部15桁でした。
一方、DM42は、Free42 Decimalと同様に表示・内部ともに34桁の高い精度を実現しています。

SwissMicrosのページによると、DM42は、Free42 Decimalと同じ"Intel Decimal Floating-Point Math Library"を使っています。 そのライブラリは、"IEEE 754-2008 quadruple precision decimal floating-point"という浮動小数点形式によって10進数34桁の精度を実現しています。 この浮動小数点形式は、電卓でよく使われているBCD(2進化10進数)よりもメモリ効率の良いDPD(Densely Packed Decimal)という表現方法を使っています。

1÷3の計算をしてから[SHIFT][SHOW]で34桁の表示が確認できます([SHOW]を押し続けている間表示される)。

1÷3の結果(34桁)
▲目次へ

DM42に関する資料

DM42に関する資料は以下のものがあります。

  1. DM42 User Manual(筆者が読んだのは、v3.14, July 2019)
  2. HP-42S 取扱説明書
  3. HP-42S Owner's Manual
  4. HP-42S Programming Examples and Techniques
  5. An Alternative HP-42S/Free42 Manual Version 0.7 ─ January 2010

1のSwissMicros社の作成したマニュアル(英語版のみ)には、DM42特有のことしか書かれていません。 つまり、DM42の計算機能やプログラミング機能のことは何も書かれていません。 そのため、最低でも2の「HP-42S 取扱説明書」を読む必要があります。3は、2の英語版です。

4は、2に書かれているプログラミングの説明を読んでからさらにプログラミングを勉強したい人向けです(英語版のみ)。

5は、Free42の作者が推薦するHP-42SとFree42の簡易マニュアルです。 HP-42SとFree42の操作方法の概要がまとめられており、41ページ(著作権の文章を除くと35ページ)しかないので、2の「HP-42S 取扱説明書」(372ページ)よりも非常に短くなっています。 しかし、筆者としてはあまりお勧めしません。書いていることが簡潔すぎるので、結局は2の「HP-42S 取扱説明書」を読まないと分からないことが多すぎるのです。 さらにブラジル人が書いているせいかクセのある英語で書かれていて読み難く、ただでさえページ数が少ないのにHP 33sなどの無駄な話題が書かれています。 この資料はFree42特有の機能が書かれているところだけが有益と言えます。

以上のようにDM42に関する資料はまとまったものがないのですが、1と2だけを読めば十分です。
最初に2の「HP-42S 取扱説明書」を読んで、次に1の"DM42 User Manual"を読めば、十分です。

▲目次へ

DM42に追加された機能

HP-42Sから追加された機能を紹介します。

USBディスク

"DM42 User Manual"は、同じものをFAT diskあるいはUSB diskと称しています。 電卓内部で操作するときはFAT diskと言い、PCとUSB接続したときはUSB diskと称しているようです。 しかし、表記が統一されていないと不便ですので、この文章では「USBディスク」とします。

HP-42Sの最大の欠点であったデータ外部出力ができないという問題はこれで解決されました。 [SHIFT][SETUP]と操作してSETUPメニューを出してから"File" → "Activate USB Disk"でUSBディスクを起動します。 micro USBケーブルでPCと接続すると、PCにUSBディスクがマウントされます。 PCから見ると、USBメモリのようなものですので、ファイルの出し入れはドラッグ&ドロップで容易にできます。 PCとの接続を外す前にPC側で「取り出す」必要があります。そうしないとファイルが壊れます。 PC側で取り出すと自動的にUSBディスクは終了します。 自動的に終了しないときは[EXIT]キーでUSBディスクを終了させないとファイルが壊れる可能性があります。

便利なUSBディスクですが、筆者の経験からmacOSと相性が悪いようです(DM42PGM v3.14とmacOS 10.15.3のとき)。 macOSマシンと接続してファイル操作を行うとDM42がフリーズすることが多いのです。 DM42がフリーズしてしまうと背面のRESETボタンで強制再起動するしかありません。 そのとき、操作したファイル以外を含めて多くのファイルが壊れてしまいます。

DM42のUSBディスクで使われているFATファイルシステムは、ジャーナリングファイルシステムではないので、ファイル管理領域が壊れやすいのです。そのため、操作したファイル以外のファイルも巻き添えを喰らうのです。

DM42は、Windowsと接続した方が安定して使用できます。 筆者の経験上、DM42をWindowsと接続してUSBディスクのファイル破損を経験したことはありません。 しかし、USBディスクがFATファイルシステムである以上、Windowsと接続してもファイル破損の可能性はあり得ます。 大事なファイルはバックアップするべきでしょう。

筆者の場合、USBディスクの内容が壊れたとき、USBディスクをフォーマットしてから以下のページから DM42_FAT.zip をダウンロードし、その内容(/HELP/, /OFFIMG/, /PROGRAMS/)をUSBディスクへコピーしました。

DM42 FAT files

そして、バックアップしていた自分独自のファイルをコピーしました。

▲目次へ

仮想変数

DM42は、HP-42Sよりも機能が増えたので、DM42の開発者は新機能の設定などを格納する新しい方法を検討しました。 当初はフラグを増やしたり、記憶レジスタ(Storage registers)を拡張することを検討したそうですが、それらはボツになりました。

結局、DM42の開発者は「仮想変数」という方法で対応しました。 仮想変数は、カタログメニューに表示されないのですが、変数名を文字列で直接指定するとアクセスできる特殊な変数です。

仮想変数は、以下のものがあります。

"RefLCD"のことを調べていると、"Goose"という単語に遭遇しました。 「ガチョウ」という意味ですが、DM42の場合、プログラム実行中に画面の左から右へ移動する動作を繰り返す三角形の記号のことです。

DM42のGoose

どうして三角形がGooseと言われているのか意味が分かりませんでしたが、MoHPCの"HP-41C/CV/CX Programming"を見ると意味が分かりました。 HP-41シリーズの14セグメント液晶で表示されるGooseは確かにガチョウに見えなくはないのです。

▲目次へ

F-ボタン

HP-42Sの場合、メニューを選択するときに6つのキー[Σ+][1/x][√x][LOG][LN][XEQ]を使っていました。 メニュー表示中にそれらのキーの本来の機能を使いたいとき、[SHIFT][TOP.FCN]の操作が必要で手間がかかりました。

その問題を解決するためにDM42のキーボードにF-ボタンというメニュー専用キーが追加されました。 下の写真の黒くて何も印刷されていない6つのキーがF-ボタンです。

F-ボタン

F-ボタンのおかげで[SHIFT][TOP.FCN]の操作が不要になりました。

その代わり、TOP.FCNメニューが割り当てられていた[0]キーにSETUPメニュー(後述)が割り当てられました。
SETUPメニューは、DM42特有の設定ができるメニューです。

何もメニューが表示されていないとき、F-ボタンは以下のような機能を持ちます。
F-ボタンは、左からF1, F2, F3, F4, F5, F6と命名されています。

[F1] Helpとして"DM42 Quick Reference Guide"が表示されます(USBディスクの/HELP/dm42help.htm)。
[F2] F-ボタンのメニューを表示/非表示します。
[F3] 機能なし
[F4] ブザーの音量を上げます。
[SHIFT][F4] ブザーの音量を下げます。
[F5] スタックの表示方式(左寄せ、右寄せ、右寄せ+下線)を変更します。
[SHIFT][F5] フォントを sans あるいは HP font に変更します(デフォルトは sans)
[F6] フォントを大きくします。
[SHIFT][F6] フォントを小さくします。

F-ボタンの機能は覚えにくいので、[F2]を押した時に表示されるメニュー(下図)が役に立ちます。

F-ボタンのメニュー
▲目次へ

フラグ状態インジケーター

HP-42Sは、フラグという1bit単位の記憶装置を持っています。DM42のフラグも仕様は同一です。 フラグは00番から99番までの100個が存在し、電卓の設定変更や状態取得に利用します。

ところが、フラグの00番〜10番と81番〜99番の合計30個は、ユーザーフラグと呼ばれ、ただの記憶装置として使用します。 ユーザーフラグは、主にプログラムで使用します。

DM42は、フラグ状態インジケーターという機能が追加され、フラグの00番〜10番の状態を常に表示できるようになりました。

フラグ状態インジケーター

画面の右上の方にある0〜10の白黒反転した数値がフラグ状態インジケーターです。 フラグがセットされているときだけ表示されます。つまり、上の写真ではフラグ0から10の全てがセットされていることになります。

この機能の用途は、0〜10のフラグによって動作を変更できるプログラムがあったとき、フラグの設定状態の確認が容易になるということだと思われます。

▲目次へ

LCDスクリーンショット

[SHIFT]キーを押しながら[DISP]キーを押下すると、LCDのスクリーンショットが撮れます。 スクリーンショットは、USBディスクの/SCREENS/に保存されます。 ファイル名はタイムスタンプを表したものになり、拡張子は.bmpになります。

例えば、"20200221-22494201.bmp"というスクリーンショットが作成された場合、2020年2月21日22時49分42.01秒に作成されたスクリーンショットという意味になります。

▲目次へ

電源OFF時に画像が表示される

前述のように電源OFF時に画像(OFF Images)が表示されます。 DM42PGMに埋め込まれた画像が1枚だけありますので、特に画像ファイルを用意しなくても電源OFF時に画像が表示されます(DM42PGM v3.14はフクロウの絵)。

さらに画像を増やしたいときや自分の好きな画像を表示したいときはUSBディスクの/OFFIMG/に画像ファイルを設置します。 画像ファイルが2枚以上あれば、電源を入り切りする毎に画像が切り替わります。 画像ファイルは、400×240画素で2値白黒の.bmpファイルだけが利用可能です。

画像の例は、以下から取得できます。「USBディスク」で説明したDM42_FAT.zipにも同じものが入っています。

Collection of Images displayed at power off state
▲目次へ

グラフィックス解像度の向上

HP-42Sのグラフィックス解像度は、131×16画素でした。 DM42の初期設定でもプログラムで描画できるグラフィックス解像度は同じ解像度となっています。 HP-42Sとの互換性のためです。

GrMod仮想変数を使って200×120画素、あるいは400×240画素の画像モードにすることもできます。 もちろんこれらの解像度を使用するプログラムは、HP-42Sとの互換性はなくなります。

▲目次へ

キーによる直接文字入力が可能になった

HP-42Sは、文字入力をメニューで行っていたので、不便でした。 しかし、DM42は、キーによる直接文字入力が可能になりました。
ALPHAメニューのときとSETUPメニュー(後述)のときで操作方法が異なります。

[SHIFT][ALPHA]と操作して、ALPHAメニューを表示します(ALPHAレジスタの内容は空とします)。

Alpha Input Mode : Original

画面の上の中央の付近に[ ]が表示されていますが、これはHP-42Sと同様の文字入力モードであることを示しています。
[SHIFT][▼]と操作すると、[ ]の部分が[a]に変わって小文字をキーによって直接入力することが可能になります。

Alpha Input Mode : Lower

さらに[SHIFT][▼]と操作すると、[a]が[A]に変化して大文字をキーによって直接入力することが可能になります。

Alpha Input Mode : Upper

直接入力できる文字はキーの右側に印刷されていますが、キーの上の文字([SHIFT]で有効になる機能)と同じ黄色なので、見辛く感じます。
HP-41シリーズのように青色にしてもらえれば良かったのですが。

キーに印刷されたアルファベット

SETUPメニューでファイル名を入力するとき、[SHIFT]キーだけで入力モードを切り替え可能です。

Input Mode: 0

このとき、HP-42Sのようなメニューによる文字入力は使用できません。キーによる直接入力のみ可能です。 "Input Mode: 0"と表示されているのは、数値入力モードという意味です。 [SHIFT]キーを押す毎に"0"→"a"→"A"と切り替わります。

▲目次へ

プリンタ出力をファイルに出力できる

HP-42Sの場合、感熱式プリンタHP 82240AあるいはHP 82240Bを使用することができました。 DM42もプリンタ用赤外線出力がありますので、同じプリンタを入手すれば、利用できます。

しかし、製造終了した古いプリンタを今から入手するのは大変です。 そのため、DM42はプリンター出力をUSBディスク上のファイルとして出力できるようになっています。

[SHIFT][SETUP]と操作してSETUPメニューを表示してから"Printing"を選んで[ENTER]を押すと、以下のような画面が表示されます。

SETUPのPrinting
  1. Graphics Print : グラフィックスを.bmpファイルとして出力します。
  2. Text Print : テキストを.txtファイルとして出力します。
  3. Graphics in Text : Unicode "Block Elements"を使用してテキスト内にグラフィックスを再現します。
  4. Don't print to IR : プリンタへの赤外線出力を禁止する。
  5. Double NewLine : テキストの行間に1行分の余白を開ける。プリンタだけで有効。出力ファイルには反映されない。

3を除いたらFree42にも同様の機能があります。 プリンタの場合、テキストとグラフィクスを混在させて印刷できるのですが、Free42は、テキストにグラフィックスを入れることはできません。 それを解決するために3の機能"Graphics in Text"が追加されたのでしょう。

3の機能はテキスト出力にグラフィックスを挿入できるので、一見便利そうに思えますが、綺麗に表示できるフォントが限られています。
右下の画像では、Windows 10のSoruce Code Proフォントを使用しています(macOSの場合、Andale Monoというフォントで綺麗に表示できる)。

DM42の画面上のDPROTプログラム Graphics in TextによるDPROT
DM42の画面上のDPROT Graphics in TextによるDPROT

上の設定だけでは、プリンタ出力をファイルに出力することができません。
HP-42Sと同様に[SHIFT][PRINT][▲] PON と操作しておく必要があります。

▲目次へ

時計機能

HP-42Sになかった時計機能があります。電源ON時のみ時刻が表示されます。 ただし、RTC(リアルタイムクロック)用水晶振動子の精度が低く、補正を行わないと実用になりません。 補正については後述します。

▲目次へ

SETUPメニュー

DM42特有の機能の設定を行うメニューです(Free42の設定に相当するものも含まれる)。 [SHIFT][SETUP]で表示されます。

SETUPメニュー
  1. File : USBディスク関係の操作を行います(USBディスクの起動、プログラムのロード/セーブ)
  2. Calc.State : 電卓の状態(メモリ上の設定、レジスタ、変数、プログラム)をUSBディスクにロード/セーブします。
  3. Printing : プリンタ関係の設定。[SHIFT][PRINT]で表示されるPRINTメニューとは別物。
  4. Settings : 時計、多くの画面表示設定、ビープ音のON/OFF、そしてキーの自動リピートの速さを設定します。
  5. System : ブートローダー、DMCP、USBディスク(FAT Disk)のフォーマット、そしてテスト関係の機能があります。
  6. About : ファームウェアのバージョンが表示されます。

以上のようにDM42にとって非常に重要な設定が集まっています。

筆者が"File"機能で気になったことがあります。 複数のプログラムを選択して保存すると1つの.rawファイルになります(Free42と同様)。
一見すると1つにまとまって便利に見えますが、乱用するとどのファイルにどのプログラムが入っているのか分からなくなります。

▲目次へ

ファームウェアの更新

HP-42SはマスクROMだったので、ファームウェアの更新は不可能でした。 一方、DM42は、フラッシュメモリを搭載しているので、ファームウェア(DMCP+DM42PGM)の更新ができるようになっています。

ファームウェアの更新方法

DM42PGM (DM42 program) v3.15から状態ファイル(State file)の拡張子名が.s42から.f42へ変更されました(Free42に合わせた)。
ただし、v3.15でも.s42のファイルをロード可能です。このレビューはv3.14に基づいているので、拡張子を.s42とします。

DM42の最新ファームウェアは、以下の場所にアップロードされています。

DM42 Firmware / Programs

色々とファイルがありますが、基本的にはファイル名の右側に "DMCP OS + DM42 program combo" と書かれているファイルをダウンロードします。 DMCPとDM42PGMが一緒になったファイルです。ファイル名は DMCP_flash_X.XX_DM42-X.XX.bin となっています(Xは1桁の数値)。

ファームウェアの更新を行う前に電卓の状態(メモリ上の設定、レジスタ、変数、プログラム)をUSBディスクへ保存しておく必要があります。メモリが初期化されてしまうからです。 [SHIFT][SETUP]でSETUPメニューを表示してから"Calc.State" → "Save State"を選択し、電卓の状態を.s42ファイルとして保存します。 そして、念のためUSBディスク内のデータをPCにバックアップするべきでしょう。

ファームウェアの更新をするためにDM42のUSBディスクを起動してからPCとDM42をmicro USBケーブルで接続します。 そして、PC上で DMCP_flash_X.XX_DM42-X.XX.bin をDM42のUSBディスクのルートにコピーします。 コピーが終われば、PC上でDM42のUSBディスクを「取り出し」ます。 そうすれば、以下のような画面が表示されます。

Load Flash From FAT

[ENTER]を押すと更新が始まります。更新が終わると、DM42は再起動して、左上に"About"と表示された画面を表示します。

About

[EXIT]キーを押すと、メモリがクリアされて電卓の画面が表示されます。 これでファームウェアの更新は完了となります。
そして、[SHIFT][SETUP]でSETUPメニューを表示してから"Calc.State" → "Load State"と操作して、保存しておいた状態ファイル(.s42)をロードします。

▲目次へ

dm_toolとdfu_util

DMCP v3.5より前のOSでは、DM42のブートローダーとPCアプリケーション(dm_toolあるいはdfu_util)を使わないとファームウェアの更新ができなかったそうです。 それに比べると、DMCP v3.5からの更新方法は前述のように非常に簡単になったと言えます。

ファームウェアが完全に破損して、USBディスクすら使えなくなったときは、ブートローダーとdfu_utilというコマンドラインツールを使うしかないようです。

もう一つのPCアプリケーションdm_toolは、GUIでファームウェアの更新ができるPCアプリケーションだったのですが、"DM42 User Manual v3.14, July 2019"のP25に"Note that this method is obsolete and will be removed."と書かれています。 つまり、dm_toolは廃止されるということです。

▲目次へ

QSPI領域のファームウェア更新

通常は、QSPI領域(CPU外部のシリアルフラッシュメモリ)のファームウェアを更新する必要はありません。
2020年3月現在、QSPI領域のファームウェアは、2018年5月6日を最後に更新されていません。

▲目次へ

RTC補正

DM42のRTC(リアルタイムクロック)に使われている水晶振動子の精度はかなり低く感じます。 筆者の個体は、補正をしない状態で1日に約2.25秒進みました。 約27日で1分進むことになります。これでは頻繁に時計合わせをしないと実用になりません。

RTC補正の方法

補正値C(-511〜512)を求める計算式は以下のようになります。

P = (DRIFT ÷ (DATE × 0.0864))
C = (-220 × P) / (106 + P)

DATE : 経過日数(経過日数が多いほど補正精度が高くなる)
DRIFT : 経過日数の間にずれた秒数。進んでいるときは正数、遅れているときは負数。

例えば、DATE = 16日間、DRIFT = 36秒のとき、C = -27.3060になります。 これを四捨五入して整数化した値-27をテキストファイル"rtccalib.cfg"に書き込みます。 そして、DM42のUSBディスクのルートにこのファイルを設置するとRTCが補正されます。 RTCが補正されてもずれた時刻は直りませんので、時刻合わせをする必要があります。

後述のCALIBプログラムの作者によると、DATE(経過日数)は、1週間以上が望ましいとのことです。

上の補正をしてもまだ誤差があったとします。 例えば、補正後にDATE = 28日間、DRIFT = -8秒のとき、C = 3.4675になります。 この値を前回のC = -27.3060に加算すると、C = -23.8385になりますので、-24を"rtccalib.cfg"に書き込みます。 このようにして補正を繰り返すと、さらに精度が向上します。

▲目次へ

CALIBプログラム

"DM42 User Manual v3.14, July 2019"のP9にRTCの補正方法が書かれているのですが、補正に使用するP値の算出方法が書かれていません。 そこで筆者は、SwissMicros Calculator ForumにアップロードされているCALIBプログラム(calib.raw)を解析して前述の計算式を求めました。

CALIBプログラム

上のリンク先にCALIBプログラムの使用方法が英語で書かれているのですが、注意点があります。 この説明では、日付のフォーマットにdd.mmyyyy(日/月/年)の書式を使っているのですが、 DM42の初期設定はmm.ddyyyy(月/日/年)ですので、初期設定のままならmm.ddyyyyの形式で日付を入力しないとエラーになります。

日付の書式は、[SHIFT][SETUP]でSETUPメニューを表示してから"Settings" → "Set Date"と操作すると、最も左のF-ボタンを押して変更できます。 初期設定では、アメリカ合衆国でよく使われる"M>D>Y"(月/日/年)になっています。 DM42PGM v3.14の場合、ここにバグがあって、"D>Y>M"という奇妙な設定が表示されます。これは"D>M>Y"(日/月/年)の間違いです。

CALIBプログラムは、補正値Cを求めるだけですので、"rtccalib.cfg"ファイルへの書き込みは手動で行う必要があります。 そのため、無理にCALIBプログラムを使う必要はなく、上の計算式を使った方が楽かもしれません。

▲目次へ

DM42の電池交換

DM42PGM (DM42 program) v3.15から状態ファイル(State file)の拡張子名が.s42から.f42へ変更されました(Free42に合わせた)。
ただし、v3.15でも.s42のファイルをロード可能です。このレビューはv3.14に基づいているので、拡張子を.s42とします。

この作業をする前に電卓の状態(メモリ上の設定、レジスタ、変数、プログラム)をUSBディスクに保存しておく必要があります。 [SHIFT][SETUP]でSETUPメニューを表示してから"Calc.State" → "Save State"を選択し、電卓の状態を.s42ファイルとして保存します。 できれば、USBディスクの内容をPCにバックアップするべきでしょう。

DM42の電源をOFFにしてからDM42の筐体を開けるために2本のネジをプラスドライバーで外します。

DM42の裏面の2本のネジを外した様子

しかし、ネジを外しても背面カバーが開かない時があります。そのときはオプーナ(別売)を使いましょう。

オプーナを使ってDM42の筐体を開けている

電卓の下側に背面カバーを固定するための爪があるので、背面をカバーを下にずらすようにして外しましょう。

電卓の下側にある爪 背面カバーを下にずらしている様子

するとDM42の基板が見えます。基板に電池ホルダーがあります。

背面カバーの内側と基板 電池ホルダー

電池ホルダーにマイナスドライバーを差し込んで慎重に電池CR2032を抜き取ります。

電池ホルダーにマイナスドライバーを差し込んで電池が抜けそうになっている様子

上の写真と同様に新しい電池は+を上にして挿入します。 電池を入れると、DM42が起動して前述の"About"画面が表示されますが、この例では操作をせずに先に組み立てます。

背面カバーを電卓の下にある爪と合わせてから閉じます。 背面カバーを下からスライドさせるようにしてはめるにはコツが必要ですので、無理に閉じないで下さい。 無理なく閉じれれば、ネジを元通りに閉めます。

"About"画面が表示されたままになっているので、[EXIT]を押して電卓の画面を表示します。 そして、[SHIFT][SETUP]でSETUPメニューを表示してから"Calc.State" → "Load State"と操作して、保存しておいた状態ファイル(.s42)をロードします。 電卓の状態が元に戻ったら完了です。

▲目次へ

総評

DM42は、HP-42Sのクローンと言われていますが、CPUの高速化、USBディスク、大きくなった画面、そして文字入力の改善によってかなり進化したものとなっています。 HP-42Sのユーザーが「こんなものがあればいいな」と思っていたことを具体化した電卓と言えます。

DM42は、HP-42Sよりも多くの機能が追加されています。 ただし、追加された機能の多くは、入出力に関するものです。

計算機能に関しては、HP-42Sと一緒です。計算精度以外は何も改良されていません。 プログラミング機能も仮想変数に関するところを除けば、HP-42Sと一緖です。 そのため、第1章で述べたHP-42Sの「その他の欠点」も引き継いでいます。 良く言えば、HP-42Sの操作性を保ちつつ、うまく機能拡張できたとも言えます。

結局のところDM42は、HP-42Sの改良版ということです。 古くて難易度の高い操作ですので、筆者のようなHP-42S未経験者には難しく感じました。 ただし、DM42で追加されたSETUPメニューだけは、現代的な操作性になっていると感じました。

DM42は、以下のような問題点もあります。

  1. キーが硬すぎて速く押せない。
  2. 両端のキーを押すと筐体が傾く。
  3. RTCの補正が必要。
  4. 今時の関数電卓としては、重量が重い。178gもある。
  5. USBディスクとMacの相性が悪い(DM42PGM v3.14 + macOS 10.15.3のとき)

これらの問題は、致命的ではないのですが、できれば改善して欲しいものです。

DM42を誰に勧められるかというと、HP-42Sやその他のRPN関数電卓が好きだった人にしか勧めにくいと言えます。 なぜなら、今更になってHP-42Sという古いRPN関数電卓の操作を時間をかけて新しく覚える価値があるのかと言えば、あまりないからです。 あくまでもHP電卓マニア向けのものと言えるでしょう。 ただし、筆者のように物好きで購入する人間もいます。

▲目次へ

[表紙へ]