Fix a few conversion bugs. For example, GLshort->GLfloat conversion
[mesa.git] / src / glut / dos / PC_HW / pc_hw.h
1 /*
2 * PC/HW routine collection v1.4 for DOS/DJGPP
3 *
4 * Copyright (C) 2002 - Daniel Borca
5 * Email : dborca@yahoo.com
6 * Web : http://www.geocities.com/dborca
7 */
8
9
10 #ifndef PC_HW_H_included
11 #define PC_HW_H_included
12
13 #include <dpmi.h>
14 #include <stdlib.h>
15
16 /*
17 * misc C definitions
18 */
19 #define FALSE 0
20 #define TRUE !FALSE
21
22 #define SQR(x) ((x) * (x))
23
24 #define MIN(x,y) (((x) < (y)) ? (x) : (y))
25 #define MAX(x,y) (((x) > (y)) ? (x) : (y))
26 #define MID(x,y,z) MAX((x), MIN((y), (z)))
27
28 typedef void (*VFUNC) (void);
29 typedef void (*PFUNC) (void *);
30 typedef void (*MFUNC) (int x, int y, int z, int b);
31
32 /*
33 * atexit
34 */
35 int pc_atexit (VFUNC f);
36 int pc_clexit (VFUNC f);
37
38 /*
39 * locked memory
40 */
41 #define ENDOFUNC(x) static void x##_end() { }
42 #define LOCKFUNC(x) _go32_dpmi_lock_code((void *)x, (long)x##_end - (long)x)
43 #define LOCKDATA(x) _go32_dpmi_lock_data((void *)&x, sizeof(x))
44 #define LOCKBUFF(x, l) _go32_dpmi_lock_data((void *)x, l)
45
46 void *pc_malloc (size_t size);
47
48 /*
49 * IRQ
50 */
51 #define ENABLE() __asm __volatile ("sti")
52 #define DISABLE() __asm __volatile ("cli")
53
54 extern int pc_install_irq (int i, int (*handler) ());
55 extern int pc_remove_irq (int i);
56
57 /*
58 * keyboard
59 */
60 #define KB_SHIFT_FLAG 0x0001
61 #define KB_CTRL_FLAG 0x0002
62 #define KB_ALT_FLAG 0x0004
63 #define KB_LWIN_FLAG 0x0008
64 #define KB_RWIN_FLAG 0x0010
65 #define KB_MENU_FLAG 0x0020
66 #define KB_SCROLOCK_FLAG 0x0100
67 #define KB_NUMLOCK_FLAG 0x0200
68 #define KB_CAPSLOCK_FLAG 0x0400
69 #define KB_INALTSEQ_FLAG 0x0800
70 #define KB_ACCENT1_FLAG 0x1000
71 #define KB_ACCENT2_FLAG 0x2000
72 #define KB_ACCENT3_FLAG 0x4000
73 #define KB_ACCENT4_FLAG 0x8000
74
75 #define KEY_A 1
76 #define KEY_B 2
77 #define KEY_C 3
78 #define KEY_D 4
79 #define KEY_E 5
80 #define KEY_F 6
81 #define KEY_G 7
82 #define KEY_H 8
83 #define KEY_I 9
84 #define KEY_J 10
85 #define KEY_K 11
86 #define KEY_L 12
87 #define KEY_M 13
88 #define KEY_N 14
89 #define KEY_O 15
90 #define KEY_P 16
91 #define KEY_Q 17
92 #define KEY_R 18
93 #define KEY_S 19
94 #define KEY_T 20
95 #define KEY_U 21
96 #define KEY_V 22
97 #define KEY_W 23
98 #define KEY_X 24
99 #define KEY_Y 25
100 #define KEY_Z 26
101 #define KEY_0 27
102 #define KEY_1 28
103 #define KEY_2 29
104 #define KEY_3 30
105 #define KEY_4 31
106 #define KEY_5 32
107 #define KEY_6 33
108 #define KEY_7 34
109 #define KEY_8 35
110 #define KEY_9 36
111 #define KEY_0_PAD 37
112 #define KEY_1_PAD 38
113 #define KEY_2_PAD 39
114 #define KEY_3_PAD 40
115 #define KEY_4_PAD 41
116 #define KEY_5_PAD 42
117 #define KEY_6_PAD 43
118 #define KEY_7_PAD 44
119 #define KEY_8_PAD 45
120 #define KEY_9_PAD 46
121 #define KEY_F1 47
122 #define KEY_F2 48
123 #define KEY_F3 49
124 #define KEY_F4 50
125 #define KEY_F5 51
126 #define KEY_F6 52
127 #define KEY_F7 53
128 #define KEY_F8 54
129 #define KEY_F9 55
130 #define KEY_F10 56
131 #define KEY_F11 57
132 #define KEY_F12 58
133 #define KEY_ESC 59
134 #define KEY_TILDE 60
135 #define KEY_MINUS 61
136 #define KEY_EQUALS 62
137 #define KEY_BACKSPACE 63
138 #define KEY_TAB 64
139 #define KEY_OPENBRACE 65
140 #define KEY_CLOSEBRACE 66
141 #define KEY_ENTER 67
142 #define KEY_COLON 68
143 #define KEY_QUOTE 69
144 #define KEY_BACKSLASH 70
145 #define KEY_BACKSLASH2 71
146 #define KEY_COMMA 72
147 #define KEY_STOP 73
148 #define KEY_SLASH 74
149 #define KEY_SPACE 75
150 #define KEY_INSERT 76
151 #define KEY_DEL 77
152 #define KEY_HOME 78
153 #define KEY_END 79
154 #define KEY_PGUP 80
155 #define KEY_PGDN 81
156 #define KEY_LEFT 82
157 #define KEY_RIGHT 83
158 #define KEY_UP 84
159 #define KEY_DOWN 85
160 #define KEY_SLASH_PAD 86
161 #define KEY_ASTERISK 87
162 #define KEY_MINUS_PAD 88
163 #define KEY_PLUS_PAD 89
164 #define KEY_DEL_PAD 90
165 #define KEY_ENTER_PAD 91
166 #define KEY_PRTSCR 92
167 #define KEY_PAUSE 93
168 #define KEY_ABNT_C1 94
169 #define KEY_YEN 95
170 #define KEY_KANA 96
171 #define KEY_CONVERT 97
172 #define KEY_NOCONVERT 98
173 #define KEY_AT 99
174 #define KEY_CIRCUMFLEX 100
175 #define KEY_COLON2 101
176 #define KEY_KANJI 102
177
178 #define KEY_MODIFIERS 103
179
180 #define KEY_LSHIFT 103
181 #define KEY_RSHIFT 104
182 #define KEY_LCONTROL 105
183 #define KEY_RCONTROL 106
184 #define KEY_ALT 107
185 #define KEY_ALTGR 108
186 #define KEY_LWIN 109
187 #define KEY_RWIN 110
188 #define KEY_MENU 111
189 #define KEY_SCRLOCK 112
190 #define KEY_NUMLOCK 113
191 #define KEY_CAPSLOCK 114
192
193 #define KEY_MAX 115
194
195 int pc_install_keyb (void);
196 void pc_remove_keyb (void);
197 int pc_keypressed (void);
198 int pc_readkey (void);
199 int pc_keydown (int code);
200 int pc_keyshifts (void);
201
202 /*
203 * timer
204 */
205 int pc_install_int (PFUNC func, void *parm, unsigned int freq);
206 int pc_remove_int (int fid);
207 int pc_adjust_int (int fid, unsigned int freq);
208 void pc_remove_timer (void);
209
210 /*
211 * mouse
212 */
213 int pc_install_mouse (void);
214 void pc_remove_mouse (void);
215 MFUNC pc_install_mouse_handler (MFUNC handler);
216 void pc_mouse_area (int x1, int y1, int x2, int y2);
217 void pc_mouse_speed (int xspeed, int yspeed);
218 int pc_query_mouse (int *x, int *y, int *z);
219 void pc_warp_mouse (int x, int y);
220
221 /*
222 * standard redirection
223 */
224 int pc_open_stdout (void);
225 int pc_open_stderr (void);
226 void pc_close_stdout (void);
227 void pc_close_stderr (void);
228
229 #endif