/* 00002150 */
fdTbl *clear_fds(fdTbl *tbl, int size)
{
      if(tbl == NULL || size <= 0)
            return NULL;
      else
            return (fdTbl *)memset(tbl, 0, size);
}

/* 000027C0 */
void InstallDevices(int flag)
{
      kernel_redirect = flag;
      *0x00000140 = FDS;
      *0x00000144 = sizeof(FDS);
      *0x00000150 = IODD;
      *0x00000154 = iodd_num * sizeof(iodd);
      clear_fds(FDS, sizeof(FDS));
      TRACE(1);

      KernelRedirect(flag);
      TRACE(2);

      *0x00007480 = 0;
      *0x00008644 = 0;
      _AddCDROMDevice();
      _AddMemCardDevice();
}

/*
      функция инсталлирует 3 устройства в таблицу IODD:
      tty:            - CONSOLE
      cdrom:      - CD-ROM
      bu:            - MEMORY CARD
      IODD - это таблица драйверов устройств для доступа через файловую
       систему (например с помщью функции fopen). всего может быть не более
       10 устройств.
      FDS - таблица открытых файлов (дескрипторы). окрыть можно не более
       16 файлов, в независимости от устройства.
      InstallDevices вызывается во время загрузки ядра, следовательно её не
       следует использовать в приложениях.
      насчет "перенаправления IO" ничего сказать не могу... надо до конца
       разбирать KernelRedirect.
*/