' Svjatoslav Agejenko year: 2001 ' decades binary data from 8 bit wave sound file. DEFINT A-Y DECLARE SUB bysf (a$, d) DECLARE SUB messa (a$) DECLARE SUB pfo (f, t, it) DECLARE SUB anal () DECLARE SUB start () DECLARE SUB iadd () DECLARE SUB oadd () DECLARE SUB byt (a) DIM SHARED file1$ DIM SHARED file2$ DIM SHARED buf(-100 TO 10000) DIM SHARED bus AS STRING * 1000 DIM SHARED bufi DIM SHARED bg DIM SHARED sm DIM SHARED beg DIM SHARED wai DIM SHARED old2 DIM SHARED stat(1 TO 10) DIM SHARED statl DIM SHARED aver DIM SHARED byte AS STRING * 1 DIM SHARED avv DIM SHARED li DIM SHARED oc DIM SHARED px start messa "searching for beginning..." OPEN file1$ FOR BINARY AS #1 OPEN file2$ FOR BINARY AS #2 SEEK #2, 360 2 GET #2, , bus FOR a = 1 TO 1000 b$ = RIGHT$(LEFT$(bus, a), 1) bufi = bufi + 1 c = ASC(b$) IF c > 127 THEN c = c - 255 buf(bufi) = c NEXT a IF (EOF(2) = 0) AND (bufi < 8000) THEN GOTO 2 anal IF EOF(2) = 0 THEN GOTO 2 CLOSE #2 CLOSE #1 SYSTEM SUB anal LINE (1, 170)-(200, 430), 0, BF FOR a = 1 TO bufi - (avv - 1) LINE (100, 170)-(100, 430), 13 LINE (old2 - a + 100, 170)-(old2 - a + 100, 430), 11 LINE (0, 300)-(200, 300), 13 FOR b = 0 TO 200 PSET (b, buf(b + a - 101) + 300), 0 PSET (b, buf(b + a - 100) + 300), 14 NEXT b LINE (old2 - a + 100, 170)-(old2 - a + 100, 430), 0 c = 0 FOR b = a TO a + (avv - 1) c = c + buf(b) NEXT b c = c / (avv / 2) IF c > oc THEN IF li = -1 THEN li = 1 pfo a + ((avv - 1) / 2 - 1), 1, oc GOTO 3 END IF END IF IF c < oc THEN IF li = 1 THEN li = -1 pfo a + ((avv - 1) / 2 - 1), 2, oc GOTO 3 END IF END IF 3 oc = c NEXT a FOR a = bufi - (avv - 2) TO bufi buf(a - (bufi - (avv - 2)) + 1) = buf(a) NEXT a old2 = old2 - (bufi - (avv - 2)) + 1 bufi = avv - 1 END SUB SUB bysf (a$, d) 'LINE (201, 170)-(639, 430), 1, B IF d = 10 THEN px = 0: a$ = "": GOTO 5 px = px + 1 IF px > 53 THEN px = 1 5 DIM tempr(1 TO 32000) GET (201, 186)-(639, 430), tempr(1) PUT (201, 170), tempr(1), PSET LINE (201, 414)-(639, 430), 0, BF END IF LOCATE 26, 26 + px PRINT a$ byte = CHR$(d) PUT #1, , byte END SUB SUB byt (a) 'LINE (410, 0)-(639, 169), 1, B statl = statl + 1 IF statl > 8 THEN statl = 1 b = 0 IF stat(1) = 1 THEN b = b + 128 IF stat(2) = 1 THEN b = b + 64 IF stat(3) = 1 THEN b = b + 32 IF stat(4) = 1 THEN b = b + 16 IF stat(5) = 1 THEN b = b + 8 IF stat(6) = 1 THEN b = b + 4 IF stat(7) = 1 THEN b = b + 2 IF stat(8) = 1 THEN b = b + 1 LOCATE 10, 69 PRINT b LOCATE 10, 75 PRINT HEX$(b) LOCATE 10, 79 c$ = CHR$(b) IF b = 7 OR b = 8 OR b = 10 OR b = 12 OR b = 13 THEN c$ = " " PRINT c$ bysf c$, b DIM tempr(1 TO 10000) GET (410, 16)-(639, 169), tempr(1) PUT (410, 0), tempr(1), PSET LINE (410, 153)-(639, 169), 0, BF END IF LOCATE 10, 50 + (statl * 2) stat(statl) = a PRINT a 'IF a > 128 THEN a = a - 128: iadd ELSE oadd 'IF a > 64 THEN a = a - 64: iadd ELSE oadd 'IF a > 32 THEN a = a - 32: iadd ELSE oadd 'IF a > 16 THEN a = a - 16: iadd ELSE oadd 'IF a > 8 THEN a = a - 8: iadd ELSE oadd 'IF a > 4 THEN a = a - 4: iadd ELSE oadd 'IF a > 2 THEN a = a - 2: iadd ELSE oadd 'IF a > 1 THEN iadd ELSE oadd END SUB SUB messa (a$) 'LINE (0, 0)-(409, 169), 1, B DIM tempr(1 TO 20000) GET (0, 16)-(409, 169), tempr(1) PUT (0, 0), tempr(1), PSET LINE (0, 153)-(409, 169), 0, BF LOCATE 10, 1 PRINT a$ END SUB SUB pfo (f, t, it) IF t = 2 THEN bg = it IF wai > 0 THEN wai = wai - 1 IF (bg - sm > 6) AND (beg = 0) THEN beg = 1: wai = 10: messa "Beginning point found!" IF (wai = 0) AND (beg = 1) THEN IF statl = 0 THEN messa "Beginning statistical analyze" statl = statl + 1 IF statl > 10 THEN FOR a = 1 TO 10 aver = aver + stat(a) NEXT a aver = aver * 1.5 / 10 beg = 2 statl = 1 messa "Statistical analyze completed!" END IF stat(statl) = f - old2 END IF IF beg = 2 THEN IF f - old2 >= aver THEN beg = 3 statl = 0 FOR a = 1 TO 8 stat(a) = 0 NEXT a GOTO 4 END IF END IF IF beg = 3 THEN IF f - old2 >= aver THEN byt 0 ELSE byt 1 END IF END IF 4 old2 = f ELSE sm = it END IF END SUB SUB start IF COMMAND$ = "" THEN END SCREEN 12 b$ = COMMAND$ file2$ = b$ file1$ = "" FOR a = 1 TO LEN(b$) c$ = RIGHT$(LEFT$(b$, a), 1) IF c$ = "." OR c$ = " " THEN GOTO 1 file1$ = file1$ + c$ NEXT a 1 file1$ = file1$ + ".msg" bufi = 0 beg = 0 statl = 0 aver = 0 px = 0 avv = 7 li = 1 oc = -9999 END SUB