楽天市場
[無料でホームページを作成] [通報・削除依頼]

電大版TINYBASIC for PIC ミニマムお試し版3


<電大版TINYBASIC for PIC ミニマムお試し版3 Tiny Multi Bootloader+との連携>

ブートローダーはプログラムローダーの一種ですが、単純なプログラムローダーと異なり、
リセットベクターの書き換えや、ブートローダーの出口の処理などの機能が追加されています。

PIC側のファームウエアを変更して、Tiny Multi Bootloader+を単純なプログラムローダーとして
動作させ、PICにBASICプログラムを書きこむことができましたので、投稿します。

2018.06.25 追記 プログラムにバグがありましたので差し替えました。(改定1)
2018.06.25 追記 プログラムにバグがありましたので差し替えました。(改定2)
2018.06.26 追記 プログラムにバグがありましたので差し替えました。(改定3)
2018.08.28 追記 BASIC起動時に変数領域とプログラム/配列領域をゼロクリアするようにしました。(改訂4)
2018.08.29 追記 お試し版2のダウンロードを停止し、お試し版3に一本化しました。


○Tiny Multi Bootloader+でお試し版にBASICプログラムを書き込んでいる様子
img_20180624-081234.jpg

○書き込みに関して
BASICプログラムを書きこむ場合、TeraTermに先立ってTiny Multi Bootloader+を起動させる。
BASICプログラム書き込み後、Tiny Multi Bootloader+を終了させ、TeraTermを起動。

BASICプログラムを書きこむ必要が無い場合、従来どうりTeraTermを起動しリセットSWを押す。
従来はすぐにBASICランチャーが起動したが、従来と異なり約1秒後にBASICランチャーが起動する。
(1秒はPICに書き込んだTiny Multi Bootloader+のファームウエアがタイムアウトを生ずる時間。)


プログラムのメモリマップは従来と異なり、flash領域の最後尾にBASICプログラムローダーが配置する構成となっている。
BASICプログラムは0x0900~0x1EFFの範囲で作成する必要がある。
img_20180701-053831.jpg


○フラッシュに書きこむHEXファイル作成に関して

例えば、BASIC上で

READY
#10 A=7:GOTO 20
#20 PRINT A
#

というプログラムはRAMには以下のように収納されます。

2140 00 0A 41 3D 37 3A 47 4F 54 4F 20 32 30 00 00 14
2150 50 52 49 4E 54 20 41 00 D0 D0

000A                  -->行番号10を表す、行番号の次の空白は削除
413D37              -->ASCIIで'A=7'
3A                     -->ASCIIで':'
474F544F203230 -->ASCIIで'GOTO 20'
00                      -->行の終わりを示す
0014                   -->行番号20を表す、行番号の次の空白は削除
5052494E542041 -->ASCIIで'PRINT A'
00                      -->行の終わりを示す
D0D0                  -->プログラムの最後に付ける

上記をまとめるとBASICプログラムのメモリ格納時の手順は以下のようになる。
①先頭の行番号を2桁のHex値に書き換え
②行番号の次の空白文字は削除(2文字以上の空白文字でも全て削除)
③行番号以外はASCIIコードをそのまま収納、空白文字は削除しない
④改行コードを$00 1文字に書き換える
⑤プログラムの終わりに$D0D0を出力


flashに収めるプログラムの場合、flashは14bit幅なので以下の手順でHEXファイルを作成します

<HEX形式プログラム作成の手順>
①RAMでは8bitだったデータを16bitに拡張(リトルエンディアン)

00 0A 41 3D 37 3A 47 4F 54 4F 20 32 30 00 00 14
50 52 49 4E 54 20 41 00 D0 D0

00 00 0A 00 41 00 3D 00 37 00 3A 00 47 00 4F 00
54 00 4F 00 20 00 32 00 30 00 00 00 00 00 14 00
50 00 52 00 49 00 4E 00 54 00 20 00 41 00 00 00
D0 00 D0 00


②上記データ列をアドレス$1200 ($0900*2) からインテルHex形式に変換







Tiny Multi Bootloader+ で書き込み可能なBASICプログラムのサンプルを添付しました。

ダウンロードはこちらから

https://box.yahoo.co.jp/guest/viewer?sid=box-l-ynvbblq5wtn3l5nx64zrgryqbm-1001&uniqid=08fb41d4-88ed-4390-8d46-a057475d987a&viewtype=detail

https://box.yahoo.co.jp/guest/viewer?sid=box-l-ynvbblq5wtn3l5nx64zrgryqbm-1001&uniqid=31bf5727-49ba-4128-bcd5-ee16fb3ba8e8&viewtype=detail

https://box.yahoo.co.jp/guest/viewer?sid=box-l-ynvbblq5wtn3l5nx64zrgryqbm-1001&uniqid=8efcb5ad-77eb-45a4-a6cc-b2bf2be1d4ae&viewtype=detail

https://box.yahoo.co.jp/guest/viewer?sid=box-l-ynvbblq5wtn3l5nx64zrgryqbm-1001&uniqid=87a61f7d-1a3c-4a5b-8756-7897ef570bba&viewtype=detail

https://drive.google.com/file/d/1vPIOROCaPlb0r3az4rDX_O5tsFzx77qR/view?usp=sharing