diff --git a/src/machine/m_at.c b/src/machine/m_at.c index 773ac6126..2497ad2f7 100644 --- a/src/machine/m_at.c +++ b/src/machine/m_at.c @@ -237,6 +237,23 @@ machine_at_ibmxt286_init(const machine_t *model) return ret; } +#if defined(DEV_BRANCH) && defined(USE_SIEMENS) +int +machine_at_siemens_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear(L"roms/machines/siemens/286BIOS.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ibm_common_init(model); + + return ret; +} +#endif #if defined(DEV_BRANCH) && defined(USE_OPEN_AT) int diff --git a/src/machine/machine.h b/src/machine/machine.h index 852c52714..e72c02d21 100644 --- a/src/machine/machine.h +++ b/src/machine/machine.h @@ -169,6 +169,10 @@ extern int machine_at_ibmatquadtel_init(const machine_t *); // IBM AT with Quadt extern int machine_at_ibmxt286_init(const machine_t *); +#if defined(DEV_BRANCH) && defined(USE_SIEMENS) +extern int machine_at_siemens_init(const machine_t *); //Siemens PCD-2L. N82330 discrete machine. It segfaults in some places +#endif + #if defined(DEV_BRANCH) && defined(USE_OPEN_AT) extern int machine_at_open_at_init(const machine_t *); #endif diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 20d17a6c0..c62b46928 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -101,6 +101,9 @@ const machine_t machines[] = { { "[286 ISA] IBM PS/1 model 2011", "ibmps1es", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT | MACHINE_VIDEO | MACHINE_VIDEO_FIXED | MACHINE_HDC | MACHINE_PS2, 512,16384, 512, 63, machine_ps1_m2011_init, NULL }, { "[286 ISA] IBM PS/2 model 30-286", "ibmps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT | MACHINE_VIDEO | MACHINE_VIDEO_FIXED | MACHINE_HDC | MACHINE_PS2, 1, 16, 1, 127, machine_ps2_m30_286_init, NULL }, { "[286 ISA] IBM XT Model 286", "ibmxt286", {{"", cpus_ibmxt286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 127, machine_at_ibmxt286_init, NULL }, +#if defined(DEV_BRANCH) && defined(USE_SIEMENS) + { "[286 ISA] Siemens PCD-2L", "siemens", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_siemens_init, NULL }, +#endif #if defined(DEV_BRANCH) && defined(USE_OPEN_AT) { "[286 ISA] OpenAT", "open_at", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_open_at_init, NULL }, #endif diff --git a/src/machine/machine_table_new.c b/src/machine/machine_table_new.c index b703ca4c1..bf3204e73 100644 --- a/src/machine/machine_table_new.c +++ b/src/machine/machine_table_new.c @@ -88,6 +88,9 @@ const machine_t machines[] = { { "[286 ISA] IBM PS/1 model 2011", "ibmps1es", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT | MACHINE_VIDEO | MACHINE_VIDEO_FIXED | MACHINE_HDC | MACHINE_PS2, 512,16384, 512, 63, machine_ps1_m2011_init, NULL }, { "[286 ISA] IBM PS/2 model 30-286", "ibmps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT | MACHINE_VIDEO | MACHINE_VIDEO_FIXED | MACHINE_HDC | MACHINE_PS2, 1, 16, 1, 127, machine_ps2_m30_286_init, NULL }, { "[286 ISA] IBM XT Model 286", "ibmxt286", {{"", cpus_ibmxt286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 127, machine_at_ibmxt286_init, NULL }, +#if defined(DEV_BRANCH) && defined(USE_SIEMENS) + { "[286 ISA] Siemens PCD-2L", "siemens", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_siemens_init, NULL }, +#endif #if defined(DEV_BRANCH) && defined(USE_OPEN_AT) { "[286 ISA] OpenAT", "open_at", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_open_at_init, NULL }, #endif diff --git a/src/win/Makefile.mingw b/src/win/Makefile.mingw index aa8b8e598..465baab1d 100644 --- a/src/win/Makefile.mingw +++ b/src/win/Makefile.mingw @@ -86,6 +86,9 @@ ifeq ($(DEV_BUILD), y) ifndef GOLDSTAR386 GOLDSTAR386 := y endif + ifndef SIEMENS + SIEMENS := y + endif ifndef VGAWONDER VGAWONDER := y endif @@ -150,6 +153,9 @@ else ifndef GOLDSTAR386 GOLDSTAR386 := n endif + ifndef SIEMENS + SIEMENS := n + endif ifndef VGAWONDER VGAWONDER := n endif @@ -510,6 +516,10 @@ ifeq ($(GOLDSTAR386), y) OPTS += -DUSE_GOLDSTAR386 endif +ifeq ($(SIEMENS), y) +OPTS += -DUSE_SIEMENS +endif + ifeq ($(VGAWONDER), y) OPTS += -DUSE_VGAWONDER endif diff --git a/src/win/Makefile_ndr.mingw b/src/win/Makefile_ndr.mingw index a34b8c419..c49e62387 100644 --- a/src/win/Makefile_ndr.mingw +++ b/src/win/Makefile_ndr.mingw @@ -86,6 +86,9 @@ ifeq ($(DEV_BUILD), y) ifndef GOLDSTAR386 GOLDSTAR386 := y endif + ifndef SIEMENS + SIEMENS := y + endif ifndef VGAWONDER VGAWONDER := y endif @@ -150,6 +153,9 @@ else ifndef GOLDSTAR386 GOLDSTAR386 := n endif + ifndef SIEMENS + SIEMENS := n + endif ifndef VGAWONDER VGAWONDER := n endif @@ -516,6 +522,10 @@ ifeq ($(GOLDSTAR386), y) OPTS += -DUSE_GOLDSTAR386 endif +ifeq ($(SIEMENS), y) +OPTS += -DUSE_SIEMENS +endif + ifeq ($(VGAWONDER), y) OPTS += -DUSE_VGAWONDER endif