home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / ST_USER / 1990 / USERJL90.MSA / LISTINGS.ARC / RLE.BSC < prev    next >
Text File  |  1990-05-16  |  751b  |  21 lines

  1. REM Run Length Encoding - by R.A.Waddilove
  2. INPUT "File to compact:"i$
  3. INPUT "Archive filename:"o$
  4. PRINT:PRINT "Scanning file..."
  5. DIM byte%(255):F%=OPENIN i$:c%=0
  6. REPEAT:byte%(BGET#F%)=1:c%=c%+1:UNTIL EOF#F%:CLOSE#F%
  7. flag%=-1:FOR i%=0 TO 255:IF byte%(i%)=0 THEN flag%=i%
  8. NEXT:IF flag%=-1 THEN PRINT "Can't compact!":END
  9. PRINT "Encoding...":I%=OPENIN i$:O%=OPENOUT o$:BPUT#O%,flag%:b1%=BGET#I%
  10. REPEAT:b2%=BGET#I%:IF b2%=b1% AND EOF#I%=0 THEN
  11. b3%=BGET#I%:IF b3%=b2% AND EOF#I%=0 THEN
  12. BPUT#O%,flag%:BPUT#O%,b1%:c%=2:REPEAT:b1%=BGET#I%:c%=c%+1
  13. UNTIL b1%<>b2% OR c%=255 OR EOF#I%:IF EOF#I% THEN b1%=c%+1 ELSE BPUT#O%,c%
  14. ELSE
  15. BPUT#O%,b1%:BPUT#O%,b2%:b1%=b3%
  16. ENDIF
  17. ELSE
  18. BPUT#O%,b1%:b1%=b2%
  19. ENDIF
  20. UNTIL EOF#I%:BPUT#O%,b1%:CLOSE#I%:CLOSE#O%
  21.