RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
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
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
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
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
AUTOSTRT: load = RAM, type = ro;
}
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
+ CONDES: type = interruptor,
+ segment = RODATA,
+ label = __INTERRUPTOR_TABLE__,
+ count = __INTERRUPTOR_COUNT__;
}
SYMBOLS {
__STACKSIZE__ = $800; # 2K stack
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
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
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
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
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
FEATURES {
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
- # condes functions with type 2 are called in the interrupt
CONDES: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
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
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
FEATURES {
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
- # condes functions with type 2 are called in the interrupt
CONDES: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = rw, define = yes;
}
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = rw, define = yes;
}
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
- # condes functions with type 2 are called in the interrupt
CONDES: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp;
}
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
+ CONDES: type = interruptor,
+ segment = RODATA,
+ label = __INTERRUPTOR_TABLE__,
+ count = __INTERRUPTOR_COUNT__;
}
SYMBOLS {
__STACKSIZE__ = $400; # 1K stack
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
+ CONDES: type = interruptor,
+ segment = RODATA,
+ label = __INTERRUPTOR_TABLE__,
+ count = __INTERRUPTOR_COUNT__;
}
FILES {
%O: format = o65;
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp, optional = yes;
APPZP: load = ZP, type = zp, optional = 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;
}
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
+ CONDES: type = interruptor,
+ segment = RODATA,
+ label = __INTERRUPTOR_TABLE__,
+ count = __INTERRUPTOR_COUNT__;
}
SYMBOLS {
RODATA: load = RAM, type = rw;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
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
RODATA: load = COMBINED, type = ro;
DATA: load = COMBINED, type = rw, define = yes;
BSS: load = COMBINED, type = bss, define = yes;
+ HEAP: load = COMBINED, type = bss, optional = yes;
ZEROPAGE: load = ZEROPAGE, type = zp;
}
FEATURES {
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 = osa65, type = small, extsym = "OSA2KERNAL", extsym = "LIB6502";
+ o65: os = osa65, type = small,
+ import = OSA2KERNAL,
+ import = LIB6502;
}
SYMBOLS {
__STACKSIZE__ = $800; # 2K stack
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
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
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
FEATURES {
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
- # condes functions with type 2 are called in the interrupt
CONDES: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
FFF0: load = ROM, type = ro, offset = $7FF0;
VECTOR: load = ROM, type = ro, offset = $7FFA;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp, define = yes;
}
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
+ CONDES: type = interruptor,
+ segment = RODATA,
+ label = __INTERRUPTOR_TABLE__,
+ count = __INTERRUPTOR_COUNT__;
}
ZEROPAGE: load = RAM, type = bss, define = yes;
DATA: load = RAM, type = bss, offset = $0200, define = yes;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
VECTOR: load = ROM, type = ro, offset = $3FFA;
}
FFF0: load = ROM, type = ro, offset = $3FF0;
VECTOR: load = ROM, type = ro, offset = $3FFA;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp, define = yes;
}
FEATURES {
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
+ CONDES: type = interruptor,
+ segment = RODATA,
+ label = __INTERRUPTOR_TABLE__,
+ count = __INTERRUPTOR_COUNT__;
}
MEMORY {
RAM: start = $0000, size = $2000;
- VRAM: start = $4000, size = $2000;
+ VRAM: start = $4000, size = $2000;
BANKROM1: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
BANKROM2: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
BANKROM3: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
ZEROPAGE: load = RAM, type = bss, define = yes;
DATA: load = RAM, type = bss, offset = $0200, define = yes;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
VECTOR: load = ROM, type = ro, offset = $3FFA;
}
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
+ HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
ZEROPAGE: load = ZP, type = zp;
}
FEATURES {
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
- # condes functions with type 2 are called in the interrupt
CONDES: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,