Autodocs Libraries:
expansion.library AddBootNode AddConfigDev AddDosNode AllocConfigDev AllocExpansionMem ConfigBoard FindConfigDev FreeConfigDev FreeExpansionMem GetCurrentBinding MakeDosNode ObtainConfigBinding ReadExpansionByte ReadExpansionRom ReleaseConfigBinding RemConfigDev SetCurrentBinding WriteExpansionByte Include GuruMeditation
|
Docs » Autodocs » expansion.library » MakeDosNode
MakeDosNode -- construct dos data structures that a disk needs
deviceNode = MakeDosNode( parameterPkt ) D0 A0 struct DeviceNode * MakeDosNode( void * );
This routine manufactures the data structures needed to enter a dos disk device into the system. This consists of a DeviceNode, a FileSysStartupMsg, a disk environment vector, and up to two bcpl strings. See the libraries/dosextens.h and libraries/filehandler.h include files for more information. MakeDosNode will allocate all the memory it needs, and then link the various structure together. It will make sure all the structures are long-word aligned (as required by the DOS). It then returns the information to the user so he can change anything else that needs changing. Typically he will then call AddDosNode() to enter the new device into the dos tables.
parameterPkt - a longword array containing all the information needed to initialize the data structures. Normally I would have provided a structure for this, but the variable length of the packet caused problems. The two strings are null terminated strings, like all other exec strings. longword description -------- ----------- 0 string with dos handler name 1 string with exec device name 2 unit number (for OpenDevice) 3 flags (for OpenDevice) 4 # of longwords in rest of environment 5-n file handler environment (see libraries/filehandler.h)
deviceNode - pointer to initialize device node structure, or null if there was not enough memory. You may need to change certain fields before passing the DeviceNode to AddDosNode(). EXAMPLES /* set up a 3.5" Amiga format floppy drive for unit 1 */ char execName[] = "trackdisk.device"; char dosName[] = "df1"; ULONG parmPkt[] = { (ULONG) dosName, (ULONG) execName, 1, /* unit number */ 0, /* OpenDevice flags */ /* here is the environment block */ 16, /* table upper bound */ 512>>2, /* # longwords in a block */ 0, /* sector origin -- unused */ 2, /* number of surfaces */ 1, /* secs per logical block -- leave as 1 */ 11, /* blocks per track */ 2, /* reserved blocks -- 2 boot blocks */ 0, /* ?? -- unused */ 0, /* interleave */ 0, /* lower cylinder */ 79, /* upper cylinder */ 5, /* number of buffers */ MEMF_CHIP, /* type of memory for buffers */ (~0 >> 1), /* largest transfer size (largest signed #) */ ~1, /* addmask */ 0, /* boot priority */ 0x444f5300, /* dostype: 'DOS\0' */ }; struct Device Node *node, *MakeDosNode(); node = MakeDosNode( parmPkt );
AddDosNode(), <libraries/dosextens.h>, <libraries/filehandler.h>
|