キー入力判定プログラムの作成 

CodeWarriorが作成したひな形のmain.cに手を加えて、作っていくことにします。

1.ひな形の作成と、プロジェクトの設定

まずひな形を作ります。
CodeWarriorのIDEを起動し、メニューから、ファイル→新規プロジェクトを選び、新規プロジェクト作成のダイアログで、RuputerAppを選びます。

すると、プロジェクト名を入力するダイアログが開きますが、このダイアログはフォルダを選択するダイアログになっていますので、まず保存したいフォルダを選択し、その後下部にあるファイル名の欄にプロジェクト名を入れます。

このとき入力したファイル名で新しくフォルダが作られ、そこへソースなど各種のファイルが保存されます。

これで、ひな形が完成し、IDEにプロジェクトが読み込まれます。下の図は、プロジェクトマネージャ(?)です。

このWindow中の上にあるボタンの内、一番左の「ターゲット設定」ボタンを押して、プロジェクトの設定をまずします。

ターゲット名をまず変更し、次に左のツリーで「リンカ」の下の「BatchRunner〜」を選んでください。

ここで「Choose」ボタンを押し、プロジェクトを保存したフォルダ内にできた「elf2bin.bat」を指定しておきます。

最後に右下の「保存」ボタンを押して、これで設定は完了です。
プログラムの作成に移りましょう。

2.プログラムの作成

まずは、できあがったひな形のmain.cを開いてみましょう。

/*======================================================================*/
/*プロジェクト名:RUPUTER */
/* Copyright (c) Seiko Instruments Inc. 1998. All rights reserved. */
/* */
/* Welcom to Ruputer Park */
/* Hello,World */
/*======================================================================*/

#include"wbios.h" /* bios */
#include"lcdbios.h" /* LCD描画 */

int main(void)
{
int Key=0;

screen(1);
/***********************************************************
Ruputer表示モードの設定です。
通常 1=GVRAM(320x240)です。
実際のLCD表示範囲は102x64です。
その内の、左上をx=0,y=0として
***********************************************************/

cls(4);
/***********************************************************
GVRAM全範囲の表示をきれいに消します。
通常 4=GVRAMモード です。
***********************************************************/

gv_kput(10,20,"Hello,World!!",0,0,0);
/***********************************************************
文字列を任意のGVRAM座標に表示します。

書式
gv_kput(x,y,str,size,space,logic)

int x GVRAM座標の表示開始位置 x(左端より)
int y GVRAM座標の表示開始位置 y(上端より)
char *str 表示文字列
int size 文字サイズ 12dot=0,10dot=1,8dot=2,....
int space 文字間のスペース(通常0)
int logic 通常0 その他XOR、反転表示できます。
***********************************************************/

while( Key==0 ){
Key=bi_getbtn();
/***********************************************************
bi_getbtn()
キーの状態を戻します。
キーイベント(押し下げ、押し上げ)があるまで、
この関数は戻ってきません。

書式
int bi_getbtn()

戻り値 キーイベント(押し下げ、押し上げ)がきた時のキー状態
各キーは、全8bitのそれぞれ1bit毎に割り付けられています。
rupsys.hに定義されてます。参照して下さい。
(この例ではC:\Sii\RupSDK\Inc\rupsys.h)

Bkey_D … Menuキーの値 rupsys.hに定義済み
Bkey_up … ↑キーの値 rupsys.hに定義済み
Bkey_dw … ↓キーの値 rupsys.hに定義済み
Bkey_lf … ←キーの値 rupsys.hに定義済み
Bkey_rg … →キーの値 rupsys.hに定義済み
***********************************************************/

bi_clrbtn();
/***********************************************************
bi_clrbtn();
キーバッファをクリアします。
***********************************************************/

}

cls(4);
}

結構コメントが詳しく書いてあり、親切なひな形ですね。関数の詳しい使い方まで書かれています。
30行目の「gv_kput(10,20,"Hello,World!!",0,0,0);」で、画面にHello,World!!を表示させて、その後45行目からのwhileループで、キー入力を待って、何かのキーが押されたら終了するようになっています。
いやあ、懐かしい!DOS時代のプログラムを思い出しますね。

では、このキー入力で終了する部分を、入力されたキーを判定して、結果を画面に表示するように書き換えてみます。
まず、whileの部分を無限ループにするために、while(!0)と( )の中を書き換えます。
次に、入力されたキーのコードがKeyに入りますので、それを判定して画面に表示するコードを追加します。
※キーコードの詳細は、wbiosライブラリ説明書をプロジェクトマネージャ(?)で開くと詳しく出ています。

if(Key!=0){
gv_kput(10,20,"           ",0,0,0);
switch(Key){
case 0x01: gv_kput(10,20,"FILER/TIME",0,0,0);
break;
case 0x02: gv_kput(10,20,"MENU",0,0,0);
break;
case 0x04: gv_kput(10,20,"EL",0,0,0);
break;
case 0x08: gv_kput(10,20,"ENTER",0,0,0);
break;
case 0x10: gv_kput(10,20,"左←",0,0,0);
break;
case 0x20: gv_kput(10,20,"上↑",0,0,0);
break;
case 0x40: gv_kput(10,20,"右→",0,0,0);
break;
case 0x80: gv_kput(10,20,"下↓",0,0,0);
break;

default : break;
}

}

キーバッファのクリアの次あたりに追加するといいでしょう。

これで、とりあえず完了です。
※ただ、これだとプログラムが終わりませんので、終わるように工夫し改良したものを、ダウンロードのコーナーに置いておきます。

3.実行プログラムのメイク

プログラムマネージャ(?)の上部に並んだボタンの真ん中に「メイク」というボタンがありますので、押しましょう。

これでRuputerの実行形式exfファイルが、プロジェクトの保存フォルダにできあがっているはずです。エクスプローラなどで開いて確認してください。
できあがったexfファイルは、名前が必ず「RuputApp.exf」となります。
使用時には、自分の好みのファイル名にリネームするといいでしょう。
# ここでは、そのままでテストすることにしました。

次に、Ruputer本体か、エミュレータAurexで実行して、動作を確認し、気に入らないところは修正して完成とします。