📄 port.h
字号:
#if !defined( PORT_H)#define PORT_H/* beware - some preprocessors need # in first column *//* For port of UNIX C only */#define LITTLE_ENDIAN typedef unsigned char u_1by_t; /* unsigned 8 bit type */ typedef signed char s_1by_t; /* signed 8 bit type */ typedef unsigned short u_2by_t; /* unsigned 16 bit type */ typedef signed short s_2by_t; /* signed 16 bit type */ typedef unsigned long u_4by_t; /* unsigned 32 bit type */ typedef signed long s_4by_t; /* signed 32 bit type */ typedef enum {bFALSE=0, bTRUE=1} boolean_t; /* unsigned 1 bit type */ typedef boolean_t bit; /* unsigned 1 bit type */ typedef boolean_t rboolean_t; /* reentrant bit is illegal */ #define foreign(type) type /* interface to pascal */ #define regbank(bank) /* */ /* select reg bank */ #define far /* */ /* damn 8086 */ #define near /* */ /* damn 8086 *//* make sure that an enum is 8 bit */#define enum8(name) name##_et; typedef u_1by_t name##_t#if 0 E.g. typedef enum { visa, pcbc, amex } enum8( host); host_t host;#endiftypedef enum{ positive = 1, negative = 2} enum8(sign);/* common constants */#ifndef FALSE#define FALSE bFALSE#define TRUE bTRUE#endif#define false FALSE#define true TRUE#define equal 0 /* for strcmp() and memcmp() */#define INVALID_U1 0xff#define INVALID_S1 0x7f#define INVALID_U2 0xffff#define INVALID_S2 0x7fff#define INVALID_U4 0xffffffff#define INVALID_S4 0x7fffffff/* function specifiers */#define localfn static /* function is NOT exported */#define publicfn /* */ /* function is exported */#define timer_task reentrant#define FOREIGN(type) foreign(type)/* common data types */typedef u_1by_t *u_1by_ptr_t;typedef s_1by_t *s_1by_ptr_t;typedef u_2by_t *u_2by_ptr_t;typedef s_2by_t *s_2by_ptr_t;typedef u_4by_t *u_4by_ptr_t;typedef s_4by_t *s_4by_ptr_t;typedef u_1by_ptr_t str_t;typedef u_2by_t err_t;typedef void (*fn_ptr_t)( void);#define FILE_NAME_SIZE 256typedef u_1by_t file_name_t[FILE_NAME_SIZE];/* handy functions */#define forever for(;;) /* loop forever */#define halt() forever { } /* do nothing forever */#define high_byte(x) (((x) >> 8) & 0xff) /* bits 8-15 */#define low_byte(x) ((x) & 0xff) /* bits 0-7 */#define HIGH(x) high_byte(x) /* bits 8-15 */#define LOW(x) low_byte(x) /* bits 0-7 */#define high_nibble(x) (((x) >> 4) & 0xf) /* bits 4-7 */#define low_nibble(x) ((x) & 0xf) /* bits 0-3 */#define and &&#define or ||#define bit_and &#define bit_or |#define set_bit(x,b) (x) |= (1U<<(b)) /* b=0(lsb), b=7(msb) */#define clear_bit(x,b) (x) &= ~(1U<<(b))#define flip_bit(x,b) (x) ^= (1U<<(b))#define test_bit(x,b) ((x) & (1U<<(b)))#define copy_bit(x,b,val) { \ if(val) \ { \ set_bit(x,b); \ } \ else \ { \ clear_bit(x,b); \ } \ }#define odd(x) ((x) & 0x01)#define even(x) (!odd(x))/* Adding to pointers of anything besides bytes does unexpected things. So here is a nicer way to do it.*/#define byte_add(ptr,bytes) (((u_1by_t *)(ptr))+(bytes))/* Set a buffer to all 0. "buffer" must a structure or array, not a pointer.*/#define memerase(buffer) memset( &buffer, 0, sizeof(buffer))/* Increment a variable but wrap around before it gets to max.*/#define mod_inc(var,max) \ var++; \ if( var >= max) \ { \ var = 0; \ }/* Decrement a variable but wrap around before it gets to max.*/#define mod_dec(var,max) \ if( var == 0) \ { \ var = max - 1; \ } \ else \ { \ var--; \ }/* Rotate an 8 or 16 bit variable left (<<) or right (>>). Make sure that p is an lvalue (preferably a simple variable). (i.e. x, s.x, *p, p->x, a[e], ... not i++, f(), I/O, a, p, s, &x, exp, ...)*/#define rol8( val) \ if( val & 0x80) \ { \ val <<= 1; \ val |= 1; \ } \ else \ { \ val <<= 1; \ }#define ror8( val) \ if( val & 0x01) \ { \ val >>= 1; \ val |= 0x80; \ } \ else \ { \ val >>= 1; \ }#define rol16( val) \ if( val & 0x8000) \ { \ val <<= 1; \ val |= 1; \ } \ else \ { \ val <<= 1; \ }#define ror16( val) \ if( val & 0x0001) \ { \ val >>= 1; \ val |= 0x8000; \ } \ else \ { \ val >>= 1; \ }/* Exit codes should be defined as ExitOkay+x. Eg #define ExitQuit ExitOkay+1 #define ExitAbnormal ExitOkay+2*/#define ExitOkay 0#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -