Merge branch 'master' of https://github.com/86Box/86Box
This commit is contained in:
@@ -890,7 +890,7 @@ extern int machine_ps2_model_70_type4_init(const machine_t *);
|
||||
|
||||
/* m_tandy.c */
|
||||
extern int tandy1k_eeprom_read(void);
|
||||
extern int machine_tandy_init(const machine_t *);
|
||||
extern int machine_tandy1000sx_init(const machine_t *);
|
||||
extern int machine_tandy1000hx_init(const machine_t *);
|
||||
extern int machine_tandy1000sl2_init(const machine_t *);
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#ifndef EMU_PIT_H
|
||||
#define EMU_PIT_H
|
||||
|
||||
#define NUM_COUNTERS 3
|
||||
|
||||
typedef struct ctr_t {
|
||||
uint8_t m;
|
||||
uint8_t ctrl;
|
||||
@@ -68,7 +70,7 @@ typedef struct PIT {
|
||||
int clock;
|
||||
pc_timer_t callback_timer;
|
||||
|
||||
ctr_t counters[3];
|
||||
ctr_t counters[NUM_COUNTERS];
|
||||
|
||||
uint8_t ctrl;
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ typedef struct ctrf_t {
|
||||
|
||||
typedef struct pitf_t {
|
||||
int flags;
|
||||
ctrf_t counters[3];
|
||||
ctrf_t counters[NUM_COUNTERS];
|
||||
|
||||
uint8_t ctrl;
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ enum {
|
||||
|
||||
enum {
|
||||
TYPE_TANDY = 0,
|
||||
TYPE_TANDY1000SX,
|
||||
TYPE_TANDY1000HX,
|
||||
TYPE_TANDY1000SL2
|
||||
};
|
||||
@@ -1756,6 +1757,7 @@ machine_tandy1k_init(const machine_t *model, int type)
|
||||
|
||||
switch (type) {
|
||||
case TYPE_TANDY:
|
||||
case TYPE_TANDY1000SX:
|
||||
keyboard_set_table(scancode_tandy);
|
||||
io_sethandler(0x00a0, 1,
|
||||
tandy_read, NULL, NULL, tandy_write, NULL, NULL, dev);
|
||||
@@ -1802,7 +1804,7 @@ tandy1k_eeprom_read(void)
|
||||
}
|
||||
|
||||
int
|
||||
machine_tandy_init(const machine_t *model)
|
||||
machine_tandy1000sx_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -1812,7 +1814,7 @@ machine_tandy_init(const machine_t *model)
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_tandy1k_init(model, TYPE_TANDY);
|
||||
machine_tandy1k_init(model, TYPE_TANDY1000SX);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1503,7 +1503,7 @@ const machine_t machines[] = {
|
||||
.internal_name = "tandy",
|
||||
.type = MACHINE_TYPE_8088,
|
||||
.chipset = MACHINE_CHIPSET_PROPRIETARY,
|
||||
.init = machine_tandy_init,
|
||||
.init = machine_tandy1000sx_init,
|
||||
.p1_handler = NULL,
|
||||
.gpio_handler = NULL,
|
||||
.available_flag = MACHINE_AVAILABLE,
|
||||
@@ -1521,7 +1521,7 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PC,
|
||||
.flags = MACHINE_VIDEO_FIXED,
|
||||
.ram = {
|
||||
.min = 128,
|
||||
.min = 384,
|
||||
.max = 640,
|
||||
.step = 128
|
||||
},
|
||||
@@ -1560,7 +1560,7 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PC,
|
||||
.flags = MACHINE_VIDEO_FIXED,
|
||||
.ram = {
|
||||
.min = 384,
|
||||
.min = 256,
|
||||
.max = 640,
|
||||
.step = 128
|
||||
},
|
||||
|
||||
@@ -526,7 +526,7 @@ pit_timer_over(void *priv)
|
||||
|
||||
dev->clock ^= 1;
|
||||
|
||||
for (uint8_t i = 0; i < 3; i++)
|
||||
for (uint8_t i = 0; i < NUM_COUNTERS; i++)
|
||||
pit_ctr_set_clock_common(&dev->counters[i], dev->clock, dev);
|
||||
|
||||
timer_advance_u64(&dev->callback_timer, dev->pit_const >> 1ULL);
|
||||
@@ -874,7 +874,7 @@ pit_device_reset(pit_t *dev)
|
||||
{
|
||||
dev->clock = 0;
|
||||
|
||||
for (uint8_t i = 0; i < 3; i++)
|
||||
for (uint8_t i = 0; i < NUM_COUNTERS; i++)
|
||||
ctr_reset(&dev->counters[i]);
|
||||
}
|
||||
|
||||
@@ -885,7 +885,7 @@ pit_reset(pit_t *dev)
|
||||
|
||||
dev->clock = 0;
|
||||
|
||||
for (uint8_t i = 0; i < 3; i++)
|
||||
for (uint8_t i = 0; i < NUM_COUNTERS; i++)
|
||||
ctr_reset(&dev->counters[i]);
|
||||
|
||||
/* Disable speaker gate. */
|
||||
|
||||
@@ -47,22 +47,22 @@
|
||||
#define PIT_CUSTOM_CLOCK 64 /* The PIT uses custom clock inputs provided by another provider. */
|
||||
#define PIT_SECONDARY 128 /* The PIT is secondary (ports 0048-004B). */
|
||||
|
||||
#ifdef ENABLE_PIT_LOG
|
||||
int pit_do_log = ENABLE_PIT_LOG;
|
||||
#ifdef ENABLE_PIT_FAST_LOG
|
||||
int pit_fast_do_log = ENABLE_PIT_FAST_LOG;
|
||||
|
||||
static void
|
||||
pit_log(const char *fmt, ...)
|
||||
pit_fast_log(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (pit_do_log) {
|
||||
if (pit_fast_do_log) {
|
||||
va_start(ap, fmt);
|
||||
pclog_ex(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
#else
|
||||
# define pit_log(fmt, ...)
|
||||
# define pit_fast_log(fmt, ...)
|
||||
#endif
|
||||
|
||||
static void
|
||||
@@ -420,7 +420,7 @@ pitf_write(uint16_t addr, uint8_t val, void *priv)
|
||||
int t = (addr & 3);
|
||||
ctrf_t *ctr;
|
||||
|
||||
pit_log("[%04X:%08X] pit_write(%04X, %02X, %08X)\n", CS, cpu_state.pc, addr, val, priv);
|
||||
pit_fast_log("[%04X:%08X] pit_write(%04X, %02X, %08X)\n", CS, cpu_state.pc, addr, val, priv);
|
||||
|
||||
cycles -= ISA_CYCLES(8);
|
||||
|
||||
@@ -438,7 +438,7 @@ pitf_write(uint16_t addr, uint8_t val, void *priv)
|
||||
pitf_ctr_latch_count(&dev->counters[1]);
|
||||
if (val & 8)
|
||||
pitf_ctr_latch_count(&dev->counters[2]);
|
||||
pit_log("PIT %i: Initiated readback command\n", t);
|
||||
pit_fast_log("PIT %i: Initiated readback command\n", t);
|
||||
}
|
||||
if (!(val & 0x10)) {
|
||||
if (val & 2)
|
||||
@@ -456,7 +456,7 @@ pitf_write(uint16_t addr, uint8_t val, void *priv)
|
||||
if (!(dev->ctrl & 0x30)) {
|
||||
pitf_ctr_latch_count(ctr);
|
||||
dev->ctrl |= 0x30;
|
||||
pit_log("PIT %i: Initiated latched read, %i bytes latched\n",
|
||||
pit_fast_log("PIT %i: Initiated latched read, %i bytes latched\n",
|
||||
t, ctr->latched);
|
||||
} else {
|
||||
ctr->ctrl = val;
|
||||
@@ -476,7 +476,7 @@ pitf_write(uint16_t addr, uint8_t val, void *priv)
|
||||
pitf_ctr_set_out(ctr, 1, dev);
|
||||
ctr->disabled = 1;
|
||||
|
||||
pit_log("PIT %i: M = %i, RM/WM = %i, State = %i, Out = %i\n", t, ctr->m, ctr->rm, ctr->state, ctr->out);
|
||||
pit_fast_log("PIT %i: M = %i, RM/WM = %i, Out = %i\n", t, ctr->m, ctr->rm, ctr->out);
|
||||
}
|
||||
ctr->thit = 0;
|
||||
}
|
||||
@@ -619,7 +619,7 @@ pitf_read(uint16_t addr, void *priv)
|
||||
break;
|
||||
}
|
||||
|
||||
pit_log("[%04X:%08X] pit_read(%04X, %08X) = %02X\n", CS, cpu_state.pc, addr, priv, ret);
|
||||
pit_fast_log("[%04X:%08X] pit_read(%04X, %08X) = %02X\n", CS, cpu_state.pc, addr, priv, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -670,7 +670,7 @@ pitf_reset(pitf_t *dev)
|
||||
{
|
||||
memset(dev, 0, sizeof(pitf_t));
|
||||
|
||||
for (uint8_t i = 0; i < 3; i++)
|
||||
for (uint8_t i = 0; i < NUM_COUNTERS; i++)
|
||||
ctr_reset(&dev->counters[i]);
|
||||
|
||||
/* Disable speaker gate. */
|
||||
@@ -683,7 +683,7 @@ pitf_set_pit_const(void *data, uint64_t pit_const)
|
||||
pitf_t *pit = (pitf_t *) data;
|
||||
ctrf_t *ctr;
|
||||
|
||||
for (uint8_t i = 0; i < 3; i++) {
|
||||
for (uint8_t i = 0; i < NUM_COUNTERS; i++) {
|
||||
ctr = &pit->counters[i];
|
||||
ctr->pit_const = pit_const;
|
||||
}
|
||||
@@ -728,7 +728,7 @@ pitf_init(const device_t *info)
|
||||
dev->flags = info->local;
|
||||
|
||||
if (!(dev->flags & PIT_PS2) && !(dev->flags & PIT_CUSTOM_CLOCK)) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int i = 0; i < NUM_COUNTERS; i++) {
|
||||
ctrf_t *ctr = &dev->counters[i];
|
||||
ctr->priv = dev;
|
||||
timer_add(&ctr->timer, pitf_timer_over, (void *) ctr, 0);
|
||||
|
||||
Reference in New Issue
Block a user