home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 6 File / 06-File.zip / ramfs102.zip / src / init.c < prev    next >
C/C++ Source or Header  |  2002-10-21  |  2KB  |  95 lines

  1. #include "includes.h"
  2.  
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. ULONG _pascal FS_ATTRIBUTE = FSA_REMOTE;
  7. CHAR  _pascal FS_NAME[] = "RAMFS";
  8.  
  9. extern unsigned short threednow;
  10. extern unsigned long ramfs_units;
  11.  
  12. static char hello_msg[] = "RAMFS.IFS version 1.02-perf\r\n";
  13.  
  14.  
  15.  
  16. APIRET EXPENTRY FS_INIT (
  17.     PSZ        szParm,
  18.     ULONG    pDevHlp,
  19.     PULONG    pMiniFSD )    /* not used */
  20. {
  21.   int rc;
  22.   USHORT wlen;
  23.   int   quiet_init = 0;
  24.   char  *p;
  25.   unsigned long vs;
  26.   int vs_mul = -12;
  27.  
  28.   UtilEnterRamfs();
  29.   DEBUG_PRINTF1 ("FS_INIT  szParm='%s'", szParm);
  30.  
  31.   if (szParm != NULL)
  32.   {
  33.     /* Force/disable 3DNow! */
  34.     if (strstr(szParm, "/3"))
  35.       threednow = 1;
  36.     else if (strstr(szParm, "/!3"))
  37.       threednow = 0;
  38.     else
  39.       threednow = 0xFFFF;
  40.  
  41.     /* Quiet initialization */
  42.     if (strstr(szParm, "/q")  ||  strstr(szParm, "/Q"))
  43.        quiet_init = 1;
  44.  
  45.     /* Readjust size */
  46.     if ((p = strstr(szParm, "/s:")) != NULL || (p = strstr(szParm, "/S:")) != NULL)
  47.     {
  48.        vs = atol(p+3);
  49.        if (vs != 0)
  50.        {
  51.          while (*++p != '\0' && *p != ' ' && *p != '/')
  52.          {
  53.            if (*p == 'k' || *p == 'K')
  54.              vs_mul = -2;
  55.            else if (*p == 'm' || *p == 'M')
  56.              vs_mul = 8;
  57.            else if (*p == 'g' || *p == 'G')
  58.              vs_mul = 18;
  59.            else if (*p == 't' || *p == 'T')
  60.              vs_mul = 28;
  61.          }
  62.        }
  63.        ramfs_units = (vs_mul > 0) ? (vs << vs_mul) : (vs >> (-vs_mul));
  64.     }
  65.   }
  66.  
  67.   /* show hello message */
  68.   if (!quiet_init)
  69.     DosWrite (1, hello_msg, sizeof(hello_msg)-1, &wlen);
  70.  
  71.   DevHlp = (PFN) pDevHlp;
  72.   _asm{
  73.    mov al, 1            /* get global info seg */
  74.    mov dl, 0x24;    /* DevHlp_GetDOSVar */
  75.   }
  76.   (*DevHlp)();
  77.   _asm{
  78.    push es
  79.    mov es, ax
  80.    mov ax, es:[bx]
  81.    mov word ptr pGiseg, 0
  82.    mov word ptr pGiseg+2, ax
  83.    pop es
  84.   }
  85.  
  86.   NearInit();
  87.   VMInit();
  88.  
  89.   rc = NO_ERROR;
  90.  
  91.   DEBUG_PRINTF1 (" => %d\r\n", rc);
  92.   UtilExitRamfs();
  93.   return rc;
  94. }
  95.