home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / cbm / nduk-v37.lha / V37 / include / dos / filehandler.h < prev    next >
C/C++ Source or Header  |  1991-11-27  |  5KB  |  126 lines

  1. #ifndef DOS_FILEHANDLER_H
  2. #define DOS_FILEHANDLER_H
  3. /*
  4. **    $Filename: dos/filehandler.h $
  5. **    $Release: 2.04 Includes, V37.4 $
  6. **    $Revision: 36.5 $
  7. **    $Date: 90/07/12 $
  8. **
  9. **    device and file handler specific code for AmigaDOS
  10. **
  11. **    (C) Copyright 1986-1991 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. */
  14.  
  15. #ifndef      EXEC_PORTS_H
  16. #include "exec/ports.h"
  17. #endif
  18.  
  19. #ifndef      DOS_DOS_H
  20. #include "dos/dos.h"
  21. #endif
  22.  
  23.  
  24. /* The disk "environment" is a longword array that describes the
  25.  * disk geometry.  It is variable sized, with the length at the beginning.
  26.  * Here are the constants for a standard geometry.
  27.  */
  28.  
  29. struct DosEnvec {
  30.     ULONG de_TableSize;         /* Size of Environment vector */
  31.     ULONG de_SizeBlock;         /* in longwords: standard value is 128 */
  32.     ULONG de_SecOrg;         /* not used; must be 0 */
  33.     ULONG de_Surfaces;         /* # of heads (surfaces). drive specific */
  34.     ULONG de_SectorPerBlock; /* not used; must be 1 */
  35.     ULONG de_BlocksPerTrack; /* blocks per track. drive specific */
  36.     ULONG de_Reserved;         /* DOS reserved blocks at start of partition. */
  37.     ULONG de_PreAlloc;         /* DOS reserved blocks at end of partition */
  38.     ULONG de_Interleave;     /* usually 0 */
  39.     ULONG de_LowCyl;         /* starting cylinder. typically 0 */
  40.     ULONG de_HighCyl;         /* max cylinder. drive specific */
  41.     ULONG de_NumBuffers;     /* Initial # DOS of buffers.  */
  42.     ULONG de_BufMemType;     /* type of mem to allocate for buffers */
  43.     ULONG de_MaxTransfer;    /* Max number of bytes to transfer at a time */
  44.     ULONG de_Mask;         /* Address Mask to block out certain memory */
  45.     LONG  de_BootPri;         /* Boot priority for autoboot */
  46.     ULONG de_DosType;         /* ASCII (HEX) string showing filesystem type;
  47.                   * 0X444F5300 is old filesystem,
  48.                   * 0X444F5301 is fast file system */
  49.     ULONG de_Baud;         /* Baud rate for serial handler */
  50.     ULONG de_Control;         /* Control word for handler/filesystem */
  51.     ULONG de_BootBlocks;     /* Number of blocks containing boot code */
  52.  
  53. };
  54.  
  55. /* these are the offsets into the array */
  56.  
  57. #define DE_TABLESIZE    0    /* standard value is 11 */
  58. #define DE_SIZEBLOCK    1    /* in longwords: standard value is 128 */
  59. #define DE_SECORG    2    /* not used; must be 0 */
  60. #define DE_NUMHEADS    3    /* # of heads (surfaces). drive specific */
  61. #define DE_SECSPERBLK    4    /* not used; must be 1 */
  62. #define DE_BLKSPERTRACK 5    /* blocks per track. drive specific */
  63. #define DE_RESERVEDBLKS 6    /* unavailable blocks at start.     usually 2 */
  64. #define DE_PREFAC    7    /* not used; must be 0 */
  65. #define DE_INTERLEAVE    8    /* usually 0 */
  66. #define DE_LOWCYL    9    /* starting cylinder. typically 0 */
  67. #define DE_UPPERCYL    10    /* max cylinder.  drive specific */
  68. #define DE_NUMBUFFERS    11    /* starting # of buffers.  typically 5 */
  69. #define DE_MEMBUFTYPE    12    /* type of mem to allocate for buffers. */
  70. #define DE_BUFMEMTYPE    12    /* same as above, better name
  71.                  * 1 is public, 3 is chip, 5 is fast */
  72. #define DE_MAXTRANSFER    13    /* Max number bytes to transfer at a time */
  73. #define DE_MASK        14    /* Address Mask to block out certain memory */
  74. #define DE_BOOTPRI    15    /* Boot priority for autoboot */
  75. #define DE_DOSTYPE    16    /* ASCII (HEX) string showing filesystem type;
  76.                  * 0X444F5300 is old filesystem,
  77.                  * 0X444F5301 is fast file system */
  78. #define DE_BAUD        17    /* Baud rate for serial handler */
  79. #define DE_CONTROL    18    /* Control word for handler/filesystem */
  80. #define DE_BOOTBLOCKS    19    /* Number of blocks containing boot code */
  81.  
  82. /* The file system startup message is linked into a device node's startup
  83. ** field.  It contains a pointer to the above environment, plus the
  84. ** information needed to do an exec OpenDevice().
  85. */
  86. struct FileSysStartupMsg {
  87.     ULONG    fssm_Unit;    /* exec unit number for this device */
  88.     BSTR    fssm_Device;    /* null terminated bstring to the device name */
  89.     BPTR    fssm_Environ;    /* ptr to environment table (see above) */
  90.     ULONG    fssm_Flags;    /* flags for OpenDevice() */
  91. };
  92.  
  93.  
  94. /* The include file "libraries/dosextens.h" has a DeviceList structure.
  95.  * The "device list" can have one of three different things linked onto
  96.  * it.    Dosextens defines the structure for a volume.  DLT_DIRECTORY
  97.  * is for an assigned directory.  The following structure is for
  98.  * a dos "device" (DLT_DEVICE).
  99. */
  100.  
  101. struct DeviceNode {
  102.     BPTR    dn_Next;    /* singly linked list */
  103.     ULONG    dn_Type;    /* always 0 for dos "devices" */
  104.     struct MsgPort *dn_Task;    /* standard dos "task" field.  If this is
  105.                  * null when the node is accesses, a task
  106.                  * will be started up */
  107.     BPTR    dn_Lock;    /* not used for devices -- leave null */
  108.     BSTR    dn_Handler;    /* filename to loadseg (if seglist is null) */
  109.     ULONG    dn_StackSize;    /* stacksize to use when starting task */
  110.     LONG    dn_Priority;    /* task priority when starting task */
  111.     BPTR    dn_Startup;    /* startup msg: FileSysStartupMsg for disks */
  112.     BPTR    dn_SegList;    /* code to run to start new task (if necessary).
  113.                  * if null then dn_Handler will be loaded. */
  114.     BPTR    dn_GlobalVec;    /* BCPL global vector to use when starting
  115.                  * a task.  -1 means that dn_SegList is not
  116.                  * for a bcpl program, so the dos won't
  117.                  * try and construct one.  0 tell the
  118.                  * dos that you obey BCPL linkage rules,
  119.                  * and that it should construct a global
  120.                  * vector for you.
  121.                  */
  122.     BSTR    dn_Name;    /* the node name, e.g. '\3','D','F','3' */
  123. };
  124.  
  125. #endif    /* DOS_FILEHANDLER_H */
  126.