/* * PC/HW routine collection v1.4 for DOS/DJGPP * * Copyright (C) 2002 - Daniel Borca * Email : dborca@yahoo.com * Web : http://www.geocities.com/dborca */ #ifndef PC_HW_H_included #define PC_HW_H_included #include #include /* * misc C definitions */ #define FALSE 0 #define TRUE !FALSE #define SQR(x) ((x) * (x)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #define MAX(x,y) (((x) > (y)) ? (x) : (y)) #define MID(x,y,z) MAX((x), MIN((y), (z))) typedef void (*VFUNC) (void); typedef void (*PFUNC) (void *); typedef void (*MFUNC) (int x, int y, int z, int b); /* * atexit */ int pc_atexit (VFUNC f); int pc_clexit (VFUNC f); /* * locked memory */ #define ENDOFUNC(x) static void x##_end() { } #define LOCKFUNC(x) _go32_dpmi_lock_code((void *)x, (long)x##_end - (long)x) #define LOCKDATA(x) _go32_dpmi_lock_data((void *)&x, sizeof(x)) #define LOCKBUFF(x, l) _go32_dpmi_lock_data((void *)x, l) void *pc_malloc (size_t size); /* * IRQ */ #define ENABLE() __asm __volatile ("sti") #define DISABLE() __asm __volatile ("cli") extern int pc_install_irq (int i, int (*handler) ()); extern int pc_remove_irq (int i); /* * keyboard */ #define KB_SHIFT_FLAG 0x0001 #define KB_CTRL_FLAG 0x0002 #define KB_ALT_FLAG 0x0004 #define KB_LWIN_FLAG 0x0008 #define KB_RWIN_FLAG 0x0010 #define KB_MENU_FLAG 0x0020 #define KB_SCROLOCK_FLAG 0x0100 #define KB_NUMLOCK_FLAG 0x0200 #define KB_CAPSLOCK_FLAG 0x0400 #define KB_INALTSEQ_FLAG 0x0800 #define KB_ACCENT1_FLAG 0x1000 #define KB_ACCENT2_FLAG 0x2000 #define KB_ACCENT3_FLAG 0x4000 #define KB_ACCENT4_FLAG 0x8000 #define KEY_A 1 #define KEY_B 2 #define KEY_C 3 #define KEY_D 4 #define KEY_E 5 #define KEY_F 6 #define KEY_G 7 #define KEY_H 8 #define KEY_I 9 #define KEY_J 10 #define KEY_K 11 #define KEY_L 12 #define KEY_M 13 #define KEY_N 14 #define KEY_O 15 #define KEY_P 16 #define KEY_Q 17 #define KEY_R 18 #define KEY_S 19 #define KEY_T 20 #define KEY_U 21 #define KEY_V 22 #define KEY_W 23 #define KEY_X 24 #define KEY_Y 25 #define KEY_Z 26 #define KEY_0 27 #define KEY_1 28 #define KEY_2 29 #define KEY_3 30 #define KEY_4 31 #define KEY_5 32 #define KEY_6 33 #define KEY_7 34 #define KEY_8 35 #define KEY_9 36 #define KEY_0_PAD 37 #define KEY_1_PAD 38 #define KEY_2_PAD 39 #define KEY_3_PAD 40 #define KEY_4_PAD 41 #define KEY_5_PAD 42 #define KEY_6_PAD 43 #define KEY_7_PAD 44 #define KEY_8_PAD 45 #define KEY_9_PAD 46 #define KEY_F1 47 #define KEY_F2 48 #define KEY_F3 49 #define KEY_F4 50 #define KEY_F5 51 #define KEY_F6 52 #define KEY_F7 53 #define KEY_F8 54 #define KEY_F9 55 #define KEY_F10 56 #define KEY_F11 57 #define KEY_F12 58 #define KEY_ESC 59 #define KEY_TILDE 60 #define KEY_MINUS 61 #define KEY_EQUALS 62 #define KEY_BACKSPACE 63 #define KEY_TAB 64 #define KEY_OPENBRACE 65 #define KEY_CLOSEBRACE 66 #define KEY_ENTER 67 #define KEY_COLON 68 #define KEY_QUOTE 69 #define KEY_BACKSLASH 70 #define KEY_BACKSLASH2 71 #define KEY_COMMA 72 #define KEY_STOP 73 #define KEY_SLASH 74 #define KEY_SPACE 75 #define KEY_INSERT 76 #define KEY_DEL 77 #define KEY_HOME 78 #define KEY_END 79 #define KEY_PGUP 80 #define KEY_PGDN 81 #define KEY_LEFT 82 #define KEY_RIGHT 83 #define KEY_UP 84 #define KEY_DOWN 85 #define KEY_SLASH_PAD 86 #define KEY_ASTERISK 87 #define KEY_MINUS_PAD 88 #define KEY_PLUS_PAD 89 #define KEY_DEL_PAD 90 #define KEY_ENTER_PAD 91 #define KEY_PRTSCR 92 #define KEY_PAUSE 93 #define KEY_ABNT_C1 94 #define KEY_YEN 95 #define KEY_KANA 96 #define KEY_CONVERT 97 #define KEY_NOCONVERT 98 #define KEY_AT 99 #define KEY_CIRCUMFLEX 100 #define KEY_COLON2 101 #define KEY_KANJI 102 #define KEY_MODIFIERS 103 #define KEY_LSHIFT 103 #define KEY_RSHIFT 104 #define KEY_LCONTROL 105 #define KEY_RCONTROL 106 #define KEY_ALT 107 #define KEY_ALTGR 108 #define KEY_LWIN 109 #define KEY_RWIN 110 #define KEY_MENU 111 #define KEY_SCRLOCK 112 #define KEY_NUMLOCK 113 #define KEY_CAPSLOCK 114 #define KEY_MAX 115 int pc_install_keyb (void); void pc_remove_keyb (void); int pc_keypressed (void); int pc_readkey (void); int pc_keydown (int code); int pc_keyshifts (void); /* * timer */ int pc_install_int (PFUNC func, void *parm, unsigned int freq); int pc_remove_int (int fid); int pc_adjust_int (int fid, unsigned int freq); void pc_remove_timer (void); /* * mouse */ int pc_install_mouse (void); void pc_remove_mouse (void); MFUNC pc_install_mouse_handler (MFUNC handler); void pc_mouse_area (int x1, int y1, int x2, int y2); void pc_mouse_speed (int xspeed, int yspeed); int pc_query_mouse (int *x, int *y, int *z); void pc_warp_mouse (int x, int y); /* * standard redirection */ int pc_open_stdout (void); int pc_open_stderr (void); void pc_close_stdout (void); void pc_close_stderr (void); #endif