summaryrefslogtreecommitdiff
path: root/headers/debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'headers/debug.h')
-rw-r--r--headers/debug.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/headers/debug.h b/headers/debug.h
new file mode 100644
index 0000000..bb6ba40
--- /dev/null
+++ b/headers/debug.h
@@ -0,0 +1,41 @@
+// debug.h
+// Various functions useful for use during development.
+
+// Converts a single character to hexadecimal
+int dCharToNum(char c){
+ // 0x0 - 0x9
+ if (c != 0x20 && (c >= 0x30 && c <= 0x39)){
+ return (c - 0x30);
+ }
+ // 0xA - 0xF
+ else if (c != 0x20 && (c >= 0x41 && c <= 0x46)){
+ return (c - 0x37);
+ // 0xa - 0xf
+ }else if (c != 0x20 && (c >= 0x61 && c <= 0x66)){
+ return (c - 0x57);
+ // Invalid
+ }else{
+ return -1;
+ }
+}
+
+// Dump a particular page in memory.
+void dPageDump(short m){
+ m <<= 8;
+ for(int i = 0; i < 256; i+=16){
+ printf("\t");
+ for(int j = 0; j < 16; j+=1){
+ printf("%2x ", Memory[(m+(i+j))]);
+ }
+ printf("\n");
+ }
+}
+
+// Dump CPU values
+void dStatusDump(void){
+ printf(" acc:\t%x\n X:\t%x\n Y:\t%x\nstack:\t%x\nflags:\t%x\n", acc, X, Y, S, P);
+}
+
+void dIdataDump(void){
+ printf("cycles:\t%d\nlength:\t%d\n add:\t%x\n value:\t%x\n", idata.cycles, idata.length, idata.add, idata.value);
+} \ No newline at end of file