2 * Simulator of microcontrollers (glob.cc)
4 * Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
6 * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
10 /* This file is part of microcontroller simulator: ucsim.
12 UCSIM is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2 of the License, or
15 (at your option) any later version.
17 UCSIM is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
22 You should have received a copy of the GNU General Public License
23 along with UCSIM; see the file COPYING. If not, write to the Free
24 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
32 /* PDK14 instructions described in PFS154. */
36 %k - immediate addressing
37 %m - memory addressing
38 %mn - memory addressing when using N-bit
40 %in - IO addressing when using N-bit
44 /* uint code, mask; char branch; uchar length; char *mnemonic; */
46 struct dis_entry disass_pdk_13
[]= {
47 { 0x0000, ~0x0000, ' ', 1, "nop" },
48 { 0x003A, ~0x0000, ' ', 1, "ret" },
49 { 0x0100, ~0x00FF, ' ', 1, "ret %k" },
50 { 0x003B, ~0x0000, ' ', 1, "reti" },
51 { 0x1700, ~0x00FF, ' ', 1, "mov a,%k" },
52 { 0x0080, ~0x001F, ' ', 1, "mov %i,a" },
53 { 0x00A0, ~0x001F, ' ', 1, "mov a,%i" },
54 { 0x05C0, ~0x003F, ' ', 1, "mov %m,a" },
55 { 0x07C0, ~0x003F, ' ', 1, "mov a,%m" },
56 { 0x00C1, ~0x001E, ' ', 1, "ldt16 'M5'" },
57 { 0x00C0, ~0x001E, ' ', 1, "stt16 'M5'" },
58 { 0x00E1, ~0x001E, ' ', 1, "idxm a,'M5'" },
59 { 0x00E0, ~0x001E, ' ', 1, "idxm 'M5',a" },
60 { 0x09C0, ~0x003F, ' ', 1, "xch %m" },
61 { 0x0032, ~0x0000, ' ', 1, "push af" },
62 { 0x0033, ~0x0000, ' ', 1, "pop af" },
64 { 0x1000, ~0x00FF, ' ', 1, "add %k" },
65 { 0x0400, ~0x003F, ' ', 1, "add %m,a" },
66 { 0x0600, ~0x003F, ' ', 1, "add a,%m" },
67 { 0x1100, ~0x00FF, ' ', 1, "sub %k" },
68 { 0x0440, ~0x003F, ' ', 1, "sub %m,a" },
69 { 0x0640, ~0x003F, ' ', 1, "sub a,%m" },
70 { 0x0010, ~0x0000, ' ', 1, "addc" },
71 { 0x0480, ~0x003F, ' ', 1, "addc %m,a" },
72 { 0x0680, ~0x003F, ' ', 1, "addc a,%m" },
73 { 0x0800, ~0x003F, ' ', 1, "addc %m" },
74 { 0x0011, ~0x0000, ' ', 1, "subc" },
75 { 0x04C0, ~0x003F, ' ', 1, "subc %m,a" },
76 { 0x06C0, ~0x003F, ' ', 1, "subc a,%m" },
77 { 0x0840, ~0x007F, ' ', 1, "subc %m" },
79 { 0x0900, ~0x003F, ' ', 1, "inc %m" },
80 { 0x0940, ~0x003F, ' ', 1, "dec %m" },
81 { 0x0980, ~0x003F, ' ', 1, "clear %m" },
82 { 0x001A, ~0x0000, ' ', 1, "sr" },
83 { 0x0A80, ~0x003F, ' ', 1, "sr %m" },
84 { 0x001B, ~0x0000, ' ', 1, "sl" },
85 { 0x0AC0, ~0x003F, ' ', 1, "sl %m" },
86 { 0x001C, ~0x0000, ' ', 1, "src" },
87 { 0x0B00, ~0x003F, ' ', 1, "src %m"},
88 { 0x001D, ~0x0000, ' ', 1, "slc" },
89 { 0x0B40, ~0x003F, ' ', 1, "slc %m" },
91 { 0x1400, ~0x00FF, ' ', 1, "and %k" },
92 { 0x0500, ~0x003F, ' ', 1, "and %m,a" },
93 { 0x0700, ~0x003F, ' ', 1, "and a,%m" },
94 { 0x1500, ~0x00FF, ' ', 1, "or %k" },
95 { 0x0540, ~0x003F, ' ', 1, "or %m,a" },
96 { 0x0740, ~0x003F, ' ', 1, "or a,%m" },
97 { 0x1600, ~0x00FF, ' ', 1, "xor %k" },
98 { 0x0580, ~0x003F, ' ', 1, "xor %m,a" },
99 { 0x0780, ~0x003F, ' ', 1, "xor a,%m" },
100 { 0x0060, ~0x001F, ' ', 1, "xor %i,a" },
102 { 0x0018, ~0x0000, ' ', 1, "not" },
103 { 0x0A00, ~0x003F, ' ', 1, "not %m" },
104 { 0x0019, ~0x0000, ' ', 1, "neg" },
105 { 0x0A40, ~0x003F, ' ', 1, "neg %m" },
107 { 0x0E00, ~0x00FF, ' ', 1, "set0 %i,%n" },
108 { 0x0300, ~0x00EF, ' ', 1, "set0 'M4','n5'" },
109 { 0x0F00, ~0x00FF, ' ', 1, "set1 %i,%n" },
110 { 0x0310, ~0x00EF, ' ', 1, "set1 'M4',%n" },
111 { 0x0C00, ~0x00FF, ' ', 1, "t0sn %i,%n" },
112 { 0x0200, ~0x00EF, ' ', 1, "t0sn '4m','5n'" },
113 { 0x0D00, ~0x00FF, ' ', 1, "t1sn %i,%n" },
114 { 0x0210, ~0x00EF, ' ', 1, "t1sn '4M','5n'" },
116 { 0x1200, ~0x00FF, ' ', 1, "ceqsn %k" },
117 { 0x0B80, ~0x003F, ' ', 1, "ceqsn %m" },
118 { 0x1300, ~0x00FF, ' ', 1, "cneqsn %k" },
119 { 0x0BC0, ~0x003F, ' ', 1, "cneqsn %m" },
121 { 0x0012, ~0x0000, ' ', 1, "izsn" },
122 { 0x0880, ~0x003F, ' ', 1, "izsn %m" },
123 { 0x0013, ~0x0000, ' ', 1, "dzsn" },
124 { 0x08C0, ~0x003F, ' ', 1, "dzsn %m" },
126 { 0x1C00, ~0x03FF, ' ', 1, "call 'a10'" },
127 { 0x1800, ~0x03FF, ' ', 1, "goto 'a10'" },
129 { 0x001E, ~0x0000, ' ', 1, "swap" },
130 { 0x0017, ~0x0000, ' ', 1, "pcadd" },
131 { 0x0038, ~0x0000, ' ', 1, "engint" },
132 { 0x0039, ~0x0000, ' ', 1, "disint" },
133 { 0x0036, ~0x0000, ' ', 1, "stopsys" },
134 { 0x0037, ~0x0000, ' ', 1, "stopexe" },
135 { 0x0035, ~0x0000, ' ', 1, "reset" },
136 { 0x0030, ~0x0000, ' ', 1, "wdreset" },
137 { 0x0006, ~0x0000, ' ', 1, "ldsptl" },
138 { 0x0007, ~0x0000, ' ', 1, "ldspth" },
139 { 0x003C, ~0x0000, ' ', 1, "mul" },
141 { 0xFF00, ~0x0000, ' ', 1, "putchar" },
146 struct dis_entry disass_pdk_14
[]= {
147 { 0x0000, ~0x0000, ' ', 1, "nop" },
148 { 0x007A, ~0x0000, ' ', 1, "ret" },
149 { 0x0200, ~0x00FF, ' ', 1, "ret %k" },
150 { 0x007B, ~0x0000, ' ', 1, "reti" },
151 { 0x2F00, ~0x00FF, ' ', 1, "mov a,%k" },
152 { 0x0180, ~0x003F, ' ', 1, "mov %i,a" },
153 { 0x01C0, ~0x003F, ' ', 1, "mov a,%i" },
154 { 0x0B80, ~0x007F, ' ', 1, "mov %m,a" },
155 { 0x0F80, ~0x007F, ' ', 1, "mov a,%m" },
156 { 0x0301, ~0x007E, ' ', 1, "ldt16 'M7'" },
157 { 0x0300, ~0x007E, ' ', 1, "stt16 'M7'" },
158 { 0x0381, ~0x007E, ' ', 1, "idxm a,'M7'" },
159 { 0x0380, ~0x007E, ' ', 1, "idxm 'M7',a" },
160 { 0x1380, ~0x007F, ' ', 1, "xch %m" },
161 { 0x0072, ~0x0000, ' ', 1, "push af" },
162 { 0x0073, ~0x0000, ' ', 1, "pop af" },
164 { 0x2800, ~0x00FF, ' ', 1, "add %k" },
165 { 0x0800, ~0x007F, ' ', 1, "add %m,a" },
166 { 0x0C00, ~0x007F, ' ', 1, "add a,%m" },
167 { 0x2900, ~0x00FF, ' ', 1, "sub %k" },
168 { 0x0880, ~0x007F, ' ', 1, "sub %m,a" },
169 { 0x0C80, ~0x007F, ' ', 1, "sub a,%m" },
170 { 0x0060, ~0x0000, ' ', 1, "addc" },
171 { 0x0900, ~0x007F, ' ', 1, "addc %m,a" },
172 { 0x0D00, ~0x007F, ' ', 1, "addc a,%m" },
173 { 0x1000, ~0x007F, ' ', 1, "addc %m" },
174 { 0x0061, ~0x0000, ' ', 1, "subc" },
175 { 0x0980, ~0x007F, ' ', 1, "subc %m,a" },
176 { 0x0D80, ~0x007F, ' ', 1, "subc a,%m" },
177 { 0x1080, ~0x007F, ' ', 1, "subc %m" },
179 { 0x1200, ~0x007F, ' ', 1, "inc %m" },
180 { 0x1280, ~0x007F, ' ', 1, "dec %m" },
181 { 0x1300, ~0x007F, ' ', 1, "clear %m" },
182 { 0x006A, ~0x0000, ' ', 1, "sr" },
183 { 0x1500, ~0x007F, ' ', 1, "sr %m" },
184 { 0x006B, ~0x0000, ' ', 1, "sl" },
185 { 0x1580, ~0x007F, ' ', 1, "sl %m" },
186 { 0x006C, ~0x0000, ' ', 1, "src" },
187 { 0x1600, ~0x007F, ' ', 1, "src %m"},
188 { 0x006D, ~0x0000, ' ', 1, "slc" },
189 { 0x1680, ~0x007F, ' ', 1, "slc %m" },
191 { 0x2C00, ~0x00FF, ' ', 1, "and %k" },
192 { 0x0A00, ~0x007F, ' ', 1, "and %m,a" },
193 { 0x0E00, ~0x007F, ' ', 1, "and a,%m" },
194 { 0x2D00, ~0x00FF, ' ', 1, "or %k" },
195 { 0x0A80, ~0x007F, ' ', 1, "or %m,a" },
196 { 0x0E80, ~0x007F, ' ', 1, "or a,%m" },
197 { 0x2E00, ~0x00FF, ' ', 1, "xor %k" },
198 { 0x0B00, ~0x007F, ' ', 1, "xor %m,a" },
199 { 0x0F00, ~0x007F, ' ', 1, "xor a,%m" },
200 { 0x00C0, ~0x003F, ' ', 1, "xor %i,a" },
202 { 0x0068, ~0x0000, ' ', 1, "not" },
203 { 0x1400, ~0x007F, ' ', 1, "not %m" },
204 { 0x0069, ~0x0000, ' ', 1, "neg" },
205 { 0x1480, ~0x007F, ' ', 1, "neg %m" },
207 { 0x1C00, ~0x01FF, ' ', 1, "set0 %i,'n6'" },
208 { 0x2400, ~0x01FF, ' ', 1, "set0 'm6','n6'" },
209 { 0x1E00, ~0x01FF, ' ', 1, "set1 %i,'n6'" },
210 { 0x2600, ~0x01FF, ' ', 1, "set1 'm6','n6'" },
211 { 0x1800, ~0x01FF, ' ', 1, "t0sn %i,'n6" },
212 { 0x2000, ~0x01FF, ' ', 1, "t0sn 'm6','n6'" },
213 { 0x1A00, ~0x01FF, ' ', 1, "t1sn %i,'n6'" },
214 { 0x2200, ~0x01FF, ' ', 1, "t1sn 'm6','n6'" },
216 { 0x2A00, ~0x00FF, ' ', 1, "ceqsn %k" },
217 { 0x1700, ~0x007F, ' ', 1, "ceqsn %m" },
218 { 0x2B00, ~0x00FF, ' ', 1, "cneqsn %k" },
219 { 0x1780, ~0x007F, ' ', 1, "cneqsn %m" },
221 { 0x0062, ~0x0000, ' ', 1, "izsn" },
222 { 0x1100, ~0x007F, ' ', 1, "izsn %m" },
223 { 0x0063, ~0x0000, ' ', 1, "dzsn" },
224 { 0x1180, ~0x007F, ' ', 1, "dzsn %m" },
226 { 0x3800, ~0x07FF, ' ', 1, "call 'a11'" },
227 { 0x3000, ~0x07FF, ' ', 1, "goto 'a11'" },
229 { 0x0600, ~0x007F, ' ', 1, "comp a,%m" },
230 { 0x6800, ~0x007F, ' ', 1, "comp %m,a" },
231 { 0x0700, ~0x007F, ' ', 1, "nadd a,%m" },
232 { 0x0780, ~0x007F, ' ', 1, "nadd %m,a" },
234 { 0x006E, ~0x0000, ' ', 1, "swap" },
235 { 0x0067, ~0x0000, ' ', 1, "pcadd" },
236 { 0x0078, ~0x0000, ' ', 1, "engint" },
237 { 0x0079, ~0x0000, ' ', 1, "disint" },
238 { 0x0076, ~0x0000, ' ', 1, "stopsys" },
239 { 0x0077, ~0x0000, ' ', 1, "stopexe" },
240 { 0x0075, ~0x0000, ' ', 1, "reset" },
241 { 0x0070, ~0x0000, ' ', 1, "wdreset" },
242 { 0x0400, ~0x01FF, ' ', 1, "swapc %i,'n6'" },
243 { 0x0006, ~0x0000, ' ', 1, "ldsptl" },
244 { 0x0007, ~0x0000, ' ', 1, "ldspth" },
245 { 0x007C, ~0x0000, ' ', 1, "mul" },
247 { 0xFF00, ~0x0000, ' ', 1, "putchar" },
252 struct dis_entry disass_pdk_15
[]= {
253 { 0x0000, ~0x0000, ' ', 1, "nop" },
254 { 0x007A, ~0x0000, ' ', 1, "ret" },
255 { 0x0200, ~0x00FF, ' ', 1, "ret %k" },
256 { 0x007B, ~0x0000, ' ', 1, "reti" },
257 { 0x5700, ~0x00FF, ' ', 1, "mov a,%k" },
258 { 0x0100, ~0x007F, ' ', 1, "mov %i,a" },
259 { 0x0180, ~0x007F, ' ', 1, "mov a,%i" },
260 { 0x1700, ~0x00FF, ' ', 1, "mov %m,a" },
261 { 0x1F00, ~0x00FF, ' ', 1, "mov a,%m" },
262 { 0x0601, ~0x00FE, ' ', 1, "ldt16 'M8'" },
263 { 0x0600, ~0x00FE, ' ', 1, "stt16 'M8'" },
264 { 0x0701, ~0x00FE, ' ', 1, "idxm a,'M8'" },
265 { 0x0700, ~0x00FE, ' ', 1, "idxm 'M8',a" },
266 { 0x2700, ~0x00FF, ' ', 1, "xch %m" },
267 { 0x0072, ~0x0000, ' ', 1, "push af" },
268 { 0x0073, ~0x0000, ' ', 1, "pop af" },
270 { 0x5000, ~0x00FF, ' ', 1, "add %k" },
271 { 0x1000, ~0x00FF, ' ', 1, "add %m,a" },
272 { 0x1800, ~0x00FF, ' ', 1, "add a,%m" },
273 { 0x5100, ~0x00FF, ' ', 1, "sub %k" },
274 { 0x1100, ~0x00FF, ' ', 1, "sub %m,a" },
275 { 0x1900, ~0x00FF, ' ', 1, "sub a,%m" },
276 { 0x0060, ~0x0000, ' ', 1, "addc" },
277 { 0x1200, ~0x00FF, ' ', 1, "addc %m,a" },
278 { 0x1A00, ~0x00FF, ' ', 1, "addc a,%m" },
279 { 0x2000, ~0x00FF, ' ', 1, "addc %m" },
280 { 0x0061, ~0x0000, ' ', 1, "subc" },
281 { 0x1300, ~0x00FF, ' ', 1, "subc %m,a" },
282 { 0x1B00, ~0x00FF, ' ', 1, "subc a,%m" },
283 { 0x2100, ~0x00FF, ' ', 1, "subc %m" },
285 { 0x2400, ~0x00FF, ' ', 1, "inc %m" },
286 { 0x2500, ~0x00FF, ' ', 1, "dec %m" },
287 { 0x2600, ~0x00FF, ' ', 1, "clear %m" },
288 { 0x006A, ~0x0000, ' ', 1, "sr" },
289 { 0x2A00, ~0x00FF, ' ', 1, "sr %m" },
290 { 0x006B, ~0x0000, ' ', 1, "sl" },
291 { 0x2B00, ~0x00FF, ' ', 1, "sl %m" },
292 { 0x006C, ~0x0000, ' ', 1, "src" },
293 { 0x2C00, ~0x00FF, ' ', 1, "src %m"},
294 { 0x006D, ~0x0000, ' ', 1, "slc" },
295 { 0x2D00, ~0x00FF, ' ', 1, "slc %m" },
297 { 0x5400, ~0x00FF, ' ', 1, "and %k" },
298 { 0x1400, ~0x00FF, ' ', 1, "and %m,a" },
299 { 0x1C00, ~0x00FF, ' ', 1, "and a,%m" },
300 { 0x5500, ~0x00FF, ' ', 1, "or %k" },
301 { 0x1500, ~0x00FF, ' ', 1, "or %m,a" },
302 { 0x1D00, ~0x00FF, ' ', 1, "or a,%m" },
303 { 0x5600, ~0x00FF, ' ', 1, "xor %k" },
304 { 0x1600, ~0x00FF, ' ', 1, "xor %m,a" },
305 { 0x1E00, ~0x00FF, ' ', 1, "xor a,%m" },
306 { 0x0080, ~0x007F, ' ', 1, "xor %i,a" },
308 { 0x0068, ~0x0000, ' ', 1, "not" },
309 { 0x2800, ~0x00FF, ' ', 1, "not %m" },
310 { 0x0069, ~0x0000, ' ', 1, "neg" },
311 { 0x2900, ~0x00FF, ' ', 1, "neg %m" },
313 { 0x3800, ~0x03FF, ' ', 1, "set0 %i,'n7'" },
314 { 0x4800, ~0x03FF, ' ', 1, "set0 'm7','n7'" },
315 { 0x3C00, ~0x03FF, ' ', 1, "set1 %i,'n7'" },
316 { 0x4C00, ~0x03FF, ' ', 1, "set1 'm7','n7'" },
317 { 0x3000, ~0x03FF, ' ', 1, "t0sn %i,'n7'" },
318 { 0x4000, ~0x03FF, ' ', 1, "t0sn 'm7,'n7'" },
319 { 0x3400, ~0x03FF, ' ', 1, "t1sn %i,'n7'" },
320 { 0x4400, ~0x03FF, ' ', 1, "t1sn 'm7,'n7'" },
322 { 0x5200, ~0x00FF, ' ', 1, "ceqsn %k" },
323 { 0x2E00, ~0x00FF, ' ', 1, "ceqsn %m" },
324 { 0x5300, ~0x00FF, ' ', 1, "cneqsn %k" },
325 { 0x2F00, ~0x00FF, ' ', 1, "cneqsn %m" },
327 { 0x0062, ~0x0000, ' ', 1, "izsn" },
328 { 0x2200, ~0x00FF, ' ', 1, "izsn %m" },
329 { 0x0063, ~0x0000, ' ', 1, "dzsn" },
330 { 0x2300, ~0x00FF, ' ', 1, "dzsn %m" },
332 { 0x7000, ~0x0FFF, ' ', 1, "call 'A12'" },
333 { 0x6000, ~0x0FFF, ' ', 1, "goto 'A12'" },
335 { 0x0C00, ~0x00FF, ' ', 1, "comp a,%m" },
336 { 0x0D00, ~0x00FF, ' ', 1, "comp %m,a" },
337 { 0x0E00, ~0x00FF, ' ', 1, "nadd a,%m" },
338 { 0x0F00, ~0x00FF, ' ', 1, "nadd %m,a" },
340 { 0x006E, ~0x0000, ' ', 1, "swap" },
341 { 0x0067, ~0x0000, ' ', 1, "pcadd" },
342 { 0x0078, ~0x0000, ' ', 1, "engint" },
343 { 0x0079, ~0x0000, ' ', 1, "disint" },
344 { 0x0076, ~0x0000, ' ', 1, "stopsys" },
345 { 0x0077, ~0x0000, ' ', 1, "stopexe" },
346 { 0x0075, ~0x0000, ' ', 1, "reset" },
347 { 0x0070, ~0x0000, ' ', 1, "wdreset" },
348 { 0x5C00, ~0x03FF, ' ', 1, "swapc %i,'n7'" },
349 { 0x0006, ~0x0000, ' ', 1, "ldsptl" },
350 { 0x0007, ~0x0000, ' ', 1, "ldspth" },
351 { 0x007C, ~0x0000, ' ', 1, "mul" },
353 { 0x0500, ~0x00FF, ' ', 1, "ldtabl 'M8'" },
354 { 0x0501, ~0x00FF, ' ', 1, "ldtabh 'M8'" },
356 { 0xFF00, ~0x0000, ' ', 1, "putchar" },
361 struct dis_entry disass_pdk_16
[]= {
362 { 0x0032, 0xffff, ' ', 1, "push af" },
363 { 0x0033, 0xffff, ' ', 1, "pop af" },
364 { 0x0010, 0xffff, ' ', 1, "addc a" },
365 { 0x0011, 0xffff, ' ', 1, "subc a" },
366 { 0x001a, 0xffff, ' ', 1, "sr a" },
367 { 0x001c, 0xffff, ' ', 1, "src a" },
368 { 0x001b, 0xffff, ' ', 1, "sl a" },
369 { 0x001d, 0xffff, ' ', 1, "slc a" },
370 { 0x001e, 0xffff, ' ', 1, "swap a" },
371 { 0x0018, 0xffff, ' ', 1, "not a" },
372 { 0x0019, 0xffff, ' ', 1, "neg a" },
373 { 0x003c, 0xffff, ' ', 1, "mul" },
374 { 0x0012, 0xffff, ' ', 1, "izsn a" },
375 { 0x0013, 0xffff, ' ', 1, "dzsn a" },
376 { 0x001f, 0xffff, ' ', 1, "delay a" },
377 { 0x003a, 0xffff, ' ', 1, "ret" },
378 { 0x003b, 0xffff, ' ', 1, "reti" },
379 { 0x0000, 0xffff, ' ', 1, "nop" },
380 { 0x0017, 0xffff, ' ', 1, "pcadd a" },
381 { 0x0038, 0xffff, ' ', 1, "engint" },
382 { 0x0039, 0xffff, ' ', 1, "disgint" },
383 { 0x0036, 0xffff, ' ', 1, "stopsys" },
384 { 0x0037, 0xffff, ' ', 1, "stopexe" },
385 { 0x0035, 0xffff, ' ', 1, "reset" },
386 { 0x0030, 0xffff, ' ', 1, "wdtreset" },
388 { 0x0070, 0xfff0, ' ', 1, "pushw pc'd4'" },
389 { 0x0060, 0xfff0, ' ', 1, "pushw pc'd4'" },
391 { 0x0040, 0xffe0, ' ', 1, "pmod 'd5'" },
393 { 0x00c0, 0xffc0, ' ', 1, "mov a,%i" },
394 { 0x0080, 0xffc0, ' ', 1, "mov %i,a" },
395 { 0x1040, 0xffc0, ' ', 1, "xor a,%i" },
396 { 0x1000, 0xffc0, ' ', 1, "xor %i,a" },
398 { 0x1f00, 0xff00, ' ', 1, "mov a,%k" },
399 { 0x1800, 0xff00, ' ', 1, "add a,%k" },
400 { 0x1900, 0xff00, ' ', 1, "sub a,%k" },
401 { 0x1c00, 0xff00, ' ', 1, "and a,%k" },
402 { 0x1d00, 0xff00, ' ', 1, "or a,%k" },
403 { 0x1e00, 0xff00, ' ', 1, "xor a,%k" },
404 { 0x1a00, 0xff00, ' ', 1, "ceqsn a,%k" },
405 { 0x1b00, 0xff00, ' ', 1, "cneqsn a,%k" },
406 { 0x0e00, 0xff00, ' ', 1, "delay %k" },
407 { 0x0f00, 0xff00, ' ', 1, "ret %k" },
409 { 0x5c00, 0xfe00, ' ', 1, "mov %m,a" },
410 { 0x5e00, 0xfe00, ' ', 1, "mov a,%m" },
411 { 0x3200, 0xfe00, ' ', 1, "nmov %m,a" },
412 { 0x3000, 0xfe00, ' ', 1, "nmov a,%m" },
413 { 0x0400, 0xfe01, ' ', 1, "popw %M" },
414 { 0x0401, 0xfe01, ' ', 1, "pushw %M" },
415 { 0x0a00, 0xfe01, ' ', 1, "ltabl %M" },
416 { 0x0a01, 0xfe01, ' ', 1, "ltabh %M" },
417 { 0x0200, 0xfe01, ' ', 1, "stt16 %M" },
418 { 0x0201, 0xfe01, ' ', 1, "ldt16 %M" },
419 { 0x6e00, 0xfe00, ' ', 1, "xch %m" },
420 { 0x6c00, 0xfe00, ' ', 1, "clear %m" },
421 { 0x0800, 0xfe01, ' ', 1, "idxm %M,a" },
422 { 0x0801, 0xfe01, ' ', 1, "idxm a,%M" },
423 { 0x4200, 0xfe00, ' ', 1, "add a,%m" },
424 { 0x4000, 0xfe00, ' ', 1, "add %m,a" },
425 { 0x4a00, 0xfe00, ' ', 1, "addc a,%m" },
426 { 0x4800, 0xfe00, ' ', 1, "addc %m,a" },
427 { 0x6000, 0xfe00, ' ', 1, "addc %m" },
428 { 0x3400, 0xfe00, ' ', 1, "nadd a,%m" },
429 { 0x3600, 0xfe00, ' ', 1, "nadd %m,a" },
430 { 0x4600, 0xfe00, ' ', 1, "sub a,%m" },
431 { 0x4400, 0xfe00, ' ', 1, "sub %m,a" },
432 { 0x4e00, 0xfe00, ' ', 1, "subc a,%m" },
433 { 0x4c00, 0xfe00, ' ', 1, "subc %m,a" },
434 { 0x6200, 0xfe00, ' ', 1, "subc %m" },
435 { 0x6800, 0xfe00, ' ', 1, "inc %m" },
436 { 0x6a00, 0xfe00, ' ', 1, "dec %m" },
437 { 0x7400, 0xfe00, ' ', 1, "sr %m" },
438 { 0x7800, 0xfe00, ' ', 1, "src %m" },
439 { 0x7600, 0xfe00, ' ', 1, "sl %m" },
440 { 0x7a00, 0xfe00, ' ', 1, "slc %m" },
441 { 0x7c00, 0xfe00, ' ', 1, "swap %m" },
442 { 0x5200, 0xfe00, ' ', 1, "and a,%m" },
443 { 0x5000, 0xfe00, ' ', 1, "and %m,a" },
444 { 0x5600, 0xfe00, ' ', 1, "or a,%m" },
445 { 0x5400, 0xfe00, ' ', 1, "or %m,a" },
446 { 0x5a00, 0xfe00, ' ', 1, "xor a,%m" },
447 { 0x5800, 0xfe00, ' ', 1, "xor %m,a" },
448 { 0x7000, 0xfe00, ' ', 1, "not %m" },
449 { 0x7200, 0xfe00, ' ', 1, "neg %m" },
450 { 0x3c00, 0xfe00, ' ', 1, "comp a,%m" },
451 { 0x3e00, 0xfe00, ' ', 1, "comp %m,a" },
452 { 0x3800, 0xfe00, ' ', 1, "ceqsn a,%m" },
453 { 0x3a00, 0xfe00, ' ', 1, "ceqsn %m,a" },
454 { 0x1600, 0xfe00, ' ', 1, "cneqsn a,%m" },
455 { 0x1400, 0xfe00, ' ', 1, "cneqsn %m,a" },
456 { 0x6400, 0xfe00, ' ', 1, "izsn %m" },
457 { 0x6600, 0xfe00, ' ', 1, "dzsn %m" },
458 { 0x2400, 0xfe00, ' ', 1, "set0 %i,'n6'" },
459 { 0x2600, 0xfe00, ' ', 1, "set1 %i,'n6'" },
460 { 0x2e00, 0xfe00, ' ', 1, "swapc %i,'n6'" },
461 { 0x2000, 0xfe00, ' ', 1, "t0sn %i,'n6'" },
462 { 0x2200, 0xfe00, ' ', 1, "t1sn %i,'n6'" },
463 { 0x2a00, 0xfe00, ' ', 1, "wait0 %i,'n6'" },
464 { 0x2c00, 0xfe00, ' ', 1, "wait1 %i,'n6'" },
465 { 0x0600, 0xfe01, ' ', 1, "igoto %m" },
466 { 0x0601, 0xfe01, ' ', 1, "icall %m" },
467 { 0x7e00, 0xfe00, ' ', 1, "delay %m" },
469 { 0xa000, 0xf000, ' ', 1, "set0 %m,'n9'" },
470 { 0xb000, 0xf000, ' ', 1, "set1 %m,'n9'" },
471 { 0x8000, 0xf000, ' ', 1, "t0sn %m,'n9'" },
472 { 0x9000, 0xf000, ' ', 1, "t1sn %m,'n9'" },
474 { 0xe000, 0xe000, ' ', 1, "call 'a13'" },
475 { 0xc000, 0xe000, ' ', 1, "goto 'a13'" },
480 struct cpu_entry cpus_pdk
[]=
482 {"13" , CPU_PDK13
, 0 , "PDK13" , ""},
483 {"PDK13" , CPU_PDK13
, 0 , "PDK13" , ""},
484 {"PMC153" , CPU_PDK13
, 0 , "PDK13" , ""},
486 {"14" , CPU_PDK14
, 0 , "PDK14" , ""},
487 {"PDK14" , CPU_PDK14
, 0 , "PDK14" , ""},
488 {"PMS132B" , CPU_PDK14
, 0 , "PDK14" , ""},
490 {"15" , CPU_PDK15
, 0 , "PDK15" , ""},
491 {"PDK15" , CPU_PDK15
, 0 , "PDK15" , ""},
492 {"PMS134" , CPU_PDK15
, 0 , "PDK15" , ""},
494 {"16" , CPU_PDK16
, 0 , "PDK16" , ""},
495 {"PDK16" , CPU_PDK16
, 0 , "PDK16" , ""},
497 {"X" , CPU_PDKX
, 0 , "PDKX" , ""},
499 {NULL
, CPU_NONE
, 0, "", ""}