Video changes of the day (November 13th, 2024)
1. Finally add the ATI 8514/A Ultra add-on BIOS in both ISA and MCA variants (despite the ROM page failure on POST). 2. Fixed a mode switch bug in the Mach8 (both add-on and vga combo) when exiting the Win3.x GUI using the native drivers. 3. Corrected (best possible) the eeprom load of the Mach8 products. 4. Partial implementation of the FIFO on the 8514/A compatible products including Mach8/32 and plain IBM 8514/A.
This commit is contained in:
@@ -43,9 +43,7 @@
|
||||
#include <86box/vid_ati_mach8.h>
|
||||
#include "cpu.h"
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
#define BIOS_MACH8_ROM_PATH "roms/video/mach8/11301113140.BIN"
|
||||
#endif
|
||||
#define BIOS_MACH8_ROM_PATH "roms/video/mach8/11301113140_4k.BIN"
|
||||
|
||||
static void ibm8514_accel_outb(uint16_t port, uint8_t val, void *priv);
|
||||
static void ibm8514_accel_outw(uint16_t port, uint16_t val, void *priv);
|
||||
@@ -337,18 +335,21 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
switch (port) {
|
||||
case 0x82e8:
|
||||
case 0xc2e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.cur_y = val & 0x7ff;
|
||||
break;
|
||||
|
||||
case 0x86e8:
|
||||
case 0xc6e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.cur_x = val & 0x7ff;
|
||||
break;
|
||||
|
||||
case 0x8ae8:
|
||||
case 0xcae8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2) {
|
||||
dev->accel.desty = val & 0x7ff;
|
||||
dev->accel.desty_axstp = val & 0x3fff;
|
||||
@@ -359,6 +360,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0x8ee8:
|
||||
case 0xcee8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2) {
|
||||
dev->accel.destx = val & 0x7ff;
|
||||
dev->accel.destx_distp = val & 0x3fff;
|
||||
@@ -368,6 +370,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
break;
|
||||
|
||||
case 0x92e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->test = val;
|
||||
fallthrough;
|
||||
@@ -382,6 +385,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0x96e8:
|
||||
case 0xd6e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2) {
|
||||
dev->accel.maj_axis_pcnt = val & 0x7ff;
|
||||
dev->accel.maj_axis_pcnt_no_limit = val;
|
||||
@@ -390,6 +394,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0x9ae8:
|
||||
case 0xdae8:
|
||||
dev->fifo_idx++;
|
||||
dev->accel.ssv_state = 0;
|
||||
if (len == 2) {
|
||||
dev->data_available = 0;
|
||||
@@ -406,6 +411,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0x9ee8:
|
||||
case 0xdee8:
|
||||
dev->fifo_idx++;
|
||||
dev->accel.ssv_state = 1;
|
||||
if (len == 2) {
|
||||
dev->accel.short_stroke = val;
|
||||
@@ -430,6 +436,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0xa2e8:
|
||||
case 0xe2e8:
|
||||
dev->fifo_idx++;
|
||||
if (port == 0xe2e8) {
|
||||
if (len == 2) {
|
||||
if (dev->accel.cmd_back)
|
||||
@@ -448,6 +455,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0xa6e8:
|
||||
case 0xe6e8:
|
||||
dev->fifo_idx++;
|
||||
if (port == 0xe6e8) {
|
||||
if (len == 2) {
|
||||
if (dev->accel.cmd_back)
|
||||
@@ -466,34 +474,40 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0xaae8:
|
||||
case 0xeae8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.wrt_mask = val;
|
||||
break;
|
||||
|
||||
case 0xaee8:
|
||||
case 0xeee8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.rd_mask = val;
|
||||
break;
|
||||
|
||||
case 0xb2e8:
|
||||
case 0xf2e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.color_cmp = val;
|
||||
break;
|
||||
|
||||
case 0xb6e8:
|
||||
case 0xf6e8:
|
||||
dev->fifo_idx++;
|
||||
dev->accel.bkgd_mix = val & 0xff;
|
||||
break;
|
||||
|
||||
case 0xbae8:
|
||||
case 0xfae8:
|
||||
dev->fifo_idx++;
|
||||
dev->accel.frgd_mix = val & 0xff;
|
||||
break;
|
||||
|
||||
case 0xbee8:
|
||||
case 0xfee8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2) {
|
||||
dev->accel.multifunc_cntl = val;
|
||||
dev->accel.multifunc[dev->accel.multifunc_cntl >> 12] = dev->accel.multifunc_cntl & 0xfff;
|
||||
@@ -601,7 +615,6 @@ void
|
||||
ibm8514_accel_out(uint16_t port, uint32_t val, svga_t *svga, int len)
|
||||
{
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint8_t old = 0;
|
||||
|
||||
if (port & 0x8000)
|
||||
ibm8514_accel_out_fifo(svga, port, val, len);
|
||||
@@ -687,26 +700,31 @@ ibm8514_accel_out(uint16_t port, uint32_t val, svga_t *svga, int len)
|
||||
break;
|
||||
|
||||
case 0x42e8:
|
||||
if (val & 1)
|
||||
dev->subsys_stat &= ~1;
|
||||
if (val & 2)
|
||||
dev->subsys_stat &= ~2;
|
||||
if (val & 4)
|
||||
dev->subsys_stat &= ~4;
|
||||
if (val & 8)
|
||||
dev->subsys_stat &= ~8;
|
||||
if (val & 0x01)
|
||||
dev->subsys_stat &= ~0x01;
|
||||
if (val & 0x02)
|
||||
dev->subsys_stat &= ~0x02;
|
||||
if (val & 0x04)
|
||||
dev->subsys_stat &= ~0x04;
|
||||
if (val & 0x08)
|
||||
dev->subsys_stat &= ~0x08;
|
||||
break;
|
||||
case 0x42e9:
|
||||
old = dev->subsys_cntl;
|
||||
dev->subsys_cntl = val;
|
||||
if ((old ^ val) & 1)
|
||||
dev->subsys_stat |= 1;
|
||||
if ((old ^ val) & 2)
|
||||
dev->subsys_stat |= 2;
|
||||
if ((old ^ val) & 4)
|
||||
dev->subsys_stat |= 4;
|
||||
if ((old ^ val) & 8)
|
||||
dev->subsys_stat |= 8;
|
||||
if (val & 0x01)
|
||||
dev->subsys_stat |= 0x01;
|
||||
if (val & 0x02)
|
||||
dev->subsys_stat |= 0x02;
|
||||
if (val & 0x04)
|
||||
dev->subsys_stat |= 0x04;
|
||||
if (val & 0x08)
|
||||
dev->subsys_stat |= 0x08;
|
||||
|
||||
if ((val & 0xc0) == 0xc0) {
|
||||
dev->fifo_idx = 0;
|
||||
dev->force_busy = 0;
|
||||
dev->force_busy2 = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x4ae8:
|
||||
@@ -771,6 +789,22 @@ ibm8514_accel_in_fifo(svga_t *svga, uint16_t port, int len)
|
||||
|
||||
case 0x9ae8:
|
||||
case 0xdae8:
|
||||
if ((dev->fifo_idx >= 1) && (dev->fifo_idx <= 8)) {
|
||||
temp |= (1 << (dev->fifo_idx - 1));
|
||||
switch (dev->accel.cmd >> 13) {
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
if (dev->accel.sy < 0)
|
||||
dev->fifo_idx = 0;
|
||||
break;
|
||||
default:
|
||||
if (!dev->accel.sy)
|
||||
dev->fifo_idx = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (len == 2) {
|
||||
if (dev->force_busy)
|
||||
temp |= 0x200; /*Hardware busy*/
|
||||
@@ -878,10 +912,15 @@ ibm8514_accel_in(uint16_t port, svga_t *svga)
|
||||
dev->subsys_stat |= 0x02;
|
||||
}
|
||||
|
||||
if (!dev->fifo_idx) {
|
||||
if (!dev->force_busy && !dev->force_busy2)
|
||||
temp |= 0x08;
|
||||
}
|
||||
|
||||
if (port & 1)
|
||||
temp = dev->vram_512k_8514 ? 0x00 : 0x80;
|
||||
else {
|
||||
temp |= (dev->subsys_stat | 0x80);
|
||||
temp |= (dev->subsys_stat | (dev->vram_512k_8514 ? 0x00 : 0x80));
|
||||
temp |= 0x20;
|
||||
}
|
||||
break;
|
||||
@@ -932,6 +971,8 @@ ibm8514_short_stroke_start(int count, int cpu_input, uint32_t mix_dat, uint32_t
|
||||
dev->accel.ssv_draw = ssv & 0x10;
|
||||
|
||||
if (ibm8514_cpu_src(svga)) {
|
||||
dev->data_available = 0;
|
||||
dev->data_available2 = 0;
|
||||
return; /*Wait for data from CPU*/
|
||||
}
|
||||
}
|
||||
@@ -1242,70 +1283,34 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->accel.err_term >= dev->accel.maj_axis_pcnt) {
|
||||
dev->accel.err_term += dev->accel.destx_distp;
|
||||
/*Step minor axis*/
|
||||
switch (dev->accel.cmd & 0xe0) {
|
||||
case 0x00:
|
||||
dev->accel.cy--;
|
||||
break;
|
||||
case 0x20:
|
||||
dev->accel.cy--;
|
||||
break;
|
||||
case 0x40:
|
||||
dev->accel.cx--;
|
||||
break;
|
||||
case 0x60:
|
||||
dev->accel.cx++;
|
||||
break;
|
||||
case 0x80:
|
||||
dev->accel.cy++;
|
||||
break;
|
||||
case 0xa0:
|
||||
dev->accel.cy++;
|
||||
break;
|
||||
case 0xc0:
|
||||
dev->accel.cx--;
|
||||
break;
|
||||
case 0xe0:
|
||||
dev->accel.cx++;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else
|
||||
dev->accel.err_term += dev->accel.desty_axstp;
|
||||
|
||||
/*Step major axis*/
|
||||
switch (dev->accel.cmd & 0xe0) {
|
||||
case 0x00:
|
||||
dev->accel.cx--;
|
||||
break;
|
||||
case 0x20:
|
||||
dev->accel.cx++;
|
||||
break;
|
||||
case 0x40:
|
||||
dev->accel.cy--;
|
||||
break;
|
||||
case 0x60:
|
||||
dev->accel.cy--;
|
||||
break;
|
||||
case 0x80:
|
||||
dev->accel.cx--;
|
||||
break;
|
||||
case 0xa0:
|
||||
dev->accel.cx++;
|
||||
break;
|
||||
case 0xc0:
|
||||
if (dev->accel.cmd & 0x40) {
|
||||
if (dev->accel.cmd & 0x80)
|
||||
dev->accel.cy++;
|
||||
break;
|
||||
case 0xe0:
|
||||
dev->accel.cy++;
|
||||
break;
|
||||
else
|
||||
dev->accel.cy--;
|
||||
|
||||
default:
|
||||
break;
|
||||
if (dev->accel.err_term >= 0) {
|
||||
dev->accel.err_term += dev->accel.destx_distp;
|
||||
if (dev->accel.cmd & 0x20)
|
||||
dev->accel.cx++;
|
||||
else
|
||||
dev->accel.cx--;
|
||||
} else
|
||||
dev->accel.err_term += dev->accel.desty_axstp;
|
||||
} else {
|
||||
if (dev->accel.cmd & 0x20)
|
||||
dev->accel.cx++;
|
||||
else
|
||||
dev->accel.cx--;
|
||||
|
||||
if (dev->accel.err_term >= 0) {
|
||||
dev->accel.err_term += dev->accel.destx_distp;
|
||||
if (dev->accel.cmd & 0x80)
|
||||
dev->accel.cy++;
|
||||
else
|
||||
dev->accel.cy--;
|
||||
} else
|
||||
dev->accel.err_term += dev->accel.desty_axstp;
|
||||
}
|
||||
|
||||
dev->accel.ssv_len--;
|
||||
@@ -2356,8 +2361,8 @@ skip_nibble_rect_write:
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ibm8514_log("Polygon Draw Type=%02x, CL=%d, CR=%d.\n", dev->accel.multifunc[0x0a] & 0x06, clip_l, clip_r);
|
||||
while (count-- && dev->accel.sy >= 0) {
|
||||
ibm8514_log("Polygon Draw Type=%02x, CX=%d, CY=%d, SY=%d, CL=%d, CR=%d.\n", dev->accel.multifunc[0x0a] & 0x06, dev->accel.cx, dev->accel.cy, dev->accel.sy, clip_l, clip_r);
|
||||
while (count-- && (dev->accel.sy >= 0)) {
|
||||
if ((dev->accel.cx >= clip_l) &&
|
||||
(dev->accel.cx <= clip_r) &&
|
||||
(dev->accel.cy >= clip_t) &&
|
||||
@@ -3291,16 +3296,16 @@ ibm8514_render_8bpp(svga_t *svga)
|
||||
|
||||
for (int x = 0; x <= dev->h_disp; x += 8) {
|
||||
dat = *(uint32_t *) (&dev->vram[dev->ma & dev->vram_mask]);
|
||||
p[0] = dev->pallook[dat & dev->dac_mask];
|
||||
p[1] = dev->pallook[(dat >> 8) & dev->dac_mask];
|
||||
p[2] = dev->pallook[(dat >> 16) & dev->dac_mask];
|
||||
p[3] = dev->pallook[(dat >> 24) & dev->dac_mask];
|
||||
p[0] = dev->pallook[dat & dev->dac_mask & 0xff];
|
||||
p[1] = dev->pallook[(dat >> 8) & dev->dac_mask & 0xff];
|
||||
p[2] = dev->pallook[(dat >> 16) & dev->dac_mask & 0xff];
|
||||
p[3] = dev->pallook[(dat >> 24) & dev->dac_mask & 0xff];
|
||||
|
||||
dat = *(uint32_t *) (&dev->vram[(dev->ma + 4) & dev->vram_mask]);
|
||||
p[4] = dev->pallook[dat & dev->dac_mask];
|
||||
p[5] = dev->pallook[(dat >> 8) & dev->dac_mask];
|
||||
p[6] = dev->pallook[(dat >> 16) & dev->dac_mask];
|
||||
p[7] = dev->pallook[(dat >> 24) & dev->dac_mask];
|
||||
p[4] = dev->pallook[dat & dev->dac_mask & 0xff];
|
||||
p[5] = dev->pallook[(dat >> 8) & dev->dac_mask & 0xff];
|
||||
p[6] = dev->pallook[(dat >> 16) & dev->dac_mask & 0xff];
|
||||
p[7] = dev->pallook[(dat >> 24) & dev->dac_mask & 0xff];
|
||||
|
||||
dev->ma += 8;
|
||||
p += 8;
|
||||
@@ -3702,13 +3707,10 @@ ibm8514_recalctimings(svga_t *svga)
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
|
||||
svga->render8514 = ibm8514_render_blank;
|
||||
#ifdef ATI_8514_ULTRA
|
||||
if (dev->extensions) {
|
||||
if (svga->ext8514 != NULL)
|
||||
ati8514_recalctimings(svga);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
} else {
|
||||
if (dev->on) {
|
||||
dev->h_total = dev->htotal + 1;
|
||||
dev->rowcount = !!(dev->disp_cntl & 0x08);
|
||||
@@ -3742,7 +3744,6 @@ ibm8514_recalctimings(svga_t *svga)
|
||||
|
||||
dev->pitch = 1024;
|
||||
dev->rowoffset = 0x80;
|
||||
svga->map8 = dev->pallook;
|
||||
if (dev->vram_512k_8514) {
|
||||
if (dev->h_disp == 640)
|
||||
dev->pitch = 640;
|
||||
@@ -3795,11 +3796,9 @@ ibm8514_mca_reset(void *priv)
|
||||
|
||||
ibm8514_log("MCA reset.\n");
|
||||
dev->on = 0;
|
||||
#ifdef ATI_8514_ULTRA
|
||||
if (dev->extensions)
|
||||
ati8514_mca_write(0x102, 0, svga);
|
||||
else
|
||||
#endif
|
||||
ibm8514_mca_write(0x102, 0, svga);
|
||||
|
||||
timer_set_callback(&svga->timer, svga_poll);
|
||||
@@ -3808,9 +3807,8 @@ ibm8514_mca_reset(void *priv)
|
||||
static void *
|
||||
ibm8514_init(const device_t *info)
|
||||
{
|
||||
#ifdef ATI_8514_ULTRA
|
||||
uint32_t bios_addr = 0;
|
||||
#endif
|
||||
uint16_t bios_rom_eeprom = 0x0000;
|
||||
|
||||
if (svga_get_pri() == NULL)
|
||||
return NULL;
|
||||
@@ -3834,9 +3832,10 @@ ibm8514_init(const device_t *info)
|
||||
dev->type = info->flags;
|
||||
dev->bpp = 0;
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
dev->extensions = device_get_config_int("extensions");
|
||||
bios_addr = device_get_config_hex20("bios_addr");
|
||||
if (dev->type & DEVICE_MCA)
|
||||
bios_addr = 0xc6000;
|
||||
|
||||
switch (dev->extensions) {
|
||||
case 1:
|
||||
@@ -3844,29 +3843,28 @@ ibm8514_init(const device_t *info)
|
||||
mach_t * mach = (mach_t *) calloc(1, sizeof(mach_t));
|
||||
svga->ext8514 = mach;
|
||||
|
||||
rom_init(&dev->bios_rom,
|
||||
BIOS_MACH8_ROM_PATH,
|
||||
bios_addr, 0x1000, 0xfff,
|
||||
0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
ati8514_init(svga, svga->ext8514, svga->dev8514);
|
||||
mach->accel.scratch0 = ((((bios_addr >> 7) - 0x1000) >> 4));
|
||||
bios_rom_eeprom = mach->accel.scratch0;
|
||||
if (dev->type & DEVICE_MCA) {
|
||||
rom_init(&dev->bios_rom,
|
||||
BIOS_MACH8_ROM_PATH,
|
||||
0xc6000, 0x2000, 0x1fff,
|
||||
0, MEM_MAPPING_EXTERNAL);
|
||||
dev->pos_regs[0] = 0x88;
|
||||
dev->pos_regs[1] = 0x80;
|
||||
mach->eeprom.data[0] = 0x0000;
|
||||
mach->eeprom.data[1] = bios_rom_eeprom | ((bios_rom_eeprom | 0x01) << 8);
|
||||
mca_add(ati8514_mca_read, ati8514_mca_write, ibm8514_mca_feedb, ibm8514_mca_reset, svga);
|
||||
ati_eeprom_load_mach8(&mach->eeprom, "ati8514_mca.nvr");
|
||||
ati_eeprom_load_mach8(&mach->eeprom, "ati8514_mca.nvr", 1);
|
||||
mem_mapping_disable(&dev->bios_rom.mapping);
|
||||
} else {
|
||||
rom_init(&dev->bios_rom,
|
||||
BIOS_MACH8_ROM_PATH,
|
||||
bios_addr, 0x2000, 0x1fff,
|
||||
0, MEM_MAPPING_EXTERNAL);
|
||||
mach->accel.scratch0 = (((bios_addr >> 7) - 0x1000) >> 4);
|
||||
ati_eeprom_load_mach8(&mach->eeprom, "ati8514.nvr");
|
||||
}
|
||||
ati8514_init(svga, svga->ext8514, svga->dev8514);
|
||||
} else
|
||||
ati_eeprom_load_mach8(&mach->eeprom, "ati8514.nvr", 0);
|
||||
break;
|
||||
}
|
||||
fallthrough;
|
||||
|
||||
fallthrough;
|
||||
default:
|
||||
ibm8514_io_set(svga);
|
||||
|
||||
@@ -3877,16 +3875,6 @@ ibm8514_init(const device_t *info)
|
||||
}
|
||||
break;
|
||||
}
|
||||
#else
|
||||
ibm8514_io_set(svga);
|
||||
|
||||
if (dev->type & DEVICE_MCA) {
|
||||
dev->pos_regs[0] = 0x7f;
|
||||
dev->pos_regs[1] = 0xef;
|
||||
mca_add(ibm8514_mca_read, ibm8514_mca_write, ibm8514_mca_feedb, ibm8514_mca_reset, svga);
|
||||
}
|
||||
#endif
|
||||
|
||||
return svga;
|
||||
}
|
||||
|
||||
@@ -3895,13 +3883,10 @@ ibm8514_close(void *priv)
|
||||
{
|
||||
svga_t *svga = (svga_t *) priv;
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
mach_t *mach = (mach_t *) svga->ext8514;
|
||||
|
||||
if (mach)
|
||||
free(mach);
|
||||
#endif
|
||||
|
||||
if (dev) {
|
||||
free(dev->vram);
|
||||
@@ -3927,9 +3912,8 @@ ibm8514_force_redraw(void *priv)
|
||||
svga->fullchange = changeframecount;
|
||||
}
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
// clang-format off
|
||||
static const device_config_t ext8514_config[] = {
|
||||
static const device_config_t isa_ext8514_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Memory size",
|
||||
@@ -3996,9 +3980,9 @@ static const device_config_t ext8514_config[] = {
|
||||
.type = CONFIG_END
|
||||
}
|
||||
};
|
||||
#else
|
||||
|
||||
// clang-format off
|
||||
static const device_config_t ext8514_config[] = {
|
||||
static const device_config_t mca_ext8514_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Memory size",
|
||||
@@ -4018,11 +4002,29 @@ static const device_config_t ext8514_config[] = {
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "extensions",
|
||||
.description = "Vendor",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_int = 0,
|
||||
.selection = {
|
||||
{
|
||||
.description = "IBM",
|
||||
.value = 0
|
||||
},
|
||||
{
|
||||
.description = "ATI",
|
||||
.value = 1
|
||||
},
|
||||
{
|
||||
.description = ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
.type = CONFIG_END
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
// clang-format off
|
||||
const device_t gen8514_isa_device = {
|
||||
@@ -4036,7 +4038,7 @@ const device_t gen8514_isa_device = {
|
||||
{ .available = NULL },
|
||||
.speed_changed = ibm8514_speed_changed,
|
||||
.force_redraw = ibm8514_force_redraw,
|
||||
.config = ext8514_config
|
||||
.config = isa_ext8514_config
|
||||
};
|
||||
|
||||
const device_t ibm8514_mca_device = {
|
||||
@@ -4050,7 +4052,7 @@ const device_t ibm8514_mca_device = {
|
||||
{ .available = NULL },
|
||||
.speed_changed = ibm8514_speed_changed,
|
||||
.force_redraw = ibm8514_force_redraw,
|
||||
.config = ext8514_config
|
||||
.config = mca_ext8514_config
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user