Back to Home

Back to Palmware

Palmware development on Windows

since 2000/04/19
last update 2000/10/07

 「ボクの作ったPalmwareはシェアウェアになっているものであっても、自分でmakeしなおして使う分にはタダでいいよ〜ん」などといっているわりに、どうやれば、makeしなおせるのかを全然説明してないのと、PRC-Tools2.0なる新しいコンパイラが公開されたので、ちょうどいい機会ということで、開発環境の整備について紹介してみようと思います。

 Palmwareの作り方などの、より深い内容については、

など、先達のサイトを参考にしてください。

更新:

補足を追加しました。
Palm Gadgetryのリンク先を変更しました。
DeveloperZoneの構成の変更を反映しました(ボクが気づいた範囲だけ)。

ダウンロード

注意:ここでは、ファイルそのものにはリンクを張らず、それぞれの配布サイトに行って、入手するようになっています。これは、ここに書かれていることが最新情報である保証はないので、最新情報を確認した上で入手してほしいということと、古くなった記述があれば、kazhida@abplus.comに教えてほしいという2重の配慮です。 一応、リンクにはtargetを指定してあるので、ブラウザによっては別Windowで開くと思います。

PRC-Tools本体とCygwin

 まずは、Palm Computing(R)デベロッパー ゾーンにいきましょう。ここが、オフィシャルな情報元になります。
 そこのクイックインデックスでSDKを選ぶと、なにやら英語のページに飛びます。英語だからといって恐れることはありません。プログラミングツールの紹介ですから、ざっと眺めておけばいいでしょう。

 では、目的のPRC-Toolsを入手するために、development environmentという見出しのついたところにある、PRC-Toolsというリンクをクリックします。
 ここのInstallation on Windowsという章のところで、

  • full Cygwin install(14MB) 「cygwin-b20.1-full.exe」
  • prc-tools(7MB) 「prc-tools-2.0.exe」
を落としてきましょう。

 prc-toolsは、Cygwin(Windows上で動作するgcc環境)に含まれるDLLを必要とします。また、開発時に使うユーティリティ類もCygwinに含まれています。
 Cygwinについては、user tools only Cygwin(3MB)というのもありますが、どうせあとで、これがないあれがないということで困ることになると思うので、最初からフルセット版を使った方がいいでしょう。
 Cygwinの本家では、b20ではなく 1.1が配布されていますが、これだと素直にはPRC-Toolsが使えません(がんばればできるようになるんだろうけど)。Palmwareのために使いたいだけなら、上記のb20を使ったほうが無難です。

SDKs

 あと、ここで落としてくる必要があるのは、ずぅぅぅっと下のほうのPalm OS SDKsにある最初の方の、Palm OS(R) SDK version 3.5(ここからLICENSE AGREEMENTを通過してsdk35-prc.zipとsdk35-docs.zipをGet)です。
 Updateもでているので、これも落としてきておいたほうがよいでしょう。

 suitably modified version 1, 2, and 3.1 SDKs「palmos-1-2-3.1-sdks-1.zip」(リンクはそのあとのWindowsの部分)です。 ←これは、見当たらなくなってしまいました。どこかにあるとは思うのですが。

 とりあえず、AGREEMENTが恐い場合は、suitably modified version 1, 2, and 3.1だけでもいいでしょう。 ただ、3.5は3.1以前と比べて、かなり変更がある(補足参照)のでターゲットをどうするかを考えて決めたほうが良いです。
 ちなみに、ボクの場合、3.1をメインターゲットとしているので、今のところは、3.5のドキュメントやヘッダを見ながら、3.1のSDKを使用しています。 CLIEを買ってしまったので、カラー対応のため、SDK3.5ベースに移行してしまいました。

修正モジュール

 浮動小数点演算を行うPalmware(K-3みたいな電卓とか)を作る場合は、このページの最初の所に戻って、
There is a bug involving floating point in this version of prc-tools:
というところから、修正モジュール「float.zip」(リンクは、説明の中のWindowsの部分)も落としておきましょう。

ドキュメント

 次は、SDKのドキュメントです。

 SDK3.5の場合は、SDK本体と同じところから落とせるのでよいのですが、 suitably modified version 1, 2, and 3.1を使うには、別途、リファレンス・マニュアルが必要です。

 といったものの、困ったことに、3.1以前のドキュメントが見当たりません。  しょうがないので、3comのftpサイトから入手します
。  ここにあるdocs30.zipがドキュメント、examples30.zipが内蔵アプリなどのソースです。特にexamples30.zipはPalmwareを作る上での教科書になるし、内蔵アプリのデータ構造がわかる資料になりますので、是非、入手しておきましょう。
 ちなみにここから3.0用のSDK本体も入手可能ですが、3.1用を既に落としてきているので、特に必要ではありません。

Examples

 上記でも、examples30.zipの入手にふれていますが、いつの間にやら、PalmOS3.5ベースのExamples(sdk35-exaples.zip)が入手可能になっています。SDK version 3.5と同じところにあるので、是非、入手しておきましょう。

 てゆうか、ボクが公開しているソースでは、これを一部流用しているものがある(ライセンス的にはこのソースの配布はまずいようなので抜いてある)ので、これがないとmakeしなおせません。

リソースコンパイラ(pilrc)

 pilrcについては、前述のSDKのページからも落とせますが、メンテナのAaron Ardiriさんのページの方が新しいので、こちらをお勧めします。
 また、日本語用のパッチをPalm Gadgetryから入手できます。ボク自身はパッチ当てるのが面倒で素のままで使っていますが、このサイトではprc-toolsやpilrcの最新情報も紹介されていますので、要チェックです。
# いつもお世話になっております>Palm Gadgetry
## 最近では既に、日本語用のパッチは取り込まれているそうです。

PalmOSエミュレータ(POSE)

 POSEはMuchyさんのPalmware Review!経由で、落とすことをお勧めします。ここで、POSEの使用方法も説明されていますので、参考にしてください。

インストール

と、これで必要なものは手に入ったはずなので、インストールです。

Cygwin

 まず、Cygwinを最初にインストールします。落としてきたファイルがインストーラになっていますので、そのまま実行すればインストールされます。

 ところが、Cygwinは、インストールしただけでは、PATHの設定なんかをしてくれないので、しょうがないから自分でPATHを通します。
 そのとき、MAKE_MODE=UNIXも設定したほうが幸せになれます。これをしておかないと、make時にワイルドカードの展開をしてくれないので、いろいろと不都合が生じます。

 以上は、インストール時にスタートメニューに登録される「Cygwin B20」で実行されるcygnus.batの中で設定されますので、bashが嫌いでない方は、これを使えば悩むことはありません。
# ボクは、tcsh派なのでMAKE_MODEの設定に気づかずに悩んでました。

 環境変数の設定の仕方は、Windows95/98とWindowsNTとWindows2000でそれぞれ異なるので、面倒なのでここではふれません。
どうしてもできない場合は、コマンド・プロンプト、(またはDOSプロンプト)で、

SET MAKE_MODE=UNIX
SET PATH=c:\cygnus\CYGWIN~1\H-I586~1\bin;%PATH%
を実行すればよいでしょう。

PRC-Tools

 PRC-Toolsもインストーラになっているので、落としてきたファイルを実行するだけですが、Cygwinと同様にパスを通してくれないので、
C:\Program Files\PRC-Tools\H-i586-cygwin32\bin
をPATHに追加します。

SDKs

 SDKについては、3.5用は展開したファイルにインストーラが含まれているので、それを実行すればよいのですが、1,2,3.1用については、自分で「C:\PalmDev」というフォルダを作って、展開したファイル/フォルダ郡をそこに移動またはコピーします。
# 当然、C:\PalmDevに直接展開するのでもかまいません。

ターゲットが決まっている場合は、
ln -s sdk-3.1 sdk
のようにシンボリックリンクを張っておくと良いです。
このあたりのことはSDKのReadmeにあると思うので、目を通しておくと良いでしょう。

pilrc

 pilrcは、適当なところに展開してパスを通すか、パスの通っているところにpilrc.exeをコピーしておくと良いでしょう。
 ボクの場合は、自作ユーティリティなどの置き場としてc:\usr\binにパスを通してあるので、そこにコピーしました。

POSE

 POSEも適当なところに展開して、Emulator.exeを使用します。デスクトップにでもショートカットを作っておくと楽です。

 これで、一通りの環境がそろったので、どこぞからソースを持ってきてmakeしてみるも由、自作してみるもよし、拙作のソフトを自分でmakeしてただで使うもよしです。

修正モジュール

ところが、SDKのページに、

There is a bug involving floating point in this version of prc-tools:
conversionsbetween floating point and integral types don't work. This will be fixed in prc-tools 2.1. In the interim, if you are writing an application that uses floating point you should download this replacement library for Unix or Windows. If you are not using floating point, this bug will not affect you.

と、あるように、PRC-Tools2.0には、浮動小数点関連の不具合があります。

浮動小数点数と整数値の変換がうまく働かないというもので、例えば、

doucle v;
int i = 1;
v = i;
としたときに、v = 0になってしまいます。
浮動小数点数を使う場合は、致命傷になってしまうので修正が必須です。  前述で落としてきた修正モジュール「float.zip」を展開すると、libgcc.aというファイルがありますので、
「C:\Program Files\PRC-Tools\H-i586-cygwin32\lib\
gcc-lib\m68k-palmos\2.95.2-kgpd」 (長いけど一行です)
にあるlibgcc.aと取り替えます。

これで、安心してK-3もmakeしなおせますね。
# てゆうか、この不具合を知るまで、ひたすら悩みつづけたボクの時間を返せぇぇぇ。

補足

prc-tools0.5.0(いわゆる昔のGCC for Pilot)とPRC-Tools2.0との違いや、SDK3.5とそれ以前のSDKと違いのため、昔のソースがそのままでは、メイクできない場合があります。そのあたりについてちょっと補足しておきます。

m68k-palmos-coff-gccがないといわれる場合

PRC-Tools2.0になってから、コンパイラの名前が、
m68k-palmos-coff-gcc→m68k-palmos-gcc
m68k-palmos-coff-obj-res→m68k-palmos-obj-res
のように変更されています(-coffがなくなった)。
Makefileに、「CC=...」などの記述があったら修正しましょう。

parse error before `Word'などのエラーが出る場合

SDK3.5では、(多分、将来の移植性などを考慮したため)、それ以前のSDKで使用していたWordやByte、ULongなどの型を、UInt16、UInt8、UInt32といったものに置き換えています。
SDK3.5には、PalmCompatibility.hというヘッダファイルが含まれているので、それをincludeすることで、コンパイルは通るようになるはずですが、素直に3.1以前のSDKを用いる方が面倒が少ないと思います。
# PalmOS3.5では、表示周りの内部仕様がかなり変わっているので、
# それ関連の構造体とかの定義が微妙に違っていたりします。

pilrcでexpecting : Version Text, got 1というようなエラーが出る場合

昔のpilrcでは、バージョン表記のリソースを記述する際に、
VERSION 1 "1.0"
のように、(多分リソースIDに相当する)数値とバージョンしめす文字列を指定していたのですが、いつの頃からかしらないのだけど最近のpilrcでは、
VERSION "1.0"
のように、数値の部分が要らなくなっています。
# バージョンが複数あることはないってことで省かれたのかな?

なので、(上記の例では)1 を取ってやれば、エラーがでなくなると思います。


Copyright (C) 1999 ABplus Inc. kazhida.
All rights reserved.