何気にFabGLについてググってみたら、PCEmulatorというものが追加されていた。
なんとESP32でMS-DOS,FreeDOS,Windows 3.0などが動くらしい。
早速動かしてみようと思ったが、どうもPSRAMというものが必要らしく、ESP32-WROOM-32ではなくESP32-WROVERが必要で、また、それに合わせてSDカード周りの配線も若干違うらしい。
ということで早速部品をそろえる。
ORANGE-ESPer 組立てキット(モニター版)とESP32-WROVERが乗った ESP32-DevKitCを取り寄せる。
ESP32-DevKitCは秋月で買いたかったが、通販だと1週間ぐらい遅延しているらしいので、amazonで購入することにした。
ところがである。
amazonのサイトではESP32-WROVER-IB DevKitC ESP-32となっているが、実際届いたのはESP32-WROVERであった。
写真と違うし。
技適マークついているが、一応総務省のページで番号を検索して正しいことは確認した。
さて部品が届いて作ってみることにする。
もろもろの情報は、PCEmulator (FabGL)を参考にした。
SDカード周りは、MISOとMOSIで使えるGPIOが違うのでそれに合わせて配線を変える必要がある。
基板のパターンをカットしてもよいのだが、黒基板でパターンがわかりづらいし、なるべく簡単に済ませたいので、microSD カードモジュールの取り付けで工夫することにする。
幸いGPIO12,35はすぐそばにパターンが伸びているのでそれを使わせてもらう。
他は普通に組み立てていけばOK
あとはPCEmulatorを書き込めばOKなのだが、件のサイトに書かれていないところで注意点がある。
まず、SDカード周りが変わっているので、それに合わせて一部ソースを書き換える。
FabGL/mountSDCard()をもとに以下のように変更。
// if (!FileBrowser::mountSDCard(false, "/SD", 8)) if (!FileBrowser::mountSDCard(false, "/SD", 8, 16 * 1024, 35, 12)) ibox.message("Error!", "This app requires a SD-CARD!", nullptr, nullptr);
変更内容としてはGPIOのアサインの変更なのだが、途中のパラメータが省略できないのでallocationUnitSizeのデフォルト値も入れてある。
次に、NTPサーバから時刻取得をするところであるが、そのままでは日本時間ではないので直してやる。
void updateDateTime() { // Set timezone //setenv("TZ", "CET-1CEST,M3.5.0,M10.5.0/3", 1); setenv("TZ", "JST-9", 1); tzset();
また、無線LANをステルス設定しているとSSIDが一覧に出てこず指定できないので、ソースで直接指定する。
if (ibox.textInput("WiFi Configuration", "Insert WiFi password", psw, 31, "Cancel", "OK", true) == InputResult::Enter) { // user pressed OK, connect to WiFi... //preferences.putString("SSID", WiFi.SSID(s).c_str()); preferences.putString("SSID", "任意のSSID"); preferences.putString("WiFiPsw", psw);
これで一覧で何を選んでも指定したSSIDに接続されるようになる。
本当は一覧から選ばなかったときにSSIDを入力できるようにしたかったがうまく思いつかなかったので、直接書き込むことにした。
ソースを編集して保存して書き込むと無事起動。
無線LANにつながり時刻を取得。
いろいろ試してみる。
さて、ワンセグTVのおまけ機能では画面がずれて表示され、さらに画面の位置が調整できないので別のモニタあで試す。
FreeDOSやMS-DOSなどあるがやはりここはWindows3.0を試してみる。
白黒画面だがWindowsが動くことじたいびっくりである。
3.0だしさすがにもっさりしてるが、それでもこの小さなデバイスで動いているのは当時からしたら考えられなかっただろうな。
懐かしいといっても自分はWindows3.1からなのだが、ゲームで遊んでみる。
リバーシだが、白が先手ってのは違和感あるな。
昔はよくソリティアで遊んだものだが、たまにしかクリアできなかった。
Windowsもだが、DOSも動くのでいろいろ遊んでみたいところだ。
GW-BASICも入っていて、サンプルプログラムを動かしてみたら、グラフィックや音も出せるっぽいので結構遊べそうだ。
音に関しては若干問題ありそうだったが。