DECLARE FUNCTION IntToBin$ (t!)
DECLARE FUNCTION Compress$ (q$)
DECLARE FUNCTION Decompress$ (q$)
DECLARE FUNCTION Compress1$ (t$)
test$ = test$ + "/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\"
outt$ = Compress$(test$)
PRINT "--------------------"
PRINT "in : "; LEN(test$)
PRINT "out: "; LEN(outt$)
PRINT outt$














FUNCTION Compress$ (q$)
tmp$ = q$
'FOR r = 1 TO LEN(q$)
'tmp$ = tmp$ + IntToBin$(ASC(MID$(q$, r, 1)))
'NEXT r
'MrkEr = VAL(MID$(tmp$, 1, 1)): Cntr = 1
FOR r = 1 TO LEN(tmp$)
IF ASC(MID$(tmp$, r, 1)) = MrkEr THEN Cntr = Cntr + 1
IF ASC(MID$(tmp$, r, 1)) <> MrkEr THEN output$ = output$ + CHR$(Cntr) + CHR$(MrkEr): Cntr = 1: MrkEr = ASC(MID$(tmp$, r, 1))
NEXT r
'IF ASC(MID$(tmp$, r, 1)) <> MrkEr THEN output$ = output$ + CHR$(Cntr) + CHR$(MrkEr): Cntr = 1: MrkEr = ASC(MID$(tmp$, r, 1))
Compress$ = output$
END FUNCTION

FUNCTION Compress1$ (t$)
d = VAL("&H" + HEX$(MID$(t$, q + 0, 1)) + HEX$(MID$(t$, q + 1, 1)) + HEX$(MID$(t$, q + 2, 1)))

END FUNCTION

FUNCTION Decompress$ (q$)
tmp$ = ""
FOR r = 1 TO LEN(q$)
IF ASC(MID$(q$, r, 1)) < 128 THEN t$ = t$ + STRING$(ASC(MID$(q$, r, 1)), "1")
IF ASC(MID$(q$, r, 1)) > 127 THEN t$ = t$ + STRING$(ASC(MID$(q$, r, 1)) - 127, "0")
NEXT r
Decompress$ = t$
END FUNCTION

FUNCTION IntToBin$ (t)
m$ = HEX$(t)
'PRINT m$
FOR m = 0 TO LEN(m$) - 1 STEP 2
FOR q = 1 TO 2
IF MID$(m$, q + m, 1) = "0" THEN nbl1$ = nbl1$ + "0000"
IF MID$(m$, q + m, 1) = "1" THEN nbl1$ = nbl1$ + "0001"
IF MID$(m$, q + m, 1) = "2" THEN nbl1$ = nbl1$ + "0010"
IF MID$(m$, q + m, 1) = "3" THEN nbl1$ = nbl1$ + "0011"
IF MID$(m$, q + m, 1) = "4" THEN nbl1$ = nbl1$ + "0100"
IF MID$(m$, q + m, 1) = "5" THEN nbl1$ = nbl1$ + "0101"
IF MID$(m$, q + m, 1) = "6" THEN nbl1$ = nbl1$ + "0110"
IF MID$(m$, q + m, 1) = "7" THEN nbl1$ = nbl1$ + "0111"
IF MID$(m$, q + m, 1) = "8" THEN nbl1$ = nbl1$ + "1000"
IF MID$(m$, q + m, 1) = "9" THEN nbl1$ = nbl1$ + "1001"
IF MID$(m$, q + m, 1) = "A" THEN nbl1$ = nbl1$ + "1010"
IF MID$(m$, q + m, 1) = "B" THEN nbl1$ = nbl1$ + "1100"
IF MID$(m$, q + m, 1) = "C" THEN nbl1$ = nbl1$ + "1011"
IF MID$(m$, q + m, 1) = "D" THEN nbl1$ = nbl1$ + "1101"
IF MID$(m$, q + m, 1) = "E" THEN nbl1$ = nbl1$ + "1110"
IF MID$(m$, q + m, 1) = "F" THEN nbl1$ = nbl1$ + "1111"
NEXT q, m
IntToBin$ = STRING$(8 - LEN(nbl1$), "0") + nbl1$
END FUNCTION

