summaryrefslogtreecommitdiff
path: root/sdas/aspdk16
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /sdas/aspdk16
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'sdas/aspdk16')
-rw-r--r--sdas/aspdk16/Makefile145
-rw-r--r--sdas/aspdk16/Makefile.in145
-rw-r--r--sdas/aspdk16/clean.mk25
-rw-r--r--sdas/aspdk16/pdk16mch.c261
-rw-r--r--sdas/aspdk16/pdk16pst.c198
5 files changed, 774 insertions, 0 deletions
diff --git a/sdas/aspdk16/Makefile b/sdas/aspdk16/Makefile
new file mode 100644
index 0000000..dc6c59f
--- /dev/null
+++ b/sdas/aspdk16/Makefile
@@ -0,0 +1,145 @@
+#
+#
+#
+
+VERSION = 3.9.3
+VERSIONHI = 3
+VERSIONLO = 9
+VERSIONP = 3
+
+SHELL = /bin/sh
+CC = gcc
+CPP = gcc -E
+INSTALL = /usr/bin/install -c
+STRIP = strip
+MAKEDEP = g++ -MM
+
+top_builddir = ../..
+top_srcdir = ../..
+
+srcdir = .
+prefix = /usr/local
+exec_prefix = ${prefix}
+bindir = ${exec_prefix}/bin
+libdir = ${exec_prefix}/lib
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+includedir = ${prefix}/include
+mandir = ${datarootdir}/man
+man1dir = $(mandir)/man1
+man2dir = $(mandir)/man2
+infodir = @info@
+
+EXEEXT =
+
+
+
+CPPFLAGS = -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../aspdk -I$(srcdir)/../../support/util
+CFLAGS = -pipe -ggdb -g -O2 -Wall -Wno-parentheses $(CPPFLAGS)
+LDFLAGS =
+LIBS = -lm
+
+OBJDIR = obj
+
+UTILLIB = $(srcdir)/../../support/util
+UTILSRC = dbuf.c dbuf_string.c
+UTILLIBOBJS = $(UTILSRC:%.c=$(OBJDIR)/%.o)
+
+ASXXLIB = $(srcdir)/../asxxsrc
+ASXXLIBSRC = asdbg.c asdata.c asexpr.c aslex.c aslist.c asmain.c asout.c assubr.c assym.c asmcro.c sdas.c strcmpi.c
+ASXXLIBOBJS = $(ASXXLIBSRC:%.c=$(OBJDIR)/%.o)
+
+ASPDKLIB = $(srcdir)/../aspdk
+ASPDKLIBSRC = pdkmch.c pdkadr.c
+ASPDKLIBOBJS = $(ASPDKLIBSRC:%.c=$(OBJDIR)/%.o)
+
+
+SRC = pdk16pst.c pdk16mch.c
+OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
+
+ASSOURCES = $(SRC) $(ASXXLIBSRC:%.c=$(ASXXLIB)/%.c) $(ASPDKLIBSRC:%.c=$(ASPDKLIB)/%.c) $(UTILSRC:%.c=$(UTILLIB)/%.c)
+
+ASOBJECTS = $(OBJS) $(ASXXLIBOBJS) $(ASPDKLIBOBJS) $(UTILLIBOBJS)
+
+ASX = $(top_builddir)/bin/sdaspdk16$(EXEEXT)
+#DEST = $(DESTDIR)$(bindir)/sdaspdk16$(EXEEXT)
+DEST = sdaspdk16
+DESTPATH = $(DESTDIR)$(bindir)/
+
+transform = s,x,x,
+
+# Compiling entire program or any subproject
+# ------------------------------------------
+all: checkconf $(ASX)
+
+$(ASX): $(ASOBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS) $(LIBS)
+
+# Compiling and installing everything and running test
+# ----------------------------------------------------
+install: all installdirs
+ $(INSTALL) $(ASX) $(DESTPATH)`echo $(DEST)|sed '$(transform)'`$(EXEEXT)
+ $(STRIP) $(DESTPATH)`echo $(DEST)|sed '$(transform)'`$(EXEEXT)
+
+# Deleting all the installed files
+# --------------------------------
+uninstall:
+ rm -f $(DESTPATH)`echo $(DEST)|sed '$(transform)'`$(EXEEXT)
+
+
+# Performing self-test
+# --------------------
+check:
+
+
+# Performing installation test
+# ----------------------------
+installcheck:
+
+
+# Creating installation directories
+# ---------------------------------
+installdirs:
+ $(INSTALL) -d $(DESTDIR)$(bindir)
+
+
+# Creating dependencies
+# ---------------------
+dep: Makefile.dep
+
+Makefile.dep: $(ASSOURCES) $(srcdir)/*.h
+ $(MAKEDEP) $(CPPFLAGS) $(filter %.c,$^) >Makefile.dep
+
+ifeq "$(findstring $(MAKECMDGOALS),uninstall check installcheck installdirs \
+ clean distclean mostlyclean realclean)" ""
+ -include Makefile.dep
+endif
+include $(srcdir)/clean.mk
+
+# My rules
+# --------
+$(OBJDIR)/.stamp:
+ mkdir -p $(OBJDIR)
+ touch $(OBJDIR)/.stamp
+
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(ASXXLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(ASPDKLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(UTILLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+
+# Remaking configuration
+# ----------------------
+checkconf:
+ @if [ -f $(top_builddir)/devel ]; then\
+ $(MAKE) -f ../conf.mk srcdir="$(srcdir)" top_builddir="$(top_builddir)" freshconf;\
+ fi
+
+# End of Makefile
diff --git a/sdas/aspdk16/Makefile.in b/sdas/aspdk16/Makefile.in
new file mode 100644
index 0000000..8498fed
--- /dev/null
+++ b/sdas/aspdk16/Makefile.in
@@ -0,0 +1,145 @@
+#
+#
+#
+
+VERSION = @VERSION@
+VERSIONHI = @VERSIONHI@
+VERSIONLO = @VERSIONLO@
+VERSIONP = @VERSIONP@
+
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+INSTALL = @INSTALL@
+STRIP = @STRIP@
+MAKEDEP = @MAKEDEP@
+
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+srcdir = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+libdir = @libdir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+includedir = @includedir@
+mandir = @mandir@
+man1dir = $(mandir)/man1
+man2dir = $(mandir)/man2
+infodir = @info@
+
+EXEEXT = @EXEEXT@
+
+VPATH = @srcdir@
+
+CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../aspdk -I$(srcdir)/../../support/util
+CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
+LDFLAGS = @LDFLAGS@
+LIBS = -lm
+
+OBJDIR = obj
+
+UTILLIB = $(srcdir)/../../support/util
+UTILSRC = dbuf.c dbuf_string.c
+UTILLIBOBJS = $(UTILSRC:%.c=$(OBJDIR)/%.o)
+
+ASXXLIB = $(srcdir)/../asxxsrc
+ASXXLIBSRC = asdbg.c asdata.c asexpr.c aslex.c aslist.c asmain.c asout.c assubr.c assym.c asmcro.c sdas.c strcmpi.c
+ASXXLIBOBJS = $(ASXXLIBSRC:%.c=$(OBJDIR)/%.o)
+
+ASPDKLIB = $(srcdir)/../aspdk
+ASPDKLIBSRC = pdkmch.c pdkadr.c
+ASPDKLIBOBJS = $(ASPDKLIBSRC:%.c=$(OBJDIR)/%.o)
+
+
+SRC = pdk16pst.c pdk16mch.c
+OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
+
+ASSOURCES = $(SRC) $(ASXXLIBSRC:%.c=$(ASXXLIB)/%.c) $(ASPDKLIBSRC:%.c=$(ASPDKLIB)/%.c) $(UTILSRC:%.c=$(UTILLIB)/%.c)
+
+ASOBJECTS = $(OBJS) $(ASXXLIBOBJS) $(ASPDKLIBOBJS) $(UTILLIBOBJS)
+
+ASX = $(top_builddir)/bin/sdaspdk16$(EXEEXT)
+#DEST = $(DESTDIR)$(bindir)/sdaspdk16$(EXEEXT)
+DEST = sdaspdk16
+DESTPATH = $(DESTDIR)$(bindir)/
+
+transform = @program_transform_name@
+
+# Compiling entire program or any subproject
+# ------------------------------------------
+all: checkconf $(ASX)
+
+$(ASX): $(ASOBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS) $(LIBS)
+
+# Compiling and installing everything and running test
+# ----------------------------------------------------
+install: all installdirs
+ $(INSTALL) $(ASX) $(DESTPATH)`echo $(DEST)|sed '$(transform)'`$(EXEEXT)
+ $(STRIP) $(DESTPATH)`echo $(DEST)|sed '$(transform)'`$(EXEEXT)
+
+# Deleting all the installed files
+# --------------------------------
+uninstall:
+ rm -f $(DESTPATH)`echo $(DEST)|sed '$(transform)'`$(EXEEXT)
+
+
+# Performing self-test
+# --------------------
+check:
+
+
+# Performing installation test
+# ----------------------------
+installcheck:
+
+
+# Creating installation directories
+# ---------------------------------
+installdirs:
+ $(INSTALL) -d $(DESTDIR)$(bindir)
+
+
+# Creating dependencies
+# ---------------------
+dep: Makefile.dep
+
+Makefile.dep: $(ASSOURCES) $(srcdir)/*.h
+ $(MAKEDEP) $(CPPFLAGS) $(filter %.c,$^) >Makefile.dep
+
+ifeq "$(findstring $(MAKECMDGOALS),uninstall check installcheck installdirs \
+ clean distclean mostlyclean realclean)" ""
+ -include Makefile.dep
+endif
+include $(srcdir)/clean.mk
+
+# My rules
+# --------
+$(OBJDIR)/.stamp:
+ mkdir -p $(OBJDIR)
+ touch $(OBJDIR)/.stamp
+
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(ASXXLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(ASPDKLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(UTILLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+
+# Remaking configuration
+# ----------------------
+checkconf:
+ @if [ -f $(top_builddir)/devel ]; then\
+ $(MAKE) -f ../conf.mk srcdir="$(srcdir)" top_builddir="$(top_builddir)" freshconf;\
+ fi
+
+# End of Makefile
diff --git a/sdas/aspdk16/clean.mk b/sdas/aspdk16/clean.mk
new file mode 100644
index 0000000..976b05f
--- /dev/null
+++ b/sdas/aspdk16/clean.mk
@@ -0,0 +1,25 @@
+# Deleting all files created by building the program
+# --------------------------------------------------
+include $(top_builddir)/Makefile.common
+
+clean: mostlyclean
+ rm -f *.dep
+ rm -f $(ASOBJECTS) $(OBJDIR)/.stamp
+ if [ -d $(OBJDIR) ]; then rmdir $(OBJDIR); fi
+
+# Deleting all files created by configuring or building the program
+# -----------------------------------------------------------------
+distclean: clean
+ rm -f Makefile
+
+# Like clean but some files may still exist
+# -----------------------------------------
+mostlyclean:
+ rm -f *core *[%~] *.[oa]
+ rm -f .[a-z]*~
+ rm -f $(top_builddir)/bin/sdaspdk$(EXEEXT)
+
+# Deleting everything that can reconstructed by this Makefile. It deletes
+# everything deleted by distclean plus files created by bison, etc.
+# -----------------------------------------------------------------------
+realclean: distclean
diff --git a/sdas/aspdk16/pdk16mch.c b/sdas/aspdk16/pdk16mch.c
new file mode 100644
index 0000000..881a462
--- /dev/null
+++ b/sdas/aspdk16/pdk16mch.c
@@ -0,0 +1,261 @@
+ /* pdk14mch.c */
+
+/*
+ * Copyright (C) 1998-2011 Alan R. Baldwin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ *
+ * Alan R. Baldwin
+ * 721 Berkeley St.
+ * Kent, Ohio 44240
+ *
+ * This Assember Ported by
+ * John L. Hartman (JLH)
+ * jhartman at compuserve dot com
+ * noice at noicedebugger dot com
+ *
+ * Benny Kim (2011/07/21)
+ * bennykim at coreriver dot com
+ * Fixed bugs in relative address with "."
+ */
+
+#include "sdas.h"
+#include "asxxxx.h"
+#include "pdk.h"
+
+char *cpu = "Padauk 16";
+char *dsft = "asm";
+
+/*
+ * Process machine ops.
+ */
+VOID
+machine(struct mne *mp)
+{
+ a_uint op;
+ int combine;
+
+ /* Set the target in case it was not automatically
+ * configured from the executable filename.
+ */
+ set_sdas_target (TARGET_ID_PDK16);
+
+ op = mp->m_valu;
+ combine = 0;
+
+ /* Default instructions are only used for A -> K instructions.
+ * Although they may be (ab)used for other types.
+ */
+ struct inst def = {op, 0xFF};
+ switch (mp->m_type) {
+
+ case S_MOV: {
+ struct inst ioa = {0x0080, 0x3F};
+ struct inst aio = {0x00C0, 0x3F};
+ struct inst ma = {0x05C0, 0x3F};
+ struct inst am = {0x07C0, 0x3F};
+ emov(def, ioa, aio, ma, am);
+ break;
+ }
+
+ case S_IDXM: {
+ struct inst am = {op | 1, 0x1E};
+ struct inst ma = {op, 0x1E};
+ eidxm(am, ma);
+ break;
+ }
+
+ case S_SUB:
+ combine = 0x40;
+ /* fallthrough */
+ case S_ADD: {
+ struct inst ma = {0x0400 | combine, 0x3F};
+ struct inst am = {0x0600 | combine, 0x3F};
+ earith(def, ma, am);
+ break;
+ }
+
+ case S_SUBC:
+ combine = 0x40;
+ /* fallthrough */
+ case S_ADDC: {
+ struct inst ma = {0x0480 | combine, 0x3F};
+ struct inst am = {0x0680 | combine, 0x3F};
+ struct inst a = {0x0010 + (combine >> 6), 0x00};
+ struct inst m = {0x0800 + combine, 0x3F};
+ earithc(ma, am, m, a);
+ break;
+ }
+
+ case S_SLC:
+ case S_SRC:
+ case S_SL:
+ case S_SR: {
+ if (mp->m_type == S_SRC || mp->m_type == S_SLC)
+ combine = 2;
+ if (mp->m_type == S_SL || mp->m_type == S_SLC)
+ combine += 1;
+
+ struct inst a = {0x001A + combine, 0x00};
+ struct inst m = {0x0A00 + (combine << 6), 0x3F};
+ eshift(a, m);
+ break;
+ }
+
+ case S_OR:
+ case S_XOR:
+ case S_AND: {
+ if (mp->m_type == S_OR) {
+ combine = 0x40;
+ } else
+ if (mp->m_type == S_XOR) {
+ combine = 0x80;
+ }
+
+ struct inst ma = {0x0500 | combine, 0x3F};
+ struct inst am = {0x0700 | combine, 0x3F};
+ struct inst ioa = {0x0060, 0x1F};
+ ebit(def, ma, am, mp->m_type == S_XOR ? &ioa : NULL);
+ break;
+ }
+
+ case S_NEG:
+ combine = 0x40;
+ /* fallthrough */
+ case S_NOT: {
+ struct inst m = {0x0A00 | combine, 0x3F};
+ enot(def, m);
+ break;
+ }
+
+ case S_SET1:
+ combine = 0x100;
+ /* fallthrough */
+ case S_SET0: {
+ struct inst io = {0x0E00 | combine, 0x1F};
+ struct inst m = {0x0300 | combine, 0x1F};
+ ebitn(io, m, /*N offset*/5);
+ break;
+ }
+
+ case S_CNEQSN:
+ combine = 0x40;
+ /* fallthrough */
+ case S_CEQSN: {
+ struct inst m = {0x0B80 | combine, 0xFF};
+ def.op |= combine << 2;
+ eskip(def, m);
+ break;
+ }
+
+ case S_T1SN:
+ combine = 0x100;
+ /* fallthrough */
+ case S_T0SN: {
+ struct inst io = {0x0C00 | combine, 0x1F};
+ struct inst m = {0x0200 | combine, 0x1F};
+ ebitn(io, m, /*N offset*/5);
+ break;
+ }
+
+ case S_DZSN:
+ combine = 0x40;
+ /* fallthrough */
+ case S_IZSN: {
+ struct inst m = {0x0880 | combine, 0x3F};
+ ezsn(def, m);
+ break;
+ }
+
+ case S_RET: {
+ struct inst k = {0x0100, 0xFF};
+ eret(def, k);
+ break;
+ }
+
+ case S_INC:
+ case S_DEC:
+ case S_CLEAR:
+ def.mask = 0x3F;
+ eone(def);
+ break;
+
+ case S_CALL:
+ case S_GOTO: {
+ struct expr e;
+ clrexpr(&e);
+ waddrmode = 1;
+ expr(&e, 0);
+ waddrmode = 0;
+ outrwp(&e, def.op, 0x3FF, /*jump=*/1);
+ break;
+ }
+
+ case S_XCH:
+ def.mask = 0x3F;
+ exch(def);
+ break;
+
+ case S_PUSHAF:
+ case S_POPAF:
+ epupo(def);
+ break;
+
+ case S_LDT16:
+ case S_STT16:
+ def.mask = 0x3E;
+ eone(def);
+ break;
+
+ case S_SWAP:
+ case S_PCADD:
+ eopta(def);
+ break;
+
+ /* Simple instructions consisting of only one opcode and no args */
+ case S_RETI:
+ case S_NOP:
+ case S_ENGINT:
+ case S_DISGINT:
+ case S_STOPSYS:
+ case S_STOPEXE:
+ case S_RESET:
+ case S_WDRESET:
+ case S_MUL:
+ case S_LDSPTL: /* undocumented */
+ case S_LDSPTH: /* undocumented */
+ outaw(op);
+ break;
+ }
+}
+
+/*
+ * Machine specific initialization
+ */
+
+VOID
+minit(void)
+{
+ /*
+ * Byte Order
+ */
+ hilo = 0;
+
+ /*
+ * Address Space
+ */
+ exprmasks(3);
+}
+
diff --git a/sdas/aspdk16/pdk16pst.c b/sdas/aspdk16/pdk16pst.c
new file mode 100644
index 0000000..5ef1801
--- /dev/null
+++ b/sdas/aspdk16/pdk16pst.c
@@ -0,0 +1,198 @@
+/* pdk14pst.c */
+
+/*
+ * Copyright (C) 1998-2009 Alan R. Baldwin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ *
+ * Alan R. Baldwin
+ * 721 Berkeley St.
+ * Kent, Ohio 44240
+ *
+ * This Assembler Ported by
+ * John L. Hartman (JLH)
+ * jhartman at compuserve dot com
+ * noice at noicedebugger dot com
+ *
+ */
+
+#include "asxxxx.h"
+#include "pdk.h"
+
+/*
+ * Mnemonic Structure
+ */
+struct mne mne[] = {
+
+ /* machine */
+
+ /* system */
+
+
+ { NULL, "CON", S_ATYP, 0, A_CON },
+ { NULL, "OVR", S_ATYP, 0, A_OVR },
+ { NULL, "REL", S_ATYP, 0, A_REL },
+ { NULL, "ABS", S_ATYP, 0, A_ABS },
+ { NULL, "NOPAG", S_ATYP, 0, A_NOPAG },
+ { NULL, "PAG", S_ATYP, 0, A_PAG },
+
+ { NULL, "CODE", S_ATYP, 0, A_CODE },
+ { NULL, "DATA", S_ATYP, 0, A_DATA },
+ { NULL, "XDATA", S_ATYP, 0, A_XDATA },
+ { NULL, "BIT", S_ATYP, 0, A_BIT },
+
+ { NULL, ".page", S_PAGE, 0, 0 },
+ { NULL, ".title", S_HEADER, 0, O_TITLE },
+ { NULL, ".sbttl", S_HEADER, 0, O_SBTTL },
+ { NULL, ".module", S_MODUL, 0, 0 },
+ { NULL, ".include", S_INCL, 0, 0 },
+ { NULL, ".area", S_AREA, 0, 0 },
+ { NULL, ".org", S_ORG, 0, 0 },
+ { NULL, ".radix", S_RADIX, 0, 0 },
+ { NULL, ".globl", S_GLOBL, 0, 0 },
+ { NULL, ".local", S_LOCAL, 0, 0 },
+ { NULL, ".if", S_CONDITIONAL, 0, O_IF },
+ { NULL, ".iff", S_CONDITIONAL, 0, O_IFF },
+ { NULL, ".ift", S_CONDITIONAL, 0, O_IFT },
+ { NULL, ".iftf", S_CONDITIONAL, 0, O_IFTF },
+ { NULL, ".ifgt", S_CONDITIONAL, 0, O_IFGT },
+ { NULL, ".iflt", S_CONDITIONAL, 0, O_IFLT },
+ { NULL, ".ifge", S_CONDITIONAL, 0, O_IFGE },
+ { NULL, ".ifle", S_CONDITIONAL, 0, O_IFLE },
+ { NULL, ".ifeq", S_CONDITIONAL, 0, O_IFEQ },
+ { NULL, ".ifne", S_CONDITIONAL, 0, O_IFNE },
+ { NULL, ".iif", S_CONDITIONAL, 0, O_IIF },
+ { NULL, ".iiff", S_CONDITIONAL, 0, O_IIFF },
+ { NULL, ".iift", S_CONDITIONAL, 0, O_IIFT },
+ { NULL, ".iiftf", S_CONDITIONAL, 0, O_IIFTF },
+ { NULL, ".iifgt", S_CONDITIONAL, 0, O_IIFGT },
+ { NULL, ".iiflt", S_CONDITIONAL, 0, O_IIFLT },
+ { NULL, ".iifge", S_CONDITIONAL, 0, O_IIFGE },
+ { NULL, ".iifle", S_CONDITIONAL, 0, O_IIFLE },
+ { NULL, ".iifeq", S_CONDITIONAL, 0, O_IIFEQ },
+ { NULL, ".iifne", S_CONDITIONAL, 0, O_IIFNE },
+ { NULL, ".else", S_CONDITIONAL, 0, O_ELSE },
+ { NULL, ".endif", S_CONDITIONAL, 0, O_ENDIF },
+ { NULL, ".list", S_LISTING, 0, O_LIST },
+ { NULL, ".nlist", S_LISTING, 0, O_NLIST },
+ { NULL, ".equ", S_EQU, 0, O_EQU },
+ { NULL, ".gblequ", S_EQU, 0, O_GBLEQU},
+ { NULL, ".lclequ", S_EQU, 0, O_LCLEQU},
+/* sdas specific */
+ { NULL, ".optsdcc", S_OPTSDCC, 0, 0 },
+/* end sdas specific */
+ { NULL, ".byte", S_DATA, 0, O_1BYTE },
+ { NULL, ".db", S_DATA, 0, O_1BYTE },
+ { NULL, ".fcb", S_DATA, 0, O_1BYTE },
+ { NULL, ".word", S_DATA, 0, O_2BYTE },
+ { NULL, ".dw", S_DATA, 0, O_2BYTE },
+ { NULL, ".fdb", S_DATA, 0, O_2BYTE },
+/* { NULL, ".3byte", S_DATA, 0, O_3BYTE }, */
+/* { NULL, ".triple", S_DATA, 0, O_3BYTE }, */
+/* { NULL, ".4byte", S_DATA, 0, O_4BYTE }, */
+/* { NULL, ".quad", S_DATA, 0, O_4BYTE }, */
+ { NULL, ".blkb", S_BLK, 0, O_1BYTE },
+ { NULL, ".ds", S_BLK, 0, O_1BYTE },
+ { NULL, ".rmb", S_BLK, 0, O_1BYTE },
+ { NULL, ".rs", S_BLK, 0, O_1BYTE },
+ { NULL, ".blkw", S_BLK, 0, O_2BYTE },
+/* { NULL, ".blk3", S_BLK, 0, O_3BYTE }, */
+/* { NULL, ".blk4", S_BLK, 0, O_4BYTE }, */
+ { NULL, ".ascii", S_ASCIX, 0, O_ASCII },
+ { NULL, ".ascis", S_ASCIX, 0, O_ASCIS },
+ { NULL, ".asciz", S_ASCIX, 0, O_ASCIZ },
+ { NULL, ".str", S_ASCIX, 0, O_ASCII },
+ { NULL, ".strs", S_ASCIX, 0, O_ASCIS },
+ { NULL, ".strz", S_ASCIX, 0, O_ASCIZ },
+ { NULL, ".fcc", S_ASCIX, 0, O_ASCII },
+ { NULL, ".even", S_BOUNDARY, 0, O_EVEN },
+ { NULL, ".odd", S_BOUNDARY, 0, O_ODD },
+ { NULL, ".bndry", S_BOUNDARY, 0, O_BNDRY },
+
+ /* Macro Processor */
+
+ { NULL, ".macro", S_MACRO, 0, O_MACRO },
+ { NULL, ".endm", S_MACRO, 0, O_ENDM },
+ { NULL, ".mexit", S_MACRO, 0, O_MEXIT },
+
+ { NULL, ".narg", S_MACRO, 0, O_NARG },
+ { NULL, ".nchr", S_MACRO, 0, O_NCHR },
+ { NULL, ".ntyp", S_MACRO, 0, O_NTYP },
+
+ { NULL, ".irp", S_MACRO, 0, O_IRP },
+ { NULL, ".irpc", S_MACRO, 0, O_IRPC },
+ { NULL, ".rept", S_MACRO, 0, O_REPT },
+
+ { NULL, ".nval", S_MACRO, 0, O_NVAL },
+
+ { NULL, ".mdelete", S_MACRO, 0, O_MDEL },
+
+ /* machine */
+
+ { NULL, "a", S_A, 0, 0xFF },
+
+ { NULL, "nop", S_NOP, 0, 0x0000 },
+ { NULL, "ret", S_RET, 0, 0x003A },
+ { NULL, "reti", S_RETI, 0, 0x003B },
+ { NULL, "mov", S_MOV, 0, 0x1700 },
+ { NULL, "ldt16", S_LDT16, 0, 0x00c1 },
+ { NULL, "stt16", S_STT16, 0, 0x00c0 },
+ { NULL, "idxm", S_IDXM, 0, 0x00e0 },
+ { NULL, "xch", S_XCH, 0, 0x09C0 },
+ { NULL, "pushaf", S_PUSHAF, 0, 0x0032 },
+ { NULL, "popaf", S_POPAF, 0, 0x0033 },
+ { NULL, "push", S_PUSHAF, 0, 0x2032 },
+ { NULL, "pop", S_POPAF, 0, 0x2033 },
+ { NULL, "add", S_ADD, 0, 0x1000 },
+ { NULL, "addc", S_ADDC, 0, 0x0010 },
+ { NULL, "sub", S_SUB, 0, 0x1100 },
+ { NULL, "subc", S_SUBC, 0, 0x0011 },
+ { NULL, "inc", S_INC, 0, 0x0900 },
+ { NULL, "dec", S_DEC, 0, 0x0940 },
+ { NULL, "clear", S_CLEAR, 0, 0x0980 },
+ { NULL, "sr", S_SR, 0, 0x001A },
+ { NULL, "src", S_SRC, 0, 0x001C },
+ { NULL, "sl", S_SL, 0, 0x001B },
+ { NULL, "slc", S_SLC, 0, 0x001D },
+ { NULL, "swap", S_SWAP, 0, 0x001E },
+ { NULL, "and", S_AND, 0, 0x1400 },
+ { NULL, "or", S_OR, 0, 0x1500 },
+ { NULL, "xor", S_XOR, 0, 0x1600 },
+ { NULL, "not", S_NOT, 0, 0x0018 },
+ { NULL, "neg", S_NEG, 0, 0x0019 },
+ { NULL, "set0", S_SET0, 0, 0x0000 },
+ { NULL, "set1", S_SET1, 0, 0x0000 },
+ { NULL, "ceqsn", S_CEQSN, 0, 0x1200 },
+ { NULL, "t0sn", S_T0SN, 0, 0x0000 },
+ { NULL, "t1sn", S_T1SN, 0, 0x0001 },
+ { NULL, "izsn", S_IZSN, 0, 0x0012 },
+ { NULL, "dzsn", S_DZSN, 0, 0x0013 },
+ { NULL, "call", S_CALL, 0, 0x3800 },
+ { NULL, "goto", S_GOTO, 0, 0x3000 },
+ { NULL, "pcadd", S_PCADD, 0, 0x0017 },
+ { NULL, "engint", S_ENGINT, 0, 0x0038 },
+ { NULL, "disgint", S_DISGINT, 0, 0x0039 },
+ { NULL, "stopsys", S_STOPSYS, 0, 0x0036 },
+ { NULL, "stopexe", S_STOPEXE, 0, 0x0037 },
+ { NULL, "reset", S_RESET, 0, 0x0035 },
+ { NULL, "wdreset", S_WDRESET, 0, 0x0030 },
+ { NULL, "cneqsn", S_CNEQSN, 0, 0x1300 },
+ { NULL, "mul", S_MUL, 0, 0x003C },
+ { NULL, "ldsptl", S_LDSPTL, 0, 0x0006 },
+ { NULL, "delay", S_DELAY, 0, 0x001F },
+ { NULL, "popwpc", S_POPWPC, 0, 0x0060 },
+ { NULL, "pmode", S_PMODE, 0, 0x0040 },
+ { NULL, "ldspth", S_LDSPTH, S_EOL, 0x0007 },
+};