1 /* z80pst.c */ 2 3 /* 4 * Copyright (C) 1989-2009 Alan R. Baldwin 5 * 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. 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 * 20 * Alan R. Baldwin 21 * 721 Berkeley St. 22 * Kent, Ohio 44240 23 */ 24 25 /* 26 * Extensions: P. Felber 27 */ 28 29 #include "asxxxx.h" 30 #include "z80.h" 31 32 /* 33 * Mnemonic Structure 34 */ 35 struct mne mne[] = { 36 37 /* machine */ 38 39 /* system */ 40 41 { NULL, "CON", S_ATYP, 0, A_CON }, 42 { NULL, "OVR", S_ATYP, 0, A_OVR }, 43 { NULL, "REL", S_ATYP, 0, A_REL }, 44 { NULL, "ABS", S_ATYP, 0, A_ABS }, 45 { NULL, "NOPAG", S_ATYP, 0, A_NOPAG }, 46 { NULL, "PAG", S_ATYP, 0, A_PAG }, 47 48 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, 0 }, 54 { NULL, ".area", S_AREA, 0, 0 }, 55 56 { NULL, ".org", S_ORG, 0, 0 }, 57 { NULL, ".radix", S_RADIX, 0, 0 }, 58 { NULL, ".globl", S_GLOBL, 0, 0 }, 59 { NULL, ".local", S_LOCAL, 0, 0 }, 60 { NULL, ".if", S_CONDITIONAL, 0, O_IF }, 61 { NULL, ".iff", S_CONDITIONAL, 0, O_IFF }, 62 { NULL, ".ift", S_CONDITIONAL, 0, O_IFT }, 63 { NULL, ".iftf", S_CONDITIONAL, 0, O_IFTF }, 64 { NULL, ".ifgt", S_CONDITIONAL, 0, O_IFGT }, 65 { NULL, ".iflt", S_CONDITIONAL, 0, O_IFLT }, 66 { NULL, ".ifge", S_CONDITIONAL, 0, O_IFGE }, 67 { NULL, ".ifle", S_CONDITIONAL, 0, O_IFLE }, 68 { NULL, ".ifeq", S_CONDITIONAL, 0, O_IFEQ }, 69 { NULL, ".ifne", S_CONDITIONAL, 0, O_IFNE }, 70 { NULL, ".iif", S_CONDITIONAL, 0, O_IIF }, 71 { NULL, ".iiff", S_CONDITIONAL, 0, O_IIFF }, 72 { NULL, ".iift", S_CONDITIONAL, 0, O_IIFT }, 73 { NULL, ".iiftf", S_CONDITIONAL, 0, O_IIFTF }, 74 { NULL, ".iifgt", S_CONDITIONAL, 0, O_IIFGT }, 75 { NULL, ".iiflt", S_CONDITIONAL, 0, O_IIFLT }, 76 { NULL, ".iifge", S_CONDITIONAL, 0, O_IIFGE }, 77 { NULL, ".iifle", S_CONDITIONAL, 0, O_IIFLE }, 78 { NULL, ".iifeq", S_CONDITIONAL, 0, O_IIFEQ }, 79 { NULL, ".iifne", S_CONDITIONAL, 0, O_IIFNE }, 80 { NULL, ".else", S_CONDITIONAL, 0, O_ELSE }, 81 { NULL, ".endif", S_CONDITIONAL, 0, O_ENDIF }, 82 { NULL, ".list", S_LISTING, 0, O_LIST }, 83 { NULL, ".nlist", S_LISTING, 0, O_NLIST }, 84 { NULL, ".equ", S_EQU, 0, O_EQU }, 85 { NULL, ".gblequ", S_EQU, 0, O_GBLEQU}, 86 { NULL, ".lclequ", S_EQU, 0, O_LCLEQU}, 87 { NULL, ".byte", S_DATA, 0, O_1BYTE }, 88 { NULL, ".db", S_DATA, 0, O_1BYTE }, 89 { NULL, ".fcb", S_DATA, 0, O_1BYTE }, 90 { NULL, ".word", S_DATA, 0, O_2BYTE }, 91 { NULL, ".dw", S_DATA, 0, O_2BYTE }, 92 { NULL, ".fdb", S_DATA, 0, O_2BYTE }, 93 { NULL, ".3byte", S_DATA, 0, O_3BYTE }, 94 { NULL, ".triple", S_DATA, 0, O_3BYTE }, 95 /* { NULL, ".4byte", S_DATA, 0, O_4BYTE }, */ 96 /* { NULL, ".quad", S_DATA, 0, O_4BYTE }, */ 97 { NULL, ".df", S_FLOAT, 0, 0 }, 98 { NULL, ".blkb", S_BLK, 0, O_1BYTE }, 99 { NULL, ".ds", S_BLK, 0, O_1BYTE }, 100 { NULL, ".rmb", S_BLK, 0, O_1BYTE }, 101 { NULL, ".rs", S_BLK, 0, O_1BYTE }, 102 { NULL, ".blkw", S_BLK, 0, O_2BYTE }, 103 { NULL, ".blk3", S_BLK, 0, O_3BYTE }, 104 /* { NULL, ".blk4", S_BLK, 0, O_4BYTE }, */ 105 { NULL, ".ascii", S_ASCIX, 0, O_ASCII }, 106 { NULL, ".ascis", S_ASCIX, 0, O_ASCIS }, 107 { NULL, ".asciz", S_ASCIX, 0, O_ASCIZ }, 108 { NULL, ".str", S_ASCIX, 0, O_ASCII }, 109 { NULL, ".strs", S_ASCIX, 0, O_ASCIS }, 110 { NULL, ".strz", S_ASCIX, 0, O_ASCIZ }, 111 { NULL, ".fcc", S_ASCIX, 0, O_ASCII }, 112 { NULL, ".even", S_BOUNDARY, 0, O_EVEN }, 113 { NULL, ".odd", S_BOUNDARY, 0, O_ODD }, 114 { NULL, ".bndry", S_BOUNDARY, 0, O_BNDRY }, 115 /* sdas specific */ 116 { NULL, ".optsdcc", S_OPTSDCC, 0, 0 }, 117 /* end sdas specific */ 118 119 /* Macro Processor */ 120 121 { NULL, ".macro", S_MACRO, 0, O_MACRO }, 122 { NULL, ".endm", S_MACRO, 0, O_ENDM }, 123 { NULL, ".mexit", S_MACRO, 0, O_MEXIT }, 124 125 { NULL, ".narg", S_MACRO, 0, O_NARG }, 126 { NULL, ".nchr", S_MACRO, 0, O_NCHR }, 127 { NULL, ".ntyp", S_MACRO, 0, O_NTYP }, 128 129 { NULL, ".irp", S_MACRO, 0, O_IRP }, 130 { NULL, ".irpc", S_MACRO, 0, O_IRPC }, 131 { NULL, ".rept", S_MACRO, 0, O_REPT }, 132 133 { NULL, ".nval", S_MACRO, 0, O_NVAL }, 134 135 { NULL, ".mdelete", S_MACRO, 0, O_MDEL }, 136 137 /* Machines */ 138 139 { NULL, ".z80", S_CPU, 0, X_Z80 }, 140 { NULL, ".hd64", S_CPU, 0, X_HD64 }, 141 { NULL, ".z180", S_CPU, 0, X_HD64 }, 142 { NULL, ".zxn", S_CPU, 0, X_ZXN }, 143 { NULL, ".ez80", S_CPU, 0, X_EZ80 }, 144 145 /* z80 / hd64180 */ 146 147 { NULL, "ld", S_LD, 0, 0x40 }, 148 149 { NULL, "call", S_CALL, 0, 0xC4 }, 150 { NULL, "jp", S_JP, 0, 0xC2 }, 151 { NULL, "jr", S_JR, 0, 0x18 }, 152 { NULL, "djnz", S_DJNZ, 0, 0x10 }, 153 { NULL, "ret", S_RET, 0, 0xC0 }, 154 155 { NULL, "bit", S_BIT, 0, 0x40 }, 156 { NULL, "res", S_BIT, 0, 0x80 }, 157 { NULL, "set", S_BIT, 0, 0xC0 }, 158 159 { NULL, "inc", S_INC, 0, 0x04 }, 160 { NULL, "dec", S_DEC, 0, 0x05 }, 161 162 { NULL, "add", S_ADD, 0, 0x80 }, 163 { NULL, "adc", S_ADC, 0, 0x88 }, 164 { NULL, "sub", S_SUB, 0, 0x90 }, 165 { NULL, "sbc", S_SBC, 0, 0x98 }, 166 167 { NULL, "and", S_AND, 0, 0xA0 }, 168 { NULL, "cp", S_AND, 0, 0xB8 }, 169 { NULL, "or", S_AND, 0, 0xB0 }, 170 { NULL, "xor", S_AND, 0, 0xA8 }, 171 172 { NULL, "ex", S_EX, 0, 0xE3 }, 173 174 { NULL, "push", S_PUSH, 0, 0xC5 }, 175 { NULL, "pop", S_PUSH, 0, 0xC1 }, 176 177 { NULL, "in", S_IN, 0, 0xDB }, 178 { NULL, "out", S_OUT, 0, 0xD3 }, 179 180 { NULL, "rl", S_RL, 0, 0x10 }, 181 { NULL, "rlc", S_RL, 0, 0x00 }, 182 { NULL, "rr", S_RL, 0, 0x18 }, 183 { NULL, "rrc", S_RL, 0, 0x08 }, 184 { NULL, "sla", S_RL, 0, 0x20 }, 185 { NULL, "sra", S_RL, 0, 0x28 }, 186 { NULL, "sll", S_RL_UNDOCD, 0, 0x30 }, 187 { NULL, "srl", S_RL, 0, 0x38 }, 188 189 { NULL, "rst", S_RST, 0, 0xC7 }, 190 191 { NULL, "im", S_IM, 0, 0xED }, 192 193 { NULL, "ccf", S_INH1, 0, 0x3F }, 194 { NULL, "cpl", S_INH1, 0, 0x2F }, 195 { NULL, "daa", S_INH1, 0, 0x27 }, 196 { NULL, "di", S_INH1, 0, 0xF3 }, 197 { NULL, "ei", S_INH1, 0, 0xFB }, 198 { NULL, "exx", S_INH1, 0, 0xD9 }, 199 { NULL, "nop", S_INH1, 0, 0x00 }, 200 { NULL, "halt", S_INH1, 0, 0x76 }, 201 { NULL, "rla", S_INH1, 0, 0x17 }, 202 { NULL, "rlca", S_INH1, 0, 0x07 }, 203 { NULL, "rra", S_INH1, 0, 0x1F }, 204 { NULL, "rrca", S_INH1, 0, 0x0F }, 205 { NULL, "scf", S_INH1, 0, 0x37 }, 206 207 { NULL, "cpd", S_INH2, 0, 0xA9 }, 208 { NULL, "cpdr", S_INH2, 0, 0xB9 }, 209 { NULL, "cpi", S_INH2, 0, 0xA1 }, 210 { NULL, "cpir", S_INH2, 0, 0xB1 }, 211 { NULL, "ind", S_INH2, 0, 0xAA }, 212 { NULL, "indr", S_INH2, 0, 0xBA }, 213 { NULL, "ini", S_INH2, 0, 0xA2 }, 214 { NULL, "inir", S_INH2, 0, 0xB2 }, 215 { NULL, "ldd", S_INH2, 0, 0xA8 }, 216 { NULL, "lddr", S_INH2, 0, 0xB8 }, 217 { NULL, "ldi", S_INH2, 0, 0xA0 }, 218 { NULL, "ldir", S_INH2, 0, 0xB0 }, 219 { NULL, "neg", S_INH2, 0, 0x44 }, 220 { NULL, "otdr", S_INH2, 0, 0xBB }, 221 { NULL, "otir", S_INH2, 0, 0xB3 }, 222 { NULL, "outd", S_INH2, 0, 0xAB }, 223 { NULL, "outi", S_INH2, 0, 0xA3 }, 224 { NULL, "reti", S_INH2, 0, 0x4D }, 225 { NULL, "retn", S_INH2, 0, 0x45 }, 226 { NULL, "rld", S_INH2, 0, 0x6F }, 227 { NULL, "rrd", S_INH2, 0, 0x67 }, 228 229 { NULL, ".allow_undocumented", X_UNDOCD, 0, 0 }, 230 231 /* 64180 */ 232 233 { NULL, "otdm", X_INH2, 0, 0x8B }, 234 { NULL, "otdmr", X_INH2, 0, 0x9B }, 235 { NULL, "otim", X_INH2, 0, 0x83 }, 236 { NULL, "otimr", X_INH2, 0, 0x93 }, 237 { NULL, "slp", X_INH2, 0, 0x76 }, 238 239 { NULL, "in0", X_IN, 0, 0x00 }, 240 { NULL, "out0", X_OUT, 0, 0x01 }, 241 242 { NULL, "mlt", X_MLT, 0, 0x4C }, 243 244 { NULL, "tst", X_TST, 0, 0x04 }, 245 { NULL, "test", X_TST, 0, 0x04 }, 246 { NULL, "tstio", X_TSTIO, 0, 0x74 }, 247 248 /* z80-zxn */ 249 250 { NULL, "swapnib", X_ZXN_INH2, 0, 0x23 }, 251 { NULL, "mul", X_ZXN_MUL, 0, 0x30 }, 252 { NULL, "outinb", X_ZXN_INH2, 0, 0x90 }, 253 { NULL, "ldix", X_ZXN_INH2, 0, 0xA4 }, 254 { NULL, "ldirx", X_ZXN_INH2, 0, 0xB4 }, 255 { NULL, "lddx", X_ZXN_INH2, 0, 0xAC }, 256 { NULL, "lddrx", X_ZXN_INH2, 0, 0xBC }, 257 { NULL, "ldirscale", X_ZXN_INH2, 0, 0xB6 }, 258 { NULL, "ldpirx", X_ZXN_INH2, 0, 0xB7 }, 259 { NULL, "mirror", X_ZXN_MIRROR, 0, 0 }, 260 { NULL, "nextreg", X_ZXN_NEXTREG, 0, 0 }, 261 { NULL, "pixeldn", X_ZXN_INH2, 0, 0x93 }, 262 { NULL, "pixelad", X_ZXN_INH2, 0, 0x94 }, 263 { NULL, "setae", X_ZXN_INH2, 0, 0x95 }, 264 { NULL, "mmu0", X_ZXN_MMU, 0, 0x50 }, 265 { NULL, "mmu1", X_ZXN_MMU, 0, 0x51 }, 266 { NULL, "mmu2", X_ZXN_MMU, 0, 0x52 }, 267 { NULL, "mmu3", X_ZXN_MMU, 0, 0x53 }, 268 { NULL, "mmu4", X_ZXN_MMU, 0, 0x54 }, 269 { NULL, "mmu5", X_ZXN_MMU, 0, 0x55 }, 270 { NULL, "mmu6", X_ZXN_MMU, 0, 0x56 }, 271 { NULL, "mmu7", X_ZXN_MMU, 0, 0x57 }, 272 { NULL, "cu.wait", X_ZXN_CU_WAIT, 0, 0 }, 273 { NULL, "cu.move", X_ZXN_CU_MOVE, 0, 0 }, 274 { NULL, "cu.stop", X_ZXN_CU_STOP, 0, 0 }, 275 { NULL, "cu.nop", X_ZXN_CU_NOP, 0, 0 }, 276 277 /* eZ80 */ 278 279 { NULL, ".adl", X_EZ_ADL, 0, 0 }, 280 281 { NULL, "ld.il", S_LD, M_IL, 0x40 }, 282 { NULL, "ld.is", S_LD, M_IS, 0x40 }, 283 { NULL, "ld.l", S_LD, M_L, 0x40 }, 284 { NULL, "ld.lil", S_LD, M_LIL, 0x40 }, 285 { NULL, "ld.s", S_LD, M_S, 0x40 }, 286 { NULL, "ld.sis", S_LD, M_SIS, 0x40 }, 287 288 { NULL, "call.il", S_CALL, M_IL, 0xC4 }, 289 { NULL, "call.is", S_CALL, M_IS, 0xC4 }, 290 291 { NULL, "jp.l", S_JP, M_L, 0xC2 }, 292 { NULL, "jp.lil", S_JP, M_LIL, 0xC2 }, 293 { NULL, "jp.s", S_JP, M_S, 0xC2 }, 294 { NULL, "jp.sis", S_JP, M_SIS, 0xC2 }, 295 296 { NULL, "ret.l", S_RET, M_L, 0xC0 }, 297 { NULL, "ret.s", S_RET, M_S, 0xC0 }, 298 299 { NULL, "bit.l", S_BIT, M_L, 0x40 }, 300 { NULL, "bit.s", S_BIT, M_S, 0x40 }, 301 { NULL, "res.l", S_BIT, M_L, 0x80 }, 302 { NULL, "res.s", S_BIT, M_S, 0x80 }, 303 { NULL, "set.l", S_BIT, M_L, 0xC0 }, 304 { NULL, "set.s", S_BIT, M_S, 0xC0 }, 305 306 { NULL, "inc.l", S_INC, M_L, 0x04 }, 307 { NULL, "inc.s", S_INC, M_S, 0x04 }, 308 309 { NULL, "dec.l", S_DEC, M_L, 0x05 }, 310 { NULL, "dec.s", S_DEC, M_S, 0x05 }, 311 312 { NULL, "add.l", S_ADD, M_L, 0x80 }, 313 { NULL, "add.s", S_ADD, M_S, 0x80 }, 314 315 { NULL, "adc.l", S_ADC, M_L, 0x88 }, 316 { NULL, "adc.s", S_ADC, M_S, 0x88 }, 317 318 { NULL, "sub.l", S_SUB, M_L, 0x90 }, 319 { NULL, "sub.s", S_SUB, M_S, 0x90 }, 320 321 { NULL, "sbc.l", S_SBC, M_L, 0x98 }, 322 { NULL, "sbc.s", S_SBC, M_S, 0x98 }, 323 324 { NULL, "and.l", S_AND, M_L, 0xA0 }, 325 { NULL, "and.s", S_AND, M_S, 0xA0 }, 326 { NULL, "cp.l", S_AND, M_L, 0xB8 }, 327 { NULL, "cp.s", S_AND, M_S, 0xB8 }, 328 { NULL, "or.l", S_AND, M_L, 0xB0 }, 329 { NULL, "or.s", S_AND, M_S, 0xB0 }, 330 { NULL, "xor.l", S_AND, M_L, 0xA8 }, 331 { NULL, "xor.s", S_AND, M_S, 0xA8 }, 332 333 { NULL, "ex.l", S_EX, M_L, 0xE3 }, 334 { NULL, "ex.s", S_EX, M_S, 0xE3 }, 335 336 { NULL, "push.l", S_PUSH, M_L, 0xC5 }, 337 { NULL, "push.s", S_PUSH, M_S, 0xC5 }, 338 { NULL, "pop.l", S_PUSH, M_L, 0xC1 }, 339 { NULL, "pop.s", S_PUSH, M_S, 0xC1 }, 340 341 { NULL, "rl.l", S_RL, M_L, 0x10 }, 342 { NULL, "rl.s", S_RL, M_S, 0x10 }, 343 { NULL, "rlc.l", S_RL, M_L, 0x00 }, 344 { NULL, "rlc.s", S_RL, M_S, 0x00 }, 345 { NULL, "rr.l", S_RL, M_L, 0x18 }, 346 { NULL, "rr.s", S_RL, M_S, 0x18 }, 347 { NULL, "rrc.l", S_RL, M_L, 0x08 }, 348 { NULL, "rrc.s", S_RL, M_S, 0x08 }, 349 { NULL, "sla.l", S_RL, M_L, 0x20 }, 350 { NULL, "sla.s", S_RL, M_S, 0x20 }, 351 { NULL, "sra.l", S_RL, M_L, 0x28 }, 352 { NULL, "sra.s", S_RL, M_S, 0x28 }, 353 { NULL, "srl.l", S_RL, M_L, 0x38 }, 354 { NULL, "srl.s", S_RL, M_S, 0x38 }, 355 356 { NULL, "rst.l", S_RST, M_L, 0xC7 }, 357 { NULL, "rst.s", S_RST, M_S, 0xC7 }, 358 359 { NULL, "cpd.l", S_INH2, M_L, 0xA9 }, 360 { NULL, "cpd.s", S_INH2, M_S, 0xA9 }, 361 { NULL, "cpdr.l", S_INH2, M_L, 0xB9 }, 362 { NULL, "cpdr.s", S_INH2, M_S, 0xB9 }, 363 { NULL, "cpi.l", S_INH2, M_L, 0xA1 }, 364 { NULL, "cpi.s", S_INH2, M_S, 0xA1 }, 365 { NULL, "cpir.l", S_INH2, M_L, 0xB1 }, 366 { NULL, "cpir.s", S_INH2, M_S, 0xB1 }, 367 { NULL, "ind.l", S_INH2, M_L, 0xAA }, 368 { NULL, "ind.s", S_INH2, M_S, 0xAA }, 369 { NULL, "ind2", X_EZ_INH2, 0, 0x8C }, 370 { NULL, "ind2.l", X_EZ_INH2, M_L, 0x8C }, 371 { NULL, "ind2.s", X_EZ_INH2, M_S, 0x8C }, 372 { NULL, "indr.l", S_INH2, M_L, 0xBA }, 373 { NULL, "indr.s", S_INH2, M_S, 0xBA }, 374 { NULL, "ind2r", X_EZ_INH2, 0, 0x9C }, 375 { NULL, "ind2r.l", X_EZ_INH2, M_L, 0x9C }, 376 { NULL, "ind2r.s", X_EZ_INH2, M_S, 0x9C }, 377 { NULL, "indrx", X_EZ_INH2, 0, 0xCA }, 378 { NULL, "indrx.l", X_EZ_INH2, M_L, 0xCA }, 379 { NULL, "indrx.s", X_EZ_INH2, M_S, 0xCA }, 380 { NULL, "indm", X_EZ_INH2, 0, 0x8A }, 381 { NULL, "indm.l", X_EZ_INH2, M_L, 0x8A }, 382 { NULL, "indm.s", X_EZ_INH2, M_S, 0x8A }, 383 { NULL, "indmr", X_EZ_INH2, 0, 0x9A }, 384 { NULL, "indmr.l", X_EZ_INH2, M_L, 0x9A }, 385 { NULL, "indmr.s", X_EZ_INH2, M_S, 0x9A }, 386 { NULL, "ini.l", S_INH2, M_L, 0xA2 }, 387 { NULL, "ini.s", S_INH2, M_S, 0xA2 }, 388 { NULL, "ini2", X_EZ_INH2, 0, 0x84 }, 389 { NULL, "ini2.l", X_EZ_INH2, M_L, 0x84 }, 390 { NULL, "ini2.s", X_EZ_INH2, M_S, 0x84 }, 391 { NULL, "inir.l", S_INH2, M_L, 0xB2 }, 392 { NULL, "inir.s", S_INH2, M_S, 0xB2 }, 393 { NULL, "inirx", X_EZ_INH2, 0, 0xC2 }, 394 { NULL, "inirx.l", X_EZ_INH2, M_L, 0xC2 }, 395 { NULL, "inirx.s", X_EZ_INH2, M_S, 0xC2 }, 396 { NULL, "ini2r", X_EZ_INH2, 0, 0x94 }, 397 { NULL, "ini2r.l", X_EZ_INH2, M_L, 0x94 }, 398 { NULL, "ini2r.s", X_EZ_INH2, M_S, 0x94 }, 399 { NULL, "inim", X_EZ_INH2, 0, 0x82 }, 400 { NULL, "inim.l", X_EZ_INH2, M_L, 0x82 }, 401 { NULL, "inim.s", X_EZ_INH2, M_S, 0x82 }, 402 { NULL, "inimr", X_EZ_INH2, 0, 0x92 }, 403 { NULL, "inimr.l", X_EZ_INH2, M_L, 0x92 }, 404 { NULL, "inimr.s", X_EZ_INH2, M_S, 0x92 }, 405 { NULL, "ldd.l", S_INH2, M_L, 0xA8 }, 406 { NULL, "ldd.s", S_INH2, M_S, 0xA8 }, 407 { NULL, "lddr.l", S_INH2, M_L, 0xB8 }, 408 { NULL, "lddr.s", S_INH2, M_S, 0xB8 }, 409 { NULL, "ldi.l", S_INH2, M_L, 0xA0 }, 410 { NULL, "ldi.s", S_INH2, M_S, 0xA0 }, 411 { NULL, "ldir.l", S_INH2, M_L, 0xB0 }, 412 { NULL, "ldir.s", S_INH2, M_S, 0xB0 }, 413 { NULL, "otdr.l", S_INH2, M_L, 0xBB }, 414 { NULL, "otdr.s", S_INH2, M_S, 0xBB }, 415 { NULL, "otd2r", X_EZ_INH2, 0, 0xBC }, 416 { NULL, "otd2r.l", X_EZ_INH2, M_L, 0xBC }, 417 { NULL, "otd2r.s", X_EZ_INH2, M_S, 0xBC }, 418 { NULL, "otdrx", X_EZ_INH2, 0, 0xCB }, 419 { NULL, "otdrx.l", X_EZ_INH2, M_L, 0xCB }, 420 { NULL, "otdrx.s", X_EZ_INH2, M_S, 0xCB }, 421 { NULL, "otir.l", S_INH2, M_L, 0xB3 }, 422 { NULL, "otir.s", S_INH2, M_S, 0xB3 }, 423 { NULL, "oti2r", X_EZ_INH2, 0, 0xB4 }, 424 { NULL, "oti2r.l", X_EZ_INH2, M_L, 0xB4 }, 425 { NULL, "oti2r.s", X_EZ_INH2, M_S, 0xB4 }, 426 { NULL, "otirx", X_EZ_INH2, 0, 0xC3 }, 427 { NULL, "otirx.l", X_EZ_INH2, M_L, 0xC3 }, 428 { NULL, "otirx.s", X_EZ_INH2, M_S, 0xC3 }, 429 { NULL, "outd.l", S_INH2, M_L, 0xAB }, 430 { NULL, "outd.s", S_INH2, M_S, 0xAB }, 431 { NULL, "outd2", X_EZ_INH2, 0, 0xAC }, 432 { NULL, "outd2.l", X_EZ_INH2, M_L, 0xAC }, 433 { NULL, "outd2.s", X_EZ_INH2, M_S, 0xAC }, 434 { NULL, "outi.l", S_INH2, M_L, 0xA3 }, 435 { NULL, "outi.s", S_INH2, M_S, 0xA3 }, 436 { NULL, "outi2", X_EZ_INH2, 0, 0xA4 }, 437 { NULL, "outi2.l", X_EZ_INH2, M_L, 0xA4 }, 438 { NULL, "outi2.s", X_EZ_INH2, M_S, 0xA4 }, 439 { NULL, "otdm.l", X_INH2, M_L, 0x8B }, 440 { NULL, "otdm.s", X_INH2, M_S, 0x8B }, 441 { NULL, "otdmr.l", X_INH2, M_L, 0x9B }, 442 { NULL, "otdmr.s", X_INH2, M_S, 0x9B }, 443 { NULL, "otim.l", X_INH2, M_L, 0x83 }, 444 { NULL, "otim.s", X_INH2, M_S, 0x83 }, 445 { NULL, "otimr.l", X_INH2, M_L, 0x93 }, 446 { NULL, "otimr.s", X_INH2, M_S, 0x93 }, 447 { NULL, "reti.l", S_INH2, M_L, 0x4D }, 448 { NULL, "reti.s", S_INH2, M_S, 0x4D }, 449 { NULL, "retn.l", S_INH2, M_L, 0x45 }, 450 { NULL, "retn.s", S_INH2, M_S, 0x45 }, 451 452 { NULL, "mlt.l", X_MLT, M_L, 0x4C }, 453 { NULL, "mlt.s", X_MLT, M_S, 0x4C }, 454 455 { NULL, "tst.l", X_TST, M_L, 0x04 }, 456 { NULL, "tst.s", X_TST, M_S, 0x04 }, 457 458 { NULL, "lea", X_EZ_LEA, 0, 0x00 }, 459 { NULL, "lea.l", X_EZ_LEA, M_L, 0x00 }, 460 { NULL, "lea.s", X_EZ_LEA, M_S, 0x00 }, 461 462 { NULL, "pea", X_EZ_PEA, 0, 0x65 }, 463 { NULL, "pea.l", X_EZ_PEA, M_L, 0x65 }, 464 { NULL, "pea.s", X_EZ_PEA, M_S, 0x65 }, 465 466 { NULL, "rsmix", X_EZ_INH2, 0, 0x7E }, 467 { NULL, "stmix", X_EZ_INH2, S_EOL, 0x7D } 468 469 }; 470