ＰＩＣ−BAISC 説明資料 （ひびきの電子株式会社）
パソコン（ＰＣ）と、ＢＡＳＩＣ基板との接続は、ＵＳＢシリアル変換モジュールを使用します。
また、パソコン側のターミナルソフトは、 Teta Term をお勧め致します。
本説明では、Tera Termソフトを使用した例で説明を致します。

１：TeraTermの設定
設定→端末・改行コード
受信 CR+LF
送信 CR
・ローカルエコー なし
設定→シリアルポート・ボーレート9600
・データ8bit・パリティnone・ストップ1bit
・フロー制御none【重要】
送信遅延 0 ミリ秒/字 200 ミリ秒/行に設定します。
<理由>
インタプリタは1行ごとに中間言語に変換して、EEPROMに書き込みます。
1バイトの書き込みに3-5ms必要です。
したがって1行送信後次の行の送信開始までに、200msあけて、その間に1行分の書き込み作業（最大60byte）を終了させます。

２：動作テストとＬＥＤ表示の説明
・動作テストPC とBASIC基板と接続した後に電源をＯＮにして、リセットスイッチを押します。
すると、下記に示すスタートアップメッセージとプロンプトを表示します。
PIC-BASIC Version 1.0
BASIC interpreter developed by Hibiki Electronics.
?
print 1+2 と入力後リターン
print 1+23?
以上のように動作すればＯＫです。

・ＬＥＤ表示の説明
ＬＥＤは、動作状態を表示します。
実行中ランプ(RUNNING)とエラー(ERROR)ランプがあります。
両ランプともリセット時にテストのため一瞬点灯します。
エラーが点灯したままになっている場合は、EEPROMの故障などの原因が想定されます。

【RUNNING LED】
BASICプログラムを実行中に点灯します。

【ERROR LED】
エラーメッセージを表示する時に点灯します。 コマンドモードでCRが入力されると消灯します。
消すためにはコマンドモードでCRを入力するか、そのまま気にせずに作業を続けます。

３：トラブルシューティング・スタートアップメッセージが出ない①リセットボタンを押してみる②電源の確認②BASIC基板とＰＣとの接続を確認します。（シリアル変換）※CTSは未接続でも動作しますが、Hになっていると動作しません。

・スタートアップはするがプロンプト ?が出ない（ERROR LEDが点灯したまま）
EEPROMのIC故障か配線不良の可能性があります。

・プログラムをターミナルにペーストして送ると異常
teraTermの設定→シリアルポート→送信遅延 200 ミリ秒/行になっているかを確認して下さい。 もし200 ミリ秒/行でしたら、300 ミリ秒/行にしてみてください。

４：操作方法● BASIC コマンドのダイレクト実行
コマンドモード(プロンプトが?)でBASIC コマンドを入力することで実行します。
?print 1+1
2?a=10?print a*a100?
※GOTO SOSUB FOR などは実行できません。
【重要】@0-@29のスクラッチパッドはインタープリタの作業領域と重なるのでダイレクト実行するとおかしな値になります。プログラム実行では問題ありません。

●プログラム入力モード
コマンドモード(プロンプトが? )で load コマンド入力でこのモードになります。
プロンプトが > になります。
プログラムは常に最初から書き込まれる状態になります。
間違えて入力モードにしたら、リターンを押す前にeof コマンドかCTRL-Cかリセットボタンで抜けてください。 こうすれば元のプログラムには何の影響も与えません。

?load>
この状態でプログラムを手打ちすると順に入力できます。
編集機能はBSキーでカーソルを戻すことのみ可能です。
リターンキーを打つともう手直しは出来ません。

そのため、テキストエディタでプログラムを作っておき、コピペか｢ファイル送信」でダウンロードする方法をお勧め致します。
ファイルの転送が終わったらeof(End Of File)コマンドで抜けます。
>print "OHAYO!"
>end
>eof
...
?
【注意】
eof入力後、ラベルの処理を行うので、数秒から数十秒待たされます。
.（ピリオド）がプログレスバーのように作業の進行状態に応じて表示されます。
（上の実行例参照）
プロンプト？が再表示されるまで、いかなるコマンドも入力できません。

●プログラムの実行
コマンドモード(プロンプトが?)でrun コマンドを入力すると実行します。
実行中プログラムを停止したいときはCTRL+Cを入力します。
（INPUT命令で入力待ち、DELAY命令を実行中は反応しません）
プログラムはEEPROMに書きこまれ、電源を切ってもデータは消えません。
使いたいプログラムをあらかじめロードしておけば、次からは起動後すぐにrunするだけで実行出来ます。

５：言語仕様●モニタ
ターミナルからのコマンドやプログラム入力を受け付けます。
BSキーで入力文字の訂正も出来ます。
■コマンドモード（プロンプトが"?"）・入力したBASIC コマンドをダイレクト実行・run 入力モードで保存したプログラムを実行
・load プログラム入力モードに移行
・CTRL+C システムリセット■プログラム入力モード（プロンプトが">"）・入力したプログラムを一行ずつ保存（一行最大80文字）・eof コマンドモードに移行●変数、定数、式
変数 A-Zの26個のみです。 （数値は、符号付き16bitです）
定数 10進定数の他、0x8000のような16進定数、"...文字列..."はPRINT文のみ使用可能です。
算術演算 左から順に実行します。 四則演算 (+-*/)と、論理演算 (&.¦,~)
条件演算 左から順に実行します。 (==,!=,<,>,=<,=>)【重要】
数式には、カッコ （） は使えません。●メモリ参照子 @@+定数または変数で配列（メモリ）などに16bitでアクセスします。
@0-@29 スクラッチパッドメモリです。 （１次元の配列のように使用できます）@30-@34 アナログ値AI(4〜0）を読み込みます。 (10bit 0-1023)@35 キーコードを読み込みます。 （シリアル入力１文字読み込み、1バイト）@36 乱数を読み込みます。（0〜255）@37 DI端子（CN2 :I1,I0)のデジタル情報(1/0)を読み込みます。
@40 DO端子（D0〜D7)へのデータ出力です。 (1バイト）@100-@1000 EEPROMへのデータ読み書きを行います。
（電源を切っても消えないのでデータファイルとして利用可能です）●PRINT
ターミナルに出力（表示）します。
使用例：
PRINT "ANSWER=" ;PRINT A
行末が ; ならば改行しません。

●INPUT
ターミナルから数値を入力します。（文字は入力できません）
使用例：
INPUT A【重要】数値（10進のみ）を入力しリターンキーを押すと変数に取り込みます。

●IF〜THEN
使用例：
IF A>10 THEN PRINT "OVER!"
条件成立（式の値が1以上なら）THEN以降を実行します。

●GOTO,GOSUB,RETURN, :（ラベル識別子）
使用例：

A=0:L0PRINT A
A=A+1
IF A<10 THEN GOTO L0
上記の様に使います。ラベルは何文字でも可能ですが、最初の２文字のみで区別します。
GOSUBスタックは8レベルまでです。

●FOR〜NEXT
使用例：

FOR I=1 TO 100
PRINT I
NEXT I
また、入れ子は可能ですが、スタックはGOSUB と共用です。
（NEXTのあとの変数名は見ていないので省略可能です）●DELAY
使用例：

DELAY 100
上記のように使います。 プログラムを指定時間待たせます。単位は ms です。
（現在のBASICプログラムの実行速度は、１行平均10ms程度です）●LED
LED(D3)の点灯をON/OFFまたは指定の時間のみ点灯します。
使用例：LED 1⇒ LED(D3)が点灯します。
LED 0⇒ LED(D3)が消灯します。
LED 1000 ⇒ LED(D3)が1000mSの間、点灯し消灯します。
（引数が2以上場合は、引数msec秒の間、ＬＥＤが点灯します）●END
プログラムを終了、モニタに戻ってコマンドモードになります。
●コメント
REM文ですがREM とは書けませんので # と略します。
使用例：## このように使います#６：エラーコード●ERR 1XX
1行入力ごとにチェックされるインラインエラーです。
入力時に表示されるので、ペースト終了後にスクロールして確認します。
101 キーワードが見つかりません。

102 文字定数が""で囲まれていません。
103 16進定数が4桁以上です。
104 THENかTOのづづりが誤っている可能性があります。
105 GOTOの構文エラーです。
106 GOSUBの構文エラーです。
107 GOTOかGOSUBのつづりが誤っている可能性があります。
108 IFかINPUTのつづりが誤っている可能性があります。
109 LEDの記載が誤っている可能性があります。
110 不明なキーワードです。

●ERR 2XX
ラベル割り当て時にチェックされるラベル参照エラーです。
実行しますが、暴走する可能性があります。
【重要】
同じラベルが二つ以上あってもエラーになりません。 最初に見つかったラベルを参照します。
200 対応するラベルが見つからない●ERR X
実行時のエラー表示です。
エラー発生でプログラムは停止します。
1 代入文で変数の次に=がありません。
2 代入文でアドレス参照子の次に=がありません。
3 FOR文で変数名がありません。
4 FOR文で=がありません。
5 FOR文でTOがありません。
6 INPUT文で入力数字が大きすぎます。
10 ゼロでの除算が発生しました。
ひびきの電子株式会社 （V1.00）