123 lines
4.7 KiB
OpenEdge ABL
123 lines
4.7 KiB
OpenEdge ABL
IFND LIBRARIES_FILEHANDLER_I
|
|
LIBRARIES_FILEHANDLER_I SET 1
|
|
**
|
|
** $Filename: libraries/filehandler.i $
|
|
** $Release: 1.3 $
|
|
**
|
|
** device and file handler specific code for AmigaDOS
|
|
**
|
|
** (C) Copyright 1986,1987,1988 Commodore-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 LIBRARIES_DOS_I
|
|
INCLUDE "libraries/dos.i"
|
|
ENDC ; LIBRARIES_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
|
|
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
|
|
|
|
|
|
*
|
|
* 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 ; LIBRARIES_FILEHANDLER_I
|