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()11 unsigned 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)22 void debugger_set_break(unsigned char* addr)
23 {
24   /** rst 10h for this platform (test) */
25   (*addr)=0xd7;
26 }
27 
debugger_num_break_bytes()28 int 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)33 int 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