diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h
index 0cdc29513..95b3064ba 100644
--- a/src/cpu/cpu.h
+++ b/src/cpu/cpu.h
@@ -8,18 +8,18 @@
*
* CPU type handler.
*
- * Version: @(#)cpu.h 1.0.0 2017/05/30
+ * Version: @(#)cpu.h 1.0.1 2017/10/07
*
- * Author: Sarah Walker,
+ * Authors: Sarah Walker,
* leilei,
* Miran Grca,
+ *
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016-2017 leilei.
- * Copyright 2016-2017 Miran Grca.
+ * Copyright 2016,2017 Miran Grca.
*/
-
-#ifndef _CPU_H_
-#define _CPU_H_
+#ifndef EMU_CPU_H
+# define EMU_CPU_H
extern int cpu, cpu_manufacturer;
@@ -197,4 +197,5 @@ typedef struct
extern msr_t msr;
-#endif
+
+#endif /*EMU_CPU_H*/
diff --git a/src/machine/machine.c b/src/machine/machine.c
index 56a1200c6..a51d3c579 100644
--- a/src/machine/machine.c
+++ b/src/machine/machine.c
@@ -8,12 +8,15 @@
*
* Handling of the emulated machines.
*
- * Version: @(#)machine.c 1.0.17 2017/10/04
+ * Version: @(#)machine.c 1.0.18 2017/10/07
*
* Authors: Sarah Walker,
* Miran Grca,
+ * Fred N. van Kempen,
+ *
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
+ * Copyright 2017 Fred N. van Kempen.
*/
#include
#include
@@ -21,7 +24,6 @@
#include
#include "../ibm.h"
#include "../cpu/cpu.h"
-#include "../io.h"
#include "../mem.h"
#include "../rom.h"
#include "../device.h"
@@ -29,38 +31,6 @@
#include "../floppy/fdc.h"
#include "../floppy/fdd.h"
#include "machine.h"
-#include "machine_common.h"
-
-#include "machine_amstrad.h"
-#include "machine_europc.h"
-#include "machine_olivetti_m24.h"
-#include "machine_pcjr.h"
-#include "machine_tandy.h"
-
-#include "machine_xt.h"
-#include "machine_xt_laserxt.h"
-
-#include "machine_at.h"
-#include "machine_at_ali1429.h"
-#include "machine_at_commodore.h"
-#include "machine_at_headland.h"
-#include "machine_at_neat.h"
-#include "machine_at_opti495.h"
-#include "machine_at_scat.h"
-#include "machine_at_wd76c10.h"
-
-#include "machine_ps1.h"
-#include "machine_ps2_isa.h"
-#include "machine_ps2_mca.h"
-
-#include "machine_at_sis_85c471.h"
-#include "machine_at_sis_85c496.h"
-
-#include "machine_at_430lx_nx.h"
-#include "machine_at_430fx.h"
-#include "machine_at_430hx.h"
-#include "machine_at_430vx.h"
-#include "machine_at_440fx.h"
#include "../video/vid_pcjr.h"
#include "../video/vid_tandy.h"
@@ -179,7 +149,7 @@ machine_init(void)
if (machines[machine].get_device)
device_add(machines[machine].get_device());
- machines[machine].init();
+ machines[machine].init(&machines[machine]);
}
diff --git a/src/machine/machine.h b/src/machine/machine.h
index 2f3cc00c0..eb4ff87f0 100644
--- a/src/machine/machine.h
+++ b/src/machine/machine.h
@@ -8,45 +8,62 @@
*
* Handling of the emulated machines.
*
- * Version: @(#)machine.h 1.0.5 2017/09/30
+ * Version: @(#)machine.h 1.0.6 2017/10/07
*
* Authors: Sarah Walker,
* Miran Grca,
+ * Fred N. van Kempen,
+ *
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
+ * Copyright 2017 Fred N. van Kempen.
*/
#ifndef EMU_MACHINE_H
# define EMU_MACHINE_H
-#define MACHINE_AT 1
-#define MACHINE_PS2 2
-#define MACHINE_AMSTRAD 4
-#define MACHINE_OLIM24 8
-#define MACHINE_HAS_HDC 16
-#define MACHINE_MCA 32
-#define MACHINE_PCI 64
-#define MACHINE_PS2_HDD 128 // can now remove? --FvK
-#define MACHINE_NEC 256
-#define MACHINE_FUJITSU 512
-#define MACHINE_RM 1024
+/* Machine feature flags. */
+#define MACHINE_PC 0x000000 /* PC architecture */
+#define MACHINE_AT 0x000001 /* PC/AT architecture */
+#define MACHINE_PS2 0x000002 /* PS/2 architecture */
+#define MACHINE_ISA 0x000010 /* machine has ISA bus */
+#define MACHINE_EISA 0x000020 /* machine has EISA bus */
+#define MACHINE_VLB 0x000040 /* machine has VL bus */
+#define MACHINE_MCA 0x000080 /* machine has MCA bus */
+#define MACHINE_PCI 0x000100 /* machine has PCI */
+#define MACHINE_AGP 0x000200 /* machine has AGP */
+#define MACHINE_HAS_HDC 0x001000 /* machine has internal HDC */
+#define MACHINE_PS2_HDD 0x002000 // can now remove? --FvK
+#define MACHINE_NEC 0x010000
+#define MACHINE_FUJITSU 0x020000
+#define MACHINE_AMSTRAD 0x040000
+#define MACHINE_OLIM24 0x080000
+#define MACHINE_RM 0x100000
-typedef struct {
+typedef struct _machine_ {
char name[64];
int id;
char internal_name[24];
struct {
char name[16];
+#ifdef EMU_CPU_H
CPU *cpus;
+#else
+ void *cpus;
+#endif
} cpu[5];
int fixed_gfxcard;
int flags;
int min_ram, max_ram;
int ram_granularity;
int nvrmask;
- void (*init)(void);
+ void (*init)(struct _machine_ *);
+#ifdef EMU_DEVICE_H
device_t *(*get_device)(void);
+#else
+ void *get_device;
+#endif
} machine_t;
@@ -63,7 +80,9 @@ extern char *machine_getname(void);
extern char *machine_get_internal_name(void);
extern int machine_get_machine_from_internal_name(char *s);
extern void machine_init(void);
+#ifdef EMU_DEVICE_H
extern device_t *machine_getdevice(int machine);
+#endif
extern int machine_getromset_ex(int m);
extern char *machine_get_internal_name_ex(int m);
extern int machine_get_nvrmask(int m);
@@ -76,4 +95,72 @@ extern mouse_t mouse_olim24;
#endif
+/* Initialization functions for boards and systems. */
+extern void machine_common_init(machine_t *);
+
+extern void machine_at_init(machine_t *);
+extern void machine_at_ide_init(machine_t *);
+extern void machine_at_top_remap_init(machine_t *);
+extern void machine_at_ide_top_remap_init(machine_t *);
+
+extern void machine_at_p54tp4xe_init(machine_t *);
+extern void machine_at_endeavor_init(machine_t *);
+extern void machine_at_zappa_init(machine_t *);
+extern void machine_at_mb500n_init(machine_t *);
+extern void machine_at_president_init(machine_t *);
+extern void machine_at_thor_init(machine_t *);
+
+extern void machine_at_acerm3a_init(machine_t *);
+extern void machine_at_acerv35n_init(machine_t *);
+extern void machine_at_ap53_init(machine_t *);
+extern void machine_at_p55t2p4_init(machine_t *);
+extern void machine_at_p55t2s_init(machine_t *);
+
+extern void machine_at_batman_init(machine_t *);
+extern void machine_at_plato_init(machine_t *);
+
+extern void machine_at_p55tvp4_init(machine_t *);
+extern void machine_at_i430vx_init(machine_t *);
+extern void machine_at_p55va_init(machine_t *);
+
+extern void machine_at_i440fx_init(machine_t *);
+extern void machine_at_s1668_init(machine_t *);
+extern void machine_at_ali1429_init(machine_t *);
+extern void machine_at_cmdpc_init(machine_t *);
+
+extern void machine_at_headland_init(machine_t *);
+extern void machine_at_neat_init(machine_t *);
+extern void machine_at_opti495_init(machine_t *);
+extern void machine_at_scat_init(machine_t *);
+
+extern void machine_at_dtk486_init(machine_t *);
+extern void machine_at_r418_init(machine_t *);
+
+extern void machine_at_wd76c10_init(machine_t *);
+
+extern void machine_ps1_m2011_init(machine_t *);
+extern void machine_ps1_m2121_init(machine_t *);
+extern void machine_ps1_m2133_init(machine_t *);
+extern void machine_ps2_m30_286_init(machine_t *);
+
+extern void machine_ps2_model_50_init(machine_t *);
+extern void machine_ps2_model_55sx_init(machine_t *);
+extern void machine_ps2_model_80_init(machine_t *);
+extern void machine_ps2_model_80_486_init(machine_t *);
+
+extern void machine_amstrad_init(machine_t *);
+
+extern void machine_europc_init(machine_t *);
+
+extern void machine_olim24_init(machine_t *);
+
+extern void machine_pcjr_init(machine_t *);
+
+extern void machine_tandy1k_init(machine_t *);
+extern void machine_tandy1ksl2_init(machine_t *);
+
+extern void machine_xt_init(machine_t *);
+extern void machine_xt_laserxt_init(machine_t *);
+
+
#endif /*EMU_MACHINE_H*/
diff --git a/src/machine/machine_amstrad.c b/src/machine/machine_amstrad.c
index 40f3ca971..610807afe 100644
--- a/src/machine/machine_amstrad.c
+++ b/src/machine/machine_amstrad.c
@@ -4,7 +4,6 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../io.h"
#include "../nmi.h"
#include "../mem.h"
@@ -19,7 +18,7 @@
#include "../floppy/floppy.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
-#include "machine_common.h"
+#include "machine.h"
static uint8_t amstrad_dead;
@@ -136,11 +135,13 @@ static void amstrad_init(void)
}
-void machine_amstrad_init(void)
+void
+machine_amstrad_init(machine_t *model)
{
AMSTRAD = 1;
- machine_common_init();
+ machine_common_init(model);
+
mem_add_bios();
amstrad_init();
keyboard_amstrad_init();
diff --git a/src/machine/machine_amstrad.h b/src/machine/machine_amstrad.h
deleted file mode 100644
index d2ba5d483..000000000
--- a/src/machine/machine_amstrad.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_amstrad_init(void);
diff --git a/src/machine/machine_at.c b/src/machine/machine_at.c
index 98fe216d3..e80d1afab 100644
--- a/src/machine/machine_at.c
+++ b/src/machine/machine_at.c
@@ -15,50 +15,57 @@
#include "../lpt.h"
#include "../disk/hdc.h"
#include "../disk/hdc_ide.h"
-#include "machine_common.h"
-#include "machine_at.h"
+#include "machine.h"
-void machine_at_init(void)
+void
+machine_at_init(machine_t *model)
{
- AT = 1;
+ AT = 1;
- machine_common_init();
- pit_set_out_func(&pit, 1, pit_refresh_timer_at);
- pic2_init();
- dma16_init();
+ machine_common_init(model);
- if (lpt_enabled)
- lpt2_remove();
+ pit_set_out_func(&pit, 1, pit_refresh_timer_at);
+ pic2_init();
+ dma16_init();
- nvr_at_init(8);
+ if (lpt_enabled)
+ lpt2_remove();
- keyboard_at_init();
+ nvr_at_init(8);
- if (joystick_type != 7)
- device_add(&gameport_device);
+ keyboard_at_init();
- if (bugger_enabled)
- bugger_init();
+ if (joystick_type != 7)
+ device_add(&gameport_device);
+
+ if (bugger_enabled)
+ bugger_init();
}
-void machine_at_ide_init(void)
-{
- machine_at_init();
- ide_init();
+void
+machine_at_ide_init(machine_t *model)
+{
+ machine_at_init(model);
+
+ ide_init();
}
-void machine_at_top_remap_init(void)
-{
- machine_at_init();
- mem_remap_top_384k();
+void
+machine_at_top_remap_init(machine_t *model)
+{
+ machine_at_init(model);
+
+ mem_remap_top_384k();
}
-void machine_at_ide_top_remap_init(void)
-{
- machine_at_ide_init();
- mem_remap_top_384k();
+void
+machine_at_ide_top_remap_init(machine_t *model)
+{
+ machine_at_ide_init(model);
+
+ mem_remap_top_384k();
}
diff --git a/src/machine/machine_at.h b/src/machine/machine_at.h
deleted file mode 100644
index 5d6c91ca4..000000000
--- a/src/machine/machine_at.h
+++ /dev/null
@@ -1,4 +0,0 @@
-void machine_at_init(void);
-void machine_at_ide_init(void);
-void machine_at_top_remap_init(void);
-void machine_at_ide_top_remap_init(void);
diff --git a/src/machine/machine_at_430fx.c b/src/machine/machine_at_430fx.c
index 4dabc055c..e50ad18cf 100644
--- a/src/machine/machine_at_430fx.c
+++ b/src/machine/machine_at_430fx.c
@@ -8,10 +8,11 @@
*
* Implementation of the Intel 430FX PCISet chip.
*
- * Version: @(#)machine_at_430fx.c 1.0.5 2017/09/24
+ * Version: @(#)machine_at_430fx.c 1.0.6 2017/10/07
*
* Authors: Sarah Walker,
* Miran Grca,
+ *
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
*/
@@ -20,7 +21,6 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../mem.h"
#include "../memregs.h"
#include "../rom.h"
@@ -29,8 +29,7 @@
#include "../piix.h"
#include "../intel_flash.h"
#include "../sio.h"
-#include "machine_at.h"
-#include "machine_at_430fx.h"
+#include "machine.h"
static uint8_t card_i430fx[256];
@@ -198,9 +197,11 @@ static void i430fx_init(void)
}
-void machine_at_p54tp4xe_init(void)
+void
+machine_at_p54tp4xe_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -212,13 +213,16 @@ void machine_at_p54tp4xe_init(void)
i430fx_init();
piix3_init(7);
fdc37c665_init();
+
device_add(&intel_flash_bxt_device);
}
-void machine_at_endeavor_init(void)
+void
+machine_at_endeavor_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -231,13 +235,16 @@ void machine_at_endeavor_init(void)
i430fx_init();
piix_init(7);
pc87306_init();
+
device_add(&intel_flash_bxt_ami_device);
}
-void machine_at_zappa_init(void)
+void
+machine_at_zappa_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -248,13 +255,16 @@ void machine_at_zappa_init(void)
i430fx_init();
piix_init(7);
pc87306_init();
+
device_add(&intel_flash_bxt_ami_device);
}
-void machine_at_mb500n_init(void)
+void
+machine_at_mb500n_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4);
@@ -265,13 +275,16 @@ void machine_at_mb500n_init(void)
i430fx_init();
piix_init(7);
fdc37c665_init();
+
device_add(&intel_flash_bxt_device);
}
-void machine_at_president_init(void)
+void
+machine_at_president_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -283,13 +296,16 @@ void machine_at_president_init(void)
i430fx_init();
piix_init(7);
w83877f_init();
+
device_add(&intel_flash_bxt_device);
}
-void machine_at_thor_init(void)
+void
+machine_at_thor_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -302,5 +318,6 @@ void machine_at_thor_init(void)
i430fx_init();
piix_init(7);
pc87306_init();
+
device_add(&intel_flash_bxt_ami_device);
}
diff --git a/src/machine/machine_at_430fx.h b/src/machine/machine_at_430fx.h
deleted file mode 100644
index bb4949910..000000000
--- a/src/machine/machine_at_430fx.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 86Box A hypervisor and IBM PC system emulator that specializes in
- * running old operating systems and software designed for IBM
- * PC systems and compatibles from 1981 through fairly recent
- * system designs based on the PCI bus.
- *
- * This file is part of the 86Box distribution.
- *
- * Header of the implementation of the Intel 430FX PCISet chip.
- *
- * Version: @(#)machine_at_430fx.h 1.0.0 2017/09/02
- *
- * Authors: Sarah Walker,
- * Miran Grca,
- * Copyright 2008-2017 Sarah Walker.
- * Copyright 2016-2017 Miran Grca.
- */
-void machine_at_p54tp4xe_init(void);
-void machine_at_endeavor_init(void);
-void machine_at_zappa_init(void);
-void machine_at_mb500n_init(void);
-void machine_at_president_init(void);
-void machine_at_thor_init(void);
diff --git a/src/machine/machine_at_430hx.c b/src/machine/machine_at_430hx.c
index 9bb59025f..ca110dd60 100644
--- a/src/machine/machine_at_430hx.c
+++ b/src/machine/machine_at_430hx.c
@@ -8,10 +8,11 @@
*
* Implementation of the Intel 430HX PCISet chip.
*
- * Version: @(#)machine_at_430hx.c 1.0.5 2017/09/24
+ * Version: @(#)machine_at_430hx.c 1.0.6 2017/10/07
*
* Authors: Sarah Walker,
* Miran Grca,
+ *
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016-2017 Miran Grca.
*/
@@ -20,7 +21,6 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../io.h"
#include "../mem.h"
#include "../memregs.h"
@@ -29,8 +29,7 @@
#include "../piix.h"
#include "../intel_flash.h"
#include "../sio.h"
-#include "machine_at.h"
-#include "machine_at_430hx.h"
+#include "machine.h"
static uint8_t card_i430hx[256];
@@ -185,9 +184,11 @@ static void i430hx_init(void)
}
-void machine_at_acerm3a_init(void)
+void
+machine_at_acerm3a_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
powermate_memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -200,13 +201,16 @@ void machine_at_acerm3a_init(void)
i430hx_init();
piix3_init(7);
fdc37c932fr_init();
+
device_add(&intel_flash_bxb_device);
}
-void machine_at_acerv35n_init(void)
+void
+machine_at_acerv35n_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
powermate_memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -219,13 +223,16 @@ void machine_at_acerv35n_init(void)
i430hx_init();
piix3_init(7);
fdc37c932fr_init();
+
device_add(&intel_flash_bxb_device);
}
-void machine_at_ap53_init(void)
+void
+machine_at_ap53_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
powermate_memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -239,13 +246,16 @@ void machine_at_ap53_init(void)
i430hx_init();
piix3_init(7);
fdc37c669_init();
+
device_add(&intel_flash_bxt_device);
}
-void machine_at_p55t2p4_init(void)
+void
+machine_at_p55t2p4_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -257,13 +267,16 @@ void machine_at_p55t2p4_init(void)
i430hx_init();
piix3_init(7);
w83877f_init();
+
device_add(&intel_flash_bxt_device);
}
-void machine_at_p55t2s_init(void)
+void
+machine_at_p55t2s_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
powermate_memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -276,5 +289,6 @@ void machine_at_p55t2s_init(void)
i430hx_init();
piix3_init(7);
pc87306_init();
+
device_add(&intel_flash_bxt_device);
}
diff --git a/src/machine/machine_at_430hx.h b/src/machine/machine_at_430hx.h
deleted file mode 100644
index 6c38b0898..000000000
--- a/src/machine/machine_at_430hx.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 86Box A hypervisor and IBM PC system emulator that specializes in
- * running old operating systems and software designed for IBM
- * PC systems and compatibles from 1981 through fairly recent
- * system designs based on the PCI bus.
- *
- * This file is part of the 86Box distribution.
- *
- * Header of the implementation of the Intel 430HX PCISet chip.
- *
- * Version: @(#)machine_at_430hx.h 1.0.0 2017/09/02
- *
- * Authors: Sarah Walker,
- * Miran Grca,
- * Copyright 2008-2017 Sarah Walker.
- * Copyright 2016-2017 Miran Grca.
- */
-void machine_at_acerm3a_init(void);
-void machine_at_acerv35n_init(void);
-void machine_at_ap53_init(void);
-void machine_at_p55t2p4_init(void);
-void machine_at_p55t2s_init(void);
diff --git a/src/machine/machine_at_430lx_nx.c b/src/machine/machine_at_430lx_nx.c
index 2eeabbee7..2f7530435 100644
--- a/src/machine/machine_at_430lx_nx.c
+++ b/src/machine/machine_at_430lx_nx.c
@@ -8,10 +8,11 @@
*
* Implementation of the Intel 430LX and 430NX PCISet chips.
*
- * Version: @(#)machine_at_430lx_nx.c 1.0.5 2017/09/24
+ * Version: @(#)machine_at_430lx_nx.c 1.0.6 2017/10/07
*
* Authors: Sarah Walker,
* Miran Grca,
+ *
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
*/
@@ -20,7 +21,6 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../mem.h"
#include "../memregs.h"
#include "../rom.h"
@@ -30,8 +30,7 @@
#include "../intel_flash.h"
#include "../intel_sio.h"
#include "../sio.h"
-#include "machine_at.h"
-#include "machine_at_430lx_nx.h"
+#include "machine.h"
static uint8_t card_i430_lx_nx[256];
@@ -210,9 +209,11 @@ static void i430nx_init(void)
}
-static void machine_at_premiere_common_init(void)
+static void
+machine_at_premiere_common_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_2);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -224,19 +225,24 @@ static void machine_at_premiere_common_init(void)
sio_init(2);
fdc37c665_init();
intel_batman_init();
+
device_add(&intel_flash_bxt_ami_device);
}
-void machine_at_batman_init(void)
+void
+machine_at_batman_init(machine_t *model)
{
- machine_at_premiere_common_init();
+ machine_at_premiere_common_init(model);
+
i430lx_init();
}
-void machine_at_plato_init(void)
+void
+machine_at_plato_init(machine_t *model)
{
- machine_at_premiere_common_init();
+ machine_at_premiere_common_init(model);
+
i430nx_init();
}
diff --git a/src/machine/machine_at_430lx_nx.h b/src/machine/machine_at_430lx_nx.h
deleted file mode 100644
index ce08d96f7..000000000
--- a/src/machine/machine_at_430lx_nx.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * 86Box A hypervisor and IBM PC system emulator that specializes in
- * running old operating systems and software designed for IBM
- * PC systems and compatibles from 1981 through fairly recent
- * system designs based on the PCI bus.
- *
- * This file is part of the 86Box distribution.
- *
- * Header of the implementation of the Intel 430LX and 430NX
- * PCISet chips.
- *
- * Version: @(#)machine_at_430lx_nx.h 1.0.0 2017/09/02
- *
- * Authors: Sarah Walker,
- * Miran Grca,
- * Copyright 2008-2017 Sarah Walker.
- * Copyright 2016-2017 Miran Grca.
- */
-void machine_at_batman_init(void);
-void machine_at_plato_init(void);
diff --git a/src/machine/machine_at_430vx.c b/src/machine/machine_at_430vx.c
index 8576e4b24..54171e2a4 100644
--- a/src/machine/machine_at_430vx.c
+++ b/src/machine/machine_at_430vx.c
@@ -8,10 +8,11 @@
*
* Implementation of the Intel 430VX PCISet chip.
*
- * Version: @(#)machine_at_430vx.c 1.0.6 2017/09/24
+ * Version: @(#)machine_at_430vx.c 1.0.7 2017/10/07
*
* Authors: Sarah Walker,
* Miran Grca,
+ *
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
*/
@@ -20,7 +21,6 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../io.h"
#include "../pci.h"
#include "../mem.h"
@@ -29,8 +29,7 @@
#include "../piix.h"
#include "../intel_flash.h"
#include "../sio.h"
-#include "machine_at.h"
-#include "machine_at_430vx.h"
+#include "machine.h"
static uint8_t card_i430vx[256];
@@ -188,9 +187,11 @@ void i430vx_init(void)
}
-void machine_at_p55tvp4_init(void)
+void
+machine_at_p55tvp4_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -202,13 +203,16 @@ void machine_at_p55tvp4_init(void)
i430vx_init();
piix3_init(7);
w83877f_init();
+
device_add(&intel_flash_bxt_device);
}
-void machine_at_i430vx_init(void)
+void
+machine_at_i430vx_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -220,13 +224,16 @@ void machine_at_i430vx_init(void)
i430vx_init();
piix3_init(7);
um8669f_init();
+
device_add(&intel_flash_bxt_device);
}
-void machine_at_p55va_init(void)
+void
+machine_at_p55va_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4);
@@ -237,5 +244,6 @@ void machine_at_p55va_init(void)
i430vx_init();
piix3_init(7);
fdc37c932fr_init();
+
device_add(&intel_flash_bxt_device);
}
diff --git a/src/machine/machine_at_430vx.h b/src/machine/machine_at_430vx.h
deleted file mode 100644
index 5d930e8c4..000000000
--- a/src/machine/machine_at_430vx.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * 86Box A hypervisor and IBM PC system emulator that specializes in
- * running old operating systems and software designed for IBM
- * PC systems and compatibles from 1981 through fairly recent
- * system designs based on the PCI bus.
- *
- * This file is part of the 86Box distribution.
- *
- * Header of the implementation of the Intel 430VX PCISet chip.
- *
- * Version: @(#)machine_at_430vx.h 1.0.0 2017/09/02
- *
- * Authors: Sarah Walker,
- * Miran Grca,
- * Copyright 2008-2017 Sarah Walker.
- * Copyright 2016-2017 Miran Grca.
- */
-void machine_at_p55tvp4_init(void);
-void machine_at_i430vx_init(void);
-void machine_at_p55va_init(void);
diff --git a/src/machine/machine_at_440fx.c b/src/machine/machine_at_440fx.c
index ee8c5aadc..fcb579111 100644
--- a/src/machine/machine_at_440fx.c
+++ b/src/machine/machine_at_440fx.c
@@ -8,10 +8,11 @@
*
* Implementation of the Intel 440FX PCISet chip.
*
- * Version: @(#)machine_at_440fx.c 1.0.5 2017/09/24
+ * Version: @(#)machine_at_440fx.c 1.0.6 2017/10/07
*
* Authors: Sarah Walker,
* Miran Grca,
+ *
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
*/
@@ -20,7 +21,6 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../io.h"
#include "../pci.h"
#include "../mem.h"
@@ -29,8 +29,7 @@
#include "../piix.h"
#include "../intel_flash.h"
#include "../sio.h"
-#include "machine_at.h"
-#include "machine_at_440fx.h"
+#include "machine.h"
static uint8_t card_i440fx[256];
@@ -189,9 +188,11 @@ static void i440fx_init(void)
}
-void machine_at_i440fx_init(void)
+void
+machine_at_i440fx_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -204,13 +205,16 @@ void machine_at_i440fx_init(void)
i440fx_init();
piix3_init(7);
fdc37c665_init();
+
device_add(&intel_flash_bxt_device);
}
-void machine_at_s1668_init(void)
+void
+machine_at_s1668_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -223,5 +227,6 @@ void machine_at_s1668_init(void)
i440fx_init();
piix3_init(7);
fdc37c665_init();
+
device_add(&intel_flash_bxt_device);
}
diff --git a/src/machine/machine_at_440fx.h b/src/machine/machine_at_440fx.h
deleted file mode 100644
index 3ee3d50bc..000000000
--- a/src/machine/machine_at_440fx.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * 86Box A hypervisor and IBM PC system emulator that specializes in
- * running old operating systems and software designed for IBM
- * PC systems and compatibles from 1981 through fairly recent
- * system designs based on the PCI bus.
- *
- * This file is part of the 86Box distribution.
- *
- * Header of the implementation of the Intel 440FX PCISet chip.
- *
- * Version: @(#)machine_at_440fx.h 1.0.0 2017/09/02
- *
- * Authors: Sarah Walker,
- * Miran Grca,
- * Copyright 2008-2017 Sarah Walker.
- * Copyright 2016-2017 Miran Grca.
- */
-void machine_at_i440fx_init(void);
-void machine_at_s1668_init(void);
diff --git a/src/machine/machine_at_ali1429.c b/src/machine/machine_at_ali1429.c
index 8b551cd3d..36c689419 100644
--- a/src/machine/machine_at_ali1429.c
+++ b/src/machine/machine_at_ali1429.c
@@ -12,8 +12,7 @@
#include "../device.h"
#include "../disk/hdc.h"
#include "../disk/hdc_ide.h"
-#include "machine_at.h"
-#include "machine_at_ali1429.h"
+#include "machine.h"
static int ali1429_index;
@@ -94,11 +93,14 @@ static void ali1429_init(void)
io_sethandler(0x0022, 0x0002, ali1429_read, NULL, NULL, ali1429_write, NULL, NULL, NULL);
}
-void machine_at_ali1429_init(void)
+
+void
+machine_at_ali1429_init(machine_t *model)
{
ali1429_reset();
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
ali1429_init();
secondary_ide_check();
diff --git a/src/machine/machine_at_ali1429.h b/src/machine/machine_at_ali1429.h
deleted file mode 100644
index 03bfacd7a..000000000
--- a/src/machine/machine_at_ali1429.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_at_ali1429_init(void);
diff --git a/src/machine/machine_at_commodore.c b/src/machine/machine_at_commodore.c
index 8cf2b4b8c..05bcbad86 100644
--- a/src/machine/machine_at_commodore.c
+++ b/src/machine/machine_at_commodore.c
@@ -6,8 +6,7 @@
#include "../io.h"
#include "../lpt.h"
#include "../serial.h"
-#include "machine_at.h"
-#include "machine_at_commodore.h"
+#include "machine.h"
static void cbm_io_write(uint16_t port, uint8_t val, void *p)
@@ -42,8 +41,11 @@ static void cbm_io_init()
io_sethandler(0x0230, 0x0001, NULL,NULL,NULL, cbm_io_write,NULL,NULL, NULL);
}
-void machine_at_cmdpc_init(void)
+
+void
+machine_at_cmdpc_init(machine_t *model)
{
- machine_at_ide_top_remap_init();
+ machine_at_ide_top_remap_init(model);
+
cbm_io_init();
}
diff --git a/src/machine/machine_at_commodore.h b/src/machine/machine_at_commodore.h
deleted file mode 100644
index 5d3e0c5a0..000000000
--- a/src/machine/machine_at_commodore.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_at_cmdpc_init(void);
diff --git a/src/machine/machine_at_compaq.c b/src/machine/machine_at_compaq.c
index 2864221b1..9ed973abb 100644
--- a/src/machine/machine_at_compaq.c
+++ b/src/machine/machine_at_compaq.c
@@ -8,8 +8,7 @@
#include "../ibm.h"
#include "../cpu/cpu.h"
#include "../mem.h"
-#include "machine_at.h"
-#include "machine_at_compaq.h"
+#include "machine.h"
/* Compaq Deskpro 386 remaps RAM from 0xA0000-0xFFFFF to 0xFA0000-0xFFFFFF */
diff --git a/src/machine/machine_at_compaq.h b/src/machine/machine_at_compaq.h
deleted file mode 100644
index 14aeeac86..000000000
--- a/src/machine/machine_at_compaq.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * 86Box A hypervisor and IBM PC system emulator that specializes in
- * running old operating systems and software designed for IBM
- * PC systems and compatibles from 1981 through fairly recent
- * system designs based on the PCI bus.
- *
- * Emulation of the Compaq chips.
- *
- * Version: @(#)machine_at_compaq.h 1.0.0 2017/09/02
- *
- * Author: Miran Grca,
- * Copyright 2017 Miran Grca.
- */
diff --git a/src/machine/machine_at_headland.c b/src/machine/machine_at_headland.c
index 92df0e05a..74778e83f 100644
--- a/src/machine/machine_at_headland.c
+++ b/src/machine/machine_at_headland.c
@@ -9,8 +9,7 @@
#include "../cpu/cpu.h"
#include "../io.h"
#include "../mem.h"
-#include "machine_at.h"
-#include "machine_at_headland.h"
+#include "machine.h"
static int headland_index;
@@ -56,8 +55,10 @@ static void headland_init(void)
}
-void machine_at_headland_init(void)
+void
+machine_at_headland_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
headland_init();
}
diff --git a/src/machine/machine_at_headland.h b/src/machine/machine_at_headland.h
deleted file mode 100644
index 054294427..000000000
--- a/src/machine/machine_at_headland.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_at_headland_init(void);
diff --git a/src/machine/machine_at_neat.c b/src/machine/machine_at_neat.c
index 96d0ff124..d43872a16 100644
--- a/src/machine/machine_at_neat.c
+++ b/src/machine/machine_at_neat.c
@@ -7,10 +7,8 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../io.h"
-#include "machine_at.h"
-#include "machine_at_neat.h"
+#include "machine.h"
static uint8_t neat_regs[256];
@@ -85,9 +83,10 @@ static void neat_init(void)
}
-void machine_at_neat_init(void)
+void
+machine_at_neat_init(machine_t *model)
{
- machine_at_init();
+ machine_at_init(model);
neat_init();
}
diff --git a/src/machine/machine_at_neat.h b/src/machine/machine_at_neat.h
deleted file mode 100644
index c736bde13..000000000
--- a/src/machine/machine_at_neat.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_at_neat_init(void);
diff --git a/src/machine/machine_at_opti495.c b/src/machine/machine_at_opti495.c
index 049e45481..7570c7922 100644
--- a/src/machine/machine_at_opti495.c
+++ b/src/machine/machine_at_opti495.c
@@ -259,8 +259,7 @@ SeeAlso: #P0178,#P0187
#include "../cpu/cpu.h"
#include "../io.h"
#include "../mem.h"
-#include "machine_at.h"
-#include "machine_at_opti495.h"
+#include "machine.h"
static uint8_t optiregs[0x10];
@@ -319,8 +318,10 @@ static void opti495_init(void)
}
-void machine_at_opti495_init(void)
+void
+machine_at_opti495_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
opti495_init();
}
diff --git a/src/machine/machine_at_opti495.h b/src/machine/machine_at_opti495.h
deleted file mode 100644
index 38862e579..000000000
--- a/src/machine/machine_at_opti495.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_at_opti495_init(void);
diff --git a/src/machine/machine_at_scat.c b/src/machine/machine_at_scat.c
index 07c6d23d0..26ecdb6d5 100644
--- a/src/machine/machine_at_scat.c
+++ b/src/machine/machine_at_scat.c
@@ -10,10 +10,11 @@
*
* Re-worked version based on the 82C235 datasheet and errata.
*
- * Version: @(#)at_scat.c 1.0.2 2017/09/24
+ * Version: @(#)at_scat.c 1.0.2 2017/10/07
*
* Authors: Original by GreatPsycho for PCem.
* Fred N. van Kempen,
+ *
* Copyright 2017 Fred N. van Kempen.
*/
#include
@@ -25,8 +26,7 @@
#include "../cpu/x86.h"
#include "../io.h"
#include "../mem.h"
-#include "machine_at.h"
-#include "machine_at_scat.h"
+#include "machine.h"
#define SCAT_DEBUG 2
@@ -757,9 +757,9 @@ scat_init(void)
void
-machine_at_scat_init(void)
+machine_at_scat_init(machine_t *model)
{
- machine_at_init();
+ machine_at_init(model);
scat_init();
}
diff --git a/src/machine/machine_at_scat.h b/src/machine/machine_at_scat.h
deleted file mode 100644
index cfc699819..000000000
--- a/src/machine/machine_at_scat.h
+++ /dev/null
@@ -1 +0,0 @@
-extern void machine_at_scat_init(void);
diff --git a/src/machine/machine_at_sis_85c471.c b/src/machine/machine_at_sis_85c471.c
index f8fc4af0b..68b9b5ab1 100644
--- a/src/machine/machine_at_sis_85c471.c
+++ b/src/machine/machine_at_sis_85c471.c
@@ -9,9 +9,10 @@
* SiS sis85c471 Super I/O Chip
* Used by DTK PKM-0038S E-2
*
- * Version: @(#)sis85c471.c 1.0.6 2017/09/30
+ * Version: @(#)sis85c471.c 1.0.6 2017/10/07
*
* Author: Miran Grca,
+ *
* Copyright 2017 Miran Grca.
*/
#include
@@ -29,8 +30,7 @@
#include "../floppy/floppy.h"
#include "../floppy/fdc.h"
#include "../floppy/fdd.h"
-#include "machine_at.h"
-#include "machine_at_sis_85c471.h"
+#include "machine.h"
static int sis_85c471_curreg;
@@ -243,9 +243,11 @@ static void sis_85c471_init(void)
}
-void machine_at_dtk486_init(void)
+void
+machine_at_dtk486_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
sis_85c471_init();
secondary_ide_check();
diff --git a/src/machine/machine_at_sis_85c471.h b/src/machine/machine_at_sis_85c471.h
deleted file mode 100644
index 4e720242f..000000000
--- a/src/machine/machine_at_sis_85c471.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * 86Box A hypervisor and IBM PC system emulator that specializes in
- * running old operating systems and software designed for IBM
- * PC systems and compatibles from 1981 through fairly recent
- * system designs based on the PCI bus.
- *
- * Emulation of the SiS 85c471 chip.
- *
- * Version: @(#)machine_at_sis_85c471.h 1.0.2 2017/09/02
- *
- * Author: Miran Grca,
- * Copyright 2017 Miran Grca.
- */
-
-extern void machine_at_dtk486_init(void);
diff --git a/src/machine/machine_at_sis_85c496.c b/src/machine/machine_at_sis_85c496.c
index 56cb59b2f..77a9c3580 100644
--- a/src/machine/machine_at_sis_85c496.c
+++ b/src/machine/machine_at_sis_85c496.c
@@ -13,8 +13,7 @@
#include "../mem.h"
#include "../memregs.h"
#include "../sio.h"
-#include "machine_at.h"
-#include "machine_at_sis_85c496.h"
+#include "machine.h"
typedef struct sis_85c496_t
@@ -160,9 +159,11 @@ static void sis_85c496_init(void)
}
-static void machine_at_sis_85c496_common_init(void)
+static void
+machine_at_sis_85c496_common_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
memregs_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x05, PCI_CARD_SPECIAL, 0, 0, 0, 0);
@@ -170,12 +171,15 @@ static void machine_at_sis_85c496_common_init(void)
pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3);
+
sis_85c496_init();
}
-void machine_at_r418_init(void)
+void
+machine_at_r418_init(machine_t *model)
{
- machine_at_sis_85c496_common_init();
+ machine_at_sis_85c496_common_init(model);
+
fdc37c665_init();
}
diff --git a/src/machine/machine_at_sis_85c496.h b/src/machine/machine_at_sis_85c496.h
deleted file mode 100644
index 9ea1ab4ea..000000000
--- a/src/machine/machine_at_sis_85c496.h
+++ /dev/null
@@ -1 +0,0 @@
-extern void machine_at_r418_init(void);
diff --git a/src/machine/machine_at_sis_85c50x.c b/src/machine/machine_at_sis_85c50x.c
index 8c94f540b..c6aa5dfb6 100644
--- a/src/machine/machine_at_sis_85c50x.c
+++ b/src/machine/machine_at_sis_85c50x.c
@@ -6,9 +6,10 @@
*
* Emulation of the SiS 50x PCI chips.
*
- * Version: @(#)machine_at_sis_85c50x.c 1.0.3 2017/09/24
+ * Version: @(#)machine_at_sis_85c50x.c 1.0.3 2017/10/07
*
* Author: Miran Grca,
+ *
* Copyright 2017 Miran Grca.
*/
#include
@@ -20,8 +21,7 @@
#include "../io.h"
#include "../pci.h"
#include "../mem.h"
-#include "machine_at.h"
-#include "machine_at_sis_85c50x.h"
+#include "machine.h"
typedef struct sis_85c501_t
diff --git a/src/machine/machine_at_sis_85c50x.h b/src/machine/machine_at_sis_85c50x.h
deleted file mode 100644
index 3e88158de..000000000
--- a/src/machine/machine_at_sis_85c50x.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * 86Box A hypervisor and IBM PC system emulator that specializes in
- * running old operating systems and software designed for IBM
- * PC systems and compatibles from 1981 through fairly recent
- * system designs based on the PCI bus.
- *
- * Emulation of the SiS 50x PCI chips.
- *
- * Version: @(#)machine_at_sis_85c50x.h 1.0.2 2017/09/02
- *
- * Author: Miran Grca,
- * Copyright 2017 Miran Grca.
- */
diff --git a/src/machine/machine_at_wd76c10.c b/src/machine/machine_at_wd76c10.c
index ab6f7dcd7..acdb47245 100644
--- a/src/machine/machine_at_wd76c10.c
+++ b/src/machine/machine_at_wd76c10.c
@@ -11,8 +11,7 @@
#include "../serial.h"
#include "../floppy/floppy.h"
#include "../floppy/fdc.h"
-#include "machine_at.h"
-#include "machine_at_wd76c10.h"
+#include "machine.h"
static uint16_t wd76c10_0092;
@@ -135,8 +134,11 @@ static void wd76c10_init(void)
wd76c10_writeb, wd76c10_write, NULL, NULL);
}
-void machine_at_wd76c10_init(void)
+
+void
+machine_at_wd76c10_init(machine_t *model)
{
- machine_at_ide_init();
+ machine_at_ide_init(model);
+
wd76c10_init();
}
diff --git a/src/machine/machine_at_wd76c10.h b/src/machine/machine_at_wd76c10.h
deleted file mode 100644
index 24eaae50a..000000000
--- a/src/machine/machine_at_wd76c10.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Copyright holders: Sarah Walker
- see COPYING for more details
-*/
-extern void machine_at_wd76c10_init(void);
diff --git a/src/machine/machine_common.c b/src/machine/machine_common.c
index bab15b806..bf22dca68 100644
--- a/src/machine/machine_common.c
+++ b/src/machine/machine_common.c
@@ -11,30 +11,25 @@
#include "../floppy/floppy.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
-#include "machine_common.h"
+#include "machine.h"
-void machine_common_init(void)
+void
+machine_common_init(machine_t *model)
{
- /* System devices first. */
- dma_init();
- pic_init();
- pit_init();
+ /* System devices first. */
+ dma_init();
+ pic_init();
+ pit_init();
- if (lpt_enabled)
- {
- lpt_init();
- }
+ if (lpt_enabled)
+ lpt_init();
- if (serial_enabled[0])
- {
- serial_setup(1, SERIAL1_ADDR, SERIAL1_IRQ);
- }
+ if (serial_enabled[0])
+ serial_setup(1, SERIAL1_ADDR, SERIAL1_IRQ);
- if (serial_enabled[1])
- {
- serial_setup(2, SERIAL2_ADDR, SERIAL2_IRQ);
- }
+ if (serial_enabled[1])
+ serial_setup(2, SERIAL2_ADDR, SERIAL2_IRQ);
- fdc_add();
+ fdc_add();
}
diff --git a/src/machine/machine_common.h b/src/machine/machine_common.h
deleted file mode 100644
index 445fadefa..000000000
--- a/src/machine/machine_common.h
+++ /dev/null
@@ -1 +0,0 @@
-extern void machine_common_init(void);
diff --git a/src/machine/machine_europc.c b/src/machine/machine_europc.c
index 74b7c7a1e..182662a91 100644
--- a/src/machine/machine_europc.c
+++ b/src/machine/machine_europc.c
@@ -6,7 +6,6 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../io.h"
#include "../nmi.h"
#include "../mem.h"
@@ -16,8 +15,7 @@
#include "../game/gameport.h"
#include "../keyboard_xt.h"
#include "../lpt.h"
-#include "machine_common.h"
-#include "machine_europc.h"
+#include "machine.h"
uint8_t europcdat[16];
@@ -132,9 +130,11 @@ static void jim_init(void)
}
-void machine_europc_init(void)
+void
+machine_europc_init(machine_t *model)
{
- machine_common_init();
+ machine_common_init(model);
+
mem_add_bios();
lpt3_init(0x3bc);
jim_init();
diff --git a/src/machine/machine_europc.h b/src/machine/machine_europc.h
deleted file mode 100644
index 2217a6500..000000000
--- a/src/machine/machine_europc.h
+++ /dev/null
@@ -1,3 +0,0 @@
-void europc_save_nvr(void);
-
-void machine_europc_init(void);
diff --git a/src/machine/machine_olivetti_m24.c b/src/machine/machine_olivetti_m24.c
index 56802deff..5609d4514 100644
--- a/src/machine/machine_olivetti_m24.c
+++ b/src/machine/machine_olivetti_m24.c
@@ -6,7 +6,6 @@
#include
#include
#include "../ibm.h"
-#include "../cpu/cpu.h"
#include "../io.h"
#include "../nmi.h"
#include "../mem.h"
@@ -14,8 +13,7 @@
#include "../nvr.h"
#include "../game/gameport.h"
#include "../keyboard_olim24.h"
-#include "machine_common.h"
-#include "machine_olivetti_m24.h"
+#include "machine.h"
static uint8_t olivetti_m24_read(uint16_t port, void *priv)
@@ -37,9 +35,11 @@ static void olivetti_m24_init(void)
}
-void machine_olim24_init(void)
+void
+machine_olim24_init(machine_t *model)
{
- machine_common_init();
+ machine_common_init(model);
+
mem_add_bios();
keyboard_olim24_init();
diff --git a/src/machine/machine_olivetti_m24.h b/src/machine/machine_olivetti_m24.h
deleted file mode 100644
index 3a17db6bd..000000000
--- a/src/machine/machine_olivetti_m24.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_olim24_init(void);
diff --git a/src/machine/machine_pcjr.c b/src/machine/machine_pcjr.c
index 3eb1e4545..0114a164d 100644
--- a/src/machine/machine_pcjr.c
+++ b/src/machine/machine_pcjr.c
@@ -14,10 +14,11 @@
#include "../floppy/fdc.h"
#include "../floppy/fdd.h"
#include "../sound/snd_sn76489.h"
-#include "machine_pcjr.h"
+#include "machine.h"
-void machine_pcjr_init(void)
+void
+machine_pcjr_init(machine_t *model)
{
mem_add_bios();
fdc_add_pcjr();
diff --git a/src/machine/machine_pcjr.h b/src/machine/machine_pcjr.h
deleted file mode 100644
index fa8b85552..000000000
--- a/src/machine/machine_pcjr.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_pcjr_init(void);
diff --git a/src/machine/machine_ps1.c b/src/machine/machine_ps1.c
index 8c1212971..3434f565c 100644
--- a/src/machine/machine_ps1.c
+++ b/src/machine/machine_ps1.c
@@ -25,8 +25,7 @@
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../sound/snd_ps1.h"
-#include "machine_common.h"
-#include "machine_ps1.h"
+#include "machine.h"
static rom_t ps1_high_rom;
@@ -335,11 +334,14 @@ static void ps1mb_m2133_init(void)
mem_remap_top_384k();
}
-static void machine_ps1_common_init(void)
+
+static void
+machine_ps1_common_init(machine_t *model)
{
AT = 1;
- machine_common_init();
+ machine_common_init(model);
+
mem_add_bios();
pit_set_out_func(&pit, 1, pit_refresh_timer_at);
dma16_init();
@@ -361,22 +363,31 @@ static void machine_ps1_common_init(void)
device_add(&gameport_201_device);
}
-void machine_ps1_m2011_init(void)
+
+void
+machine_ps1_m2011_init(machine_t *model)
{
- machine_ps1_common_init();
+ machine_ps1_common_init(model);
+
ps1mb_init();
mem_remap_top_384k();
}
-void machine_ps1_m2121_init(void)
+
+void
+machine_ps1_m2121_init(machine_t *model)
{
- machine_ps1_common_init();
+ machine_ps1_common_init(model);
+
ps1mb_m2121_init();
fdc_set_ps1();
}
-void machine_ps1_m2133_init(void)
+
+void
+machine_ps1_m2133_init(machine_t *model)
{
- machine_ps1_common_init();
+ machine_ps1_common_init(model);
+
ps1mb_m2133_init();
}
diff --git a/src/machine/machine_ps1.h b/src/machine/machine_ps1.h
deleted file mode 100644
index 6141632bd..000000000
--- a/src/machine/machine_ps1.h
+++ /dev/null
@@ -1,3 +0,0 @@
-void machine_ps1_m2011_init(void);
-void machine_ps1_m2121_init(void);
-void machine_ps1_m2133_init(void);
diff --git a/src/machine/machine_ps2_isa.c b/src/machine/machine_ps2_isa.c
index 0001201c0..8d62be7fd 100644
--- a/src/machine/machine_ps2_isa.c
+++ b/src/machine/machine_ps2_isa.c
@@ -19,8 +19,7 @@
#include "../floppy/floppy.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
-#include "machine_common.h"
-#include "machine_ps2_isa.h"
+#include "machine.h"
static uint8_t ps2_92, ps2_94, ps2_102, ps2_103, ps2_104, ps2_105, ps2_190;
@@ -154,11 +153,13 @@ static void ps2board_init(void)
}
-void machine_ps2_m30_286_init(void)
+void
+machine_ps2_m30_286_init(machine_t *model)
{
AT = 1;
- machine_common_init();
+ machine_common_init(model);
+
mem_add_bios();
pit_set_out_func(&pit, 1, pit_refresh_timer_at);
dma16_init();
diff --git a/src/machine/machine_ps2_isa.h b/src/machine/machine_ps2_isa.h
deleted file mode 100644
index 22ee1482b..000000000
--- a/src/machine/machine_ps2_isa.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_ps2_m30_286_init(void);
diff --git a/src/machine/machine_ps2_mca.c b/src/machine/machine_ps2_mca.c
index 1d85d84c3..9ced03bf9 100644
--- a/src/machine/machine_ps2_mca.c
+++ b/src/machine/machine_ps2_mca.c
@@ -19,8 +19,7 @@
#include "../lpt.h"
#include "../mouse.h"
#include "../serial.h"
-#include "machine_common.h"
-#include "machine_ps2_mca.h"
+#include "machine.h"
static struct
@@ -802,11 +801,14 @@ static void ps2_mca_board_model_80_type2_init()
}
}
-static void machine_ps2_common_init(void)
+
+static void
+machine_ps2_common_init(machine_t *model)
{
AT = 1;
- machine_common_init();
+ machine_common_init(model);
+
mem_add_bios();
dma16_init();
ps2_dma_init();
@@ -820,29 +822,37 @@ static void machine_ps2_common_init(void)
}
-void machine_ps2_model_50_init(void)
+void
+machine_ps2_model_50_init(machine_t *model)
{
- machine_ps2_common_init();
+ machine_ps2_common_init(model);
+
ps2_mca_board_model_50_init();
}
-void machine_ps2_model_55sx_init(void)
+void
+machine_ps2_model_55sx_init(machine_t *model)
{
- machine_ps2_common_init();
+ machine_ps2_common_init(model);
+
ps2_mca_board_model_55sx_init();
}
-void machine_ps2_model_80_init(void)
+void
+machine_ps2_model_80_init(machine_t *model)
{
- machine_ps2_common_init();
+ machine_ps2_common_init(model);
+
ps2_mca_board_model_80_type2_init();
}
-void machine_ps2_model_80_486_init(void)
+void
+machine_ps2_model_80_486_init(machine_t *model)
{
- machine_ps2_common_init();
+ machine_ps2_common_init(model);
+
ps2_mca_board_model_80_type2_init();
}
diff --git a/src/machine/machine_ps2_mca.h b/src/machine/machine_ps2_mca.h
deleted file mode 100644
index 5965592e9..000000000
--- a/src/machine/machine_ps2_mca.h
+++ /dev/null
@@ -1,4 +0,0 @@
-extern void machine_ps2_model_50_init(void);
-extern void machine_ps2_model_55sx_init(void);
-extern void machine_ps2_model_80_init(void);
-extern void machine_ps2_model_80_486_init(void);
diff --git a/src/machine/machine_tandy.c b/src/machine/machine_tandy.c
index b1a1c26bf..d583b4827 100644
--- a/src/machine/machine_tandy.c
+++ b/src/machine/machine_tandy.c
@@ -13,14 +13,16 @@
#include "../tandy_rom.h"
#include "../sound/snd_pssj.h"
#include "../sound/snd_sn76489.h"
-#include "machine_common.h"
+#include "machine.h"
-void machine_tandy1k_init(void)
+void
+machine_tandy1k_init(machine_t *model)
{
TANDY = 1;
- machine_common_init();
+ machine_common_init(model);
+
mem_add_bios();
keyboard_tandy_init();
if (romset == ROM_TANDY)
@@ -35,9 +37,11 @@ void machine_tandy1k_init(void)
}
-void machine_tandy1ksl2_init(void)
+void
+machine_tandy1ksl2_init(machine_t *model)
{
- machine_common_init();
+ machine_common_init(model);
+
mem_add_bios();
keyboard_tandy_init();
device_add(&pssj_device);
diff --git a/src/machine/machine_tandy.h b/src/machine/machine_tandy.h
deleted file mode 100644
index 06792bbd0..000000000
--- a/src/machine/machine_tandy.h
+++ /dev/null
@@ -1,2 +0,0 @@
-void machine_tandy1k_init(void);
-void machine_tandy1ksl2_init(void);
diff --git a/src/machine/machine_xt.c b/src/machine/machine_xt.c
index ad5639e47..b148016f9 100644
--- a/src/machine/machine_xt.c
+++ b/src/machine/machine_xt.c
@@ -10,13 +10,13 @@
#include "../bugger.h"
#include "../game/gameport.h"
#include "../keyboard_xt.h"
-#include "machine_common.h"
-#include "machine_xt.h"
+#include "machine.h"
-void machine_xt_init(void)
+void
+machine_xt_init(machine_t *model)
{
- machine_common_init();
+ machine_common_init(model);
mem_add_bios();
diff --git a/src/machine/machine_xt.h b/src/machine/machine_xt.h
deleted file mode 100644
index d111551cf..000000000
--- a/src/machine/machine_xt.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_xt_init(void);
diff --git a/src/machine/machine_xt_laserxt.c b/src/machine/machine_xt_laserxt.c
index 564f0f4c0..6cbadf648 100644
--- a/src/machine/machine_xt_laserxt.c
+++ b/src/machine/machine_xt_laserxt.c
@@ -7,8 +7,7 @@
#include "../cpu/cpu.h"
#include "../io.h"
#include "../mem.h"
-#include "machine_xt.h"
-#include "machine_xt_laserxt.h"
+#include "machine.h"
static int laserxt_emspage[4];
@@ -129,8 +128,10 @@ static void laserxt_init(void)
}
-void machine_xt_laserxt_init(void)
+void
+machine_xt_laserxt_init(machine_t *model)
{
- machine_xt_init();
+ machine_xt_init(model);
+
laserxt_init();
}
diff --git a/src/machine/machine_xt_laserxt.h b/src/machine/machine_xt_laserxt.h
deleted file mode 100644
index c74b0417c..000000000
--- a/src/machine/machine_xt_laserxt.h
+++ /dev/null
@@ -1 +0,0 @@
-void machine_xt_laserxt_init(void);
diff --git a/src/network/net_ne2000.c b/src/network/net_ne2000.c
index 57420cd5e..de6e575d5 100644
--- a/src/network/net_ne2000.c
+++ b/src/network/net_ne2000.c
@@ -10,7 +10,7 @@
*
* NOTE: The file will also implement an NE1000 for 8-bit ISA systems.
*
- * Version: @(#)net_ne2000.c 1.0.16 2017/10/05
+ * Version: @(#)net_ne2000.c 1.0.17 2017/10/07
*
* Authors: Fred N. van Kempen,
* Peter Grehan, grehan@iprg.nokia.com>
@@ -1874,7 +1874,7 @@ nic_rom_init(nic_t *dev, wchar_t *s)
static void *
-nic_init(int board)
+nic_init(device_t *info)
{
uint32_t mac;
wchar_t *rom;
@@ -1887,7 +1887,7 @@ nic_init(int board)
dev = malloc(sizeof(nic_t));
memset(dev, 0x00, sizeof(nic_t));
- dev->board = board;
+ dev->board = info->local;
rom = NULL;
switch(dev->board) {
case NE2K_NE1000:
@@ -2065,27 +2065,6 @@ nic_close(void *priv)
}
-static void *
-ne1000_init(device_t *info)
-{
- return(nic_init(NE2K_NE1000));
-}
-
-
-static void *
-ne2000_init(device_t *info)
-{
- return(nic_init(NE2K_NE2000));
-}
-
-
-static void *
-rtl8029as_init(device_t *info)
-{
- return(nic_init(NE2K_RTL8029AS));
-}
-
-
static device_config_t ne1000_config[] =
{
{
@@ -2280,7 +2259,7 @@ device_t ne1000_device = {
"Novell NE1000",
0,
NE2K_NE1000,
- ne1000_init, nic_close, NULL,
+ nic_init, nic_close, NULL,
NULL, NULL, NULL, NULL,
ne1000_config
};
@@ -2289,7 +2268,7 @@ device_t ne2000_device = {
"Novell NE2000",
DEVICE_AT,
NE2K_NE2000,
- ne2000_init, nic_close, NULL,
+ nic_init, nic_close, NULL,
NULL, NULL, NULL, NULL,
ne2000_config
};
@@ -2298,7 +2277,7 @@ device_t rtl8029as_device = {
"Realtek RTL8029AS",
0,
NE2K_RTL8029AS,
- rtl8029as_init, nic_close, NULL,
+ nic_init, nic_close, NULL,
NULL, NULL, NULL, NULL,
rtl8029as_config
};
diff --git a/src/scsi/scsi_aha154x.c b/src/scsi/scsi_aha154x.c
index 7dbec1efd..1a344343f 100644
--- a/src/scsi/scsi_aha154x.c
+++ b/src/scsi/scsi_aha154x.c
@@ -12,10 +12,11 @@
*
* NOTE: THIS IS CURRENTLY A MESS, but will be cleaned up as I go.
*
- * Version: @(#)scsi_aha154x.c 1.0.20 2017/10/04
+ * Version: @(#)scsi_aha154x.c 1.0.21 2017/10/07
*
* Authors: Fred N. van Kempen,
* Original Buslogic version by SA1988 and Miran Grca.
+ *
* Copyright 2017 Fred N. van Kempen.
*/
#include
@@ -1994,7 +1995,7 @@ aha_setnvr(aha_t *dev)
/* General initialization routine for all boards. */
static void *
-aha_init(int type)
+aha_init(device_t *info)
{
aha_t *dev;
@@ -2002,7 +2003,7 @@ aha_init(int type)
dev = malloc(sizeof(aha_t));
if (dev == NULL) return(dev);
memset(dev, 0x00, sizeof(aha_t));
- dev->type = type;
+ dev->type = info->local;
/*
* Set up the (initial) I/O address, IRQ and DMA info.
@@ -2022,7 +2023,7 @@ aha_init(int type)
#endif
/* Perform per-board initialization. */
- switch(type) {
+ switch(dev->type) {
case AHA_154xB:
strcpy(dev->name, "AHA-154xB");
switch(dev->Base) {
@@ -2111,34 +2112,6 @@ aha_init(int type)
}
-static void *
-aha_154xB_init(device_t *info)
-{
- return(aha_init(AHA_154xB));
-}
-
-
-static void *
-aha_154xC_init(device_t *info)
-{
- return(aha_init(AHA_154xC));
-}
-
-
-static void *
-aha_154xCF_init(device_t *info)
-{
- return(aha_init(AHA_154xCF));
-}
-
-
-static void *
-aha_1640_init(device_t *info)
-{
- return(aha_init(AHA_1640));
-}
-
-
static void
aha_close(void *priv)
{
@@ -2276,55 +2249,35 @@ static device_config_t aha_154x_config[] = {
device_t aha1540b_device = {
"Adaptec AHA-1540B",
- 0,
- 0,
- aha_154xB_init,
- aha_close,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
+ 0, AHA_154xB,
+ aha_init, aha_close, NULL,
+ NULL, NULL, NULL, NULL,
aha_154x_config
};
device_t aha1542c_device = {
"Adaptec AHA-1542C",
0,
- 0,
- aha_154xC_init,
- aha_close,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
+ AHA_154xC,
+ aha_init, aha_close, NULL,
+ NULL, NULL, NULL, NULL,
aha_154x_config
};
device_t aha1542cf_device = {
"Adaptec AHA-1542CF",
0,
- 0,
- aha_154xCF_init,
- aha_close,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
+ AHA_154xCF,
+ aha_init, aha_close, NULL,
+ NULL, NULL, NULL, NULL,
aha_154x_config
};
device_t aha1640_device = {
"Adaptec AHA-1640",
DEVICE_MCA,
- 0,
- aha_1640_init,
- aha_close,
- NULL,
- NULL,
- NULL,
- NULL,
+ AHA_1640,
+ aha_init, aha_close, NULL,
+ NULL, NULL, NULL, NULL,
NULL
};
diff --git a/src/scsi/scsi_buslogic.c b/src/scsi/scsi_buslogic.c
index ee0ac8ea2..3112b8a3c 100644
--- a/src/scsi/scsi_buslogic.c
+++ b/src/scsi/scsi_buslogic.c
@@ -10,11 +10,12 @@
* 0 - BT-545C ISA;
* 1 - BT-958D PCI (but BT-545C ISA on non-PCI machines)
*
- * Version: @(#)scsi_buslogic.c 1.0.16 2017/10/04
+ * Version: @(#)scsi_buslogic.c 1.0.17 2017/10/07
*
* Authors: TheCollector1995,
* Miran Grca,
* Fred N. van Kempen,
+ *
* Copyright 2016,2017 Miran Grca.
* Copyright 2017 Fred N. van Kempen.
*/
@@ -2863,7 +2864,7 @@ BuslogicDeviceReset(void *p)
static void *
-BuslogicInit(int chip)
+Buslogic_Init(device_t *info)
{
Buslogic_t *bl;
wchar_t *bios_rom_name;
@@ -2879,12 +2880,12 @@ BuslogicInit(int chip)
bl = malloc(sizeof(Buslogic_t));
memset(bl, 0x00, sizeof(Buslogic_t));
-
- if (!PCI && (chip == CHIP_BUSLOGIC_PCI))
+ bl->chip = info->local;
+ if ((bl->chip == CHIP_BUSLOGIC_PCI) && !PCI)
{
- chip = CHIP_BUSLOGIC_ISA;
+ /* This is just wrong. Simply disallow PCI cards in non-PCI systems! */
+ bl->chip = CHIP_BUSLOGIC_ISA;
}
- bl->chip = chip;
bl->Base = device_get_config_hex16("base");
bl->PCIBase = 0;
bl->MMIOBase = 0;
@@ -2892,7 +2893,6 @@ BuslogicInit(int chip)
bl->DmaChannel = device_get_config_int("dma");
bl->has_bios = device_get_config_int("bios");
-
if (bl->Base != 0) {
if (bl->chip == CHIP_BUSLOGIC_PCI) {
io_sethandler(bl->Base, 4,
@@ -3018,22 +3018,8 @@ BuslogicInit(int chip)
}
-static void *
-Buslogic_545C_Init(device_t *info)
-{
- return BuslogicInit(CHIP_BUSLOGIC_ISA);
-}
-
-
-static void *
-Buslogic_958D_Init(device_t *info)
-{
- return BuslogicInit(CHIP_BUSLOGIC_PCI);
-}
-
-
static void
-BuslogicClose(void *p)
+Buslogic_Close(void *p)
{
Buslogic_t *bl = (Buslogic_t *)p;
if (bl)
@@ -3143,27 +3129,17 @@ static device_config_t BuslogicConfig[] = {
device_t buslogic_device = {
"Buslogic BT-545C ISA",
0,
- 0,
- Buslogic_545C_Init,
- BuslogicClose,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
+ CHIP_BUSLOGIC_ISA,
+ Buslogic_Init, Buslogic_Close, NULL,
+ NULL, NULL, NULL, NULL,
BuslogicConfig
};
device_t buslogic_pci_device = {
"Buslogic BT-958D PCI",
0,
- 0,
- Buslogic_958D_Init,
- BuslogicClose,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
+ CHIP_BUSLOGIC_PCI,
+ Buslogic_Init, Buslogic_Close, NULL,
+ NULL, NULL, NULL, NULL,
BuslogicConfig
};