diff --git a/src/device/isartc.c b/src/device/isartc.c index ad2b39f2f..2b723fc81 100644 --- a/src/device/isartc.c +++ b/src/device/isartc.c @@ -82,10 +82,11 @@ #include <86box/pic.h> #include <86box/isartc.h> -#define ISARTC_EV170 0 -#define ISARTC_DTK 1 -#define ISARTC_P5PAK 2 -#define ISARTC_A6PAK 3 +#define ISARTC_EV170 0 +#define ISARTC_DTK 1 +#define ISARTC_P5PAK 2 +#define ISARTC_A6PAK 3 +#define ISARTC_VENDEX 4 #define ISARTC_DEBUG 0 @@ -544,6 +545,18 @@ isartc_init(const device_t *info) dev->year = MM67_AL_DOM; /* year, NON STANDARD */ break; + case ISARTC_VENDEX: /* Vendex HeadStart Turbo 888-XT RTC */ + dev->flags |= FLAG_YEAR80; + dev->base_addr = 0x0300; + dev->base_addrsz = 32; + dev->f_rd = mm67_read; + dev->f_wr = mm67_write; + dev->nvr.reset = mm67_reset; + dev->nvr.start = mm67_start; + dev->nvr.tick = mm67_tick; + dev->year = MM67_AL_DOM; /* year, NON STANDARD */ + break; + default: break; } @@ -559,7 +572,7 @@ isartc_init(const device_t *info) dev->f_rd, NULL, NULL, dev->f_wr, NULL, NULL, dev); /* Hook into the NVR backend. */ - dev->nvr.fn = isartc_get_internal_name(isartc_type); + dev->nvr.fn = (char *)info->internal_name; dev->nvr.irq = dev->irq; if (!is_at) nvr_init(&dev->nvr); @@ -709,6 +722,21 @@ static const device_t a6pak_device = { .config = a6pak_config }; +/* Onboard RTC devices */ +const device_t vendex_xt_rtc_onboard_device = { + .name = "National Semiconductor MM58167 (Vendex)", + .internal_name = "vendex_xt_rtc", + .flags = DEVICE_ISA, + .local = ISARTC_VENDEX, + .init = isartc_init, + .close = isartc_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + static const device_t isartc_none_device = { .name = "None", .internal_name = "none", diff --git a/src/machine/m_xt.c b/src/machine/m_xt.c index 8f2bec8bd..b8d318438 100644 --- a/src/machine/m_xt.c +++ b/src/machine/m_xt.c @@ -20,6 +20,8 @@ #include <86box/chipset.h> #include <86box/port_6x.h> +extern const device_t vendex_xt_rtc_onboard_device; + static void machine_xt_common_init(const machine_t *model) { @@ -483,6 +485,7 @@ machine_xt_vendex_init(const machine_t *model) return ret; machine_xt_clone_init(model); + device_add(&vendex_xt_rtc_onboard_device); return ret; }