|
1493 | 1493 | }
|
1494 | 1494 | };
|
1495 | 1495 | // read version and determine endianness
|
1496 |
| - var versions = [6501, 6502, 6504, 6505, 6521, 68000, 68002, 68003, 68021], |
| 1496 | + var versions = [6501, 6502, 6504, 6505, 6521, 68000, 68002, 68003, 68021, 68533], |
1497 | 1497 | version = 0,
|
1498 | 1498 | fileHeaderSize = 0;
|
1499 | 1499 | while (true) { // try all four endianness + header combos
|
|
1504 | 1504 | if (!littleEndian) fileHeaderSize += 512;
|
1505 | 1505 | if (fileHeaderSize > 512) throw Error("bad image version");
|
1506 | 1506 | } this.version = version;
|
1507 |
| - var nativeFloats = [6505, 6521, 68003, 68021].indexOf(version) >= 0; |
1508 |
| - this.hasClosures = [6504, 6505, 6521, 68002, 68003, 68021].indexOf(version) >= 0; |
1509 |
| - this.isSpur = [6521, 68021].indexOf(version) >= 0; |
| 1507 | + var nativeFloats = [6505, 6521, 68003, 68021, 68533].indexOf(version) >= 0; |
| 1508 | + this.hasClosures = [6504, 6505, 6521, 68002, 68003, 68021, 68533].indexOf(version) >= 0; |
| 1509 | + this.isSpur = [6521, 68021, 68533].indexOf(version) >= 0; |
1510 | 1510 | var is64Bit = version >= 68000;
|
1511 | 1511 | if (is64Bit && !this.isSpur) throw Error("64 bit non-spur images not supported yet");
|
1512 | 1512 | if (is64Bit) { readWord = readWord64; wordSize = 8; }
|
|
5438 | 5438 | case 175: if (this.oldPrims) return this.namedPrimitive('SoundPlugin', 'primitiveSoundPlaySilence', argCount);
|
5439 | 5439 | else return this.popNandPushIfOK(argCount+1, this.behaviorHash(this.stackNonInteger(0)));
|
5440 | 5440 | case 176: if (this.oldPrims) return this.namedPrimitive('SoundGenerationPlugin', 'primWaveTableSoundmixSampleCountintostartingAtpan', argCount);
|
5441 |
| - break; // fail |
| 5441 | + else return this.popNandPushIfOK(argCount+1, this.vm.image.isSpur ? 0x3FFFFF : 0xFFF); // primitiveMaxIdentityHash |
5442 | 5442 | case 177: if (this.oldPrims) return this.namedPrimitive('SoundGenerationPlugin', 'primFMSoundmixSampleCountintostartingAtpan', argCount);
|
5443 | 5443 | return this.popNandPushIfOK(argCount+1, this.allInstancesOf(this.stackNonInteger(0)));
|
5444 | 5444 | case 178: if (this.oldPrims) return this.namedPrimitive('SoundGenerationPlugin', 'primPluckedSoundmixSampleCountintostartingAtpan', argCount);
|
|
40050 | 40050 | from
|
40051 | 40051 | DeflatePlugin VMMaker-bf.353 uuid: 8ae25e7e-8d2c-451e-8277-598b30e9c002
|
40052 | 40052 | */
|
| 40053 | + /* |
| 40054 | + Manual fixes: |
| 40055 | + 2022-01-15 VMMaker.oscog-mt.3135 and VMMaker.oscog-mt.3136 |
| 40056 | + */ |
40053 | 40057 |
|
40054 | 40058 | (function ZipPlugin() {
|
40055 | 40059 |
|
|
40302 | 40306 | }
|
40303 | 40307 |
|
40304 | 40308 |
|
40305 |
| - /* Determine the inst size of the class above DeflateStream by |
| 40309 | + /* Determine the inst size of the class above InflateStream by |
40306 | 40310 | looking for the first class whose inst size is less than 13. */
|
40307 | 40311 |
|
40308 | 40312 | function determineSizeOfReadStream(rcvr) {
|
|
40578 | 40582 | /* zipWriteLimit := interpreterProxy fetchInteger: 3 ofObject: rcvr. */
|
40579 | 40583 |
|
40580 | 40584 | zipReadLimit = interpreterProxy.fetchIntegerofObject(2, rcvr);
|
40581 |
| - zipBitBuf = interpreterProxy.fetchIntegerofObject(writeStreamInstSize + 1, rcvr); |
40582 |
| - zipBitPos = interpreterProxy.fetchIntegerofObject(writeStreamInstSize + 2, rcvr); |
| 40585 | + zipBitBuf = interpreterProxy.fetchIntegerofObject(writeStreamInstSize + 0, rcvr); |
| 40586 | + zipBitPos = interpreterProxy.fetchIntegerofObject(writeStreamInstSize + 1, rcvr); |
40583 | 40587 | return !interpreterProxy.failed();
|
40584 | 40588 | }
|
40585 | 40589 |
|
|
40888 | 40892 | result = sendBlockwithwithwith(litStream, distStream, litTree, distTree);
|
40889 | 40893 | if (!interpreterProxy.failed()) {
|
40890 | 40894 | interpreterProxy.storeIntegerofObjectwithValue(1, rcvr, zipPosition);
|
40891 |
| - interpreterProxy.storeIntegerofObjectwithValue(readStreamInstSize + 1, rcvr, zipBitBuf); |
40892 |
| - interpreterProxy.storeIntegerofObjectwithValue(readStreamInstSize + 2, rcvr, zipBitPos); |
| 40895 | + interpreterProxy.storeIntegerofObjectwithValue(writeStreamInstSize + 0, rcvr, zipBitBuf); |
| 40896 | + interpreterProxy.storeIntegerofObjectwithValue(writeStreamInstSize + 1, rcvr, zipBitPos); |
40893 | 40897 | }
|
40894 | 40898 | if (!interpreterProxy.failed()) {
|
40895 | 40899 | interpreterProxy.pop(5);
|
|
0 commit comments