第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章のコマンドリファレンスを参照してください。
サンプルプログラムはこちら
目次へ戻る