第3章 プログラミング

■ プログラミング概要

エントリー1は、PC本体のキーボードラインから簡単なコマンドを送ることにより、より高度な活用が可能です。
PC本体のキーボードラインからエントリー1にデータを送るための手順を、BASICサブルーチンとして次に示します。
ユーザー自身で本サブルーチンを参考に、エントリー1コントロールプログラムを自由に作成してください。
■ サブルーチン

BASIC言語で記述した、標準的なサブルーチンを示します。
また他言語へ移植を検討される場合は、事項のサブルーチン解説をご覧ください。

サブルーチン名は"*SEND.DAT"です。
コマンドナンバー、パラメーターを、変数名"SEND$"の中に代入し、サブ
ルーチン(*SEND.DATA)をコールします。

ここではサブルーチンの実際使用例として、LCD表示をクリアして、
”HELLO!”と表示させてみます。

<参 照>
 コマンドの詳細については、第4章のコマンドリファレンスを
  参照してください。
    LCD表示クリア
    メッセージ表示

 100 '
110 ' LCD ヒョウジヲ クリアシ HELLO! ト ヒョウジスル
120 '
130 SEND$=CHR$(&H1B)+CHR$(&H12)+CHR$(&H0) '12h LCD表示クリア
140 GOSUB *SEND.DATA
150 SEND$=CHR$(&H1B)+CHR$(&H1C)+CHR$(&H6)+"HELLO!" '1ch メッセージ表示
160 GOSUB *SEND.DATA
170 '
180 END
190 '
200 '--------------------------------------------------
210 ' サフ゛ル−チン
220 '--------------------------------------------------
230 *SEND.DATA
240 OUT &H2,(&H2 OR INP(&H2)) : DEF SEG=0
250 SP.TABLE.1 =PEEK(&H538) : SP.TABLE.2 =PEEK(&H53A)
260 TB.OFFSET.1=PEEK(&H522) : TB.OFFSET.2=PEEK(&H523)
270 FOR I.SEND=1 TO LEN(SEND$)
280 OUT &H43,&H17:OUT &H41,ASC(MID$(SEND$,I.SEND,1)): A%=INP(&H41)
290 FOR J.SEND=1 TO 36: NEXT J.SEND
300 NEXT I.SEND
310 OUT &H43,&H17
320 POKE &H538,SP.TABLE.1 : POKE &H53A,SP.TABLE.2
330 POKE &H522,TB.OFFSET.1 : POKE &H523,TB.OFFSET.2
340 A%=INP(&H41): A%=INP(&H41)
350 OUT &H2,(&HFD AND INP(&H2))
360 WHILE INKEY$<>"" : WEND
370 RETURN
380 '--------------------------------------------------

■ サブルーチン解説
1.OUT &H2,(&H2 OR INP(&H2))
以後の処理中はキーボードからの割込みを禁止します。
I/Oポートアドレス&H2はIMR(割込みマスクレジスタ)となっていて、マスクすべき割込みラインのビットを格納しています。
IMRのセットされているビットに対応したIR入力の割り込み要求は保留されます。
2.DEF SEG=0
セグメントのベースアドレスをシステム共通域に設定します。
3.SP.TABLE.1  =PEEK(&H538)
 SP.TABLE.2  =PEEK(&H53A)
 TB.OFFSET.1 =PEEK(&H522)
 TB.OFFSET.2 =PEEK(&H523)
ワークエリアの一部を保護します。
4.OUT &H43,&H17
PC本体側のUSART(8251A シリアルデータ送受信用IC)を、送信可の状態にします。

<参 照> I/Oポート表
5.OUT &H41,ASC (MID$(SEND$,I.SEND,1))
エントリー1へデータを送信します。
実際使用例では、コマンドやメッセージ表示データを、文字列にして、サブルーチンを呼んでいます。
そしてサブルーチン内では、その文字列を1文字づつ出力しています。
6.A%=INP(&H41)
1文字出力した後に、ダミーデータを取込みます。

<参 照> I/Oポート表
7.FOR J.SEND=1 TO 36:NEXT J.SEND
PC本体からコマンドや、表示データ列をエントリー1に送出するにあたりデータの送出タイミングをとります。

<ご注意>
エントリー1の、LCD表示やコマンドが正常に動作することが確認できればループの回数をユーザー自身で増減してください。
(プログラム内では36回)また、PCの機種により適切な値(ループ回数値)を使用してください。
8.POKE &H538,SP.TABLE.1
 POKE &H53A,SP.TABLE.2
 POKE &H522,TB.OFFSET.1
 POKE &H523,TB.OFFSET.2
ワークエリアの一部保護した所を書き戻します。
9.OUT &H2,(&HFD AND INP(&H2))
キーボードからの割込み禁止を解除します。
10.WHILE INKEY$<>””:WEND
BASICのキーバッファをクリアーします。

■ BASICサンプルプログラム

BASIC言語で記述されている本サンプルプログラムは、エントリー1のコマンドをメニューの中から選ぶことにより、全てのコマンドを試せます。
コマンドの詳細については、第4章のコマンドリファレンスを参照してください。

   サンプルプログラムはこちら


目次へ戻る