mirror of
https://github.com/86Box/86Box.git
synced 2026-02-28 09:54:21 -07:00
Merge remote-tracking branch 'origin/master' into ls120
This commit is contained in:
@@ -8,6 +8,9 @@
|
||||
*
|
||||
* Implementation of the Western Digital WD76C10 chipset.
|
||||
*
|
||||
* It appears that it hold separate lock/unlock states depending
|
||||
* on whether or not the access to port F073h was 8-bit or 16-bit.
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2024 Miran Grca.
|
||||
@@ -103,7 +106,7 @@ typedef struct
|
||||
uint16_t ems_page_regs[40];
|
||||
uint16_t lpt_base;
|
||||
|
||||
int locked;
|
||||
int locked, lock8, lock16;
|
||||
|
||||
uint32_t mem_top, hmwp_base;
|
||||
uint32_t fast;
|
||||
@@ -1051,6 +1054,11 @@ wd76c10_outb(uint16_t port, uint8_t val, void *priv)
|
||||
if (valxor)
|
||||
nvr_lock_set(0x38, 0x08, (val & 0x08) ? 0x03 : 0x00, dev->nvr);
|
||||
break;
|
||||
|
||||
case 0xf073:
|
||||
dev->lock8 = ((val & 0x00ff) != 0x00da);
|
||||
dev->locked = dev->lock8 && dev->lock16;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1062,7 +1070,7 @@ wd76c10_outw(uint16_t port, uint16_t val, void *priv)
|
||||
uint8_t ems_en;
|
||||
|
||||
if (!dev->locked || (port < 0x1072) || (port > 0xf872) ||
|
||||
(port == 0xe072) || (port == 0xe872) || (port == 0xf073)) switch (port) {
|
||||
(port == 0xe072) || (port == 0xe872) || (port == 0xf073)) switch (port) {
|
||||
case 0x1072:
|
||||
dev->cpuclk = val;
|
||||
break;
|
||||
@@ -1165,7 +1173,8 @@ wd76c10_outw(uint16_t port, uint16_t val, void *priv)
|
||||
break;
|
||||
|
||||
case 0xf073:
|
||||
dev->locked = ((val & 0x00ff) != 0x00da);
|
||||
dev->lock16 = ((val & 0x00ff) != 0x00da);
|
||||
dev->locked = dev->lock8 && dev->lock16;
|
||||
break;
|
||||
|
||||
case 0xf872:
|
||||
@@ -1199,7 +1208,7 @@ wd76c10_inw(uint16_t port, void *priv)
|
||||
wd76c10_log("WD76C10: R dev->regs[%04x]\n", port);
|
||||
|
||||
if (!dev->locked || (port < 0x1072) || (port > 0xf872) ||
|
||||
(port == 0xe072) || (port == 0xe872) || (port == 0xf073)) switch (port) {
|
||||
(port == 0xe072) || (port == 0xe872) || (port == 0xf073)) switch (port) {
|
||||
case 0x1072:
|
||||
ret = dev->cpuclk;
|
||||
break;
|
||||
@@ -1303,6 +1312,8 @@ wd76c10_reset(void *priv)
|
||||
{
|
||||
wd76c10_t *dev = (wd76c10_t *)priv;
|
||||
|
||||
dev->lock8 = 1;
|
||||
dev->lock16 = 1;
|
||||
dev->locked = 1;
|
||||
dev->toggle = 0;
|
||||
|
||||
@@ -1460,7 +1471,9 @@ wd76c10_init(UNUSED(const device_t *info))
|
||||
io_sethandler(0xe872, 1, NULL, wd76c10_inw, NULL, NULL, wd76c10_outw, NULL, dev);
|
||||
|
||||
/* Lock/Unlock Configuration */
|
||||
io_sethandler(0xf073, 1, NULL, NULL, NULL, NULL, wd76c10_outw, NULL, dev);
|
||||
io_sethandler(0xf073, 1, NULL, NULL, NULL, wd76c10_outb, wd76c10_outw, NULL, dev);
|
||||
// io_sethandler(0xf073, 1, NULL, NULL, NULL, NULL, wd76c10_outw, NULL, dev);
|
||||
// io_sethandler(0xf073, 1, NULL, NULL, NULL, wd76c10_outb, NULL, NULL, dev);
|
||||
|
||||
/* Cache Flush */
|
||||
io_sethandler(0xf872, 1, NULL, NULL, NULL, NULL, wd76c10_outw, NULL, dev);
|
||||
|
||||
@@ -2016,7 +2016,7 @@ machine_xt_z184_init(const machine_t *model)
|
||||
/* So that serial_standalone_init() won't do anything. */
|
||||
serial_set_next_inst(SERIAL_MAX - 1);
|
||||
|
||||
device_add(&cga_device);
|
||||
device_add(&v6355d_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -6628,8 +6628,8 @@ const machine_t machines[] = {
|
||||
.default_jumpered_ecp_dma = -1,
|
||||
.kbc_device = &kbc_at_device,
|
||||
.kbc_params = KBC_VEN_QUADTEL,
|
||||
.nvr_device = &nvr_at_device,
|
||||
.nvr_params = NVR_AT,
|
||||
.nvr_device = NULL,
|
||||
.nvr_params = 0x00000000,
|
||||
.sio_device = NULL,
|
||||
.sio_params = 0x00000000,
|
||||
.kbc_p1 = 0x00000cf0,
|
||||
@@ -19893,8 +19893,8 @@ const machine_t machines[] = {
|
||||
.default_jumpered_ecp_dma = -1,
|
||||
.kbc_device = NULL,
|
||||
.kbc_params = 0x00000000,
|
||||
.nvr_device = &nvr_at_device,
|
||||
.nvr_params = NVR_AT,
|
||||
.nvr_device = NULL,
|
||||
.nvr_params = 0x00000000,
|
||||
.sio_device = NULL,
|
||||
.sio_params = 0x00000000,
|
||||
.kbc_p1 = 0x00000cf0,
|
||||
|
||||
@@ -53,13 +53,13 @@ typedef const struct {
|
||||
static SCSI_CARD scsi_cards[] = {
|
||||
// clang-format off
|
||||
{ &device_none, },
|
||||
/* ISA/Sidecar */
|
||||
{ &scsi_ls2000_device, },
|
||||
/* ISA */
|
||||
{ &scsi_lcs6821n_device, },
|
||||
{ &scsi_rt1000b_device, },
|
||||
{ &scsi_t128_device, },
|
||||
{ &scsi_t130b_device, },
|
||||
/* ISA/Sidecar */
|
||||
{ &scsi_ls2000_device, },
|
||||
/* ISA16 */
|
||||
{ &aha154xa_device, },
|
||||
{ &aha154xb_device, },
|
||||
@@ -91,12 +91,12 @@ static SCSI_CARD scsi_cards[] = {
|
||||
{ &ncr53c825a_pci_device, },
|
||||
{ &ncr53c860_pci_device, },
|
||||
{ &ncr53c875_pci_device, },
|
||||
{ &dc390_pci_device, },
|
||||
{ &qla1040b_device, },
|
||||
{ &qla1080_device, },
|
||||
{ &qla1240_device, },
|
||||
{ &qla1280_device, },
|
||||
{ &qla12160a_device, },
|
||||
{ &dc390_pci_device, },
|
||||
{ NULL, },
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
@@ -122,11 +122,11 @@ static const SOUND_CARD sound_cards[] = {
|
||||
{ &ess_ess0102_pnp_device },
|
||||
{ &ess_ess0968_pnp_device },
|
||||
{ &ssi2001_device },
|
||||
{ &thunderboard_device },
|
||||
{ &mmb_device },
|
||||
#ifdef USE_LIBSERIALPORT /*The following devices required LIBSERIALPORT*/
|
||||
{ &opl2board_device },
|
||||
#endif
|
||||
{ &thunderboard_device },
|
||||
{ &pasplus_device },
|
||||
{ &sb_1_device },
|
||||
{ &sb_15_device },
|
||||
|
||||
Reference in New Issue
Block a user