amos-professional/includes/exec/libraries.i
2020-04-26 02:58:13 +02:00

122 lines
2.8 KiB
OpenEdge ABL

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