. Added a keyboard_type option in configuration file

. Modified answer of keyboard controler to a keyboard-identify command
  depending on keyboard_type
. Added the keyboard_type option in bochsrc man page
This commit is contained in:
Christophe Bothamy 2001-12-12 10:43:36 +00:00
parent d7482737a9
commit 70b1367dd1
2 changed files with 39 additions and 3 deletions

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: bochs.h,v 1.55 2001-11-12 18:28:07 bdenney Exp $ // $Id: bochs.h,v 1.56 2001-12-12 10:43:36 cbothamy Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2001 MandrakeSoft S.A. // Copyright (C) 2001 MandrakeSoft S.A.
@ -593,6 +593,10 @@ typedef struct {
#define BX_BOOT_FLOPPYA 0 #define BX_BOOT_FLOPPYA 0
#define BX_BOOT_DISKC 1 #define BX_BOOT_DISKC 1
#define BX_KBD_XT_TYPE 0
#define BX_KBD_AT_TYPE 1
#define BX_KBD_MF_TYPE 2
typedef struct { typedef struct {
bx_floppy_options floppya; bx_floppy_options floppya;
bx_floppy_options floppyb; bx_floppy_options floppyb;
@ -608,6 +612,7 @@ typedef struct {
bx_param_num_c *Obootdrive; //0=floppya, 0x80=diskc bx_param_num_c *Obootdrive; //0=floppya, 0x80=diskc
bx_param_num_c *Ovga_update_interval; bx_param_num_c *Ovga_update_interval;
bx_param_num_c *Okeyboard_serial_delay; bx_param_num_c *Okeyboard_serial_delay;
bx_param_enum_c *Okeyboard_type;
bx_param_num_c *Ofloppy_command_delay; bx_param_num_c *Ofloppy_command_delay;
bx_param_num_c *Oips; bx_param_num_c *Oips;
bx_param_bool_c *Omouse_enabled; bx_param_bool_c *Omouse_enabled;

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: main.cc,v 1.79 2001-11-12 02:35:09 bdenney Exp $ // $Id: main.cc,v 1.80 2001-12-12 10:43:36 cbothamy Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2001 MandrakeSoft S.A. // Copyright (C) 2001 MandrakeSoft S.A.
@ -82,6 +82,7 @@ bx_options_t bx_options = {
NULL, // boot drive NULL, // boot drive
NULL, // vga update interval NULL, // vga update interval
NULL, // default keyboard serial path delay (usec) NULL, // default keyboard serial path delay (usec)
NULL, // default keyboard type
NULL, // default floppy command delay (usec) NULL, // default floppy command delay (usec)
NULL, // ips NULL, // ips
NULL, // default mouse_enabled NULL, // default mouse_enabled
@ -707,7 +708,6 @@ void bx_init_options ()
bx_options.load32bitOSImage.OwhichOS->set_handler (bx_param_handler); bx_options.load32bitOSImage.OwhichOS->set_handler (bx_param_handler);
bx_options.load32bitOSImage.OwhichOS->set (Load32bitOSNone); bx_options.load32bitOSImage.OwhichOS->set (Load32bitOSNone);
// other // other
bx_options.Okeyboard_serial_delay = new bx_param_num_c (BXP_KBD_SERIAL_DELAY, bx_options.Okeyboard_serial_delay = new bx_param_num_c (BXP_KBD_SERIAL_DELAY,
"keyboard_serial_delay", "keyboard_serial_delay",
@ -736,6 +736,17 @@ void bx_init_options ()
"Start time for Bochs CMOS clock, used if you really want two runs to be identical (cosimulation)", "Start time for Bochs CMOS clock, used if you really want two runs to be identical (cosimulation)",
0, BX_MAX_INT, 0, BX_MAX_INT,
0); 0);
// keyboard type
bx_options.Okeyboard_type = new bx_param_enum_c (BXP_KBD_TYPE,
"Keyboard type",
"Keyboard type",
keyboard_type_names,
BX_KBD_MF_TYPE,
BX_KBD_XT_TYPE);
bx_options.Okeyboard_type->set_format ("Keyboard type: %s");
bx_options.Okeyboard_type->set_ask_format ("Enter keyboard type: [%s] ");
bx_param_c *other_init_list[] = { bx_param_c *other_init_list[] = {
bx_options.Okeyboard_serial_delay, bx_options.Okeyboard_serial_delay,
bx_options.Ofloppy_command_delay, bx_options.Ofloppy_command_delay,
@ -744,6 +755,7 @@ void bx_init_options ()
bx_options.cmos.Opath, bx_options.cmos.Opath,
bx_options.cmos.Otime0, bx_options.cmos.Otime0,
SIM->get_param (BXP_LOAD32BITOS), SIM->get_param (BXP_LOAD32BITOS),
bx_options.Okeyboard_type,
NULL NULL
}; };
menu = new bx_list_c (BXP_MENU_MISC, "Configure Everything Else", "", other_init_list); menu = new bx_list_c (BXP_MENU_MISC, "Configure Everything Else", "", other_init_list);
@ -1773,6 +1785,23 @@ parse_line_formatted(char *context, int num_params, char *params[])
bx_options.load32bitOSImage.Oinitrd->set (strdup(&params[4][7])); bx_options.load32bitOSImage.Oinitrd->set (strdup(&params[4][7]));
} }
} }
else if (!strcmp(params[0], "keyboard_type")) {
if (num_params != 2) {
BX_PANIC(("%s: keyboard_type directive: wrong # args.", context));
}
if(strcmp(params[1],"xt")==0){
bx_options.Okeyboard_type->set (BX_KBD_XT_TYPE);
}
else if(strcmp(params[1],"at")==0){
bx_options.Okeyboard_type->set (BX_KBD_AT_TYPE);
}
else if(strcmp(params[1],"mf")==0){
bx_options.Okeyboard_type->set (BX_KBD_MF_TYPE);
}
else{
BX_PANIC(("%s: keyboard_type directive: wrong arg %s.", context,params[1]));
}
}
else { else {
BX_PANIC(( "%s: directive '%s' not understood", context, params[0])); BX_PANIC(( "%s: directive '%s' not understood", context, params[0]));
@ -1994,6 +2023,8 @@ bx_write_configuration (char *rc, int overwrite)
fprintf (fp, "newharddrivesupport: enabled=%d\n", bx_options.OnewHardDriveSupport->get ()); fprintf (fp, "newharddrivesupport: enabled=%d\n", bx_options.OnewHardDriveSupport->get ());
bx_write_loader_options (fp, &bx_options.load32bitOSImage); bx_write_loader_options (fp, &bx_options.load32bitOSImage);
bx_write_log_options (fp, &bx_options.log); bx_write_log_options (fp, &bx_options.log);
fprintf (fp, "keyboard_type: %s\n", bx_options.Okeyboard_type->get ()==BX_KBD_XT_TYPE?"xt":
bx_options.Okeyboard_type->get ()==BX_KBD_AT_TYPE?"at":"mf");
fclose (fp); fclose (fp);
return 0; return 0;
} }