Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: TR-Dos Diskette

  1. #1
    FishBone Crew Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,586
    Благодарностей: 764
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation TR-Dos Diskette

    .
    Последний раз редактировалось breeze; 11.10.2013 в 18:25.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Member
    Регистрация
    14.02.2005
    Адрес
    Владивосток
    Сообщений
    111
    Благодарностей: 4
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    Интересует, возможно ли стандартными средствами получить информацию о дискете?

    сколько на дискете треков, сколько секторов в треке, и каков размер одного сектора в байтах ?

    конечно всё это можно выщемить методом перебора и сканирования соответствующих частей дискеты, но вдруг есть счастье в этой жизни и можно как-то без доп процедур
    Никак не получится - только полным сканом
    - может ли быть на дискете нестандартный формат в котором бы было: кол-во секторов на треке и размер этих самых секторов разное ? (например на первом треке - 16 секторов по 256 байт, на втором треке 8 секторов по 512 байт, на третьем треке 4 сектора по 512 и 8 секторов по 256 итд...
    может

    - какой максимальный размер сектора может быть ? и есть ли какие-нибудь ограничения у TR-DOS на этот счёт ??
    1024 байта

  4. #3
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Благодарностей: 104
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    Интересует, возможно ли стандартными средствами получить информацию о дискете?

    сколько на дискете треков, сколько секторов в треке, и каков размер одного сектора в байтах ?

    конечно всё это можно выщемить методом перебора и сканирования соответствующих частей дискеты, но вдруг есть счастье в этой жизни и можно как-то без доп процедур

    ps. попутно 2 вопроса:

    - может ли быть на дискете нестандартный формат в котором бы было: кол-во секторов на треке и размер этих самых секторов разное ? (например на первом треке - 16 секторов по 256 байт, на втором треке 8 секторов по 512 байт, на третьем треке 4 сектора по 512 и 8 секторов по 256 итд...

    - какой максимальный размер сектора может быть ? и есть ли какие-нибудь ограничения у TR-DOS на этот счёт ??

    заранее биг snx!
    Стандартными средствами получается только минимум информации - это количество файлов (для системы файлов TR-DOS) и свободное место (в последнем даже не уверен). Насколько знаю, почти все существующие программы получают эту информацию напрямую из 9 сектора.

    Второе, чисто физически диск отформатировать можно хоть как - даже, скажем, на первой дорожке всё стандартное (16x256) на второй первый сектор 256, второй 1024, третий вообще 128 и т.д. Логически же необхидимо эту информацию о размерах и порядках секторов каким-то образом структурировать. Классический Тырдос это делать к сожалению не позволяет. Насколько я знаю это относится в т.ч. к is-dos'у. Т.е. на спектруме нет готовых процедур чтобы обслуживать такие диски - всё писать придётся самому. И естественно, так как нет автоматической фиксации физического формата диска, то все примочки с размерами секторов и их последовательностями придётся тупо запоминать/записывать на бумажке и в конечном итоге фиксировать в управляющем коде.

    В-третьих, существует 4 типа секторов - 128,256, 512 и 1025 байта. Выбирай любой.

    Закономерный вопрос, зачем это нужно?

    Добавлено через 6 минут
    И ещё, насчёт "выщемить". В контроллере 1818ВГ93 есть замечательная команда "читать индекс". Последовательно используя эту команду можно получить полностью карту дорожки, и соответственно применяя к каждой дорожке - карту диска целиком.
    Я сам её использовал и работает она достаточно хорошо. Единственное, она не позволит получить данные о хитро-форматированных секторах (например, сектор с отсутствующим концом, или с икажённой CRC и т.п.), потому что команда будет завершаться ошибкой. В этом случае если хоть что-то и может помочь, то только команда чтения дорожки.
    Последний раз редактировалось GriV; 28.08.2007 в 07:40. Причина: Добавлено сообщение
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  5. #4
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если есть время и желание иметь жестокие извращения с тр-досом, можно получить карту дорожки следующим образом:
    - читать каждый сектор по одному (#3d13, c=5,b=1)
    - читать его в буфер до 1к, заполненный заранее известными данными. Для пущей надежности два раза (чтоб определить длину)
    - перебирать все сектора на дорожке (в особо тяжелых случаях до 255, ибо они могут иметь практически произвольную нумерацию, если я не ошибаюсь) и учитывать только прочитанные
    Итого- долго, длинно, нудно, но стандартными средствами (разве что надо перехват ошибок сделать и ничего не печатать через пзу, ибо большие сектора будут налазить на системные переменные).

  6. #5
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    869
    Благодарностей: 3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Arrow

    Цитата Сообщение от GriV Посмотреть сообщение
    есть замечательная команда "читать индекс". Последовательно используя эту команду можно получить полностью карту дорожки, и соответственно применяя к каждой дорожке - карту диска целиком.
    Не совсем так. Она читает заголовок единственного, первого попавшегося сектора на дорожке. Никто не даст тебе гарантии что последовательно выдавая ее ты получишь все сектора. Ты можешь получить одно и то же несколько раз, а на какой-то сектор не попасть вообще.

    Добавлено через 1 минуту
    Цитата Сообщение от Vitamin Посмотреть сообщение
    Итого- долго, длинно, нудно, но стандартными средствами (разве что надо перехват ошибок сделать и ничего не печатать через пзу, ибо большие сектора будут налазить на системные переменные).
    При использовании функций 5 и 6 - не будут, ибо чтение/запись производится в указанный пользователем буфер, а не в системный.
    Последний раз редактировалось Sonic; 28.08.2007 в 07:57. Причина: Добавлено сообщение
    Pentagon-128 + AY + Kempston
    Бабло побеждает зло!

  7. #6
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    869
    Благодарностей: 3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По поводу флоппи-драйвера для дверей... Я тут однажды фантазировал, что будет, если я захочу дальше развивать trackdisk.device для MorphOS и буду учить его понимать форматы, отличные от 18 секторов по 512 байтов. Задача абсолютно та же самая, что и у тебя. Аппаратура схожая. Вот мои соображения.
    Для начала несколько допущений. Без них зарываемся сразу.
    Допущение N1: файловая система знает, какие форматы могут быть у носителя.
    Допущение N2: все сектора на диске одинакового размера.
    Теперь реальные условия.
    Условие N1: сектора на дорожке не обязательно пронумерованы по порядку (см. IS-DOS).
    Условие N2: существует несколько способов трансляции номер блока ->CHS. Первый - традиционный, один цилиндр - две дорожки. Назовем его interleaved (чередующий). Второй - сначала проходим все дорожки на одной стороне, затем на второй (это используют например PlusD и Opus). Назовем его sequental (последовательный). Третий - разные стороны рассматриваются как разные диски (+3DOS).
    Проблему с номерами секторов можно решить, введя таблицу трансляции логических номеров в физические (как это и сделано в IS-DOS). Драйвер дисковода должен иметь вызов, позволяющий задать такую таблицу. А также количество секторов, их длину, и способ трансляции номеров сторон (только верхняя, только нижняя, interleaved, sequental).
    Еще предусмотри указание плотности записи (DD/HD) - на будущее, ибо дисковод об этом не отчитывается. Автоматически определить плотность записи легко методом тыка, но только при том условии, что вставлена форматированная дискета. Если же мы хотим отформатировать абсолютно пустой диск, то плотность нужно указывать насильно, иначе контроллер будет работать не в том режиме который надо и ничего не получится.
    Pentagon-128 + AY + Kempston
    Бабло побеждает зло!

  8. #7
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    869
    Благодарностей: 3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    у меня раздельное понятие драйвер флопика и дравер FS, следовательно FS могут быть какие угодно
    А у меня что, разве не так?
    Я тебе говорю о том, что драйвер FS должен выдать драйверу флопика сведения о реальной геометрии накопителя. Тогда драйвер флопика сможет давать тебе данные.
    Pentagon-128 + AY + Kempston
    Бабло побеждает зло!

  9. #8
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    869
    Благодарностей: 3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну конечно можно и "чтением дорожки" прочитать первую дорожку, проанализировать ее и считать что все дороги такие же. В принципе идеологически это более правильно. Я даже пока сам тебе писал, стал склоняться к такому варианту.
    Но сделать команду для явного указания геометрии тоже надо - на случай переформатирования дискеты из одной в другую.
    Pentagon-128 + AY + Kempston
    Бабло побеждает зло!

  10. #9
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Благодарностей: 104
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sonic Посмотреть сообщение
    Не совсем так. Она читает заголовок единственного, первого попавшегося сектора на дорожке. Никто не даст тебе гарантии что последовательно выдавая ее ты получишь все сектора. Ты можешь получить одно и то же несколько раз, а на какой-то сектор не попасть вообще.
    Не вижу такой ситуации чтобы такое произошло. Я уже указал области ограничения этой команды - только нарочно испорченные сектора (или кривые руки программера, но это ... другая история). Анализировал так и защищённые диски и простые - всё отлично работает.
    Эта команда в отличие от "чтение дорожки" не требует дополнительных рассчётов - готовая Plain-таблица на выходе. Насколько я знаю теневой сервис-монитор Скорпиона использует эту же команду для чтения формата дорожки, вовзращая данные о дорожки в почти таком же формате, котором возвращает ВГ93 при "Чтении индекса".
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  11. #10
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    869
    Благодарностей: 3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2 Griv: а как это делается? Быстро-быстро выдаем друг за другом пачку команд "чтение индекса", пока повторы не пойдут?
    Pentagon-128 + AY + Kempston
    Бабло побеждает зло!

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •