!!!about ここではリンカスクリプト h2e.x をベースにした RAM の配置を記載いたします。 System24 は当時としては RAM の容量が非常に大きいので、複雑なプログラムを実行可能です。その反面、 VRAM (特にキャラクタ)は少なめになっています。 未使用領域を使う場合は h2e.x を変更するか、ポインタにアドレスを直書きするなどしてください。 !!!RAM配置 $080000-$08ffff BIOS 予約 $090000-$09dfff h2e file Program $09e000-$09ffff h2e work RAM $0a0000-$0bbfff 未使用 $0bc000-$0bffff スタックデータ $0c0000-$0fffff $080000-$0bffff のミラー $200000-$3fffff VRAM (tile) $400000-$403fff color RAM $600000-$7fffff VRAM (sprite) $f00000-$f3ffff CPU B main RAM $f40000-$f7ffff $f00000-$f3ffff のミラー $f80000-$fbffff $080000-$0bffff のミラー $fc0000-$ffffff $080000-$0bffff のミラー ROM やinput port,専用レジスタは別資料を参照してください。 Sega System 24 hardware description by Charles MacDonald http://cgfm2.emuviews.com/txt/s24tech.txt !! BIOS 予約 書き込み禁止。 BIOS のプログラムで使用するデータとして予約済みです。現状では $081fff まで使用しています。 !! h2e file Program h2e ファイルのヘッダを除いた部分が転送されます。 プログラムの長さは 0xe000 byte が最大となりますので、それを越える長さや別のアドレスを使用したい場合は個別に定義、使用してください。 !! h2e work RAM h2e file Program が使用できる RAM で、スタックは除きます。グローバル変数や静的変数をリンカがこの領域に配置します。値の初期化は行いません。 !! 未使用 自由に使用できますが、スタックデータにつながる領域です。このためプログラムの内容によってはスタックがデータを浸食することがあります。 !! スタックデータ BIOS, h2e program 共用のスタックです。BIOS では $f80000-$ffffff をスタックポインタとしています(A7レジスタの初期値は$0000000)。 巨大なデータのローカル変数確保や多重の再帰呼び出しはスタックデータを大量に使用し、通常のRAM領域を浸食する原因になりますので、注意してください。 !! VRAM (tile), color RAM, VRAM (sprite) 詳細な仕様は別文書を参照してください。 BIOS では VRAM (tile) と color RAM の先頭に文字表示のためのデータが入っています。データを変更すると BIOS に戻ったときに表示がおかしくなる可能性があります。 VRAM (sprite) は未使用です。 !! CPU B main RAM CPU B の $000000-$03ffff に配置される RAM で、 CPU B を使用する場合にはプログラムを転送します。 CPU B を使用しない場合は自由に使用できます。