aboutsummaryrefslogtreecommitdiffstats
path: root/src/debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug.c')
-rw-r--r--src/debug.c206
1 files changed, 206 insertions, 0 deletions
diff --git a/src/debug.c b/src/debug.c
new file mode 100644
index 0000000..fe3077f
--- /dev/null
+++ b/src/debug.c
@@ -0,0 +1,206 @@
1typedef enum DebugFlags {
2 SHOW_ROM = (1 << 0),
3 SHOW_WST = (1 << 1),
4 SHOW_RST = (1 << 2),
5 SHOW_ZP = (1 << 3),
6 SHOW_DEV1 = (1 << 4),
7 SHOW_DEV2 = (1 << 6),
8} DebugFlags;
9
10void
11print_debug_info(u8 flags) {
12 txt_position(0, 0);
13 if (flags & SHOW_ROM) {
14 txt_printf("\nROM");
15 for (size_t i = 0; i < 128; i++) {
16 if (i % 8 == 0) {
17 txt_printf("\n");
18 }
19 if (i % 2 == 0) {
20 txt_printf(" ");
21 }
22 txt_printf("%02x", uxn_ram[i + PAGE_PROGRAM]);
23 }
24 txt_printf("\n");
25 }
26 if (flags & SHOW_DEV1) {
27 txt_printf("\nSYSTEM");
28 for (size_t i = 0; i < (0 + 16); i++) {
29 if (i % 8 == 0) {
30 txt_printf("\n");
31 }
32 txt_printf(" ");
33 txt_printf("%02x", device_data[i]);
34 }
35 txt_printf("\nCONSOLE");
36 for (size_t i = 0x10; i < (0x10 + 16); i++) {
37 if (i % 8 == 0) {
38 txt_printf("\n");
39 }
40 txt_printf(" ");
41 txt_printf("%02x", device_data[i]);
42 }
43 txt_printf("\nSCREEN");
44 for (size_t i = 0x20; i < (0x20 + 16); i++) {
45 if (i % 8 == 0) {
46 txt_printf("\n");
47 }
48 txt_printf(" ");
49 txt_printf("%02x", device_data[i]);
50 }
51 txt_printf("\nCONTROLLER");
52 for (size_t i = 0x80; i < (0x80 + 16); i++) {
53 if (i % 8 == 0) {
54 txt_printf("\n");
55 }
56 txt_printf(" ");
57 txt_printf("%02x", device_data[i]);
58 }
59 txt_printf("\nMOUSE");
60 for (size_t i = 0x90; i < (0x90 + 16); i++) {
61 if (i % 8 == 0) {
62 txt_printf("\n");
63 }
64 txt_printf(" ");
65 txt_printf("%02x", device_data[i]);
66 }
67 txt_printf("\nDATETIME");
68 for (size_t i = 0xc0; i < (0xc0 + 16); i++) {
69 if (i % 8 == 0) {
70 txt_printf("\n");
71 }
72 txt_printf(" ");
73 txt_printf("%02x", device_data[i]);
74 }
75 }
76 if (flags & SHOW_DEV2) {
77 txt_printf("\nAUDIO 1");
78 for (size_t i = 0x30; i < (0x30 + 16); i++) {
79 if (i % 8 == 0) {
80 txt_printf("\n");
81 }
82 txt_printf(" ");
83 txt_printf("%02x", device_data[i]);
84 }
85 txt_printf("\nAUDIO 2");
86 for (size_t i = 0x40; i < (0x40 + 16); i++) {
87 if (i % 8 == 0) {
88 txt_printf("\n");
89 }
90 txt_printf(" ");
91 txt_printf("%02x", device_data[i]);
92 }
93 txt_printf("\nAUDIO 3");
94 for (size_t i = 0x50; i < (0x50 + 16); i++) {
95 if (i % 8 == 0) {
96 txt_printf("\n");
97 }
98 txt_printf(" ");
99 txt_printf("%02x", device_data[i]);
100 }
101 txt_printf("\nAUDIO 4");
102 for (size_t i = 0x60; i < (0x60 + 16); i++) {
103 if (i % 8 == 0) {
104 txt_printf("\n");
105 }
106 txt_printf(" ");
107 txt_printf("%02x", device_data[i]);
108 }
109 txt_printf("\nFILE 1");
110 for (size_t i = 0xa0; i < (0xa0 + 16); i++) {
111 if (i % 8 == 0) {
112 txt_printf("\n");
113 }
114 txt_printf(" ");
115 txt_printf("%02x", device_data[i]);
116 }
117 txt_printf("\nFILE 2");
118 for (size_t i = 0xb0; i < (0xb0 + 16); i++) {
119 if (i % 8 == 0) {
120 txt_printf("\n");
121 }
122 txt_printf(" ");
123 txt_printf("%02x", device_data[i]);
124 }
125 }
126 if (flags & SHOW_WST) {
127 txt_printf("\nWST (");
128 txt_printf("SIZE: %d)", wst_ptr - (uintptr_t)wst);
129 for (size_t i = 0; i < 128; i++) {
130 if (i % 8 == 0) {
131 txt_printf("\n");
132 }
133 if (i >= (wst_ptr - (uintptr_t)wst)) {
134 txt_printf("%02x ", 0);
135 } else {
136 txt_printf("%02x ", wst[i]);
137 }
138 }
139 }
140 if (flags & SHOW_RST) {
141 txt_printf("RST (");
142 txt_printf("SIZE: %d)", rst_ptr - (uintptr_t)rst);
143 for (size_t i = 0; i < 128; i++) {
144 if (i % 8 == 0) {
145 txt_printf("\n");
146 }
147 if (i >= (rst_ptr - (uintptr_t)rst)) {
148 txt_printf("%02x ", 0);
149 } else {
150 txt_printf("%02x ", rst[i]);
151 }
152 }
153 }
154 if (flags & SHOW_ZP) {
155 txt_printf("RAM (ZP)\n");
156 for (size_t i = 0; i < 128; i++) {
157 if (i % 8 == 0) {
158 txt_printf("\n");
159 }
160 txt_printf("%02x ", uxn_ram[i]);
161 }
162 }
163 if (flags == 0) {
164 txt_printf("\nRAM (ZP)");
165 for (size_t i = 0; i < 32; i++) {
166 if (i % 8 == 0) {
167 txt_printf("\n");
168 }
169 if (i % 2 == 0) {
170 txt_printf(" ");
171 }
172 txt_printf("%02x", uxn_ram[i]);
173 }
174 txt_printf("\nWST (");
175 txt_printf("SIZE: %d)", wst_ptr - (uintptr_t)wst);
176 for (size_t i = 0; i < 32; i++) {
177 if (i % 8 == 0) {
178 txt_printf("\n");
179 }
180 if (i % 2 == 0) {
181 txt_printf(" ");
182 }
183 if (i >= (wst_ptr - (uintptr_t)wst)) {
184 txt_printf("%02x", 0);
185 } else {
186 txt_printf("%02x", wst[i]);
187 }
188 }
189 txt_printf("\nRST (");
190 txt_printf("SIZE: %d)", rst_ptr - (uintptr_t)rst);
191 for (size_t i = 0; i < 32; i++) {
192 if (i % 8 == 0) {
193 txt_printf("\n");
194 }
195 if (i % 2 == 0) {
196 txt_printf(" ");
197 }
198 if (i >= (rst_ptr - (uintptr_t)rst)) {
199 txt_printf("%02x", 0);
200 } else {
201 txt_printf("%02x", rst[i]);
202 }
203 }
204 }
205}
206