Added support for Tandy 1000 HX and SL/2. As part of this commit :

- FDC now selects drive number from DOR (0x3f2)
- FDC now fails seeks on drives > 1
- XT systems no longer have BIOS mapping at E0000-EFFFF
- SN76489 now distinguishes between SN76496 (PCjr and early Tandy 1000), NCR8496 (later Tandy 1000 - different noise handling) and PSSJ
- Removed redundant limits on memory configuration - allows selection of 768k for Tandy 1000 SL/2
This commit is contained in:
TomW 2015-12-03 21:48:10 +00:00
commit 2ca86ba028
24 changed files with 1420 additions and 64 deletions

View file

@ -39,7 +39,10 @@
#include "ps1.h"
#include "serial.h"
#include "sis496.h"
#include "sound_pssj.h"
#include "sound_sn76489.h"
#include "tandy_eeprom.h"
#include "tandy_rom.h"
#include "um8669f.h"
#include "um8881f.h"
#include "wd76c10.h"
@ -48,6 +51,7 @@
void xt_init();
void pcjr_init();
void tandy1k_init();
void tandy1ksl2_init();
void ams_init();
void europc_init();
void olim24_init();
@ -82,6 +86,8 @@ MODEL models[] =
{"Phoenix XT clone", ROM_PXXT, { "", cpus_8088, "", NULL, "", NULL}, 0, 0, 128, 640, 64, xt_init},
{"Juko XT clone", ROM_JUKOPC, { "", cpus_8088, "", NULL, "", NULL}, 0, 0, 128, 640, 64, xt_init},
{"Tandy 1000", ROM_TANDY, { "", cpus_8088, "", NULL, "", NULL}, 1, 0, 128, 640, 128, tandy1k_init},
{"Tandy 1000 HX", ROM_TANDY1000HX, { "", cpus_8088, "", NULL, "", NULL}, 1, 0, 256, 640, 128, tandy1k_init},
{"Tandy 1000 SL/2", ROM_TANDY1000SL2,{ "", cpus_8086, "", NULL, "", NULL}, 1, 0, 512, 768, 128, tandy1ksl2_init},
{"Amstrad PC1512", ROM_PC1512, { "", cpus_pc1512, "", NULL, "", NULL}, 1, 0, 512, 640, 128, ams_init},
{"Sinclair PC200", ROM_PC200, { "", cpus_8086, "", NULL, "", NULL}, 1, 0, 512, 640, 128, ams_init},
{"Euro PC", ROM_EUROPC, { "", cpus_8086, "", NULL, "", NULL}, 0, 0, 512, 640, 128, europc_init},
@ -177,11 +183,28 @@ void tandy1k_init()
{
TANDY = 1;
common_init();
keyboard_xt_init();
keyboard_tandy_init();
mouse_serial_init();
device_add(&sn76489_device);
if (romset == ROM_TANDY)
device_add(&sn76489_device);
else
device_add(&ncr8496_device);
xtide_init();
nmi_init();
if (romset != ROM_TANDY)
device_add(&tandy_eeprom_device);
}
void tandy1ksl2_init()
{
// TANDY = 1;
common_init();
keyboard_tandy_init();
mouse_serial_init();
device_add(&pssj_device);
xtide_init();
nmi_init();
device_add(&tandy_rom_device);
device_add(&tandy_eeprom_device);
}
void ams_init()