DECpc LPV fixes and implementation of the on-board S3 805 with the AT&T 490 RAMDAC, fixes #2349.

This commit is contained in:
OBattler
2022-07-26 22:32:01 +02:00
parent 1261f1cedb
commit 87cf281035
4 changed files with 43 additions and 5 deletions

View File

@@ -441,6 +441,7 @@ extern const device_t s3_metheus_86c928_isa_device;
extern const device_t s3_metheus_86c928_vlb_device; extern const device_t s3_metheus_86c928_vlb_device;
extern const device_t s3_spea_mercury_lite_86c928_pci_device; extern const device_t s3_spea_mercury_lite_86c928_pci_device;
extern const device_t s3_spea_mirage_86c801_isa_device; extern const device_t s3_spea_mirage_86c801_isa_device;
extern const device_t s3_86c805_onboard_vlb_device;
extern const device_t s3_spea_mirage_86c805_vlb_device; extern const device_t s3_spea_mirage_86c805_vlb_device;
extern const device_t s3_mirocrystal_8s_805_vlb_device; extern const device_t s3_mirocrystal_8s_805_vlb_device;
extern const device_t s3_mirocrystal_10sd_805_vlb_device; extern const device_t s3_mirocrystal_10sd_805_vlb_device;

View File

@@ -441,11 +441,14 @@ machine_at_decpclpv_init(const machine_t *model)
machine_at_common_init(model); machine_at_common_init(model);
device_add(&sis_85c461_device); device_add(&sis_85c461_device);
if (gfxcard == VID_INTERNAL)
device_add(&s3_86c805_onboard_vlb_device);
/* TODO: Phoenix MultiKey KBC */ /* TODO: Phoenix MultiKey KBC */
device_add(&keyboard_ps2_ami_pci_device); device_add(&keyboard_ps2_ami_pci_device);
device_add(&ide_isa_2ch_device); device_add(&ide_isa_2ch_device);
device_add(&fdc37c663_device); device_add(&fdc37c663_ide_device);
/* TODO: On-board S3 805 with AT&T 490 RAM DAC. */
return ret; return ret;
} }

View File

@@ -4721,7 +4721,7 @@ const machine_t machines[] = {
.max_multi = 0 .max_multi = 0
}, },
.bus_flags = MACHINE_PS2, .bus_flags = MACHINE_PS2,
.flags = MACHINE_IDE_DUAL, /* No MACHINE_VIDEO yet, because on-board video is not yet implemented. */ .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO,
.ram = { .ram = {
.min = 1024, .min = 1024,
.max = 32768, .max = 32768,
@@ -4731,7 +4731,7 @@ const machine_t machines[] = {
.kbc = KBC_UNKNOWN, .kbc = KBC_UNKNOWN,
.kbc_p1 = 0, .kbc_p1 = 0,
.gpio = 0, .gpio = 0,
.device = NULL, .device = &s3_86c805_onboard_vlb_device,
.vid_device = NULL .vid_device = NULL
}, },
/* Uses an NEC 90M002A (UPD82C42C, 8042 clone) with unknown firmware. */ /* Uses an NEC 90M002A (UPD82C42C, 8042 clone) with unknown firmware. */

View File

@@ -107,7 +107,8 @@ enum
S3_MIROCRYSTAL8S_805, S3_MIROCRYSTAL8S_805,
S3_NUMBER9_9FX_531, S3_NUMBER9_9FX_531,
S3_NUMBER9_9FX_771, S3_NUMBER9_9FX_771,
S3_SPEA_MERCURY_LITE_PCI S3_SPEA_MERCURY_LITE_PCI,
S3_86C805_ONBOARD
}; };
@@ -6803,6 +6804,11 @@ static void *s3_init(const device_t *info)
chip = S3_86C801; chip = S3_86C801;
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_86c801); video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_86c801);
break; break;
case S3_86C805_ONBOARD:
bios_fn = NULL;
chip = S3_86C805;
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_86c805);
break;
case S3_SPEA_MIRAGE_86C805: case S3_SPEA_MIRAGE_86C805:
bios_fn = ROM_SPEA_MIRAGE_86C805; bios_fn = ROM_SPEA_MIRAGE_86C805;
chip = S3_86C805; chip = S3_86C805;
@@ -7213,6 +7219,20 @@ static void *s3_init(const device_t *info)
svga->getclock = av9194_getclock; svga->getclock = av9194_getclock;
break; break;
case S3_86C805_ONBOARD:
svga->decode_mask = (2 << 20) - 1;
stepping = 0xa0; /*86C801/86C805*/
s3->id = stepping;
s3->id_ext = stepping;
s3->id_ext_pci = 0;
s3->packed_mmio = 0;
svga->crtc[0x5a] = 0x0a;
svga->ramdac = device_add(&att490_ramdac_device);
svga->clock_gen = device_add(&av9194_device);
svga->getclock = av9194_getclock;
break;
case S3_PHOENIX_86C801: case S3_PHOENIX_86C801:
case S3_PHOENIX_86C805: case S3_PHOENIX_86C805:
svga->decode_mask = (2 << 20) - 1; svga->decode_mask = (2 << 20) - 1;
@@ -7818,6 +7838,20 @@ const device_t s3_spea_mirage_86c801_isa_device = {
.config = s3_9fx_config .config = s3_9fx_config
}; };
const device_t s3_86c805_onboard_vlb_device = {
.name = "S3 86c805 VLB On-Board",
.internal_name = "px_s3_805_onboard_vlb",
.flags = DEVICE_VLB,
.local = S3_86C805_ONBOARD,
.init = s3_init,
.close = s3_close,
.reset = s3_reset,
{ .available = NULL },
.speed_changed = s3_speed_changed,
.force_redraw = s3_force_redraw,
.config = s3_9fx_config
};
const device_t s3_spea_mirage_86c805_vlb_device = { const device_t s3_spea_mirage_86c805_vlb_device = {
.name = "S3 86c805 VLB (SPEA Mirage VL)", .name = "S3 86c805 VLB (SPEA Mirage VL)",
.internal_name = "px_s3_v7_805_vlb", .internal_name = "px_s3_v7_805_vlb",