|
|
1.1 ! root 1: static void __F26 () ! 2: { ! 3: Regs[0].s32 = 0; ! 4: nZ = 0; ! 5: N = 0 < 0; ! 6: V = 0; ! 7: C = 0; ! 8: } ! 9: static void __F30 () ! 10: { ! 11: Regs[0].s32 = 10; ! 12: nZ = 10; ! 13: N = 10 < 0; ! 14: V = 0; ! 15: C = 0; ! 16: } ! 17: static void __F32 () ! 18: { ! 19: Regs[1].s32 = 2; ! 20: nZ = 2; ! 21: N = 2 < 0; ! 22: V = 0; ! 23: C = 0; ! 24: } ! 25: static void __F34 () ! 26: { ! 27: u16 src = Regs[1].s16; ! 28: u32 dest = (u16)Regs[0].s16; ! 29: dest *= (u32)src; ! 30: nZ = dest; ! 31: N = ((s32)dest) < 0; ! 32: C = V = 0; ! 33: Regs[0].s32 = dest; ! 34: } ! 35: static void __F36 () ! 36: { ! 37: s16 src = Regs[1].s16; ! 38: s32 dest = (s16)Regs[0].s16; ! 39: dest *= (s32)src; ! 40: nZ = dest; ! 41: N = ((s32)dest) < 0; ! 42: C = V = 0; ! 43: Regs[0].s32 = dest; ! 44: } ! 45: static void __F38 () ! 46: { ! 47: u32 val = Regs[0].s32; ! 48: ! 49: s32 src = Regs[1].s32 & 63; ! 50: if (src >= 32) { ! 51: V = (val != 0); ! 52: X = C = (src == 32 ? val & 1 : 0); ! 53: val = 0; ! 54: } else if (src == 0) { ! 55: C = 0; ! 56: V = 0; ! 57: } else { ! 58: u32 mask = (0xffffffff << (31 - src)) & 0xffffffff; ! 59: V = (val & mask) != mask && (val & mask) != 0; ! 60: val <<= src-1; ! 61: C = X = (val & 0x80000000); ! 62: val <<= 1; ! 63: val &= 0xffffffff; ! 64: } ! 65: nZ = ((s32)(val)) != 0; ! 66: N = ((s32)(val)) < 0; ! 67: Regs[0].s32 = val; ! 68: } ! 69: static void __F3a () ! 70: { ! 71: u32 val = Regs[0].s32; ! 72: ! 73: s32 src = Regs[1].s32 & 63; ! 74: u32 sign = (0x80000000 & val) >> 31; ! 75: if (src >= 32) { ! 76: val = 0xffffffff & (u32)-sign; ! 77: X = C = sign; ! 78: } else if (src == 0) { ! 79: C = 0; ! 80: V = 0; ! 81: } else { ! 82: val >>= src - 1; ! 83: C = X = val & 1; ! 84: val >>= 1; ! 85: val |= (0xffffffff << (32 - src)) & (u32)-sign; ! 86: val &= 0xffffffff; ! 87: } ! 88: nZ = ((s32)(val)) != 0; ! 89: N = ((s32)(val)) < 0; ! 90: Regs[0].s32 = val; ! 91: } ! 92: static void __F3c () ! 93: { ! 94: u32 val = Regs[0].s32; ! 95: ! 96: s32 shift = Regs[1].s32 & 63; ! 97: if (shift >= 32) { ! 98: X = C = (shift == 32 ? val & 1 : 0); ! 99: val = 0; ! 100: } else if (shift == 0) { ! 101: C = 0; ! 102: V = 0; ! 103: } else { ! 104: val <<= shift-1; ! 105: C = X = (val & 0x80000000); ! 106: val <<= 1; ! 107: val &= 0xffffffff; ! 108: } ! 109: nZ = ((s32)(val)) != 0; ! 110: N = ((s32)(val)) < 0; ! 111: Regs[0].s32 = val; ! 112: } ! 113: static void __F3e () ! 114: { ! 115: u32 val = Regs[0].s32; ! 116: ! 117: s32 shift = Regs[1].s32 & 63; ! 118: if (shift >= 32) { ! 119: val = 0; ! 120: X = C = (shift == 32) && (val >> 31); ! 121: } else if (shift == 0) { ! 122: C = 0; ! 123: V = 0; ! 124: } else { ! 125: val >>= shift - 1; ! 126: C = X = val & 1; ! 127: val >>= 1; ! 128: } ! 129: nZ = ((s32)(val)) != 0; ! 130: N = ((s32)(val)) < 0; ! 131: Regs[0].s32 = val; ! 132: } ! 133: static void __F40 () ! 134: { ! 135: u32 val = (u32)Regs[0].s32; ! 136: ! 137: s32 cnt = Regs[1].s32 & 63; ! 138: V = 0; ! 139: u32 loval; ! 140: cnt &= 31; ! 141: loval = val >> (32 - cnt); ! 142: val <<= cnt; ! 143: val |= loval; ! 144: val &= 0xffffffff; ! 145: C = val & 1; ! 146: nZ = val; ! 147: N = ((s32)val) < 0; ! 148: Regs[0].s32 = val; ! 149: } ! 150: static void __F42 () ! 151: { ! 152: u32 val = (u32)Regs[0].s32; ! 153: ! 154: s32 cnt = (Regs[1].s32 & 63) - 1; ! 155: V = 0; ! 156: u32 loval = val >> (31 - cnt); ! 157: u32 carry = loval & 1; ! 158: val = (((val << 1) | (X ? 1 : 0)) << cnt) | (loval >> 1); ! 159: X = carry; ! 160: val &= 0xffffffff; ! 161: C = X; ! 162: nZ = val; ! 163: N = ((s32)val) < 0; ! 164: Regs[0].s32 = val; ! 165: } ! 166: static void __F44 () ! 167: { ! 168: u32 src = Regs[1].s32; ! 169: u32 dest = Regs[0].s32; ! 170: src &= 31; ! 171: nZ = !(1 ^ ((dest >> src) & 1)); ! 172: dest &= ~(1 << src); ! 173: Regs[0].s32 = dest; ! 174: } ! 175: static void __F4e () ! 176: { ! 177: Regs[0].s32 = 0; ! 178: nZ = 0; ! 179: N = 0 < 0; ! 180: V = 0; ! 181: C = 0; ! 182: } ! 183: static void __F50 () ! 184: { ! 185: nZ = STMemory_ReadByte(Regs[8].s32); ! 186: Regs[0].s8 = nZ; ! 187: Regs[8].s32 += 1; ! 188: N = nZ < 0; ! 189: V = 0; ! 190: C = 0; ! 191: } ! 192: static void __F5a () ! 193: { ! 194: nZ = 1048575; ! 195: Regs[0].s32 = nZ; ! 196: N = nZ < 0; ! 197: V = 0; ! 198: C = 0; ! 199: } ! 200: static void __F5c () ! 201: { ! 202: u16 src = Regs[1].s16; ! 203: u32 dest = (u16)Regs[2].s16; ! 204: dest *= (u32)src; ! 205: nZ = dest; ! 206: N = ((s32)dest) < 0; ! 207: C = V = 0; ! 208: Regs[2].s32 = dest; ! 209: } ! 210: static void __F5e () ! 211: { ! 212: s32 flgs, flgo, flgn, dest; ! 213: dest = Regs[0].s32; ! 214: ! 215: nZ = (s32)dest - (s32)1; ! 216: Regs[0].s32 = nZ; ! 217: flgs = ((s32)1) < 0; ! 218: flgo = ((s32)dest) < 0; ! 219: flgn = ((s32)nZ) < 0; ! 220: V = (flgs ^ flgo) & (flgn ^ flgo); ! 221: C = ((s32)1) > ((s32)dest); ! 222: X = C; ! 223: N = (flgn != 0); ! 224: } ! 225: static void __F60 () ! 226: { ! 227: nZ = Regs[0].s32; ! 228: N = nZ < 0; ! 229: V = 0; ! 230: C = 0; ! 231: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.