2022.7.14
前へ
次へ
ホームページトップへ戻る


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第23回]



●マルチステートメント

本日は時間がありません。
ほんの少しだけ走り書きです。
TEXT型のBASICインタプリタから中間言語型のBASICインタプリタへの変更に至った理由は複数あるのですけれど、そのうちのひとつがマルチステートメント機能でした。
マルチステートメントは一行に:(コロン)で区切って複数の命令を記述できる機能です。
TEXT型のBASICインタプリタでも一部の命令についてはマルチステートメントが可能なように作ってきました。
たとえばPRINT文やFOR NEXTループ、GOTO文などです。
下はFOR NEXT文をマルチステートメント記述した例です。

これは今までのTEXT型BASICインタプリタでの実行例です。
しかしたとえばGOSUB文ではマルチステートメント化をスルーしてしまうつもりでした。
やってやれないことはないのですが、GOSUB文の場合一度別の行に飛んだあとまたGOSUB文の次のポイントに戻ってこなければなりません。
それをTEXT型のBASICインタプリタでやるのはちょっとしんどいなあと思ったからです。
なのでTEXT型のBASICインタプリタではGOSUB文の「次の行」に戻ることにしました。
下はTEXT型のBASICインタプリタでそのルールを無視してあえてGOSUB文をマルチステートメント記述した例です。

このプログラムを実行してもエラーにはなりませんがB=B+20以降の文が無視されてしまっています。

GOSUB文についてはこういうことでいくつもりでした。
ですけれど。
やっぱり面白くないのですよねえ。
なんでGOSUB文はマルチステートメントにできないの。
面白くないなあ。

そのほかにも理由があって、どうせ面倒臭いことをやるのならいっそのこと中間言語化してしまおう、というのが中間言語化に至った理由のひとつでした。
今度は上と同じプログラムを新しく作った中間言語型のBASICインタプリタで実行してみました。

上と同じプログラムを/CONVで中間言語に翻訳しました。

それを実行しました。

今度はGOSUB文の次のポイントに戻ってB=B+20以降の文が実行されました。

PIC−USBIO using BASIC[第23回]
2022.7.14upload

前へ
次へ
ホームページトップへ戻る