4. Mac OS ROM データフォーク

4-1
「Mac OS 8.6」の「システムフォルダ」を開くと、「Mac OS ROM」があります。
この「Mac OS ROM」の情報をPismoと"Compatible"になるように編集していきます。

4-2
その前に、「ROM-original」と「ROM-new」というフォルダを新たに作成し、それぞれにオリジナルの「Mac OS ROM」とそのコピーを入れておきます。
作業を分かりやすくするのと、オリジナルのデータを間違って壊してしまわないためです。
それでは、データフォークから編集を行ないます。
後述のリソースフォークの編集をResEditで行なうため、データフォークの編集もMac OS版のものを探しました。
Vectorに「DEdit 1.1.0」という至ってシンプルなフリーソフトがあったので こちら からダウンロードして、「PowerBook G3」に置きました。

4-3

4-4
「DEdit 1.1.0」を起動して「File」メニューの「Open...」から「ROM-new」の「Mac OS ROM」を開きます。

4-5
メモリサイズが不足しているというメッセージが出ました。

4-6: 変更前

4-7: 変更後
「ファイル」メニューの「情報を見る」から「メモリ」を選択します。
メモリの「最小サイズ」と「使用サイズ」をこのように変更しました。
以下、「ROM-new」の「Mac OS ROM」をDEditで開いて、編集を行なっていきます。
参考のために左側にはoriginal(変更前)の内容を示しておきます。

4-8: original 000000-

4-9: new 000000-
<COMPATIBLE>. と .</COMPATIBLE>の間に、対象機種のIDが記述されています。
originalは、「iMac,1 PowerMac1,1 PowerBook1,1 PowerMac2,1 PowerMac3,1 PowerBook2,1」の6つの機種IDがブランクを挟んで並んでいます。
これを、newでは「MacRISC MacRISC2 MacRISC3 MacRISC4 Classic」の5つのグループ要素に変更します。
iMicさんの場合は、実際にこれらすべてのシステムに対して有効なGeneric ROMを形成してMac OS 9の起動を実現していますが、ここではその機種判定の部分のみを利用させてもらいます。
以下は、iMicさんの記事に載っていた、各システムの定義です。
MacRISC - Most OldWorld PowerPC Macintosh systems and possibly clones.
MacRISC2 - NewWorld PowerPC systems manufactured prior to the Mac OS X switch.
MacRISC3 - NewWorld PowerPC systems designed to only boot into Mac OS X.
MacRISC4 - PowerPC 970 "G5" based Macintosh computers.
Classic - The Mac OS X Classic Environment.

4-10: original 002100-

4-11: new 002100-
002100行目付近から、実際にCompatibleの判定を行なっている部分が始まります。
既に変更を加えた関係で、その分だけ位置がずれています。
まず、1番目の対象機種の部分を変更します。
「 imac,1」→「 macrisc」です。
ここでは小文字にすること、頭にブランクが入っていることに注意します。

4-12: original 002200-

4-13: new 002200-
002200行目付近です。
同様に、2番目以降の対象機種の部分を変更します。
2番目 「 powermac1,1」→「 macrisc2」
3番目 「 powerbook1,1」→「 macrisc3」
4番目 「 powermac2,1」→「 macrisc4」

4-14: original 002300-

4-15: new 002300
002300行目付近です。
5番目 「 powermac3,1」→「 classic」
6番目 「 powerbook2,1」はnewにおいて対応するものがないので、1セットになっている「2dup " powerbook2,1" $= r> or >r. 」(最後にブランク2つ)ごと削除します。

4-16: original 002400-

4-17: new 002400
002400行目付近です。
編集を加えたことによってチェックサムエラーが発生しますので、それを回避するために、
「if ." , checksum error". 」の後にある「abort」を「clear」に変更します。
「clear」は他の5文字でも構いませんが、ここでは分かりやすく「clear」としました。

4-18: original 003700-

4-19: new 003700
003700行目付近です。
このあたりから空白スペースが並んだ領域になります。
編集を加えたことによって全体のバイト数が変わってはいけないというルールがあるので、それをこの空白領域で調整します。
originalのバイト数は「371FE8」ですが、編集を終えた時点ではnewのバイト数はそれより少なくなっているはずです。

4-20
適当な空白領域を選んだ状態で、DEditの「Edit」メニューから「Insert 16 Bytes」や「Insert Byte」を実行して、バイト数がぴったり「371FE8」となるように調整します。
「File」メニューから「Save」します。
以上で編集作業終了です。
|