From 925d0670c45e1100e412070fa0ce2405604f219a Mon Sep 17 00:00:00 2001 From: Attila Veghelyi Date: Thu, 29 Jun 2023 16:24:54 +0200 Subject: Init repo --- icd.h | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 icd.h (limited to 'icd.h') diff --git a/icd.h b/icd.h new file mode 100644 index 0000000..e9f7ead --- /dev/null +++ b/icd.h @@ -0,0 +1,185 @@ +//General routines to communicate via ICD with a target + +//The following commands are implemented in the debugger monitor +//routine which is written in the last memory page on the target chip. +#define VER 1 //;version +#define STEP 2 //;step +#define GO 3 //;go +#define RREG 4 //;read register +#define WREG 5 //;write register +#define EEADR 0x10D +#define EEADRH 0x10F +#define EEDATA 0x10C +#define EEDATH 0x10E +#define EECON1 0x18C +#define EECON2 0x18D +#define w_temp 0x6B +#define status_temp 0x6C +#define pclath_temp 0x6D +#define fsr_temp 0x6E + +extern struct var{ char* name; int display;} variables[0x200]; + +extern GtkWidget * statusTxt; +extern GtkWidget * sourceTxt; +extern GtkTextBuffer * sourceBuf; +extern GtkWidget * icdVbox1; +extern GtkWidget * icdMenuPC; +extern GtkWidget * icdMenuSTAT; +extern GtkWidget * icdMenuBank0; +extern GtkWidget * icdMenuBank1; +extern GtkWidget * icdMenuBank2; +extern GtkWidget * icdMenuBank3; +extern GtkWidget * icdMenuEE; +extern GtkWidget * icdCommand; +extern GtkTextBuffer * statusBuf; + +extern int icdTimer; + +//Prepare ICD interface by resetting the target with a power-up sequence. +//MCLR is low so the target is reset even if power is not supplied by the programmer. +//Set communication speed at 1/(2*Tck us) +void startICD(int Tck); + +//Check whether the target is running or is executing the debug routine. +//This is signaled by RB7 (Data): D=1 -> debugger monitor running +int isRunning(); + +//Set the next breakpoint address, the freeze bit, +//and continue execution. +//This is necessary because at every break +//the ICD register is loaded with the last address. +void cont(int break_addr, int freeze); + +//Execute a single step +void step(); + +//Remove reset so that the target can start executing its code. +void run(); + +//Get the debugger monitor version +int version(); + +//Halt execution by setting RB6 (Clock) low +void Halt(); + +//Read register at address addr +int ReadRegister(int addr); + +//Read n registers starting at address addr +int ReadRegisterN(int addr,int n,int* buf); + +//Write data at address addr +void WriteRegister(int addr,int data); + +//Read program memory at address addr +int ReadProgMem(int addr); + +//Read program memory at address addr +int ReadProgMemN(int addr,int n,int* buf); + +//Read data memory at address addr +int ReadDataMem(int addr); + +//Read data memory at address addr +int ReadDataMemN(int addr,int n,unsigned char* buf); + +//Disassemble a command and return string +char* decodeCmd(int cmd,char *str, int addrH); + +// get register name from list +char* getVar(int addr,char *var); + +/// +///Scroll source file +void scrollToLine(int line); + +/// +///Hilight line in source code +void SourceHilightLine(int line); + +/// +///Remove hilight line in source code +void SourceRemoveHilightLine(int line); + +/// +///load source file into source pane +int loadSource(FILE *f); + +/// +///load and analyze coff file +void loadCoff(GtkWidget *widget,GtkWidget *window); + +/// +/// List of variables used when decoding an assembly word +void initVar(); + +/// +///Show ICD help window +void ICDHelp(GtkWidget *widget,GtkWidget *window); + +/// +///ICD: check if program is running +void icdCheck(GtkWidget *widget,GtkWidget *window); + +/// +///ICD: run program +void icdRun(GtkWidget *widget,GtkWidget *window); + +/// +///ICD: halt program +void icdHalt(GtkWidget *widget,GtkWidget *window); + +/// +///ICD: step program +void icdStep(GtkWidget *widget,GtkWidget *window); + +/// +///ICD: step program jumping over calls +void icdStepOver(GtkWidget *widget,GtkWidget *window); + +/// +///ICD: stop program +void icdStop(GtkWidget *widget,GtkWidget *window); + +/// +///ICD: refresh status +void icdRefresh(GtkWidget *widget,GtkWidget *window); + +/// +/// Read and display an entire bank of memory +void ShowBank(int bank,char* status); + +/// +/// Main ICD show function: +/// prints status info according to selected options +/// and the value of variables in the watch list +void ShowContext(); + +/// +///Add symbol to the list of watched variables +int addWatch(struct symbol s); + +/// +/// ICD Command parser +int executeCommand(char *command); + +/// +///Remove variable from watch list +int removeWatch(char* name); + +/// +///Handle mouse events in source code window +gint source_mouse_event(GtkWidget *widget, GdkEventButton *event, gpointer func_data); + +/// +///Handle mouse events in ICD status window +gint icdStatus_mouse_event(GtkWidget *widget, GdkEventButton *event, gpointer func_data); + +/// +///Handle keyboard events in ICD command edit box +gint icdCommand_key_event(GtkWidget *widget, GdkEventButton *event, gpointer func_data); + +/// +///Handle keyboard events in ICD tab +gint icd_key_event(GtkWidget *widget, GdkEventButton *event, gpointer func_data); -- cgit v1.2.3-54-g00ecf