Add emulation of IBM PS/1 Model 2121.

As part of this :
- FDC Specify command now completes immediately
- Implemented keyboard system flag status
- Added ability to remap 384kb reserved memory to above extended memory
This commit is contained in:
SarahW 2016-05-02 20:06:49 +01:00
commit 0724cfcae4
20 changed files with 461 additions and 26 deletions

View file

@ -59,7 +59,8 @@ void europc_init();
void olim24_init();
void at_init();
void deskpro386_init();
void ps1_init();
void ps1_m2011_init();
void ps1_m2121_init();
void at_neat_init();
void at_scat_init();
void at_acer386sx_init();
@ -103,7 +104,8 @@ MODEL models[] =
{"AMI 286 clone", ROM_AMI286, { "", cpus_286, "", NULL, "", NULL}, 0, 1, 1, 16, 1, at_neat_init},
{"Award 286 clone", ROM_AWARD286, { "", cpus_286, "", NULL, "", NULL}, 0, 1, 1, 16, 1, at_scat_init},
{"DELL System 200", ROM_DELL200, { "", cpus_286, "", NULL, "", NULL}, 0, 1, 1, 16, 1, at_init},
{"IBM PS/1 model 2011", ROM_IBMPS1_2011, { "", cpus_ps1_m2011,"", NULL, "", NULL}, 1, 1, 1, 16, 1, ps1_init},
{"IBM PS/1 model 2011", ROM_IBMPS1_2011, { "", cpus_ps1_m2011,"", NULL, "", NULL}, 1, 1, 1, 16, 1, ps1_m2011_init},
{"IBM PS/1 model 2121", ROM_IBMPS1_2121, { "Intel", cpus_i386, "", NULL, "", NULL}, 1, 1, 1, 16, 1, ps1_m2121_init},
{"Compaq Deskpro 386", ROM_DESKPRO_386, { "Intel", cpus_i386, "AMD", cpus_Am386, "Cyrix", cpus_486SDLC}, 0, 1, 1, 15, 1, deskpro386_init},
{"Acer 386SX25/N", ROM_ACER386, { "Intel", cpus_acer, "", NULL, "", NULL}, 1, 1, 1, 16, 1, at_acer386sx_init},
{"DTK 386SX clone", ROM_DTK386, { "Intel", cpus_i386, "AMD", cpus_Am386, "Cyrix", cpus_486SDLC}, 0, 1, 1, 16, 1, at_neat_init},
@ -278,7 +280,7 @@ void deskpro386_init()
compaq_init();
}
void ps1_init()
void ps1_common_init()
{
AT = 1;
common_init();
@ -290,13 +292,25 @@ void ps1_init()
mouse_ps2_init();
nvr_init();
pic2_init();
ps1mb_init();
fdc_set_dskchg_activelow();
device_add(&ps1_audio_device);
/*PS/1 audio uses ports 200h and 202-207h, so only initialise gameport on 201h*/
device_add(&gameport_201_device);
}
void ps1_m2011_init()
{
ps1_common_init();
ps1mb_init();
}
void ps1_m2121_init()
{
ps1_common_init();
ps1mb_m2121_init();
fdc_set_ps1();
}
void at_neat_init()
{
at_init();