Fixed video BIOS loading for AMAJ machine.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Oak OTI037C/67/077 emulation.
|
||||
*
|
||||
* Version: @(#)vid_oak_oti.c 1.0.12 2018/10/07
|
||||
* Version: @(#)vid_oak_oti.c 1.0.13 2018/10/08
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -81,9 +81,6 @@ typedef struct {
|
||||
} oti_t;
|
||||
|
||||
|
||||
static const video_timings_t oti_timing = {VID_ISA,6,8,16,6,8,16};
|
||||
|
||||
|
||||
static void
|
||||
oti_out(uint16_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
@@ -91,7 +88,6 @@ oti_out(uint16_t addr, uint8_t val, void *priv)
|
||||
svga_t *svga = &dev->svga;
|
||||
uint8_t old, idx, enable;
|
||||
|
||||
INFO("OAK: out(%04x, %02x)\n", addr, val);
|
||||
if (!dev->chip_id && !(dev->enable_register & 1) && (addr != 0x3C3))
|
||||
return;
|
||||
|
||||
@@ -209,7 +205,6 @@ oti_in(uint16_t addr, void *priv)
|
||||
svga_t *svga = &dev->svga;
|
||||
uint8_t idx, ret = 0xff;
|
||||
|
||||
INFO("OAK: in(%04x)", addr);
|
||||
if (!dev->chip_id && !(dev->enable_register & 1) &&
|
||||
(addr != 0x3c3)) return 0xff;
|
||||
|
||||
@@ -316,7 +311,6 @@ INFO("OAK: in(%04x)", addr);
|
||||
ret = svga_in(addr, svga);
|
||||
break;
|
||||
}
|
||||
INFO(" = %02x\n", ret);
|
||||
|
||||
return(ret);
|
||||
}
|
||||
@@ -327,7 +321,6 @@ oti_pos_out(uint16_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
oti_t *dev = (oti_t *)priv;
|
||||
|
||||
INFO("OAK: pos_out(%04x, %02x)\n", addr, val);
|
||||
if ((val ^ dev->pos) & 8) {
|
||||
if (val & 8)
|
||||
io_sethandler(0x03c0, 32,
|
||||
@@ -346,7 +339,6 @@ oti_pos_in(uint16_t addr, void *priv)
|
||||
{
|
||||
oti_t *dev = (oti_t *)priv;
|
||||
|
||||
INFO("OAK: pos_in(%04x) = %02x\n", addr, dev->pos);
|
||||
return(dev->pos);
|
||||
}
|
||||
|
||||
@@ -399,7 +391,12 @@ oti_init(const device_t *info)
|
||||
case OTI_037C:
|
||||
fn = BIOS_037C_PATH;
|
||||
dev->vram_size = 256;
|
||||
dev->regs[0] = 0x08; /* FIXME: The BIOS wants to read this at index 0? This index is undocumented. */
|
||||
|
||||
/*
|
||||
* FIXME: The BIOS wants to read this at index 0?
|
||||
* This index is undocumented.
|
||||
*/
|
||||
dev->regs[0] = 0x08;
|
||||
break;
|
||||
|
||||
case OTI_067:
|
||||
@@ -461,8 +458,6 @@ oti_init(const device_t *info)
|
||||
INFO("VIDEO: %s (chip=%02x(%i), mem=%i)\n",
|
||||
info->name, dev->chip_id, info->local, dev->vram_size);
|
||||
|
||||
video_inform(VID_TYPE_SPEC, &oti_timing);
|
||||
|
||||
svga_init(&dev->svga, dev, dev->vram_size << 10,
|
||||
recalc_timings, oti_in, oti_out, NULL, NULL);
|
||||
|
||||
@@ -471,6 +466,9 @@ oti_init(const device_t *info)
|
||||
|
||||
dev->svga.miscout = 1;
|
||||
|
||||
video_inform(VID_TYPE_SPEC,
|
||||
(const video_timings_t *)info->vid_timing);
|
||||
|
||||
return(dev);
|
||||
}
|
||||
|
||||
@@ -552,6 +550,9 @@ static const device_config_t oti077_config[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static const video_timings_t oti_timing = {VID_ISA,6,8,16,6,8,16};
|
||||
|
||||
|
||||
const device_t oti037c_device = {
|
||||
"Oak OTI-037C",
|
||||
DEVICE_ISA,
|
||||
@@ -560,7 +561,7 @@ const device_t oti037c_device = {
|
||||
oti037c_available,
|
||||
speed_changed,
|
||||
force_redraw,
|
||||
NULL,
|
||||
&oti_timing,
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -572,7 +573,7 @@ const device_t oti067_device = {
|
||||
oti067_available,
|
||||
speed_changed,
|
||||
force_redraw,
|
||||
NULL,
|
||||
&oti_timing,
|
||||
oti067_config
|
||||
};
|
||||
|
||||
@@ -584,7 +585,7 @@ const device_t oti067_onboard_device = {
|
||||
NULL,
|
||||
speed_changed,
|
||||
force_redraw,
|
||||
NULL,
|
||||
&oti_timing,
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -596,6 +597,6 @@ const device_t oti077_device = {
|
||||
oti077_available,
|
||||
speed_changed,
|
||||
force_redraw,
|
||||
NULL,
|
||||
&oti_timing,
|
||||
oti077_config
|
||||
};
|
||||
|
||||
@@ -57,9 +57,6 @@
|
||||
#include "machine.h"
|
||||
|
||||
|
||||
#define BIOS_AMA932J_VIDEO_PATH L"machines/unknown/ama932j/oti067.bin"
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint8_t port_92;
|
||||
|
||||
@@ -659,6 +656,7 @@ headland_common_init(int ht386)
|
||||
void
|
||||
machine_at_ama932j_init(const machine_t *model, void *arg)
|
||||
{
|
||||
romdef_t *roms = (romdef_t *)arg;
|
||||
headland_t *dev;
|
||||
|
||||
machine_at_common_ide_init(model, arg);
|
||||
@@ -666,9 +664,11 @@ machine_at_ama932j_init(const machine_t *model, void *arg)
|
||||
dev = headland_common_init(1);
|
||||
|
||||
if (video_card == VID_INTERNAL) {
|
||||
rom_init(&dev->vid_bios, BIOS_AMA932J_VIDEO_PATH,
|
||||
0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_INTERNAL);
|
||||
/* Load the BIOS. */
|
||||
rom_init(&dev->vid_bios, roms->vidfn,
|
||||
0xc0000, roms->vidsz, roms->vidsz - 1, 0, 0);
|
||||
|
||||
/* Initialize the on-board controller. */
|
||||
device_add(&oti067_onboard_device);
|
||||
}
|
||||
}
|
||||
@@ -681,8 +681,6 @@ machine_at_tg286m_init(const machine_t *model, void *arg)
|
||||
|
||||
headland_common_init(0);
|
||||
|
||||
if (video_card == VID_INTERNAL) {
|
||||
if (video_card == VID_INTERNAL)
|
||||
device_add(&et4000k_tg286_isa_device);
|
||||
video_inform(VID_TYPE_SPEC, &oti067_timing);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user