Fixed cursor behavior in VTerm
[tpg/acess2.git] / Modules / Storage / FDD / fdd.c
index 23fd4db..b0bbf78 100644 (file)
@@ -136,6 +136,7 @@ tDevFS_Driver       gFDD_DriverInfo = {
 int FDD_Install(char **Arguments)
 {
        Uint8 data;
+       char    **args = Arguments;
        
        // Determine Floppy Types (From CMOS)
        outb(0x70, 0x10);
@@ -145,6 +146,14 @@ int FDD_Install(char **Arguments)
        gFDD_Devices[0].track[0] = -1;
        gFDD_Devices[1].track[1] = -1;
        
+       if(args) {
+               for(;*args;args++)
+               {
+                       if(strcmp(*args, "disable")==0)
+                               return MODULE_ERR_NOTNEEDED;
+               }
+       }
+       
        Log_Log("FDD", "Detected Disk 0: %s and Disk 1: %s", cFDD_TYPES[data>>4], cFDD_TYPES[data&0xF]);
        
        if( data == 0 ) {
@@ -208,7 +217,7 @@ void FDD_UnloadModule()
        LOCK(&glFDD);
        for(i=0;i<4;i++) {
                Time_RemoveTimer(gFDD_Devices[i].timer);
-               FDD_int_StopMotor((void*)i);
+               FDD_int_StopMotor((void *)(Uint)i);
        }
        RELEASE(&glFDD);
        //IRQ_Clear(6);
@@ -218,7 +227,7 @@ void FDD_UnloadModule()
  * \fn char *FDD_ReadDir(tVFS_Node *Node, int pos)
  * \brief Read Directory
  */
-char *FDD_ReadDir(tVFS_Node *Node, int Pos)
+char *FDD_ReadDir(tVFS_Node *UNUSED(Node), int Pos)
 {
        char    name[2] = "0\0";
 
@@ -235,7 +244,7 @@ char *FDD_ReadDir(tVFS_Node *Node, int Pos)
  * \fn tVFS_Node *FDD_FindDir(tVFS_Node *Node, char *filename);
  * \brief Find File Routine (for vfs_node)
  */
-tVFS_Node *FDD_FindDir(tVFS_Node *Node, char *Filename)
+tVFS_Node *FDD_FindDir(tVFS_Node *UNUSED(Node), char *Filename)
 {
         int    i;
        
@@ -278,14 +287,11 @@ static const char *casIOCTLS[] = {DRV_IOCTLNAMES,DRV_DISK_IOCTLNAMES,NULL};
  * \fn int FDD_IOCtl(tVFS_Node *Node, int id, void *data)
  * \brief Stub ioctl function
  */
-int FDD_IOCtl(tVFS_Node *Node, int ID, void *Data)
+int FDD_IOCtl(tVFS_Node *UNUSED(Node), int ID, void *Data)
 {
        switch(ID)
        {
-       case DRV_IOCTL_TYPE:    return DRV_TYPE_DISK;
-       case DRV_IOCTL_IDENT:   return ModUtil_SetIdent(Data, "FDD");
-       case DRV_IOCTL_VERSION: return FDD_VERSION;
-       case DRV_IOCTL_LOOKUP:  return ModUtil_LookupString((char**)casIOCTLS, Data);
+       BASE_IOCTLS(DRV_TYPE_DISK, "FDD", FDD_VERSION, casIOCTLS);
        
        case DISK_IOCTL_GETBLOCKSIZE:   return 512;     
        
@@ -768,7 +774,7 @@ void FDD_Reset(int id)
  */
 void FDD_int_TimerCallback(void *Arg)
 {
-        int    disk = (int)Arg;
+        int    disk = (Uint)Arg;
        ENTER("iarg", disk);
        if(gFDD_Devices[disk].motorState == 1)
                gFDD_Devices[disk].motorState = 2;
@@ -797,7 +803,7 @@ void FDD_int_StartMotor(int disk)
  */
 void FDD_int_StopMotor(void *Arg)
 {
-       Uint8   state, disk = (int)Arg;
+       Uint8   state, disk = (Uint)Arg;
        if( IS_LOCKED(&glFDD) ) return ;
        ENTER("iDisk", disk);
        

UCC git Repository :: git.ucc.asn.au