Hello, I'm using Codewarrior 5.9.0 and a MC9S08AW60.
I wanted a modular assembly program, easy to interconnect. I choosed a relocatable assembly, but to make it work without errors I had to make the "NoXref" workaround to exclude the XREF definitions.
See the code below, it does nothing, but it works: the main program imports and uses a library routine (lib_do). Is there a better method to do modular and clean assembly programming?
Another question, to make a disassembly list with addresses and source comments I have tried the decoder with the ELF abs file, but it's a mess, any other ways?
And another question, in the code below the var "zvar1" is at address $0070, if I write:
ORG $0070
varx DS.B 1
The linker doesn't throw any error. Why?
Kind regards.
Added part number to the subject.
Code:
;============= PRM FILE =============NAMES ENDSEGMENTS Z_RAM = READ_WRITE 0x0070 TO 0x00FF; RAM = READ_WRITE 0x0100 TO 0x07FF; STK = READ_WRITE 0x0800 TO 0x086F; ROM1 = READ_ONLY 0x0870 TO 0x17FF; ROM = READ_ONLY 0x1860 TO 0xFFAF; ROM2 = READ_ONLY 0xFFC0 TO 0xFFCB; INT_VECTS = READ_ONLY 0xFFCC TO 0xFFFF;ENDPLACEMENT SEC_ZRAM INTO Z_RAM; DEFAULT_RAM INTO RAM; SEC_RAM INTO RAM; SSTACK INTO STK; DEFAULT_ROM INTO ROM; SEC_ROM INTO ROM;ENDINIT _ResetVECTOR 0 _Reset;============= LIB.INC FILE =============; Import external symbols IF NoXref == 0 XREF zvar2 XREF lib_do ENDIF ; Define constantsCPU_VERSION: equ $AB;============= LIB.ASM FILE ============= NOLIST ; Include equates but do NOT import its symbols NoXref: SET 1 INCLUDE 'lib.inc' LIST; Exported symbols XDEF zvar2 XDEF lib_do;--------------------------------------SEC_ZRAM: SECTION SHORT;--------------------------------------zvar2 DS.B 1;--------------------------------------SEC_ROM: SECTION;--------------------------------------lib_do: LDA #CPU_VERSION ; Defined in lib.inc AND #$0F STA zvar2 ; Ouput var RTS ;============= MAIN.ASM FILE ============= NOLIST ; Include derivative specific macros INCLUDE 'MC9S08AW60.inc' ; Include library equates and import its symbols NoXref: SET 0 INCLUDE 'lib.inc' LIST XDEF _Reset XREF __SEG_END_SSTACK;--------------------------------------SEC_ZRAM: SECTION SHORT;--------------------------------------zvar1 DS.B 1 ;--------------------------------------SEC_RAM: SECTION;--------------------------------------var1 DS.B 1 ;--------------------------------------DEFAULT_ROM:SECTION;--------------------------------------_Reset: LDHX #__SEG_END_SSTACK TXS CLImainLoop: CLRA STA zvar1 JSR lib_do ; call the library routine LDA zvar2 ; get the result STA var1 BRA mainLoop
Message Edited by NLFSJ on 2007-11-28 06:24 AM