diff --git a/src/ibm.h b/src/ibm.h index 1cf7470..b7d82e6 100644 --- a/src/ibm.h +++ b/src/ibm.h @@ -329,6 +329,8 @@ enum ROM_AMIXT, /*XT Clone with AMI BIOS*/ ROM_LTXT, ROM_LXT3, + ROM_PX386, + ROM_DTK386, ROM_MAX }; diff --git a/src/mem.c b/src/mem.c index 1bf325a..29ac029 100644 --- a/src/mem.c +++ b/src/mem.c @@ -531,6 +531,27 @@ int loadbios() mem_load_xtide_bios(); return 1; + case ROM_PX386: /*Phoenix 80386 BIOS*/ + f=romfopen("roms/px386/3iip001l.bin","rb"); + ff=romfopen("roms/px386/3iip001h.bin","rb"); + if (!f || !ff) break; + for (c = 0x0000; c < 0x10000; c += 2) + { + rom[c] = getc(f); + rom[c+1] = getc(ff); + } + fclose(ff); + fclose(f); + mem_load_atide_bios(); + return 1; + + case ROM_DTK386: /*Uses NEAT chipset*/ + f = romfopen("roms/dtk386/3cto001.bin", "rb"); + if (!f) break; + fread(rom, 65536, 1, f); + fclose(f); + mem_load_atide_bios(); + return 1; } printf("Failed to load ROM!\n"); if (f) fclose(f); diff --git a/src/model.c b/src/model.c index 7446c79..9812b3a 100644 --- a/src/model.c +++ b/src/model.c @@ -92,6 +92,8 @@ MODEL models[] = {"IBM PS/1 model 2011", ROM_IBMPS1_2011, { "", cpus_286, "", NULL, "", NULL}, 1, ps1_init}, {"Compaq Deskpro 386", ROM_DESKPRO_386, { "Intel", cpus_i386, "AMD", cpus_Am386, "Cyrix", cpus_486SDLC}, 0, deskpro386_init}, {"Acer 386SX25/N", ROM_ACER386, { "Intel", cpus_acer, "", NULL, "", NULL}, 1, at_acer386sx_init}, + {"DTK 386SX clone", ROM_DTK386, { "Intel", cpus_i386, "AMD", cpus_Am386, "Cyrix", cpus_486SDLC}, 0, at_neat_init}, + {"Phoenix 386 clone", ROM_PX386, { "Intel", cpus_i386, "AMD", cpus_Am386, "Cyrix", cpus_486SDLC}, 0, at_init}, {"Amstrad MegaPC", ROM_MEGAPC, { "Intel", cpus_i386, "AMD", cpus_Am386, "Cyrix", cpus_486SDLC}, 1, at_wd76c10_init}, {"AMI 386 clone", ROM_AMI386, { "Intel", cpus_i386, "AMD", cpus_Am386, "Cyrix", cpus_486SDLC}, 0, at_headland_init}, {"AMI 486 clone", ROM_AMI486, { "Intel", cpus_i486, "AMD", cpus_Am486, "Cyrix", cpus_Cx486}, 0, at_ali1429_init}, diff --git a/src/nvr.c b/src/nvr.c index 3d4ffd6..211680a 100644 --- a/src/nvr.c +++ b/src/nvr.c @@ -152,6 +152,8 @@ void loadnvr() case ROM_430VX: f = romfopen("430vx.nvr", "rb"); nvrmask = 127; break; case ROM_REVENGE: f = romfopen("revenge.nvr", "rb"); nvrmask = 127; break; case ROM_ENDEAVOR: f = romfopen("endeavor.nvr", "rb"); nvrmask = 127; break; + case ROM_PX386: f = romfopen("px386.nvr", "rb"); nvrmask = 127; break; + case ROM_DTK386: f = romfopen("dtk386.nvr", "rb"); nvrmask = 127; break; default: return; } if (!f) @@ -193,6 +195,8 @@ void savenvr() case ROM_430VX: f = romfopen("430vx.nvr", "wb"); break; case ROM_REVENGE: f = romfopen("revenge.nvr", "wb"); break; case ROM_ENDEAVOR: f = romfopen("endeavor.nvr", "wb"); break; + case ROM_PX386: f = romfopen("px386.nvr", "wb"); break; + case ROM_DTK386: f = romfopen("dtk386.nvr", "wb"); break; default: return; } fwrite(nvrram,128,1,f);