# ld65 Linker-configuration for LUnix, Next Generation.
MEMORY {
    ZP:	 start = $0080, size = $0040;        # userzp buffer
    RAM: start = %S,  size = $7600;
}
SEGMENTS {
    ZEROPAGE: load = ZP,  type = zp,  define = yes; # Pseudo-registers
    STARTUP:  load = RAM, type = ro;  	# First initiation code
    LOWCODE:  load = RAM, type = ro, optional = yes; # Legacy from other platforms
    INIT:     load = RAM, type = ro, define = yes, optional = yes;
    CODE:     load = RAM, type = ro;  	# Program
    RODATA:   load = RAM, type = ro;  	# Literals, constants
    DATA:     load = RAM, type = rw;  	# Initialized variables
    BSS:      load = RAM, type = bss, define = yes; # Uninitialized variables
}
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__;
}
FILES {
    %O: format = o65;
}
FORMATS {
    o65: os = lunix, type = small,
         export = main,	       	# Program entry-point
         import = LUNIXKERNEL;	# Kernel entry-points
}
SYMBOLS {
    __HEAPSIZE__  = $2000;      # 8k heap [temporary, until LUnix malloc() exists]
    __STACKSIZE__ = $0400;      # 1k stack (do typical LUnix apps. need 2k?)
}
