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
----------------------------------------------------------------------------------------------------------------