This commit is contained in:
thrust26 2020-10-22 12:10:03 +02:00
commit 0d0125fa71
4 changed files with 29 additions and 8 deletions

View File

@ -53,7 +53,7 @@ using Common::Base;
#endif #endif
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Thumbulator::Thumbulator(const uInt16* rom_ptr, uInt16* ram_ptr, uInt16 rom_size, Thumbulator::Thumbulator(const uInt16* rom_ptr, uInt16* ram_ptr, uInt32 rom_size,
const uInt32 c_base, const uInt32 c_start, const uInt32 c_stack, const uInt32 c_base, const uInt32 c_start, const uInt32 c_stack,
bool traponfatal, Thumbulator::ConfigureFor configurefor, bool traponfatal, Thumbulator::ConfigureFor configurefor,
Cartridge* cartridge) Cartridge* cartridge)
@ -67,7 +67,7 @@ Thumbulator::Thumbulator(const uInt16* rom_ptr, uInt16* ram_ptr, uInt16 rom_size
configuration(configurefor), configuration(configurefor),
myCartridge(cartridge) myCartridge(cartridge)
{ {
for(uInt16 i = 0; i < romSize / 2; ++i) for(uInt32 i = 0; i < romSize / 2; ++i)
decodedRom[i] = decodeInstructionWord(CONV_RAMROM(rom[i])); decodedRom[i] = decodeInstructionWord(CONV_RAMROM(rom[i]));
setConsoleTiming(ConsoleTiming::ntsc); setConsoleTiming(ConsoleTiming::ntsc);

View File

@ -35,8 +35,8 @@ class Cartridge;
#define NO_THUMB_STATS #define NO_THUMB_STATS
#endif #endif
#define ROMADDMASK 0x7FFFF #define ROMADDMASK 0x7FFFF
#define RAMADDMASK 0x7FFF #define RAMADDMASK 0x7FFF
#define ROMSIZE (ROMADDMASK+1) // 512KB #define ROMSIZE (ROMADDMASK+1) // 512KB
#define RAMSIZE (RAMADDMASK+1) // 32KB #define RAMSIZE (RAMADDMASK+1) // 32KB
@ -60,7 +60,7 @@ class Thumbulator
DPCplus // cartridges of type DPC+ DPCplus // cartridges of type DPC+
}; };
Thumbulator(const uInt16* rom_ptr, uInt16* ram_ptr, uInt16 rom_size, Thumbulator(const uInt16* rom_ptr, uInt16* ram_ptr, uInt32 rom_size,
const uInt32 c_base, const uInt32 c_start, const uInt32 c_stack, const uInt32 c_base, const uInt32 c_start, const uInt32 c_stack,
bool traponfatal, Thumbulator::ConfigureFor configurefor, bool traponfatal, Thumbulator::ConfigureFor configurefor,
Cartridge* cartridge); Cartridge* cartridge);
@ -188,7 +188,7 @@ class Thumbulator
private: private:
const uInt16* rom{nullptr}; const uInt16* rom{nullptr};
uInt16 romSize{0}; uInt32 romSize{0};
uInt32 cBase{0}; uInt32 cBase{0};
uInt32 cStart{0}; uInt32 cStart{0};
uInt32 cStack{0}; uInt32 cStack{0};

View File

@ -101,7 +101,7 @@ StringList SerialPortMACOS::portNames()
// Get all possible devices in the '/dev' directory // Get all possible devices in the '/dev' directory
FilesystemNode::NameFilter filter = [](const FilesystemNode& node) { FilesystemNode::NameFilter filter = [](const FilesystemNode& node) {
return BSPF::startsWithIgnoreCase(node.getPath(), "/dev/tty.usb"); return BSPF::startsWithIgnoreCase(node.getPath(), "/dev/cu.usb");
}; };
FSList portList; FSList portList;
portList.reserve(16); portList.reserve(16);
@ -111,8 +111,20 @@ StringList SerialPortMACOS::portNames()
// Add only those that can be opened // Add only those that can be opened
for(const auto& port: portList) for(const auto& port: portList)
if(openPort(port.getPath())) if(isValid(port.getPath()))
ports.emplace_back(port.getPath()); ports.emplace_back(port.getPath());
return ports; return ports;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool SerialPortMACOS::isValid(const string& port) const
{
// For now, we can only detect whether the port could be opened
// Eventually we may extend this to do more intensive checks
int handle = open(port.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK);
if(handle > 0)
close(handle);
return handle > 0;
}

View File

@ -69,6 +69,15 @@ class SerialPortMACOS : public SerialPort
*/ */
StringList portNames() override; StringList portNames() override;
private:
/**
Tests whether this port can be opened, and is a valid
serial port.
@return True if valid, else false
*/
bool isValid(const string& port) const;
private: private:
// File descriptor for serial connection // File descriptor for serial connection
int myHandle{0}; int myHandle{0};