|
|
1.1 root 1: //
2: // nono
1.1.1.2 root 3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
1.1 root 5: //
6:
1.1.1.6 root 7: //
8: // デバッガ (M680x0 依存部分)
9: //
10:
1.1 root 11: #pragma once
12:
13: #include "debugger_private.h"
1.1.1.2 root 14: #include "mpu680x0.h"
1.1 root 15: #include "m68030disasm.h"
16:
17: class DebuggerMD_m680x0 : public DebuggerMD
18: {
1.1.1.2 root 19: using inherited = DebuggerMD;
1.1 root 20: public:
1.1.1.9 ! root 21: explicit DebuggerMD_m680x0(Debugger *parent);
1.1.1.2 root 22: ~DebuggerMD_m680x0() override;
23:
1.1.1.7 root 24: CPUState GetCPUState() const override { return (CPUState)cpu->GetState(); }
25: bool IsSuper() const override { return cpu->IsSuper(); }
1.1.1.2 root 26: bool MMUEnabled() const override { return cpu->mmu_enable; }
1.1.1.8 root 27: busaddr TranslateAddr(busaddr laddr) const override;
1.1.1.2 root 28:
1.1.1.7 root 29: uint32 GetPC() const override { return cpu->reg.pc; }
1.1.1.2 root 30:
31: void SetStepOut() override;
32: bool IsStepOut() const override;
1.1.1.5 root 33: bool IsOpStepIn(DebuggerMemoryStream& mem) override;
1.1.1.2 root 34: uint64 GetRegAddr(const char *name) const override;
35: void BackupRegs() override { prev = cpu->reg; }
1.1.1.6 root 36: bool ShowRegister(FILE *, const std::vector<std::string>& args) override;
1.1.1.5 root 37: const HelpMessages& GetHelpListReg() const override;
38: const HelpMessages& GetHelpReg() const override;
1.1 root 39:
1.1.1.2 root 40: bool CheckLEA(uint32 laddr) override { return false; }
1.1 root 41:
1.1.1.7 root 42: std::string Disassemble(DebuggerMemoryStream& mem) override;
1.1 root 43:
44: private:
1.1.1.7 root 45: MPU680x0Device *cpu {}; // MPU デバイス
1.1.1.4 root 46: m68kreg prev {}; // 前回のレジスタセットのコピー
1.1 root 47:
48: const char *CondStr(const std::vector<uint16>& ir);
49: bool IsOPcc(uint16 op);
50: bool IsDBcc(uint16 op);
51: bool IsCond(uint16 op);
52:
1.1.1.5 root 53: static const HelpMessages HelpListReg;
54: static const HelpMessages HelpReg;
1.1.1.6 root 55: void ShowRegMain(FILE *);
56: void ShowRegFPU(FILE *);
57: void ShowRegMMU(FILE *);
58: void ShowRegATC();
59: void ShowRegOther();
1.1.1.2 root 60:
1.1.1.4 root 61: uint32 so_a7 {}; // ステップアウト判定用
62: uint16 so_sr {};
1.1 root 63: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.