- patch is no longer necessary
This commit is contained in:
parent
ed04aff2ca
commit
6058946c09
@ -1,77 +0,0 @@
|
||||
----------------------------------------------------------------------
|
||||
Patch name: patch.floppy-mt0
|
||||
Author: Bryce Denney
|
||||
Date: Wed Dec 12 16:34:42 EST 2001
|
||||
|
||||
Detailed description:
|
||||
WARNING: THIS IS STILL VERY BROKEN!
|
||||
I'm working on sourceforge bug
|
||||
[ #431508 ] FD io write:3f5: unsupported case 0x45
|
||||
http://sourceforge.net/tracker/index.php?func=detail&aid=431508&group_id=12580&atid=112580
|
||||
|
||||
The code assumes MT=1, and fails when MT=0. I need an understanding
|
||||
of what MT really does before I can go any further.
|
||||
|
||||
Patch was created with:
|
||||
cvs diff -u
|
||||
Apply patch to what version:
|
||||
cvs checked out on DATE, release version VER
|
||||
Instructions:
|
||||
To patch, go to main bochs directory.
|
||||
Type "patch -p0 < THIS_PATCH_FILE".
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Index: iodev/floppy.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/iodev/floppy.cc,v
|
||||
retrieving revision 1.26
|
||||
diff -u -r1.26 floppy.cc
|
||||
--- iodev/floppy.cc 2001/10/07 03:28:45 1.26
|
||||
+++ iodev/floppy.cc 2001/12/12 21:31:40
|
||||
@@ -466,6 +466,9 @@
|
||||
case 0x4a: /* read ID */
|
||||
BX_FD_THIS s.command_size = 2;
|
||||
break;
|
||||
+ case 0x45:
|
||||
+ BX_ERROR(("treating FDC command 0x45 just like 0xc5"));
|
||||
+ // fall through into next case.
|
||||
case 0xc5: /* write normal data */
|
||||
BX_FD_THIS s.command_size = 9;
|
||||
break;
|
||||
@@ -712,7 +715,9 @@
|
||||
|
||||
case 0xe6: // read normal data
|
||||
//BX_INFO(("floppy_command read normal data"));
|
||||
- case 0xc5: // write normal data
|
||||
+ case 0x45: // write normal data, with MT=0.
|
||||
+ BX_ERROR(("treat FDC command 0x45 like command 0xc5"));
|
||||
+ case 0xc5: // write normal data, with MT=1.
|
||||
//BX_INFO(("floppy_command write normal data"));
|
||||
if ( (BX_FD_THIS s.DOR & 0x08) == 0 )
|
||||
BX_PANIC(("read/write command with DMA and int disabled"));
|
||||
@@ -860,7 +865,7 @@
|
||||
BX_FD_THIS s.pending_command = BX_FD_THIS s.command[0];
|
||||
return;
|
||||
}
|
||||
- else if (BX_FD_THIS s.command[0] == 0xc5) { // write
|
||||
+ else if (BX_FD_THIS s.command[0] == 0xc5 || BX_FD_THIS s.command[0] == 0x45) { // write
|
||||
BX_FD_THIS s.floppy_buffer_index = 0;
|
||||
|
||||
bx_pc_system.set_DRQ(FLOPPY_DMA_CHAN, 1);
|
||||
@@ -871,7 +876,7 @@
|
||||
return;
|
||||
}
|
||||
else
|
||||
- BX_PANIC(("floppy_command(): unknown read/write command"));
|
||||
+ BX_PANIC(("floppy_command(): unknown read/write command 0x%02x", (Bit8u)BX_FD_THIS s.command[0]));
|
||||
|
||||
return;
|
||||
break;
|
||||
@@ -980,6 +985,7 @@
|
||||
|
||||
|
||||
case 0x4a: /* read ID */
|
||||
+ case 0x45:
|
||||
case 0xc5: // write normal data
|
||||
case 0xe6: // read normal data
|
||||
BX_FD_THIS s.pending_command = 0;
|
@ -1,589 +0,0 @@
|
||||
----------------------------------------------------------------------
|
||||
Patch name: patch.kbd-dieter
|
||||
Author: Dieter Mittelmaier <dieter.mittelmaier@freenet.de>
|
||||
Date: Thu, 21 Jun 2001 23:07:37 +0200
|
||||
Patch Updated: Mon Jun 25 09:32:07 EDT 2001
|
||||
by Bryce to make it apply cleanly
|
||||
Patch Updated: Mon Jun 25 09:50:46 EDT 2001
|
||||
by Bryce to add left backslash code
|
||||
|
||||
Detailed description:
|
||||
I mapped your BX_KEY-defines in gui.h to values from XFree
|
||||
../keycodes/Xfree86. Keysyms in x.cc would now translated
|
||||
to keycodes. Now I can use german or us keyboard-layout in
|
||||
win95 and all works well.
|
||||
|
||||
Note: Changing keyboard layout in win95 to en works too
|
||||
Also you must change keyboard setup in win95 to AT-Enhanced 101/102 keyboard
|
||||
|
||||
You can also add a
|
||||
BX_KEY_LEFT_BACKSLASH 94
|
||||
in gui/gui.h and
|
||||
case BX_KEY_LEFT_BACKSLASH: scancode =0x56h; break;
|
||||
in iodev/keyboard.cc (gen_scancode).
|
||||
|
||||
Then <>| keys work too
|
||||
|
||||
Apply patch to:
|
||||
current CVS
|
||||
Instructions:
|
||||
To patch, go to main bochs directory.
|
||||
Type "patch -p0 < THIS_PATCH_FILE".
|
||||
----------------------------------------------------------------------
|
||||
Index: gui/gui.h
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/gui/gui.h,v
|
||||
retrieving revision 1.7
|
||||
retrieving revision 1.9
|
||||
diff -u -r1.7 -r1.9
|
||||
--- gui/gui.h 2001/06/23 03:18:14 1.7
|
||||
+++ gui/gui.h 2001/06/25 13:39:10 1.9
|
||||
@@ -92,114 +92,115 @@
|
||||
#define BX_KEY_PRESSED 0x00000000
|
||||
#define BX_KEY_RELEASED 0x80000000
|
||||
|
||||
-#define BX_KEY_CTRL_L 0
|
||||
-#define BX_KEY_SHIFT_L 1
|
||||
+#define BX_KEY_CTRL_L 37
|
||||
+#define BX_KEY_SHIFT_L 50
|
||||
|
||||
-#define BX_KEY_F1 2
|
||||
-#define BX_KEY_F2 3
|
||||
-#define BX_KEY_F3 4
|
||||
-#define BX_KEY_F4 5
|
||||
-#define BX_KEY_F5 6
|
||||
-#define BX_KEY_F6 7
|
||||
-#define BX_KEY_F7 8
|
||||
-#define BX_KEY_F8 9
|
||||
-#define BX_KEY_F9 10
|
||||
-#define BX_KEY_F10 11
|
||||
-#define BX_KEY_F11 12
|
||||
-#define BX_KEY_F12 13
|
||||
-
|
||||
-#define BX_KEY_CTRL_R 14
|
||||
-#define BX_KEY_SHIFT_R 15
|
||||
-#define BX_KEY_CAPS_LOCK 16
|
||||
-#define BX_KEY_NUM_LOCK 17
|
||||
-#define BX_KEY_ALT_L 18
|
||||
-#define BX_KEY_ALT_R 19
|
||||
-
|
||||
-#define BX_KEY_A 20
|
||||
-#define BX_KEY_B 21
|
||||
-#define BX_KEY_C 22
|
||||
-#define BX_KEY_D 23
|
||||
-#define BX_KEY_E 24
|
||||
-#define BX_KEY_F 25
|
||||
-#define BX_KEY_G 26
|
||||
-#define BX_KEY_H 27
|
||||
-#define BX_KEY_I 28
|
||||
-#define BX_KEY_J 29
|
||||
-#define BX_KEY_K 30
|
||||
-#define BX_KEY_L 31
|
||||
-#define BX_KEY_M 32
|
||||
-#define BX_KEY_N 33
|
||||
-#define BX_KEY_O 34
|
||||
-#define BX_KEY_P 35
|
||||
-#define BX_KEY_Q 36
|
||||
-#define BX_KEY_R 37
|
||||
-#define BX_KEY_S 38
|
||||
-#define BX_KEY_T 39
|
||||
-#define BX_KEY_U 40
|
||||
-#define BX_KEY_V 41
|
||||
-#define BX_KEY_W 42
|
||||
-#define BX_KEY_X 43
|
||||
-#define BX_KEY_Y 44
|
||||
-#define BX_KEY_Z 45
|
||||
-
|
||||
-#define BX_KEY_0 46
|
||||
-#define BX_KEY_1 47
|
||||
-#define BX_KEY_2 48
|
||||
-#define BX_KEY_3 49
|
||||
-#define BX_KEY_4 50
|
||||
-#define BX_KEY_5 51
|
||||
-#define BX_KEY_6 52
|
||||
-#define BX_KEY_7 53
|
||||
-#define BX_KEY_8 54
|
||||
-#define BX_KEY_9 55
|
||||
+#define BX_KEY_F1 67
|
||||
+#define BX_KEY_F2 68
|
||||
+#define BX_KEY_F3 69
|
||||
+#define BX_KEY_F4 70
|
||||
+#define BX_KEY_F5 71
|
||||
+#define BX_KEY_F6 72
|
||||
+#define BX_KEY_F7 73
|
||||
+#define BX_KEY_F8 74
|
||||
+#define BX_KEY_F9 75
|
||||
+#define BX_KEY_F10 76
|
||||
+#define BX_KEY_F11 95
|
||||
+#define BX_KEY_F12 96
|
||||
+
|
||||
+#define BX_KEY_CTRL_R 109
|
||||
+#define BX_KEY_SHIFT_R 62
|
||||
+#define BX_KEY_CAPS_LOCK 66
|
||||
+#define BX_KEY_NUM_LOCK 77
|
||||
+#define BX_KEY_ALT_L 64
|
||||
+#define BX_KEY_ALT_R 113
|
||||
+
|
||||
+#define BX_KEY_A 38
|
||||
+#define BX_KEY_B 56
|
||||
+#define BX_KEY_C 54
|
||||
+#define BX_KEY_D 40
|
||||
+#define BX_KEY_E 26
|
||||
+#define BX_KEY_F 41
|
||||
+#define BX_KEY_G 42
|
||||
+#define BX_KEY_H 43
|
||||
+#define BX_KEY_I 31
|
||||
+#define BX_KEY_J 44
|
||||
+#define BX_KEY_K 45
|
||||
+#define BX_KEY_L 46
|
||||
+#define BX_KEY_M 58
|
||||
+#define BX_KEY_N 57
|
||||
+#define BX_KEY_O 32
|
||||
+#define BX_KEY_P 33
|
||||
+#define BX_KEY_Q 24
|
||||
+#define BX_KEY_R 27
|
||||
+#define BX_KEY_S 39
|
||||
+#define BX_KEY_T 28
|
||||
+#define BX_KEY_U 30
|
||||
+#define BX_KEY_V 55
|
||||
+#define BX_KEY_W 25
|
||||
+#define BX_KEY_X 53
|
||||
+#define BX_KEY_Y 29
|
||||
+#define BX_KEY_Z 52
|
||||
+
|
||||
+#define BX_KEY_0 19
|
||||
+#define BX_KEY_1 10
|
||||
+#define BX_KEY_2 11
|
||||
+#define BX_KEY_3 12
|
||||
+#define BX_KEY_4 13
|
||||
+#define BX_KEY_5 14
|
||||
+#define BX_KEY_6 15
|
||||
+#define BX_KEY_7 16
|
||||
+#define BX_KEY_8 17
|
||||
+#define BX_KEY_9 18
|
||||
|
||||
-#define BX_KEY_ESC 56
|
||||
+#define BX_KEY_ESC 9
|
||||
|
||||
-#define BX_KEY_SPACE 57
|
||||
-#define BX_KEY_SINGLE_QUOTE 58
|
||||
+#define BX_KEY_SPACE 65
|
||||
+#define BX_KEY_SINGLE_QUOTE 48
|
||||
#define BX_KEY_COMMA 59
|
||||
#define BX_KEY_PERIOD 60
|
||||
#define BX_KEY_SLASH 61
|
||||
|
||||
-#define BX_KEY_SEMICOLON 62
|
||||
-#define BX_KEY_EQUALS 63
|
||||
+#define BX_KEY_SEMICOLON 47
|
||||
+#define BX_KEY_EQUALS 21
|
||||
|
||||
-#define BX_KEY_LEFT_BRACKET 64
|
||||
-#define BX_KEY_BACKSLASH 65
|
||||
-#define BX_KEY_RIGHT_BRACKET 66
|
||||
-#define BX_KEY_MINUS 67
|
||||
-#define BX_KEY_GRAVE 68
|
||||
-
|
||||
-#define BX_KEY_BACKSPACE 69
|
||||
-#define BX_KEY_ENTER 70
|
||||
-#define BX_KEY_TAB 71
|
||||
-
|
||||
-#define BX_KEY_INSERT 76
|
||||
-#define BX_KEY_DELETE 77
|
||||
-#define BX_KEY_HOME 78
|
||||
-#define BX_KEY_END 79
|
||||
-#define BX_KEY_PAGE_UP 80
|
||||
-#define BX_KEY_PAGE_DOWN 81
|
||||
-
|
||||
-#define BX_KEY_KP_ADD 82
|
||||
-#define BX_KEY_KP_SUBTRACT 83
|
||||
-#define BX_KEY_KP_END 84
|
||||
-#define BX_KEY_KP_DOWN 85
|
||||
-#define BX_KEY_KP_PAGE_DOWN 86
|
||||
-#define BX_KEY_KP_LEFT 87
|
||||
-#define BX_KEY_KP_RIGHT 88
|
||||
-#define BX_KEY_KP_HOME 89
|
||||
-#define BX_KEY_KP_UP 90
|
||||
-#define BX_KEY_KP_PAGE_UP 91
|
||||
-#define BX_KEY_KP_INSERT 92
|
||||
-#define BX_KEY_KP_DELETE 93
|
||||
-#define BX_KEY_KP_5 94
|
||||
-
|
||||
-#define BX_KEY_UP 95
|
||||
-#define BX_KEY_DOWN 96
|
||||
-#define BX_KEY_LEFT 97
|
||||
-#define BX_KEY_RIGHT 98
|
||||
-
|
||||
-#define BX_KEY_KP_ENTER 99
|
||||
-#define BX_KEY_KP_MULTIPLY 100
|
||||
-#define BX_KEY_KP_DIVIDE 101
|
||||
+#define BX_KEY_LEFT_BRACKET 34
|
||||
+#define BX_KEY_BACKSLASH 51
|
||||
+#define BX_KEY_LEFT_BACKSLASH 94
|
||||
+#define BX_KEY_RIGHT_BRACKET 35
|
||||
+#define BX_KEY_MINUS 20
|
||||
+#define BX_KEY_GRAVE 49
|
||||
+
|
||||
+#define BX_KEY_BACKSPACE 22
|
||||
+#define BX_KEY_ENTER 36
|
||||
+#define BX_KEY_TAB 23
|
||||
+
|
||||
+#define BX_KEY_INSERT 106
|
||||
+#define BX_KEY_DELETE 107
|
||||
+#define BX_KEY_HOME 97
|
||||
+#define BX_KEY_END 103
|
||||
+#define BX_KEY_PAGE_UP 99
|
||||
+#define BX_KEY_PAGE_DOWN 105
|
||||
+
|
||||
+#define BX_KEY_KP_ADD 86
|
||||
+#define BX_KEY_KP_SUBTRACT 82
|
||||
+#define BX_KEY_KP_END 87
|
||||
+#define BX_KEY_KP_DOWN 88
|
||||
+#define BX_KEY_KP_PAGE_DOWN 89
|
||||
+#define BX_KEY_KP_LEFT 83
|
||||
+#define BX_KEY_KP_RIGHT 85
|
||||
+#define BX_KEY_KP_HOME 79
|
||||
+#define BX_KEY_KP_UP 80
|
||||
+#define BX_KEY_KP_PAGE_UP 81
|
||||
+#define BX_KEY_KP_INSERT 90
|
||||
+#define BX_KEY_KP_DELETE 91
|
||||
+#define BX_KEY_KP_5 84
|
||||
+
|
||||
+#define BX_KEY_UP 98
|
||||
+#define BX_KEY_DOWN 104
|
||||
+#define BX_KEY_LEFT 100
|
||||
+#define BX_KEY_RIGHT 102
|
||||
+
|
||||
+#define BX_KEY_KP_ENTER 108
|
||||
+#define BX_KEY_KP_MULTIPLY 63
|
||||
+#define BX_KEY_KP_DIVIDE 112
|
||||
Index: gui/x.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/gui/x.cc,v
|
||||
retrieving revision 1.13
|
||||
retrieving revision 1.14
|
||||
diff -u -r1.13 -r1.14
|
||||
--- gui/x.cc 2001/06/23 03:18:14 1.13
|
||||
+++ gui/x.cc 2001/06/25 13:35:51 1.14
|
||||
@@ -102,137 +102,11 @@
|
||||
static void headerbar_click(int x, int y);
|
||||
static void send_keyboard_mouse_status(void);
|
||||
|
||||
-
|
||||
-
|
||||
-
|
||||
-Bit32u ascii_to_key_event[0x5f] = {
|
||||
- // !"#$%&'
|
||||
- BX_KEY_SPACE,
|
||||
- BX_KEY_1,
|
||||
- BX_KEY_SINGLE_QUOTE,
|
||||
- BX_KEY_3,
|
||||
- BX_KEY_4,
|
||||
- BX_KEY_5,
|
||||
- BX_KEY_7,
|
||||
- BX_KEY_SINGLE_QUOTE,
|
||||
-
|
||||
- // ()*+,-./
|
||||
- BX_KEY_9,
|
||||
- BX_KEY_0,
|
||||
- BX_KEY_8,
|
||||
- BX_KEY_EQUALS,
|
||||
- BX_KEY_COMMA,
|
||||
- BX_KEY_MINUS,
|
||||
- BX_KEY_PERIOD,
|
||||
- BX_KEY_SLASH,
|
||||
-
|
||||
- // 01234567
|
||||
- BX_KEY_0,
|
||||
- BX_KEY_1,
|
||||
- BX_KEY_2,
|
||||
- BX_KEY_3,
|
||||
- BX_KEY_4,
|
||||
- BX_KEY_5,
|
||||
- BX_KEY_6,
|
||||
- BX_KEY_7,
|
||||
-
|
||||
- // 89:;<=>?
|
||||
- BX_KEY_8,
|
||||
- BX_KEY_9,
|
||||
- BX_KEY_SEMICOLON,
|
||||
- BX_KEY_SEMICOLON,
|
||||
- BX_KEY_COMMA,
|
||||
- BX_KEY_EQUALS,
|
||||
- BX_KEY_PERIOD,
|
||||
- BX_KEY_SLASH,
|
||||
-
|
||||
- // @ABCDEFG
|
||||
- BX_KEY_2,
|
||||
- BX_KEY_A,
|
||||
- BX_KEY_B,
|
||||
- BX_KEY_C,
|
||||
- BX_KEY_D,
|
||||
- BX_KEY_E,
|
||||
- BX_KEY_F,
|
||||
- BX_KEY_G,
|
||||
-
|
||||
-
|
||||
- // HIJKLMNO
|
||||
- BX_KEY_H,
|
||||
- BX_KEY_I,
|
||||
- BX_KEY_J,
|
||||
- BX_KEY_K,
|
||||
- BX_KEY_L,
|
||||
- BX_KEY_M,
|
||||
- BX_KEY_N,
|
||||
- BX_KEY_O,
|
||||
-
|
||||
-
|
||||
- // PQRSTUVW
|
||||
- BX_KEY_P,
|
||||
- BX_KEY_Q,
|
||||
- BX_KEY_R,
|
||||
- BX_KEY_S,
|
||||
- BX_KEY_T,
|
||||
- BX_KEY_U,
|
||||
- BX_KEY_V,
|
||||
- BX_KEY_W,
|
||||
-
|
||||
- // XYZ[\]^_
|
||||
- BX_KEY_X,
|
||||
- BX_KEY_Y,
|
||||
- BX_KEY_Z,
|
||||
- BX_KEY_LEFT_BRACKET,
|
||||
- BX_KEY_BACKSLASH,
|
||||
- BX_KEY_RIGHT_BRACKET,
|
||||
- BX_KEY_6,
|
||||
- BX_KEY_MINUS,
|
||||
-
|
||||
- // `abcdefg
|
||||
- BX_KEY_GRAVE,
|
||||
- BX_KEY_A,
|
||||
- BX_KEY_B,
|
||||
- BX_KEY_C,
|
||||
- BX_KEY_D,
|
||||
- BX_KEY_E,
|
||||
- BX_KEY_F,
|
||||
- BX_KEY_G,
|
||||
-
|
||||
- // hijklmno
|
||||
- BX_KEY_H,
|
||||
- BX_KEY_I,
|
||||
- BX_KEY_J,
|
||||
- BX_KEY_K,
|
||||
- BX_KEY_L,
|
||||
- BX_KEY_M,
|
||||
- BX_KEY_N,
|
||||
- BX_KEY_O,
|
||||
-
|
||||
- // pqrstuvw
|
||||
- BX_KEY_P,
|
||||
- BX_KEY_Q,
|
||||
- BX_KEY_R,
|
||||
- BX_KEY_S,
|
||||
- BX_KEY_T,
|
||||
- BX_KEY_U,
|
||||
- BX_KEY_V,
|
||||
- BX_KEY_W,
|
||||
-
|
||||
- // xyz{|}~
|
||||
- BX_KEY_X,
|
||||
- BX_KEY_Y,
|
||||
- BX_KEY_Z,
|
||||
- BX_KEY_LEFT_BRACKET,
|
||||
- BX_KEY_BACKSLASH,
|
||||
- BX_KEY_RIGHT_BRACKET,
|
||||
- BX_KEY_GRAVE
|
||||
- };
|
||||
-
|
||||
extern Bit8u graphics_snapshot[32 * 1024];
|
||||
|
||||
|
||||
static void load_font(void);
|
||||
-static void xkeypress(KeySym keysym, int press_release);
|
||||
+static void xkeypress(KeyCode keycode, int press_release);
|
||||
// extern "C" void select_visual(void);
|
||||
|
||||
#define ROUNDUP(nbytes, pad) ((((nbytes) + ((pad)-1)) / (pad)) * ((pad)>>3))
|
||||
@@ -555,6 +429,7 @@
|
||||
XEvent report;
|
||||
XKeyEvent *key_event;
|
||||
KeySym keysym;
|
||||
+ KeyCode keycode;
|
||||
XComposeStatus compose;
|
||||
char buffer[MAX_MAPPED_STRING_LENGTH];
|
||||
int bufsize = MAX_MAPPED_STRING_LENGTH;
|
||||
@@ -690,13 +565,15 @@
|
||||
case KeyPress:
|
||||
key_event = (XKeyEvent *) &report;
|
||||
charcount = XLookupString(key_event, buffer, bufsize, &keysym, &compose);
|
||||
- xkeypress(keysym, 0);
|
||||
+ keycode = XKeysymToKeycode(bx_x_display, keysym);
|
||||
+ xkeypress(keycode, 0);
|
||||
break;
|
||||
|
||||
case KeyRelease:
|
||||
key_event = (XKeyEvent *) &report;
|
||||
charcount = XLookupString(key_event, buffer, bufsize, &keysym, &compose);
|
||||
- xkeypress(keysym, 1);
|
||||
+ keycode = XKeysymToKeycode(bx_x_display, keysym);
|
||||
+ xkeypress(keycode, 1);
|
||||
break;
|
||||
|
||||
case MotionNotify:
|
||||
@@ -790,137 +667,11 @@
|
||||
|
||||
|
||||
void
|
||||
-xkeypress(KeySym keysym, int press_release)
|
||||
+xkeypress(KeyCode keycode, int press_release)
|
||||
{
|
||||
Bit32u key_event;
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
- // this depends on the fact that the X11 keysyms which
|
||||
- // correspond to the ascii characters space .. tilde
|
||||
- // are in consequtive order.
|
||||
- if ((keysym >= XK_space) && (keysym <= XK_asciitilde)) {
|
||||
- key_event = ascii_to_key_event[keysym - XK_space];
|
||||
- }
|
||||
- else switch (keysym) {
|
||||
- case XK_KP_1:
|
||||
-#ifdef XK_KP_End
|
||||
- case XK_KP_End:
|
||||
-#endif
|
||||
- key_event = BX_KEY_KP_END; break;
|
||||
-
|
||||
- case XK_KP_2:
|
||||
-#ifdef XK_KP_Down
|
||||
- case XK_KP_Down:
|
||||
-#endif
|
||||
- key_event = BX_KEY_KP_DOWN; break;
|
||||
-
|
||||
- case XK_KP_3:
|
||||
-#ifdef XK_KP_Page_Down
|
||||
- case XK_KP_Page_Down:
|
||||
-#endif
|
||||
- key_event = BX_KEY_KP_PAGE_DOWN; break;
|
||||
-
|
||||
- case XK_KP_4:
|
||||
-#ifdef XK_KP_Left
|
||||
- case XK_KP_Left:
|
||||
-#endif
|
||||
- key_event = BX_KEY_KP_LEFT; break;
|
||||
-
|
||||
- case XK_KP_5:
|
||||
- key_event = BX_KEY_KP_5; break;
|
||||
-
|
||||
- case XK_KP_6:
|
||||
-#ifdef XK_KP_Right
|
||||
- case XK_KP_Right:
|
||||
-#endif
|
||||
- key_event = BX_KEY_KP_RIGHT; break;
|
||||
-
|
||||
- case XK_KP_7:
|
||||
-#ifdef XK_KP_Home
|
||||
- case XK_KP_Home:
|
||||
-#endif
|
||||
- key_event = BX_KEY_KP_HOME; break;
|
||||
-
|
||||
- case XK_KP_8:
|
||||
-#ifdef XK_KP_Up
|
||||
- case XK_KP_Up:
|
||||
-#endif
|
||||
- key_event = BX_KEY_KP_UP; break;
|
||||
-
|
||||
- case XK_KP_9:
|
||||
-#ifdef XK_KP_Page_Up
|
||||
- case XK_KP_Page_Up:
|
||||
-#endif
|
||||
- key_event = BX_KEY_KP_PAGE_UP; break;
|
||||
-
|
||||
- case XK_KP_0:
|
||||
-#ifdef XK_KP_Insert
|
||||
- case XK_KP_Insert:
|
||||
- key_event = BX_KEY_KP_INSERT; break;
|
||||
-#endif
|
||||
-
|
||||
- case XK_KP_Decimal:
|
||||
-#ifdef XK_KP_Delete
|
||||
- case XK_KP_Delete:
|
||||
- key_event = BX_KEY_KP_DELETE; break;
|
||||
-#endif
|
||||
-
|
||||
-#ifdef XK_KP_Enter
|
||||
- case XK_KP_Enter:
|
||||
- key_event = BX_KEY_KP_ENTER; break;
|
||||
-#endif
|
||||
-
|
||||
- case XK_KP_Subtract: key_event = BX_KEY_KP_SUBTRACT; break;
|
||||
- case XK_KP_Add: key_event = BX_KEY_KP_ADD; break;
|
||||
-
|
||||
- case XK_KP_Multiply: key_event = BX_KEY_KP_MULTIPLY; break;
|
||||
- case XK_KP_Divide: key_event = BX_KEY_KP_DIVIDE; break;
|
||||
-
|
||||
-
|
||||
- case XK_Up: key_event = BX_KEY_UP; break;
|
||||
- case XK_Down: key_event = BX_KEY_DOWN; break;
|
||||
- case XK_Left: key_event = BX_KEY_LEFT; break;
|
||||
- case XK_Right: key_event = BX_KEY_RIGHT; break;
|
||||
-
|
||||
-
|
||||
- case XK_Delete: key_event = BX_KEY_DELETE; break;
|
||||
- case XK_BackSpace: key_event = BX_KEY_BACKSPACE; break;
|
||||
- case XK_Tab: key_event = BX_KEY_TAB; break;
|
||||
- case XK_Return: key_event = BX_KEY_ENTER; break;
|
||||
- case XK_Escape: key_event = BX_KEY_ESC; break;
|
||||
- case XK_F1: key_event = BX_KEY_F1; break;
|
||||
- case XK_F2: key_event = BX_KEY_F2; break;
|
||||
- case XK_F3: key_event = BX_KEY_F3; break;
|
||||
- case XK_F4: key_event = BX_KEY_F4; break;
|
||||
- case XK_F5: key_event = BX_KEY_F5; break;
|
||||
- case XK_F6: key_event = BX_KEY_F6; break;
|
||||
- case XK_F7: key_event = BX_KEY_F7; break;
|
||||
- case XK_F8: key_event = BX_KEY_F8; break;
|
||||
- case XK_F9: key_event = BX_KEY_F9; break;
|
||||
- case XK_F10: key_event = BX_KEY_F10; break;
|
||||
- case XK_F11: key_event = BX_KEY_F11; break;
|
||||
- case XK_F12: key_event = BX_KEY_F12; break;
|
||||
- case XK_Control_L: key_event = BX_KEY_CTRL_L; break;
|
||||
- case XK_Shift_L: key_event = BX_KEY_SHIFT_L; break;
|
||||
- case XK_Shift_R: key_event = BX_KEY_SHIFT_R; break;
|
||||
- case XK_Caps_Lock: key_event = BX_KEY_CAPS_LOCK; break;
|
||||
- case XK_Num_Lock: key_event = BX_KEY_NUM_LOCK; break;
|
||||
- case XK_Alt_L: key_event = BX_KEY_ALT_L; break;
|
||||
-
|
||||
- case XK_Insert: key_event = BX_KEY_INSERT; break;
|
||||
- case XK_Home: key_event = BX_KEY_HOME; break;
|
||||
- case XK_End: key_event = BX_KEY_END; break;
|
||||
- case XK_Page_Up: key_event = BX_KEY_PAGE_UP; break;
|
||||
- case XK_Page_Down: key_event = BX_KEY_PAGE_DOWN; break;
|
||||
-
|
||||
- default:
|
||||
- BX_ERROR(( "xkeypress(): keysym %x unhandled!", (unsigned) keysym ));
|
||||
- return;
|
||||
- break;
|
||||
- }
|
||||
+ key_event = (unsigned) keycode;
|
||||
+ BX_DEBUG (("keycode: %d\n", (unsigned) keycode));
|
||||
|
||||
if (press_release)
|
||||
key_event |= BX_KEY_RELEASED;
|
||||
Index: iodev/keyboard.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/iodev/keyboard.cc,v
|
||||
retrieving revision 1.22
|
||||
retrieving revision 1.23
|
||||
diff -u -r1.22 -r1.23
|
||||
--- iodev/keyboard.cc 2001/06/20 14:01:39 1.22
|
||||
+++ iodev/keyboard.cc 2001/06/25 13:39:10 1.23
|
||||
@@ -646,6 +646,7 @@
|
||||
|
||||
case BX_KEY_LEFT_BRACKET: scancode = 0x1a; break;
|
||||
case BX_KEY_BACKSLASH: scancode = 0x2b; break;
|
||||
+ case BX_KEY_LEFT_BACKSLASH: scancode = 0x56; break;
|
||||
case BX_KEY_RIGHT_BRACKET: scancode = 0x1b; break;
|
||||
case BX_KEY_MINUS: scancode = 0x0c; break;
|
||||
case BX_KEY_GRAVE: scancode = 0x29; break;
|
@ -1,299 +0,0 @@
|
||||
----------------------------------------------------------------------
|
||||
Patch name: patch.kbd-dieter-2
|
||||
Author: Dieter Mittelmaier <dieter.mittelmaier@freenet.de>
|
||||
Date: Wed, 4 Jul 2001 22:12:28 +0200
|
||||
RCS Id: $Id: patch.kbd-dieter-2,v 1.1 2001-11-19 18:36:35 bdenney Exp $
|
||||
|
||||
Detailed description:
|
||||
New keyboard patch
|
||||
|
||||
Short description:
|
||||
We now use a virtual keyboard with US-layout. X translate keycodes to
|
||||
keysyms using this virtual keyboard. So we must not think about keycodes.
|
||||
Read also comments in gui/x.cc.
|
||||
This should work with all keyboards and languages X supports.
|
||||
Hope this works on all X-servers.
|
||||
|
||||
Cause your current keyboard implementation is a US-keyboard to BIOS-scancodes
|
||||
I must not change BX_KEY-defines.
|
||||
Changes in iodev/keyboard.cc and gui/gui.h are additional and don't hurt your
|
||||
current implementation.
|
||||
Main changes in gui/x.cc I have included in #ifdef NEW_KEYBOARD which is
|
||||
defined at top of x.cc. So you can use your current keyboard implementation
|
||||
too. Or make a configure-option.
|
||||
|
||||
|
||||
Patch was created with:
|
||||
diff -u
|
||||
Apply patch to what version:
|
||||
current cvs
|
||||
Instructions:
|
||||
To patch, go to main bochs directory.
|
||||
Type "patch -p1 < THIS_PATCH_FILE".
|
||||
----------------------------------------------------------------------
|
||||
|
||||
diff -urN bochs/gui/gui.h bochs/gui/gui.h
|
||||
--- bochs/gui/gui.h Tue May 15 16:49:56 2001
|
||||
+++ bochs/gui/gui.h Mon Jul 2 15:01:56 2001
|
||||
@@ -175,6 +175,13 @@
|
||||
#define BX_KEY_ENTER 70
|
||||
#define BX_KEY_TAB 71
|
||||
|
||||
+/* need this key for german keyboards "<>|" */
|
||||
+#define BX_KEY_LSGT 72
|
||||
+/* just for completeness */
|
||||
+#define BX_KEY_PRSC 73
|
||||
+#define BX_KEY_SCLK 74
|
||||
+#define BX_KEY_PAUS 75
|
||||
+
|
||||
#define BX_KEY_INSERT 76
|
||||
#define BX_KEY_DELETE 77
|
||||
#define BX_KEY_HOME 78
|
||||
diff -urN bochs/gui/x.cc bochs/gui/x.cc
|
||||
--- bochs/gui/x.cc Thu May 24 16:08:54 2001
|
||||
+++ bochs/gui/x.cc Wed Jul 4 21:24:17 2001
|
||||
@@ -20,6 +20,8 @@
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
+/* Change this to 0 if it does't work */
|
||||
+#define NEW_KEYBOARD 1
|
||||
|
||||
extern "C" {
|
||||
#include <X11/Xlib.h>
|
||||
@@ -27,6 +29,10 @@
|
||||
#include <X11/Xos.h>
|
||||
#include <X11/Xatom.h>
|
||||
#include <X11/keysym.h>
|
||||
+#ifdef NEW_KEYBOARD
|
||||
+#include <X11/XKBlib.h>
|
||||
+#endif
|
||||
+
|
||||
}
|
||||
|
||||
#include "bochs.h"
|
||||
@@ -37,6 +43,12 @@
|
||||
|
||||
#define MAX_MAPPED_STRING_LENGTH 10
|
||||
|
||||
+#ifdef NEW_KEYBOARD
|
||||
+XkbDescPtr bx_xkb; /* Our virtual keyboard with US-layout */
|
||||
+XkbDescPtr bx_xkb_orig;
|
||||
+static void init_keyboard(void);
|
||||
+#endif
|
||||
+
|
||||
/* These are used as arguments to nearly every Xlib routine, so it saves
|
||||
* routine arguments to declare them global. If there were
|
||||
* additional source files, they would be declared extern there. */
|
||||
@@ -303,6 +315,10 @@
|
||||
progname, XDisplayName(display_name)));
|
||||
}
|
||||
|
||||
+#ifdef NEW_KEYBOARD
|
||||
+ init_keyboard();
|
||||
+#endif
|
||||
+
|
||||
/* get screen size from display structure macro */
|
||||
bx_x_screen_num = DefaultScreen(bx_x_display);
|
||||
|
||||
@@ -515,6 +531,125 @@
|
||||
XFlush(bx_x_display);
|
||||
}
|
||||
|
||||
+#ifdef NEW_KEYBOARD
|
||||
+ void
|
||||
+init_keyboard(void)
|
||||
+{
|
||||
+ XkbComponentNamesRec kcomp;
|
||||
+ char * bx_symbols= "+us";
|
||||
+ char * orig_symbols = NULL;
|
||||
+ char * orig_keycodes = NULL;
|
||||
+ char * orig_types = NULL;
|
||||
+ char * orig_compat = NULL;
|
||||
+ char *tmp = NULL;
|
||||
+
|
||||
+ /*
|
||||
+ Using XkbGetKeyboardByName(bx_x_display,XkbUseCoreKbd,
|
||||
+ &kcomp,XkbGBN_AllComponentsMask,XkbGBN_AllComponentsMask,False);
|
||||
+ should give us a keyboard description without loading it into the server,
|
||||
+ but it crashs. Maybe this is a bug in XFree86, I don't know.
|
||||
+ So we use this workaround.
|
||||
+ We must store current keyboard description. Then we change symbols to
|
||||
+ US-layout. The server load this layout. At this time we have it in all
|
||||
+ clients. So we must restore previous keyboard-layout.
|
||||
+
|
||||
+ We should free our virtual keyboard description if bochs closed.
|
||||
+ Can anybody tell me where.
|
||||
+ */
|
||||
+
|
||||
+ /* Get a full copy from current keyboard */
|
||||
+ bx_xkb_orig = NULL;
|
||||
+ bx_xkb_orig = XkbGetKeyboard(bx_x_display,XkbAllComponentsMask,XkbUseCoreKbd);
|
||||
+ if (bx_xkb_orig) {
|
||||
+ if (XkbGetNames(bx_x_display,XkbAllNamesMask,bx_xkb_orig)!=Success) {
|
||||
+ BX_PANIC(("Xkeyb:Could not load names\n"));
|
||||
+ } else {
|
||||
+ /* store description to restore it later */
|
||||
+ tmp = XGetAtomName(bx_x_display,bx_xkb_orig->names->symbols);
|
||||
+ orig_symbols = (char *) malloc(strlen(tmp));
|
||||
+ sprintf(orig_symbols, "%s", tmp);
|
||||
+
|
||||
+ tmp = XGetAtomName(bx_x_display,bx_xkb_orig->names->keycodes);
|
||||
+ orig_keycodes = (char *) malloc(strlen(tmp));
|
||||
+ sprintf(orig_keycodes, "%s", tmp);
|
||||
+
|
||||
+ tmp = XGetAtomName(bx_x_display,bx_xkb_orig->names->types);
|
||||
+ orig_types = (char *) malloc(strlen(tmp));
|
||||
+ sprintf(orig_types, "%s", tmp);
|
||||
+
|
||||
+ tmp = XGetAtomName(bx_x_display,bx_xkb_orig->names->compat);
|
||||
+ orig_compat = (char *) malloc(strlen(tmp));
|
||||
+ sprintf(orig_compat, "%s", tmp);
|
||||
+
|
||||
+ BX_DEBUG(("Xkeyb:orig_symbols %s\n",orig_symbols));
|
||||
+ BX_DEBUG(("Xkeyb:orig_keycodes %s\n",orig_keycodes));
|
||||
+ BX_DEBUG(("Xkeyb:orig_types %s\n",orig_types));
|
||||
+ BX_DEBUG(("Xkeyb:orig_compat %s\n",orig_compat));
|
||||
+ }
|
||||
+ XkbFreeKeyboard(bx_xkb_orig,XkbAllComponentsMask,True);
|
||||
+ } else {
|
||||
+ BX_PANIC(("Xkeyb:Could not load keyboard description\n"));
|
||||
+ }
|
||||
+
|
||||
+ /* Now change symbols to US-layout */
|
||||
+ kcomp.keymap = NULL;
|
||||
+ kcomp.keycodes = NULL;
|
||||
+ kcomp.types = NULL;
|
||||
+ kcomp.compat = NULL;
|
||||
+ kcomp.symbols = bx_symbols;
|
||||
+ kcomp.geometry = NULL;
|
||||
+ bx_xkb = NULL;
|
||||
+ bx_xkb = XkbGetKeyboardByName(bx_x_display,XkbUseCoreKbd, &kcomp,XkbGBN_AllComponentsMask,XkbGBN_AllComponentsMask,True);
|
||||
+ if (!bx_xkb)
|
||||
+ BX_ERROR(("Xkeyb:Could not load us-symbols\n"));
|
||||
+
|
||||
+ /* Finally restore original keyboard layout */
|
||||
+ kcomp.keymap = NULL;
|
||||
+ kcomp.keycodes = orig_keycodes;
|
||||
+ kcomp.types = orig_types;
|
||||
+ kcomp.compat = orig_compat;
|
||||
+ kcomp.symbols = orig_symbols;
|
||||
+ kcomp.geometry = NULL;
|
||||
+ bx_xkb_orig = NULL;
|
||||
+ bx_xkb_orig = XkbGetKeyboardByName(bx_x_display,XkbUseCoreKbd, &kcomp,XkbGBN_AllComponentsMask,XkbGBN_AllComponentsMask,True);
|
||||
+
|
||||
+ if (bx_xkb_orig) {
|
||||
+ /* Only needed to check if original keyboard is proper restored */
|
||||
+ if (XkbGetNames(bx_x_display,XkbAllNamesMask,bx_xkb_orig)!=Success) {
|
||||
+ BX_PANIC(("Xkeyb:Could not load names\n"));
|
||||
+ } else {
|
||||
+ tmp = XGetAtomName(bx_x_display,bx_xkb_orig->names->symbols);
|
||||
+ orig_symbols = (char *) malloc(strlen(tmp));
|
||||
+ sprintf(orig_symbols, "%s", tmp);
|
||||
+
|
||||
+ tmp = XGetAtomName(bx_x_display,bx_xkb_orig->names->keycodes);
|
||||
+ orig_keycodes = (char *) malloc(strlen(tmp));
|
||||
+ sprintf(orig_keycodes, "%s", tmp);
|
||||
+
|
||||
+ tmp = XGetAtomName(bx_x_display,bx_xkb_orig->names->types);
|
||||
+ orig_types = (char *) malloc(strlen(tmp));
|
||||
+ sprintf(orig_types, "%s", tmp);
|
||||
+
|
||||
+ tmp = XGetAtomName(bx_x_display,bx_xkb_orig->names->compat);
|
||||
+ orig_compat = (char *) malloc(strlen(tmp));
|
||||
+ sprintf(orig_compat, "%s", tmp);
|
||||
+
|
||||
+ BX_DEBUG(("Xkeyb:restored_symbols %s\n",orig_symbols));
|
||||
+ BX_DEBUG(("Xkeyb:restored_keycodes %s\n",orig_keycodes));
|
||||
+ BX_DEBUG(("Xkeyb:restored_types %s\n",orig_types));
|
||||
+ BX_DEBUG(("Xkeyb:restored_compat %s\n",orig_compat));
|
||||
+ }
|
||||
+ XkbFreeKeyboard(bx_xkb_orig,XkbAllComponentsMask,True);
|
||||
+ } else {
|
||||
+ BX_PANIC(("Xkeyb:Cannot restore previous keyboard\n"));
|
||||
+ }
|
||||
+
|
||||
+ free(orig_symbols);
|
||||
+ free(orig_keycodes);
|
||||
+ free(orig_types);
|
||||
+ free(orig_compat);
|
||||
+}
|
||||
+#endif
|
||||
|
||||
void
|
||||
load_font(void)
|
||||
@@ -533,10 +668,14 @@
|
||||
XEvent report;
|
||||
XKeyEvent *key_event;
|
||||
KeySym keysym;
|
||||
+#ifdef NEW_KEYBOARD
|
||||
+ unsigned int mods_rtrn;
|
||||
+#else
|
||||
XComposeStatus compose;
|
||||
char buffer[MAX_MAPPED_STRING_LENGTH];
|
||||
int bufsize = MAX_MAPPED_STRING_LENGTH;
|
||||
int charcount;
|
||||
+#endif
|
||||
Boolean mouse_update;
|
||||
|
||||
|
||||
@@ -679,13 +818,23 @@
|
||||
|
||||
case KeyPress:
|
||||
key_event = (XKeyEvent *) &report;
|
||||
+#ifdef NEW_KEYBOARD
|
||||
+ /* Now get keysym from virtual US-keyboard */
|
||||
+ XkbTranslateKeyCode(bx_xkb, key_event->keycode, 0, &mods_rtrn, &keysym);
|
||||
+#else
|
||||
charcount = XLookupString(key_event, buffer, bufsize, &keysym, &compose);
|
||||
+#endif
|
||||
xkeypress(keysym, 0);
|
||||
break;
|
||||
|
||||
case KeyRelease:
|
||||
key_event = (XKeyEvent *) &report;
|
||||
+#ifdef NEW_KEYBOARD
|
||||
+ /* Now get keysym from virtual US-keyboard */
|
||||
+ XkbTranslateKeyCode(bx_xkb, key_event->keycode, 0, &mods_rtrn, &keysym);
|
||||
+#else
|
||||
charcount = XLookupString(key_event, buffer, bufsize, &keysym, &compose);
|
||||
+#endif
|
||||
xkeypress(keysym, 1);
|
||||
break;
|
||||
|
||||
@@ -792,9 +941,12 @@
|
||||
// correspond to the ascii characters space .. tilde
|
||||
// are in consequtive order.
|
||||
if ((keysym >= XK_space) && (keysym <= XK_asciitilde)) {
|
||||
- key_event = ascii_to_key_event[keysym - XK_space];
|
||||
+ if ((keysym == XK_less) || (keysym == XK_greater)) {
|
||||
+ key_event = BX_KEY_LSGT;
|
||||
+ } else {
|
||||
+ key_event = ascii_to_key_event[keysym - XK_space];
|
||||
}
|
||||
- else switch (keysym) {
|
||||
+ } else switch (keysym) {
|
||||
case XK_KP_1:
|
||||
#ifdef XK_KP_End
|
||||
case XK_KP_End:
|
||||
@@ -899,6 +1051,7 @@
|
||||
case XK_Caps_Lock: key_event = BX_KEY_CAPS_LOCK; break;
|
||||
case XK_Num_Lock: key_event = BX_KEY_NUM_LOCK; break;
|
||||
case XK_Alt_L: key_event = BX_KEY_ALT_L; break;
|
||||
+ case XK_Mode_switch: key_event = BX_KEY_ALT_R; break;
|
||||
|
||||
case XK_Insert: key_event = BX_KEY_INSERT; break;
|
||||
case XK_Home: key_event = BX_KEY_HOME; break;
|
||||
diff -urN bochs/iodev/keyboard.cc bochs/iodev/keyboard.cc
|
||||
--- bochs/iodev/keyboard.cc Tue Jun 12 19:30:11 2001
|
||||
+++ bochs/iodev/keyboard.cc Mon Jul 2 14:51:44 2001
|
||||
@@ -695,7 +695,8 @@
|
||||
case BX_KEY_F10: scancode = 0x44; break;
|
||||
case BX_KEY_F11: scancode = 0x57; break;
|
||||
case BX_KEY_F12: scancode = 0x58; break;
|
||||
-
|
||||
+ case BX_KEY_LSGT: scancode = 0x56; break;
|
||||
+
|
||||
default:
|
||||
BX_DEBUG(( "bx_keyb_c::gen_scancode : Unhandled %u\n",
|
||||
(unsigned) key));
|
@ -1,345 +0,0 @@
|
||||
----------------------------------------------------------------------
|
||||
Patch name: patch.memleaks-tominac
|
||||
Author: Darko Tominac <darko.tominac@zg.tel.hr>
|
||||
Date: Fri, 21 Dec 2001 19:22:48 +0100
|
||||
|
||||
Detailed description:
|
||||
I am new to Bochs, but I have done some testing with
|
||||
Numega's BoundsChecker and have found (and fixed) some bugs
|
||||
and memory leaks.
|
||||
|
||||
Bryce took the modified files, edited them a bit, and made
|
||||
it into this patch.
|
||||
|
||||
Volker Ruppert added 'virtual' to the destructors.
|
||||
|
||||
Patch was created with:
|
||||
cvs diff -u
|
||||
Apply patch to what version:
|
||||
cvs checked out on DATE, release version VER
|
||||
Instructions:
|
||||
To patch, go to main bochs directory.
|
||||
Type "patch -p0 < THIS_PATCH_FILE".
|
||||
----------------------------------------------------------------------
|
||||
Index: logio.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/logio.cc,v
|
||||
retrieving revision 1.14
|
||||
diff -u -b -r1.14 logio.cc
|
||||
--- logio.cc 2001/12/08 18:08:24 1.14
|
||||
+++ logio.cc 2001/12/21 19:26:23
|
||||
@@ -195,9 +195,10 @@
|
||||
|
||||
logfunctions::logfunctions(void)
|
||||
{
|
||||
+ prefix = NULL;
|
||||
put(" ");
|
||||
settype(GENLOG);
|
||||
- if(io == NULL && Allocio == 0) {
|
||||
+ if (io == NULL && Allocio == 0) {
|
||||
Allocio = 1;
|
||||
io = new iofunc_t(stderr);
|
||||
}
|
||||
@@ -210,6 +211,7 @@
|
||||
|
||||
logfunctions::logfunctions(iofunc_t *iofunc)
|
||||
{
|
||||
+ prefix = NULL;
|
||||
put(" ");
|
||||
settype(GENLOG);
|
||||
setio(iofunc);
|
||||
@@ -221,6 +223,16 @@
|
||||
|
||||
logfunctions::~logfunctions(void)
|
||||
{
|
||||
+ if (io != NULL)
|
||||
+ {
|
||||
+ delete io;
|
||||
+ io = NULL;
|
||||
+ }
|
||||
+ if ( this->prefix )
|
||||
+ {
|
||||
+ free(this->prefix);
|
||||
+ this->prefix = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
||||
@@ -238,6 +250,16 @@
|
||||
char *tmpbuf;
|
||||
tmpbuf=strdup("[ ]");// if we ever have more than 32 chars,
|
||||
// we need to rethink this
|
||||
+
|
||||
+ if ( tmpbuf == NULL)
|
||||
+ {
|
||||
+ return ; /* allocation not successful */
|
||||
+ }
|
||||
+ if ( this->prefix != NULL )
|
||||
+ {
|
||||
+ free(this->prefix); /* free previously allocated memory */
|
||||
+ this->prefix = NULL;
|
||||
+ }
|
||||
int len=strlen(p);
|
||||
for(int i=1;i<len+1;i++) {
|
||||
tmpbuf[i]=p[i-1];
|
||||
Index: main.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/main.cc,v
|
||||
retrieving revision 1.81
|
||||
diff -u -b -r1.81 main.cc
|
||||
--- main.cc 2001/12/14 17:55:51 1.81
|
||||
+++ main.cc 2001/12/21 19:26:26
|
||||
@@ -1195,13 +1195,15 @@
|
||||
static void
|
||||
parse_line_unformatted(char *context, char *line)
|
||||
{
|
||||
+#define MAX_PARAMS_LEN 40
|
||||
char *ptr;
|
||||
unsigned i, string_i;
|
||||
char string[512];
|
||||
- char *params[40];
|
||||
+ char *params[MAX_PARAMS_LEN];
|
||||
int num_params;
|
||||
Boolean inquotes = 0;
|
||||
|
||||
+ memset(params, 0, sizeof(params));
|
||||
if (line == NULL) return;
|
||||
|
||||
// if passed nothing but whitespace, just return
|
||||
@@ -1247,10 +1249,30 @@
|
||||
}
|
||||
}
|
||||
string[string_i] = '\0';
|
||||
+ if ( params[num_params] != NULL )
|
||||
+ {
|
||||
+ free(params[num_params]);
|
||||
+ params[num_params] = NULL;
|
||||
+ }
|
||||
+ if ( num_params < MAX_PARAMS_LEN )
|
||||
+ {
|
||||
params[num_params++] = strdup (string);
|
||||
ptr = strtok(NULL, ",");
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ BX_PANIC (("too many parameters, max is %d\n", MAX_PARAMS_LEN));
|
||||
+ }
|
||||
+ }
|
||||
parse_line_formatted(context, num_params, ¶ms[0]);
|
||||
+ for (i=0; i < MAX_PARAMS_LEN; i++)
|
||||
+ {
|
||||
+ if ( params[i] != NULL )
|
||||
+ {
|
||||
+ free(params[i]);
|
||||
+ params[i] = NULL;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
Index: state_file.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/state_file.cc,v
|
||||
retrieving revision 1.8
|
||||
diff -u -b -r1.8 state_file.cc
|
||||
--- state_file.cc 2001/10/03 13:10:37 1.8
|
||||
+++ state_file.cc 2001/12/21 19:26:26
|
||||
@@ -128,4 +128,9 @@
|
||||
state_file::~state_file()
|
||||
{
|
||||
BX_DEBUG(("Exit."));
|
||||
+ if ( log != NULL )
|
||||
+ {
|
||||
+ delete log;
|
||||
+ log = NULL;
|
||||
+ }
|
||||
}
|
||||
Index: gui/siminterface.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/gui/siminterface.cc,v
|
||||
retrieving revision 1.36
|
||||
diff -u -b -r1.36 siminterface.cc
|
||||
--- gui/siminterface.cc 2001/12/12 10:38:39 1.36
|
||||
+++ gui/siminterface.cc 2001/12/21 19:26:27
|
||||
@@ -32,6 +32,7 @@
|
||||
int enabled;
|
||||
public:
|
||||
bx_real_sim_c ();
|
||||
+ virtual ~bx_real_sim_c ();
|
||||
virtual int get_init_done () { return init_done; }
|
||||
virtual int set_init_done (int n) { init_done = n; return 0;}
|
||||
virtual int register_param (bx_id id, bx_param_c *it);
|
||||
@@ -127,6 +128,15 @@
|
||||
param_registry = new bx_param_c* [registry_alloc_size];
|
||||
}
|
||||
|
||||
+bx_real_sim_c::~bx_real_sim_c ()
|
||||
+{
|
||||
+ if ( param_registry != NULL )
|
||||
+ {
|
||||
+ delete [] param_registry;
|
||||
+ param_registry = NULL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
int
|
||||
bx_real_sim_c::register_param (bx_id id, bx_param_c *it)
|
||||
{
|
||||
@@ -449,6 +459,26 @@
|
||||
set (initial_val);
|
||||
}
|
||||
|
||||
+bx_param_string_c::~bx_param_string_c ()
|
||||
+{
|
||||
+ if ( this->val != NULL )
|
||||
+ {
|
||||
+ delete [] this->val;
|
||||
+ this->val = NULL;
|
||||
+ }
|
||||
+ if ( this->initial_val != NULL )
|
||||
+ {
|
||||
+ delete [] this->initial_val;
|
||||
+ this->initial_val = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if ( this->options != NULL )
|
||||
+ {
|
||||
+ delete [] this->options;
|
||||
+ this->options = NULL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void
|
||||
bx_param_string_c::reset () {
|
||||
strncpy (this->val, this->initial_val, maxsize);
|
||||
@@ -514,6 +544,30 @@
|
||||
for (int i=0; i<this->size; i++)
|
||||
this->list[i] = init_list[i];
|
||||
init ();
|
||||
+}
|
||||
+
|
||||
+bx_list_c::~bx_list_c()
|
||||
+{
|
||||
+ if (this->list)
|
||||
+ {
|
||||
+ delete [] this->list;
|
||||
+ this->list = NULL;
|
||||
+ }
|
||||
+ if ( this->title != NULL)
|
||||
+ {
|
||||
+ delete this->title;
|
||||
+ this->title = NULL;
|
||||
+ }
|
||||
+ if (this->options != NULL)
|
||||
+ {
|
||||
+ delete this->options;
|
||||
+ this->options = NULL;
|
||||
+ }
|
||||
+ if ( this->choice != NULL )
|
||||
+ {
|
||||
+ delete this->choice;
|
||||
+ this->choice = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
||||
Index: gui/siminterface.h
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/gui/siminterface.h,v
|
||||
retrieving revision 1.29
|
||||
diff -u -b -r1.29 siminterface.h
|
||||
--- gui/siminterface.h 2001/12/14 17:54:58 1.29
|
||||
+++ gui/siminterface.h 2001/12/21 19:26:27
|
||||
@@ -229,6 +229,7 @@
|
||||
char *description,
|
||||
char *initial_val,
|
||||
int maxsize=-1);
|
||||
+ virtual ~bx_param_string_c ();
|
||||
void reset ();
|
||||
void set_handler (param_string_event_handler handler);
|
||||
Bit32s get (char *buf, int len);
|
||||
@@ -274,6 +275,7 @@
|
||||
} bx_listopt_bits;
|
||||
//bx_list_c (bx_id id, int maxsize);
|
||||
bx_list_c (bx_id id, char *name, char *description, bx_param_c **init_list);
|
||||
+ virtual ~bx_list_c();
|
||||
void add (bx_param_c *param);
|
||||
bx_param_c *get (int index);
|
||||
bx_param_num_c *get_options () { return options; }
|
||||
Index: gui/win32.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/gui/win32.cc,v
|
||||
retrieving revision 1.21
|
||||
diff -u -b -r1.21 win32.cc
|
||||
--- gui/win32.cc 2001/12/13 18:36:29 1.21
|
||||
+++ gui/win32.cc 2001/12/21 19:26:30
|
||||
@@ -855,7 +855,8 @@
|
||||
for (unsigned i=0; i<ydim * xdim/8; i++)
|
||||
data[i] = reverse_bitorder(bmap[i]);
|
||||
SetBitmapBits(bx_bitmaps[bx_bitmap_entries].bmap, ydim * xdim/8, data);
|
||||
- free(data);
|
||||
+ delete [] data;
|
||||
+ data = NULL;
|
||||
|
||||
bx_bitmaps[bx_bitmap_entries].xdim = xdim;
|
||||
bx_bitmaps[bx_bitmap_entries].ydim = ydim;
|
||||
Index: iodev/harddrv.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/iodev/harddrv.cc,v
|
||||
retrieving revision 1.41
|
||||
diff -u -b -r1.41 harddrv.cc
|
||||
--- iodev/harddrv.cc 2001/11/12 03:34:45 1.41
|
||||
+++ iodev/harddrv.cc 2001/12/21 19:26:34
|
||||
@@ -85,6 +85,8 @@
|
||||
|
||||
bx_hard_drive_c::bx_hard_drive_c(void)
|
||||
{
|
||||
+ s[0].hard_drive = NULL;
|
||||
+ s[1].hard_drive = NULL;
|
||||
put("HD");
|
||||
settype(HDLOG);
|
||||
#if EXTERNAL_DISK_SIMULATOR
|
||||
@@ -106,12 +108,22 @@
|
||||
|
||||
bx_hard_drive_c::~bx_hard_drive_c(void)
|
||||
{
|
||||
- // nothing for now
|
||||
BX_DEBUG(("Exit."));
|
||||
+ if ( s[0].hard_drive != NULL ) /* DT 17.12.2001 21:55 */
|
||||
+ {
|
||||
+ delete s[0].hard_drive;
|
||||
+ s[0].hard_drive = NULL;
|
||||
+ }
|
||||
+ if ( s[1].hard_drive != NULL )
|
||||
+ {
|
||||
+ delete s[1].hard_drive;
|
||||
+ s[1].hard_drive = NULL; /* DT 17.12.2001 21:56 */
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
|
||||
+
|
||||
void
|
||||
bx_hard_drive_c::init(bx_devices_c *d, bx_cmos_c *cmos)
|
||||
{
|
||||
Index: iodev/unmapped.cc
|
||||
===================================================================
|
||||
RCS file: /cvsroot/bochs/bochs/iodev/unmapped.cc,v
|
||||
retrieving revision 1.13
|
||||
diff -u -b -r1.13 unmapped.cc
|
||||
--- iodev/unmapped.cc 2001/10/03 13:10:38 1.13
|
||||
+++ iodev/unmapped.cc 2001/12/21 19:26:34
|
||||
@@ -52,7 +52,11 @@
|
||||
|
||||
bx_unmapped_c::~bx_unmapped_c(void)
|
||||
{
|
||||
- // nothing for now
|
||||
+ if ( bioslog != NULL ) /* DT 17.12.2001 21:32 */
|
||||
+ {
|
||||
+ delete bioslog;
|
||||
+ bioslog = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
Loading…
x
Reference in New Issue
Block a user