Fixed the hard disk controller mess (and added a check to prevent double IDE initialization), and made IDE always initialized as a device_t.
This commit is contained in:
@@ -8,13 +8,13 @@
|
|||||||
*
|
*
|
||||||
* Common code to handle all sorts of disk controllers.
|
* Common code to handle all sorts of disk controllers.
|
||||||
*
|
*
|
||||||
* Version: @(#)hdc.c 1.0.8 2017/12/15
|
* Version: @(#)hdc.c 1.0.9 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
*
|
*
|
||||||
* Copyright 2016,2017 Miran Grca.
|
* Copyright 2016-2018 Miran Grca.
|
||||||
* Copyright 2017 Fred N. van Kempen.
|
* Copyright 2017,2018 Fred N. van Kempen.
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@@ -97,27 +97,36 @@ static struct {
|
|||||||
{ "[ISA] [IDE] PC/AT IDE Adapter", "ide_isa",
|
{ "[ISA] [IDE] PC/AT IDE Adapter", "ide_isa",
|
||||||
&ide_isa_device, 0 },
|
&ide_isa_device, 0 },
|
||||||
|
|
||||||
{ "[ISA] [IDE] PC/XT XTIDE", "xtide",
|
{ "[ISA] [IDE] PC/AT IDE Adapter (Dual-Channel)", "ide_isa_2ch",
|
||||||
&xtide_device , 0 },
|
&ide_isa_2ch_device, 0 },
|
||||||
|
|
||||||
{ "[ISA] [IDE] PC/AT XTIDE", "xtide_at",
|
{ "[ISA] [IDE] PC/AT XTIDE", "xtide_at",
|
||||||
&xtide_at_device, 0 },
|
&xtide_at_device, 0 },
|
||||||
|
|
||||||
{ "[ISA] [IDE] PS/2 XTIDE (Acculogic)", "xtide_ps2",
|
|
||||||
&xtide_ps2_device, 0 },
|
|
||||||
|
|
||||||
{ "[ISA] [IDE] PS/2 AT XTIDE (1.1.5)", "xtide_at_ps2",
|
{ "[ISA] [IDE] PS/2 AT XTIDE (1.1.5)", "xtide_at_ps2",
|
||||||
&xtide_at_ps2_device, 0 },
|
&xtide_at_ps2_device, 0 },
|
||||||
|
|
||||||
|
{ "[ISA] [XT IDE] Acculogic XT IDE", "xtide_acculogic",
|
||||||
|
&xtide_acculogic_device, 0 },
|
||||||
|
|
||||||
|
{ "[ISA] [XT IDE] PC/XT XTIDE", "xtide",
|
||||||
|
&xtide_device , 0 },
|
||||||
|
|
||||||
{ "[MCA] [ESDI] IBM PS/2 ESDI Fixed Disk Adapter","esdi_mca",
|
{ "[MCA] [ESDI] IBM PS/2 ESDI Fixed Disk Adapter","esdi_mca",
|
||||||
&esdi_ps2_device, 1 },
|
&esdi_ps2_device, 1 },
|
||||||
|
|
||||||
{ "[PCI] [IDE] PCI IDE Adapter", "ide_pci",
|
{ "[PCI] [IDE] PCI IDE Adapter", "ide_pci",
|
||||||
&ide_pci_device, 0 },
|
&ide_pci_device, 0 },
|
||||||
|
|
||||||
|
{ "[PCI] [IDE] PCI IDE Adapter (Dual-Channel)", "ide_pci_2ch",
|
||||||
|
&ide_pci_2ch_device, 0 },
|
||||||
|
|
||||||
{ "[VLB] [IDE] PC/AT IDE Adapter", "vlb_isa",
|
{ "[VLB] [IDE] PC/AT IDE Adapter", "vlb_isa",
|
||||||
&ide_vlb_device, 0 },
|
&ide_vlb_device, 0 },
|
||||||
|
|
||||||
|
{ "[VLB] [IDE] PC/AT IDE Adapter (Dual-Channel)", "vlb_isa_2ch",
|
||||||
|
&ide_vlb_2ch_device, 0 },
|
||||||
|
|
||||||
{ "", "", NULL, 0 }
|
{ "", "", NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
*
|
*
|
||||||
* Definitions for the common disk controller handler.
|
* Definitions for the common disk controller handler.
|
||||||
*
|
*
|
||||||
* Version: @(#)hdc.h 1.0.4 2017/12/15
|
* Version: @(#)hdc.h 1.0.5 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
*
|
*
|
||||||
* Copyright 2016,2017 Miran Grca.
|
* Copyright 2016-2018 Miran Grca.
|
||||||
* Copyright 2017 Fred N. van Kempen.
|
* Copyright 2017,2018 Fred N. van Kempen.
|
||||||
*/
|
*/
|
||||||
#ifndef EMU_HDC_H
|
#ifndef EMU_HDC_H
|
||||||
# define EMU_HDC_H
|
# define EMU_HDC_H
|
||||||
@@ -40,12 +40,16 @@ extern device_t esdi_at_wd1007vse1_device; /* esdi_at */
|
|||||||
extern device_t esdi_ps2_device; /* esdi_mca */
|
extern device_t esdi_ps2_device; /* esdi_mca */
|
||||||
|
|
||||||
extern device_t ide_isa_device; /* isa_ide */
|
extern device_t ide_isa_device; /* isa_ide */
|
||||||
extern device_t ide_pci_device; /* pci_ide */
|
extern device_t ide_isa_2ch_device; /* isa_ide_2ch */
|
||||||
|
extern device_t ide_isa_2ch_opt_device; /* isa_ide_2ch_opt */
|
||||||
extern device_t ide_vlb_device; /* vlb_ide */
|
extern device_t ide_vlb_device; /* vlb_ide */
|
||||||
|
extern device_t ide_vlb_2ch_device; /* vlb_ide_2ch */
|
||||||
|
extern device_t ide_pci_device; /* pci_ide */
|
||||||
|
extern device_t ide_pci_2ch_device; /* pci_ide_2ch */
|
||||||
|
|
||||||
extern device_t xtide_device; /* xtide_xt */
|
extern device_t xtide_device; /* xtide_xt */
|
||||||
extern device_t xtide_at_device; /* xtide_at */
|
extern device_t xtide_at_device; /* xtide_at */
|
||||||
extern device_t xtide_ps2_device; /* xtide_ps2 */
|
extern device_t xtide_acculogic_device; /* xtide_ps2 */
|
||||||
extern device_t xtide_at_ps2_device; /* xtide_at_ps2 */
|
extern device_t xtide_at_ps2_device; /* xtide_at_ps2 */
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
* Implementation of the IDE emulation for hard disks and ATAPI
|
* Implementation of the IDE emulation for hard disks and ATAPI
|
||||||
* CD-ROM devices.
|
* CD-ROM devices.
|
||||||
*
|
*
|
||||||
* Version: @(#)hdc_ide.c 1.0.25 2018/02/08
|
* Version: @(#)hdc_ide.c 1.0.26 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -106,6 +106,7 @@ int (*ide_bus_master_write)(int channel, uint8_t *data, int transfer_length);
|
|||||||
void (*ide_bus_master_set_irq)(int channel);
|
void (*ide_bus_master_set_irq)(int channel);
|
||||||
int64_t idecallback[5] = {0LL, 0LL, 0LL, 0LL, 0LL};
|
int64_t idecallback[5] = {0LL, 0LL, 0LL, 0LL, 0LL};
|
||||||
int cur_ide[5];
|
int cur_ide[5];
|
||||||
|
int ide_init_ch[2] = {0, 0};
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_IDE_LOG
|
#ifdef ENABLE_IDE_LOG
|
||||||
@@ -2701,16 +2702,6 @@ void ide_init_first(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ide_init(void)
|
|
||||||
{
|
|
||||||
ide_pri_enable();
|
|
||||||
ide_sec_enable();
|
|
||||||
|
|
||||||
timer_add(ide_callback_pri, &idecallback[0], &idecallback[0], NULL);
|
|
||||||
timer_add(ide_callback_sec, &idecallback[1], &idecallback[1], NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ide_xtide_init(void)
|
void ide_xtide_init(void)
|
||||||
{
|
{
|
||||||
ide_bus_master_read = ide_bus_master_write = NULL;
|
ide_bus_master_read = ide_bus_master_write = NULL;
|
||||||
@@ -2731,21 +2722,18 @@ void secondary_ide_check(void)
|
|||||||
int secondary_cdroms = 0;
|
int secondary_cdroms = 0;
|
||||||
int secondary_zips = 0;
|
int secondary_zips = 0;
|
||||||
|
|
||||||
for (i=0; i<ZIP_NUM; i++)
|
for (i=0; i<ZIP_NUM; i++) {
|
||||||
{
|
|
||||||
if ((zip_drives[i].ide_channel >= 2) && (zip_drives[i].ide_channel <= 3) && ((zip_drives[i].bus_type == ZIP_BUS_ATAPI_PIO_ONLY) || (zip_drives[i].bus_type == ZIP_BUS_ATAPI_PIO_AND_DMA)))
|
if ((zip_drives[i].ide_channel >= 2) && (zip_drives[i].ide_channel <= 3) && ((zip_drives[i].bus_type == ZIP_BUS_ATAPI_PIO_ONLY) || (zip_drives[i].bus_type == ZIP_BUS_ATAPI_PIO_AND_DMA)))
|
||||||
{
|
|
||||||
secondary_zips++;
|
secondary_zips++;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (i=0; i<CDROM_NUM; i++)
|
for (i=0; i<CDROM_NUM; i++) {
|
||||||
{
|
|
||||||
if ((cdrom_drives[i].ide_channel >= 2) && (cdrom_drives[i].ide_channel <= 3) && ((cdrom_drives[i].bus_type == CDROM_BUS_ATAPI_PIO_ONLY) || (cdrom_drives[i].bus_type == CDROM_BUS_ATAPI_PIO_AND_DMA)))
|
if ((cdrom_drives[i].ide_channel >= 2) && (cdrom_drives[i].ide_channel <= 3) && ((cdrom_drives[i].bus_type == CDROM_BUS_ATAPI_PIO_ONLY) || (cdrom_drives[i].bus_type == CDROM_BUS_ATAPI_PIO_AND_DMA)))
|
||||||
{
|
|
||||||
secondary_cdroms++;
|
secondary_cdroms++;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!secondary_zips && !secondary_cdroms) ide_sec_disable();
|
if (!secondary_zips && !secondary_cdroms) {
|
||||||
|
ide_sec_disable();
|
||||||
|
ide_init_ch[1] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2762,20 +2750,29 @@ ide_sainit(device_t *info)
|
|||||||
{
|
{
|
||||||
switch(info->local) {
|
switch(info->local) {
|
||||||
case 0: /* ISA, single-channel */
|
case 0: /* ISA, single-channel */
|
||||||
ide_pri_enable();
|
case 2: /* ISA, dual-channel */
|
||||||
ide_bus_master_read = ide_bus_master_write = NULL;
|
case 3: /* ISA, dual-channel, optional 2nd channel */
|
||||||
timer_add(ide_callback_pri, &idecallback[0], &idecallback[0], NULL);
|
case 4: /* VLB, single-channel */
|
||||||
break;
|
case 6: /* VLB, dual-channel */
|
||||||
|
case 8: /* PCI, single-channel */
|
||||||
|
case 10: /* PCI, dual-channel */
|
||||||
|
if (!ide_init_ch[0]) {
|
||||||
|
ide_pri_enable();
|
||||||
|
timer_add(ide_callback_pri, &idecallback[0], &idecallback[0], NULL);
|
||||||
|
ide_init_ch[0] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
case 1: /* VLB, single-channel */
|
if ((info->local & 2) && !ide_init_ch[1]) {
|
||||||
ide_pri_enable();
|
ide_sec_enable();
|
||||||
ide_bus_master_read = ide_bus_master_write = NULL;
|
timer_add(ide_callback_sec, &idecallback[1], &idecallback[1], NULL);
|
||||||
timer_add(ide_callback_pri, &idecallback[0], &idecallback[0], NULL);
|
ide_init_ch[1] = 1;
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: /* PCI, single-channel */
|
if (info->local & 1)
|
||||||
ide_pri_enable();
|
secondary_ide_check();
|
||||||
timer_add(ide_callback_pri, &idecallback[0], &idecallback[0], NULL);
|
}
|
||||||
|
|
||||||
|
if (!(info->local & 8))
|
||||||
|
ide_bus_master_read = ide_bus_master_write = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2787,6 +2784,7 @@ ide_sainit(device_t *info)
|
|||||||
static void
|
static void
|
||||||
ide_saclose(void *priv)
|
ide_saclose(void *priv)
|
||||||
{
|
{
|
||||||
|
ide_init_ch[0] = ide_init_ch[1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2799,19 +2797,55 @@ device_t ide_isa_device = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
device_t ide_pci_device = {
|
device_t ide_isa_2ch_device = {
|
||||||
"PCI IDE Controller",
|
"ISA PC/AT IDE Controller (Dual-Channel)",
|
||||||
DEVICE_PCI | DEVICE_AT,
|
DEVICE_ISA | DEVICE_AT,
|
||||||
2,
|
2,
|
||||||
ide_sainit, ide_saclose, NULL,
|
ide_sainit, ide_saclose, NULL,
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
device_t ide_isa_2ch_opt_device = {
|
||||||
|
"ISA PC/AT IDE Controller (Single/Dual)",
|
||||||
|
DEVICE_ISA | DEVICE_AT,
|
||||||
|
3,
|
||||||
|
ide_sainit, ide_saclose, NULL,
|
||||||
|
NULL, NULL, NULL, NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
device_t ide_vlb_device = {
|
device_t ide_vlb_device = {
|
||||||
"VLB IDE Controller",
|
"VLB IDE Controller",
|
||||||
DEVICE_VLB | DEVICE_AT,
|
DEVICE_VLB | DEVICE_AT,
|
||||||
1,
|
4,
|
||||||
|
ide_sainit, ide_saclose, NULL,
|
||||||
|
NULL, NULL, NULL, NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
device_t ide_vlb_2ch_device = {
|
||||||
|
"VLB IDE Controller (Dual-Channel)",
|
||||||
|
DEVICE_VLB | DEVICE_AT,
|
||||||
|
6,
|
||||||
|
ide_sainit, ide_saclose, NULL,
|
||||||
|
NULL, NULL, NULL, NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
device_t ide_pci_device = {
|
||||||
|
"PCI IDE Controller",
|
||||||
|
DEVICE_PCI | DEVICE_AT,
|
||||||
|
8,
|
||||||
|
ide_sainit, ide_saclose, NULL,
|
||||||
|
NULL, NULL, NULL, NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
device_t ide_pci_2ch_device = {
|
||||||
|
"PCI IDE Controller (Dual-Channel)",
|
||||||
|
DEVICE_PCI | DEVICE_AT,
|
||||||
|
10,
|
||||||
ide_sainit, ide_saclose, NULL,
|
ide_sainit, ide_saclose, NULL,
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
NULL
|
NULL
|
||||||
|
|||||||
@@ -9,12 +9,12 @@
|
|||||||
* Implementation of the IDE emulation for hard disks and ATAPI
|
* Implementation of the IDE emulation for hard disks and ATAPI
|
||||||
* CD-ROM devices.
|
* CD-ROM devices.
|
||||||
*
|
*
|
||||||
* Version: @(#)hdd_ide.h 1.0.5 2017/10/26
|
* Version: @(#)hdd_ide.h 1.0.6 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
* Copyright 2008-2017 Sarah Walker.
|
* Copyright 2008-2018 Sarah Walker.
|
||||||
* Copyright 2016,2017 Miran Grca.
|
* Copyright 2016-2018 Miran Grca.
|
||||||
*/
|
*/
|
||||||
#ifndef EMU_IDE_H
|
#ifndef EMU_IDE_H
|
||||||
# define EMU_IDE_H
|
# define EMU_IDE_H
|
||||||
@@ -82,7 +82,7 @@ extern void ide_set_base(int controller, uint16_t port);
|
|||||||
extern void ide_set_side(int controller, uint16_t port);
|
extern void ide_set_side(int controller, uint16_t port);
|
||||||
|
|
||||||
extern void ide_init_first(void);
|
extern void ide_init_first(void);
|
||||||
extern void ide_init(void);
|
|
||||||
extern void ide_reset(void);
|
extern void ide_reset(void);
|
||||||
extern void ide_reset_hard(void);
|
extern void ide_reset_hard(void);
|
||||||
|
|
||||||
|
|||||||
@@ -21,15 +21,15 @@
|
|||||||
* already on their way out, the newer IDE standard based on the
|
* already on their way out, the newer IDE standard based on the
|
||||||
* PC/AT controller and 16b design became the IDE we now know.
|
* PC/AT controller and 16b design became the IDE we now know.
|
||||||
*
|
*
|
||||||
* Version: @(#)hdc_xtide.c 1.0.10 2017/11/04
|
* Version: @(#)hdc_xtide.c 1.0.11 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
*
|
*
|
||||||
* Copyright 2008-2017 Sarah Walker.
|
* Copyright 2008-2018 Sarah Walker.
|
||||||
* Copyright 2016,2017 Miran Grca.
|
* Copyright 2016-2018 Miran Grca.
|
||||||
* Copyright 2017 Fred N. van Kempen.
|
* Copyright 2017,2018 Fred N. van Kempen.
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@@ -163,7 +163,7 @@ xtide_at_init(device_t *info)
|
|||||||
rom_init(&xtide->bios_rom, ROM_PATH_AT,
|
rom_init(&xtide->bios_rom, ROM_PATH_AT,
|
||||||
0xc8000, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL);
|
0xc8000, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL);
|
||||||
|
|
||||||
ide_init();
|
device_add(&ide_isa_2ch_device);
|
||||||
|
|
||||||
return(xtide);
|
return(xtide);
|
||||||
}
|
}
|
||||||
@@ -177,7 +177,7 @@ xtide_at_available(void)
|
|||||||
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
xtide_ps2_init(device_t *info)
|
xtide_acculogic_init(device_t *info)
|
||||||
{
|
{
|
||||||
xtide_t *xtide = malloc(sizeof(xtide_t));
|
xtide_t *xtide = malloc(sizeof(xtide_t));
|
||||||
|
|
||||||
@@ -197,7 +197,7 @@ xtide_ps2_init(device_t *info)
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
xtide_ps2_available(void)
|
xtide_acculogic_available(void)
|
||||||
{
|
{
|
||||||
return(rom_present(ROM_PATH_PS2));
|
return(rom_present(ROM_PATH_PS2));
|
||||||
}
|
}
|
||||||
@@ -213,7 +213,7 @@ xtide_at_ps2_init(device_t *info)
|
|||||||
rom_init(&xtide->bios_rom, ROM_PATH_PS2AT,
|
rom_init(&xtide->bios_rom, ROM_PATH_PS2AT,
|
||||||
0xc8000, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL);
|
0xc8000, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL);
|
||||||
|
|
||||||
ide_init();
|
device_add(&ide_isa_2ch_device);
|
||||||
|
|
||||||
return(xtide);
|
return(xtide);
|
||||||
}
|
}
|
||||||
@@ -253,12 +253,12 @@ device_t xtide_at_device = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
device_t xtide_ps2_device = {
|
device_t xtide_acculogic_device = {
|
||||||
"XTIDE (Acculogic)",
|
"XTIDE (Acculogic)",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
0,
|
0,
|
||||||
xtide_ps2_init, xtide_close, NULL,
|
xtide_acculogic_init, xtide_close, NULL,
|
||||||
xtide_ps2_available, NULL, NULL, NULL,
|
xtide_acculogic_available, NULL, NULL, NULL,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
* word 0 - base address
|
* word 0 - base address
|
||||||
* word 1 - bits 1-15 = byte count, bit 31 = end of transfer
|
* word 1 - bits 1-15 = byte count, bit 31 = end of transfer
|
||||||
*
|
*
|
||||||
* Version: @(#)intel_piix.c 1.0.11 2018/02/01
|
* Version: @(#)intel_piix.c 1.0.12 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -733,6 +733,8 @@ void piix3_reset(void)
|
|||||||
|
|
||||||
void piix_init(int card)
|
void piix_init(int card)
|
||||||
{
|
{
|
||||||
|
device_add(&ide_pci_2ch_device);
|
||||||
|
|
||||||
pci_add_card(card, piix_read, piix_write, NULL);
|
pci_add_card(card, piix_read, piix_write, NULL);
|
||||||
|
|
||||||
piix_reset();
|
piix_reset();
|
||||||
@@ -755,6 +757,8 @@ void piix_init(int card)
|
|||||||
|
|
||||||
void piix3_init(int card)
|
void piix3_init(int card)
|
||||||
{
|
{
|
||||||
|
device_add(&ide_pci_2ch_device);
|
||||||
|
|
||||||
pci_add_card(card, piix_read, piix_write, NULL);
|
pci_add_card(card, piix_read, piix_write, NULL);
|
||||||
|
|
||||||
piix3_reset();
|
piix3_reset();
|
||||||
|
|||||||
@@ -10,13 +10,13 @@
|
|||||||
* word 0 - base address
|
* word 0 - base address
|
||||||
* word 1 - bits 1-15 = byte count, bit 31 = end of transfer
|
* word 1 - bits 1-15 = byte count, bit 31 = end of transfer
|
||||||
*
|
*
|
||||||
* Version: @(#)intel_piix4.c 1.0.2 2017/11/11
|
* Version: @(#)intel_piix4.c 1.0.3 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
*
|
*
|
||||||
* Copyright 2008-2017 Sarah Walker.
|
* Copyright 2008-2018 Sarah Walker.
|
||||||
* Copyright 2016,2017 Miran Grca.
|
* Copyright 2016-2018 Miran Grca.
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@@ -375,6 +375,8 @@ void piix4_reset(void)
|
|||||||
|
|
||||||
void piix4_init(int card)
|
void piix4_init(int card)
|
||||||
{
|
{
|
||||||
|
device_add(&ide_pci_2ch_device);
|
||||||
|
|
||||||
pci_add_card(card, piix4_read, piix4_write, NULL);
|
pci_add_card(card, piix4_read, piix4_write, NULL);
|
||||||
|
|
||||||
piix4_reset();
|
piix4_reset();
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
#include "../keyboard.h"
|
#include "../keyboard.h"
|
||||||
#include "../lpt.h"
|
#include "../lpt.h"
|
||||||
#include "../disk/hdc.h"
|
#include "../disk/hdc.h"
|
||||||
#include "../disk/hdc_ide.h"
|
|
||||||
#include "machine.h"
|
#include "machine.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -61,7 +60,7 @@ machine_at_common_ide_init(machine_t *model)
|
|||||||
{
|
{
|
||||||
machine_at_common_init(model);
|
machine_at_common_init(model);
|
||||||
|
|
||||||
ide_init();
|
device_add(&ide_isa_2ch_opt_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -70,7 +69,7 @@ machine_at_ide_init(machine_t *model)
|
|||||||
{
|
{
|
||||||
machine_at_init(model);
|
machine_at_init(model);
|
||||||
|
|
||||||
ide_init();
|
device_add(&ide_isa_2ch_opt_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -79,7 +78,7 @@ machine_at_ps2_ide_init(machine_t *model)
|
|||||||
{
|
{
|
||||||
machine_at_ps2_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
ide_init();
|
device_add(&ide_isa_2ch_opt_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implementation of the Intel 430FX PCISet chip.
|
* Implementation of the Intel 430FX PCISet chip.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_430fx.c 1.0.11 2018/02/09
|
* Version: @(#)m_at_430fx.c 1.0.12 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -208,7 +208,7 @@ static void i430fx_init(void)
|
|||||||
void
|
void
|
||||||
machine_at_p54tp4xe_init(machine_t *model)
|
machine_at_p54tp4xe_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
@@ -229,7 +229,7 @@ machine_at_p54tp4xe_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_endeavor_init(machine_t *model)
|
machine_at_endeavor_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_common_ide_init(model);
|
machine_at_common_init(model);
|
||||||
device_add(&keyboard_ps2_ami_device);
|
device_add(&keyboard_ps2_ami_device);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
@@ -262,7 +262,7 @@ at_endeavor_get_device(void)
|
|||||||
void
|
void
|
||||||
machine_at_zappa_init(machine_t *model)
|
machine_at_zappa_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_common_ide_init(model);
|
machine_at_common_init(model);
|
||||||
device_add(&keyboard_ps2_ami_device);
|
device_add(&keyboard_ps2_ami_device);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
@@ -283,7 +283,7 @@ machine_at_zappa_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_mb500n_init(machine_t *model)
|
machine_at_mb500n_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
|
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
|
||||||
@@ -303,7 +303,7 @@ machine_at_mb500n_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_president_init(machine_t *model)
|
machine_at_president_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
@@ -324,7 +324,7 @@ machine_at_president_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_thor_init(machine_t *model)
|
machine_at_thor_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_common_ide_init(model);
|
machine_at_common_init(model);
|
||||||
device_add(&keyboard_ps2_ami_device);
|
device_add(&keyboard_ps2_ami_device);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implementation of the Intel 430HX PCISet chip.
|
* Implementation of the Intel 430HX PCISet chip.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_430hx.c 1.0.10 2018/01/04
|
* Version: @(#)m_at_430hx.c 1.0.11 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -218,7 +218,7 @@ acerm3a_in(uint16_t port, void *p)
|
|||||||
void
|
void
|
||||||
machine_at_acerm3a_init(machine_t *model)
|
machine_at_acerm3a_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
powermate_memregs_init();
|
powermate_memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
@@ -241,7 +241,7 @@ machine_at_acerm3a_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_acerv35n_init(machine_t *model)
|
machine_at_acerv35n_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
powermate_memregs_init();
|
powermate_memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
@@ -264,7 +264,7 @@ machine_at_acerv35n_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_ap53_init(machine_t *model)
|
machine_at_ap53_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_common_ide_init(model);
|
machine_at_common_init(model);
|
||||||
device_add(&keyboard_ps2_ami_device);
|
device_add(&keyboard_ps2_ami_device);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
@@ -288,7 +288,7 @@ machine_at_ap53_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_p55t2p4_init(machine_t *model)
|
machine_at_p55t2p4_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
@@ -309,7 +309,7 @@ machine_at_p55t2p4_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_p55t2s_init(machine_t *model)
|
machine_at_p55t2s_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_common_ide_init(model);
|
machine_at_common_init(model);
|
||||||
device_add(&keyboard_ps2_ami_device);
|
device_add(&keyboard_ps2_ami_device);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implementation of the Intel 430LX and 430NX PCISet chips.
|
* Implementation of the Intel 430LX and 430NX PCISet chips.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_430lx_nx.c 1.0.9 2018/01/04
|
* Version: @(#)m_at_430lx_nx.c 1.0.10 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -213,7 +213,7 @@ static void i430nx_init(void)
|
|||||||
static void
|
static void
|
||||||
machine_at_premiere_common_init(machine_t *model)
|
machine_at_premiere_common_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_common_ide_init(model);
|
machine_at_common_init(model);
|
||||||
device_add(&keyboard_ps2_ami_device);
|
device_add(&keyboard_ps2_ami_device);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implementation of the Intel 430VX PCISet chip.
|
* Implementation of the Intel 430VX PCISet chip.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_430vx.c 1.0.10 2018/01/04
|
* Version: @(#)m_at_430vx.c 1.0.11 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -195,7 +195,7 @@ void i430vx_init(void)
|
|||||||
void
|
void
|
||||||
machine_at_p55tvp4_init(machine_t *model)
|
machine_at_p55tvp4_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
@@ -216,7 +216,7 @@ machine_at_p55tvp4_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_i430vx_init(machine_t *model)
|
machine_at_i430vx_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
@@ -237,7 +237,7 @@ machine_at_i430vx_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_p55va_init(machine_t *model)
|
machine_at_p55va_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
|
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implementation of the Intel 440FX PCISet chip.
|
* Implementation of the Intel 440FX PCISet chip.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_440fx.c 1.0.9 2018/01/04
|
* Version: @(#)m_at_440fx.c 1.0.10 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -197,7 +197,7 @@ static void i440fx_init(void)
|
|||||||
void
|
void
|
||||||
machine_at_i440fx_init(machine_t *model)
|
machine_at_i440fx_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
@@ -219,7 +219,7 @@ machine_at_i440fx_init(machine_t *model)
|
|||||||
void
|
void
|
||||||
machine_at_s1668_init(machine_t *model)
|
machine_at_s1668_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_common_ide_init(model);
|
machine_at_common_init(model);
|
||||||
device_add(&keyboard_ps2_ami_device);
|
device_add(&keyboard_ps2_ami_device);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Emulation of various Compaq PC's.
|
* Emulation of various Compaq PC's.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_compaq.c 1.0.3 2018/01/16
|
* Version: @(#)m_at_compaq.c 1.0.4 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -112,7 +112,7 @@ machine_at_compaq_init(machine_t *model)
|
|||||||
#ifdef PORTABLE3
|
#ifdef PORTABLE3
|
||||||
case ROM_DESKPRO_386:
|
case ROM_DESKPRO_386:
|
||||||
if (hdc_current == 1)
|
if (hdc_current == 1)
|
||||||
ide_init();
|
device_add(&ide_isa_device);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ machine_at_compaq_init(machine_t *model)
|
|||||||
case ROM_PORTABLEIII386:
|
case ROM_PORTABLEIII386:
|
||||||
machine_olim24_video_init();
|
machine_olim24_video_init();
|
||||||
if (hdc_current == 1)
|
if (hdc_current == 1)
|
||||||
ide_init();
|
device_add(&ide_isa_device);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,11 +8,13 @@
|
|||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include "../86box.h"
|
#include "../86box.h"
|
||||||
#include "../cpu/cpu.h"
|
#include "../cpu/cpu.h"
|
||||||
|
#include "../device.h"
|
||||||
#include "../io.h"
|
#include "../io.h"
|
||||||
#include "../pci.h"
|
#include "../pci.h"
|
||||||
#include "../mem.h"
|
#include "../mem.h"
|
||||||
#include "../memregs.h"
|
#include "../memregs.h"
|
||||||
#include "../sio.h"
|
#include "../sio.h"
|
||||||
|
#include "../disk/hdc.h"
|
||||||
#include "machine.h"
|
#include "machine.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -162,7 +164,8 @@ static void sis_85c496_init(void)
|
|||||||
static void
|
static void
|
||||||
machine_at_sis_85c496_common_init(machine_t *model)
|
machine_at_sis_85c496_common_init(machine_t *model)
|
||||||
{
|
{
|
||||||
machine_at_ps2_ide_init(model);
|
machine_at_ps2_init(model);
|
||||||
|
device_add(&ide_pci_device);
|
||||||
|
|
||||||
memregs_init();
|
memregs_init();
|
||||||
pci_init(PCI_CONFIG_TYPE_1);
|
pci_init(PCI_CONFIG_TYPE_1);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
* boot. Sometimes, they do, and then it shows an "Incorrect
|
* boot. Sometimes, they do, and then it shows an "Incorrect
|
||||||
* DOS" error message?? --FvK
|
* DOS" error message?? --FvK
|
||||||
*
|
*
|
||||||
* Version: @(#)m_ps1.c 1.0.5 2018/01/16
|
* Version: @(#)m_ps1.c 1.0.6 2018/02/14
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -549,7 +549,7 @@ ps1_common_init(machine_t *model)
|
|||||||
nvr_at_init(8);
|
nvr_at_init(8);
|
||||||
|
|
||||||
if (romset != ROM_IBMPS1_2011)
|
if (romset != ROM_IBMPS1_2011)
|
||||||
ide_init();
|
device_add(&ide_isa_device);
|
||||||
|
|
||||||
device_add(&keyboard_ps2_device);
|
device_add(&keyboard_ps2_device);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user