SHIROのIchigoJam日記

IchigoJamの電子工作とプログラミングをメインに

行番号付け・ラベル変換ツール Spoon(スプーン) 0.3.0

ダウンロードはこちら。

IchigoJamのBASICプログラム用の、行番号付け・ラベル変換ツールです。
BASICプログラムのテキストファイルを読み込んで、以下の変換をします。

  1. 行頭に行番号を付けます。
  2. 「@〜」の形式で書かれたラベルを、行番号に置換します。ラベルの詳細については後述します。

●インストール方法

setup.exeをダブルクリックしてインストールしてください。
VisualBasic 2013で作っています。実行には.Net Framework 4.5が必要です。

●使い方

(1)変換元ファイルの指定

実行後、変換元のテキストファイル(*.txt)を指定します。
「参照」ボタンをクリックして、ダイアログから変換元のBASICプログラムファイルを選択してください。

(2)行番号の指定
  • 行番号開始
    • 1行目に付ける行番号です。デフォルトは「10」です。
  • 行番号増分
    • 行番号の増分です。デフォルトは「10」ずつ増加します。
  • ラベル行削除
    • チェックをONにすると、ラベル行を削除して行を詰めます。デフォルトは「OFF」です。
(3)変換

「行番号付け・ラベル変換」ボタンをクリックすると、変換作業を行います。
ウインドウに作業状況が表示されます。もしおかしな変換をした際は参考にしてください。
変換後のファイル名は、元のファイル名に「r」を付けたファイル名になります。

【例】 test.txt → testr.txt

(4)自動変換

コマンドラインで変換元ファイル名・行番号開始・行番号増分・ラベル行削除スイッチ(0=OFF,1=ON)を指定すると、ウインドウを表示せずに自動で変換して終了します。
例えば以下のようなバッチファイルを作り、

spoon test.txt 10 10 1
バッチファイルを実行すれば、自動で変換ファイルtestr.txtができます。
行番号は10,20,30…となり、ラベル行を削除します。
(ただしspoon.exeの場所にPATHを通すか、spoon.exeを同じディレクトリへコピーする必要があります)

ラベルについて

ラベルは行の先頭に「@(ラベル名)」の形式で書きます。

@LABEL1
ラベルに使える文字は、アルファベット大文字(A〜Z)、数字(0〜9)のみです。
文字数制限は特にありませんが、必ず行の先頭に書いてください。前後にスペースや他の文字を入れないようにしてください。
GOTO、GOSUBなどの飛び先として、ラベルが使えます。
'*** TEST ***
N=1
@LOOP
GOSUB @PRT
N=N+1
IF N<=10 GOTO @LOOP
'--- SUB ---
@PRT
PRINT N
RETURN
このプログラム例では、デフォルト設定(行番号開始=10、行番号増分=10、ラベル行削除=OFF)で変換すると、以下のようになります。
10 '*** TEST ***
20 N=1
30 '@LOOP
40 GOSUB 80
50 N=N+1
60 IF N<=10 GOTO 30
70 '--- SUB ---
80 '@PRT
90 PRINT N
100 RETURN
要は「@LOOP」などのラベル文字列を、行番号に置換するだけです。
元のラベルは、先頭に「'」が付いてコメントになります。

設定を変えて、「行番号開始=1、行番号増分=1、ラベル行削除=ON」で変換すると、以下のようになります。

1 '*** TEST ***
2 N=1
3 GOSUB 7
4 N=N+1
5 IF N<=10 GOTO 3
6 '--- SUB ---
7 PRINT N
8 RETURN
ラベルの行が削除されて、行が詰められます。
極限まで容量を節約したい時は、この設定にしてください。

ラベルは100個まで、プログラム全体は1000行まで対応しています。

●最後に

簡単に作ったツールなので、細かいエラー処理などはしていません。
ラベルの文字列などで、おかしな指定は避けてください。
プログラム中に存在しないラベルをGOTO/GOSUBで飛び先に指定すると、変換時にエラーが出ます。

大したプログラムではありませんので、ご自由にお使いください。
転載・再配布なども自由です。
ただし、このプログラムの使用で万が一損害が生じても、作者は責任を負いません。

●追記、プログラムの転送

Spoonで作ったプログラムテキストをIchigoJamへ転送するには、Windows PCとIchigoJamとで通信をするためのUSBシリアルケーブルなどと、Teratermなどのシリアル通信・転送ソフトが必要です。
転送ソフトは、私はたま吉さん作の「IchgoTools05」に含まれるrloadを使っています。
http://nuneno.cocolog-nifty.com/blog/2015/01/ichigojam-2634.html