; ; メモリ配置定義 ; ・コンパイラ言語仕様の「セグメント名一覧」を参考にコンパイラ生成のセグメントを定義 ; ・先頭に"@@"が付くセグメント名はコンパイラが生成.それ以外は独自定義 ; ・ブートフラッシュの再リンク機能は使用せず,フラッシュメモリ領域定義は省略 ; ・@@VECTnn の定義もここでは省略 ; ; ; MEMORY ; ; @@CODE の配置アドレスを安定させるためROM領域を2つに分割する MEMORY ROM_HEAD : ( 00000000H, 000000d8H ) / REGULAR MEMORY ROM : ( 000000d8H, 0000ff28H ) / REGULAR MEMORY RAM : ( 000fef00H, 00001000H ) / REGULAR ; ; SEGMENT(ROM_HEAD) ; ; ベクタテーブル領域(00000H--0007FH,128バイト, ただし02h-03hには配置しない) MERGE VECTOR : AT ( 00000000H ) = ROM_HEAD / REGULAR ; callt関数のテーブル用セグメント( 00080H-000BFH, 64バイト), CALLT0属性 MERGE @@CALT : AT ( 00000080H ) = ROM_HEAD / REGULAR ; オプションバイト領域(C0H--C2H, C3H)はセグメント定義できない ; セキュリティID(C4H--CDH) MERGE SECID : AT ( 000000c4H ) = ROM_HEAD / REGULAR ; オンチップデバッグ機能の使用領域(CEH--D7H) ;MERGE OCDWORK : AT ( 000000ceH ) = ROM_HEAD / REGULAR ; ; SEGMENT(ROM) ; MERGE @@CODE : = ROM / REGULAR ; コード部用セグメント(near), BASE属性 MERGE @@BASE : = ROM / REGULAR ; callt関数・割り込み関数用セグメント, BASE属性 MERGE @@LCODE : = ROM / REGULAR ; ライブラリ・コード部用セグメント(near), BASE属性 MERGE @@LBASE : = ROM / REGULAR ; ライブラリ・callt関数用セグメント, BASE属性 ; この行を有効にするとなぜかMIRRORP属性が失われるため,とりあえずコメントとする ;MERGE @@CNST : = ROM / REGULAR ; ROMデータ(near), MIRRORP属性 MERGE @@R_INIT : = ROM / REGULAR ; near初期化データ用セグメント(初期値あり), UNIT64KP属性 MERGE @@R_INIS : = ROM / REGULAR ; 初期化データ用セグメント(初期値ありsreg変数), UNIT64KP属性 MERGE @@CODEL : = ROM / REGULAR ; コード部用セグメント(far) MERGE @@LCODEL : = ROM / REGULAR ; ライブラリ・コード部用セグメント(far) MERGE @@CNSTL : = ROM / REGULAR ; ROMデータ(far), PAGE64KP属性 MERGE @@RLINIT : = ROM / REGULAR ; far初期化データ用セグメント(初期値あり), UNIT64KP属性 ; ; SEGMENT(RAM) ; MERGE @@BITS : = RAM / REGULAR ; boolean型変数, bit型変数用セグメント, BSEG領域 MERGE @@INIT : = RAM / REGULAR ; データ領域用セグメント(初期値あり, near配置), BASEP属性 MERGE @@DATA : = RAM / REGULAR ; データ領域用セグメント(初期値なし, near配置), BASEP属性 MERGE @@INIS : = RAM / REGULAR ; データ領域用セグメント(初期値あり sreg 変数), SADDRP属性 MERGE @@DATS : = RAM / REGULAR ; データ領域用セグメント(初期値なし sreg 変数), SADDRP属性 MERGE @@INITL : = RAM / REGULAR ; データ領域用セグメント(初期値あり, far配置), UNIT64KP属性 MERGE @@DATAL : = RAM / REGULAR ; データ領域用セグメント(初期値なし, far配置), UNIT64KP属性 MERGE @@CODER : = RAM / REGULAR ; RAM配置 コード部用セグメント MERGE @@LCODER : = RAM / REGULAR ; RAM配置 ライブラリ・コード用セグメント MERGE @@CNSTR : = RAM / REGULAR ; RAM配置 ROMデータ用セグメント(near), MIRRORP または UNIT64KP属性 MERGE @@CNSTLR : = RAM / REGULAR ; RAM配置 ROMデータ用セグメント(far), PAGE64KP属性