diff --git a/Emulator/Base/Thread.cpp b/Emulator/Base/Thread.cpp index 0143b9ee7..871a0ebd8 100644 --- a/Emulator/Base/Thread.cpp +++ b/Emulator/Base/Thread.cpp @@ -71,9 +71,9 @@ Thread::execute() // The emulator got out of sync if (missing > 0) { - warn("Emulation is way too slow (%ld frames behind)\n", missing); + debug(VID_DEBUG, "Emulation is way too slow (%ld frames behind)\n", missing); } else { - warn("Emulation is way too fast (%ld time slices ahead)\n", -missing); + debug(VID_DEBUG, "Emulation is way too fast (%ld time slices ahead)\n", -missing); } resync(); diff --git a/Emulator/Headless.cpp b/Emulator/Headless.cpp index fb457b68c..83f3bd598 100644 --- a/Emulator/Headless.cpp +++ b/Emulator/Headless.cpp @@ -6,13 +6,14 @@ // // See https://mozilla.org/MPL/2.0 for license information // ----------------------------------------------------------------------------- +/// @file #include "config.h" #include "Headless.h" +#include "HeadlessScripts.h" #include "Amiga.h" #include "Script.h" #include "DiagRom.h" -#include #include int main(int argc, char *argv[]) @@ -74,7 +75,7 @@ Headless::main(int argc, char *argv[]) if (keys.find("diagnose") != keys.end()) { runScript(selfTestScript); } if (keys.find("arg1") != keys.end()) { runScript(keys["arg1"]); } - return 0; + return returnCode; } void @@ -121,7 +122,7 @@ Headless::checkArguments() } } -int +void Headless::runScript(const char **script) { auto path = std::filesystem::temp_directory_path() / "script.ini"; @@ -130,10 +131,10 @@ Headless::runScript(const char **script) for (isize i = 0; script[i] != nullptr; i++) { file << script[i] << std::endl; } - return runScript(path); + runScript(path); } -int +void Headless::runScript(const std::filesystem::path &path) { // Read the input script @@ -155,8 +156,6 @@ Headless::runScript(const std::filesystem::path &path) const auto timeout = util::Time::seconds(500.0); vamiga.retroShell.execScript(script); waitForWakeUp(timeout); - - return *returnCode; } void @@ -169,7 +168,6 @@ void Headless::process(Message msg) { static bool messages = keys.find("messages") != keys.end(); - static string serout; if (messages) { @@ -182,13 +180,12 @@ Headless::process(Message msg) case MSG_RSH_ERROR: - returnCode = 0; + returnCode = 1; wakeUp(); break; case MSG_ABORT: - returnCode = msg.value; wakeUp(); break; diff --git a/Emulator/Headless.h b/Emulator/Headless.h index c2c8b9bdf..543ddf055 100644 --- a/Emulator/Headless.h +++ b/Emulator/Headless.h @@ -11,7 +11,6 @@ #include "VAmiga.h" #include "Wakeable.h" -#include "HeadlessScripts.h" #include namespace vamiga { @@ -29,7 +28,7 @@ class Headless : Wakeable { std::map keys; // Return code - std::optional returnCode; + int returnCode = 0; // @@ -50,8 +49,8 @@ class Headless : Wakeable { void checkArguments() throws; // Runs a RetroShell script - int runScript(const char **script); - int runScript(const std::filesystem::path &path); + void runScript(const char **script); + void runScript(const std::filesystem::path &path); // diff --git a/Emulator/HeadlessScripts.h b/Emulator/HeadlessScripts.h index b486bcf66..a9bc6cf87 100644 --- a/Emulator/HeadlessScripts.h +++ b/Emulator/HeadlessScripts.h @@ -486,7 +486,9 @@ static const char *smokeTestScript[] = { "i host", "i server", - + + "shutdown", + nullptr }; diff --git a/Emulator/Misc/RetroShell/CommandConsole.cpp b/Emulator/Misc/RetroShell/CommandConsole.cpp index 0c657643f..60d262412 100644 --- a/Emulator/Misc/RetroShell/CommandConsole.cpp +++ b/Emulator/Misc/RetroShell/CommandConsole.cpp @@ -14,8 +14,6 @@ namespace vamiga { -#define VAMIGA_GROUP(x) Command::currentGroup = x; - void CommandConsole::_pause() { @@ -68,126 +66,16 @@ CommandConsole::pressReturn(bool shift) } } -void -Console::initCommands(Command &root) -{ - // - // Common commands - // - - { VAMIGA_GROUP("Shell commands"); - - root.add({"welcome"}, - "", // Prints the welcome message - [this](Arguments& argv, long value) { - - welcome(); - }); - - root.add({"."}, - "Enter or exit the debugger", - [this](Arguments& argv, long value) { - - retroShell.switchConsole(); - }); - - root.add({"clear"}, - "Clear the console window", - [this](Arguments& argv, long value) { - - clear(); - }); - - root.add({"close"}, - "Hide the console window", - [this](Arguments& argv, long value) { - - msgQueue.put(MSG_RSH_CLOSE); - }); - - root.add({"help"}, { }, {Arg::command}, - "Print usage information", - [this](Arguments& argv, long value) { - - help(argv.empty() ? "" : argv.front()); - }); - - root.add({"state"}, - "", // Prints the welcome message - [this](Arguments& argv, long value) { - - printState(); - }); - - root.add({"joshua"}, - "", - [this](Arguments& argv, long value) { - - *this << "\nGREETINGS PROFESSOR HOFFMANN.\n"; - *this << "THE ONLY WINNING MOVE IS NOT TO PLAY.\n"; - *this << "HOW ABOUT A NICE GAME OF CHESS?\n\n"; - }); - - root.add({"source"}, {Arg::path}, - "Process a command script", - [this](Arguments& argv, long value) { - - auto stream = std::ifstream(argv.front()); - if (!stream.is_open()) throw Error(ERROR_FILE_NOT_FOUND, argv.front()); - retroShell.asyncExecScript(stream); - }); - - root.add({"wait"}, {Arg::value, Arg::seconds}, - "", // Pause the execution of a command script", - [this](Arguments& argv, long value) { - - auto seconds = parseNum(argv[0]); - agnus.scheduleRel(SEC(seconds), RSH_WAKEUP); - throw ScriptInterruption(); - }); - - root.add({"shutdown"}, - "Terminates the application", - [this](Arguments& argv, long value) { - - msgQueue.put(MSG_ABORT, 0); - }); - } -} - -void -Console::initSetters(Command &root, const CoreComponent &c) -{ - if (auto cmd = string(c.shellName()); !cmd.empty()) { - - if (auto &options = c.getOptions(); !options.empty()) { - - root.add({cmd, "set"}, "Configure the component"); - for (auto &opt : options) { - - root.add({cmd, "set", OptionEnum::key(opt)}, - {OptionParser::argList(opt)}, - OptionEnum::help(opt), - [this](Arguments& argv, long value) { - - emulator.set(Option(HI_WORD(value)), argv[0], { LO_WORD(value) }); - - }, HI_W_LO_W(opt, c.objid)); - } - } - } -} - void CommandConsole::initCommands(Command &root) { Console::initCommands(root); - { VAMIGA_GROUP("Regression testing") + { Command::currentGroup = "Regression testing"; root.add({"regression"}, debugBuild ? "Runs the regression tester" : ""); - { VAMIGA_GROUP(""); + { Command::currentGroup = ""; root.add({"regression", "setup"}, { ConfigSchemeEnum::argList() }, { Arg::path, Arg::path }, "Initializes the test environment", @@ -210,7 +98,7 @@ CommandConsole::initCommands(Command &root) root.add({"screenshot"}, debugBuild ? "Manages screenshots" : ""); - { VAMIGA_GROUP("") + { Command::currentGroup = ""; root.add({"screenshot", "set"}, "Configures the screenshot"); @@ -246,7 +134,7 @@ CommandConsole::initCommands(Command &root) } } - { VAMIGA_GROUP("Components") + { Command::currentGroup = "Components"; // // Amiga @@ -256,7 +144,7 @@ CommandConsole::initCommands(Command &root) auto description = amiga.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { Command::currentGroup = ""; root.add({cmd, ""}, "Displays the current configuration", @@ -311,7 +199,7 @@ CommandConsole::initCommands(Command &root) description = mem.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, ""}, "Displays the current configuration", @@ -381,7 +269,7 @@ CommandConsole::initCommands(Command &root) description = cpu.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, ""}, "Displays the current configuration", @@ -403,7 +291,7 @@ CommandConsole::initCommands(Command &root) description = (i == 0) ? ciaa.description() : ciab.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, ""}, "Displays the current configuration", @@ -428,7 +316,7 @@ CommandConsole::initCommands(Command &root) description = agnus.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, ""}, "Displays the current configuration", @@ -448,7 +336,7 @@ CommandConsole::initCommands(Command &root) description = blitter.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, ""}, "Displays the current configuration", @@ -469,7 +357,7 @@ CommandConsole::initCommands(Command &root) description = denise.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, ""}, "Displays the current configuration", @@ -489,7 +377,7 @@ CommandConsole::initCommands(Command &root) description = paula.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, "dc"}, "Disk controller"); @@ -510,7 +398,7 @@ CommandConsole::initCommands(Command &root) root.add({"rtc"}, "Real-time clock"); - { VAMIGA_GROUP("") + { root.add({"rtc", ""}, "Displays the current configuration", @@ -528,7 +416,7 @@ CommandConsole::initCommands(Command &root) root.add({"serial"}, "Serial port"); - { VAMIGA_GROUP("") + { root.add({"serial", ""}, "Displays the current configuration", @@ -553,7 +441,7 @@ CommandConsole::initCommands(Command &root) root.add({"dmadebugger"}, "DMA Debugger"); - { VAMIGA_GROUP("") + { root.add({"dmadebugger", "open"}, "Opens the DMA debugger", @@ -573,7 +461,7 @@ CommandConsole::initCommands(Command &root) } } - { VAMIGA_GROUP("Ports") + { Command::currentGroup = "Ports"; // // Audio port @@ -583,7 +471,7 @@ CommandConsole::initCommands(Command &root) auto description = audioPort.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, ""}, "Displays the current configuration", @@ -616,7 +504,7 @@ CommandConsole::initCommands(Command &root) description = videoPort.description(); root.add({cmd}, description); - { VAMIGA_GROUP("") + { root.add({cmd, ""}, "Displays the current configuration", @@ -629,7 +517,7 @@ CommandConsole::initCommands(Command &root) } } - { VAMIGA_GROUP("Peripherals") + { Command::currentGroup = "Peripherals"; // // Monitor @@ -637,7 +525,7 @@ CommandConsole::initCommands(Command &root) root.add({"monitor"}, "Amiga monitor"); - { VAMIGA_GROUP("") + { root.add({"monitor", ""}, "Displays the current configuration", @@ -655,7 +543,7 @@ CommandConsole::initCommands(Command &root) root.add({"keyboard"}, "Keyboard"); - { VAMIGA_GROUP("") + { root.add({"keyboard", ""}, "Displays the current configuration", @@ -682,7 +570,7 @@ CommandConsole::initCommands(Command &root) root.add({"joystick"}, "Joystick"); - { VAMIGA_GROUP("") + { for (isize i = 0; i <= 1; i++) { @@ -809,7 +697,7 @@ CommandConsole::initCommands(Command &root) root.add({"mouse"}, "Mouse"); - { VAMIGA_GROUP("") + { for (isize i = 0; i <= 1; i++) { @@ -874,7 +762,7 @@ CommandConsole::initCommands(Command &root) string df = "df" + std::to_string(i); root.add({df}, "Floppy drive"); - { VAMIGA_GROUP("") + { root.add({df, ""}, "Displays the current configuration", @@ -948,7 +836,7 @@ CommandConsole::initCommands(Command &root) string hd = i == 4 ? "hdn" : "hd" + std::to_string(i); root.add({hd}, "Hard drive"); - { VAMIGA_GROUP("") + { if (i != 4) { @@ -1002,7 +890,7 @@ CommandConsole::initCommands(Command &root) // Miscellaneous // - { VAMIGA_GROUP("Miscellaneous") + { Command::currentGroup = "Miscellaneous"; // // Miscellaneous (Diff) @@ -1054,7 +942,7 @@ CommandConsole::initCommands(Command &root) root.add({"server"}, "Remote connections"); - { VAMIGA_GROUP(""); + { root.add({"server", ""}, "Displays a server status summary", diff --git a/Emulator/Misc/RetroShell/Console.cpp b/Emulator/Misc/RetroShell/Console.cpp index c37a6516f..3a79a749a 100644 --- a/Emulator/Misc/RetroShell/Console.cpp +++ b/Emulator/Misc/RetroShell/Console.cpp @@ -11,6 +11,7 @@ #include "Console.h" #include "Emulator.h" #include "Parser.h" +#include "Option.h" #include #include #include @@ -764,4 +765,114 @@ Console::_dump(CoreObject &component, Category category) *this << ss << '\n'; } +void +Console::initCommands(Command &root) +{ + // + // Common commands + // + + { Command::currentGroup = "Shell commands"; + + root.add({"welcome"}, + "", // Prints the welcome message + [this](Arguments& argv, long value) { + + welcome(); + }); + + root.add({"."}, + "Enter or exit the debugger", + [this](Arguments& argv, long value) { + + retroShell.switchConsole(); + }); + + root.add({"clear"}, + "Clear the console window", + [this](Arguments& argv, long value) { + + clear(); + }); + + root.add({"close"}, + "Hide the console window", + [this](Arguments& argv, long value) { + + msgQueue.put(MSG_RSH_CLOSE); + }); + + root.add({"help"}, { }, {Arg::command}, + "Print usage information", + [this](Arguments& argv, long value) { + + help(argv.empty() ? "" : argv.front()); + }); + + root.add({"state"}, + "", // Prints the welcome message + [this](Arguments& argv, long value) { + + printState(); + }); + + root.add({"joshua"}, + "", + [this](Arguments& argv, long value) { + + *this << "\nGREETINGS PROFESSOR HOFFMANN.\n"; + *this << "THE ONLY WINNING MOVE IS NOT TO PLAY.\n"; + *this << "HOW ABOUT A NICE GAME OF CHESS?\n\n"; + }); + + root.add({"source"}, {Arg::path}, + "Process a command script", + [this](Arguments& argv, long value) { + + auto stream = std::ifstream(argv.front()); + if (!stream.is_open()) throw Error(ERROR_FILE_NOT_FOUND, argv.front()); + retroShell.asyncExecScript(stream); + }); + + root.add({"wait"}, {Arg::value, Arg::seconds}, + "", // Pause the execution of a command script", + [this](Arguments& argv, long value) { + + auto seconds = parseNum(argv[0]); + agnus.scheduleRel(SEC(seconds), RSH_WAKEUP); + throw ScriptInterruption(); + }); + + root.add({"shutdown"}, + "Terminates the application", + [this](Arguments& argv, long value) { + + msgQueue.put(MSG_ABORT, 0); + }); + } +} + +void +Console::initSetters(Command &root, const CoreComponent &c) +{ + if (auto cmd = string(c.shellName()); !cmd.empty()) { + + if (auto &options = c.getOptions(); !options.empty()) { + + root.add({cmd, "set"}, "Configure the component"); + for (auto &opt : options) { + + root.add({cmd, "set", OptionEnum::key(opt)}, + {OptionParser::argList(opt)}, + OptionEnum::help(opt), + [this](Arguments& argv, long value) { + + emulator.set(Option(HI_WORD(value)), argv[0], { LO_WORD(value) }); + + }, HI_W_LO_W(opt, c.objid)); + } + } + } +} + } diff --git a/Emulator/Misc/RetroShell/DebugConsole.cpp b/Emulator/Misc/RetroShell/DebugConsole.cpp index 61ee1d26e..0742d2d84 100644 --- a/Emulator/Misc/RetroShell/DebugConsole.cpp +++ b/Emulator/Misc/RetroShell/DebugConsole.cpp @@ -13,8 +13,6 @@ namespace vamiga { -#define VAMIGA_GROUP(x) Command::currentGroup = x; - void DebugConsole::_pause() { @@ -78,7 +76,7 @@ DebugConsole::initCommands(Command &root) // Top-level commands // - { VAMIGA_GROUP("Program execution") + { Command::currentGroup = "Program execution"; root.add({"goto"}, { }, { Arg::value }, std::pair ("g[oto]", "Goto address"), @@ -109,7 +107,7 @@ DebugConsole::initCommands(Command &root) root.add({"break"}, "Manage CPU breakpoints"); - { VAMIGA_GROUP("") + { root.add({"break", ""}, "List all breakpoints", @@ -144,7 +142,7 @@ DebugConsole::initCommands(Command &root) root.add({"watch"}, "Manage CPU watchpoints"); - { VAMIGA_GROUP("") + { root.add({"watch", ""}, "Lists all watchpoints", @@ -178,7 +176,7 @@ DebugConsole::initCommands(Command &root) root.add({"catch"}, "Manage CPU catchpoints"); - { VAMIGA_GROUP("") + { root.add({"catch", ""}, "List all catchpoints", @@ -231,7 +229,7 @@ DebugConsole::initCommands(Command &root) root.add({"cbreak"}, "Manage Copper breakpoints"); - { VAMIGA_GROUP("") + { root.add({"cbreak", ""}, "List all breakpoints", @@ -266,7 +264,7 @@ DebugConsole::initCommands(Command &root) root.add({"cwatch"}, "Manage Copper watchpoints"); - { VAMIGA_GROUP("") + { root.add({"cwatch", ""}, "List all watchpoints", @@ -301,7 +299,7 @@ DebugConsole::initCommands(Command &root) root.add({"btrap"}, "Manage beamtraps"); - { VAMIGA_GROUP("") + { root.add({"btrap", ""}, "List all beamtraps", @@ -335,7 +333,7 @@ DebugConsole::initCommands(Command &root) } } - { VAMIGA_GROUP("Monitoring") + { Command::currentGroup = "Monitoring"; root.add({"d"}, { }, { Arg::address }, "Disassemble instructions", @@ -473,11 +471,11 @@ DebugConsole::initCommands(Command &root) root.add({"i"}, "Inspect a component"); - { VAMIGA_GROUP("Components"); + { Command::currentGroup = "Components"; root.add({"i", "amiga"}, "Main computer"); - { VAMIGA_GROUP("") + { root.add({"i", "amiga", ""}, "Inspects the internal state", @@ -489,7 +487,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "memory"}, "RAM and ROM"); - { VAMIGA_GROUP("") + { root.add({"i", "memory", ""}, "Inspects the internal state", @@ -508,7 +506,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "cpu"}, "Motorola CPU"); - { VAMIGA_GROUP("") + { root.add({"i", "cpu", ""}, "Inspect the internal state", @@ -523,7 +521,7 @@ DebugConsole::initCommands(Command &root) string cia = (i == 0) ? "ciaa" : "ciab"; root.add({"i", cia}, "Complex Interface Adapter"); - { VAMIGA_GROUP("") + { root.add({"i", cia, ""}, "Inspect the internal state", @@ -551,7 +549,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "agnus"}, "Custom Chipset"); - { VAMIGA_GROUP("") + { root.add({"i", "agnus", ""}, "Inspect the internal state", @@ -591,7 +589,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "blitter"}, "Coprocessor"); - { VAMIGA_GROUP("") + { root.add({"i", "blitter", ""}, "Inspect the internal state", @@ -603,7 +601,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "copper"}, "Coprocessor"); - { VAMIGA_GROUP("") + { root.add({"i", "copper", ""}, "Inspect the internal state", @@ -631,7 +629,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "paula"}, "Ports, Audio, Interrupts"); - { VAMIGA_GROUP("") + { root.add({"i", "paula", "audio"}, "Audio unit"); @@ -673,7 +671,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "denise"}, "Graphics"); - { VAMIGA_GROUP("") + { root.add({"i", "denise", ""}, "Inspect the internal state", @@ -685,7 +683,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "rtc"}, "Real-time clock"); - { VAMIGA_GROUP("") + { root.add({"i", "rtc", ""}, "Inspect the internal state", @@ -697,7 +695,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "zorro"}, "Expansion boards"); - { VAMIGA_GROUP("") + { root.add({"i", "zorro", ""}, "List all connected boards", @@ -721,7 +719,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "controlport"}, "Control ports"); - { VAMIGA_GROUP("") + { for (isize i = 1; i <= 2; i++) { @@ -743,7 +741,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "serial"}, "Serial port"); - { VAMIGA_GROUP("") + { root.add({"i", "serial", ""}, "Display the internal state", @@ -753,11 +751,11 @@ DebugConsole::initCommands(Command &root) }); } } - { VAMIGA_GROUP("Peripherals") + { Command::currentGroup = "Peripherals"; root.add({"i", "keyboard"}, "Keyboard"); - { VAMIGA_GROUP("") + { root.add({"i", "keyboard", ""}, "Inspect the internal state", @@ -769,7 +767,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "mouse"}, "Mouse"); - { VAMIGA_GROUP("") + { for (isize i = 1; i <= 2; i++) { @@ -791,7 +789,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "joystick"}, "Joystick"); - { VAMIGA_GROUP("") + { for (isize i = 1; i <= 2; i++) { @@ -821,7 +819,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", df}, ""); } - { VAMIGA_GROUP("") + { root.add({"i", df, ""}, "Inspect the internal state", @@ -851,7 +849,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", hd}, ""); } - { VAMIGA_GROUP("") + { root.add({"i", hd, ""}, "Inspect the internal state", @@ -887,11 +885,11 @@ DebugConsole::initCommands(Command &root) } } } - { VAMIGA_GROUP("Miscellaneous") + { Command::currentGroup = "Miscellaneous"; root.add({"i", "host"}, "Host machine"); - { VAMIGA_GROUP("") + { root.add({"i", "host", ""}, "Display information about the host machine", @@ -903,7 +901,7 @@ DebugConsole::initCommands(Command &root) root.add({"i", "server"}, "Remote server"); - { VAMIGA_GROUP("") + { root.add({"i", "server", ""}, "Display a server status summary", @@ -947,7 +945,7 @@ DebugConsole::initCommands(Command &root) root.add({"r"}, "Show registers"); - { VAMIGA_GROUP("") + { root.add({"r", "cpu"}, "Motorola CPU", @@ -1020,7 +1018,7 @@ DebugConsole::initCommands(Command &root) root.add({"os"}, "Run the OS debugger"); - { VAMIGA_GROUP("") + { root.add({"os", "info"}, "Display basic system information", @@ -1162,7 +1160,7 @@ DebugConsole::initCommands(Command &root) // // Miscellaneous // - { VAMIGA_GROUP("Miscellaneous"); + { Command::currentGroup = "Miscellaneous"; root.add({"debug"}, "Debug variables"); diff --git a/vAmiga.xcodeproj/xcshareddata/xcschemes/vAmigaCore.xcscheme b/vAmiga.xcodeproj/xcshareddata/xcschemes/vAmigaCore.xcscheme index 97134ed83..7a0f0a447 100644 --- a/vAmiga.xcodeproj/xcshareddata/xcschemes/vAmigaCore.xcscheme +++ b/vAmiga.xcodeproj/xcshareddata/xcschemes/vAmigaCore.xcscheme @@ -61,11 +61,11 @@ + isEnabled = "YES"> + isEnabled = "NO"> + isEnabled = "YES">