Tech Note 05f: NSBasic用のPalmOS Pascal Compiler共有ライブラリ サンプル

November 26, 2003

© NSB Corporation. All rights reserved.

[英語版]

Adrian Nicolaiev氏による寄稿。

このテクニカルノートはPalmOS Pascal (PP) Compilerを使って、他の共有ライブラリを作成するテンプレートの意味を持っています。このプロジェクトは、役に立つことは大してしていませんが、スタートポイントとしては十分でしょう。PP Compiler を使用すると、とても簡単にNSBasicようの共有ライブラリが作れることが分かるでしょう。

まず、必要なファイルをダウンロードします:

1) PPNSBasicLib.pas - Palm DOCフォーマット(PDB)のPPソースコード。
2) PPNSBLibTest.prj - 私たちの新しい共有ライブラリをテストするNSBasicプロジェクト。
3) PPNSBLib.inf - 共有ライブラリとNSBasic間のインターフェースとして、各ファンクションを説明する"inf"ファイル。
4) PP Compiler Enviroment - SSFファイルに収まった合併環境。

ここをクリック するとこれら全てがダウンロードできます。(252 Kb).
簡単な説明はこちら

この共有ライブラリの例は、PP Compilerに付いてくるサンプルを応用したものです。先を続ける前に、PPソースコードを見たい場合は、ここをクリックして下さい。

最初に述べたように、これは共有ライブラリ用のテンプレートですので、これを使って自分のファンクションを挿入するのは非常に簡単です。

この共有ライブラリのサンプルにある2つのファンクションは、足し算と掛け算を行います。このサンプルは、単純で理解し易いように作ってあります。

重要:"THIS"から始まるものは、このライブラリに所属していることを意味しています。このサンプルはNSBasicプログラムだけで使うためのものだし、NSBasicは.infファイルにある情報を使っていますので、あなたのライブラリでは"THIS"は省いても問題ありません。

今回の目的を重視するため、SSFファイル(PalmOS Simulatorを開くことができる)を使って特別なPP Compiler環境を作りました。 最終バージョンはNSBasic 4.0と一緒にインストールされるはずです。Simulator 5.3をお持ちでない場合、ここからダウンロードできます。

起動すると、Piaf、PP Shell、PPNSBLibtTestの3つのアイコンが"Unfiled"カテゴリーに見えるはずです。

これらのスクリーンショットに従うと、共有ライブラリをコンパイルすることができます。Pascalの知識を使うと、変更することも、さらに全く新しい共有ライブラリを作ることができます。その時は、みんなに報告しましょう。

あなたのPalmデバイスを使って、ご自身のPP環境を作りたい場合、このリンクを参考にして下さい。また、Windows IDEで共有ライブラリを編集したい場合は、Fozzyが使えるかもしれません。

もし知りたいのであれば、いくつかの気になる事項があります。

ここまであれば、スタートするには十分でしょう。


説明

PPNSBasicLib PAS File - PalmOS Pascal Compiler Library source code
function This_LibAdd(refnum:UInt16;a,b:integer;result:resultP):Err;
begin
result^:=a+b;
This_LibAdd:=0;
end;

function This_LibMul(refnum:UInt16;a,b:integer;result:resultP):Err;
begin
result^:=a*b;
This_LibMul:=0;
end;

PPNSBasicLib INF File - NSBasic INF source code
[General]
ExtensionName=PPNSB
PrcName=PPNSBasicLib.prc
Version=1.0
Manufacturer=Adrian Nicolaiev - http://www.niconnect.com
InfVers=2.0

[GlobalMethods]
PPNSB_ADD=1, func, 2, "PPNSB_ADD(in a as integer, in b as integer) as integer"
PPNSB_MUL=2, func, 2, "PPNSB_MUL(in a as integer, in b as integer) as integer"

PPNSBLibTest PRJ File - NSBasic Project source code
Startup()
LoadLibrary PPNSBasicLib.inf

Object()
result = PPNSBasicLib.PPNSB_ADD(aa,bb)
MsgBox Str(result)
result = PPNSBasicLib.PPNSB_MUL(aa,bb)
MsgBox Str(result)



スクリーンショット


Screenshot 01

Piafを起動した後、"O"をクリックしPNSBasicLib.pasを選ぶ。OKをクリックする。  

Screenshot 02

このソースコードが見える。


Screenshot 03

このラインが2つのファンクション、AddとMulを示している。共有ライブラリの名前も見える。
 


Screenshot 04

共有ライブラリの最後のラインが見える。AddとMulはOpen、Close、Sleep、Wake(内部ファンクション、これらは気にする必要なし)に続く最後の2つ。
 


Screenshot 05

コンパイルするには"B"をクリックする。私のコンピュータでは、568行をコンパイルするのに0.32秒掛かる。
 


Screenshot 06

次のステップ: Launcher Applicationsメニューから"Copy..."を選ぶ。
 


Screenshot 07

PPNSBasicLibを選ぶ。 "Copy To:"がPOSESlot1(模擬Expansion Card)にセットされていることを確認する。Simulatorフォルダの\Card1\PALM\Launcher\フォルダーを見ると、 "Copy"の後にPPNSBasicLib.prcがある。
 


Screenshot 08

テストをしましょう!
PPNSBLibTestプログラムを起動する。NSBasicでコンパイルする。


Screenshot 09

数字を入力し、MULの結果を見ます。
 


Screenshot 10

次に数字を入力し、ADDの結果を見ます。



気になる事項


Curiosity 1

Q.: PPNSBasicLibはどのように内部へ?
A.: "libr"リソースを持っています。


Curiosity 2

Q.: PPNSBasicLib.pasは?
A.: これは単に、ヘッダーとPascalソースコードを2番目のレコードに持った、Palm DOCファイルです。Palm DOCを読むプログラムを使うと、このファイルを開くことができます。
 


Curiosity 3

これが私たちのPascalソースコードです。
 


Curiosity 4

NSBasicで作ったPPNSBLibTestプログラムの内部です。
 



FozzyはPP Compiler用の無料のIDEです。ここから最新版をダウンロードできます。
 

さあ、あなたのオリジナルのライブラリを作ってみましょう。

Good luck !

Adrian Nicolaiev
http://www.niconnect.com