4 * Copyright (C) 1993-2021 Alan R. Baldwin
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
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.
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/>.
37 { NULL
, "CON", S_ATYP
, 0, A_CON
},
38 { NULL
, "OVR", S_ATYP
, 0, A_OVR
},
39 { NULL
, "REL", S_ATYP
, 0, A_REL
},
40 { NULL
, "ABS", S_ATYP
, 0, A_ABS
},
41 { NULL
, "NOPAG", S_ATYP
, 0, A_NOPAG
},
42 { NULL
, "PAG", S_ATYP
, 0, A_PAG
},
44 { NULL
, "CODE", S_ATYP
, 0, A_CODE
},
45 { NULL
, "DATA", S_ATYP
, 0, A_DATA
},
46 { NULL
, "LOAD", S_ATYP
, 0, A_LOAD
},
47 { NULL
, "NOLOAD", S_ATYP
, 0, A_NOLOAD
},
49 { NULL
, ".page", S_PAGE
, 0, 0 },
50 { NULL
, ".title", S_HEADER
, 0, O_TITLE
},
51 { NULL
, ".sbttl", S_HEADER
, 0, O_SBTTL
},
52 { NULL
, ".module", S_MODUL
, 0, 0 },
53 { NULL
, ".include", S_INCL
, 0, I_CODE
},
54 { NULL
, ".incbin", S_INCL
, 0, I_BNRY
},
55 { NULL
, ".area", S_AREA
, 0, 0 },
56 // { NULL, ".psharea", S_AREA, 0, O_PSH },
57 // { NULL, ".poparea", S_AREA, 0, O_POP },
58 // { NULL, ".bank", S_BANK, 0, 0 },
59 { NULL
, ".org", S_ORG
, 0, 0 },
60 { NULL
, ".radix", S_RADIX
, 0, 0 },
61 { NULL
, ".globl", S_GLOBL
, 0, 0 },
62 { NULL
, ".local", S_LOCAL
, 0, 0 },
63 { NULL
, ".if", S_CONDITIONAL
, 0, O_IF
},
64 { NULL
, ".iff", S_CONDITIONAL
, 0, O_IFF
},
65 { NULL
, ".ift", S_CONDITIONAL
, 0, O_IFT
},
66 { NULL
, ".iftf", S_CONDITIONAL
, 0, O_IFTF
},
67 { NULL
, ".ifdef", S_CONDITIONAL
, 0, O_IFDEF
},
68 { NULL
, ".ifndef", S_CONDITIONAL
, 0, O_IFNDEF
},
69 { NULL
, ".ifgt", S_CONDITIONAL
, 0, O_IFGT
},
70 { NULL
, ".iflt", S_CONDITIONAL
, 0, O_IFLT
},
71 { NULL
, ".ifge", S_CONDITIONAL
, 0, O_IFGE
},
72 { NULL
, ".ifle", S_CONDITIONAL
, 0, O_IFLE
},
73 { NULL
, ".ifeq", S_CONDITIONAL
, 0, O_IFEQ
},
74 { NULL
, ".ifne", S_CONDITIONAL
, 0, O_IFNE
},
75 { NULL
, ".ifb", S_CONDITIONAL
, 0, O_IFB
},
76 { NULL
, ".ifnb", S_CONDITIONAL
, 0, O_IFNB
},
77 { NULL
, ".ifidn", S_CONDITIONAL
, 0, O_IFIDN
},
78 { NULL
, ".ifdif", S_CONDITIONAL
, 0, O_IFDIF
},
79 { NULL
, ".iif", S_CONDITIONAL
, 0, O_IIF
},
80 { NULL
, ".iiff", S_CONDITIONAL
, 0, O_IIFF
},
81 { NULL
, ".iift", S_CONDITIONAL
, 0, O_IIFT
},
82 { NULL
, ".iiftf", S_CONDITIONAL
, 0, O_IIFTF
},
83 { NULL
, ".iifdef", S_CONDITIONAL
, 0, O_IIFDEF
},
84 { NULL
, ".iifndef", S_CONDITIONAL
, 0, O_IIFNDEF
},
85 { NULL
, ".iifgt", S_CONDITIONAL
, 0, O_IIFGT
},
86 { NULL
, ".iiflt", S_CONDITIONAL
, 0, O_IIFLT
},
87 { NULL
, ".iifge", S_CONDITIONAL
, 0, O_IIFGE
},
88 { NULL
, ".iifle", S_CONDITIONAL
, 0, O_IIFLE
},
89 { NULL
, ".iifeq", S_CONDITIONAL
, 0, O_IIFEQ
},
90 { NULL
, ".iifne", S_CONDITIONAL
, 0, O_IIFNE
},
91 { NULL
, ".iifb", S_CONDITIONAL
, 0, O_IIFB
},
92 { NULL
, ".iifnb", S_CONDITIONAL
, 0, O_IIFNB
},
93 { NULL
, ".iifidn", S_CONDITIONAL
, 0, O_IIFIDN
},
94 { NULL
, ".iifdif", S_CONDITIONAL
, 0, O_IIFDIF
},
95 { NULL
, ".else", S_CONDITIONAL
, 0, O_ELSE
},
96 { NULL
, ".endif", S_CONDITIONAL
, 0, O_ENDIF
},
97 { NULL
, ".list", S_LISTING
, 0, O_LIST
},
98 { NULL
, ".nlist", S_LISTING
, 0, O_NLIST
},
99 { NULL
, ".uleb128", S_ULEB128
, 0, 0 },
100 { NULL
, ".sleb128", S_SLEB128
, 0, 0 },
101 { NULL
, ".equ", S_EQU
, 0, O_EQU
},
102 { NULL
, ".gblequ", S_EQU
, 0, O_GBLEQU
},
103 { NULL
, ".lclequ", S_EQU
, 0, O_LCLEQU
},
104 { NULL
, ".byte", S_DATA
, 0, O_1BYTE
},
105 { NULL
, ".db", S_DATA
, 0, O_1BYTE
},
106 { NULL
, ".fcb", S_DATA
, 0, O_1BYTE
},
107 { NULL
, ".word", S_DATA
, 0, O_2BYTE
},
108 { NULL
, ".dw", S_DATA
, 0, O_2BYTE
},
109 { NULL
, ".fdb", S_DATA
, 0, O_2BYTE
},
110 /* { NULL, ".3byte", S_DATA, 0, O_3BYTE }, */
111 /* { NULL, ".triple", S_DATA, 0, O_3BYTE }, */
112 /* { NULL, ".dl", S_DATA, 0, O_4BYTE }, */
113 /* { NULL, ".4byte", S_DATA, 0, O_4BYTE }, */
114 /* { NULL, ".quad", S_DATA, 0, O_4BYTE }, */
115 /* { NULL, ".long", S_DATA, 0, O_4BYTE }, */
116 { NULL
, ".blkb", S_BLK
, 0, O_1BYTE
},
117 { NULL
, ".ds", S_BLK
, 0, O_1BYTE
},
118 { NULL
, ".rmb", S_BLK
, 0, O_1BYTE
},
119 { NULL
, ".rs", S_BLK
, 0, O_1BYTE
},
120 { NULL
, ".blkw", S_BLK
, 0, O_2BYTE
},
121 /* { NULL, ".blk3", S_BLK, 0, O_3BYTE }, */
122 /* { NULL, ".blk4", S_BLK, 0, O_4BYTE }, */
123 /* { NULL, ".blkl", S_BLK, 0, O_4BYTE }, */
124 { NULL
, ".ascii", S_ASCIX
, 0, O_ASCII
},
125 { NULL
, ".ascis", S_ASCIX
, 0, O_ASCIS
},
126 { NULL
, ".asciz", S_ASCIX
, 0, O_ASCIZ
},
127 { NULL
, ".str", S_ASCIX
, 0, O_ASCII
},
128 { NULL
, ".strs", S_ASCIX
, 0, O_ASCIS
},
129 { NULL
, ".strz", S_ASCIX
, 0, O_ASCIZ
},
130 { NULL
, ".fcc", S_ASCIX
, 0, O_ASCII
},
131 { NULL
, ".define", S_DEFINE
, 0, O_DEF
},
132 { NULL
, ".undefine", S_DEFINE
, 0, O_UNDEF
},
133 { NULL
, ".even", S_BOUNDARY
, 0, O_EVEN
},
134 { NULL
, ".odd", S_BOUNDARY
, 0, O_ODD
},
135 { NULL
, ".bndry", S_BOUNDARY
, 0, O_BNDRY
},
136 { NULL
, ".msg" , S_MSG
, 0, 0 },
137 { NULL
, ".assume", S_ERROR
, 0, O_ASSUME
},
138 { NULL
, ".error", S_ERROR
, 0, O_ERROR
},
139 /* { NULL, ".msb", S_MSB, 0, 0 }, */
140 /* { NULL, ".lohi", S_MSB, 0, O_LOHI }, */
141 /* { NULL, ".hilo", S_MSB, 0, O_HILO }, */
142 /* { NULL, ".8bit", S_BITS, 0, O_1BYTE }, */
143 /* { NULL, ".16bit", S_BITS, 0, O_2BYTE }, */
144 /* { NULL, ".24bit", S_BITS, 0, O_3BYTE }, */
145 /* { NULL, ".32bit", S_BITS, 0, O_4BYTE }, */
146 // { NULL, ".end", S_END, 0, 0 },
149 { NULL
, ".optsdcc", S_OPTSDCC
, 0, 0 },
150 /* end sdas specific */
152 /* Macro Processor */
154 { NULL
, ".macro", S_MACRO
, 0, O_MACRO
},
155 { NULL
, ".endm", S_MACRO
, 0, O_ENDM
},
156 { NULL
, ".mexit", S_MACRO
, 0, O_MEXIT
},
158 { NULL
, ".narg", S_MACRO
, 0, O_NARG
},
159 { NULL
, ".nchr", S_MACRO
, 0, O_NCHR
},
160 { NULL
, ".ntyp", S_MACRO
, 0, O_NTYP
},
162 { NULL
, ".irp", S_MACRO
, 0, O_IRP
},
163 { NULL
, ".irpc", S_MACRO
, 0, O_IRPC
},
164 { NULL
, ".rept", S_MACRO
, 0, O_REPT
},
166 { NULL
, ".nval", S_MACRO
, 0, O_NVAL
},
168 { NULL
, ".mdelete", S_MACRO
, 0, O_MDEL
},
172 { NULL
, ".setdp", S_SDP
, 0, 0 },
173 // { NULL, ".dpgbl", S_PGD, 0, 0 },
177 { NULL
, ".hc08", S_CPU
, 0, X_HC08
},
178 { NULL
, ".hcs08", S_CPU
, 0, X_HCS08
},
179 { NULL
, ".cs08", S_CPU
, 0, X_HCS08
},
180 { NULL
, ".6805", S_CPU
, 0, X_6805
},
181 { NULL
, ".hc05", S_CPU
, 0, X_HC05
},
185 { NULL
, "neg", S_TYP1
, 0, 0x30 },
186 { NULL
, "com", S_TYP1
, 0, 0x33 },
187 { NULL
, "lsr", S_TYP1
, 0, 0x34 },
188 { NULL
, "ror", S_TYP1
, 0, 0x36 },
189 { NULL
, "asr", S_TYP1
, 0, 0x37 },
190 { NULL
, "asl", S_TYP1
, 0, 0x38 },
191 { NULL
, "lsl", S_TYP1
, 0, 0x38 },
192 { NULL
, "rol", S_TYP1
, 0, 0x39 },
193 { NULL
, "dec", S_TYP1
, 0, 0x3A },
194 { NULL
, "inc", S_TYP1
, 0, 0x3C },
195 { NULL
, "tst", S_TYP1
, 0, 0x3D },
196 { NULL
, "clr", S_TYP1
, 0, 0x3F },
198 { NULL
, "sub", S_TYP2
, 0, 0xA0 },
199 { NULL
, "cmp", S_TYP2
, 0, 0xA1 },
200 { NULL
, "sbc", S_TYP2
, 0, 0xA2 },
201 { NULL
, "cpx", S_TYP2
, 0, 0xA3 },
202 { NULL
, "and", S_TYP2
, 0, 0xA4 },
203 { NULL
, "bit", S_TYP2
, 0, 0xA5 },
204 { NULL
, "lda", S_TYP2
, 0, 0xA6 },
205 { NULL
, "sta", S_TYP2
, 0, 0xA7 },
206 { NULL
, "eor", S_TYP2
, 0, 0xA8 },
207 { NULL
, "adc", S_TYP2
, 0, 0xA9 },
208 { NULL
, "ora", S_TYP2
, 0, 0xAA },
209 { NULL
, "add", S_TYP2
, 0, 0xAB },
210 { NULL
, "jmp", S_TYP2
, 0, 0xAC },
211 { NULL
, "jsr", S_TYP2
, 0, 0xAD },
212 { NULL
, "ldx", S_TYP2
, 0, 0xAE },
213 { NULL
, "stx", S_TYP2
, 0, 0xAF },
215 { NULL
, "bset", S_TYP3
, 0, 0x10 },
216 { NULL
, "bclr", S_TYP3
, 0, 0x11 },
218 { NULL
, "brset", S_TYP4
, 0, 0x00 },
219 { NULL
, "brclr", S_TYP4
, 0, 0x01 },
221 { NULL
, "ais", S_TYPAI
, 0, 0xA7 },
222 { NULL
, "aix", S_TYPAI
, 0, 0xAF },
224 { NULL
, "sthx", S_TYPHX
, 0, 0x25 },
225 { NULL
, "ldhx", S_TYPHX
, 0, 0x45 },
226 { NULL
, "cphx", S_TYPHX
, 0, 0x65 },
228 { NULL
, "cbeq", S_CBEQ
, 0, 0x31 },
229 { NULL
, "cbeqa", S_CQAX
, 0, 0x41 },
230 { NULL
, "cbeqx", S_CQAX
, 0, 0x51 },
232 { NULL
, "dbnz", S_DBNZ
, 0, 0x3B },
233 { NULL
, "dbnza", S_DZAX
, 0, 0x4B },
234 { NULL
, "dbnzx", S_DZAX
, 0, 0x5B },
236 { NULL
, "mov", S_MOV
, 0, 0x4E },
238 { NULL
, "bra", S_BRA
, 0, 0x20 },
239 { NULL
, "brn", S_BRA
, 0, 0x21 },
240 { NULL
, "bhi", S_BRA
, 0, 0x22 },
241 { NULL
, "bls", S_BRA
, 0, 0x23 },
242 { NULL
, "bcc", S_BRA
, 0, 0x24 },
243 { NULL
, "bhs", S_BRA
, 0, 0x24 },
244 { NULL
, "bcs", S_BRA
, 0, 0x25 },
245 { NULL
, "blo", S_BRA
, 0, 0x25 },
246 { NULL
, "bne", S_BRA
, 0, 0x26 },
247 { NULL
, "beq", S_BRA
, 0, 0x27 },
248 { NULL
, "bhcc", S_BRA
, 0, 0x28 },
249 { NULL
, "bhcs", S_BRA
, 0, 0x29 },
250 { NULL
, "bpl", S_BRA
, 0, 0x2A },
251 { NULL
, "bmi", S_BRA
, 0, 0x2B },
252 { NULL
, "bmc", S_BRA
, 0, 0x2C },
253 { NULL
, "bms", S_BRA
, 0, 0x2D },
254 { NULL
, "bil", S_BRA
, 0, 0x2E },
255 { NULL
, "bih", S_BRA
, 0, 0x2F },
256 { NULL
, "bge", S_BRA8
, 0, 0x90 },
257 { NULL
, "blt", S_BRA8
, 0, 0x91 },
258 { NULL
, "bgt", S_BRA8
, 0, 0x92 },
259 { NULL
, "ble", S_BRA8
, 0, 0x93 },
260 { NULL
, "bsr", S_BRA
, 0, 0xAD },
262 { NULL
, "nega", S_INH
, 0, 0x40 },
263 { NULL
, "mul", S_INH
, 0, 0x42 },
264 { NULL
, "coma", S_INH
, 0, 0x43 },
265 { NULL
, "lsra", S_INH
, 0, 0x44 },
266 { NULL
, "rora", S_INH
, 0, 0x46 },
267 { NULL
, "asra", S_INH
, 0, 0x47 },
268 { NULL
, "asla", S_INH
, 0, 0x48 },
269 { NULL
, "lsla", S_INH
, 0, 0x48 },
270 { NULL
, "rola", S_INH
, 0, 0x49 },
271 { NULL
, "deca", S_INH
, 0, 0x4A },
272 { NULL
, "inca", S_INH
, 0, 0x4C },
273 { NULL
, "tsta", S_INH
, 0, 0x4D },
274 { NULL
, "clra", S_INH
, 0, 0x4F },
276 { NULL
, "negx", S_INH
, 0, 0x50 },
277 { NULL
, "div", S_INH8
, 0, 0x52 },
278 { NULL
, "comx", S_INH
, 0, 0x53 },
279 { NULL
, "lsrx", S_INH
, 0, 0x54 },
280 { NULL
, "rorx", S_INH
, 0, 0x56 },
281 { NULL
, "asrx", S_INH
, 0, 0x57 },
282 { NULL
, "aslx", S_INH
, 0, 0x58 },
283 { NULL
, "lslx", S_INH
, 0, 0x58 },
284 { NULL
, "rolx", S_INH
, 0, 0x59 },
285 { NULL
, "decx", S_INH
, 0, 0x5A },
286 { NULL
, "incx", S_INH
, 0, 0x5C },
287 { NULL
, "tstx", S_INH
, 0, 0x5D },
288 { NULL
, "clrx", S_INH
, 0, 0x5F },
290 { NULL
, "nsa", S_INH8
, 0, 0x62 },
292 { NULL
, "daa", S_INH8
, 0, 0x72 },
294 { NULL
, "rti", S_INH
, 0, 0x80 },
295 { NULL
, "rts", S_INH
, 0, 0x81 },
296 { NULL
, "bgnd", S_INH8S
, 0, 0x82 },
297 { NULL
, "swi", S_INH
, 0, 0x83 },
298 { NULL
, "tap", S_INH8
, 0, 0x84 },
299 { NULL
, "tpa", S_INH8
, 0, 0x85 },
300 { NULL
, "pula", S_INH8
, 0, 0x86 },
301 { NULL
, "psha", S_INH8
, 0, 0x87 },
302 { NULL
, "pulx", S_INH8
, 0, 0x88 },
303 { NULL
, "pshx", S_INH8
, 0, 0x89 },
304 { NULL
, "pulh", S_INH8
, 0, 0x8A },
305 { NULL
, "pshh", S_INH8
, 0, 0x8B },
306 { NULL
, "clrh", S_INH8
, 0, 0x8C },
307 { NULL
, "stop", S_INH
, 0, 0x8E },
308 { NULL
, "wait", S_INH
, 0, 0x8F },
310 { NULL
, "txs", S_INH8
, 0, 0x94 },
311 { NULL
, "tsx", S_INH8
, 0, 0x95 },
312 { NULL
, "tax", S_INH
, 0, 0x97 },
313 { NULL
, "clc", S_INH
, 0, 0x98 },
314 { NULL
, "sec", S_INH
, 0, 0x99 },
315 { NULL
, "cli", S_INH
, 0, 0x9A },
316 { NULL
, "sei", S_INH
, 0, 0x9B },
317 { NULL
, "rsp", S_INH
, 0, 0x9C },
318 { NULL
, "nop", S_INH
, 0, 0x9D },
319 { NULL
, "txa", S_INH
, S_EOL
, 0x9F }