trunk/src/emu/cpu/pps4/pps4.c
| r242179 | r242180 | |
| 33 | 33 | #include "pps4.h" |
| 34 | 34 | |
| 35 | 35 | |
| 36 | | #define VERBOSE 0 //!< set to 1 to log certain instruction conditions |
| 36 | #define VERBOSE 1 //!< set to 1 to log certain instruction conditions |
| 37 | 37 | |
| 38 | 38 | #if VERBOSE |
| 39 | 39 | #define LOG(x) logerror x |
| r242179 | r242180 | |
| 81 | 81 | |
| 82 | 82 | /** |
| 83 | 83 | * @brief pps4_device::ROP Read the next opcode (instruction) |
| 84 | | * @return m_I |
| 84 | * The previous opcode mask (upper four bits) is set from the |
| 85 | * previous instruction. The new opcode is fetched and the |
| 86 | * program counter is incremented. The icount is decremented. |
| 87 | * @return m_I the next opcode |
| 85 | 88 | */ |
| 86 | 89 | inline UINT8 pps4_device::ROP() |
| 87 | 90 | { |
| r242179 | r242180 | |
| 93 | 96 | } |
| 94 | 97 | |
| 95 | 98 | /** |
| 96 | | * @brief pps4_device::ARG Read the next argument (instrunction 2) |
| 97 | | * @return m_I2 |
| 99 | * @brief pps4_device::ARG Read the next argument (instruction 2) |
| 100 | * The byte at program counter is read from the unencrypted |
| 101 | * direct space. The program count is incremented and the |
| 102 | * icount is decremented. |
| 103 | * @return m_I2 the next argument |
| 98 | 104 | */ |
| 99 | 105 | inline UINT8 pps4_device::ARG() |
| 100 | 106 | { |
| r242179 | r242180 | |
| 141 | 147 | void pps4_device::iAD() |
| 142 | 148 | { |
| 143 | 149 | m_A = m_A + M(); |
| 144 | | m_C = m_A >> 4; |
| 150 | m_C = (m_A >> 4) & 1; |
| 145 | 151 | m_A = m_A & 15; |
| 146 | 152 | } |
| 147 | 153 | |
| r242179 | r242180 | |
| 183 | 189 | { |
| 184 | 190 | m_A = m_A + M(); |
| 185 | 191 | m_C = m_A >> 4; |
| 192 | m_Skip = m_C; |
| 186 | 193 | m_A = m_A & 15; |
| 187 | | m_P = (m_P + m_C) & 0xFFF; |
| 188 | 194 | } |
| 189 | 195 | |
| 190 | 196 | /** |
| r242179 | r242180 | |
| 205 | 211 | { |
| 206 | 212 | m_A = m_A + M() + m_C; |
| 207 | 213 | m_C = m_A >> 4; |
| 214 | m_Skip = m_C; |
| 208 | 215 | m_A = m_A & 15; |
| 209 | | m_P = (m_P + m_C) & 0xFFF; |
| 210 | 216 | } |
| 211 | 217 | |
| 212 | 218 | /** |
| 213 | | * @brief pps4_device::iAND Logical AND |
| 214 | | * OPCODE cycles mnemonic |
| 215 | | * ----------------------------- |
| 216 | | * 0000 1101 1 cyc AND |
| 217 | | * |
| 218 | | * Symbolic equation |
| 219 | | * ----------------------------- |
| 220 | | * A <- A & M |
| 221 | | * |
| 222 | | * The result of logical AND of accumulator and |
| 223 | | * 4-bit contents of RAM currently addressed by |
| 224 | | * B register replaces contents of accumulator. |
| 225 | | */ |
| 226 | | void pps4_device::iAND() |
| 227 | | { |
| 228 | | m_A = m_A & M(); |
| 229 | | } |
| 230 | | |
| 231 | | /** |
| 232 | 219 | * @brief pps4_device::iADI Add immediate |
| 233 | 220 | * OPCODE cycles mnemonic |
| 234 | 221 | * ----------------------------- |
| r242179 | r242180 | |
| 253 | 240 | { |
| 254 | 241 | const UINT8 imm = ~m_I & 15; |
| 255 | 242 | m_A = m_A + imm; |
| 256 | | m_P = m_P + (m_A > 15) ? 1 : 0; |
| 243 | m_Skip = (m_A >> 4) & 1; |
| 257 | 244 | m_A = m_A & 15; |
| 258 | | m_P = m_P & 0xFFF; |
| 259 | 245 | } |
| 260 | 246 | |
| 261 | 247 | /** |
| r242179 | r242180 | |
| 266 | 252 | * |
| 267 | 253 | * Symbolic equation |
| 268 | 254 | * ----------------------------- |
| 269 | | * A <- A + 1010b |
| 255 | * A <- A + 1010 |
| 270 | 256 | * |
| 271 | 257 | * Decimal correction of accumulator. |
| 272 | 258 | * Binary 1010 is added to the contents of the accumulator. |
| r242179 | r242180 | |
| 279 | 265 | } |
| 280 | 266 | |
| 281 | 267 | /** |
| 268 | * @brief pps4_device::iAND Logical AND |
| 269 | * OPCODE cycles mnemonic |
| 270 | * ----------------------------- |
| 271 | * 0000 1101 1 cyc AND |
| 272 | * |
| 273 | * Symbolic equation |
| 274 | * ----------------------------- |
| 275 | * A <- A & M |
| 276 | * |
| 277 | * The result of logical AND of accumulator and |
| 278 | * 4-bit contents of RAM currently addressed by |
| 279 | * B register replaces contents of accumulator. |
| 280 | */ |
| 281 | void pps4_device::iAND() |
| 282 | { |
| 283 | m_A = m_A & M(); |
| 284 | } |
| 285 | |
| 286 | /** |
| 282 | 287 | * @brief pps4_device::iOR Logical OR |
| 283 | 288 | * OPCODE cycles mnemonic |
| 284 | 289 | * ----------------------------- |
| r242179 | r242180 | |
| 288 | 293 | * ----------------------------- |
| 289 | 294 | * A <- A | M |
| 290 | 295 | * |
| 291 | | * The result of logical OIR of accumulator and |
| 296 | * The result of logical OR of accumulator and |
| 292 | 297 | * 4-bit contents of RAM currently addressed by |
| 293 | 298 | * B register replaces contents of accumulator. |
| 294 | 299 | */ |
| r242179 | r242180 | |
| 441 | 446 | * @brief pps4_device::iLD Load accumulator from memory |
| 442 | 447 | * OPCODE cycles mnemonic |
| 443 | 448 | * ----------------------------- |
| 444 | | * 0011 0xxx 1 cyc LDx |
| 449 | * 0011 0xxx 1 cyc LD x |
| 445 | 450 | * |
| 446 | 451 | * Symbolic equation |
| 447 | 452 | * ----------------------------- |
| r242179 | r242180 | |
| 467 | 472 | * @brief pps4_device::iEX Exchange accumulator and memory |
| 468 | 473 | * OPCODE cycles mnemonic |
| 469 | 474 | * ----------------------------- |
| 470 | | * 0011 1xxx 1 cyc EXx |
| 475 | * 0011 1xxx 1 cyc EX x |
| 471 | 476 | * |
| 472 | 477 | * Symbolic equation |
| 473 | 478 | * ----------------------------- |
| r242179 | r242180 | |
| 519 | 524 | if (0 == bl) { |
| 520 | 525 | // decrement BL wraps to 1111b |
| 521 | 526 | bl = 15; |
| 522 | | m_P = (m_P + 1) & 0xFFF; |
| 527 | m_Skip = 1; |
| 523 | 528 | } else { |
| 524 | 529 | // decrement BL |
| 525 | 530 | bl = bl - 1; |
| r242179 | r242180 | |
| 550 | 555 | { |
| 551 | 556 | // previous LDI instruction? |
| 552 | 557 | if (0x70 == m_Ip) { |
| 553 | | LOG(("%s: skip prev:%02x\n", __FUNCTION__, m_Ip)); |
| 558 | LOG(("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I)); |
| 554 | 559 | return; |
| 555 | 560 | } |
| 556 | 561 | m_A = ~m_I & 15; |
| r242179 | r242180 | |
| 686 | 691 | void pps4_device::iXBMX() |
| 687 | 692 | { |
| 688 | 693 | // swap X and BM |
| 689 | | UINT8 bm = (m_B >> 4) & 15; |
| 694 | const UINT8 bm = (m_B >> 4) & 15; |
| 690 | 695 | m_B = (m_B & ~(15 << 4)) | (m_X << 4); |
| 691 | 696 | m_X = bm; |
| 692 | 697 | } |
| r242179 | r242180 | |
| 764 | 769 | * @brief pps4_device::iLB |
| 765 | 770 | * OPCODE cycles mnemonic |
| 766 | 771 | * ----------------------------- |
| 767 | | * 1100 0000 2 cyc LB |
| 772 | * 1100 xxxx 2 cyc LB x |
| 768 | 773 | * |
| 769 | 774 | * Symbolic equation |
| 770 | 775 | * ----------------------------- |
| r242179 | r242180 | |
| 797 | 802 | { |
| 798 | 803 | // previous LB or LBL instruction? |
| 799 | 804 | if (0xc0 == m_Ip|| 0x00 == m_Ip) { |
| 800 | | LOG(("%s: skip prev:%02X\n", __FUNCTION__, m_Ip)); |
| 805 | LOG(("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I)); |
| 801 | 806 | return; |
| 802 | 807 | } |
| 803 | 808 | m_SB = m_SA; |
| 804 | 809 | m_SA = (m_P + 1) & 0xFFF; |
| 805 | | m_P = (3 << 8) | (m_I & 15); |
| 810 | m_P = (3 << 6) | (m_I & 15); |
| 806 | 811 | m_B = ~ARG() & 255; |
| 807 | 812 | m_P = m_SA; |
| 808 | 813 | // swap SA and SB |
| r242179 | r242180 | |
| 838 | 843 | { |
| 839 | 844 | // previous LB or LBL instruction? |
| 840 | 845 | if (0xc0 == m_Ip || 0x00 == m_Ip) { |
| 841 | | LOG(("%s: skip prev:%02X\n", __FUNCTION__, m_Ip)); |
| 846 | LOG(("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I)); |
| 842 | 847 | return; |
| 843 | 848 | } |
| 844 | 849 | m_B = ~ARG() & 255; |
| r242179 | r242180 | |
| 865 | 870 | bl = (bl + 1) & 15; |
| 866 | 871 | if (0 == bl) { |
| 867 | 872 | LOG(("%s: skip BL=%x\n", __FUNCTION__, bl)); |
| 868 | | m_P = (m_P + 1) & 0xFFF; |
| 873 | m_Skip = 1; |
| 869 | 874 | } |
| 870 | 875 | m_B = (m_B & ~15) | bl; |
| 871 | 876 | } |
| r242179 | r242180 | |
| 874 | 879 | * @brief pps4_device::iDECB |
| 875 | 880 | * OPCODE cycles mnemonic |
| 876 | 881 | * ----------------------------- |
| 877 | | * 0001 1111 1 cyc DECB |
| 882 | * 0001 1111 1 cyc DECq |
| 878 | 883 | * |
| 879 | 884 | * Symbolic equation |
| 880 | 885 | * ----------------------------- |
| r242179 | r242180 | |
| 891 | 896 | bl = (bl - 1) & 15; |
| 892 | 897 | if (15 == bl) { |
| 893 | 898 | LOG(("%s: skip BL=%x\n", __FUNCTION__, bl)); |
| 894 | | m_P = (m_P + 1) & 0xFFF; |
| 899 | m_Skip = 1; |
| 895 | 900 | } |
| 896 | 901 | m_B = (m_B & ~15) | bl; |
| 897 | 902 | } |
| r242179 | r242180 | |
| 922 | 927 | * @brief pps4_device::iTM Transfer and mark indirect |
| 923 | 928 | * OPCODE cycles mnemonic |
| 924 | 929 | * ----------------------------- |
| 925 | | * 11xx xxxx 2 cyc TM * |
| 930 | * 11xx xxxx 2 cyc TM x |
| 926 | 931 | * yyyy yyyy from page 3 |
| 927 | 932 | * |
| 928 | 933 | * Symbolic equation |
| r242179 | r242180 | |
| 949 | 954 | m_SA = m_P; |
| 950 | 955 | m_P = 3 << 6; |
| 951 | 956 | m_P = m_P | (m_I & 63); |
| 952 | | ARG(); |
| 953 | | m_P = 1 << 8; |
| 954 | | m_P |= m_I2; |
| 957 | m_I2 = ARG(); |
| 958 | m_P = (1 << 8) | m_I2; |
| 955 | 959 | } |
| 956 | 960 | |
| 957 | 961 | /** |
| 958 | 962 | * @brief pps4_device::iTL Transfer long |
| 959 | 963 | * OPCODE cycles mnemonic |
| 960 | 964 | * ----------------------------- |
| 961 | | * 0101 xxxx 2 cyc TL * |
| 965 | * 0101 xxxx 2 cyc TL xyy |
| 962 | 966 | * yyyy yyyy |
| 963 | 967 | * |
| 964 | 968 | * Symbolic equation |
| r242179 | r242180 | |
| 973 | 977 | */ |
| 974 | 978 | void pps4_device::iTL() |
| 975 | 979 | { |
| 976 | | ARG(); |
| 980 | m_I2 = ARG(); |
| 977 | 981 | m_P = (m_I & 15) << 8; |
| 978 | 982 | m_P = m_P | m_I2; |
| 979 | 983 | } |
| r242179 | r242180 | |
| 982 | 986 | * @brief pps4_device::iTML Transfer and mark long |
| 983 | 987 | * OPCODE cycles mnemonic |
| 984 | 988 | * ----------------------------- |
| 985 | | * 0101 xxxx 2 cyc TML * |
| 989 | * 0101 xxxx 2 cyc TML xyy |
| 986 | 990 | * yyyy yyyy |
| 987 | 991 | * |
| 988 | 992 | * Symbolic equation |
| r242179 | r242180 | |
| 999 | 1003 | */ |
| 1000 | 1004 | void pps4_device::iTML() |
| 1001 | 1005 | { |
| 1002 | | ARG(); |
| 1006 | m_I2 = ARG(); |
| 1003 | 1007 | m_SB = m_SA; |
| 1004 | 1008 | m_SA = m_P; |
| 1005 | | m_P = (m_I & 15) << 8; |
| 1006 | | m_P = m_P | m_I2; |
| 1009 | m_P = ((m_I & 15) << 8) | m_I2; |
| 1007 | 1010 | } |
| 1008 | 1011 | |
| 1009 | 1012 | /** |
| r242179 | r242180 | |
| 1020 | 1023 | */ |
| 1021 | 1024 | void pps4_device::iSKC() |
| 1022 | 1025 | { |
| 1023 | | m_P = m_P + m_C; |
| 1024 | | m_P = m_P & 0xFFF; |
| 1026 | m_Skip = m_C; |
| 1025 | 1027 | } |
| 1026 | 1028 | |
| 1027 | 1029 | /** |
| r242179 | r242180 | |
| 1038 | 1040 | */ |
| 1039 | 1041 | void pps4_device::iSKZ() |
| 1040 | 1042 | { |
| 1041 | | m_P = m_P + (0 == m_A) ? 1 : 0; |
| 1042 | | m_P = m_P & 0xFFF; |
| 1043 | m_Skip = 0 == m_A ? 1 : 0; |
| 1043 | 1044 | } |
| 1044 | 1045 | |
| 1045 | 1046 | /** |
| r242179 | r242180 | |
| 1058 | 1059 | */ |
| 1059 | 1060 | void pps4_device::iSKBI() |
| 1060 | 1061 | { |
| 1061 | | const unsigned imm = m_I & 15; |
| 1062 | | m_P = m_P + (imm == (m_B & 15)) ? 1 : 0; |
| 1063 | | m_P = m_P & 0xFFF; |
| 1062 | const UINT8 imm = m_I & 15; |
| 1063 | const UINT8 bl = m_B & 15; |
| 1064 | m_Skip = bl == imm ? 1 : 0; |
| 1064 | 1065 | } |
| 1065 | 1066 | |
| 1066 | 1067 | /** |
| r242179 | r242180 | |
| 1075 | 1076 | */ |
| 1076 | 1077 | void pps4_device::iSKF1() |
| 1077 | 1078 | { |
| 1078 | | m_P = m_P + m_FF1; |
| 1079 | | m_P = m_P & 0xFFF; |
| 1079 | m_Skip = m_FF1; |
| 1080 | 1080 | } |
| 1081 | 1081 | |
| 1082 | 1082 | /** |
| r242179 | r242180 | |
| 1091 | 1091 | */ |
| 1092 | 1092 | void pps4_device::iSKF2() |
| 1093 | 1093 | { |
| 1094 | | m_P = m_P + m_FF2; |
| 1095 | | m_P = m_P & 0xFFF; |
| 1094 | m_Skip = m_FF2; |
| 1096 | 1095 | } |
| 1097 | 1096 | |
| 1098 | 1097 | /** |
| r242179 | r242180 | |
| 1111 | 1110 | */ |
| 1112 | 1111 | void pps4_device::iRTN() |
| 1113 | 1112 | { |
| 1114 | | m_P = m_SA; |
| 1113 | m_P = m_SA & 0xFFF; |
| 1115 | 1114 | // swap SA and SB |
| 1116 | 1115 | m_SA ^= m_SB; |
| 1117 | 1116 | m_SB ^= m_SA; |
| r242179 | r242180 | |
| 1129 | 1128 | * P <- SA, SA <-> SB |
| 1130 | 1129 | * P <- P + 1 |
| 1131 | 1130 | * |
| 1132 | | * Same as RTN expect the first ROM word encountered |
| 1131 | * Same as RTN except the first ROM word encountered |
| 1133 | 1132 | * after the return from subroutine is skipped. |
| 1134 | 1133 | */ |
| 1135 | 1134 | void pps4_device::iRTNSK() |
| 1136 | 1135 | { |
| 1137 | | m_P = m_SA; |
| 1138 | | ROP(); // ignored |
| 1139 | | m_I = 0; // avoid LB/LBL or LDI skipping |
| 1136 | m_P = m_SA & 0xFFF; |
| 1140 | 1137 | // swap SA and SB |
| 1141 | 1138 | m_SA ^= m_SB; |
| 1142 | 1139 | m_SB ^= m_SA; |
| 1143 | 1140 | m_SA ^= m_SB; |
| 1144 | | m_P = m_P & 0xFFF; |
| 1141 | ROP(); // next opcode is ignored |
| 1142 | m_I = 0; // avoid LB/LBL or LDI skipping due to m_Ip |
| 1145 | 1143 | } |
| 1146 | 1144 | |
| 1147 | 1145 | /** |
| 1148 | 1146 | * @brief pps4_device::IOL |
| 1149 | 1147 | * OPCODE cycles mnemonic |
| 1150 | 1148 | * ----------------------------- |
| 1151 | | * 0001 1100 2 cyc IOL |
| 1149 | * 0001 1100 2 cyc IOL yy |
| 1152 | 1150 | * yyyy yyyy |
| 1153 | 1151 | * |
| 1154 | 1152 | * Symbolic equation |
| r242179 | r242180 | |
| 1168 | 1166 | */ |
| 1169 | 1167 | void pps4_device::iIOL() |
| 1170 | 1168 | { |
| 1171 | | const unsigned a = ~m_A & 15; |
| 1172 | | ARG(); |
| 1173 | | LOG(("%s: port:%X <- %02X\n", __FUNCTION__, m_I2, a)); |
| 1169 | const UINT8 a = ~m_A & 15; |
| 1170 | m_I2 = ARG(); |
| 1174 | 1171 | m_io->write_byte(m_I2, a); |
| 1172 | LOG(("%s: port:%02x <- %x\n", __FUNCTION__, m_I2, a)); |
| 1175 | 1173 | m_A = ~m_io->read_byte(m_I2) & 15; |
| 1176 | | LOG(("%s: port:%X -> %02X\n", __FUNCTION__, m_I2, m_A)); |
| 1174 | LOG(("%s: port:%02x -> %x\n", __FUNCTION__, m_I2, m_A)); |
| 1177 | 1175 | } |
| 1178 | 1176 | |
| 1179 | 1177 | /** |
| r242179 | r242180 | |
| 1249 | 1247 | */ |
| 1250 | 1248 | void pps4_device::iSAG() |
| 1251 | 1249 | { |
| 1252 | | // mask bits 12:5 |
| 1250 | // mask bits 12:5 on next memory access |
| 1253 | 1251 | m_SAG = 0xff0; |
| 1254 | 1252 | } |
| 1255 | 1253 | |
| r242179 | r242180 | |
| 1259 | 1257 | void pps4_device::execute_one() |
| 1260 | 1258 | { |
| 1261 | 1259 | m_I = ROP(); |
| 1260 | if (m_Skip) { |
| 1261 | m_Skip = 0; |
| 1262 | LOG(("%s: skip op:%02x\n", __FUNCTION__, m_I)); |
| 1263 | return; |
| 1264 | } |
| 1262 | 1265 | switch (m_I) { |
| 1263 | 1266 | case 0x00: |
| 1264 | 1267 | iLBL(); |
| r242179 | r242180 | |
| 1492 | 1495 | save_item(NAME(m_P)); |
| 1493 | 1496 | save_item(NAME(m_SA)); |
| 1494 | 1497 | save_item(NAME(m_SB)); |
| 1498 | save_item(NAME(m_Skip)); |
| 1495 | 1499 | save_item(NAME(m_SAG)); |
| 1496 | 1500 | save_item(NAME(m_B)); |
| 1497 | 1501 | save_item(NAME(m_C)); |
| r242179 | r242180 | |
| 1506 | 1510 | state_add( PPS4_X, "X", m_X ).formatstr("%01X"); |
| 1507 | 1511 | state_add( PPS4_SA, "SA", m_SA ).formatstr("%03X"); |
| 1508 | 1512 | state_add( PPS4_SB, "SB", m_SB ).formatstr("%03X"); |
| 1513 | state_add( PPS4_Skip, "Skip", m_Skip ).formatstr("%01X"); |
| 1514 | state_add( PPS4_SAG, "SAG", m_SAG ).formatstr("%03X"); |
| 1509 | 1515 | state_add( PPS4_B, "B", m_B ).formatstr("%03X"); |
| 1510 | | state_add( PPS4_SAG, "SAG", m_SAG ).formatstr("%03X"); |
| 1516 | state_add( PPS4_I2, "I", m_I ).formatstr("%02X").noshow(); |
| 1511 | 1517 | state_add( PPS4_I2, "I2", m_I2 ).formatstr("%02X").noshow(); |
| 1512 | 1518 | state_add( PPS4_Ip, "Ip", m_Ip ).formatstr("%02X").noshow(); |
| 1513 | 1519 | state_add( STATE_GENPC, "GENPC", m_P ).noshow(); |
trunk/src/emu/cpu/pps4/pps4dasm.c
| r242179 | r242180 | |
| 28 | 28 | t_IOL, t_DIA, t_DIB, t_DOA, t_SAG, |
| 29 | 29 | t_COUNT, |
| 30 | 30 | t_MASK = (1 << 6) - 1, |
| 31 | | t_I3c = 1 << 6, /* immediate 3 bit constant, complemented */ |
| 32 | | t_I4 = 1 << 7, /* immediate 4 bit constant */ |
| 33 | | t_I4c = 1 << 8, /* immediate 4 bit constant, complemented */ |
| 34 | | t_I4p = 1 << 9, /* immediate 4 bit offset into page 3 */ |
| 35 | | t_I6p = 1 << 10, /* immediate 6 bit constant; address in current page */ |
| 36 | | t_I8 = 1 << 11, /* immediate 8 bit constant (I/O port number) */ |
| 37 | | t_I8c = 1 << 12, /* immediate 8 bit constant inverted */ |
| 31 | t_I3c = 1 << 6, /* immediate 3 bit constant, complemented */ |
| 32 | t_I4 = 1 << 7, /* immediate 4 bit constant */ |
| 33 | t_I4c = 1 << 8, /* immediate 4 bit constant, complemented */ |
| 34 | t_I4p = 1 << 9, /* immediate 4 bit offset into page 3 */ |
| 35 | t_I6p = 1 << 10, /* immediate 6 bit constant; address in current page */ |
| 36 | t_I8 = 1 << 11, /* immediate 8 bit constant (I/O port number) */ |
| 37 | t_I8c = 1 << 12, /* immediate 8 bit constant inverted */ |
| 38 | t_OVER = 1 << 13, /* Debugger step over (CALL) */ |
| 39 | t_OUT = 1 << 14 /* Debugger step out (RETURN) */ |
| 38 | 40 | } pps4_token_e; |
| 39 | 41 | |
| 40 | 42 | static const char *token_str[t_COUNT] = { |
| r242179 | r242180 | |
| 91 | 93 | }; |
| 92 | 94 | |
| 93 | 95 | static const UINT16 table[] = { |
| 94 | | t_LBL | t_I8c, /* 00 */ |
| 95 | | t_TML | t_I4 | t_I8, /* 01 */ |
| 96 | | t_TML | t_I4 | t_I8, /* 02 */ |
| 97 | | t_TML | t_I4 | t_I8, /* 03 */ |
| 98 | | t_LBUA, /* 04 */ |
| 99 | | t_RTN, /* 05 */ |
| 100 | | t_XS, /* 06 */ |
| 101 | | t_RTNSK, /* 07 */ |
| 102 | | t_ADCSK, /* 08 */ |
| 103 | | t_ADSK, /* 09 */ |
| 104 | | t_ADC, /* 0a */ |
| 105 | | t_AD, /* 0b */ |
| 106 | | t_EOR, /* 0c */ |
| 107 | | t_AND, /* 0d */ |
| 108 | | t_COMP, /* 0e */ |
| 109 | | t_OR, /* 0f */ |
| 96 | /* 00 */ t_LBL | t_I8c, |
| 97 | /* 01 */ t_TML | t_I4 | t_I8, |
| 98 | /* 02 */ t_TML | t_I4 | t_I8, |
| 99 | /* 03 */ t_TML | t_I4 | t_I8, |
| 100 | /* 04 */ t_LBUA, |
| 101 | /* 05 */ t_RTN | t_OUT, |
| 102 | /* 06 */ t_XS, |
| 103 | /* 07 */ t_RTNSK | t_OUT, |
| 104 | /* 08 */ t_ADCSK, |
| 105 | /* 09 */ t_ADSK, |
| 106 | /* 0a */ t_ADC, |
| 107 | /* 0b */ t_AD, |
| 108 | /* 0c */ t_EOR, |
| 109 | /* 0d */ t_AND, |
| 110 | /* 0e */ t_COMP, |
| 111 | /* 0f */ t_OR, |
| 110 | 112 | |
| 111 | | t_LBMX, /* 10 */ |
| 112 | | t_LABL, /* 11 */ |
| 113 | | t_LAX, /* 12 */ |
| 114 | | t_SAG, /* 13 */ |
| 115 | | t_SKF2, /* 14 */ |
| 116 | | t_SKC, /* 15 */ |
| 117 | | t_SKF1, /* 16 */ |
| 118 | | t_INCB, /* 17 */ |
| 119 | | t_XBMX, /* 18 */ |
| 120 | | t_XABL, /* 19 */ |
| 121 | | t_XAX, /* 1a */ |
| 122 | | t_LXA, /* 1b */ |
| 123 | | t_IOL | t_I8, /* 1c */ |
| 124 | | t_DOA, /* 1d */ |
| 125 | | t_SKZ, /* 1e */ |
| 126 | | t_DECB, /* 1f */ |
| 113 | /* 10 */ t_LBMX, |
| 114 | /* 11 */ t_LABL, |
| 115 | /* 12 */ t_LAX, |
| 116 | /* 13 */ t_SAG, |
| 117 | /* 14 */ t_SKF2, |
| 118 | /* 15 */ t_SKC, |
| 119 | /* 16 */ t_SKF1, |
| 120 | /* 17 */ t_INCB, |
| 121 | /* 18 */ t_XBMX, |
| 122 | /* 19 */ t_XABL, |
| 123 | /* 1a */ t_XAX, |
| 124 | /* 1b */ t_LXA, |
| 125 | /* 1c */ t_IOL | t_I8, |
| 126 | /* 1d */ t_DOA, |
| 127 | /* 1e */ t_SKZ, |
| 128 | /* 1f */ t_DECB, |
| 127 | 129 | |
| 128 | | t_SC, /* 20 */ |
| 129 | | t_SF2, /* 21 */ |
| 130 | | t_SF1, /* 22 */ |
| 131 | | t_DIB, /* 23 */ |
| 132 | | t_RC, /* 24 */ |
| 133 | | t_RF2, /* 25 */ |
| 134 | | t_RF1, /* 26 */ |
| 135 | | t_DIA, /* 27 */ |
| 136 | | t_EXD | t_I3c, /* 28 */ |
| 137 | | t_EXD | t_I3c, /* 29 */ |
| 138 | | t_EXD | t_I3c, /* 2a */ |
| 139 | | t_EXD | t_I3c, /* 2b */ |
| 140 | | t_EXD | t_I3c, /* 2c */ |
| 141 | | t_EXD | t_I3c, /* 2d */ |
| 142 | | t_EXD | t_I3c, /* 2e */ |
| 143 | | t_EXD | t_I3c, /* 2f */ |
| 130 | /* 20 */ t_SC, |
| 131 | /* 21 */ t_SF2, |
| 132 | /* 22 */ t_SF1, |
| 133 | /* 23 */ t_DIB, |
| 134 | /* 24 */ t_RC, |
| 135 | /* 25 */ t_RF2, |
| 136 | /* 26 */ t_RF1, |
| 137 | /* 27 */ t_DIA, |
| 138 | /* 28 */ t_EXD | t_I3c, |
| 139 | /* 29 */ t_EXD | t_I3c, |
| 140 | /* 2a */ t_EXD | t_I3c, |
| 141 | /* 2b */ t_EXD | t_I3c, |
| 142 | /* 2c */ t_EXD | t_I3c, |
| 143 | /* 2d */ t_EXD | t_I3c, |
| 144 | /* 2e */ t_EXD | t_I3c, |
| 145 | /* 2f */ t_EXD | t_I3c, |
| 144 | 146 | |
| 145 | | t_LD | t_I3c, /* 30 */ |
| 146 | | t_LD | t_I3c, /* 31 */ |
| 147 | | t_LD | t_I3c, /* 32 */ |
| 148 | | t_LD | t_I3c, /* 33 */ |
| 149 | | t_LD | t_I3c, /* 34 */ |
| 150 | | t_LD | t_I3c, /* 35 */ |
| 151 | | t_LD | t_I3c, /* 36 */ |
| 152 | | t_LD | t_I3c, /* 37 */ |
| 153 | | t_EX | t_I3c, /* 38 */ |
| 154 | | t_EX | t_I3c, /* 39 */ |
| 155 | | t_EX | t_I3c, /* 3a */ |
| 156 | | t_EX | t_I3c, /* 3b */ |
| 157 | | t_EX | t_I3c, /* 3c */ |
| 158 | | t_EX | t_I3c, /* 3d */ |
| 159 | | t_EX | t_I3c, /* 3e */ |
| 160 | | t_EX | t_I3c, /* 3f */ |
| 147 | /* 30 */ t_LD | t_I3c, |
| 148 | /* 31 */ t_LD | t_I3c, |
| 149 | /* 32 */ t_LD | t_I3c, |
| 150 | /* 33 */ t_LD | t_I3c, |
| 151 | /* 34 */ t_LD | t_I3c, |
| 152 | /* 35 */ t_LD | t_I3c, |
| 153 | /* 36 */ t_LD | t_I3c, |
| 154 | /* 37 */ t_LD | t_I3c, |
| 155 | /* 38 */ t_EX | t_I3c, |
| 156 | /* 39 */ t_EX | t_I3c, |
| 157 | /* 3a */ t_EX | t_I3c, |
| 158 | /* 3b */ t_EX | t_I3c, |
| 159 | /* 3c */ t_EX | t_I3c, |
| 160 | /* 3d */ t_EX | t_I3c, |
| 161 | /* 3e */ t_EX | t_I3c, |
| 162 | /* 3f */ t_EX | t_I3c, |
| 161 | 163 | |
| 162 | | t_SKBI | t_I4, /* 40 */ |
| 163 | | t_SKBI | t_I4, /* 41 */ |
| 164 | | t_SKBI | t_I4, /* 42 */ |
| 165 | | t_SKBI | t_I4, /* 43 */ |
| 166 | | t_SKBI | t_I4, /* 44 */ |
| 167 | | t_SKBI | t_I4, /* 45 */ |
| 168 | | t_SKBI | t_I4, /* 46 */ |
| 169 | | t_SKBI | t_I4, /* 47 */ |
| 170 | | t_SKBI | t_I4, /* 48 */ |
| 171 | | t_SKBI | t_I4, /* 49 */ |
| 172 | | t_SKBI | t_I4, /* 4a */ |
| 173 | | t_SKBI | t_I4, /* 4b */ |
| 174 | | t_SKBI | t_I4, /* 4c */ |
| 175 | | t_SKBI | t_I4, /* 4d */ |
| 176 | | t_SKBI | t_I4, /* 4e */ |
| 177 | | t_SKBI | t_I4, /* 4f */ |
| 164 | /* 40 */ t_SKBI | t_I4, |
| 165 | /* 41 */ t_SKBI | t_I4, |
| 166 | /* 42 */ t_SKBI | t_I4, |
| 167 | /* 43 */ t_SKBI | t_I4, |
| 168 | /* 44 */ t_SKBI | t_I4, |
| 169 | /* 45 */ t_SKBI | t_I4, |
| 170 | /* 46 */ t_SKBI | t_I4, |
| 171 | /* 47 */ t_SKBI | t_I4, |
| 172 | /* 48 */ t_SKBI | t_I4, |
| 173 | /* 49 */ t_SKBI | t_I4, |
| 174 | /* 4a */ t_SKBI | t_I4, |
| 175 | /* 4b */ t_SKBI | t_I4, |
| 176 | /* 4c */ t_SKBI | t_I4, |
| 177 | /* 4d */ t_SKBI | t_I4, |
| 178 | /* 4e */ t_SKBI | t_I4, |
| 179 | /* 4f */ t_SKBI | t_I4, |
| 178 | 180 | |
| 179 | | t_TL | t_I4 | t_I8, /* 50 */ |
| 180 | | t_TL | t_I4 | t_I8, /* 51 */ |
| 181 | | t_TL | t_I4 | t_I8, /* 52 */ |
| 182 | | t_TL | t_I4 | t_I8, /* 53 */ |
| 183 | | t_TL | t_I4 | t_I8, /* 54 */ |
| 184 | | t_TL | t_I4 | t_I8, /* 55 */ |
| 185 | | t_TL | t_I4 | t_I8, /* 56 */ |
| 186 | | t_TL | t_I4 | t_I8, /* 57 */ |
| 187 | | t_TL | t_I4 | t_I8, /* 58 */ |
| 188 | | t_TL | t_I4 | t_I8, /* 59 */ |
| 189 | | t_TL | t_I4 | t_I8, /* 5a */ |
| 190 | | t_TL | t_I4 | t_I8, /* 5b */ |
| 191 | | t_TL | t_I4 | t_I8, /* 5c */ |
| 192 | | t_TL | t_I4 | t_I8, /* 5d */ |
| 193 | | t_TL | t_I4 | t_I8, /* 5e */ |
| 194 | | t_TL | t_I4 | t_I8, /* 5f */ |
| 181 | /* 50 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 182 | /* 51 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 183 | /* 52 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 184 | /* 53 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 185 | /* 54 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 186 | /* 55 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 187 | /* 56 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 188 | /* 57 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 189 | /* 58 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 190 | /* 59 */ t_TL | t_I4 | t_I8 | t_OVER, |
| 191 | /* 5a */ t_TL | t_I4 | t_I8 | t_OVER, |
| 192 | /* 5b */ t_TL | t_I4 | t_I8 | t_OVER, |
| 193 | /* 5c */ t_TL | t_I4 | t_I8 | t_OVER, |
| 194 | /* 5d */ t_TL | t_I4 | t_I8 | t_OVER, |
| 195 | /* 5e */ t_TL | t_I4 | t_I8 | t_OVER, |
| 196 | /* 5f */ t_TL | t_I4 | t_I8 | t_OVER, |
| 195 | 197 | |
| 196 | | t_ADI | t_I4c, /* 60 */ |
| 197 | | t_ADI | t_I4c, /* 61 */ |
| 198 | | t_ADI | t_I4c, /* 62 */ |
| 199 | | t_ADI | t_I4c, /* 63 */ |
| 200 | | t_ADI | t_I4c, /* 64 */ |
| 201 | | t_DC, /* 65 */ |
| 202 | | t_ADI | t_I4c, /* 66 */ |
| 203 | | t_ADI | t_I4c, /* 67 */ |
| 204 | | t_ADI | t_I4c, /* 68 */ |
| 205 | | t_ADI | t_I4c, /* 69 */ |
| 206 | | t_ADI | t_I4c, /* 6a */ |
| 207 | | t_ADI | t_I4c, /* 6b */ |
| 208 | | t_ADI | t_I4c, /* 6c */ |
| 209 | | t_ADI | t_I4c, /* 6d */ |
| 210 | | t_ADI | t_I4c, /* 6e */ |
| 211 | | t_CYS, /* 6f */ |
| 198 | /* 60 */ t_ADI | t_I4c, |
| 199 | /* 61 */ t_ADI | t_I4c, |
| 200 | /* 62 */ t_ADI | t_I4c, |
| 201 | /* 63 */ t_ADI | t_I4c, |
| 202 | /* 64 */ t_ADI | t_I4c, |
| 203 | /* 65 */ t_DC, |
| 204 | /* 66 */ t_ADI | t_I4c, |
| 205 | /* 67 */ t_ADI | t_I4c, |
| 206 | /* 68 */ t_ADI | t_I4c, |
| 207 | /* 69 */ t_ADI | t_I4c, |
| 208 | /* 6a */ t_ADI | t_I4c, |
| 209 | /* 6b */ t_ADI | t_I4c, |
| 210 | /* 6c */ t_ADI | t_I4c, |
| 211 | /* 6d */ t_ADI | t_I4c, |
| 212 | /* 6e */ t_ADI | t_I4c, |
| 213 | /* 6f */ t_CYS, |
| 212 | 214 | |
| 213 | | t_LDI | t_I4c, /* 70 */ |
| 214 | | t_LDI | t_I4c, /* 71 */ |
| 215 | | t_LDI | t_I4c, /* 72 */ |
| 216 | | t_LDI | t_I4c, /* 73 */ |
| 217 | | t_LDI | t_I4c, /* 74 */ |
| 218 | | t_LDI | t_I4c, /* 75 */ |
| 219 | | t_LDI | t_I4c, /* 76 */ |
| 220 | | t_LDI | t_I4c, /* 77 */ |
| 221 | | t_LDI | t_I4c, /* 78 */ |
| 222 | | t_LDI | t_I4c, /* 79 */ |
| 223 | | t_LDI | t_I4c, /* 7a */ |
| 224 | | t_LDI | t_I4c, /* 7b */ |
| 225 | | t_LDI | t_I4c, /* 7c */ |
| 226 | | t_LDI | t_I4c, /* 7d */ |
| 227 | | t_LDI | t_I4c, /* 7e */ |
| 228 | | t_LDI | t_I4c, /* 7f */ |
| 215 | /* 70 */ t_LDI | t_I4c, |
| 216 | /* 71 */ t_LDI | t_I4c, |
| 217 | /* 72 */ t_LDI | t_I4c, |
| 218 | /* 73 */ t_LDI | t_I4c, |
| 219 | /* 74 */ t_LDI | t_I4c, |
| 220 | /* 75 */ t_LDI | t_I4c, |
| 221 | /* 76 */ t_LDI | t_I4c, |
| 222 | /* 77 */ t_LDI | t_I4c, |
| 223 | /* 78 */ t_LDI | t_I4c, |
| 224 | /* 79 */ t_LDI | t_I4c, |
| 225 | /* 7a */ t_LDI | t_I4c, |
| 226 | /* 7b */ t_LDI | t_I4c, |
| 227 | /* 7c */ t_LDI | t_I4c, |
| 228 | /* 7d */ t_LDI | t_I4c, |
| 229 | /* 7e */ t_LDI | t_I4c, |
| 230 | /* 7f */ t_LDI | t_I4c, |
| 229 | 231 | |
| 230 | | t_T | t_I6p, /* 80 */ |
| 231 | | t_T | t_I6p, /* 81 */ |
| 232 | | t_T | t_I6p, /* 82 */ |
| 233 | | t_T | t_I6p, /* 83 */ |
| 234 | | t_T | t_I6p, /* 84 */ |
| 235 | | t_T | t_I6p, /* 85 */ |
| 236 | | t_T | t_I6p, /* 86 */ |
| 237 | | t_T | t_I6p, /* 87 */ |
| 238 | | t_T | t_I6p, /* 88 */ |
| 239 | | t_T | t_I6p, /* 89 */ |
| 240 | | t_T | t_I6p, /* 8a */ |
| 241 | | t_T | t_I6p, /* 8b */ |
| 242 | | t_T | t_I6p, /* 8c */ |
| 243 | | t_T | t_I6p, /* 8d */ |
| 244 | | t_T | t_I6p, /* 8e */ |
| 245 | | t_T | t_I6p, /* 8f */ |
| 232 | /* 80 */ t_T | t_I6p, |
| 233 | /* 81 */ t_T | t_I6p, |
| 234 | /* 82 */ t_T | t_I6p, |
| 235 | /* 83 */ t_T | t_I6p, |
| 236 | /* 84 */ t_T | t_I6p, |
| 237 | /* 85 */ t_T | t_I6p, |
| 238 | /* 86 */ t_T | t_I6p, |
| 239 | /* 87 */ t_T | t_I6p, |
| 240 | /* 88 */ t_T | t_I6p, |
| 241 | /* 89 */ t_T | t_I6p, |
| 242 | /* 8a */ t_T | t_I6p, |
| 243 | /* 8b */ t_T | t_I6p, |
| 244 | /* 8c */ t_T | t_I6p, |
| 245 | /* 8d */ t_T | t_I6p, |
| 246 | /* 8e */ t_T | t_I6p, |
| 247 | /* 8f */ t_T | t_I6p, |
| 246 | 248 | |
| 247 | | t_T | t_I6p, /* 90 */ |
| 248 | | t_T | t_I6p, /* 91 */ |
| 249 | | t_T | t_I6p, /* 92 */ |
| 250 | | t_T | t_I6p, /* 93 */ |
| 251 | | t_T | t_I6p, /* 94 */ |
| 252 | | t_T | t_I6p, /* 95 */ |
| 253 | | t_T | t_I6p, /* 96 */ |
| 254 | | t_T | t_I6p, /* 97 */ |
| 255 | | t_T | t_I6p, /* 98 */ |
| 256 | | t_T | t_I6p, /* 99 */ |
| 257 | | t_T | t_I6p, /* 9a */ |
| 258 | | t_T | t_I6p, /* 9b */ |
| 259 | | t_T | t_I6p, /* 9c */ |
| 260 | | t_T | t_I6p, /* 9d */ |
| 261 | | t_T | t_I6p, /* 9e */ |
| 262 | | t_T | t_I6p, /* 9f */ |
| 249 | /* 90 */ t_T | t_I6p, |
| 250 | /* 91 */ t_T | t_I6p, |
| 251 | /* 92 */ t_T | t_I6p, |
| 252 | /* 93 */ t_T | t_I6p, |
| 253 | /* 94 */ t_T | t_I6p, |
| 254 | /* 95 */ t_T | t_I6p, |
| 255 | /* 96 */ t_T | t_I6p, |
| 256 | /* 97 */ t_T | t_I6p, |
| 257 | /* 98 */ t_T | t_I6p, |
| 258 | /* 99 */ t_T | t_I6p, |
| 259 | /* 9a */ t_T | t_I6p, |
| 260 | /* 9b */ t_T | t_I6p, |
| 261 | /* 9c */ t_T | t_I6p, |
| 262 | /* 9d */ t_T | t_I6p, |
| 263 | /* 9e */ t_T | t_I6p, |
| 264 | /* 9f */ t_T | t_I6p, |
| 263 | 265 | |
| 264 | | t_T | t_I6p, /* a0 */ |
| 265 | | t_T | t_I6p, /* a1 */ |
| 266 | | t_T | t_I6p, /* a2 */ |
| 267 | | t_T | t_I6p, /* a3 */ |
| 268 | | t_T | t_I6p, /* a4 */ |
| 269 | | t_T | t_I6p, /* a5 */ |
| 270 | | t_T | t_I6p, /* a6 */ |
| 271 | | t_T | t_I6p, /* a7 */ |
| 272 | | t_T | t_I6p, /* a8 */ |
| 273 | | t_T | t_I6p, /* a9 */ |
| 274 | | t_T | t_I6p, /* aa */ |
| 275 | | t_T | t_I6p, /* ab */ |
| 276 | | t_T | t_I6p, /* ac */ |
| 277 | | t_T | t_I6p, /* ad */ |
| 278 | | t_T | t_I6p, /* ae */ |
| 279 | | t_T | t_I6p, /* af */ |
| 266 | /* a0 */ t_T | t_I6p, |
| 267 | /* a1 */ t_T | t_I6p, |
| 268 | /* a2 */ t_T | t_I6p, |
| 269 | /* a3 */ t_T | t_I6p, |
| 270 | /* a4 */ t_T | t_I6p, |
| 271 | /* a5 */ t_T | t_I6p, |
| 272 | /* a6 */ t_T | t_I6p, |
| 273 | /* a7 */ t_T | t_I6p, |
| 274 | /* a8 */ t_T | t_I6p, |
| 275 | /* a9 */ t_T | t_I6p, |
| 276 | /* aa */ t_T | t_I6p, |
| 277 | /* ab */ t_T | t_I6p, |
| 278 | /* ac */ t_T | t_I6p, |
| 279 | /* ad */ t_T | t_I6p, |
| 280 | /* ae */ t_T | t_I6p, |
| 281 | /* af */ t_T | t_I6p, |
| 280 | 282 | |
| 281 | | t_T | t_I6p, /* b0 */ |
| 282 | | t_T | t_I6p, /* b1 */ |
| 283 | | t_T | t_I6p, /* b2 */ |
| 284 | | t_T | t_I6p, /* b3 */ |
| 285 | | t_T | t_I6p, /* b4 */ |
| 286 | | t_T | t_I6p, /* b5 */ |
| 287 | | t_T | t_I6p, /* b6 */ |
| 288 | | t_T | t_I6p, /* b7 */ |
| 289 | | t_T | t_I6p, /* b8 */ |
| 290 | | t_T | t_I6p, /* b9 */ |
| 291 | | t_T | t_I6p, /* ba */ |
| 292 | | t_T | t_I6p, /* bb */ |
| 293 | | t_T | t_I6p, /* bc */ |
| 294 | | t_T | t_I6p, /* bd */ |
| 295 | | t_T | t_I6p, /* be */ |
| 296 | | t_T | t_I6p, /* bf */ |
| 283 | /* b0 */ t_T | t_I6p, |
| 284 | /* b1 */ t_T | t_I6p, |
| 285 | /* b2 */ t_T | t_I6p, |
| 286 | /* b3 */ t_T | t_I6p, |
| 287 | /* b4 */ t_T | t_I6p, |
| 288 | /* b5 */ t_T | t_I6p, |
| 289 | /* b6 */ t_T | t_I6p, |
| 290 | /* b7 */ t_T | t_I6p, |
| 291 | /* b8 */ t_T | t_I6p, |
| 292 | /* b9 */ t_T | t_I6p, |
| 293 | /* ba */ t_T | t_I6p, |
| 294 | /* bb */ t_T | t_I6p, |
| 295 | /* bc */ t_T | t_I6p, |
| 296 | /* bd */ t_T | t_I6p, |
| 297 | /* be */ t_T | t_I6p, |
| 298 | /* bf */ t_T | t_I6p, |
| 297 | 299 | |
| 298 | | t_LB | t_I4p, /* c0 */ |
| 299 | | t_LB | t_I4p, /* c1 */ |
| 300 | | t_LB | t_I4p, /* c2 */ |
| 301 | | t_LB | t_I4p, /* c3 */ |
| 302 | | t_LB | t_I4p, /* c4 */ |
| 303 | | t_LB | t_I4p, /* c5 */ |
| 304 | | t_LB | t_I4p, /* c6 */ |
| 305 | | t_LB | t_I4p, /* c7 */ |
| 306 | | t_LB | t_I4p, /* c8 */ |
| 307 | | t_LB | t_I4p, /* c9 */ |
| 308 | | t_LB | t_I4p, /* ca */ |
| 309 | | t_LB | t_I4p, /* cb */ |
| 310 | | t_LB | t_I4p, /* cc */ |
| 311 | | t_LB | t_I4p, /* cd */ |
| 312 | | t_LB | t_I4p, /* ce */ |
| 313 | | t_LB | t_I4p, /* cf */ |
| 300 | /* c0 */ t_LB | t_I4p, |
| 301 | /* c1 */ t_LB | t_I4p, |
| 302 | /* c2 */ t_LB | t_I4p, |
| 303 | /* c3 */ t_LB | t_I4p, |
| 304 | /* c4 */ t_LB | t_I4p, |
| 305 | /* c5 */ t_LB | t_I4p, |
| 306 | /* c6 */ t_LB | t_I4p, |
| 307 | /* c7 */ t_LB | t_I4p, |
| 308 | /* c8 */ t_LB | t_I4p, |
| 309 | /* c9 */ t_LB | t_I4p, |
| 310 | /* ca */ t_LB | t_I4p, |
| 311 | /* cb */ t_LB | t_I4p, |
| 312 | /* cc */ t_LB | t_I4p, |
| 313 | /* cd */ t_LB | t_I4p, |
| 314 | /* ce */ t_LB | t_I4p, |
| 315 | /* cf */ t_LB | t_I4p, |
| 314 | 316 | |
| 315 | | t_TM | t_I6p, /* d0 */ |
| 316 | | t_TM | t_I6p, /* d1 */ |
| 317 | | t_TM | t_I6p, /* d2 */ |
| 318 | | t_TM | t_I6p, /* d3 */ |
| 319 | | t_TM | t_I6p, /* d4 */ |
| 320 | | t_TM | t_I6p, /* d5 */ |
| 321 | | t_TM | t_I6p, /* d6 */ |
| 322 | | t_TM | t_I6p, /* d7 */ |
| 323 | | t_TM | t_I6p, /* d8 */ |
| 324 | | t_TM | t_I6p, /* d9 */ |
| 325 | | t_TM | t_I6p, /* da */ |
| 326 | | t_TM | t_I6p, /* db */ |
| 327 | | t_TM | t_I6p, /* dc */ |
| 328 | | t_TM | t_I6p, /* dd */ |
| 329 | | t_TM | t_I6p, /* de */ |
| 330 | | t_TM | t_I6p, /* df */ |
| 317 | /* d0 */ t_TM | t_I6p | t_OVER, |
| 318 | /* d1 */ t_TM | t_I6p | t_OVER, |
| 319 | /* d2 */ t_TM | t_I6p | t_OVER, |
| 320 | /* d3 */ t_TM | t_I6p | t_OVER, |
| 321 | /* d4 */ t_TM | t_I6p | t_OVER, |
| 322 | /* d5 */ t_TM | t_I6p | t_OVER, |
| 323 | /* d6 */ t_TM | t_I6p | t_OVER, |
| 324 | /* d7 */ t_TM | t_I6p | t_OVER, |
| 325 | /* d8 */ t_TM | t_I6p | t_OVER, |
| 326 | /* d9 */ t_TM | t_I6p | t_OVER, |
| 327 | /* da */ t_TM | t_I6p | t_OVER, |
| 328 | /* db */ t_TM | t_I6p | t_OVER, |
| 329 | /* dc */ t_TM | t_I6p | t_OVER, |
| 330 | /* dd */ t_TM | t_I6p | t_OVER, |
| 331 | /* de */ t_TM | t_I6p | t_OVER, |
| 332 | /* df */ t_TM | t_I6p | t_OVER, |
| 331 | 333 | |
| 332 | | t_TM | t_I6p, /* e0 */ |
| 333 | | t_TM | t_I6p, /* e1 */ |
| 334 | | t_TM | t_I6p, /* e2 */ |
| 335 | | t_TM | t_I6p, /* e3 */ |
| 336 | | t_TM | t_I6p, /* e4 */ |
| 337 | | t_TM | t_I6p, /* e5 */ |
| 338 | | t_TM | t_I6p, /* e6 */ |
| 339 | | t_TM | t_I6p, /* e7 */ |
| 340 | | t_TM | t_I6p, /* e8 */ |
| 341 | | t_TM | t_I6p, /* e9 */ |
| 342 | | t_TM | t_I6p, /* ea */ |
| 343 | | t_TM | t_I6p, /* eb */ |
| 344 | | t_TM | t_I6p, /* ec */ |
| 345 | | t_TM | t_I6p, /* ed */ |
| 346 | | t_TM | t_I6p, /* ee */ |
| 347 | | t_TM | t_I6p, /* ef */ |
| 334 | /* e0 */ t_TM | t_I6p | t_OVER, |
| 335 | /* e1 */ t_TM | t_I6p | t_OVER, |
| 336 | /* e2 */ t_TM | t_I6p | t_OVER, |
| 337 | /* e3 */ t_TM | t_I6p | t_OVER, |
| 338 | /* e4 */ t_TM | t_I6p | t_OVER, |
| 339 | /* e5 */ t_TM | t_I6p | t_OVER, |
| 340 | /* e6 */ t_TM | t_I6p | t_OVER, |
| 341 | /* e7 */ t_TM | t_I6p | t_OVER, |
| 342 | /* e8 */ t_TM | t_I6p | t_OVER, |
| 343 | /* e9 */ t_TM | t_I6p | t_OVER, |
| 344 | /* ea */ t_TM | t_I6p | t_OVER, |
| 345 | /* eb */ t_TM | t_I6p | t_OVER, |
| 346 | /* ec */ t_TM | t_I6p | t_OVER, |
| 347 | /* ed */ t_TM | t_I6p | t_OVER, |
| 348 | /* ee */ t_TM | t_I6p | t_OVER, |
| 349 | /* ef */ t_TM | t_I6p | t_OVER, |
| 348 | 350 | |
| 349 | | t_TM | t_I6p, /* f0 */ |
| 350 | | t_TM | t_I6p, /* f1 */ |
| 351 | | t_TM | t_I6p, /* f2 */ |
| 352 | | t_TM | t_I6p, /* f3 */ |
| 353 | | t_TM | t_I6p, /* f4 */ |
| 354 | | t_TM | t_I6p, /* f5 */ |
| 355 | | t_TM | t_I6p, /* f6 */ |
| 356 | | t_TM | t_I6p, /* f7 */ |
| 357 | | t_TM | t_I6p, /* f8 */ |
| 358 | | t_TM | t_I6p, /* f9 */ |
| 359 | | t_TM | t_I6p, /* fa */ |
| 360 | | t_TM | t_I6p, /* fb */ |
| 361 | | t_TM | t_I6p, /* fc */ |
| 362 | | t_TM | t_I6p, /* fd */ |
| 363 | | t_TM | t_I6p, /* fe */ |
| 364 | | t_TM | t_I6p, /* ff */ |
| 351 | /* f0 */ t_TM | t_I6p | t_OVER, |
| 352 | /* f1 */ t_TM | t_I6p | t_OVER, |
| 353 | /* f2 */ t_TM | t_I6p | t_OVER, |
| 354 | /* f3 */ t_TM | t_I6p | t_OVER, |
| 355 | /* f4 */ t_TM | t_I6p | t_OVER, |
| 356 | /* f5 */ t_TM | t_I6p | t_OVER, |
| 357 | /* f6 */ t_TM | t_I6p | t_OVER, |
| 358 | /* f7 */ t_TM | t_I6p | t_OVER, |
| 359 | /* f8 */ t_TM | t_I6p | t_OVER, |
| 360 | /* f9 */ t_TM | t_I6p | t_OVER, |
| 361 | /* fa */ t_TM | t_I6p | t_OVER, |
| 362 | /* fb */ t_TM | t_I6p | t_OVER, |
| 363 | /* fc */ t_TM | t_I6p | t_OVER, |
| 364 | /* fd */ t_TM | t_I6p | t_OVER, |
| 365 | /* fe */ t_TM | t_I6p | t_OVER, |
| 366 | /* ff */ t_TM | t_I6p | t_OVER |
| 365 | 367 | }; |
| 366 | 368 | |
| 367 | 369 | CPU_DISASSEMBLE( pps4 ) |
| r242179 | r242180 | |
| 380 | 382 | if (tok & t_I3c) { |
| 381 | 383 | // 3 bit immediate, complemented |
| 382 | 384 | UINT8 i = ~op & 7; |
| 383 | | dst += sprintf(dst, "%x", i); |
| 385 | if (0 != i) // only print if non-zero |
| 386 | dst += sprintf(dst, "%x", i); |
| 384 | 387 | } |
| 385 | 388 | |
| 386 | 389 | if (tok & t_I4) { |
| r242179 | r242180 | |
| 419 | 422 | dst += sprintf(dst, "%03x", arg); |
| 420 | 423 | } |
| 421 | 424 | |
| 422 | | if (0x05 == op || 0x07 == op) // RTN or RTNSK |
| 425 | if (tok & t_OVER) // TL or TML |
| 426 | flags |= DASMFLAG_STEP_OVER; |
| 427 | |
| 428 | if (tok & t_OUT) // RTN or RTNSK |
| 423 | 429 | flags |= DASMFLAG_STEP_OUT; |
| 424 | 430 | |
| 425 | 431 | return (pc - PC) | flags | DASMFLAG_SUPPORTED; |