nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 04:37



Reply to topic  [ 65 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next
РК-ДОС 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
"Ленивое чтение" и CRC

Я с интересом почитал вот тут http://zx.pk.ru/showthread.php?t=9812 про РК ДОС и программно-аппаратные принципы работы контроллеров НГМД, построенных на россыпи мелкой логики вместо 1818ВГ93. Конечно, это всё во многом уже достояние истории, но мысли у меня всплыли следующие.
У "Микрошы", как мне помнится, в схеме был второй ППА - 580ВВ55, а у "РК-86" - не было. ПЗУ и ОЗУ не являются атрибутами контроллера, а включаются в карту памяти "Микрошы" по нужным ДОС позициям - отсюда и некоторая разница в схеме контроллеров НГМД.
Я не сравнивал две схемы для РК ДОС версий 1.0 и 2.9,
http://sgu-wap.narod.ru/UVVPCH/S2.jpg и
http://akuna.org.ua/image/RK86_fddp07.png,
но думаю аппаратно в них реализован идентичный принцип, просто потому, что для конкретного железа привода ГМД трудно выдумать что-то другое. На железо возложена миссия синхронизации и преобразования кода из последовательного в параллельный.
Собственно основная проблема программно-аппаратной замены контроллера 1818ВГ93, на мой взгляд - это трудности с вычислением CRC. Вобщем-то и полином там не страшный: A=X^15+X^12+X^5+1, но если его выполнить аппаратно, то КНГМД просто распухнет схемотехнически, а программно - процессор не успеет подсчитать CRC. Вспомним, что "Орион" на 2,5 МГц успевал опрашивать 1818ВГ93 программно, а вот "Специалист" на 2 МГц - уже практически нет, отсюда аппаратная синхронизация через вывод HOLD, а про подсчет CRC - и говорить не приходится.
Поэтому при отсутствии возможности подсчета, при "ленивом" способе контроль осуществлялся сличением записанного с оригиналом. А уж как там поступали с программной реализацией взаимодействия ОС и драйвера, на мой взгляд, к железу отношения уже не имеет.
Самое интересное, что когда у меня уже был контроллер ГМД на 1818ВГ93, я поэкспериментировал с программным подсчётом CRC: считывал дорожку целиком, выделял блок данных сектора, считал полином X^15+X^12+X^5+1 и сравнивал результат с записанным на дорожке - нифига ни разу не сошлось.
Больше не возвращался к этому вопросу, но, похоже, там, где я брал алгоритм подсчёта CRC: статья Бориса Фролкина "Как подсчитать контрольную сумму" ("Радиолюбитель ", N 7/93), ошибочка была, и вроде как её потом нашли: Радиолюбитель 11/1994, c.15 - "Возвращаясь к напечатанному".
Но это ладно бы… только при аппаратной эмуляции в Electronics Workbench, CRC по X^15+X^12+X^5+1 у меня также с известным результатом не сходилась, правда там было не совсем понятно, чем изначально инициализировать сдвиговый регистр.


13 Jan 2011 23:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Я для себя сгруппировал материал про "ленивое" чтение компактно в виде дайджеста.
В основном излагает GARNIZON - спешыал танксы ему.
Выкладываю здесь, походу посмотрим что у нас в РК-ДОС реализуется...

КНГМД с "ленивым" чтением

"ТОО Лизианово" предлагало конструкторы и готовое КНГМД для "Радио-86РК" и "Микроши".
Их было два вида: для "Радио-86РК" и "Микроши". Но самое обидное, что ДОС 2.9 (который был вшит в этот КНГМД) под этот КНГМД никто не может найти.
Была информация об их серийном производстве: "Владельцы Радио-86РК и "Микроши"! Журнал Радио и "ТОО Лианозово" предлагают вам вдохнуть новую жизнь в ваши компьютеры! Сделать это можно, подключив к ним контроллер дисковода, описание которого публикуется в журнале Радио, начиная с январского номера за этот год. Мы предлагаем вам набор Контроллер НГМД. В него входят: … Внешний вид контроллера приведен в декабрьском номере журнала "Радио" за прошлый год. Справки по телефону 095 207-77-28".

Хочу заметить, что в журнале Радио рекламировался контроллер, который толком никуда не пошел, потому что был на БИС К580ВВ55 и поддерживал емкость дискет до 180 кб (к сравнению на кассету влезает до 1,5 мб), и не имел нормальной ОС-и. Наверное, поэтому у всех владельцев Микроши были контроллеры на БИС FDC К1818ВГ93 с CP/M.

Этот контролер (на БИС К580ВВ55) был ужасно примитивен, вследствие чего терялась совместимость с существующим софтом. Примитивен, потому, что сама схема контроллера и программное обеспечение являются компромиссом между применением специализированной (но трудно доставаемой в те времена) БИС и изготовлением КНГМД с более худшими параметрами на большем количестве микросхем ,но более легко доставаемых.

Контроллер и вправду интересный: формат диска – копия "Агатовского" 840 кб.
Только почему-то диск содержит чуть меньше 200 кб, видимо думали использовать односторонние НГМДс одинарной плотностью.
Используется "ленивое чтение" (вот почему в схеме нет К1818ВГ93) т.е. контроллер не просто быстр, а молниеносен, и контроль записи осуществляется не проверкой по суммам, а сличением.

Я даже догадываюсь, зачем его (КНГМД) сделали. На "Агате" есть такая штука: "Система кросс–программирования для процессора КР580", на ней много чего писали для "Микроши".

Контролер работает в 2-3 раза быстрее и точнее, чем КНГМД на К1818ВГ93.
Кстати, автор алгоритма этого "ленивого чтения", ещё в 90-ые за заслуги в "флопостроении" был приглашен в США в WD , где и "прописался".

Сказать, что одна дискета на К1818ВГ93 читается полторы минуты, а на этом контроллере за 20 секунд - фактически ничего не значит, так объем дискет-то не сравним, если 720 кб дискета становится объемом чуть меньше 200 кб.
У К1818ВГ93 при тактировании 1 Мгц скорость чтения порядка ~100 КБайт/сек, могу чуть ошибаться, но где-то так.

Что такое "ленивое чтение" я могу объяснить на примере "Агата", у него две БИС К580ВВ55 - по одной для каждой стороны, у ЛЭМЗ контроллера для "Микроши" принцип тот же самый, только применена одна БИС К580ВВ55.
Кто работал с "Агатом" знает, что никакой другой компьютер не может так разогнать привод даже в режиме FAST, как "Агат" (36 секунд на диск), мало того - реализовано буферирование операций обмена. Т.е. файловая система может делать два вида запросов к драйверу диска, с МГНОВЕННОЙ ДОСТАВКОЙ ДАННЫХ (ну, скажем, если ей нужен заголовок файловой структуры или блок данных каталога) и с возможностью отложенного выполнения (когда собственно ведётся обмен с содержимым файла). Реализовано это так: создан специальный массив по элементу на каждый сектор трека (т.е. 21...22 для "филипповской" разметки). В каждом элементе указывается тип операции над данным сектором (т.е. что-то вроде: 0 -- ничего не делать, 1 -- чтение, 2 -- запись, 3 -- проверка) и адрес сектора в памяти. Когда файловая система шлёт запросы с флагом возможности отложенного выполнения, то эти операции просто помещаются в соответствующий элемент массива, а реально ничего не выполняется, пока не случится либо запрос без возможности отложенной операции (обычно последний блок запроса) или не случится переход на другую дорожку.

Вот тут и начинается самое интересное, происходит обработка всех отложенных заданий. Драйвер просто отлавливает заголовки секторов, которые проходят в данный момент мимо головки и по номеру смотрит на задания указанные в массиве. Если ничего не надо делать -- просто пропускает, сказано прочитать -- прочитает, сказано записать -- запишет, после выполнения операций флаг скидывается на 0, причём для записи было сделано так, что устанавливался не 0 на проверку – и на следующем обороте выполнялась проверка записанного, причём НЕ ПО КОНТРОЛЬНОЙ СУММЕ, А СЛИЧЕНИЕМ ДАННЫХ. Когда после обработки очередного сектора оказывалось, что заданий нет -- начиналась работа по новому заданию.

Что это даёт? А даёт это две простые вещи -- массовое чтение выполняется строго за один оборот (плюс максимум один сектор). То есть, драйвер не ожидает прихода того сектора, который был запрошен на этой дорожке первым, как это делают практически все другие компьютеры, у которых к тому же делается синхронизация по отверстию на диске (в Агате вполне в норме было диск размечать без привязки к отверстию). Вторая вещь: запись выполнялась с отличной проверкой (СЛИЧЕНИЕ), причём на это требовалось всего два оборота (можно вспомнить, что на PC, если включить запись с проверкой, всё начинало плестись со скоростью аж по 15/18 оборотов на дорожку для 1,2/1,44 МБ).

Суть в том, что ленивое чтение (или отложенное) - это когда драйвер заранее знает, какие сектора данной дорожки ему будут нужны (т.е. какие запрошены), и считывает их, как только они появятся под головкой.

Важно - что любой из нужных секторов !
Т.е. если ОС запросила сразу весь трек, например, то, значит, первый же попавшийся сектор
точно нужен. И т.д. И драйвер их сразу читает и сразу скидывает в память.

А ВГ93 и все её наследники, читает так: драйвер ей задает номер сектора (только одного!)
и она ждет его. Если затем будет нужен другой сектор (например, тот, который шел перед предыдущим) - то она опять будет его ждать (а поскольку он шел перед - значит ждать ей придётся целый оборот).

ВГ93 работает быстро, только если запросы идут подряд, в порядке форматирования.
Т.е. если сектора на диске записаны по прядку - 1 2 3 4 5, и запрашивают их также - тогда она и прочитает всё за оборот.
И то - только если её не будут отвлекать, и она сможет в реальном времени работать.

Если же, например, запросили сначала сектора 1, 2 , а потом долго программа "что-то думала",
а потом запросила 3, а этот 3-й только что проскочил - то опять ждём оборот

Т.е. ВГ93 не умеет читать "какой-нибудь из списка", ей обязательно нужна конкретика, а контроллер агата слишком примитивный, он такие вещи, как сектор там, или номер его, вообще не знает. Он только передаёт raw-данные.

И уже как и что читать - решает драйвер.
А у него всё просто: есть массив, в массиве - статусы, например: 0 - ничего не делать, 1 - читать, 2 - писать , 3 - проверять (сравнивать)..
Он видит сектор, например, # 3, лезет в массив к третьему элементу - там цифра 1. Значит
надо этот сектор прочитать.

Ну а ещё : ВГ-шка читает трек, начиная от сигнала индекса, и вынуждена его ждать. А контроллер "Агата" индексный маркер не использует, а драйвер просто сам учитывает прошедшее время. Тоже мелочь, но из них скорость и складывается.

Ну и потом - у контроллера "Агата" плотность чуть выше, чем у ВГ93. Не сильно чтобы много, но разница небольшая есть. ВГ93, наверное, до 800 кб пишет на диск, а тут - 840 кб.
У контроллера "Микроши" плотность такая же, как у "Агата" (+ к скорости), потому как диски от "Микроши" (200 кб) "Агата" опознал как свои, и даже файлы показал.
Правда, уточнил, что это односторонний диск.
Из текста выше ясно, что если файл раскидан в 3 разных местах на диске, КНГМД "Агата" его прочитает ЗНАЧИТЕЛЬНО быстрее, чем ВГ-шка, ну а из-за других мелочей он быстрее работает с данными, записанными подряд. В "Микроше" в полной мере реализованы эти методы.

Понятно, что практического применения сейчас такой контроллер не имеет, все реальные пользователи "Микрош" используют ВГ93 (и, видимо, все программы заточены под него)
И это правильно! Но с чисто исторической стороны этот контроллер весьма даже интересен.

Никакого отдельного буфера дорожки нет, данные сразу пишутся/читаются в те точки, которые указаны клиентом драйвера. Например, нам нужно прочитать программу в память. Драйвер читает "лениво" (т.е. операционная система сразу говорит ему, какие блоки с данной дорожки будут нужны и сообщает, куда их складывать) - все данные попадают куда надо, но только не по порядку. А какая разница? Ведь операция всё равно будет завершена не раньше, чем будет прочитана вся программа. И памяти она займет столько же: неважно, что читали не по порядку.
Если памяти мало - нет проблем: клиент говорит драйверу: хочу эти два сектора с дорожки и больше ничего. И всё - будет прочитано именно два сектора. Ровно 512 байт. Но даже эти два будут прочитаны в том порядке, в котором их встретит драйвер. Потом клиент может попросить ещё два сектора - и драйвер не откажет.
Не следует путать настоящее предварительное чтение (look ahead)/отложенную запись от "ленивого режима". Для кеширования/откладывания буфер нужен - это правда, а для "ленивого" - нет. Ленивый - это кеширование команд, на манер того, как устроены, например, очереди в scsi (вроде их нынче и в ide пытаются сделать). А кеширование, которое обычно понималось под этим словом на PC (кто помнит: smartdrv/ncache2) - это кеширование данных. Понятно, что под кеш данные память нужна, а под кеш команд... ну тоже, конено, нужна... но байт так 100.

По идее контроллер "Микроши" очень похож на АГАТ, только с двухсторонними флопами работать не умеет.


Last edited by Lavr on 14 Jan 2011 18:38, edited 1 time in total.



14 Jan 2011 07:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Исходники РК-ДОС V.1

Почитал я ассемблерные исходники - вроде всё правильно, контроллер НГМД действительно расточенный под "Микрошу".
Сильно урезанный CCP, поскольку ПЗУ только одно и небольшое, но функции дисковой BIOS, похоже, выделены.
Исходник можно взять здесь:
http://sgu-wap.narod.ru/RKDOS/RKDOS_A.ASM
он без ошибок компилируется.
У кого нет ассемблера - можно заюзать этот: Прекрасный ассемблер КР580ВМ80А
http://sensi.org/~svo/i8080/
я проверил, он справляется...

По коду складывается впечатление, что ДОС с чего-то переточили.
Настораживает, что в 3 места явно не попадает управление.
Я пометил их в тексте как:
Code:
;------------???

Но с другой стороны, есть хитрая передача управления через PCHL.
Я сильно не копал, в основном проверил на явные ошибки.
Короче - кому надо, - читайте, правьте, компиляйте сами.

ППА ВВ55 "Микроши" не используется в КНГМД СОВСЕМ!!!

Описание контроллера и РК-ДОС лежит здесь:
http://sgu-wap.narod.ru/RKDOS/RukRKDOS.rar
там вобщем-то неплохо всё написано.

PS. Ну и схему сюда положим, чтоб всё было в комплекте.

Image
http://sgu-wap.narod.ru/UVVPCH/S2.jpg


Last edited by Lavr on 14 Jan 2011 18:57, edited 2 times in total.



14 Jan 2011 07:39
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Хм, интересно - если Агат это клон Apple ][ то значит ли это, что этот волшебный простой контроллер - клон контроллера дисковода, придуманного Стивом Возняком?
Отличительной особенностью возняковского контроллера было то, что он выкинул из дисковода встроенный контроллер и подцепился чуть ли не напрямую к двигателям, головкам и т.д.

_________________
:dj: https://mastodon.social/@Shaos


14 Jan 2011 15:53
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Ты знаешь, наверное стремление к дешевизне и простоте - один из двигателей прогресса.
В нашей той стране это стремление было в зачительной мере вынужденное, но тем не менее...
Что делать, если 1818ВГ93 - НУ ПРОСТО НЕТ? Все знакомые жучилы-несуны с заводов говорят, что её НУ - НЕТ!!!
С самими дисководами такая-же фигня...
Вот помню - раздобыли мы с другом убитый нафиг "ТЕАК". Он мотором крутил, головкой туда-сюда шоркал, но читать-писать не мог. И не удивительно - на плате была просто глазами видна вспученная микруха.
Да и кто бы нам его дал целый?
Померяли головки, головки целые... и что делать?
И вот тоже родилась шальная мысль - не подать ли прямо на головки через токоограничивающий резистор сигнал записи на магнитофон? Тот, который кодировался методом фазовой манипуляции? А что - постоянной составляющей в нем нет, линейная скорость головка-дискета куда больше, чем у магнитофона, значит можно уменьшить константы записи... Но что получится? - Получится магнитофон на дискетах. О совместимости ни с чем речи просто нет.
Джобс и Возняк - головастые парни, но не смогли придумать главное - возводить свои ошибки в стандарт, как это делает одна известная фирма. Но хороший дурной пример у них был рядом - Клайв Синклер. Ошибки в ПЗУ Спектрума были отловлены и обозначены как стандарт - для совместимости. Говорят, их даже для защиты программ использовали...


14 Jan 2011 18:37
Profile
Novelist

Joined: 02 Dec 2005 00:00
Posts: 36
Reply with quote
Post 
Lavr, интересные изыскания. Отдельное мерси за полное руководство. К сожалению, я недостаточно хорошо знаю асм, чтобы детально разобраться во всех нюансах прошивки. Да и времени, в отличие от школьно-институтских времен, давно уже не хватает. Но все-равно попробую. Спасибо.

P.S. Поскольку лучшим стимулом является наличие готового контроллера, в пятницу побывал на радиорынке в Донецке. Хотел собрать комплект микросхем на него. Но проклятая погода привела к тому, что пришло едва ли треть продавцов от обычного количества и советских деталей практически не было. В общем, уехал ни с чем.
Но спаять я его уже решил. ;-)


17 Jan 2011 11:45
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Hakuna wrote:
К сожалению, я недостаточно хорошо знаю асм, ... и времени, в отличие от школьно-институтских времен, давно уже не хватает.


Ну а ты напряги там http://zx.pk.ru/showthread.php?t=11319 своих гуру - пусть почитают...
От набивания таблиц я вас избавил, информации у вас теперь столько же, сколько было у меня.
Раз уж я инфой поманил - то обманывать было грех.
Так что это... 7-ваттный резистор вам в схему!!! :wink:


17 Jan 2011 12:17
Profile
Novelist

Joined: 02 Dec 2005 00:00
Posts: 36
Reply with quote
Post 
А чё сам там не напишешь?
А то мне как-то неудобно благодарности за чужие труды получать. :oops:


18 Jan 2011 00:28
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Hakuna wrote:
А чё сам там не напишешь?

А я там не зарегистрирован, и в планах это сделать - у меня нет.
Я вообще по жизни не поклонник форумов. Вот к Шаосу случайно зашел
на 5 минут - Шурику респект высказать - и прижился почему-то...
Возможно, люди здесь в основном культурные и квалифицированные.

Hakuna wrote:
А то мне как-то неудобно благодарности за чужие труды получать.

Неудобно - спать на потолке: одеяло спадает... :wink:
Ты тему РК-ДОС поднял, тебе - и карты в руки, а я плохо отношусь к этому ПК.
Большой паяльник - вам в помощь... :lol:


18 Jan 2011 00:53
Profile
Novelist

Joined: 02 Dec 2005 00:00
Posts: 36
Reply with quote
Post 
Да уж. "Специалиста в собственном соку" сам перечитывал пару раз. Классно написано. :)
Недавно кстати, нашел и купил плату Спеца, той же разводки что и у Шурика. Клавиатуры нет, работоспособность неизвестна. Со временем попытаюсь реанимировать.


18 Jan 2011 03:56
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Вот всё что касается "Специалиста" - это я ностальгически люблю... :lol:


18 Jan 2011 04:08
Profile
Novelist

Joined: 02 Dec 2005 00:00
Posts: 36
Reply with quote
Post 
Для меня Спец в то время прошел практически на уровне слухов. МК я не выписывал, хотя потом в библиотеке все-таки нашел и посмотрел. Но как-то не глянулось.
И вообще мне тогда хотелось собрать чего-нибудь "попроще". А простоту я считал по количеству микросхем :)
Вот в РК было 29 микрух, а в Спеце - за 40. Что проще? :) Разве что ЮТ-88 в базовом варианте.
Это я потом понял, что те самые 29 ещё найти надо, да и по количеству ног некоторые из них сойдут за три микросхемы Специалиста.
Ну а синицей в руках в то время была Электроника МК-61 (позже МК-52), которая активно использовалась и когда кроме неё ничего не было и даже потом, когда уже появлся Спектрум. Математику на ней считал, да и игрался иногда аж до появления у меня ПЦ, году так в 96. Ну а там уже был Маткад 2.5 и надобность в ПМК почти отпала. А потом пошли апгрейды, разгоны... Раздюрбаненый тактовый генератор на 286-м, в котором кварц был заменен на LC контур и частота выставлялась подстроечным конденсатором... ;) FIDO через модем на 2400.... Собранная на релюхах система автоматического выключения ПК после приема почты...
Эх.
Впрочем, это уже далековато от темы :)


18 Jan 2011 05:31
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Hakuna wrote:
а синицей в руках в то время была Электроника МК-61


Электроника МК-61 - это весчь!!! (хотя мы уже отклонились в оффтоп)
Сколько практикумов она мне помогла прогулять!!! Когда целую пару отводили на то, чтобы обсчитать результаты лабораторки методом наименьших квадратов с помощью выдаваемого лаборантом МК-33.

Hakuna wrote:
Вот в РК было 29 микрух, а в Спеце - за 40.


Но кроме порта ВВ55, 589ИР12 и памяти - они у меня фактически сразу были в количестве - хоть на 2 спеца... :kruto:


18 Jan 2011 06:03
Profile
Novelist

Joined: 02 Dec 2005 00:00
Posts: 36
Reply with quote
Post 
А я, как помнится, в 1992 году месяц отработал на заводе в ЦЛМК (лаборатория метрологии и контроля), в основном починяя Цэшки и почти на все заработанные денежки купил детали для сборки РК-шки. Оставалась ерунда - найти печатку. Но на нашем рынке их уже не было, в Донецк я тогда не ездил, а осенью того же года появился Спектрум и РК-шная тема надолго заглохла :(


18 Jan 2011 06:47
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Hakuna wrote:
А я, как помнится, в 1992 году месяц отработал на заводе в ЦЛМК (лаборатория метрологии и контроля), в основном починяя Цэшки и почти на все заработанные денежки купил детали для сборки РК-шки. Оставалась ерунда - найти печатку. Но на нашем рынке их уже не было, в Донецк я тогда не ездил, а осенью того же года появился Спектрум и РК-шная тема надолго заглохла :(


в 1990-1991 платы РК-86 торговали в официальном советском радиомагазине - во всяком случае у нас в Свердловске
P.S. а на подоконнике официального советского радиомагазина сидел неофициальный советский фарцовщик, который мог предложить широкую номенклатуру микросхем ;)

_________________
:dj: https://mastodon.social/@Shaos


18 Jan 2011 07:24
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 65 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next

Who is online

Users browsing this forum: No registered users and 9 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.