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 };