Add ability to load Intel HEX files. Add sample sdcc LED blinker.
[fw/altos] / ccdbg.h
diff --git a/ccdbg.h b/ccdbg.h
index 7d9940c30bb49b80312d323cf3b314ffac41aaf5..05abc97fb3b4993eae9caf6bfff3f0461b773a5b 100644 (file)
--- a/ccdbg.h
+++ b/ccdbg.h
@@ -93,6 +93,7 @@ struct ccdbg {
 
 #define CC_DEBUG_BITBANG       0x00000001
 #define CC_DEBUG_COMMAND       0x00000002
+#define CC_DEBUG_INSTRUCTIONS  0x00000004
 
 /* ccdbg-command.c */
 void
@@ -137,7 +138,8 @@ ccdbg_step_replace(struct ccdbg *dbg, uint8_t *instr, int nbytes);
 uint16_t
 ccdbg_get_chip_id(struct ccdbg *dbg);
 
-
+uint8_t
+ccdbg_execute(struct ccdbg *dbg, uint8_t *inst);
        
 /* ccdbg-debug.c */
 void
@@ -149,10 +151,31 @@ ccdbg_add_debug(int level);
 void
 ccdbg_clear_debug(int level);
 
-/* ccdbg-io.c */
+/* ccdbg-hex.c */
+struct hex_record {
+       uint8_t length;
+       uint16_t address;
+       uint8_t type;
+       uint8_t checksum;
+       uint8_t data[0];
+};
+
+struct hex_file {
+       int                     nrecord;
+       struct hex_record       *records[0];
+};
+
+#define HEX_RECORD_NORMAL              0x00
+#define HEX_RECORD_EOF                 0x01
+#define HEX_RECORD_EXTENDED_ADDRESS    0x02
+
+struct hex_file *
+ccdbg_hex_file_read(FILE *file, char *name);
+
 void
-ccdbg_quarter_clock(struct ccdbg *dbg);
+ccdbg_hex_file_free(struct hex_file *hex);
 
+/* ccdbg-io.c */
 void
 ccdbg_half_clock(struct ccdbg *dbg);
 
@@ -224,6 +247,16 @@ ccdbg_print(char *format, uint8_t mask, uint8_t set);
 void
 ccdbg_manual(struct ccdbg *dbg, FILE *input);
 
+/* ccdbg-memory.c */
+uint8_t
+ccdbg_write_memory(struct ccdbg *dbg, uint16_t addr, uint8_t *bytes, int nbytes);
+
+uint8_t
+ccdbg_read_memory(struct ccdbg *dbg, uint16_t addr, uint8_t *bytes, int nbytes);
+
+uint8_t
+ccdbg_write_hex(struct ccdbg *dbg, struct hex_file *hex);
+
 /* cp-usb.c */
 void
 cp_usb_init(struct ccdbg *dbg);