mirror of
https://github.com/trudnai/Steve2.git
synced 2025-04-09 04:37:06 +00:00
Turn debugging on and off based on debugger window active status
This commit is contained in:
parent
82deef06aa
commit
4ae8bfe658
@ -31,6 +31,7 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
|
||||
required init?(coder: NSCoder) {
|
||||
super.init(coder: coder)
|
||||
DebuggerWindowController.shared = self
|
||||
m6502_dbg_init()
|
||||
}
|
||||
|
||||
|
||||
@ -39,8 +40,6 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
|
||||
if isWindowFullscreen {
|
||||
window?.toggleFullScreen(self)
|
||||
}
|
||||
|
||||
m6502_dbg_init()
|
||||
}
|
||||
|
||||
|
||||
@ -57,6 +56,7 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
|
||||
}
|
||||
|
||||
func windowWillClose(_ notification: Notification) {
|
||||
m6502_dbg_off()
|
||||
DebuggerWindowController.shared = nil
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
#include <time.h>
|
||||
#include "6502.h"
|
||||
#include "6502_bp.h"
|
||||
#include "6502_debugger.h"
|
||||
#include "speaker.h"
|
||||
|
||||
|
||||
@ -112,16 +113,11 @@ m6502_t m6502 = {
|
||||
|
||||
0, // lastIO
|
||||
0, // ecoSpindown
|
||||
|
||||
0, // trace
|
||||
0, // step
|
||||
0, // brk
|
||||
0, // rts
|
||||
0, // bra
|
||||
0, // bra_true
|
||||
0, // bra_false
|
||||
0, // compile
|
||||
|
||||
|
||||
0, // debugger.on
|
||||
0xFF, // debugger.SP
|
||||
0, // debugger.wMask
|
||||
|
||||
HALT, // IF
|
||||
};
|
||||
|
||||
@ -423,10 +419,7 @@ void m6502_Debug(void) {
|
||||
m6502.lastIO = 0;
|
||||
m6502.interrupt = NO_INT; // TODO: This should be taken care by the interrupt handler
|
||||
|
||||
m6502.debugger.on = 1;
|
||||
m6502.debugger.mask.hlt = 1;
|
||||
m6502.debugger.mask.brk = 1;
|
||||
m6502.debugger.mask.inv = 1;
|
||||
m6502_dbg_on();
|
||||
|
||||
if( diskAccelerator_count ) {
|
||||
if( --diskAccelerator_count <= 0 ) {
|
||||
@ -443,7 +436,7 @@ void m6502_Debug(void) {
|
||||
case HALT:
|
||||
if (m6502.debugger.mask.hlt) {
|
||||
cpuState = cpuState_halted;
|
||||
m6502.debugger.wMask = 0;
|
||||
// m6502.debugger.wMask = 0;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@ -451,7 +444,7 @@ void m6502_Debug(void) {
|
||||
case BREAK:
|
||||
if (m6502.debugger.mask.brk) {
|
||||
cpuState = cpuState_halted;
|
||||
m6502.debugger.wMask = 0;
|
||||
// m6502.debugger.wMask = 0;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@ -459,7 +452,7 @@ void m6502_Debug(void) {
|
||||
case IRQ:
|
||||
if (m6502.debugger.mask.irq) {
|
||||
cpuState = cpuState_halted;
|
||||
m6502.debugger.wMask = 0;
|
||||
// m6502.debugger.wMask = 0;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@ -467,7 +460,7 @@ void m6502_Debug(void) {
|
||||
case NMI:
|
||||
if (m6502.debugger.mask.nmi) {
|
||||
cpuState = cpuState_halted;
|
||||
m6502.debugger.wMask = 0;
|
||||
// m6502.debugger.wMask = 0;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@ -475,7 +468,7 @@ void m6502_Debug(void) {
|
||||
case INV:
|
||||
if (m6502.debugger.mask.inv) {
|
||||
cpuState = cpuState_halted;
|
||||
m6502.debugger.wMask = 0;
|
||||
// m6502.debugger.wMask = 0;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@ -485,7 +478,7 @@ void m6502_Debug(void) {
|
||||
if (m6502.debugger.mask.out) {
|
||||
if ( m6502.SP >= m6502.debugger.SP ) {
|
||||
cpuState = cpuState_halted;
|
||||
m6502.debugger.wMask = 0;
|
||||
// m6502.debugger.wMask = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -512,8 +505,8 @@ void m6502_Debug(void) {
|
||||
|
||||
if ( m6502_dbg_bp_is_exists(m6502.PC) ) {
|
||||
cpuState = cpuState_halted;
|
||||
m6502.debugger.wMask = 0;
|
||||
m6502.debugger.on = 0;
|
||||
// m6502.debugger.wMask = 0;
|
||||
// m6502.debugger.on = 0;
|
||||
m6502.interrupt = BREAKPOINT;
|
||||
return;
|
||||
}
|
||||
|
@ -30,6 +30,7 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "6502.h"
|
||||
#include "6502_bp.h"
|
||||
|
||||
/// Array of addresses of active breakpoints
|
||||
@ -239,9 +240,3 @@ void m6502_dbg_bp_del_all(void) {
|
||||
}
|
||||
|
||||
|
||||
/// Initialize Breakpoints
|
||||
void m6502_dbg_init(void) {
|
||||
m6502_dbg_bp_del_all();
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,7 +15,6 @@
|
||||
extern uint16_t breakpoints[DEBUG_MAX_BREAKPOINTS];
|
||||
extern int bp_last_idx;
|
||||
|
||||
extern void m6502_dbg_init(void);
|
||||
extern int m6502_dbg_bp_add(uint16_t addr);
|
||||
extern void m6502_dbg_bp_del(uint16_t addr);
|
||||
extern void m6502_dbg_bp_del_all(void);
|
||||
|
@ -76,6 +76,7 @@ typedef struct {
|
||||
|
||||
#include "6502_debugger.h"
|
||||
#include "6502_instructions.h"
|
||||
#include "6502_bp.h"
|
||||
|
||||
INLINE int m6502_Disass_1_Instr(void) {
|
||||
|
||||
@ -94,4 +95,27 @@ INLINE int m6502_Disass_1_Instr(void) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/// Turn On Debugger
|
||||
void m6502_dbg_on(void) {
|
||||
m6502.debugger.on = 1;
|
||||
}
|
||||
|
||||
|
||||
/// Turn Off Debugger
|
||||
void m6502_dbg_off(void) {
|
||||
m6502.debugger.on = 0;
|
||||
}
|
||||
|
||||
|
||||
/// Initialize Breakpoints
|
||||
void m6502_dbg_init(void) {
|
||||
m6502_dbg_on();
|
||||
m6502.debugger.wMask = 0;
|
||||
m6502.debugger.mask.hlt = 1;
|
||||
m6502.debugger.mask.brk = 1;
|
||||
m6502.debugger.mask.inv = 1;
|
||||
m6502.debugger.SP = 0xFF;
|
||||
m6502_dbg_bp_del_all();
|
||||
}
|
||||
|
||||
|
||||
|
@ -12,6 +12,9 @@
|
||||
|
||||
extern uint16_t disass_addr;
|
||||
extern int m6502_Disass_1_Instr(void);
|
||||
extern void m6502_dbg_on(void);
|
||||
extern void m6502_dbg_off(void);
|
||||
extern void m6502_dbg_init(void);
|
||||
|
||||
|
||||
#endif /* _6502_debugger_h */
|
||||
|
Loading…
x
Reference in New Issue
Block a user