Memory Model Programming & Segment Information

	Model
	TINY	Data and code fit in one 64K segment.  All code and
		data are accessed via near pointers.
	SMALL	64k data segment max and 64k code segment max.	All
		code and data are accessed via near pointers.
	COMPACT	1Mb data segment max and 64K code segment max.	Code
		is accessed via near pointers, data is accessed via
		far pointers.  No array can be greater than 64K
	MEDIUM	64K data segment max and 1Mb code segment max.	Code is
		accessed via far pointers, data is accessed via	near pointers.
	LARGE	1Mb data segment max and 1Mb code segment max.	All
		code and data are accessed via far pointers.  No
		single element can be greater than 64K.
	HUGE	1Mb data segment max and 1Mb code segment max.	All
		code and data are accessed via far pointers.  This is
		the only model where arrays can be larger than 64K.
		In this mode is C will normalize all data pointers
		to avoid segment wrapping.

Small Memory Model

	Directive  Segment    Alignment    Combine	Class
	.CODE	    _TEXT	WORD	    PUBLIC	'CODE'
	.DATA	    _DATA	WORD	    PUBLIC	'DATA'
	.CONST	    CONST	WORD	    PUBLIC	'CONST'
	.DATA?	    _BSS	WORD	    PUBLIC	'BSS'
	.STACK	    STACK	PARA	    STACK	'STACK'


Compact Memory Model

	Directive   Segment    Alignment    Combine	Class
	.CODE	    _TEXT	WORD	    PUBLIC	'CODE'
	.FARDATA    FAR_DATA	PARA	    private	'FAR_DATA'
	.FARDATA?   FAR_BSS	PARA	    private	'FAR_BSS'
	.DATA	    _DATA	WORD	    PUBLIC	'DATA'
	.CONST	    CONST	WORD	    PUBLIC	'CONST'
	.DATA?	    _BSS	WORD	    PUBLIC	'BSS'
	.STACK	    STACK	PARA	    STACK	'STACK'


Medium Memory Model

	Directive  Segment    Alignment	    Combine	Class
	.CODE	  name_TEXT	WORD	    PUBLIC	'CODE'
	.DATA	    _DATA	WORD	    PUBLIC	'DATA'
	.CONST	    CONST	WORD	    PUBLIC	'CONST'
	.DATA?	    _BSS	WORD	    PUBLIC	'BSS'
	.STACK	    STACK	PARA	    STACK	'STACK'


Large or Huge Memory Models

	Directive    Segment  Alignment	    Combine	Class
	.CODE	    name_TEXT	WORD	    PUBLIC	'CODE'
	.FARDATA    FAR_DATA	PARA	    private	'FAR_DATA'
	.FARDATA?   FAR_BSS	PARA	    private	'FAR_BSS'
	.DATA	     _DATA	WORD	    PUBLIC	'DATA'
	.CONST	     CONST	WORD	    PUBLIC	'CONST'
	.DATA?	     _BSS	WORD	    PUBLIC	'BSS'
	.STACK	     STACK	PARA	    STACK	'STACK'


	- all segments fall into DGROUP except for ???_TEXT, FAR_DATA
	  and FAR_BSS
	- see ASM DIRECTIVES