]> git.sur5r.net Git - cc65/blobdiff - src/common/cpu.h
Merge pull request #80 from AntiheroSoftware/ca65-65816
[cc65] / src / common / cpu.h
index 05f07b38b518fa1335df3b201184ca4a76ab9b9d..121a54b7a6586f0c88d8b8389008fc078b3994fa 100644 (file)
@@ -6,10 +6,10 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 2003      Ullrich von Bassewitz                                       */
-/*               Römerstrasse 52                                             */
-/*               D-70794 Filderstadt                                         */
-/* EMail:        uz@cc65.org                                                 */
+/* (C) 2003-2011, Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
 /*                                                                           */
 /*                                                                           */
 /* This software is provided 'as-is', without any expressed or implied       */
@@ -39,7 +39,7 @@
 
 
 /*****************************************************************************/
-/*                                          Data                                    */
+/*                                   Data                                    */
 /*****************************************************************************/
 
 
 /* CPUs */
 typedef enum {
     CPU_UNKNOWN = -1,           /* Not specified or invalid target */
+    CPU_NONE,                   /* No CPU - for assembler */
     CPU_6502,
+    CPU_6502X,                  /* "Extended", that is: with illegal opcodes */
+    CPU_65SC02,
     CPU_65C02,
     CPU_65816,
-    CPU_SUNPLUS,               /* Not in the freeware version - sorry */
-    CPU_COUNT                  /* Number of different CPUs */
+    CPU_SWEET16,
+    CPU_HUC6280,                /* Used in PC engine */
+    CPU_M740,                   /* Mitsubishi 740 series MCUs */
+    CPU_COUNT                   /* Number of different CPUs */
 } cpu_t;
 
+/* CPU instruction sets */
+enum {
+    CPU_ISET_NONE       = 1 << CPU_NONE,
+    CPU_ISET_6502       = 1 << CPU_6502,
+    CPU_ISET_6502X      = 1 << CPU_6502X,
+    CPU_ISET_65SC02     = 1 << CPU_65SC02,
+    CPU_ISET_65C02      = 1 << CPU_65C02,
+    CPU_ISET_65816      = 1 << CPU_65816,
+    CPU_ISET_SWEET16    = 1 << CPU_SWEET16,
+    CPU_ISET_HUC6280    = 1 << CPU_HUC6280,
+    CPU_ISET_M740       = 1 << CPU_M740,
+};
+
 /* CPU used */
 extern cpu_t CPU;
 
-/* Table with target names */
-extern const char* CPUNames [CPU_COUNT];
+/* Table with CPU names */
+extern const char* CPUNames[CPU_COUNT];
+
+/* Table with CPU the instruction sets */
+extern const unsigned CPUIsets[CPU_COUNT];
 
 
 
 /*****************************************************************************/
-/*                                          Code                                    */
+/*                                   Code                                    */
 /*****************************************************************************/
 
 
 
+int ValidAddrSizeForCPU (unsigned char AddrSize);
+/* Check if the given address size is valid for the current CPU */
+
 cpu_t FindCPU (const char* Name);
 /* Find a CPU by name and return the target id. CPU_UNKNOWN is returned if
  * the given name is no valid target.