Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; --------------
- ; YENC ENCODER
- ; x0rc1zt
- ; v1.0
- ; jully 2011
- ; --------------
- #Sourcefilebuff = 0
- #Destfilebuff = 1
- If OpenConsole()
- PrintN("* yEnc Encoder")
- PrintN("* Version 1.0")
- PrintN("* x0rc1zt")
- PrintN("")
- Print("Enter the file name: ")
- sourcefile$ = Input()
- sourcefilesize.q = FileSize(sourcefile$)
- If ReadFile(#Sourcefilebuff, sourcefile$) ; Open the source file
- destfile$ = sourcefile$ + ".ntx"
- If CreateFile(#Destfilebuff, destfile$) ; Create the destination file
- WriteStringN(#Destfilebuff, "=ybegin line=128 size="+Str(sourcefilesize)+ " name="+sourcefile$ ) ; Open the yEnc section
- counter.i = 1
- While Eof(#Sourcefilebuff) = 0 ; Start yEnc encodage
- If counter>=128 ; Line size must be 128
- counter=0
- WriteAsciiCharacter(#Destfilebuff, 13)
- WriteAsciiCharacter(#Destfilebuff, 10)
- EndIf
- counter = counter + 1
- to_be_encoded.a = ReadAsciiCharacter(#Sourcefilebuff)
- encoded.a = to_be_encoded + 42 ; yEnc formula
- Select encoded ; check if the encoded char is legit if not we must write "=" then encoded+64
- Case 0, 9, 10, 13, '=', '.':
- WriteAsciiCharacter(#Destfilebuff,'=') ;
- WriteAsciiCharacter(#Destfilebuff,encoded+64)
- counter = counter + 1
- Default:
- WriteAsciiCharacter(#Destfilebuff,encoded)
- EndSelect
- Wend
- WriteAsciiCharacter(#Destfilebuff, 10)
- result.s = Hex(CRC32FileFingerprint(sourcefile$)) ; CRC32 of the source file
- WriteStringN(#Destfilebuff, "=yend size="+Str(sourcefilesize)+" crc32="+result+" ") ; Close the yEnc section
- CloseFile(#Destfilebuff) ; Close the destination file
- Else
- PrintN("Couldn't create the file")
- EndIf
- CloseFile(#Sourcefilebuff) ; Close the source file
- PrintN("Done!");
- Else
- PrintN("Couldn't open the file!")
- EndIf
- Print("Press enter to exit")
- Input()
- EndIf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement