comment * ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл Include file for procedures in the MASM32 library ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл * IFNDEF MASM32_INC MASM32_INC equ <1> ; for both --> arg num, buffer ArgCl PROTO :DWORD,:DWORD ; GUI mode version ArgClC PROTO :DWORD,:DWORD ; console mode version GetCL PROTO :DWORD,:DWORD ; 128 byte buffer version getcl_ex PROTO :DWORD,:DWORD ; unlimited size version Alloc PROTO :DWORD Free PROTO :DWORD comment * -------------------------- numeric and text conversions ---------------------------- * a2dw PROTO :DWORD atodw PROTO :DWORD ; return value in eax htodw PROTO :DWORD ; return value in eax dwtoa PROTO :DWORD,:DWORD ; value - buffer dw2a PROTO :DWORD,:DWORD dw2hex PROTO :DWORD,:DWORD ustr2dw PROTO :DWORD udw2str PROTO :DWORD,:DWORD GetErrDescription PROTO :DWORD comment * ----------------------------------- string and floating point conversions ------------------------------------- * FloatToStr proto stdcall fpin:QWORD, szDbl:PTR CHAR FloatToStr2 proto stdcall fpin:QWORD, szDbl:PTR CHAR StrToFloat proto stdcall szIn:PTR BYTE, fpout:PTR DWORD comment * --------------- search algorithms ----------------- * InString PROTO :DWORD,:DWORD,:DWORD ; StartPos-lpszString-lpszSubStr BinSearch PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD ; classic scanner partial PROTO :DWORD,:DWORD,:DWORD ; partial matching algorithm using * as wildcard ; Boyer Moore based algorithms ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BMBinSearch PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD ; complete BM BMHBinsearch PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD ; horspool variation SBMBinSearch PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD ; simplified version WordCount PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD comment * --------------------------- encryption algorithms for "one shot" or "one pass" pads ----------------------------- * XorData PROTO :DWORD,:DWORD,:DWORD,:DWORD RolData PROTO :DWORD,:DWORD,:DWORD,:DWORD RorData PROTO :DWORD,:DWORD,:DWORD,:DWORD StrLen PROTO :DWORD ; Agner Fog's high speed string length algo comment * ------------------------------------ zero terminated string procedures have been renamed for consistency. Equates to the old names are below. -------------------------------------- * szappend PROTO :DWORD,:DWORD,:DWORD szCatStr PROTO :DWORD,:DWORD szCmp PROTO :DWORD,:DWORD szCmpi PROTO :DWORD,:DWORD,:DWORD Cmpi PROTO :DWORD,:DWORD szCopy PROTO :DWORD,:DWORD szLeft PROTO :DWORD,:DWORD,:DWORD szLen PROTO :DWORD szLower PROTO :DWORD szLtrim PROTO :DWORD,:DWORD szMid PROTO :DWORD,:DWORD,:DWORD,:DWORD szMultiCat PROTO C :DWORD,:DWORD,:VARARG szMonoSpace PROTO :DWORD szRemove PROTO :DWORD,:DWORD,:DWORD szRep PROTO :DWORD,:DWORD,:DWORD,:DWORD szRev PROTO :DWORD,:DWORD szRight PROTO :DWORD,:DWORD,:DWORD szRtrim PROTO :DWORD,:DWORD szTrim PROTO :DWORD szUpper PROTO :DWORD szWcnt PROTO :DWORD,:DWORD comment * --------------------------------- the equates for the old names must be put after the prototypes for the procedures they are mapped to. ----------------------------------- * lnstr equ cmpstr equ cmpsi equ revstr equ lcase equ ucase equ ltrim equ rtrim equ trim equ lstr equ rstr equ midstr equ ; --------------------------------- ; self contained "shell" procedures ; --------------------------------- shell PROTO :DWORD ; failsafe version shell_ex PROTO :DWORD,:DWORD ; version with priority control StripRangeI PROTO :DWORD,:DWORD,:BYTE,:BYTE StripRangeX PROTO :DWORD,:DWORD,:BYTE,:BYTE MemCopy PROTO :DWORD,:DWORD,:DWORD ; source - dest - length memfill PROTO :DWORD,:DWORD,:DWORD GetAppPath PROTO :DWORD ; buffer has app path GetAppPathW PROTO ; UNICODE version NameFromPath PROTO :DWORD,:DWORD NameFromPathW PROTO :DWORD,:DWORD ; UNICODE version GetPathOnly PROTO :DWORD,:DWORD GetPathOnlyW PROTO :DWORD,:DWORD ; UNICODE version exist PROTO :DWORD existW PROTO :DWORD ; UNICODE version filesize PROTO :DWORD filesizeW PROTO :DWORD ; UNICODE version FrameCtrl PROTO :DWORD,:DWORD,:DWORD,:DWORD FrameWindow PROTO :DWORD,:DWORD,:DWORD,:DWORD FrameGrp PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD Frame3D PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD line PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD circle PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD DisplayBmp PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD DisplayIcon PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD VerticalTile PROTO :DWORD,:DWORD,:DWORD SetBMcolor PROTO :DWORD,:DWORD BmpButton PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD StdOut PROTO :DWORD StdOutW PROTO :DWORD ; UNICODE version StdErr PROTO :DWORD StdErrW PROTO :DWORD ; UNICODE version StdIn PROTO :DWORD,:DWORD StdInW PROTO :DWORD,:DWORD ; UNICODE version locate PROTO :DWORD,:DWORD ClearScreen PROTO StripLF PROTO :DWORD wait_key PROTO ret_key PROTO BrowseForFolder PROTO :DWORD,:DWORD,:DWORD,:DWORD FontDialog PROTO :DWORD,:DWORD,:DWORD ColorDialog PROTO :DWORD,:DWORD,:DWORD PageSetupDialog PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD PrintDialog PROTO :DWORD,:DWORD,:DWORD Read_File_In PROTO :DWORD,:DWORD ofCallBack PROTO :DWORD,:DWORD,:DWORD,:DWORD Write_To_Disk PROTO :DWORD,:DWORD sfCallBack PROTO :DWORD,:DWORD,:DWORD,:DWORD RichEd1 PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD RichEd2 PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD GetPercent PROTO :DWORD,:DWORD IntMul PROTO :DWORD,:DWORD IntDiv PROTO :DWORD,:DWORD IntSqrt PROTO :DWORD nrandom PROTO :DWORD nseed PROTO :DWORD ; --------------------------------- ; prototypes for pre-built dialogs ; --------------------------------- GetTextInput PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD AboutBox PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD GetFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD LoadList PROTO :DWORD,:DWORD IPtoString PROTO :DWORD,:DWORD GetIP PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD ; ---------------------------------------- ; Ernie Murphy's image loading procedures ; ---------------------------------------- comment * --------------------------------------------------------------- With functions BitmapFromMemory, BitmapFromFile and BitmapFromResource the statements : invoke CoInitialize, NULL ; at the beginning of the source code invoke CoUninitialize ; at the end of the source code should be included to initialize and uninitiaize COM --------------------------------------------------------------- * BitmapFromFile PROTO :DWORD BitmapFromMemory PROTO :DWORD,:DWORD BitmapFromPicture PROTO :DWORD BitmapFromResource PROTO :DWORD,:DWORD ; ------------------- ; file IO procedures ; ------------------- read_disk_file PROTO :DWORD,:DWORD,:DWORD read_disk_fileW PROTO :DWORD,:DWORD,:DWORD ; UNICODE version write_disk_file PROTO :DWORD,:DWORD,:DWORD write_disk_fileW PROTO :DWORD,:DWORD,:DWORD ; UNICODE version ; ------------------------------ ; memory mapped file procedures ; ------------------------------ CloseMMF PROTO :DWORD,:DWORD CreateMMF PROTO :DWORD,:DWORD,:DWORD,:DWORD ; ---------------- ; sort procedures ; ---------------- nrQsortA PROTO :DWORD,:DWORD nrQsortD PROTO :DWORD,:DWORD CombSortA PROTO :DWORD,:DWORD CombSortD PROTO :DWORD,:DWORD testreg PROTO HexDump PROTO :DWORD,:DWORD,:DWORD AsciiDump PROTO :DWORD,:DWORD,:DWORD ; ------------------------------------------ ; ascii and 32 bit long integer conversions ; ------------------------------------------ atol PROTO :DWORD ltoa PROTO :DWORD,:DWORD ; ---------------------------- ; File open and close dialogs ; ---------------------------- OpenFileDialog PROTO :DWORD, :DWORD, :DWORD, :DWORD SaveFileDialog PROTO :DWORD, :DWORD, :DWORD, :DWORD ; ------------------ ; ascii to wide char ; ------------------ a2wc PROTO :DWORD ; --------------------------- ; array arithmetic procedures ; --------------------------- arr_add PROTO :DWORD,:DWORD,:DWORD arr_mul PROTO :DWORD,:DWORD,:DWORD arr_sub PROTO :DWORD,:DWORD,:DWORD ; ------------------- ; create dynamic aray ; ------------------- create_array PROTO :DWORD,:DWORD ; ---------------------------------------------------- ; count all bytes in a file and write results to array ; ---------------------------------------------------- byte_count PROTO :DWORD,:DWORD,:DWORD ; ----------------------------------------------------- ; load list box with formatted drive and volume strings ; ----------------------------------------------------- load_drives PROTO :DWORD ; ------------------------------------- ; C style character testing procedures. ; ------------------------------------- isalpha PROTO :BYTE isupper PROTO :BYTE islower PROTO :BYTE isnumber PROTO :BYTE isalphanum PROTO :BYTE ; --------------------------------- ; hybrid quick / cisort string sort ; --------------------------------- assort PROTO :DWORD,:DWORD,:DWORD dssort PROTO :DWORD,:DWORD,:DWORD ; -------------------------------------------------- ; high speed quick sort with recursion depth limiter ; This algorithm is used by the above hybrid. ; -------------------------------------------------- asqsort PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD dsqsort PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD ; ----------------------------------------------------- ; comb / insertion sort hybrid used by the above hybrid. ; ----------------------------------------------------- acisort PROTO :DWORD,:DWORD dcisort PROTO :DWORD,:DWORD ; ----------------------------------- ; insertion sort for the above hybrid ; ----------------------------------- aissort PROTO :DWORD,:DWORD dissort PROTO :DWORD,:DWORD ; ---------------------------------------------- ; high safety margin comb / cocktail shaker sort ; ---------------------------------------------- ccsorta PROTO :DWORD,:DWORD ccsortd PROTO :DWORD,:DWORD ; ----------------- ; Quick string sort ; ----------------- qssorta PROTO :DWORD,:DWORD,:DWORD qssortd PROTO :DWORD,:DWORD,:DWORD ; ----------------- ; Shell string sort ; ----------------- ssorta PROTO :DWORD,:DWORD,:DWORD ssortd PROTO :DWORD,:DWORD,:DWORD ; ---------------- ; Comb string sort ; ---------------- cstsorta PROTO :DWORD,:DWORD cstsortd PROTO :DWORD,:DWORD ; ----------------------- ; traditional bubble sort ; ----------------------- bstsorta PROTO :DWORD,:DWORD,:DWORD bstsortd PROTO :DWORD,:DWORD,:DWORD ; ----------------------------------------------- ; read and write lines of text to and from memory ; ----------------------------------------------- readline PROTO :DWORD,:DWORD,:DWORD writeline PROTO :DWORD,:DWORD,:DWORD,:DWORD tstline PROTO :DWORD parse_line PROTO :DWORD,:DWORD lfcnt PROTO :DWORD ; ------------------------- ; UNICODE string procedures ; ------------------------- ucappend PROTO :DWORD,:DWORD,:DWORD ucArgByNum PROTO :DWORD,:DWORD,:DWORD ucCatStr PROTO :DWORD,:DWORD ucCopy PROTO :DWORD,:DWORD ucCmdTail PROTO ucCmp PROTO :DWORD,:DWORD ucFind PROTO :DWORD,:DWORD,:DWORD ucGetCL PROTO :DWORD,:DWORD,:DWORD ucgetline PROTO :DWORD,:DWORD,:DWORD ucLen PROTO :DWORD ucLeft PROTO :DWORD,:DWORD,:DWORD ucLtrim PROTO :DWORD,:DWORD ucMid PROTO :DWORD,:DWORD,:DWORD,:DWORD ucMonoSpace PROTO :DWORD ucRemove PROTO :DWORD,:DWORD,:DWORD ucRep PROTO :DWORD,:DWORD,:DWORD,:DWORD ucRight PROTO :DWORD,:DWORD,:DWORD ucRtrim PROTO :DWORD,:DWORD ucLower PROTO :DWORD ucUpper PROTO :DWORD ucRev PROTO :DWORD,:DWORD ucMultiCat PROTO C :DWORD,:DWORD,:VARARG ucWcnt PROTO :DWORD,:DWORD ucOpenFileDialog PROTO :DWORD,:DWORD,:DWORD,:DWORD ucSaveFileDialog PROTO :DWORD,:DWORD,:DWORD,:DWORD ; ------------------ ; whole word replace ; ------------------ wordreplace PROTO :DWORD,:DWORD,:DWORD,:DWORD ; ------------------------------ ; extended performance functions ; ------------------------------ atodw_ex PROTO :DWORD byt2bin_ex PROTO :BYTE,:DWORD wrd2bin_ex PROTO :WORD,:DWORD dw2bin_ex PROTO :DWORD,:DWORD bin2byte_ex PROTO :DWORD dw2hex_ex PROTO :DWORD,:DWORD hexflip32 PROTO :DWORD ; ----------------------------------- ; high speed binary / hex conversions ; ----------------------------------- bin2hex PROTO :DWORD,:DWORD,:DWORD hex2bin PROTO :DWORD,:DWORD ; -------------------------- ; additional shell functions ; -------------------------- wshell PROTO :DWORD ; ------------------------------------- ; compare memory blocks of known length ; ------------------------------------- cmpmem PROTO :DWORD,:DWORD,:DWORD ; --------------------------------------------------------- ; structure and prototype for running a synchronous process ; --------------------------------------------------------- RUN_SYNCH_PROCESS_EX STRUCT priority dd ? ; priority setting timeout dd ? ; timeout interval rvcreate dd ? ; CreateProcess() return value exitcode dd ? ; GetExitCodeProcess() exit code rvwait dd ? ; WaitForSingleObjectEx() return value RUN_SYNCH_PROCESS_EX ENDS run_synch_process_ex PROTO :DWORD,:DWORD ; ----------------------------------------------- ; return the font handle from a CreateFont() call ; ----------------------------------------------- RetFontHandle PROTO :DWORD,:DWORD,:DWORD ArgByNumber PROTO :DWORD,:DWORD,:DWORD,:DWORD get_ml PROTO :DWORD,:DWORD,:DWORD decomment PROTO :DWORD ; --------------- ; text tokenisers ; --------------- ltok PROTO :DWORD,:DWORD wtok PROTO :DWORD,:DWORD ; -------------------- ; clipboard text algos ; -------------------- GetClipboardText PROTO SetClipboardText PROTO :DWORD ; ***************************** ; prototypes for dynamic arrays ; ***************************** arralloc PROTO :DWORD arrealloc PROTO :DWORD,:DWORD arrfree PROTO :DWORD arrset PROTO :DWORD,:DWORD,:DWORD arrget PROTO :DWORD,:DWORD arrcnt PROTO :DWORD arrlen PROTO :DWORD,:DWORD arrtrunc PROTO :DWORD,:DWORD arrextnd PROTO :DWORD,:DWORD arrtotal PROTO :DWORD,:DWORD arr2file PROTO :DWORD,:DWORD arr2mem PROTO :DWORD,:DWORD arr2text PROTO :DWORD,:DWORD arrtxt PROTO :DWORD arrfile PROTO :DWORD arrbin PROTO :DWORD,:DWORD,:DWORD,:DWORD ELSE echo ----------------------------------------- echo WARNING Duplicate include file masm32.inc echo ----------------------------------------- ENDIF