I'm trying to port uC/OS for use in a Dallas 5240. It works well when I use the standard linker/assembler but breaks when I switch to the extended versions. When I assemble, I get five of these:
OS_CPU_A.ASM(166): error A45: UNDEFINED SYMBOL
PUSHA MACRO IRP REG, <ACC, B, DPH, DPL, PSW, 0, 1, 2, 3, 4, 5, 6, 7> PUSH REG ENDM ENDM
You need to add definitions for the sfr registers (typically an SFR definition file). The AX51 does not longer pre-define any SFR's. For details see the Assembler/Utilities User's Guide, Appendix D.
That helped a great deal! But I am still receiving an error, now at link time:
*** ERROR L220: INVALID INPUT MODULE MODULE: ..\out\OS_CPU_A.obj (OS_CPU_A_ASM) *** Internal Reference: rdval
Are you using the LX51 or BL51 linker? Jon
I'm using the LX51 linker.
Which tool versions are you using?
Versions are as follows:
C51.exe v7.03 AX51.exe v2.05 LX51.exe v3.53
It was my thinking that some of the memory regions might be invalidated by the switch to the extended assembler/linker. Or perhaps MOVX instructions work differently? Could it be that some syntax is changed in the extended versions and isn't caught at compile time?