Browse Source

re-ported opcodes from Musashi, some were wrong

Keelan Lightfoot 1 year ago
parent
commit
f1e70fd764
2 changed files with 318 additions and 322 deletions
  1. 9
    322
      68kdisasm.go
  2. 309
    0
      opcodes.go

+ 9
- 322
68kdisasm.go View File

@@ -358,15 +358,19 @@ func (d *dasmInfo) getEaModeStr(size *Size) string {
358 358
 	}
359 359
 }
360 360
 
361
-func d68000Illegal(d *dasmInfo) string {
361
+// func d68000Illegal(d *dasmInfo) string {
362
+// 	return fmt.Sprintf("dc.w    $%04x; ILLEGAL", d.ir)
363
+// }
364
+
365
+func d68000_illegal(d *dasmInfo) string {
362 366
 	return fmt.Sprintf("dc.w    $%04x; ILLEGAL", d.ir)
363 367
 }
364 368
 
365
-func d68000LineA(d *dasmInfo) string {
369
+func d68000_a_line(d *dasmInfo) string {
366 370
 	return fmt.Sprintf("dc.w    $%04x; opcode 1010", d.ir)
367 371
 }
368 372
 
369
-func d68000LineF(d *dasmInfo) string {
373
+func d68000_f_line(d *dasmInfo) string {
370 374
 	return fmt.Sprintf("dc.w    $%04x; opcode 1111", d.ir)
371 375
 }
372 376
 
@@ -2414,7 +2418,7 @@ func init() {
2414 2418
 
2415 2419
 	for i := 0; i < 0x10000; i++ {
2416 2420
 		// default to illegal
2417
-		dasmTable[i] = d68000Illegal
2421
+		dasmTable[i] = d68000_illegal
2418 2422
 		opcode := uint16(i)
2419 2423
 		// search through opcode info for a match
2420 2424
 		for _, ostruct := range dasmOpcodeTable {
@@ -2430,330 +2434,13 @@ func init() {
2430 2434
 }
2431 2435
 
2432 2436
 func Disassemble(cpuType Type, pc int32, bus AddressBus) (string, int32) {
2437
+
2433 2438
 	d := &dasmInfo{pc: pc, helper: "", bus: bus}
2434 2439
 	d.ir = uint16(d.readImm(Word))
2435 2440
 
2436
-	//fmt.Println(dasmTable[d.ir])
2437
-	// if d.cpuType&dasmSupportedTypes[d.ir] == 0 {
2438
-	// 		if d.ir&0xf000 == 0xf000 {
2439
-	// 			return d68000LineF(d), d.pc - pc
2440
-	// 		}
2441
-	// 		return d68000Illegal(d), d.pc - pc
2442
-	// 	}
2443
-
2444
-	//fmt.Println(dasmTable[d.ir](d))
2445 2441
 	return dasmTable[d.ir](d), d.pc - pc
2446 2442
 }
2447 2443
 
2448
-var dasmOpcodeTable = []dasmOpcode{
2449
-	{d68000LineA, 0xf000, 0xa000, 0, dasmAll},
2450
-	{d68000LineF, 0xf000, 0xf000, 0, dasmAll},
2451
-	{d68000_abcd_rr, 0xf1f8, 49408, 0, dasmAll},
2452
-	{d68000_abcd_mm, 0xf1f8, 49416, 0, dasmAll},
2453
-	{d68000_add_er_8, 0xf1c0, 0xD000, 3071, dasmAll},
2454
-	{d68000_add_er_16, 0xf1c0, 53312, 4095, dasmAll},
2455
-	{d68000_add_er_32, 0xf1c0, 53376, 4095, dasmAll},
2456
-	{d68000_add_re_8, 0xf1c0, 53504, 1016, dasmAll},
2457
-	{d68000_add_re_16, 0xf1c0, 53568, 1016, dasmAll},
2458
-	{d68000_add_re_32, 0xf1c0, 53632, 1016, dasmAll},
2459
-	{d68000_adda_16, 0xf1c0, 53440, 4095, dasmAll},
2460
-	{d68000_adda_32, 0xf1c0, 53696, 4095, dasmAll},
2461
-	{d68000_addi_8, 0xffc0, 1536, 3064, dasmAll},
2462
-	{d68000_addi_16, 0xffc0, 1600, 3064, dasmAll},
2463
-	{d68000_addi_32, 0xffc0, 1664, 3064, dasmAll},
2464
-	{d68000_addq_8, 0xf1c0, 0x8000, 3064, dasmAll},
2465
-	{d68000_addq_16, 0xf1c0, 20544, 4088, dasmAll},
2466
-	{d68000_addq_32, 0xf1c0, 20608, 4088, dasmAll},
2467
-	{d68000_addx_rr_8, 0xf1f8, 53504, 0, dasmAll},
2468
-	{d68000_addx_rr_16, 0xf1f8, 53568, 0, dasmAll},
2469
-	{d68000_addx_rr_32, 0xf1f8, 53632, 0, dasmAll},
2470
-	{d68000_addx_mm_8, 0xf1f8, 53512, 0, dasmAll},
2471
-	{d68000_addx_mm_16, 0xf1f8, 53576, 0, dasmAll},
2472
-	{d68000_addx_mm_32, 0xf1f8, 53640, 0, dasmAll},
2473
-	{d68000_and_er_8, 0xf1c0, 49152, 3071, dasmAll},
2474
-	{d68000_and_er_16, 0xf1c0, 49216, 3071, dasmAll},
2475
-	{d68000_and_er_32, 0xf1c0, 49280, 3071, dasmAll},
2476
-	{d68000_and_re_8, 0xf1c0, 49408, 1016, dasmAll},
2477
-	{d68000_and_re_16, 0xf1c0, 49472, 1016, dasmAll},
2478
-	{d68000_and_re_32, 0xf1c0, 49536, 1016, dasmAll},
2479
-	{d68000_andi_to_ccr, 0xffff, 572, 0, dasmAll},
2480
-	{d68000_andi_to_sr, 0xffff, 636, 0, dasmAll},
2481
-	{d68000_andi_8, 0xffc0, 512, 3064, dasmAll},
2482
-	{d68000_andi_16, 0xffc0, 576, 3064, dasmAll},
2483
-	{d68000_andi_32, 0xffc0, 640, 3064, dasmAll},
2484
-	{d68000_asr_s_8, 0xf1f8, 57344, 0, dasmAll},
2485
-	{d68000_asr_s_16, 0xf1f8, 57408, 0, dasmAll},
2486
-	{d68000_asr_s_32, 0xf1f8, 57472, 0, dasmAll},
2487
-	{d68000_asr_r_8, 0xf1f8, 57376, 0, dasmAll},
2488
-	{d68000_asr_r_16, 0xf1f8, 57440, 0, dasmAll},
2489
-	{d68000_asr_r_32, 0xf1f8, 57504, 0, dasmAll},
2490
-	{d68000_asr_ea, 0xffc0, 57536, 1016, dasmAll},
2491
-	{d68000_asl_s_8, 0xf1f8, 57600, 0, dasmAll},
2492
-	{d68000_asl_s_16, 0xf1f8, 57664, 0, dasmAll},
2493
-	{d68000_asl_s_32, 0xf1f8, 57728, 0, dasmAll},
2494
-	{d68000_asl_r_8, 0xf1f8, 57632, 0, dasmAll},
2495
-	{d68000_asl_r_16, 0xf1f8, 57696, 0, dasmAll},
2496
-	{d68000_asl_r_32, 0xf1f8, 57760, 0, dasmAll},
2497
-	{d68000_asl_ea, 0xffc0, 57792, 1016, dasmAll},
2498
-	{d68000_bcc_8, 0xf000, 0x6000, 0, dasmAll},
2499
-	{d68000_bcc_16, 0xf0ff, 0x6000, 0, dasmAll},
2500
-	{d68020_bcc_32, 0xf0ff, 24831, 0, dasm68020 | dasm68030 | dasm68040},
2501
-	{d68000_bchg_r, 0xf1c0, 320, 3064, dasmAll},
2502
-	{d68000_bchg_s, 0xffc0, 2112, 3064, dasmAll},
2503
-	{d68000_bclr_r, 0xf1c0, 384, 3064, dasmAll},
2504
-	{d68000_bclr_s, 0xffc0, 2176, 3064, dasmAll},
2505
-	{d68020_bfchg, 0xffc0, 60096, 2680, dasm68020 | dasm68030 | dasm68040},
2506
-	{d68020_bfclr, 0xffc0, 60608, 2680, dasm68020 | dasm68030 | dasm68040},
2507
-	{d68020_bfexts, 0xffc0, 60352, 2683, dasm68020 | dasm68030 | dasm68040},
2508
-	{d68020_bfextu, 0xffc0, 59840, 2683, dasm68020 | dasm68030 | dasm68040},
2509
-	{d68020_bfffo, 0xffc0, 60864, 2683, dasm68020 | dasm68030 | dasm68040},
2510
-	{d68020_bfins, 0xffc0, 61376, 2680, dasm68020 | dasm68030 | dasm68040},
2511
-	{d68020_bfset, 0xffc0, 61120, 2680, dasm68020 | dasm68030 | dasm68040},
2512
-	{d68020_bftst, 0xffc0, 59584, 2683, dasm68020 | dasm68030 | dasm68040},
2513
-	{d68010_bkpt, 0xfff8, 18504, 0, dasm68010 | dasm68020 | dasm68030 | dasm68040},
2514
-	{d68000_bra_8, 0xff00, 0x6000, 0, dasmAll},
2515
-	{d68000_bra_16, 0xffff, 0x6000, 0, dasmAll},
2516
-	{d68020_bra_32, 0xffff, 24831, 0, dasm68020 | dasm68030 | dasm68040},
2517
-	{d68000_bset_r, 0xf1c0, 4048, 3064, dasmAll},
2518
-	{d68000_bset_s, 0xffc0, 2240, 3064, dasmAll},
2519
-	{d68000_bsr_8, 0xff00, 24832, 0, dasmAll},
2520
-	{d68000_bsr_16, 0xffff, 24832, 0, dasmAll},
2521
-	{d68020_bsr_32, 0xffff, 25087, 0, dasm68020 | dasm68030 | dasm68040},
2522
-	{d68000_btst_r, 0xf1c0, 0x100, 3071, dasmAll},
2523
-	{d68000_btst_s, 0xffc0, 0x800, 3067, dasmAll},
2524
-	{d68020_callm, 0xffc0, 1728, 635, dasm68020 | dasm68030 | dasm68040},
2525
-	{d68020_cas_8, 0xffc0, 2752, 1016, dasm68020 | dasm68030 | dasm68040},
2526
-	{d68020_cas_16, 0xffc0, 3264, 1016, dasm68020 | dasm68030 | dasm68040},
2527
-	{d68020_cas_32, 0xffc0, 3776, 1016, dasm68020 | dasm68030 | dasm68040},
2528
-	{d68020_cas2_16, 0xffff, 3324, 0, dasm68020 | dasm68030 | dasm68040},
2529
-	{d68020_cas2_32, 0xffff, 3836, 0, dasm68020 | dasm68030 | dasm68040},
2530
-	{d68000_chk_16, 0xf1c0, 16768, 3071, dasmAll},
2531
-	{d68020_chk_32, 0xf1c0, 16640, 3071, dasm68020 | dasm68030 | dasm68040},
2532
-	{d68020_chk2_cmp2_8, 0xffc0, 0xC0, 635, dasm68020 | dasm68030 | dasm68040},
2533
-	{d68020_chk2_cmp2_16, 0xffc0, 704, 635, dasm68020 | dasm68030 | dasm68040},
2534
-	{d68020_chk2_cmp2_32, 0xffc0, 1216, 635, dasm68020 | dasm68030 | dasm68040},
2535
-	{d68040_cinv, 0xff20, 62464, 0, dasm68040},
2536
-	{d68000_clr_8, 0xffc0, 16896, 3064, dasmAll},
2537
-	{d68000_clr_16, 0xffc0, 16960, 3064, dasmAll},
2538
-	{d68000_clr_32, 0xffc0, 17024, 3064, dasmAll},
2539
-	{d68000_cmp_8, 0xf1c0, 45056, 3071, dasmAll},
2540
-	{d68000_cmp_16, 0xf1c0, 45120, 4095, dasmAll},
2541
-	{d68000_cmp_32, 0xf1c0, 45184, 4095, dasmAll},
2542
-	{d68000_cmpa_16, 0xf1c0, 45248, 4095, dasmAll},
2543
-	{d68000_cmpa_32, 0xf1c0, 45504, 4095, dasmAll},
2544
-	{d68000_cmpi_8, 0xffc0, 3072, 3064, dasmAll},
2545
-	{d68020_cmpi_pcdi_8, 0xffff, 3130, 0, dasm68020 | dasm68030 | dasm68040},
2546
-	{d68020_cmpi_pcix_8, 0xffff, 3131, 0, dasm68020 | dasm68030 | dasm68040},
2547
-	{d68000_cmpi_16, 0xffc0, 3136, 3064, dasmAll},
2548
-	{d68020_cmpi_pcdi_16, 0xffff, 3194, 0, dasm68020 | dasm68030 | dasm68040},
2549
-	{d68020_cmpi_pcix_16, 0xffff, 3195, 0, dasm68020 | dasm68030 | dasm68040},
2550
-	{d68000_cmpi_32, 0xffc0, 3200, 3064, dasmAll},
2551
-	{d68020_cmpi_pcdi_32, 0xffff, 3258, 0, dasm68020 | dasm68030 | dasm68040},
2552
-	{d68020_cmpi_pcix_32, 0xffff, 3259, 0, dasm68020 | dasm68030 | dasm68040},
2553
-	{d68000_cmpm_8, 0xf1f8, 45320, 0, dasmAll},
2554
-	{d68000_cmpm_16, 0xf1f8, 45384, 0, dasmAll},
2555
-	{d68000_cmpm_32, 0xf1f8, 45448, 0, dasmAll},
2556
-	{d68020_cpbcc_16, 0xf1c0, 61568, 0, dasm68020 | dasm68030 | dasm68040},
2557
-	{d68020_cpbcc_32, 0xf1c0, 0xf0c0, 0, dasm68020 | dasm68030 | dasm68040},
2558
-	{d68020_cpdbcc, 0xf1f8, 61512, 0, dasm68020 | dasm68030 | dasm68040},
2559
-	{d68020_cpgen, 0xf1c0, 0xf000, 0, dasm68020 | dasm68030 | dasm68040},
2560
-	{d68020_cprestore, 0xf1c0, 61760, 895, dasm68020 | dasm68030 | dasm68040},
2561
-	{d68020_cpsave, 0xf1c0, 61696, 760, dasm68020 | dasm68030 | dasm68040},
2562
-	{d68020_cpscc, 0xf1c0, 61504, 3064, dasm68020 | dasm68030 | dasm68040},
2563
-	{d68020_cptrapcc_0, 61951, 61564, 0, dasm68020 | dasm68030 | dasm68040},
2564
-	{d68020_cptrapcc_16, 61951, 61562, 0, dasm68020 | dasm68030 | dasm68040},
2565
-	{d68020_cptrapcc_32, 61951, 61563, 0, dasm68020 | dasm68030 | dasm68040},
2566
-	{d68040_cpush, 0xff20, 62496, 0, dasm68040},
2567
-	{d68000_dbcc, 0xf0f8, 20680, 0, dasmAll},
2568
-	{d68000_dbra, 0xfff8, 20936, 0, dasmAll},
2569
-	{d68000_divs, 0xf1c0, 33216, 3071, dasmAll},
2570
-	{d68000_divu, 0xf1c0, 32960, 3071, dasmAll},
2571
-	{d68020_divl, 0xffc0, 19520, 3071, dasm68020 | dasm68030 | dasm68040},
2572
-	{d68000_eor_8, 0xf1c0, 45312, 3064, dasmAll},
2573
-	{d68000_eor_16, 0xf1c0, 45376, 3064, dasmAll},
2574
-	{d68000_eor_32, 0xf1c0, 45440, 3064, dasmAll},
2575
-	{d68000_eori_to_ccr, 0xffff, 2620, 0, dasmAll},
2576
-	{d68000_eori_to_sr, 0xffff, 2684, 0, dasmAll},
2577
-	{d68000_eori_8, 0xffc0, 0x1000, 3064, dasmAll},
2578
-	{d68000_eori_16, 0xffc0, 2624, 3064, dasmAll},
2579
-	{d68000_eori_32, 0xffc0, 2688, 3064, dasmAll},
2580
-	{d68000_exg_dd, 0xf1f8, 49472, 0, dasmAll},
2581
-	{d68000_exg_aa, 0xf1f8, 49480, 0, dasmAll},
2582
-	{d68000_exg_da, 0xf1f8, 49544, 0, dasmAll},
2583
-	{d68020_extb_32, 0xfff8, 18880, 0, dasm68020 | dasm68030 | dasm68040},
2584
-	{d68000_ext_16, 0xfff8, 18560, 0, dasmAll},
2585
-	{d68000_ext_32, 0xfff8, 18624, 0, dasmAll},
2586
-	{d68040_fpu, 0xffc0, 61952, 0, dasm68040},
2587
-	{d68000Illegal, 0xffff, 19196, 0, dasmAll},
2588
-	{d68000_jmp, 0xffc0, 20160, 635, dasmAll},
2589
-	{d68000_jsr, 0xffc0, 20096, 635, dasmAll},
2590
-	{d68000_lea, 0xf1c0, 16832, 635, dasmAll},
2591
-	{d68000_link_16, 0xfff8, 20048, 0, dasmAll},
2592
-	{d68020_link_32, 0xfff8, 18440, 0, dasm68020 | dasm68030 | dasm68040},
2593
-	{d68000_lsr_s_8, 0xf1f8, 57352, 0, dasmAll},
2594
-	{d68000_lsr_s_16, 0xf1f8, 57416, 0, dasmAll},
2595
-	{d68000_lsr_s_32, 0xf1f8, 57480, 0, dasmAll},
2596
-	{d68000_lsr_r_8, 0xf1f8, 57384, 0, dasmAll},
2597
-	{d68000_lsr_r_16, 0xf1f8, 57448, 0, dasmAll},
2598
-	{d68000_lsr_r_32, 0xf1f8, 57512, 0, dasmAll},
2599
-	{d68000_lsr_ea, 0xffc0, 58048, 1016, dasmAll},
2600
-	{d68000_lsl_s_8, 0xf1f8, 57608, 0, dasmAll},
2601
-	{d68000_lsl_s_16, 0xf1f8, 57672, 0, dasmAll},
2602
-	{d68000_lsl_s_32, 0xf1f8, 57736, 0, dasmAll},
2603
-	{d68000_lsl_r_8, 0xf1f8, 57640, 0, dasmAll},
2604
-	{d68000_lsl_r_16, 0xf1f8, 57704, 0, dasmAll},
2605
-	{d68000_lsl_r_32, 0xf1f8, 57768, 0, dasmAll},
2606
-	{d68000_lsl_ea, 0xffc0, 58304, 1016, dasmAll},
2607
-	{d68000_move_8, 0xf000, 4096, 3071, dasmAll},
2608
-	{d68000_move_16, 0xf000, 10228, 4095, dasmAll},
2609
-	{d68000_move_32, 0xf000, 8192, 4095, dasmAll},
2610
-	{d68000_movea_16, 0xf1c0, 12352, 4095, dasmAll},
2611
-	{d68000_movea_32, 0xf1c0, 8255, 4095, dasmAll},
2612
-	{d68000_move_to_ccr, 0xffc0, 17600, 3071, dasmAll},
2613
-	{d68010_move_fr_ccr, 0xffc0, 17088, 3064, dasmAll},
2614
-	{d68000_move_to_sr, 0xffc0, 18112, 3071, dasmAll},
2615
-	{d68000_move_fr_sr, 0xffc0, 16576, 3064, dasmAll},
2616
-	{d68000_move_to_usp, 0xfff8, 20064, 0, dasmAll},
2617
-	{d68000_move_fr_usp, 0xfff8, 20072, 0, dasmAll},
2618
-	{d68010_movec, 65534, 20090, 0, dasm68010 | dasm68020 | dasm68030 | dasm68040},
2619
-	{d68000_movem_pd_16, 0xfff8, 18592, 0, dasmAll},
2620
-	{d68000_movem_pd_32, 0xfff8, 18656, 0, dasmAll},
2621
-	{d68000_movem_re_16, 0xffc0, 18560, 760, dasmAll},
2622
-	{d68000_movem_re_32, 0xffc0, 18624, 760, dasmAll},
2623
-	{d68000_movem_er_16, 0xffc0, 19584, 891, dasmAll},
2624
-	{d68000_movem_er_32, 0xffc0, 19648, 891, dasmAll},
2625
-	{d68000_movep_er_16, 0xf1f8, 264, 0, dasmAll},
2626
-	{d68000_movep_er_32, 0xf1f8, 328, 0, dasmAll},
2627
-	{d68000_movep_re_16, 0xf1f8, 392, 0, dasmAll},
2628
-	{d68000_movep_re_32, 0xf1f8, 456, 0, dasmAll},
2629
-	{d68010_moves_8, 0xffc0, 3584, 1016, dasm68010 | dasm68020 | dasm68030 | dasm68040},
2630
-	{d68010_moves_16, 0xffc0, 3648, 1016, dasm68010 | dasm68020 | dasm68030 | dasm68040},
2631
-	{d68010_moves_32, 0xffc0, 3712, 1016, dasm68010 | dasm68020 | dasm68030 | dasm68040},
2632
-	{d68000_moveq, 61696, 28672, 0, dasmAll},
2633
-	{d68040_move16_pi_pi, 0xfff8, 63008, 0, dasm68040},
2634
-	{d68040_move16_pi_al, 0xfff8, 62976, 0, dasm68040},
2635
-	{d68040_move16_al_pi, 0xfff8, 62984, 0, dasm68040},
2636
-	{d68040_move16_ai_al, 0xfff8, 62992, 0, dasm68040},
2637
-	{d68040_move16_al_ai, 0xfff8, 63000, 0, dasm68040},
2638
-	{d68000_muls, 0xf1c0, 49600, 3071, dasmAll},
2639
-	{d68000_mulu, 0xf1c0, 49344, 3071, dasmAll},
2640
-	{d68020_mull, 0xffc0, 19456, 3071, dasm68020},
2641
-	{d68000_nbcd, 0xffc0, 18432, 3064, dasmAll},
2642
-	{d68000_neg_8, 0xffc0, 17408, 3064, dasmAll},
2643
-	{d68000_neg_16, 0xffc0, 17472, 3064, dasmAll},
2644
-	{d68000_neg_32, 0xffc0, 17536, 3064, dasmAll},
2645
-	{d68000_negx_8, 0xffc0, 16384, 3064, dasmAll},
2646
-	{d68000_negx_16, 0xffc0, 16448, 3064, dasmAll},
2647
-	{d68000_negx_32, 0xffc0, 16512, 3064, dasmAll},
2648
-	{d68000_nop, 0xffff, 20081, 0, dasmAll},
2649
-	{d68000_not_8, 0xffc0, 17920, 3064, dasmAll},
2650
-	{d68000_not_16, 0xffc0, 17984, 3064, dasmAll},
2651
-	{d68000_not_32, 0xffc0, 18048, 3064, dasmAll},
2652
-	{d68000_or_er_8, 0xf1c0, 0x8000, 3071, dasmAll},
2653
-	{d68000_or_er_16, 0xf1c0, 32832, 3071, dasmAll},
2654
-	{d68000_or_er_32, 0xf1c0, 32896, 3071, dasmAll},
2655
-	{d68000_or_re_8, 0xf1c0, 33024, 1016, dasmAll},
2656
-	{d68000_or_re_16, 0xf1c0, 33088, 1016, dasmAll},
2657
-	{d68000_or_re_32, 0xf1c0, 33152, 1016, dasmAll},
2658
-	{d68000_ori_to_ccr, 0xffff, 60, 0, dasmAll},
2659
-	{d68000_ori_to_sr, 0xffff, 124, 0, dasmAll},
2660
-	{d68000_ori_8, 0xffc0, 0, 3064, dasmAll},
2661
-	{d68000_ori_16, 0xffc0, 64, 3064, dasmAll},
2662
-	{d68000_ori_32, 0xffc0, 128, 3064, dasmAll},
2663
-	{d68020_pack_rr, 0xf1f8, 33088, 0, dasm68020 | dasm68030 | dasm68040},
2664
-	{d68020_pack_mm, 0xf1f8, 33096, 0, dasm68020 | dasm68030 | dasm68040},
2665
-	{d68000_pea, 0xffc0, 18496, 635, dasmAll},
2666
-	{d68040_pflush, 0xffe0, 62720, 0, dasm68040},
2667
-	{d68000_reset, 0xffff, 20080, 0, dasmAll},
2668
-	{d68000_ror_s_8, 0xf1f8, 57368, 0, dasmAll},
2669
-	{d68000_ror_s_16, 0xf1f8, 57432, 0, dasmAll},
2670
-	{d68000_ror_s_32, 0xf1f8, 57496, 0, dasmAll},
2671
-	{d68000_ror_r_8, 0xf1f8, 57400, 0, dasmAll},
2672
-	{d68000_ror_r_16, 0xf1f8, 57464, 0, dasmAll},
2673
-	{d68000_ror_r_32, 0xf1f8, 57528, 0, dasmAll},
2674
-	{d68000_ror_ea, 0xffc0, 59072, 1016, dasmAll},
2675
-	{d68000_rol_s_8, 0xf1f8, 57624, 0, dasmAll},
2676
-	{d68000_rol_s_16, 0xf1f8, 57688, 0, dasmAll},
2677
-	{d68000_rol_s_32, 0xf1f8, 57752, 0, dasmAll},
2678
-	{d68000_rol_r_8, 0xf1f8, 57656, 0, dasmAll},
2679
-	{d68000_rol_r_16, 0xf1f8, 57720, 0, dasmAll},
2680
-	{d68000_rol_r_32, 0xf1f8, 57784, 0, dasmAll},
2681
-	{d68000_rol_ea, 0xffc0, 59328, 1016, dasmAll},
2682
-	{d68000_roxr_s_8, 0xf1f8, 57360, 0, dasmAll},
2683
-	{d68000_roxr_s_16, 0xf1f8, 57424, 0, dasmAll},
2684
-	{d68000_roxr_s_32, 0xf1f8, 57488, 0, dasmAll},
2685
-	{d68000_roxr_r_8, 0xf1f8, 57392, 0, dasmAll},
2686
-	{d68000_roxr_r_16, 0xf1f8, 57456, 0, dasmAll},
2687
-	{d68000_roxr_r_32, 0xf1f8, 57520, 0, dasmAll},
2688
-	{d68000_roxr_ea, 0xffc0, 58560, 1016, dasmAll},
2689
-	{d68000_roxl_s_8, 0xf1f8, 57616, 0, dasmAll},
2690
-	{d68000_roxl_s_16, 0xf1f8, 57680, 0, dasmAll},
2691
-	{d68000_roxl_s_32, 0xf1f8, 57744, 0, dasmAll},
2692
-	{d68000_roxl_r_8, 0xf1f8, 57648, 0, dasmAll},
2693
-	{d68000_roxl_r_16, 0xf1f8, 57712, 0, dasmAll},
2694
-	{d68000_roxl_r_32, 0xf1f8, 57776, 0, dasmAll},
2695
-	{d68000_roxl_ea, 0xffc0, 58816, 1016, dasmAll},
2696
-	{d68010_rtd, 0xffff, 20084, 0, dasm68010 | dasm68020 | dasm68030 | dasm68040},
2697
-	{d68010_rtd, 0xffff, 20084, 0, dasm68010 | dasm68020 | dasm68030 | dasm68040},
2698
-	{d68000_rte, 0xffff, 20083, 0, dasmAll},
2699
-	{d68020_rtm, 0xfff0, 1728, 0, dasm68020},
2700
-	{d68000_rtr, 0xffff, 20087, 0, dasmAll},
2701
-	{d68000_rts, 0xffff, 20085, 0, dasmAll},
2702
-	{d68000_sbcd_rr, 0xf1f8, 33024, 0, dasmAll},
2703
-	{d68000_sbcd_mm, 0xf1f8, 33032, 0, dasmAll},
2704
-	{d68000_scc, 0xf0c0, 20672, 3064, dasmAll},
2705
-	{d68000_stop, 0xffff, 20082, 0, dasmAll},
2706
-	{d68000_sub_er_8, 0xf1c0, 36864, 3071, dasmAll},
2707
-	{d68000_sub_er_16, 0xf1c0, 36928, 4095, dasmAll},
2708
-	{d68000_sub_er_32, 0xf1c0, 36992, 4095, dasmAll},
2709
-	{d68000_sub_re_8, 0xf1c0, 37120, 1016, dasmAll},
2710
-	{d68000_sub_re_16, 0xf1c0, 37184, 1016, dasmAll},
2711
-	{d68000_sub_re_32, 0xf1c0, 3748, 1016, dasmAll},
2712
-	{d68000_suba_16, 0xf1c0, 37056, 4095, dasmAll},
2713
-	{d68000_suba_32, 0xf1c0, 37312, 4095, dasmAll},
2714
-	{d68000_subi_8, 0xffc0, 1024, 3064, dasmAll},
2715
-	{d68000_subi_16, 0xffc0, 1088, 3064, dasmAll},
2716
-	{d68000_subi_32, 0xffc0, 1152, 3064, dasmAll},
2717
-	{d68000_subq_8, 0xf1c0, 20736, 3064, dasmAll},
2718
-	{d68000_subq_16, 0xf1c0, 20800, 4088, dasmAll},
2719
-	{d68000_subq_32, 0xf1c0, 20864, 4088, dasmAll},
2720
-	{d68000_subx_rr_8, 0xf1f8, 37120, 0, dasmAll},
2721
-	{d68000_subx_rr_16, 0xf1f8, 37184, 0, dasmAll},
2722
-	{d68000_subx_rr_32, 0xf1f8, 37248, 0, dasmAll},
2723
-	{d68000_subx_mm_8, 0xf1f8, 37128, 0, dasmAll},
2724
-	{d68000_subx_mm_16, 0xf1f8, 37192, 0, dasmAll},
2725
-	{d68000_subx_mm_32, 0xf1f8, 37255, 0, dasmAll},
2726
-	{d68000_swap, 0xfff8, 18496, 0, dasmAll},
2727
-	{d68000_tas, 0xffc0, 19136, 3064, dasmAll},
2728
-	{d68000_trap, 0xfff0, 20032, 0, dasmAll},
2729
-	{d68020_trapcc_0, 0xf0ff, 20732, 0, dasm68020 | dasm68030 | dasm68040},
2730
-	{d68020_trapcc_16, 0xf0ff, 20730, 0, dasm68020 | dasm68030 | dasm68040},
2731
-	{d68020_trapcc_32, 0xf0ff, 20731, 0, dasm68020 | dasm68030 | dasm68040},
2732
-	{d68000_trapv, 0xffff, 20086, 0, dasmAll},
2733
-	{d68000_tst_8, 0xffc0, 18944, 3064, dasmAll},
2734
-	{d68020_tst_pcdi_8, 0xffff, 19002, 0, dasm68020 | dasm68030 | dasm68040},
2735
-	{d68020_tst_pcix_8, 0xffff, 19003, 0, dasm68020 | dasm68030 | dasm68040},
2736
-	{d68020_tst_i_8, 0xffff, 19004, 0, dasm68020 | dasm68030 | dasm68040},
2737
-	{d68000_tst_16, 0xffc0, 19008, 3064, dasmAll},
2738
-	{d68020_tst_a_16, 0xfff8, 19016, 0, dasm68020 | dasm68030 | dasm68040},
2739
-	{d68020_tst_pcdi_16, 0xffff, 19066, 0, dasm68020 | dasm68030 | dasm68040},
2740
-	{d68020_tst_pcix_16, 0xffff, 19067, 0, dasm68020 | dasm68030 | dasm68040},
2741
-	{d68020_tst_i_16, 0xffff, 19068, 0, dasm68020 | dasm68030 | dasm68040},
2742
-	{d68000_tst_32, 0xffc0, 19072, 3064, dasmAll},
2743
-	{d68020_tst_a_32, 0xfff8, 19080, 0, dasm68020 | dasm68030 | dasm68040},
2744
-	{d68020_tst_pcdi_32, 0xffff, 19130, 0, dasm68020 | dasm68030 | dasm68040},
2745
-	{d68020_tst_pcix_32, 0xffff, 19131, 0, dasm68020 | dasm68030 | dasm68040},
2746
-	{d68020_tst_i_32, 0xffff, 19132, 0, dasm68020 | dasm68030 | dasm68040},
2747
-	{d68000_unlk, 0xfff8, 20056, 0, dasmAll},
2748
-	{d68020_unpk_rr, 0xf1f8, 33152, 0, dasm68020 | dasm68030 | dasm68040},
2749
-	{d68020_unpk_mm, 0xf1f8, 33160, 0, dasm68020 | dasm68030 | dasm68040},
2750
-	{d68851_p000, 0xffc0, 0xf000, 0, dasmAll},
2751
-	{d68851_pbcc16, 0xffc0, 61568, 0, dasmAll},
2752
-	{d68851_pbcc32, 0xffc0, 0xf0c0, 0, dasmAll},
2753
-	{d68851_pdbcc, 0xfff8, 61512, 0, dasmAll},
2754
-	{d68851_p001, 0xffc0, 61504, 0, dasmAll},
2755
-}
2756
-
2757 2444
 type Size struct {
2758 2445
 	size  int32
2759 2446
 	align int32

+ 309
- 0
opcodes.go View File

@@ -0,0 +1,309 @@
1
+package disasm
2
+
3
+var dasmOpcodeTable = []dasmOpcode{
4
+	{d68000_a_line, 0xf000, 0xa000, 0, dasmAll},
5
+	{d68000_f_line, 0xf000, 0xf000, 0, dasmAll},
6
+	{d68000_abcd_rr, 0xf1f8, 0xc100, 0x000, dasmAll},
7
+	{d68000_abcd_mm, 0xf1f8, 0xc108, 0x000, dasmAll},
8
+	{d68000_add_er_8, 0xf1c0, 0xd000, 0xbff, dasmAll},
9
+	{d68000_add_er_16, 0xf1c0, 0xd040, 0xfff, dasmAll},
10
+	{d68000_add_er_32, 0xf1c0, 0xd080, 0xfff, dasmAll},
11
+	{d68000_add_re_8, 0xf1c0, 0xd100, 0x3f8, dasmAll},
12
+	{d68000_add_re_16, 0xf1c0, 0xd140, 0x3f8, dasmAll},
13
+	{d68000_add_re_32, 0xf1c0, 0xd180, 0x3f8, dasmAll},
14
+	{d68000_adda_16, 0xf1c0, 0xd0c0, 0xfff, dasmAll},
15
+	{d68000_adda_32, 0xf1c0, 0xd1c0, 0xfff, dasmAll},
16
+	{d68000_addi_8, 0xffc0, 0x0600, 0xbf8, dasmAll},
17
+	{d68000_addi_16, 0xffc0, 0x0640, 0xbf8, dasmAll},
18
+	{d68000_addi_32, 0xffc0, 0x0680, 0xbf8, dasmAll},
19
+	{d68000_addq_8, 0xf1c0, 0x5000, 0xbf8, dasmAll},
20
+	{d68000_addq_16, 0xf1c0, 0x5040, 0xff8, dasmAll},
21
+	{d68000_addq_32, 0xf1c0, 0x5080, 0xff8, dasmAll},
22
+	{d68000_addx_rr_8, 0xf1f8, 0xd100, 0x000, dasmAll},
23
+	{d68000_addx_rr_16, 0xf1f8, 0xd140, 0x000, dasmAll},
24
+	{d68000_addx_rr_32, 0xf1f8, 0xd180, 0x000, dasmAll},
25
+	{d68000_addx_mm_8, 0xf1f8, 0xd108, 0x000, dasmAll},
26
+	{d68000_addx_mm_16, 0xf1f8, 0xd148, 0x000, dasmAll},
27
+	{d68000_addx_mm_32, 0xf1f8, 0xd188, 0x000, dasmAll},
28
+	{d68000_and_er_8, 0xf1c0, 0xc000, 0xbff, dasmAll},
29
+	{d68000_and_er_16, 0xf1c0, 0xc040, 0xbff, dasmAll},
30
+	{d68000_and_er_32, 0xf1c0, 0xc080, 0xbff, dasmAll},
31
+	{d68000_and_re_8, 0xf1c0, 0xc100, 0x3f8, dasmAll},
32
+	{d68000_and_re_16, 0xf1c0, 0xc140, 0x3f8, dasmAll},
33
+	{d68000_and_re_32, 0xf1c0, 0xc180, 0x3f8, dasmAll},
34
+	{d68000_andi_to_ccr, 0xffff, 0x023c, 0x000, dasmAll},
35
+	{d68000_andi_to_sr, 0xffff, 0x027c, 0x000, dasmAll},
36
+	{d68000_andi_8, 0xffc0, 0x0200, 0xbf8, dasmAll},
37
+	{d68000_andi_16, 0xffc0, 0x0240, 0xbf8, dasmAll},
38
+	{d68000_andi_32, 0xffc0, 0x0280, 0xbf8, dasmAll},
39
+	{d68000_asr_s_8, 0xf1f8, 0xe000, 0x000, dasmAll},
40
+	{d68000_asr_s_16, 0xf1f8, 0xe040, 0x000, dasmAll},
41
+	{d68000_asr_s_32, 0xf1f8, 0xe080, 0x000, dasmAll},
42
+	{d68000_asr_r_8, 0xf1f8, 0xe020, 0x000, dasmAll},
43
+	{d68000_asr_r_16, 0xf1f8, 0xe060, 0x000, dasmAll},
44
+	{d68000_asr_r_32, 0xf1f8, 0xe0a0, 0x000, dasmAll},
45
+	{d68000_asr_ea, 0xffc0, 0xe0c0, 0x3f8, dasmAll},
46
+	{d68000_asl_s_8, 0xf1f8, 0xe100, 0x000, dasmAll},
47
+	{d68000_asl_s_16, 0xf1f8, 0xe140, 0x000, dasmAll},
48
+	{d68000_asl_s_32, 0xf1f8, 0xe180, 0x000, dasmAll},
49
+	{d68000_asl_r_8, 0xf1f8, 0xe120, 0x000, dasmAll},
50
+	{d68000_asl_r_16, 0xf1f8, 0xe160, 0x000, dasmAll},
51
+	{d68000_asl_r_32, 0xf1f8, 0xe1a0, 0x000, dasmAll},
52
+	{d68000_asl_ea, 0xffc0, 0xe1c0, 0x3f8, dasmAll},
53
+	{d68000_bcc_8, 0xf000, 0x6000, 0x000, dasmAll},
54
+	{d68000_bcc_16, 0xf0ff, 0x6000, 0x000, dasmAll},
55
+	{d68020_bcc_32, 0xf0ff, 0x60ff, 0x000, dasm68020 | dasm68030 | dasm68040},
56
+	{d68000_bchg_r, 0xf1c0, 0x0140, 0xbf8, dasmAll},
57
+	{d68000_bchg_s, 0xffc0, 0x0840, 0xbf8, dasmAll},
58
+	{d68000_bclr_r, 0xf1c0, 0x0180, 0xbf8, dasmAll},
59
+	{d68000_bclr_s, 0xffc0, 0x0880, 0xbf8, dasmAll},
60
+	{d68020_bfchg, 0xffc0, 0xeac0, 0xa78, dasm68020 | dasm68030 | dasm68040},
61
+	{d68020_bfclr, 0xffc0, 0xecc0, 0xa78, dasm68020 | dasm68030 | dasm68040},
62
+	{d68020_bfexts, 0xffc0, 0xebc0, 0xa7b, dasm68020 | dasm68030 | dasm68040},
63
+	{d68020_bfextu, 0xffc0, 0xe9c0, 0xa7b, dasm68020 | dasm68030 | dasm68040},
64
+	{d68020_bfffo, 0xffc0, 0xedc0, 0xa7b, dasm68020 | dasm68030 | dasm68040},
65
+	{d68020_bfins, 0xffc0, 0xefc0, 0xa78, dasm68020 | dasm68030 | dasm68040},
66
+	{d68020_bfset, 0xffc0, 0xeec0, 0xa78, dasm68020 | dasm68030 | dasm68040},
67
+	{d68020_bftst, 0xffc0, 0xe8c0, 0xa7b, dasm68020 | dasm68030 | dasm68040},
68
+	{d68010_bkpt, 0xfff8, 0x4848, 0x000, dasm68010 | dasm68020 | dasm68030 | dasm68040},
69
+	{d68000_bra_8, 0xff00, 0x6000, 0x000, dasmAll},
70
+	{d68000_bra_16, 0xffff, 0x6000, 0x000, dasmAll},
71
+	{d68020_bra_32, 0xffff, 0x60ff, 0x000, dasm68020 | dasm68030 | dasm68040},
72
+	{d68000_bset_r, 0xf1c0, 0x01c0, 0xbf8, dasmAll},
73
+	{d68000_bset_s, 0xffc0, 0x08c0, 0xbf8, dasmAll},
74
+	{d68000_bsr_8, 0xff00, 0x6100, 0x000, dasmAll},
75
+	{d68000_bsr_16, 0xffff, 0x6100, 0x000, dasmAll},
76
+	{d68020_bsr_32, 0xffff, 0x61ff, 0x000, dasm68020 | dasm68030 | dasm68040},
77
+	{d68000_btst_r, 0xf1c0, 0x0100, 0xbff, dasmAll},
78
+	{d68000_btst_s, 0xffc0, 0x0800, 0xbfb, dasmAll},
79
+	{d68020_callm, 0xffc0, 0x06c0, 0x27b, dasm68020 | dasm68030 | dasm68040},
80
+	{d68020_cas_8, 0xffc0, 0x0ac0, 0x3f8, dasm68020 | dasm68030 | dasm68040},
81
+	{d68020_cas_16, 0xffc0, 0x0cc0, 0x3f8, dasm68020 | dasm68030 | dasm68040},
82
+	{d68020_cas_32, 0xffc0, 0x0ec0, 0x3f8, dasm68020 | dasm68030 | dasm68040},
83
+	{d68020_cas2_16, 0xffff, 0x0cfc, 0x000, dasm68020 | dasm68030 | dasm68040},
84
+	{d68020_cas2_32, 0xffff, 0x0efc, 0x000, dasm68020 | dasm68030 | dasm68040},
85
+	{d68000_chk_16, 0xf1c0, 0x4180, 0xbff, dasmAll},
86
+	{d68020_chk_32, 0xf1c0, 0x4100, 0xbff, dasm68020 | dasm68030 | dasm68040},
87
+	{d68020_chk2_cmp2_8, 0xffc0, 0x00c0, 0x27b, dasm68020 | dasm68030 | dasm68040},
88
+	{d68020_chk2_cmp2_16, 0xffc0, 0x02c0, 0x27b, dasm68020 | dasm68030 | dasm68040},
89
+	{d68020_chk2_cmp2_32, 0xffc0, 0x04c0, 0x27b, dasm68020 | dasm68030 | dasm68040},
90
+	{d68040_cinv, 0xff20, 0xf400, 0x000, dasm68040},
91
+	{d68000_clr_8, 0xffc0, 0x4200, 0xbf8, dasmAll},
92
+	{d68000_clr_16, 0xffc0, 0x4240, 0xbf8, dasmAll},
93
+	{d68000_clr_32, 0xffc0, 0x4280, 0xbf8, dasmAll},
94
+	{d68000_cmp_8, 0xf1c0, 0xb000, 0xbff, dasmAll},
95
+	{d68000_cmp_16, 0xf1c0, 0xb040, 0xfff, dasmAll},
96
+	{d68000_cmp_32, 0xf1c0, 0xb080, 0xfff, dasmAll},
97
+	{d68000_cmpa_16, 0xf1c0, 0xb0c0, 0xfff, dasmAll},
98
+	{d68000_cmpa_32, 0xf1c0, 0xb1c0, 0xfff, dasmAll},
99
+	{d68000_cmpi_8, 0xffc0, 0x0c00, 0xbf8, dasmAll},
100
+	{d68020_cmpi_pcdi_8, 0xffff, 0x0c3a, 0x000, dasm68020 | dasm68030 | dasm68040},
101
+	{d68020_cmpi_pcix_8, 0xffff, 0x0c3b, 0x000, dasm68020 | dasm68030 | dasm68040},
102
+	{d68000_cmpi_16, 0xffc0, 0x0c40, 0xbf8, dasmAll},
103
+	{d68020_cmpi_pcdi_16, 0xffff, 0x0c7a, 0x000, dasm68020 | dasm68030 | dasm68040},
104
+	{d68020_cmpi_pcix_16, 0xffff, 0x0c7b, 0x000, dasm68020 | dasm68030 | dasm68040},
105
+	{d68000_cmpi_32, 0xffc0, 0x0c80, 0xbf8, dasmAll},
106
+	{d68020_cmpi_pcdi_32, 0xffff, 0x0cba, 0x000, dasm68020 | dasm68030 | dasm68040},
107
+	{d68020_cmpi_pcix_32, 0xffff, 0x0cbb, 0x000, dasm68020 | dasm68030 | dasm68040},
108
+	{d68000_cmpm_8, 0xf1f8, 0xb108, 0x000, dasmAll},
109
+	{d68000_cmpm_16, 0xf1f8, 0xb148, 0x000, dasmAll},
110
+	{d68000_cmpm_32, 0xf1f8, 0xb188, 0x000, dasmAll},
111
+	{d68020_cpbcc_16, 0xf1c0, 0xf080, 0x000, dasm68020 | dasm68030 | dasm68040},
112
+	{d68020_cpbcc_32, 0xf1c0, 0xf0c0, 0x000, dasm68020 | dasm68030 | dasm68040},
113
+	{d68020_cpdbcc, 0xf1f8, 0xf048, 0x000, dasm68020 | dasm68030 | dasm68040},
114
+	{d68020_cpgen, 0xf1c0, 0xf000, 0x000, dasm68020 | dasm68030 | dasm68040},
115
+	{d68020_cprestore, 0xf1c0, 0xf140, 0x37f, dasm68020 | dasm68030 | dasm68040},
116
+	{d68020_cpsave, 0xf1c0, 0xf100, 0x2f8, dasm68020 | dasm68030 | dasm68040},
117
+	{d68020_cpscc, 0xf1c0, 0xf040, 0xbf8, dasm68020 | dasm68030 | dasm68040},
118
+	{d68020_cptrapcc_0, 0xf1ff, 0xf07c, 0x000, dasm68020 | dasm68030 | dasm68040},
119
+	{d68020_cptrapcc_16, 0xf1ff, 0xf07a, 0x000, dasm68020 | dasm68030 | dasm68040},
120
+	{d68020_cptrapcc_32, 0xf1ff, 0xf07b, 0x000, dasm68020 | dasm68030 | dasm68040},
121
+	{d68040_cpush, 0xff20, 0xf420, 0x000, dasm68040},
122
+	{d68000_dbcc, 0xf0f8, 0x50c8, 0x000, dasmAll},
123
+	{d68000_dbra, 0xfff8, 0x51c8, 0x000, dasmAll},
124
+	{d68000_divs, 0xf1c0, 0x81c0, 0xbff, dasmAll},
125
+	{d68000_divu, 0xf1c0, 0x80c0, 0xbff, dasmAll},
126
+	{d68020_divl, 0xffc0, 0x4c40, 0xbff, dasm68020 | dasm68030 | dasm68040},
127
+	{d68000_eor_8, 0xf1c0, 0xb100, 0xbf8, dasmAll},
128
+	{d68000_eor_16, 0xf1c0, 0xb140, 0xbf8, dasmAll},
129
+	{d68000_eor_32, 0xf1c0, 0xb180, 0xbf8, dasmAll},
130
+	{d68000_eori_to_ccr, 0xffff, 0x0a3c, 0x000, dasmAll},
131
+	{d68000_eori_to_sr, 0xffff, 0x0a7c, 0x000, dasmAll},
132
+	{d68000_eori_8, 0xffc0, 0x0a00, 0xbf8, dasmAll},
133
+	{d68000_eori_16, 0xffc0, 0x0a40, 0xbf8, dasmAll},
134
+	{d68000_eori_32, 0xffc0, 0x0a80, 0xbf8, dasmAll},
135
+	{d68000_exg_dd, 0xf1f8, 0xc140, 0x000, dasmAll},
136
+	{d68000_exg_aa, 0xf1f8, 0xc148, 0x000, dasmAll},
137
+	{d68000_exg_da, 0xf1f8, 0xc188, 0x000, dasmAll},
138
+	{d68020_extb_32, 0xfff8, 0x49c0, 0x000, dasm68020 | dasm68030 | dasm68040},
139
+	{d68000_ext_16, 0xfff8, 0x4880, 0x000, dasmAll},
140
+	{d68000_ext_32, 0xfff8, 0x48c0, 0x000, dasmAll},
141
+	{d68040_fpu, 0xffc0, 0xf200, 0x000, dasm68040},
142
+	{d68000_illegal, 0xffff, 0x4afc, 0x000, dasmAll},
143
+	{d68000_jmp, 0xffc0, 0x4ec0, 0x27b, dasmAll},
144
+	{d68000_jsr, 0xffc0, 0x4e80, 0x27b, dasmAll},
145
+	{d68000_lea, 0xf1c0, 0x41c0, 0x27b, dasmAll},
146
+	{d68000_link_16, 0xfff8, 0x4e50, 0x000, dasmAll},
147
+	{d68020_link_32, 0xfff8, 0x4808, 0x000, dasm68020 | dasm68030 | dasm68040},
148
+	{d68000_lsr_s_8, 0xf1f8, 0xe008, 0x000, dasmAll},
149
+	{d68000_lsr_s_16, 0xf1f8, 0xe048, 0x000, dasmAll},
150
+	{d68000_lsr_s_32, 0xf1f8, 0xe088, 0x000, dasmAll},
151
+	{d68000_lsr_r_8, 0xf1f8, 0xe028, 0x000, dasmAll},
152
+	{d68000_lsr_r_16, 0xf1f8, 0xe068, 0x000, dasmAll},
153
+	{d68000_lsr_r_32, 0xf1f8, 0xe0a8, 0x000, dasmAll},
154
+	{d68000_lsr_ea, 0xffc0, 0xe2c0, 0x3f8, dasmAll},
155
+	{d68000_lsl_s_8, 0xf1f8, 0xe108, 0x000, dasmAll},
156
+	{d68000_lsl_s_16, 0xf1f8, 0xe148, 0x000, dasmAll},
157
+	{d68000_lsl_s_32, 0xf1f8, 0xe188, 0x000, dasmAll},
158
+	{d68000_lsl_r_8, 0xf1f8, 0xe128, 0x000, dasmAll},
159
+	{d68000_lsl_r_16, 0xf1f8, 0xe168, 0x000, dasmAll},
160
+	{d68000_lsl_r_32, 0xf1f8, 0xe1a8, 0x000, dasmAll},
161
+	{d68000_lsl_ea, 0xffc0, 0xe3c0, 0x3f8, dasmAll},
162
+	{d68000_move_8, 0xf000, 0x1000, 0xbff, dasmAll},
163
+	{d68000_move_16, 0xf000, 0x3000, 0xfff, dasmAll},
164
+	{d68000_move_32, 0xf000, 0x2000, 0xfff, dasmAll},
165
+	{d68000_movea_16, 0xf1c0, 0x3040, 0xfff, dasmAll},
166
+	{d68000_movea_32, 0xf1c0, 0x2040, 0xfff, dasmAll},
167
+	{d68000_move_to_ccr, 0xffc0, 0x44c0, 0xbff, dasmAll},
168
+	{d68010_move_fr_ccr, 0xffc0, 0x42c0, 0xbf8, dasmAll},
169
+	{d68000_move_to_sr, 0xffc0, 0x46c0, 0xbff, dasmAll},
170
+	{d68000_move_fr_sr, 0xffc0, 0x40c0, 0xbf8, dasmAll},
171
+	{d68000_move_to_usp, 0xfff8, 0x4e60, 0x000, dasmAll},
172
+	{d68000_move_fr_usp, 0xfff8, 0x4e68, 0x000, dasmAll},
173
+	{d68010_movec, 0xfffe, 0x4e7a, 0x000, dasm68010 | dasm68020 | dasm68030 | dasm68040},
174
+	{d68000_movem_pd_16, 0xfff8, 0x48a0, 0x000, dasmAll},
175
+	{d68000_movem_pd_32, 0xfff8, 0x48e0, 0x000, dasmAll},
176
+	{d68000_movem_re_16, 0xffc0, 0x4880, 0x2f8, dasmAll},
177
+	{d68000_movem_re_32, 0xffc0, 0x48c0, 0x2f8, dasmAll},
178
+	{d68000_movem_er_16, 0xffc0, 0x4c80, 0x37b, dasmAll},
179
+	{d68000_movem_er_32, 0xffc0, 0x4cc0, 0x37b, dasmAll},
180
+	{d68000_movep_er_16, 0xf1f8, 0x0108, 0x000, dasmAll},
181
+	{d68000_movep_er_32, 0xf1f8, 0x0148, 0x000, dasmAll},
182
+	{d68000_movep_re_16, 0xf1f8, 0x0188, 0x000, dasmAll},
183
+	{d68000_movep_re_32, 0xf1f8, 0x01c8, 0x000, dasmAll},
184
+	{d68010_moves_8, 0xffc0, 0x0e00, 0x3f8, dasm68010 | dasm68020 | dasm68030 | dasm68040},
185
+	{d68010_moves_16, 0xffc0, 0x0e40, 0x3f8, dasm68010 | dasm68020 | dasm68030 | dasm68040},
186
+	{d68010_moves_32, 0xffc0, 0x0e80, 0x3f8, dasm68010 | dasm68020 | dasm68030 | dasm68040},
187
+	{d68000_moveq, 0xf100, 0x7000, 0x000, dasmAll},
188
+	{d68040_move16_pi_pi, 0xfff8, 0xf620, 0x000, dasm68040},
189
+	{d68040_move16_pi_al, 0xfff8, 0xf600, 0x000, dasm68040},
190
+	{d68040_move16_al_pi, 0xfff8, 0xf608, 0x000, dasm68040},
191
+	{d68040_move16_ai_al, 0xfff8, 0xf610, 0x000, dasm68040},
192
+	{d68040_move16_al_ai, 0xfff8, 0xf618, 0x000, dasm68040},
193
+	{d68000_muls, 0xf1c0, 0xc1c0, 0xbff, dasmAll},
194
+	{d68000_mulu, 0xf1c0, 0xc0c0, 0xbff, dasmAll},
195
+	{d68020_mull, 0xffc0, 0x4c00, 0xbff, dasm68020},
196
+	{d68000_nbcd, 0xffc0, 0x4800, 0xbf8, dasmAll},
197
+	{d68000_neg_8, 0xffc0, 0x4400, 0xbf8, dasmAll},
198
+	{d68000_neg_16, 0xffc0, 0x4440, 0xbf8, dasmAll},
199
+	{d68000_neg_32, 0xffc0, 0x4480, 0xbf8, dasmAll},
200
+	{d68000_negx_8, 0xffc0, 0x4000, 0xbf8, dasmAll},
201
+	{d68000_negx_16, 0xffc0, 0x4040, 0xbf8, dasmAll},
202
+	{d68000_negx_32, 0xffc0, 0x4080, 0xbf8, dasmAll},
203
+	{d68000_nop, 0xffff, 0x4e71, 0x000, dasmAll},
204
+	{d68000_not_8, 0xffc0, 0x4600, 0xbf8, dasmAll},
205
+	{d68000_not_16, 0xffc0, 0x4640, 0xbf8, dasmAll},
206
+	{d68000_not_32, 0xffc0, 0x4680, 0xbf8, dasmAll},
207
+	{d68000_or_er_8, 0xf1c0, 0x8000, 0xbff, dasmAll},
208
+	{d68000_or_er_16, 0xf1c0, 0x8040, 0xbff, dasmAll},
209
+	{d68000_or_er_32, 0xf1c0, 0x8080, 0xbff, dasmAll},
210
+	{d68000_or_re_8, 0xf1c0, 0x8100, 0x3f8, dasmAll},
211
+	{d68000_or_re_16, 0xf1c0, 0x8140, 0x3f8, dasmAll},
212
+	{d68000_or_re_32, 0xf1c0, 0x8180, 0x3f8, dasmAll},
213
+	{d68000_ori_to_ccr, 0xffff, 0x003c, 0x000, dasmAll},
214
+	{d68000_ori_to_sr, 0xffff, 0x007c, 0x000, dasmAll},
215
+	{d68000_ori_8, 0xffc0, 0x0000, 0xbf8, dasmAll},
216
+	{d68000_ori_16, 0xffc0, 0x0040, 0xbf8, dasmAll},
217
+	{d68000_ori_32, 0xffc0, 0x0080, 0xbf8, dasmAll},
218
+	{d68020_pack_rr, 0xf1f8, 0x8140, 0x000, dasm68020 | dasm68030 | dasm68040},
219
+	{d68020_pack_mm, 0xf1f8, 0x8148, 0x000, dasm68020 | dasm68030 | dasm68040},
220
+	{d68000_pea, 0xffc0, 0x4840, 0x27b, dasmAll},
221
+	{d68040_pflush, 0xffe0, 0xf500, 0x000, dasm68040},
222
+	{d68000_reset, 0xffff, 0x4e70, 0x000, dasmAll},
223
+	{d68000_ror_s_8, 0xf1f8, 0xe018, 0x000, dasmAll},
224
+	{d68000_ror_s_16, 0xf1f8, 0xe058, 0x000, dasmAll},
225
+	{d68000_ror_s_32, 0xf1f8, 0xe098, 0x000, dasmAll},
226
+	{d68000_ror_r_8, 0xf1f8, 0xe038, 0x000, dasmAll},
227
+	{d68000_ror_r_16, 0xf1f8, 0xe078, 0x000, dasmAll},
228
+	{d68000_ror_r_32, 0xf1f8, 0xe0b8, 0x000, dasmAll},
229
+	{d68000_ror_ea, 0xffc0, 0xe6c0, 0x3f8, dasmAll},
230
+	{d68000_rol_s_8, 0xf1f8, 0xe118, 0x000, dasmAll},
231
+	{d68000_rol_s_16, 0xf1f8, 0xe158, 0x000, dasmAll},
232
+	{d68000_rol_s_32, 0xf1f8, 0xe198, 0x000, dasmAll},
233
+	{d68000_rol_r_8, 0xf1f8, 0xe138, 0x000, dasmAll},
234
+	{d68000_rol_r_16, 0xf1f8, 0xe178, 0x000, dasmAll},
235
+	{d68000_rol_r_32, 0xf1f8, 0xe1b8, 0x000, dasmAll},
236
+	{d68000_rol_ea, 0xffc0, 0xe7c0, 0x3f8, dasmAll},
237
+	{d68000_roxr_s_8, 0xf1f8, 0xe010, 0x000, dasmAll},
238
+	{d68000_roxr_s_16, 0xf1f8, 0xe050, 0x000, dasmAll},
239
+	{d68000_roxr_s_32, 0xf1f8, 0xe090, 0x000, dasmAll},
240
+	{d68000_roxr_r_8, 0xf1f8, 0xe030, 0x000, dasmAll},
241
+	{d68000_roxr_r_16, 0xf1f8, 0xe070, 0x000, dasmAll},
242
+	{d68000_roxr_r_32, 0xf1f8, 0xe0b0, 0x000, dasmAll},
243
+	{d68000_roxr_ea, 0xffc0, 0xe4c0, 0x3f8, dasmAll},
244
+	{d68000_roxl_s_8, 0xf1f8, 0xe110, 0x000, dasmAll},
245
+	{d68000_roxl_s_16, 0xf1f8, 0xe150, 0x000, dasmAll},
246
+	{d68000_roxl_s_32, 0xf1f8, 0xe190, 0x000, dasmAll},
247
+	{d68000_roxl_r_8, 0xf1f8, 0xe130, 0x000, dasmAll},
248
+	{d68000_roxl_r_16, 0xf1f8, 0xe170, 0x000, dasmAll},
249
+	{d68000_roxl_r_32, 0xf1f8, 0xe1b0, 0x000, dasmAll},
250
+	{d68000_roxl_ea, 0xffc0, 0xe5c0, 0x3f8, dasmAll},
251
+	{d68010_rtd, 0xffff, 0x4e74, 0x000, dasm68010 | dasm68020 | dasm68030 | dasm68040},
252
+	{d68000_rte, 0xffff, 0x4e73, 0x000, dasmAll},
253
+	{d68020_rtm, 0xfff0, 0x06c0, 0x000, dasm68020},
254
+	{d68000_rtr, 0xffff, 0x4e77, 0x000, dasmAll},
255
+	{d68000_rts, 0xffff, 0x4e75, 0x000, dasmAll},
256
+	{d68000_sbcd_rr, 0xf1f8, 0x8100, 0x000, dasmAll},
257
+	{d68000_sbcd_mm, 0xf1f8, 0x8108, 0x000, dasmAll},
258
+	{d68000_scc, 0xf0c0, 0x50c0, 0xbf8, dasmAll},
259
+	{d68000_stop, 0xffff, 0x4e72, 0x000, dasmAll},
260
+	{d68000_sub_er_8, 0xf1c0, 0x9000, 0xbff, dasmAll},
261
+	{d68000_sub_er_16, 0xf1c0, 0x9040, 0xfff, dasmAll},
262
+	{d68000_sub_er_32, 0xf1c0, 0x9080, 0xfff, dasmAll},
263
+	{d68000_sub_re_8, 0xf1c0, 0x9100, 0x3f8, dasmAll},
264
+	{d68000_sub_re_16, 0xf1c0, 0x9140, 0x3f8, dasmAll},
265
+	{d68000_sub_re_32, 0xf1c0, 0x9180, 0x3f8, dasmAll},
266
+	{d68000_suba_16, 0xf1c0, 0x90c0, 0xfff, dasmAll},
267
+	{d68000_suba_32, 0xf1c0, 0x91c0, 0xfff, dasmAll},
268
+	{d68000_subi_8, 0xffc0, 0x0400, 0xbf8, dasmAll},
269
+	{d68000_subi_16, 0xffc0, 0x0440, 0xbf8, dasmAll},
270
+	{d68000_subi_32, 0xffc0, 0x0480, 0xbf8, dasmAll},
271
+	{d68000_subq_8, 0xf1c0, 0x5100, 0xbf8, dasmAll},
272
+	{d68000_subq_16, 0xf1c0, 0x5140, 0xff8, dasmAll},
273
+	{d68000_subq_32, 0xf1c0, 0x5180, 0xff8, dasmAll},
274
+	{d68000_subx_rr_8, 0xf1f8, 0x9100, 0x000, dasmAll},
275
+	{d68000_subx_rr_16, 0xf1f8, 0x9140, 0x000, dasmAll},
276
+	{d68000_subx_rr_32, 0xf1f8, 0x9180, 0x000, dasmAll},
277
+	{d68000_subx_mm_8, 0xf1f8, 0x9108, 0x000, dasmAll},
278
+	{d68000_subx_mm_16, 0xf1f8, 0x9148, 0x000, dasmAll},
279
+	{d68000_subx_mm_32, 0xf1f8, 0x9188, 0x000, dasmAll},
280
+	{d68000_swap, 0xfff8, 0x4840, 0x000, dasmAll},
281
+	{d68000_tas, 0xffc0, 0x4ac0, 0xbf8, dasmAll},
282
+	{d68000_trap, 0xfff0, 0x4e40, 0x000, dasmAll},
283
+	{d68020_trapcc_0, 0xf0ff, 0x50fc, 0x000, dasm68020 | dasm68030 | dasm68040},
284
+	{d68020_trapcc_16, 0xf0ff, 0x50fa, 0x000, dasm68020 | dasm68030 | dasm68040},
285
+	{d68020_trapcc_32, 0xf0ff, 0x50fb, 0x000, dasm68020 | dasm68030 | dasm68040},
286
+	{d68000_trapv, 0xffff, 0x4e76, 0x000, dasmAll},
287
+	{d68000_tst_8, 0xffc0, 0x4a00, 0xbf8, dasmAll},
288
+	{d68020_tst_pcdi_8, 0xffff, 0x4a3a, 0x000, dasm68020 | dasm68030 | dasm68040},
289
+	{d68020_tst_pcix_8, 0xffff, 0x4a3b, 0x000, dasm68020 | dasm68030 | dasm68040},
290
+	{d68020_tst_i_8, 0xffff, 0x4a3c, 0x000, dasm68020 | dasm68030 | dasm68040},
291
+	{d68000_tst_16, 0xffc0, 0x4a40, 0xbf8, dasmAll},
292
+	{d68020_tst_a_16, 0xfff8, 0x4a48, 0x000, dasm68020 | dasm68030 | dasm68040},
293
+	{d68020_tst_pcdi_16, 0xffff, 0x4a7a, 0x000, dasm68020 | dasm68030 | dasm68040},
294
+	{d68020_tst_pcix_16, 0xffff, 0x4a7b, 0x000, dasm68020 | dasm68030 | dasm68040},
295
+	{d68020_tst_i_16, 0xffff, 0x4a7c, 0x000, dasm68020 | dasm68030 | dasm68040},
296
+	{d68000_tst_32, 0xffc0, 0x4a80, 0xbf8, dasmAll},
297
+	{d68020_tst_a_32, 0xfff8, 0x4a88, 0x000, dasm68020 | dasm68030 | dasm68040},
298
+	{d68020_tst_pcdi_32, 0xffff, 0x4aba, 0x000, dasm68020 | dasm68030 | dasm68040},
299
+	{d68020_tst_pcix_32, 0xffff, 0x4abb, 0x000, dasm68020 | dasm68030 | dasm68040},
300
+	{d68020_tst_i_32, 0xffff, 0x4abc, 0x000, dasm68020 | dasm68030 | dasm68040},
301
+	{d68000_unlk, 0xfff8, 0x4e58, 0x000, dasmAll},
302
+	{d68020_unpk_rr, 0xf1f8, 0x8180, 0x000, dasm68020 | dasm68030 | dasm68040},
303
+	{d68020_unpk_mm, 0xf1f8, 0x8188, 0x000, dasm68020 | dasm68030 | dasm68040},
304
+	{d68851_p000, 0xffc0, 0xf000, 0x000, dasmAll},
305
+	{d68851_pbcc16, 0xffc0, 0xf080, 0x000, dasmAll},
306
+	{d68851_pbcc32, 0xffc0, 0xf0c0, 0x000, dasmAll},
307
+	{d68851_pdbcc, 0xfff8, 0xf048, 0x000, dasmAll},
308
+	{d68851_p001, 0xffc0, 0xf040, 0x000, dasmAll},
309
+}