;
; MODEL88.EQU      5.20A  June 8, 1995
;
; DESCRIPTION
;
; This is the header file used by assembly files to determine
; model dependent information.  Previously, Greenleaf libraries
; used the file model.h, which had macros for _LCODE, _LDATA, etc.
; This new system allows the user to set the model on the command
; line by defining the GF_MODEL constant.  It also prints out a
; helpful (I hope) error message if GF_MODEL is not defined.
;
; AUTHOR
;      SM
;      Copyright (C) 1991-94 Greenleaf Software Inc.  All rights reserved.
;
; MODIFICATIONS
;
;  December 12, 1992  : Released with CommLib 4.00A
;

;
; The check for ??version is checking to see if we are running under
; Turbo Assembler.
;
        ifdef ??version
                mesg_defined = 1
                mesg    macro   txt
                        %out    txt
                        endm
        endif
        ifdef ??Version
                mesg_defined = 1
                mesg    macro   txt
                        %out    txt
                        endm
        endif
        ifndef mesg_defined
                mesg    macro   txt
                        if1
                                %out    txt
                        endif
                        endm
        endif

% GF_MODEL&_MODEL = 1

        ifdef FLAT_MODEL
                mesg <Flat Memory Model>
                _LCODE = 0
                _LDATA = 0
                _HUGE  = 0
                GOOD_MODEL = 0
                .MODEL  FLAT,C
        endif

        ifdef SMALL_MODEL
                mesg <Small Memory Model>
                _LCODE = 0
                _LDATA = 0
                _HUGE  = 0
                GOOD_MODEL = 0
                .MODEL  SMALL,C
        endif

        ifdef COMPACT_MODEL
                mesg <Compact Memory Model>
                _LCODE = 0
                _LDATA = 1
                _HUGE  = 0
                GOOD_MODEL = 0
                .MODEL  COMPACT,C
        endif

        ifdef MEDIUM_MODEL
                mesg <Medium Memory Model>
                _LCODE = 1
                _LDATA = 0
                _HUGE  = 0
                GOOD_MODEL = 0
                .MODEL  MEDIUM,C
        endif

        ifdef LARGE_MODEL
                mesg <Large Memory Model>
                _LCODE = 1
                _LDATA = 1
                _HUGE  = 0
                GOOD_MODEL = 0
                .MODEL  LARGE,C
        endif

        ifdef HUGE_MODEL
                mesg <Huge Memory Model>
                _LCODE = 1
                _LDATA = 1
                _HUGE  = 1
                GOOD_MODEL = 0
                .MODEL  HUGE,C
        endif

        ifdef OTHER_MODEL
                mesg <Other Memory Model>
                _LCODE = 1
                _LDATA = 1
                _HUGE  = 0
                GOOD_MODEL = 0
        endif

        ifndef _LCODE
        mesg   <In order to properly build the assembly files for this>
        mesg   <library, you need to define GF_MODEL so the files can be>
        mesg   <be built for the correct memory model.  The best way to>
        mesg   <do this is to define it on the command line, like this:>
        mesg   < >
        mesg   <    MASM /DGF_MODEL=SMALL /Ml FILE.ASM ; >
        mesg   < >
        mesg   <Acceptable choices for GF_MODEL are SMALL, COMPACT, MEDIUM,>
        mesg   <LARGE, and HUGE.  Note that the Greenleaf Installation programs>
        mesg   <will do this automatically.>
        mesg   < >
        _LCODE = 0
        _LDATA = 0
        _HUGE = 0
        endif

        ifndef GOOD_MODEL
        .ERR
        endif

