@henols/vice-mcp 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/THIRD-PARTY-NOTICES.md +113 -0
- package/backend-detect.mts +595 -0
- package/build.ts +1 -0
- package/disasm-decoder.ts +248 -0
- package/disasm-opcodes.ts +464 -0
- package/disasm-renderer.ts +306 -0
- package/package.json +27 -2
- package/refresh-manifest.ts +23 -2
- package/resources/backend-detect.mjs +396 -0
- package/resources/broker-control.mjs +110 -8
- package/resources/broker-kill.mjs +114 -103
- package/resources/broker-launch.mjs +334 -19
- package/resources/broker-state.mjs +11 -0
- package/resources/vice-broker.mjs +185 -14
- package/stock-address.ts +219 -0
- package/stock-checkpoints.ts +794 -0
- package/stock-condition.ts +636 -0
- package/stock-connect.ts +427 -0
- package/stock-derived.ts +122 -0
- package/stock-disassemble.ts +252 -0
- package/stock-dispatch.ts +640 -0
- package/stock-execution.ts +327 -0
- package/stock-handler.ts +175 -0
- package/stock-input.ts +274 -0
- package/stock-machine.ts +357 -0
- package/stock-memory.ts +323 -0
- package/stock-paths.ts +191 -0
- package/stock-petscii.ts +143 -0
- package/stock-protocol.ts +2057 -0
- package/stock-registers.ts +324 -0
- package/stock-runstate.ts +104 -0
- package/tools-manifest.json +1 -9
- package/tools-manifest.stock.json +841 -0
- package/vice-broker-client.ts +233 -7
- package/vice-proxy.ts +202 -17
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
// disasm-opcodes.ts
|
|
2
|
+
//
|
|
3
|
+
// The committed 256-entry 6502/6510 opcode table -- one entry per opcode
|
|
4
|
+
// byte, indexed by that byte (`OPCODES[0xa9]` is `lda #`). Pure data, zero
|
|
5
|
+
// imports, zero I/O, no build step: this is a container-side `.ts` run
|
|
6
|
+
// directly under Node's native type-stripping (see this package's
|
|
7
|
+
// README/CLAUDE.md), not a host-bound `.mts` -- `build.ts` and
|
|
8
|
+
// `resources-sync.test.ts` do not apply to it.
|
|
9
|
+
//
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Attribution / provenance (D-07, criterion 5)
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Transcribed by hand from cc65's `src/da65/opc6502x.c`, fetched raw
|
|
14
|
+
// (`curl -s https://raw.githubusercontent.com/cc65/cc65/master/src/da65/opc6502x.c`)
|
|
15
|
+
// against `master` @ commit `547d923588d870aacf0b0016c67d0f6a92a70f83`
|
|
16
|
+
// (2026-07-11); the table itself was last touched at commit
|
|
17
|
+
// `02e79d35d73efd31522b5eab986d1919e3560bba` (2025-06-19, "making da65
|
|
18
|
+
// produce the same mnemonics as ca65 uses"). cc65 is zlib-licensed
|
|
19
|
+
// (`(C) 2003-2011, Ullrich von Bassewitz` -- see the header of the source
|
|
20
|
+
// file itself for the full zlib licence text: free use, alteration and
|
|
21
|
+
// redistribution permitted, with the origin-must-not-be-misrepresented and
|
|
22
|
+
// altered-versions-must-be-marked obligations). This transcription satisfies
|
|
23
|
+
// those obligations via this comment.
|
|
24
|
+
//
|
|
25
|
+
// Cross-checked, reference-only (no code taken from either), against
|
|
26
|
+
// masswerk.at's 6502 instruction-set reference and
|
|
27
|
+
// www.oxyron.de/html/opcodes02.html for the illegal-opcode addressing modes,
|
|
28
|
+
// lengths and alternate mnemonics.
|
|
29
|
+
//
|
|
30
|
+
// Nothing in this file is sourced from VICE (its licence is GPL-2, incompatible with this MIT repo). No
|
|
31
|
+
// opcode fact, comment or naming choice here traces to any `vice/src` file,
|
|
32
|
+
// `monitor.c`, `mon_*.c`, or any other VICE source.
|
|
33
|
+
//
|
|
34
|
+
// `fluffy-6502`, named in ROADMAP.md and carried into
|
|
35
|
+
// `04-CONTEXT.md` D-06 as an MIT cross-check source, could not be located
|
|
36
|
+
// under that name on GitHub or the general web (04-RESEARCH.md Assumptions
|
|
37
|
+
// Log A1, Common Pitfalls Pitfall 5). It is recorded here as an
|
|
38
|
+
// **unavailable** source, not cited as one. D-06's bit-pattern derivation
|
|
39
|
+
// test (`disasm-opcodes.test.ts`) and 04-06's byte-exact real-ACME
|
|
40
|
+
// round-trip carry the entire independent cross-check burden instead.
|
|
41
|
+
//
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Mnemonic naming: two deliberate departures from cc65's own spelling
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// cc65 spells two illegal opcodes differently from ACME's verified
|
|
46
|
+
// `!cpu 6510` mnemonic set (`.claude/skills/acme-build/SKILL.md`: `lax dcp
|
|
47
|
+
// sax slo rla sre rra isc anc alr arr sbx las tas sha shx shy jam`). This
|
|
48
|
+
// table follows ACME's names, not cc65's, at exactly these two opcodes, so
|
|
49
|
+
// that `acmeExpressible` below can be computed by simple set membership
|
|
50
|
+
// against that verified list:
|
|
51
|
+
// - `$AB` -- cc65 calls this "lax" (an immediate-mode ANE/ATX/LXA/OAL
|
|
52
|
+
// family member). Renamed here to "lxa" so it is never confused with the
|
|
53
|
+
// genuine indexed-addressing LAX family (`$A3/$A7/$AF/$B3/$B7/$BF`),
|
|
54
|
+
// which ACME DOES accept as "lax". 04-06's real-ACME round-trip found
|
|
55
|
+
// that ACME 0.97 ("Zem") ALSO accepts "lxa" (with a documented "unstable
|
|
56
|
+
// LXA #NONZERO" warning, not an error) and reproduces exactly `$AB` --
|
|
57
|
+
// this entry's `acmeExpressible` is `true`, corrected from an earlier,
|
|
58
|
+
// untested `false` seed.
|
|
59
|
+
// - `$CB` -- cc65 calls this "axs". Renamed here to "sbx" (SBX/AXS/SAX2
|
|
60
|
+
// are all names for the same opcode; masswerk.at and oxyron.de both use
|
|
61
|
+
// "SBX"), matching ACME's verified list. `acmeExpressible` is `true`.
|
|
62
|
+
// No other mnemonic in this table differs from cc65's spelling.
|
|
63
|
+
//
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// `acmeExpressible` corrections made by 04-06's real-ACME round-trip
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// D-09 says the seed above is not the authority -- `disasm-roundtrip.test.ts`
|
|
68
|
+
// asserting against a real installed ACME 0.97 ("Zem") is. Two duplicate
|
|
69
|
+
// (mnemonic, addressing-mode) groups exist among the illegal opcodes, where
|
|
70
|
+
// ACME's assembler resolves the bare mnemonic to exactly ONE canonical
|
|
71
|
+
// opcode byte regardless of which of the several opcodes sharing that
|
|
72
|
+
// mnemonic+mode a decoder produced it from -- so only that one canonical
|
|
73
|
+
// member can be `true`; every other member of the group is unfaithful
|
|
74
|
+
// (ACME accepts the syntax but silently emits the WRONG opcode byte) and
|
|
75
|
+
// must be `false`:
|
|
76
|
+
// - `jam` (implicit, no operand -- 12 opcodes: $02 $12 $22 $32 $42 $52 $62
|
|
77
|
+
// $72 $92 $B2 $D2 $F2): ACME always assembles bare `jam` to `$02`.
|
|
78
|
+
// Corrected: only `$02` is `true`; the other 11 are `false`.
|
|
79
|
+
// - `anc` (immediate -- $0B and $2B): ACME always assembles `anc #imm` to
|
|
80
|
+
// `$0B`. Corrected: `$0B` stays `true`; `$2B` is now `false`.
|
|
81
|
+
// A third group -- the illegal `nop` family, which spans FIVE duplicate
|
|
82
|
+
// (mode) subgroups (immediate: $80/$82/$89/$C2/$E2; zeropage: $04/$44/$64;
|
|
83
|
+
// zeropage,X: $14/$34/$54/$74/$D4/$F4; absolute,X: $1C/$3C/$5C/$7C/$DC/$FC;
|
|
84
|
+
// implied: $1A/$3A/$5A/$7A/$DA/$FA) -- was already ALL-`false` in the
|
|
85
|
+
// original seed, but for four of those five subgroups that was
|
|
86
|
+
// over-conservative: ACME's bare `nop <operand>` DOES faithfully reproduce
|
|
87
|
+
// the group's lowest-numbered member. Corrected: `$04`, `$14`, `$1C`, `$80`
|
|
88
|
+
// (each the lowest opcode in its subgroup) are now `true`; every other
|
|
89
|
+
// member of those same four subgroups stays `false`. The implied subgroup
|
|
90
|
+
// ($1A/$3A/.../$FA) stays entirely `false` for a different reason: ACME's
|
|
91
|
+
// bare `nop` mnemonic with NO operand always resolves to the pre-existing
|
|
92
|
+
// LEGAL opcode `$EA`, never to any illegal implied-mode member, so none of
|
|
93
|
+
// them can ever be faithfully expressed via the plain "nop" mnemonic.
|
|
94
|
+
// `nop` absolute ($0C) has no duplicate partner at all (it is the only
|
|
95
|
+
// illegal absolute-mode nop) and was ALSO corrected from `false` to `true`
|
|
96
|
+
// -- it was unconditionally byte-faithful and unambiguous; the original
|
|
97
|
+
// `false` was simply an untested, over-conservative seed value, not a
|
|
98
|
+
// disagreement about ambiguity.
|
|
99
|
+
//
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
// WHY THIS FILE EXISTS
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// This is the one table the decoder (04-03), Phase 5's backtrace (DERIV-02)
|
|
104
|
+
// and Phase 6's CPU-history decode (GAIN-01) all read instruction lengths
|
|
105
|
+
// from. A wrong length here silently desynchronises every instruction after
|
|
106
|
+
// it in every one of those consumers (criterion 2's own wording) -- there is
|
|
107
|
+
// no runtime check downstream that would catch a transcription typo on its
|
|
108
|
+
// own; that is what `disasm-opcodes.test.ts`'s independent bit-pattern
|
|
109
|
+
// derivation is for.
|
|
110
|
+
//
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
// Correction carried from ROADMAP.md / 04-CONTEXT.md D-09
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
// ROADMAP.md criterion 2 and 04-CONTEXT.md D-09 both say "twelve NOP
|
|
115
|
+
// variants." That figure does not match any standard 6502/6510 opcode
|
|
116
|
+
// enumeration. The real illegal-NOP class is **27 opcodes across 6
|
|
117
|
+
// addressing-mode groups** (verified against cc65's live source, masswerk.at
|
|
118
|
+
// and oxyron.de this session):
|
|
119
|
+
// implied/1-byte: 1A 3A 5A 7A DA FA (6)
|
|
120
|
+
// immediate/2-byte: 80 82 89 C2 E2 (5)
|
|
121
|
+
// zeropage/2-byte: 04 44 64 (3)
|
|
122
|
+
// zeropage,X/2-byte: 14 34 54 74 D4 F4 (6)
|
|
123
|
+
// absolute/3-byte: 0C (1)
|
|
124
|
+
// absolute,X/3-byte: 1C 3C 5C 7C DC FC (6)
|
|
125
|
+
// `disasm-opcodes.test.ts` asserts this corrected 27/6-group enumeration
|
|
126
|
+
// exhaustively, not a hardcoded "twelve".
|
|
127
|
+
//
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
// WHAT NOT TO DO
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
// - Never add an `import` to this file. It is pure data (D-05, DISASM-07)
|
|
132
|
+
// -- `disasm-opcodes.test.ts` asserts zero import statements on the
|
|
133
|
+
// comment-stripped source.
|
|
134
|
+
// - Never source an opcode fact from VICE.
|
|
135
|
+
// - Never edit `acmeExpressible` by hand to make 04-06's real-ACME
|
|
136
|
+
// assertion test pass. That test is the authority; a disagreement means
|
|
137
|
+
// the seed below was wrong, not the test.
|
|
138
|
+
// - Never re-derive a second opcode table anywhere else in this tree.
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* The 13 6502/6510 addressing modes this table distinguishes. `indirect`
|
|
142
|
+
* covers only `JMP ($xxxx)` ($6C) -- there is no other indirect-without-
|
|
143
|
+
* index addressing mode on this CPU.
|
|
144
|
+
*/
|
|
145
|
+
export type AddressingMode =
|
|
146
|
+
| "implicit"
|
|
147
|
+
| "accumulator"
|
|
148
|
+
| "immediate"
|
|
149
|
+
| "zeropage"
|
|
150
|
+
| "zeropage_x"
|
|
151
|
+
| "zeropage_y"
|
|
152
|
+
| "absolute"
|
|
153
|
+
| "absolute_x"
|
|
154
|
+
| "absolute_y"
|
|
155
|
+
| "indirect"
|
|
156
|
+
| "indirect_x"
|
|
157
|
+
| "indirect_y"
|
|
158
|
+
| "relative";
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* The canonical instruction length, in bytes, for each addressing mode.
|
|
162
|
+
* Every `OpcodeEntry.length` below must equal `LENGTH_FOR_MODE[entry.mode]`
|
|
163
|
+
* -- `disasm-opcodes.test.ts`'s shape suite asserts this for all 256
|
|
164
|
+
* entries.
|
|
165
|
+
*/
|
|
166
|
+
export const LENGTH_FOR_MODE: Readonly<Record<AddressingMode, 1 | 2 | 3>> = {
|
|
167
|
+
implicit: 1,
|
|
168
|
+
accumulator: 1,
|
|
169
|
+
immediate: 2,
|
|
170
|
+
zeropage: 2,
|
|
171
|
+
zeropage_x: 2,
|
|
172
|
+
zeropage_y: 2,
|
|
173
|
+
indirect_x: 2,
|
|
174
|
+
indirect_y: 2,
|
|
175
|
+
relative: 2,
|
|
176
|
+
absolute: 3,
|
|
177
|
+
absolute_x: 3,
|
|
178
|
+
absolute_y: 3,
|
|
179
|
+
indirect: 3,
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
/** One 6502/6510 opcode's decode facts. */
|
|
183
|
+
export interface OpcodeEntry {
|
|
184
|
+
/** Lowercase three-letter canonical 6502/6510 mnemonic (ACME source is
|
|
185
|
+
* lowercase, and the renderer (04-04) emits this verbatim). */
|
|
186
|
+
mnemonic: string;
|
|
187
|
+
mode: AddressingMode;
|
|
188
|
+
length: 1 | 2 | 3;
|
|
189
|
+
/** `true` for every opcode outside the documented NMOS 6502 set. */
|
|
190
|
+
illegal: boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Whether ACME's `!cpu 6510` accepts `mnemonic` in this addressing mode.
|
|
193
|
+
* This field is a SEED, not an authority: 04-06's substitution-membership
|
|
194
|
+
* assertion test against a real installed ACME is the authority for every
|
|
195
|
+
* value here (D-09 -- "the exact set is determined by the assertion test
|
|
196
|
+
* against the installed ACME, not by this list"). 04-06 corrects any
|
|
197
|
+
* entry ACME disagrees with; never hand-edit this field to force that
|
|
198
|
+
* test to pass.
|
|
199
|
+
*/
|
|
200
|
+
acmeExpressible: boolean;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* All 256 6502/6510 opcodes, indexed by opcode byte -- `OPCODES[0xa9]` is
|
|
205
|
+
* `lda #`. No sparse holes, no `undefined`.
|
|
206
|
+
*/
|
|
207
|
+
export const OPCODES: readonly OpcodeEntry[] = [
|
|
208
|
+
{ mnemonic: "brk", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $00
|
|
209
|
+
{ mnemonic: "ora", mode: "indirect_x", length: 2, illegal: false, acmeExpressible: true }, // $01
|
|
210
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: true }, // $02
|
|
211
|
+
{ mnemonic: "slo", mode: "indirect_x", length: 2, illegal: true, acmeExpressible: true }, // $03
|
|
212
|
+
{ mnemonic: "nop", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $04 (04-06: canonical zeropage nop, ACME's "nop $xx" always yields this byte)
|
|
213
|
+
{ mnemonic: "ora", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $05
|
|
214
|
+
{ mnemonic: "asl", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $06
|
|
215
|
+
{ mnemonic: "slo", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $07
|
|
216
|
+
{ mnemonic: "php", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $08
|
|
217
|
+
{ mnemonic: "ora", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $09
|
|
218
|
+
{ mnemonic: "asl", mode: "accumulator", length: 1, illegal: false, acmeExpressible: true }, // $0a
|
|
219
|
+
{ mnemonic: "anc", mode: "immediate", length: 2, illegal: true, acmeExpressible: true }, // $0b
|
|
220
|
+
{ mnemonic: "nop", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $0c (04-06: unique, unambiguous, ACME reproduces exactly)
|
|
221
|
+
{ mnemonic: "ora", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $0d
|
|
222
|
+
{ mnemonic: "asl", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $0e
|
|
223
|
+
{ mnemonic: "slo", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $0f
|
|
224
|
+
{ mnemonic: "bpl", mode: "relative", length: 2, illegal: false, acmeExpressible: true }, // $10
|
|
225
|
+
{ mnemonic: "ora", mode: "indirect_y", length: 2, illegal: false, acmeExpressible: true }, // $11
|
|
226
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $12 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
227
|
+
{ mnemonic: "slo", mode: "indirect_y", length: 2, illegal: true, acmeExpressible: true }, // $13
|
|
228
|
+
{ mnemonic: "nop", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: true }, // $14 (04-06: canonical zeropage,x nop)
|
|
229
|
+
{ mnemonic: "ora", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $15
|
|
230
|
+
{ mnemonic: "asl", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $16
|
|
231
|
+
{ mnemonic: "slo", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: true }, // $17
|
|
232
|
+
{ mnemonic: "clc", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $18
|
|
233
|
+
{ mnemonic: "ora", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $19
|
|
234
|
+
{ mnemonic: "nop", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $1a
|
|
235
|
+
{ mnemonic: "slo", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $1b
|
|
236
|
+
{ mnemonic: "nop", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: true }, // $1c (04-06: canonical absolute,x nop)
|
|
237
|
+
{ mnemonic: "ora", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $1d
|
|
238
|
+
{ mnemonic: "asl", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $1e
|
|
239
|
+
{ mnemonic: "slo", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: true }, // $1f
|
|
240
|
+
{ mnemonic: "jsr", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $20
|
|
241
|
+
{ mnemonic: "and", mode: "indirect_x", length: 2, illegal: false, acmeExpressible: true }, // $21
|
|
242
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $22 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
243
|
+
{ mnemonic: "rla", mode: "indirect_x", length: 2, illegal: true, acmeExpressible: true }, // $23
|
|
244
|
+
{ mnemonic: "bit", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $24
|
|
245
|
+
{ mnemonic: "and", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $25
|
|
246
|
+
{ mnemonic: "rol", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $26
|
|
247
|
+
{ mnemonic: "rla", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $27
|
|
248
|
+
{ mnemonic: "plp", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $28
|
|
249
|
+
{ mnemonic: "and", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $29
|
|
250
|
+
{ mnemonic: "rol", mode: "accumulator", length: 1, illegal: false, acmeExpressible: true }, // $2a
|
|
251
|
+
{ mnemonic: "anc", mode: "immediate", length: 2, illegal: true, acmeExpressible: false }, // $2b (04-06: "anc #imm" always assembles to $0b, not this byte)
|
|
252
|
+
{ mnemonic: "bit", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $2c
|
|
253
|
+
{ mnemonic: "and", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $2d
|
|
254
|
+
{ mnemonic: "rol", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $2e
|
|
255
|
+
{ mnemonic: "rla", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $2f
|
|
256
|
+
{ mnemonic: "bmi", mode: "relative", length: 2, illegal: false, acmeExpressible: true }, // $30
|
|
257
|
+
{ mnemonic: "and", mode: "indirect_y", length: 2, illegal: false, acmeExpressible: true }, // $31
|
|
258
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $32 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
259
|
+
{ mnemonic: "rla", mode: "indirect_y", length: 2, illegal: true, acmeExpressible: true }, // $33
|
|
260
|
+
{ mnemonic: "nop", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: false }, // $34
|
|
261
|
+
{ mnemonic: "and", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $35
|
|
262
|
+
{ mnemonic: "rol", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $36
|
|
263
|
+
{ mnemonic: "rla", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: true }, // $37
|
|
264
|
+
{ mnemonic: "sec", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $38
|
|
265
|
+
{ mnemonic: "and", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $39
|
|
266
|
+
{ mnemonic: "nop", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $3a
|
|
267
|
+
{ mnemonic: "rla", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $3b
|
|
268
|
+
{ mnemonic: "nop", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: false }, // $3c
|
|
269
|
+
{ mnemonic: "and", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $3d
|
|
270
|
+
{ mnemonic: "rol", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $3e
|
|
271
|
+
{ mnemonic: "rla", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: true }, // $3f
|
|
272
|
+
{ mnemonic: "rti", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $40
|
|
273
|
+
{ mnemonic: "eor", mode: "indirect_x", length: 2, illegal: false, acmeExpressible: true }, // $41
|
|
274
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $42 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
275
|
+
{ mnemonic: "sre", mode: "indirect_x", length: 2, illegal: true, acmeExpressible: true }, // $43
|
|
276
|
+
{ mnemonic: "nop", mode: "zeropage", length: 2, illegal: true, acmeExpressible: false }, // $44
|
|
277
|
+
{ mnemonic: "eor", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $45
|
|
278
|
+
{ mnemonic: "lsr", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $46
|
|
279
|
+
{ mnemonic: "sre", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $47
|
|
280
|
+
{ mnemonic: "pha", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $48
|
|
281
|
+
{ mnemonic: "eor", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $49
|
|
282
|
+
{ mnemonic: "lsr", mode: "accumulator", length: 1, illegal: false, acmeExpressible: true }, // $4a
|
|
283
|
+
{ mnemonic: "alr", mode: "immediate", length: 2, illegal: true, acmeExpressible: true }, // $4b
|
|
284
|
+
{ mnemonic: "jmp", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $4c
|
|
285
|
+
{ mnemonic: "eor", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $4d
|
|
286
|
+
{ mnemonic: "lsr", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $4e
|
|
287
|
+
{ mnemonic: "sre", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $4f
|
|
288
|
+
{ mnemonic: "bvc", mode: "relative", length: 2, illegal: false, acmeExpressible: true }, // $50
|
|
289
|
+
{ mnemonic: "eor", mode: "indirect_y", length: 2, illegal: false, acmeExpressible: true }, // $51
|
|
290
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $52 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
291
|
+
{ mnemonic: "sre", mode: "indirect_y", length: 2, illegal: true, acmeExpressible: true }, // $53
|
|
292
|
+
{ mnemonic: "nop", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: false }, // $54
|
|
293
|
+
{ mnemonic: "eor", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $55
|
|
294
|
+
{ mnemonic: "lsr", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $56
|
|
295
|
+
{ mnemonic: "sre", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: true }, // $57
|
|
296
|
+
{ mnemonic: "cli", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $58
|
|
297
|
+
{ mnemonic: "eor", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $59
|
|
298
|
+
{ mnemonic: "nop", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $5a
|
|
299
|
+
{ mnemonic: "sre", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $5b
|
|
300
|
+
{ mnemonic: "nop", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: false }, // $5c
|
|
301
|
+
{ mnemonic: "eor", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $5d
|
|
302
|
+
{ mnemonic: "lsr", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $5e
|
|
303
|
+
{ mnemonic: "sre", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: true }, // $5f
|
|
304
|
+
{ mnemonic: "rts", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $60
|
|
305
|
+
{ mnemonic: "adc", mode: "indirect_x", length: 2, illegal: false, acmeExpressible: true }, // $61
|
|
306
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $62 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
307
|
+
{ mnemonic: "rra", mode: "indirect_x", length: 2, illegal: true, acmeExpressible: true }, // $63
|
|
308
|
+
{ mnemonic: "nop", mode: "zeropage", length: 2, illegal: true, acmeExpressible: false }, // $64
|
|
309
|
+
{ mnemonic: "adc", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $65
|
|
310
|
+
{ mnemonic: "ror", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $66
|
|
311
|
+
{ mnemonic: "rra", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $67
|
|
312
|
+
{ mnemonic: "pla", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $68
|
|
313
|
+
{ mnemonic: "adc", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $69
|
|
314
|
+
{ mnemonic: "ror", mode: "accumulator", length: 1, illegal: false, acmeExpressible: true }, // $6a
|
|
315
|
+
{ mnemonic: "arr", mode: "immediate", length: 2, illegal: true, acmeExpressible: true }, // $6b
|
|
316
|
+
{ mnemonic: "jmp", mode: "indirect", length: 3, illegal: false, acmeExpressible: true }, // $6c
|
|
317
|
+
{ mnemonic: "adc", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $6d
|
|
318
|
+
{ mnemonic: "ror", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $6e
|
|
319
|
+
{ mnemonic: "rra", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $6f
|
|
320
|
+
{ mnemonic: "bvs", mode: "relative", length: 2, illegal: false, acmeExpressible: true }, // $70
|
|
321
|
+
{ mnemonic: "adc", mode: "indirect_y", length: 2, illegal: false, acmeExpressible: true }, // $71
|
|
322
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $72 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
323
|
+
{ mnemonic: "rra", mode: "indirect_y", length: 2, illegal: true, acmeExpressible: true }, // $73
|
|
324
|
+
{ mnemonic: "nop", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: false }, // $74
|
|
325
|
+
{ mnemonic: "adc", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $75
|
|
326
|
+
{ mnemonic: "ror", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $76
|
|
327
|
+
{ mnemonic: "rra", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: true }, // $77
|
|
328
|
+
{ mnemonic: "sei", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $78
|
|
329
|
+
{ mnemonic: "adc", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $79
|
|
330
|
+
{ mnemonic: "nop", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $7a
|
|
331
|
+
{ mnemonic: "rra", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $7b
|
|
332
|
+
{ mnemonic: "nop", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: false }, // $7c
|
|
333
|
+
{ mnemonic: "adc", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $7d
|
|
334
|
+
{ mnemonic: "ror", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $7e
|
|
335
|
+
{ mnemonic: "rra", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: true }, // $7f
|
|
336
|
+
{ mnemonic: "nop", mode: "immediate", length: 2, illegal: true, acmeExpressible: true }, // $80 (04-06: canonical immediate nop)
|
|
337
|
+
{ mnemonic: "sta", mode: "indirect_x", length: 2, illegal: false, acmeExpressible: true }, // $81
|
|
338
|
+
{ mnemonic: "nop", mode: "immediate", length: 2, illegal: true, acmeExpressible: false }, // $82
|
|
339
|
+
{ mnemonic: "sax", mode: "indirect_x", length: 2, illegal: true, acmeExpressible: true }, // $83
|
|
340
|
+
{ mnemonic: "sty", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $84
|
|
341
|
+
{ mnemonic: "sta", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $85
|
|
342
|
+
{ mnemonic: "stx", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $86
|
|
343
|
+
{ mnemonic: "sax", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $87
|
|
344
|
+
{ mnemonic: "dey", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $88
|
|
345
|
+
{ mnemonic: "nop", mode: "immediate", length: 2, illegal: true, acmeExpressible: false }, // $89
|
|
346
|
+
{ mnemonic: "txa", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $8a
|
|
347
|
+
{ mnemonic: "ane", mode: "immediate", length: 2, illegal: true, acmeExpressible: true }, // $8b (04-06: ACME accepts "ane #imm" with a documented "unstable" warning, not an error, and reproduces $8b exactly)
|
|
348
|
+
{ mnemonic: "sty", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $8c
|
|
349
|
+
{ mnemonic: "sta", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $8d
|
|
350
|
+
{ mnemonic: "stx", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $8e
|
|
351
|
+
{ mnemonic: "sax", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $8f
|
|
352
|
+
{ mnemonic: "bcc", mode: "relative", length: 2, illegal: false, acmeExpressible: true }, // $90
|
|
353
|
+
{ mnemonic: "sta", mode: "indirect_y", length: 2, illegal: false, acmeExpressible: true }, // $91
|
|
354
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $92 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
355
|
+
{ mnemonic: "sha", mode: "indirect_y", length: 2, illegal: true, acmeExpressible: true }, // $93
|
|
356
|
+
{ mnemonic: "sty", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $94
|
|
357
|
+
{ mnemonic: "sta", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $95
|
|
358
|
+
{ mnemonic: "stx", mode: "zeropage_y", length: 2, illegal: false, acmeExpressible: true }, // $96
|
|
359
|
+
{ mnemonic: "sax", mode: "zeropage_y", length: 2, illegal: true, acmeExpressible: true }, // $97
|
|
360
|
+
{ mnemonic: "tya", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $98
|
|
361
|
+
{ mnemonic: "sta", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $99
|
|
362
|
+
{ mnemonic: "txs", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $9a
|
|
363
|
+
{ mnemonic: "tas", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $9b
|
|
364
|
+
{ mnemonic: "shy", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: true }, // $9c
|
|
365
|
+
{ mnemonic: "sta", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $9d
|
|
366
|
+
{ mnemonic: "shx", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $9e
|
|
367
|
+
{ mnemonic: "sha", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $9f
|
|
368
|
+
{ mnemonic: "ldy", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $a0
|
|
369
|
+
{ mnemonic: "lda", mode: "indirect_x", length: 2, illegal: false, acmeExpressible: true }, // $a1
|
|
370
|
+
{ mnemonic: "ldx", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $a2
|
|
371
|
+
{ mnemonic: "lax", mode: "indirect_x", length: 2, illegal: true, acmeExpressible: true }, // $a3
|
|
372
|
+
{ mnemonic: "ldy", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $a4
|
|
373
|
+
{ mnemonic: "lda", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $a5
|
|
374
|
+
{ mnemonic: "ldx", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $a6
|
|
375
|
+
{ mnemonic: "lax", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $a7
|
|
376
|
+
{ mnemonic: "tay", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $a8
|
|
377
|
+
{ mnemonic: "lda", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $a9
|
|
378
|
+
{ mnemonic: "tax", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $aa
|
|
379
|
+
{ mnemonic: "lxa", mode: "immediate", length: 2, illegal: true, acmeExpressible: true }, // $ab (04-06: ACME accepts "lxa #imm" with a documented "unstable" warning, not an error, and reproduces $ab exactly)
|
|
380
|
+
{ mnemonic: "ldy", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $ac
|
|
381
|
+
{ mnemonic: "lda", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $ad
|
|
382
|
+
{ mnemonic: "ldx", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $ae
|
|
383
|
+
{ mnemonic: "lax", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $af
|
|
384
|
+
{ mnemonic: "bcs", mode: "relative", length: 2, illegal: false, acmeExpressible: true }, // $b0
|
|
385
|
+
{ mnemonic: "lda", mode: "indirect_y", length: 2, illegal: false, acmeExpressible: true }, // $b1
|
|
386
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $b2 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
387
|
+
{ mnemonic: "lax", mode: "indirect_y", length: 2, illegal: true, acmeExpressible: true }, // $b3
|
|
388
|
+
{ mnemonic: "ldy", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $b4
|
|
389
|
+
{ mnemonic: "lda", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $b5
|
|
390
|
+
{ mnemonic: "ldx", mode: "zeropage_y", length: 2, illegal: false, acmeExpressible: true }, // $b6
|
|
391
|
+
{ mnemonic: "lax", mode: "zeropage_y", length: 2, illegal: true, acmeExpressible: true }, // $b7
|
|
392
|
+
{ mnemonic: "clv", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $b8
|
|
393
|
+
{ mnemonic: "lda", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $b9
|
|
394
|
+
{ mnemonic: "tsx", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $ba
|
|
395
|
+
{ mnemonic: "las", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $bb
|
|
396
|
+
{ mnemonic: "ldy", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $bc
|
|
397
|
+
{ mnemonic: "lda", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $bd
|
|
398
|
+
{ mnemonic: "ldx", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $be
|
|
399
|
+
{ mnemonic: "lax", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $bf
|
|
400
|
+
{ mnemonic: "cpy", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $c0
|
|
401
|
+
{ mnemonic: "cmp", mode: "indirect_x", length: 2, illegal: false, acmeExpressible: true }, // $c1
|
|
402
|
+
{ mnemonic: "nop", mode: "immediate", length: 2, illegal: true, acmeExpressible: false }, // $c2
|
|
403
|
+
{ mnemonic: "dcp", mode: "indirect_x", length: 2, illegal: true, acmeExpressible: true }, // $c3
|
|
404
|
+
{ mnemonic: "cpy", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $c4
|
|
405
|
+
{ mnemonic: "cmp", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $c5
|
|
406
|
+
{ mnemonic: "dec", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $c6
|
|
407
|
+
{ mnemonic: "dcp", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $c7
|
|
408
|
+
{ mnemonic: "iny", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $c8
|
|
409
|
+
{ mnemonic: "cmp", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $c9
|
|
410
|
+
{ mnemonic: "dex", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $ca
|
|
411
|
+
{ mnemonic: "sbx", mode: "immediate", length: 2, illegal: true, acmeExpressible: true }, // $cb
|
|
412
|
+
{ mnemonic: "cpy", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $cc
|
|
413
|
+
{ mnemonic: "cmp", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $cd
|
|
414
|
+
{ mnemonic: "dec", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $ce
|
|
415
|
+
{ mnemonic: "dcp", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $cf
|
|
416
|
+
{ mnemonic: "bne", mode: "relative", length: 2, illegal: false, acmeExpressible: true }, // $d0
|
|
417
|
+
{ mnemonic: "cmp", mode: "indirect_y", length: 2, illegal: false, acmeExpressible: true }, // $d1
|
|
418
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $d2 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
419
|
+
{ mnemonic: "dcp", mode: "indirect_y", length: 2, illegal: true, acmeExpressible: true }, // $d3
|
|
420
|
+
{ mnemonic: "nop", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: false }, // $d4
|
|
421
|
+
{ mnemonic: "cmp", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $d5
|
|
422
|
+
{ mnemonic: "dec", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $d6
|
|
423
|
+
{ mnemonic: "dcp", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: true }, // $d7
|
|
424
|
+
{ mnemonic: "cld", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $d8
|
|
425
|
+
{ mnemonic: "cmp", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $d9
|
|
426
|
+
{ mnemonic: "nop", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $da
|
|
427
|
+
{ mnemonic: "dcp", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $db
|
|
428
|
+
{ mnemonic: "nop", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: false }, // $dc
|
|
429
|
+
{ mnemonic: "cmp", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $dd
|
|
430
|
+
{ mnemonic: "dec", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $de
|
|
431
|
+
{ mnemonic: "dcp", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: true }, // $df
|
|
432
|
+
{ mnemonic: "cpx", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $e0
|
|
433
|
+
{ mnemonic: "sbc", mode: "indirect_x", length: 2, illegal: false, acmeExpressible: true }, // $e1
|
|
434
|
+
{ mnemonic: "nop", mode: "immediate", length: 2, illegal: true, acmeExpressible: false }, // $e2
|
|
435
|
+
{ mnemonic: "isc", mode: "indirect_x", length: 2, illegal: true, acmeExpressible: true }, // $e3
|
|
436
|
+
{ mnemonic: "cpx", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $e4
|
|
437
|
+
{ mnemonic: "sbc", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $e5
|
|
438
|
+
{ mnemonic: "inc", mode: "zeropage", length: 2, illegal: false, acmeExpressible: true }, // $e6
|
|
439
|
+
{ mnemonic: "isc", mode: "zeropage", length: 2, illegal: true, acmeExpressible: true }, // $e7
|
|
440
|
+
{ mnemonic: "inx", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $e8
|
|
441
|
+
{ mnemonic: "sbc", mode: "immediate", length: 2, illegal: false, acmeExpressible: true }, // $e9
|
|
442
|
+
{ mnemonic: "nop", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $ea
|
|
443
|
+
{ mnemonic: "sbc", mode: "immediate", length: 2, illegal: true, acmeExpressible: false }, // $eb
|
|
444
|
+
{ mnemonic: "cpx", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $ec
|
|
445
|
+
{ mnemonic: "sbc", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $ed
|
|
446
|
+
{ mnemonic: "inc", mode: "absolute", length: 3, illegal: false, acmeExpressible: true }, // $ee
|
|
447
|
+
{ mnemonic: "isc", mode: "absolute", length: 3, illegal: true, acmeExpressible: true }, // $ef
|
|
448
|
+
{ mnemonic: "beq", mode: "relative", length: 2, illegal: false, acmeExpressible: true }, // $f0
|
|
449
|
+
{ mnemonic: "sbc", mode: "indirect_y", length: 2, illegal: false, acmeExpressible: true }, // $f1
|
|
450
|
+
{ mnemonic: "jam", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $f2 (04-06: bare "jam" always assembles to $02, not this byte)
|
|
451
|
+
{ mnemonic: "isc", mode: "indirect_y", length: 2, illegal: true, acmeExpressible: true }, // $f3
|
|
452
|
+
{ mnemonic: "nop", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: false }, // $f4
|
|
453
|
+
{ mnemonic: "sbc", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $f5
|
|
454
|
+
{ mnemonic: "inc", mode: "zeropage_x", length: 2, illegal: false, acmeExpressible: true }, // $f6
|
|
455
|
+
{ mnemonic: "isc", mode: "zeropage_x", length: 2, illegal: true, acmeExpressible: true }, // $f7
|
|
456
|
+
{ mnemonic: "sed", mode: "implicit", length: 1, illegal: false, acmeExpressible: true }, // $f8
|
|
457
|
+
{ mnemonic: "sbc", mode: "absolute_y", length: 3, illegal: false, acmeExpressible: true }, // $f9
|
|
458
|
+
{ mnemonic: "nop", mode: "implicit", length: 1, illegal: true, acmeExpressible: false }, // $fa
|
|
459
|
+
{ mnemonic: "isc", mode: "absolute_y", length: 3, illegal: true, acmeExpressible: true }, // $fb
|
|
460
|
+
{ mnemonic: "nop", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: false }, // $fc
|
|
461
|
+
{ mnemonic: "sbc", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $fd
|
|
462
|
+
{ mnemonic: "inc", mode: "absolute_x", length: 3, illegal: false, acmeExpressible: true }, // $fe
|
|
463
|
+
{ mnemonic: "isc", mode: "absolute_x", length: 3, illegal: true, acmeExpressible: true }, // $ff
|
|
464
|
+
];
|