/*
- * Simulator of microcontrollers (brkcl.h)
+ * Simulator of microcontrollers (sim.src/brkcl.h)
*
* Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
*
02111-1307, USA. */
/*@1@*/
-#ifndef BRKCL_HEADER
-#define BRKCL_HEADER
+#ifndef SIM_BRKCL_HEADER
+#define SIM_BRKCL_HEADER
#include "ddconfig.h"
class cl_brk: public cl_base
{
+protected:
+ class cl_address_space *mem;
public:
int nr;
t_addr addr;
int hit;
int cnt;
- cl_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
- ~cl_brk(void);
+ cl_brk(class cl_address_space *imem, int inr, t_addr iaddr,
+ enum brk_perm iperm, int ihit);
+ virtual ~cl_brk(void);
+ class cl_address_space *get_mem(void) { return(mem); }
+
+ virtual void activate(void);
+ virtual void inactivate(void);
virtual enum brk_type type(void)= 0;
+ virtual enum brk_event get_event(void)= 0;
virtual bool do_hit(void);
};
public:
uchar code;
- cl_fetch_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
+ cl_fetch_brk(class cl_address_space *imem, int inr, t_addr iaddr,
+ enum brk_perm iperm, int ihit);
virtual enum brk_type type(void);
+ virtual enum brk_event get_event(void) { return(brkNONE); }
};
class cl_ev_brk: public cl_brk
{
public:
- cl_ev_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit,
- enum brk_event ievent, const char *iid);
-
+ cl_ev_brk(class cl_address_space *imem, int inr, t_addr iaddr,
+ enum brk_perm iperm,
+ int ihit, enum brk_event ievent, const char *iid);
+ cl_ev_brk(class cl_address_space *imem, int inr, t_addr iaddr,
+ enum brk_perm iperm,
+ int ihit, char op);
enum brk_event event;
const char *id;
virtual enum brk_type type(void);
- virtual bool match(struct event_rec *ev);
-};
-
-
-/*
- * WRITE IRAM
- */
-
-class cl_wi_brk: public cl_ev_brk
-{
-public:
- cl_wi_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
-
- virtual bool match(struct event_rec *ev);
-};
-
-
-/*
- * READ IRAM
- */
-
-class cl_ri_brk: public cl_ev_brk
-{
-public:
- cl_ri_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
-
- virtual bool match(struct event_rec *ev);
-};
-
-
-/*
- * WRITE XRAM
- */
-
-class cl_wx_brk: public cl_ev_brk
-{
-public:
- cl_wx_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
-
- virtual bool match(struct event_rec *ev);
-};
-
-
-/*
- * READ XRAM
- */
-
-class cl_rx_brk: public cl_ev_brk
-{
-public:
- cl_rx_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
-
- virtual bool match(struct event_rec *ev);
-};
-
-
-/*
- * WRITE SFR
- */
-
-class cl_ws_brk: public cl_ev_brk
-{
-public:
- cl_ws_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
-
- virtual bool match(struct event_rec *ev);
-};
-
-
-/*
- * READ SFR
- */
-
-class cl_rs_brk: public cl_ev_brk
-{
-public:
- cl_rs_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
-
- virtual bool match(struct event_rec *ev);
-};
-
-
-/*
- * READ CODE
- */
-
-class cl_rc_brk: public cl_ev_brk
-{
-public:
- cl_rc_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
-
+ virtual enum brk_event get_event(void) { return(event); }
virtual bool match(struct event_rec *ev);
};
class brk_coll: public cl_sorted_list
{
public:
- class cl_rom *rom;
+ class cl_address_space/*rom*/ *rom;
public:
- brk_coll(t_index alimit, t_index adelta, class cl_rom *arom);
- virtual void *key_of(void *item);
- virtual int compare(void *key1, void *key2);
+ brk_coll(t_index alimit, t_index adelta, class cl_address_space/*rom*/*arom);
+ virtual const void *key_of(void *item);
+ virtual int compare(const void *key1, const void *key2);
virtual bool there_is_event(enum brk_event ev);
- virtual int make_new_nr(void);
+ //virtual int make_new_nr(void);
virtual void add_bp(class cl_brk *bp);
virtual void del_bp(t_addr addr);
+ virtual void del_bp(t_index idx, int /*dummy*/);
virtual class cl_brk *get_bp(t_addr addr, int *idx);
+ virtual class cl_brk *get_bp(int nr);
virtual bool bp_at(t_addr addr);
};