- upgrade bx_param_num to use 64 bit values, so that I could make
bx_shadow_num_c able to handle pointers to 64 bit values. This allows x86-64 and wxWindows to coexist. - I had a number of duplicate constructors for bx_shadow_num_c, with an without the description arg. I eliminated the ones that had no description, and also removed the min/max arg from all. I still need a bunch of constructors though, for Bit64u*, Bit64s*, Bit32u*, Bit32s*, Bit16u*, Bit16s*, Bit8u*, Bit8s*. Having all these constructors allows us to write new bx_shadow_num (bxid, name, description, &value) for basically any integer variable. They are all handled by the same class. - these changes led to minor touchups in cpu/init.cc and iodev/keyboard.cc - modified: configure main.cc cpu/init.cc iodev/keyboard.cc gui/siminterface.cc gui/siminterface.h
This commit is contained in:
parent
ac9f370975
commit
f6c637aa8a
bochs
1
bochs/configure
vendored
1
bochs/configure
vendored
@ -9323,7 +9323,6 @@ EOF
|
||||
echo library. This combination is known to trigger problems with SIGINT
|
||||
echo handling. Please run configure again with --disable-readline to
|
||||
echo correct this.
|
||||
exit 1
|
||||
fi
|
||||
case $target in
|
||||
*-pc-windows* | *-cygwin* | *-mingw32*)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: init.cc,v 1.37 2002-10-04 17:04:33 kevinlawton Exp $
|
||||
// $Id: init.cc,v 1.38 2002-10-16 19:39:27 bdenney Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -84,8 +84,8 @@ BX_CPU_C::BX_CPU_C()
|
||||
|
||||
|
||||
// implement get/set handler for parameters that need unusual set/get
|
||||
static Bit32s
|
||||
cpu_param_handler (bx_param_c *param, int set, Bit32s val)
|
||||
static Bit64s
|
||||
cpu_param_handler (bx_param_c *param, int set, Bit64s val)
|
||||
{
|
||||
bx_id id = param->get_id ();
|
||||
if (set) {
|
||||
@ -166,7 +166,7 @@ cpu_param_handler (bx_param_c *param, int set, Bit32s val)
|
||||
|
||||
void BX_CPU_C::init(BX_MEM_C *addrspace)
|
||||
{
|
||||
BX_DEBUG(( "Init $Id: init.cc,v 1.37 2002-10-04 17:04:33 kevinlawton Exp $"));
|
||||
BX_DEBUG(( "Init $Id: init.cc,v 1.38 2002-10-16 19:39:27 bdenney Exp $"));
|
||||
// BX_CPU_C constructor
|
||||
BX_CPU_THIS_PTR set_INTR (0);
|
||||
#if BX_SUPPORT_APIC
|
||||
@ -339,7 +339,7 @@ void BX_CPU_C::init(BX_MEM_C *addrspace)
|
||||
const char *oldfmt = bx_param_num_c::set_default_format (fmt32);
|
||||
bx_list_c *list = new bx_list_c (BXP_CPU_PARAMETERS, "CPU State", "", 60);
|
||||
#define DEFPARAM_NORMAL(name,field) \
|
||||
list->add (new bx_shadow_num_c (BXP_CPU_##name, #name, &(field)))
|
||||
list->add (new bx_shadow_num_c (BXP_CPU_##name, #name, "", &(field)))
|
||||
|
||||
|
||||
DEFPARAM_NORMAL (EAX, EAX);
|
||||
@ -378,10 +378,10 @@ void BX_CPU_C::init(BX_MEM_C *addrspace)
|
||||
param->set_format (fmt16);
|
||||
#define DEFPARAM_GLOBAL_SEG_REG(name,field) \
|
||||
list->add (param = new bx_shadow_num_c (BXP_CPU_##name##_BASE, \
|
||||
#name" base", \
|
||||
#name" base", "", \
|
||||
& BX_CPU_THIS_PTR field.base)); \
|
||||
list->add (param = new bx_shadow_num_c (BXP_CPU_##name##_LIMIT, \
|
||||
#name" limit", \
|
||||
#name" limit", "", \
|
||||
& BX_CPU_THIS_PTR field.limit));
|
||||
|
||||
DEFPARAM_SEG_REG(CS);
|
||||
@ -397,7 +397,7 @@ void BX_CPU_C::init(BX_MEM_C *addrspace)
|
||||
#undef DEFPARAM_SEGREG
|
||||
|
||||
#if BX_SUPPORT_X86_64==0
|
||||
list->add (param = new bx_shadow_num_c (BXP_CPU_EFLAGS, "EFLAGS",
|
||||
list->add (param = new bx_shadow_num_c (BXP_CPU_EFLAGS, "EFLAGS", "",
|
||||
&BX_CPU_THIS_PTR eflags.val32));
|
||||
#endif
|
||||
|
||||
@ -432,9 +432,10 @@ void BX_CPU_C::init(BX_MEM_C *addrspace)
|
||||
list->add (
|
||||
param = new bx_shadow_num_c (
|
||||
BXP_CPU_EFLAGS_IOPL,
|
||||
"IOPL", "", 0, 3,
|
||||
"IOPL", "",
|
||||
&eflags.val32,
|
||||
12, 13));
|
||||
param->set_range (0, 3);
|
||||
#if BX_SUPPORT_X86_64==0
|
||||
param->set_format ("%d");
|
||||
#endif
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: siminterface.cc,v 1.72 2002-10-14 13:31:25 bdenney Exp $
|
||||
// $Id: siminterface.cc,v 1.73 2002-10-16 19:39:27 bdenney Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// See siminterface.h for description of the siminterface concept.
|
||||
@ -689,7 +689,7 @@ const char* bx_param_c::set_default_format (const char *f) {
|
||||
bx_param_num_c::bx_param_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s min, Bit32s max, Bit32s initial_val)
|
||||
Bit64s min, Bit64s max, Bit64s initial_val)
|
||||
: bx_param_c (id, name, description)
|
||||
{
|
||||
set_type (BXT_PARAM_NUM);
|
||||
@ -727,7 +727,12 @@ bx_param_num_c::set_handler (param_event_handler handler)
|
||||
//set (get ());
|
||||
}
|
||||
|
||||
Bit32s
|
||||
void bx_param_num_c::set_dependent_list (bx_list_c *l) {
|
||||
dependent_list = l;
|
||||
update_dependents ();
|
||||
}
|
||||
|
||||
Bit64s
|
||||
bx_param_num_c::get ()
|
||||
{
|
||||
if (handler) {
|
||||
@ -740,7 +745,7 @@ bx_param_num_c::get ()
|
||||
}
|
||||
|
||||
void
|
||||
bx_param_num_c::set (Bit32s newval)
|
||||
bx_param_num_c::set (Bit64s newval)
|
||||
{
|
||||
if (handler) {
|
||||
// the handler can override the new value and/or perform some side effect
|
||||
@ -755,6 +760,16 @@ bx_param_num_c::set (Bit32s newval)
|
||||
if (dependent_list != NULL) update_dependents ();
|
||||
}
|
||||
|
||||
void bx_param_num_c::set_range (Bit64u min, Bit64u max)
|
||||
{
|
||||
this->min = min;
|
||||
this->max = max;
|
||||
}
|
||||
|
||||
void bx_param_num_c::set_initial_val (Bit64s initial_val) {
|
||||
this->val.number = this->initial_val = initial_val;
|
||||
}
|
||||
|
||||
void bx_param_num_c::update_dependents ()
|
||||
{
|
||||
if (dependent_list) {
|
||||
@ -774,11 +789,40 @@ bx_param_num_c::set_enabled (int en)
|
||||
update_dependents ();
|
||||
}
|
||||
|
||||
// Signed 64 bit
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit64s *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, description, min, max, *ptr_to_real_val)
|
||||
{
|
||||
this->varsize = 16;
|
||||
this->lowbit = lowbit;
|
||||
this->mask = (1 << (highbit - lowbit)) - 1;
|
||||
val.p64bit = ptr_to_real_val;
|
||||
}
|
||||
|
||||
// Unsigned 64 bit
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit64u *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, description, min, max, *ptr_to_real_val)
|
||||
{
|
||||
this->varsize = 16;
|
||||
this->lowbit = lowbit;
|
||||
this->mask = (1 << (highbit - lowbit)) - 1;
|
||||
val.p64bit = (Bit64s*) ptr_to_real_val;
|
||||
}
|
||||
|
||||
// Signed 32 bit
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s min,
|
||||
Bit32s max,
|
||||
Bit32s *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
@ -790,10 +834,11 @@ bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
val.p32bit = ptr_to_real_val;
|
||||
}
|
||||
|
||||
// Unsigned 32 bit
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s min, Bit32s max, Bit32u *ptr_to_real_val,
|
||||
Bit32u *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, description, min, max, *ptr_to_real_val)
|
||||
@ -804,38 +849,14 @@ bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
val.p32bit = (Bit32s*) ptr_to_real_val;
|
||||
}
|
||||
|
||||
// Signed 16 bit
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
Bit32u *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, "", BX_MIN_INT, BX_MAX_INT, *ptr_to_real_val)
|
||||
{
|
||||
this->varsize = 32;
|
||||
this->lowbit = lowbit;
|
||||
this->mask = (1 << (highbit - lowbit)) - 1;
|
||||
val.p32bit = (Bit32s*) ptr_to_real_val;
|
||||
}
|
||||
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
Bit16u *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, "", BX_MIN_INT, BX_MAX_INT, *ptr_to_real_val)
|
||||
{
|
||||
this->varsize = 16;
|
||||
this->lowbit = lowbit;
|
||||
this->mask = (1 << (highbit - lowbit)) - 1;
|
||||
val.p16bit = (Bit16s*) ptr_to_real_val;
|
||||
}
|
||||
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit16s *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, "", BX_MIN_INT, BX_MAX_INT, *ptr_to_real_val)
|
||||
: bx_param_num_c (id, name, description, min, max, *ptr_to_real_val)
|
||||
{
|
||||
this->varsize = 16;
|
||||
this->lowbit = lowbit;
|
||||
@ -843,13 +864,60 @@ bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
val.p16bit = ptr_to_real_val;
|
||||
}
|
||||
|
||||
Bit32s
|
||||
// Unsigned 16 bit
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit16u *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, description, min, max, *ptr_to_real_val)
|
||||
{
|
||||
this->varsize = 16;
|
||||
this->lowbit = lowbit;
|
||||
this->mask = (1 << (highbit - lowbit)) - 1;
|
||||
val.p16bit = (Bit16s*) ptr_to_real_val;
|
||||
}
|
||||
|
||||
// Signed 8 bit
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit8s *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, description, min, max, *ptr_to_real_val)
|
||||
{
|
||||
this->varsize = 16;
|
||||
this->lowbit = lowbit;
|
||||
this->mask = (1 << (highbit - lowbit)) - 1;
|
||||
val.p8bit = ptr_to_real_val;
|
||||
}
|
||||
|
||||
// Unsigned 8 bit
|
||||
bx_shadow_num_c::bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit8u *ptr_to_real_val,
|
||||
Bit8u highbit,
|
||||
Bit8u lowbit)
|
||||
: bx_param_num_c (id, name, description, min, max, *ptr_to_real_val)
|
||||
{
|
||||
this->varsize = 8;
|
||||
this->lowbit = lowbit;
|
||||
this->mask = (1 << (highbit - lowbit)) - 1;
|
||||
val.p8bit = (Bit8s*) ptr_to_real_val;
|
||||
}
|
||||
|
||||
Bit64s
|
||||
bx_shadow_num_c::get () {
|
||||
Bit32u current;
|
||||
Bit64u current;
|
||||
switch (varsize) {
|
||||
case 8: current = *(val.p8bit); break;
|
||||
case 16: current = *(val.p16bit); break;
|
||||
case 32: current = *(val.p32bit); break;
|
||||
case 64: current = *(val.p64bit); break;
|
||||
default: BX_PANIC(("unsupported varsize %d", varsize));
|
||||
}
|
||||
current = (current >> lowbit) & mask;
|
||||
if (handler) {
|
||||
@ -862,9 +930,9 @@ bx_shadow_num_c::get () {
|
||||
}
|
||||
|
||||
void
|
||||
bx_shadow_num_c::set (Bit32s newval)
|
||||
bx_shadow_num_c::set (Bit64s newval)
|
||||
{
|
||||
Bit32u tmp;
|
||||
Bit64u tmp;
|
||||
if (newval < min || newval > max)
|
||||
BX_PANIC (("numerical parameter %s was set to %d, which is out of range %d to %d", get_name (), newval, min, max));
|
||||
switch (varsize) {
|
||||
@ -883,6 +951,13 @@ bx_shadow_num_c::set (Bit32s newval)
|
||||
tmp |= (newval & mask) << lowbit;
|
||||
*(val.p32bit) = tmp;
|
||||
break;
|
||||
case 64:
|
||||
tmp = (*(val.p64bit) >> lowbit) & mask;
|
||||
tmp |= (newval & mask) << lowbit;
|
||||
*(val.p64bit) = tmp;
|
||||
break;
|
||||
default:
|
||||
BX_PANIC(("unsupported varsize %d", varsize));
|
||||
}
|
||||
if (handler) {
|
||||
// the handler can override the new value and/or perform some side effect
|
||||
@ -893,7 +968,7 @@ bx_shadow_num_c::set (Bit32s newval)
|
||||
bx_param_bool_c::bx_param_bool_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s initial_val)
|
||||
Bit64s initial_val)
|
||||
: bx_param_num_c (id, name, description, 0, 1, initial_val)
|
||||
{
|
||||
set_type (BXT_PARAM_BOOL);
|
||||
@ -902,19 +977,20 @@ bx_param_bool_c::bx_param_bool_c (bx_id id,
|
||||
|
||||
bx_shadow_bool_c::bx_shadow_bool_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Boolean *ptr_to_real_val,
|
||||
Bit8u bitnum)
|
||||
: bx_param_bool_c (id, name, "", (Bit32s) *ptr_to_real_val)
|
||||
: bx_param_bool_c (id, name, description, (Bit64s) *ptr_to_real_val)
|
||||
{
|
||||
val.pbool = ptr_to_real_val;
|
||||
this->bitnum = bitnum;
|
||||
}
|
||||
|
||||
Bit32s
|
||||
Bit64s
|
||||
bx_shadow_bool_c::get () {
|
||||
if (handler) {
|
||||
// the handler can decide what value to return and/or do some side effect
|
||||
Bit32s ret = (*handler)(this, 0, (Bit32s) *(val.pbool));
|
||||
Bit64s ret = (*handler)(this, 0, (Bit64s) *(val.pbool));
|
||||
return (ret>>bitnum) & 1;
|
||||
} else {
|
||||
// just return the value
|
||||
@ -923,10 +999,10 @@ bx_shadow_bool_c::get () {
|
||||
}
|
||||
|
||||
void
|
||||
bx_shadow_bool_c::set (Bit32s newval)
|
||||
bx_shadow_bool_c::set (Bit64s newval)
|
||||
{
|
||||
// only change the bitnum bit
|
||||
Bit32s tmp = (newval&1) << bitnum;
|
||||
Bit64s tmp = (newval&1) << bitnum;
|
||||
*(val.pbool) &= ~tmp;
|
||||
*(val.pbool) |= tmp;
|
||||
if (handler) {
|
||||
@ -939,8 +1015,8 @@ bx_param_enum_c::bx_param_enum_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
char **choices,
|
||||
Bit32s initial_val,
|
||||
Bit32s value_base)
|
||||
Bit64s initial_val,
|
||||
Bit64s value_base)
|
||||
: bx_param_num_c (id, name, description, value_base, BX_MAX_INT, initial_val)
|
||||
{
|
||||
set_type (BXT_PARAM_ENUM);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: siminterface.h,v 1.76 2002-10-06 02:37:28 bdenney Exp $
|
||||
// $Id: siminterface.h,v 1.77 2002-10-16 19:39:27 bdenney Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Before I can describe what this file is for, I have to make the
|
||||
@ -786,7 +786,7 @@ public:
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef Bit32s (*param_event_handler)(class bx_param_c *, int set, Bit32s val);
|
||||
typedef Bit64s (*param_event_handler)(class bx_param_c *, int set, Bit64s val);
|
||||
|
||||
class bx_param_num_c : public bx_param_c {
|
||||
static Bit32u default_base;
|
||||
@ -797,12 +797,13 @@ class bx_param_num_c : public bx_param_c {
|
||||
bx_list_c *dependent_list;
|
||||
void update_dependents ();
|
||||
protected:
|
||||
Bit32s min, max, initial_val;
|
||||
Bit64s min, max, initial_val;
|
||||
union _uval_ {
|
||||
Bit32s number; // used by bx_param_num_c
|
||||
Bit64s number; // used by bx_param_num_c
|
||||
Bit64s *p64bit; // used by bx_shadow_num_c
|
||||
Bit32s *p32bit; // used by bx_shadow_num_c
|
||||
Bit16s *p16bit; // used by bx_shadow_num_c
|
||||
Bit8s *p8bit; // used by bx_shadow_num_c
|
||||
Bit8s *p8bit; // used by bx_shadow_num_c
|
||||
Boolean *pbool; // used by bx_shadow_bool_c
|
||||
} val;
|
||||
param_event_handler handler;
|
||||
@ -811,22 +812,20 @@ public:
|
||||
bx_param_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s min, Bit32s max, Bit32s initial_val);
|
||||
Bit64s min, Bit64s max, Bit64s initial_val);
|
||||
void reset ();
|
||||
void set_handler (param_event_handler handler);
|
||||
virtual bx_list_c *get_dependent_list () { return dependent_list; }
|
||||
void set_dependent_list (bx_list_c *l) {
|
||||
dependent_list = l;
|
||||
update_dependents ();
|
||||
}
|
||||
void set_dependent_list (bx_list_c *l);
|
||||
virtual void set_enabled (int enabled);
|
||||
virtual Bit32s get ();
|
||||
virtual void set (Bit32s val);
|
||||
virtual Bit64s get ();
|
||||
virtual void set (Bit64s val);
|
||||
void set_base (int base) { this->base = base; }
|
||||
void set_initial_val (Bit32s initial_val) { this->val.number = this->initial_val = initial_val;}
|
||||
void set_initial_val (Bit64s initial_val);
|
||||
int get_base () { return base; }
|
||||
Bit32s get_min () { return min; }
|
||||
Bit32s get_max () { return max; }
|
||||
void set_range (Bit64u min, Bit64u max);
|
||||
Bit64s get_min () { return min; }
|
||||
Bit64s get_max () { return max; }
|
||||
static Bit32u set_default_base (Bit32u val);
|
||||
static Bit32u get_default_base () { return default_base; }
|
||||
#if BX_UI_TEXT
|
||||
@ -841,39 +840,60 @@ public:
|
||||
// existing variables as parameters, without have to access it via
|
||||
// set/get methods.
|
||||
class bx_shadow_num_c : public bx_param_num_c {
|
||||
Bit8u varsize; // must be 32, 16, or 8
|
||||
Bit8u varsize; // must be 64, 32, 16, or 8
|
||||
Bit8u lowbit; // range of bits associated with this param
|
||||
Bit32u mask; // mask is ANDed with value before it is returned from get
|
||||
Bit64u mask; // mask is ANDed with value before it is returned from get
|
||||
public:
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s min, Bit32s max, Bit32s *ptr_to_real_val,
|
||||
Bit64s *ptr_to_real_val,
|
||||
Bit8u highbit = 63,
|
||||
Bit8u lowbit = 0);
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit64u *ptr_to_real_val,
|
||||
Bit8u highbit = 63,
|
||||
Bit8u lowbit = 0);
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s *ptr_to_real_val,
|
||||
Bit8u highbit = 31,
|
||||
Bit8u lowbit = 0);
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s min, Bit32s max, Bit32u *ptr_to_real_val,
|
||||
Bit8u highbit = 31,
|
||||
Bit8u lowbit = 0);
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
Bit32u *ptr_to_real_val,
|
||||
Bit8u highbit = 31,
|
||||
Bit8u lowbit = 0);
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit16s *ptr_to_real_val,
|
||||
Bit8u highbit = 15,
|
||||
Bit8u lowbit = 0);
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit16u *ptr_to_real_val,
|
||||
Bit8u highbit = 15,
|
||||
Bit8u lowbit = 0);
|
||||
virtual Bit32s get ();
|
||||
virtual void set (Bit32s val);
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit8s *ptr_to_real_val,
|
||||
Bit8u highbit = 7,
|
||||
Bit8u lowbit = 0);
|
||||
bx_shadow_num_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit8u *ptr_to_real_val,
|
||||
Bit8u highbit = 7,
|
||||
Bit8u lowbit = 0);
|
||||
virtual Bit64s get ();
|
||||
virtual void set (Bit64s val);
|
||||
};
|
||||
|
||||
class bx_param_bool_c : public bx_param_num_c {
|
||||
@ -884,7 +904,7 @@ public:
|
||||
bx_param_bool_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Bit32s initial_val);
|
||||
Bit64s initial_val);
|
||||
#if BX_UI_TEXT
|
||||
virtual void text_print (FILE *fp);
|
||||
virtual int text_ask (FILE *fpin, FILE *fpout);
|
||||
@ -899,10 +919,11 @@ class bx_shadow_bool_c : public bx_param_bool_c {
|
||||
public:
|
||||
bx_shadow_bool_c (bx_id id,
|
||||
char *name,
|
||||
char *description,
|
||||
Boolean *ptr_to_real_val,
|
||||
Bit8u bitnum = 0);
|
||||
virtual Bit32s get ();
|
||||
virtual void set (Bit32s val);
|
||||
virtual Bit64s get ();
|
||||
virtual void set (Bit64s val);
|
||||
};
|
||||
|
||||
|
||||
@ -913,8 +934,8 @@ public:
|
||||
char *name,
|
||||
char *description,
|
||||
char **choices,
|
||||
Bit32s initial_val,
|
||||
Bit32s value_base = 0);
|
||||
Bit64s initial_val,
|
||||
Bit64s value_base = 0);
|
||||
char *get_choice (int n) { return choices[n]; }
|
||||
#if BX_UI_TEXT
|
||||
virtual void text_print (FILE *fp);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: keyboard.cc,v 1.68 2002-10-08 06:14:53 bdenney Exp $
|
||||
// $Id: keyboard.cc,v 1.69 2002-10-16 19:39:27 bdenney Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -70,7 +70,7 @@ bx_keyb_c::bx_keyb_c(void)
|
||||
memset( &s, 0, sizeof(s) );
|
||||
BX_KEY_THIS put("KBD");
|
||||
BX_KEY_THIS settype(KBDLOG);
|
||||
BX_DEBUG(("Init $Id: keyboard.cc,v 1.68 2002-10-08 06:14:53 bdenney Exp $"));
|
||||
BX_DEBUG(("Init $Id: keyboard.cc,v 1.69 2002-10-16 19:39:27 bdenney Exp $"));
|
||||
}
|
||||
|
||||
bx_keyb_c::~bx_keyb_c(void)
|
||||
@ -110,7 +110,7 @@ bx_keyb_c::resetinternals(Boolean powerup)
|
||||
void
|
||||
bx_keyb_c::init(bx_devices_c *d, bx_cmos_c *cmos)
|
||||
{
|
||||
BX_DEBUG(("Init $Id: keyboard.cc,v 1.68 2002-10-08 06:14:53 bdenney Exp $"));
|
||||
BX_DEBUG(("Init $Id: keyboard.cc,v 1.69 2002-10-16 19:39:27 bdenney Exp $"));
|
||||
Bit32u i;
|
||||
|
||||
BX_KEY_THIS devices = d;
|
||||
@ -192,37 +192,37 @@ bx_keyb_c::init(bx_devices_c *d, bx_cmos_c *cmos)
|
||||
// register shadow params (Experimental, not a complete list by far)
|
||||
bx_list_c *list = new bx_list_c (BXP_KBD_PARAMETERS, "Keyboard State", "", 20);
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_IRQ1_REQ,
|
||||
"Keyboard IRQ1 requested: ",
|
||||
"Keyboard IRQ1 requested: ", "",
|
||||
&BX_KEY_THIS s.kbd_controller.irq1_requested));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_IRQ12_REQ,
|
||||
"Keyboard IRQ12 requested: ",
|
||||
"Keyboard IRQ12 requested: ", "",
|
||||
&BX_KEY_THIS s.kbd_controller.irq12_requested));
|
||||
list->add (new bx_shadow_num_c (BXP_KBD_TIMER_PENDING,
|
||||
"Keyboard timer pending: ",
|
||||
"Keyboard timer pending: ", "",
|
||||
&BX_KEY_THIS s.kbd_controller.timer_pending));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_PARE,
|
||||
"Keyboard PARE",
|
||||
"Keyboard PARE", "",
|
||||
&BX_KEY_THIS s.kbd_controller.pare));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_TIM,
|
||||
"Keyboard TIM",
|
||||
"Keyboard TIM", "",
|
||||
&BX_KEY_THIS s.kbd_controller.tim));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_AUXB,
|
||||
"Keyboard AUXB",
|
||||
"Keyboard AUXB", "",
|
||||
&BX_KEY_THIS s.kbd_controller.auxb));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_KEYL,
|
||||
"Keyboard KEYL",
|
||||
"Keyboard KEYL", "",
|
||||
&BX_KEY_THIS s.kbd_controller.keyl));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_C_D,
|
||||
"Keyboard C_D",
|
||||
"Keyboard C_D", "",
|
||||
&BX_KEY_THIS s.kbd_controller.c_d));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_SYSF,
|
||||
"Keyboard SYSF",
|
||||
"Keyboard SYSF", "",
|
||||
&BX_KEY_THIS s.kbd_controller.sysf));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_INPB,
|
||||
"Keyboard INPB",
|
||||
"Keyboard INPB", "",
|
||||
&BX_KEY_THIS s.kbd_controller.inpb));
|
||||
list->add (new bx_shadow_bool_c (BXP_KBD_OUTB,
|
||||
"Keyboard OUTB",
|
||||
"Keyboard OUTB", "",
|
||||
&BX_KEY_THIS s.kbd_controller.outb));
|
||||
}
|
||||
#endif
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: main.cc,v 1.159 2002-10-14 13:37:17 bdenney Exp $
|
||||
// $Id: main.cc,v 1.160 2002-10-16 19:39:27 bdenney Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -91,8 +91,8 @@ static int parse_bochsrc(char *rcfile);
|
||||
static void bx_do_text_config_interface (int first_arg, int argc, char *argv[]);
|
||||
#endif
|
||||
|
||||
static Bit32s
|
||||
bx_param_handler (bx_param_c *param, int set, Bit32s val)
|
||||
static Bit64s
|
||||
bx_param_handler (bx_param_c *param, int set, Bit64s val)
|
||||
{
|
||||
bx_id id = param->get_id ();
|
||||
switch (id) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user