Hello SDCC users,
I'm doing a project with the famous Z80 just for fun, and decided to use the sdasz80 assembler. My project consists of multiple source files to keep everything modular. I'm having a problem with the linking step. I've 2 source files: boot.asm and numconv.asm: ; boot.asm: .globl HexToU8 .area _START (ABS) .org 0 ld SP, #0xFFFF call HexToU8 ... ; numconv.asm: .globl HexToU8 .area _CODE (REL,CON) HexToU8: ... ret As you can see, the boot.asm uses absolute placement because it needs to be placed at the begning of the memory (it needs to be executed first). The numconv.asm uses relative placement instead (it can be at any memory position provided that the HexToU8 symbol is correctly adjusted by the linker). To compile and link I invoke the folowing commands: $ sdasz80 -o src/numconv.asm $ sdasz80 -o src/boot.asm $ sdldz80 MemMonitor.ihx src/numconv.rel src/boot.rel -i $ sdobjcopy -Iihex -Obinary --pad-to 65536 --gap-fill 255 MemMonitor.ihx MemMonitor.bin It seems to compile and link fine, but the final binary doesn't include the numconv subroutines and the HexToU8 symbol assumes the value 0x0000. With my understanding the linker tries to put the _CODE (REL, CON) area at the 0x0000 address, but it gets overwritten with the _START (ABS) area. How I tell the linker to put the _CODE area to any other available address (not used by the _START area)? ------------------------------------------------------------------------------ _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user