前提となる知識
RunCPM とは...
Z80 CP/M 2.2 エミュレータです。Arduino IDE でコンパイルできます。
※ Visual Studio を使って Windows 向けにビルドする事もできます。
CP/M とは...
Digital Research が開発した OS です。主に 8bit マシン で使われました。MS-DOS の前身とも言える OS です。
Wio Terminal とは...
Wio Terminal は ATSAMD51ベースのマイクロコントローラを搭載した Seeed 社の開発モジュールです。
RunCPM + VT100 Emu とは...
Z80 CP/M 2.2 エミュレータと VT100 エミュレータを合体させたスタンドアロンで動作する 超小型 CP/M マシン です。
robo8080 さんによるオリジナルにはいくつかのバリエーションがあります。
これの Wio Terminal 版を好き勝手に増改築しています。M5Stack にも対応しています。
robo8080 さんのリポジトリにマージされた時には UF2 ファイルも用意されますので、Arduino IDE でソースコードをコンパイルする事なく "RunCPM + VT100 Emu" を試せます。
DEKO さんのリポジトリでは常に最新の UF2 が提供されるとは限らず、コードと UF2 の挙動が一致していない事があります。
※ RunCPM用のディスクは別途用意する必要があります。
動作に必要なもの
Wio Terminal / M5Stack の他には、microSD カードと何らかのキーボードが必要です。
- microSD カード
- USB キーボード
- USB Type-C 変換アダプタ (ダイソー等に売ってあります)
- M5Stack CardKB
- M5Stack Faces
Wio Terminal で CardKB を使う場合には USB 端子が空くので、任意のモバイルバッテリーを使えますが、USB キーボードを使う際にはバッテリーベースがないと不便です。
前フリ
バッテリーベース待ちだったのです。
超小型 CP/M マシンへの道。 とりあえず VT100 エミュレータはできた。 まだ CP/M は外部にある (ESPr Developer の CPM8266) のだけれど、既に WIO Terninal で RunCPM が動くので合体させれば超小型 CP/M マシンができるかと。 バッテリーシャーシって、まだ日本で売ってないんだっけ? pic.twitter.com/wXsQT2XD3B
2020-06-17 20:09:38シリアル経由での動作でよければ、WIO Terninal 用の RunCPM は既にある。 ht-deko.com/arduino/runcpm…
2020-06-17 20:17:18将来的にはこんな構成でポケコンみたいな事したい。 (MBASIC や Turbo Pascal でセルフ開発できる環境) なお、現状の実装だと 5 方向スイッチはカーソルキーと Enter、3 つのボタンは F1, F2, F3 を割り振ってある。 pic.twitter.com/N5yL8xDwXM
2020-06-17 22:36:49このキーボードはタブレット用の USB キーボードを分解したもの。元々は Raspberry Pi 用に買った。とにかく安い。 反応の鈍いキーがいくつかあったけれど、キートップを慎重に外してラバーカップの上にセロハンテープを二枚くらい貼ったら普通に入力できるようになった。 amzn.to/3hF4CZl
2020-06-17 22:55:30このキーボード、普通サイズの USB コネクタに変換するアダプタが付いている。 pic.twitter.com/FHQC4dLWZv
2020-06-17 23:06:51Wio Terminal のコネクタは USB Type-C なので、OTG するためにはこんな変換アダプタを買わなくてはならない。 amzn.to/37BpdJq
2020-06-17 23:06:52で、色々な Arduino ボードを試すと USB ケーブルの抜き差しが面倒になるので、micro -> Type-C 変換アダプタも買ってたんです。OTG 対応とは書いてなかったんですけども。 amzn.to/3hv94Ka
2020-06-17 23:06:53ダメ元でやってみたら、これだけで Wio Terminal に接続できたっていう...(^^;A pic.twitter.com/V0UeJP37yC
2020-06-17 23:06:54Wio Terminal の VT100 エミュレータの元ネタはコレ。 言い忘れてたけど、Wio Terminal のパッシブブザーにも接続してあるので、Ctrl+G を送るとベルが鳴る。 github.com/ht-deko/vt100_… pic.twitter.com/Dv3cohqniZ
2020-06-17 23:19:28えっと Wio Terminal で OTG するのに使うアダプタだけど、ダイソーのコレでイケるみたい。MicroUSB の方はちょっと精度悪いけど使えないことはないかな。 pic.twitter.com/u0sReV3Iz7
2020-06-22 16:35:48本編
いってみよ~♪
Wio Terminalで動く超小型CP/Mマシンをgithubに上げました。興味のある方はどうぞ。:robo8080/Wio_RunPCM_vt100_CardKB github.com/robo8080/Wio_R… pic.twitter.com/A2PuDOn78F
2020-12-24 15:59:24ロマン (超小型スタンドアロン CP/M マシン) キタ―――(゚∀゚)―――― !! github.com/robo8080/Wio_R… pic.twitter.com/YKHoA9OqXu
2020-12-28 18:54:25Wio_RunCPM_vt100_UsbKB の github.com/robo8080/Wio_R… VT100 部分に問題があったので修正。 github.com/ht-deko/vt100_… スクロール等で一行描画が発生すると意図しない色で描画されていた。pushColors() ではダメで pushColor() なら OK な理由がワカラン。 pic.twitter.com/6zWTofaqDL
2020-12-29 19:52:34グラフィックドライバと言えば、その昔カノープスが『EGR98』というものをリリースしていたらしい。 僕は使ったことがないのだけれど、エスケープシーケンスでグラフィックが書けたみたい。 EGR98 のエスケープシーケンス体系を知りたいのだけれど、ちょっともう無理かなぁ。 twitter.com/lpproj/status/…
2020-12-30 03:16:50めも:SVGA用BGIドライバがMITライセンスでオープンソース化 bttr-software.de/forum/mix_entr… ボーランドの16ビット向けコンパイラ(Turbo PascalとかTurbo/Borland C++)で使えるグラフィックドライバです…(スケルトンはボーランドが用意しているが、完全なBGIドライバのソース公開はほぼ皆無かと…)
2020-12-26 11:54:49"スタンドアロン CP/M マシン" を更新。 Dir コマンドのファイルリストが読みにくい問題の解決方法を追加。 [Arduino] RunCPM (Z80 CP/M 2.2 エミュレータ) ht-deko.com/arduino/runcpm… pic.twitter.com/FfT64D5atr
2021-01-06 09:59:10[RunCPM] 個体差かもしれないけれど、Wio Terminal のディスプレイは見切れるので、ピクセル単位のスクリーンサイズとキャラクタ単位でのスクリーンサイズを分けた。 53x30 文字から 52x29 文字に変更する事により、文字が見切れなくなる。 pic.twitter.com/gVBjzQ3IQ7
2021-01-06 20:56:28"RunCPM +VT100 Emu for Wio Terminal (USB KB)" を LovyanGFX で全面的に書き換えた。個人的には満足できる速度が出ている。DIR もそこそこ速い。 CardKB 持ってないので、CardKB 版まで手が回らないのが心苦しい...m(_ _)m pic.twitter.com/UjaIXfeJYw
2021-01-07 01:26:17[RunCPM] プルリクエストが承認されたので、 ・LovyanGFX 対応 ・文字スクリーンサイズ変更対応 された "RunCPM +VT100 Emu for Wio Terminal (USB KB)" がリリースされています。 Wio Terminal で文字が見切れなくできますし、前版よりも描画速度が向上しています。 twitter.com/ht_deko/status…
2021-01-07 12:25:50@ht_deko ありがとうございます! おそらくlcd.init()の後にlcd.startWrite(); を一行追加することで、SPIバスを占有できてさらに速度が上がると思います。M5Stack版の場合はSDとの兼ね合いで描画の前後をstartWrite/endWriteで囲んでいますが、WioTerminalならば占有しても大丈夫と予想…!
2021-01-07 12:26:00