]> git.sur5r.net Git - cc65/blobdiff - src/sim65/chip.h
New module strstack
[cc65] / src / sim65 / chip.h
index 9959ac31bdb2b14154a6c8162b2b747744e5e7b9..f614c0ced045bfe72ba4047c566b8c293850f600 100644 (file)
@@ -6,10 +6,10 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (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.
  */