X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fld65%2Fcfg%2Fnes.cfg;h=2e2bb108e0b105d7f7ba0d0189f34a19fd44abdc;hb=ba46bab0097d9c02a7f67501f289a1fba3b253d1;hp=2b17cec27fbba994357ea8c81322e6a5c9b84023;hpb=2a921c44984f721a4f22c90186f733937369bec6;p=cc65 diff --git a/src/ld65/cfg/nes.cfg b/src/ld65/cfg/nes.cfg index 2b17cec27..2e2bb108e 100644 --- a/src/ld65/cfg/nes.cfg +++ b/src/ld65/cfg/nes.cfg @@ -1,16 +1,54 @@ MEMORY { - ZP: start = $02, size = $1A, type = rw, define = yes; - RAM: start = $03FF, size = $7BFF, file = %O; + + ZP: start = $02, size = $1A, type = rw, define = yes; + + # INES Cartridge Header + HEADER: start = $0, size = $10, file = %O ,fill = yes; + + # 2 16K ROM Banks + # - startup + # - code + # - rodata + # - data (load) + ROM0: start = $8000, size = $7ff4, file = %O ,fill = yes, define = yes; + + # Hardware Vectors at End of 2nd 8K ROM + ROMV: start = $fff6, size = $c, file = %O, fill = yes; + + # 1 8k CHR Bank + ROM2: start = $0000, size = $2000, file = %O, fill = yes; + + # standard 2k SRAM (-zeropage) + # $0100-$0200 cpu stack + # $0200-$0500 3 pages for ppu memory write buffer + # $0500-$0800 3 pages for cc65 parameter stack + SRAM: start = $0500, size = $0300, define = yes; + + # additional 8K SRAM Bank + # - data (run) + # - bss + # - heap + RAM: start = $6000, size = $2000, define = yes; + } + SEGMENTS { - CODE: load = RAM, type = wprot; - RODATA: load = RAM, type = wprot; - DATA: load = RAM, type = rw; - BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; + HEADER: load = HEADER, type = ro; + STARTUP: load = ROM0, type = ro, define = yes; + LOWCODE: load = ROM0, type = ro, optional = yes; + INIT: load = ROM0, type = ro, define = yes, optional = yes; + CODE: load = ROM0, type = ro, define = yes; + RODATA: load = ROM0, type = ro, define = yes; + DATA: load = ROM0, run = RAM, type = rw, define = yes; + VECTORS: load = ROMV, type = rw; + CHARS: load = ROM2, type = rw; + BSS: load = RAM, type = bss, define = yes; + HEAP: load = RAM, type = bss, optional = yes; + ZEROPAGE: load = ZP, type = zp; } + FEATURES { - CONDES: segment = RODATA, + CONDES: segment = INIT, type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__; @@ -18,7 +56,12 @@ FEATURES { type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__; + CONDES: type = interruptor, + segment = RODATA, + label = __INTERRUPTOR_TABLE__, + count = __INTERRUPTOR_COUNT__; } + SYMBOLS { - __STACKSIZE__ = $800; # 2K stack + __STACKSIZE__: value = $0300, weak = yes; # 3 pages stack }