home *** CD-ROM | disk | FTP | other *** search
/ Groovy Bytes: Behind the Moon / groovybytes.iso / GROOVY / SND_TOOL / FUNK108A.ZIP / DOS32V30.ZIP / PAL / INCLUDE / STDDEF.INC < prev    next >
Encoding:
Text File  |  1995-05-20  |  3.1 KB  |  166 lines

  1. ;****************************************************************************
  2. ; Filename: STDDEF.INC
  3. ;   Author: Peter Andersson
  4. ;  Comment: Included in all assembler files to initiate the assembler
  5. ;****************************************************************************
  6. ; Copyright Peter Andersson, 1994-1995.
  7. ; All rights reserved.
  8. ;****************************************************************************
  9.  
  10.     Ideal
  11.     P486
  12.  
  13.     LargeStack
  14.     Model    NearStack Flat,C
  15.  
  16.     Assume    Cs:FLAT, Ds:FLAT, Es:FLAT, Fs:FLAT, Gs:FLAT, Ss:FLAT
  17.  
  18.     NoSmart        ; Smart code generation
  19.     Locals        ; Allow local labels
  20.     NoJumps        ; No smart jumps
  21.     MultErrs    ; Warn with multiple errors
  22.  
  23.             ; Warnings:
  24.     Warn    BRK    ; brackets needed []
  25.     Warn    GTP    ; type declared must match
  26.     Warn    ICG    ; inefficient code generation
  27.     Warn    LCO    ; location counter overflow
  28.     Warn    OVF    ; overflow
  29.     Warn    PRO    ; code segment override
  30.  
  31.             ; No warnings:
  32.     NoWarn    RES    ; reserved words
  33.  
  34. MACRO    ENTERD    Locals:REQ, Nesting:REQ
  35. IF Nesting EQ 0
  36.         Push    Ebp
  37.         Mov    Ebp, Esp
  38. IF Locals NE 0
  39. IF (Locals AND 3) NE 0
  40.         Sub    Esp,(Locals AND NOT 3)+4
  41. ELSE
  42.         Sub    Esp,Locals
  43. ENDIF
  44. ENDIF
  45. ELSE
  46.         Enterd    Locals, Nesting
  47. ENDIF
  48. ENDM    ENTERD
  49.  
  50. MACRO    ENTERW    Locals:REQ, Nesting:REQ
  51. IF Nesting EQ 0
  52.         Push    Bp
  53.         Mov    Bp,Sp
  54. IF Locals NE 0
  55. IF (Locals AND 1) NE 0
  56.         Sub    Esp,(Locals AND NOT 1)+2
  57. ELSE
  58.         Sub    Esp,Locals
  59. ENDIF
  60. ENDIF
  61.     Else
  62.         Enterd    Locals, Nesting
  63.     Endif
  64. ENDM    ENTERW
  65.  
  66. MACRO    LEAVED
  67.         Mov    Esp,Ebp
  68.         Pop    Ebp
  69. ENDM    LEAVED
  70.  
  71. MACRO    LEAVEW
  72.         Mov    Sp,Bp
  73.         Pop    Bp
  74. ENDM    LEAVEW
  75.  
  76. MACRO    Clear xData:REQ
  77.         Xor    xData,xData
  78. ENDM    Clear
  79.  
  80. MACRO    TestZ xData:REQ
  81.         Test    xData,xData
  82. ENDM    TestZ
  83.  
  84. MACRO    Push xReg:REST
  85. ERRIFB <xReg> "PUSH must have arguments"
  86. IRP _ESP_R_,<xReg>
  87.         PUSH    _ESP_R_
  88. ENDM
  89. ENDM    Push
  90.  
  91. MACRO    Pop xReg:REST
  92.     ERRIFB <xReg> "POP must have arguments"
  93.     IRP _ESP_R_, <xReg>
  94.         _ESP_P_ SUBSTR <_ESP_R_>,1,1
  95.         IFDIF _ESP_P_,<+>
  96.                 POP    _ESP_R_
  97.         ELSE
  98.         _ESP_P_ SUBSTR <_ESP_R_>,2
  99.         IFNB _ESP_P_
  100.                         LEA  Esp,[Esp+ _ESP_P_]
  101.         ENDIF
  102.         ENDIF
  103.     ENDM
  104. ENDM    Pop
  105.  
  106. CRLF    EQU    <13,10>
  107. CR    EQU    <13>
  108. LF    EQU    <10>
  109.  
  110.  
  111. Macro    _cdecl    Func:REQ,Regs:REQ
  112.     If Regs Eq 0
  113.         Jmp    Func
  114.     Elseif Regs Eq 1
  115.         Mov    Eax,[Esp+4]
  116.         Jmp    Func
  117.     Elseif Regs Eq 2
  118.         Mov    Eax,[Esp+4]
  119.         Mov    Edx,[Esp+8]
  120.         Jmp    Func
  121.     Elseif Regs Eq 3
  122.         Mov    Eax,[Esp+4]
  123.         Mov    Edx,[Esp+8]
  124.         Mov    Ecx,[Esp+12]
  125.         Jmp    Func
  126.     Elseif Regs Ge 4
  127.         Mov    Eax,[Esp+4]
  128.         Mov    Edx,[Esp+8]
  129.         Mov    Ecx,[Esp+12]
  130. CNT=Regs*4+4
  131.     Rept    Regs-3
  132.         Push    [Dword Esp+Regs*4]
  133.     Endm
  134.         Call    Func
  135.         Add    Esp,Regs*4-12
  136.         Ret
  137.     Endif
  138. Endm    _cdecl
  139.  
  140.  
  141. IFDEF FASTCALLS
  142.     MACRO Proc Func, NumArgs
  143.         IFNB <NumArgs>
  144.             proc   @&Func NoLanguage
  145.         ELSE                    
  146.             proc    Func
  147.         ENDIF
  148.    ENDM  Proc
  149.  
  150. ELSE            
  151.     
  152.     MACRO Proc Func, NumArgs
  153.         IFNB <NumArgs>
  154.             proc    Func
  155.                 _cdecl  @&Func, NumArgs
  156.             endp    Func
  157.             proc   @&Func NoLanguage
  158.         ELSE                    
  159.             proc    Func
  160.         ENDIF
  161.     ENDM Proc
  162.  
  163. ENDIF
  164.  
  165. Include "PAL.INC"
  166.