diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
| commit | 268a53de823a6750d6256ee1fb1e7707b4b45740 (patch) | |
| tree | 42c1799a9a82b2f7d9790ee9fe181d72a7274751 /sdas/aspdk13 | |
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'sdas/aspdk13')
| -rw-r--r-- | sdas/aspdk13/Makefile | 145 | ||||
| -rw-r--r-- | sdas/aspdk13/Makefile.in | 145 | ||||
| -rw-r--r-- | sdas/aspdk13/clean.mk | 25 | ||||
| -rw-r--r-- | sdas/aspdk13/pdk13mch.c | 266 | ||||
| -rw-r--r-- | sdas/aspdk13/pdk13pst.c | 194 |
5 files changed, 775 insertions, 0 deletions
diff --git a/sdas/aspdk13/Makefile b/sdas/aspdk13/Makefile new file mode 100644 index 0000000..473886e --- /dev/null +++ b/sdas/aspdk13/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 = pdk13pst.c pdk13mch.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/sdaspdk13$(EXEEXT) +#DEST = $(DESTDIR)$(bindir)/sdaspdk13$(EXEEXT) +DEST = sdaspdk13 +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/aspdk13/Makefile.in b/sdas/aspdk13/Makefile.in new file mode 100644 index 0000000..a1cac5d --- /dev/null +++ b/sdas/aspdk13/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 = pdk13pst.c pdk13mch.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/sdaspdk13$(EXEEXT) +#DEST = $(DESTDIR)$(bindir)/sdaspdk13$(EXEEXT) +DEST = sdaspdk13 +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/aspdk13/clean.mk b/sdas/aspdk13/clean.mk new file mode 100644 index 0000000..976b05f --- /dev/null +++ b/sdas/aspdk13/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/aspdk13/pdk13mch.c b/sdas/aspdk13/pdk13mch.c new file mode 100644 index 0000000..65adaa6 --- /dev/null +++ b/sdas/aspdk13/pdk13mch.c @@ -0,0 +1,266 @@ + /* 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 13"; +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_PDK13); + + 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, 0x1F}; + struct inst aio = {0x00A0, 0x1F}; + 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 = {0x0A80 + (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: { + struct inst io = {0x0F00, 0x1F}; + struct inst m = {0x0310, 0x0F}; + ebitn(io, m, /*N offset*/5); + break; + } + + case S_SET0: { + struct inst io = {0x0E00, 0x1F}; + struct inst m = {0x0300, 0x0F}; + ebitn(io, m, /*N offset*/5); + break; + } + + case S_CEQSN: { + struct inst m = {0x0B80, 0xFF}; + def.op |= combine << 2; + eskip(def, m); + break; + } + + case S_T1SN: { + struct inst io = {0x0D00, 0x1F}; + struct inst m = {0x0210, 0x0F}; + ebitn(io, m, /*N offset*/5); + break; + } + + case S_T0SN: { + struct inst io = {0x0C00, 0x1F}; + struct inst m = {0x0200, 0x0F}; + 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/aspdk13/pdk13pst.c b/sdas/aspdk13/pdk13pst.c new file mode 100644 index 0000000..269e615 --- /dev/null +++ b/sdas/aspdk13/pdk13pst.c @@ -0,0 +1,194 @@ +/* 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, 0x0001 }, + { 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, 0x1c00 }, + { NULL, "goto", S_GOTO, 0, 0x1800 }, + { 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, "mul", S_MUL, 0, 0x003C }, + { NULL, "ldsptl", S_LDSPTL, 0, 0x0006 }, + { NULL, "ldspth", S_LDSPTH, S_EOL, 0x0007 }, +}; |
