IFND EXEC_TYPES_I EXEC_TYPES_I SET 1 ** ** $Filename: exec/types.i $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 36.10 $ ** $Date: 91/03/15 $ ** ** Data storage macros. Must be included before any other Amiga include. ** ** (C) Copyright 1985-1999 Amiga, Inc. ** All Rights Reserved ** INCLUDE_VERSION EQU 36 ;Version of the include files in use. (Do not ;use this label for OpenLibrary() calls!) EXTERN_LIB MACRO XREF _LVO\1 ENDM ** ** Structure Building Macros ** STRUCTURE MACRO ; structure name, initial offset \1 EQU 0 SOFFSET SET \2 ENDM FPTR MACRO ; function pointer (32 bits - all bits valid) \1 EQU SOFFSET SOFFSET SET SOFFSET+4 ENDM BOOL MACRO ; boolean (16 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+2 ENDM BYTE MACRO ; byte (8 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+1 ENDM UBYTE MACRO ; unsigned byte (8 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+1 ENDM WORD MACRO ; word (16 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+2 ENDM UWORD MACRO ; unsigned word (16 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+2 ENDM SHORT MACRO ; obsolete - use WORD \1 EQU SOFFSET SOFFSET SET SOFFSET+2 ENDM USHORT MACRO ; obsolete - use UWORD \1 EQU SOFFSET SOFFSET SET SOFFSET+2 ENDM LONG MACRO ; long (32 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+4 ENDM ULONG MACRO ; unsigned long (32 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+4 ENDM FLOAT MACRO ; C float (32 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+4 ENDM DOUBLE MACRO ; C double (64 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+8 ENDM APTR MACRO ; untyped pointer (32 bits - all bits valid) \1 EQU SOFFSET SOFFSET SET SOFFSET+4 ENDM CPTR MACRO ; obsolete \1 EQU SOFFSET SOFFSET SET SOFFSET+4 ENDM RPTR MACRO ; unsigned relative pointer (16 bits) \1 EQU SOFFSET SOFFSET SET SOFFSET+2 ENDM LABEL MACRO ; Define a label without bumping the offset \1 EQU SOFFSET ENDM STRUCT MACRO ; Define a sub-structure \1 EQU SOFFSET SOFFSET SET SOFFSET+\2 ENDM ALIGNWORD MACRO ; Align structure offset to nearest word SOFFSET SET (SOFFSET+1)&$fffffffe ENDM ALIGNLONG MACRO ; Align structure offset to nearest longword SOFFSET SET (SOFFSET+3)&$fffffffc ENDM ** ** Enumerated variables. Use ENUM to set a base number, and EITEM to assign ** incrementing values. ENUM can be used to set a new base at any time. ** ENUM MACRO ;[new base] IFC '\1','' EOFFSET SET 0 ; Default to zero ENDC IFNC '\1','' EOFFSET SET \1 ENDC ENDM EITEM MACRO ;label \1 EQU EOFFSET EOFFSET SET EOFFSET+1 ENDM ** ** Bit Definition Macro ** ** Given: ** BITDEF MEM,CLEAR,16 ** ** Yields: ** MEMB_CLEAR EQU 16 ; Bit number ** MEMF_CLEAR EQU 1<<16 ; Bit mask ** BITDEF MACRO ; prefix,&name,&bitnum BITDEF0 \1,\2,B_,\3 \@BITDEF SET 1<<\3 BITDEF0 \1,\2,F_,\@BITDEF ENDM BITDEF0 MACRO ; prefix,&name,&type,&value \1\3\2 EQU \4 ENDM ** ** LIBRARY_VERSION is now obsolete. Please use LIBRARY_MINIMUM or code ** the specific minimum library version you require. ** LIBRARY_VERSION EQU 36 ** LIBRARY_MINIMUM EQU 33 ;Lowest version supported by Amiga, Inc. ENDC ; EXEC_TYPES_I