Advertisement
vladikcomper

Untitled

May 19th, 2016
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. SourceData = <CompressedDataPointer>
  2. DestData = <DestinationDataPoniter>
  3.  
  4. REPEAT
  5. DescField = read16bits(SourceData+)
  6.  
  7. FOR bitCnt = 15 DOWNTO 0
  8. bit = getBit(DescField, bitCnt)
  9. IF bit == 1 THEN ; Read flag
  10. displacement = get8bits(SourceData+) ; always a negative number
  11. length = read8bits(SourceData+)
  12. IF length == 0 THEN STOP ; zero copy length halts decompression
  13. CopySource = offset(SourceData + displacement) ; 'displacement' is always negative, so we add, not subtract
  14. REPEAT length TIMES
  15. DestData+ = read16Bits(CopySource+)
  16.  
  17. ELSE IF bit == 0 THEN ; Read uncompressed word
  18. DestData+ = read16Bits(SourceData+)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement