+}*/
+
+
+class cl_cell *
+cl_hw::register_cell(class cl_mem *mem, t_addr addr, class cl_cell **store,
+ enum what_to_do_on_cell_change awtd)
+{
+ class cl_watched_cell *wc;
+ class cl_cell *cell;
+
+ if (mem)
+ mem->register_hw(addr, this, (int*)0, DD_FALSE);
+ wc= new cl_watched_cell(mem, addr, &cell, awtd);
+ if (store)
+ *store= cell;
+ watched_cells->add(wc);
+ // announce
+ uc->sim->mem_cell_changed(mem, addr);
+ return(cell);
+}
+
+class cl_cell *
+cl_hw::use_cell(class cl_mem *mem, t_addr addr, class cl_cell **store,
+ enum what_to_do_on_cell_change awtd)
+{
+ class cl_watched_cell *wc;
+ class cl_cell *cell;
+
+ wc= new cl_used_cell(mem, addr, &cell, awtd);
+ if (store)
+ *store= cell;
+ watched_cells->add(wc);
+ return(cell);
+}
+
+void
+cl_hw::mem_cell_changed(class cl_mem *mem, t_addr addr)
+{
+ int i;
+
+ for (i= 0; i < watched_cells->count; i++)
+ {
+ class cl_watched_cell *wc=
+ (class cl_watched_cell *)(watched_cells->at(i));
+ wc->mem_cell_changed(mem, addr, this);
+ }