annotate debug.h @ 2723:4f88822e6a5d default tip

Fix regression in CPU DSL implementation impacting new 68K core
author Michael Pavone <pavone@retrodev.com>
date Thu, 17 Jul 2025 07:38:33 -0700
parents 7dcc84cb14ee
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
524
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #ifndef DEBUG_H_
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 #define DEBUG_H_
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 #include <stdint.h>
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
5 #include "tern.h"
1752
d6d4c006a7b3 Initial attempt at interrupts in new Z80 core and integrating it into main executable
Michael Pavone <pavone@retrodev.com>
parents: 1329
diff changeset
6 #ifdef NEW_CORE
2499
d74d3998482c Make some progress on compiling full emulator with new 68K core
Michael Pavone <pavone@retrodev.com>
parents: 2396
diff changeset
7 #include "m68k.h"
1752
d6d4c006a7b3 Initial attempt at interrupts in new Z80 core and integrating it into main executable
Michael Pavone <pavone@retrodev.com>
parents: 1329
diff changeset
8 #include "z80.h"
d6d4c006a7b3 Initial attempt at interrupts in new Z80 core and integrating it into main executable
Michael Pavone <pavone@retrodev.com>
parents: 1329
diff changeset
9 #else
2499
d74d3998482c Make some progress on compiling full emulator with new 68K core
Michael Pavone <pavone@retrodev.com>
parents: 2396
diff changeset
10 #include "m68k_core.h"
1129
6b5c92b6205c Enabled Z80 debugger in PBC mode
Michael Pavone <pavone@retrodev.com>
parents: 829
diff changeset
11 #include "z80_to_x86.h"
1752
d6d4c006a7b3 Initial attempt at interrupts in new Z80 core and integrating it into main executable
Michael Pavone <pavone@retrodev.com>
parents: 1329
diff changeset
12 #endif
2720
7dcc84cb14ee Get uPD78K/II partially hooked up in debugger
Michael Pavone <pavone@retrodev.com>
parents: 2676
diff changeset
13 #include "upd78k2.h"
2214
7591c67b8d1e Support for loading symbols in debugger for use during name resolution and disassembly
Michael Pavone <pavone@retrodev.com>
parents: 2193
diff changeset
14 #include "disasm.h"
524
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
16 typedef enum {
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
17 TOKEN_NONE,
2363
b865f33fd47e Basic float support in debug language
Michael Pavone <pavone@retrodev.com>
parents: 2362
diff changeset
18 TOKEN_INT,
b865f33fd47e Basic float support in debug language
Michael Pavone <pavone@retrodev.com>
parents: 2362
diff changeset
19 TOKEN_DECIMAL,
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
20 TOKEN_NAME,
2359
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
21 TOKEN_ARRAY,
2364
c822bb628fc3 Add support for function call expressions in debug parser
Michael Pavone <pavone@retrodev.com>
parents: 2363
diff changeset
22 TOKEN_FUNCALL,
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
23 TOKEN_OPER,
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
24 TOKEN_SIZE,
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
25 TOKEN_LBRACKET,
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
26 TOKEN_RBRACKET,
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
27 TOKEN_LPAREN,
2395
ebca8ab02701 Basic string support in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2393
diff changeset
28 TOKEN_RPAREN,
ebca8ab02701 Basic string support in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2393
diff changeset
29 TOKEN_STRING
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
30 } token_type;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
31
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
32 typedef struct {
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
33 token_type type;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
34 union {
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
35 char *str;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
36 char op[3];
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
37 uint32_t num;
2363
b865f33fd47e Basic float support in debug language
Michael Pavone <pavone@retrodev.com>
parents: 2362
diff changeset
38 float f;
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
39 } v;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
40 } token;
524
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
42 typedef enum {
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
43 EXPR_NONE,
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
44 EXPR_SCALAR,
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
45 EXPR_UNARY,
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
46 EXPR_BINARY,
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
47 EXPR_SIZE,
2362
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
48 EXPR_MEM,
2364
c822bb628fc3 Add support for function call expressions in debug parser
Michael Pavone <pavone@retrodev.com>
parents: 2363
diff changeset
49 EXPR_NAMESPACE,
c822bb628fc3 Add support for function call expressions in debug parser
Michael Pavone <pavone@retrodev.com>
parents: 2363
diff changeset
50 EXPR_FUNCALL
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
51 } expr_type;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
52
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
53 typedef struct expr expr;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
54
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
55 struct expr {
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
56 expr_type type;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
57 expr *left;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
58 expr *right;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
59 token op;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
60 };
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
61
2362
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
62 enum {
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
63 DBG_VAL_U32,
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
64 DBG_VAL_F32,
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
65 DBG_VAL_ARRAY,
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
66 DBG_VAL_STRING,
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
67 DBG_VAL_FUNC
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
68 };
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
69
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
70 typedef struct {
2362
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
71 union {
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
72 uint32_t u32;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
73 float f32;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
74 } v;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
75 uint32_t type;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
76 } debug_val;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
77
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
78 typedef struct {
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
79 char *raw;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
80 expr *parsed;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
81 debug_val value;
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
82 } command_arg;
524
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
83
2175
8c28c5466d70 Minor cleanup of debugger changes
Michael Pavone <pavone@retrodev.com>
parents: 2107
diff changeset
84 typedef struct debug_root debug_root;
2188
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
85 typedef struct parsed_command parsed_command;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
86 typedef uint8_t (*cmd_fun)(debug_root *root, parsed_command *cmd);
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
87
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
88 typedef struct {
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
89 const char **names;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
90 const char *usage;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
91 const char *desc;
2188
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
92 cmd_fun impl;
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
93 int min_args;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
94 int max_args;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
95 uint8_t skip_eval;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
96 uint8_t visited;
2188
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
97 uint8_t has_block;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
98 uint8_t accepts_else;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
99 uint8_t raw_args;
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
100 } command_def;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
101
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
102 typedef struct disp_def {
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
103 struct disp_def *next;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
104 char *format;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
105 int num_args;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
106 command_arg *args;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
107 uint32_t index;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
108 } disp_def;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
109
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
110 typedef struct {
2188
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
111 parsed_command *commands;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
112 int num_commands;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
113 } command_block;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
114
2665
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
115 typedef debug_val (*debug_native_func)(debug_val *args, int num_args);
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
116 typedef struct {
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
117 union {
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
118 debug_native_func native;
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
119 command_block block;
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
120 } impl;
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
121 char **arg_names;
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
122 int max_args;
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
123 int min_args;
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
124 uint8_t is_native;
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
125 } debug_func;
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
126
2188
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
127 struct parsed_command {
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
128 command_def *def;
2665
54ac5fe14cf9 Allow calling functions directly as if they were commands
Michael Pavone <pavone@retrodev.com>
parents: 2499
diff changeset
129 uint32_t func;
2188
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
130 char *format;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
131 char *raw;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
132 command_arg *args;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
133 int num_args;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
134 command_block block;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
135 command_block else_block;
e17d99c96c89 Make blocks an explicitly supported concept in the debugger rather than a one-off for the commands command
Michael Pavone <pavone@retrodev.com>
parents: 2182
diff changeset
136 };
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
137
2361
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
138 enum {
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
139 BP_TYPE_CPU,
2396
bf4f1a8d1d48 Implement 68K watchpoints in internal debugger
Michael Pavone <pavone@retrodev.com>
parents: 2395
diff changeset
140 BP_TYPE_CPU_WATCH,
2361
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
141 BP_TYPE_VDPREG,
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
142 BP_TYPE_VDPDMA,
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
143 BP_TYPE_VDPDATA
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
144 };
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
145
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
146 typedef struct bp_def {
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
147 struct bp_def *next;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
148 parsed_command *commands;
2182
2d7f8195be3b Add support for conditional breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2178
diff changeset
149 expr *condition;
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
150 uint32_t num_commands;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
151 uint32_t address;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
152 uint32_t index;
2361
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
153 uint32_t mask;
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
154 uint8_t type;
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
155 } bp_def;
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
156
2359
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
157 typedef struct debug_array debug_array;
2362
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
158 typedef debug_val (*debug_array_get)(debug_array *array, uint32_t index);
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
159 typedef void (*debug_array_set)(debug_array *array, uint32_t index, debug_val value);
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
160 typedef void (*debug_array_append)(debug_array *array, debug_val value);
2359
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
161
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
162 struct debug_array{
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
163 debug_array_get get;
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
164 debug_array_set set;
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
165 debug_array_append append;
2362
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
166 void *base;
2359
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
167 uint32_t size;
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
168 uint32_t storage;
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
169 };
04d29635d238 Support for arrays in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2358
diff changeset
170
2395
ebca8ab02701 Basic string support in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2393
diff changeset
171 typedef struct {
ebca8ab02701 Basic string support in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2393
diff changeset
172 char *buffer;
ebca8ab02701 Basic string support in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2393
diff changeset
173 uint32_t size;
ebca8ab02701 Basic string support in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2393
diff changeset
174 uint32_t storage;
ebca8ab02701 Basic string support in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2393
diff changeset
175 } debug_string;
ebca8ab02701 Basic string support in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2393
diff changeset
176
2362
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
177 typedef struct debug_var debug_var;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
178 typedef debug_val (*debug_var_get)(debug_var *var);
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
179 typedef void (*debug_var_set)(debug_var *var, debug_val val);
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
180
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
181 struct debug_var {
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
182 debug_var_get get;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
183 debug_var_set set;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
184 void *ptr;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
185 debug_val val;
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
186 };
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
187
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
188 typedef debug_var *(*resolver)(debug_root *root, const char *name);
2175
8c28c5466d70 Minor cleanup of debugger changes
Michael Pavone <pavone@retrodev.com>
parents: 2107
diff changeset
189 typedef uint8_t (*reader)(debug_root *root, uint32_t *out, char size);
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
190 typedef uint8_t (*writer)(debug_root *root, uint32_t address, uint32_t value, char size);
2393
5f4917b9ecfa Add debugger save command
Michael Pavone <pavone@retrodev.com>
parents: 2371
diff changeset
191 typedef uint32_t (*find_chunk_end)(debug_root *root, uint32_t start_address);
2175
8c28c5466d70 Minor cleanup of debugger changes
Michael Pavone <pavone@retrodev.com>
parents: 2107
diff changeset
192
8c28c5466d70 Minor cleanup of debugger changes
Michael Pavone <pavone@retrodev.com>
parents: 2107
diff changeset
193 struct debug_root {
2193
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
194 void *cpu_context;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
195 bp_def *breakpoints;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
196 disp_def *displays;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
197 tern_node *commands;
2362
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
198 tern_node *variables;
2214
7591c67b8d1e Support for loading symbols in debugger for use during name resolution and disassembly
Michael Pavone <pavone@retrodev.com>
parents: 2193
diff changeset
199 tern_node *symbols;
2362
b6c5a0fa3dfc Refactor debugger a bit. Allow types other than integers to be passed in expressions and stored in arrays. Better namespace support
Michael Pavone <pavone@retrodev.com>
parents: 2361
diff changeset
200 tern_node *other_roots;
2214
7591c67b8d1e Support for loading symbols in debugger for use during name resolution and disassembly
Michael Pavone <pavone@retrodev.com>
parents: 2193
diff changeset
201 disasm_context *disasm;
2193
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
202 reader read_mem;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
203 writer write_mem;
2393
5f4917b9ecfa Add debugger save command
Michael Pavone <pavone@retrodev.com>
parents: 2371
diff changeset
204 find_chunk_end chunk_end;
2193
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
205 parsed_command last_cmd;
2371
1fe5afe263f3 Initial stab at user-defined functions in debugger language
Michael Pavone <pavone@retrodev.com>
parents: 2365
diff changeset
206 debug_val retval;
2193
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
207 uint32_t bp_index;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
208 uint32_t disp_index;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
209 uint32_t branch_t;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
210 uint32_t branch_f;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
211 void *inst;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
212 uint32_t address;
d00fb9c6a6a2 Fix a couple of debugger regressions introduced with changes to support blocks
Michael Pavone <pavone@retrodev.com>
parents: 2188
diff changeset
213 uint32_t after;
2175
8c28c5466d70 Minor cleanup of debugger changes
Michael Pavone <pavone@retrodev.com>
parents: 2107
diff changeset
214 };
2107
f80c6111e1ae Move some debugger state to a per-CPU structure. Add m command for returning to main CPU from sub CPU
Michael Pavone <pavone@retrodev.com>
parents: 1921
diff changeset
215
f80c6111e1ae Move some debugger state to a per-CPU structure. Add m command for returning to main CPU from sub CPU
Michael Pavone <pavone@retrodev.com>
parents: 1921
diff changeset
216 debug_root *find_root(void *cpu);
2178
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
217 debug_root *find_m68k_root(m68k_context *context);
f6d5bde4d07f Finish debugger refactor started with expression parser changes
Michael Pavone <pavone@retrodev.com>
parents: 2175
diff changeset
218 debug_root *find_z80_root(z80_context *context);
2720
7dcc84cb14ee Get uPD78K/II partially hooked up in debugger
Michael Pavone <pavone@retrodev.com>
parents: 2676
diff changeset
219 debug_root *find_upd_root(upd78k2_context *upd);
2361
3350b3c8faa8 Initial implementation of VDP register write breakpoints
Michael Pavone <pavone@retrodev.com>
parents: 2359
diff changeset
220 bp_def ** find_breakpoint(bp_def ** cur, uint32_t address, uint8_t type);
524
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
221 bp_def ** find_breakpoint_idx(bp_def ** cur, uint32_t index);
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
222 void add_display(disp_def ** head, uint32_t *index, char format_char, char * param);
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
223 void remove_display(disp_def ** head, uint32_t index);
2676
7e86ec94c899 Implement breakpoints in new 68K core
Michael Pavone <pavone@retrodev.com>
parents: 2665
diff changeset
224 void debugger(void * vcontext, uint32_t address);
1129
6b5c92b6205c Enabled Z80 debugger in PBC mode
Michael Pavone <pavone@retrodev.com>
parents: 829
diff changeset
225 z80_context * zdebugger(z80_context * context, uint16_t address);
2720
7dcc84cb14ee Get uPD78K/II partially hooked up in debugger
Michael Pavone <pavone@retrodev.com>
parents: 2676
diff changeset
226 void upd_debugger(upd78k2_context *upd);
1921
5d028088e320 Added help commands to debugger
Eric Fry <yuv422@users.noreply.github.com>
parents: 1752
diff changeset
227 void print_m68k_help();
5d028088e320 Added help commands to debugger
Eric Fry <yuv422@users.noreply.github.com>
parents: 1752
diff changeset
228 void print_z80_help();
524
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
229
fb39534b6604 Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
230 #endif //DEBUG_H_