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

1kワードのTINYBASIC STM32版 その2

◎TERA TERMの設定とサンプルプログラムの解説
エディタで作成したBASICプログラムを実行させるにはBASICファイルをドラッグドロップさせればよく、
TERA TERMの送信遅延を以下のように設定します。
img_20200430-045940.jpg

◎プログラム例1 CLEARコマンドはダイレクトコマンドとしても使用できますが、文中での使用例を示します。
A~Zには初期値が入っていたのですが、40行目のCLEARコマンドで全消去されました。
img_20200430-050126.jpg

◎プログラム例2 これは以前にご紹介したシリアルポートのエコーバックプログラムのARM版
(0:0):(0:3)を$40013824に設定、アドレス$40013824はシリアル受信データのレジスタ
キー入力フラグ(0,8)の初期値は0、30行~40行のループ中、キー入力があれば(0,8)≠0となり、100行にジャンプ
RDコマンドで受信データ(ASCIIコード)を読み出し(0:4):(0:7)にストア、(0:0):(0:3)を$40013828に変更
アドレス$40013828はシリアル送信データのレジスタ、WRコマンドで(0:4):(0:7)のデータを送信、以上を繰り返す。
「Esc」キーを押したため30行目でプログラム中断
img_20200430-050614.jpg

◎プログラム例3 以前解説したFOR~NEXT文の代替、Rに値を入れ、GOTO Rとするのが肝
img_20200430-052507.jpg

◎プログラム例4 以前解説したGOSUB~RETURN文の代替、Rに可変の値を入れ、GOTO Rとするのが肝img_20200430-052814.jpg

◎プログラム例5 OSコマンドの使用方法
10行目では(0,9)≠0であるから、STOP動作。 10を印字する直前にプログラム停止
「Retern」キー入力により停止解除、10を印字
(20行目のOSコマンドにより再び停止するが、)今度は(0,9)=0であるからメモリダンプを表示したところで停止
ここで「Retern」キー以外のキー入力で次のページのダンプを表示して再び停止、
(ページは全32ページ、最終ページはスタックポインター) 「Retern」キー入力により停止解除、20を印字
img_20200430-053031.jpg

◎プログラム例6 素数を求めるプログラム、$0200(実際は$20000200)以降の領域を作業用に使用
(先述のOSコマンドを組み合わせると、メモリの使用状況が確認できる。)
img_20200430-054327.jpg

◎プログラム例7 乱数の表示、乱数は!で出力される。演算も可、A=!の書式も可
2020.05.10 追記 20行目のカンマはミスコード。正しくはセミコロン、故に3つ目の乱数が表示されていない。
img_20200430-054823.jpg

◎プログラム例8 ユーザーサブルーチンコール
 R3に変数Aのアドレス0x0Fをセット、R7=0x20000000(固定値)
 これはすなわち $2000000Fの値を+3する機械語のプログラム
 インタープリタの動作を保障するため、値が変わるレジスタR0,R3はpush、popで保存
 CALL文で奇数となるアドレスは指定できない。 またプログラムも偶数のアドレスから記述しなければならない。
img_20200430-055004.jpg


参考にしたページ
乱数の生成に関して
「PICに関する個人的なまとめ」 https://seesaawiki.jp/w/pic_wiki/d/8bit%B5%BF%BB%F7%CD%F0%BF%F4
どうもありがとうございました。紙面をお借りしてお礼申し上げます。


インタープリタのダウンロードはこちらから
https://drive.google.com/file/d/1FnOnppgtM-yISyXlAzGSsSIwLaseLAOi/view?usp=sharing