Inferno #07
31 мая 2005

Sofтинка - Проблемы и недоработки пакета утилит для работы с устройствами хранения данных DNA_OS.

      Проблемы и недоработки DNA_OS
ZET-9 
 

   В этот файл будут добавляться недорабо─
тки,которые надо ликвидировать,и проблемы, 
которые надо решить. 

                 Проблемы

   Система  работает  с первой копией FAT,
поэтому на пц ScanDisk ругается.
   Подкаталоги считаются непрерывными,мож─
но  получить  доступ  только  к первым 128
файлам в подкаталоге.(Если подключить винт
к пц, создать там подкаталог,скопировать в
него 2000 файлов, потом удалить первые 150
файлов, потом подключить винт к Спектруму,
загрузить  систему, выбрать винт на правой
панели,зайти в этот подкаталог,то он будет
пустой  или там будет мусор (если подката─
лог  на  пц  был сильно фрагментирован, то
второй  кластер подкаталога будет прочитан
следующим по счету, вне зависимости от то─
го, где расположен второй кластер подката─
лога).
   На левой панели  может отображаться то─
лько первые 122 файла  в подкаталоге (если
в подкаталоге >122 файлов, то  данные этих
"лишних" файлов  испортят данные для ката─
лога правой панели). Это ошибка оболочки.
   На правой панели может отображаться ма─
ксимум файлов,которые оболочка может полу─
чить от ядра системы - где-то 130-135, то─
чно не считал.
   При  создании  файлов  используются все
кластера  FAT - на самом деле последние 11
номеров  кластеров обозначают сбойные сек─
тора.Т.о.,файлы,созданные системой в самом
конце раздела винчестера,не будут доступны
при чтении их на пц.
   В системе  отсутствуют функции создания
и удаления подкаталогов и функция удаления
файла в файловой системе FAT12.
   Во всех утилитах отсутствует интерфейс,
т.е.утилиты не выводят сообщения на экран.
   При  копировании  файлов  на винте даты
теряются.

         Различие файловых систем
 

  а) При копировании  файлов из одной фай─
ловой  системы в другую возникает проблема 
избыточности информации, а именно: 
   Пусть имя файла в одной файловой систе─
ме равно 16 байт (типа NEOS), в другой - 8
байт (TR-DOS). Значит,надо придумать стан─
дарт,как преобразовывать длинное имя в ко─
роткое,а также - кто будет заниматься этим
(имеется  в виду, какой  драйвер - драйвер
первой  файловой  системы  (NEOS), драйвер
второй файловой системы (TR-DOS),либо про─
грамма-коммандер/оболочка)?
   В указанном  примере: есть вариант "по─
весить" эти  функции  на  драйвер файловой
системы (в указанном примере - NEOS). Нап─
ример,так:при операциях с файлом указываем
длину имени файла и длину расширения файла
- и пусть драйвер разбирается.
 

  б) Недопустимость  определённых символов
в именах файлов. Всякие  там :;.<=>?"+*/, 
русские  буквы  в  системе TR-DOS  и т.д., 
и т.п. 
   Существующие  драйвера не обращают вни─
мания, а тупо помещают имя в каталог.
 

  в) Копирование  файлов определённой дли─
ны. 
   Как все знают (наверное), в системе TR-
DOS  длина файла не может быть больше, чем
255 секторов,т.е. 65280 байт.При копирова─
нии файла большей длины на диск записывают
несколько  файлов - все, кроме последнего,
длиной 255 секторов. При этом в расширении
файла  меняется  первый  символ (наподобие
text.txt; text.0xt; text.1xt и так далее). 
Разбиением большого файла на маленькие (по
255 секторов) занимаются  сами  программы-
копировщики (MS-DOS->TR-DOS и подобные).
   Вариант: помещать  процедуру  разбиения
файла в драйвер файловой системы.Существу─
ющий  драйвер файловой системы TR-DOS про─
веряет: если длина создаваемого файла >255
сект., то файл  не создаётся. С этой точки
зрения  можно  говорить  о незавершённости
драйвера, но с точки зрения "классической"
TR-DOS всё ОК.
 

  г) Предоставление каталога для программ.
   В каждой  файловой  системе  содержимое
каталога различно.А именно,каждому файлу в
каталоге соответствует определённое кол-во
байт: в TR-DOS - 16 байт, в iS-DOS, FAT12,
FAT16, FAT32 - 32 байта, в  других - "пла─
вающая" длина.
   Например: оболочка вызывает функцию DNA
"загрузить каталог". Каталог загружен. Те─
перь  оболочка  должна  вывести каталог на
экран - и начинается:откуда оболочка узна─
ет, сколько файлов в каталоге, какая длина
имени файла,по какому смещению расположена
длина файла,дата его создания и т.п.
   Придуман  и реализован  такой  вариант:
разработан  формат каталога (некая универ─
сальная форма), и при вызове функции "чте─
ние каталога"  указываем:  преобразовывать
каталог в универсальную форму или нет.Обо─
лочка будет указывать,что нужно преобразо─
вание, а сам  драйвер файловой системы при
загрузке каталога  для своих нужд преобра─
зовывать  не  будет  (так  как драйвер сам
знает,где что лежит).
   Сам формат см. в тексте DNAmake.
   Здесь же:длина каталогов и подкаталогов
разная,и программа,вызывающая функцию "за─
грузить каталог", не знает, сколько памяти
займёт каталог.Кроме того,может быть вари─
ант, что  каталог на винте (или CD) вообще
не поместится в память (имеет длину >48k).
   Вывод:при вызове функции "загрузить ка─
талог" необходимо  указывать длину буфера,
который программа может выделить под ката─
лог и номер файла от начала каталога,начи─
ная  с  которого  надо  загружать  каталог
(т.е.,фактически,сколько пропустить файлов
от начала  каталога). Обрабатывать каталог
программа будет по частям, а драйвер будет
знать об этом с помощью флага (один из би─
тов).
   Пример:пусть у программы есть свободных
4k - буфер для каталога,тогда сначала про─
грамма  загружает 4k каталога со смещением
0 (например,в эти 4k поместились имена 123
файлов),обрабатывает их (выводит на экран,
ищет  там  файл  и т.д.); далее  программа
загружает  ещё 4k  со  смещением от начала
каталога  на 123 файла - и так до тех пор,
пока  она не получит сообщение от драйвера
файловой системы  "выход за пределы файла/
каталога" - т.е. весь каталог уже был заг─
ружен.

               Недоработки
 

   ЧТО надо доделать, конкретно по элемен─
там. Ну и, как будет время, оптимизировать 
всё. 

TR_DFS16.H - драйвер  файловой системы TR- 
DOS: 
  - добавить(?) в функцию  создания файла:
создание  группы файлов, если длина созда─
ваемого файла >255 секторов.

FDD_DRV7.H - драйвер блочного ввода-вывода 
для гибкого магнитного диска: 
  - сделать  различение  ошибок (сейчас не
конкретизируется - просто ошибка);
  - сделать версию с использованием прямо─
го обращения к ВГ93 (сейчас идёт обращение
к #3D13 - специально,чтобы драйвер работал
на RAM-диске и на Скорпионовском HDD);
  - вернуть  функции  работы с MS-DOS'ными
дискетами  (9  секторов  на треке по 512),
чтобы элемент MS_HDD мог работать с диске─
тами MS-DOS (FAT12).

MS_HDDE.H - драйвер файловых систем FAT12, 
FAT16. Сделать функции: 
  - создание каталога;
  - удаление каталога;
  - удаление файла (для FAT12).

HDD_DRV82.H - драйвер HDD по схеме NEMO: 
 - сделать  различение  ошибок  (сейчас не
конкретизируется - просто ошибка "устройс─
тво не готово");
 - убрать  защиту  от ложного срабатывания
порта  #7ffd  при  записи  в порт NEMO #F0
(размер драйвера существенно уменьшится, и
увеличится скорость записи).

SHELL.SEP - оболочка. Надо: 
  - проверять  при  удалении - это каталог
или файл;
  - при  удалении каталога проверять, есть
ли в нём файлы;
  - переименование файла;
  - встроить копировщик в оболочку;
  - курсорную систему управления;
  - выбор файлов  для копирования/удаления
группы файлов;
  - чтобы по нажатии  какой-нибудь клавиши
(например, "3") вызывался VIEW_TXT.SEP для
просмотра любого файла как текста;
   и т.д.

────────────────────────────────────────── 

   Краткая история версий системы DNA.
 

          20.06.2005 DNA v0.431g
- Новое ядро: исправлена ошибка в драйвере
FAT (проявлялась при копировании).
- COPY.SEP грузился  не  с того у-ва из-за
ошибки оболочки.
- TRD2DISK и SCL2DISK больше не ждут кноп─
ку после завершения операции.
- SCL2DISK не копировал с HDD.
- TRD2DISK не работал  при загрузке DNA из
Gluk. 
 

         09.06.2005 DNA v0.431f3
- Ядро от версии 0.431f, удлинённое на 256
байт (чтобы  сохранялась  таблица настроек
на разделы). В результате этого после заг─
рузки  бейсик-загрузчиками  HDDdrqS.B  или
SLAVE.B с винта Slave нормально определяю─ 
тся все разделы.

В эмуляторе  Unreal0.27  с винтом работает 
нормально. 
 

         06.06.2005 DNA v0.431f2
- Ядро от версии 0.431f.
- Добавлены  альтернативные версии бейсик-
 загрузчиков с винта:
  MASTER.B (для загрузки с винта Master) и
 SLAVE.B (для загрузки с винта Slave).

В эмуляторе  Unreal0.27  с винтом работает 
нормально, но: при  загрузке  системы бей─ 
сик-загрузчиком HDDdrqS.B (или загрузчиком 
SLAVE.B) с винта Slave не определяются ра─ 
зделы 4,5,7 (т.е.первый,второй и четвёртый 
дополнительные). 
 

          30.05.2005 DNA v0.431f
- Ядро перекомпилировано с новыми настрой─
ками для разделов на винте.

В эмуляторе  Unreal0.27  с винтом работает 
нормально, но: при  загрузке  системы бей─ 
сик-загрузчиком HDDdrqS.B с винта Slave не 
определяются разделы 4, 5, 7 (т.е. первый, 
второй и четвёртый дополнительные). 
 

          22.05.2005 DNA v0.431e
- Ядро от версии 0.431d.
- Добавлены  бейсик-загрузчики  системы  с
 винта (при отсутствии загрузчика в ПЗУ):
  HDDdrqM.B (для загрузки с HDD Master) и
 HDDdrqS.B (для загрузки с HDD Slave).
- Инсталлятор версии 0 (исправленный диск─
доктором)  и  перекомпилированный  (версия
2).

Обе  версии  инсталлятора  не  работают  у 
Alone Coder'a [из-за конфликтов в дешифра─ 
ции между  AY  и IDE-контроллером, которые 
были найдены  и устранены только 13.6.05]. 
У Серёгина инсталлятор(ы?) работает, уста─ 
новленная  система  загружается через раз. 
В эмуляторе  Unreal0.27  с винтом работает 
нормально, но: при  загрузке  системы бей─ 
сик-загрузчиком HDDdrqS.B с винта Slave не 
определяются разделы 4, 5, 7 (т.е. первый, 
второй и четвёртый дополнительные). 
 

          16.05.2005 DNA v0.431d
- Ядро системы перекомпилировано с драйве─
ром  винта со включенным опросом DRQ перед
каждым байтом.
- Исправлено:теперь при выборе отсутствую─
щих  разделов не сбрасывается (ранее сооб─
щение  об  ошибке  не доходило до драйвера
ФС).

У Alone Coder'a работает стабильно. В эму─ 
ляторе Unreal0.27 с винтом работает норма─ 
льно. 
 

          15.05.2005 DNA v0.431b
- Исправления  в  оболочке (после удаления
файла на FAT16 перепутывались каталоги,по─
этому не всегда удалялся файл).
- Исправлен  вьювер текста, теперь смотрит
первые 26.5k из длинных текстов.
- В инсталляторе  убрано копирование файла
SYSTEM.DNA  на винт, из-за которого преды─ 
дущая версия не работала (версия 1).

У Alone Coder'a инсталлятор зависает после 
выбора винчестера [из-за тех же конфликтов 
- см.выше]. В эмуляторах  Unreal0.27 и Z80 
Stealth v0.503  с винтом работает нормаль─ 
но. 
 

          21.04.2005 DNA v0.431
- Добавлена   функция  удаления  файла  на
FAT16 на винте.
- Добавлен  инсталлятор  системы  на  винт
(версия 0).

Первая версия,которую устанавливал Серёгин 
(была ошибка в инсталляторе, из-за которой 
после  загрузки  с  винта система лезла на 
диск A).В эмуляторах Unreal0.27 и Z80 Ste─ 
alth v0.503 с винтом работает нормально.На 
Пентагоне с винтом работает нормально. 
 

          27.03.2005 DNA v0.430d
- Изменён резидент системы, чтобы не пере─
крывать  ячейку  памяти #5b5c при работе с
DOS 6.09e.

В эмуляторе  Unreal0.27  с винтом работает 
нормально. 
 

          08.03.2005 DNA v0.430
- Поддержка трёх основных разделов,четырёх
дополнительных в режимах LBA/CHS;
- Поддержка FAT12;
- Поддержка 4-х рам-дисков;
 - В оболочке добавлено:
  удаление файлов в TR-DOS по клавише 8;
 окно выхода в BASIC128,TR-DOS,CACHE,STS и
 т.д.; 
 окно настроек: вкл/выкл мышь/джойстик,ус─
тановить цвет BORDER;сохранить настройки в 
 тело оболочки; 
 листание страниц стрелкой.
 - Исправлено:
  удаление файла в TR-DOS;
 урезание панелек в оболочке,глюк с подка─
 талогами при переходе на другую панель; 
 функция  "грузить  с указанного  смещения
внутри файла" в TR-DOS. 
- Разные  изменения/исправления  в прогах/
утилитах.
 

          16.02.2005 DNA v0.429
- Поддержка трёх основных разделов, одного
дополнительного раздела в режимах LBA/CHS.
 

          02.02.2005 DNA v0.428
- Новый  драйвер  винта с поддержкой LBA и
новый способ определения раздела в LBA ре─
жиме.

Заработала  у  Alone Coder'a  (с опросом и 
без опроса DRQ перед каждым байтом). 
 

          10.01.2005 DNA v0.427
- Только один раздел на винте, только CHS.

Не работала у Alone Coder'a из-за неправи─ 
льного способа определения начала раздела. 



Другие статьи номера:

Классика - Альманашник. А. С. Пушкин.

For Coderz - Распознавание и вычисление арифметических выражений по их символьной записи.

Inferno - Авторы журнала.

For Coderz - О дисциплине при создании больших проектов.

Интервью - Вопросы Константину Свиридову (Conan) о сайте zxnext.narod.ru.

Ликбез - Принципы конвертирования графики PC-ZX.

For Coderz - Программирование смены диска/дисковода на Скорпионе.

Sofтинка - DNA_OS v0.431 - пакет утилит для работы с винчестерами, RAM-дисками и дискетами.

For Coderz - Программирование под DNA_OS ZET-9, пакет утилит для работы с устройствами хранения данных.

Sofтинка - Проблемы и недоработки пакета утилит для работы с устройствами хранения данных DNA_OS.

Ликбез - Подробно о дисковых форматах, имеющих FAT.

Inferno - Вступление от редактора.

Inferno - Ошибки в предыдущих номерах.

For Coderz - Маленькие программерские хитрости.

Gameland - О новых играх: Oneyroid, Dizzy forever, Dridlock.

For Coderz - Пишем архиватор. Практические принципы LZ упаковки.

Gameland - Прохождение новых отгрузок для игры "Чёрный Ворон".

For Coderz - Программирование для видеорежима 384x304.

Inferno - Письма в редакцию.

Звук - Идеи Megus'а по поводу трекера для AY/YM.

Inferno - Об оболочке.

For Coderz - Основы оптимизации под процессор Z80.

Ликбез - Расположение разделов на винчестере.

Gamedev - 3D проецирование пола/трассы в играх.

Звук - Дикие идеи для AY трекеров.

Реклама - Реклама от Романа Чунина.

Реклама - Реклама от В. Богдановича

For Coderz - Как делается крупная перемещаемая программа.

Ремонт - Неисправности Pentagon 128+ и их ремонт.

Inferno - Содержание номера.

Разное - Мысли о конкурсе на лучший софт.

Others - Перенос программного обеспечения на ZX Spectrum с PC.

Видео - Об упаковке видео для ZX Spectrum.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
ZX-News 3 - разборки с критиками журнала Faultless.
Soft Group - Интересный текст от Ивана Рощина для кодеров.
Приложение - Presentation and not only.

В этот день...   18 декабря