FDC DOR handler now does a sanity check when setting drive select, fixes OS/2 Setup fataling the emulator when reading Disk 2;

FDC SEEK command now no longer incorrectly times out when seeking to the track the FDC thinks it's already at, fixes floppies in NT 3.1;
Emulator now correctly saves configuration changes to the configuration files it was loaded with rather than always the default;
Default path for NVR's can now be overridden by adding the nvr_path option to the cfg file.
This commit is contained in:
OBattler
2016-09-27 21:38:29 +02:00
parent af57860340
commit a3e6c4eeb3
9 changed files with 178 additions and 111 deletions

168
src/nvr.c
View File

@@ -198,51 +198,45 @@ void loadnvr()
oldromset=romset;
switch (romset)
{
case ROM_PC1512: f = romfopen("nvr/pc1512.nvr", "rb"); break;
case ROM_PC1640: f = romfopen("nvr/pc1640.nvr", "rb"); break;
case ROM_PC200: f = romfopen("nvr/pc200.nvr", "rb"); break;
case ROM_PC2086: f = romfopen("nvr/pc2086.nvr", "rb"); break;
case ROM_PC3086: f = romfopen("nvr/pc3086.nvr", "rb"); break;
case ROM_IBMAT: f = romfopen("nvr/at.nvr", "rb"); break;
case ROM_IBMPS1_2011: f = romfopen("nvr/ibmps1_2011.nvr", "rb"); /*nvrmask = 127; */break;
case ROM_IBMPS1_2121: f = romfopen("nvr/ibmps1_2121.nvr", "rb"); nvrmask = 127; break;
case ROM_CMDPC30: f = romfopen("nvr/cmdpc30.nvr", "rb"); nvrmask = 127; break;
case ROM_AMI286: f = romfopen("nvr/ami286.nvr", "rb"); nvrmask = 127; break;
case ROM_AWARD286: f = romfopen("nvr/award286.nvr", "rb"); nvrmask = 127; break;
case ROM_DELL200: f = romfopen("nvr/dell200.nvr", "rb"); nvrmask = 127; break;
case ROM_IBMAT386: f = romfopen("nvr/at386.nvr", "rb"); nvrmask = 127; break;
case ROM_DESKPRO_386: f = romfopen("nvr/deskpro386.nvr", "rb"); break;
case ROM_ACER386: f = romfopen("nvr/acer386.nvr", "rb"); nvrmask = 127; break;
case ROM_MEGAPC: f = romfopen("nvr/megapc.nvr", "rb"); nvrmask = 127; break;
case ROM_AMI386: f = romfopen("nvr/ami386.nvr", "rb"); nvrmask = 127; break;
case ROM_AMI486: f = romfopen("nvr/ami486.nvr", "rb"); nvrmask = 127; break;
case ROM_WIN486: f = romfopen("nvr/win486.nvr", "rb"); nvrmask = 127; break;
case ROM_PCI486: f = romfopen("nvr/hot-433.nvr", "rb"); nvrmask = 127; break;
case ROM_SIS496: f = romfopen("nvr/sis496.nvr", "rb"); nvrmask = 127; break;
case ROM_430VX: f = romfopen("nvr/430vx.nvr", "rb"); nvrmask = 127; break;
case ROM_REVENGE: f = romfopen("nvr/revenge.nvr", "rb"); nvrmask = 127; break;
case ROM_ENDEAVOR: f = romfopen("nvr/endeavor.nvr", "rb"); nvrmask = 127; break;
case ROM_PX386: f = romfopen("nvr/px386.nvr", "rb"); nvrmask = 127; break;
case ROM_DTK386: f = romfopen("nvr/dtk386.nvr", "rb"); nvrmask = 127; break;
case ROM_DTK486: f = romfopen("nvr/dtk486.nvr", "rb"); nvrmask = 127; break;
case ROM_R418: f = romfopen("nvr/r418.nvr", "rb"); nvrmask = 127; break;
case ROM_586MC1: f = romfopen("nvr/586mc1.nvr", "rb"); nvrmask = 127; break;
case ROM_PLATO: f = romfopen("nvr/plato.nvr", "rb"); nvrmask = 127; break;
case ROM_MB500N: f = romfopen("nvr/mb500n.nvr", "rb"); nvrmask = 127; break;
#if 0
case ROM_P54TP4XE: f = romfopen("nvr/p54tp4xe.nvr", "rb"); nvrmask = 127; break;
#endif
case ROM_ACERM3A: f = romfopen("nvr/acerm3a.nvr", "rb"); nvrmask = 127; break;
case ROM_ACERV35N: f = romfopen("nvr/acerv35n.nvr", "rb"); nvrmask = 127; break;
#if 0
case ROM_P55T2P4: f = romfopen("nvr/p55t2p4.nvr", "rb"); nvrmask = 127; break;
#endif
case ROM_P55TVP4: f = romfopen("nvr/p55tvp4.nvr", "rb"); nvrmask = 127; break;
case ROM_P55VA: f = romfopen("nvr/p55va.nvr", "rb"); nvrmask = 127; break;
case ROM_440FX: f = romfopen("nvr/440fx.nvr", "rb"); nvrmask = 127; break;
case ROM_KN97: f = romfopen("nvr/kn97.nvr", "rb"); nvrmask = 127; break;
case ROM_MARL: f = romfopen("nvr/marl.nvr", "rb"); nvrmask = 127; break;
case ROM_THOR: f = romfopen("nvr/thor.nvr", "rb"); nvrmask = 127; break;
case ROM_PC1512: f = romfopen(nvr_concat("pc1512.nvr"), "rb"); break;
case ROM_PC1640: f = romfopen(nvr_concat("pc1640.nvr"), "rb"); break;
case ROM_PC200: f = romfopen(nvr_concat("pc200.nvr"), "rb"); break;
case ROM_PC2086: f = romfopen(nvr_concat("pc2086.nvr"), "rb"); break;
case ROM_PC3086: f = romfopen(nvr_concat("pc3086.nvr"), "rb"); break;
case ROM_IBMAT: f = romfopen(nvr_concat("at.nvr"), "rb"); break;
case ROM_IBMPS1_2011: f = romfopen(nvr_concat("ibmps1_2011.nvr"), "rb"); /*nvrmask = 127; */break;
case ROM_IBMPS1_2121: f = romfopen(nvr_concat("ibmps1_2121.nvr"), "rb"); nvrmask = 127; break;
case ROM_CMDPC30: f = romfopen(nvr_concat("cmdpc30.nvr"), "rb"); nvrmask = 127; break;
case ROM_AMI286: f = romfopen(nvr_concat("ami286.nvr"), "rb"); nvrmask = 127; break;
case ROM_AWARD286: f = romfopen(nvr_concat("award286.nvr"), "rb"); nvrmask = 127; break;
case ROM_DELL200: f = romfopen(nvr_concat("dell200.nvr"), "rb"); nvrmask = 127; break;
case ROM_IBMAT386: f = romfopen(nvr_concat("at386.nvr"), "rb"); nvrmask = 127; break;
case ROM_DESKPRO_386: f = romfopen(nvr_concat("deskpro386.nvr"), "rb"); break;
case ROM_ACER386: f = romfopen(nvr_concat("acer386.nvr"), "rb"); nvrmask = 127; break;
case ROM_MEGAPC: f = romfopen(nvr_concat("megapc.nvr"), "rb"); nvrmask = 127; break;
case ROM_AMI386: f = romfopen(nvr_concat("ami386.nvr"), "rb"); nvrmask = 127; break;
case ROM_AMI486: f = romfopen(nvr_concat("ami486.nvr"), "rb"); nvrmask = 127; break;
case ROM_WIN486: f = romfopen(nvr_concat("win486.nvr"), "rb"); nvrmask = 127; break;
case ROM_PCI486: f = romfopen(nvr_concat("hot-433.nvr"), "rb"); nvrmask = 127; break;
case ROM_SIS496: f = romfopen(nvr_concat("sis496.nvr"), "rb"); nvrmask = 127; break;
case ROM_430VX: f = romfopen(nvr_concat("430vx.nvr"), "rb"); nvrmask = 127; break;
case ROM_REVENGE: f = romfopen(nvr_concat("revenge.nvr"), "rb"); nvrmask = 127; break;
case ROM_ENDEAVOR: f = romfopen(nvr_concat("endeavor.nvr"), "rb"); nvrmask = 127; break;
case ROM_PX386: f = romfopen(nvr_concat("px386.nvr"), "rb"); nvrmask = 127; break;
case ROM_DTK386: f = romfopen(nvr_concat("dtk386.nvr"), "rb"); nvrmask = 127; break;
case ROM_DTK486: f = romfopen(nvr_concat("dtk486.nvr"), "rb"); nvrmask = 127; break;
case ROM_R418: f = romfopen(nvr_concat("r418.nvr"), "rb"); nvrmask = 127; break;
case ROM_586MC1: f = romfopen(nvr_concat("586mc1.nvr"), "rb"); nvrmask = 127; break;
case ROM_PLATO: f = romfopen(nvr_concat("plato.nvr"), "rb"); nvrmask = 127; break;
case ROM_MB500N: f = romfopen(nvr_concat("mb500n.nvr"), "rb"); nvrmask = 127; break;
case ROM_ACERM3A: f = romfopen(nvr_concat("acerm3a.nvr"), "rb"); nvrmask = 127; break;
case ROM_ACERV35N: f = romfopen(nvr_concat("acerv35n.nvr"), "rb"); nvrmask = 127; break;
case ROM_P55TVP4: f = romfopen(nvr_concat("p55tvp4.nvr"), "rb"); nvrmask = 127; break;
case ROM_P55VA: f = romfopen(nvr_concat("p55va.nvr"), "rb"); nvrmask = 127; break;
case ROM_440FX: f = romfopen(nvr_concat("440fx.nvr"), "rb"); nvrmask = 127; break;
case ROM_KN97: f = romfopen(nvr_concat("kn97.nvr"), "rb"); nvrmask = 127; break;
case ROM_MARL: f = romfopen(nvr_concat("marl.nvr"), "rb"); nvrmask = 127; break;
case ROM_THOR: f = romfopen(nvr_concat("thor.nvr"), "rb"); nvrmask = 127; break;
default: return;
}
if (!f)
@@ -274,51 +268,45 @@ void savenvr()
FILE *f;
switch (oldromset)
{
case ROM_PC1512: f = romfopen("nvr/pc1512.nvr", "wb"); break;
case ROM_PC1640: f = romfopen("nvr/pc1640.nvr", "wb"); break;
case ROM_PC200: f = romfopen("nvr/pc200.nvr", "wb"); break;
case ROM_PC2086: f = romfopen("nvr/pc2086.nvr", "wb"); break;
case ROM_PC3086: f = romfopen("nvr/pc3086.nvr", "wb"); break;
case ROM_IBMAT: f = romfopen("nvr/at.nvr", "wb"); break;
case ROM_IBMPS1_2011: f = romfopen("nvr/ibmps1_2011.nvr", "wb"); break;
case ROM_IBMPS1_2121: f = romfopen("nvr/ibmps1_2121.nvr", "wb"); break;
case ROM_CMDPC30: f = romfopen("nvr/cmdpc30.nvr", "wb"); break;
case ROM_AMI286: f = romfopen("nvr/ami286.nvr", "wb"); break;
case ROM_AWARD286: f = romfopen("nvr/award286.nvr", "wb"); break;
case ROM_DELL200: f = romfopen("nvr/dell200.nvr", "wb"); break;
case ROM_IBMAT386: f = romfopen("nvr/at386.nvr", "wb"); break;
case ROM_DESKPRO_386: f = romfopen("nvr/deskpro386.nvr", "wb"); break;
case ROM_ACER386: f = romfopen("nvr/acer386.nvr", "wb"); break;
case ROM_MEGAPC: f = romfopen("nvr/megapc.nvr", "wb"); break;
case ROM_AMI386: f = romfopen("nvr/ami386.nvr", "wb"); break;
case ROM_AMI486: f = romfopen("nvr/ami486.nvr", "wb"); break;
case ROM_WIN486: f = romfopen("nvr/win486.nvr", "wb"); break;
case ROM_PCI486: f = romfopen("nvr/hot-433.nvr", "wb"); break;
case ROM_SIS496: f = romfopen("nvr/sis496.nvr", "wb"); break;
case ROM_430VX: f = romfopen("nvr/430vx.nvr", "wb"); break;
case ROM_REVENGE: f = romfopen("nvr/revenge.nvr", "wb"); break;
case ROM_ENDEAVOR: f = romfopen("nvr/endeavor.nvr", "wb"); break;
case ROM_PX386: f = romfopen("nvr/px386.nvr", "wb"); break;
case ROM_DTK386: f = romfopen("nvr/dtk386.nvr", "wb"); break;
case ROM_DTK486: f = romfopen("nvr/dtk486.nvr", "wb"); break;
case ROM_R418: f = romfopen("nvr/r418.nvr", "wb"); break;
case ROM_586MC1: f = romfopen("nvr/586mc1.nvr", "wb"); break;
case ROM_PLATO: f = romfopen("nvr/plato.nvr", "wb"); break;
case ROM_MB500N: f = romfopen("nvr/mb500n.nvr", "wb"); break;
#if 0
case ROM_P54TP4XE: f = romfopen("nvr/p54tp4xe.nvr", "wb"); break;
#endif
case ROM_ACERM3A: f = romfopen("nvr/acerm3a.nvr", "wb"); break;
case ROM_ACERV35N: f = romfopen("nvr/acerv35n.nvr", "wb"); break;
#if 0
case ROM_P55T2P4: f = romfopen("nvr/p55t2p4.nvr", "wb"); break;
#endif
case ROM_P55TVP4: f = romfopen("nvr/p55tvp4.nvr", "wb"); break;
case ROM_P55VA: f = romfopen("nvr/p55va.nvr", "wb"); break;
case ROM_440FX: f = romfopen("nvr/440fx.nvr", "wb"); break;
case ROM_KN97: f = romfopen("nvr/kn97.nvr", "wb"); break;
case ROM_MARL: f = romfopen("nvr/marl.nvr", "wb"); break;
case ROM_THOR: f = romfopen("nvr/thor.nvr", "wb"); break;
case ROM_PC1512: f = romfopen(nvr_concat("pc1512.nvr"), "wb"); break;
case ROM_PC1640: f = romfopen(nvr_concat("pc1640.nvr"), "wb"); break;
case ROM_PC200: f = romfopen(nvr_concat("pc200.nvr"), "wb"); break;
case ROM_PC2086: f = romfopen(nvr_concat("pc2086.nvr"), "wb"); break;
case ROM_PC3086: f = romfopen(nvr_concat("pc3086.nvr"), "wb"); break;
case ROM_IBMAT: f = romfopen(nvr_concat("at.nvr"), "wb"); break;
case ROM_IBMPS1_2011: f = romfopen(nvr_concat("ibmps1_2011.nvr"), "wb"); break;
case ROM_IBMPS1_2121: f = romfopen(nvr_concat("ibmps1_2121.nvr"), "wb"); break;
case ROM_CMDPC30: f = romfopen(nvr_concat("cmdpc30.nvr"), "wb"); break;
case ROM_AMI286: f = romfopen(nvr_concat("ami286.nvr"), "wb"); break;
case ROM_AWARD286: f = romfopen(nvr_concat("award286.nvr"), "wb"); break;
case ROM_DELL200: f = romfopen(nvr_concat("dell200.nvr"), "wb"); break;
case ROM_IBMAT386: f = romfopen(nvr_concat("at386.nvr"), "wb"); break;
case ROM_DESKPRO_386: f = romfopen(nvr_concat("deskpro386.nvr"), "wb"); break;
case ROM_ACER386: f = romfopen(nvr_concat("acer386.nvr"), "wb"); break;
case ROM_MEGAPC: f = romfopen(nvr_concat("megapc.nvr"), "wb"); break;
case ROM_AMI386: f = romfopen(nvr_concat("ami386.nvr"), "wb"); break;
case ROM_AMI486: f = romfopen(nvr_concat("ami486.nvr"), "wb"); break;
case ROM_WIN486: f = romfopen(nvr_concat("win486.nvr"), "wb"); break;
case ROM_PCI486: f = romfopen(nvr_concat("hot-433.nvr"), "wb"); break;
case ROM_SIS496: f = romfopen(nvr_concat("sis496.nvr"), "wb"); break;
case ROM_430VX: f = romfopen(nvr_concat("430vx.nvr"), "wb"); break;
case ROM_REVENGE: f = romfopen(nvr_concat("revenge.nvr"), "wb"); break;
case ROM_ENDEAVOR: f = romfopen(nvr_concat("endeavor.nvr"), "wb"); break;
case ROM_PX386: f = romfopen(nvr_concat("px386.nvr"), "wb"); break;
case ROM_DTK386: f = romfopen(nvr_concat("dtk386.nvr"), "wb"); break;
case ROM_DTK486: f = romfopen(nvr_concat("dtk486.nvr"), "wb"); break;
case ROM_R418: f = romfopen(nvr_concat("r418.nvr"), "wb"); break;
case ROM_586MC1: f = romfopen(nvr_concat("586mc1.nvr"), "wb"); break;
case ROM_PLATO: f = romfopen(nvr_concat("plato.nvr"), "wb"); break;
case ROM_MB500N: f = romfopen(nvr_concat("mb500n.nvr"), "wb"); break;
case ROM_ACERM3A: f = romfopen(nvr_concat("acerm3a.nvr"), "wb"); break;
case ROM_ACERV35N: f = romfopen(nvr_concat("acerv35n.nvr"), "wb"); break;
case ROM_P55TVP4: f = romfopen(nvr_concat("p55tvp4.nvr"), "wb"); break;
case ROM_P55VA: f = romfopen(nvr_concat("p55va.nvr"), "wb"); break;
case ROM_440FX: f = romfopen(nvr_concat("440fx.nvr"), "wb"); break;
case ROM_KN97: f = romfopen(nvr_concat("kn97.nvr"), "wb"); break;
case ROM_MARL: f = romfopen(nvr_concat("marl.nvr"), "wb"); break;
case ROM_THOR: f = romfopen(nvr_concat("thor.nvr"), "wb"); break;
default: return;
}
fwrite(nvrram,128,1,f);