|
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