📄 hidef.h
字号:
/*****************************************************
hidef.h - ANSI-C library: machine dependent stuff
----------------------------------------------------
Copyright (c) HIWARE AG, Basel, Switzerland
All rights reserved
Do not modify!
*****************************************************/
#ifndef _H_HIDEF_
#define _H_HIDEF_
#ifdef __cplusplus
extern "C" {
#endif
/**** Version for MC68HC08 */
#include "stddef.h"
#include "stdtypes.h"
#define CLOCKS_PER_SEC 4000000 /* has to be user defined */
#pragma NO_STRING_CONSTR /* allow '#' in HLI below */
#define HALT {__asm CLRA; __asm SWI ! {A}, {A+HX+SR};}
#define HALTX(x) {__asm LDA x; __asm SWI ! {A}, {A+HX+SR};}
#define HALT_AND_QUIT HALTX(#32)
// #define EnableInterrupts {__asm CLI;} // 中断控制宏放到OS_CPU.H中 //
// #define DisableInterrupts {__asm SEI;}
/* we have to use a small part of the zero page to initialize the stack pointer */
#if 0 /* the MON08 onchip monitor needs pushes some bytes before calling _Startup */
#define _STACK_TMP 0xFE /* 0xFE, 0xFF */
#else
#define _STACK_TMP 0xF0 /* 0xF0, 0xF1 */
#endif
#ifndef __NEW_LINKER
#define __NEW_LINKER 1 /* was disabled in previous versions */
#endif
#if __NEW_LINKER /* for usage with the linker version of at least V5.0.10 */
extern char __SEG_END_SSTACK[];
#define INIT_SP_FROM_STARTUP_DESC() __asm LDHX @__SEG_END_SSTACK; __asm TXS;
#define __NO_STACK_OFFSET 1
#elif 0 /* for the MON08 onchip monitor, we should not destroy _STACK_TMP */
#ifdef __ELF_OBJECT_FILE_FORMAT__
#define __STACK_OFF_ADD 0
#else
#define __STACK_OFF_ADD 2 /* in hiware format, the stackOffset field is a long */
#endif
#define INIT_SP_FROM_STARTUP_DESC() \
__asm LDA _STACK_TMP ; /* save orig value at _STACK_TMP */ \
__asm LDX _startupData.stackOffset:(0+__STACK_OFF_ADD) ; /* load high byte */ \
__asm STX _STACK_TMP ; /* store high byte */ \
__asm LDHX _STACK_TMP ; /* load high byte into H register, low byte in X is ignored */ \
__asm LDX _startupData.stackOffset:(1+__STACK_OFF_ADD) ; /* load low byte of stack address into X */ \
__asm TXS ; /* set new stack pointer */ \
__asm STA _STACK_TMP ; /* restore old value at _STACK_TMP */
#else /* old SP initlization code */
#ifdef __ELF_OBJECT_FILE_FORMAT__
#define INIT_SP_FROM_STARTUP_DESC() \
__asm LDA _startupData.stackOffset:0; \
__asm STA _STACK_TMP; \
__asm LDA _startupData.stackOffset:1; \
__asm STA _STACK_TMP+1; \
__asm LDHX _STACK_TMP; \
__asm TXS;
#else /* __ELF_OBJECT_FILE_FORMAT__ */
#define INIT_SP_FROM_STARTUP_DESC() \
__asm LDA _startupData.stackOffset:2; \
__asm STA _STACK_TMP; \
__asm LDA _startupData.stackOffset:3; \
__asm STA _STACK_TMP+1; \
__asm LDHX _STACK_TMP; \
__asm TXS;
#endif /* __ELF_OBJECT_FILE_FORMAT__ */
#endif /* NEW_LINKER */
#define far /* no far keyword supported for HC08 */
#define FAR /* no far keyword supported for HC08 */
#define _FAR /* no far keyword supported for HC08 */
#define NEAR /* no near keyword supported for HC08 */
#define _NEAR /* no near keyword supported for HC08 */
#ifdef __cplusplus
}
#endif
#endif
/*****************************************************/
/* end hidef.h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -