REM ----------------------------------------------------------------------------------------------------------------

REM THE PB/WIN 10 SOURCE CODE FOR Adhcifar 8.0 by Ribeiro Alvo

REM ----------------------------------------------------------------------------------------------------------------

 

#COMPILE EXE

#DIM ALL

GLOBAL hWin,clic,cx,cy,hVin, pausa AS LONG

 

FUNCTION PBMAIN ()

 

LOCAL num,i,m,tss,somachar,somabit,totalbits,pii,somacorrel1,somacorrel2,blgr,ingr,oldingr,sizeold AS QUAD

LOCAL u,mfp,lim,pav,blksize,mtp,ini,pap,fhndl,fundo,aju,kbd,ii,stt,cxold,cyold,cxo,cyo,acx,acy AS LONG

LOCAL xsize,ysize,nWidthkey,nHeightkey,pyd AS LONG

LOCAL contalfa,papold,butcor,tex,tey,corcur,iu,pxi,pyi,qt,desy,grafy AS LONG

LOCAL crypt,cut,desc,coco,alx,aly,gra,ligr,larg,atu,corgra,borbut AS LONG

LOCAL funbot,uu,pcp,lpcp,poscur,nWidth, nHeight,ltec,ftec,btec,istt,corru AS LONG

LOCAL os,k,ky,men,block,tabela,blockgr AS STRING

LOCAL temp,listold,bir,proc,bi,letra,keys,leftkeys,rightkeys,blom AS STRING

LOCAL xx,entropy,montecarlopi,chi,correl,media,per AS DOUBLE

LOCAL altura,st,ref,posold,tu,ute,blkk AS DWORD

LOCAL lc0,lc1,dl,altu,nkey,nfile,sfile,nkeyi,sobr,lkey AS BYTE

LOCAL y,yy AS WORD

 

DIM car(255) AS STRING

DIM oldle(100) AS STRING

DIM freqchar(255) AS QUAD

DIM bitum(0 TO 255) AS BYTE

DIM cormos (1) AS LONG

DIM corfile (1) AS LONG

DIM hico (1) AS LONG

 

DIM aj(11) AS STRING

DIM aj1(11) AS STRING

DIM fr(16) AS STRING

DIM tfr(16) AS STRING

 

DIM bj(11) AS STRING

DIM px(11) AS LONG

DIM py(11) AS LONG

 

DIM tec(11) AS STRING

DIM teco(95) AS STRING

DIM tecoesp(11) AS STRING

DIM Ende(1) AS STRING

 

Ende(0)="Encrypted"

Ende(1)="Decrypted"

 

ltec=%RGB_DARKGRAY

btec=%RGB_DIMGRAY

ftec=%RGB_DARKSLATEGRAY

 

tecoesp(0)=$CR

tecoesp(1)=$ESC

tecoesp(2)=$BS

tecoesp(3)=" G"

tecoesp(4)=" O"

tecoesp(5)=" I"

tecoesp(6)=" Q"

tecoesp(7)=" H"

tecoesp(8)=" P"

tecoesp(9)=" K"

tecoesp(10)=" M"

tecoesp(11)=" S"

 

fundo=0

aju=-1

kbd=-1

stt=-1

gra=-1

corfile(0)=%RGB_DARKGRAY

corfile(1)=%RGB_BROWN

 

hico(0)=%RGB_DARKGRAY

hico(1)=fundo

 

pausa=24

desc=-150

desy=-50

grafy=-90

cormos(0)=%RGB_SILVER

cormos(2)=fundo

 

y=11   REM <- Number of (56 bit)=12 (0 to 11)

yy=(y+1)\2

 

DIM x(y) AS LOCAL QUAD

DIM p(y) AS LOCAL LONG

 

mtp=2000

pap=1

DIM w(mtp) AS LONG

DIM Listing(mtp) AS DIRDATA

 

tec(0) ="Enter"

tec(1) ="Esc"

tec(2) ="BkSp"

tec(3) ="Home"

tec(4) ="End"

tec(5) ="PgUp"

tec(6) ="PgDn"

tec(11)="Del"

 

aj(0)="Arrows Up | Down "

aj(1)="Arrows Left | Right "

aj(2)="PgUp | PgDn "

aj(3)="Home | End "

aj(4)="Enter "

aj(5)="Escape "

aj(6)="Delete "

aj(7)="Character "

aj(8)="Bk Sp "

aj(9)="Author "

 

aj1(0)="Move one file at a time"

aj1(1)="Move one file | byte | character at a time"

aj1(2)="Move several files | bytes"

aj1(3)="Goes to first | last file | byte"

aj1(4)="Input the key and encrypt | decrypt file"

aj1(5)="Backwards"

aj1(6)="Twice, erase selected file"

aj1(7)="Find file by the first character"

aj1(8)="Delete characters in the key"

aj1(9)="Ribeiro Alvo"

 

bj(0)="Encrypt | Decrypt file"

bj(1)="Find encrypted files"

bj(2)="Process file statistics"

bj(3)="Show | hide keyboard"

bj(4)="Show | hide bytes and bits"

bj(5)="Show | hide this help window"

bj(7)=""

bj(8)=""

bj(9)=""

 

fr(0)="Entropy "

fr(1)="Chi Square "

fr(2)="Aritmetic Mean "

fr(3)="Monte Carlo Pi "

fr(4)="Serial Correlation "

fr(5)="Bits Off "

fr(6)="Bits On "

fr(7)="Bits Total "

fr(8)="Bits Off Ratio "

fr(9)="Bits On Ratio "

fr(10)="Expected Value "

 

car(0)= "NUL (Null)"

car(1)= "SOH (Start of heading)"

car(2)= "STX (Start of text)"

car(3)= "ETX (End of text)"

car(4)= "EOT (End of transmission)"

car(5)= "ENQ (Enquiry)"

car(6)= "ACK (Acknowledge)"

car(7)= "BEL (Bell)"

car(8)= "BS (Backspace)"

car(9)= "TAB (Horizontal tab)"

car(10)="LF (Line feed New line)"

car(11)="VT (Vertical tab)"

car(12)="FF (Form feed New page)"

car(13)="CR (Carriage return)"

car(14)="SO (Shift out)"

car(15)="SI (Shift in)"

car(16)="DLE (Data link escape)"

car(17)="DC1 (Device control 1)"

car(18)="DC2 (Device control 2)"

car(19)="DC3 (Device control 3)"

car(20)="DC4 (Device control 4)"

car(21)="NAK (Negative acknowledge)"

car(22)="SYN (Synchronous idle)"

car(23)="ETB (End of trans. block)"

car(24)="CAN (Cancel)"

car(25)="EM (End of medium)"

car(26)="SUB (Substitute)"

car(27)="ESC (Escape)"

car(28)="FS (File separator)"

car(29)="GS (Groupe separator)"

car(30)="RS (Record separator)"

car(31)="US (Unit separator)"

car(32)="SPC (Space)"

 

FOR i=33 TO 255

 car(i)=CHR$(i)

NEXT

 

car(127)="DEL (Delete)"

 

DESKTOP GET CLIENT TO xsize, ysize

GRAPHIC WINDOW NEW  "Adhcifar 8",-3, 0, xsize, ysize TO hWin

 

GRAPHIC CLEAR fundo

GRAPHIC GET PPI TO nWidth, nHeight

 

per=96/nWidth

 

LOCAL hThread AS DWORD

THREAD CREATE RedrawGraphics (hWin) TO hThread

SLEEP 150

 

GRAPHIC BOX (20,80+desy)-(47,130+desy),,btec,ftec

GRAPHIC BOX (30,90+desy)-(37,100+desy),,btec,fundo

GRAPHIC BOX (30,110+desy)-(37,130+desy),,btec,fundo

GRAPHIC BOX (31,111+desy)-(36,130+desy),,fundo,fundo

 

GRAPHIC BOX (49,80+desy)-(76,130+desy),,btec,ftec

GRAPHIC BOX (49,80+desy)-(66,100+desy),,btec,fundo

GRAPHIC BOX (59,110+desy)-(66,120+desy),,btec,fundo

GRAPHIC BOX (49,80+desy)-(65,99+desy),,fundo,fundo

 

GRAPHIC BOX (78,80+desy)-(105,130+desy),,btec,ftec

GRAPHIC BOX (88,80+desy)-(105,100+desy),,btec,fundo

GRAPHIC BOX (88,110+desy)-(95,130+desy),,btec,fundo

GRAPHIC BOX (89,80+desy)-(105,99+desy),,fundo,fundo

GRAPHIC BOX (89,111+desy)-(94,131+desy),,fundo,fundo

 

GRAPHIC BOX (107,99+desy)-(126,130+desy),,btec,ftec

GRAPHIC BOX (117,110+desy)-(126,120+desy),,btec,fundo

GRAPHIC BOX (118,111+desy)-(126,119+desy),,fundo,fundo

 

GRAPHIC BOX (128,90+desy)-(139,130+desy),,btec,ftec

GRAPHIC BOX (128,95+desy)-(139,100+desy),,btec,fundo

GRAPHIC BOX (128,96+desy)-(139,99+desy),,fundo,fundo

 

GRAPHIC BOX (141,80+desy)-(156,130+desy),,btec,ftec

GRAPHIC BOX (151,90+desy)-(156,100+desy),,btec,fundo

GRAPHIC BOX (152,91+desy)-(156,99+desy),,fundo,fundo

GRAPHIC BOX (152,110+desy)-(156,130+desy),,btec,fundo

GRAPHIC BOX (153,111+desy)-(159,130+desy),,fundo,fundo

 

GRAPHIC BOX (158,99+desy)-(183,130+desy),,btec,ftec

GRAPHIC BOX (167,109+desy)-(174,115+desy),,btec,fundo

GRAPHIC BOX (167,122+desy)-(174,130+desy),,btec,fundo

GRAPHIC BOX (168,123+desy)-(173,130+desy),,fundo,fundo

 

GRAPHIC BOX (185,99+desy)-(204,130+desy),,btec,ftec

GRAPHIC BOX (195,110+desy)-(204,130+desy),,btec,fundo

GRAPHIC BOX (196,111+desy)-(204,130+desy),,fundo,fundo

 

RANDOMIZE TIMER

FOR u=1 TO 20000

 pxi=20+185*RND

 pyi=80+50*RND+desy

 IF GRAPHIC (PIXEL, pxi,pyi)=ftec THEN GRAPHIC SET PIXEL (pxi,pyi),%GRAY

 IF GRAPHIC (PIXEL, pxi,pyi)=btec THEN GRAPHIC SET PIXEL (pxi+2,pyi+2),%RGB_DARKGRAY

NEXT

 

FOR ii=0 TO 5

 px(ii)=(ii*32+20)

 py(ii)=145+desy

NEXT

pyd=py(1)

GOSUB buttons

 

tabela=""

FOR ii=32 TO 126

 FOR u=1 TO 10

  IF CHR$(ii)=MID$("\/:*?""<>|",u,1) THEN saitab

 NEXT

 tabela=tabela+CHR$(ii)

 saitab:

NEXT

 

FONT NEW "Arial",12*per,1,1 TO fhndl

GRAPHIC SET FONT fhndl

 

GRAPHIC TEXT SIZE "File " TO nfile,altura

nfile+=20

GRAPHIC TEXT SIZE "Size " TO sfile,nHeightkey

sfile+=20

 

GRAPHIC SET POS (20,200-4*altura)

GRAPHIC COLOR %GRAY,fundo

GRAPHIC PRINT "Folder ";

GRAPHIC COLOR corfile(0),fundo

GRAPHIC PRINT CURDIR$

 

GRAPHIC SET POS (20,200-3*altura)

GRAPHIC COLOR %GRAY,fundo

GRAPHIC PRINT "File";

GRAPHIC SET POS (20-2,200-2*altura)

GRAPHIC PRINT "Size ";

 

FOR ii=0 TO 255

 bir=BIN$(ii)

 FOR u=1 TO 8

  IF MID$(bir,u,1)="1" THEN INCR bitum(ii)

 NEXT

NEXT

 

proc="scroll"

GOSUB espera

 

 

REM ----------------------------------------------------------------------------------------------------------------

 

NOVO:

 

nkeyi=0

GOSUB limpa

proc="scroll"

IF ini=pav THEN novo1

 

DO

 GOSUB espera

NOVO1:

stt=-1

pausa=24

men=""

pav=pap

IF LEN(k)=2 THEN

 ky=RIGHT$(k,1)

 IF ky="S" AND mfp>-1 THEN GOSUB DELETA

 IF ky="H" OR ky="K" THEN pap-=1

 IF ky="P" OR ky="M" THEN pap+=1

 IF ky="G" THEN pap=1

 IF ky="O" THEN pap=mfp

 IF ky="Q" THEN pap=pap-lim

 IF ky="I" THEN pap=pap+lim

 IF pap>mfp THEN pap=mfp

 IF pap<1   THEN pap=1

END IF

 

IF k=" F" AND crypt=0 THEN

 GRAPHIC SET POS (20,200)

 GRAPHIC COLOR %GRAY

 GRAPHIC PRINT "No encrypted files";SPACE$(50)

 SLEEP 1000

 nkeyi=0

 GOSUB limpa

END IF

 

IF crypt>0 THEN

IF LEN(k)=2 AND RIGHT$(k,1)="F" THEN

 volta:

 FOR ii=pap+1 TO mfp

  IF w(ii)=1 THEN pap=ii:EXIT FOR

 NEXT

 IF ii>mfp THEN pap=0:GOTO volta

 ky="":k=""

END IF

END IF

 

IF ASC(k)>32 AND ASC(k)<127 THEN GOSUB ALFA

IF ini<>pap THEN GOSUB LISTA:ini=pap

 

selecfile:

IF k=$CR THEN

 GOSUB VERFILE

 IF w(pap)=0 THEN

  os=SPACE$(8)+"["

  FOR ii=2 TO 8

   MID$(os,ii)=MID$(tabela,1+FRAC(TIMER/ii)*86-9,1)

  NEXT

 ELSE

  os=MID$(Listing(pap-1).filename,LEN(Listing(pap-1).filename)-8,9)

 END IF

 nWidthkey=0

 GOTO CHAVE

END IF

 

LOOP

 

REM ----------------------------------------------------------------------------------------------------------------

CHAVE:

 

GOSUB limpa

 

GRAPHIC BOX (20,203)-(30,198+altura),30,%GRAY,%GRAY

GRAPHIC BOX (23,206)-(27,195+altura),30,fundo,fundo

GRAPHIC BOX (30,199+altura/2)-(50,202+altura/2),,%GRAY,%GRAY

GRAPHIC BOX (40,203+altura/2)-(43,207+altura/2),,%GRAY,%GRAY

GRAPHIC BOX (45,203+altura/2)-(48,207+altura/2),,%GRAY,%GRAY

 

GRAPHIC TEXT SIZE "Key " TO nkey,nHeightkey

nkeyi=nkey

RESET pcp,lpcp,keys,leftkeys,rightkeys

proc="the key"

poscur=20+nkey

 

DO

 GOSUB espera

CHAV:

IF k=$ESC THEN

 keys=""

 GRAPHIC BOX (0,200 )-(xsize,200+2*altura),,fundo,fundo

 proc="scroll"

 CLOSE 1

 GOTO NOVO1

END IF

 

chav2:

 

REM  ---------------------- IV/Nonce (keys), (m) and small blocks (pw) values ----------------------------------

 

IF k=$CR AND keys<>"" THEN

 kbd=-1

 GOSUB limpeza

 GOSUB LIMPA

 lkey=7*y+7

 keys=LEFT$ (keys + MID$(os,2,7) + NUL$(lkey) ,lkey)

 

 FOR u=1 TO lkey

  MID$(keys,u,1)=CHR$(( ASC(MID$(keys,u,1)) + ASC(MID$(os,1+u MOD 7,1)) + u) MOD 256)

 NEXT

 

 cut=0

 FOR u=0 TO y

  blom=NUL$(7)

  FOR i=1 TO 7

   MID$(blom,8-i,1)=MID$(keys,7*u+i,1)

  NEXT

 cut+=CVQ(blom) MOD lkey

 NEXT

 cut=cut MOD lkey

 keys=RIGHT$(keys,cut)+LEFT$(keys,lkey-cut)

 

 FOR u=0 TO y

  x(u)=CVQ(MID$(keys,7*u+1,7))

 NEXT

 

RESET keys,leftkeys,rightkeys

cut=50000+(x(y) MOD 100000)

m=2^62-1

FOR ii=0 TO cut

 FOR u=0 TO y

  x(u)=( x(u) + x(y-u) ) MOD m

 NEXT

NEXT

 

 GOTO CRYPTA

END IF

 

REM ----------------------------------------------------------------------------------------------------------------

MOSTRAR:

 

IF ASC(k)>31 AND ASC(k)<127 AND pcp<(y*7) AND LEN(k)=1 THEN

 leftkeys+=k

 keys=leftkeys+rightkeys

 pcp=LEN(keys)

 INCR lpcp

END IF

 

 IF k=$BS AND lpcp>0 THEN

  keys=LEFT$(keys,lpcp-1)+RIGHT$(keys,pcp-lpcp)

  pcp=LEN(keys)

  DECR lpcp

  leftkeys=LEFT$(leftkeys,lpcp)

 END IF

 

IF LEN(k)=2 AND pcp>0 THEN

 

 ky=RIGHT$(k,1)

 IF ky="S" AND pcp>0 THEN

  rightkeys=RIGHT$(rightkeys,pcp-lpcp-1)

  pcp=LEN(leftkeys+rightkeys)

 END IF

 IF ky="K" AND lpcp>0 THEN DECR lpcp

 IF ky="M" AND lpcp<pcp THEN INCR lpcp

 IF ky="G" THEN lpcp=0

 IF ky="O" THEN lpcp=pcp

END IF

 

 GRAPHIC COLOR cormos(0)

 leftkeys=LEFT$(keys,lpcp)

 rightkeys=RIGHT$(keys,pcp-lpcp)

 keys=leftkeys+rightkeys

 

 GRAPHIC TEXT SIZE leftkeys TO nWidthkey,nHeightkey

 poscur=nkey+20+nWidthkey

 

 GRAPHIC SET POS (nkey+20,200)

 GRAPHIC PRINT keys;SPACE$(8);

 

LOOP

 

REM ----------------------------------------------------------------------------------------------------------------

CRYPTA:

 

GOSUB VERFILE

CLOSE

 

pcp=0

pausa=0

IF kbd=-1 THEN GRAPHIC BOX (0,200)-(xsize,ysize),,fundo,fundo

 

proc=Ende(w(pap))

IF w(pap)=1 THEN os=MID$(Listing(pap-1).filename,LEN(Listing(pap-1).filename)-8,9)

 

IF w(pap)=0 THEN NAME Listing(pap-1).filename AS Listing(pap-1).filename+os:Listing(pap-1).filename = Listing(pap-1).filename+os

IF w(pap)=1 THEN NAME Listing(pap-1).filename AS LEFT$(Listing(pap-1).filename,LEN(Listing(pap-1).filename)-9):Listing(pap-1).filename=LEFT$(Listing(pap-1).filename,LEN(Listing(pap-1).filename)-9)

crypt+=2*w(pap)-1

w(pap)=2^w(pap)-1

 

GOSUB VERFILE

 

GRAPHIC SET POS (20,200)

GRAPHIC COLOR %GRAY

GRAPHIC PRINT proc;

GRAPHIC TEXT SIZE proc TO nkey,nHeightkey

 

FOR i=0 TO tss STEP blksize

 GET$ 1,blksize,block

 blkk=LEN(block)

 GOSUB evolution

 cut=x(y) MOD blkk

 IF w(pap)=1 THEN

  block=STRREVERSE$(block)

  block=RIGHT$(block,cut)+LEFT$(block,blkk-cut)

 END IF

 tu=STRPTR(block)

  st=0

  y=2*(x(y) MOD yy)+1

  m=2^(56+x(y) MOD 7)+y

 DO

  FOR u=0 TO y

   IF st>blkk THEN EXIT LOOP

   x(u)=(x(u)+x(y-u)) MOD m

   POKE QUAD,tu+st,(PEEK(QUAD,tu+st) XOR x(u))

   st+=7

  NEXT

 LOOP

 IF w(pap)=0 THEN

  block=RIGHT$(block,blkk-cut)+LEFT$(block,cut)

  block=STRREVERSE$(block)

 END IF

 SEEK 1,i

 PUT$ 1, block

NEXT

 

CLOSE 1

GOSUB limpa

 

pav=0

pausa=24

pcp=0

y=2*yy-1

 

 

GOTO NOVO

 

REM ----------------------------------------------------------------------------------------------------------------

ALFA:

contalfa=0

ii=pap

DO

 IF LEFT$(Listing(ii).filename,1)=k THEN

  pap=ii+1

  papold=pap

  RETURN

 END IF

 INCR contalfa

 INCR ii

 IF ii>mfp THEN ii=0

LOOP  UNTIL contalfa=mfp

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

LISTA:

 

IF mfp=0 THEN VERFILE

GRAPHIC COLOR corfile(w(pap))

GRAPHIC SET POS (nfile,200-3*altura)

GRAPHIC PRINT LEFT$(Listing(pap-1).filename,LEN(Listing(pap-1).filename)-9*w(pap))+SPACE$(350)

GRAPHIC COLOR corfile(0)

GRAPHIC SET POS (sfile,200-2*altura)

GRAPHIC PRINT LTRIM$(FORMAT$( MAK(QUAD,Listing(pap-1).FileSizeLow,Listing(pap-1).FileSizeHigh),"### ### ### ### ###"), ANY " ")+SPACE$(60)

IF w(pap)=1 THEN butcor=fundo ELSE butcor=%RGB_DARKGRAY

GRAPHIC BOX (px(0)+6,py(0)+7)-(px(0)+8,py(0)+9),,butcor,butcor

IF crypt>0 THEN corru=%RGB_BROWN ELSE corru=%RGB_DARKGRAY

GRAPHIC BOX (px(1)+6,py(1)+6)-(px(1)+14,py(1)+14),,funbot,corru

 

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

DELETA:

 

proc="Erased "

GRAPHIC SET POS (20,200)

GRAPHIC COLOR corfile(1)

GRAPHIC PRINT "Delete"

GOSUB espera

IF LEN(k)=2 AND RIGHT$(UCASE$(k),1)="S" THEN VAI

GOTO NOVO

VAI:

GOSUB limpa

GRAPHIC SET POS (20,200)

GRAPHIC COLOR %GRAY

GRAPHIC PRINT proc;

GRAPHIC TEXT SIZE proc TO nkey,nHeightkey

pausa=0

GOSUB verfile

GRAPHIC COLOR %GRAY

FOR i=0 TO tss STEP blksize

 SEEK 1,i

 GET$ 1,blksize,block

 GOSUB evolution

 SEEK 1,i

 PUT$ 1, STRING$(blksize,FIX(RND*256))

NEXT

 

GRAPHIC COLOR %GRAY

GRAPHIC SET POS (20,200)

GRAPHIC PRINT "Erased"+SPACE$(50);

CLOSE 1

KILL Listing(pap-1).filename

IF pap>1 THEN pap-=1

GOSUB limpa

iu=0

GOSUB findfiles

GOSUB lista

IF mfp=0 THEN verfile

RESET k,ky

pausa=24

GOTO novo

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

VERFILE:

 

IF mfp=0 THEN men="Empty folder":GOTO erro

SETATTR Listing(pap-1).filename,32

CLOSE

OPEN Listing(pap-1).filename FOR BINARY AS 1 BASE =0

IF FILEATTR(1,0)=0 THEN men="Already open":CLOSE:GOTO ERRO

blksize=IIF(LOF(1)<=16384,LOF(1),16384)

tss=INT(blksize*LOF(1)/blksize)-1

 

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

ERRO:

 

BEEP

IF mfp=0 THEN

 GRAPHIC BOX (0,200-3*altura)-(xsize,ysize),,fundo,fundo

 GRAPHIC SET POS (20,200-3*altura)

 GRAPHIC PRINT men

 SLEEP 2500

 hVin=0:GOTO Exitprog

END IF

 GRAPHIC BOX (0,200)-(xsize,200+2*altura),,fundo,fundo

 GRAPHIC SET POS (20,200)

 GRAPHIC COLOR corfile(1)

 GRAPHIC PRINT men

 SLEEP 1500

 GRAPHIC BOX (0,200)-(xsize,200+altura),,fundo,fundo

 men=""

 GOSUB espera

 GOTO NOVO1

 

REM ----------------------------------------------------------------------------------------------------------------

LIMPA:

GRAPHIC BOX (20+nkeyi,200 )-(xsize,200+2*altura),,fundo,fundo

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

LIMPEZA:

 GRAPHIC BOX (0,200+2*altura)-(xsize,ysize+200),,fundo,fundo

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

AJUDA:

 

GOSUB limpeza

kbd=-1

 

GRAPHIC COLOR %GRAY

FOR u=0 TO 5

 px(u)=20

 py(u)=342+desc+(u+2)*altura*11/8*.98

 GRAPHIC SET POS (47,342+2+desc+(u+1)*altura*11/8+altura*1.257)

 GRAPHIC PRINT bj(u);

NEXT

 

GOSUB buttons

 

FOR u=0 TO 9

 GRAPHIC SET POS (20,342+desc+(u+9.7)*altura*1.257)

 GRAPHIC COLOR %RGB_SILVER

 GRAPHIC PRINT aj(u);

 GRAPHIC COLOR %GRAY

 GRAPHIC PRINT aj1(u);

NEXT

 

FOR u=0 TO 5

 px(u)=(u*32+20)

 py(u)=145+desy

NEXT

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

ESPERA:

 

DO

 IF proc="the key" AND men="" THEN

  IF k="" THEN corcur=IIF(FRAC(TIMER)<.4,%RGB_DARKGRAY,fundo) ELSE  corcur=%RGB_DARKGRAY

   GRAPHIC LINE (poscur,200)-(poscur,200+altura),corcur

  END IF

 IF hVin=0 THEN Exitprog

 GRAPHIC INKEY$ TO k

 GOSUB findfiles

 SLEEP pausa

LOOP UNTIL clic>0 OR k<>""

 

IF LEN(k)=2 THEN

 FOR u=0 TO 11

  IF k=tecoesp(u) THEN EXIT FOR

 NEXT

END IF

 

espera2:

 

iu=-1

IF clic>0 THEN

 GOSUB MOUSEPRESSED

  IF proc="the key" AND iu=2 THEN RETURN

 bew:

 

 IF iu=2 THEN kbd=-1:GOSUB Statistics

 IF iu=5 THEN

  IF aju=-1 THEN

     GOSUB ajuda

     aju=1

   ELSE

     GOSUB limpeza

     aju=-1

  END IF

  RETURN

 END IF

 

 IF iu=0 AND keys<>"" THEN k=$CR:iu=-1

 

 IF proc="scroll" THEN

  IF iu=1 THEN

   k=" F"

   IF aju=1 THEN GOSUB limpeza:aju=-1

   RETURN

  END IF

 

  IF iu=4 THEN GOSUB GRAFICO

  IF iu=0 THEN k=$CR:iu=-1

 END IF

 

IF iu=3 THEN GOSUB teclado

IF proc="the key" AND iu=0 THEN k=$ESC:iu=-1

IF kbd=1 AND cy>398+desc AND cy<441+desc THEN

 

u=-1

dl=91

 FOR ii=0 TO 11

  IF ii=11 THEN dl=97

  IF cx>(21+ii*66) AND cx<(dl-8+ii*66) THEN k=tecoesp(ii):u=0:EXIT FOR

 NEXT

 

 IF proc="Erased " AND cx>941 AND cx<1013 THEN k=" S":ii=11

 IF u=0 THEN

 IF ii=11 THEN dl=97

 GRAPHIC BOX (21+ii*66,398+desc)-(dl+ii*66-8,439+desc),20,fundo,ftec

 

IF ii<7 OR ii=11 THEN

 GRAPHIC COLOR ltec,ftec

 GRAPHIC TEXT SIZE tec(ii) TO tex,tey

 GRAPHIC SET POS (21+(8-tex)/2+27+ii*66,400+desc+(41-tey)/2)

 GRAPHIC PRINT tec(ii)

END IF

 

IF ii>6 AND ii<11 THEN

 GRAPHIC WIDTH 2

 IF ii=7 THEN

  GRAPHIC LINE (514,407+desc)-(514,427+desc),ltec

  GRAPHIC LINE (509,412+desc)-(514,407+desc),ltec

  GRAPHIC LINE (513,407+desc)-(518,412+desc),ltec

  GRAPHIC LINE (509,412+desc)-(518,412+desc),ltec

 END IF

 

 IF ii=8 THEN

  GRAPHIC LINE (581,411+desc)-(581,431+desc),ltec

  GRAPHIC LINE (576,426+desc)-(581,431+desc),ltec

  GRAPHIC LINE (580,431+desc)-(585,426+desc),ltec

  GRAPHIC LINE (576,427+desc)-(585,427+desc),ltec

 END IF

 

 IF ii=9 THEN

  GRAPHIC LINE (635,419+desc)-(654,419+desc),ltec

  GRAPHIC LINE (634,418+desc)-(639,423+desc),ltec

  GRAPHIC LINE (634,419+desc)-(639,414+desc),ltec

  GRAPHIC LINE (639,415+desc)-(639,423+desc),ltec

 END IF

 

 IF ii=10 THEN

  GRAPHIC LINE (724,420+desc-1)-(704,420+desc-1),ltec

  GRAPHIC LINE (724,419+desc-1)-(719,424+desc-1),ltec

  GRAPHIC LINE (724,420+desc-1)-(719,415+desc-1),ltec

  GRAPHIC LINE (720,416+desc-1)-(720,424+desc-1),ltec

 END IF

 GRAPHIC WIDTH 1

END IF

 

 SLEEP 100

 GRAPHIC BOX (21+ii*66,398+desc)-(dl+ii*66-8,439+desc),20,btec,ftec

 

  IF ii>6 AND ii<11 THEN

    GRAPHIC WIDTH 2

    IF ii=7 THEN

     GRAPHIC LINE (514,409+desc)-(514,429+desc),ltec

     GRAPHIC LINE (509,414+desc)-(514,409+desc),ltec

     GRAPHIC LINE (513,409+desc)-(518,414+desc),ltec

     GRAPHIC LINE (509,414+desc)-(518,414+desc),ltec

   END IF

 

    IF ii=8 THEN

     GRAPHIC LINE (581,409+desc)-(581,429+desc),ltec

     GRAPHIC LINE (576,424+desc)-(581,429+desc),ltec

     GRAPHIC LINE (580,429+desc)-(585,424+desc),ltec

     GRAPHIC LINE (576,425+desc)-(585,425+desc),ltec

    END IF

 

    IF ii=9 THEN

     GRAPHIC LINE (637,419+desc)-(656,419+desc),ltec

     GRAPHIC LINE (636,418+desc)-(641,423+desc),ltec

     GRAPHIC LINE (636,419+desc)-(641,414+desc),ltec

     GRAPHIC LINE (641,415+desc)-(641,423+desc),ltec

    END IF

 

   IF ii=10 THEN

    GRAPHIC LINE (722,419+desc)-(702,419+desc),ltec

    GRAPHIC LINE (722,418+desc)-(717,423+desc),ltec

    GRAPHIC LINE (722,419+desc)-(717,414+desc),ltec

    GRAPHIC LINE (718,415+desc)-(718,423+desc),ltec

   END IF

 

   GRAPHIC WIDTH 1

   END IF

 

  IF ii<7 OR ii=11 THEN

   GRAPHIC TEXT SIZE tec(ii) TO tex,tey

   GRAPHIC SET POS (21+(8-tex)/2+27+ii*66,398+desc+(41-tey)/2+0)

   GRAPHIC PRINT tec(ii)

  END IF

  GRAPHIC COLOR ltec,fundo

 END IF

END IF

 

IF kbd=1 THEN

 

 IF cy>443+desc AND cy<483+desc OR cy>486+desc AND cy<525+desc OR cy>528+desc AND cy<566+desc OR cy>569+desc AND cy<607+desc OR cy>636-25+desc AND cy<648+desc THEN

 

 IF cy>443+desc AND cy<483+desc THEN i=0

 IF cy>486+desc AND cy<525+desc THEN i=1

 IF cy>528+desc AND cy<566+desc THEN i=2

 IF cy>569+desc AND cy<632+desc THEN i=3

 IF cy>607+desc AND cy<648+desc THEN i=4

 

 FOR ii=0 TO 18

  IF cx>(20+ii*42) AND cx<(64-5+ii*42) THEN

   k=teco(ii+i*19)

  GRAPHIC BOX (21+ii*42,443+desc+i*42)-(59+ii*42,481+desc+i*42),20,fundo

  GRAPHIC COLOR ltec,ftec

  GRAPHIC TEXT SIZE k TO tex,tey

  GRAPHIC SET POS (2+ii*42+(15-tex)/2+30,398+desc+i*42+42+(42-tey)/2+2)

  GRAPHIC PRINT k

 

  SLEEP 100

  GRAPHIC BOX (21+ii*42,443+desc+i*42)-(59+ii*42,481+desc+i*42),20,btec,ftec

  GRAPHIC SET POS (2+ii*42+(15-tex)/2+30,398+desc+i*42+42+(42-tey)/2)

  GRAPHIC PRINT k

 

  GRAPHIC COLOR ltec,fundo

 

 

  END IF

 NEXT

 

END IF

END IF

END IF

 

IF aju=1 THEN GOSUB limpeza:aju=-1

 

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

BUTTONS:

 

borbut=%WHITE-10000

butcor=fundo

funbot=%RGB_DARKGRAY

 

FOR u=0 TO 5

 GRAPHIC BOX (px(u),py(u))-(px(u)+20,py(u)+20),,borbut,funbot

 GRAPHIC BOX (px(u)+1,py(u)+1)-(px(u)+19,py(u)+19),,fundo

NEXT

 

REM Key button

GRAPHIC BOX (px(0)+6,py(0)+4)-(px(0)+14,py(0)+11),,butcor,butcor

GRAPHIC BOX (px(0)+8,py(0)+4+2)-(px(0)+12,py(0)+9),,funbot,funbot

GRAPHIC BOX (px(0)+5,py(0)+9)-(px(0)+15,py(0)+16),,butcor,butcor

 

REM Encryption Files button

GRAPHIC BOX (px(1)+4,py(1)+4)-(px(1)+16,py(1)+16),,butcor,butcor

GRAPHIC BOX (px(1)+5,py(1)+9)-(px(1)+16,py(1)+11),,butcor,butcor

GRAPHIC BOX (px(1)+6,py(1)+6)-(px(1)+14,py(1)+14),,funbot,corru

 

REM Statistic button

GRAPHIC BOX (px(2)+4,py(2)+4)-(px(2)+16,py(2)+16),,butcor,butcor

GRAPHIC BOX (px(2)+6,py(2)+6)-(px(2)+16,py(2)+9),,funbot,funbot

GRAPHIC BOX (px(2)+4,py(2)+11)-(px(2)+14,py(2)+14),,funbot,funbot

 

REM Keyboard

GRAPHIC BOX (px(3)+4,py(3)+4)-(px(3)+16,py(3)+16),,butcor,butcor

GRAPHIC BOX (px(3)+4,py(3)+9)-(px(3)+16,py(3)+11),,funbot,funbot

GRAPHIC BOX (px(3)+9,py(3)+4)-(px(3)+11,py(3)+16),,funbot

 

REM Content

FOR i=0 TO 12 STEP 3

 GRAPHIC BOX (px(4)+3+i,py(4)+4)-(px(4)+5+i,py(4)+16),,butcor,butcor

NEXT

 

 

REM Help

GRAPHIC BOX (px(5)+4,py(5)+4)-(px(5)+16,py(5)+16),,butcor,butcor

GRAPHIC BOX (px(5)+6,py(5)+4)-(px(5)+14,py(5)+9),,funbot,funbot

GRAPHIC BOX (px(5)+6,py(5)+11)-(px(5)+14,py(5)+16),,funbot,funbot

 

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

STATISTICS:

 

stt=stt*-1

IF stt=-1 THEN noret1

 

proc="statistics"

GOSUB limpa

GOSUB limpeza

GOSUB calculador

 

FOR u=0 TO 10

 GRAPHIC SET POS (20,200+u*altura)

 GRAPHIC COLOR %GRAY,fundo

 GRAPHIC PRINT fr(u);

 GRAPHIC COLOR %RGB_DARKGRAY,fundo

 GRAPHIC PRINT tfr(u)

NEXT

 

kbd=-1

aju=-1

ii=-1

 

GOTO noret

 

DO

 GOSUB espera

 IF iu>-1 OR clic>0 THEN noret1

 

 IF LEN(k)=2 THEN

  ky=RIGHT$(k,1)

  IF ky="H" THEN istt-=1

  IF ky="P" THEN istt+=1

  IF ky="I" THEN istt=istt-10

  IF ky="Q" THEN istt=istt+10

  IF ky="G" THEN istt=0

  IF ky="O" THEN istt=255-9

  IF ky="S" THEN istt=127

 

 IF istt<0 THEN istt=0

 IF istt>255-9 THEN istt=255-9

 

 END IF

 

 IF LEN(k)=1 THEN istt=ASC(k)

 noret:

 

 GRAPHIC SET POS (298,200)

 GRAPHIC COLOR %GRAY,fundo

 GRAPHIC PRINT "Observed  Binary        Hex Dec  Code"

 GRAPHIC COLOR %RGB_DARKGRAY,fundo

 

 FOR u=0 TO 9

  GRAPHIC TEXT SIZE LTRIM$(FORMAT$(freqchar(istt+u),"### ### ### ###"), ANY " ") TO nWidthkey,nHeightkey

  GRAPHIC SET POS (270,200+(u+1)*altura)

  GRAPHIC PRINT SPACE$(200)

  GRAPHIC SET POS (370-nWidthkey,200+(u+1)*altura)

  GRAPHIC PRINT LTRIM$(FORMAT$(freqchar(istt+u),"### ### ### ###"), ANY " ")+SPACE$(200)

 

  GRAPHIC SET POS (382,200+(u+1)*altura)

  GRAPHIC PRINT RIGHT$("00000000"+BIN$(istt+u),8)+"  "

 

  GRAPHIC SET POS (465,200+(u+1)*altura)

  GRAPHIC PRINT RIGHT$("0"+HEX$(istt+u),2)+SPACE$(30)

 

  GRAPHIC TEXT SIZE STR$(istt+u) TO nWidthkey,nHeightkey

  GRAPHIC SET POS (523-nWidthkey,200+(u+1)*altura)

  GRAPHIC PRINT STR$(istt+u)

 

  GRAPHIC SET POS (535,200+(u+1)*altura)

  GRAPHIC PRINT car(istt+u)+SPACE$(250)

 NEXT

LOOP

 

noret1:

 

GRAPHIC BOX (0,200)-(xsize,ysize+200),,fundo,fundo

 

IF iu=2 THEN novo

IF iu=0 THEN k=$CR:iu=-1

IF iu=5 THEN

  GOSUB ajuda

  GOTO novo

END IF

 

IF iu=1 THEN k=" F"

proc="scroll"

 

IF iu=3 THEN bew

IF iu=4 THEN GOSUB grafico

iu=-1

 

GOTO espera2

 

REM ----------------------------------------------------------------------------------------------------------------

CALCULADOR:

 

RESET pausa,pii,somacorrel1,somacorrel2,somachar,chi,entropy,somabit,freqchar()

 

GOSUB verfile

 

totalbits=8*LOF(1)

 

GRAPHIC SET POS (20,200)

GRAPHIC COLOR %GRAY

GRAPHIC PRINT "Statisting ";

GRAPHIC TEXT SIZE "Statisting " TO nkey,nHeightkey

 

FOR i=0 TO tss STEP blksize

 GET$ 1,blksize,block

 GOSUB evolution

 ute=STRPTR(block)

 blkk=LEN(block)

 

 FOR u=ute TO blkk+ute-1 STEP 2

  IF u>ute+blkk THEN terminar

  lc0=PEEK(u)

  lc1=PEEK(u+1)

  freqchar(lc0)+=1

  freqchar(lc1)+=1

  somacorrel1+=16*(lc0*lc1-128*(lc0+lc1)+16384-2)

  somacorrel2+=(lc1*lc1-128*lc1+131072-2)

  IF lc0*lc0 + lc1*lc1 < 65205 THEN pii+=8

 NEXT

 

NEXT

terminar:

IF LOF(1) MOD 2=1 THEN freqchar(PEEK(blkk+ute))-=1

 

FOR i=0 TO 255

 somachar+=freqchar(i)*i

 somabit+=freqchar(i)*bitum(i)

 chi+=((freqchar(i)-LOF(1)/256)^2)/(LOF(1)/256)  REM Chi square distribution

 entropy+=freqchar(i)/LOF(1)*LOG2(freqchar(i)/LOF(1)) REM Entropy

NEXT

entropy=-entropy

 

REM Serial correlation

correl=somacorrel1/somacorrel2

 

REM Monte Carlo PI

montecarlopi=pii/(LOF(1)+1)

 

REM aritmetic media

media=somachar/LOF(1)

 

tfr(0)=FORMAT$(entropy,"0.000000")

tfr(1)=FORMAT$(chi,"0.00")

tfr(2)=FORMAT$(media,"0.0000")

tfr(3)=FORMAT$(montecarlopi,"0.000000000")

tfr(4)=FORMAT$(correl,"0.000000;-0.000000")

tfr(5)=LTRIM$(FORMAT$(totalbits-somabit,"### ### ### ### ###"), ANY " ")

tfr(6)=LTRIM$(FORMAT$(somabit,"### ### ### ### ###"),ANY " ")

tfr(7)=LTRIM$(FORMAT$(totalbits,"### ### ### ### ###"), ANY " ")

tfr(8)=FORMAT$(somabit/totalbits,"0.000000")

tfr(9)=FORMAT$((totalbits-somabit)/(totalbits),"0.000000")

tfr(10)=LTRIM$(FORMAT$(LOF(1)/256,"### ### ### ### ###"), ANY " ")

 

CLOSE 1

GOSUB limpa

pausa=24

 

GRAPHIC BOX (0,200)-(xsize,200+2*altura),,fundo,fundo

 

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

TECLADO:

 

kbd=kbd*-1

GOSUB limpeza

stt=-1

aju=-1

clic=0

IF kbd=-1 OR mfp=0 THEN RETURN

xx=INT(95*FRAC(TIMER))+1

letra=RIGHT$(CHR$(32 TO 126),xx+1)+LEFT$(CHR$(32 TO 126),96-xx)

 

FOR uu=0 TO 94

 teco(uu)=MID$(letra,uu+1,1)

NEXT

 

GRAPHIC COLOR ltec,ftec

 

 

dl=0

FOR uu=0 TO 11

 IF uu=11 THEN dl=6

 GRAPHIC BOX (21+uu*66,398+desc)-(dl+91+uu*66-8,440+desc-1),20,btec,ftec

 GRAPHIC TEXT SIZE tec(uu) TO tex,tey

 GRAPHIC SET POS (21+(8-tex)/2+27+uu*66,398+desc+(41-tey)/2)

 GRAPHIC PRINT tec(uu)

NEXT

 

GRAPHIC WIDTH 2

GRAPHIC LINE (514,409+desc)-(514,429+desc),ltec

GRAPHIC LINE (509,414+desc)-(514,409+desc),ltec

GRAPHIC LINE (513,409+desc)-(518,414+desc),ltec

GRAPHIC LINE (509,414+desc)-(518,414+desc),ltec

 

GRAPHIC LINE (581,409+desc)-(581,429+desc),ltec

GRAPHIC LINE (576,424+desc)-(581,429+desc),ltec

GRAPHIC LINE (580,429+desc)-(585,424+desc),ltec

GRAPHIC LINE (576,425+desc)-(585,425+desc),ltec

 

GRAPHIC LINE (637,419+desc)-(656,419+desc),ltec

GRAPHIC LINE (636,418+desc)-(641,423+desc),ltec

GRAPHIC LINE (636,419+desc)-(641,414+desc),ltec

GRAPHIC LINE (641,415+desc)-(641,423+desc),ltec

 

GRAPHIC LINE (722,419+desc)-(702,419+desc),ltec

GRAPHIC LINE (722,418+desc)-(717,423+desc),ltec

GRAPHIC LINE (722,419+desc)-(717,414+desc),ltec

GRAPHIC LINE (718,415+desc)-(718,423+desc),ltec

GRAPHIC WIDTH 1

 

FOR u=1 TO 5

 FOR uu=0 TO 18

  GRAPHIC TEXT SIZE teco(19*(u-1)+uu) TO tex,tey

  GRAPHIC BOX (21+uu*42,401+desc+u*42)-(64+uu*42-5,444+desc+u*42-5),20,btec,ftec

  GRAPHIC SET POS (2+uu*42+(15-tex)/2+30,398+desc+u*42+(42-tey)/2)

  GRAPHIC PRINT teco(19*(u-1)+uu)

 NEXT

NEXT

 

GRAPHIC COLOR fundo,fundo

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

EVOLUTION:

 

GRAPHIC INKEY$ TO k

IF k=$ESC THEN

 CLOSE

 GOTO novo

END IF

 

GRAPHIC COLOR corfile(0),fundo

GRAPHIC SET POS (nkey+20,200)

GRAPHIC PRINT STR$(INT(i/tss*100))+"%"

IF i/tss*100>99.99 THEN

 GRAPHIC SET POS (20,200)

 GRAPHIC PRINT SPACE$(200)

END IF

 IF hVin=0 THEN Exitprog

RETURN

 

REM ----------------------------------------------------------------------------------------------------------------

GRAFICO:

RESET oldle()

aju=-1

stt=-1

kbd=-1

ingr=0

oldingr=0

GOSUB limpeza

GOSUB verfile

 

blgr=LOF(1)

IF blgr*24>xsize-48 THEN ligr=(xsize-48)\24 ELSE ligr=blgr

 

clic=0

GOTO inigra

 

DO

dair:

 DO

  IF hVin=0 THEN Exitprog

  GRAPHIC INKEY$ TO k

  SLEEP 16

 LOOP UNTIL clic=1 OR k<>""

 

 ky=RIGHT$(k,1)

 IF ky="S" THEN dair

 IF (ky="K" OR ky="G") AND oldingr=0 THEN dair

 IF (ky="M" OR ky="O") AND oldingr=blgr-ligr THEN dair

 IF ky="I" AND oldingr=0 THEN  dair

 IF ky="Q" AND oldingr=blgr-ligr THEN dair

 

 IF cxo<>cx OR cyo<>cy THEN

  GRAPHIC BOX (20,200+12.75*altura)-(xsize-15,200+22*altura),,fundo,fundo

  GRAPHIC BOX (24*(cxo\24)-3,502-((500-cyo+grafy)\24)*24+grafy) - (22+24*(cxo\24),477-((500-cyo+grafy)\24)*24+grafy),,fundo

 END IF

 

 IF clic=1 THEN clicado

 

 IF LEN(k)=2 THEN

  IF ky="K" THEN ingr-=1

  IF ky="M" THEN ingr+=1

  IF ky="G" THEN ingr=0

  IF ky="O" THEN ingr=blgr-ligr

  IF ky="I" THEN ingr=ingr-ligr

  IF ky="Q" THEN ingr=ingr+ligr

  IF ingr>blgr-ligr THEN ingr=blgr-ligr

  IF ingr<0 THEN ingr=0

  oldingr=ingr

 

 inigra:

 IF blgr>ligr AND clic=0 THEN cx=22+ingr/blgr*(xsize-52)

 k=""

 inigra2:

 IF clic=0 THEN

  SEEK 1,ingr

  GET$ 1,ligr,blockgr

  ute=STRPTR(blockgr)-1

  fazgra:

  GRAPHIC COLOR %RGB_DARKGRAY,%RGB_DARKSLATEGRAY

  RESET oldle()

 

  FOR i=1 TO ligr

   IF oldle(i)<>MID$(blockgr,i,1) THEN

    oldle(i)=MID$(blockgr,i,1)

 

    FOR u=-1 TO 7

     IF u=-1 THEN sobr=3 ELSE sobr=0

      IF u>-1 AND MID$(RIGHT$("0000000"+BIN$(PEEK (ute+i)),8),u+1,1)="1" THEN corgra=%RGB_DIMGRAY ELSE corgra=0

     GRAPHIC BOX (24*i-1,500-u*24+sobr+grafy)-(20+24*i,479-u*24+grafy),,%RGB_DIMGRAY,%RGB_DARKSLATEGRAY

     IF corgra>0 THEN

      GRAPHIC BOX (24*i+1,481-u*24+sobr+grafy)-(18+24*i,498-u*24+grafy),,%RGB_DARKGRAY

      GRAPHIC BOX (24*i+2,482-u*24+sobr+grafy)-(18+24*i,498-u*24+grafy),,corgra,corgra

     END IF

      IF u=-1 THEN GRAPHIC BOX (24*i-1,500-u*24+sobr+grafy)-(20+24*i,479-u*24+grafy),,,fundo

    NEXT

 

    GRAPHIC TEXT SIZE MID$(blockgr,i,1) TO larg,atu

    GRAPHIC SET POS (24*i-2+(23-larg)/2,505+grafy)

    GRAPHIC COLOR %RGB_DARKGRAY,fundo

    GRAPHIC PRINT MID$(blockgr,i,1)

    oldle(i)=MID$(blockgr,i,1)

 

     GRAPHIC BOX (24*i-1,500+24+sobr+grafy+3)-(20+24*i,479+24+grafy),,%RGB_DIMGRAY

   END IF

  NEXT

 

   GRAPHIC COLOR %GRAY,fundo

   GRAPHIC SET POS (20,200)

   GRAPHIC PRINT "From ";

   GRAPHIC COLOR %RGB_DARKGRAY

   GRAPHIC PRINT LTRIM$(FORMAT$(ingr+1,"### ### ### ### ###"), ANY " ");

 

   GRAPHIC COLOR %GRAY

   GRAPHIC PRINT " to ";

   GRAPHIC COLOR %RGB_DARKGRAY

   GRAPHIC PRINT LTRIM$(FORMAT$(ingr+ligr,"### ### ### ### ###"), ANY " ");SPACE$(50)

 

 END IF

 

 END IF

 

clicado:

 

  IF clic=1 AND cy>500+grafy AND cy<530+grafy THEN clic=0

  IF clic=1 AND blgr>ligr AND cx>19 AND cx<xsize-29 AND cy>503+1.2*atu+grafy AND cy<750+1.2*atu+grafy THEN

   GRAPHIC BOX (20,530+grafy)-(xsize-20,700+grafy),,fundo,fundo

   clic=0

   ingr=(cx-22)/(xsize-52)*blgr

   oldingr=ingr

   IF ingr>blgr-ligr THEN ingr=blgr-ligr

   IF ingr<0 THEN ingr=0

   GOTO inigra2

  END IF

 

  IF clic=1 AND cy>212+grafy THEN

   GRAPHIC GET PIXEL (cx,cy) TO coco

   IF coco=0 THEN dair

  END IF

 

  IF clic=1 AND cx>23-2 AND cx<24*ligr+22 AND cy>=312+grafy AND cy<502+grafy THEN

   cxo=cx:cyo=cy

   GRAPHIC BOX (24*(cx\24)-3,502-((502-cy+grafy)\24)*24+grafy) - (22+24*(cx\24),477-((500-cy+grafy)\24)*24+grafy),,%RGB_DARKGRAY

   IF cy>502+grafy THEN coco=0

 

   GRAPHIC COLOR %GRAY

   GRAPHIC SET POS (20,200+12.75*altura)

   GRAPHIC PRINT "Bit ";

   GRAPHIC COLOR %RGB_DARKGRAY

   GRAPHIC PRINT STR$(7-(500-cy+grafy)\24);" ";

 

   GRAPHIC COLOR %GRAY

   GRAPHIC PRINT "Byte ";

   GRAPHIC COLOR %RGB_DARKGRAY

   GRAPHIC PRINT LTRIM$(FORMAT$(ingr+cx\24,"### ### ### ### ###"), ANY " ");" ";

 

   GRAPHIC COLOR %GRAY

   GRAPHIC PRINT "B";

   GRAPHIC COLOR %RGB_DARKGRAY

   GRAPHIC PRINT RIGHT$("00000000"+BIN$( PEEK (ute+cx\24)),8)+SPACE$(1);" ";

 

   GRAPHIC COLOR %GRAY

   GRAPHIC PRINT "H";

   GRAPHIC COLOR %RGB_DARKGRAY

   GRAPHIC PRINT RIGHT$("0"+HEX$( PEEK(ute+cx\24 )),2)+SPACE$(1);

 

   GRAPHIC COLOR %GRAY

   GRAPHIC PRINT "D";

   GRAPHIC COLOR %RGB_DARKGRAY

   GRAPHIC PRINT LTRIM$(FORMAT$( PEEK(ute+cx\24),""), ANY " ")+SPACE$(1);" ";

 

   GRAPHIC COLOR %GRAY

   GRAPHIC PRINT "Code ";

   GRAPHIC COLOR %RGB_DARKGRAY

   GRAPHIC PRINT car(PEEK(ute+cx\24))+SPACE$(50);

 

 clic=0

 GOTO fazgra

 END IF

 

 repet:

LOOP UNTIL k=$ESC OR k=$CR OR clic=1

 

IF clic>0 THEN GOSUB MOUSEPRESSED

 

IF iu=1 OR iu=2 THEN

 CLOSE

 GRAPHIC BOX (20,200)-(xsize-20,680),,fundo,fundo

 GOTO bew

END IF

 

IF iu=3 THEN

 nkeyi=0

 GOSUB limpa

 GOSUB teclado

 GOTO espera2

END IF

 

IF iu=4 THEN

 gra=-1

 kbd=-1

END IF

 

IF iu=5 THEN

  GRAPHIC BOX (0,200)-(xsize,ysize+200),,fundo,fundo

  GOSUB ajuda

  aju=aju*-1

  kbd=kbd*-1

  GOTO espera

END IF

 

exitgrafico:

CLOSE

GRAPHIC BOX (20,200)-(xsize-20,680),,fundo,fundo

RETURN

 

REM --------------------------------------------------------------------------------------------------------------

MOUSEPRESSED:

FOR i=0 TO 5

 IF cx>px(i) AND cx<px(i)+20 AND cy>pyd AND cy<pyd+20 THEN

  iu=i

  GRAPHIC BOX (px(iu),py(iu))-(px(iu)+20,py(iu)+20),,fundo

  SLEEP 100

  GRAPHIC BOX (px(iu),py(iu))-(px(iu)+20,py(iu)+20),,borbut

  RETURN

 END IF

NEXT

 

REM ----------------------------------------------------------------------------------------------------------------

FINDFILES:

 

RESET w()

crypt=0

mfp=0

temp=DIR$ ("*.*", ONLY  0, TO Listing(mfp))

DO WHILE NOT temp=""

 IF LEFT$(UCASE$(temp),8)<>"ADHCIFAR" AND MAK(QUAD,Listing(mfp).FileSizeLow,Listing(mfp).FileSizeHigh)>0 THEN

  mfp+=1

  IF MID$(temp,LEN(temp)-8,1)=" " AND RIGHT$(temp,1)="[" THEN w(mfp)=1:crypt+=1

 END IF

 temp= DIR$(NEXT, TO Listing(mfp))

LOOP

IF mfp=0 THEN verfile

lim=MIN(mfp-1,8)

 

IF Listing(pap-1).filename<>listold OR MAK(QUAD,Listing(pap-1).FileSizeLow,Listing(pap-1).FileSizeHigh)<>sizeold THEN

 listold=Listing(pap-1).filename

 sizeold=MAK(QUAD,Listing(pap-1).FileSizeLow,Listing(pap-1).FileSizeHigh)

 GOSUB lista

END IF

 

RETURN

 

Exitprog:

END FUNCTION

 

REM ----------------------------------------------------------------------------------------------------------------

 

THREAD FUNCTION RedrawGraphics(BYVAL hWin AS LONG) AS DWORD

GRAPHIC ATTACH hWin,0,REDRAW

 

 DO

  GRAPHIC GET DC TO hVin

  GRAPHIC REDRAW

  SLEEP pausa

  GRAPHIC WINDOW CLICK TO clic,cx,cy

 LOOP

 

END FUNCTION

 

REM ----------------------------------------------------------------------------------------------------------------

REM  End of Adhcifar SOURCE CODE

REM ----------------------------------------------------------------------------------------------------------------