User Tag List

Показано с 1 по 10 из 129

Тема: Реализация и поддержка FAT16/32 на Спектруме с HDD

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    18.01.2005
    Адрес
    Москва
    Сообщений
    3,695
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати параллельно стоит вопрос написания универсального набора процедур для работы с винтом (а точнее с контроллером винта). Если это дело застандартизировать. И запихать например в свободныем места ТРДОС или в свободные странички ПЗУ, то это было бы какоето развитие и серьезное подспорие программисту (ибо не надо изучать весь десяток разных контроллеров). Ну и хардварщикам проще - написал свои процедуры и весь софт будущий будет совместим.
    Мы с Алко и отчасти Vega задумались о таком шаге - если есть соображения тоже пишем их.

    Пожалуйста пишите в email (chunin{гаф}mail{тчк}ru), личка отключена!!!

    NedoPC group. ZX-Evolution, ATM Turbo 2+, Pentagon1024SL.
    [Предлагаю: ZXEvo, PAL coder, NeoGS, TS-FM, YM2149, Z80 и прочее]
    Все здесь: http://www.nedopc.com.
    Новости/поддержка/Faq: http://forum.nedopc.com.
    Раздача халявы: http://forum.nedopc.com/viewtopic.php?f=32&t=977

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

  3. #2

    Регистрация
    16.01.2005
    Адрес
    Москва
    Сообщений
    1,992
    Спасибо Благодарностей отдано 
    227
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CHRV
    Кстати параллельно стоит вопрос написания универсального набора процедур для работы с винтом (а точнее с контроллером винта). Если это дело застандартизировать. И запихать например в свободныем места ТРДОС или в свободные странички ПЗУ, то это было бы какоето развитие и серьезное подспорие программисту (ибо не надо изучать весь десяток разных контроллеров). Ну и хардварщикам проще - написал свои процедуры и весь софт будущий будет совместим.
    Мы с Алко и отчасти Vega задумались о таком шаге - если есть соображения тоже пишем их.
    Сейчас пытаюсь на это дело (в рамках ATM) Юру UKMS[z] подписать. Ибо он итак сейчас продолжает развивать ПЗУ ATM с эмулятором ВГ93 вплоть до 1024Кб (27080). Тут ему все карты в руки!
    Максагор, NedoPC group
    ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
    [ZX rulezzz 4reva!!!]
    http://atmturbo.nedopc.com
    http://vk.com/atmturbo
    http://maksagor.livejournal.com
    http://moskprf.ru
    [СССР][Коммунизм][КПРФ] ну [ZX], естественно...

  4. #3

    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати параллельно стоит вопрос написания универсального набора процедур для работы с винтом (а точнее с контроллером винта). Если это дело застандартизировать. И запихать например в свободныем места ТРДОС или в свободные странички ПЗУ, то это было бы какоето развитие и серьезное подспорие программисту (ибо не надо изучать весь десяток разных контроллеров). Ну и хардварщикам проще - написал свои процедуры и весь софт будущий будет совместим.
    Мы с Алко и отчасти Vega задумались о таком шаге - если есть соображения тоже пишем их

    видел предложения сделать чтение/запись сектора. но есть же ещё
    несколько десятков ATA-команд. не будет же драйвер таким объемным. сами команды стандартизированы и выносить в драйвер их коды и протокол работы с каждой нет никакого смысла, на разных контроллерах они одинаковы. пускай уже программа разбирается. предлагаю команды разбить на более мелкие операции. всего я насчитал 5 необходимых:

    1. ожидание нужного состояния (BUSY/DRQ) регистра статуса, например
    Код:
    wait:
     in a,(рег-р статуса)
     ld c,a
     and h
     cp l
     jr nz,wait
     in a,(рег-р ошибок)
     ld b,a
     ret
    регистр ошибок тоже читаем заодно, чтобы второй раз не обращаться к драйверу. эту же процедуру можно использовать просто для чтения статуса при HL=0

    2. запись блока регистров. HL - указатель на 7 байт значений регистров 1-7.
    можно и такой формат:
    <рег.1><знач.1><рег.2><знач.2>...<00 >, но по времени экономия небольшая и больше потратим тактов на заполнение номеров регистров в передаваемом блоке. плюс бонус - при записи в последний (7-й) регистр валидного кода команды начинается выполнение команды.

    3. чтение блока регистров. аналогично. читаем блок из 7 регистров в (HL)

    4. передача сектора (512 байт) из контроллера в память (HL). считается, что DRQ=1,BUSY=0 (хотя, можно сюда же поставить вызов 1-й процедуры, но лучше вызвать её из программы, так как такие команды, как read multiple не требуют ожидания DRQ) для ATM и доработанного Nemo (защелка на A8) очень короткая программа
    Код:
    ld b,#00
    ld c,<порт данных>
    inir
    inir
    ret
    5. аналогично передача сектора из памяти в контроллер

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

    разместить точки входа лучше последовательно как 5 jr xxxx, 128 байт должно хватить на весь драйвер (или если моместить jr в середину, то адресуем и 256 байт). обязательно нужно стандартизировать, какие регистры драйвер может использовать для своих нужд, а какие не меняет

  5. #4

    Регистрация
    19.01.2005
    Адрес
    St.Petersburg
    Сообщений
    78
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Почитал предложения SMT, и это сподвигло меня на написание полноценного драйвера для работы с винтом, который может претендовать на стандарт. В фактически законченном на 80% виде улетел к CHRV - Роману Чунину. Буду ждать его рецензии.

  6. #5

    Регистрация
    16.01.2005
    Адрес
    Москва
    Сообщений
    1,992
    Спасибо Благодарностей отдано 
    227
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vega
    Почитал предложения SMT, и это сподвигло меня на написание полноценного драйвера для работы с винтом, который может претендовать на стандарт. В фактически законченном на 80% виде улетел к CHRV - Роману Чунину. Буду ждать его рецензии.
    Теперь за тобой, как за первопроходцем в этой сфере - аналогичный драйвер для работы с CD как с IDE-устройством (плюс можно и как со звуковым)!
    Максагор, NedoPC group
    ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
    [ZX rulezzz 4reva!!!]
    http://atmturbo.nedopc.com
    http://vk.com/atmturbo
    http://maksagor.livejournal.com
    http://moskprf.ru
    [СССР][Коммунизм][КПРФ] ну [ZX], естественно...

  7. #6

    Регистрация
    18.01.2005
    Адрес
    Москва
    Сообщений
    3,695
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vega
    Почитал предложения SMT, и это сподвигло меня на написание полноценного драйвера для работы с винтом, который может претендовать на стандарт. В фактически законченном на 80% виде улетел к CHRV - Роману Чунину. Буду ждать его рецензии.
    ОК уже посмотрел пока невнимательно твой драйвер, претендующий на low level API. Надо еще наладить както быструю связь с АЛКО, и так же метну Максу а через него Юре УКМЗ и Корсунину.
    Свое соображения добавляю другим цветом в документ, чего и другим заинтересованным людям советую. Публикации пока не предусматривается - щаз проведем первичные "внутренние разборки". А там видно будет.
    Влад спасибо, действительно серьезная и главная нужная работа, а то "разброд и шатания" порядком достали, особенно в реализации например мамеда.

    Пожалуйста пишите в email (chunin{гаф}mail{тчк}ru), личка отключена!!!

    NedoPC group. ZX-Evolution, ATM Turbo 2+, Pentagon1024SL.
    [Предлагаю: ZXEvo, PAL coder, NeoGS, TS-FM, YM2149, Z80 и прочее]
    Все здесь: http://www.nedopc.com.
    Новости/поддержка/Faq: http://forum.nedopc.com.
    Раздача халявы: http://forum.nedopc.com/viewtopic.php?f=32&t=977

  8. #7

    Регистрация
    18.02.2005
    Адрес
    St. Petersburg
    Сообщений
    415
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SMT
    видел предложения сделать чтение/запись сектора. но есть же ещё
    несколько десятков ATA-команд. не будет же драйвер таким объемным. сами команды стандартизированы и выносить в драйвер их коды и протокол работы с каждой нет никакого смысла, на разных контроллерах они одинаковы. пускай уже программа разбирается.
    Прежде стоит задать вопрос. ДРАЙВЕР ЧЕГО? Контроллера?
    Накопителя вообще? Именно НЖМД с ATA-2 интерфейсом?

    предлагаю команды разбить на более мелкие операции. всего я насчитал 5 необходимых:

    1. ожидание нужного состояния (BUSY/DRQ) регистра статуса, например
    Я даже про реалтайм не буду (музыка и т.п.). Но есть же просто
    ИНТЕРАКТИВНЫЕ ПРОГРАММЫ. Тот же CD-WALK. Курсор должен
    бегать по экрану, часы переобновляться, кнопка отмены срабатывать
    немедленно и т.п.

    4. передача сектора (512 байт) из контроллера в память (HL).
    5. аналогично передача сектора из памяти в контроллер
    А ничего, что для ЛЮБОГО данные передаются не секторами,
    а словами (16 бит)? Для CD-ROM, например, запись пакета
    требует передачи 6 слов...

    разместить точки входа лучше последовательно как 5 jr xxxx, 128 байт должно хватить на весь драйвер (или если моместить jr в середину, то адресуем и 256 байт). обязательно нужно стандартизировать, какие регистры драйвер может использовать для своих нужд, а какие не меняет
    Я уже высказывал кажется, я принципиально против каких-то
    там точек входа. Не надо мешать в общую кучу мух с котлетами.
    Есть ФУНКЦИИ, есть ПРОГРАММНЫЙ ИНТЕРФЕЙС, обеспечивающий
    возможность их использования. Это разные вещи.

    Что касается драйвера, уже 3 года прошло как всё давно
    хорошо продумано и опубликовано (см. http://spbzxnet.org.ru/cdwalk/ide-driver.html).
    Существует 12 "точек входа". Ряд из них обеспечивает
    работу с собственно накопителем: чтение и запись
    регистров поштучно и блоком (только запись -- для команд),
    чтение и запись данных. Контроллер накопителя программно
    доступен как 9/10 регистров и данный интерфейс полностью
    достаточен
    . Остальные функции требуются для поддержки
    собствнно "контроллера интерфейса ATA" (например, Nemo-IDE).
    Они нужны. Так, например, в цитируемом выше варианте не
    предполагалось наличие более одного канала (разъёма на плате)
    для подключения шлейфов. В действительности спринтер же
    имеет два. Как ваш драйвер будет работать на спринтере?
    12 функций -- это именно что минимум. Работа с прерываниями
    причём не проработана. Занимает... 512 байт минимум, лучше
    до килобайта. Это практический опыт 8 контроллеров. Там же
    циклы развёрнутые (в меру) нужны кое-где, иначе совсем по
    скорости печально выходит.

    Что касается модулей (там же, на сайте cdwalk), в настоящий момент первая версия признана крайне неудобной и неэффективной. Положительно оценивается возможность реализации на ZX COM-подобного (Component Object Model) интерфейса, но этим
    никто не занимается и, наверное, не будет.

  9. #8

    Регистрация
    18.02.2005
    Адрес
    St. Petersburg
    Сообщений
    415
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CHRV
    Кстати параллельно стоит вопрос написания универсального набора процедур для работы с винтом (а точнее с контроллером винта). Если это дело застандартизировать. И запихать например в свободныем места ТРДОС или в свободные странички ПЗУ, то это было бы какоето развитие и серьезное подспорие программисту (ибо не надо изучать весь десяток разных контроллеров). Ну и
    Я принципиально против ПЗУ. Software -- это не законченное
    изделие. У него нет финальной версии. ОНО ЖИВЁТ!.
    Финальную версию имеет только мёртвый, бесполезный и давно
    никому не нужный софт. ПЗУ же оно по-определению ПОСТОЯННОЕ,
    НЕИЗМЕННОЕ. В ПЗУ может размещаться только то, что ни у кого
    не возникнет желания менять. Загрузчик.

    хардварщикам проще - написал свои процедуры и весь софт будущий будет совместим.
    Я предлагал -- динамически загружаемый драйвер. Я могу даже пример привести: CD-Walk можно, теоретически, использовать с
    ATM-Turbo-2+. Вега такую возможность в свою замороженную
    версию CD-WALK не закладывал. Мысль, надеюсь понятна. Она
    может стать ещё более понятна если выяснится, что ATM таки
    не работает. Достаточно будет исправить и выпустить новую
    версию модуля драйвера.

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

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

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

Ваши права

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