У меня нынче такое видение, как можно получить обращения к 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:". Далее уже туда можно пробовать копировать файлы...




Ответить с цитированием