109 lines
2.5 KiB
C
109 lines
2.5 KiB
C
#include "ibm.h"
|
|
#include "io.h"
|
|
#include "cpu.h"
|
|
#include "keyboard_at.h"
|
|
|
|
#include "xi8088.h"
|
|
|
|
typedef struct xi8088_t
|
|
{
|
|
uint8_t turbo;
|
|
|
|
int turbo_setting;
|
|
int bios_128kb;
|
|
} xi8088_t;
|
|
|
|
static xi8088_t xi8088;
|
|
|
|
uint8_t xi8088_turbo_get()
|
|
{
|
|
return xi8088.turbo;
|
|
}
|
|
|
|
void xi8088_turbo_set(uint8_t value)
|
|
{
|
|
if (!xi8088.turbo_setting)
|
|
return;
|
|
|
|
xi8088.turbo = value;
|
|
if (!value)
|
|
{
|
|
pclog("Xi8088 turbo off\n");
|
|
cpu_set_turbo(0);
|
|
}
|
|
else
|
|
{
|
|
pclog("Xi8088 turbo on\n");
|
|
cpu_set_turbo(1);
|
|
}
|
|
}
|
|
|
|
int xi8088_bios_128kb()
|
|
{
|
|
return xi8088.bios_128kb;
|
|
}
|
|
|
|
static void *xi8088_init()
|
|
{
|
|
/* even though the bios by default turns the turbo off when controlling by hotkeys, pcem always starts at full speed */
|
|
xi8088.turbo = 1;
|
|
xi8088.turbo_setting = device_get_config_int("turbo_setting");
|
|
xi8088.bios_128kb = device_get_config_int("bios_128kb");
|
|
|
|
return &xi8088;
|
|
}
|
|
|
|
static device_config_t xi8088_config[] =
|
|
{
|
|
{
|
|
.name = "turbo_setting",
|
|
.description = "Turbo",
|
|
.type = CONFIG_SELECTION,
|
|
.selection =
|
|
{
|
|
{
|
|
.description = "Always at selected speed",
|
|
.value = 0
|
|
},
|
|
{
|
|
.description = "Hotkeys (starts off)",
|
|
.value = 1
|
|
}
|
|
},
|
|
.default_int = 0
|
|
},
|
|
{
|
|
.name = "bios_128kb",
|
|
.description = "BIOS size",
|
|
.type = CONFIG_SELECTION,
|
|
.selection =
|
|
{
|
|
{
|
|
.description = "64KB",
|
|
.value = 0
|
|
},
|
|
{
|
|
.description = "128KB",
|
|
.value = 1
|
|
}
|
|
},
|
|
.default_int = 1
|
|
},
|
|
{
|
|
.type = -1
|
|
}
|
|
};
|
|
|
|
|
|
device_t xi8088_device =
|
|
{
|
|
"Xi8088",
|
|
0,
|
|
xi8088_init,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
xi8088_config
|
|
};
|