
*------ Special Constants ---------------------------------------

LIB_VECTSIZE    EQU     6
LIB_RESERVED    EQU     4
LIB_BASE        EQU     $FFFFFFFA       * (-LIB_VECTSIZE)
LIB_USERDEF     EQU     LIB_BASE-(LIB_RESERVED*LIB_VECTSIZE)
LIB_NONSTD      EQU     LIB_USERDEF

*----------------------------------------------------------------
*
*   Library Definition Macros
*
*----------------------------------------------------------------

*------ LIBINIT sets base offset for library function definitions:

LIBINIT     MACRO   * [baseOffset]
            IFC     '\1',''
COUNT_LIB   SET     LIB_USERDEF
            ENDC
            IFNC    '\1',''
COUNT_LIB   SET     \1
            ENDC
            ENDM


*------ LIBDEF is used to define each library function entry:

LIBDEF      MACRO   * libraryFunctionSymbol
\1          EQU     COUNT_LIB
COUNT_LIB   SET     COUNT_LIB-LIB_VECTSIZE
            ENDM


*----------------------------------------------------------------
*
*   Standard Library Functions
*
*----------------------------------------------------------------

    

LIB_OPEN	EQU	6
LIB_CLOSE	EQU	12
LIB_EXPUNGE	EQU	18
LIB_EXTFUNC	EQU	24                 * reserved *


*----------------------------------------------------------------
*
*   Standard Library Data Structure
*
*----------------------------------------------------------------

; STRUCTURE LIB,LN_SIZE		EQU	14
LIB_FLAGS	EQU	14
LIB_FLAGSchar
LIB_pad		EQU	15
LIB_NEGSIZE	EQU	16                 * number of bytes before LIB
LIB_NEGSIZEshort
LIB_POSSIZE	EQU	18                 * number of bytes after LIB
LIB_POSSIZEshort
LIB_VERSION	EQU	20                 * major
LIB_VERSIONshort
LIB_REVISION	EQU	22                * minor
LIB_REVISIONshort
LIB_IDSTRING	EQU	24                * identification
LIB_IDSTRINGint
LIB_SUM		EQU	28                     * the checksum itself
LIB_SUMint
LIB_OPENCNT	EQU	32                 * number of current opens
LIB_OPENCNTshort
LIB_SIZE	SET	34
    


*------ LIB_FLAGS bit definitions:

SUMMING		EQU	1               * we are currently checksumming
CHANGED		EQU	2               * we have just changed the lib
SUMUSED		EQU	4               * set if we should bother to sum
DELEXP		EQU	8               * delayed expunge


*------ CALLLIB for calling functions where A6 is already correct:

CALLLIB     MACRO   * functionOffset
        IFGT NARG-1
            FAIL    !!! CALLLIB MACRO - too many arguments !!!
        ENDC
            JSR     \1(A6)
            ENDM


*------ LINKLIB for calling functions where A6 is incorrect:

LINKLIB     MACRO   * functionOffset,libraryBase
        IFGT NARG-2
            FAIL    !!! LINKLIB MACRO - too many arguments !!!
        ENDC
            MOVE.L  A6,-(SP)
            MOVE.L  \2,A6
            CALLLIB \1
            MOVE.L  (SP)+,A6
            ENDM
