超ミニBASIC for SH7046 ユーザーズガイド

Copyright (C) 2005 A.Hiramatsu (05/01/08)



 この文章は、ユーザーが実際に超ミニBASIC for SH7046 を使う際にヒントになると思われることを書いたものです。

パソコンのシリアル通信ソフトの設定例

・HyperTerm(ハイパーターミナル)の例

 HyperTerm の場合、最初に「接続」を作るところから始まります(一度作ったら以後この作業はする必要はありません)。ハイパーターミナルのアイコンをダブルクリックすると「接続の設定」というウインドウが出ますので、適当な名前("COM1-Direct"とか)を付けて、適当なアイコンを選んでOKボタンを押します。

 次に「接続の設定」というウインドウが出ます。ここで、「国番号」、「市外局番」、「電話番号」などは入力せず、「接続の方法」のみを設定します。「接続の方法」の項目にはモデムや「Com1へダイレクト」「Com2へダイレクト」などが選べるようになっているはずですが、自分が使いたいシリアルポートに対応する「Com×へのダイレクト」を選んでOKボタンを押してください。

 次に「COM×のプロパティ」というウインドウが出て、その中には「ポートの設定」と書いてあるはずです。ここで「ビット/秒」は9600、「データビット」は8、「パリティ」はなし、「ストップビット」は1、「フロー制御」はなしに設定しOKボタンを押します。「詳細設定」はとくに行う必要はありません。

 これで一応通信できるようになります。が、一旦メニューの「通信」から「切断」を選んでください。そして、メニューの「ファイル」から「プロパティ」を選んでください。「(あなたが付けた名前)のプロパティ」というウインドウが出て、「接続の設定」と「設定」という2つのページがあるはずです。そこで「設定」の方を選んでください。その中に「ASCII設定」というボタンがあるはずなので、それを押してください。

 今度は「ASCII設定」というウインドウが出ます。その中に「ディレイ(行)」、「ディレイ(文字)」という項目があるはずです。「ディレイ(行)」には50、「ディレイ(文字)」には0という数値を入れてOKボタンを押してください。そして「(あなたが付けた名前)のプロパティ」のOKボタンも押してください。

 ここまでやったら、その接続を保存します。メニューの「ファイル」から「ハイパーターミナルの終了」を選びます。「セッション(あなたが付けた名前)を終了しますか?」と聞いてくるので、「はい」を選びます。これでハイパーターミナルは一旦終了しますが、ハイパーターミナルのフォルダ内にはあなたのつけた名前のアイコンができているはずです。以後はそのアイコンをダブルクリックするだけですぐ通信できるようになります。

・Tera Term PRO の例

 Tera Term PRO は、起動すると最初にTCP/IPか、シリアルポートかを選ぶウインドウが出ます。もちろんシリアルを選び、ポートは実際に使うポート(COM×)を選びます。

 通信条件の設定はメニューの「Setup」から行います。まず「Setup」から「Serial Port」を選び、「Baud rate」には9600、「Data」には8bit、「Parity」はnone、「Stop」は1bit、「Flow control」にはnone、「Transmit delay」の「msec/char」には0、「msec/line」には50と設定しOKボタンを押します。

 次に「Setup」から「Terminal」を選び、「Newline」の「Recieve」、「Transmit」の両方ともCRにしてOKボタンを押します。

 それから「Setup」から「Save setup」を選んでその設定を保存します。保存ウインドウのファイル名のところは"TERATERM"となっていますが、その名前は変えずに「保存」ボタンを押します。次に起動したときには今設定した条件で立ち上がります。

超ミニBASIC for SH7046の初期化動作

 CPUがリセットされるとBASICインタプリタはSH7046CPUの内蔵I/OをBASICを使うのに必要最小限なだけ初期化します。詳しくはI/O初期化についての項を見てください。

 次にワークエリアを初期化します。

 そして、$10000番地にBASICテキストがあるかどうか調べ、BASICテキストがあると思われればそれを実行します。この、最初に実行されるBASICテキストをスタートアップスクリプトといいます。ふつう、$10000番地は内蔵ROMですから、BASICインタプリタをROMに書き込む際にいっしょに$10000番地にBASICテキストも書き込んで置けば、リセット後シリアルターミナルからのコマンド受け付け状態になる前にBASICプログラムを走らせることができます。
 また、スタートアップスクリプトにメインの処理を全て書いて、スタートアップスクリプトの中でループしてしまえば、シリアルターミナル無しでも動くワンチップアプリケーションにすることができます。

 スタートアップスクリプトはテキストエディターで書いたものを cmb2s.exe で変換してください。

 スタートアップスクリプトが存在しないか、またはスタートアップスクリプトの実行が終了するとシリアルターミナルからのコマンド受けつけ状態になります。

I/O初期化について

 超ミニBASIC for SH7046は、リセット後本当に最小限の初期化しかしません。具体的にはシリアルコミュニケーションインターフェースのチャネル2、3を9600ボー、8ビット、ストップビット1に設定するだけです。

 インタプリタはSCIチャネル2は使わないので、初期化しなくてもいいのですが、ビーリバーエレクトロニクス社のSH7046ボードなどはチャネル2にもすでにRS−232Cコンバータがつながっており、これを普通のI/Oポートとして使うことは考えにくいのでシリアルポートとして使うよう設定しています。



 I/OポートはポートAのビット9、8、7、6だけをそれぞれTXD3、RXD3、TXD2、RXD2となるように設定し、他のポートはリセット直後と同じ状態のままにしています。これは、超ミニBASIC for SH7046が実際にどのようなハードウエアに載せられるかわからないので、うかつにI/Oポートを出力に設定してしまうとハードウエアによっては出力どうしがぶつかってしまう危険があるからです。

 そこで、I/Oポートはユーザー側で、それぞれのハードウエアに合わせて初期化していただくことになります。初期化プログラムはスタートアップスクリプトに書いておくとよいでしょう。

 何もつながっていない(プルアップ/プルダウンすらされていない)ポートを入力のまま放っておくと静電気等の悪影響を受ける可能性がありますので、出力に設定するなどして適宜対処してください。

・初期化の例

ビーリバーエレクトロニクス社製YS7046−1ボードの初期化例
100 POKE &PACRL3,%$03C0 ' PORT A BIT9,8,7,6:SCI
110 POKE &PACRL1,%$0005 '        OTHER BITS:OUTPUT PORT
120 POKE &PACRL2,%$5000
130 POKE &PAIORL,%$FFFF
140 POKE &PBCR1 ,%$0000 ' PORT B OUTPUT PORT
150 POKE &PBCR2 ,%$0000
160 POKE &PBIOR ,%$003C
170 POKE &PECRH ,%$0000 ' PORT E OUTPUT PORT
180 POKE &PECRL1,%$0000
190 POKE &PECRL2,%$0000
200 POKE &PEIORH,%$003F
210 POKE &PEIORL,%$FFFF

※ポートF、Gについては、プログラムではどうしようもないので何もつながっていない場合プルアップ/プルダウン抵抗をつけるなどして対処してください。

割り込みについて

 超ミニBASIC for SH7046は、割り込みを一切使用していません。リセット後割り込み禁止のまま立ち上がります。
 割り込みを使いたい場合はユーザーが適当なメモリ上に割り込みベクタテーブルを置いた上でCPUのベクタベースレジスタVBRにそのベクタテーブルを設定します。BASICインタプリタにはVBRを直接操作する命令は無いので、ユーザーがVBRを設定するマシン語ルーチンを作り、USR関数で呼び出す必要があります。

メモリマップ

  超ミニBASIC for SH7046は、CPU内蔵のRAMしか使いません。その内訳は以下のようになっています。

$FFFFD000〜FRE(1)-1

BASICテキスト

FRE(1)〜FRE(2)-1

フリーエリア

FRE(2)〜$FFFFFFFF

BASICインタプリタのワークエリア