Skip to content

Commit 8b99bb5

Browse files
committed
added more messages
1 parent e2c346d commit 8b99bb5

File tree

4 files changed

+35
-30
lines changed

4 files changed

+35
-30
lines changed

emulator/src/Chipset/CPU.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,11 +335,11 @@ namespace casioemu {
335335

336336
uint16_t CPU::Fetch() {
337337
if (reg_csr.raw & ~impl_csr_mask) {
338-
logger::Info("warning: CSR masked bits set\n");
338+
logger::Info("warning: CSR masked bits set: %04zX\n", reg_csr.raw);
339339
reg_csr.raw &= impl_csr_mask;
340340
}
341341
if (reg_pc.raw & 1) {
342-
logger::Info("warning: PC LSB set\n");
342+
logger::Info("warning: PC LSB set: %04zX\n", reg_pc.raw);
343343
reg_pc.raw &= ~1;
344344
}
345345
uint16_t opcode = emulator.chipset.mmu.ReadCode((reg_csr.raw << 16) | reg_pc.raw);
@@ -359,8 +359,10 @@ namespace casioemu {
359359
impl_opcode = Fetch();
360360
OpcodeSource *handler = opcode_dispatch[impl_opcode];
361361

362-
if (!handler)
362+
if (!handler) {
363363
logger::Info("unrecognized instruction %04X at %06zX\n", impl_opcode, (((size_t)reg_csr.raw) << 16) | (reg_pc.raw - 2));
364+
continue;
365+
}
364366

365367
impl_long_imm = 0;
366368
if (handler->hint & H_TI)

emulator/src/Chipset/MMU.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ namespace casioemu {
1010
const uint8_t UNMAPPED_VALUE = 0x00;
1111

1212
MMU::MMU(Emulator &_emulator) : emulator(_emulator) {
13-
segment_dispatch = new MemoryByte *[0x100];
14-
for (size_t ix = 0; ix != 0x100; ++ix)
13+
segment_dispatch = new MemoryByte *[0x10];
14+
for (size_t ix = 0; ix != 0x10; ++ix)
1515
segment_dispatch[ix] = nullptr;
1616
}
1717

1818
MMU::~MMU() {
19-
for (size_t ix = 0; ix != 0x100; ++ix)
19+
for (size_t ix = 0; ix != 0x10; ++ix)
2020
if (segment_dispatch[ix])
2121
delete[] segment_dispatch[ix];
2222
delete[] segment_dispatch;
@@ -146,14 +146,18 @@ namespace casioemu {
146146

147147
MemoryByte *segment = segment_dispatch[segment_index];
148148
if (!segment) {
149+
#ifdef PRINT_UNMAPPED_MSG
149150
logger::Info("code read from offset %04zX of unmapped segment %02zX\n", segment_offset, segment_index);
151+
#endif
150152
emulator.HandleMemoryError();
151153
return UNMAPPED_VALUE;
152154
}
153155

154156
MMURegion *region = segment[segment_offset].region;
155157
if (!region) {
158+
#ifdef PRINT_UNMAPPED_MSG
156159
logger::Info("code read from unmapped offset %04zX of segment %02zX\n", segment_offset, segment_index);
160+
#endif
157161
emulator.HandleMemoryError();
158162
return UNMAPPED_VALUE;
159163
}
@@ -170,7 +174,9 @@ namespace casioemu {
170174

171175
MemoryByte *segment = segment_dispatch[segment_index];
172176
if (!segment) {
177+
#ifdef PRINT_UNMAPPED_MSG
173178
logger::Info("read from offset %04zX of unmapped segment %02zX\n", segment_offset, segment_index);
179+
#endif
174180
emulator.HandleMemoryError();
175181
return UNMAPPED_VALUE;
176182
}
@@ -186,7 +192,9 @@ namespace casioemu {
186192
}
187193
}
188194
if (!region) {
195+
#ifdef PRINT_UNMAPPED_MSG
189196
logger::Info("read from unmapped offset %04zX of segment %02zX\n", segment_offset, segment_index);
197+
#endif
190198
emulator.HandleMemoryError();
191199
return UNMAPPED_VALUE;
192200
}
@@ -203,7 +211,9 @@ namespace casioemu {
203211

204212
MemoryByte *segment = segment_dispatch[segment_index];
205213
if (!segment) {
214+
#ifdef PRINT_UNMAPPED_MSG
206215
logger::Info("write to offset %04zX of unmapped segment %02zX (%02zX)\n", segment_offset, segment_index, data);
216+
#endif
207217
emulator.HandleMemoryError();
208218
return;
209219
}
@@ -219,7 +229,9 @@ namespace casioemu {
219229
}
220230
}
221231
if (!region) {
232+
#ifdef PRINT_UNMAPPED_MSG
222233
logger::Info("write to unmapped offset %04zX of segment %02zX (%02zX)\n", segment_offset, segment_index, data);
234+
#endif
223235
emulator.HandleMemoryError();
224236
return;
225237
}

emulator/src/Gui/CodeViewer.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,8 @@ casioemu::Emulator *m_emu = nullptr;
2121
CodeViewer::CodeViewer(std::string path) {
2222
src_path = path;
2323
std::ifstream f(src_path, std::ios::in);
24-
if (!f.is_open()) {
25-
casioemu::logger::Info("Fail to open disassembly, so code viewer won't be loaded: %s\n", src_path.c_str());
26-
}
24+
if (!f.is_open())
25+
PANIC("\nFail to open disassembly code src: %s\n", src_path.c_str());
2726
casioemu::logger::Info("Start to load disassembly ...\n");
2827
char buf[200], adr[6];
2928
while (!f.eof()) {

emulator/src/Peripheral/ROMWindow.cpp

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,23 @@ namespace casioemu {
1313
if (rom_base + size > emulator.chipset.rom_data.size())
1414
PANIC("Invalid ROM region: base %zx, size %zx\n", rom_base, size);
1515
uint8_t *data = emulator.chipset.rom_data.data();
16-
auto offset = (ssize_t)rom_base - (ssize_t)region_base;
1716
if (description.empty())
1817
description = "ROM/Segment" + std::to_string(region_base >> 16);
1918

20-
MMURegion::WriteFunction write_function =
21-
strict_memory
22-
? [](MMURegion *region, size_t address, uint8_t data) {
23-
logger::Info("ROM::[region write lambda]: attempt to write %02hhX to %06zX\n", data, address);
24-
region->emulator->HandleMemoryError();
25-
}
26-
: [](MMURegion *, size_t, uint8_t) {
27-
};
19+
MMURegion::WriteFunction write_function = [](MMURegion *, size_t, uint8_t) {};
20+
if (strict_memory)
21+
write_function = [](MMURegion *region, size_t address, uint8_t data) {
22+
logger::Info("ROM::[region write lambda]: attempt to write %02hhX to %06zX\n", data, address);
23+
region->emulator->HandleMemoryError();
24+
};
2825

29-
if (offset >= 0)
30-
region.Setup(
31-
region_base, size, description, data + offset, [](MMURegion *region, size_t address) {
32-
return ((uint8_t *)(region->userdata))[address];
33-
},
34-
write_function, emulator);
35-
else
36-
region.Setup(
37-
region_base, size, description, data + rom_base, [](MMURegion *region, size_t address) {
38-
return ((uint8_t *)(region->userdata))[address - region->base];
39-
},
40-
write_function, emulator);
26+
region.Setup(
27+
region_base, size, description, data + rom_base,
28+
[](MMURegion *region, size_t address) {
29+
return ((uint8_t *)(region->userdata))[address - region->base];
30+
},
31+
write_function,
32+
emulator);
4133
}
4234

4335
void ROMWindow::Initialise() {

0 commit comments

Comments
 (0)