目的
Tang-Nano-4Kでモニタを動かしているけれど、本人が言うのも何だがショボい。
此処はグレードアップが必要ではないかと愚考する。
ゲームマシン化にする案も有るが、FPGA×MCUの有効活用が思いつかない。
FPGA単体とか、MCUによるエミュなら、事例が手持ちに有るけど。
などと考えつつ、此処は王道とも言える、BASICの使えるパソコン風味が良いのではないかと。
◆◆◆ よし、Tang-Nano-4KでBASICを動かすぞ ◆◆◆
Tang-Nano-4Kをパソコンの軛から解放し、BASICマシンとして独立させよう。
経緯
BASICマシン化と言っても、Tang-Nano-4KのMCUをネイティブで動かす事を方針とする。
FPGA上に過去の名機を再現する方法も有るが、Tang-Nano-4Kに相応しいものにしたい。
となると、Cortex-M3で動くBASICインタープリターが必要だが、そんなものは見つからなかった。
そこで次候補として、C言語で書かれたものを探した。
これはそこそこ有ったが俗にTinyと言われるもので、機能は余り無い。。
まあ、Tinyが決してダメな訳では無く、移植が簡単という大きなメリットが存在する。
※TinyはBASICの基本コマンドが動作し、プログラム本体は2KB前後かな。
過去のパソコンでも、8KB~32KB位は有ったのだけどね。
その中で「豊四季TinyBASIC」を選択、下記に示す様に移植性が高いと思われる。
◇比較的マニュアルが(解説)がしっかりしている。
◇他機種への移植例が存在。
◇基本部は、getch(),putch()さえ用意すれば動かせる。
◇日本製だし、住んでる場所も近い。※特に意味は無いか。
BASICが動作したで終わりでは無く、下記を追加しスタンドアロン化する。
出力表示をHDMIに行う。
キーボードを接続。
おっとその前に、デバッグコマンドを、BASICに追加しなくっちゃ。
其れなりに時間が掛かってしまうかな。
移植作業
まずWindows版をダウンロード。
EXEも付いて来るので、ウイルスチェックしてから正常動作を確認。
※windows版といってるが、DODS窓が開くコンソールアプリ。
付属のプロジェクトを開いてコンパイル、動作確認。
※visualstudio2017で開けた。Ver14.0->14,1にUPした模様。
次にMingw環境で動作確認。
※Windows環境では余計なものがついてるかも知れないので。
多少の変更は必要だったが、動作した。
※getch(),putch()相当を定義、kbhitは0を返しておく。
この結果、取り合えずrun中のブレークは効かないと言う事になる。
※monに戻す事を考慮し、stopコマンド発行で処理を終了させる。
拡張子が.cppなので、g++でコンパイルして動作正常を確認。
拡張子を.cに変えて、gccでコンパイルして動作正常を確認。
動作確認が取れたので、Tang-Nano-4K開発環境にコピー。
Tang-Nano-4Kの入出ルーチンと結合。
main.cに呼び出し部を記述。
コンパイル、書込みして動作正常を確認。
モニタからBASIC(実はB一文字)で起動する。
※上記変更を加えたものをgithubに上げた。
main.c,ttbasic.cの拡張子に、.txtが付いてるので消去して「前回の」と差し替えてね。
左はSPI通信経由の操作、右はUART経由の操作。
注意事項
コンパイル結果を下記に示すが、
text data bss dec hex filename
19076 2356 1824 23256 5ad8 cm3_mon.elf
dtaとbssセクションを加算すると、4kBを多少超えている。
もしかするとmcsに割り当てた4KBでは収まらず、不具合の原因になる恐れも。
※mcsに8KB割り当てれば解消するが、デバックが窮屈になるので嫌だな。
BASIC付加の本当の目的はデバッグ支援なので、障害出るまで放置予定(私の環境では)。
感想
豊四季TinyBASICの入手から、Tang-Nano-4Kでの動作確認まで、約休日一日の手仕事。
これは当人の力量などでは無く、豊四季TinyBASICが良く出来ている所為なんだろう。
公開された作者に感謝します。
なお、上記記載内容は全て無保証であり、各自の責任においてご利用願います。