Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SourceData = <CompressedDataPointer>
- DestData = <DestinationDataPoniter>
- REPEAT
- DescField = read16bits(SourceData+)
- FOR bitCnt = 15 DOWNTO 0
- bit = getBit(DescField, bitCnt)
- IF bit == 1 THEN ; Read flag
- displacement = get8bits(SourceData+) ; always a negative number
- length = read8bits(SourceData+)
- IF length == 0 THEN STOP ; zero copy length halts decompression
- CopySource = offset(SourceData + displacement) ; 'displacement' is always negative, so we add, not subtract
- REPEAT length TIMES
- DestData+ = read16Bits(CopySource+)
- ELSE IF bit == 0 THEN ; Read uncompressed word
- DestData+ = read16Bits(SourceData+)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement