[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

        IFND    DOS_FILEHANDLER_I
DOS_FILEHANDLER_I SET   1
**
**      $Filename: dos/filehandler.i $
**      $Release: 2.04 Includes, V37.4 $
**      $Revision: 36.4 $
**      $Date: 90/07/12 $
**
**      device and file handler specific code for AmigaDOS
**
**      (C) Copyright 1986-1999 Amiga, Inc.
**          All Rights Reserved
**

        IFND      EXEC_TYPES_I
        INCLUDE "exec/types.i"
        ENDC    ; EXEC_TYPES_I

        IFND      EXEC_PORTS_I
        INCLUDE "exec/ports.i"
        ENDC    ; EXEC_PORTS_I

        IFND      DOS_DOS_I
        INCLUDE "libraries/dos.i"
        ENDC    ; DOS_DOS_I


* The disk "environment" is a longword array that describes the
* disk geometry.  It is variable sized, with the length at the beginning.
* Here are the constants for a standard geometry.



 STRUCTURE DosEnvec,0
    ULONG de_TableSize       ; Size of Environment vector
    ULONG de_SizeBlock       ; in longwords: standard value is 128
    ULONG de_SecOrg          ; not used; must be 0
    ULONG de_Surfaces        ; # of heads (surfaces). drive specific
    ULONG de_SectorPerBlock  ; not used; must be 1
    ULONG de_BlocksPerTrack  ; blocks per track. drive specific
    ULONG de_Reserved        ; DOS reserved blocks at start of partition.
    ULONG de_PreAlloc        ; DOS reserved blocks at end of partition
    ULONG de_Interleave      ; usually 0
    ULONG de_LowCyl          ; starting cylinder. typically 0
    ULONG de_HighCyl         ; max cylinder. drive specific
    ULONG de_NumBuffers      ; Initial # DOS of buffers.
    ULONG de_BufMemType      ; type of mem to allocate for buffers
    ULONG de_MaxTransfer     ; Max number of bytes to transfer at a time
    ULONG de_Mask            ; Address Mask to block out certain memory
    LONG  de_BootPri         ; Boot priority for autoboot
    ULONG de_DosType         ; ASCII (HEX) string showing filesystem type;
                             ; 0X444F5300 is old filesystem,
                             ; 0X444F5301 is fast file system
    ULONG de_Baud            ; Baud rate for serial handler
    ULONG de_Control         ; Control word for handler/filesystem
    ULONG de_BootBlocks      ; Number of blocks containing boot code

    LABEL DosEnvec_SIZEOF

* these are the offsets into the array

DE_TABLESIZE    EQU     0       ; standard value is 11
DE_SIZEBLOCK    EQU     1       ; in longwords: standard value is 128
DE_SECORG       EQU     2       ; not used; must be 0
DE_NUMHEADS     EQU     3       ; # of heads (surfaces). drive specific
DE_SECSPERBLK   EQU     4       ; not used; must be 1
DE_BLKSPERTRACK EQU     5       ; blocks per track. drive specific
DE_RESERVEDBLKS EQU     6       ; unavailable blocks at start.  usually 2
DE_PREFAC       EQU     7       ; not used; must be 0
DE_INTERLEAVE   EQU     8       ; usually 0
DE_LOWCYL       EQU     9       ; starting cylinder. typically 0
DE_UPPERCYL     EQU     10      ; max cylinder.  drive specific
DE_NUMBUFFERS   EQU     11      ; starting # of buffers.  typically 5
DE_MEMBUFTYPE   EQU     12      ; type of mem to allocate for buffers.
DE_BUFMEMTYPE   EQU     12      ; same as above, better name
                                ; 1 is public, 3 is chip, 5 is fast
DE_MAXTRANSFER  EQU     13      ; Maximum number of bytes to transfer at a time
DE_MASK         EQU     14      ; Address Mask to block out certain memory
DE_BOOTPRI      EQU     15      ; Boot priority for autoboot
DE_DOSTYPE      EQU     16      ; ASCII (HEX) string showing filesystem type
                                ; 0X444F5300 is old filesystem,
                                ; 0X444F5301 is fast file system
DE_BAUD EQU     17      ; Baud rate for serial handler
DE_CONTROL      EQU     18      ; Control word for handler/filesystem
DE_BOOTBLOCKS   EQU     19      ; Number of blocks containing boot code

*
* The file system startup message is linked into a device node's startup
* field.  It contains a pointer to the above environment, plus the
* information needed to do an exec OpenDevice().
*

 STRUCTURE FileSysStartupMsg,0
    ULONG       fssm_Unit       ; exec unit number for this device
    BSTR        fssm_Device     ; null terminated bstring to the device name
    BPTR        fssm_Environ    ; ptr to environment table (see above)
    ULONG       fssm_Flags      ; flags for OpenDevice()
    LABEL       FileSysStartupMsg_SIZEOF


* The include file "libraries/dosextens.h" has a DeviceList structure.
* The "device list" can have one of three different things linked onto
* it.  Dosextens defines the structure for a volume.  DLT_DIRECTORY
* is for an assigned directory.  The following structure is for
* a dos "device" (DLT_DEVICE).

 STRUCTURE DeviceNode,0
    BPTR        dn_Next         ; singly linked list
    ULONG       dn_Type         ; always 0 for dos "devices"
    CPTR        dn_Task         ; standard dos "task" field.  If this is
                                ;     null when the node is accesses, a task
                                ;     will be started up
    BPTR        dn_Lock         ; not used for devices -- leave null
    BSTR        dn_Handler      ; filename to loadseg (if seglist is null)
    ULONG       dn_StackSize    ; stacksize to use when starting task
    LONG        dn_Priority     ; task priority when starting task
    BPTR        dn_Startup      ; startup msg: FileSysStartupMsg for disks
    BPTR        dn_SegList      ; code to run to start new task (if necessary).
                                ;     if null then dn_Handler will be loaded.
    BPTR        dn_GlobalVec    ; BCPL global vector to use when starting
                                ;     a task.  -1 means that dn_SegList is not
                                ;     for a bcpl program, so the dos won't
                                ;     try and construct one.  0 tell the
                                ;     dos that you obey BCPL linkage rules,
                                ;     and that it should construct a global
                                ;     vector for you.
    BSTR        dn_Name         ; the node name, e.g. '\3','D','F','3'
    LABEL       DeviceNode_SIZEOF

        ENDC    ; DOS_FILEHANDLER_I