From: <man...@us...> - 2012-02-21 22:10:31
|
Revision: 12412 http://openmsx.svn.sourceforge.net/openmsx/?rev=12412&view=rev Author: manuelbi Date: 2012-02-21 22:10:24 +0000 (Tue, 21 Feb 2012) Log Message: ----------- Make WD2793 style FDC's deprecated: move to one tag with connectionstyle subtags. The old Microsol and MB8877A tags were confusing, they just represent a WD2793 (or clone) FDC with a different style of connecting to the MSX. That is now reflected in the new model. Old configs should still work. Modified Paths: -------------- openmsx/trunk/src/DeviceFactory.cc Modified: openmsx/trunk/src/DeviceFactory.cc =================================================================== --- openmsx/trunk/src/DeviceFactory.cc 2012-02-20 12:03:40 UTC (rev 12411) +++ openmsx/trunk/src/DeviceFactory.cc 2012-02-21 22:10:24 UTC (rev 12412) @@ -55,6 +55,7 @@ #include "MSXMapperIO.hh" #include "VDPIODelay.hh" #include "MSXMotherBoard.hh" +#include "CliComm.hh" #include "MSXException.hh" #include "components.hh" @@ -64,6 +65,29 @@ namespace openmsx { +static std::auto_ptr<MSXDevice> createWD2793BasedFDC(MSXMotherBoard& motherBoard, const XMLElement& conf) +{ + std::auto_ptr<MSXDevice> result; + const XMLElement* styleEl = conf.findChild("connectionstyle"); + std::string type; + if (styleEl == NULL) { + motherBoard.getMSXCliComm().printWarning("WD2793 as FDC type without a connectionstyle is deprecated, please update your config file to use WD2793 with connectionstyle Philips!"); + type = "Philips"; + } else { + type = styleEl->getData(); + } + if (type == "Philips") { + result.reset(new PhilipsFDC(motherBoard, conf)); + } else if (type == "Microsol") { + result.reset(new MicrosolFDC(motherBoard, conf)); + } else if (type == "National") { + result.reset(new NationalFDC(motherBoard, conf)); + } else { + throw MSXException("Unknown WD2793 FDC connection style " + type); + } + return result; +} + std::auto_ptr<MSXDevice> DeviceFactory::create( MSXMotherBoard& motherBoard, const HardwareConfig& hwConf, const XMLElement& conf) @@ -123,10 +147,12 @@ } else if (type == "SCCplus") { // Note: it's actually called SCC-I result.reset(new MSXSCCPlusCart(motherBoard, conf)); } else if (type == "WD2793") { - result.reset(new PhilipsFDC(motherBoard, conf)); + result = createWD2793BasedFDC(motherBoard, conf); } else if (type == "Microsol") { + motherBoard.getMSXCliComm().printWarning("Microsol as FDC type is deprecated, please update your config file to use WD2793 with connectionstyle Microsol!"); result.reset(new MicrosolFDC(motherBoard, conf)); } else if (type == "MB8877A") { + motherBoard.getMSXCliComm().printWarning("MB8877A as FDC type is deprecated, please update your config file to use WD2793 with connectionstyle National!"); result.reset(new NationalFDC(motherBoard, conf)); } else if (type == "TC8566AF") { result.reset(new TurboRFDC(motherBoard, conf)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |