tinyBasic2 の変更点


[[PIC32MX]]

*PIC32MX上でtinyBasic2インタプリタを動かそう [#w851da50]

[[PIC32MXでVGA出力>pic32vga]]の続き
-http://psp.dip.jp/web/jpg/basic1.jpg

~
~
~
-------
*The Tiny Basic2 [#q3e7e039]
元ネタ: 1990-1-1
-http://www.programmersheaven.com/download/16060/Download.aspx

Raspberry PiにTinyBasicが移植された。
-http://www.staff.city.ac.uk/afl/tinybasic/downloads.html

これをPIC32MXで動かしてみました。
-Raspberry Pi版は、コードサイズで64kB程ありますので、Flash容量32kBのPIC上で動かすのは無理でした。
-が、その元ネタになっているほうのBASINT.cは14kB程度(Cソース、exeファイルともに)ですので、32kBのFlashに入ります。

~
-実際に動かしてみると、BASIC INTERPRETER自体の占有ファームウェアサイズはmips16で4kB程度、MIPS32でコンパイルしても8kB程度に収まっています。
-putch(int c)相当の関数さえあれば動作しますので、PIC32MXに限らず他のマイコンへの移植も簡単です。


--------
*ダウンロード [#u56ad77a]

ファームウェアソース:[[mxvga.zip:http://psp.dip.jp/web/upload/PIC/mxvga.zip]]

~
ライセンス
-basintのほうはオリジナルサイトを見てもライセンスはunknownとなっています。
-tinyBasic 2のほうはGPL v2でした。
-投げ遣りですが、この版も、GPL v2で宜しいのではないかと考えております。


~
ソースコードをぱっと見たところでは、
-手書きのパーサで、あんまり宜しくない。
-処理もかなり不備がある

ように見受けられますので、たぶん、読者の貴方が1から書き直したほうがずっと良いBASICが作れると
思います。

- test.bat を起動すると、MinGWのgccを使って、Win32コマンドライン版の実行を行います。
- PIC32MXへの移植では、printf,scanf(現状はダミー)が必要になった程度で、ほぼ手直しなしで動いてしまいました。
- BASICソースはC言語中に文字列で格納してありますが、改行コードが
- オリジナル版では CR+LFのところを LFだけでも動作するように改造するのに結構手間取りました。(その必要性は薄かったのですが)

~
- また、tinyBasic2の素数プログラムを走らせようとすると、basintのBASIC文法実装が足りていなかったので文法エラーで実行できませんでした。
- そこで、いくつかのステートメント処理はtinyBasic2からバックポートさせて頂きました。

~
~
~

---------
*課題 [#k4f13e5d]
-%%BASIC動作中は画面にジッターが出ます。%% --- COLOR(RED){ジッターは対策しました。}
--終了するとジッターは消えます。
-%%原因は究明中ですが、よくわかりません。%% --- 実はよくわかっていません。割り込み応答が2〜3クロック後、というマニュアルの記述が気になるところです。遅延スロット?それともmips16/MISP32遷移?
--MIPS32ビルドは試しましたが、症状は変わりませんでした。
-div,mul命令を使わないようにしてみたのですが、直りませんでした。
--乗除命令を使わずに32bit div / mul を書きました。今は使っていません。


~
答えは、2クロック命令だそうです。(kats_me様、ありがとうございます)
-RISCなのに2クロックって、知りませんでした。単なるストールとは違うのかな?


~
-単体BASICコンピュータとして完結させるためには、キーボード入力部分(PS/2かな?)やセーブロード部分(SDカードかな?)
などの増設の必要性がありそうです。
~
~
~

---------
*応用 [#g8aed2e6]
-単体BASICコンピュータ
-basint.c のみを再利用して、別のマイコン(ARMとか)へ移植。
-basint.c を拡張。というかFlash容量さえあれば、tinyBasic2をそのまま利用でもOK.
-RS-232C TTY端末。例えば、Linuxのコンソールに使う。(玄箱のttyコンソールとか)
-basic以外の言語を動かす(ForthとかLuaとか)

~
-CG-ROMを適当に拡張して、SD-Card上の漢字dotを使用して漢字混じり表示。
--1画面に出せる漢字の種類(個数)に上限を設ければ可能。

~
~
~
--------
*USB経由のBASICコンピュータ [#mff68158]
*USB経由のBASICコンピュータを目指す [#mff68158]
-KeyBoardやsdcardを繋げるのが面倒なので、とりあえずUSB-CDCデバイスまで取り込んで、
-WindowsPCからBASICが使えるようにしようという試みです。


*(仮)ダウンロード [#u56ad77a]

USB入りファームウェアソース:[[cdcbasic.zip:http://psp.dip.jp/web/upload/PIC/cdcbasic.zip]]

-現状のものは、USB-CDCデバイスとbasicインタプリタを同居させてはいますが、
-basicインタプリタはまだ対話型に拡張されておりません。
-とりあえずprime_vanilla.cを実行したあとは、Teratermなどから、VGA画面にエコーバックのみ行なえます。

~
~
~