pcem/src/xi8088.c
2018-03-11 16:43:32 +00:00

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
};