/[gxemul]/trunk/src/include/lk201.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/src/include/lk201.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4 - (show annotations)
Mon Oct 8 16:18:00 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 9987 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.707 2005/04/27 16:37:33 debug Exp $
20050408	Some minor updates to the wdc. Linux now doesn't complain
		anymore if a disk is non-present.
20050409	Various minor fixes (a bintrans bug, and some other things).
		The wdc seems to work with Playstation2 emulation, but there
		is a _long_ annoying delay when disks are detected.
		Fixing a really important bintrans bug (when devices and RAM
		are mixed within 4KB pages), which was triggered with
		NetBSD/playstation2 kernels.
20050410	Adding a dummy dev_ps2_ether (just so that NetBSD doesn't
		complain as much during bootup).
		Symbols starting with '$' are now ignored.
		Renaming dev_ps2_ohci.c to dev_ohci.c, etc.
20050411	Moving the bintrans-cache-isolation check from cpu_mips.c to
		cpu_mips_coproc.c. (I thought this would give a speedup, but
		it's not noticable.)
		Better playstation2 sbus interrupt code.
		Skip ahead many ticks if the count register is read manually.
		(This increases the speed of delay-loops that simply read
		the count register.)
20050412	Updates to the playstation2 timer/interrupt code.
		Some other minor updates.
20050413	NetBSD/cobalt runs from a disk image :-) including userland;
		updating the documentation on how to install NetBSD/cobalt
		using NetBSD/pmax (!).
		Some minor bintrans updates (no real speed improvement) and
		other minor updates (playstation2 now uses the -o options).
20050414	Adding a dummy x86 (and AMD64) mode.
20050415	Adding some (32-bit and 16-bit) x86 instructions.
		Adding some initial support for non-SCSI, non-IDE floppy
		images. (The x86 mode can boot from these, more or less.)
		Moving the devices/ and include/ directories to src/devices/
		and src/include/, respectively.
20050416	Continuing on the x86 stuff. (Adding pc_bios.c and some simple
		support for software interrupts in 16-bit mode.)
20050417	Ripping out most of the x86 instruction decoding stuff, trying
		to rewrite it in a cleaner way.
		Disabling some of the least working CPU families in the
		configure script (sparc, x86, alpha, hppa), so that they are
		not enabled by default.
20050418	Trying to fix the bug which caused problems when turning on
		and off bintrans interactively, by flushing the bintrans cache
		whenever bintrans is manually (re)enabled.
20050419	Adding the 'lswi' ppc instruction.
		Minor updates to the x86 instruction decoding.
20050420	Renaming x86 register name indices from R_xx to X86_R_xx (this
		makes building on Tru64 nicer).
20050422	Adding a check for duplicate MIPS TLB entries on tlbwr/tlbwi.
20050427	Adding screenshots to guestoses.html.
		Some minor fixes and testing for the next release.

==============  RELEASE 0.3.2  ==============


1 /* gxemul: $Id: lk201.h,v 1.4 2005/03/05 12:34:02 debug Exp $ */
2
3 /* This file contains two files from netbsd, lk201.h and lk201.c. */
4
5 #ifndef LK201_H
6 #define LK201_h
7
8 /* $NetBSD: lk201.h,v 1.7 1999/03/19 18:34:01 ad Exp $ */
9
10
11 /*
12 * Ascii values of command keys.
13 */
14 #define KBD_TAB '\t'
15 #define KBD_DEL 127
16 #define KBD_RET '\r'
17
18 /*
19 * Define "hardware-independent" codes for the control, shift, meta and
20 * function keys. Codes start after the last 7-bit ASCII code (127)
21 * and are assigned in an arbitrary order.
22 */
23 #define KBD_NOKEY 128
24
25 #define KBD_F1 201
26 #define KBD_F2 202
27 #define KBD_F3 203
28 #define KBD_F4 204
29 #define KBD_F5 205
30 #define KBD_F6 206
31 #define KBD_F7 207
32 #define KBD_F8 208
33 #define KBD_F9 209
34 #define KBD_F10 210
35 #define KBD_F11 211
36 #define KBD_F12 212
37 #define KBD_F13 213
38 #define KBD_F14 214
39 #define KBD_HELP 215
40 #define KBD_DO 216
41 #define KBD_F17 217
42 #define KBD_F18 218
43 #define KBD_F19 219
44 #define KBD_F20 220
45
46 #define KBD_FIND 221
47 #define KBD_INSERT 222
48 #define KBD_REMOVE 223
49 #define KBD_SELECT 224
50 #define KBD_PREVIOUS 225
51 #define KBD_NEXT 226
52
53 #define KBD_KP_ENTER 227
54 #define KBD_KP_F1 228
55 #define KBD_KP_F2 229
56 #define KBD_KP_F3 230
57 #define KBD_KP_F4 231
58 #define KBD_LEFT 232
59 #define KBD_RIGHT 233
60 #define KBD_DOWN 234
61 #define KBD_UP 235
62
63 #define KBD_CONTROL 236
64 #define KBD_SHIFT 237
65 #define KBD_CAPSLOCK 238
66 #define KBD_ALTERNATE 239
67
68
69
70 /*
71 * Definitions for the Keyboard and mouse.
72 */
73 /*
74 * Special key values.
75 */
76 #define KEY_R_SHIFT 0xab
77 #define KEY_SHIFT 0xae
78 #define KEY_CONTROL 0xaf
79 #define KEY_CAPSLOCK 0xb0
80 #define KEY_R_ALT 0xb2
81 #define KEY_UP 0xb3
82 #define KEY_REPEAT 0xb4
83 #define KEY_F1 0x56
84 #define KEY_COMMAND KEY_F1
85
86 /*
87 * Lk201/301 keyboard
88 */
89 #define LK_UPDOWN 0x86 /* bits for setting lk201 modes */
90 #define LK_AUTODOWN 0x82
91 #define LK_DOWN 0x80
92 #define LK_DEFAULTS 0xd3 /* reset mode settings */
93 #define LK_AR_ENABLE 0xe3 /* global auto repeat enable */
94 #define LK_CL_ENABLE 0x1b /* keyclick enable */
95 #define LK_KBD_ENABLE 0x8b /* keyboard enable */
96 #define LK_BELL_ENABLE 0x23 /* the bell */
97 #define LK_LED_ENABLE 0x13 /* light led */
98 #define LK_LED_DISABLE 0x11 /* turn off led */
99 #define LK_RING_BELL 0xa7 /* ring keyboard bell */
100 #define LED_1 0x81 /* led bits */
101 #define LED_2 0x82
102 #define LED_3 0x84
103 #define LED_4 0x88
104 #define LED_ALL 0x8f
105 #define LK_HELP 0x7c /* help key */
106 #define LK_DO 0x7d /* do key */
107 #define LK_KDOWN_ERROR 0x3d /* key down on powerup error */
108 #define LK_POWER_ERROR 0x3e /* keyboard failure on pwrup tst*/
109 #define LK_OUTPUT_ERROR 0xb5 /* keystrokes lost during inhbt */
110 #define LK_INPUT_ERROR 0xb6 /* garbage command to keyboard */
111 #define LK_LOWEST 0x56 /* lowest significant keycode */
112
113 /* max volume is 0, lowest is 0x7 */
114 #define LK_PARAM_VOLUME(v) (0x80|((v)&0x7))
115
116 /* mode command details */
117 #define LK_CMD_MODE(m,div) ((m)|((div)<<3))
118
119
120 /*
121 * Command characters for the mouse.
122 */
123 #define MOUSE_SELF_TEST 'T'
124 #define MOUSE_INCREMENTAL 'R'
125
126 /*
127 * Mouse output bits.
128 *
129 * MOUSE_START_FRAME Start of report frame bit.
130 * MOUSE_X_SIGN Sign bit for X.
131 * MOUSE_Y_SIGN Sign bit for Y.
132 * MOUSE_X_OFFSET X offset to start cursor at.
133 * MOUSE_Y_OFFSET Y offset to start cursor at.
134 */
135 #define MOUSE_START_FRAME 0x80
136 #define MOUSE_X_SIGN 0x10
137 #define MOUSE_Y_SIGN 0x08
138
139 /*
140 * Definitions for mouse buttons
141 */
142 #define EVENT_LEFT_BUTTON 0x01
143 #define EVENT_MIDDLE_BUTTON 0x02
144 #define EVENT_RIGHT_BUTTON 0x03
145 #define RIGHT_BUTTON 0x01
146 #define MIDDLE_BUTTON 0x02
147 #define LEFT_BUTTON 0x04
148
149 #ifdef _KERNEL
150 extern int LKgetc __P((dev_t dev));
151 extern void lkdivert __P ((int (*getc_fn)(dev_t dev), dev_t dev));
152 #endif
153
154
155 /* This is also from netbsd, pmax/dev/lk201.c: */
156
157 /*
158 * Keyboard to ASCII, unshifted.
159 */
160 static u_char unshiftedAscii[] = {
161 /* 0 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
162 /* 4 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
163 /* 8 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
164 /* c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
165 /* 10 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
166 /* 14 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
167 /* 18 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
168 /* 1c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
169 /* 20 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
170 /* 24 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
171 /* 28 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
172 /* 2c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
173 /* 30 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
174 /* 34 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
175 /* 38 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
176 /* 3c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
177 /* 40 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
178 /* 44 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
179 /* 48 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
180 /* 4c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
181 /* 50 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
182 /* 54 */ KBD_NOKEY, KBD_NOKEY, KBD_F1, KBD_F2,
183 /* 58 */ KBD_F3, KBD_F4, KBD_F5, KBD_NOKEY,
184 /* 5c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
185 /* 60 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
186 /* 64 */ KBD_F6, KBD_F7, KBD_F8, KBD_F9,
187 /* 68 */ KBD_F10, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
188 /* 6c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
189 /* 70 */ KBD_NOKEY, '\033', KBD_F12, KBD_F13,
190 /* 74 */ KBD_F14, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
191 /* 78 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
192 /* 7c */ KBD_HELP, KBD_DO, KBD_NOKEY, KBD_NOKEY,
193 /* 80 */ KBD_F17, KBD_F18, KBD_F19, KBD_F20,
194 /* 84 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
195 /* 88 */ KBD_NOKEY, KBD_NOKEY, KBD_FIND, KBD_INSERT,
196 /* 8c */ KBD_REMOVE, KBD_SELECT, KBD_PREVIOUS, KBD_NEXT,
197 /* 90 */ KBD_NOKEY, KBD_NOKEY, '0', KBD_NOKEY,
198 /* 94 */ '.', KBD_KP_ENTER, '1', '2',
199 /* 98 */ '3', '4', '5', '6',
200 /* 9c */ ',', '7', '8', '9',
201 /* a0 */ '-', KBD_KP_F1, KBD_KP_F2, KBD_KP_F3,
202 /* a4 */ KBD_KP_F4, KBD_NOKEY, KBD_NOKEY, KBD_LEFT,
203 /* a8 */ KBD_RIGHT, KBD_DOWN, KBD_UP, KBD_NOKEY,
204 /* ac */ KBD_NOKEY, KBD_NOKEY, KBD_SHIFT, KBD_CONTROL,
205 /* b0 */ KBD_CAPSLOCK, KBD_ALTERNATE, KBD_NOKEY, KBD_NOKEY,
206 /* b4 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
207 /* b8 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
208 /* bc */ KBD_DEL, KBD_RET, KBD_TAB, '`',
209 /* c0 */ '1', 'q', 'a', 'z',
210 /* c4 */ KBD_NOKEY, '2', 'w', 's',
211 /* c8 */ 'x', '<', KBD_NOKEY, '3',
212 /* cc */ 'e', 'd', 'c', KBD_NOKEY,
213 /* d0 */ '4', 'r', 'f', 'v',
214 /* d4 */ ' ', KBD_NOKEY, '5', 't',
215 /* d8 */ 'g', 'b', KBD_NOKEY, '6',
216 /* dc */ 'y', 'h', 'n', KBD_NOKEY,
217 /* e0 */ '7', 'u', 'j', 'm',
218 /* e4 */ KBD_NOKEY, '8', 'i', 'k',
219 /* e8 */ ',', KBD_NOKEY, '9', 'o',
220 /* ec */ 'l', '.', KBD_NOKEY, '0',
221 /* f0 */ 'p', KBD_NOKEY, ';', '/',
222 /* f4 */ KBD_NOKEY, '=', ']', '\\',
223 /* f8 */ KBD_NOKEY, '-', '[', '\'',
224 /* fc */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
225 };
226
227 /*
228 * Keyboard to Ascii, shifted.
229 */
230 static u_char shiftedAscii[] = {
231 /* 0 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
232 /* 4 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
233 /* 8 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
234 /* c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
235 /* 10 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
236 /* 14 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
237 /* 18 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
238 /* 1c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
239 /* 20 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
240 /* 24 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
241 /* 28 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
242 /* 2c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
243 /* 30 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
244 /* 34 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
245 /* 38 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
246 /* 3c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
247 /* 40 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
248 /* 44 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
249 /* 48 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
250 /* 4c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
251 /* 50 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
252 /* 54 */ KBD_NOKEY, KBD_NOKEY, KBD_F1, KBD_F2,
253 /* 58 */ KBD_F3, KBD_F4, KBD_F5, KBD_NOKEY,
254 /* 5c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
255 /* 60 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
256 /* 64 */ KBD_F6, KBD_F7, KBD_F8, KBD_F9,
257 /* 68 */ KBD_F10, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
258 /* 6c */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
259 /* 70 */ KBD_NOKEY, KBD_F11, KBD_F12, KBD_F13,
260 /* 74 */ KBD_F14, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
261 /* 78 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
262 /* 7c */ KBD_HELP, KBD_DO, KBD_NOKEY, KBD_NOKEY,
263 /* 80 */ KBD_F17, KBD_F18, KBD_F19, KBD_F20,
264 /* 84 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
265 /* 88 */ KBD_NOKEY, KBD_NOKEY, KBD_FIND, KBD_INSERT,
266 /* 8c */ KBD_REMOVE, KBD_SELECT, KBD_PREVIOUS, KBD_NEXT,
267 /* 90 */ KBD_NOKEY, KBD_NOKEY, '0', KBD_NOKEY,
268 /* 94 */ '.', KBD_KP_ENTER, '1', '2',
269 /* 98 */ '3', '4', '5', '6',
270 /* 9c */ ',', '7', '8', '9',
271 /* a0 */ '-', KBD_KP_F1, KBD_KP_F2, KBD_KP_F3,
272 /* a4 */ KBD_KP_F4, KBD_NOKEY, KBD_NOKEY, KBD_LEFT,
273 /* a8 */ KBD_RIGHT, KBD_DOWN, KBD_UP, KBD_NOKEY,
274 /* ac */ KBD_NOKEY, KBD_NOKEY, KBD_SHIFT, KBD_CONTROL,
275 /* b0 */ KBD_CAPSLOCK, KBD_ALTERNATE, KBD_NOKEY, KBD_NOKEY,
276 /* b4 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
277 /* b8 */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
278 /* bc */ KBD_DEL, KBD_RET, KBD_TAB, '~',
279 /* c0 */ '!', 'q', 'a', 'z',
280 /* c4 */ KBD_NOKEY, '@', 'w', 's',
281 /* c8 */ 'x', '>', KBD_NOKEY, '#',
282 /* cc */ 'e', 'd', 'c', KBD_NOKEY,
283 /* d0 */ '$', 'r', 'f', 'v',
284 /* d4 */ ' ', KBD_NOKEY, '%', 't',
285 /* d8 */ 'g', 'b', KBD_NOKEY, '^',
286 /* dc */ 'y', 'h', 'n', KBD_NOKEY,
287 /* e0 */ '&', 'u', 'j', 'm',
288 /* e4 */ KBD_NOKEY, '*', 'i', 'k',
289 /* e8 */ '<', KBD_NOKEY, '(', 'o',
290 /* ec */ 'l', '>', KBD_NOKEY, ')',
291 /* f0 */ 'p', KBD_NOKEY, ':', '?',
292 /* f4 */ KBD_NOKEY, '+', '}', '|',
293 /* f8 */ KBD_NOKEY, '_', '{', '"',
294 /* fc */ KBD_NOKEY, KBD_NOKEY, KBD_NOKEY, KBD_NOKEY,
295 };
296
297 #endif /* LK201_H */
298
299

  ViewVC Help
Powered by ViewVC 1.1.26