
IF      FUNC_L
@AB     EQU     6
@ab     EQU     6
ELSE
@AB     EQU     4
@ab     EQU     4
ENDIF

if      FUNC_L
%OUT    <Far Functions>
else
%OUT    <Near Functions>
endif
if      PTR_L
%OUT    <Far Pointers>
else
%OUT    <Near Pointers>
endif

cextrn  macro   WARG1
if      FUNC_L
EXTRN   _&WARG1&:FAR
else
EXTRN   _&WARG1&:NEAR
endif
        endm

ccall   macro   WARG1
if      FUNC_L
        CALL    FAR PTR _&WARG1&
else
        CALL    _&WARG1&
endif
        endm

cpublic macro   WARG1
public  _&WARG1&
if      FUNC_L
_&WARG1&    PROC    FAR
else
_&WARG1&    PROC    NEAR
endif
        PUSH    BP
        MOV     BP,SP
        PUSH    SI
        PUSH    DI
        endm

cproc   macro   WARG1
public  _&WARG1&
if      FUNC_L
_&WARG1&    PROC    FAR
else
_&WARG1&    PROC    NEAR
endif
        endm

cendp   macro   WARG1
_&WARG1&    ENDP
        endm

creturn macro   WARG1
        POP     DI
        POP     SI
        MOV     SP,BP
        POP     BP
if      FUNC_L
        RET
else
        RET
endif
_&WARG1&    ENDP
        endm

cstart  macro   WARG1,WARG2
if      FUNC_L
&WARG1&_TEXT    SEGMENT WARG2
else
_TEXT       SEGMENT WARG2
endif
        endm

cend     macro   WARG1
if      FUNC_L
&WARG1&_TEXT        ENDS
else
_TEXT   ENDS
endif
        endm

codedef macro   WARG1,WARG2
if      FUNC_L
&WARG1&_TEXT    SEGMENT BYTE WARG2 PUBLIC 'CODE'
&WARG1&_TEXT    ENDS
        ASSUME  CS: &WARG1&_TEXT
else
_TEXT   SEGMENT BYTE WARG2 PUBLIC 'CODE'
_TEXT   ENDS
        ASSUME  CS: _TEXT
endif
        endm

datadef macro WARG1
_DATA   SEGMENT  WORD WARG1 PUBLIC 'DATA'
_DATA   ENDS
_BSS    SEGMENT  WORD WARG1 PUBLIC 'BSS'
_BSS    ENDS

DGROUP  GROUP   _BSS,   _DATA
        ASSUME  DS: DGROUP, SS: DGROUP, ES: DGROUP
        endm

bssstart    macro WARG1
_BSS    SEGMENT WARG1
        endm

bssend  macro
_BSS    ENDS
        endm
farbssstart    macro
FAR_BSS SEGMENT
        endm

farbssend  macro
FAR_BSS ENDS
        endm

fardatastart    macro
FAR_DATA SEGMENT
        endm

fardataend  macro
FAR_DATA ENDS
        endm

datastart    macro WARG1
_DATA SEGMENT WARG1
        endm

dataend  macro
_DATA ENDS
        endm

conststart    macro WARG1
        endm

constend  macro
        endm


