Controlling FreeMiNT's real FAT XFS
-----------------------------------

Dcntl (opcode, path, arg)
-------------------------
Supported opcodes:

MX_KER_XFSNAME		(0x6d05)	like MagiC
--------------------------------
Arg is a pointer to at least 9 characters and the xfs
print a readable name to arg.


MFS_INFO		 (0x104)	like Minix-FS
--------------------------------
Experimental, will be removed


VFAT_CNFDFLN		(0x5600)	like MagiC
--------------------------------
Control the status of the VFAT extension for all drives.
Arg is a bitfield. These default values are only
interesting, if there is a valid FAT filesystem on the
specified drive.


VFAT_CNFLN		(0x5601)	like MagiC
--------------------------------
Enable/disable the VFAT extension for the specified drive.
You should send a SH_WDRAW message to the shell to see the
difference.

convention: if arg = -1, the return value is the current status.

status:	DISABLE = 0
	ENABLE  = 1


V_CNTR_SLNK		(0x5602)
--------------------------------
Enable/disable support for MagiC style symbolic links.
If you have problems on other platforms or you don't like
links, you can disable this feature with these Dcntl.

convention: if arg = -1, the return value is the current status.

status:	DISABLE = 0
	ENABLE  = 1


V_CNTR_MODE		(0x5604)
--------------------------------
Set or ask the newname mode for the specified drive.
This opcode is only available for FAT drives. On VFAT drives
are all characters allowed (Unicode) and the short name
truncation use always the MS-DOS table.

convention: if arg = -1, the return value is the current status.

status:	GEMDOS		0	/* allows all GEMDOS characters:
				 * A..Z0..9!#$%&'()-@^_`{}~"+,;<=>[]| */
	ISO		1	/* allows only ISO d-characters as defined in
				 * ISO/IEC 9293 and ISO 9660: A..Z0..9_ */
	MSDOS		2	/* allows all MS-DOS characters:
				 * A..Z0..9!#$%&'()-@^_`{}~ */


V_CNTR_FAT32		(0x560a)
--------------------------------
Control some of the FAT32 extensions like FAT mirroring
and additional info sector. Only available on FAT32
drives.
Arg must be pointer to the following struct:

struct control_FAT32
{
	short	mode;	/* 0 = fill out; 1 = set values */
	short	mirr;	/* FAT mirroring: 0 = enabled, otherwise active FAT */
	short	fats;	/* number of fat's */
	short	info;	/* status of additional info sector */
# define FAT32_info_exist	0x1
# define FAT32_info_active	0x2
};

If (mode == 0) the xfs fill out the struct otherwise it will
set some things.
If (mirr == 0) FAT mirroring is enabled, this means ALL FATs
are updated. If mirr is greater 0 only one FAT is updated and
the value of mirr is the number of the actual FAT.
This value is filled out and reading in the context of mode.
Fats is only an information value. It holds the number of FATs
that are available (normally 2).
Info describes the status of the optional info sector. If bit 2 is
set, the info sector is updated (costs performance).

ATTENTION: the boot sector must be writeable for this operations
           because some values are stored in the bootsector.


V_CNTR_WP		(0x5664)
--------------------------------
Not ready yet.


V_CNTR_WB		(0x5665)
--------------------------------
Enable/disable write-back cache for the specified (and only for
this) FAT drive.

convention: if arg = -1, the return value is the current status.

status:	DISABLE = 0
	ENABLE  = 1


FUTIME			(0x4603)
--------------------------------


FTRUNCATE		(0x4604)
--------------------------------
