Просмотр полной версии : Обсуждение Самарского контроллера IDE винта и софта к нему
Уважаемые информированные участники форума , прошу написать информацию о Самарском контроллере IDE винчестера на адресах 177620-177656 - как организован 0 сектор винта, какой софт поддерживает все эти фичи с винтом, как обстоят дела с форматированием и т.п. инфу, т.к. кроме крайне специфического исходника и дампа ПЗУ ничего по существу не нашел. Може где есть его ТО в формате, пригодном для воспроизведения на ИБМ ЭВМ ?
И по какому принципу осуществляется деление больших винтов на разделы по 32 метра, если, конечно, имеется эта фича...
( По аппаратному обеспечению вопросов нет ).
Есть универсальная прога + исходники на Си и асм PC для сборки и распаковки винта в формате "АльтПро" и "Самара" http://t-h-s.ru/bk/bkhdd.zip ещё недавно нашёл утилитку для работы с Самарским винтом + исходники на асме БК http://t-h-s.ru/bk/ad.zip
Цитата с сайта эмулятора от gid
HDDImageMaker
v1.1.1601.69
Инструмент для создания виртуальных HDD для контроллера СМК-512. Также может конвертировать уже существующие образы винчестеров АльтПро и Самара в виртуальный HDD эмулятора. Но т.к. самарский контроллер не эмулируется, то и работать с самарскими образами эмулятор не будет. Краткое описание здесь (http://gid.pdp-11.ru/bkhddim_doc.html).
Спасибо за ссыль.
В обсчем, поскольку по самарскому контроллеру не удалось раздобыть ТО - видать, дело его реализовывать не очень перреспективное.
Вот там http://www.bk001x.ru/forum/133-98-1 есть схема самарского контроллера и фотографии платы. Логика работы контроллера зашита в ПЗУ, дампа которого, вроде как ни у кого нету, сам контроллер, как устройство, не сильно интересен. Я, например, так и не нашёл для себя веских обоснований, чтобы его заэмулировать, хотя это делается крайне просто - отсечением менеджера памяти от уже эмулированного СМК и зданием других адресов регистров.
дело его реализовывать не очень перреспективное.
Скорее, использование его в чистом виде - дело бесперспективное. Но в качестве составной части какого-либо более продвинутого устройства - вполне можно.
...
Скорее, использование его в чистом виде - дело бесперспективное. Но в качестве составной части какого-либо более продвинутого устройства - вполне можно.
Да, умный человек видит всё и без упоминания !
Есть идея сделать адреса +100 - что бы на ДП ВМ3 не налазил и пристроить его к ДВК-4.
По крайней мере 1 шт. логический диск вроде как поддержит.
Но вот с ТО АП объёма диска - нет данных.
( Вообще совсем неясно, будет ли когда-нибуть сделана МС1201.04М, или только вольные обсуждения будут... ).
*
Изучал тут варианты деления АП винта - кроме как кусочками по 32 метра, приблизительно 252 кусочка - ничего не выходит. Максимальный объем АП ~ 8 гбайт. Остальное - могут поддерживать программы пользователя ( или более крутые ОС со своим драйвером винта ).
Думаю, нет смысла реализовывать на низком уровне, ибо у нас была цель сделать полную эмуляцию дисковода, с чем мы, я считаю, справились. Та фотка с какого-то очень раннего образца. Более поздние версии были значительно аккуратнее.
Софт делался на базе моей CSIDOS. Я уже практически ничего не помню :)
Помню была специальная утилита, которая в начальные сектора писала таблицу разделов, после чего созданный диск виделся как обычный флоппи диск с номером >1 (0-1 - дисководы). Всё обращение происходило исключительно через стандартные точки входа для работы с дисководом - так что достаточно перехватывать эти точки и выполнять в эмуляторе на макро-уровне.
Благодаря усилиям товарища gid из Чебоксар и найденым мной исходникам, выкладываю обобщённую информацию по контроллеру.
http://t-h-s.ru/bk/samara_hdd.zip
Вопросы со стороны :
1. В Э3 Самарского контроллера адреса с МПИ через ППЗУ 573РФ2 транслируются на шину IDE без модификаций ?
2. В ДВК на ВМ3 контроллер работать не будет, т.к. BS7 с МПИ не фикцируется , а после начала сигнала SYNC сигнал BS7 может и исчезнуть... ( впрочем, это совсе мелочи, т.к.регистры контроллера сидят аккурат на регистрах ДП ВМ3)
3. Нет ли возможности рассказать на блок-схемах или Бейсике последовательность действий от включения питания до окончания чтения наприммер 0 блока винта (начиная от самого начала винта ) - что в какой регистр надо записывать. Да, даташиты на IDE имеются - но всегда интересна практическая сторона вопроса. Ну или образ ППЗУ М1801РР1 от блока КНГМД Самарского IDE - то же помог бы...
По схемам я вам ничего уточнить не могу - образа ПЗУ 573РФ2 нет к сожалению. В папке схем есть альтернативные варианты без ПЗУ, я думаю вы разберётесь.
\gid\win1251\UNI++ph3.asm исходники прошивки с подробными комментариями в кодировке windows,читать от строки:
;-----hdd----
в ОЗУ используется стандартный блок параметров дисковода.
А вообщем смысл следующий из первого блока (нулевой пустой) читается номер привода загрузки и геометрия винта в блок параметров дисковода, потом ищется запись в таблице разделов (смещение к соответствующей записи достигается фиктивным чтением), сравнивается номер заданного привода и считываемого из таблицы параметров раздела, если совпадают, считываются параметры раздела в блок параметров дисковода и подсчитывается CRC, далее всё стандартно - читается 0 блок раздела, проверка на NOP... как-то так
А вообщем смысл следующий из первого блока...
Да я спрашивал собственно о низкоуровневом выкачивании данных с регисторов 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)
;кусок для чтения 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
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot