--- /dev/null
+/* i85mch.c */\r
+\r
+/*\r
+ * Copyright (C) 1989-2014 Alan R. Baldwin\r
+ *\r
+ * This program is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.\r
+ *\r
+ *\r
+ * Alan R. Baldwin\r
+ * 721 Berkeley St.\r
+ * Kent, Ohio 44240\r
+ */\r
+\r
+#include "asxxxx.h"\r
+#include "lcop8.h"\r
+\r
+char *cpu = "Intel 8085";\r
+char *dsft = "asm";\r
+\r
+/*\r
+ * Opcode Cycle Definitions\r
+ */\r
+#define OPCY_SDP ((char) (0xFF))\r
+#define OPCY_ERR ((char) (0xFE))\r
+\r
+/* OPCY_NONE ((char) (0x80)) */\r
+/* OPCY_MASK ((char) (0x7F)) */\r
+\r
+#define UN ((char) (OPCY_NONE | 0x00))\r
+\r
+/*\r
+ * 8085 Cycle Count\r
+ *\r
+ * opcycles = i85pg1[opcode]\r
+ */\r
+static char i85pg1[256] = {\r
+/*--*--* 0 1 2 3 4 5 6 7 8 9 A B C D E F */\r
+/*--*--* - - - - - - - - - - - - - - - - */\r
+/*00*/ 4,10, 7, 6, 4, 4, 7, 4,10,10, 7, 6, 4, 4, 7, 4,\r
+/*10*/ 7,10, 7, 6, 4, 4, 7, 4,10,10, 7, 6, 4, 4, 7, 4,\r
+/*20*/ 4,10,16, 6, 4, 4, 7, 4,10,10,16, 6, 4, 4, 7, 4,\r
+/*30*/ 4,10,13, 6,10,10,10, 4,10,10,13, 6, 4, 4, 7, 4,\r
+/*40*/ 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4,\r
+/*50*/ 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4,\r
+/*60*/ 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4,\r
+/*70*/ 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4,\r
+/*80*/ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\r
+/*90*/ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\r
+/*A0*/ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\r
+/*B0*/ 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\r
+/*C0*/ 12,10,10,10,18,12, 7,12,12,10,10,12,18,18, 7,12,\r
+/*D0*/ 12,10,10,10,18,12, 7,12,12,10,10,10,18,10, 7,12,\r
+/*E0*/ 12,10,10,16,18,12, 7,12,12, 6,10, 4,18,10, 7,12,\r
+/*F0*/ 12,10,10, 4,18,12, 7,12,12, 6,10, 4,18,10, 7,12\r
+};\r
+\r
+/*\r
+ * Process machine ops.\r
+ */\r
+VOID\r
+machine(mp)\r
+struct mne *mp;\r
+{\r
+ unsigned op, rd, rs;\r
+ struct expr e;\r
+\r
+ clrexpr(&e);\r
+ op = (int) mp->m_valu;\r
+ switch (mp->m_type) {\r
+\r
+ case S_INH:\r
+ outab(op);\r
+ break;\r
+\r
+ case S_RST:\r
+ rd = (int) absexpr();\r
+ if (rd > 7)\r
+ aerr();\r
+ out3(op, rd);\r
+ break;\r
+\r
+ case S_ADI:\r
+ expr(&e, 0);\r
+ outab(op);\r
+ outrb(&e, 0);\r
+ break;\r
+\r
+ case S_ADD:\r
+ rd = reg();\r
+ if (rd > A)\r
+ aerr();\r
+ outab(op | rd);\r
+ break;\r
+\r
+ case S_JMP:\r
+ expr(&e, 0);\r
+ outab(op);\r
+ outrw(&e, 0);\r
+ break;\r
+\r
+ case S_INR:\r
+ rd = reg();\r
+ if (rd > A)\r
+ aerr();\r
+ out3(op, rd);\r
+ break;\r
+\r
+ case S_LXI:\r
+ rd = reg();\r
+ comma(1);\r
+ expr(&e, 0);\r
+ out3(op, regpair(rd, SP));\r
+ outrw(&e, 0);\r
+ break;\r
+\r
+ case S_LDAX:\r
+ rd = reg();\r
+ if (rd!=B && rd!=D)\r
+ aerr();\r
+ out3(op, rd);\r
+ break;\r
+\r
+ case S_INX:\r
+ rd = reg();\r
+ out3(op, regpair(rd, SP));\r
+ break;\r
+\r
+ case S_PUSH:\r
+ rd = reg();\r
+ out3(op, regpair(rd, PSW));\r
+ break;\r
+\r
+ case S_MOV:\r
+ rd = reg();\r
+ comma(1);\r
+ rs = reg();\r
+ if (rs>A || rd>A)\r
+ aerr();\r
+ outab(op | rs | (rd<<3));\r
+ break;\r
+\r
+ case S_MVI:\r
+ rd = reg();\r
+ comma(1);\r
+ expr(&e, 0);\r
+ if (rd > A)\r
+ aerr();\r
+ out3(op, rd);\r
+ outrb(&e, 0);\r
+ break;\r
+\r
+ default:\r
+ opcycles = OPCY_ERR;\r
+ err('o');\r
+ break;\r
+ }\r
+ if (opcycles == OPCY_NONE) {\r
+ opcycles = i85pg1[cb[0] & 0xFF];\r
+ }\r
+}\r
+\r
+/*\r
+ * Output a | (b<<3);\r
+ */\r
+VOID\r
+out3(a, b)\r
+int a;\r
+int b;\r
+{\r
+ outab(a | (b<<3));\r
+}\r
+\r
+/*\r
+ * Make sure that `r' is usable as a\r
+ * register pair specifier. The extra\r
+ * register (code 3) is `s'.\r
+ */\r
+int\r
+regpair(r, s)\r
+int r;\r
+int s;\r
+{\r
+ if (r < M) {\r
+ if (r&01)\r
+ aerr();\r
+ } else if (r == s)\r
+ r = 6;\r
+ else\r
+ aerr();\r
+ return (r);\r
+}\r
+\r
+/*\r
+ * Read a register name.\r
+ */\r
+int\r
+reg()\r
+{\r
+ struct mne *mp;\r
+ char id[NCPS];\r
+\r
+ getid(id, -1);\r
+ if ((mp = mlookup(id))==NULL || mp->m_type!=S_REG) {\r
+ aerr();\r
+ return (0);\r
+ }\r
+ return ((int) mp->m_valu);\r
+}\r
+\r
+/*\r
+ *Machine specific initialization.\r
+ */\r
+VOID\r
+minit()\r
+{\r
+ /*\r
+ * Byte Order\r
+ */\r
+ hilo = 0;\r
+}\r
--- /dev/null
+/* i85pst.c */\r
+\r
+/*\r
+ * Copyright (C) 1989-2014 Alan R. Baldwin\r
+ *\r
+ * This program is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.\r
+ *\r
+ *\r
+ * Alan R. Baldwin\r
+ * 721 Berkeley St.\r
+ * Kent, Ohio 44240\r
+ *\r
+ * Undocumented Instructions\r
+ * implemented by:\r
+ * John R. Hogerhuis\r
+ */\r
+\r
+#include "asxxxx.h"\r
+#include "lcop8.h"\r
+\r
+/*\r
+ * Coding Banks\r
+ */\r
+struct bank bank[2] = {\r
+ /* The '_CODE' area/bank has a NULL default file suffix. */\r
+ { NULL, "_CSEG", NULL, 0, 0, 0, 0, 0 },\r
+ { &bank[0], "_DSEG", "_DS", 1, 0, 0, 0, B_FSFX }\r
+};\r
+\r
+/*\r
+ * Coding Areas\r
+ */\r
+struct area area[2] = {\r
+ { NULL, &bank[0], "_CODE", 0, 0, 0, A_1BYTE|A_BNK|A_CSEG },\r
+ { &area[0], &bank[1], "_DATA", 1, 0, 0, A_1BYTE|A_BNK|A_DSEG }\r
+};\r
+\r
+/*\r
+ * Basic Relocation Mode Definition\r
+ *\r
+ * #define R_NORM 0000 No Bit Positioning\r
+ */\r
+char mode0[32] = { /* R_NORM */\r
+ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',\r
+ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',\r
+ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',\r
+ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237'\r
+};\r
+\r
+/*\r
+ * Additional Relocation Mode Definitions\r
+ */\r
+\r
+/* None Required */\r
+\r
+/*\r
+ * *m_def is a pointer to the bit relocation definition.\r
+ * m_flag indicates that bit position swapping is required.\r
+ * m_dbits contains the active bit positions for the output.\r
+ * m_sbits contains the active bit positions for the input.\r
+ *\r
+ * struct mode\r
+ * {\r
+ * char * m_def; Bit Relocation Definition\r
+ * a_uint m_flag; Bit Swapping Flag\r
+ * a_uint m_dbits; Destination Bit Mask\r
+ * a_uint m_sbits; Source Bit Mask\r
+ * };\r
+ */\r
+struct mode mode[1] = {\r
+ { &mode0[0], 0, 0x0000FFFF, 0x0000FFFF }\r
+};\r
+\r
+/*\r
+ * Array of Pointers to mode Structures\r
+ */\r
+struct mode *modep[16] = {\r
+ &mode[0], NULL, NULL, NULL,\r
+ NULL, NULL, NULL, NULL,\r
+ NULL, NULL, NULL, NULL,\r
+ NULL, NULL, NULL, NULL\r
+};\r
+\r
+/*\r
+ * Mnemonic Structure\r
+ */\r
+struct mne mne[] = {\r
+\r
+ /* machine */\r
+\r
+ /* system */\r
+\r
+ { NULL, "CSEG", S_ATYP, 0, A_CSEG|A_1BYTE },\r
+ { NULL, "DSEG", S_ATYP, 0, A_DSEG|A_1BYTE },\r
+\r
+ /* system */\r
+\r
+ { NULL, "BANK", S_ATYP, 0, A_BNK },\r
+ { NULL, "CON", S_ATYP, 0, A_CON },\r
+ { NULL, "OVR", S_ATYP, 0, A_OVR },\r
+ { NULL, "REL", S_ATYP, 0, A_REL },\r
+ { NULL, "ABS", S_ATYP, 0, A_ABS },\r
+ { NULL, "NOPAG", S_ATYP, 0, A_NOPAG },\r
+ { NULL, "PAG", S_ATYP, 0, A_PAG },\r
+\r
+ { NULL, "BASE", S_BTYP, 0, B_BASE },\r
+ { NULL, "SIZE", S_BTYP, 0, B_SIZE },\r
+ { NULL, "FSFX", S_BTYP, 0, B_FSFX },\r
+ { NULL, "MAP", S_BTYP, 0, B_MAP },\r
+\r
+ { NULL, ".page", S_PAGE, 0, 0 },\r
+ { NULL, ".title", S_HEADER, 0, O_TITLE },\r
+ { NULL, ".sbttl", S_HEADER, 0, O_SBTTL },\r
+ { NULL, ".module", S_MODUL, 0, 0 },\r
+ { NULL, ".include", S_INCL, 0, 0 },\r
+ { NULL, ".area", S_AREA, 0, 0 },\r
+ { NULL, ".bank", S_BANK, 0, 0 },\r
+ { NULL, ".org", S_ORG, 0, 0 },\r
+ { NULL, ".radix", S_RADIX, 0, 0 },\r
+ { NULL, ".globl", S_GLOBL, 0, 0 },\r
+ { NULL, ".local", S_LOCAL, 0, 0 },\r
+ { NULL, ".if", S_CONDITIONAL, 0, O_IF },\r
+ { NULL, ".iff", S_CONDITIONAL, 0, O_IFF },\r
+ { NULL, ".ift", S_CONDITIONAL, 0, O_IFT },\r
+ { NULL, ".iftf", S_CONDITIONAL, 0, O_IFTF },\r
+ { NULL, ".ifdef", S_CONDITIONAL, 0, O_IFDEF },\r
+ { NULL, ".ifndef", S_CONDITIONAL, 0, O_IFNDEF},\r
+ { NULL, ".ifgt", S_CONDITIONAL, 0, O_IFGT },\r
+ { NULL, ".iflt", S_CONDITIONAL, 0, O_IFLT },\r
+ { NULL, ".ifge", S_CONDITIONAL, 0, O_IFGE },\r
+ { NULL, ".ifle", S_CONDITIONAL, 0, O_IFLE },\r
+ { NULL, ".ifeq", S_CONDITIONAL, 0, O_IFEQ },\r
+ { NULL, ".ifne", S_CONDITIONAL, 0, O_IFNE },\r
+ { NULL, ".ifb", S_CONDITIONAL, 0, O_IFB },\r
+ { NULL, ".ifnb", S_CONDITIONAL, 0, O_IFNB },\r
+ { NULL, ".ifidn", S_CONDITIONAL, 0, O_IFIDN },\r
+ { NULL, ".ifdif", S_CONDITIONAL, 0, O_IFDIF },\r
+ { NULL, ".iif", S_CONDITIONAL, 0, O_IIF },\r
+ { NULL, ".iiff", S_CONDITIONAL, 0, O_IIFF },\r
+ { NULL, ".iift", S_CONDITIONAL, 0, O_IIFT },\r
+ { NULL, ".iiftf", S_CONDITIONAL, 0, O_IIFTF },\r
+ { NULL, ".iifdef", S_CONDITIONAL, 0, O_IIFDEF},\r
+ { NULL, ".iifndef", S_CONDITIONAL, 0, O_IIFNDEF},\r
+ { NULL, ".iifgt", S_CONDITIONAL, 0, O_IIFGT },\r
+ { NULL, ".iiflt", S_CONDITIONAL, 0, O_IIFLT },\r
+ { NULL, ".iifge", S_CONDITIONAL, 0, O_IIFGE },\r
+ { NULL, ".iifle", S_CONDITIONAL, 0, O_IIFLE },\r
+ { NULL, ".iifeq", S_CONDITIONAL, 0, O_IIFEQ },\r
+ { NULL, ".iifne", S_CONDITIONAL, 0, O_IIFNE },\r
+ { NULL, ".iifb", S_CONDITIONAL, 0, O_IIFB },\r
+ { NULL, ".iifnb", S_CONDITIONAL, 0, O_IIFNB },\r
+ { NULL, ".iifidn", S_CONDITIONAL, 0, O_IIFIDN},\r
+ { NULL, ".iifdif", S_CONDITIONAL, 0, O_IIFDIF},\r
+ { NULL, ".else", S_CONDITIONAL, 0, O_ELSE },\r
+ { NULL, ".endif", S_CONDITIONAL, 0, O_ENDIF },\r
+ { NULL, ".list", S_LISTING, 0, O_LIST },\r
+ { NULL, ".nlist", S_LISTING, 0, O_NLIST },\r
+ { NULL, ".equ", S_EQU, 0, O_EQU },\r
+ { NULL, ".gblequ", S_EQU, 0, O_GBLEQU},\r
+ { NULL, ".lclequ", S_EQU, 0, O_LCLEQU},\r
+ { NULL, ".byte", S_DATA, 0, O_1BYTE },\r
+ { NULL, ".db", S_DATA, 0, O_1BYTE },\r
+ { NULL, ".fcb", S_DATA, 0, O_1BYTE },\r
+ { NULL, ".word", S_DATA, 0, O_2BYTE },\r
+ { NULL, ".dw", S_DATA, 0, O_2BYTE },\r
+ { NULL, ".fdb", S_DATA, 0, O_2BYTE },\r
+/* { NULL, ".3byte", S_DATA, 0, O_3BYTE }, */\r
+/* { NULL, ".triple", S_DATA, 0, O_3BYTE }, */\r
+/* { NULL, ".4byte", S_DATA, 0, O_4BYTE }, */\r
+/* { NULL, ".quad", S_DATA, 0, O_4BYTE }, */\r
+ { NULL, ".blkb", S_BLK, 0, O_1BYTE },\r
+ { NULL, ".ds", S_BLK, 0, O_1BYTE },\r
+ { NULL, ".rmb", S_BLK, 0, O_1BYTE },\r
+ { NULL, ".rs", S_BLK, 0, O_1BYTE },\r
+ { NULL, ".blkw", S_BLK, 0, O_2BYTE },\r
+/* { NULL, ".blk3", S_BLK, 0, O_3BYTE }, */\r
+/* { NULL, ".blk4", S_BLK, 0, O_4BYTE }, */\r
+ { NULL, ".ascii", S_ASCIX, 0, O_ASCII },\r
+ { NULL, ".ascis", S_ASCIX, 0, O_ASCIS },\r
+ { NULL, ".asciz", S_ASCIX, 0, O_ASCIZ },\r
+ { NULL, ".str", S_ASCIX, 0, O_ASCII },\r
+ { NULL, ".strs", S_ASCIX, 0, O_ASCIS },\r
+ { NULL, ".strz", S_ASCIX, 0, O_ASCIZ },\r
+ { NULL, ".fcc", S_ASCIX, 0, O_ASCII },\r
+ { NULL, ".define", S_DEFINE, 0, O_DEF },\r
+ { NULL, ".undefine", S_DEFINE, 0, O_UNDEF },\r
+ { NULL, ".even", S_BOUNDARY, 0, O_EVEN },\r
+ { NULL, ".odd", S_BOUNDARY, 0, O_ODD },\r
+ { NULL, ".bndry", S_BOUNDARY, 0, O_BNDRY },\r
+ { NULL, ".msg" , S_MSG, 0, 0 },\r
+ { NULL, ".assume", S_ERROR, 0, O_ASSUME},\r
+ { NULL, ".error", S_ERROR, 0, O_ERROR },\r
+/* { NULL, ".msb", S_MSB, 0, 0 }, */\r
+/* { NULL, ".lohi", S_MSB, 0, O_LOHI }, */\r
+/* { NULL, ".hilo", S_MSB, 0, O_HILO }, */\r
+/* { NULL, ".8bit", S_BITS, 0, O_1BYTE }, */\r
+/* { NULL, ".16bit", S_BITS, 0, O_2BYTE }, */\r
+/* { NULL, ".24bit", S_BITS, 0, O_3BYTE }, */\r
+/* { NULL, ".32bit", S_BITS, 0, O_4BYTE }, */\r
+ { NULL, ".end", S_END, 0, 0 },\r
+\r
+ /* Macro Processor */\r
+\r
+ { NULL, ".macro", S_MACRO, 0, O_MACRO },\r
+ { NULL, ".endm", S_MACRO, 0, O_ENDM },\r
+ { NULL, ".mexit", S_MACRO, 0, O_MEXIT },\r
+\r
+ { NULL, ".narg", S_MACRO, 0, O_NARG },\r
+ { NULL, ".nchr", S_MACRO, 0, O_NCHR },\r
+ { NULL, ".ntyp", S_MACRO, 0, O_NTYP },\r
+\r
+ { NULL, ".irp", S_MACRO, 0, O_IRP },\r
+ { NULL, ".irpc", S_MACRO, 0, O_IRPC },\r
+ { NULL, ".rept", S_MACRO, 0, O_REPT },\r
+\r
+ { NULL, ".nval", S_MACRO, 0, O_NVAL },\r
+\r
+ { NULL, ".mdelete", S_MACRO, 0, O_MDEL },\r
+\r
+ /* 8080/8085 */\r
+\r
+ { NULL, "b", S_REG, 0, B },\r
+ { NULL, "c", S_REG, 0, C },\r
+ { NULL, "bc", S_REG, 0, B },\r
+ { NULL, "d", S_REG, 0, D },\r
+ { NULL, "e", S_REG, 0, E },\r
+ { NULL, "de", S_REG, 0, D },\r
+ { NULL, "h", S_REG, 0, H },\r
+ { NULL, "l", S_REG, 0, L },\r
+ { NULL, "hl", S_REG, 0, H },\r
+ { NULL, "m", S_REG, 0, M },\r
+ { NULL, "psw", S_REG, 0, PSW },\r
+ { NULL, "a", S_REG, 0, A },\r
+ { NULL, "af", S_REG, 0, PSW },\r
+ { NULL, "sp", S_REG, 0, SP },\r
+\r
+ { NULL, "xthl", S_INH, 0, 0343 },\r
+ { NULL, "sphl", S_INH, 0, 0371 },\r
+ { NULL, "pchl", S_INH, 0, 0351 },\r
+ { NULL, "xchg", S_INH, 0, 0353 },\r
+ { NULL, "ret", S_INH, 0, 0311 },\r
+ { NULL, "rc", S_INH, 0, 0330 },\r
+ { NULL, "rnc", S_INH, 0, 0320 },\r
+ { NULL, "rz", S_INH, 0, 0310 },\r
+ { NULL, "rnz", S_INH, 0, 0300 },\r
+ { NULL, "rp", S_INH, 0, 0360 },\r
+ { NULL, "rm", S_INH, 0, 0370 },\r
+ { NULL, "rpe", S_INH, 0, 0350 },\r
+ { NULL, "rpo", S_INH, 0, 0340 },\r
+ { NULL, "rim", S_INH, 0, 0040 },\r
+ { NULL, "rlc", S_INH, 0, 0007 },\r
+ { NULL, "rrc", S_INH, 0, 0017 },\r
+ { NULL, "ral", S_INH, 0, 0027 },\r
+ { NULL, "rar", S_INH, 0, 0037 },\r
+ { NULL, "cma", S_INH, 0, 0057 },\r
+ { NULL, "stc", S_INH, 0, 0067 },\r
+ { NULL, "cmc", S_INH, 0, 0077 },\r
+ { NULL, "daa", S_INH, 0, 0047 },\r
+ { NULL, "ei", S_INH, 0, 0373 },\r
+ { NULL, "di", S_INH, 0, 0363 },\r
+ { NULL, "nop", S_INH, 0, 0000 },\r
+ { NULL, "hlt", S_INH, 0, 0166 },\r
+ { NULL, "sim", S_INH, 0, 0060 },\r
+\r
+ { NULL, "rst", S_RST, 0, 0307 },\r
+\r
+ { NULL, "in", S_ADI, 0, 0333 },\r
+ { NULL, "out", S_ADI, 0, 0323 },\r
+ { NULL, "adi", S_ADI, 0, 0306 },\r
+ { NULL, "aci", S_ADI, 0, 0316 },\r
+ { NULL, "sui", S_ADI, 0, 0326 },\r
+ { NULL, "sbi", S_ADI, 0, 0336 },\r
+ { NULL, "ani", S_ADI, 0, 0346 },\r
+ { NULL, "xri", S_ADI, 0, 0356 },\r
+ { NULL, "ori", S_ADI, 0, 0366 },\r
+ { NULL, "cpi", S_ADI, 0, 0376 },\r
+\r
+ { NULL, "add", S_ADD, 0, 0200 },\r
+ { NULL, "adc", S_ADD, 0, 0210 },\r
+ { NULL, "sub", S_ADD, 0, 0220 },\r
+ { NULL, "sbb", S_ADD, 0, 0230 },\r
+ { NULL, "ana", S_ADD, 0, 0240 },\r
+ { NULL, "xra", S_ADD, 0, 0250 },\r
+ { NULL, "ora", S_ADD, 0, 0260 },\r
+ { NULL, "cmp", S_ADD, 0, 0270 },\r
+\r
+ { NULL, "sta", S_JMP, 0, 0062 },\r
+ { NULL, "lda", S_JMP, 0, 0072 },\r
+ { NULL, "shld", S_JMP, 0, 0042 },\r
+ { NULL, "lhld", S_JMP, 0, 0052 },\r
+ { NULL, "jmp", S_JMP, 0, 0303 },\r
+ { NULL, "jc", S_JMP, 0, 0332 },\r
+ { NULL, "jnc", S_JMP, 0, 0322 },\r
+ { NULL, "jz", S_JMP, 0, 0312 },\r
+ { NULL, "jnz", S_JMP, 0, 0302 },\r
+ { NULL, "jp", S_JMP, 0, 0362 },\r
+ { NULL, "jm", S_JMP, 0, 0372 },\r
+ { NULL, "jpe", S_JMP, 0, 0352 },\r
+ { NULL, "jpo", S_JMP, 0, 0342 },\r
+ { NULL, "call", S_JMP, 0, 0315 },\r
+ { NULL, "cc", S_JMP, 0, 0334 },\r
+ { NULL, "cnc", S_JMP, 0, 0324 },\r
+ { NULL, "cz", S_JMP, 0, 0314 },\r
+ { NULL, "cnz", S_JMP, 0, 0304 },\r
+ { NULL, "cp", S_JMP, 0, 0364 },\r
+ { NULL, "cm", S_JMP, 0, 0374 },\r
+ { NULL, "cpe", S_JMP, 0, 0354 },\r
+ { NULL, "cpo", S_JMP, 0, 0344 },\r
+\r
+ { NULL, "inr", S_INR, 0, 0004 },\r
+ { NULL, "dcr", S_INR, 0, 0005 },\r
+\r
+ { NULL, "lxi", S_LXI, 0, 0001 },\r
+\r
+ { NULL, "ldax", S_LDAX, 0, 0012 },\r
+ { NULL, "stax", S_LDAX, 0, 0002 },\r
+\r
+ { NULL, "inx", S_INX, 0, 0003 },\r
+ { NULL, "dcx", S_INX, 0, 0013 },\r
+ { NULL, "dad", S_INX, 0, 0011 },\r
+\r
+ { NULL, "push", S_PUSH, 0, 0305 },\r
+ { NULL, "pop", S_PUSH, 0, 0301 },\r
+\r
+ { NULL, "mov", S_MOV, 0, 0100 },\r
+\r
+ { NULL, "mvi", S_MVI, 0, 0006 },\r
+\r
+ /* Undocumented 8085 Opcodes */\r
+\r
+ { NULL, "dsub", S_INH, 0, 0010 },\r
+ { NULL, "arhl", S_INH, 0, 0020 },\r
+ { NULL, "rdel", S_INH, 0, 0030 },\r
+ { NULL, "rstv", S_INH, 0, 0313 },\r
+ { NULL, "shlx", S_INH, 0, 0331 },\r
+ { NULL, "lhlx", S_INH, 0, 0355 },\r
+\r
+ { NULL, "ldhi", S_ADI, 0, 0050 },\r
+ { NULL, "ldsi", S_ADI, 0, 0070 },\r
+\r
+ { NULL, "jnx5", S_JMP, 0, 0335 },\r
+ { NULL, "jx5", S_JMP, S_EOL, 0375 }\r
+};\r