From ee022c0deec3fe045e300ed0dbc19f47e786d080 Mon Sep 17 00:00:00 2001 From: Paul Baxter Date: Fri, 16 Oct 2026 10:27:17 -0400 Subject: [PATCH] debuggged .ds --- multipassassembler.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/multipassassembler.cpp b/multipassassembler.cpp index a06b7b6..dee5d13 100644 --- a/multipassassembler.cpp +++ b/multipassassembler.cpp @@ -921,6 +921,8 @@ void MultiPassAssembler::EmitFinalPass(const std::vector& emitted_bytes) { if (!load_address_set) { + std::cout << std::format("auto set loadaddress ${:04X}", pc); + load_address = pc; load_address_set = true; if (options.verbose) { @@ -977,12 +979,12 @@ void MultiPassAssembler::EmitFinalPass(const std::vectorfile), stmt->line) ); } - pc = static_cast(val.value()); + pc = static_cast(val.value()); if (org_stmt->isOrg && load_address_set) { throw std::runtime_error( std::format("Org already set ${:04X} File: {} Line:{}", load_address, src_mgr.GetFileName(stmt->file), stmt->line)); } - if (!load_address_set) { + if (!load_address_set) { load_address = pc; load_address_set = true; } @@ -1141,7 +1143,8 @@ void MultiPassAssembler::EmitFinalPass(const std::vector 0) { - if (pc >= load_address) { + auto sz = binary_output.size(); + if (sz + load_address == pc) { std::vector bytes(count, 0x00); emit_bytes(bytes); // Note: emit_bytes advances pc by bytes.size() if (printstate) {