/* 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. */