У меня нынче такое видение, как можно получить обращения к IDE контроллеру:
1) На загрузочный диск необходимо записать файл ST.SYS (брать тут, его исходника я не нашел), после перезагрузки этот файл должен загружаться операционной системеной и по команде отображения устройств и их статуса "SHOW DEV", должна отображаться новая строка:
Код:
ST Installed 177130 240
Но этого пока не достаточно, чтоб стали работать приказы "dir st:" или "dir st1:". В служебной консоле эмулятора PK-11 новых сообщений не будет...
2) Загружаем эмулятор дисков "prun ide.prc" (брать там же). В служебном окне можно видеть, что при загрузке будут обращения к регистру id.irq (0xE24C или 0161114), для сброса диска (из адреса в эмуляторе нужно вычесть 01000, чтобы совпало с листингом):
Код:
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
А также далее чтение готовности диска в регистре id.csr:
Код:
1495 007154 105737 161136 2$: tstb @#id.csr
1496 007160 100012 bpl 1$
И последняя запись
Код:
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
3) Для работы с таблицей разделов, вроде как, нужны два файла IDHARD.SAV и IDHARD.MNU. При запуске IDHARD, после некоторой паузы (таймаут отсутствия прерывания?), к диску будет в логе эмулятора видно одно обращение вот тут (раз одно - ошибкой не считает, т.к. сразу же было бы втрое):
Код:
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 ; Нужны прерывания?
Там можно нажать h(elp). Нажимая G(et) снова будем получать проверку успешности обращения к диску.
4) Отформатировать разделы можно либо в IDHARD, либо выполнив что-то вроде "init/noq st0:". Далее уже туда можно пробовать копировать файлы...