From 9b65d56ed0effa9aae175253366d29a277e1a048 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 25 Apr 2021 13:26:53 -0400 Subject: [PATCH] Resolves potential flaw in POPping here. --- Storage/State/SNA.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Storage/State/SNA.cpp b/Storage/State/SNA.cpp index 0f5c6a978..2dce6657f 100644 --- a/Storage/State/SNA.cpp +++ b/Storage/State/SNA.cpp @@ -70,12 +70,11 @@ std::unique_ptr SNA::load(const std::string &file_name // 1B– 48kb RAM contents state->ram = file.read(48*1024); - // Establish program counter. - state->z80.registers.program_counter = state->ram[state->z80.registers.stack_pointer]; - state->ram[state->z80.registers.stack_pointer] = 0; - state->z80.registers.program_counter |= state->ram[state->z80.registers.stack_pointer+1] << 8; - state->ram[state->z80.registers.stack_pointer+1] = 0; - state->z80.registers.stack_pointer += 2; + // To establish program counter, point it to a RET that + // I know is in the 16/48kb ROM. This avoids having to + // try to do a pop here, given that the true program counter + // might currently be in the ROM. + state->z80.registers.program_counter = 0x1d83; return result; }