PDA

Просмотр полной версии : Обсуждение Самарского контроллера IDE винта и софта к нему



MM
07.03.2016, 00:23
Уважаемые информированные участники форума , прошу написать информацию о Самарском контроллере IDE винчестера на адресах 177620-177656 - как организован 0 сектор винта, какой софт поддерживает все эти фичи с винтом, как обстоят дела с форматированием и т.п. инфу, т.к. кроме крайне специфического исходника и дампа ПЗУ ничего по существу не нашел. Може где есть его ТО в формате, пригодном для воспроизведения на ИБМ ЭВМ ?

И по какому принципу осуществляется деление больших винтов на разделы по 32 метра, если, конечно, имеется эта фича...

( По аппаратному обеспечению вопросов нет ).

Terra
07.03.2016, 17:37
Есть универсальная прога + исходники на Си и асм PC для сборки и распаковки винта в формате "АльтПро" и "Самара" http://t-h-s.ru/bk/bkhdd.zip ещё недавно нашёл утилитку для работы с Самарским винтом + исходники на асме БК http://t-h-s.ru/bk/ad.zip

hobot
08.03.2016, 01:20
Цитата с сайта эмулятора от gid




HDDImageMaker
v1.1.1601.69
Инструмент для создания виртуальных HDD для контроллера СМК-512. Также может конвертировать уже существующие образы винчестеров АльтПро и Самара в виртуальный HDD эмулятора. Но т.к. самарский контроллер не эмулируется, то и работать с самарскими образами эмулятор не будет. Краткое описание здесь (http://gid.pdp-11.ru/bkhddim_doc.html).

MM
08.03.2016, 02:18
Спасибо за ссыль.

В обсчем, поскольку по самарскому контроллеру не удалось раздобыть ТО - видать, дело его реализовывать не очень перреспективное.

gid
08.03.2016, 15:13
Вот там http://www.bk001x.ru/forum/133-98-1 есть схема самарского контроллера и фотографии платы. Логика работы контроллера зашита в ПЗУ, дампа которого, вроде как ни у кого нету, сам контроллер, как устройство, не сильно интересен. Я, например, так и не нашёл для себя веских обоснований, чтобы его заэмулировать, хотя это делается крайне просто - отсечением менеджера памяти от уже эмулированного СМК и зданием других адресов регистров.

дело его реализовывать не очень перреспективное.
Скорее, использование его в чистом виде - дело бесперспективное. Но в качестве составной части какого-либо более продвинутого устройства - вполне можно.

MM
08.03.2016, 15:43
...
Скорее, использование его в чистом виде - дело бесперспективное. Но в качестве составной части какого-либо более продвинутого устройства - вполне можно.
Да, умный человек видит всё и без упоминания !
Есть идея сделать адреса +100 - что бы на ДП ВМ3 не налазил и пристроить его к ДВК-4.
По крайней мере 1 шт. логический диск вроде как поддержит.
Но вот с ТО АП объёма диска - нет данных.
( Вообще совсем неясно, будет ли когда-нибуть сделана МС1201.04М, или только вольные обсуждения будут... ).
*
Изучал тут варианты деления АП винта - кроме как кусочками по 32 метра, приблизительно 252 кусочка - ничего не выходит. Максимальный объем АП ~ 8 гбайт. Остальное - могут поддерживать программы пользователя ( или более крутые ОС со своим драйвером винта ).

Saar
17.03.2016, 09:06
Думаю, нет смысла реализовывать на низком уровне, ибо у нас была цель сделать полную эмуляцию дисковода, с чем мы, я считаю, справились. Та фотка с какого-то очень раннего образца. Более поздние версии были значительно аккуратнее.
Софт делался на базе моей CSIDOS. Я уже практически ничего не помню :)
Помню была специальная утилита, которая в начальные сектора писала таблицу разделов, после чего созданный диск виделся как обычный флоппи диск с номером >1 (0-1 - дисководы). Всё обращение происходило исключительно через стандартные точки входа для работы с дисководом - так что достаточно перехватывать эти точки и выполнять в эмуляторе на макро-уровне.

Terra
20.12.2016, 01:26
Благодаря усилиям товарища gid из Чебоксар и найденым мной исходникам, выкладываю обобщённую информацию по контроллеру.

http://t-h-s.ru/bk/samara_hdd.zip

MM
21.12.2016, 15:23
Вопросы со стороны :
1. В Э3 Самарского контроллера адреса с МПИ через ППЗУ 573РФ2 транслируются на шину IDE без модификаций ?
2. В ДВК на ВМ3 контроллер работать не будет, т.к. BS7 с МПИ не фикцируется , а после начала сигнала SYNC сигнал BS7 может и исчезнуть... ( впрочем, это совсе мелочи, т.к.регистры контроллера сидят аккурат на регистрах ДП ВМ3)
3. Нет ли возможности рассказать на блок-схемах или Бейсике последовательность действий от включения питания до окончания чтения наприммер 0 блока винта (начиная от самого начала винта ) - что в какой регистр надо записывать. Да, даташиты на IDE имеются - но всегда интересна практическая сторона вопроса. Ну или образ ППЗУ М1801РР1 от блока КНГМД Самарского IDE - то же помог бы...

Terra
21.12.2016, 18:28
По схемам я вам ничего уточнить не могу - образа ПЗУ 573РФ2 нет к сожалению. В папке схем есть альтернативные варианты без ПЗУ, я думаю вы разберётесь.

\gid\win1251\UNI++ph3.asm исходники прошивки с подробными комментариями в кодировке windows,читать от строки:
;-----hdd----

в ОЗУ используется стандартный блок параметров дисковода.
А вообщем смысл следующий из первого блока (нулевой пустой) читается номер привода загрузки и геометрия винта в блок параметров дисковода, потом ищется запись в таблице разделов (смещение к соответствующей записи достигается фиктивным чтением), сравнивается номер заданного привода и считываемого из таблицы параметров раздела, если совпадают, считываются параметры раздела в блок параметров дисковода и подсчитывается CRC, далее всё стандартно - читается 0 блок раздела, проверка на NOP... как-то так

MM
21.12.2016, 19:31
А вообщем смысл следующий из первого блока...

Да я спрашивал собственно о низкоуровневом выкачивании данных с регисторов IDE.
Например, как это делается с ЭД :
1. Записать номер сектора в регистр номера сектора ЭД.
2. Считать массив данных из окна ЭД в область-приемник данных.
3. Собственно на этом пересылка блока и завершена.

Т.е. формализую свой вопрос - что надо куда записать в регистры IDE, что бы выкачать из винта массив данных, например тот самый "Первый блок".

- - - Добавлено - - -

Ладно, посмотрел тексты ПЗУ Самарского контроллера - Спасибо и на этом.

http://storage4.static.itmages.ru/i/16/1205/s_1480952486_9720528_8b13e27858.jpg (https://itmages.ru/image/view/5274643/8b13e278)

Terra
21.12.2016, 19:58
;кусок для чтения 0 блока (1 сектора) hdd

IF0=177656
IF1=177654
IF2=177652
IF3=177650
IF4=177646
IF5=177644
IF6=177642
IF7=177640


mov #BUF,R1
mov #IF7,R4

1$: TSTB (R4) ;смотрим бит 7(BSY) регистра состояния
BPL 1$ ;проверим готовность принять команду

MOV #377,R0
MOV R0,@#IF6 ;0->1f6 (НЖМД 0, головка 0)
MOV R0,@#IF5 ;0->1f5 (дорожка 0 ст.)
MOV R0,@#IF4 ;0->1f4 (дорожка 0 мл.)
DEC R0
MOV R0,@#IF2 ;1->1f2 (счётчик секторов)
MOV R0,@#IF3 ;2->1f3 (сектор 1 - блок 0)
MOV #337,(R4) ;команда чтение

READ1:
0$: TSTB (R4) ;смотрим бит 7(BSY) регистра состояния
BPL 0$ ;если винт занят - идём снова ждать
1$: BIT #10,(R4) ; проверка бита 3(DRQ) регистра состояния
BNE 1$
MOV @#IF0,(R1)+ ;чтение из регистра данных
SOB R2,0$ ;сколько нужно слов
RET

BUF: .blkw 400
.end