                  Глюки и недостатки ДОС (Биоса)
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Дата последнего редактирования: 27.09.2004



1. Функция "Сохранить текущий путь" (1Eh) имеет недостаток:
    а) При сохранении корневого пути запоминает символ "\".
    б) Но в то же время, при сохранении не корневого пути,
       не ставит в конце строки символ "\".
   У MS-DOS такой же глюк, но это не меняет "погоду" ;). Нужно привести
   к какому-то одному формату.

2. Функция "Закрыть файл" (12h) не закрывает файл, если он расположен
   (был открыт/создан) не в тек. пути. Приходится принудительно устанав-
   ливать диск и путь расположения закрываемого файла и только после этого
   его закрывать ;(. Это происходит из-за того, что DSS текущей реализации
   позволяет коppектно pаботать только в пpеделах одного диска. Т.е. пеpед
   закpытием файла, текущим диском должен быть тот, где этот файл находится.
   Важное замечание: Доработать DSS, чтобы система, в определенных случаях,
   не трапалась при переполнении макс. числа (9) открытых дескрипторов.

3. Функция "Удалить файл" (0Eh) имеет недостаток:
   Удаляет файл в тек. каталоге, при формате записи "prog.bin", но не уда-
   ляет файл, указанный с диском и путем расположения, например:
   "a:\test\prog.bin".

4. Функции опроса клавиатуры (30h,31h,..) не выдают признак (7,6 биты
   регистра "B") нажатия "Shift" для клавиш "Home","End","PgUp","PgDn" и
   клавиш управления курсором. У спец. клавиш, признак нажатия "Shift"
   (биты 7,6) выдается только для F1..F12.

5. Не происходит скроллинг экрана, когда идет "переполнение" последней 32-й
   строки и 80-й символ - не код завершения строки. Происходит просто пере-
   ход в начало первой строки экрана, с продолжением вывода строки (с нало-
   жением на старые данные экрана).

6. Estex не корректно работает с VFAT (которая фактически и используется в
   Виндах). Трабл в следующем. Если в имени файла присутствует хотя бы одна
   строчная (маленькая) буква, то для такого имени Винда создает в каталоге
   две записи: первая для длинного имени, вторая - имя формата 8.3. Т.е. на
   одно имя файла в каталоге имеется две записи. Если файл с таким именем
   удалить в Estex, то будет удалено (помечено удаленным) только вторая за-
   пись файла, имеющая формат 8.3, а первая запись останется не удаленной.
   p.s. Эта ошибка легко исправляется нортоновским "ndd" или др. утилитой
   проверки логич. структуры диска.
   Если имя файла состоит только из одних прописных (больших) букв, то Винда
   создает в каталоге лишь одну запись для имени файла (как MS-DOS до v6.22
   включительно). Такой файл корректно удаляется Estex.
   Вывод: Для корректного удаления файлов под ОС Спринтера, их имена должны
   содержать только прописные буквы.

7. При включенном в Биосе пункте "System Disk:  1-st FDD" и при отсутствии
   дискеты в дисководе, в некоторых случаях не сбрасывается обращение к дис-
   ководу.

8. Нет биосной функции "54h" (DRV_VERIFY) верификации секторов, описанной в
   документации. Поэтому она всегда возвращает установленный флаг "Carry".

9. Доработать функцию "32h" (DSS_ECHOKEY), чтобы нормально мигал курсор.

10. Функции ДОС 0Ah (Create) и 0Bh (Create new file) перед созданием файла
   не проверяют число уже открытых дескрипторов. При переполнении числа
   открытых дескрипторов, эти функции все-равно создают запись нового файла
   в каталоге, хотя и выдают признак ошибки.
   Эти функции также не отслеживают имя файла на недопустимые символы. Если
   имя файла содержит недопустимый символ - функции просто "зависают".
   Такая ситуация с именами файлов может возникнуть например при автомати-
   ческом создании имен.

11. ДОС (v1.6) корректно выводит максимум 509 записей каталога.
