.xall ;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ b equ 1 ptr w equ 2 ptr d equ 4 ptr g equ 6 ptr q equ 8 ptr f equ far ptr o equ offset ;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ push0 macro arg:vararg local par irp par, ;;par = arg[i] - ®ç¥à¥¤­®©  à£ã¬¥­â push par ;;push arg[i] - § £®â®¢ª  ª®¬ ­¤ë push endm ;;ª®­¥æ 横«  (¤¥©áâ¢¨ï ¤¨à¥ªâ¨¢ë irp) endm ;;ª®­¥æ ¬ ªà®®¯à¥¤¥«¥­¨ï ;............................ pop0 macro arg:vararg local par irp par, ;;par = arg[i] - ®ç¥à¥¤­®©  à£ã¬¥­â pop par ;;pop arg[i] - § £®â®¢ª  ª®¬ ­¤ë push endm ;;ª®­¥æ 横«  (¤¥©áâ¢¨ï ¤¨à¥ªâ¨¢ë irp) endm ;;ª®­¥æ ¬ ªà®®¯à¥¤¥«¥­¨ï ;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ pregs textequ <> ;;áâப  ®â "PUSH". ;............................ @tmp0 macro arg0 local txt,arg txt textequ <> ;;®ç¨á⨬ áâபã. % for arg,arg0 ;;­ ç «® 横« . txt catstr ,,txt ;;§ ¯®«­ï¥¬ á ª®­æ . endm txt substr txt,1,@SizeStr(%txt)-1 ;;ã¡à «ì § ¯ïâãî. txt catstr ,txt,> ;;¢ ¤¢®©­ë¥ ᪮¡ª¨. exitm txt ;;¢ë¢®¤ áâப¨. endm ;............................ push1 macro regs:vararg local reg pregs textequ <> ;;§ ¯®¬­¨¬ áâபã. for reg, ;;­ ç «® 横« . push reg ;;ãáâ ­®¢¨¬ "PUSH XX". endm endm ;............................ @push0 macro regs:vararg local reg pregs catstr ,,> % for reg, push reg ;; Push each register endm endm ;............................ pop1 macro local reg % for reg,@tmp0(pregs) ;;­ ç «® 横« . pop reg ;;ãáâ ­®¢¨¬ "POP XX". endm endm ;ÄÄÄÄÄÄÄ‘âப¨ á ¤«¨­­®©ÄÄÄÄÄ db0 macro arg:vararg local par,x0 x0 textequ <> for par, if @instr (1,par,!') x0 catstr x0,<,>,%(@SizeStr(par)-2),<,'>,@substr (par,2) else x0 catstr x0,<,>, endif endm x0 substr x0,2 db x0 endm ;ÄÄÄÄÄÄÄ‘âப¨ á ¤«¨­­®©ÄÄÄÄÄ db1 macro arg:vararg local par,x0 x0 textequ <> for par, if @instr (1,par,$) x0 catstr x0,<,>,%(@SizeStr(par)-3),<,'>,@substr (par,3) else x0 catstr x0,<,>, endif endm x0 substr x0,2 db x0 endm ;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ movsr macro ar0,ar1 push ar1 pop ar0 endm ;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ deb macro x0,x1 push x0 push x1 call ekr00 endm ;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ