1 /*
2  * javanvm/javanvm.h - NestedVM-specific port code - C<->Java interface
3  *
4  * Copyright (c) 2001-2002 Jacek Poplawski (original atari_sdl.c)
5  * Copyright (c) 2007-2008 Perry McFarlane (javanvm port)
6  * Copyright (C) 2001-2013 Atari800 development team (see DOC/CREDITS)
7  *
8  * This file is part of the Atari800 emulator project which emulates
9  * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers.
10 
11  * Atari800 is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15 
16  * Atari800 is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20 
21  * You should have received a copy of the GNU General Public License along
22  * with Atari800; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  */
25 
26 #ifndef JAVANVM_H_
27 #define JAVANVM_H_
28 
29 extern int _call_java(int a, int b, int c, int d);
30 
31 enum {
32 	JAVANVM_FUN_DisplayScreen = 1,
33 	JAVANVM_FUN_InitPalette = 2,
34 	JAVANVM_FUN_Kbhits = 3,
35 	JAVANVM_FUN_PollKeyEvent = 4,
36 	JAVANVM_FUN_GetWindowClosed = 5,
37 	JAVANVM_FUN_Sleep = 6,
38 	JAVANVM_FUN_InitGraphics = 7,
39 	JAVANVM_FUN_InitSound = 8,
40 	JAVANVM_FUN_SoundExit = 9,
41 	JAVANVM_FUN_SoundAvailable = 10,
42 	JAVANVM_FUN_SoundWrite = 11,
43 	JAVANVM_FUN_SoundPause = 12,
44 	JAVANVM_FUN_SoundContinue = 13,
45 	JAVANVM_FUN_CheckThreadStatus = 14
46 };
47 
48 /* These constants are for use with arrays passed to and from the NestedVM runtime */
49 enum {
50 	JAVANVM_KeyEventType = 0,
51 	JAVANVM_KeyEventKeyCode = 1,
52 	JAVANVM_KeyEventKeyChar = 2,
53 	JAVANVM_KeyEventKeyLocation = 3,
54 	JAVANVM_KeyEventSIZE = 4
55 };
56 enum {
57 	JAVANVM_InitGraphicsScalew = 0,
58 	JAVANVM_InitGraphicsScaleh = 1,
59 	JAVANVM_InitGraphicsScreen_WIDTH = 2,
60 	JAVANVM_InitGraphicsScreen_HEIGHT = 3,
61 	JAVANVM_InitGraphicsATARI_VISIBLE_WIDTH = 4,
62 	JAVANVM_InitGraphicsATARI_LEFT_MARGIN = 5,
63 	JAVANVM_InitGraphicsSIZE = 6
64 };
65 enum {
66 	JAVANVM_InitSoundSampleRate = 0,
67 	JAVANVM_InitSoundBitsPerSample = 1,
68 	JAVANVM_InitSoundChannels = 2,
69 	JAVANVM_InitSoundSigned = 3,
70 	JAVANVM_InitSoundBigEndian = 4,
71 	JAVANVM_InitSoundBufferSize = 5,
72 	JAVANVM_InitSoundSIZE = 6
73 };
74 
75 /* Java Keys */
76 enum {
77 	CHAR_UNDEFINED = 65535,
78 	KEY_FIRST = 400,
79 	KEY_LAST = 402,
80 	KEY_LOCATION_LEFT = 2,
81 	KEY_LOCATION_NUMPAD = 4,
82 	KEY_LOCATION_RIGHT = 3,
83 	KEY_LOCATION_STANDARD = 1,
84 	KEY_LOCATION_UNKNOWN = 0,
85 	KEY_PRESSED = 401,
86 	KEY_RELEASED = 402,
87 	KEY_TYPED = 400,
88 	VK_0 = 48,
89 	VK_1 = 49,
90 	VK_2 = 50,
91 	VK_3 = 51,
92 	VK_4 = 52,
93 	VK_5 = 53,
94 	VK_6 = 54,
95 	VK_7 = 55,
96 	VK_8 = 56,
97 	VK_9 = 57,
98 	VK_A = 65,
99 	VK_ACCEPT = 30,
100 	VK_ADD = 107,
101 	VK_AGAIN = 65481,
102 	VK_ALL_CANDIDATES = 256,
103 	VK_ALPHANUMERIC = 240,
104 	VK_ALT = 18,
105 	VK_ALT_GRAPH = 65406,
106 	VK_AMPERSAND = 150,
107 	VK_ASTERISK = 151,
108 	VK_AT = 512,
109 	VK_B = 66,
110 	VK_BACK_QUOTE = 192,
111 	VK_BACK_SLASH = 92,
112 	VK_BACK_SPACE = 8,
113 	VK_BRACELEFT = 161,
114 	VK_BRACERIGHT = 162,
115 	VK_C = 67,
116 	VK_CANCEL = 3,
117 	VK_CAPS_LOCK = 20,
118 	VK_CIRCUMFLEX = 514,
119 	VK_CLEAR = 12,
120 	VK_CLOSE_BRACKET = 93,
121 	VK_CODE_INPUT = 258,
122 	VK_COLON = 513,
123 	VK_COMMA = 44,
124 	VK_COMPOSE = 65312,
125 	VK_CONTROL = 17,
126 	VK_CONVERT = 28,
127 	VK_COPY = 65485,
128 	VK_CUT = 65489,
129 	VK_D = 68,
130 	VK_DEAD_ABOVEDOT = 134,
131 	VK_DEAD_ABOVERING = 136,
132 	VK_DEAD_ACUTE = 129,
133 	VK_DEAD_BREVE = 133,
134 	VK_DEAD_CARON = 138,
135 	VK_DEAD_CEDILLA = 139,
136 	VK_DEAD_CIRCUMFLEX = 130,
137 	VK_DEAD_DIAERESIS = 135,
138 	VK_DEAD_DOUBLEACUTE = 137,
139 	VK_DEAD_GRAVE = 128,
140 	VK_DEAD_IOTA = 141,
141 	VK_DEAD_MACRON = 132,
142 	VK_DEAD_OGONEK = 140,
143 	VK_DEAD_SEMIVOICED_SOUND = 143,
144 	VK_DEAD_TILDE = 131,
145 	VK_DEAD_VOICED_SOUND = 142,
146 	VK_DECIMAL = 110,
147 	VK_DELETE = 127,
148 	VK_DIVIDE = 111,
149 	VK_DOLLAR = 515,
150 	VK_DOWN = 40,
151 	VK_E = 69,
152 	VK_END = 35,
153 	VK_ENTER = 10,
154 	VK_EQUALS = 61,
155 	VK_ESCAPE = 27,
156 	VK_EURO_SIGN = 516,
157 	VK_EXCLAMATION_MARK = 517,
158 	VK_F = 70,
159 	VK_F1 = 112,
160 	VK_F10 = 121,
161 	VK_F11 = 122,
162 	VK_F12 = 123,
163 	VK_F13 = 61440,
164 	VK_F14 = 61441,
165 	VK_F15 = 61442,
166 	VK_F16 = 61443,
167 	VK_F17 = 61444,
168 	VK_F18 = 61445,
169 	VK_F19 = 61446,
170 	VK_F2 = 113,
171 	VK_F20 = 61447,
172 	VK_F21 = 61448,
173 	VK_F22 = 61449,
174 	VK_F23 = 61450,
175 	VK_F24 = 61451,
176 	VK_F3 = 114,
177 	VK_F4 = 115,
178 	VK_F5 = 116,
179 	VK_F6 = 117,
180 	VK_F7 = 118,
181 	VK_F8 = 119,
182 	VK_F9 = 120,
183 	VK_FINAL = 24,
184 	VK_FIND = 65488,
185 	VK_FULL_WIDTH = 243,
186 	VK_G = 71,
187 	VK_GREATER = 160,
188 	VK_H = 72,
189 	VK_HALF_WIDTH = 244,
190 	VK_HELP = 156,
191 	VK_HIRAGANA = 242,
192 	VK_HOME = 36,
193 	VK_I = 73,
194 	VK_INPUT_METHOD_ON_OFF = 263,
195 	VK_INSERT = 155,
196 	VK_INVERTED_EXCLAMATION_MARK = 518,
197 	VK_J = 74,
198 	VK_JAPANESE_HIRAGANA = 260,
199 	VK_JAPANESE_KATAKANA = 259,
200 	VK_JAPANESE_ROMAN = 261,
201 	VK_K = 75,
202 	VK_KANA = 21,
203 	VK_KANA_LOCK = 262,
204 	VK_KANJI = 25,
205 	VK_KATAKANA = 241,
206 	VK_KP_DOWN = 225,
207 	VK_KP_LEFT = 226,
208 	VK_KP_RIGHT = 227,
209 	VK_KP_UP = 224,
210 	VK_L = 76,
211 	VK_LEFT = 37,
212 	VK_LEFT_PARENTHESIS = 519,
213 	VK_LESS = 153,
214 	VK_M = 77,
215 	VK_META = 157,
216 	VK_MINUS = 45,
217 	VK_MODECHANGE = 31,
218 	VK_MULTIPLY = 106,
219 	VK_N = 78,
220 	VK_NONCONVERT = 29,
221 	VK_NUM_LOCK = 144,
222 	VK_NUMBER_SIGN = 520,
223 	VK_NUMPAD0 = 96,
224 	VK_NUMPAD1 = 97,
225 	VK_NUMPAD2 = 98,
226 	VK_NUMPAD3 = 99,
227 	VK_NUMPAD4 = 100,
228 	VK_NUMPAD5 = 101,
229 	VK_NUMPAD6 = 102,
230 	VK_NUMPAD7 = 103,
231 	VK_NUMPAD8 = 104,
232 	VK_NUMPAD9 = 105,
233 	VK_O = 79,
234 	VK_OPEN_BRACKET = 91,
235 	VK_P = 80,
236 	VK_PAGE_DOWN = 34,
237 	VK_PAGE_UP = 33,
238 	VK_PASTE = 65487,
239 	VK_PAUSE = 19,
240 	VK_PERIOD = 46,
241 	VK_PLUS = 521,
242 	VK_PREVIOUS_CANDIDATE = 257,
243 	VK_PRINTSCREEN = 154,
244 	VK_PROPS = 65482,
245 	VK_Q = 81,
246 	VK_QUOTE = 222,
247 	VK_QUOTEDBL = 152,
248 	VK_R = 82,
249 	VK_RIGHT = 39,
250 	VK_RIGHT_PARENTHESIS = 522,
251 	VK_ROMAN_CHARACTERS = 245,
252 	VK_S = 83,
253 	VK_SCROLL_LOCK = 145,
254 	VK_SEMICOLON = 59,
255 	VK_SEPARATER = 108,
256 	VK_SEPARATOR = 108,
257 	VK_SHIFT = 16,
258 	VK_SLASH = 47,
259 	VK_SPACE = 32,
260 	VK_STOP = 65480,
261 	VK_SUBTRACT = 109,
262 	VK_T = 84,
263 	VK_TAB = 9,
264 	VK_U = 85,
265 	VK_UNDEFINED = 0,
266 	VK_UNDERSCORE = 523,
267 	VK_UNDO = 65483,
268 	VK_UP = 38,
269 	VK_V = 86,
270 	VK_W = 87,
271 	VK_X = 88,
272 	VK_Y = 89,
273 	VK_Z = 90
274 };
275 
276 #endif /* JAVANVM_H_ */
277