Finish M6117 implementation

This commit is contained in:
RichardG867
2020-09-08 22:06:28 -03:00
parent dd2562f273
commit 55b29db14b
7 changed files with 62 additions and 4 deletions

View File

@@ -138,6 +138,9 @@ extern CPU cpus_i386SX[];
extern CPU cpus_i386DX[]; extern CPU cpus_i386DX[];
extern CPU cpus_Am386SX[]; extern CPU cpus_Am386SX[];
extern CPU cpus_Am386DX[]; extern CPU cpus_Am386DX[];
#if defined(DEV_BRANCH) && defined(USE_M6117)
extern CPU cpus_ALiM6117[];
#endif
extern CPU cpus_486SLC[]; extern CPU cpus_486SLC[];
extern CPU cpus_486DLC[]; extern CPU cpus_486DLC[];
extern CPU cpus_IBM386SLC[]; extern CPU cpus_IBM386SLC[];

View File

@@ -211,6 +211,18 @@ CPU cpus_Am386DX[] = {
{"", -1, 0, 0, 0, 0, 0, 0, 0,0,0,0, 0} {"", -1, 0, 0, 0, 0, 0, 0, 0,0,0,0, 0}
}; };
#if defined(DEV_BRANCH) && defined(USE_M6117)
/* All M6117 timings and edx_reset values assumed. */
CPU cpus_ALiM6117[] = {
/*i386DX/RapidCAD*/
{"M6117/66", CPU_386DX, fpus_80386, 66666666, 1, 0x2308, 0, 0, 0, 3,3,3,3, 2},
{"M6117/80", CPU_386DX, fpus_80386, 80000000, 1, 0x2308, 0, 0, 0, 4,4,3,3, 3},
{"", -1, 0, 0, 0, 0, 0, 0, 0,0,0,0, 0}
};
#endif
CPU cpus_486SLC[] = { CPU cpus_486SLC[] = {
/*Cx486SLC*/ /*Cx486SLC*/
{"Cx486SLC/20", CPU_486SLC, fpus_80386, 20000000, 1, 0x400, 0, 0x0000, 0, 4,4,3,3, 3}, {"Cx486SLC/20", CPU_486SLC, fpus_80386, 20000000, 1, 0x400, 0, 0x0000, 0, 4,4,3,3, 3},

View File

@@ -26,7 +26,7 @@ extern const device_t ali1429_device;
#if defined(DEV_BRANCH) && defined(USE_M1489) #if defined(DEV_BRANCH) && defined(USE_M1489)
extern const device_t ali1489_device; extern const device_t ali1489_device;
#endif #endif
#if defined(DEV_BRANCH) && defined(USE_STPC) #if defined(DEV_BRANCH) && defined(USE_M6117)
extern const device_t ali6117d_device; extern const device_t ali6117d_device;
#endif #endif

View File

@@ -241,7 +241,10 @@ extern int machine_at_adi386sx_init(const machine_t *);
extern int machine_at_commodore_sl386sx_init(const machine_t *); extern int machine_at_commodore_sl386sx_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_awardsx_init(const machine_t *); extern int machine_at_awardsx_init(const machine_t *);
#if defined(DEV_BRANCH) && defined(USE_M6117)
extern int machine_at_pja511m_init(const machine_t *);
#endif
#ifdef EMU_DEVICE_H #ifdef EMU_DEVICE_H
extern const device_t *at_ama932j_get_device(void); extern const device_t *at_ama932j_get_device(void);

View File

@@ -36,6 +36,7 @@
#include <86box/hdc.h> #include <86box/hdc.h>
#include <86box/sio.h> #include <86box/sio.h>
#include <86box/video.h> #include <86box/video.h>
#include <86box/flash.h>
#include <86box/machine.h> #include <86box/machine.h>
int int
@@ -545,3 +546,28 @@ machine_at_awardsx_init(const machine_t *model)
return ret; return ret;
} }
#if defined(DEV_BRANCH) && defined(USE_M6117)
int
machine_at_pja511m_init(const machine_t *model)
{
int ret;
ret = bios_load_linear(L"roms/machines/pja511m/2006915102435734.rom",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
device_add_inst(&fdc37c669_device, 1);
//device_add_inst(&fdc37c669_device, 2); /* enable when dual FDC37C669 is implemented */
device_add(&keyboard_ps2_ami_pci_device);
device_add(&ali6117d_device);
device_add(&sst_flash_29ee010_device);
return ret;
}
#endif

View File

@@ -179,13 +179,16 @@ const machine_t machines[] = {
{ "[Intel 82335] Shuttle 386SX", "shuttle386sx", MACHINE_TYPE_386SX, {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 8192, 128, 127, machine_at_shuttle386sx_init, NULL }, { "[Intel 82335] Shuttle 386SX", "shuttle386sx", MACHINE_TYPE_386SX, {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 8192, 128, 127, machine_at_shuttle386sx_init, NULL },
{ "[Intel 82335] ADI 386SX", "adi386sx", MACHINE_TYPE_386SX, {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 8192, 128, 127, machine_at_adi386sx_init, NULL }, { "[Intel 82335] ADI 386SX", "adi386sx", MACHINE_TYPE_386SX, {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 8192, 128, 127, machine_at_adi386sx_init, NULL },
{ "[OPTi 291] DTK PPM-3333P", "awardsx", MACHINE_TYPE_386SX, {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 1, 16, 1, 127, machine_at_awardsx_init, NULL }, { "[OPTi 291] DTK PPM-3333P", "awardsx", MACHINE_TYPE_386SX, {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 1, 16, 1, 127, machine_at_awardsx_init, NULL },
#if defined(DEV_BRANCH) && defined(USE_M6117)
{ "[ALi M6117D] Acrosser PJ-A511M", "pja511m", MACHINE_TYPE_386SX, {{"ALi", cpus_ALiM6117}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC, 1, 64, 1, 127, machine_at_pja511m_init, NULL },
#endif
/* 386SX machines which utilize the MCA bus */ /* 386SX machines which utilize the MCA bus */
{ "[MCA] IBM PS/2 model 55SX", "ibmps2_m55sx", MACHINE_TYPE_386SX, {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"IBM",cpus_IBM486SLC},{"", NULL}}, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_VIDEO, 1, 8, 1, 63, machine_ps2_model_55sx_init, NULL }, { "[MCA] IBM PS/2 model 55SX", "ibmps2_m55sx", MACHINE_TYPE_386SX, {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"IBM",cpus_IBM486SLC},{"", NULL}}, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_VIDEO, 1, 8, 1, 63, machine_ps2_model_55sx_init, NULL },
/* 386DX machines */ /* 386DX machines */
{ "[ACC 2168] AMI 386DX clone", "acc386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 16384, 128, 127, machine_at_acc386_init, NULL }, { "[ACC 2168] AMI 386DX clone", "acc386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 16384, 128, 127, machine_at_acc386_init, NULL },
{ "[SiS 310] ASUS ISA-386C", "asus386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 16384, 128, 127, machine_at_asus386_init, NULL }, { "[SiS 310] ASUS ISA-386C", "asus386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 16384, 128, 127, machine_at_asus386_init, NULL },
{ "[ISA] Compaq Portable III (386)", "portableiii386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT | MACHINE_HDC | MACHINE_VIDEO, 1, 14, 1, 127, machine_at_portableiii386_init, at_cpqiii_get_device }, { "[ISA] Compaq Portable III (386)", "portableiii386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT | MACHINE_HDC | MACHINE_VIDEO, 1, 14, 1, 127, machine_at_portableiii386_init, at_cpqiii_get_device },
{ "[ISA] Micronics 386 clone", "micronics386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 8192, 128, 127, machine_at_micronics386_init, NULL }, { "[ISA] Micronics 386 clone", "micronics386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 512, 8192, 128, 127, machine_at_micronics386_init, NULL },
{ "[C&T 386] ECS 386/32", "ecs386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 1, 16, 1, 127, machine_at_ecs386_init, NULL }, { "[C&T 386] ECS 386/32", "ecs386", MACHINE_TYPE_386DX, {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, MACHINE_ISA | MACHINE_AT, 1, 16, 1, 127, machine_at_ecs386_init, NULL },

View File

@@ -84,6 +84,9 @@ ifeq ($(DEV_BUILD), y)
ifndef M1489 ifndef M1489
M1489 := y M1489 := y
endif endif
ifndef M6117
M6117 := y
endif
ifndef VGAWONDER ifndef VGAWONDER
VGAWONDER := y VGAWONDER := y
endif endif
@@ -163,6 +166,9 @@ else
ifndef M1489 ifndef M1489
M1489 := n M1489 := n
endif endif
ifndef M6117
M6117 := n
endif
ifndef VGAWONDER ifndef VGAWONDER
VGAWONDER := n VGAWONDER := n
endif endif
@@ -560,7 +566,7 @@ endif
ifeq ($(STPC), y) ifeq ($(STPC), y)
OPTS += -DUSE_STPC OPTS += -DUSE_STPC
DEVBROBJ += ali6117.o stpc.o DEVBROBJ += stpc.o
endif endif
ifeq ($(M1489), y) ifeq ($(M1489), y)
@@ -568,6 +574,11 @@ OPTS += -DUSE_M1489
DEVBROBJ += ali1489.o DEVBROBJ += ali1489.o
endif endif
ifeq ($(M6117), y)
OPTS += -DUSE_M6117
DEVBROBJ += ali6117.o
endif
ifeq ($(596B), y) ifeq ($(596B), y)
OPTS += -DUSE_596B OPTS += -DUSE_596B
endif endif