トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

h2e 仕様 - メモリ配置

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 を使用しない場合は自由に使用できます。