Top Page > タダでPalm用ソフトを作る
※gccでPalm用ソフトを作る場合、情報がほとんど英語です。英語が全く読めないとかだとつらいと思います。
※何だかんだ重いものをダウンロードする(今回僕がDLしたのはcygwin経由のものを除いても全部で22.9MB)のでナローバンドだと辛いかもしれません。
この前Palm m130を入手して、早速これをターゲットにプログラムを書こうとPalm用gccを入れました。何とかプログラムを作れるようになったので、その過程を記録しておきます。Palmプログラミング初心者なんで、何か間違ってたら教えてください。
まずは、Installing prc-tools on MS Windows with Cygwinに従ってprc-tools(Palm用のgccなど)をインストールします。英語ですが、丁寧に解説されています。cygwin*1の標準インストールを使うので簡単です。以下は補足です。
Install SDKs(SDKのインストール)では、PalmOS SDKのページでどれかのバージョンのSDKをダウンロード、インストールします。インストール先はMounting your PalmDev treeで/PalmDevにマウントしたフォルダを指定します。Updateが出ていればそれもインストールしましょう。
基本的に、「PalmOS SDK xで作られたソフトはPalmOS x以降では確実に動く」という事のようです。古すぎるSDKでは新しい機能が使えませんし、新しすぎるSDKでは動作OSが限られる、ということです。僕は4.0を入れました。下位互換性は完全でない(SDK 4.0のソースがSDK 5.0でもそのまま使える訳ではない)ようです。
Post-installation setupでは、bash上でpalmdev-prepを引数なしで呼ぶだけです。
pilot-templateはPalm用ソフトのソースの雛型を吐くツールです。僕はbrowncat.org-私家版 pilot-templateから入手しました。+Lhacaなどで解凍して、cygwin bash上で解凍したフォルダに移って
./configure
make install
とすればインストール完了です。
以上でインストールが終わりました。では最初のプログラムの国際標準(?)、"Hello world"を作りましょう。cygwin bashで好きなフォルダに移動して
pilot-template -palmos4*2 hello.prc hello hello Helo*3
とするとファイルが色々生成されます。Makefileを開いて
! $(NM) -u $(TARGET) | grep .
という行があれば
$(NM) -u $(TARGET) | grep . || true
に直してください。こうしないとm68k-palmos-nmでエラーになる事があります。
hello.cがソース、hello.rcpがGUIの定義ファイルです。hello.rcpをエディタで開いて TITLE "Hello" の後に
Label "Hello, World." AUTOID AT (50 60)
を付け足しましょう。bashで
make
とするとコンパイルやリンクが行われ、成功すればhello.prcができます。これをPalmのインストールツールで実機にインストールします。実機でアプリケーション"hello"を起動してください。"Hello, world."と表示されましたか?
実は上のHello worldの例はbrowncat.org-gccでpalmware開発をのものです(勝手に借用してすいません>browncat.org管理者様)。gccでpalmware開発をでは雛型の説明などが続いてますのでこれを読みましょう。
PalmOS用の関数(API)のマニュアルはPalmOS SDKの各バージョンのページのDocumentationをダウンロード、解凍してできるPalm OS Reference.pdfです。各GUI部品はPartIに、イベントはPartI - PalmOS Events - Event Referenceに、画面への描画はPartII - Windowsに、データベース*4はPartII - Data and Resource Manager、メモリ関連はPartII - Memory Managerに書いてあります。
.rcpファイルの書き方は桝谷家ホームページ-PilRC 日本語マニュアルに有ります。
新しいソースファイル(例えばgoodby.c)を加えるには、Makefileの OBJS = $(TARGET).o の行末にスペースをはさんで goodby.o を加えます。
PalmOS SDK 4.0では、string.hとstdlib.hを両方インクルードするとエラーになります。string.hのstrtoulとstrtolの宣言(48〜50行目)を削除すればOKです。
C++(拡張子は.cppとする)で書くには、Makefileに
.cpp.o:
$(CC) $(TARGETFLAGS) $(CFLAGS) -o $@ -c $<
を付け加えればいいみたいです。gccなのでテンプレートなんかもさっくり通るんですが、どうもC++用ヘッダファイル(STLとか)は付いてないようです。Tangentsoft-Palm C/C++ Portability Guideに昔のSTLをPalm用にportしたと言うものが有ります(まだ試してない)。
PoseというWindows用Palmエミュレータがあって、これを使うと開発が楽になりそうなんですが、僕は成功してないので詳しくは分かりません。
何でもROMイメージを得るには何とか会員になるか実機から吸い出すらしいんですが、Poseの吸出し機能はシリアルのみ対応らしく、僕はUSBクレードルしか持ってないので駄目っぽいです。赤外線でもできるという噂を聞きましたが、赤外線HotSyncもうまく行かないので無理っぽいです。
今回一番参考にしたのはbrowncat.org-gccでpalmware開発をです。Unix向けですが、詳しく分かりやすいので読んでみましょう。
上の内容で不明な点、リンク切れ、古くなった情報、間違いなど有りましたらメールでお知らせください。
*1 昔のprc-toolsはcygwin B20.1という古いcygwinを要求したみたいですが、現在は普通のcygwinを使います。
*2 SDKのバージョンを入れます。
*3 最後のHeloは4文字のCreator ID。全て小文字は予約されてるらしいのでそれ以外にしましょう。公開する場合はここで独自のIDを取得する必要が有ります。
*4 アプリが終了してもデータを残すには、Windowsならファイルやレジストリを使いますが、Palmではデータベースというものを使います。ぱ〜む脱力ゲーム協会-講座第14章が分かりやすいです。
Gimite 市川 <gimite@mx12.freecom.ne.jp>
タダでPalm用ソフトを作る < Top Page