diff --git a/cpu.cpp b/cpu.cpp index a77d173..8fdc6ac 100644 --- a/cpu.cpp +++ b/cpu.cpp @@ -584,12 +584,12 @@ bool cpu::double_operand_instructions(const uint16_t instr) const uint8_t dst_mode = (dst >> 3) & 7; const uint8_t dst_reg = dst & 7; - bool set_flags = true; - switch(operation) { case 0b001: { // MOV/MOVB Move Word/Byte gam_rc_t g_src = getGAM(src_mode, src_reg, word_mode, rm_cur); + bool set_flags = true; + if (word_mode == wm_byte && dst_mode == 0) setRegister(dst_reg, int8_t(g_src.value.value())); // int8_t: sign extension else { @@ -945,7 +945,6 @@ bool cpu::single_operand_instructions(const uint16_t instr) const uint8_t dst_mode = (dst >> 3) & 7; const uint8_t dst_reg = dst & 7; const word_mode_t word_mode = instr & 0x8000 ? wm_byte : wm_word; - bool set_flags = true; switch(opcode) { case 0b00000011: { // SWAB @@ -959,7 +958,7 @@ bool cpu::single_operand_instructions(const uint16_t instr) v = (v << 8) | (v >> 8); - set_flags = putGAM(g_dst, v); + bool set_flags = putGAM(g_dst, v); if (set_flags) { setPSW_flags_nzv(v, wm_byte); diff --git a/debugger.cpp b/debugger.cpp index cf59b1c..4455b48 100644 --- a/debugger.cpp +++ b/debugger.cpp @@ -236,20 +236,20 @@ std::optional select_disk_backend(console *const cnsl) void configure_disk(bus *const b, console *const cnsl) { // TODO tape - int ch = wait_for_key("1. RK05, 2. RL02, 9. abort", cnsl, { '1', '2', '3', '9' }); + int type_ch = wait_for_key("1. RK05, 2. RL02, 9. abort", cnsl, { '1', '2', '3', '9' }); bootloader_t bl = BL_NONE; disk_device *dd = nullptr; - if (ch == '1') { + if (type_ch == '1') { dd = b->getRK05(); bl = BL_RK05; } - else if (ch == '2') { + else if (type_ch == '2') { dd = b->getRL02(); bl = BL_RL02; } - else if (ch == '9') { + else if (type_ch == '9') { return; }