#ifndef __ICD_H__ #define __ICD_H__ #include "gpsim_classes.h" #include "exports.h" #define ID_LOC_ADDR 0x2000 #define DEVICE_ID_ADDR 0x2006 #define CONF_WORD_ADDR 0x2007 #define ID_LOC_LEN 8 #define MAX_PROG_MEM_SIZE 0x2000 /* 16F877 has 8K word flash */ #define MAX_MEM_SIZE (MAX_PROG_MEM_SIZE + 0x200) /* + ID location + EEPROM */ #define UNINITIALIZED -1 /* Used to flag that a memory location isn't used */ LIBGPSIM_EXPORT bool get_use_icd(); int icd_connect(char *dev); int icd_reconnect(void); int icd_disconnect(void); int icd_detected(void); char *icd_version(void); char *icd_target(void); float icd_vdd(void); float icd_vpp(void); int icd_reset(void); int icd_erase(void); int icd_prog(int *mem); int icd_has_debug_module(void); int icd_step(void); int icd_run(void); int icd_halt(void); int icd_stopped(void); int icd_get_state(); int icd_get_file(); int icd_set_break(int address); int icd_clear_break(void); int icd_read_file(int address); int icd_write_file(int address, int data); void icd_set_bulk(int flag); int icd_read_eeprom(int address); int icd_write_eeprom(int address, int data); /* class icd_Register : public file_register { public: file_register *replaced; // A pointer to the register that this break replaces int is_stale; icd_Register(); virtual REGISTER_TYPES isa(void) {return replaced->isa();}; virtual char *name(void) {return replaced->name();}; virtual void put_value(unsigned int new_value); virtual void put(unsigned int new_value); virtual unsigned int get_value(void); virtual unsigned int get(void); }; class icd_statusReg : public Status_register { public: Status_register *replaced; // A pointer to the register that this break replaces int is_stale; icd_statusReg(); virtual REGISTER_TYPES isa(void) {return replaced->isa();}; virtual char *name(void) {return replaced->name();}; virtual void put_value(unsigned int new_value); virtual void put(unsigned int new_value); virtual unsigned int get_value(void); virtual unsigned int get(void); }; class icd_WREG : public WREG { public: WREG *replaced; // A pointer to the register that this break replaces int is_stale; icd_WREG(); virtual REGISTER_TYPES isa(void) {return replaced->isa();}; virtual char *name(void) {return replaced->name();}; virtual void put_value(unsigned int new_value); virtual void put(unsigned int new_value); virtual unsigned int get_value(void); virtual unsigned int get(void); }; class icd_PC : public Program_Counter { Program_Counter *replaced; int is_stale; icd_PC(); virtual void put_value(unsigned int new_value); virtual unsigned int get_value(void); }; */ #endif