/* */
/* */
/* */
-/* (C) 2002 Ullrich von Bassewitz */
-/* Wacholderweg 14 */
-/* D-70597 Stuttgart */
-/* EMail: uz@musoftware.de */
+/* (C) 2002-2003 Ullrich von Bassewitz */
+/* Römerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
-#if 0
+/* Forwards */
+struct AddressSpace;
+struct CfgData;
typedef struct ChipInstance ChipInstance;
+typedef struct Chip Chip;
+typedef struct ChipLibrary ChipLibrary;
+
+/* One instance of a chip */
struct ChipInstance {
- Chip* C; /* Pointer to corresponding chip */
- unsigned Addr; /* Start address of range */
- unsigned Size; /* Size of range */
+ Chip* C; /* Pointer to corresponding chip */
+ struct AddressSpace* AS; /* Pointer to address space */
+ unsigned Addr; /* Start address of range */
+ unsigned Size; /* Size of range */
+ void* Data; /* Chip instance data */
};
-#endif
-
-
/* Chip structure */
-typedef struct Chip Chip;
struct Chip {
- struct ChipLibrary* Library; /* Pointer to library data structure */
- const ChipData* Data; /* Chip data as given by the library */
- Collection Instances; /* Pointer to chip instances */
+ struct ChipLibrary* Lib; /* Pointer to library data structure */
+ const ChipData* Data; /* Chip data as given by the library */
+ Collection Instances; /* Pointer to chip instances */
+};
+
+/* ChipLibrary structure */
+struct ChipLibrary {
+ char* LibName; /* Name of the library as given */
+ char* PathName; /* Name of library including path */
+ void* Handle; /* Pointer to libary handle */
+ Collection Chips; /* Chips in this library */
};
/*****************************************************************************/
-/* Code */
+/* Code */
/*****************************************************************************/
-void LoadChips (void);
-/* Load all chips from all libraries */
+ChipInstance* NewChipInstance (const char* ChipName, unsigned Addr,
+ unsigned Size, Collection* Attributes);
+/* Allocate a new chip instance for the chip. */
+
+ChipInstance* MirrorChipInstance (const ChipInstance* Orig, unsigned Addr);
+/* Generate a chip instance mirror and return it. */
+
+void SortChips (void);
+/* Sort all chips by name. Called after loading */
-const Chip* FindChip (const char* Name);
-/* Find a chip by name. Returns the Chip data structure or NULL if the chip
- * could not be found.
+void LoadChipLibrary (const char* LibName);
+/* Load a chip library. This includes loading the shared libary, allocating
+ * and initializing the data structure, and loading all chip data from the
+ * library.
*/