*
*   tool.i version 7.6 - © Copyright 1990 Jaba Development
*
*   Author : Jan van den Baard
*
*   Assembler header for the "tool.library"
*

 IFND TOOL_I
TOOL_I SET 1

 IFND EXEC_TYPES_I
    include 'exec/types.i'
 ENDC !EXEC_TYPES_I
 IFND EXEC_MEMORY_I
    include 'exec/memory.i'
 ENDC !EXEC_MEMORY_I
 IFND EXEC_PORTS_I
    include 'exec/ports.i'
 ENDC !EXEC_PORT_I
 IFND EXEC_IO_I
    include 'exec/io.i'
 ENDC !EXEC_IO_I
 IFND EXEC_LISTS_I
    include 'exec/lists.i'
 ENDC !EXEC_LISTS_I
 IFND DEVICES_TIMER_I
    include 'devices/timer.i'
 ENDC !DEVICES_TIMER_I
 IFND LIBRARIES_DOS_I
    include 'libraries/dos.i'
 ENDC !LIBRAIES_DOS_I
 IFND LIBRARIES_DOSEXTENS_I
    include 'libraries/dosextens.i'
 ENDC !LIBRAIES_DOSEXTENS_I
 IFND INTUITION_INTUITION_I
    include 'intuition/intuition.i'
 ENDC !INTUITION_INTUITION_I
 IFND INTUITION_INTUITIONBASE_I
    include 'intuition/intuitionbase.i'
 ENDC !INTUITION_INTUITIONBASE_I

    STRUCTURE   ToolBase,LIB_SIZE
    APTR        tb_SysBase
    APTR        tb_DOSBase
    APTR        tb_IntuitionBase
    APTR        tb_GfxBase
    LONG        tb_SegList
    LABEL       tb_SIZEOF

TOOL_VERSION    equ     7
TOOL_REVISION   equ     6

    STRUCTURE   TimeDelay,0
    APTR        td_UserPort
    APTR        td_ReplyPort
    APTR        td_TimeRequest
    LABEL       td_SIZEOF

LONGALLIGN  macro
            addq.l  #7,\1
            and.l   #-8,\1
            endm
*
*   The MemoryBlock, MemoryItem, BlockList and ItemList structures
*   are PRIVATE structures used by the memory routines of the library.
*   DO NOT SCREW ARROUND WITH THESE STRUCTURES BECAUSE THEY MIGHT CHANGE
*   IN FUTURE RELEASES OF THE LIBRARY !!!!!!!!!
*
    STRUCTURE   MemoryBlock,0
    APTR        mb_Next
    APTR        mb_Previous
    ULONG       mb_Requirements
    ULONG       mb_BytesUsed
    LABEL       mb_SIZEOF

    STRUCTURE   MemoryItem,0
    APTR        mit_Next
    APTR        mit_Previous
    APTR        mit_Block
    ULONG       mit_Size
    LABEL       mit_SIZEOF

    STRUCTURE   BlockList,0
    APTR        bl_First
    APTR        bl_End
    APTR        bl_Last
    LABEL       bl_SIZEOF

    STRUCTURE   ItemList,0
    APTR        il_First
    APTR        il_End
    APTR        il_Last
    LABEL       il_SIZEOF
*
* YOU MAY ONLY USE THIS STRUCTURE TO PASS TO THE MEMORY ROUTINES OF
* THE LIBRARY. DO NOT CHANGE THE CONTENTS OF A MEMORYCHAIN STRUCTURE
* IN YOUR PROGRAMS BECAUSE THIS STRUCTURE MAY CHANGE IN FUTURE RELEASES
* OF THE LIBRARY !!!!!!!!!
*
    STRUCTURE   MemoryChain,0
    STRUCT      mc_Blocks,bl_SIZEOF
    STRUCT      mc_Items,il_SIZEOF
    ULONG       mc_BlockSize
    LABEL       mc_SIZEOF

MINDATE             equ     32
ALL                 equ     0
ONLY_DAY            equ     1
ONLY_DATE           equ     2
ONLY_TIME           equ     3

NO_CASE             equ     0
CASE                equ     1

ENTRY_FILE          equ     0
ENTRY_DIR           equ     1
ENTRY_DEV           equ     2

DIRBLOCK            equ     5*1024

    STRUCTURE   EntryInfo,0
    APTR        ei_Next
    APTR        ei_Previous
    USHORT      ei_Type
    STRUCT      ei_Name,32
    LONG        ei_SizeBytes
    LONG        ei_SizeBlocks
    LONG        ei_ProtectionBits
    STRUCT      ei_Date,ds_SIZEOF
    LABEL       ei_SIZEOF

    STRUCTURE   Directory,0
    APTR        dr_First
    APTR        dr_End
    APTR        dr_Last
    APTR        dr_InfoBlock
    LONG        dr_Lock
    ULONG       dr_NumEntries
    STRUCT      dr_DirMem,mc_SIZEOF
    LABEL       dr_SIZEOF
*
*   NOTE: There seems to be a bug in the definition of 'BPTR' in the header
*         "libraries/dos.i' of the devpac assembler. When it is defined as
*         "LONG" there are no problems. I found this out when I tryed to
*         define the "dr_Lock" field of the Directory structure as a "BPTR".
*         This resulted in the first field of the "MemoryChain" dr_DirMem
*         when I tryed to read the "dr_NumEntries" field of the "Directory"
*         structure. I use the USA version 2.14 of the Devpac Assembler
*         distributed by MichTron. I don't know if it's the same with the
*         european version.
*

FREQ_OK               equ    0
FREQ_CANT_OPEN        equ    1
FREQ_FILE_ERROR       equ    2
FREQ_CANCELED         equ    3

    STRUCTURE FileRequester,0
    APTR      fr_HeadLine
    APTR      fr_FileName
    APTR      fr_DirName
    APTR      fr_DontShow
    USHORT    fr_LeftEdge
    USHORT    fr_TopEdge
    APTR      fr_Caller
    APTR      fr_Screen
    APTR      fr_Directory
    USHORT    fr_Flags
    USHORT    fr_Color0
    USHORT    fr_Color1
    USHORT    fr_Color2
    USHORT    fr_Color3
    LONG      fr_Handle
    LONG      fr_Reserved
    LABEL     fr_SIZEOF

FREQ_WIDTH            equ    260
FREQ_HEIGHT           equ    140

FR_NoPreserve         equ    1
FR_NoDevs             equ    2
FR_NoSort             equ    4
FR_CustColor          equ    8
FR_ReturnOld          equ    16
FR_ReturnNew          equ    32
FR_ReturnReadWrite    equ    64
FR_ReturnVoid         equ    0

 ENDC !TOOL_I
