home *** CD-ROM | disk | FTP | other *** search
- #ifndef DOS_FILEHANDLER_H
- #define DOS_FILEHANDLER_H
- /*
- ** $VER: filehandler.h 36.6 (9.8.92)
- ** Includes Release 40.15
- **
- ** device and file handler specific code for AmigaDOS
- **
- ** (C) Copyright 1986-1993 Commodore-Amiga, Inc.
- ** All Rights Reserved
- */
-
- #ifndef EXEC_PORTS_H
- #include "exec/ports.h"
- #endif
-
- #ifndef DOS_DOS_H
- #include "dos/dos.h"
- #endif
-
-
- /* 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.
- */
-
- struct DosEnvec {
- 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 */
-
- };
-
- /* these are the offsets into the array */
- /* DE_TABLESIZE is set to the number of longwords in the table minus 1 */
-
- #define DE_TABLESIZE 0 /* minimum value is 11 (includes NumBuffers) */
- #define DE_SIZEBLOCK 1 /* in longwords: standard value is 128 */
- #define DE_SECORG 2 /* not used; must be 0 */
- #define DE_NUMHEADS 3 /* # of heads (surfaces). drive specific */
- #define DE_SECSPERBLK 4 /* not used; must be 1 */
- #define DE_BLKSPERTRACK 5 /* blocks per track. drive specific */
- #define DE_RESERVEDBLKS 6 /* unavailable blocks at start. usually 2 */
- #define DE_PREFAC 7 /* not used; must be 0 */
- #define DE_INTERLEAVE 8 /* usually 0 */
- #define DE_LOWCYL 9 /* starting cylinder. typically 0 */
- #define DE_UPPERCYL 10 /* max cylinder. drive specific */
- #define DE_NUMBUFFERS 11 /* starting # of buffers. typically 5 */
- #define DE_MEMBUFTYPE 12 /* type of mem to allocate for buffers. */
- #define DE_BUFMEMTYPE 12 /* same as above, better name
- * 1 is public, 3 is chip, 5 is fast */
- #define DE_MAXTRANSFER 13 /* Max number bytes to transfer at a time */
- #define DE_MASK 14 /* Address Mask to block out certain memory */
- #define DE_BOOTPRI 15 /* Boot priority for autoboot */
- #define DE_DOSTYPE 16 /* ASCII (HEX) string showing filesystem type;
- * 0X444F5300 is old filesystem,
- * 0X444F5301 is fast file system */
- #define DE_BAUD 17 /* Baud rate for serial handler */
- #define DE_CONTROL 18 /* Control word for handler/filesystem */
- #define DE_BOOTBLOCKS 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().
- */
- struct FileSysStartupMsg {
- 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() */
- };
-
-
- /* 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).
- */
-
- struct DeviceNode {
- BPTR dn_Next; /* singly linked list */
- ULONG dn_Type; /* always 0 for dos "devices" */
- struct MsgPort *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' */
- };
-
- #endif /* DOS_FILEHANDLER_H */
-