Top > Develop > Tekk:MPWでPPCネイティブのXCMDを作る

 MPWでPPCネイティブのXCMDを作る

00.08.13 作成 

▼このTekk NoteではMPWでPPCネイティブのXCMDを作る。

まずは68KのX。これはMPWのパッケージにサンプルがあるから特に言うことはない。SCしてLinkすれば出来上がり。「HyperXLib.o」を追加する、というのがポイントといえばポイントか。

次にPPCネイティブのX。リソース名を小文字のxcmd/xfcnにするというのは有名な話。同じリソース名前で大文字小文字両方のXを用意すれば動作環境によって適切な方が実行される。
まず「HyperXLib.o」は68K用なので、それではなく「HyperXLib.xcoff」を追加する。このファイル、なぜかうちのMPWには入ってなかったのだけど、CodeWarriorの方に入っていたので助かった(下記サンプルには同梱しています)。
作り方はMrCでコンパイル、PPCLinkでリンクした後、MakePPCCodeRsrcでコードリソースに変換する。MakePPCCodeRsrcでは「-procinfo 192」というオプションを設定すること。
ただし問題がなくはない。小文字のxcmd/xfcnはHyperCard Lite2.2では認識されない。PPCのMac上で実行していても呼び出されないのであった。せっかく高速なマシンを使っているのにこれでは宝の持ち腐れ。そこでFATのコードリソースという案が浮上する。

FATのコードリソースはひとつのリソースに68KとPPC両方のコードを含んでいる。作るのがちょっと面倒だが、ユーザーが多いHyperCard Lite2.2でもPPCコードを実行することが可能なので、利用範囲が広い。
まず68KとPPCの実行コードを別個に作る。68Kは前述の通りだが、PPCはPPCLinkでリンクするところまでやって、MakePPCCodeRsrcは使わずにechorezを組み合わせて、そのままリソースに持っていく。ふたつのリソースをrezファイルを使ってsafe fat resourceとしてつなぎ合わせれば完成。リソースタイプは大文字の方にする。

以上、ひと通り書いてみたが、説明が投げやりでさっぱり分からないことだと思う。サンプルのソースとmakefileを作ったので、そちらを参考にしていただきたい。

→サンプルのダウンロード [22K.sit.hqx]
ちなみにこのサンプルではエントリー関数名をEntryPoint()ではなくmain()にしています。ご留意ください。

 

▼参考リンク
HyperCard Heaven
CodeWarriorでPPC-XCMDを作る方法が書かれています。procinfoに関することも書かれています。今回のTekkNoteは、大半がこのページからの受け売りだったりするのでした(^^;。

 


 Top > Develop > Tekk:MPWでPPCネイティブのXCMDを作る