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は使わずにechoとrezを組み合わせて、そのままリソースに持っていく。ふたつのリソースをrezファイルを使ってsafe fat resourceとしてつなぎ合わせれば完成。リソースタイプは大文字の方にする。以上、ひと通り書いてみたが、説明が投げやりでさっぱり分からないことだと思う。サンプルのソースとmakefileを作ったので、そちらを参考にしていただきたい。
→サンプルのダウンロード [22K.sit.hqx]
ちなみにこのサンプルではエントリー関数名をEntryPoint()ではなくmain()にしています。ご留意ください。
▼参考リンク
HyperCard Heaven
CodeWarriorでPPC-XCMDを作る方法が書かれています。procinfoに関することも書かれています。今回のTekkNoteは、大半がこのページからの受け売りだったりするのでした(^^;。