.486 ; Jeu d'insruction du 486 .model flat, stdcall option casemap : none ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD SplProc PROTO :DWORD,:DWORD,:DWORD,:DWORD splash PROTO :DWORD TopXY PROTO :DWORD,:DWORD GetInfoz PROTO :DWORD,:DWORD ListAll PROTO :DWORD GetNextTag PROTO :DWORD ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\gdi32.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\advapi32.inc include \masm32\include\Comctl32.inc include \masm32\include\comdlg32.inc include \masm32\include\shell32.inc include \masm32\include\oleaut32.inc include \masm32\include\ole32.inc include \masm32\include\dialogs.inc include \masm32\include\winmm.inc includelib \masm32\lib\masm32.lib includelib \masm32\lib\gdi32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\advapi32.lib includelib \masm32\lib\Comctl32.lib includelib \masm32\lib\comdlg32.lib includelib \masm32\lib\shell32.lib includelib \masm32\lib\oleaut32.lib includelib \masm32\lib\ole32.lib includelib \masm32\lib\winmm.lib ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ .const lList = 1000 eInfo = 2000 eImg = 2001 sName = 3000 sVer = 3001 sComp = 3002 sUrl = 3003 sver = 3004 scomp = 3005 surl = 3006 sinfo = 3007 Img = 1789 Timer = 1790 ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ ; Switch/Case emulation ; --------------------- $casflg equ <> $casvar equ <> $casstk equ <> switch macro _var:req, _reg:= mov _reg, _var $casstk catstr <_reg>, <#>, $casflg, <#>, $casstk $casvar equ _reg $casflg equ <0> ;; 0 = emit an .if, 1 an .elseif endm case macro _args:vararg ;; like Pascal: case id1. id4 .. id8, lparam, ... ;; does an or (case1 || case2 || case3...) $cas textequ <> irp $v, <_args> ;; for each case t@ instr <$v>, <..> ;; range ? if t@ ;; yes $LB substr <$v>, 1, t@-1 ;; lbound = left portion $LB catstr <(>, $casvar, =>, $LB, <)> ;; ($casvar >= lbound) $UB substr <$v>, t@+2 ;; ubound = right portion $UB catstr <(>, $casvar, , $UB, <)> ;; ($casvar <= ubound) $t catstr <(>, $LB, <&&> , $UB,<)> ;; (($casvar >= $lb) && ($casvar <= $ub)) else ;; no, it's a value (var/const) $t catstr <(>, $casvar, <==>, <$v>, <)> ;; ($casvar == value) endif $cas catstr <|| >, $t, $cas ;; or this case w/ others endm $cas substr $cas, 3 ;; lose the extra "|| " in front ifidn $casflg, <0> ;; 0 = 1'st case % .if $cas ;; emit ".if" else ;; all others % .elseif $cas ;; emit ".elseif" endif $casflg equ <1> ;; NOT 1'st endm default macro _default:vararg .else _default endm endsw macro _cmd:vararg ifidn $casstk, <> .err else t@ instr $casstk, <#> $casvar substr $casstk, 1, t@-1 $casstk substr $casstk, t@+1 t@ instr $casstk, <#> $casflg substr $casstk, 1, t@-1 ifidn $casstk, <#> $casstk equ <> else $casstk substr $casstk, t@+1 endif .endif endif endm ; ------------------------------------------ ; equates for case variation in macro names ; ------------------------------------------ Case equ CASE equ Switch equ SWITCH equ Endsw equ EndSw equ ENDSW equ Default equ DEFAULT equ ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ ; ------------------------------------------------------------------------- ; EOF ; -------------------------------------------------------------------------