home *** CD-ROM | disk | FTP | other *** search
- IFND EXEC_LIBRARIES_I
- EXEC_LIBRARIES_I SET 1
- **
- ** $Filename: exec/libraries.i $
- ** $Release: 1.3 $
- **
- **
- **
- ** (C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
- ** All Rights Reserved
- **
-
- IFND EXEC_NODES_I
- INCLUDE "exec/nodes.i"
- ENDC ; EXEC_NODES_I
-
-
- *------ 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
- *
- *----------------------------------------------------------------
-
- LIBINIT LIB_BASE
-
- LIBDEF LIB_OPEN
- LIBDEF LIB_CLOSE
- LIBDEF LIB_EXPUNGE
- LIBDEF LIB_EXTFUNC * reserved *
-
-
- *----------------------------------------------------------------
- *
- * Standard Library Data Structure
- *
- *----------------------------------------------------------------
-
- STRUCTURE LIB,LN_SIZE
- UBYTE LIB_FLAGS
- UBYTE LIB_pad
- UWORD LIB_NEGSIZE * number of bytes before LIB
- UWORD LIB_POSSIZE * number of bytes after LIB
- UWORD LIB_VERSION * major
- UWORD LIB_REVISION * minor
- APTR LIB_IDSTRING * identification
- ULONG LIB_SUM * the checksum itself
- UWORD LIB_OPENCNT * number of current opens
- LABEL LIB_SIZE
-
-
- *------ LIB_FLAGS bit definitions:
-
- BITDEF LIB,SUMMING,0 * we are currently checksumming
- BITDEF LIB,CHANGED,1 * we have just changed the lib
- BITDEF LIB,SUMUSED,2 * set if we should bother to sum
- BITDEF LIB,DELEXP,3 * delayed expunge
-
-
- *----------------------------------------------------------------
- *
- * Function Invocation Macros
- *
- *----------------------------------------------------------------
-
- *------ 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
-
- ENDC ; EXEC_LIBRARIES_I
-