FEATURES {
	STARTADDRESS: default = $0803;
}

MEMORY {
	ZP:     start = $0080, size = $001A,                 define = yes;
	HEADER: start = $0000, size = $0004,      file = %O;
	RAM:    start = %S,    size = $9600 - %S, file = %O, define = yes;
	MOVE:   start = $0000, size = $FFFF,      file = %O, define = yes;
	LC:     start = $D400, size = $0C00,                 define = yes;
}

SEGMENTS {
	ZEROPAGE: load = ZP,              type = zp;
	EXEHDR:   load = HEADER,          type = ro;
	STARTUP:  load = RAM,             type = ro;
	LOWCODE:  load = RAM,             type = ro;
	CODE:     load = RAM,             type = ro;
	RODATA:   load = RAM,             type = ro;
	DATA:     load = RAM,             type = rw;
	ZPSAVE:   load = RAM,             type = bss, define   = yes;
	BSS:      load = RAM,             type = bss, define   = yes;
	INIT:     load = MOVE, run = RAM, type = ro,  define   = yes;
	HIGHCODE: load = MOVE, run = LC,  type = ro,  optional = yes;
}

FEATURES {
	CONDES: segment = INIT,
	type    = constructor,
	label   = __CONSTRUCTOR_TABLE__,
	count   = __CONSTRUCTOR_COUNT__;
	CONDES: segment = RODATA,
	type    = destructor,
	label   = __DESTRUCTOR_TABLE__,
	count   = __DESTRUCTOR_COUNT__;
	CONDES: type    = interruptor,
	segment = RODATA,
	label   = __INTERRUPTOR_TABLE__,
	count   = __INTERRUPTOR_COUNT__;
}
SYMBOLS {
	__STACKSIZE__: value = $0800, weak = yes;
}

