From 67c2b090edfb1477f87762a980babe1be63f0cbe Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 25 May 2026 08:41:46 -0400 Subject: [PATCH 1/5] Remove done 'TODO'. --- Machines/Tandy/CoCo/DiskController.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Machines/Tandy/CoCo/DiskController.cpp b/Machines/Tandy/CoCo/DiskController.cpp index d9ee8b98b..5ed44e950 100644 --- a/Machines/Tandy/CoCo/DiskController.cpp +++ b/Machines/Tandy/CoCo/DiskController.cpp @@ -16,8 +16,6 @@ DiskController::DiskController() : WD::WD1770(P1773) { } void DiskController::set_control(const uint8_t value) { - // TODO: - // // b7: halt flag, 1 = enabled // b6: drive select 3 // b5: density, 1 = double From 39c400e2f3caf8c2e0d40d3c37a3a12db4805b79 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 25 May 2026 09:06:08 -0400 Subject: [PATCH 2/5] Qt: add Thomson model selection. --- OSBindings/Qt/mainwindow.cpp | 8 +++++++- OSBindings/Qt/mainwindow.ui | 32 +++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/OSBindings/Qt/mainwindow.cpp b/OSBindings/Qt/mainwindow.cpp index 0243c4d8b..d9c118d9f 100644 --- a/OSBindings/Qt/mainwindow.cpp +++ b/OSBindings/Qt/mainwindow.cpp @@ -282,7 +282,7 @@ void MainWindow::launchMachine() { } } - // Fallback: check the ROM catalogue. + // Fallback: check the ROM library. if(results.find(description.name) == results.end()) { auto data = ROM::included_rom_image(description.name); if(data.has_value()) { @@ -1286,6 +1286,11 @@ void MainWindow::start_spectrum() { void MainWindow::start_thomson() { using Target = Analyser::Static::Thomson::MOTarget; auto target = std::make_unique(); + switch(thomsonModelComboBox->currentIndex()) { + default: target->model = Target::Model::MO5v11; break; + case 1: target->model = Target::Model::MO6v3; break; + case 2: target->model = Target::Model::Prodest128; break; + } target->floppy = ui->thomsonDiskDriveCheckBox->isChecked() ? Target::Floppy::CD90_640 : Target::Floppy::None; launchTarget(std::move(target)); } @@ -1429,6 +1434,7 @@ void MainWindow::processAllSettings() { applier(ui->pcVideoAdaptorComboBox, "pc.videoAdaptor"); /* Thomson. */ + applier(ui->thomsonModelComboBox, "thomson.model"); applier(ui->thomsonDiskDriveCheckBox, "thomson.hasDiskDrive"); /* Vic-20 */ diff --git a/OSBindings/Qt/mainwindow.ui b/OSBindings/Qt/mainwindow.ui index 92d37a87c..f9eccb5a5 100644 --- a/OSBindings/Qt/mainwindow.ui +++ b/OSBindings/Qt/mainwindow.ui @@ -823,9 +823,39 @@ - Thomson MO5 + Thomson MO + + + + + + Model: + + + + + + + + MO5 + + + + + MO6 + + + + + Prodest 128 + + + + + + From 8a02271840a047f0a20369881712db08b0d266a8 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 25 May 2026 09:12:37 -0400 Subject: [PATCH 3/5] Correct machine name typo. --- Machines/Utility/ROMCatalogue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Machines/Utility/ROMCatalogue.cpp b/Machines/Utility/ROMCatalogue.cpp index 954773fa1..52734d064 100644 --- a/Machines/Utility/ROMCatalogue.cpp +++ b/Machines/Utility/ROMCatalogue.cpp @@ -1186,7 +1186,7 @@ const std::vector &Description::all_roms() { { OlivettiProdest128, "Thomson", - "the Olivetti Prodest 127 ROM", + "the Olivetti Prodest 128 ROM", "pc128.rom", 64_kb, 0xfc173504u From b4cdd5b0bb9f81d37345b94f14430fd4d188cb84 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 25 May 2026 09:12:45 -0400 Subject: [PATCH 4/5] Add proper reference. --- OSBindings/Qt/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OSBindings/Qt/mainwindow.cpp b/OSBindings/Qt/mainwindow.cpp index d9c118d9f..4c6877216 100644 --- a/OSBindings/Qt/mainwindow.cpp +++ b/OSBindings/Qt/mainwindow.cpp @@ -1286,7 +1286,7 @@ void MainWindow::start_spectrum() { void MainWindow::start_thomson() { using Target = Analyser::Static::Thomson::MOTarget; auto target = std::make_unique(); - switch(thomsonModelComboBox->currentIndex()) { + switch(ui->thomsonModelComboBox->currentIndex()) { default: target->model = Target::Model::MO5v11; break; case 1: target->model = Target::Model::MO6v3; break; case 2: target->model = Target::Model::Prodest128; break; From e151dbbaa22504eac300aff9baeaa9ee27f53480 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 25 May 2026 09:20:55 -0400 Subject: [PATCH 5/5] Add Tandy CoCo to UI; standardise space before units. --- OSBindings/Qt/mainwindow.cpp | 18 ++++++++++- OSBindings/Qt/mainwindow.h | 1 + OSBindings/Qt/mainwindow.ui | 58 ++++++++++++++++++++++++++++++++---- 3 files changed, 70 insertions(+), 7 deletions(-) diff --git a/OSBindings/Qt/mainwindow.cpp b/OSBindings/Qt/mainwindow.cpp index 4c6877216..cdf99be47 100644 --- a/OSBindings/Qt/mainwindow.cpp +++ b/OSBindings/Qt/mainwindow.cpp @@ -14,9 +14,9 @@ #include #include +#include "../../Configurable/StandardOptions.hpp" #include "../../Machines/Utility/ROMLibrary.hpp" #include "../../Numeric/CRC.hpp" -#include "../../Configurable/StandardOptions.hpp" namespace { @@ -1024,6 +1024,7 @@ void MainWindow::setButtonPressed(const int index, const bool isPressed) { #include "../../Analyser/Static/MSX/Target.hpp" #include "../../Analyser/Static/Oric/Target.hpp" #include "../../Analyser/Static/PCCompatible/Target.hpp" +#include "../../Analyser/Static/TandyCoCo/Target.hpp" #include "../../Analyser/Static/Thomson/Target.hpp" #include "../../Analyser/Static/ZX8081/Target.hpp" #include "../../Analyser/Static/ZXSpectrum/Target.hpp" @@ -1283,6 +1284,17 @@ void MainWindow::start_spectrum() { launchTarget(std::move(target)); } +void MainWindow::start_tandyCoCo() { + using Target = Analyser::Static::TandyCoCo::Target; + auto target = std::make_unique(); + switch(ui->tandyCoCoMemorySizeComboBox->currentIndex()) { + default: target->memory_size = Target::MemorySize::ThirtyTwoKB; break; + case 1: target->memory_size = Target::MemorySize::SixtyFourKB; break; + } + target->has_disk_drive = ui->tandyCoCoDiskDriveCheckBox->isChecked(); + launchTarget(std::move(target)); +} + void MainWindow::start_thomson() { using Target = Analyser::Static::Thomson::MOTarget; auto target = std::make_unique(); @@ -1433,6 +1445,10 @@ void MainWindow::processAllSettings() { applier(ui->pcSpeedComboBox, "pc.speed"); applier(ui->pcVideoAdaptorComboBox, "pc.videoAdaptor"); + /* Tandy CoCo. */ + applier(ui->tandyCoCoMemorySizeComboBox, "tandy.memorySize"); + applier(ui->tandyCoCoDiskDriveCheckBox, "tandy.hasDiskDrive"); + /* Thomson. */ applier(ui->thomsonModelComboBox, "thomson.model"); applier(ui->thomsonDiskDriveCheckBox, "thomson.hasDiskDrive"); diff --git a/OSBindings/Qt/mainwindow.h b/OSBindings/Qt/mainwindow.h index 4d9fba969..e724114f9 100644 --- a/OSBindings/Qt/mainwindow.h +++ b/OSBindings/Qt/mainwindow.h @@ -99,6 +99,7 @@ class MainWindow : public QMainWindow, public Outputs::Speaker::Speaker::Delegat void start_plus4(); void start_pc(); void start_spectrum(); + void start_tandyCoCo(); void start_thomson(); void start_vic20(); void start_zx80(); diff --git a/OSBindings/Qt/mainwindow.ui b/OSBindings/Qt/mainwindow.ui index f9eccb5a5..b50aaf4a0 100644 --- a/OSBindings/Qt/mainwindow.ui +++ b/OSBindings/Qt/mainwindow.ui @@ -222,17 +222,17 @@ - 256kb + 256 kb - 1mb + 1 mb - 8mb + 8 mb @@ -821,6 +821,52 @@ + + + Tandy CoCo + + + + + + + + Memory Size: + + + + + + + + 32 kb + + + + + 64 kb + + + + + + + + + + With Disk Drive + + + + + + + Qt::Orientation::Vertical + + + + + Thomson MO @@ -1049,17 +1095,17 @@ - 16kb + 16 kb - 48kb + 48 kb - 128kb + 128 kb