From c4af62d6f8758219875c19d95a832b7987e30829 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Tue, 30 Apr 2024 00:34:05 +0200 Subject: [PATCH] DC11 fixes for base --- bus.cpp | 5 +++++ dc11.cpp | 2 +- dc11.h | 2 +- main.cpp | 5 +++++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/bus.cpp b/bus.cpp index bfa415a..259cd95 100644 --- a/bus.cpp +++ b/bus.cpp @@ -966,6 +966,11 @@ write_rc_t bus::write(const uint16_t addr_in, const word_mode_t word_mode, uint1 return { false }; } + if (dc11_ && a >= DC11_BASE && a < DC11_END) { + word_mode == wm_byte ? dc11_->write_byte(a, value) : dc11_->write_word(a, value); + return { false }; + } + if (a >= 0172100 && a <= 0172137) { // MM11-LP parity DOLOG(debug, false, "WRITE-I/O MM11-LP parity (%06o): %o", a, value); return { false }; diff --git a/dc11.cpp b/dc11.cpp index 9923ef4..1a7dab0 100644 --- a/dc11.cpp +++ b/dc11.cpp @@ -59,7 +59,7 @@ void dc11::write_word(const uint16_t addr, uint16_t v) { const int reg = (addr - DC11_BASE) / 2; - DOLOG(debug, false, "DC11: set register %06o (%d) to %o", addr, reg, v); + DOLOG(debug, false, "DC11: write register %06o (%d) to %o", addr, reg, v); registers[reg] = v; } diff --git a/dc11.h b/dc11.h index ce8093b..43ce23b 100644 --- a/dc11.h +++ b/dc11.h @@ -11,7 +11,7 @@ #define DC11_RCSR 0174000 // receiver status register #define DC11_BASE DC11_RCSR -#define DC11_END (DC11_BASE + 4 * 4 + 2) // 4 interfaces, + 2 to point after it +#define DC11_END (DC11_BASE + (4 * 4 + 1) * 2) // 4 interfaces, + 2 to point after it class bus; diff --git a/main.cpp b/main.cpp index 229bbd2..f3fd5db 100644 --- a/main.cpp +++ b/main.cpp @@ -21,6 +21,7 @@ #include "disk_backend.h" #include "disk_backend_file.h" #include "disk_backend_nbd.h" +#include "dc11.h" #include "gen.h" #include "kw11-l.h" #include "loaders.h" @@ -580,6 +581,10 @@ int main(int argc, char *argv[]) cnsl->set_bus(b); cnsl->begin(); + // TODO + dc11 *dc11_ = new dc11(b); + b->add_DC11(dc11_); + running = cnsl->get_running_flag(); std::atomic_bool interrupt_emulation { false };