MacでXM7を動かす!

ここでは、「匿名希望のA」さんからお寄せいただいた、PPC(Power PC)マッキントッシュ上のLinuxPPCでXM7 Linux版を動かすための手順をご紹介いたします。「匿名希望のA」さんありがとうございました(ほんとに匿名でいいんですか?)

私はPPC Macを持っていないので内容の検証ができていませんが、お寄せいただいたメール内容をそのまま掲載させていただきます。BasiliskIIもFusionも持ってるんですが、どっちも68K Macのエミュレータなので…

というわけで申し訳ありませんが下記ドキュメントについて質問を頂いても基本的に回答できかねますのでご了承願います。

Macユーザーのみなさんがんばりましょう! うまく行けばMacでXM7が走るぞ!!

以下抜粋…


LinuxPPC on PowerMacintoshで,XM7V1L10を動かす方法

■はじめに
本ドキュメントは,LinuxPPC for MacintoshでXM7V1L10を動作させる手順について説明したドキュメントです。
LinuxPPCのインストールや,ソースコードの修正方法などについては説明しません。
これらの方法については,インターネット上で情報を探すなり,書籍を購入して勉強するなりして各自で調査してください。

■ファイルの準備
・XM7V1L10のソースを解凍し,linuxフォルダとvmフォルダの中にある全てのファイルを適当なフォルダの中にコピーします。
・文字コードと改行コードを変換します。
  なぜか,XM7ソースに含まれているconvert.sh自体がCRLF改行コードとなってしまっているので,そのままではスクリプトが走りません。
    lha m t.lzh convert.sh
    lha et t.tzh
  として,最初にconvert.shの改行コードを変換します。
  テンポラリとして作成したt.lzhは
    rm -f t.lzh
  で削除します。
  続いて,
    sh convert.sh
  で,ソースコードの文字コードと改行コードを変換します。

■Makefile.X11の修正
C言語版のCPUコアを使用してコンパイルするように修正します。
・9行目の先頭にある"cpu_x86.asm"を削除します。
・19行目の先頭にある"cpu_x86.o"を削除します。
・35行目にある"-DCPU_ASM"を削除します。

■xm7.hの修正
PowerPCはビッグエンディアンなので,リトルエンディアンで記述してある部分の修正が必要です。
・60行と61行を入れ替えます。

xw_key.cの修正
私はASCII配列のキーボードを使用していますが,i386版のlinuxとは全くキーコードが違うので修正が必要でした。
JIS配列のキーボードの場合は修正は不要かもしれません。
・24行目から57行目までの定義を以下のように修正します。
0xff, 0xff, 0xff, 0xff, /* 0- : */
0xff, 0xff, 0xff, 0xff, /* 4- : */
0x1e, 0x1f, 0x20, 0x21, /* 8- : [A] [S] [D] [F] */
0x23, 0x22, 0x2a, 0x2b, /* 12- : [H] [G] [Z] [X] */
0x2c, 0x2d, 0xff, 0x2e, /* 16- : [C] [V] ? [B] */
0x11, 0x12, 0x13, 0x14, /* 20- : [Q] [W] [E] [R] */
0x16, 0x15, 0x02, 0x03, /* 24- : [Y] [T] [1] [2] */
0x04, 0x05, 0x07, 0x06, /* 28- : [3] [4] [6] [5] */
0x0d, 0x0a, 0x08, 0x0c, /* 32- : [=]->[^] [9] [7] [-] */
0x09, 0x0b, 0x1c, 0x19, /* 36- : [8] [0] ]->[ [O] */
0x17, 0x1b, 0x18, 0x1a, /* 40- : [U] [->[@] [I] [P] */
0x1d, 0x26, 0x24, 0x28, /* 44- : RET [L] [J] [']->[:] */
0x25, 0x27, 0x0e, 0x31, /* 48- : [K] [;] [\] [,]->ESC */
0x33, 0x2f, 0x30, 0x32, /* 52- : [/] [N] [M] [.] */
0x10, 0x57, 0x01, 0x0f, /* 56- : TAB Space->Lspace [`]->ESC BS */
0xff, 0x5c, 0x52, 0x58, /* 60- : ? ESC->Break LCtrl->CTRL COMMAND->Cspace */
0x53, 0x55, 0x56, 0x4f, /* 64- : Lsft CAPS Loption->GRAPH Left */
0x51, 0x50, 0x4d, 0xff, /* 68- : right down up ? */
0xff, 0x47, 0xff, 0x39, /* 72- : ? <.> ? <*>-><-> */
0xff, 0x41, 0xff, 0x36, /* 76- : ? <+>-><,> ? Clear-><*> */
0xff, 0xff, 0xff, 0x38, /* 80- : ? ? ? </>-><+> */
0x1d, 0xff, 0x3d, 0xff, /* 84- : enter->RET ? <->-><=> ? */
0xff, 0x47, 0x46, 0x42, /* 88- : ? <=>-><.> <0> <1> */
0x43, 0x44, 0x3e, 0x3f, /* 92- : <2> <3> <4> <5> */
0x40, 0x3a, 0xff, 0x3b, /* 96- : <6> <7> ? <8> */
0x3c, 0xff, 0xff, 0xff, /* 100- : <9> ? ? ? */
0x61, 0x62, 0x63, 0x64, /* 104- : F5 F6 F7 F8 */
0x65, 0xff, 0xff, 0xff, /* 108- : F9 ? ? F11 */
0xff, 0x29, 0xff, 0x34, /* 112- : ? F13->] ? F14->[_] */
0xff, 0xff, 0xff, 0xff, /* 116- : ? ? ? F12 */
0xff, 0x66, 0x48, 0x49, /* 120- : ? F15->F10 ins Home->EL */
0x4a, 0x4b, 0x60, 0x4c, /* 124- : PageUp->CLS del F4 end->DUP */
0x5e, 0x4e, 0x5d, 0x54, /* 128- : F2 PageDown->HOME F1 Rsft */
0x35, 0x5a, 0xff, 0xff, /* 132- : Roption->Rspace Rctrl->KANA ? ? */

・83行目にある95という数字を111に修正します。
・84行目にある96という数字を119に修正します。

xw_disp.cの修正
i386版linux固有の処理を修正します。
・284行目で定義されているmに初期値を与え,m=0x80と記述します。
・555行目から557行目の処理をコメントアウトするか,削除します。
・569行目から573行目の処理をコメントアウトするか,削除します。

■実行ファイルのビルド
XM7ソースのドキュメントにあるとおり
    make -f Makefile.X11
でバイナリを生成して,
    strip xm7
で,シンボルテーブルを取り除きます。

■キーマップ
今回行った修正では,キーマップはASCII配列のApple拡張キーボードに対応しています。
基本的な配列はFM7と同じです。
特殊キーの配列は以下のようになっています。
FM-keyboard Apple-ExKeyboard
[
かな]    [control]
[GRAPH]
 [option]
[BREAK]
 [esc]
[INS]
    [ins]
[DEL]
   [del]
[DUP]
   [end]
[EL]     [home]
[HOME]
   [page down]
[CLS]
   [page up]
"]"
        [F13]
"_"
      [F14]
[PF10]
   [F15]
[CTRL]
   [control]
[CAP]
   [caps lock]

■問題点
・サウンドが鳴らない
 プログラムを実行すると,
    cannot set to NBIO mode
 と表示されて,サウンドが有効になりません。
 XWindow用の88エミュレータQUASI88やマルチアーケードエミュレータxmameでもPPC版ではサウンドが鳴らないという話ですので無理だとは思いましたが。
 
■テスト環境
 本体:元祖PowerMacintosh9500+G3-233アクセラレータ
 メモリ:112M
 HDD:内蔵SCSI2インタフェース+2G HDD
 グラフィックカード:9500に付いてきたATIのMach64カード

 この環境でも,グラフィックを頻繁に書き換えないソフトならば結構まとも
に動作します。
 BeBoxやRS6000などのLinuxPPCでも,キーマップを修正すれば動くと思うので,
ぜひ挑戦してみてください。


Let's enjoy XM7 life on your PPC Mac!