trunk/src/emu/cpu/spc700/spc700.c
r17633 | r17634 | |
663 | 663 | DST = OPER_8_IMM(cpustate); \ |
664 | 664 | if(!(SRC & BIT)) \ |
665 | 665 | { \ |
666 | | CLK(1); \ |
| 666 | CLK(2); \ |
667 | 667 | BRANCH(cpustate, DST); \ |
668 | 668 | } |
669 | 669 | |
r17633 | r17634 | |
674 | 674 | DST = OPER_8_IMM(cpustate); \ |
675 | 675 | if(SRC & BIT) \ |
676 | 676 | { \ |
677 | | CLK(1); \ |
| 677 | CLK(2); \ |
678 | 678 | BRANCH(cpustate, DST); \ |
679 | 679 | } |
680 | 680 | |
r17633 | r17634 | |
684 | 684 | DST = OPER_8_IMM(cpustate); \ |
685 | 685 | if(COND) \ |
686 | 686 | { \ |
687 | | CLK(1); \ |
| 687 | CLK(2); \ |
688 | 688 | BRANCH(cpustate, DST); \ |
689 | 689 | } |
690 | 690 | |
r17633 | r17634 | |
719 | 719 | DST = EA_IMM(cpustate); \ |
720 | 720 | if(SRC != REG_A) \ |
721 | 721 | { \ |
722 | | CLK(1); \ |
| 722 | CLK(2); \ |
723 | 723 | BRANCH(cpustate, read_8_IMM(DST)); \ |
724 | 724 | } |
725 | 725 | |
r17633 | r17634 | |
812 | 812 | DST = EA_IMM(cpustate); \ |
813 | 813 | if(REG_Y != 0) \ |
814 | 814 | { \ |
815 | | CLK(1); \ |
| 815 | CLK(2); \ |
816 | 816 | BRANCH(cpustate, read_8_IMM(DST)); \ |
817 | 817 | } |
818 | 818 | |
r17633 | r17634 | |
826 | 826 | DST = EA_IMM(cpustate); \ |
827 | 827 | if(SRC != 0) \ |
828 | 828 | { \ |
829 | | CLK(1); \ |
| 829 | CLK(2); \ |
830 | 830 | BRANCH(cpustate, read_8_IMM(DST)); \ |
831 | 831 | } |
832 | 832 | |
r17633 | r17634 | |
1369 | 1369 | case 0x01: OP_TCALL ( 8, 0 ); break; /* TCALL 0 */ |
1370 | 1370 | case 0x02: OP_SET ( 4, BIT_0 ); break; /* SET 0 */ |
1371 | 1371 | case 0x03: OP_BBS ( 5, BIT_0 ); break; /* BBS 0 */ |
| 1372 | |
1372 | 1373 | case 0x04: OP_OR ( 3, DP ); break; /* ORA dp */ |
1373 | 1374 | case 0x05: OP_OR ( 4, ABS ); break; /* ORA abs */ |
1374 | 1375 | case 0x06: OP_OR ( 3, XI ); break; /* ORA xi */ |
1375 | 1376 | case 0x07: OP_OR ( 6, DXI ); break; /* ORA dxi */ |
| 1377 | |
1376 | 1378 | case 0x08: OP_OR ( 2, IMM ); break; /* ORA imm */ |
1377 | 1379 | case 0x09: OP_ORM ( 6, DP , DP ); break; /* ORM dp dp */ |
1378 | 1380 | case 0x0a: OP_OR1 ( 5 ); break; /* OR1 bit */ |
1379 | 1381 | case 0x0b: OP_ASLM ( 4, DP ); break; /* ASL dp */ |
1380 | | case 0x0c: OP_ASLM ( 4, ABS ); break; /* ASL abs */ |
| 1382 | |
| 1383 | case 0x0c: OP_ASLM ( 5, ABS ); break; /* ASL abs */ |
1381 | 1384 | case 0x0d: OP_PHP ( 4 ); break; /* PHP */ |
1382 | 1385 | case 0x0e: OP_TSET1 ( 6, ABS ); break; /* TSET1 abs */ |
1383 | 1386 | case 0x0f: OP_BRK ( 8 ); break; /* BRK */ |
| 1387 | |
1384 | 1388 | case 0x10: OP_BCC ( 2, COND_PL() ); break; /* BPL */ |
1385 | 1389 | case 0x11: OP_TCALL ( 8, 1 ); break; /* TCALL 1 */ |
1386 | 1390 | case 0x12: OP_CLR ( 4, BIT_0 ); break; /* CLR 0 */ |
1387 | 1391 | case 0x13: OP_BBC ( 5, BIT_0 ); break; /* BBC 0 */ |
| 1392 | |
1388 | 1393 | case 0x14: OP_OR ( 4, DPX ); break; /* ORA dpx */ |
1389 | 1394 | case 0x15: OP_OR ( 5, ABX ); break; /* ORA abx */ |
1390 | 1395 | case 0x16: OP_OR ( 5, ABY ); break; /* ORA aby */ |
1391 | 1396 | case 0x17: OP_OR ( 6, DIY ); break; /* ORA diy */ |
1392 | | case 0x18: OP_ORM ( 6, IMM, DP ); break; /* ORM dp, imm */ |
1393 | | case 0x19: OP_ORM ( 6, YI, XI ); break; /* ORM xi, yi */ |
| 1397 | |
| 1398 | case 0x18: OP_ORM ( 5, IMM, DP ); break; /* ORM dp, imm */ |
| 1399 | case 0x19: OP_ORM ( 5, YI, XI ); break; /* ORM xi, yi */ |
1394 | 1400 | case 0x1a: OP_DECW ( 6 ); break; /* DECW di */ |
1395 | 1401 | case 0x1b: OP_ASLM ( 5, DPX ); break; /* ASL dpx */ |
| 1402 | |
1396 | 1403 | case 0x1c: OP_ASL ( 2 ); break; /* ASL a */ |
1397 | 1404 | case 0x1d: OP_DECR ( 2, REG_X ); break; /* DEC x */ |
1398 | 1405 | case 0x1e: OP_CMPR ( 4, REG_X, ABS ); break; /* CMP x, abs */ |
1399 | 1406 | case 0x1f: OP_JMP ( 6, AXI ); break; /* JMP axi */ |
| 1407 | |
1400 | 1408 | case 0x20: OP_CLRP ( 2 ); break; /* CLRP */ |
1401 | 1409 | case 0x21: OP_TCALL ( 8, 2 ); break; /* TCALL 2 */ |
1402 | 1410 | case 0x22: OP_SET ( 4, BIT_1 ); break; /* SET 1 */ |
1403 | 1411 | case 0x23: OP_BBS ( 5, BIT_1 ); break; /* BBS 1 */ |
| 1412 | |
1404 | 1413 | case 0x24: OP_AND ( 3, DP ); break; /* AND dp */ |
1405 | 1414 | case 0x25: OP_AND ( 4, ABS ); break; /* AND abs */ |
1406 | 1415 | case 0x26: OP_AND ( 3, XI ); break; /* AND xi */ |
1407 | 1416 | case 0x27: OP_AND ( 6, DXI ); break; /* AND dxi */ |
| 1417 | |
1408 | 1418 | case 0x28: OP_AND ( 2, IMM ); break; /* AND imm */ |
1409 | 1419 | case 0x29: OP_ANDM ( 6, DP , DP ); break; /* AND dp, dp */ |
1410 | 1420 | case 0x2a: OP_ORN1 ( 5 ); break; /* OR1 !bit */ |
1411 | 1421 | case 0x2b: OP_ROLM ( 4, DP ); break; /* ROL dp */ |
| 1422 | |
1412 | 1423 | case 0x2c: OP_ROLM ( 5, ABS ); break; /* ROL abs */ |
1413 | 1424 | case 0x2d: OP_PUSH ( 4, REG_A ); break; /* PUSH a */ |
1414 | 1425 | case 0x2e: OP_CBNE ( 5, DP ); break; /* CBNE dp */ |
1415 | 1426 | case 0x2f: OP_BRA ( 4 ); break; /* BRA */ |
| 1427 | |
1416 | 1428 | case 0x30: OP_BCC ( 2, COND_MI() ); break; /* BMI */ |
1417 | 1429 | case 0x31: OP_TCALL ( 8, 3 ); break; /* TCALL 3 */ |
1418 | 1430 | case 0x32: OP_CLR ( 4, BIT_1 ); break; /* CLR 1 */ |
1419 | 1431 | case 0x33: OP_BBC ( 5, BIT_1 ); break; /* BBC 1 */ |
| 1432 | |
1420 | 1433 | case 0x34: OP_AND ( 4, DPX ); break; /* AND dpx */ |
1421 | 1434 | case 0x35: OP_AND ( 5, ABX ); break; /* AND abx */ |
1422 | 1435 | case 0x36: OP_AND ( 5, ABY ); break; /* AND aby */ |
1423 | 1436 | case 0x37: OP_AND ( 6, DIY ); break; /* AND diy */ |
| 1437 | |
1424 | 1438 | case 0x38: OP_ANDM ( 5, IMM, DP ); break; /* AND dp, imm */ |
1425 | 1439 | case 0x39: OP_ANDM ( 5, YI , XI ); break; /* AND xi, yi */ |
1426 | 1440 | case 0x3a: OP_INCW ( 6 ); break; /* INCW di */ |
1427 | 1441 | case 0x3b: OP_ROLM ( 5, DPX ); break; /* ROL dpx */ |
| 1442 | |
1428 | 1443 | case 0x3c: OP_ROL ( 2 ); break; /* ROL acc */ |
1429 | 1444 | case 0x3d: OP_INCR ( 2, REG_X ); break; /* INC x */ |
1430 | 1445 | case 0x3e: OP_CMPR ( 3, REG_X, DP ); break; /* CMP x, dp */ |
1431 | 1446 | case 0x3f: OP_CALL ( 8 ); break; /* CALL abs */ |
| 1447 | |
1432 | 1448 | case 0x40: OP_SETP ( 2 ); break; /* RTI */ |
1433 | 1449 | case 0x41: OP_TCALL ( 8, 4 ); break; /* TCALL 4 */ |
1434 | 1450 | case 0x42: OP_SET ( 4, BIT_2 ); break; /* SET 2 */ |
1435 | 1451 | case 0x43: OP_BBS ( 5, BIT_2 ); break; /* BBS 2 */ |
| 1452 | |
1436 | 1453 | case 0x44: OP_EOR ( 3, DP ); break; /* EOR dp */ |
1437 | 1454 | case 0x45: OP_EOR ( 4, ABS ); break; /* EOR abs */ |
1438 | 1455 | case 0x46: OP_EOR ( 3, XI ); break; /* EOR xi */ |
1439 | 1456 | case 0x47: OP_EOR ( 6, DXI ); break; /* EOR dxi */ |
| 1457 | |
1440 | 1458 | case 0x48: OP_EOR ( 2, IMM ); break; /* EOR imm */ |
1441 | 1459 | case 0x49: OP_EORM ( 6, DP, DP ); break; /* EOR dp, dp */ |
1442 | | case 0x4a: OP_AND1 ( 5 ); break; /* AND1 bit */ |
| 1460 | case 0x4a: OP_AND1 ( 4 ); break; /* AND1 bit */ |
1443 | 1461 | case 0x4b: OP_LSRM ( 4, DP ); break; /* LSR dp */ |
| 1462 | |
1444 | 1463 | case 0x4c: OP_LSRM ( 5, ABS ); break; /* LSR abs */ |
1445 | 1464 | case 0x4d: OP_PUSH ( 4, REG_X ); break; /* PUSH x */ |
1446 | 1465 | case 0x4e: OP_TCLR1 ( 6, ABS ); break; /* TCLR1 abs */ |
1447 | 1466 | case 0x4f: OP_PCALL ( 6 ); break; /* PCALL */ |
| 1467 | |
1448 | 1468 | case 0x50: OP_BCC ( 2, COND_VC() ); break; /* BVC */ |
1449 | 1469 | case 0x51: OP_TCALL ( 8, 5 ); break; /* TCALL 5 */ |
1450 | 1470 | case 0x52: OP_CLR ( 4, BIT_2 ); break; /* CLR 2 */ |
1451 | 1471 | case 0x53: OP_BBC ( 5, BIT_2 ); break; /* BBC 2 */ |
| 1472 | |
1452 | 1473 | case 0x54: OP_EOR ( 4, DPX ); break; /* EOR dpx */ |
1453 | 1474 | case 0x55: OP_EOR ( 5, ABX ); break; /* EOR abx */ |
1454 | 1475 | case 0x56: OP_EOR ( 5, ABY ); break; /* EOR aby */ |
1455 | 1476 | case 0x57: OP_EOR ( 6, DIY ); break; /* EOR diy */ |
| 1477 | |
1456 | 1478 | case 0x58: OP_EORM ( 5, IMM, DP ); break; /* EOR dp, imm */ |
1457 | 1479 | case 0x59: OP_EORM ( 5, YI , XI ); break; /* EOR xi, yi */ |
1458 | 1480 | case 0x5a: OP_CMPW ( 4, DP ); break; /* CMPW dp */ |
1459 | 1481 | case 0x5b: OP_LSRM ( 5, DPX ); break; /* LSR dpx */ |
| 1482 | |
1460 | 1483 | case 0x5c: OP_LSR ( 2 ); break; /* LSR */ |
1461 | 1484 | case 0x5d: OP_MOVRR ( 2, REG_A, REG_X ); break; /* MOV X, A */ |
1462 | 1485 | case 0x5e: OP_CMPR ( 4, REG_Y, ABS ); break; /* CMP Y, abs */ |
1463 | 1486 | case 0x5f: OP_JMP ( 3, ABS ); break; /* JMP abs */ |
| 1487 | |
1464 | 1488 | case 0x60: OP_CLRC ( 2 ); break; /* CLRC */ |
1465 | 1489 | case 0x61: OP_TCALL ( 8, 6 ); break; /* TCALL 6 */ |
1466 | 1490 | case 0x62: OP_SET ( 4, BIT_3 ); break; /* SET 3 */ |
1467 | 1491 | case 0x63: OP_BBS ( 5, BIT_3 ); break; /* BBS 3 */ |
| 1492 | |
1468 | 1493 | case 0x64: OP_CMPR ( 3, REG_A, DP ); break; /* CMP A, dp */ |
1469 | 1494 | case 0x65: OP_CMPR ( 4, REG_A, ABS ); break; /* CMP A, abs */ |
1470 | 1495 | case 0x66: OP_CMPR ( 3, REG_A, XI ); break; /* CMP A, xi */ |
1471 | 1496 | case 0x67: OP_CMPR ( 6, REG_A, DXI ); break; /* CMP A, dxi */ |
| 1497 | |
1472 | 1498 | case 0x68: OP_CMPR ( 2, REG_A, IMM ); break; /* CMP A, imm */ |
1473 | 1499 | case 0x69: OP_CMPM ( 6, DP, DP ); break; /* CMP dp, dp */ |
1474 | 1500 | case 0x6a: OP_ANDN1 ( 4 ); break; /* AND1 !bit */ |
1475 | 1501 | case 0x6b: OP_RORM ( 4, DP ); break; /* ROR dp */ |
| 1502 | |
1476 | 1503 | case 0x6c: OP_RORM ( 5, ABS ); break; /* ROR abs */ |
1477 | 1504 | case 0x6d: OP_PUSH ( 4, REG_Y ); break; /* PUSH Y */ |
1478 | 1505 | case 0x6e: OP_DBNZM ( 5 ); break; /* DBNZ dp */ |
1479 | 1506 | case 0x6f: OP_RET ( 5 ); break; /* RET */ |
| 1507 | |
1480 | 1508 | case 0x70: OP_BCC ( 2, COND_VS() ); break; /* BVS */ |
1481 | 1509 | case 0x71: OP_TCALL ( 8, 7 ); break; /* TCALL 7 */ |
1482 | 1510 | case 0x72: OP_CLR ( 4, BIT_3 ); break; /* CLR 3 */ |
r17633 | r17634 | |
1485 | 1513 | case 0x75: OP_CMPR ( 5, REG_A, ABX ); break; /* CMP A, abx */ |
1486 | 1514 | case 0x76: OP_CMPR ( 5, REG_A, ABY ); break; /* CMP A, aby */ |
1487 | 1515 | case 0x77: OP_CMPR ( 6, REG_A, DIY ); break; /* CMP A, diy */ |
| 1516 | |
1488 | 1517 | case 0x78: OP_CMPM ( 5, IMM, DP ); break; /* CMP dp, imm */ |
1489 | 1518 | case 0x79: OP_CMPM ( 5, YI, XI ); break; /* CMP xi, yi */ |
1490 | 1519 | case 0x7a: OP_ADDW ( 5 ); break; /* ADDW di */ |
1491 | 1520 | case 0x7b: OP_RORM ( 5, DPX ); break; /* ROR dpx */ |
| 1521 | |
1492 | 1522 | case 0x7c: OP_ROR ( 2 ); break; /* ROR A */ |
1493 | 1523 | case 0x7d: OP_MOVRR ( 2, REG_X, REG_A ); break; /* MOV A, X */ |
1494 | 1524 | case 0x7e: OP_CMPR ( 3, REG_Y, DP ); break; /* CMP Y, dp */ |
1495 | 1525 | case 0x7f: OP_RETI ( 6 ); break; /* RETI */ |
| 1526 | |
1496 | 1527 | case 0x80: OP_SETC ( 2 ); break; /* SETC */ |
1497 | 1528 | case 0x81: OP_TCALL ( 8, 8 ); break; /* TCALL 8 */ |
1498 | 1529 | case 0x82: OP_SET ( 4, BIT_4 ); break; /* SET 4 */ |
1499 | 1530 | case 0x83: OP_BBS ( 5, BIT_4 ); break; /* BBS 4 */ |
| 1531 | |
1500 | 1532 | case 0x84: OP_ADC ( 3, DP ); break; /* ADC dp */ |
1501 | 1533 | case 0x85: OP_ADC ( 4, ABS ); break; /* ADC abs */ |
1502 | 1534 | case 0x86: OP_ADC ( 3, XI ); break; /* ADC xi */ |
1503 | 1535 | case 0x87: OP_ADC ( 6, DXI ); break; /* ADC dxi */ |
| 1536 | |
1504 | 1537 | case 0x88: OP_ADC ( 2, IMM ); break; /* ADC imm */ |
1505 | 1538 | case 0x89: OP_ADCM ( 6, DP, DP ); break; /* ADC dp, dp */ |
1506 | | case 0x8a: OP_EOR1 ( 4 ); break; /* EOR1 bit */ |
| 1539 | case 0x8a: OP_EOR1 ( 5 ); break; /* EOR1 bit */ |
1507 | 1540 | case 0x8b: OP_DECM ( 4, DP ); break; /* DEC dp */ |
| 1541 | |
1508 | 1542 | case 0x8c: OP_DECM ( 5, ABS ); break; /* DEC abs */ |
1509 | 1543 | case 0x8d: OP_MOVMR ( 2, IMM, REG_Y ); break; /* MOV Y, imm */ |
1510 | 1544 | case 0x8e: OP_PLP ( 4 ); break; /* POP PSW */ |
1511 | 1545 | case 0x8f: OP_MOVMM ( 5, IMM, DP ); break; /* MOV dp, imm */ |
| 1546 | |
1512 | 1547 | case 0x90: OP_BCC ( 2, COND_CC() ); break; /* BCC */ |
1513 | 1548 | case 0x91: OP_TCALL ( 8, 9 ); break; /* TCALL 9 */ |
1514 | 1549 | case 0x92: OP_CLR ( 4, BIT_4 ); break; /* CLR 4 */ |
1515 | 1550 | case 0x93: OP_BBC ( 5, BIT_4 ); break; /* BBC 4 */ |
| 1551 | |
1516 | 1552 | case 0x94: OP_ADC ( 4, DPX ); break; /* ADC dpx */ |
1517 | 1553 | case 0x95: OP_ADC ( 5, ABX ); break; /* ADC abx */ |
1518 | 1554 | case 0x96: OP_ADC ( 5, ABY ); break; /* ADC aby */ |
1519 | 1555 | case 0x97: OP_ADC ( 6, DIY ); break; /* ADC diy */ |
| 1556 | |
1520 | 1557 | case 0x98: OP_ADCM ( 5, IMM, DP ); break; /* ADC dp, imm */ |
1521 | 1558 | case 0x99: OP_ADCM ( 5, YI, XI ); break; /* ADC xi, yi */ |
1522 | 1559 | case 0x9a: OP_SUBW ( 5 ); break; /* SUBW dp */ |
1523 | 1560 | case 0x9b: OP_DECM ( 5, DPX ); break; /* DEC dpx */ |
| 1561 | |
1524 | 1562 | case 0x9c: OP_DECR ( 2, REG_A ); break; /* DEC A */ |
1525 | 1563 | case 0x9d: OP_MOVSX ( 2 ); break; /* MOV X, SP */ |
1526 | 1564 | case 0x9e: OP_DIV (12 ); break; /* DIV YA, X */ |
1527 | 1565 | case 0x9f: OP_XCN ( 5 ); break; /* XCN A */ |
| 1566 | |
1528 | 1567 | case 0xa0: OP_EI ( 3 ); break; /* EI */ |
1529 | 1568 | case 0xa1: OP_TCALL ( 8, 10 ); break; /* TCALL 10 */ |
1530 | 1569 | case 0xa2: OP_SET ( 4, BIT_5 ); break; /* SET 5 */ |
1531 | 1570 | case 0xa3: OP_BBS ( 5, BIT_5 ); break; /* BBS 5 */ |
| 1571 | |
1532 | 1572 | case 0xa4: OP_SBC ( 3, DP ); break; /* SBC dp */ |
1533 | 1573 | case 0xa5: OP_SBC ( 4, ABS ); break; /* SBC abs */ |
1534 | 1574 | case 0xa6: OP_SBC ( 3, XI ); break; /* SBC xi */ |
1535 | 1575 | case 0xa7: OP_SBC ( 6, DXI ); break; /* SBC dxi */ |
| 1576 | |
1536 | 1577 | case 0xa8: OP_SBC ( 2, IMM ); break; /* SBC imm */ |
1537 | 1578 | case 0xa9: OP_SBCM ( 6, DP, DP ); break; /* SBC dp, dp */ |
1538 | 1579 | case 0xaa: OP_MOV1C ( 4 ); break; /* MOV1 bit->C */ |
1539 | 1580 | case 0xab: OP_INCM ( 4, DP ); break; /* INC dp */ |
| 1581 | |
1540 | 1582 | case 0xac: OP_INCM ( 5, ABS ); break; /* INC abs */ |
1541 | 1583 | case 0xad: OP_CMPR ( 2, REG_Y, IMM ); break; /* CMP Y, imm */ |
1542 | 1584 | case 0xae: OP_PULL ( 4, REG_A ); break; /* POP A */ |
1543 | 1585 | case 0xaf: OP_MOVRM ( 4, REG_A, XII ); break; /* MOV xii, A */ |
| 1586 | |
1544 | 1587 | case 0xb0: OP_BCC ( 2, COND_CS() ); break; /* BCS */ |
1545 | 1588 | case 0xb1: OP_TCALL ( 8, 11 ); break; /* TCALL 11 */ |
1546 | 1589 | case 0xb2: OP_CLR ( 4, BIT_5 ); break; /* CLR 5 */ |
1547 | 1590 | case 0xb3: OP_BBC ( 5, BIT_5 ); break; /* BBC 5 */ |
| 1591 | |
1548 | 1592 | case 0xb4: OP_SBC ( 4, DPX ); break; /* SBC dpx */ |
1549 | 1593 | case 0xb5: OP_SBC ( 5, ABX ); break; /* SBC abx */ |
1550 | 1594 | case 0xb6: OP_SBC ( 5, ABY ); break; /* SBC aby */ |
1551 | 1595 | case 0xb7: OP_SBC ( 6, DIY ); break; /* SBC diy */ |
| 1596 | |
1552 | 1597 | case 0xb8: OP_SBCM ( 5, IMM, DP ); break; /* SBC dp, imm */ |
1553 | 1598 | case 0xb9: OP_SBCM ( 5, YI, XI ); break; /* SBC xi, yi */ |
1554 | 1599 | case 0xba: OP_MOVWMR( 5 ); break; /* MOVW YA, dp */ |
1555 | 1600 | case 0xbb: OP_INCM ( 5, DPX ); break; /* INC dpx */ |
| 1601 | |
1556 | 1602 | case 0xbc: OP_INCR ( 2, REG_A ); break; /* INC A */ |
1557 | 1603 | case 0xbd: OP_MOVXS ( 2 ); break; /* MOV SP, X */ |
1558 | 1604 | case 0xbe: OP_DAS ( 3 ); break; /* DAS A */ |
1559 | 1605 | case 0xbf: OP_MOVMR ( 4, XII, REG_A ); break; /* MOV A, xii */ |
| 1606 | |
1560 | 1607 | case 0xc0: OP_DI ( 3 ); break; /* DI */ |
1561 | 1608 | case 0xc1: OP_TCALL ( 8, 12 ); break; /* TCALL 12 */ |
1562 | 1609 | case 0xc2: OP_SET ( 4, BIT_6 ); break; /* SET 6 */ |
r17633 | r17634 | |
1565 | 1612 | case 0xc5: OP_MOVRM ( 5, REG_A, ABS ); break; /* MOV abs, A */ |
1566 | 1613 | case 0xc6: OP_MOVRM ( 4, REG_A, XI ); break; /* MOV xi, A */ |
1567 | 1614 | case 0xc7: OP_MOVRM ( 7, REG_A, DXI ); break; /* MOV dxi, A */ |
| 1615 | |
1568 | 1616 | case 0xc8: OP_CMPR ( 2, REG_X, IMM ); break; /* CMP X, imm */ |
1569 | 1617 | case 0xc9: OP_MOVRM ( 5, REG_X, ABS ); break; /* MOV abs, X */ |
1570 | 1618 | case 0xca: OP_MOV1M ( 6 ); break; /* MOV1 C->bit */ |
1571 | 1619 | case 0xcb: OP_MOVRM ( 4, REG_Y, DP ); break; /* MOV dp, Y */ |
| 1620 | |
1572 | 1621 | case 0xcc: OP_MOVRM ( 5, REG_Y, ABS ); break; /* MOV abs, Y */ |
1573 | 1622 | case 0xcd: OP_MOVMR ( 2, IMM, REG_X ); break; /* MOV X, imm */ |
1574 | 1623 | case 0xce: OP_PULL ( 4, REG_X ); break; /* POP X */ |
1575 | 1624 | case 0xcf: OP_MUL ( 9 ); break; /* MUL YA */ |
| 1625 | |
1576 | 1626 | case 0xd0: OP_BCC ( 2, COND_NE() ); break; /* BNE */ |
1577 | 1627 | case 0xd1: OP_TCALL ( 8, 13 ); break; /* TCALL 13 */ |
1578 | 1628 | case 0xd2: OP_CLR ( 4, BIT_6 ); break; /* CLR 6 */ |
1579 | 1629 | case 0xd3: OP_BBC ( 5, BIT_6 ); break; /* BBC 6 */ |
| 1630 | |
1580 | 1631 | case 0xd4: OP_MOVRM ( 5, REG_A, DPX ); break; /* MOV dpx, A */ |
1581 | 1632 | case 0xd5: OP_MOVRM ( 6, REG_A, ABX ); break; /* MOV abx, A */ |
1582 | 1633 | case 0xd6: OP_MOVRM ( 6, REG_A, ABY ); break; /* MOV aby, A */ |
1583 | 1634 | case 0xd7: OP_MOVRM ( 7, REG_A, DIY ); break; /* MOV diy, A */ |
| 1635 | |
1584 | 1636 | case 0xd8: OP_MOVRM ( 4, REG_X, DP ); break; /* MOV dp, X */ |
1585 | 1637 | case 0xd9: OP_MOVRM ( 5, REG_X, DPY ); break; /* MOV dpy, X */ |
1586 | 1638 | case 0xda: OP_MOVWRM( 5 ); break; /* MOVW dp, YA */ |
1587 | 1639 | case 0xdb: OP_MOVRM ( 5, REG_Y, DPX ); break; /* MOV dpx, Y */ |
| 1640 | |
1588 | 1641 | case 0xdc: OP_DECR ( 2, REG_Y ); break; /* DEC Y */ |
1589 | 1642 | case 0xdd: OP_MOVRR ( 2, REG_Y, REG_A ); break; /* MOV A, Y */ |
1590 | 1643 | case 0xde: OP_CBNE ( 6, DPX ); break; /* CBNE dpx */ |
1591 | 1644 | case 0xdf: OP_DAA ( 3 ); break; /* DAA */ |
| 1645 | |
1592 | 1646 | case 0xe0: OP_CLRV ( 2 ); break; /* CLRV */ |
1593 | 1647 | case 0xe1: OP_TCALL ( 8, 14 ); break; /* TCALL 14 */ |
1594 | 1648 | case 0xe2: OP_SET ( 4, BIT_7 ); break; /* SET 7 */ |
1595 | 1649 | case 0xe3: OP_BBS ( 5, BIT_7 ); break; /* BBS 7 */ |
| 1650 | |
1596 | 1651 | case 0xe4: OP_MOVMR ( 3, DP, REG_A ); break; /* MOV A, dp */ |
1597 | 1652 | case 0xe5: OP_MOVMR ( 4, ABS, REG_A ); break; /* MOV A, abs */ |
1598 | 1653 | case 0xe6: OP_MOVMR ( 3, XI, REG_A ); break; /* MOV A, xi */ |
1599 | 1654 | case 0xe7: OP_MOVMR ( 6, DXI, REG_A ); break; /* MOV A, dxi */ |
| 1655 | |
1600 | 1656 | case 0xe8: OP_MOVMR ( 2, IMM, REG_A ); break; /* CMP A, imm */ |
1601 | 1657 | case 0xe9: OP_MOVMR ( 4, ABS, REG_X ); break; /* MOV X, abs */ |
1602 | 1658 | case 0xea: OP_NOT1 ( 5 ); break; /* NOT1 */ |
1603 | 1659 | case 0xeb: OP_MOVMR ( 3, DP, REG_Y ); break; /* MOV Y, dp */ |
| 1660 | |
1604 | 1661 | case 0xec: OP_MOVMR ( 4, ABS, REG_Y ); break; /* MOV Y, abs */ |
1605 | 1662 | case 0xed: OP_NOTC ( 3 ); break; /* NOTC */ |
1606 | 1663 | case 0xee: OP_PULL ( 4, REG_Y ); break; /* POP Y */ |
1607 | | case 0xef: OP_SLEEP ( 3 ); break; /* SLEEP */ |
| 1664 | case 0xef: OP_SLEEP ( 1 ); break; /* SLEEP */ |
| 1665 | |
1608 | 1666 | case 0xf0: OP_BCC ( 2, COND_EQ() ); break; /* BEQ */ |
1609 | 1667 | case 0xf1: OP_TCALL ( 8, 15 ); break; /* TCALL1 5 */ |
1610 | 1668 | case 0xf2: OP_CLR ( 4, BIT_7 ); break; /* CLR 7 */ |
1611 | 1669 | case 0xf3: OP_BBC ( 5, BIT_7 ); break; /* BBC 7 */ |
| 1670 | |
1612 | 1671 | case 0xf4: OP_MOVMR ( 4, DPX, REG_A ); break; /* MOV A, dpx */ |
1613 | 1672 | case 0xf5: OP_MOVMR ( 5, ABX, REG_A ); break; /* MOV A, abx */ |
1614 | 1673 | case 0xf6: OP_MOVMR ( 5, ABY, REG_A ); break; /* MOV A, aby */ |
1615 | 1674 | case 0xf7: OP_MOVMR ( 6, DIY, REG_A ); break; /* MOV A, diy */ |
| 1675 | |
1616 | 1676 | case 0xf8: OP_MOVMR ( 3, DP, REG_X ); break; /* MOV X, dp */ |
1617 | 1677 | case 0xf9: OP_MOVMR ( 4, DPY, REG_X ); break; /* MOV X, dpy */ |
1618 | 1678 | case 0xfa: OP_MOVMM ( 5, DP, DP ); break; /* MOV dp, dp */ |
r17633 | r17634 | |
1620 | 1680 | case 0xfc: OP_INCR ( 2, REG_Y ); break; /* INC Y */ |
1621 | 1681 | case 0xfd: OP_MOVRR ( 2, REG_A, REG_Y ); break; /* MOV Y, A */ |
1622 | 1682 | case 0xfe: OP_DBNZR ( 4 ); break; /* DBNZ Y */ |
1623 | | case 0xff: OP_STOP ( 3 ); break; /* STOP */ |
| 1683 | case 0xff: OP_STOP ( 1 ); break; /* STOP */ |
1624 | 1684 | } |
1625 | 1685 | } |
1626 | 1686 | } |