Skip to content

Commit e4c865f

Browse files
committed
ui
1 parent 896f2f2 commit e4c865f

File tree

2 files changed

+13
-20
lines changed

2 files changed

+13
-20
lines changed

emulator/src/Chipset/CPU.cpp

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -386,19 +386,20 @@ namespace casioemu {
386386
*/
387387
impl_flags_out = PSW_Z;
388388
(this->*(handler->handler_function))();
389+
reg_psw &= ~impl_flags_changed;
390+
reg_psw |= impl_flags_out & impl_flags_changed;
391+
392+
if (handler->hint & H_WB && impl_operands[0].register_size)
393+
for (size_t bx = 0; bx != impl_operands[0].register_size; ++bx)
394+
reg_r[impl_operands[0].register_index + bx] = (uint8_t)(impl_operands[0].value >> (bx * 8));
395+
389396
if (code_viewer) {
390397
if ((code_viewer->debug_flags & DEBUG_BREAKPOINT) && code_viewer->TryTrigBP(reg_csr, reg_pc)) {
391398
emulator.SetPaused(true);
392399
} else if ((code_viewer->debug_flags & DEBUG_STEP) && code_viewer->TryTrigBP(reg_csr, reg_pc, false)) {
393400
emulator.SetPaused(true);
394401
}
395402
}
396-
reg_psw &= ~impl_flags_changed;
397-
reg_psw |= impl_flags_out & impl_flags_changed;
398-
399-
if (handler->hint & H_WB && impl_operands[0].register_size)
400-
for (size_t bx = 0; bx != impl_operands[0].register_size; ++bx)
401-
reg_r[impl_operands[0].register_index + bx] = (uint8_t)(impl_operands[0].value >> (bx * 8));
402403

403404
if (!(handler->hint & H_DS))
404405
break;
@@ -441,14 +442,11 @@ namespace casioemu {
441442
output << std::hex << std::setfill('0') << std::uppercase;
442443
for (StackFrame frame : stack) {
443444
output << " function "
444-
<< frame.new_csr << ":" << frame.new_pc
445-
<< " returns to " << std::setw(6);
445+
<< frame.new_csr << ":" << frame.new_pc << " returns to ";
446446
if (frame.lr_pushed) {
447447
uint16_t saved_lr, saved_lcsr = 0;
448448
MMU &mmu = emulator.chipset.mmu;
449-
saved_lr = ((uint16_t)mmu.ReadData(frame.lr_push_address + 1))
450-
<< 8 |
451-
mmu.ReadData(frame.lr_push_address);
449+
saved_lr = ((uint16_t)mmu.ReadData(frame.lr_push_address + 1)) << 8 | mmu.ReadData(frame.lr_push_address);
452450
if (memory_model == MM_LARGE)
453451
saved_lcsr = mmu.ReadData(frame.lr_push_address + 2);
454452
output << saved_lcsr << ":" << saved_lr;

emulator/src/Gui/CodeViewer.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ CodeElem CodeViewer::LookUp(uint8_t seg, uint16_t offset, int *idx) {
7979
}
8080

8181
/**
82-
* called after an instruction is done (in CPU.cpp) or
83-
* a POP PC is executed (in CPUPushPop.cpp)
82+
* called before the instruction is executed (for breakpoints/step, in CPU.cpp) or
83+
* right after a POP PC is executed (for RET TRACE, in CPUPushPop.cpp)
8484
*/
8585
bool CodeViewer::TryTrigBP(uint8_t seg, uint16_t offset, bool bp_mode) {
8686
for (auto it = break_points.begin(); it != break_points.end(); it++) {
@@ -136,7 +136,7 @@ void CodeViewer::DrawContent() {
136136
ImGui::Text("%s", e.srcbuf);
137137
if (ImGui::IsItemHovered() && ImGui::IsMouseClicked(0)) {
138138
cur_row = line_i;
139-
need_roll = true;
139+
selected_addr = codes[cur_row].segment * 0x10000 + codes[cur_row].offset;
140140
}
141141
} else { // selected
142142
ImGui::InputText("##data", e.srcbuf, strlen(e.srcbuf), ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_AlwaysOverwrite);
@@ -152,18 +152,15 @@ void CodeViewer::DrawContent() {
152152
cur_row = 0;
153153
need_roll = true;
154154
}
155-
if (!ImGui::IsItemActive()) {
156-
selected_addr = -1;
157-
}
158155
}
159156
}
160157
}
161158
}
162159
if (need_roll) {
163160
float v = (float)cur_row / max_row * ImGui::GetScrollMaxY();
164161
ImGui::SetScrollY(v);
165-
need_roll = false;
166162
selected_addr = codes[cur_row].segment * 0x10000 + codes[cur_row].offset;
163+
need_roll = false;
167164
}
168165
}
169166

@@ -228,9 +225,7 @@ void CodeViewer::DrawWindow() {
228225
}
229226
}
230227

231-
ImGui::BeginChild("##scrolling");
232228
DrawMonitor();
233-
ImGui::EndChild();
234229
ImGui::End();
235230
debug_flags = DEBUG_BREAKPOINT | (step_debug ? DEBUG_STEP : 0) | (trace_debug ? DEBUG_RET_TRACE : 0);
236231
}

0 commit comments

Comments
 (0)