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

1kワードのTINYBASIC その2

1kWBASICと電大版とのコマンド比較

以下に電大版とのコマンド比較を行います。図中の-印は機能を有しないことを示します。
このBASICを使用するうえで大切なことがらは図中に赤文字で記載したつもりです。
使い易さは電大版に及びませんが、PICのレジスタを操作するうえでは電大版と同様の機能を有します。

img_20180726-064505.jpg
img_20180726-134254.jpg
img_20180726-134314.jpg
2018.07.26 追記 上図の記述に誤りがあります正しくは論理積(ピリオド)、論理和(カンマ)です。
          PRINTとINPUTは使用できません必ずPRまたはINと入力してください
2018.07.27 追記 上図の記述に誤りがあります。1字抹消にはCtrl-Oは使用出来ませんが、BSキーが使用できます。

img_20180726-071226.jpg

○フラッシュに書かれたプログラムを実行する方法 $8400はフラッシュ領域$0400のFSRアドレス
img_20180726-065131.jpg


○Tiny Multi Bootloader+ で書きこむHEXファイル作成に関して

例えば、BASIC上で
]10 A=7:GOTO 20
]20 PR A
]

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

2080 00 00 00 00 00 0D 0A 41 3D 37 3A 47 4F 54 4F 32
2090 30 0D 14 50 52 41 0D FF 00 00 00 00 00 00 00 00

0D                 -->プログラム開始コード
0A                 -->行番号10を表す、行番号の次の空白は削除
413D37          -->ASCIIで'A=7'
3A                 -->ASCIIで':'
474F544F3230 -->ASCIIで'GOTO20'、行中の空白を削除
0D                 -->行の終わりを示す
14                 -->行番号20を表す、行番号の次の空白は削除
505241          -->ASCIIで'PRA'
0D                 -->行の終わりを示す
FF                  -->プログラムの最後に付ける

上記をまとめると1kWBASICプログラムのメモリ格納時の手順は以下のようになる。
①プログラムの頭に開始コード$0Dを付ける
②行番号を1桁のHex値に書き換える
③行番号の次の空白文字は削除(2文字以上の空白文字でも全て削除)
④行番号以外はASCIIコードをそのまま収納するが、文中の空白文字は削除する
  "this is"のように”で囲まれた空白文字は例外、削除しない
⑤改行コードを$0D 1文字に書き換える
⑥プログラムの終わりに$FFを出力


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

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

0D 0A 41 3D 37 3A 47 4F 54 4F 32 30 0D 14 50 52
41 0D FF 00 00 00 00 00 00 00 00

0D 00 0A 00 41 00 3D 00 37 00 3A 00 47 00 4F 00
54 00 4F 00 32 00 30 00 0D 00 14 00 50 00 52 00
41 00 0D 00 FF 00

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

2018.07.29 追記
100までの素数でおおよその実行時間を計測 36*33/2=594ms、電大版の478msに比べて遅い。

img_20180728-172134.jpg





"1kWBASIC for PIC"のダウンロードはこちらから、バグ報告もよろしくお願いします。

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