Titus(09.09.2020)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Сделал пробный информационный сектор.
Для меня содержимое ифнормационного сектора - филькина грамота. Посмотрел частично, как Никита делает его инициализацию, но мне понятно только названия, серийный номер, число секторов, головок и цилиндров.
Кстати, у Никиты там ошибка - поле модели у него считается, как 18 слов, хотя на самом деле оно 20 слов.
Насколько я помню, главное там это "геометрия" диска - она важна для драйвера.
Поэтому на винчестере УКНЦ первые два байта - это количество секторов на дорожке и количество головок, если там неправильные параметры то образ диска у меня не аттачится в эмулятор.
https://github.com/nzeemin/ukncbtl-doc/wiki/IDE-HDD-ru
Последний раз редактировалось nzeemin; 09.09.2020 в 21:40.
У меня нынче такое видение, как можно получить обращения к IDE контроллеру:
1) На загрузочный диск необходимо записать файл ST.SYS (брать тут, его исходника я не нашел), после перезагрузки этот файл должен загружаться операционной системеной и по команде отображения устройств и их статуса "SHOW DEV", должна отображаться новая строка:
Но этого пока не достаточно, чтоб стали работать приказы "dir st:" или "dir st1:". В служебной консоле эмулятора PK-11 новых сообщений не будет...Код:ST Installed 177130 240
2) Загружаем эмулятор дисков "prun ide.prc" (брать там же). В служебном окне можно видеть, что при загрузке будут обращения к регистру id.irq (0xE24C или 0161114), для сброса диска (из адреса в эмуляторе нужно вычесть 01000, чтобы совпало с листингом):
А также далее чтение готовности диска в регистре id.csr:Код:1463 007104 IDE.res: 1464 007104 .push <R0> 007104 010046 mov R0,-(6.) 1465 007106 012737 000004 161114 mov #4, @#id.irq 1466 007114 005000 clr R0 1467 007116 077001 sob R0, . 1468 007120 016737 001636 161114 mov x.076, @#id.irq 1469 007126 077001 sob R0, . 1470 007130 .pop <R0> 007130 012600 mov (6.)+,R0 1471 007132 000207 return
И последняя записьКод:1495 007154 105737 161136 2$: tstb @#id.csr 1496 007160 100012 bpl 1$
3) Для работы с таблицей разделов, вроде как, нужны два файла IDHARD.SAV и IDHARD.MNU. При запуске IDHARD, после некоторой паузы (таймаут отсутствия прерывания?), к диску будет в логе эмулятора видно одно обращение вот тут (раз одно - ошибкой не считает, т.к. сразу же было бы втрое):Код:85 000020 RESTORE = 20 ;RESTORE + rate ... 485 002142 004767 004736 ok.MFM: call IDE.res 486 002146 004767 004762 call IDE.skip 487 002152 001033 bne 1$ 488 002154 012737 000020 161136 mov #RESTORE, @#id.csr ; установим на 0
Там можно нажать h(elp). Нажимая G(et) снова будем получать проверку успешности обращения к диску.Код:1169 005564 032737 000001 161136 8$: bit #s.err, @#id.csr ; Есть ошибки при выполнении? 1170 005572 001403 beq 4$ ; Нет 1171 005574 053767 161122 001144 bis @#id.err, h.err ; Да - запишем в h.err 1172 005602 006001 4$: ror R1 ; Нужны прерывания?
4) Отформатировать разделы можно либо в IDHARD, либо выполнив что-то вроде "init/noq st0:". Далее уже туда можно пробовать копировать файлы...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)