/* C source file showing the necessary M68HC12 assembly language "glue code" */ /* for a C compiler that passes ALL function parameters on the stack. The D-Bug12 callable */ /* functions expect the first function parameter to be passed in the D-accumulator */ /* This example uses the ability of this particular C compiler to insert assembly language */ /* source statements directly into the C source */ #define mainAddr 0xfe00 #define getcharAddr 0xfe02 #define putcharAddr 0xfe04 #define printfAddr 0xfe06 #define GetCmdLineAddr 0xfe08 #define sscanhexAddr 0xfe0a #define isxdigitAddr 0xfe0c #define toupperAddr 0xfe0e #define isalphaAddr 0xfe10 #define strlenAddr 0xfe12 #define strcpyAddr 0xfe14 #define out2hexAddr 0xfe16 #define out4hexAddr 0xfe18 #define SetUserVectorAddr 0xfe1a #define WriteEEByteAddr 0xfe1c #define EraseEEAddr 0xfe1e #define ReadMemAddr 0xfe20 #define WriteMemAddr 0xfe22 /* The following #defines are used to provide for portability and avoid a linker */ /* conflict with the standard library functions of the same name. No #define is */ /* included for DB12main() since all programs must contain a main() function */ #define printf DB12printf #define getchar DB12getchar #define putchar DB12putchar #define isxdigit DB12isxdigit #define toupper DB12toupper #define isalpha DB12isalpha #define strlen DB12strlen #define strcpy DB12strcpy /*************************************************************************************/ Boolean WriteEEByte(Address EEAddress, Byte EEData) { /* Variable Declarations */ /* Begin Function WriteEEByte() */ asm("puld"); /* pull the 'EEAddress' parameter from the stack */ asm("jsr [WriteEEByteAddr,pcr]"); /* call D-Bug12's WriteEEByte function */ } /* end WriteEEByte */ /*************************************************************************************/