apple2ix/src/meta/debug.h
2019-06-28 18:30:45 -07:00

67 lines
1.6 KiB
C

/*
* Apple // emulator for *ix
*
* This software package is subject to the GNU General Public License
* version 3 or later (your choice) as published by the Free Software
* Foundation.
*
* Copyright 1994 Alexander Jean-Claude Bottema
* Copyright 1995 Stephen Lee
* Copyright 1997, 1998 Aaron Culliney
* Copyright 1998, 1999, 2000 Michael Deutschmann
* Copyright 2013-2015 Aaron Culliney
*
*/
#ifndef _A2_DEBUG_H_
#define _A2_DEBUG_H_
#include "common.h"
extern bool is_debugging;
typedef enum {
addr_implied = 0,
addr_accumulator,
addr_immediate,
addr_zeropage,
addr_zeropage_x,
addr_zeropage_y,
addr_absolute,
addr_absolute_x,
addr_absolute_y,
addr_indirect,
addr_indirect_x,
addr_indirect_y,
addr_j_indirect, /* non-zeropage indirects, used in JMP only */
addr_j_indirect_x,
addr_relative,
NUM_ADDRESSING_MODES,
} addressing_mode_t;
typedef struct opcode_struct_s {
const char *mnemonic;
addressing_mode_t mode;
} opcode_struct_s;
extern const struct opcode_struct_s *opcodes;
extern const char* const disasm_templates[NUM_ADDRESSING_MODES];
#ifdef INTERFACE_CLASSIC
void c_interface_debugging(void);
#endif
bool debugger_shouldBreak(void) CALL_ON_CPU_THREAD;
#if TESTING
void debugger_setInputText(const char *text, const bool deterministically);
void debugger_setBreakCallback(bool(*cb)(void));
void debugger_go(void);
void debugger_setTimeout(const unsigned int secs);
bool debugger_setWatchpoint(const uint16_t addr);
void debugger_clearWatchpoints(void);
#endif
#endif // _A2_DEBUG_H_