Merge pull request #2464 from 86Box/fixes2
Fix warnings on the XGA, 8514/A and EGA Render map files.
This commit is contained in:
@@ -88,24 +88,24 @@ static uint32_t (*address_remap_funcs[16])(ega_t *ega, uint32_t in_addr) =
|
||||
|
||||
void ega_recalc_remap_func(ega_t *ega)
|
||||
{
|
||||
int func_nr;
|
||||
int func_nr;
|
||||
|
||||
if (ega->crtc[0x14] & 0x40)
|
||||
func_nr = VAR_DWORD_MODE;
|
||||
else if (ega->crtc[0x17] & 0x40)
|
||||
func_nr = VAR_BYTE_MODE;
|
||||
else if (ega->crtc[0x17] & 0x20)
|
||||
func_nr = VAR_WORD_MODE_MA15;
|
||||
else
|
||||
func_nr = VAR_WORD_MODE_MA13;
|
||||
if (ega->crtc[0x14] & 0x40)
|
||||
func_nr = VAR_DWORD_MODE;
|
||||
else if (ega->crtc[0x17] & 0x40)
|
||||
func_nr = VAR_BYTE_MODE;
|
||||
else if (ega->crtc[0x17] & 0x20)
|
||||
func_nr = VAR_WORD_MODE_MA15;
|
||||
else
|
||||
func_nr = VAR_WORD_MODE_MA13;
|
||||
|
||||
if (!(ega->crtc[0x17] & 0x01))
|
||||
func_nr |= VAR_ROW0_MA13;
|
||||
if (!(ega->crtc[0x17] & 0x02))
|
||||
func_nr |= VAR_ROW1_MA14;
|
||||
if (!(ega->crtc[0x17] & 0x01))
|
||||
func_nr |= VAR_ROW0_MA13;
|
||||
if (!(ega->crtc[0x17] & 0x02))
|
||||
func_nr |= VAR_ROW1_MA14;
|
||||
|
||||
ega->remap_required = (func_nr != 0);
|
||||
ega->remap_func = address_remap_funcs[func_nr];
|
||||
ega->remap_required = (func_nr != 0);
|
||||
ega->remap_func = address_remap_funcs[func_nr];
|
||||
}
|
||||
|
||||
#endif /*VIDEO_RENDER_REMAP_H*/
|
||||
|
@@ -37,22 +37,6 @@
|
||||
#include <86box/vid_svga_render.h>
|
||||
#include "cpu.h"
|
||||
|
||||
#define INT_VSY (1 << 0)
|
||||
#define INT_GE_BSY (1 << 1)
|
||||
#define INT_FIFO_OVR (1 << 2)
|
||||
#define INT_FIFO_EMP (1 << 3)
|
||||
#define INT_MASK 0xf
|
||||
|
||||
#define FIFO_MASK (FIFO_SIZE - 1)
|
||||
#define FIFO_ENTRY_SIZE (1 << 31)
|
||||
|
||||
#define FIFO_ENTRIES_8514 (dev->fifo_write_idx - dev->fifo_read_idx)
|
||||
#define FIFO_FULL_8514 ((dev->fifo_write_idx - dev->fifo_read_idx) >= FIFO_SIZE)
|
||||
#define FIFO_EMPTY_8514 (dev->fifo_read_idx == dev->fifo_write_idx)
|
||||
|
||||
#define FIFO_TYPE_8514 0xff000000
|
||||
#define FIFO_ADDR_8514 0x00ffffff
|
||||
|
||||
static void ibm8514_accel_out_fifo(ibm8514_t *dev, uint16_t port, uint32_t val, int len);
|
||||
static void ibm8514_accel_outb(uint16_t port, uint8_t val, void *p);
|
||||
static void ibm8514_accel_outw(uint16_t port, uint16_t val, void *p);
|
||||
@@ -368,17 +352,14 @@ ibm8514_accel_out_fifo(ibm8514_t *dev, uint16_t port, uint32_t val, int len)
|
||||
case 0x82e8:
|
||||
case 0xc2e8:
|
||||
if (len == 1) {
|
||||
dev->accel.cur_y_bit12 = (dev->accel.cur_y_bit12 & 0xf00) | val;
|
||||
dev->accel.cur_y = (dev->accel.cur_y & 0x700) | val;
|
||||
} else {
|
||||
dev->accel.cur_y_bit12 = val & 0xfff;
|
||||
dev->accel.cur_y = val & 0x7ff;
|
||||
}
|
||||
break;
|
||||
case 0x82e9:
|
||||
case 0xc2e9:
|
||||
if (len == 1) {
|
||||
dev->accel.cur_y_bit12 = (dev->accel.cur_y_bit12 & 0xff) | ((val & 0x0f) << 8);
|
||||
dev->accel.cur_y = (dev->accel.cur_y & 0xff) | ((val & 0x07) << 8);
|
||||
}
|
||||
break;
|
||||
@@ -386,17 +367,14 @@ ibm8514_accel_out_fifo(ibm8514_t *dev, uint16_t port, uint32_t val, int len)
|
||||
case 0x86e8:
|
||||
case 0xc6e8:
|
||||
if (len == 1) {
|
||||
dev->accel.cur_x_bit12 = (dev->accel.cur_x_bit12 & 0xf00) | val;
|
||||
dev->accel.cur_x = (dev->accel.cur_x & 0x700) | val;
|
||||
} else {
|
||||
dev->accel.cur_x_bit12 = val & 0xfff;
|
||||
dev->accel.cur_x = val & 0x7ff;
|
||||
}
|
||||
break;
|
||||
case 0x86e9:
|
||||
case 0xc6e9:
|
||||
if (len == 1) {
|
||||
dev->accel.cur_x_bit12 = (dev->accel.cur_x_bit12 & 0xff) | ((val & 0x0f) << 8);
|
||||
dev->accel.cur_x = (dev->accel.cur_x & 0xff) | ((val & 0x07) << 8);
|
||||
}
|
||||
break;
|
||||
@@ -448,7 +426,7 @@ ibm8514_accel_out_fifo(ibm8514_t *dev, uint16_t port, uint32_t val, int len)
|
||||
else {
|
||||
dev->accel.err_term = val & 0x3fff;
|
||||
if (val & 0x2000)
|
||||
dev->accel.err_term |= ~0x3fff;
|
||||
dev->accel.err_term |= ~0x1fff;
|
||||
}
|
||||
break;
|
||||
case 0x92e9:
|
||||
@@ -456,7 +434,7 @@ ibm8514_accel_out_fifo(ibm8514_t *dev, uint16_t port, uint32_t val, int len)
|
||||
if (len == 1) {
|
||||
dev->accel.err_term = (dev->accel.err_term & 0xff) | ((val & 0x3f) << 8);
|
||||
if (val & 0x20)
|
||||
dev->accel.err_term |= ~0x3fff;
|
||||
dev->accel.err_term |= ~0x1fff;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -684,7 +662,6 @@ static void
|
||||
ibm8514_ramdac_out(uint16_t port, uint8_t val, void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)p;
|
||||
uint8_t index;
|
||||
|
||||
switch (port) {
|
||||
case 0x2ea:
|
||||
@@ -707,7 +684,6 @@ ibm8514_ramdac_in(uint16_t port, void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)p;
|
||||
uint8_t ret = 0xff;
|
||||
uint8_t index;
|
||||
|
||||
switch (port) {
|
||||
case 0x2ea:
|
||||
@@ -727,62 +703,6 @@ ibm8514_ramdac_in(uint16_t port, void *p)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
ibm8514_io_remove(svga_t *svga)
|
||||
{
|
||||
io_removehandler(0x2e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x2ea, 0x0004, ibm8514_ramdac_in, NULL, NULL, ibm8514_ramdac_out, NULL, NULL, svga);
|
||||
io_removehandler(0x6e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x12e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x16e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x1ae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x1ee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x22e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x26e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x2ee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x42e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x4ae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x52e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x56e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x5ae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x5ee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x82e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x86e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x8ae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x8ee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x92e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x96e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x9ae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0x9ee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xa2e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xa6e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xaae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xaee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xb2e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xb6e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xbae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xbee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xe2e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
|
||||
io_removehandler(0xc2e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xc6e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xcae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xcee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xd2e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xd6e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xdae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xdee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xe6e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xeae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xeee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xf2e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xf6e8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xfae8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
io_removehandler(0xfee8, 0x0002, ibm8514_accel_inb, ibm8514_accel_inw, NULL, ibm8514_accel_outb, ibm8514_accel_outw, NULL, svga);
|
||||
}
|
||||
|
||||
static void
|
||||
ibm8514_io_set(svga_t *svga)
|
||||
{
|
||||
@@ -1117,8 +1037,6 @@ ibm8514_short_stroke_start(int count, int cpu_input, uint32_t mix_dat, uint32_t
|
||||
ibm8514_accel_start(count, cpu_input, mix_dat, cpu_dat, dev, len);
|
||||
}
|
||||
|
||||
#define SWAP(a,b) { tmpswap = a; a = b; b = tmpswap; }
|
||||
|
||||
static void
|
||||
ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, ibm8514_t *dev, int len)
|
||||
{
|
||||
@@ -1139,7 +1057,6 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||
uint32_t old_mix_dat;
|
||||
int and3 = dev->accel.cur_x & 3;
|
||||
uint8_t poly_src = 0;
|
||||
int16_t tmpswap;
|
||||
|
||||
if (dev->accel.cmd & 0x100) {
|
||||
dev->force_busy = 1;
|
||||
@@ -2717,7 +2634,7 @@ bitblt_pix:
|
||||
break;
|
||||
}
|
||||
|
||||
READ(dev->accel.dest + dev->accel.cx, dest_dat);
|
||||
READ(dev->accel.dest + dev->accel.dx, dest_dat);
|
||||
|
||||
if ((compare_mode == 0) ||
|
||||
((compare_mode == 0x10) && (dest_dat >= compare)) ||
|
||||
@@ -2729,7 +2646,7 @@ bitblt_pix:
|
||||
old_dest_dat = dest_dat;
|
||||
MIX(mix_dat & mix_mask, dest_dat, src_dat);
|
||||
dest_dat = (dest_dat & wrt_mask) | (old_dest_dat & ~wrt_mask);
|
||||
WRITE(dev->accel.dest + dev->accel.cx, dest_dat);
|
||||
WRITE(dev->accel.dest + dev->accel.dx, dest_dat);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -445,7 +445,6 @@ xga_ext_inb(uint16_t addr, void *p)
|
||||
svga_t *svga = (svga_t *)p;
|
||||
xga_t *xga = &svga->xga;
|
||||
uint8_t ret, index;
|
||||
uint16_t sprite_idx;
|
||||
|
||||
switch (addr & 0x0f) {
|
||||
case 0:
|
||||
@@ -898,7 +897,7 @@ xga_short_stroke(svga_t *svga, uint8_t ssv)
|
||||
uint32_t srcbase = xga->accel.px_map_base[xga->accel.src_map];
|
||||
int y = ssv & 0x0f;
|
||||
int x = 0;
|
||||
int dx, dy, dirx, diry;
|
||||
int dx, dy, dirx = 0, diry = 0;
|
||||
|
||||
dx = xga->accel.dst_map_x & 0x1fff;
|
||||
if (xga->accel.dst_map_x & 0x1800)
|
||||
@@ -1916,7 +1915,7 @@ xga_memio_writel(uint32_t addr, uint32_t val, void *p)
|
||||
static uint8_t
|
||||
xga_mem_read(uint32_t addr, xga_t *xga, svga_t *svga)
|
||||
{
|
||||
uint8_t temp;
|
||||
uint8_t temp = 0xff;
|
||||
|
||||
addr &= 0x1fff;
|
||||
|
||||
@@ -2031,19 +2030,16 @@ static void
|
||||
xga_hwcursor_draw(svga_t *svga, int displine)
|
||||
{
|
||||
xga_t *xga = &svga->xga;
|
||||
uint8_t dat;
|
||||
uint8_t dat = 0;
|
||||
int offset = xga->hwcursor_latch.x - xga->hwcursor_latch.xoff;
|
||||
int x, x_pos, y_pos;
|
||||
int comb;
|
||||
int comb = 0;
|
||||
uint32_t *p;
|
||||
uint8_t *cd;
|
||||
int idx = (xga->cursor_data_on) ? 32 : 0;
|
||||
|
||||
if (xga->interlace && xga->hwcursor_oddeven)
|
||||
xga->hwcursor_latch.addr += 16;
|
||||
|
||||
cd = (uint8_t *) xga->sprite_data;
|
||||
|
||||
y_pos = displine;
|
||||
x_pos = offset + svga->x_add;
|
||||
p = buffer32->line[y_pos];
|
||||
@@ -2155,7 +2151,6 @@ xga_render_16bpp(xga_t *xga, svga_t *svga)
|
||||
int x;
|
||||
uint32_t *p;
|
||||
uint32_t dat;
|
||||
uint32_t addr;
|
||||
|
||||
if ((xga->displine + svga->y_add) < 0)
|
||||
return;
|
||||
@@ -2169,7 +2164,7 @@ xga_render_16bpp(xga_t *xga, svga_t *svga)
|
||||
|
||||
for (x = 0; x <= (xga->h_disp); x += 8) {
|
||||
dat = *(uint32_t *)(&xga->vram[(xga->ma + (x << 1)) & xga->vram_mask]);
|
||||
p[x] = video_16to32[dat & 0xffff];
|
||||
p[x] = video_16to32[dat & 0xffff];
|
||||
p[x + 1] = video_16to32[dat >> 16];
|
||||
|
||||
dat = *(uint32_t *)(&xga->vram[(xga->ma + (x << 1) + 4) & xga->vram_mask]);
|
||||
@@ -2215,9 +2210,6 @@ xga_write(uint32_t addr, uint8_t val, void *p)
|
||||
static void
|
||||
xga_writeb(uint32_t addr, uint8_t val, void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)p;
|
||||
xga_t *xga = &svga->xga;
|
||||
|
||||
//pclog("[%04X:%08X]: WriteB\n", CS, cpu_state.pc);
|
||||
xga_write(addr, val, p);
|
||||
}
|
||||
@@ -2225,9 +2217,6 @@ xga_writeb(uint32_t addr, uint8_t val, void *p)
|
||||
static void
|
||||
xga_writew(uint32_t addr, uint16_t val, void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)p;
|
||||
xga_t *xga = &svga->xga;
|
||||
|
||||
//pclog("[%04X:%08X]: WriteW\n", CS, cpu_state.pc);
|
||||
xga_write(addr, val, p);
|
||||
xga_write(addr + 1, val >> 8, p);
|
||||
@@ -2236,9 +2225,6 @@ xga_writew(uint32_t addr, uint16_t val, void *p)
|
||||
static void
|
||||
xga_writel(uint32_t addr, uint32_t val, void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)p;
|
||||
xga_t *xga = &svga->xga;
|
||||
|
||||
//pclog("[%04X:%08X]: WriteL\n", CS, cpu_state.pc);
|
||||
xga_write(addr, val, p);
|
||||
xga_write(addr + 1, val >> 8, p);
|
||||
@@ -2344,8 +2330,6 @@ xga_read(uint32_t addr, void *p)
|
||||
static uint8_t
|
||||
xga_readb(uint32_t addr, void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)p;
|
||||
xga_t *xga = &svga->xga;
|
||||
uint8_t ret;
|
||||
|
||||
ret = xga_read(addr, p);
|
||||
@@ -2356,8 +2340,6 @@ xga_readb(uint32_t addr, void *p)
|
||||
static uint16_t
|
||||
xga_readw(uint32_t addr, void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)p;
|
||||
xga_t *xga = &svga->xga;
|
||||
uint16_t ret;
|
||||
|
||||
ret = xga_read(addr, p);
|
||||
@@ -2369,8 +2351,6 @@ xga_readw(uint32_t addr, void *p)
|
||||
static uint32_t
|
||||
xga_readl(uint32_t addr, void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)p;
|
||||
xga_t *xga = &svga->xga;
|
||||
uint32_t ret;
|
||||
|
||||
ret = xga_read(addr, p);
|
||||
@@ -2665,16 +2645,11 @@ xga_mca_feedb(void *priv)
|
||||
}
|
||||
|
||||
static void
|
||||
xga_pos_out(uint16_t addr, uint8_t val, void *priv)
|
||||
xga_mca_reset(void *p)
|
||||
{
|
||||
svga_t *svga = (svga_t *)priv;
|
||||
xga_t *xga = &svga->xga;
|
||||
svga_t *svga = (svga_t *)p;
|
||||
|
||||
mem_mapping_disable(&svga->mapping);
|
||||
if (val & 0x08) {
|
||||
mem_mapping_enable(&svga->mapping);
|
||||
xga_updatemapping(svga);
|
||||
}
|
||||
xga_mca_write(0x102, 0, svga);
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
@@ -2692,6 +2667,7 @@ static void
|
||||
xga_t *xga = &svga->xga;
|
||||
FILE *f;
|
||||
uint32_t temp;
|
||||
uint32_t initial_bios_addr = device_get_config_hex20("init_bios_addr");
|
||||
uint8_t *rom = NULL;
|
||||
|
||||
xga->type = device_get_config_int("type");
|
||||
@@ -2704,7 +2680,7 @@ static void
|
||||
xga->on = 0;
|
||||
xga->hwcursor.cur_xsize = 64;
|
||||
xga->hwcursor.cur_ysize = 64;
|
||||
xga->bios_rom.sz = 0x8000;
|
||||
xga->bios_rom.sz = 0x2000;
|
||||
|
||||
f = rom_fopen(xga->type ? XGA2_BIOS_PATH : XGA_BIOS_PATH, "rb");
|
||||
(void)fseek(f, 0L, SEEK_END);
|
||||
@@ -2729,7 +2705,7 @@ static void
|
||||
xga->instance = 0;
|
||||
xga->rom_addr = 0;
|
||||
mem_mapping_add(&xga->bios_rom.mapping,
|
||||
0xd8000, xga->bios_rom.sz,
|
||||
initial_bios_addr, xga->bios_rom.sz,
|
||||
rom_read, rom_readw, rom_readl,
|
||||
NULL, NULL, NULL,
|
||||
xga->bios_rom.rom, MEM_MAPPING_EXTERNAL, &xga->bios_rom);
|
||||
@@ -2759,7 +2735,7 @@ static void
|
||||
xga->pos_regs[1] = 0x8f;
|
||||
|
||||
if (xga->bus & DEVICE_MCA) {
|
||||
mca_add(xga_mca_read, xga_mca_write, xga_mca_feedb, NULL, svga);
|
||||
mca_add(xga_mca_read, xga_mca_write, xga_mca_feedb, xga_mca_reset, svga);
|
||||
} else {
|
||||
io_sethandler(0x0100, 0x0008, xga_pos_in, NULL, NULL, NULL, NULL, NULL, svga);
|
||||
io_sethandler(0x2100 + (xga->instance << 4), 0x0010, xga_ext_inb, NULL, NULL, xga_ext_outb, NULL, NULL, svga);
|
||||
@@ -2805,6 +2781,25 @@ xga_force_redraw(void *p)
|
||||
|
||||
static const device_config_t xga_configuration[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "init_bios_addr",
|
||||
.description = "Initial MCA BIOS Address (before POS configuration)",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc0000,
|
||||
.file_filter = "",
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "C000H", .value = 0xc0000 },
|
||||
{ .description = "C800H", .value = 0xc8000 },
|
||||
{ .description = "CC00H", .value = 0xcc000 },
|
||||
{ .description = "D000H", .value = 0xd0000 },
|
||||
{ .description = "D400H", .value = 0xd4000 },
|
||||
{ .description = "D800H", .value = 0xd8000 },
|
||||
{ .description = "DC00H", .value = 0xdc000 },
|
||||
{ .description = "" }
|
||||
},
|
||||
},
|
||||
{
|
||||
.name = "type",
|
||||
.description = "XGA type",
|
||||
|
Reference in New Issue
Block a user