Skip to content

Commit

Permalink
Enabled aliases in CUI.
Browse files Browse the repository at this point in the history
  • Loading branch information
captainys committed Jan 5, 2024
1 parent cbeac54 commit 91d39d6
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 9 deletions.
9 changes: 6 additions & 3 deletions src/main_cui/command/townscommand.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4405,7 +4405,8 @@ void TownsCommandInterpreter::Execute_CDLoad(FMTownsCommon &towns,Command &cmd)
{
if(2<=cmd.argv.size())
{
auto errCode=towns.cdrom.LoadDiscImage(cmd.argv[1]);
auto imgFileName=towns.var.ApplyAlias(cmd.argv[1]);
auto errCode=towns.cdrom.LoadDiscImage(imgFileName);
std::cout << "[" << cmd.argv[1] << "]" << std::endl;
if(DiscImage::ERROR_NOERROR==errCode)
{
Expand All @@ -4426,7 +4427,8 @@ void TownsCommandInterpreter::Execute_SCSICDLoad(unsigned int SCSIID,FMTownsComm
(towns.scsi.state.dev[SCSIID].devType==TownsSCSI::SCSIDEVICE_NONE ||
towns.scsi.state.dev[SCSIID].devType==TownsSCSI::SCSIDEVICE_CDROM))
{
auto res=towns.scsi.LoadCDImage(SCSIID,cmd.argv[1]);
auto imgFileName=towns.var.ApplyAlias(cmd.argv[1]);
auto res=towns.scsi.LoadCDImage(SCSIID,imgFileName);
std::cout << "[" << cmd.argv[1] << "]" << std::endl;
if(true==res)
{
Expand All @@ -4448,7 +4450,8 @@ void TownsCommandInterpreter::Execute_FDLoad(int drv,FMTownsCommon &towns,Comman
{
if(2<=cmd.argv.size())
{
if(true==towns.fdc.LoadD77orRDDorRAW(drv,cmd.argv[1].c_str(),towns.state.townsTime,false))
auto imgFileName=towns.var.ApplyAlias(cmd.argv[1]);
if(true==towns.fdc.LoadD77orRDDorRAW(drv,imgFileName.c_str(),towns.state.townsTime,false))
{
std::cout << "Loaded FD image." << std::endl;
}
Expand Down
26 changes: 20 additions & 6 deletions src/towns/towns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ void FMTownsCommon::State::PowerOn(void)
return false;
}

towns.var.fileNameAlias=argv.fileNameAlias;

if(true!=towns.LoadROMImages(argv.ROMPath.c_str()))
{
std::cout << towns.vmAbortReason << std::endl;
Expand All @@ -70,7 +72,8 @@ void FMTownsCommon::State::PowerOn(void)
{
if(""!=argv.fdImgFName[drv])
{
towns.fdc.LoadD77orRDDorRAW(drv,argv.fdImgFName[drv].c_str(),towns.state.townsTime);
auto imgFileName=towns.var.ApplyAlias(argv.fdImgFName[drv]);
towns.fdc.LoadD77orRDDorRAW(drv,imgFileName.c_str(),towns.state.townsTime);
if(true==argv.fdImgWriteProtect[drv])
{
// D77 image may have write-protect switch.
Expand All @@ -80,8 +83,6 @@ void FMTownsCommon::State::PowerOn(void)
}
}

towns.var.fileNameAlias=argv.fileNameAlias;

if(TOWNSTYPE_UNKNOWN!=argv.townsType)
{
towns.townsType=argv.townsType;
Expand All @@ -91,7 +92,8 @@ void FMTownsCommon::State::PowerOn(void)
towns.cdrom.searchPaths=argv.cdSearchPaths;
if(""!=argv.cdImgFName)
{
auto errCode=towns.cdrom.state.GetDisc().Open(argv.cdImgFName);
auto imgFileName=towns.var.ApplyAlias(argv.cdImgFName);
auto errCode=towns.cdrom.state.GetDisc().Open(imgFileName);
if(DiscImage::ERROR_NOERROR!=errCode)
{
std::cout << DiscImage::ErrorCodeToText(errCode);
Expand All @@ -107,16 +109,17 @@ void FMTownsCommon::State::PowerOn(void)
for(int scsiID=0; scsiID<TownsStartParameters::MAX_NUM_SCSI_DEVICES; ++scsiID)
{
auto scsi=argv.scsiImg[scsiID];
auto imgFileName=towns.var.ApplyAlias(scsi.imgFName);
if(scsi.imageType==TownsStartParameters::SCSIIMAGE_HARDDISK)
{
if(true!=towns.scsi.LoadHardDiskImage(scsiID,scsi.imgFName))
if(true!=towns.scsi.LoadHardDiskImage(scsiID,imgFileName))
{
std::cout << "Failed to load hard disk image." << std::endl;
}
}
else if(scsi.imageType==TownsStartParameters::SCSIIMAGE_CDROM)
{
if(true!=towns.scsi.LoadCDImage(scsiID,scsi.imgFName))
if(true!=towns.scsi.LoadCDImage(scsiID,imgFileName))
{
std::cout << "Failed to load SCSI CD image." << std::endl;
}
Expand Down Expand Up @@ -457,6 +460,17 @@ void FMTownsCommon::Variable::Reset(void)
nVM2HostParam=0;
}

std::string FMTownsCommon::Variable::ApplyAlias(std::string incoming) const
{
auto INCOMING=incoming;
cpputil::Capitalize(INCOMING);
auto found=fileNameAlias.find(INCOMING);
if(fileNameAlias.end()!=found)
{
return found->second;
}
return incoming;
}

////////////////////////////////////////////////////////////

Expand Down
7 changes: 7 additions & 0 deletions src/towns/towns.h
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,13 @@ class FMTownsCommon : public VMBase, public Device, public i486DXCommon::FMTowns
std::unordered_map <std::string,std::string> fileNameAlias;



/*!
*/
std::string ApplyAlias(std::string incoming) const;



/*!
*/
std::vector <uint8_t> vmToHost;
Expand Down

0 comments on commit 91d39d6

Please sign in to comment.