Improved memory management of Olivetti machines.

Added On-board video card for NCR 3302
This commit is contained in:
EngiNerd89
2021-01-23 17:59:02 +01:00
parent a4de9d514b
commit ec929b455e
6 changed files with 105 additions and 47 deletions

View File

@@ -244,11 +244,6 @@ extern int machine_at_mr286_init(const machine_t *);
extern int machine_at_neat_init(const machine_t *); extern int machine_at_neat_init(const machine_t *);
extern int machine_at_neat_ami_init(const machine_t *); extern int machine_at_neat_ami_init(const machine_t *);
extern int machine_at_olim300_05_init(const machine_t *);
extern int machine_at_olim300_10_init(const machine_t *);
extern int machine_at_olim300_08_init(const machine_t *);
extern int machine_at_olim300_15_init(const machine_t *);
extern int machine_at_ncrpc916sx_init(const machine_t *);
extern int machine_at_award286_init(const machine_t *); extern int machine_at_award286_init(const machine_t *);
extern int machine_at_gdc212m_init(const machine_t *); extern int machine_at_gdc212m_init(const machine_t *);
@@ -260,6 +255,12 @@ extern int machine_at_spc4620p_init(const machine_t *);
extern int machine_at_kmxc02_init(const machine_t *); extern int machine_at_kmxc02_init(const machine_t *);
extern int machine_at_deskmaster286_init(const machine_t *); extern int machine_at_deskmaster286_init(const machine_t *);
extern int machine_at_olim290_init(const machine_t *);
extern int machine_at_olim290s_init(const machine_t *);
extern int machine_at_ncrpc8_init(const machine_t *);
extern int machine_at_ncr3302_init(const machine_t *);
extern int machine_at_shuttle386sx_init(const machine_t *); extern int machine_at_shuttle386sx_init(const machine_t *);
extern int machine_at_adi386sx_init(const machine_t *); extern int machine_at_adi386sx_init(const machine_t *);
extern int machine_at_commodore_sl386sx16_init(const machine_t *); extern int machine_at_commodore_sl386sx16_init(const machine_t *);
@@ -267,8 +268,12 @@ extern int machine_at_commodore_sl386sx25_init(const machine_t *);
extern int machine_at_spc6033p_init(const machine_t *); extern int machine_at_spc6033p_init(const machine_t *);
extern int machine_at_wd76c10_init(const machine_t *); extern int machine_at_wd76c10_init(const machine_t *);
extern int machine_at_olim290_init(const machine_t *); extern int machine_at_olim300_05_init(const machine_t *);
extern int machine_at_olim290s_init(const machine_t *); extern int machine_at_olim300_10_init(const machine_t *);
extern int machine_at_olim300_08_init(const machine_t *);
extern int machine_at_olim300_15_init(const machine_t *);
extern int machine_at_ncrpc916sx_init(const machine_t *);
extern int machine_at_ncrpc8_init(const machine_t *); extern int machine_at_ncrpc8_init(const machine_t *);
extern int machine_at_ncr3302_init(const machine_t *); extern int machine_at_ncr3302_init(const machine_t *);
@@ -284,6 +289,7 @@ extern const device_t *at_ama932j_get_device(void);
extern const device_t *at_commodore_sl386sx25_get_device(void); extern const device_t *at_commodore_sl386sx25_get_device(void);
extern const device_t *at_spc4620p_get_device(void); extern const device_t *at_spc4620p_get_device(void);
extern const device_t *at_spc6033p_get_device(void); extern const device_t *at_spc6033p_get_device(void);
extern const device_t *at_ncr3302_get_device(void);
extern const device_t *at_m300_08_get_device(void); extern const device_t *at_m300_08_get_device(void);
#endif #endif

View File

@@ -296,6 +296,7 @@ extern const device_t oti067_m300_device;
extern const device_t oti077_device; extern const device_t oti077_device;
/* Paradise/WD (S)VGA */ /* Paradise/WD (S)VGA */
extern const device_t paradise_pvga1a_ncr3302_device;
extern const device_t paradise_pvga1a_pc2086_device; extern const device_t paradise_pvga1a_pc2086_device;
extern const device_t paradise_pvga1a_pc3086_device; extern const device_t paradise_pvga1a_pc3086_device;
extern const device_t paradise_pvga1a_device; extern const device_t paradise_pvga1a_device;

View File

@@ -35,6 +35,7 @@
#include <86box/rom.h> #include <86box/rom.h>
#include <86box/fdd.h> #include <86box/fdd.h>
#include <86box/fdc.h> #include <86box/fdc.h>
#include <86box/fdc_ext.h>
#include <86box/hdc.h> #include <86box/hdc.h>
#include <86box/sio.h> #include <86box/sio.h>
#include <86box/serial.h> #include <86box/serial.h>
@@ -645,8 +646,7 @@ machine_at_pja511m_init(const machine_t *model)
/* /*
* Current bugs: * Current bugs:
* - Automatic soft-reboot after saving CMOS settings produces an 8042 error * - soft-reboot after saving CMOS settings/pressing ctrl-alt-del produces an 8042 error
* - no EMS management due to missing chipset implementation
*/ */
int int
machine_at_ncrpc8_init(const machine_t *model) machine_at_ncrpc8_init(const machine_t *model)
@@ -662,14 +662,23 @@ machine_at_ncrpc8_init(const machine_t *model)
machine_at_common_init(model); machine_at_common_init(model);
device_add(&keyboard_at_ncr_device); device_add(&keyboard_at_ncr_device);
device_add(&fdc_at_device); mem_remap_top(384);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
return ret; return ret;
} }
const device_t *
at_ncr3302_get_device(void)
{
return &paradise_pvga1a_ncr3302_device;
}
/* /*
* Current bugs: * Current bugs:
* - Automatic soft-reboot after saving CMOS settings produces an 8042 error * - soft-reboot after saving CMOS settings/pressing ctrl-alt-del produces an 8042 error
*/ */
int int
machine_at_ncr3302_init(const machine_t *model) machine_at_ncr3302_init(const machine_t *model)
@@ -690,10 +699,12 @@ machine_at_ncr3302_init(const machine_t *model)
machine_at_common_ide_init(model); machine_at_common_ide_init(model);
device_add(&neat_device); device_add(&neat_device);
device_add(&keyboard_at_ncr_device); device_add(&keyboard_at_ncr_device);
device_add(&fdc_at_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
if (gfxcard == VID_INTERNAL) if (gfxcard == VID_INTERNAL)
device_add(&paradise_pvga1a_device); device_add(&paradise_pvga1a_ncr3302_device);
return ret; return ret;
} }
@@ -701,8 +712,7 @@ machine_at_ncr3302_init(const machine_t *model)
/* /*
* Current bugs: * Current bugs:
* - Automatic soft-reboot after saving CMOS settings produces an 8042 error * - soft-reboot after saving CMOS settings/pressing ctrl-alt-del produces an 8042 error
* - no EMS management due to missing chipset implementation (TACT82300)
*/ */
int int
machine_at_ncrpc916sx_init(const machine_t *model) machine_at_ncrpc916sx_init(const machine_t *model)
@@ -719,7 +729,11 @@ machine_at_ncrpc916sx_init(const machine_t *model)
machine_at_common_init(model); machine_at_common_init(model);
device_add(&keyboard_at_ncr_device); device_add(&keyboard_at_ncr_device);
device_add(&fdc_at_device); mem_remap_top(384);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
return ret; return ret;
} }
@@ -741,7 +755,9 @@ machine_at_olim290_init(const machine_t *model)
machine_at_common_init(model); machine_at_common_init(model);
device_add(&keyboard_at_olivetti_device); device_add(&keyboard_at_olivetti_device);
device_add(&fdc_at_device);
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add(&olivetti_m290_registers_device); device_add(&olivetti_m290_registers_device);
@@ -751,7 +767,7 @@ machine_at_olim290_init(const machine_t *model)
/* /*
* Current bugs: * Current bugs:
* - no EMS management due to missing chipset implementation (TACT82300) * - no EMS management due to missing chipset implementation (unidentified chip)
*/ */
int int
machine_at_olim290s_init(const machine_t *model) machine_at_olim290s_init(const machine_t *model)
@@ -767,12 +783,15 @@ machine_at_olim290s_init(const machine_t *model)
machine_at_common_ide_init(model); machine_at_common_ide_init(model);
device_add(&keyboard_ps2_olivetti_device); /* replace with correct chipset implementation */
device_add(&fdc_at_device); mem_remap_top(384);
if (gfxcard == VID_INTERNAL) device_add(&keyboard_ps2_olivetti_device);
/* should use custom BIOS */ device_add(&fdc_at_device);
device_add(&paradise_pvga1a_device);
/* should use custom BIOS */
if (gfxcard == VID_INTERNAL)
device_add(&paradise_pvga1a_device);
return ret; return ret;
} }
@@ -824,9 +843,9 @@ machine_at_olim300_15_init(const machine_t *model)
device_add(&keyboard_ps2_olivetti_device); device_add(&keyboard_ps2_olivetti_device);
device_add(&pc87310_ide_device); device_add(&pc87310_ide_device);
if (gfxcard == VID_INTERNAL) /* Stock VRAM is maxed out, so no need to expose video card config */
/* Stock VRAM is maxed out, so no need to expose video card config */ if (gfxcard == VID_INTERNAL)
device_add(&oti067_m300_device); device_add(&oti067_m300_device);
return ret; return ret;
} }
@@ -834,10 +853,12 @@ machine_at_olim300_15_init(const machine_t *model)
/* /*
* Current bugs: * Current bugs:
* - soft-reboot causes a fatal error
* - BIOS complains about FPU if not installed, pressing F1 allows to continue booting. * - BIOS complains about FPU if not installed, pressing F1 allows to continue booting.
* - BIOS throws a cache memory error (since L2 cache is not implemented yet), pressing F1 allows to continue booting. * - BIOS throws a cache memory error (since L2 cache is not implemented yet), pressing F1 allows to continue booting.
* - no EMS management due to missing chipset implementation (custom ASIC) * - no shadow memory due to missing chipset implementation (custom ASIC)
*/ */
//todo: check if fdc can be disabled
int int
machine_at_olim300_10_init(const machine_t *model) machine_at_olim300_10_init(const machine_t *model)
{ {
@@ -851,14 +872,16 @@ machine_at_olim300_10_init(const machine_t *model)
machine_at_common_ide_init(model); machine_at_common_ide_init(model);
device_add(&neat_device); /* replace with correct chipset implementation */
mem_remap_top(384);
device_add(&keyboard_ps2_olivetti_device); device_add(&keyboard_ps2_olivetti_device);
/* fdc should be dp8473, however it does not work. Instead, standard AT fdc works. */ /* fdc should be dp8473, however it does not work. Instead, standard AT fdc works. */
device_add(&fdc_at_device); device_add(&fdc_at_device);
if (gfxcard == VID_INTERNAL) /* should be a PVGA1B/WD90C00 with custom BIOS */
/* should be a PVGA1B/WD90C00 with custom BIOS */ if (gfxcard == VID_INTERNAL)
device_add(&paradise_pvga1a_device); device_add(&paradise_wd90c11_device);
return ret; return ret;
@@ -866,8 +889,9 @@ machine_at_olim300_10_init(const machine_t *model)
/* /*
* Current bugs: * Current bugs:
* - soft-reboot causes a fatal error
* - BIOS complains about FPU if not installed, pressing F1 allows to continue booting. * - BIOS complains about FPU if not installed, pressing F1 allows to continue booting.
* - no EMS management due to missing chipset implementation (custom ASIC) * - no shadow memory due to missing chipset implementation (custom ASIC)
*/ */
int int
machine_at_olim300_05_init(const machine_t *model) machine_at_olim300_05_init(const machine_t *model)
@@ -881,15 +905,17 @@ machine_at_olim300_05_init(const machine_t *model)
return ret; return ret;
machine_at_common_ide_init(model); machine_at_common_ide_init(model);
/* replace with correct chipset implementation */
mem_remap_top(384);
device_add(&neat_device);
device_add(&keyboard_ps2_olivetti_device); device_add(&keyboard_ps2_olivetti_device);
/* fdc should be dp8473, however it does not work. Instead, standard AT fdc works. */ /* fdc should be dp8473, however it does not work. Instead, standard AT fdc works. */
device_add(&fdc_at_device); device_add(&fdc_at_device);
if (gfxcard == VID_INTERNAL) /* should be a PVGA1B/WD90C00 with custom BIOS */
/* should be a PVGA1B/WD90C00 with custom BIOS */ if (gfxcard == VID_INTERNAL)
device_add(&paradise_pvga1a_device); device_add(&paradise_wd90c11_device);
return ret; return ret;

View File

@@ -121,8 +121,8 @@ const machine_t machines[] = {
{ "[ISA] Compaq Portable II", "portableii", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 640, 16384, 128, 127, machine_at_portableii_init, NULL }, { "[ISA] Compaq Portable II", "portableii", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 640, 16384, 128, 127, machine_at_portableii_init, NULL },
{ "[ISA] Compaq Portable III", "portableiii", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_VIDEO, 640, 16384, 128, 127, machine_at_portableiii_init, at_cpqiii_get_device }, { "[ISA] Compaq Portable III", "portableiii", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_VIDEO, 640, 16384, 128, 127, machine_at_portableiii_init, at_cpqiii_get_device },
{ "[ISA] MR 286 clone", "mr286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE, 512, 16384, 128, 127, machine_at_mr286_init, NULL }, { "[ISA] MR 286 clone", "mr286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE, 512, 16384, 128, 127, machine_at_mr286_init, NULL },
{ "[ISA] NCR PC8/810/710/3390/3392", "ncr_pc8", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_ncrpc8_init, NULL }, { "[ISA] NCR PC8/810/710/3390/3392", "ncr_pc8", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_ncrpc8_init, NULL },
{ "[ISA] Olivetti M290", "olivetti_m290", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 640, 16384, 128, 127, machine_at_olim290_init, NULL }, { "[ISA] Olivetti M290", "olivetti_m290", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 640, 16384, 128, 127, machine_at_olim290_init, NULL },
#if defined(DEV_BRANCH) && defined(USE_OPEN_AT) #if defined(DEV_BRANCH) && defined(USE_OPEN_AT)
{ "[ISA] OpenAT", "open_at", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 256, 15872, 128, 63, machine_at_open_at_init, NULL }, { "[ISA] OpenAT", "open_at", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 256, 15872, 128, 63, machine_at_open_at_init, NULL },
#endif #endif
@@ -133,7 +133,7 @@ const machine_t machines[] = {
{ "[GC103] Quadtel 286 clone", "quadt286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_quadt286_init, NULL }, { "[GC103] Quadtel 286 clone", "quadt286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_quadt286_init, NULL },
{ "[GC103] Trigem 286M", "tg286m", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE, 512, 8192, 128, 127, machine_at_tg286m_init, NULL }, { "[GC103] Trigem 286M", "tg286m", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE, 512, 8192, 128, 127, machine_at_tg286m_init, NULL },
{ "[NEAT] AMI 286 clone", "ami286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 8192, 128, 127, machine_at_neat_ami_init, NULL }, { "[NEAT] AMI 286 clone", "ami286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 8192, 128, 127, machine_at_neat_ami_init, NULL },
{ "[NEAT] NCR 3302", "ncr_3302", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_VIDEO, 512, 16384, 128, 127, machine_at_ncr3302_init, NULL }, { "[NEAT] NCR 3302", "ncr_3302", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE | MACHINE_VIDEO, 512, 16384, 128, 127, machine_at_ncr3302_init, at_ncr3302_get_device },
{ "[NEAT] Phoenix 286 clone", "px286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_px286_init, NULL }, { "[NEAT] Phoenix 286 clone", "px286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_px286_init, NULL },
{ "[SCAT] Award 286 clone", "award286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_award286_init, NULL }, { "[SCAT] Award 286 clone", "award286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_award286_init, NULL },
{ "[SCAT] GW-286CT GEAR", "gw286ct", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_gw286ct_init, NULL }, { "[SCAT] GW-286CT GEAR", "gw286ct", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_gw286ct_init, NULL },
@@ -143,7 +143,7 @@ const machine_t machines[] = {
{ "[SCAT] Samsung SPC-4216P", "spc4216p", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2, 1024, 5120,1024, 127, machine_at_spc4216p_init, NULL }, { "[SCAT] Samsung SPC-4216P", "spc4216p", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2, 1024, 5120,1024, 127, machine_at_spc4216p_init, NULL },
{ "[SCAT] Samsung SPC-4620P", "spc4620p", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_VIDEO, 1024, 5120,1024, 127, machine_at_spc4620p_init, NULL }, { "[SCAT] Samsung SPC-4620P", "spc4620p", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_VIDEO, 1024, 5120,1024, 127, machine_at_spc4620p_init, NULL },
{ "[SCAT] Samsung Deskmaster 286", "deskmaster286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_deskmaster286_init, NULL }, { "[SCAT] Samsung Deskmaster 286", "deskmaster286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_deskmaster286_init, NULL },
{ "[TACT82300] Olivetti M290S", "olivetti_m290s", MACHINE_TYPE_286, CPU_PKG_286, 0, 16000000, 16000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024,16384, 512, 127, machine_at_olim290s_init, NULL }, { "[TACT82300] Olivetti M290S", "olivetti_m290s", MACHINE_TYPE_286, CPU_PKG_286, 0, 16000000, 16000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024,16384, 512, 127, machine_at_olim290s_init, NULL },
/* 286 machines that utilize the MCA bus */ /* 286 machines that utilize the MCA bus */
{ "[MCA] IBM PS/2 model 50", "ibmps2_m50", MACHINE_TYPE_286, CPU_PKG_286 | CPU_PKG_486SLC_IBM, 0, 10000000, 0, 0, 0, 0, 0, MACHINE_MCA | MACHINE_BUS_PS2 | MACHINE_VIDEO, 1024, 10240,1024, 63, machine_ps2_model_50_init, NULL }, { "[MCA] IBM PS/2 model 50", "ibmps2_m50", MACHINE_TYPE_286, CPU_PKG_286 | CPU_PKG_486SLC_IBM, 0, 10000000, 0, 0, 0, 0, 0, MACHINE_MCA | MACHINE_BUS_PS2 | MACHINE_VIDEO, 1024, 10240,1024, 63, machine_ps2_model_50_init, NULL },
@@ -151,8 +151,8 @@ const machine_t machines[] = {
/* 386SX machines */ /* 386SX machines */
{ "[ISA] IBM PS/1 model 2121", "ibmps1_2121", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO_FIXED, 2048, 6144,1024, 63, machine_ps1_m2121_init, NULL }, { "[ISA] IBM PS/1 model 2121", "ibmps1_2121", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO_FIXED, 2048, 6144,1024, 63, machine_ps1_m2121_init, NULL },
{ "[ISA] IBM PS/1 m.2121+ISA", "ibmps1_2121_isa", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 6144,1024, 63, machine_ps1_m2121_init, NULL }, { "[ISA] IBM PS/1 m.2121+ISA", "ibmps1_2121_isa", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 6144,1024, 63, machine_ps1_m2121_init, NULL },
{ "[ISA] Olivetti M300-05", "olivetti_m300_05", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 16000000, 16000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 11264, 1024, 127, machine_at_olim300_05_init, NULL }, { "[ISA] Olivetti M300-01/05", "olivetti_m300_05", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 16000000, 16000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 11264,1024, 127, machine_at_olim300_05_init, NULL },
{ "[ISA] Olivetti M300-10", "olivetti_m300_10", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 20000000, 20000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 12288, 1024, 127, machine_at_olim300_10_init, NULL }, { "[ISA] Olivetti M300-10", "olivetti_m300_10", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 20000000, 20000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 12288,1024, 127, machine_at_olim300_10_init, NULL },
#if defined(DEV_BRANCH) && defined(USE_M6117) #if defined(DEV_BRANCH) && defined(USE_M6117)
{ "[ALi M6117D] Acrosser AR-B1375", "arb1375", MACHINE_TYPE_386SX, CPU_PKG_M6117, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 32768,1024, 127, machine_at_arb1375_init, NULL }, { "[ALi M6117D] Acrosser AR-B1375", "arb1375", MACHINE_TYPE_386SX, CPU_PKG_M6117, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 32768,1024, 127, machine_at_arb1375_init, NULL },
{ "[ALi M6117D] Acrosser PJ-A511M", "pja511m", MACHINE_TYPE_386SX, CPU_PKG_M6117, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 32768,1024, 127, machine_at_pja511m_init, NULL }, { "[ALi M6117D] Acrosser PJ-A511M", "pja511m", MACHINE_TYPE_386SX, CPU_PKG_M6117, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 32768,1024, 127, machine_at_pja511m_init, NULL },
@@ -162,13 +162,13 @@ const machine_t machines[] = {
{ "[Intel 82335] Shuttle 386SX", "shuttle386sx", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 8192, 128, 127, machine_at_shuttle386sx_init, NULL }, { "[Intel 82335] Shuttle 386SX", "shuttle386sx", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 8192, 128, 127, machine_at_shuttle386sx_init, NULL },
{ "[NEAT] Commodore SL386SX-16", "cbm_sl386sx16", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 8192, 512, 127, machine_at_commodore_sl386sx16_init, NULL }, { "[NEAT] Commodore SL386SX-16", "cbm_sl386sx16", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 8192, 512, 127, machine_at_commodore_sl386sx16_init, NULL },
{ "[NEAT] DTK 386SX clone", "dtk386", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 8192, 128, 127, machine_at_neat_init, NULL }, { "[NEAT] DTK 386SX clone", "dtk386", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 8192, 128, 127, machine_at_neat_init, NULL },
{ "[OPTi 283] Olivetti M300-08", "olivetti_m300_08", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 20000000, 20000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 16384, 2048, 127, machine_at_olim300_08_init, at_m300_08_get_device }, { "[OPTi 283] Olivetti M300-08", "olivetti_m300_08", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 20000000, 20000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 16384, 2048, 127, machine_at_olim300_08_init, at_m300_08_get_device },
{ "[OPTi 283] Olivetti M300-15", "olivetti_m300_15", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 25000000, 25000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 16384, 2048, 127, machine_at_olim300_15_init, NULL }, { "[OPTi 283] Olivetti M300-15", "olivetti_m300_15", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 25000000, 25000000, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 16384, 2048, 127, machine_at_olim300_15_init, NULL },
{ "[OPTi 291] DTK PPM-3333P", "awardsx", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 1024, 16384, 1024, 127, machine_at_awardsx_init, NULL }, { "[OPTi 291] DTK PPM-3333P", "awardsx", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 1024, 16384, 1024, 127, machine_at_awardsx_init, NULL },
{ "[SCAMP] Commodore SL386SX-25", "cbm_sl386sx25", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 8192, 512, 127, machine_at_commodore_sl386sx25_init, at_commodore_sl386sx25_get_device }, { "[SCAMP] Commodore SL386SX-25", "cbm_sl386sx25", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 8192, 512, 127, machine_at_commodore_sl386sx25_init, at_commodore_sl386sx25_get_device },
{ "[SCAMP] Samsung SPC-6033P", "spc6033p", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 12288, 2048, 127, machine_at_spc6033p_init, at_spc6033p_get_device }, { "[SCAMP] Samsung SPC-6033P", "spc6033p", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 2048, 12288, 2048, 127, machine_at_spc6033p_init, at_spc6033p_get_device },
{ "[SCAT] KMX-C-02", "kmxc02", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 512, 127, machine_at_kmxc02_init, NULL }, { "[SCAT] KMX-C-02", "kmxc02", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 512, 127, machine_at_kmxc02_init, NULL },
{ "[TACT82300] NCR PC916SX", "ncr_pc916sx", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 1024, 16384, 128, 127, machine_at_ncrpc916sx_init, NULL }, { "[TACT82300] NCR PC916SX", "ncr_pc916sx", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 1024, 16384, 128, 127, machine_at_ncrpc916sx_init, NULL },
{ "[WD76C10] Amstrad MegaPC", "megapc", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 32768, 1024, 127, machine_at_wd76c10_init, NULL }, { "[WD76C10] Amstrad MegaPC", "megapc", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 32768, 1024, 127, machine_at_wd76c10_init, NULL },
/* 386SX machines which utilize the MCA bus */ /* 386SX machines which utilize the MCA bus */

View File

@@ -15,7 +15,7 @@
add_library(sio OBJECT sio_acc3221.c sio_f82c710.c sio_82091aa.c sio_fdc37c661.c add_library(sio OBJECT sio_acc3221.c sio_f82c710.c sio_82091aa.c sio_fdc37c661.c
sio_fdc37c66x.c sio_fdc37c669.c sio_fdc37c93x.c sio_fdc37m60x.c sio_fdc37c66x.c sio_fdc37c669.c sio_fdc37c93x.c sio_fdc37m60x.c
sio_pc87306.c sio_pc87307.c sio_pc87309.c sio_pc87311.c sio_pc87332.c sio_pc87306.c sio_pc87307.c sio_pc87309.c sio_pc87310.c sio_pc87311.c sio_pc87332.c
sio_prime3c.c sio_w83787f.c sio_w83877f.c sio_w83977f.c sio_um8669f.c sio_prime3c.c sio_w83787f.c sio_w83877f.c sio_w83977f.c sio_um8669f.c
sio_vt82c686.c) sio_vt82c686.c)

View File

@@ -352,6 +352,16 @@ void *paradise_init(const device_t *info, uint32_t memsize)
return paradise; return paradise;
} }
static void *paradise_pvga1a_ncr3302_init(const device_t *info)
{
paradise_t *paradise = paradise_init(info, 1 << 18);
if (paradise)
rom_init(&paradise->bios_rom, L"roms/machines/ncr_3302/c000-wd_1987-1989-740011-003058-019c.bin", 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
return paradise;
}
static void *paradise_pvga1a_pc2086_init(const device_t *info) static void *paradise_pvga1a_pc2086_init(const device_t *info)
{ {
paradise_t *paradise = paradise_init(info, 1 << 18); paradise_t *paradise = paradise_init(info, 1 << 18);
@@ -361,6 +371,7 @@ static void *paradise_pvga1a_pc2086_init(const device_t *info)
return paradise; return paradise;
} }
static void *paradise_pvga1a_pc3086_init(const device_t *info) static void *paradise_pvga1a_pc3086_init(const device_t *info)
{ {
paradise_t *paradise = paradise_init(info, 1 << 18); paradise_t *paradise = paradise_init(info, 1 << 18);
@@ -464,7 +475,6 @@ void paradise_force_redraw(void *p)
paradise->svga.fullchange = changeframecount; paradise->svga.fullchange = changeframecount;
} }
const device_t paradise_pvga1a_pc2086_device = const device_t paradise_pvga1a_pc2086_device =
{ {
"Paradise PVGA1A (Amstrad PC2086)", "Paradise PVGA1A (Amstrad PC2086)",
@@ -478,6 +488,7 @@ const device_t paradise_pvga1a_pc2086_device =
paradise_force_redraw, paradise_force_redraw,
NULL NULL
}; };
const device_t paradise_pvga1a_pc3086_device = const device_t paradise_pvga1a_pc3086_device =
{ {
"Paradise PVGA1A (Amstrad PC3086)", "Paradise PVGA1A (Amstrad PC3086)",
@@ -516,6 +527,20 @@ static const device_config_t paradise_pvga1a_config[] =
} }
}; };
const device_t paradise_pvga1a_ncr3302_device =
{
"Paradise PVGA1A (NCR 3302)",
0,
PVGA1A,
paradise_pvga1a_ncr3302_init,
paradise_close,
NULL,
{ NULL },
paradise_speed_changed,
paradise_force_redraw,
paradise_pvga1a_config
};
const device_t paradise_pvga1a_device = const device_t paradise_pvga1a_device =
{ {
"Paradise PVGA1A", "Paradise PVGA1A",