mirror of
https://github.com/86Box/86Box.git
synced 2026-02-22 09:35:32 -07:00
Headland: Add some basic logging
This commit is contained in:
@@ -18,11 +18,17 @@
|
||||
* Copyright 2017-2019 Miran Grca.
|
||||
* Copyright 2017-2019 GreatPsycho.
|
||||
*/
|
||||
#ifdef ENABLE_HEADLAND_LOG
|
||||
#include <stdarg.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <wchar.h>
|
||||
#ifdef ENABLE_HEADLAND_LOG
|
||||
#define HAVE_STDARG_H
|
||||
#endif
|
||||
#include <86box/86box.h>
|
||||
#include "cpu.h"
|
||||
#include "x86.h"
|
||||
@@ -35,6 +41,24 @@
|
||||
#include <86box/plat_unused.h>
|
||||
#include <86box/port_92.h>
|
||||
#include <86box/chipset.h>
|
||||
#include <86box/log.h>
|
||||
|
||||
#ifdef ENABLE_HEADLAND_LOG
|
||||
int headland_do_log = ENABLE_HEADLAND_LOG;
|
||||
|
||||
static void
|
||||
headland_log(void *priv, const char *fmt, ...)
|
||||
{
|
||||
if (headland_do_log) {
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
log_out(priv, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
#else
|
||||
# define headland_log(fmt, ...)
|
||||
#endif
|
||||
|
||||
enum {
|
||||
HEADLAND_GC103 = 0x00,
|
||||
@@ -82,6 +106,8 @@ typedef struct headland_t {
|
||||
mem_mapping_t high_mapping;
|
||||
mem_mapping_t shadow_mapping[2];
|
||||
mem_mapping_t upper_mapping[24];
|
||||
|
||||
void * log; /* New logging system */
|
||||
} headland_t;
|
||||
|
||||
/* TODO - Headland chipset's memory address mapping emulation isn't fully implemented yet,
|
||||
@@ -125,6 +151,8 @@ get_addr(headland_t *dev, uint32_t addr, headland_mr_t *mr)
|
||||
other_shift = (dev->cr[0] & 0x80) ? 21 : 19;
|
||||
}
|
||||
|
||||
headland_log(dev->log, "Headland shift values: shift = %i, other_shift = %i\n", shift, other_shift);
|
||||
|
||||
/* Bank size = 1 << (bank shift + 2) . */
|
||||
bank_shift[0] = bank_shift[1] = shift;
|
||||
|
||||
@@ -248,6 +276,7 @@ memmap_state_update(headland_t *dev)
|
||||
|
||||
memmap_state_default(dev, ht_romcs);
|
||||
|
||||
headland_log(dev->log, "Headland 384K Remap %sabled\n", ht_cr0 & 0x04 ? "Dis" : "En");
|
||||
if (mem_size > 640) {
|
||||
if (ht_cr0 & 0x04) {
|
||||
mem_mapping_set_addr(&dev->mid_mapping, 0xA0000, 0x40000);
|
||||
@@ -273,6 +302,7 @@ memmap_state_update(headland_t *dev)
|
||||
}
|
||||
}
|
||||
|
||||
headland_log(dev->log, "Headland shadow RAM val = %02X\n", ht_cr0 & 0x18);
|
||||
switch (ht_cr0 & 0x18) {
|
||||
case 0x18:
|
||||
if ((mem_size << 10) > 0xe0000) {
|
||||
@@ -331,6 +361,8 @@ hl_write(uint16_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
headland_t *dev = (headland_t *) priv;
|
||||
|
||||
headland_log(dev->log, "[%04X:%08X] Headland: [W] addr = %04X, val = %02X\n", CS, cpu_state.pc, addr, val);
|
||||
|
||||
switch (addr) {
|
||||
case 0x01ec:
|
||||
dev->ems_mr[dev->ems_mar & 0x3f].mr = val | 0xff00;
|
||||
@@ -401,6 +433,8 @@ hl_writew(uint16_t addr, uint16_t val, void *priv)
|
||||
{
|
||||
headland_t *dev = (headland_t *) priv;
|
||||
|
||||
headland_log(dev->log, "[%04X:%08X] Headland: [W] addr = %04X, val = %04X\n", CS, cpu_state.pc, addr, val);
|
||||
|
||||
switch (addr) {
|
||||
case 0x01ec:
|
||||
dev->ems_mr[dev->ems_mar & 0x3f].mr = val;
|
||||
@@ -470,6 +504,8 @@ hl_read(uint16_t addr, void *priv)
|
||||
break;
|
||||
}
|
||||
|
||||
headland_log(dev->log, "[%04X:%08X] Headland [R] addr = %04X, val = %02X\n", CS, cpu_state.pc, addr, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -490,6 +526,8 @@ hl_readw(uint16_t addr, void *priv)
|
||||
break;
|
||||
}
|
||||
|
||||
headland_log(dev->log, "[%04X:%08X] Headland [R] addr = %04X, val = %04X\n", CS, cpu_state.pc, addr, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -584,6 +622,11 @@ headland_close(void *priv)
|
||||
{
|
||||
headland_t *dev = (headland_t *) priv;
|
||||
|
||||
if (dev->log != NULL) {
|
||||
log_close(dev->log);
|
||||
dev->log = NULL;
|
||||
}
|
||||
|
||||
free(dev);
|
||||
}
|
||||
|
||||
@@ -621,6 +664,8 @@ headland_init(const device_t *info)
|
||||
dev->ems_mr[i].headland = dev;
|
||||
}
|
||||
|
||||
dev->log = log_open("Headland");
|
||||
|
||||
/* Turn off mem.c mappings. */
|
||||
mem_mapping_disable(&ram_low_mapping);
|
||||
mem_mapping_disable(&ram_mid_mapping);
|
||||
|
||||
Reference in New Issue
Block a user