+ virtual void set_bit1(t_addr addr, t_mem bits);
+ virtual void set_bit0(t_addr addr, t_mem bits);
+};
+
+
+/*
+ * Address decoder
+ */
+
+class cl_address_decoder: public cl_base
+{
+public:
+ class cl_address_space *address_space;
+ class cl_memory_chip *memchip;
+ t_addr as_begin, as_end;
+ t_addr chip_begin;
+ bool activated;
+public:
+ cl_address_decoder(class cl_memory *as, class cl_memory *chip,
+ t_addr asb, t_addr ase, t_addr cb);
+ virtual ~cl_address_decoder(void);
+ virtual int init(void);
+
+ virtual bool activate(class cl_console *con);
+
+ virtual bool fully_covered_by(t_addr begin, t_addr end);
+ virtual bool is_in(t_addr begin, t_addr end);
+ virtual bool covers(t_addr begin, t_addr end);
+
+ virtual bool shrink_out_of(t_addr begin, t_addr end);
+ virtual class cl_address_decoder *split(t_addr begin, t_addr end);
+};
+
+/* List of address decoders */
+
+class cl_decoder_list: public cl_sorted_list
+{
+protected:
+ bool by_chip;
+public:
+ cl_decoder_list(t_index alimit, t_index adelta, bool bychip);
+
+ virtual void *key_of(void *item);
+ virtual int compare(void *key1, void *key2);
+};
+
+
+/*
+ * Messages
+ */
+
+#include "eventcl.h"
+
+class cl_event_address_space_added: public cl_event
+{
+public:
+ class cl_address_space *as;
+ cl_event_address_space_added(class cl_address_space *the_as):
+ cl_event(ev_address_space_added)
+ { as= the_as; }
+};
+
+
+/*
+ * Errors in memory handling
+ */
+
+#include "errorcl.h"
+
+class cl_error_mem: public cl_error
+{
+private:
+ static class cl_error_class *error_mem_class;
+protected:
+ class cl_memory *mem;
+ t_addr addr;
+public:
+ cl_error_mem(class cl_memory *amem, t_addr aaddr);
+};
+
+class cl_error_mem_invalid_address: public cl_error_mem
+{
+private:
+ static class cl_error_class *error_mem_invalid_address_class;
+public:
+ cl_error_mem_invalid_address(class cl_memory *amem, t_addr aaddr);
+
+ virtual void print(class cl_commander *c);
+};
+
+class cl_error_mem_non_decoded: public cl_error_mem
+{
+private:
+ static class cl_error_class *error_mem_non_decoded_class;
+public:
+ cl_error_mem_non_decoded(class cl_memory *amem, t_addr aaddr);
+
+ virtual void print(class cl_commander *c);