SHARP電子辞書BrainでLinux!

f:id:PocketGriffon:20220203214222j:plain

SHARPの電子辞書Brainで、Linuxを動かしてみたお話!

 

まず先にお伝えしたいのは、BrainでLinuxを起動できるようにし、環境整備をさせている方々への敬意を払いたい!用途が全く違う機種へのインプリメントなぞ相当な苦労があると思う。

まだ今も開発継続中みたいなので、作業のジャマにならないように気をつけてブログを書いていきたい(^^)

 

-----

多分2年ほど前、SHARPの電子辞書でWindowsCEを使える情報を知って、何台か手に入れていた。

f:id:PocketGriffon:20220203220537j:plain

そのうち一部の機種で遊んでいたが、WindowsCEでプログラムをする気になれず急激に飽きてしまい、そのままお蔵入りとなった。

 

久しく忘れていたのだが、先日Brainで検索してみたらLinuxが動くようになっているとか!

しかもなんとなく型番に見覚えがある!どうやら手持ちで動きそうだ。

動くと言われれば動かしたくなるってモンですよ(^-^)

 

インストール

Brain Hackers Wiki

上記URLにあるインストールページを何度か読む。

特に対応機種は大事!手元にある電子辞書を確認してみよう。

ウチにあるのはPW-SH2という機種だった。

これは狙ったわけではなくてたまたま(^^;;

 

次にダウンロードページから必要なイメージをダウンロードしてくる。

私は2022.02.01現在の最新版であるsdimage-2021-04-19-195555.zipを利用した。

その後はRaspberryPiなどでおなじみの、SDカードへのイメージ書き込みだ。

 

この先で実は少しハマってしまった。

PW-SH2本体へSDカードを挿入し本体裏面のリセットボタンを押すのだが、普通に電子辞書が起動してしまう。何かキーを押しながら起動するのかな…?とか思いつつ調べてみるのだが、そういうワケでもなさそうだ。

3枚のSDカードに焼きつつ試したが、どうしてもLinuxを起動させる事が出来なかった。

 

もしかしたら本体のSDカード挿入口が汚れているのかも…と思い、エアーダスター&無水エタノールでフキフキ攻撃をしてみたところ、ようやくSDカードを認識するようになった!

なんと問題は本体側にあった(T-T)

こんなんで数時間悩んでしまった…。

 

f:id:PocketGriffon:20220203223735j:plain

電子辞書の画面に表示されるLinux起動ログ。いいねぇ(^-^)

f:id:PocketGriffon:20220203223819j:plain

これがログイン画面。

まずはbrainの下にある< Jwm   >の行にカーソルを合わせ、左右キーでログイン時のウィンドウマネージャーまたはshellを選択する。

普段からWindow環境を使っていない私はshellを選択。

ちなみにJwmを選択して起動すると↓こんな感じの画面になる。

f:id:PocketGriffon:20220203224704j:plain

電源入力のあるOTG対応USBハブを取り付け、そこにマウスを接続する事でマウスカーソルを操作できる。ウィンドウ環境ではマウスが必須だろう。

 

f:id:PocketGriffon:20220203225032j:plain

なお、ウィンドウ環境を立ち上げてshellを起動した直後にフリーメモリを見ると、残り4MBほどしかない。この先で何をするのかにもよるけど、スワップ領域は設定しておいた方が良さそうだ(私は今のところしてないが…)。

 

周辺機器など

あった方がいいだろう…と思うのは、OTG対応のUSBハブ、キーボード、マウス、そしてネットワークアダプタだ。

 

f:id:PocketGriffon:20220203230455j:plain

USBハブは電源供給が必須らしい。

私はpomeraで使っていたハブをそのまま流用した。

 

マウスとキーボードはUSB接続する標準的なものは使えるんだと思われる。

私は何も考えず、周りにあるものをそのまま接続した(^^;;

 

そしてネットワークは無線ではなく有線を使った。

f:id:PocketGriffon:20220203230608j:plain

今回、このためだけにAmazonで買い物をした(^^;

これが推奨という意味ではなく、使えましたよ的な感覚。

ちなみに製品の箱にはWindowsMacは対応と書かれていたが、Linuxの事は書かれていなかった。あくまでも自己責任でお願いしたい。

 

このアダプタを接続すれば自動的にネットワークに繋がる…わけではない。

ざっくりと書くが…

  ip link

ここで表示されるネットワークアダプタバイスを控えておき…

  sudo ipconfig <バイス> up

  sudo dhclient <バイス>

とすることでデバイスがEnableとなり、DHCPからIPアドレスを取得する。

私は面倒だったので即座にスクリプトを書いてしまった(^^)

 

なおこのネットワークアダプタを使うと、何故かsyslogの出力が画面に出続けてしまう。

f:id:PocketGriffon:20220203231104j:plain

↑この出力が2秒で3回くらい表示され続けてしまうため、コンソールで作業は事実上不可能だ。これを止めるためにはネットワークをDisableにするしかなく、しかたなくssh経由での作業のみに制限し、コンソールは使わない判断をした(T-T)

 

f:id:PocketGriffon:20220203231429j:plain

sshでログインしてみたところ

 

FM-7エミュレータを動かしてみる!

BrainでLinuxが動く環境が出来たので、せっかくだから何かしてみたい!

幸い、gccなどの開発環境は入っているようなので、メモリはそんなに食わないけど負荷が高いエミュレータを動かしてみる事に。

まぁいつもの流れだけど(^-^;

 

X-Window環境を使わないということでSDLは使えない。

以前、pomeraで動かしていたフレームバッファ直描き版を動かしてみる!

f:id:PocketGriffon:20220203233847j:plain

カラーフォーマットを調べる意味も含めて、簡単なプログラムを作って/dev/fb0へ出力してみる。これでフレームバッファのアクセステストも出来るし一石二鳥だ(^-^)

 

じゃあ…という事でFM-7の実装を始めたが……なんかmmapの動作が怪しい。

きちんとページサイズに合わせた容量をmmapすると、エラーにはならずアドレス(ポインタ)が返ってくるのだが、そこへアクセスするとBus errorで落ちるという状態(T-T)

他のLinux環境で動いてるプログラムなので、根本的な使い方が間違ってるとは思えない。

 

ちなみにスクリーンサイズを取得すると、横480x縦800と返ってきた。DevTermと同じく、液晶を横にした状態がデフォルトっぽい。

 

mmapが使えないので、/dev/fb0をファイルとしてopenする方式で描画する事にした。

速度はだいぶ遅くなるけれど、ちゃんと実験してるので確実に動く。

これでFM-7を動かした。

フレームバッファmmap出来たら、実機よりも速く動いたかもなー(^^)

ビルドに掛かった時間は2分17秒(137秒)だった。

CPUはシングルコアだしメモリも小さめだからこんなもんだろうか…。

この遅さを楽しめるとレトロマシンは楽しくなる(^^)

 

CP/M80を動かしてみる!

FM-7では6809が動いたので、今度はZ80を動かしてみたくなった!

フレームバッファに直描きするFM-7と違い、CP/M80はcursesを利用したコンソールプログラムだ。テストとしては申し分ない(^^)

 

追加でncursesをインストールするなどの作業は必要となったが、プログラム自体は無変更で一発完動となった。

 

 

本体のキーボードで操作することが出来るので、ネットワークをDisableしてログを止めておけば本体のみでCP/M80が堪能できる!(^^)

しかも結構速いよ、このCP/M!(^O^)

 

おわりに

電子辞書にLinux、その上で動くエミュレータというのは、なんとなくロマンを感じる(^^)

CPUパワー的にもRapsberryPi Picoくらいはありそうな雰囲気なので、画面操作に直結しない演算系ならば、意外な速度を見せてくれそうな気がする!

 

ではまた次回!(^-^)ノ