1 2 #include "debugger.h" 3 #include "cmds.h" 4 5 /** TODO: We ideally want this to be the symbol ._dbg_registers in 6 test_crt0.asm but that seems to give wrong result 7 compiler bug??? 8 */ 9 static unsigned char* kludge_dbg_registers=0x3A; 10 debugger_get_registers()11unsigned char* debugger_get_registers() 12 { 13 return kludge_dbg_registers; 14 } 15 16 static int cmd_debug_as_int=CMD_DBG; 17 18 19 extern unsigned* dbg_registers; 20 21 debugger_set_break(unsigned char * addr)22void debugger_set_break(unsigned char* addr) 23 { 24 /** rst 10h for this platform (test) */ 25 (*addr)=0xd7; 26 } 27 debugger_num_break_bytes()28int debugger_num_break_bytes() 29 { 30 return 1; /** So we know how many bytes to save */ 31 } 32 debugger_exchange_str(void * ptr,int len)33int debugger_exchange_str(void *ptr, int len) 34 { 35 #asm 36 pop bc ; save return ; 37 pop de ; len ; 38 pop hl ; pointer to string ; 39 40 push hl ; balance stack 41 push de ; 42 43 44 ld a,(_cmd_debug_as_int) ; CMD_DBG ; 45 46 rst 8 ; 47 48 /** Result string in ptr and len in return value, HL */ 49 ld h,0 ; 50 ld l,e ; 51 52 push bc ; 53 54 #endasm 55 } 56 57