/* */
/* */
/* */
-/* (C) 2003-2005, Ullrich von Bassewitz */
-/* Römerstrasse 52 */
+/* (C) 2003-2011, Ullrich von Bassewitz */
+/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
/* */
/* common */
+#include "addrsize.h"
+#include "check.h"
#include "cpu.h"
#include "strutil.h"
"sunplus",
"sweet16",
"huc6280",
+ "m740",
};
/* Tables with CPU instruction sets */
CPU_ISET_SUNPLUS,
CPU_ISET_SWEET16,
CPU_ISET_6502 | CPU_ISET_65SC02 | CPU_ISET_65C02 | CPU_ISET_HUC6280,
+ CPU_ISET_6502 | CPU_ISET_M740,
};
+int ValidAddrSizeForCPU (unsigned char AddrSize)
+/* Check if the given address size is valid for the current CPU */
+{
+ switch (AddrSize) {
+ case ADDR_SIZE_DEFAULT:
+ /* Always supported */
+ return 1;
+
+ case ADDR_SIZE_ZP:
+ /* Not supported by None and Sweet16 */
+ return (CPU != CPU_NONE && CPU != CPU_SWEET16);
+
+ case ADDR_SIZE_ABS:
+ /* Not supported by None */
+ return (CPU != CPU_NONE);
+
+ case ADDR_SIZE_FAR:
+ /* Only supported by 65816 */
+ return (CPU == CPU_65816);
+
+ case ADDR_SIZE_LONG:
+ /* Not supported by any CPU */
+ return 0;
+
+ default:
+ FAIL ("Invalid address size");
+ /* NOTREACHED */
+ return 0;
+ }
+}
+
+
+
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.