⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oxbow.h

📁 OXCC is a multipass, interpreting C compiler with several language extensions. It generates an Archi
💻 H
📖 第 1 页 / 共 5 页
字号:
*/
#define EFLAG 		(0x0100)
#define SHIFTFLAG	(0x0200)
#define ALTFLAG		(0x0400)
#define CTRLFLAG	(0x0800)

#define CTL_AT	(0x0)
#define NUL		(0x0)
#define CTL_A	(0x1)
#define SOH		(0x1) 
#define CTL_B	(0x2)
#define STX		(0x2)
#define CTL_C	(0x3)
#define ETX		(0x3)
#define CTL_D	(0x4)
#define EOT		(0x4)
#define CTL_E	(0x5)
#define ENQ		(0x5)
#define CTL_F	(0x6)
#define ACK		(0x6)
#define CTL_G	(0x7)
#define BELL	(0x7)
#define CTL_H	(0x8)
#define RUBOUT	(0x8)
#define BS		(0x8)
#define CTL_I	(0x9)
#define HT		(0x9)
#define TAB		(0x9)
#define CTL_J	(0xA)
#define LF		(0xA)
#define CTL_K	(0xB)
#define VT		(0xB)
#define CTL_L	(0xC)
#define FF		(0xC)
#define CTL_M	(0xD)
#define CR		(0xD)
#define ENTER	(0xD)
#define CTL_N	(6)
#define SO		(6)
#define CTL_O	(0xF)
#define SI		(0xF)
#define CTL_P	(0x10)
#define DLE		(0x10)
#define CTL_Q	(0x11)
#define DC1		(0x11)
#define CTL_R	(0x12)
#define DC2		(0x12)
#define CTL_S	(0x13)
#define DC3		(0x13)
#define CTL_T	(0x14)
#define DC4		(0x14)
#define CTL_U	(0x15)
#define NAK		(0x15)
#define CTL_V	(0x16)
#define SYN		(0x16)
#define CTL_W	(0x17)
#define ETB		(0x17)
#define CTL_X	(0x18)
#define CAN		(0x18)
#define CTL_Y	(0x19)
#define EM		(0x19)
#define CTL_Z	(0x1A)
#define SUB		(0x1A)
#define CTL_LBRK	(0x1B)
#define ESCKEY		(0x1B)
#define CTL_BKSLSH	(0x1C)
#define FS			(0x1C)
#define CTL_RBRK	(0x1D)
#define GS			(0x1D)
#define CTL_CARAT	(30) 
#define RS			(30)
#define CTL_HYPHEN	(0x1F)
#define US			(0x1F)
#define CTL_BS		(0x7F)
#define ASCIDEL		(0x7F)
#define SLASHKEY 	('/')
#define SPACEKEY 	(' ')

#define F1			(0x3B+EFLAG)
#define F2			(0x3C+EFLAG)
#define F3			(0x3D+EFLAG)
#define F4			(62+EFLAG)
#define F5			(0x3F+EFLAG)
#define F6			(0x40+EFLAG)
#define F7			(0x41+EFLAG)
#define F8			(0x42+EFLAG)
#define F9			(0x43+EFLAG)
#define F10			(0x44+EFLAG)
#define F11			(0x85+EFLAG)
#define F12			(0x86+EFLAG)
#define SHIFT_F1	(0x54+EFLAG)
#define SHIFT_F2	(0x55+EFLAG)
#define SHIFT_F3	(0x56+EFLAG)
#define SHIFT_F4	(0x57+EFLAG)
#define SHIFT_F5	(0x58+EFLAG)
#define SHIFT_F6	(0x59+EFLAG)
#define SHIFT_F7	(0x5A+EFLAG)
#define SHIFT_F8	(0x5B+EFLAG)
#define SHIFT_F9	(0x5C+EFLAG)
#define SHIFT_F10	(0x5D+EFLAG)
#define SHIFT_F11	(0x87+EFLAG)
#define SHIFT_F12	(0x88+EFLAG)
#define CTRL_F1		(94+EFLAG)
#define CTRL_F2     (0x5F+EFLAG)
#define CTRL_F3     (0x60+EFLAG)
#define CTRL_F4     (0x61+EFLAG)
#define CTRL_F5     (0x62+EFLAG)
#define CTRL_F6     (0x63+EFLAG)
#define CTRL_F7     (0x64+EFLAG)
#define CTRL_F8     (0x65+EFLAG)
#define CTRL_F9     (0x66+EFLAG)
#define CTRL_F10    (0x67+EFLAG)
#define CTRL_F11    (0x89+EFLAG)
#define CTRL_F12    (0x8A+EFLAG)
#define ALT_F1      (0x68+EFLAG)
#define ALT_F2      (0x69+EFLAG)
#define ALT_F3      (0x6A+EFLAG)
#define ALT_F4      (0x6B+EFLAG)
#define ALT_F5      (0x6C+EFLAG)
#define ALT_F6      (0x6D+EFLAG)
#define ALT_F7		(110+EFLAG)
#define ALT_F8      (0x6F+EFLAG)
#define ALT_F9      (0x70+EFLAG)
#define ALT_F10     (0x71+EFLAG)
#define ALT_F11     (0x8B+EFLAG)
#define ALT_F12     (0x8C+EFLAG)

#define HOMEKEY		(0x47+EFLAG)
#define UPKEY		(0x48+EFLAG)
#define PGUP		(0x49+EFLAG)
#define BAKKEY		(0x4B+EFLAG)
#define FWDKEY		(0x4D+EFLAG)

#define ENDKEY		(0x4F+EFLAG)
#define DNKEY		(0x50+EFLAG)
#define PGDN		(0x51+EFLAG)
#define INSERTKEY	(0x52+EFLAG)
#define DELETEKEY	(0x53+EFLAG)

#define CTRL_HOME	(0x77+EFLAG)
#define CTRL_UP		(0x8D+EFLAG)
#define CTRL_PGUP	(0x84+EFLAG)
#define CTRL_BAK	(0x73+EFLAG)
#define CTRL_FWD	(0x74+EFLAG)
#define CTRL_END	(0x75+EFLAG)
#define CTRL_DN		(0x91+EFLAG)
#define CTRL_PGDN	(0x76+EFLAG)
#define CTRL_INSERT	(0x92+EFLAG)
#define CTRL_DELETE	(0x93+EFLAG)
#define CTRL_HT		(0x94+EFLAG)
#define CTRL_TAB	CTRL_HT
#define CTRL_2		(0x03+EFLAG)

/* keypad keys */
#define KP_FIVE			(0x4c+EFLAG)
#define CTRL_KP_SLASH	(0x95+EFLAG)
#define CTRL_KP_STAR	(0x96+EFLAG)
#define CTRL_KP_PLUS	(0x90+EFLAG)
#define CTRL_KP_MINUS	(142+EFLAG)
#define CTRL_KP_FIVE	(0x8F+EFLAG)

/* *** GRAY CENTER KEYS ONLY *** */
#define ALT_HOME	(0x97+EFLAG)
#define ALT_UP		(0x98+EFLAG)
#define ALT_PGUP	(0x99+EFLAG)
#define ALT_BAK		(0x9B+EFLAG)
#define ALT_FWD		(0x9D+EFLAG)
#define ALT_END		(0x9F+EFLAG)
#define ALT_DN		(0xA0+EFLAG)
#define ALT_PGDN	(0xA1+EFLAG)
#define ALT_INSERT	(0xA2+EFLAG)
#define ALT_DELETE	(0xA3+EFLAG)
/* ****************************** */

#define ALT_A		(30+EFLAG)
#define ALT_B		(0x30+EFLAG)
#define ALT_C		(46+EFLAG)
#define ALT_D		(0x20+EFLAG)
#define ALT_E		(0x12+EFLAG)
#define ALT_F		(0x21+EFLAG)
#define ALT_G		(0x22+EFLAG)
#define ALT_H		(0x23+EFLAG)
#define ALT_I		(0x17+EFLAG)
#define ALT_J		(0x24+EFLAG)
#define ALT_K		(0x25+EFLAG)
#define ALT_L		(0x26+EFLAG)
#define ALT_M		(0x32+EFLAG)
#define ALT_N		(0x31+EFLAG)
#define ALT_O		(0x18+EFLAG)
#define ALT_P		(0x19+EFLAG)
#define ALT_Q		(0x10+EFLAG)
#define ALT_R		(0x13+EFLAG)
#define ALT_S		(0x1F+EFLAG)
#define ALT_T		(0x14+EFLAG)
#define ALT_U		(0x16+EFLAG)
#define ALT_V		(0x2F+EFLAG)
#define ALT_W		(0x11+EFLAG)
#define ALT_X		(0x2D+EFLAG)
#define ALT_Y		(0x15+EFLAG)
#define ALT_Z		(0x2C+EFLAG)
#define ALT_1		(0x78+EFLAG)
#define ALT_2		(0x79+EFLAG)
#define ALT_3		(0x7A+EFLAG)
#define ALT_4		(0x7B+EFLAG)
#define ALT_5		(0x7C+EFLAG)
#define ALT_6		(0x7D+EFLAG)
#define ALT_7		(126+EFLAG)
#define ALT_8		(0x7F+EFLAG)
#define ALT_9		(0x80+EFLAG)
#define ALT_0		(0x81+EFLAG)
#define ALT_HYPHEN	(0x82+EFLAG)
#define ALT_EQUALS	(0x83+EFLAG)
#define ALT_LBRK	(0x1A+EFLAG)
#define ALT_RBRK	(0x1B+EFLAG)
#define ALT_SEMI	(0x27+EFLAG)
#define ALT_RAPOS	(0x28+EFLAG)
#define ALT_LAPOS	(0x29+EFLAG)
#define ALT_BKSLSH	(0x2B+EFLAG)
#define ALT_COMMA	(0x33+EFLAG)
#define ALT_PERIOD	(0x34+EFLAG)
#define ALT_SLASH	(0x35+EFLAG)
#define ALT_BS		(6+EFLAG)
#define ALT_ENTER	(0x1C+EFLAG)
#define ALT_HT		(0xA5+EFLAG)
#define ALT_TAB		ALT_HT
#define ALT_ESC		(0x01+EFLAG)

/* keypad keys */
#define ALT_KP_ENTER	(0xA6+EFLAG)
#define ALT_KP_PLUS		(78+EFLAG)
#define ALT_KP_MINUS	(0x4A+EFLAG)
#define ALT_KP_STAR		(0x37+EFLAG)
#define ALT_KP_SLASH	(0xA4+EFLAG)

#define SHIFT_HT		(0x0F+EFLAG)
#define SHIFT_TAB 		SHIFT_HT
/* 
	Artificial codes produced by testing the shift states

	Unused codes:
	02,04,05,06,07,08,09,0A,0B,0C,0D,2A,36,38,39,3A,45,46,
	72,9A,A7-AF,BC-BF,C0-CF,E0-EF,F0-FF
*/

#define SHIFT_INSERT		(INSERTKEY+SHIFTFLAG)
#define SHIFT_END			(ENDKEY+SHIFTFLAG)
#define SHIFT_DN			(DNKEY+SHIFTFLAG)
#define SHIFT_PGDN			(PGDN+SHIFTFLAG)
#define SHIFT_BAK			(BAKKEY+SHIFTFLAG)
#define SHIFT_KP_FIVE		(KP_FIVE+SHIFTFLAG)
#define SHIFT_FWD			(FWDKEY+SHIFTFLAG)
#define SHIFT_HOME			(HOMEKEY+SHIFTFLAG)
#define SHIFT_UP			(UPKEY+SHIFTFLAG)
#define SHIFT_PGUP			(PGUP+SHIFTFLAG)
#define SHIFT_DELETE		(DELETEKEY+SHIFTFLAG)

#define SHIFT_CTRL_INSERT	(CTRL_INSERT+SHIFTFLAG)
#define SHIFT_CTRL_END		(CTRL_END+SHIFTFLAG)
#define SHIFT_CTRL_DN		(CTRL_DN+SHIFTFLAG)
#define SHIFT_CTRL_PGDN		(CTRL_PGDN+SHIFTFLAG)
#define SHIFT_CTRL_BAK		(CTRL_BAK+SHIFTFLAG)
#define SHIFT_CTRL_KP_FIVE	(CTRL_KP_FIVE+SHIFTFLAG)
#define SHIFT_CTRL_FWD		(CTRL_FWD+SHIFTFLAG)
#define SHIFT_CTRL_HOME		(CTRL_HOME+SHIFTFLAG)
#define SHIFT_CTRL_UP		(CTRL_UP+SHIFTFLAG)
#define SHIFT_CTRL_PGUP		(CTRL_PGUP+SHIFTFLAG)
#define SHIFT_CTRL_DELETE	(CTRL_DELETE+SHIFTFLAG)

#define SHIFT_ALT_INSERT	(ALT_INSERT+SHIFTFLAG)
#define SHIFT_ALT_END		(ALT_END+SHIFTFLAG)
#define SHIFT_ALT_DN		(ALT_DN+SHIFTFLAG)
#define SHIFT_ALT_PGDN		(ALT_PGDN+SHIFTFLAG)
#define SHIFT_ALT_BAK		(ALT_BAK+SHIFTFLAG)
#define SHIFT_ALT_FWD		(ALT_FWD+SHIFTFLAG)
#define SHIFT_ALT_HOME		(ALT_HOME+SHIFTFLAG)
#define SHIFT_ALT_UP		(ALT_UP+SHIFTFLAG)
#define SHIFT_ALT_PGUP		(ALT_PGUP+SHIFTFLAG)
#define SHIFT_ALT_DELETE	(ALT_DELETE+SHIFTFLAG)

#define CTRL_ALT_INSERT		(ALT_INSERT+CTRLFLAG)
#define CTRL_ALT_END		(ALT_END+CTRLFLAG)
#define CTRL_ALT_DN			(ALT_DN+CTRLFLAG)
#define CTRL_ALT_PGDN		(ALT_PGDN+CTRLFLAG)
#define CTRL_ALT_BAK		(ALT_BAK+CTRLFLAG)
#define CTRL_ALT_FWD		(ALT_FWD+CTRLFLAG)
#define CTRL_ALT_HOME		(ALT_HOME+CTRLFLAG)
#define CTRL_ALT_UP			(ALT_UP+CTRLFLAG)
#define CTRL_ALT_PGUP		(ALT_PGUP+CTRLFLAG)
#define CTRL_ALT_DELETE		(ALT_DELETE+CTRLFLAG)

#define SHIFT_CTRL_KP_SLASH	(CTRL_KP_SLASH+SHIFTFLAG)
#define SHIFT_CTRL_KP_STAR	(CTRL_KP_STAR+SHIFTFLAG)
#define SHIFT_CTRL_KP_MINUS	(CTRL_KP_MINUS+SHIFTFLAG)
#define SHIFT_CTRL_KP_PLUS	(CTRL_KP_PLUS+SHIFTFLAG)
#define SHIFT_ALT_KP_ENTER	(ALT_KP_ENTER+SHIFTFLAG)
#define CTRL_ALT_KP_ENTER	(ALT_KP_ENTER+CTRLFLAG)
#define CTRL_ALT_KP_PLUS	(ALT_KP_PLUS+CTRLFLAG)
#define CTRL_ALT_KP_MINUS	(ALT_KP_MINUS+CTRLFLAG)
#define CTRL_ALT_KP_STAR	(ALT_KP_STAR+CTRLFLAG)
#define CTRL_ALT_KP_SLASH	(ALT_KP_SLASH+CTRLFLAG)


#define SHIFT_CTRL_BS		(CTL_BS+SHIFTFLAG)
#define SHIFT_ALT_BS		(ALT_BS+SHIFTFLAG)
#define SHIFT_CTRL_HT		(CTRL_HT+SHIFTFLAG)
#define SHIFT_CTRL_TAB		SHIFT_CTRL_HT
#define SHIFT_ALT_HT		(ALT_HT+SHIFTFLAG)
#define SHIFT_ALT_TAB		SHIFT_ALT_HT

#define CTRL_ALT_BS			(ALT_BS+CTRLFLAG)
#define CTRL_SLASH			(SLASHKEY+CTRLFLAG)
#define CTRL_ESC			(ESCKEY+CTRLFLAG)
#define CTRL_SPACE			(SPACEKEY+CTRLFLAG)
#define SHIFT_ESC			(ESCKEY+SHIFTFLAG)
#define ALT_SPACE			(SPACEKEY+ALTFLAG)

/* keypad specials (not usually implemented) */
#define KP_ENTER			(0xB0+EFLAG)
#define KP_PLUS				(0xB1+EFLAG)
#define KP_MINUS			(0xB2+EFLAG)
#define KP_STAR				(0xB3+EFLAG)
#define KP_SLASH			(0xB4+EFLAG)
#define SHIFT_KP_ENTER		(0xB5+EFLAG)
#define SHIFT_KP_PLUS		(0xB6+EFLAG)
#define SHIFT_KP_MINUS		(0xB7+EFLAG)
#define SHIFT_KP_STAR		(0xB8+EFLAG)
#define SHIFT_KP_SLASH		(0xB9+EFLAG)
#define CTRL_KP_ENTER		(0xBA+EFLAG)
#define SHIFT_CTRL_KP_ENTER	(0xBB+EFLAG)



/* ---------- EVENT STUFF ------------- */

typedef union {		/* 8 bytes (a long long ) */
	_LONGLONG_ item;
	short m_type;
	STOR s;
#if 0
#define e_keychar s.a5.b[4]
#define e_keyflag s.a5.b[5]
#define m_sparam s.a3.s1
#define m_lparam s.a4.s1
#else
#define E_KEYCHAR s.a5.b[4]
#define E_KEYFLAG s.a5.b[5]
#define M_SPARAM s.a3.s1
#define M_LPARAM s.a4.s1
#endif
	struct {
		unsigned short type;
		unsigned char kbstat;
		unsigned char mask;
		short xpos;
		short ypos;
#if 0
#define e_type e.type
#define e_kbstat e.kbstat
#define e_mask e.mask
#define e_xpos e.xpos
#define e_ypos e.ypos
#define e_keycode e.xpos
#else
#define E_TYPE e.type
#define E_KBSTAT e.kbstat
#define E_MASK e.mask
#define E_XPOS e.xpos
#define E_YPOS e.ypos
#define E_KEYCODE e.xpos
#endif
	} e;
} RawEvent, CFmsg;


#define M_MOTION		(0x001)
#define M_LEFT_DOWN		(0x002)
#define M_LEFT_UP		(0x004)
#define M_RIGHT_DOWN	(0x008)
#define M_RIGHT_UP		(0x010)
#define M_MIDDLE_DOWN	(0x020)
#define M_MIDDLE_UP		(0x040)
#define M_BUTTON_DOWN	(M_LEFT_DOWN | M_MIDDLE_DOWN | M_RIGHT_DOWN)
#define M_BUTTON_UP		(M_LEFT_UP   | M_MIDDLE_UP   | M_RIGHT_UP)
#define M_BUTTON_CHANGE (M_BUTTON_UP | M_BUTTON_DOWN )

#define KB_RIGHTSHIFT	(0x01)		/* right shift key depressed */
#define KB_LEFTSHIFT	(0x02)		/* left shift key depressed */
#define KB_CTRL			(0x04)		/* CTRL depressed */
#define KB_ALT			(0x08)		/* ALT depressed */
#define KB_SCROLLOCK	(0x10)		/* SCROLL LOCK active */
#define KB_NUMLOCK		(0x20)		/* NUM LOCK active */
#define KB_CAPSLOCK		(0x40)		/* CAPS LOCK active */
#define GLBLKEY			(0x80)
#define KB_SHIFT		(KB_LEFTSHIFT | KB_RIGHTSHIFT)

/* A complicated CUA information word */
extern int AltDown;

typedef struct {
    unsigned short  width;
    unsigned short  height;
    unsigned short  number_of_colors;
    unsigned char   BIOS_mode;
    unsigned char   special;
} DRIVER_MODE_ENTRY;

/* Pointer to a millisecond unsigned long ticker */
extern unsigned long oxport_thread_msec;

int OXPORT_shift_state();
void OXPORT_deinit_kbd(long arg);
void OXPORT_init_kbd(long arg);
int OXPORT_was_kbd();
int OXPORT_get_kbd();
void OXPORT_flush_kbd(void);
void OXPORT_position_kb_cursor(int x, int y);
void OXPORT_get_kb_cursor_pos_shape(int *pos, int *shape);
void OXPORT_set_kb_cursor_shape(int shape);
void OXPORT_hide_kb_cursor();
void OXPORT_unhide_kb_cursor();
void OXPORT_direct_attr_text_output(int offset, short *buf, int len);
void OXPORT_bios_attr_text_output(int x, int y, short *buf, int len);

void OXPORT_read_image(void *dst, int x, int y, int wd, int ht, int dw);
void OXPORT_write_image(void *src, int x, int y, int wd, int ht, int sw);
void OXPORT_or_image(void *src, int x, int y, int wd, int ht, int sw);
void OXPORT_and_image(void *src, int x, int y, int wd, int ht, int sw);
void OXPORT_xor_image(void *src, int x, int y, int wd, int ht, int sw);

void OXPORT_deinit_events(long arg);
int OXPORT_init_events(long arg);
int OXPORT_was_event(void);
RawEvent OXPORT_get_event(void);

void OXPORT_set_mouse_cursor_shape(void *shape);
int OXPORT_register_mouse_cursor_shape(void *shape);
void OXPORT_set_mouse_limits(int x1, int y1, int x2, int y2);
void OXPORT_set_mouse_speed(int speed);
void OXPORT_set_mouse_accel(int thresh, int accel);
void OXPORT_disable_mouse(void);
void OXPORT_enable_mouse(void);
void OXPORT_set_mousepos(int x, int y);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -