I am going to decompile it in IDA pro or something, I've never used it before or know if its suitable, it will take me 6 months, so if someone can work it out a little quicker, let me know cheers.

I have a decoded 1G DSM ROM to go from, its similiar but different in many aspects.. would really like an Evo7/8, or 9 one.

Here is the Registers decompiled for the 1G DSM (has some mh6111 op code thingies), would like the Evo8 one.

- Code: Select all
`Known Registers/Memory:`

Stock logger -> I/O register lookup table

OBD Commands 0x00-0x3F map to the following registers...

d000: 02 03 06 07 16 2f 8a cb 44 ed 46 ee 40 41 42 e9

d010: d3 d4 cf ce d0 cd 49 d2 e8 e5 e4 40 e0 a1 e6 40

d020: dc dd f1 f3 fe fd 8b d7 d8 a7 a8 89 8d 8e a3 a4

d030: 4b 57 58 59 5a 5b 50 51 4e 4f cc 4c 4d 40 8e 01

The above are what get read when you send commands 0-0x3F to the

ECU from the logger. Additional commands are:

0xCA Clear Faults

0xF5 Canister purge

0xF6 Fuel pump

0xF7 Disable injector #6

0xF8 Disable injector #5

0xF9 Disable injector #4

0xFA Disable injector #3

0xFB Disable injector #2

0xFC Disable injector #1

For all other values sent to the logger, you get the value at that

address in the ECU map.

Potentially unused addresses.

0x54

0x60

0xa5

0xf7

Known, or sort-of known addresses.

0x00 ??? MSB, loaded with 0x7e16 @ ea30, zeroed at fae5

0x01 ??? LSB

0x02 Flags

bit 4 is the fuel pump relay

bit 5 is the A/C clutch, 0 = on...apparently all bits are active low?

0x03 Flags

DDR?

0x04 ??? MSB, loaded with value from 0x00,01 sometimes, zeroed sometimes

0x05 ??? LSB

0x06 Inputs

bit 1 is fuel cut, no run?

bit 2 is TDC

bit 3 is power steering

bit 4 is AC switch

bit 5 is the park/neutral (clutch) switch

bit 6 is car moving

bit 7 is idle switch

0x07 Used to find offset in timing table, resistor strappings used at 0xfb22

0x08 Flags

0x09 ??? MSB, value = 16?

0x0a ??? LSB, value = 16?

0x0b ??? MSB, uses flags from 0x8

0x0c ??? LSB, uses flags from 0x8

0x10 serial port rate control Note: serial port conforms to 6801 documentation

0x11 serial port control reg, read to clear

0x12 serial port receiver

0x13 serial port transmitter

0x16 Mechanical hardware output lines:

bit 5 is BCS line, controlled by duty cycle value at 0x181

bit 6-7 select current cylinder?

0x18 Interrupt pending?

bit 7, PACTL timer interrupt?

0x19 Used by TMO for A/C cutout

0x1a Flags

bit 6, interrupt pending?

0x1b ??? MSB, uses flags from 0x18

0x1c ??? LSB, uses flags from 0x18

0x1d MSB pulse accumulator (PACTL) This counts the number of MAF pulses since the last CAS signal.

0x1e LSB pulse accumulator (PACTL) This counts the number of MAF pulses since the last CAS signal.

0x1f ADC control; [bit 3 = start bit?, bit 2:0 = channel select ]

ADC channels:

0x0 coolant temp (-1.45x + 308)

0x1 air temp (-1.69x + 358F)

0x2 baro (0.00486xBar)

0x3 O2 sensor (0.0195x)

0x4 egr

0x5 batt voltage (0.0733xV)

0x6 instantaneous knock

0x7 tps (0-255)

0x20 ADC 1 data/voltage sensor

0x21 ADC 2 data/voltage sensor (unused)?

0x22 ADC 3 data/voltage sensor (unused)?

0x23 ADC 4 data/voltage sensor (unused)?

0x25 unused

0x28 unused

0x29 ??? MSB

0x2a ??? LSB

0x2b ??? MSB

0x2c ??? LSB

0x2d ??? MSB

0x2e ??? LSB

0x2f Electrical hardware output lines:

bit 0 is the purge canister solenoid? knock sensor counter reset?

bit 2 is boost gauge, PWM by value in 0x17f, w x/24th duty cycle at 33.3Hz

bit 3 is check engine light

0x30 unused

0x31 unused

0x32 ??? MSB

0x33 ??? LSB

0x34 unused

0x35 unused

0x36 unused

0x37 unused

0x38 unused

0x39 unused

0x3a unused

0x3b unused

0x3c unused

0x3d unused

0x3e unused

0x3f unused

*** Everything above here is an I/O register, below here is RAM ***

0x40 fuel trim low (0.78x)

0x41 fuel trim mid (0.78x)

0x42 fuel trim hi (0.78x)

0x43 fuel trim spillover/subtrim?

0x44 ??? MSB Init flags? ISC related?

0x45 ??? LSB Init flags?

0x46 ??? MSB Init flags?

0x47 ??? LSB Init flags?

0x48 something to do with ISC control

0x49 ISC steps

0x4a ISC related?

0x4b Flags, bit 7 = rebooting?

0x4c Stored faults low

0x4d Stored faults high

0x4e Active Faults low

0x4f Active Faults high

Bit # Code Fault

0 11 Oxygen sensor

1 12 Intake air flow sensor

2 13 Intake air temperature sensor

3 14 Throttle position sensor

4 15 ISC motor position sensor

5 21 Engine coolant temperature sensor

6 22 Engine speed sensor

7 23 TDC sensor

8 24 Vehicle speed sensor

9 25 Barometric pressure sensor

10 31 Knock sensor

11 41 Injector circuit

12 42 Fuel pump relay

13 43 EGR

14 44 Ignition coil

15 36 Ignition circuit

0x50 used in logger table? Fault table related, CEL countdown?

0x51 used in logger table? Fault sensor related, CEL countdown?

0x52 Octane value

0x53 Flags? Bit 7 Set when load is greater than 0x49 at 0xdb78

If bit 7 is clear, knocksum is decremented every two loops.

Otherwise 0x8b is decremented every 120 loops through the main loop.

See 0xf927

0x54 *** Unused! ***

0x55 3 LSbs tell which gauge is selected, 2 MSbs are zeroed upon successful entry of security code

Bit 7 = Valet mode? Bit 6 = security off?

0x56 Flags

bits 0,1 index for 0xec0d

bit 7, check for lesser reqs?

Values below here get overwritten with every boot.

0x57 16 bit airflow from 0xDE divided by 4

0x58 used in logger table? TMO zeroed these out, MSB

0x59 used in logger table? TMO zeroed these out, LSB, sometimes table width

0x5a TMO uses this for something we store pulsewidth related info in, MSB, sometimes 0

0x5b Sometimes contains battery voltage - 0x80, but no less than 0, sometimes duplicates 0x5c

0x5c Air volume (per rev?) used for map lookup, MSB, or maybe rpm-500. X-coordinate

0x5d Air volume (per rev?) used for map lookup, LSB, or maybe load 0-170 scaled from 0xE3, Y-coordinate

0x5e ??? MSB

0x5f ??? LSB

0x60 *** Unused! ***

0x64 ??? MSB, raw crank timing?

0x65 ??? LSB

0x68 ??? MSB

0x69 ??? LSB

0x6a ??? MSB

0x6b ??? LSB

0x6e ??? MSB

0x6f ??? LSB

0x70 ??? MSB

0x71 ??? LSB

0x72 ??? MSB

0x73 ??? LSB

0x74 ??? MSB

0x75 ??? LSB

0x76 ??? MSB

0x77 ??? LSB

0x78 ??? MSB

0x79 ??? LSB

0x7b Flags for 0x19?

0x80 Raw crank timing?

0x81 Timing advance?

0x85 Flags

0x89 used in logger table?

0x8a Timing advance-10

0x8b Knock Sum

0x8c Countdown to decrement knock value, depends on 0x53, bit 7

0x8d Air velocity/rev, MSB, or $A0 * 8 during cranking or timing adjust, MSB - if $A2 bit 1 set the $8D:8E = 0xff * 8

0x8e Air velocity/rev, middle byte, or $A0 * 8 during cranking or timing adjust, LSB - if $A2 bit 1 set the $8D:8E = 0xff * 8

0x8f Air velocity/rev, LSB

0x90 16 bit count of airflow/rev (it is averaged into 0x8d for a smoother reading), MSB

0x91 16 bit count of airflow/rev (it is averaged into 0x8d for a smoother reading), LSB

0x92 previous scan air = $8D

0x93 previous scan air = $8E

0x94 Computed timing value from table, 0x07 used to find offset in table, MSB

0x95 Computed timing value from table, 0x07 used to find offset in table, LSB

0x96 used in case of pulse accum overflow, MSB or backup of 0xd?

0x97 used in case of pulse accum overflow, LSB or backup of 0xd?

0x98 used in case of pulse accum overflow, MSB old pulse accumulator (0x1d)

0x99 used in case of pulse accum overflow, LSB old pulse accumulator (0x1d)

0x9a maf ticks seen since last CAS? MSB delta 0x1d

0x9b maf ticks seen since last CAS? LSB delta 0x1d

0x9c is a cap on how many maf ticks can be seen per cylinder, MSB, max airflow per crank

0x9d is a cap on how many maf ticks can be seen per cylinder, LSB

0x9e Flags

bit 7 is 2x mode check of pulse accumulator?

0x9f Update Hz rolling average rate, for averaging in 0x90 to 0x8d

0xa0 Minimum airflow rate

0xa1 Accel enrichment

0xa2 Flags for broken things?: If bits 2-5 are set, don't fire injectors

bit 2 set $145:146 < 500 stock rev limit?

bit 3 engine over rev limit

bit 4 ?

bit 5 ?

0xa3 MSB fuel per air (air vol * fpa = p/w) inc density, desired afr, enrichment

0xa4 LSB fuel per air (air vol * fpa = p/w) inc density, desired afr, enrichment

0xa5 TMO stores pulsewidth related info here. Otherwise *** Unused ***

0xa6 Injector dead time /24us

0xa7 Injector PW (0.256xms, uS*16), MSB for TMO?

0xa8 Injector PW (0.256xms, uS*16), LSB for TMO?

0xa9 ??? MSB lo trim? deadtime?

0xaa ??? LSB lo trim?

0xab ??? MSB

0xac ??? LSB

0xad ??? MSB hi trim?

0xae ??? LSB hi trim?

0xaf ??? MSB

0xb0 ??? LSB

0xb2 Shift counter?

0xb5 Shift counter flags?

0xb6 TDC failure counter

0xb8 Shift counter?

0xb9 Flags?

0xba Injector disable mask

0xbb Byte counter/timer, increment every time in f840?

0xbc Byte counter/timer, wrap at 48 in f840?

0xbd Sensor counter, update on bit1

0xbe decrementing counter

0xbf ???, LSB?

0xc1 constantly decrementing counter, MAF counter

0xc2 ???, LSB?

0xc6 Speed sensor...checked before setting rev limit to 6k

0xc7 Old TPS value

0xc8 Delta TPS, ie change in throttle position

// note: the following 8 locations are loaded from the ADC

0xcb Coolant temp (-1.45x + 308)

0xcc Air temp (-1.69x + 358F)

0xcd Barometer (0.00486xBar)

0xce O2 sensor voltage

0xcf EGR temp *** good for analog input ***, connect pin 15 to center of 50k pot and ground one side pin

0xd0 Battery voltage (0.0733xV) (voltage / 18.7V)

0xd1 Knock sensor board raw

0xd2 TPS (0-255)

0xd3 Old coolant temp - compared to ECT and l014e is derived from it

0xd4 Old/Verified air temp, set to default if signal is bad

0xd5 Verified pressure, set to default if signal is bad

0xd6 Flags:

bit 0 set if ECTraw $CB > 236 or < 5, fault value = 30, bad ECT

bit 1 set if IATraw $CC > 234 or < 14, fault value = 123, bad IAT

bit 2 set if Barometerraw $CD > 228 or < 100, fault value = 205, bad BPS

bit 3 set if $121 = 0, if cranking or timing adjust $121 = 12, bad MAS

bit 4 ?

bit 5 knock sensor bad? Locks knocksum at 9 unless 0x53, bit 7 and $D8, bit 5 are off, which locks it to zero

bit 7 knock sensor bad

0xd7 Flags?

bit 6 checked at 0x07D1 (TMO)

0xd8 Flags:

bit 5 set if knock sensor OK

0xd9 Flags:

bit 0 clear if key in start position

bit 1 sensors enabled?

0xda RPM*1.024/4, MSB?

0xdb RPM*1.024/4, LSB?

0xdc RPM*1.024/8

0xdd RPM*1.024/31.25(32)

0xde Airflow per rev, MSB - $8D:8E * 24198 (25273 GVR4), then / 0x10000 (0x280 = fuel cut) scaled

0xdf Airflow per rev, LSB - $8D:8E * 24198 (25273 GVR4), then / 0x10000 (0x280 = fuel cut) scaled

0xe0 0xde:0xdf/2 = Airflow per rev/2 = air volume

0xe1 e0 x *(0x15f)/2 (linearized air temperature) This is the one the stock boost gauge uses

0xe2 e0 x *(0x15f) x *(0x160)/4 Airflow weighted for both temp and pressure = air mass/rev = true load

0xe3 e0 x *(0x160)/2 (linearized barometric pressure)

0xe4 MAF (6.29xHz)

0xe5 Flags:

bit 0,1 used as a two-bit integer to describe current fuel trim being used (0=low, 1=mid, 2=high)

bit 3 rpm > 1100 (or maybe speed < something...like maybe stopped?)

bit 4 I think this is actually the rpm < 1000, > 1100 comparison.

0xe6 Flags:

bit 0 set if timing adjust mode (timing terminal grounded)

bit 1 shadow 0xd6, bit 3

bit 4 set if engine cranking, trying to start

bit 5 is complement of 0xD8, bit 5, set if knock sensor is not OK

bit 7 set if in closed loop

0xe7 Flags to check rpms?

0xe8 used in logger table

bit 0 seems to control whether fuel trims are used, see map at 0xfbca

bit 1 also in closed loop, see next maps

bit 6 bit 7 has changed

bit 7 running rich

0xe9 O2 feedback trim

0xea something else related to O2 feedback trim

0xeb MSB value we looked up in 0xfc04

0xec LSB value we looked up in 0xfc04

0xed used in logger table?

0xee used in logger table?

0xf1 used in logger table?

0xf3 used in logger table? flags where bit 5 has something to do with idle?

0xf7 *** Unused! ***

0xf8 Flags

bit 1, overheating

0xf9 Flags

bit 4, something to do with rev limit?

bit 5, boost control solenoid

0xfa serial port control flags [0x80=new TX data,

0x40=new RX data,

0x02=heart beat (pulsed code) mode,

0x01=diagnostics (serial port) mode ]

0xfb solenoid enable mask

0xfd ISC related? Something to do with battery?

0xfe used in logger table?

0xff Airflow if MAF is broken? Injector duty cycle?

0xfd-ff Device ID? (stock GVR4:cbe022) (cali gvr4:cbe023) (phr 1g:cb16xx) (phr 2g:cb26xx) (phr MAP:cba1xx) (phr MAP/dual/EGR:cba2xx)

0x102 Old O2 fuel trim used and flag?

0x104 AE countdown?

0x10c Accel enrichment value

0x10d AE countdown?

0x10e Old tps, dup of 0xc7

0x114 MSB Injector fire time w/o dead time?

0x115 LSB Injector fire time w/o dead time?

0x120 Tells us if engine is running. If > 0, engine is running. Bit 6 = engine running Countdown that's incremented as engine turns.

0x121 Counter for airflow, is air flowing? MAF overflow countdown

0x122 Fuelcut counter. Holds 0x28 or ??? depending on contents of 0x57.

0x123 Timer for when to update fuel trim?

0x12d solenoid test timer

0x133 ???

0x134 counter for 0xe6?

0x137 Timer for re-evaluating closed loop status?

0x138 Overheat factor

0x145 RPM!!! MSB

0x146 RPM!!! LSB

0x147 Old Rpm, MSB

0x148 Old Rpm, LSB

0x14b $8D:8E * 8205 R, this is the R from PV=nRT the ideal gas law, V would be $8D:8E, MSB = air vol * 200d / crank ms = air velocity

0x14c $8D:8E * 8205 R, this is the R from PV=nRT the ideal gas law, V would be $8D:8E, LSB

0x14d Maximum 0xd8, delta TPS

0x14e 0xcb (ECT) checked and scaled for table lookups, or old ect

0x14f 0xcc (IAT) checked and scaled for table lookups, or old iat

0x151 (RPM/31.25)-16 capped @ 144, scaled for lookups, dup of 0x5c?, rpm-500, clamp 6500,4500

All interpolations done through 3 previous variables.

0x152 Barometer - 0x5d

0x153 MSB, 155:156 * 16 * *(0x4a, injector compensation value, 74 for 450s)

0x154 LSB for above

0x155 basic injector activation, MSB (0xF6BE lookup + 100)*(0xFB83 lookup) = weighted MAF lookup

0x156 basic injector activation, LSB

0x157 MAF weight

0x159 air/fuel ratio target

0x15a current O2 trim value

0x15b current fuel trim value

0x15c weight from coolant/airflow? Coolant cold enrichment

0x15d coolant timing retard

0x15e coolant timing retard update counter

0x15f 0x14f linearized, air density?

0x160 0xcd (barometric pressure) scaled * 0.625 (128th bar)

0x161 Basic Ignition Advance Angle, timing map lookup

0x165 Low battery alert

0x170 Octane retard

0x171 ECT timing correction

0x172 IAT timing correction

0x173 unused and left at 0x80? maybe would have been barometer timing correction?

0x176 Knock timer for updated timing? Octane counter, not auto incremented

0x17a Serial port receiver data

0x17b ???

0x17c ???

0x17f TMO: If security AND valet, 12. If not valet 0, else if not security 24, seems to be a write only reg

Non-TMO: Boostgauge value (0-24, 24=off, 0=on)

0x181 BCS PWM value (0-48 is 0-100% duty cycle)

0x182 BCS counter of some sort

0x183 BCS counter of some sort?

0x184 DA:DB * 16 during cranking or timing adjust, MSB, rpm rolling average * 4 when running?

0x185 DA:DB * 16 during cranking or timing adjust, LSB, rpm rolling average * 4 when running?

0x187 Expected airflow volume? Airflow at 100% VE?

0x189 Location used to store x or d for initialization purposes, then maybe moved into 0xb3,b4

0x18a

0x191 Used as counter

0x192 Contains -*(0x55) and then is incremented at times

0x193

0x194

0x1bf start of stack

OpCodes:

00 TEST

01 NOP

02 IDIV

02 ANDM (DIR) These are Mitsu "mystery" opcodes. These two look like they or-mask and

03 ORM (DIR) and-mask memory, like bset and bclr but with the bclr mask inverted.

02 FA FE ANDM *0xFA #$FE ; clr bit 1 *0xFA

03 FA 02 ORM *0xFA #$02 ; set bit 2 *0xFA

03 FDIV

04 LSRD

05 ASLD, LSLD

06 TAP

07 TPA

08 INX

18 08 INY

09 DEX

18 09 DEY

0A CLV

0B SEV

0C CLC

0D SEC

0E CLI

0F SEI

10 SBA

11 CBA

14 DIVD (DIR)

15 DIVD These are Mitsu "mystery" opcodes. (b = D/M, a = D%M)

12 BRSET (DIR)

13 BRCLR (DIR)

14 BSET (DIR)

15 BCLR (DIR)

16 TAB

17 TBA

19 DAA

1A 83 CPD

1A 93 CPD

1A B3 CPD

1A A3 CPD

1B ABA

1C CPD (IMM) These are Mitsu "mystery" opcodes and supersede the definitions below

1D CPD (DIR)

1E CPD (IND,X)

1F CPD (EXT)

1C BSET (IND,X)

1D BCLR (IND,X)

1E BRSET (IND,X)

1F BRCLR (IND,X)

18 1C BSET (IND,Y)

18 1D BCLR (IND,Y)

18 1E BRSET (IND,Y)

18 1F BRCLR (IND,Y)

3A ABX

18 3A ABY

20 BRA

21 BRN

22 BHI

23 BLS

24 BHS/BCC

25 BLO/BCS

26 BNE

27 BEQ

28 BVC

29 BVS

2A BPL

2B BMI

2C BGE

2D BLT

2E BGT

2F BLE

30 TSX

18 30 TSY

31 INS

32 PUL PULA

33 PUL PULB

34 DES

35 TXS

18 35 TYS

36 PSH PSHA

37 PSH PSHB

38 PUL PULX

18 38 PUL PULY

39 RTS

3B RTI

3C PSH PSHX

18 3C PSH PSHY

3D MUL

3E WAI

3F SWI

40 NEG NEGA

43 COM COMA

44 LSR LSRA

46 ROR RORA

47 ASR ASRA

48 ASL ASLA, LSL LSLA

49 ROL ROLA

4A DEC DECA

4C INC INCA

4D TST TSTA

4F CLR CLRA

50 NEG NEGB

53 COM COMB

54 LSR LSRB

56 ROR RORB

57 ASR ASRB

58 ASL ALSB, LSL LSLB

59 ROL ROLB

5A DEC DECB

5C INC INCB

5D TST TSTB

5F CLR CLRB

60 NEG

63 COM

64 LSR

66 ROR

67 ASR

68 ASL, LSL

69 ROL

6A DEC

6C INC

6D TST

6E JMP

6F CLR

18 60 NEG

18 63 COM

18 64 LSR

18 66 ROR

18 67 ASR

18 68 ASL, LSL

18 69 ROL

18 6A DEC

18 6C INC

18 6E JMP

18 6D TST

18 6F CLR

70 NEG

73 COM

74 LSR

76 ROR

77 ASR

78 ASL, LSL

79 ROL

7A DEC

7C INC

7D TST

7E JMP

7F CLR (EXT)

80 SUB SUBA (IMM)

81 CMP CMPA (IMM)

82 SBC SBCA (IMM)

83 SUB SUBD (IMM)

84 AND ANDA (IMM)

85 BIT BITA (IMM)

86 LDA LDAA (IMM)

87 BRSET (DIR) This is a Mitsu "mystery" opcode

88 EOR EORA (IMM)

89 ADC ADCA (IMM)

8A ORA ORAA (IMM)

8B ADD ADCA (IMM)

8C CPX (IMM)

18 8C CPY (IMM)

8D BSR

8E LDS (IMM)

8F XGDX

8F BRCLR (DIR) This is a Mitsu "mystery" opcode

18 8F XGDY

90 SUB SUBA (DIR)

91 CMP CMPA (DIR)

92 SBC SBCA (DIR)

93 SUB SUBD (DIR)

94 AND ANDA (DIR)

95 BIT BITA (DIR)

96 LDA LDAA (DIR)

97 STA STAA (DIR)

98 EOR EORA (DIR)

99 ADC ADCA (DIR)

9A ORA ORAA (DIR)

9B ADD ADCA (DIR)

9C CPX (DIR)

18 9C CPY (DIR)

9D JSR (DIR)

9E LDS (DIR)

9F STS (DIR)

A0 SUB SUBA (IND,X)

A1 CMP CMPA (IND,X)

A2 SBC SBCA (IND,X)

A3 SUB SUBD (IND,X)

A4 AND ANDA (IND,X)

A5 BIT BITA (IND,X)

A6 LDA LDAA (IND,X)

A7 STA STAA (IND,X)

A8 EOR EORA (IND,X)

A9 ADC ADCA (IND,X)

AA ORA ORAA (IND,X)

AB ADD ADCA (IND,X)

AC CPX (IND,X)

1A AC CPY (IND,X)

AD JSR (IND,X)

AE LDS (IND,X)

AF STS (IND,X)

18 A0 SUB SUBA (IND,Y)

18 A1 CMP CMPA (IND,Y)

18 A2 SBC SBCA (IND,Y)

18 A3 SUB SUBC (IND,Y)

18 A4 AND ANDA (IND,Y)

18 A5 BIT BITA (IND,Y)

18 A6 LDA LDAA (IND,Y)

18 A7 STA STAA (IND,Y)

18 A8 EOR EORA (IND,Y)

18 A9 ADC ADCA (IND,Y)

18 AA ORA ORAA (IND,Y)

18 AB ADD ADCA (IND,Y)

18 AC CPY (IND,Y)

18 AD JSR (IND,Y)

18 AE LDS (IND,Y)

18 AF STS (IND,Y)

B0 SUB SUBA (EXT)

B1 CMP CMPA (EXT)

B2 SBC SBCA (EXT)

B3 SUB SUBD (EXT)

B4 AND ANDA (EXT)

B5 BIT BITA (EXT)

B6 LDA LDAA (EXT)

B7 STA STAA (EXT)

B8 EOR EORA (EXT)

B9 ADC ADCA (EXT)

BA ORA ORAA (EXT)

BB ADD ADCA (EXT)

BC CPX (EXT)

18 BC CPY (EXT)

BD JSR (EXT)

BE LDS (EXT)

BF STS (EXT)

C0 SUB SUBB (IMM)

C1 CMP CMPB (IMM)

C2 SBC SBCB (IMM)

C3 ADDD (IMM)

C4 AND ANDB (IMM)

C5 BIT BITB (IMM)

C6 LDA LDAB (IMM)

C7 BRSET (IND,X) Mitsu

C8 EOR EORB (IMM)

C9 ADC ADCB (IMM)

CA ORA ORAB (IMM)

CB ADD ADCB (IMM)

CC LDD (IMM)

CD A3 CPD

CD AC CPX (IND,Y)

CE LDX (IMM)

18 CE LDY (IMM)

CF STOP

CF BRCLR (IND,X) Mitsu

D0 SUB SUBB (DIR)

D1 CMP CMPB (DIR)

D2 SBC SBCB (DIR)

D3 ADDD (DIR)

D4 AND ANDB (DIR)

D5 BIT BITB (DIR)

D6 LDA LDAB (DIR)

D7 STA STAB (DIR)

D8 EOR EORB (DIR)

D9 ADC ADCB (DIR)

DA ORA ORAB (DIR)

DB ADD ADCB (DIR)

DC LDD (DIR)

DD STD (DIR)

DE LDX (DIR)

18 DE LDY (DIR)

DF STX (DIR)

18 DF STY (DIR)

E0 SUB SUBB (IND,X)

E1 CMP CMPB (IND,X)

E2 SBC SBCB (IND,X)

E3 ADDD (IND,X)

E4 AND ANDB (IND,X)

E5 BIT BITB (IND,X)

E6 LDA LDAB (IND,X)

E7 STA STAB (IND,X)

E8 EOR EORB (IND,X)

E9 ADC ADCB (IND,X)

EA ORA ORAB (IND,X)

EB ADD ADCB (IND,X)

EC LDD (IND,X)

ED STD (IND,X)

EE LDX (IND,X)

CD EE LDX (IND,Y)

1A EE LDY, STY (IND,X)

EF STX (IND,X)

CD EF STX (IND,Y)

18 E0 SUB SUBB (IND,Y)

18 E1 CMP CMPB (IND,Y)

18 E2 SBC SBCB (IND,Y)

18 E3 ADDD (IND,Y)

18 E4 AND ANDB (IND,Y)

18 E5 BIT BITB (IND,Y)

18 E6 LDA LDAB (IND,Y)

18 E7 STA STAB (IND,Y)

18 E8 EOR EORB (IND,Y)

18 E9 ADC ADCB (IND,Y)

18 EA ORA ORAB (IND,Y)

18 EB ADD ADCB (IND,Y)

18 EC LDD (IND,Y)

18 ED STD (IND,Y)

18 EE LDY (IND,Y)

18 EF STY (IND,Y)

F0 SUB SUBB (EXT)

F1 CMP CMPB (EXT)

F2 SBC SBCB (EXT)

F3 ADDD (EXT)

F4 AND ANDB (EXT)

F5 BIT BITB (EXT)

F6 LDA LDAB (EXT)

F7 STA STAB (EXT)

F8 EOR EORB (EXT)

F9 ADC ADCB (EXT)

FA ORA ORAB (EXT)

FB ADD ADCB (EXT)

FC LDD (EXT)

FD STD (EXT)

FE LDX (EXT)

18 FE LDY (EXT)

FF STX (EXT)

18 FF STY (EXT)

and here are the mh6111 opcodes

00 TEST 1 * TEST OPERATION TEST MODE ONLY

01 NOP 1 2 NO OPERATION

02 AIM DIR 3 ? AND IN MEMORY

03 OIM DIR 3 ? OR IN MEMORY

04 LSRD 1 3 LOGICAL SHIFT RIGHT DOUBLE ACCUMULATOR

05 ASLD / LSLD 1 3 ARITHMETIC / LOGICAL SHIFT LEFT DOUBLE ACC

06 TAP 1 2 TRANSFER FROM ACC A TO CONDITION CODE REGISTER

07 TPA 1 2 TRANSFER FROM CONDITION CODE REGISTER TO ACC A

08 INX 1 3 INCREMENT INDEX REGISTER X

09 DEX 1 3 DECREMENT INDEX REGISTER X

0A CLV 1 2 CLEAR TWOS COMPLEMENT OVERFLOW BIT

0B SEV 1 2 SET TWOS COMPLEMENT OVERFLOW BIT

0C CLC 1 2 CLEAR CARRY

0D SEC 1 2 SET CARRY

0E CLI 1 2 CLEAR INTERRUPT MASK

0F SEI 1 2 SET INTERRUPT MASK

10 SBA 1 2 SUBTRACT ACCUMULATORS

11 CBA 1 2 COMPARE ACCUMULATORS

14 IDIV DIR 2 6 INTEGER DIVIDE

15 FDIV DIR 2 6 FRACTIONAL DIVIDE

16 TAB 1 2 TRANSFER ACCUMULATOR A TO ACCUMULATOR B

17 TBA 1 2 TRANSFER FROM ACCUMULATOR B TO ACCUMULATOR A

18 XGXY 1 4 EXCHANGE REGISTER X AND REGISTER Y

19 DAA 1 2 DECIMAL ADJUST ACCUMULATOR A

1A XGDX 1 EXCHANGE DOUBLE ACCUMLATOR AND INDEX REG X

1B ABA 1 2 ADD ACCUMULATOR B TO ACCUMULATOR A

1C CPD IMM 3 5 COMPARE DOUBLE ACCUMULATOR

1D CPD DIR 2 6 COMPARE DOUBLE ACCUMULATOR

1F CPD EXT 3 7 COMPARE DOUBLE ACCUMULATOR

20 BRA 2 3 BRANCH ALWAYS

21 BRN 2 3 BRANCH NEVER

22 BHI 2 3 BRANCH IF HIGHER

23 BLS 2 3 BRANCH IF LOWER OR SAME

24 BCC / BHS 2 3 BRANCH IF CARRY CLR / BRANCH IF HIGHER OR SAME

25 BCS / BLO 2 3 BRANCH IF CARRY SET / BRANCH IF LOWER

26 BNE 2 3 BRANCH IF NOT EQUAL TO ZERO

27 BEQ 2 3 BRANCH IF EQUAL

28 BVC 2 3 BRANCH IF OVERFLOW CLEAR

29 BVS 2 3 BRANCH IF OVERFLOW SET

2A BPL 2 3 BRANCH IF PLUS

2B BMI 2 3 BRANCH IF MINUS

2C BGE 2 3 BRANCH IF GREATER THAN OR EQUAL TO ZERO

2D BLT 2 3 BRANCH IF LESS THAN ZERO

2E BGT 2 3 BRANCH IF GREATER THAN ZERO

2F BLE 2 3 BRANCH IF LESS THAN OR EQUAL TO ZERO

30 TSX 1 3 TRANSFER FROM STACK POINTER TO INDEX REGISTER X

31 INS 1 3 INCREMENT STACK POINTER

32 PULA 1 4 PULL DATA FROM STACK

33 PULB 1 4 PULL DATA FROM STACK

34 DES 1 3 DECREMENT STACK POINTER

35 TXS 1 3 TRANSFER FROM INDEX REGISTER X TO STACK POINTER

36 PSHA 1 3 PUSH DATA ONTO STACK

37 PSHB 1 3 PUSH DATA ONTO STACK

38 PULX 1 5 PULL INDEX REGISTER X FROM STACK

39 RTS 1 5 RETURN FROM SUBROUTINE

3A ABX 1 3 ADD ACCUMULATOR B TO INDEX REGISTER X

3B RTI 1 12 RETURN FROM INTERRUPT

3C PSHX 1 4 PUSH INDEX REGISTER X ONTO STACK

3D MUL 1 10 MULTIPLY UNSIGNED

3E WAI 1 14 WAIT FOR INTERRUPT

3F SWI 1 14 SOFTWARE INTERRUPT

40 NEGA 1 2 NEGATE

43 COMA 1 2 COMPLEMENT

44 LSRA 1 2 LOGICAL SHIFT RIGHT

46 RORA 1 2 ROTATE RIGHT

47 ASRA 1 2 ARITHMETIC SHIFT RIGHT

48 ASLA / LSLA 1 2 ARITHMETIC / LOGICAL SHIFT LEFT

49 ROLA 1 2 ROTATE LEFT

4A DECA 1 2 DECREMENT

4C INCA 1 2 INCREMENT

4D TSTA 1 2 TEST

4F CLRA 1 2 CLEAR

50 NEGB 1 2 NEGATE

53 COMB 1 2 COMPLEMENT

54 LSRB 1 2 LOGICAL SHIFT RIGHT

56 RORB 1 2 ROTATE RIGHT

57 ASRB 1 2 ARITHMETIC SHIFT RIGHT

58 ASLB / LSLB 1 2 ARITHMETIC / LOGICAL SHIFT LEFT

59 ROLB 1 2 ROTATE LEFT

5A DECB 1 2 DECREMENT

5C INCB 1 2 INCREMENT

5D TSTB 1 2 TEST

5F CLRB 1 2 CLEAR

60 NEG IND,X 2 6 NEGATE

63 COM IND,X 2 6 COMPLEMENT

64 LSR IND,X 2 6 LOGICAL SHIFT RIGHT

66 ROR IND,X 2 6 ROTATE RIGHT

67 ASR IND,X 2 6 ARITHMETIC SHIFT RIGHT

68 ASL / LSL IND,X 2 6 ARITHMETIC / LOGICAL SHIFT LEFT

69 ROL IND,X 2 6 ROTATE LEFT

6A DEC IND,X 2 6 DECREMENT

6C INC IND,X 2 6 INCREMENT

6D TST IND,X 2 6 TEST

6E JMP IND,X 2 3 JUMP

6F CLR IND,X 2 6 CLEAR

70 NEG EXT 3 6 NEGATE

73 COM EXT 3 6 COMPLEMENT

74 LSR EXT 3 6 LOGICAL SHIFT RIGHT

76 ROR EXT 3 6 ROTATE RIGHT

77 ASR EXT 3 6 ARITHMETIC SHIFT RIGHT

78 ASL / LSL EXT 3 6 ARITHMETIC / LOGICAL SHIFT LEFT

79 ROL EXT 3 6 ROTATE LEFT

7A DEC EXT 3 6 DECREMENT

7C INC EXT 3 6 INCREMENT

7D TST EXT 3 6 TEST

7E JMP EXT 3 3 JUMP

7F CLR EXT 3 6 CLEAR

80 SUBA IMM 2 2 SUBTRACT

81 CMPA IMM 2 2 COMPARE

82 SBCA IMM 2 2 SUBTRACT WITH CARRY

83 SUBD IMM 3 4 SUBTRACT DOUBLE ACCUMULATOR

84 ANDA IMM 2 2 LOGICAL AND

85 BITA IMM 2 2 BIT TEST

86 LDAA IMM 2 2 LOAD ACCUMULATOR

87 BRSET DIR 4 BRANCH IF BIT(S) ARE SET

88 EORA IMM 2 2 EXCLUSIVE OR

89 ADCA IMM 2 2 ADD WITH CARRY

8A ORAA IMM 2 2 INCLUSIVE OR

8B ADDA IMM 2 2 ADD WITHOUT CARRY

8C CPX IMM 3 4 COMPARE INDEX REGISTER X

8D BSR 2 6 BRANCH TO SUBROUTINE

8E LDS IMM 3 3 LOAD STACK POINTER

8F BRCLR DIR 4 BRANCH IF BIT(S) ARE CLEAR

90 SUBA DIR 2 3 SUBTRACT

91 CMPA DIR 2 3 COMPARE

92 SBCA DIR 2 3 SUBTRACT WITH CARRY

93 SUBD DIR 2 5 SUBTRACT DOUBLE ACCUMULATOR

94 ANDA DIR 2 3 LOGICAL AND

95 BITA DIR 2 3 BIT TEST

96 LDAA DIR 2 3 LOAD ACCUMULATOR

97 STAA DIR 2 3 STORE ACCUMULATOR

98 EORA DIR 2 3 EXCLUSIVE OR

99 ADCA DIR 2 3 ADD WITH CARRY

9A ORAA DIR 2 3 INCLUSIVE OR

9B ADDA DIR 2 3 ADD WITHOUT CARRY

9C CPX DIR 2 5 COMPARE INDEX REGISTER X

9D JSR DIR 2 5 JUMP TO SUBROUTINE

9E LDS DIR 2 4 LOAD STACK POINTER

9F STS DIR 2 4 STORE STACK POINTER

A0 SUBA IND,X 2 4 SUBTRACT

A0 80 SUBA IND,Y 2 SUBTRACT

A1 CMPA IND,X 2 4 COMPARE

A1 80 CMPA IND,Y+ 2 COMPARE WITH/Y+

A2 SBCA IND,X 2 4 SUBTRACT WITH CARRY

A2 80 SBCA IND,Y 2 SUBTRACT WITH CARRY

A3 SUBD IND,X 2 6 SUBTRACT DOUBLE ACCUMULATOR

A3 80 SUBD IND,Y 2 6 SUBTRACT DOUBLE ACCUMULATOR

A4 ANDA IND,X 2 4 LOGICAL AND

A4 80 ANDA IND,Y 2 4 LOGICAL AND

A5 BITA IND,X 2 4 BIT TEST

A5 80 BITA IND,Y 2 4 BIT TEST

A6 LDAA IND,X 2 4 LOAD ACCUMULATOR

A6 80 LDAA IND,Y+ 2 LOAD ACCUMULATOR WITH/Y+

A7 STAA IND,X 2 4 STORE ACCUMULATOR

A7 80 STAA IND,Y 2 STORE ACCUMULATOR

A8 EORA IND,X 2 4 EXCLUSIVE OR

A8 80 EORA IND,Y 2 4 EXCLUSIVE OR

A9 ADCA IND,X 2 4 ADD WITH CARRY

A9 80 ADCA IND,Y 2 4 ADD WITH CARRY

AA ORAA IND,X 2 4 INCLUSIVE OR

AA 80 ORAA IND,Y 2 4 INCLUSIVE OR

AB ADDA IND,X 2 4 ADD WITHOUT CARRY

AB 80 ADDA IND,Y 2 4 ADD WITHOUT CARRY

AC CPX IND,X 2 6 COMPARE INDEX REGISTER X

AC 80 CPX IND,Y 2 6 COMPARE INDEX REGISTER X

AD JSR IND,X 2 6 JUMP TO SUBROUTINE

AD 80 JSR IND,Y 2 JUMP TO SUBROUTINE

AE LDS IND,X 2 5 LOAD STACK POINTER

AE 80 LDS IND,Y 2 5 LOAD STACK POINTER

AF STS IND,X 2 5 STORE STACK POINTER

AF 80 STS IND,Y 2 5 STORE STACK POINTER

B0 SUBA EXT 3 4 SUBTRACT

B1 CMPA EXT 3 4 COMPARE

B2 SBCA EXT 3 4 SUBTRACT WITH CARRY

B3 SUBD EXT 3 6 SUBTRACT DOUBLE ACCUMULATOR

B4 ANDA EXT 3 4 LOGICAL AND

B5 BITA EXT 3 4 BIT TEST

B6 LDAA EXT 3 4 LOAD ACCUMULATOR

B7 STAA EXT 3 4 STORE ACCUMULATOR

B8 EORA EXT 3 4 EXCLUSIVE OR

B9 ADCA EXT 3 4 ADD WITH CARRY

BA ORAA EXT 3 4 INCLUSIVE OR

BB ADDA EXT 3 4 ADD WITHOUT CARRY

BC CPX EXT 3 6 COMPARE INDEX REGISTER X

BD JSR EXT 3 6 JUMP TO SUBROUTINE

BE LDS EXT 3 5 LOAD STACK POINTER

BF STS EXT 3 5 STORE STACK POINTER

C0 SUBB IMM 2 2 SUBTRACT

C1 CMPB IMM 2 2 COMPARE

C2 SBCB IMM 2 2 SUBTRACT WITH CARRY

C3 ADDD IMM 3 4 ADD DOUBLE ACCUMULATOR

C4 ANDB IMM 2 2 LOGICAL AND

C5 BITB IMM 2 2 BIT TEST

C6 LDAB IMM 2 2 LOAD ACCUMULATOR

C8 EORB IMM 2 2 EXCLUSIVE OR

C9 ADCB IMM 2 2 ADD WITH CARRY

CA ORAB IMM 2 2 INCLUSIVE OR

CB ADDB IMM 2 2 ADD WITHOUT CARRY

CC LDD IMM 3 3 LOAD DOUBLE ACCUMULATOR

CD 08 INY 2 4 INCREMENT INDEX REGISTER Y

CD 09 DEY 2 4 DECREMENT INDEX REGISTER Y

CD 1A XGDY 2 EXCHANGE DOUBLE ACCUMULATOR AND INDEX REG Y

CD 3A ABY 2 ADD ACCUMULATOR B TO INDEX REG Y

CD 8C CMPY IMM, Y++ 4 CMPY INDEX REGISTER Y AND INCREMENT.

CD CE LDY IMM 4 4 LOAD INDEX REGISTER Y

CD DF STY DIR 3 5 STORE INDEX REGISTER Y

CD EE LDY IND,X 3 6 LOAD INDEX REGISTER Y

CE LDX IMM 3 3 LOAD INDEX REGISTER X

CF ***** 3 ?????

D0 SUBB DIR 2 3 SUBTRACT

D1 CMPB DIR 2 3 COMPARE

D2 SBCB DIR 2 3 SUBTRACT WITH CARRY

D3 ADDD DIR 2 5 ADD DOUBLE ACCUMULATOR

D4 ANDB DIR 2 3 LOGICAL AND

D5 BITB DIR 2 3 BIT TEST

D6 LDAB DIR 2 3 LOAD ACCUMULATOR

D7 STAB DIR 2 3 STORE ACCUMULATOR

D8 EORB DIR 2 3 EXCLUSIVE OR

D9 ADCB DIR 2 3 ADD WITH CARRY

DA ORAB DIR 2 3 INCLUSIVE OR

DB ADDB DIR 2 3 ADD WITHOUT CARRY

DC LDD DIR 2 4 LOAD DOUBLE ACCUMULATOR

DD STD DIR 2 4 STORE DOUBLE ACCUMULATOR

DE LDX DIR 2 4 LOAD INDEX REGISTER X

DF STX DIR 2 4 STORE INDEX REGISTER X

E0 SUBB IND,X 2 4 SUBTRACT

E0 80 SUBB IND,Y 2 4 SUBTRACT

E1 CMPB IND,X 2 4 COMPARE

E1 80 CMPB IND,Y 2 4 COMPARE

E2 SBCB IND,X 2 4 SUBTRACT WITH CARRY

E2 80 SBCB IND,Y 2 4 SUBTRACT WITH CARRY

E3 ADDD IND,X 2 6 ADD DOUBLE ACCUMULATOR

E3 80 ADDD IND,Y 2 6 ADD DOUBLE ACCUMULATOR

E4 ANDB IND,X 2 4 LOGICAL AND

E4 80 ANDB IND,Y 2 4 LOGICAL AND

E5 BITB IND,X 2 4 BIT TEST

E5 80 BITB IND,Y 2 4 BIT TEST

E6 LDAB IND,X 2 4 LOAD ACCUMULATOR

E6 80 LDAB IND,Y 2 4 LOAD ACCUMULATOR

E7 STAB IND,X 2 4 STORE ACCUMULATOR

E7 80 STAB IND,Y 2 4 STORE ACCUMULATOR

E8 EORB IND,X 2 4 EXCLUSIVE OR

E8 80 EORB IND,Y 2 4 EXCLUSIVE OR

E9 ADCB IND,X 2 4 ADD WITH CARRY

E9 80 ADCB IND,Y 2 4 ADD WITH CARRY

EA ORAB IND,X 2 4 INCLUSIVE OR

EA 80 ORAB IND,Y 2 4 INCLUSIVE OR

EB ADDB IND,X 2 4 ADD WITHOUT CARRY

EB 80 ADDB IND,Y 2 4 ADD WITHOUT CARRY

EC LDD IND,X 2 5 LOAD DOUBLE ACCUMULATOR

EC 80 LDD IND,Y 2 5 LOAD DOUBLE ACCUMULATOR

ED STD IND,X 2 5 STORE DOUBLE ACCUMULATOR

ED 80 STD IND,Y 2 5 STORE DOUBLE ACCUMULATOR

EE LDX IND,X 2 5 LOAD INDEX REGISTER X

EE 80 LDX IND,Y++ 2 5 LOAD INDEX REGISTER X WITH/Y++

EF STX IND,X 2 5 STORE INDEX REGISTER X

EF 80 STX IND,X 2 5 STORE INDEX REGISTER X

F0 SUBB EXT 3 4 SUBTRACT

F1 CMPB EXT 3 4 COMPARE

F2 SBCB EXT 3 4 SUBTRACT WITH CARRY

F3 ADDD EXT 3 6 ADD DOUBLE ACCUMULATOR

F4 ANDB EXT 3 4 LOGICAL AND

F5 BITB EXT 3 4 BIT TEST

F6 LDAB EXT 3 4 LOAD ACCUMULATOR

F7 STAB EXT 3 4 STORE ACCUMULATOR

F8 EORB EXT 3 4 EXCLUSIVE OR

F9 ADCB EXT 3 4 ADD WITH CARRY

FA ORAB EXT 3 4 INCLUSIVE OR

FB ADDB EXT 3 4 ADD WITHOUT CARRY

FC LDD EXT 3 5 LOAD DOUBLE ACCUMULATOR

FD STD EXT 3 5 STORE DOUBLE ACCUMULATOR

FE LDX EXT 3 5 LOAD INDEX REGISTER X

FF STX EXT 3 5 STORE INDEX REGISTER X