* asranlib/asranlib.c, link/lkar.h, link/lkar.c:
[fw/sdcc] / as / hc08 / m08pst.c
1 /* m08pst.c
2
3    Copyright (C) 1989-1995 Alan R. Baldwin
4    721 Berkeley St., Kent, Ohio 44240
5
6 This program is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by the
8 Free Software Foundation; either version 3, or (at your option) any
9 later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program.  If not, see <http://www.gnu.org/licenses/>. */
18
19 #include <stdio.h>
20 #include <setjmp.h>
21 #include "asm.h"
22 #include "m6808.h"
23
24 struct  mne     mne[] = {
25
26         /* machine */
27
28     {   NULL,   ".setdp",       S_SDP,          0,      0       },
29
30         /* system */
31
32     {   NULL,   "CON",          S_ATYP,         0,      A_CON   },
33     {   NULL,   "OVR",          S_ATYP,         0,      A_OVR   },
34     {   NULL,   "REL",          S_ATYP,         0,      A_REL   },
35     {   NULL,   "ABS",          S_ATYP,         0,      A_ABS   },
36     {   NULL,   "NOPAG",        S_ATYP,         0,      A_NOPAG },
37     {   NULL,   "PAG",          S_ATYP,         0,      A_PAG   },
38     {   NULL,   "CODE",         S_ATYP,         0,      A_CODE  },
39     {   NULL,   "DATA",         S_ATYP,         0,      A_DATA  },
40     {   NULL,   "LOAD",         S_ATYP,         0,      A_LOAD  },
41     {   NULL,   "NOLOAD",       S_ATYP,         0,      A_NOLOAD },
42
43     {   NULL,   ".uleb128",     S_ULEB128,      0,      0       },
44     {   NULL,   ".sleb128",     S_SLEB128,      0,      0       },
45     {   NULL,   ".byte",        S_BYTE,         0,      1       },
46     {   NULL,   ".db",          S_BYTE,         0,      1       },
47     {   NULL,   ".word",        S_WORD,         0,      2       },
48     {   NULL,   ".dw",          S_WORD,         0,      2       },
49     {   NULL,   ".ascii",       S_ASCII,        0,      0       },
50     {   NULL,   ".asciz",       S_ASCIZ,        0,      0       },
51     {   NULL,   ".blkb",        S_BLK,          0,      1       },
52     {   NULL,   ".ds",          S_BLK,          0,      1       },
53     {   NULL,   ".blkw",        S_BLK,          0,      2       },
54     {   NULL,   ".page",        S_PAGE,         0,      0       },
55     {   NULL,   ".title",       S_TITLE,        0,      0       },
56     {   NULL,   ".sbttl",       S_SBTL,         0,      0       },
57     {   NULL,   ".globl",       S_GLOBL,        0,      0       },
58     {   NULL,   ".area",        S_DAREA,        0,      0       },
59     {   NULL,   ".even",        S_EVEN,         0,      0       },
60     {   NULL,   ".odd",         S_ODD,          0,      0       },
61     {   NULL,   ".if",          S_IF,           0,      0       },
62     {   NULL,   ".else",        S_ELSE,         0,      0       },
63     {   NULL,   ".endif",       S_ENDIF,        0,      0       },
64     {   NULL,   ".include",     S_INCL,         0,      0       },
65     {   NULL,   ".radix",       S_RADIX,        0,      0       },
66     {   NULL,   ".org",         S_ORG,          0,      0       },
67     {   NULL,   ".module",      S_MODUL,        0,      0       },
68     {   NULL,   ".ascis",       S_ASCIS,        0,      0       },
69     {   NULL,   ".optsdcc",     S_OPTSDCC,      0,      0},
70 //    { NULL,   ".assume",      S_ERROR,        0,      0       },
71 //    { NULL,   ".error",       S_ERROR,        0,      1       },
72
73         /* 68HC08 */
74
75     {   NULL,   "neg",          S_TYP1,         0,      0x30    },
76     {   NULL,   "com",          S_TYP1,         0,      0x33    },
77     {   NULL,   "lsr",          S_TYP1,         0,      0x34    },
78     {   NULL,   "ror",          S_TYP1,         0,      0x36    },
79     {   NULL,   "asr",          S_TYP1,         0,      0x37    },
80     {   NULL,   "asl",          S_TYP1,         0,      0x38    },
81     {   NULL,   "lsl",          S_TYP1,         0,      0x38    },
82     {   NULL,   "rol",          S_TYP1,         0,      0x39    },
83     {   NULL,   "dec",          S_TYP1,         0,      0x3A    },
84     {   NULL,   "inc",          S_TYP1,         0,      0x3C    },
85     {   NULL,   "tst",          S_TYP1,         0,      0x3D    },
86     {   NULL,   "clr",          S_TYP1,         0,      0x3F    },
87
88     {   NULL,   "sub",          S_TYP2,         0,      0xA0    },
89     {   NULL,   "cmp",          S_TYP2,         0,      0xA1    },
90     {   NULL,   "sbc",          S_TYP2,         0,      0xA2    },
91     {   NULL,   "cpx",          S_TYP2,         0,      0xA3    },
92     {   NULL,   "and",          S_TYP2,         0,      0xA4    },
93     {   NULL,   "bit",          S_TYP2,         0,      0xA5    },
94     {   NULL,   "lda",          S_TYP2,         0,      0xA6    },
95     {   NULL,   "sta",          S_TYP2,         0,      0xA7    },
96     {   NULL,   "eor",          S_TYP2,         0,      0xA8    },
97     {   NULL,   "adc",          S_TYP2,         0,      0xA9    },
98     {   NULL,   "ora",          S_TYP2,         0,      0xAA    },
99     {   NULL,   "add",          S_TYP2,         0,      0xAB    },
100     {   NULL,   "jmp",          S_TYP2,         0,      0xAC    },
101     {   NULL,   "jsr",          S_TYP2,         0,      0xAD    },
102     {   NULL,   "ldx",          S_TYP2,         0,      0xAE    },
103     {   NULL,   "stx",          S_TYP2,         0,      0xAF    },
104
105     {   NULL,   "bset",         S_TYP3,         0,      0x10    },
106     {   NULL,   "bclr",         S_TYP3,         0,      0x11    },
107
108     {   NULL,   "brset",        S_TYP4,         0,      0x00    },
109     {   NULL,   "brclr",        S_TYP4,         0,      0x01    },
110
111     {   NULL,   "ais",          S_TYPAI,        0,      0xA7    },
112     {   NULL,   "aix",          S_TYPAI,        0,      0xAF    },
113
114     {   NULL,   "sthx",         S_TYPHX,        0,      0x25    },
115     {   NULL,   "ldhx",         S_TYPHX,        0,      0x45    },
116     {   NULL,   "cphx",         S_TYPHX,        0,      0x65    },
117
118     {   NULL,   "cbeq",         S_CBEQ,         0,      0x31    },
119     {   NULL,   "cbeqa",        S_CQAX,         0,      0x41    },
120     {   NULL,   "cbeqx",        S_CQAX,         0,      0x51    },
121
122     {   NULL,   "dbnz",         S_DBNZ,         0,      0x3B    },
123     {   NULL,   "dbnza",        S_DZAX,         0,      0x4B    },
124     {   NULL,   "dbnzx",        S_DZAX,         0,      0x5B    },
125
126     {   NULL,   "mov",          S_MOV,          0,      0x4E    },
127
128     {   NULL,   "bra",          S_BRA,          0,      0x20    },
129     {   NULL,   "brn",          S_BRA,          0,      0x21    },
130     {   NULL,   "bhi",          S_BRA,          0,      0x22    },
131     {   NULL,   "bls",          S_BRA,          0,      0x23    },
132     {   NULL,   "bcc",          S_BRA,          0,      0x24    },
133     {   NULL,   "bhs",          S_BRA,          0,      0x24    },
134     {   NULL,   "bcs",          S_BRA,          0,      0x25    },
135     {   NULL,   "blo",          S_BRA,          0,      0x25    },
136     {   NULL,   "bne",          S_BRA,          0,      0x26    },
137     {   NULL,   "beq",          S_BRA,          0,      0x27    },
138     {   NULL,   "bhcc",         S_BRA,          0,      0x28    },
139     {   NULL,   "bhcs",         S_BRA,          0,      0x29    },
140     {   NULL,   "bpl",          S_BRA,          0,      0x2A    },
141     {   NULL,   "bmi",          S_BRA,          0,      0x2B    },
142     {   NULL,   "bmc",          S_BRA,          0,      0x2C    },
143     {   NULL,   "bms",          S_BRA,          0,      0x2D    },
144     {   NULL,   "bil",          S_BRA,          0,      0x2E    },
145     {   NULL,   "bih",          S_BRA,          0,      0x2F    },
146     {   NULL,   "bge",          S_BRA,          0,      0x90    },
147     {   NULL,   "blt",          S_BRA,          0,      0x91    },
148     {   NULL,   "bgt",          S_BRA,          0,      0x92    },
149     {   NULL,   "ble",          S_BRA,          0,      0x93    },
150     {   NULL,   "bsr",          S_BRA,          0,      0xAD    },
151
152     {   NULL,   "nega",         S_INH,          0,      0x40    },
153     {   NULL,   "mul",          S_INH,          0,      0x42    },
154     {   NULL,   "coma",         S_INH,          0,      0x43    },
155     {   NULL,   "lsra",         S_INH,          0,      0x44    },
156     {   NULL,   "rora",         S_INH,          0,      0x46    },
157     {   NULL,   "asra",         S_INH,          0,      0x47    },
158     {   NULL,   "asla",         S_INH,          0,      0x48    },
159     {   NULL,   "lsla",         S_INH,          0,      0x48    },
160     {   NULL,   "rola",         S_INH,          0,      0x49    },
161     {   NULL,   "deca",         S_INH,          0,      0x4A    },
162     {   NULL,   "inca",         S_INH,          0,      0x4C    },
163     {   NULL,   "tsta",         S_INH,          0,      0x4D    },
164     {   NULL,   "clra",         S_INH,          0,      0x4F    },
165
166     {   NULL,   "negx",         S_INH,          0,      0x50    },
167     {   NULL,   "div",          S_INH,          0,      0x52    },
168     {   NULL,   "comx",         S_INH,          0,      0x53    },
169     {   NULL,   "lsrx",         S_INH,          0,      0x54    },
170     {   NULL,   "rorx",         S_INH,          0,      0x56    },
171     {   NULL,   "asrx",         S_INH,          0,      0x57    },
172     {   NULL,   "aslx",         S_INH,          0,      0x58    },
173     {   NULL,   "lslx",         S_INH,          0,      0x58    },
174     {   NULL,   "rolx",         S_INH,          0,      0x59    },
175     {   NULL,   "decx",         S_INH,          0,      0x5A    },
176     {   NULL,   "incx",         S_INH,          0,      0x5C    },
177     {   NULL,   "tstx",         S_INH,          0,      0x5D    },
178     {   NULL,   "clrx",         S_INH,          0,      0x5F    },
179
180     {   NULL,   "nsa",          S_INH,          0,      0x62    },
181
182     {   NULL,   "daa",          S_INH,          0,      0x72    },
183
184     {   NULL,   "rti",          S_INH,          0,      0x80    },
185     {   NULL,   "rts",          S_INH,          0,      0x81    },
186     {   NULL,   "swi",          S_INH,          0,      0x83    },
187     {   NULL,   "tap",          S_INH,          0,      0x84    },
188     {   NULL,   "tpa",          S_INH,          0,      0x85    },
189     {   NULL,   "pula",         S_INH,          0,      0x86    },
190     {   NULL,   "psha",         S_INH,          0,      0x87    },
191     {   NULL,   "pulx",         S_INH,          0,      0x88    },
192     {   NULL,   "pshx",         S_INH,          0,      0x89    },
193     {   NULL,   "pulh",         S_INH,          0,      0x8A    },
194     {   NULL,   "pshh",         S_INH,          0,      0x8B    },
195     {   NULL,   "clrh",         S_INH,          0,      0x8C    },
196     {   NULL,   "stop",         S_INH,          0,      0x8E    },
197     {   NULL,   "wait",         S_INH,          0,      0x8F    },
198
199     {   NULL,   "txs",          S_INH,          0,      0x94    },
200     {   NULL,   "tsx",          S_INH,          0,      0x95    },
201     {   NULL,   "tax",          S_INH,          0,      0x97    },
202     {   NULL,   "clc",          S_INH,          0,      0x98    },
203     {   NULL,   "sec",          S_INH,          0,      0x99    },
204     {   NULL,   "cli",          S_INH,          0,      0x9A    },
205     {   NULL,   "sei",          S_INH,          0,      0x9B    },
206     {   NULL,   "rsp",          S_INH,          0,      0x9C    },
207     {   NULL,   "nop",          S_INH,          0,      0x9D    },
208     {   NULL,   "txa",          S_INH,          S_END,  0x9F    }
209 };