Version 0.3.2-pre1
[fw/sdcc] / sim / ucsim / sim.src / memcl.h
index 3e0dcf7552d4239165f88317c27ad7b1b7dc1a43..85f9462d81aca3f354af47eef782b536a51d3eb9 100644 (file)
@@ -63,7 +63,6 @@ public:
   class cl_memloc *get_loc(t_addr address);
 };
 
-
 /* Memory */
 
 class cl_mem: public cl_guiobj
@@ -128,6 +127,53 @@ public:
   ~cl_rom(void);
 };
 
+/* New type */
+
+class cl_cell: public cl_base
+{
+public:
+  t_mem data;
+protected:
+  t_mem mask;
+
+public:
+  cl_cell(int awidth);
+  virtual t_mem read(void) { return(data); }
+  virtual t_mem get(void)  { return(data); }
+  virtual void write(t_mem *val) { data= *val= (*val & mask); }
+  virtual void set(t_mem val)    { data= val & mask; }
+};
+
+class cl_registered_cell: public cl_cell
+{
+protected:
+  class cl_list *hws;
+  class cl_hw *hardwares;
+  int nuof_hws;
+public:
+  cl_registered_cell(int awidth);
+  ~cl_registered_cell(void);
+  virtual t_mem read(void);
+  virtual void write(t_mem *val);
+};
+
+class cl_m: public cl_mem
+{
+protected:
+  class cl_cell **array;
+public:
+  t_addr size;
+  int width;
+
+public:
+  cl_m(t_addr asize, int awidth);
+  ~cl_m(void);
+  virtual t_mem read(t_addr addr);
+  virtual t_mem get(t_addr addr);
+  virtual void write(t_addr addr, t_mem *val);
+  virtual void set(t_addr addr, t_mem val);
+};
+
 
 #endif