* as/z80/Makefile.in: added strcmpi.c
* as/z80/z80adr.c: added upper case registers and lower case conditionals
* support/Util/strcmpi.ch: added with intention to remove from mcs51/hc08
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4327
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2006-08-09 Maarten Brock <sourceforge.brock AT dse.nl>
+
+ * as/z80/assym.c (mlookup): ignore case when looking up mnemonics
+ * as/z80/Makefile.in: added strcmpi.c
+ * as/z80/z80adr.c: added upper case registers and lower case conditionals
+ * support/Util/strcmpi.ch: added with intention to remove from mcs51/hc08
+
2006-08-08 Maarten Brock <sourceforge.brock AT dse.nl>
* device/lib/gbz80/asm_strings.s,
SDC = .
-SLIBSRC = NewAlloc.c
+SLIBSRC = NewAlloc.c strcmpi.c
SRC = asdata.c asexpr.c aslex.c aslist.c asmain.c asout.c \
assubr.c assym.c z80adr.c z80ext.c z80mch.c z80pst.c
OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
-SLIBOBJS = $(SLIBSRC:%.c=$(OBJDIR)/%.o)
+SLIBOBJS = $(SLIBSRC:%.c=$(OBJDIR)/%.o)
BINS = $(BUILDDIR)/as$(EXT)$(EXEEXT)
CFLAGS += $(CPPFLAGS) $(OPTS) -I. -DINDEXLIB -DMLH_MAP -DUNIX -DSDK
CFLAGS += -funsigned-char
-CFLAGS += -I$(SLIB)
+CFLAGS += -I$(SLIB)
LDFLAGS += -lm $(EXTRALIBS)
#include <string.h>
#include <stdlib.h>
#include "asm.h"
+#include "strcmpi.h"
/*)Module assym.c
*
h = hash(id);
mp = mnehash[h];
while (mp) {
- if (symeq(id, mp->m_id))
+ if (as_strcmpi(id, mp->m_id) == 0) /* JLH: case insensitive */
return (mp);
mp = mp->m_mp;
}
* side effects:
* none
*/
-
+
int
hash(p)
register char *p;
{ "h", H|0400 },
{ "l", L|0400 },
{ "a", A|0400 },
+ { "B", B|0400 },
+ { "C", C|0400 },
+ { "D", D|0400 },
+ { "E", E|0400 },
+ { "H", H|0400 },
+ { "L", L|0400 },
+ { "A", A|0400 },
{ "", 000 }
};
struct adsym R8X[] = {
{ "i", I|0400 },
{ "r", R|0400 },
+ { "I", I|0400 },
+ { "R", R|0400 },
{ "", 000 }
};
{ "de", DE|0400 },
{ "hl", HL|0400 },
{ "sp", SP|0400 },
+ { "BC", BC|0400 },
+ { "DE", DE|0400 },
+ { "HL", HL|0400 },
+ { "SP", SP|0400 },
#ifndef GAMEBOY
{ "ix", IX|0400 },
{ "iy", IY|0400 },
+ { "IX", IX|0400 },
+ { "IY", IY|0400 },
#else /* GAMEBOY */
{ "hl-", HLD|0400 },
{ "hl+", HLI|0400 },
{ "hld", HLD|0400 },
{ "hli", HLI|0400 },
+ { "HL-", HLD|0400 },
+ { "HL+", HLI|0400 },
+ { "HLD", HLD|0400 },
+ { "HLI", HLI|0400 },
#endif /* GAMEBOY */
{ "", 000 }
};
struct adsym R16X[] = {
{ "af", AF|0400 },
+ { "AF", AF|0400 },
#ifndef GAMEBOY
{ "af'", AF|0400 },
+ { "AF'", AF|0400 },
#endif /* GAMEBOY */
{ "", 000 }
};
{ "Z", Z |0400 },
{ "NC", NC|0400 },
{ "C", CS|0400 },
+ { "nz", NZ|0400 },
+ { "z", Z |0400 },
+ { "nc", NC|0400 },
+ { "c", CS|0400 },
#ifndef GAMEBOY
{ "PO", PO|0400 },
{ "PE", PE|0400 },
{ "P", P |0400 },
{ "M", M |0400 },
+ { "po", PO|0400 },
+ { "pe", PE|0400 },
+ { "p", P |0400 },
+ { "m", M |0400 },
#endif /* GAMEBOY */
{ "", 000 }
};
--- /dev/null
+/* strcmpi.c */\r
+\r
+/*\r
+ * Compare two strings ignoring case.\r
+ *\r
+ * Taken from GLIBC 2.2.5. Original code is copyrighted "Free\r
+ * Software Foundation" and published under the GNU Lesser General\r
+ * Public License.\r
+ * \r
+ */\r
+\r
+#include <ctype.h>\r
+#include "strcmpi.h"\r
+\r
+int as_strcmpi (const char *s1, const char *s2)\r
+{\r
+ const unsigned char *p1 = (const unsigned char *) s1;\r
+ const unsigned char *p2 = (const unsigned char *) s2;\r
+ unsigned char c1, c2;\r
+\r
+ if (p1 == p2)\r
+ return 0;\r
+\r
+ do\r
+ {\r
+ c1 = tolower (*p1++);\r
+ c2 = tolower (*p2++);\r
+ if (c1 == '\0')\r
+ break;\r
+ }\r
+ while (c1 == c2);\r
+ \r
+ return c1 - c2;\r
+}\r
+\r
--- /dev/null
+/* strcmpi.h */\r
+\r
+int as_strcmpi (const char *s1, const char *s2);\r