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



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

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

○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に比べて遅い。

"1kWBASIC for PIC"のダウンロードはこちらから、バグ報告もよろしくお願いします。
https://drive.google.com/file/d/1T6nhLD0zCOV5_yeljqfNEiDkeyyzDmf6/view?usp=sharing
以下に電大版とのコマンド比較を行います。図中の-印は機能を有しないことを示します。
このBASICを使用するうえで大切なことがらは図中に赤文字で記載したつもりです。
使い易さは電大版に及びませんが、PICのレジスタを操作するうえでは電大版と同様の機能を有します。



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

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

○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に比べて遅い。

"1kWBASIC for PIC"のダウンロードはこちらから、バグ報告もよろしくお願いします。
https://drive.google.com/file/d/1T6nhLD0zCOV5_yeljqfNEiDkeyyzDmf6/view?usp=sharing
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT